diff --git a/Configure b/Configure index ee2058b99d..c233600141 100755 --- a/Configure +++ b/Configure @@ -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$$ </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' diff --git a/ReleaseNotes/Patch4.8.3-1.txt b/ReleaseNotes/Patch4.8.3-1.txt new file mode 100644 index 0000000000..793db72860 --- /dev/null +++ b/ReleaseNotes/Patch4.8.3-1.txt @@ -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 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. diff --git a/ReleaseNotes/Patch4.9.0-1.txt b/ReleaseNotes/Patch4.9.0-1.txt new file mode 100644 index 0000000000..44d06db6ff --- /dev/null +++ b/ReleaseNotes/Patch4.9.0-1.txt @@ -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 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 + +Geant4 9.1 Release Notes + + + +

+
+

+ +

+ +Geant4 9.1 Release Notes + + + + +
+ +December 14th, 2007 + +
+ +

+


+

+The code and binary libraries for the supported systems are available +through our Source +Code Web page. +

+

+Please refer to the +Geant4 +User Documentation for further information about using Geant4. +

+ +

Contents

+
    +
  1. Supported and Tested Platforms
  2. +
  3. CLHEP and AIDA
  4. +
  5. Items for migration of the user code
  6. +
  7. New Developments and Capabilities
  8. +
  9. Expected effects on physics and performance
  10. +
  11. Known Run-Time Problems and Limitations
  12. +
  13. Compilation Warnings
  14. +
  15. Known Run-Time Warnings
  16. +
  17. Geant4 Software License
  18. +
  19. Detailed list of changes and fixes
  20. +
+ +

+ +
+ + + +

1. Supported and Tested Platforms

+ +Official platforms: +
    +
  • Linux, gcc-3.4.6.
    + Tested on 32 bits architectures and 64 bits architectures + (Intel or AMD) with the Scientific Linux CERN 4 (SLC4) distribution + (based on RedHat Linux Enterprise 4). + Versions of Geant4 have also been compiled successfully on other + Linux distributions, like Debian, Suse or other RedHat systems.
  • +
  • MacOSX 10.4, gcc-4.0.1
  • +
  • SUN Solaris 5.8, C++ CC-5.5.
  • +
  • Windows/XP and CygWin Tools with: Visual C++ 8.0 (Visual Studio 2005)
  • +
+ +More verified configurations: +
    +
  • Linux, gcc-3.2.3, gcc-4.2.2
  • +
  • Linux, Intel-icc 9.1
  • +
  • SUN Solaris 5.8, C++ CC-5.4 Patch 111715-02
  • +
  • Windows/XP and CygWin Tools with: Visual C++ 7.1 .NET
  • +
+ +Platforms configured but not tested and not supported: +
    +
  • AIX 4.3.2, xlC 6.0
  • +
  • DEC V4.0, cxx C++ V6.1-027
  • +
  • HP 10.20, aCC C++ B3910B A.01.23
  • +
  • SGI V6.5.5, CC 7.2.1
  • +
+ +

+ +
+ + + +

2. CLHEP and AIDA

+ +Geant4 9.1 requires the installation of +CLHEP.
+Tests have been performed with CLHEP-2.0.3.2
+

+Geant4 9.1 examples with histogramming cowork with analysis tools compliant +to AIDA 3.2.1 interfaces (for details, see +Appendix 2 +of the +Users Guide for Application Developers).
+AIDA headers can be downloaded from: +http://aida.freehep.org + + +

+ +
+ + + +

3. Items for migration of the user code

+ +Listed here is some relevant information on developments included in this +release, some of which may require migrations (mainly for advanced uses of +features in Geant4) in order to upgrade from release 9.0 to release 9.1. +Note that a full re-installation of libraries (or a full recompilation) and +a recompilation of user applications is required. + +

+Geometry +

+The revision of G4TessellatedSolid required a name change for some +public methods. User code making explicit use of these methods should migrate +accordingly. + +

+Low Energy Electromagnetic physics +

+The prototype interfaces of beta-version G4DNA* processes have been +replaced by a unique process. Prototype user code is required to migrate; in +principle the migration is limited to replacing typedef statements. + +

+Standard Electromagnetic physics +

+The G4Cerenkov process was changed from being an AlongStep +process to a PostStep process. Custom user physics-lists that +include G4Cerenkov must be changed accordingly: +
+   pmanager->AddContinuousProcess(theCerenkovProcess);
+
+to: +
+   pmanager->AddProcess(theCerenkovProcess);
+   pmanager->SetProcessOrdering(theCerenkovProcess,idxPostStep);
+
+ +

+Hadronic physics +

+Gamma level file warnings in G4NuclearLevelManager have been +suppressed, so if an isotope has no data, no warning will be issued. +To turn them on again, set the pre-compiler flag GAMMAFILEWARNING +as follows: +
+   CPPFLAGS += -DGAMMAFILEWARNING
+
+and re-build the library in +processes/hadronic/models/de_excitation/photon_evaporation of Geant4. + +

+Fast Parameterised Simulation +

+The process G4FastSimulationManagerProcess (G4FSMP) can be +used for triggering fast simulation models attached to the regions of the mass +geometry or to regions of parallel (ghost) geometries.
+In the first case, the user has to attach an instance of the G4FSMP +process as a PostStep process to particles having a fast simulation +model in the mass geometry; this remains unchanged.
+A change is required in the second case, of a ghost geometry: the +G4FSMP process now must be attached as an AlongStep+PostStep +process to particles having fast simulation models bound to regions of the +ghost geometry.
+The AlongGetPhysicalInteractionLength() method of the G4FSMP +process has to appear second last in this case (i.e. after the Multiple +Scattering, but before the Transportation processes). An example is given in +the physics-list defined in examples/novice/N05. + +

+Data Sets +

+This release introduces a new data set and two new versions. +Please see the last section for the corresponding details. +
    +
  • New data for neutron cross-sections, G4NDL.3.12.
  • +
  • New low-energy data set, G4EMLOW.5.1.
  • +
  • New data set for nuclear shell effects, G4ABLA3.0.
  • +
+ +

+ +
+ + + +

4. New Developments and Capabilities

+ +Geometry +
    +
  • Introduced new navigation for phantoms and similar regular + structures. The new algorithm provides fast navigation + and no memory overhead for voxels phantoms and similar geometries. + An option is available to skip volume boundaries, when the volumes on either side hold the same material. The example in extended/medical/DICOM has been + revised to demonstrate the usage of the new parameterisation required and the corresponding navigation. In addition it + enables comparison against existing algorithms, including the nested parameterisation (which had reduced memory overhead) and the older 3D optimisation.
  • +
+ +GDML detector description persistency +
    +
  • A plugin-module for GDML can be installed optionally in Geant4. This replaces the dependency on the external GDML (GDML-2.X series) library. The new + module includes all the features supported in the old GDML library for + importing GDML descriptions, except for handling of parameterised volumes + and material optical properties. (These will be added in a future version + of the new plugin.) It remains possible to use the old external + GDML library, if needed.
  • +
+ +Low Energy Electromagnetic physics +
    +
  • Fully functional capabilities of physics processes in liquid water for + microdosimetry simulation are provided in this release; details can be + found in S. Chauvie et al., "Geant4 physics processes for + microdosimetry simulation: design foundation and implementation + of the first set of models", IEEE Trans. Nucl. Sci., vol. 54, + no. 6, Dec. 2007.
  • +
+ +Standard Electromagnetic physics +
    +
  • Non-ionizing energy loss is filled by ion ionisation processes and is + available to user actions.
  • +
  • The new process G4ionGasIonisation is available. It is recommended + to be used for simulation of ion transport in low-density media.
  • +
  • The process G4CoulombScattering was verified and is proposed to + be used instead of the multiple scattering process for simulation of + scattering in low-density media.
  • +
  • The G4ScreenNuclearRecoil process developed by the Vanderbilt + University group is available with the extended example TestEm7. + This process is an alternative to the multiple scattering process for + ions.
  • +
  • The simulation of energy loss of the classical magnetic monopole is + provided. The example of Physics List with the monopole is available with + the new extended example exotic_physics/monopole.
  • +
+ +Hadronic physics +
    +
  • G4BinaryCascade::Propagate() method is first released. This allows + the user to use Binary cascade as a transport model within the high energy + framework (G4TheoFSGenerator::SetTransport()). This feature is + aimed for expert use, validation is starting.
    + A bug fix for incident pions now allows binary cascade to be used for + pions, validation is in progress.
  • +
  • Alpha release of INCL cascade code. This will become an alternative to the + Binary and Bertini cascades already offered in Geant4 and will be valid up + to 3 GeV. The code is not yet validated.
  • +
  • Alpha release of the QMD (quantum molecular dynamics) nucleus-nucleus + interaction code. The code is not yet validated.
  • +
  • High precision neutrons: G4NDL 3.12 data set is now released. This uses + JENDL entries for Cd isotopes, and adds four new elements with their + corresponding isotopes: Hg, Ra, Br, and + La.
  • +
+ +

+Physics Lists +

+

+Several new physics lists are offered, providing new configurations or new +modeling options. Feedback via the Hypernews Forum on physics lists is welcome. +The new physics lists are: +

    +
  • FTFP_BERT and QGSC_BERT: both of these reduce the use of + parameterized modeling. For proton, neutron, pion and kaon induced + inelastic hadronic interactions the parameterized model is not used.
  • +
  • QGSP_DIF and QGSP_BERT_DIF: for diffractive scattering of + proton and neutron at high energies a diffractive scattering model + provided by CHIPS is used.
  • +
  • QGS_BIC and FTF_BIC: offering new developments of + Binary cascade. For more details, see the detailed notes.
  • +
+ +Command-based scoring +
    +
  • With the new command-based scoring, the user can define a parallel world + for scoring containing a three-dimensional scoring mesh. The mesh geometry + can be independent from the mass geometry, and no user code needs be + written to apply the scoring. An arbitrary number of physics + quantities to be scored and filters affecting these scorers can be assigned + to the mesh. After scoring has been applied (i.e. after the run), the user + can visualize the score map and also dump scores into a file. Relevant + UI commands are listed in the Application Developers Guide, and the new + extended/runAndEvent/RE03 example demonstrates the usage.
  • +
  • Command-based scoring is in Beta release; commands and methods are subject + to modification in future releases. Feedback is of course appreciated.
  • +
+ +

+ +
+ + +

5. Expected effects on physics and performance

+ +Standard Electromagnetic physics +
    +
  • Improved simulation of the high-energy gamma tail for muon Bremsstrahlung + (rare process, important for background simulation - NA49).
  • +
  • Improved simulation of straggling for ions; the width of the Bragg peak + becomes stable versus modification of the cut in range.
  • +
+ +Hadronic physics +
    +
  • Fixed problem reported by ATLAS of high energy collision of sigma+ + and a nucleon producing a high energy backward proton. This problem has + been in the hadronic code since the beginning and was due to incorrectly + selecting evaporated nucleons as leading particles. At 1 TeV + incident energy, this type of event occurred 0.5% to 1% of the time when + the HEP models are used. After the fix, no high energy backward nucleons + are observed, with the effect that such events will not exist to mimic + exotic reactions.
  • +
  • Bug fixes and completed implementation of theory in G4PreCompoundModel + and G4Evaporation have produced a 10-15% increase in neutron flux + for 2.5 GeV/c protons incident on Pb.
  • +
  • Correct time is now set for secondaries, instead of global time. This will + primarily affect neutron times for users of the HP neutron package.
  • +
  • An angular distribution bug in Bertini cascade has been fixed. Previously, + double differential cross sections showed an excess of events at high + energy and small to medium scattering angles. The fix removes this by + using an exp(t) distribution for nucleon-nucleon scattering above + 2.8 GeV. This will result in only a small reduction of average + particle energy in the secondaries.
  • +
  • Bug fix in quasi-elastic scattering may cause shower shapes to be a bit + shorter and wider when using QGSC/QGSP physics lists.
  • +
+ +

+ +
+ + + +

6. Known Run-Time Problems and Limitations

+ +For a complete list of outstanding run-time problems and to submit any +problem you may find running this version of Geant4, please refer to the +Geant4 Problem +Reporting System. + +

+ +
+ + + +

7. Compilation Warnings

+ +There are compilation warnings on some tested platforms. We do not believe +that any of these lead to incorrect run-time behaviour. + +

+ +
+ + + +

8. Known Run-Time Warnings

+ +The following message can be written to standard output at the end of a program: +
+    G4Transportation: Statistics for looping particles 
+       Sum of energy of loopers killed: 
+       Max energy of loopers killed: 
+
+It provides the total energy (in MeV) of tracks killed due to +excessive number of steps ('looping') during the simulation, and the maximum +energy of such a track. Such behaviour can be due to looping in magnetic fields +or encountering problems at geometrical boundaries. +

+In case either of these reported energy is significant, we recommend to +increase the verbosity of G4Transportation to obtain information for +each track killed. A user can change the threshold energy above which particles +are not killed using the method SetThresholdImportantEnergy of +G4Transportation. The default value is 250 MeV. + +

+ +
+ + + +

9. Geant4 Software License

+ +A Software License applies to the Geant4 code. +Users must accept this license in order to use it. The details and the list of +copyright holders is available at +http://cern.ch/geant4/license +and also in the text file LICENSE distributed with the source code. + +

+ +
+ + + +

10. Detailed list of changes and fixes

+ +These are the main new features/fixes included in this release since the +last patched public release (for more detailed lists of fixes/additions, +please refer to the corresponding History files provided in most packages): + +

+ + +

Configuration

+
    +
  • New modules added to binmake.gmk: + digits_hits/scorer, processes/hadronic/models/rpg, + processes/hadronic/models/incl (Liege cascade), + processes/hadronic/models/qmd and persistency/gdml.
  • +
  • Introduced G4LIB_BUILD_GDML/G4LIB_USE_GDML flags to trigger + compilation of gdml plug-in. Added setup for XercesC. Required + path XERCESCROOT to XercesC installation if + G4LIB_BUILD_GDML is set.
  • +
  • Added setup for QT in UI scripts (variables QTHOME, + G4UI_BUILD_QT_SESSION, G4UI_USE_QT, G4VIS_BUILD_OPENGLQT_DRIVER, + G4VIS_USE_OPENGLQT).
  • +
  • Use gfortran instead of g77 on MacOSX.
  • +
  • Updated Configure script to handle new modules and data libraries.
  • +
+ + +

Digitization & Hits

+
    +
  • Created new module scorer now including all scorer and filter + classes. The module utils is now used for interactive scoring + utilities.
  • +
  • First implementation of interactive parallel world scoring.
  • +
  • Introducing command-based scoring mechanism: Beta release. + Currently shape of scoring cell is limited to boxes.
  • +
+ + +

Electromagnetic Processes

+
    +
  • High Energy +
      +
    • G4mplIonisation: introduced theoretical asymtotic low-energy + parameterization of dEdx and fixed intermediate + parameterization between low-energy and high-energy models + for classical magnetic monopole..
    • +
  • +
  • Low Energy +
      +
    • Refactoring of Geant4-DNA domain. Added G4DNAProcess and + G4DNAFinalStateProduct classes.
    • +
    • New Geant4-DNA models for electrons: Elastic Scattering (screened + Rutherford, Brenner-Zaider), Ionisation (Emfietzoglou), Excitation + (Emfietzoglou).
    • +
    • New Geant4-DNA models for protons: Excitation (Dingfelder, + Emfietzoglou), Ionisation (Rudd, Dingfelder 1st Born approximation), + Charge Change (Dingfelder).
    • +
    • New Geant4-DNA models for hydrogen: Excitation (Dingfelder), + Ionisation (Dingfelder), Charge Change (Dingfelder).
    • +
    • New Geant4-DNA models for helium and its charge states: effective + charge scaling from proton models.
    • +
    • Fixes to handle Z=100 in the Livermore library and to correct + problem report + #933.
    • +
    • Fix in G4PenelopeRayleigh to address problem report + #965.
    • +
    • Correction in G4AtomicDeexcitation, addressing problem Report + #986.
    • +
    • Requires new data set G4EMLOW5.1, where a new dna/directory has been + added containing Geant4-DNA data tables for interpolation.
    • +
  • +
  • Muons +
      +
    • G4EnergyLossForExtrapolator: added maxEnergyTransfer + parameter for the computation of energy loss.
    • +
    • G4MuBremsstrahlungModel: updated sampling algorithm to provide + more precise predictions for the tail of the gamma energy spectra + (NA49 problem).
    • +
    • G4MuBremsstrahlungModel and G4MuPairProductionModel: + added ignoreCut flag, if true both models provide + zero dEdx and full cross sections.
    • +
    • G4MuMultipleScattering, G4MuMscModel: new classes + for simulation of multiple scattering for muons (beta-version).
    • +
  • +
  • Polarisation +
      +
    • G4eplusPolarizedAnnihilation: added enabledAtRest + flag.
    • +
    • Implemented more general cross section framework; removed dependencies + to models. Now cross sections can be used independent of any model, + e.g. in a cross section calculator class.
    • +
    • Added polarized photo-electric effect.
    • +
    • Bug fix in G4PolarizedAnnihilationCrossSection correcting + error in calculation of polarisation dependent total cross section + (wrong interaction-length for positrons in applications where particle + and media are polarised).
    • +
  • +
  • Standard +
      +
    • G4UrbanMscModel: +
        +
      • Use SampleScattering() method instead of + SampleSecondaries().
      • +
      • For skin > 0 (computed distance to the geometry boundary): +
          +
        • use range instead of TrueStepLimit for the computation + of the distance to a boundary to provide more stable step + limitation by GeomFactor;
        • +
        • default values stepmin = 1 nm, + tlimitmin = 10*stepmin;
        • +
        • default value 10^-16 is used to avoid lost of + precision and occasional NaN values.
        • +
      • +
      • New, simpler model functions for mean scattering angle + theta0. Now the form of theta0 is the same as + in the Highland formula, but the parameter values are different + for e+/e- and the other (heavy) particles.
      • +
      • Fixed old bug in sign of theta0 for negatively charged + particles.
      • +
      • Fixed old bug in SampleCosineTheta(): now the value of + prob is always between [0,1].
      • +
      • Compare new value of safety with zero after sampling of + lateral displacement to identify if track is on boundary.
      • +
      • Changed initialisation for ions: protecting parameters from + modification.
      • +
      • Tuned ComputeGeomPathLength() in order to get better low + energy behaviour for heavy particles (mu, hadrons).
      • +
    • +
    • G4UrbanMscModel90: new class which keeps the version of + sampling of scattering angle as the one of version 9.0 but includes + also protections and fixes of G4UrbanMscModel. + Used by G4hMultipleScattering.
    • +
    • G4CoulombScattering, G4CoulombScatteringModel, + G4eCoulombScatteringModel: +
        +
      • Updated InitialiseProcess() and PrintInfo() + methods to ensure that the parameters of models change between + runs.
      • +
      • Added nuclear size effect; added separate simulation of scattering + on atomic electrons taking into account cuts; fixed cross section + for compounds.
      • +
      • Reorganised initialisation of kinematics and screening + parameters.
      • +
      • Using precomputed Z^1/3 and log(A) values to + speed up code.
      • +
      • Fixed crash happening at initialisation when several elements + with the same Z are defined.
      • +
    • +
    • G4BraggModel, G4BraggIonModel: +
        +
      • More safe computation of scattering angle.
      • +
    • +
    • G4ionIonisation: +
        +
      • Removed obsolete method DefineMassCharge()
      • +
      • Added protected methods BetheBlochEnergyThreshold() and + NuclearStoppingFlag().
      • +
    • +
    • G4ionGasIonisation: +
        +
      • New ion ionisation process with discrete ion charge and no + equilibrium between ion and media.
      • +
    • +
    • G4IonFluctuations: +
        +
      • Added dependence on cut in the formula of width to + reduce cut dependence of the Bragg peak width for ions; + use Fermi energy from G4Material.
      • +
    • +
    • G4PAIphotonModel, G4PAIModel: +
        +
      • Fixed MaxSecondaryEnergy() method for e- and + e+ and use it for definition of max energy transfer; + protected printouts by verbosity flag.
      • +
      • General cleanup and fixed memory leak in G4PAIModel.
      • +
    • +
    • G4eplusAnnihilation: added flag enabledAtRest.
    • +
    • G4PAIySection: new class which substitutes + G4PAIxSection, fixing memory leak problems.
    • +
    • G4ionIonisation, G4ionGasIonisation, + G4CoulombScatteringModel: fill NIEL energy deposit.
    • +
  • +
  • Utils +
      +
    • G4VEnergyLossProcess: +
        +
      • Use prestep time for subcutoff secondaries and avoid precise + computation ot the time using GetVelocity() method.
      • +
      • Improved energy loss computation for the case of big step, + allowing for slight improvement in CPU performance.
      • +
      • Use STL vector of G4VEmModel* instead of C-array.
      • +
    • +
    • G4VEmProcess: +
        +
      • Added cut as a parameter of ComputeCrossSectionPerAtom() + method allowing models to use the cut (used by single scattering + model and potentially by others); added vector of cuts to the list + of members of the class.
      • +
      • Integral option now coupled with buildLambdaTable option: + integral cannot be activated if buildLambdaTable is not + activated.
      • +
    • +
    • G4VEmModel: +
        +
      • Compare cross section with DBL_MIN instead of zero.
      • +
      • Added SampleScattering() method for multiple-scattering + models.
      • +
    • +
    • G4VEnergyLossProcess, G4VEmProcess, + G4VMultipleScattering: +
        +
      • Fixed memory leak at destruction; proper deletion of + G4PhysicsTables.
      • +
      • Moved virtual functions, like + PostStepGetPhysicalInteractionLength() + from inline to body of classes; moved simple methods from body + to inline.
      • +
      • Fixed handling zero cross section in + PostStepGetPhysicalInteractionLength() method to avoid + problem happening in FanoCavity example when cross section + inside cavity is zero.
      • +
    • +
    • G4VEnergyLossProcess: +
        +
      • Simplified logic to switch on/off fluctuations.
      • +
    • +
    • G4VMultipleScattering: +
        +
      • Use SampleScattering() method in PostStep.
      • +
      • Added vector of cuts for electrons (needed for combined multiple + scattering processes).
      • +
    • +
    • G4EmCalculator: fixed default region name.
    • +
    • G4ionEffectiveCharge: use Fermi energy from G4Material + and not recalculate it at each step; reorganized formulas: less calls + to mathematical functions.
    • +
    • G4EmModelmanager: added pointers to G4Gamma and + G4Positron at initialisation.
    • +
    • G4EmProcessOptions: added missing initialisation of + G4LossTableManager parameters together with parameters of + concrete processes (fixed initialisation when an option is defined + before phyics list construct processes).
    • +
  • +
  • Xrays +
      +
    • G4Cerenkov: changed inheritance to G4VDiscreteProcess, + and changed the arguments of + G4Cerenkov::GetAverageNumberOfPhotons(). + Added warning in G4Cerenkov constructor.
    • +
    • G4VXTRenergyLoss: general cleanup of old comments; + removed all static members; protect verbosity within flag.
    • +
    • G4XTRTransparentRegRadModel, G4XTRRegularRadModel, + G4StrawTubeXTRadiator: cleanup; protect verbosity within flag.
    • +
  • +
+ + +

Error Propagation

+
    +
  • G4ErrorFreeTrajState: corrected bug in one of the transformation + matrix terms. Addresses problem report + #971.
  • +
  • G4ErrorFreeTrajParam: corrected normalization of Y and Z + coordinates.
  • +
  • G4ErrorPropagator: removed call to exit() and some cleanup.
  • +
+ + +

Event

+
    +
  • Added class member particle_momentum and method + SetParticleMomentum().
  • +
  • Added UI commands /gun/momentum and /gun/momentumAmp.
  • +
  • Added private copy constructor and =, ==, += operators to + G4ParticleGun. Addressing problem report + #984.
  • +
  • Modified G4SPSEneDistribution to adress problem report + #988.
  • +
+ + +

General Processes

+
    +
  • Biasing +
      +
    • Fix in G4ProcessPlacer to put biasing process at the second + place for AlongStep as well as for PostStep. + A bug fix which would feature for charged particles.
    • +
    • Added printout for AlongStep process vector.
    • +
  • +
  • Decay +
      +
    • Added G4PionDecayMakeSpin class: set the daughter muon spin + for 2-body decays of pi, K and K0_long.
    • +
    • Added method DaughterPolarization() in G4Decay + to set polarization vector for daughters.
    • +
  • +
  • Management +
      +
    • Added method SetProcessOrderingToSecond() to + G4ProcessManager, which puts the process at the second + position in the DoIt list.
    • +
    • Added method CheckOrderingParameters() to + G4ProcessManager, in order to check whether given ordering + parameters are set for valid DoIts.
    • +
    • Added methods to G4VProcess to indicate that the specified + DoIt is valid for the process.
    • +
    • G4WrapperProcess: fixed double definition of method + PreparePhysicsTable() in the header and moved inline + implementations of virtual methods to source file.
    • +
  • +
  • Optical +
      +
    • Added capability of calculating the reflectivity off a metal surface + by way of a complex index of refraction.
    • +
    • In G4OpWLS, allow for the MeanNumberOfPhotons to be + different from 1, in case the constant property + WLSMEANNUMBERPHOTONS is provided and, if so, + NumPhotons is sampled with Poisson.
    • +
  • +
  • Parameterisation +
      +
    • Added Along methods to G4FastSimulationManagerProcess.
    • +
    • Minor corrections to G4FastSimulationManagerProcess: added + call to G4PathFinder::PrepareNewTrack(); deactivated ghost + navigator in EndOfTracking() method.
    • +
  • +
  • Transportation +
      + +
    • G4Transportation: +
        +
      • Modified behaviour of G4Navigator + for small straight steps - when a track does less than the safety. + Before only a simple, quick estimation of the starting point's safety was done, using the + last available value of the isotropic safety (from the Navigator). + Now the navigator is called to compute this safety. This improves the value + and avoids roundoff issues. It gives better stability in comparisons with + CoupledTransportation. The costs are additional calls to the Navigator. + A new method EnableShortStepOptimisation controls this. + Note: this only affects neutral particles and charged particles when no field is present.
      • +
      • Fixed StartTracking() to reset number of looping steps + and to clear propagator state ( issue with caching of safety, which is multi-valued in case of + overlaps, is now addressed.)
      • +
      • Change to enable a user to switch on a global field (off was already + possible), when a track goes between volume (or regions) of a setup. Was response + to requirement of ATLAS. Done by moving the call to ConfigureForTrack() + before the check for zero field, in AlongStepGPIL().
      • +
    • +
    • G4CoupledTransportation: +
        +
      • Fix for problem in condition for relocation. It was incorrect when only a + parallel geometry limited the step.
      • +
      • Changed condition for recalculation of the safety used, to improve stability to roundoff.
      • +
      • Corrected treatment of time integration.
      • +
      • Fix to reset looping counter also when no field or charge is present.
      • +
      • Fix for case of zero proposed step: missed to set end position.
      • +
    • +
  • +
+ + +

Geometry

+
    +
  • Biasing +
      +
    • Modified Weight-Window algorithm: do not introduce extra variance in + the case of splitting to the survival weight when the weight is above + the upper weight window.
    • +
  • +
  • Magnetic field +
      +
    • New class G4EqEMFieldWithSpin to allow tracking of spin also + in case of electromagnetic fields.
    • +
  • +
  • Management +
      +
    • Fixed typo in forcing minimum number of points in method + G4VSolid::EstimateSurfaceArea(). Addresses problem report + #981.
    • +
  • +
  • Navigation +
      +
    • Introduced new specific navigation for regular structures and + phantoms. New classes: G4RegularNavigation, + G4PhantomParameterisation.
    • +
    • G4PathFinder: +
        +
      • Make singleton definition canonical. +
      • New method to return the safety sphere last calculated for a + PreStep point. If last step(s) were smaller than safety, + then for a linear track (no field or no charge) navigator's + ComputeSafety() is not called. Older PreStep + point is stored for this and provided.
      • +
      • Fixed return value for ComputeStep() in case of step + smaller than tolerance (now kInfinity).
      • +
      • Added calculation of start-point safety in + DoNextCurvedStep() and corrected GetCurrentSafety() + accordingly.
      • +
      • Added method to obtain safety of one navigator (after call to all).
      • +
      • Deleted obsolete data member fMinSafety. +
      • Optimisation: if only one geometry, do not call WhichLimited() + in DoNextLinearStep(). DoNextLinearStep() also + only calls ComputeStep() for a navigator whose safety + greater than the step; if there's one geometry, no longer calls + ComputeSafety() at start.
      • +
      • ComputeSafety(): save the values of isotropic safety for + each navigator.
      • +
      • Fix for result of ObtainSafety(), used in + G4CoupledTransportation.
      • +
      • Some code cleanup. Switched off additional optimisation for safety + in method DoNextLinearStep(). +
      • PrepareNewTrack() clears safety to avoid potential + problems in overlaps. Added calls to re-initialise + SafetyHelper (reset safety).
      • +
      • Fix to now set fNoGeometriesLimiting in + DoNextLinearStep() in the case of one navigator + optimisation.
      • +
      • Added new methods GetNumberGeometriesLimitingStep() + and GetMinimumStep() needed by + G4CoupledTransportation to see whether to relocate.
      • +
      • Fix for problem of another process shortening steps (between calls + to ComputeStep() by different processes in same step).
      • +
      • Check to verify that fNoGeometriesLimiting is set by + DoNext*Step methods. Revised data type of + fNoGeometriesLimiting to be a int, so that less + than 0 means unset.
      • +
    • +
    • G4Navigator: +
        +
      • Corrected calculation of fStepEndPoint in + ComputeStep() for case of step not limited by geometry.
      • +
      • Replaced call to LocateGlobalPointWithinVolume() with + calls to sub-navigators.
      • +
      • Made fVerbose protected.
      • +
    • +
    • G4PropagatorInField: +
        +
      • Fixes for compilation of code under G4DEBUG_FIELD (problem report + #982).
      • +
      • Added extra check of method LocateIntersectionPoint() + arguments.
      • +
    • +
    • Protected verbosity with compiler flags in G4PathFinder + and G4MultiNavigator.
    • +
    • Set fRecomputeFactor in G4SafetyHelper to zero, to + switch off internal optimisation and allow for reproducibility of + steps when using different transportation classes.
    • +
    • Added method CheckPointExiting() in + G4AuxiliaryNavServices utility class.
    • +
    • Reuse fVerbose from G4Navigator in + G4MultipleNavigator and some cleanup.
    • +
    • G4SafetyHelper: Improved ComputeSafety() not to + call G4Navigator if exactly on safety 'center'.
    • +
    • Fix in G4ReplicaNavigation::DistanceToOut() for exact + classification of the linear step for Cartesian case.
    • +
    • Made IdentifyAndPlaceSolid() method inlined in + G4ParameterisedNavigation.
    • +
    • Cleared compilation warnings for shadowing of variables in classes + within the module. Minor cosmetics and cleanup.
    • +
  • +
  • Solids (Boolean) +
      +
    • Boosted performance for response of Inside() for + G4SubtractionSolid and G4UnionSolid according to + suggestion in problem report + #979.
    • +
  • +
  • Solids (CSG) +
      +
    • G4Torus: +
        +
      • Fixed bug in CalculateExtent() for case of non-rotated + full-Phi torus definition: added protection against + negative value for sqrt() and corrected formula for + delta. Fixes problem of NaN detected in initialisation + by CMS.
      • +
      • Fixed bug in SolveNumericJT(): corrected handling of + complex roots, rootsrefined is used only if the number + of refined roots is the same as for primary roots. Addresses + problem report + #969.
      • +
    • +
    • Fixed problem of undefined side for valid surface normal in case of + Phi section and direction through the center of either a + G4Tubs or G4Cons shape.
    • +
  • +
  • Solids (Specific) +
      +
    • New specific shape G4Paraboloid with cuts along the + Z axis.
    • +
    • Revision of G4TessellatedSolid classes: +
        +
      • Fixed problem report + #931 + for proper handling of concave surfaces. + Modified classes G4TessellatedSolid and + G4TriangularFacet.
      • +
      • Modified data and accessor centroid and + GetCentroid() for G4VFacet; + replaced by circumcentre and GetCircumcentre() + respectively.
      • +
      • Reviewed implementation of CalculateExtent() to + make it more robust and precise. Addresses problem report + #983.
      • +
      • Added utility class G4TessellatedGeometryAlgorithms.
      • +
    • +
    • Removed debug printout in G4Polycone::GetPointOnCone().
    • +
    • Added formulas for calculating SemiAxis and Zheight + in G4EllipticalCone.
    • +
  • +
  • Volumes +
      +
    • Added explicit initialisation of first volume entry to zero, to ensure + correct behavior for out-of-world touchable handle.
    • +
    • Minor cleanup in G4LogicalBorderSurface and + G4LogicalSkinSurface classes.
    • +
    • Added inline specification to methods in G4AssemblyTriplet + class.
    • +
  • +
+ + +

Global

+
    +
  • Cleared compilation warnings for non-inlining and shadowing of variables. + Removed unnecessary virtual specifier to G4String + destructor.
  • +
  • Changed date for release 9.1.
  • +
+ + +

Graphical Representations

+
    +
  • Added G4Paraboloid to HepPolyhedron and + G4Polyhedron.
  • +
+ + +

Hadronic Processes

+
    +
  • Cross sections +
      +
    • Added log(0) protection in + G4NeutronInelasticCrossSection and + G4ProtonInelasticCrossSection.
    • +
    • Changed log to std::log in + G4HadronNucleonXsc and + G4GlauberGribovCrossSection.
    • +
  • +
  • Management +
      +
    • G4HadronicProcess::FillTotalResult(): fix addressing problem report + #967, replaced call to aT.GetGlobalTime() with the + internal variable time.
    • +
  • +
  • Binary Cascade +
      +
    • Collected many changes for propagate interface.
    • +
    • Fix for pion incident at low energy: cannot go to deexcitation + directly.
    • +
    • G4BinaryLightIon: adapted to changes in Binary Cascade.
    • +
  • +
  • Cascade +
      +
    • Fixed angular distribution for nucleon-nucleon elastic scattering + above 2.8 GeV.
    • +
  • +
  • Chiral Invariant Phase Space (CHIPS) +
      +
    • Bug fix in quasi-elastic, which may influence the shower shape, it + should be now a bit shorter and wider when using QGSC/QGSP physics + lists.
    • +
    • Introducing Single Target Diffraction.
    • +
    • R&D level implementation of ion-ion elastic and low-energy inelastic.
    • +
    • Added (e,nu) reaction to G4QCollision and weight + support in all CHIPS processes.
    • +
    • Corrected neutral currents normalization for neutrino-nuclear + interactions.
    • +
    • Chain of bug-fixes in G4Quasmon, G4QEnvironment, G4QNucl* + classes.
    • +
    • More accurate decay transition from G4QEnvironment to + G4QNucleus.
    • +
    • Improvement in G4QNucleus class to boost CPU speed.
    • +
  • +
  • De-excitation +
      +
    • Removed atomic mass number from "gamma factor" for + G4DeuteronEvaporationProbability, + G4TritonEvaporationProbability, + G4He3EvaporationProbability and + G4AlphaEvaporationProbability.
    • +
    • Introduced missing Rj (Q_beta) factor in the evaporation + module. Protected against occasionally divide by zero.
    • +
    • Corrected the Coulomb-barrier to the formalism of Dostrovski as + described in the Physics Reference manual.
    • +
    • Fix in photon evaporation to address problem report + #952.
    • +
    • Suppressed gamma-level file warnings in G4NuclearLevelManager.
    • +
  • +
  • Elastic scattering +
      +
    • G4DiffuseElastic: added Coulomb elastic scattering amplitude + using Wentzel model. Do initialisation of the model for each new + target nucleus on-fly; the model is initialised in constructor with + particle definition for the vector of available elements. Tuning at + high energies. Added control on verbosity at initialisation.
    • +
    • Updated G4ElasticHadrNucleusHE: included difference in + scattering off protons and neutrons; optimised computation of the + distribution function (important for heavy targets); fixed model for + scattering off hydrogen; tuned model parameters for better description + of total and elastic cross sections.
    • +
    • G4LEnp: removed erroneous code for identity exchange of + particles.
    • +
    • G4UHadronElasticProcess: introduced verbosity checks within + VERBOSE flag inside methods called at each step.
    • +
  • +
  • High Energy +
      +
    • G4HEInelastic::TuningOfHighEnergyCascading(): fixed incorrect + assignment of leading particle to low energy backward nucleons and + fragments. This bug caused high energy backward particles to be + emitted from high energy collisions.
    • +
    • G4HEPionMinusInelastic: fixed incorrect Imax in + sampling of charge exchange.
    • +
  • +
  • High precision Neutron +
      +
    • Allow for _nat_ final state even for isotoped cross sections.
    • +
    • Enabled element based cross-section dump.
    • +
    • Fixed bug in G4NeutronHPChannel for treatment of Z + in elements.
    • +
  • +
  • Im_r_matrix +
      +
    • Incorporated changes for G4CollisionComposite.
    • +
    • In G4ParticleTypeConverter, removed warning on unknown + particle; occurs for eta_prime, k_star+, anti_... etc. in + BIC propagate interface.
    • +
  • +
  • INCL/ABLA +
      +
    • First version of the Liege cascade INCL Model, including ABLA + evaporation and fission. + Requires new external data set (G4ABLA3.0) including files for + nuclear shell effects, with new environment variable G4ABLADATA + to be set to point to the directory where the data are stored.
    • +
  • +
  • Pre-equilibrium +
      +
    • New developments to reflect the literature and units expected for the + exciton model: introducing an Rj factor into the probability + calculation; correcting the units for the Pauli Blocking Factor + (missing a g factor); decreasing the number of charged particles if + the number excitons is decreased (previously this number was only + increased with increasing excitons).
    • +
    • New development with respect to light ion production.
    • +
    • Correction for integer arithmetic bug in G4PreCompoundModel + and concerning the ratio of charged to neutral excitons.
    • +
  • +
  • QMD Reaction +
      +
    • First implementation of QMD reaction model based on JQMD + (Niita et al., JAERI-Data/Code 99-042).
    • +
  • +
  • Re-Parameterized Gheisha +
      +
    • First version of a 'Re-Parameterized Gheisha-style' model. This + version is essentially a re-factored copy of the low energy + parameterized model which also contains several bug fixes and + physics improvements.
    • +
  • +
  • Theoretical High Energy +
      +
    • Added channel for projectile diffractive scattering.
    • +
  • +
  • Stopping +
      +
    • G4StopElementSelector: fixed typo in Primakoff formula for + capture velocity.
    • +
    • G4MuonMinusCaptureAtRest: fixed old memory leak.
    • +
    • Removed old-style copyright from all headers and fixed Software + Reference Manual tags.
    • +
  • +
  • Utils +
      +
    • Removed initialization by random number of angular momentum vector + from G4Fragment constructors which could cause change of + random sequence after physics initialisation.
    • +
    • Use production version of G4Fancy3DNucleus.
    • +
    • G4LightMedia: fixed coding errors in inequalities for + charge exchange occurrence in PionPlusExchange, + KaonZeroShortExchange, and NeutronExchange.
    • +
  • +
+ + +

Interfaces

+
    +
  • G4UItcsh: added ability to store shell history across sessions.
  • +
  • Updated the implementation of the signal handler for Ctrl-C.
  • +
  • New classes G4UIQt and G4Qt for handling of Qt interface + (Beta version with support restricted to Qt-4).
  • +
  • Removed improper dependency from basic sub-module to run.
  • +
+ + +

Materials

+
    +
  • G4NistManager: extended interfaces to build new materials; added + G4State, temperature, pressure (gases are allowed) with default + values. Simplified logic of Print() methods. Providing destruction of all + materials and elements.
  • +
  • G4NistElementBuilder: for given Z, build only one Nist element + and allow user to create other elements with given Z (HP physics + requirement).
  • +
  • G4NistMaterialBuilder: modified FindOrBuildMaterial() + method: NIST materials are now built even if user creates a material with + the same name, therefore NIST materials parameters -cannot- be + substituted.
  • +
  • G4Material, G4Element: extended destructors, now all materials + and elements are deleted at the end of a run.
  • +
  • G4SandiaTable: separated computations of tables photo-absobtion + coefficients for photo-electric effect and PAI model; + general cleanup and reduced number of static variables. + Fixed memory leak at destruction.
  • +
  • G4IonisParamMat: added commutation and accessor methods for + parameters of ion ionisation: Fermi energy, effective Z, effective + L-factor; values will not be recomputed at each step.
  • +
+ + +

Particles

+
    +
  • Added G4HyperNucleiProperties class so that hyper-nuclei can be + created for G4Ions. G4ParticleTable can return a pointer + to hyper-nucleus by using GetIon() and FindIon() methods.
  • +
  • Modified G4PDGCodeChecker to support PDG code for hyper-nuclei.
  • +
  • Changed G4ParticleTable::GetIonTable() to give 'non-const' pointer + in order to allow users to use G4IonTable::GetIon() methods + directly.
  • +
  • Added check for atomic number (less than 1000) in G4IonTable.
  • +
  • Added new classes G4PionRadiativeDecayChannel and + G4MuonRadiativeDecayChannelWithSpin.
  • +
+ + +

Persistency

+
    +
  • Introduced new gdml plugin sub-module, based on new GDML + release 3. + Added G4LIB_BUILD_GDML/G4LIB_USE_GDML flags and + XERCESCROOT path. The new GDML plugin does not yet support + parameterised volumes and material optical properties.
  • +
  • Moved existing classes to mctruth sub-module; + renamed libraries.
  • +
+ + +

Physics lists

+
    +
  • New physics list QGS_BIC, equivalent to QGSP_BIC, but using binary also for + pion and for rescattering via the propagate interface; the deexcitation + implicitely uses precompound.
  • +
  • New physics list FTF_BIC, equivalent to QGS_BIC but for pions LEP is not used, + as BIC is used up to 5 GeV, thus overlapping with FTF starting at 4 GeV.
  • +
  • New physics list QGSC_BERT; use QGSC down to overlap with BERT. LEP is not + used for proton, neutron, pions, kaons, except for neutron capture and + neutron induced fission.
  • +
  • New physics list QGSP_BERT_DIF; as QGSP_BERT with projectile diffraction + for proton and neutron enabled.
  • +
  • New physics list FTFP_BERT: FTFP with Bertini cascade.
  • +
  • Enabling use of projectile diffraction in QGSP-like lists, and created + new list using projectile diffraction, QGSP_DIF.
  • +
  • Added possibility to activate G4SynchrotronRadiation and mu-nuclear + betwen runs.
  • +
  • Added optional builder G4RadioactiveDecayPhysics.
  • +
  • Several fixes in QBBC: fixed bug in adding of cross section for pions + and mesons; tuned energy thresholds between string and cascade models; + corrected interface to CHIPS model; reviewed options: QBBC, QBBC_DEL, + QBBC_HEL, QBBC_HP.
  • +
  • Added G4HadronDElasticPhysics builder and fixed name to + G4HadronHElasticPhysics.
  • +
  • G4EmStandardPhysics_option2: increased number of bins in tables.
  • +
  • Crossover from Bertini to FTFP at 4-5 GeV. No LEP for inelastic for + p,n,pi,K.
  • +
  • G4LEPNeutronBuilder: when the limit for MaxInelastic + is zero, do NOT add LEP for inelastic. Change needed for FTFP_BERT list.
  • +
+ + +

Run

+
    +
  • Added ability to handle G4ScoringManager in G4RunManager.
  • +
  • First implementation of interactive parallel world scoring.
  • +
  • Introducing new /random/setSeeds command allowing to set initial + seeds.
  • +
  • Now /random/setDirectoryName command creates directories if needed.
  • +
  • Reordered commands in G4RunMessenger so that obsolete commands + appear last. Obsolete UI commands now do nothing except warning messages.
  • +
+ + +

Track & Tracking

+
    +
  • Added accessors for non-ionizing energy deposit in G4Step.
  • +
  • Added protection in G4Track::GetVolume() to avoid cases of + dereferencing of null pointer.
  • +
  • G4SteppingManager: fix to use Cartesian tolerance in + Stepping() and CalculateSafety() for the computation + of endPointSafety.
  • +
+ + +

Visualization

+
    +
  • Management +
      +
    • Replaced references to Wired3 in command guidance.
    • +
    • Minor improvements in messaging.
    • +
  • +
  • Modeling +
      +
    • Minor improvements in messaging.
    • +
  • +
  • HepRep +
      +
    • Adjusted geometry hierarchy for parallel worlds.
    • +
  • +
  • OpenGL +
      +
    • Removed redundant G4OpenGLXViewerMessenger class.
    • +
    • Minor improvements in design and messaging.
    • +
    • Added GEANT4_QT_DEBUG flag to test Qt interfaces.
    • +
  • +
  • OpenInventor +
      +
    • Initialise local vectors in SoPolyhedron implementation; fixing + compilation warnings on gcc-4.2.2.
    • +
  • +
+ + +

Environments

+
    +
  • Python interface (G4Py): added support for embedded GDML plugin. + Updated physics-lists bindings.
  • +
+ + +

Data sets

+
    +
  • New data for neutron cross-sections, G4NDL.3.12: +
      +
    • Changed Cadium data. Added Hg, Radium, Br and La data.
    • +
  • +
  • New low-energy data set, G4EMLOW.5.1: +
      +
    • Added dna/directory including Geant4-DNA data tables for interpolation.
    • +
  • +
  • New data set for nuclear shell effects, G4ABLA3.0.
  • +
+ + +

Examples

+
    +
  • Updated reference outputs.
  • +
  • advanced +
      +
    • air_shower +
        +
      • Adjust to the G4Cerenkov process now become a + G4VDiscreteProcess.
      • +
    • +
    • hadrontherapy +
        +
      • Updated physics commands in macro files. Updated README.
      • +
    • +
    • underground_physics +
        +
      • Corrected micrometer unit in macros from mum to um (old bug + since 8.2).
      • +
    • +
    • Rich +
        +
      • Adjust to the G4Cerenkov process now become a + G4VDiscreteProcess.
      • +
    • +
  • +
  • extended +
      +
    • electromagnetic/TestEm1 +
        +
      • Added material CO2 at 10^-6 atm.
      • +
      • HistoManager/HistoMessenger: printing selected histos + on ascii file.
      • +
    • +
    • electromagnetic/TestEm2 +
        +
      • PhysicsLists: added options from physics_lists library.
      • +
      • TestEm2.in update to provide the same reference output + as before.
      • +
    • +
    • electromagnetic/TestEm3 +
        +
      • Updated TestEm3.in macro.
      • +
      • Added PhysListEmStandardIG experimental PhysList.
      • +
      • HistoManager/HistoMessenger: printing selected histos + on ascii file.
      • +
    • +
    • electromagnetic/TestEm5
    • +
        +
      • New histogram numbering (see README). Changed all macros + accordingly, also in Geant3 version.
      • +
      • Reordered processes in PhysListEmStandardSS. +
      • Added histos 17->20: energy fluence.
      • +
      • Fixed usage of elastic builders.
      • +
      • RunAction: compute and print energy leakage and energy balance. +
      • PhysListEmStandard: PhysicsTables set with 100 bins per decade (EmOptions). +
      • Added PhysListEmStandardIG experimental PhysList.
      • +
      • TrackingAction: new histos (4,5) to plot vertex position + of secondaries.
      • +
      • HistoManager/HistoMessenger: printing selected histos + on ascii file.
      • +
      +
    • electromagnetic/TestEm7 +
        +
      • PhysListStandardSS: reviewed process ordering.
      • +
      • Added PhysListStandardIG, ion G4ionIonisation + process is substituted by G4ionGasIonisation and for + Coulomb scattering the model taking into account the recoil is + used.
      • +
      • Added class G4ScreenNuclearRecoil and ancillary utilities + for ion-ion scattering provided by Vanderbuilt University.
      • +
      • PhysListStandardSS: use G4ionGasIonisation.
      • +
      • PhysListStandardIG: use G4ScreenNuclearRecoil.
      • +
      • Fixed usage of elastic builders.
      • +
    • +
    • electromagnetic/TestEm8 +
        +
      • Use components of physics lists from physics_list module.
      • +
      • Fixed memory leak in the UI interface.
      • +
      • Removed used lines from PAI physics constructors, added pai_brem + constructor PhysListEmPAI in which AlongStep from + Bremsstrahlung is allowed.
      • +
      • Fixed logic in SteppingAction. +
    • +
    • electromagnetic/TestEm9 +
        +
      • Added PhysListEmStandardIG experimental physics list.
      • +
    • +
    • electromagnetic/TestEm11 +
        +
      • Added histo 8: energy profile as function of x/range.
      • +
      • Added input macro sandia.mac.
      • +
      • HistoManager/HistoMessenger: printing selected histos + on ascii file.
      • +
    • +
    • electromagnetic/TestEm12 +
        +
      • HistoManager: modified way to get csdaRange from + G4EmCalculator and compute stepMax for histo 8.
      • +
      • HistoManager/HistoMessenger: printing selected histos + on ascii file.
      • +
    • +
    • electromagnetic/TestEm14
    • +
    • electromagnetic/TestEm15 +
        +
      • HistoManager/HistoMessenger: printing selected histos + on ascii file.
      • +
    • +
    • electromagnetic/TestEm18 +
        +
      • PhysicsList: added more EmOptions.
      • +
      • HistoManager/HistoMessenger: printing selected histos + on ascii file.
      • +
    • +
    • exoticphysics/monopole +
        +
      • New example demostrating simulation of a classical magnetic + monopole and computation of the energy deposited.
      • +
    • +
    • field/field04 +
        +
      • New example showing how to define/use overlapping field elements. + Fields might be either magnetic, electric or both + (contributed by T.Roberts and Muons Inc., G4BEAMLINE).
      • +
    • +
    • gdml +
        +
      • Updated to co-work with built-in GDML plugin module GDML-3.
      • +
      • Showing loading of modular GDML files.
      • +
    • +
    • hadronic/Hadr01 +
        +
      • Physics list updated according to recent changes in hadronics and + physics_lists package. Added QGSC_BERT physics list.
      • +
    • +
    • medical/DICOM +
        +
      • Deep review: on the input files and the way how the geometry is + built. Now using new specialised fast navigation and parameterisation + according to G4PhantomParameterisation.
      • +
      • Added color by voxel and possibility to also use + nested-parameterisations.
      • +
    • +
    • medical/fanoCavity +
        +
      • DetectorConstruction: wallRadius automatically + recomputed; added materials graphite and aluminium.
      • +
      • PhysicsList: implemented G4CoulombScattering + process as option; use 100 bins per decade (emOptions) + in physics tables.
      • +
      • MyKleinNishina: do not cancel Compton cross-section in + cavity.
      • +
      • EventAction: added histogram of energy deposit in cavity + per incident gamma.
      • +
      • RunAction: compute error on energy deposit and mean + kinetic energy.
      • +
      • HistoManager/HistoMessenger: printing selected histos + on ascii file.
      • +
      • Syntax correction in DetectorMessenger.
      • +
    • +
    • medical/fanoCavity2 +
        +
      • New example demonstrating computation of the dose deposited in an + ionization chamber by an extended (one dimensional) monoenergetic + electron source, making use of a reciprocity theorem.
      • +
    • +
    • parallel/MPI +
        +
      • New module including a Geant4 MPI UI library and a couple of + examples showing how applications can be parallelized with + different MPI compliant libraries, such as LAM/MPI, MPICH2, + OpenMPI, etc.
      • +
    • +
    • persistency/P02 +
        +
      • New example showing how to store in a binary file and read back + the geometry tree using the 'reflection' technique for + persistency.
      • +
    • +
    • polarisation/Pol01 +
        +
      • Use new polarized photo electric effect, important for polarisation + transfer from photon to electron in certain regions of the + phasespace (see also E166 experiment).
      • +
    • +
    • optical/LXe +
        +
      • Adjust to the G4Cerenkov process now become a + G4VDiscreteProcess.
      • +
    • +
    • radioactivedecay/exrdm +
        +
      • Use decay and radiactive decay builders from physics_lists + module.
      • +
      • Added elastic, stopping, ion and extraEm physics.
      • +
      • Minor fix to low-energy EM physics builder.
      • +
    • +
    • runAndEvent/RE03 +
        +
      • New example demonstrating how to use UI-command based scoring. + It creates a parallel world for defining scoring mesh(es).
      • +
    • +
  • +
  • novice +
      +
    • N02 +
        +
      • Explicitely delete allocated parameterisation and step-limit + objects in ExN02DetectorConstruction class.
      • +
    • +
    • N03 +
        +
      • Added option to activate Qt rendering.
      • +
    • +
    • N05 +
        +
      • Modified physics list to take into account usage of Along + method in G4FastSimulationManagerProcess.
      • +
    • +
    • N06 +
        +
      • Adjust to the G4Cerenkov process now become a + G4VDiscreteProcess.
      • +
    • +
  • +
+ +
+ + + diff --git a/config/G4UI_BUILD.gmk b/config/G4UI_BUILD.gmk index 06b382b3f6..980f892305 100644 --- a/config/G4UI_BUILD.gmk +++ b/config/G4UI_BUILD.gmk @@ -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 diff --git a/config/G4UI_USE.gmk b/config/G4UI_USE.gmk index e7a1c9e049..c10acf30fe 100644 --- a/config/G4UI_USE.gmk +++ b/config/G4UI_USE.gmk @@ -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 diff --git a/config/G4VIS_BUILD.gmk b/config/G4VIS_BUILD.gmk index a7fba4aede..46aaff6e72 100644 --- a/config/G4VIS_BUILD.gmk +++ b/config/G4VIS_BUILD.gmk @@ -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 diff --git a/config/G4VIS_USE.gmk b/config/G4VIS_USE.gmk index 708b97bc94..469063ae10 100644 --- a/config/G4VIS_USE.gmk +++ b/config/G4VIS_USE.gmk @@ -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 diff --git a/config/History b/config/History index d1e8ebc163..e1ffb97bf5 100644 --- a/config/History +++ b/config/History @@ -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. diff --git a/config/architecture.gmk b/config/architecture.gmk index b24a436109..d8cebfb872 100644 --- a/config/architecture.gmk +++ b/config/architecture.gmk @@ -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. # diff --git a/config/binmake.gmk b/config/binmake.gmk index b0c9caf535..42e5d5e93e 100644 --- a/config/binmake.gmk +++ b/config/binmake.gmk @@ -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 diff --git a/config/interactivity.gmk b/config/interactivity.gmk index ede7513f3b..d59dec37a3 100644 --- a/config/interactivity.gmk +++ b/config/interactivity.gmk @@ -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 diff --git a/config/liblist.c b/config/liblist.c index 0a2b90402f..f3a2c1b30e 100644 --- a/config/liblist.c +++ b/config/liblist.c @@ -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='/'; diff --git a/config/scripts/env.csh.SH b/config/scripts/env.csh.SH index 073c1d913b..38c6aedd39 100755 --- a/config/scripts/env.csh.SH +++ b/config/scripts/env.csh.SH @@ -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 diff --git a/config/scripts/env.sh.SH b/config/scripts/env.sh.SH index 4f63bf1d1f..d13f244d8a 100755 --- a/config/scripts/env.sh.SH +++ b/config/scripts/env.sh.SH @@ -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 diff --git a/config/scripts/install.sh.SH b/config/scripts/install.sh.SH index 2c9d14f8d0..f7223f3c81 100755 --- a/config/scripts/install.sh.SH +++ b/config/scripts/install.sh.SH @@ -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 # diff --git a/config/scripts/move.sh.SH b/config/scripts/move.sh.SH index 33cba0c665..5f633cc8f4 100644 --- a/config/scripts/move.sh.SH +++ b/config/scripts/move.sh.SH @@ -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 # diff --git a/config/sys/Darwin-g++.gmk b/config/sys/Darwin-g++.gmk index 79ebc33fa0..7c85eccf8e 100644 --- a/config/sys/Darwin-g++.gmk +++ b/config/sys/Darwin-g++.gmk @@ -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. diff --git a/config/sys/Linux-g++.gmk b/config/sys/Linux-g++.gmk index 53742f34a7..a23eff85c0 100644 --- a/config/sys/Linux-g++.gmk +++ b/config/sys/Linux-g++.gmk @@ -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 diff --git a/config/sys/SUN-CC.gmk b/config/sys/SUN-CC.gmk index ff70ed747d..3cfc42ca3d 100644 --- a/config/sys/SUN-CC.gmk +++ b/config/sys/SUN-CC.gmk @@ -4,7 +4,7 @@ ifeq ($(G4SYSTEM),SUN-CC) CXX := CC ifdef G4OPTIMISE - CXXFLAGS := -O + CXXFLAGS := -xO2 else ifdef G4DEBUG CXXFLAGS := -g diff --git a/config/sys/WIN32-VC.gmk b/config/sys/WIN32-VC.gmk index 4a494875ac..7115f8a74f 100644 --- a/config/sys/WIN32-VC.gmk +++ b/config/sys/WIN32-VC.gmk @@ -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 diff --git a/environments/History b/environments/History index 7787c0c10a..9166067933 100644 --- a/environments/History +++ b/environments/History @@ -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 diff --git a/environments/MOMO/MomoHome/include/MomoEventAction.hh b/environments/MOMO/MomoHome/include/MomoEventAction.hh index 1a4c7c7ced..a57848c762 100644 --- a/environments/MOMO/MomoHome/include/MomoEventAction.hh +++ b/environments/MOMO/MomoHome/include/MomoEventAction.hh @@ -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 diff --git a/environments/MOMO/MomoHome/include/MomoRunAction.hh b/environments/MOMO/MomoHome/include/MomoRunAction.hh index 8200797f83..93200ee7bd 100644 --- a/environments/MOMO/MomoHome/include/MomoRunAction.hh +++ b/environments/MOMO/MomoHome/include/MomoRunAction.hh @@ -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 diff --git a/environments/MOMO/MomoHome/src/MomoEventAction.cc b/environments/MOMO/MomoHome/src/MomoEventAction.cc index 5b74e8aaf8..5848a08eca 100644 --- a/environments/MOMO/MomoHome/src/MomoEventAction.cc +++ b/environments/MOMO/MomoHome/src/MomoEventAction.cc @@ -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 $ // diff --git a/environments/MOMO/MomoHome/src/MomoRunAction.cc b/environments/MOMO/MomoHome/src/MomoRunAction.cc index ff2d3577de..7ecf5e287a 100644 --- a/environments/MOMO/MomoHome/src/MomoRunAction.cc +++ b/environments/MOMO/MomoHome/src/MomoRunAction.cc @@ -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 $ // diff --git a/environments/g4py/00README b/environments/g4py/00README index d65466a50a..c5a606911b 100644 --- a/environments/g4py/00README +++ b/environments/g4py/00README @@ -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!! diff --git a/environments/g4py/GNUmakefile b/environments/g4py/GNUmakefile index f4bf8bec47..836cbabc15 100644 --- a/environments/g4py/GNUmakefile +++ b/environments/g4py/GNUmakefile @@ -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 # =========================================================== diff --git a/environments/g4py/History b/environments/g4py/History index ada6e32763..9f102886d6 100644 --- a/environments/g4py/History +++ b/environments/g4py/History @@ -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 diff --git a/environments/g4py/config/g4py.gmk b/environments/g4py/config/g4py.gmk index 3dd0ebab3f..5e22ca01e1 100644 --- a/environments/g4py/config/g4py.gmk +++ b/environments/g4py/config/g4py.gmk @@ -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 + diff --git a/environments/g4py/config/module.gmk b/environments/g4py/config/module.gmk index 32f8567368..df06ac5eee 100644 --- a/environments/g4py/config/module.gmk +++ b/environments/g4py/config/module.gmk @@ -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) diff --git a/environments/g4py/config/sys/linux.gmk b/environments/g4py/config/sys/linux.gmk index e841b16c96..ae8c188f68 100644 --- a/environments/g4py/config/sys/linux.gmk +++ b/environments/g4py/config/sys/linux.gmk @@ -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 diff --git a/environments/g4py/config/sys/linuxx8664gcc.gmk b/environments/g4py/config/sys/linuxx8664gcc.gmk index 4610344cb7..84403965ab 100644 --- a/environments/g4py/config/sys/linuxx8664gcc.gmk +++ b/environments/g4py/config/sys/linuxx8664gcc.gmk @@ -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 diff --git a/environments/g4py/config/sys/macosx.gmk b/environments/g4py/config/sys/macosx.gmk index 549a80a015..f4b6f265c7 100644 --- a/environments/g4py/config/sys/macosx.gmk +++ b/environments/g4py/config/sys/macosx.gmk @@ -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 # diff --git a/environments/g4py/configure b/environments/g4py/configure index c933008b50..f17615ca9c 100755 --- a/environments/g4py/configure +++ b/environments/g4py/configure @@ -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 <> $make_config < 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 "." # --- diff --git a/environments/g4py/examples/History b/environments/g4py/examples/History index 80a3f75660..ac907998f4 100644 --- a/environments/g4py/examples/History +++ b/environments/g4py/examples/History @@ -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] diff --git a/environments/g4py/examples/README b/environments/g4py/examples/README index f0f57077a9..c76d94c238 100644 --- a/environments/g4py/examples/README +++ b/environments/g4py/examples/README @@ -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 + diff --git a/environments/g4py/examples/demos/TestEm0/g4lib/DetectorConstruction.cc b/environments/g4py/examples/demos/TestEm0/g4lib/DetectorConstruction.cc new file mode 100644 index 0000000000..2226ad6329 --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/g4lib/DetectorConstruction.cc @@ -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...... diff --git a/environments/g4py/examples/demos/TestEm0/g4lib/DetectorConstruction.hh b/environments/g4py/examples/demos/TestEm0/g4lib/DetectorConstruction.hh new file mode 100644 index 0000000000..d245bdc9d3 --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/g4lib/DetectorConstruction.hh @@ -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 + diff --git a/environments/g4py/examples/demos/TestEm0/g4lib/DetectorMessenger.cc b/environments/g4py/examples/demos/TestEm0/g4lib/DetectorMessenger.cc new file mode 100644 index 0000000000..ac09f39f1a --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/g4lib/DetectorMessenger.cc @@ -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...... diff --git a/environments/g4py/examples/demos/TestEm0/g4lib/DetectorMessenger.hh b/environments/g4py/examples/demos/TestEm0/g4lib/DetectorMessenger.hh new file mode 100644 index 0000000000..35b37bde81 --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/g4lib/DetectorMessenger.hh @@ -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 + diff --git a/environments/g4py/examples/demos/TestEm0/g4lib/GNUmakefile b/environments/g4py/examples/demos/TestEm0/g4lib/GNUmakefile new file mode 100644 index 0000000000..e1fc66da37 --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/g4lib/GNUmakefile @@ -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 + diff --git a/examples/extended/electromagnetic/TestEm8/src/PhysListEmStandard.cc b/environments/g4py/examples/demos/TestEm0/g4lib/PhysListEmStandard.cc similarity index 82% rename from examples/extended/electromagnetic/TestEm8/src/PhysListEmStandard.cc rename to environments/g4py/examples/demos/TestEm0/g4lib/PhysListEmStandard.cc index 626642f9d9..1f389b0b5b 100644 --- a/examples/extended/electromagnetic/TestEm8/src/PhysListEmStandard.cc +++ b/environments/g4py/examples/demos/TestEm0/g4lib/PhysListEmStandard.cc @@ -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); } } } diff --git a/examples/extended/electromagnetic/TestEm8/include/PhysListEmStandard.hh b/environments/g4py/examples/demos/TestEm0/g4lib/PhysListEmStandard.hh similarity index 90% rename from examples/extended/electromagnetic/TestEm8/include/PhysListEmStandard.hh rename to environments/g4py/examples/demos/TestEm0/g4lib/PhysListEmStandard.hh index 5adb9cbe05..fb7e3731b9 100644 --- a/examples/extended/electromagnetic/TestEm8/include/PhysListEmStandard.hh +++ b/environments/g4py/examples/demos/TestEm0/g4lib/PhysListEmStandard.hh @@ -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...... diff --git a/examples/extended/electromagnetic/TestEm8/src/PhysListParticles.cc b/environments/g4py/examples/demos/TestEm0/g4lib/PhysicsList.cc similarity index 58% rename from examples/extended/electromagnetic/TestEm8/src/PhysListParticles.cc rename to environments/g4py/examples/demos/TestEm0/g4lib/PhysicsList.cc index a6d4678b9f..64d3fcd10c 100644 --- a/examples/extended/electromagnetic/TestEm8/src/PhysListParticles.cc +++ b/environments/g4py/examples/demos/TestEm0/g4lib/PhysicsList.cc @@ -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...... diff --git a/examples/extended/radioactivedecay/exrdm/src/exrdmPhysListGeneral.cc b/environments/g4py/examples/demos/TestEm0/g4lib/PhysicsList.hh similarity index 63% rename from examples/extended/radioactivedecay/exrdm/src/exrdmPhysListGeneral.cc rename to environments/g4py/examples/demos/TestEm0/g4lib/PhysicsList.hh index 61343b13bd..7bf913a003 100644 --- a/examples/extended/radioactivedecay/exrdm/src/exrdmPhysListGeneral.cc +++ b/environments/g4py/examples/demos/TestEm0/g4lib/PhysicsList.hh @@ -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 + diff --git a/environments/g4py/examples/demos/TestEm0/g4lib/PhysicsListMessenger.cc b/environments/g4py/examples/demos/TestEm0/g4lib/PhysicsListMessenger.cc new file mode 100644 index 0000000000..fde6655f31 --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/g4lib/PhysicsListMessenger.cc @@ -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...... diff --git a/environments/g4py/examples/demos/TestEm0/g4lib/PhysicsListMessenger.hh b/environments/g4py/examples/demos/TestEm0/g4lib/PhysicsListMessenger.hh new file mode 100644 index 0000000000..b570c1f146 --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/g4lib/PhysicsListMessenger.hh @@ -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 + diff --git a/environments/g4py/examples/demos/TestEm0/g4lib/PrimaryGeneratorAction.cc b/environments/g4py/examples/demos/TestEm0/g4lib/PrimaryGeneratorAction.cc new file mode 100644 index 0000000000..2c89d34ca6 --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/g4lib/PrimaryGeneratorAction.cc @@ -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...... + diff --git a/environments/g4py/examples/demos/TestEm0/g4lib/PrimaryGeneratorAction.hh b/environments/g4py/examples/demos/TestEm0/g4lib/PrimaryGeneratorAction.hh new file mode 100644 index 0000000000..22dd98073b --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/g4lib/PrimaryGeneratorAction.hh @@ -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 + + diff --git a/environments/g4py/examples/demos/TestEm0/g4lib/RunAction.cc b/environments/g4py/examples/demos/TestEm0/g4lib/RunAction.cc new file mode 100644 index 0000000000..4f80446045 --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/g4lib/RunAction.cc @@ -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 + +//....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 emName; + std::vector enerCut; + size_t length = plist->size(); + for (size_t j=0; jGetProcessName(); + 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; jGetNumberOfElements() == 1) { + G4double Z = material->GetZ(); + G4double A = material->GetA(); + + std::vector sigma0; + G4double sig, sigtot = 0.; + + for (size_t j=0; j sigma1; + std::vector sigma2; + G4double Sig, Sigtot = 0.; + + for (size_t j=0; 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 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 dedx1; + std::vector dedx2; + G4double dedx, dedxtot = 0.; + + for (size_t j=0; jGetTableSize(); + const G4MaterialCutsCouple* couple = 0; + G4int index = 0; + for (size_t i=0; iGetMaterialCutsCouple(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...... diff --git a/environments/g4py/examples/demos/TestEm0/g4lib/RunAction.hh b/environments/g4py/examples/demos/TestEm0/g4lib/RunAction.hh new file mode 100644 index 0000000000..d127a29fe2 --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/g4lib/RunAction.hh @@ -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 + diff --git a/environments/g4py/examples/demos/TestEm0/g4lib/pyTestEm0.cc b/environments/g4py/examples/demos/TestEm0/g4lib/pyTestEm0.cc new file mode 100644 index 0000000000..e51465089b --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/g4lib/pyTestEm0.cc @@ -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 +#include + +#include +#include + +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::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", "testEm0 detector") + .def("SetMaterial",&DetectorConstruction::SetMaterial) + ; + + class_ > + ("PrimaryGeneratorAction", init()) + ; + + class_ > + ("RunAction", init()) + ; + + class_ > + ("PhysicsList", "testEm0 physics list") + ; +} + diff --git a/environments/g4py/examples/demos/TestEm0/testem0.py b/environments/g4py/examples/demos/TestEm0/testem0.py new file mode 100755 index 0000000000..a67bc25685 --- /dev/null +++ b/environments/g4py/examples/demos/TestEm0/testem0.py @@ -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() + diff --git a/environments/g4py/examples/demos/water_phantom/g4lib/GNUmakefile b/environments/g4py/examples/demos/water_phantom/g4lib/GNUmakefile index 19e6bd028f..c8028f694e 100644 --- a/environments/g4py/examples/demos/water_phantom/g4lib/GNUmakefile +++ b/environments/g4py/examples/demos/water_phantom/g4lib/GNUmakefile @@ -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 # =========================================================== diff --git a/environments/g4py/examples/demos/water_phantom/g4lib/MyDetectorConstruction.cc b/environments/g4py/examples/demos/water_phantom/g4lib/MyDetectorConstruction.cc index 2900d64ffe..0813696e66 100644 --- a/environments/g4py/examples/demos/water_phantom/g4lib/MyDetectorConstruction.cc +++ b/environments/g4py/examples/demos/water_phantom/g4lib/MyDetectorConstruction.cc @@ -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 // diff --git a/environments/g4py/examples/demos/water_phantom/g4lib/MyDetectorConstruction.hh b/environments/g4py/examples/demos/water_phantom/g4lib/MyDetectorConstruction.hh index 14f465676a..5abcb4f0eb 100644 --- a/environments/g4py/examples/demos/water_phantom/g4lib/MyDetectorConstruction.hh +++ b/environments/g4py/examples/demos/water_phantom/g4lib/MyDetectorConstruction.hh @@ -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 // diff --git a/environments/g4py/examples/demos/water_phantom/g4lib/MyMaterials.cc b/environments/g4py/examples/demos/water_phantom/g4lib/MyMaterials.cc index a33a00bb7c..848c7882ee 100644 --- a/environments/g4py/examples/demos/water_phantom/g4lib/MyMaterials.cc +++ b/environments/g4py/examples/demos/water_phantom/g4lib/MyMaterials.cc @@ -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 // diff --git a/environments/g4py/examples/demos/water_phantom/g4lib/MyMaterials.hh b/environments/g4py/examples/demos/water_phantom/g4lib/MyMaterials.hh index 67ab64d805..39d944a095 100644 --- a/environments/g4py/examples/demos/water_phantom/g4lib/MyMaterials.hh +++ b/environments/g4py/examples/demos/water_phantom/g4lib/MyMaterials.hh @@ -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 // diff --git a/environments/g4py/examples/demos/water_phantom/g4lib/MyPhysicsList.cc b/environments/g4py/examples/demos/water_phantom/g4lib/MyPhysicsList.cc index 439d97759e..c4d44e1531 100644 --- a/environments/g4py/examples/demos/water_phantom/g4lib/MyPhysicsList.cc +++ b/environments/g4py/examples/demos/water_phantom/g4lib/MyPhysicsList.cc @@ -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 // diff --git a/environments/g4py/examples/demos/water_phantom/g4lib/MyPhysicsList.hh b/environments/g4py/examples/demos/water_phantom/g4lib/MyPhysicsList.hh index 2054ddfd1c..de224106bc 100644 --- a/environments/g4py/examples/demos/water_phantom/g4lib/MyPhysicsList.hh +++ b/environments/g4py/examples/demos/water_phantom/g4lib/MyPhysicsList.hh @@ -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 // diff --git a/environments/g4py/examples/demos/water_phantom/g4lib/Particles.cc b/environments/g4py/examples/demos/water_phantom/g4lib/Particles.cc index e03e639a47..7cec75a0f7 100644 --- a/environments/g4py/examples/demos/water_phantom/g4lib/Particles.cc +++ b/environments/g4py/examples/demos/water_phantom/g4lib/Particles.cc @@ -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 // diff --git a/environments/g4py/examples/demos/water_phantom/g4lib/PhysicsListEMstd.cc b/environments/g4py/examples/demos/water_phantom/g4lib/PhysicsListEMstd.cc index c50a7ca0b0..1b581e1e74 100644 --- a/environments/g4py/examples/demos/water_phantom/g4lib/PhysicsListEMstd.cc +++ b/environments/g4py/examples/demos/water_phantom/g4lib/PhysicsListEMstd.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 // diff --git a/environments/g4py/examples/demos/water_phantom/g4lib/pydemo_wp.cc b/environments/g4py/examples/demos/water_phantom/g4lib/pydemo_wp.cc index 1bfac3de7c..6e4dd3e491 100644 --- a/environments/g4py/examples/demos/water_phantom/g4lib/pydemo_wp.cc +++ b/environments/g4py/examples/demos/water_phantom/g4lib/pydemo_wp.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 // diff --git a/environments/g4py/examples/HowtoEZsim.tex b/environments/g4py/examples/docs/HowtoEZsim.tex similarity index 100% rename from environments/g4py/examples/HowtoEZsim.tex rename to environments/g4py/examples/docs/HowtoEZsim.tex diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml.xsd new file mode 100644 index 0000000000..07b4b1a8c6 --- /dev/null +++ b/environments/g4py/examples/gdml/GDMLSchema/gdml.xsd @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + Represents a single unique copy a of an associated logical volume + in geometrical hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + Represents a division of the associated logical volume + in geometrical hierarchy + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + Base type for logical surfaces (for the moment only optical) + + + + + + + + + Abstract element for all solids substitution group + + + + + + Surface between two physical volumes + + + + + + + + + + + + + + + + Surface between two physical volumes + + + + + + + + + + + + + + + Definitions of a geometrical hierarchy of a set of volumes + + + + + + + + + + + + + + + + + + + + + + + + Geometry setup representing the particular geometry hierarchy by refferring to + a given volume which becomes the top level volume + + + + + + A reference to the previously defined volume + in the structure block chosen by this setup + World volumme can't be an assembly volume + + + + + + + + + + + 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 + + + + + diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_core.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_core.xsd new file mode 100644 index 0000000000..811e4d78f7 --- /dev/null +++ b/environments/g4py/examples/gdml/GDMLSchema/gdml_core.xsd @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + An anonymous, local scope, value + + + + + + + An anonymous, local scope, value + + + + + + + Named (referenced), global scope, constant value + + + + + + + + + + + Named (referenced), local scope, variable value + + + + + + + + + + + An anonymous quantity, local scope, with a unit, + (possibly of a given type) quantity + + + + + + + + + + + + + Named (referenced), global scope,(possibly of a given type) quantity + + + + + + + + + + + An anonymous, 3 dimensional, local scope, vector of doubles + + + + + + + + + A bi-dimensional matrix of doubles + + + + + + + + + Named (referenced), 3 dimensional, global scope, vector of doubles + + + + + + + + + + + An anonymous, 3 dimensional, local scope, with a unit, + (possibly of a given type) quantity vector + + + + + + + + + + + + + Named (referenced), 3 dimensional, global scope, with a unit, + (possibly of a given type) quantity vector + + + + + + + + + + + Local reference to an element of a named type + + + + + + + Reference to an external file containing sub-volume information + + + + + + + + List of local references to a set of element of a named type + + + + + + + Auxiliary information like sensitive detector declaration, etc. + + + + + + diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_define.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_define.xsd new file mode 100644 index 0000000000..9a72fe6715 --- /dev/null +++ b/environments/g4py/examples/gdml/GDMLSchema/gdml_define.xsd @@ -0,0 +1,118 @@ + + + + + + + + + + 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 + + + + + + + The global complex type is defined in order to reuse this defintion + in derived schemas + + + + + + + + + + + + Named constant + + + + + + + Named variable + + + + + + + Named matrix + + + + + + + Named quantity + + + + + + + Named expression, may contain other named constants, + quantities and expressions + + + + + + + Named cartesian position, default unit mm + + + + + + + Named cartesian rotation, default unit radian + + + + + + + Named cartesian rotation, default unit radian + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_extensions.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_extensions.xsd new file mode 100644 index 0000000000..022a16c4d4 --- /dev/null +++ b/environments/g4py/examples/gdml/GDMLSchema/gdml_extensions.xsd @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_materials.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_materials.xsd new file mode 100644 index 0000000000..bb43e6cb3f --- /dev/null +++ b/environments/g4py/examples/gdml/GDMLSchema/gdml_materials.xsd @@ -0,0 +1,390 @@ + + + + + + + + + + + + Atomic mass, quantity type A, default unit g/mole + + + + + + + + + + + + Density + + + + + + + + + + + + General material properties + + + + + + General material property (const or vector) + + + + + + + + + + + + + + Radiation length + + + + + + + + + + + + + A reference to a previsouly defined named radiation length quantity value + + + + + + + Absorption length + + + + + + + + + + + + + A reference to a previsouly defined named absorption length quantity value + + + + + + + Temperature + + + + + + + + + + + + + A reference to previously defined named temperature quantity value + + + + + + + Pressure + + + + + + + + + + + + + A reference to previously defined named pressure quantity value + + + + + + + + + General material attributes + + + + Material name + + + + + Material chemical formula + + + + + Material physical state + + + + + + + + + + + + + + + Base type for materials + + + + + + + + + + + + + Materials description + + + + + + + Material related definitons of constants and quantities + In this version of schema these become visible in global scope + + + + + An isotope + + + + + A simple element or an element composed of isotopes + + + + + A composite or a mixture complex material + + + + + + + + + Exported isotope type + + + + + + + + Density quantity value + + + + + A reference to a previsouly defined named density quantity value + + + + + + + + Number of nucleons + + + + + Atomic number + + + + + + + + + Exported material element type + + + + + + + + Density quantity value + + + + + A reference to a previsouly defined named density quantity value + + + + + + An element can be defined either as a simple element or by a set + of isotopes fractions + + + + + An isotope fraction of an element where n is the actual amount + of the isotope in the element + + + + + + + + + + + + + + Number of nucleons + + + + + Atomic number + + + + + + + + + Exported material composite or mixture type + + + + + + + + + Density quantity value + + + + + A reference to a previsouly defined named density quantity value + + + + + + 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. + + + + + 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 + + + + + + + + + + + + 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 + + + + + + + + + + + + + + Atomic number + + + + + + + diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_parameterised.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_parameterised.xsd new file mode 100644 index 0000000000..fbd85afc5c --- /dev/null +++ b/environments/g4py/examples/gdml/GDMLSchema/gdml_parameterised.xsd @@ -0,0 +1,104 @@ + + + + + + + + Abstract base for parametrised dimensions + + + + + + Abstract element for substitution group + + + + + + Dimensions for parametrised boxes. + + + + + + + + + + + + + + + Dimensions for parametrised boxes. + + + + + + + + + + + + + + + + + Abstract base for parameterised placement strategies + + + + + + Abstract element for substitution group + + + + + + Parameterised volumes get created using + the tabularized position and sizes. + + + + + + + + + + + + + + + + Base type for parameterised volumes + + + + + + + + + + + + + + Holds parameteres for parameterised volumes. + + + + + + + + + diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_replicas.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_replicas.xsd new file mode 100644 index 0000000000..5e45b8b11e --- /dev/null +++ b/environments/g4py/examples/gdml/GDMLSchema/gdml_replicas.xsd @@ -0,0 +1,80 @@ + + + + + + + + Abstract base for replication placement strategies + + + + + + Abstract element for substitution group + + + + + + + + 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! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base type for replicated volumes + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_solids.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_solids.xsd new file mode 100644 index 0000000000..4bb08cb8c8 --- /dev/null +++ b/environments/g4py/examples/gdml/GDMLSchema/gdml_solids.xsd @@ -0,0 +1,833 @@ + + + + + + + + + + + Base solid type + + + + Length unit of all dimensions used for this instance of solid + + + + + Angle unit of angles used in definition of this solid + + + + + + + + + Base type for boolean solids + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + Base surface type + + + + + + + + + Abstract element for all solids substitution group + + + + + + + Abstract element for surfaces substitution + + + + + + + Solids definitions block + + + + + + Definitions of constants and expressions to be used for solids' + dimensions and transformations + In this version these become part of the global scope. + + + + + + + + + + + + + Exported boolean union of two solids + + + + + + + Exported boolean subtraction of two solids + + + + + + + Exported boolean intersectioin of two solids + + + + + + + CSG box solid described by 3 dimensions of x, y, and z + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + CSG paraboloid defined by + rlo radius at -dz + rhi radius at +dz + dz half z length + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + CSG orb solid (simplified sphere with only rmax) is described by + r Outside radius + + + + + + + + + + + + + + Polyhedra is described by + startphi initial phi starting angle + totalphi total phi angle + numsides number sides + and a set of zplanes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Poligonal extrusion is described by + an unbounded (min. 3) number of vertices of the blueprint polygon + and an unbounded number of Z sections. + + + + + + + + + + + + + + + + + + + + + + Tube with hyperbolic profile described by + rmin innerRadius + rmax outerRadius + inst innerStereo + outst outerStereo + z z length + + + + + + + + + + + + + + + + + + + + Volume representing a tube with elliptical + cross section. + + + + + + + + + + + + + + + + + + Volume representing a tetrahedron. + + + + + + + + + + + + + + + + + + + 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). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base facet type + + + + + + + Abstract element for all facets substitution group + + + + + + + + Triangular facet. + + + + + + + + + + + + + + + + + + + + Quadrangular facet. + + + + + + + + + + + + + + + + + + + Tessellated solid + + + + + + + + + + + + + + + + + Optical surface used by Geant4 optical processes + + + + + + + + + + + + + + diff --git a/environments/g4py/examples/gdml/qgeom.gdml b/environments/g4py/examples/gdml/qgeom.gdml new file mode 100644 index 0000000000..9d1b91ba82 --- /dev/null +++ b/environments/g4py/examples/gdml/qgeom.gdml @@ -0,0 +1,531 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/environments/g4py/examples/gdml/read_g4gdml.py b/environments/g4py/examples/gdml/read_g4gdml.py new file mode 100755 index 0000000000..229b562ba6 --- /dev/null +++ b/environments/g4py/examples/gdml/read_g4gdml.py @@ -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.") + diff --git a/environments/g4py/examples/gdml/read_gdml.py b/environments/g4py/examples/gdml/read_gdml.py new file mode 100755 index 0000000000..7efd97d82a --- /dev/null +++ b/environments/g4py/examples/gdml/read_gdml.py @@ -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.") + diff --git a/environments/g4py/examples/gdml/write_gdml.py b/environments/g4py/examples/gdml/write_gdml.py new file mode 100755 index 0000000000..f6178d40e7 --- /dev/null +++ b/environments/g4py/examples/gdml/write_gdml.py @@ -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) + diff --git a/environments/g4py/site-modules/EZsim/EZgeom/EzDetectorConstruction.cc b/environments/g4py/site-modules/EZsim/EZgeom/EzDetectorConstruction.cc index eb87573f33..e8a1be68cd 100644 --- a/environments/g4py/site-modules/EZsim/EZgeom/EzDetectorConstruction.cc +++ b/environments/g4py/site-modules/EZsim/EZgeom/EzDetectorConstruction.cc @@ -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 // diff --git a/environments/g4py/site-modules/EZsim/EZgeom/EzDetectorConstruction.hh b/environments/g4py/site-modules/EZsim/EZgeom/EzDetectorConstruction.hh index 077c44662f..418f8a9cb9 100644 --- a/environments/g4py/site-modules/EZsim/EZgeom/EzDetectorConstruction.hh +++ b/environments/g4py/site-modules/EZsim/EZgeom/EzDetectorConstruction.hh @@ -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 // diff --git a/environments/g4py/site-modules/EZsim/EZgeom/GNUmakefile b/environments/g4py/site-modules/EZsim/EZgeom/GNUmakefile index 72f6add1ae..5e29d4a8f8 100644 --- a/environments/g4py/site-modules/EZsim/EZgeom/GNUmakefile +++ b/environments/g4py/site-modules/EZsim/EZgeom/GNUmakefile @@ -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 # =========================================================== diff --git a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVolume.cc b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVolume.cc index 5f041e15c1..66c4c9a274 100644 --- a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVolume.cc +++ b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVolume.cc @@ -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 // diff --git a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVolume.hh b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVolume.hh index 1d70f5288e..319161c31f 100644 --- a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVolume.hh +++ b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVolume.hh @@ -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 // diff --git a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVoxelParameterization.cc b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVoxelParameterization.cc index d59da1a537..244342d5a8 100644 --- a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVoxelParameterization.cc +++ b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVoxelParameterization.cc @@ -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 // diff --git a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVoxelParameterization.hh b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVoxelParameterization.hh index 39b094137b..393e98b9c6 100644 --- a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVoxelParameterization.hh +++ b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzVoxelParameterization.hh @@ -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 // diff --git a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzWorld.cc b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzWorld.cc index 3ac71bd050..848691ac32 100644 --- a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzWorld.cc +++ b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzWorld.cc @@ -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 // diff --git a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzWorld.hh b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzWorld.hh index b106846496..11323f3bf2 100644 --- a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzWorld.hh +++ b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/G4EzWorld.hh @@ -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 // diff --git a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/GNUmakefile b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/GNUmakefile index 69ef78e8f2..2c9f403781 100644 --- a/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/GNUmakefile +++ b/environments/g4py/site-modules/EZsim/EZgeom/ezgeom/GNUmakefile @@ -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 # =========================================================== diff --git a/environments/g4py/site-modules/EZsim/EZgeom/pyEzgeom.cc b/environments/g4py/site-modules/EZsim/EZgeom/pyEzgeom.cc index f3997219b9..a189f891b4 100644 --- a/environments/g4py/site-modules/EZsim/EZgeom/pyEzgeom.cc +++ b/environments/g4py/site-modules/EZsim/EZgeom/pyEzgeom.cc @@ -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 // diff --git a/environments/g4py/site-modules/EZsim/GNUmakefile b/environments/g4py/site-modules/EZsim/GNUmakefile index 2ed16a1872..3238a8770c 100644 --- a/environments/g4py/site-modules/EZsim/GNUmakefile +++ b/environments/g4py/site-modules/EZsim/GNUmakefile @@ -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 # =========================================================== diff --git a/environments/g4py/site-modules/EZsim/python/GNUmakefile b/environments/g4py/site-modules/EZsim/python/GNUmakefile index 9112c17aaf..1b2b247c7f 100644 --- a/environments/g4py/site-modules/EZsim/python/GNUmakefile +++ b/environments/g4py/site-modules/EZsim/python/GNUmakefile @@ -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 # =========================================================== diff --git a/environments/g4py/site-modules/GNUmakefile b/environments/g4py/site-modules/GNUmakefile index 564c0f28a9..9171a1c30c 100644 --- a/environments/g4py/site-modules/GNUmakefile +++ b/environments/g4py/site-modules/GNUmakefile @@ -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 # =========================================================== diff --git a/environments/g4py/site-modules/geometries/ExN01geom/ExN01DetectorConstruction.cc b/environments/g4py/site-modules/geometries/ExN01geom/ExN01DetectorConstruction.cc index 4ffa4ebbd4..537c865323 100644 --- a/environments/g4py/site-modules/geometries/ExN01geom/ExN01DetectorConstruction.cc +++ b/environments/g4py/site-modules/geometries/ExN01geom/ExN01DetectorConstruction.cc @@ -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 // diff --git a/environments/g4py/site-modules/geometries/ExN01geom/ExN01DetectorConstruction.hh b/environments/g4py/site-modules/geometries/ExN01geom/ExN01DetectorConstruction.hh index 30bea119ae..1084664b05 100644 --- a/environments/g4py/site-modules/geometries/ExN01geom/ExN01DetectorConstruction.hh +++ b/environments/g4py/site-modules/geometries/ExN01geom/ExN01DetectorConstruction.hh @@ -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 // diff --git a/environments/g4py/site-modules/geometries/ExN01geom/GNUmakefile b/environments/g4py/site-modules/geometries/ExN01geom/GNUmakefile index d038615186..7441de1b17 100644 --- a/environments/g4py/site-modules/geometries/ExN01geom/GNUmakefile +++ b/environments/g4py/site-modules/geometries/ExN01geom/GNUmakefile @@ -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 # =========================================================== diff --git a/environments/g4py/site-modules/geometries/ExN01geom/pyExN01geom.cc b/environments/g4py/site-modules/geometries/ExN01geom/pyExN01geom.cc index d04c1344da..4b20af3670 100644 --- a/environments/g4py/site-modules/geometries/ExN01geom/pyExN01geom.cc +++ b/environments/g4py/site-modules/geometries/ExN01geom/pyExN01geom.cc @@ -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 // diff --git a/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorConstruction.cc b/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorConstruction.cc index 3565801ff9..f556ee52ff 100644 --- a/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorConstruction.cc +++ b/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorConstruction.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 $ // // diff --git a/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorConstruction.hh b/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorConstruction.hh index 6db87a24b8..3cad82a003 100644 --- a/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorConstruction.hh +++ b/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorConstruction.hh @@ -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 $ // // diff --git a/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorMessenger.cc b/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorMessenger.cc index 0ac8c2c9d4..accef6109a 100644 --- a/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorMessenger.cc +++ b/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorMessenger.cc @@ -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 $ // // diff --git a/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorMessenger.hh b/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorMessenger.hh index eb994f0a44..c379ea5a7c 100644 --- a/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorMessenger.hh +++ b/environments/g4py/site-modules/geometries/ExN03geom/ExN03DetectorMessenger.hh @@ -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 $ // // diff --git a/environments/g4py/site-modules/geometries/ExN03geom/GNUmakefile b/environments/g4py/site-modules/geometries/ExN03geom/GNUmakefile index 5112ffa93c..efd3887781 100644 --- a/environments/g4py/site-modules/geometries/ExN03geom/GNUmakefile +++ b/environments/g4py/site-modules/geometries/ExN03geom/GNUmakefile @@ -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 # =========================================================== diff --git a/environments/g4py/site-modules/geometries/ExN03geom/pyExN03geom.cc b/environments/g4py/site-modules/geometries/ExN03geom/pyExN03geom.cc index 66847784f5..07a9a29c45 100644 --- a/environments/g4py/site-modules/geometries/ExN03geom/pyExN03geom.cc +++ b/environments/g4py/site-modules/geometries/ExN03geom/pyExN03geom.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyExN03geom.cc,v 1.4 2006/06/29 15:29:21 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyExN03geom.cc // diff --git a/environments/g4py/site-modules/geometries/GNUmakefile b/environments/g4py/site-modules/geometries/GNUmakefile index de75ea324e..dbb087accf 100644 --- a/environments/g4py/site-modules/geometries/GNUmakefile +++ b/environments/g4py/site-modules/geometries/GNUmakefile @@ -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 site-modules # =========================================================== diff --git a/environments/g4py/site-modules/geometries/Qgeom/GNUmakefile b/environments/g4py/site-modules/geometries/Qgeom/GNUmakefile index 8c12de9b6b..a1d943197a 100644 --- a/environments/g4py/site-modules/geometries/Qgeom/GNUmakefile +++ b/environments/g4py/site-modules/geometries/Qgeom/GNUmakefile @@ -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 # =========================================================== diff --git a/environments/g4py/site-modules/geometries/Qgeom/QDetectorConstruction.cc b/environments/g4py/site-modules/geometries/Qgeom/QDetectorConstruction.cc index 20fbce42a7..c5d9c0633a 100644 --- a/environments/g4py/site-modules/geometries/Qgeom/QDetectorConstruction.cc +++ b/environments/g4py/site-modules/geometries/Qgeom/QDetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QDetectorConstruction.cc,v 1.4 2006/06/29 15:29:24 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // QDetectorConstruction.cc // diff --git a/environments/g4py/site-modules/geometries/Qgeom/QDetectorConstruction.hh b/environments/g4py/site-modules/geometries/Qgeom/QDetectorConstruction.hh index 69c8bc600e..b5449185ab 100644 --- a/environments/g4py/site-modules/geometries/Qgeom/QDetectorConstruction.hh +++ b/environments/g4py/site-modules/geometries/Qgeom/QDetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QDetectorConstruction.hh,v 1.4 2006/06/29 15:29:26 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // QDetectorConstruction.hh // diff --git a/environments/g4py/site-modules/geometries/Qgeom/pyQgeom.cc b/environments/g4py/site-modules/geometries/Qgeom/pyQgeom.cc index b11900261d..0c442fa8e6 100644 --- a/environments/g4py/site-modules/geometries/Qgeom/pyQgeom.cc +++ b/environments/g4py/site-modules/geometries/Qgeom/pyQgeom.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyQgeom.cc,v 1.4 2006/06/29 15:29:29 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyQgeom.cc // diff --git a/environments/g4py/site-modules/materials/GNUmakefile b/environments/g4py/site-modules/materials/GNUmakefile index 50c7e575d9..657d67b9d5 100644 --- a/environments/g4py/site-modules/materials/GNUmakefile +++ b/environments/g4py/site-modules/materials/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 10:28:34 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py site-modules # =========================================================== diff --git a/environments/g4py/site-modules/materials/NISTmaterials/GNUmakefile b/environments/g4py/site-modules/materials/NISTmaterials/GNUmakefile index 33f1aa9bb3..239b279eb5 100644 --- a/environments/g4py/site-modules/materials/NISTmaterials/GNUmakefile +++ b/environments/g4py/site-modules/materials/NISTmaterials/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 10:28:34 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/site-modules/materials/NISTmaterials/NISTmaterials.cc b/environments/g4py/site-modules/materials/NISTmaterials/NISTmaterials.cc index 02332baa2f..05a45863c2 100644 --- a/environments/g4py/site-modules/materials/NISTmaterials/NISTmaterials.cc +++ b/environments/g4py/site-modules/materials/NISTmaterials/NISTmaterials.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: NISTmaterials.cc,v 1.4 2006/06/29 15:29:32 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // NISTmaterials.cc // diff --git a/environments/g4py/site-modules/materials/NISTmaterials/pyNISTmaterials.cc b/environments/g4py/site-modules/materials/NISTmaterials/pyNISTmaterials.cc index bfe692fc27..f57f809c7a 100644 --- a/environments/g4py/site-modules/materials/NISTmaterials/pyNISTmaterials.cc +++ b/environments/g4py/site-modules/materials/NISTmaterials/pyNISTmaterials.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyNISTmaterials.cc,v 1.4 2006/06/29 15:29:34 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyNISTmaterials.cc // diff --git a/environments/g4py/site-modules/materials/Qmaterials/GNUmakefile b/environments/g4py/site-modules/materials/Qmaterials/GNUmakefile index e1c6e29d03..b65180dd0b 100644 --- a/environments/g4py/site-modules/materials/Qmaterials/GNUmakefile +++ b/environments/g4py/site-modules/materials/Qmaterials/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 10:28:36 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/site-modules/materials/Qmaterials/Qmaterials.cc b/environments/g4py/site-modules/materials/Qmaterials/Qmaterials.cc index 157185e095..d1c7970dba 100644 --- a/environments/g4py/site-modules/materials/Qmaterials/Qmaterials.cc +++ b/environments/g4py/site-modules/materials/Qmaterials/Qmaterials.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: Qmaterials.cc,v 1.4 2006/06/29 15:29:37 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // Qmaterials.cc // diff --git a/environments/g4py/site-modules/materials/Qmaterials/pyQmaterials.cc b/environments/g4py/site-modules/materials/Qmaterials/pyQmaterials.cc index d2de285f4e..d02e8a748a 100644 --- a/environments/g4py/site-modules/materials/Qmaterials/pyQmaterials.cc +++ b/environments/g4py/site-modules/materials/Qmaterials/pyQmaterials.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyQmaterials.cc,v 1.4 2006/06/29 15:29:40 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyQmaterials.cc // diff --git a/environments/g4py/site-modules/physics_lists/EMLowEpl/GNUmakefile b/environments/g4py/site-modules/physics_lists/EMLowEpl/GNUmakefile index 991ccc54ac..598073ebd7 100644 --- a/environments/g4py/site-modules/physics_lists/EMLowEpl/GNUmakefile +++ b/environments/g4py/site-modules/physics_lists/EMLowEpl/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.1 2006/07/12 08:46:18 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/site-modules/physics_lists/EMLowEpl/PhysicsListEMlowE.cc b/environments/g4py/site-modules/physics_lists/EMLowEpl/PhysicsListEMlowE.cc index 092735d42d..be8db79de2 100644 --- a/environments/g4py/site-modules/physics_lists/EMLowEpl/PhysicsListEMlowE.cc +++ b/environments/g4py/site-modules/physics_lists/EMLowEpl/PhysicsListEMlowE.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListEMlowE.cc,v 1.1 2006/07/12 08:46:18 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // PhysicsListEMlowE.cc // diff --git a/environments/g4py/site-modules/physics_lists/EMLowEpl/PhysicsListEMlowE.hh b/environments/g4py/site-modules/physics_lists/EMLowEpl/PhysicsListEMlowE.hh index 0cf9b218e7..af33ebde96 100644 --- a/environments/g4py/site-modules/physics_lists/EMLowEpl/PhysicsListEMlowE.hh +++ b/environments/g4py/site-modules/physics_lists/EMLowEpl/PhysicsListEMlowE.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListEMlowE.hh,v 1.1 2006/07/12 08:46:18 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // PhysicsListEMlowE.hh // diff --git a/environments/g4py/site-modules/physics_lists/EMLowEpl/pyEMLowEpl.cc b/environments/g4py/site-modules/physics_lists/EMLowEpl/pyEMLowEpl.cc index a69e8603cc..d12801d77b 100644 --- a/environments/g4py/site-modules/physics_lists/EMLowEpl/pyEMLowEpl.cc +++ b/environments/g4py/site-modules/physics_lists/EMLowEpl/pyEMLowEpl.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyEMLowEpl.cc,v 1.2 2006/07/12 09:18:08 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyEMLowEpl.cc // diff --git a/environments/g4py/site-modules/physics_lists/EMSTDpl/GNUmakefile b/environments/g4py/site-modules/physics_lists/EMSTDpl/GNUmakefile index bd80182333..fcb57bd7e6 100644 --- a/environments/g4py/site-modules/physics_lists/EMSTDpl/GNUmakefile +++ b/environments/g4py/site-modules/physics_lists/EMSTDpl/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 10:31:40 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/site-modules/physics_lists/EMSTDpl/PhysicsListEMstd.cc b/environments/g4py/site-modules/physics_lists/EMSTDpl/PhysicsListEMstd.cc index 7ae208158e..e08d270a05 100644 --- a/environments/g4py/site-modules/physics_lists/EMSTDpl/PhysicsListEMstd.cc +++ b/environments/g4py/site-modules/physics_lists/EMSTDpl/PhysicsListEMstd.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListEMstd.cc,v 1.5 2006/07/11 09:55:01 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // PhysicsListEMstd.cc // diff --git a/environments/g4py/site-modules/physics_lists/EMSTDpl/PhysicsListEMstd.hh b/environments/g4py/site-modules/physics_lists/EMSTDpl/PhysicsListEMstd.hh index 849755ba87..6a91adab7c 100644 --- a/environments/g4py/site-modules/physics_lists/EMSTDpl/PhysicsListEMstd.hh +++ b/environments/g4py/site-modules/physics_lists/EMSTDpl/PhysicsListEMstd.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListEMstd.hh,v 1.4 2006/06/29 15:29:46 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // PhysicsListEMstd.hh // diff --git a/environments/g4py/site-modules/physics_lists/EMSTDpl/pyEMSTDpl.cc b/environments/g4py/site-modules/physics_lists/EMSTDpl/pyEMSTDpl.cc index 2deee0f408..7d92ddbda1 100644 --- a/environments/g4py/site-modules/physics_lists/EMSTDpl/pyEMSTDpl.cc +++ b/environments/g4py/site-modules/physics_lists/EMSTDpl/pyEMSTDpl.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyEMSTDpl.cc,v 1.4 2006/06/29 15:29:49 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyEMSTDpl.cc // diff --git a/environments/g4py/site-modules/physics_lists/ExN01pl/ExN01PhysicsList.cc b/environments/g4py/site-modules/physics_lists/ExN01pl/ExN01PhysicsList.cc index d88e953052..05abeee0b9 100644 --- a/environments/g4py/site-modules/physics_lists/ExN01pl/ExN01PhysicsList.cc +++ b/environments/g4py/site-modules/physics_lists/ExN01pl/ExN01PhysicsList.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ExN01PhysicsList.cc,v 1.4 2006/06/29 15:29:52 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // ExN01PhysicsList.cc // diff --git a/environments/g4py/site-modules/physics_lists/ExN01pl/ExN01PhysicsList.hh b/environments/g4py/site-modules/physics_lists/ExN01pl/ExN01PhysicsList.hh index 4f0297de17..04bc1951d8 100644 --- a/environments/g4py/site-modules/physics_lists/ExN01pl/ExN01PhysicsList.hh +++ b/environments/g4py/site-modules/physics_lists/ExN01pl/ExN01PhysicsList.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ExN01PhysicsList.hh,v 1.4 2006/06/29 15:29:55 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // ExN01PhysicsList.hh // diff --git a/environments/g4py/site-modules/physics_lists/ExN01pl/GNUmakefile b/environments/g4py/site-modules/physics_lists/ExN01pl/GNUmakefile index 840f761370..9122ac0d57 100644 --- a/environments/g4py/site-modules/physics_lists/ExN01pl/GNUmakefile +++ b/environments/g4py/site-modules/physics_lists/ExN01pl/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 10:31:40 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/site-modules/physics_lists/ExN01pl/pyExN01pl.cc b/environments/g4py/site-modules/physics_lists/ExN01pl/pyExN01pl.cc index 1ae0a27b8f..a15209820d 100644 --- a/environments/g4py/site-modules/physics_lists/ExN01pl/pyExN01pl.cc +++ b/environments/g4py/site-modules/physics_lists/ExN01pl/pyExN01pl.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyExN01pl.cc,v 1.4 2006/06/29 15:29:58 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyExN01pl.cc // diff --git a/environments/g4py/site-modules/physics_lists/ExN03pl/ExN03PhysicsList.cc b/environments/g4py/site-modules/physics_lists/ExN03pl/ExN03PhysicsList.cc index 7dc929de99..4147b96da3 100644 --- a/environments/g4py/site-modules/physics_lists/ExN03pl/ExN03PhysicsList.cc +++ b/environments/g4py/site-modules/physics_lists/ExN03pl/ExN03PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03PhysicsList.cc,v 1.4 2006/06/29 15:30:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/environments/g4py/site-modules/physics_lists/ExN03pl/ExN03PhysicsList.hh b/environments/g4py/site-modules/physics_lists/ExN03pl/ExN03PhysicsList.hh index bf025aef5e..c5aeb2d796 100644 --- a/environments/g4py/site-modules/physics_lists/ExN03pl/ExN03PhysicsList.hh +++ b/environments/g4py/site-modules/physics_lists/ExN03pl/ExN03PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03PhysicsList.hh,v 1.4 2006/06/29 15:30:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/environments/g4py/site-modules/physics_lists/ExN03pl/GNUmakefile b/environments/g4py/site-modules/physics_lists/ExN03pl/GNUmakefile index 43daa9599e..e52d0aa896 100644 --- a/environments/g4py/site-modules/physics_lists/ExN03pl/GNUmakefile +++ b/environments/g4py/site-modules/physics_lists/ExN03pl/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.1 2006/04/25 10:32:41 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/site-modules/physics_lists/ExN03pl/pyExN03pl.cc b/environments/g4py/site-modules/physics_lists/ExN03pl/pyExN03pl.cc index c8c940046b..f5a5166656 100644 --- a/environments/g4py/site-modules/physics_lists/ExN03pl/pyExN03pl.cc +++ b/environments/g4py/site-modules/physics_lists/ExN03pl/pyExN03pl.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyExN03pl.cc,v 1.3 2006/06/29 15:30:07 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyExN03pl.cc // diff --git a/environments/g4py/site-modules/physics_lists/GNUmakefile b/environments/g4py/site-modules/physics_lists/GNUmakefile index 1164f7fc30..39354b7626 100644 --- a/environments/g4py/site-modules/physics_lists/GNUmakefile +++ b/environments/g4py/site-modules/physics_lists/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.3 2006/07/12 08:45:14 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py site-modules # =========================================================== diff --git a/environments/g4py/site-modules/primaries/GNUmakefile b/environments/g4py/site-modules/primaries/GNUmakefile index 28f42ba4ca..1db790f35c 100644 --- a/environments/g4py/site-modules/primaries/GNUmakefile +++ b/environments/g4py/site-modules/primaries/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 10:29:52 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py site-modules # =========================================================== diff --git a/environments/g4py/site-modules/primaries/MedicalBeam/GNUmakefile b/environments/g4py/site-modules/primaries/MedicalBeam/GNUmakefile index 4b4d9ae164..3979e377f4 100644 --- a/environments/g4py/site-modules/primaries/MedicalBeam/GNUmakefile +++ b/environments/g4py/site-modules/primaries/MedicalBeam/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 10:29:52 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.cc b/environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.cc index 15eb55b725..7912001576 100644 --- a/environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.cc +++ b/environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: MedicalBeam.cc,v 1.6 2006/06/29 15:30:10 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // MedicalBeam.cc // diff --git a/environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh b/environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh index cee0c3d170..8f05387e59 100644 --- a/environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh +++ b/environments/g4py/site-modules/primaries/MedicalBeam/MedicalBeam.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: MedicalBeam.hh,v 1.4 2006/06/29 15:30:12 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // MedicalBeam.hh // diff --git a/environments/g4py/site-modules/primaries/MedicalBeam/pyMedicalBeam.cc b/environments/g4py/site-modules/primaries/MedicalBeam/pyMedicalBeam.cc index 1f387fdad1..03be7962ab 100644 --- a/environments/g4py/site-modules/primaries/MedicalBeam/pyMedicalBeam.cc +++ b/environments/g4py/site-modules/primaries/MedicalBeam/pyMedicalBeam.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyMedicalBeam.cc,v 1.4 2006/06/29 15:30:14 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyMedicalBeam.cc // diff --git a/environments/g4py/site-modules/primaries/ParticleGun/GNUmakefile b/environments/g4py/site-modules/primaries/ParticleGun/GNUmakefile index 8451f1f9b6..3d9db6f016 100644 --- a/environments/g4py/site-modules/primaries/ParticleGun/GNUmakefile +++ b/environments/g4py/site-modules/primaries/ParticleGun/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 10:29:52 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/site-modules/primaries/ParticleGun/ParticleGunAction.cc b/environments/g4py/site-modules/primaries/ParticleGun/ParticleGunAction.cc index b5404d8aab..5a13d8bfe8 100644 --- a/environments/g4py/site-modules/primaries/ParticleGun/ParticleGunAction.cc +++ b/environments/g4py/site-modules/primaries/ParticleGun/ParticleGunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ParticleGunAction.cc,v 1.4 2006/06/29 15:30:16 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // ParticleGunAction.cc // diff --git a/environments/g4py/site-modules/primaries/ParticleGun/ParticleGunAction.hh b/environments/g4py/site-modules/primaries/ParticleGun/ParticleGunAction.hh index 18a011fb03..155db374a5 100644 --- a/environments/g4py/site-modules/primaries/ParticleGun/ParticleGunAction.hh +++ b/environments/g4py/site-modules/primaries/ParticleGun/ParticleGunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ParticleGunAction.hh,v 1.4 2006/06/29 15:30:19 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // ParticleGunAction.hh // diff --git a/environments/g4py/site-modules/primaries/ParticleGun/pyParticleGun.cc b/environments/g4py/site-modules/primaries/ParticleGun/pyParticleGun.cc index 2cc9761829..cd5c545480 100644 --- a/environments/g4py/site-modules/primaries/ParticleGun/pyParticleGun.cc +++ b/environments/g4py/site-modules/primaries/ParticleGun/pyParticleGun.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyParticleGun.cc,v 1.4 2006/06/29 15:30:21 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyParticleGun.cc // diff --git a/environments/g4py/site-modules/utils/GNUmakefile b/environments/g4py/site-modules/utils/GNUmakefile index c787adee31..306c3e5966 100644 --- a/environments/g4py/site-modules/utils/GNUmakefile +++ b/environments/g4py/site-modules/utils/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.1 2006/07/12 01:57:46 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py site-modules # =========================================================== diff --git a/environments/g4py/site-modules/utils/MCScore/GNUmakefile b/environments/g4py/site-modules/utils/MCScore/GNUmakefile index a8861895a5..7066506f09 100644 --- a/environments/g4py/site-modules/utils/MCScore/GNUmakefile +++ b/environments/g4py/site-modules/utils/MCScore/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.1 2006/07/12 02:01:07 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/GNUmakefile b/environments/g4py/source/GNUmakefile index a5266fa4e8..04e76f865f 100644 --- a/environments/g4py/source/GNUmakefile +++ b/environments/g4py/source/GNUmakefile @@ -1,5 +1,5 @@ -# $Id: GNUmakefile,v 1.4 2006/11/20 08:56:26 kmura Exp $ -# $Name: geant4-09-00 $ +# $Id: GNUmakefile,v 1.6 2007/11/25 19:38:17 kmura Exp $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== @@ -11,6 +11,14 @@ SUBDIR2 := visualization graphics_reps physics_lists SUBDIR3 := python SUBDIR4 := boost version +ifeq ($(Q_ENABLE_G4GDML), 1) + SUBDIR2 += g4gdml +endif + +ifeq ($(Q_ENABLE_GDML), 1) + SUBDIR2 += gdml +endif + .PHONY: all install clean uninstall all: diff --git a/environments/g4py/source/boost/GNUmakefile b/environments/g4py/source/boost/GNUmakefile index 15b6bd19bc..37c8e69f41 100644 --- a/environments/g4py/source/boost/GNUmakefile +++ b/environments/g4py/source/boost/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:43 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/boost/pyG4indexing.hh b/environments/g4py/source/boost/pyG4indexing.hh index 9287912b4a..a4a4040a0e 100644 --- a/environments/g4py/source/boost/pyG4indexing.hh +++ b/environments/g4py/source/boost/pyG4indexing.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4indexing.hh,v 1.4 2006/06/29 15:30:24 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4indexing.hh // diff --git a/environments/g4py/source/digits_hits/GNUmakefile b/environments/g4py/source/digits_hits/GNUmakefile index 5397f647d3..1b6d96e442 100644 --- a/environments/g4py/source/digits_hits/GNUmakefile +++ b/environments/g4py/source/digits_hits/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:43 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/digits_hits/pyG4VSensitiveDetector.cc b/environments/g4py/source/digits_hits/pyG4VSensitiveDetector.cc index 173afa3ab3..bd0c68daa9 100644 --- a/environments/g4py/source/digits_hits/pyG4VSensitiveDetector.cc +++ b/environments/g4py/source/digits_hits/pyG4VSensitiveDetector.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VSensitiveDetector.cc,v 1.4 2006/06/29 15:30:26 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VSensitiveDetector.cc // diff --git a/environments/g4py/source/digits_hits/pymodG4digits_hits.cc b/environments/g4py/source/digits_hits/pymodG4digits_hits.cc index ea4795935a..1d01731aa6 100644 --- a/environments/g4py/source/digits_hits/pymodG4digits_hits.cc +++ b/environments/g4py/source/digits_hits/pymodG4digits_hits.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4digits_hits.cc,v 1.4 2006/06/29 15:30:29 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4digits_hits.cc [Geant4Py module] // diff --git a/environments/g4py/source/event/GNUmakefile b/environments/g4py/source/event/GNUmakefile index 2019e0b459..9031dae5ab 100644 --- a/environments/g4py/source/event/GNUmakefile +++ b/environments/g4py/source/event/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:44 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/event/pyG4ClassificationOfNewTrack.cc b/environments/g4py/source/event/pyG4ClassificationOfNewTrack.cc index abebaa1031..3be2121548 100644 --- a/environments/g4py/source/event/pyG4ClassificationOfNewTrack.cc +++ b/environments/g4py/source/event/pyG4ClassificationOfNewTrack.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ClassificationOfNewTrack.cc,v 1.4 2006/06/29 15:30:44 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ClassificationOfNewTrack.cc // diff --git a/environments/g4py/source/event/pyG4Event.cc b/environments/g4py/source/event/pyG4Event.cc index 344f9a9a6d..7d29f6ded2 100644 --- a/environments/g4py/source/event/pyG4Event.cc +++ b/environments/g4py/source/event/pyG4Event.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Event.cc,v 1.4 2006/06/29 15:31:29 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Event.cc // diff --git a/environments/g4py/source/event/pyG4EventManager.cc b/environments/g4py/source/event/pyG4EventManager.cc index 31dae5bdae..0095266227 100644 --- a/environments/g4py/source/event/pyG4EventManager.cc +++ b/environments/g4py/source/event/pyG4EventManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4EventManager.cc,v 1.4 2006/06/29 15:31:34 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4EventManager.cc // diff --git a/environments/g4py/source/event/pyG4ParticleGun.cc b/environments/g4py/source/event/pyG4ParticleGun.cc index 32bfa8ddf4..d8684d0185 100644 --- a/environments/g4py/source/event/pyG4ParticleGun.cc +++ b/environments/g4py/source/event/pyG4ParticleGun.cc @@ -23,20 +23,22 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4ParticleGun.cc,v 1.4 2006/06/29 15:31:36 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4ParticleGun.cc,v 1.7 2007/11/08 06:42:03 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ParticleGun.cc // // 2005 Q // ==================================================================== #include +#include "G4Version.hh" #include "G4ParticleGun.hh" #include "G4ParticleTable.hh" #include "G4Event.hh" using namespace boost::python; +#if G4VERSION_NUMBER < 910 // ==================================================================== // miscs // ==================================================================== @@ -77,11 +79,23 @@ G4int G4ParticleGun::operator!=(const G4ParticleGun &right) const return 0; } +#endif + + // ==================================================================== // thin wrappers // ==================================================================== namespace pyG4ParticleGun { +#if G4VERSION_NUMBER >= 910 +// SetParticleMomentum +void (G4ParticleGun::*f1_SetParticleMomentum)(G4double) + = &G4ParticleGun::SetParticleMomentum; +void (G4ParticleGun::*f2_SetParticleMomentum)(G4ParticleMomentum) + = &G4ParticleGun::SetParticleMomentum; +#endif + + //////////////////////////////////////////////////////////////////// void SetParticleByName(G4ParticleGun* gun, const std::string& pname) //////////////////////////////////////////////////////////////////// @@ -113,7 +127,11 @@ using namespace pyG4ParticleGun; // ==================================================================== void export_G4ParticleGun() { +#if G4VERSION_NUMBER < 910 class_ +#else + class_ +#endif ("G4ParticleGun", "particle gun") // constructor .def(init()) @@ -124,7 +142,12 @@ void export_G4ParticleGun() .def("SetParticleDefinition", &G4ParticleGun::SetParticleDefinition) .def("GetParticleDefinition", &G4ParticleGun::GetParticleDefinition, return_value_policy()) +#if G4VERSION_NUMBER >= 910 + .def("SetParticleMomentum", f1_SetParticleMomentum) + .def("SetParticleMomentum", f2_SetParticleMomentum) +#else .def("SetParticleMomentum", &G4ParticleGun::SetParticleMomentum) +#endif .def("SetParticleMomentumDirection", &G4ParticleGun::SetParticleMomentumDirection) .def("GetParticleMomentumDirection", diff --git a/environments/g4py/source/event/pyG4StackManager.cc b/environments/g4py/source/event/pyG4StackManager.cc index 7487676f79..4cb7a1399f 100644 --- a/environments/g4py/source/event/pyG4StackManager.cc +++ b/environments/g4py/source/event/pyG4StackManager.cc @@ -25,7 +25,7 @@ // // $Id: pyG4StackManager.cc,v 1.4 2006/06/29 15:31:38 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4StackManager.cc // diff --git a/environments/g4py/source/event/pyG4UserEventAction.cc b/environments/g4py/source/event/pyG4UserEventAction.cc index b1349ceaf6..4ca5da4a6c 100644 --- a/environments/g4py/source/event/pyG4UserEventAction.cc +++ b/environments/g4py/source/event/pyG4UserEventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4UserEventAction.cc,v 1.6 2006/06/29 15:31:41 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UserEventAction.cc // diff --git a/environments/g4py/source/event/pyG4UserStackingAction.cc b/environments/g4py/source/event/pyG4UserStackingAction.cc index fd3d34b46f..2e3e9d9415 100644 --- a/environments/g4py/source/event/pyG4UserStackingAction.cc +++ b/environments/g4py/source/event/pyG4UserStackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4UserStackingAction.cc,v 1.7 2006/06/29 15:31:44 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UserStackingAction.cc // diff --git a/environments/g4py/source/event/pymodG4event.cc b/environments/g4py/source/event/pymodG4event.cc index 8aa72f4e93..56d0eb5dee 100644 --- a/environments/g4py/source/event/pymodG4event.cc +++ b/environments/g4py/source/event/pymodG4event.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4event.cc,v 1.4 2006/06/29 15:31:47 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4event.cc [Geant4Py module] // diff --git a/environments/g4py/source/g4gdml/GNUmakefile b/environments/g4py/source/g4gdml/GNUmakefile new file mode 100644 index 0000000000..6415b18d74 --- /dev/null +++ b/environments/g4py/source/g4gdml/GNUmakefile @@ -0,0 +1,14 @@ +# $Id: GNUmakefile,v 1.1 2007/11/25 19:39:37 kmura Exp $ +# $Name: geant4-09-01 $ +# =========================================================== +# Makefile for building Geant4Py modules +# =========================================================== +include ../../config/config.gmk + +# python module name +MODULE := G4g4gdml# + +include $(G4PY_INSTALL)/config/g4py.gmk +include $(G4PY_INSTALL)/config/module.gmk +include $(G4PY_INSTALL)/config/install.gmk + diff --git a/environments/g4py/source/g4gdml/pyG4GDMLParser.cc b/environments/g4py/source/g4gdml/pyG4GDMLParser.cc new file mode 100644 index 0000000000..048724abf1 --- /dev/null +++ b/environments/g4py/source/g4gdml/pyG4GDMLParser.cc @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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: pyG4GDMLParser.cc,v 1.1 2007/11/25 19:39:47 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4GDMLParser.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4GDMLParser.hh" + +using namespace boost::python; + +// ==================================================================== +// thin wrappers +// ==================================================================== +namespace pyG4GDMLParser { + +// GetWorldVolume +BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_GetWorldVolume, + GetWorldVolume, 0, 1); +} + +using namespace pyG4GDMLParser; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4GDMLParser() +{ + class_("G4GDMLParser", "GDML parser") + // --- + .def("Read", &G4GDMLParser::Read) + .def("GetWorldVolume", &G4GDMLParser::GetWorldVolume, + f_GetWorldVolume() + [return_value_policy()]) + ; +} + diff --git a/environments/g4py/source/g4gdml/pymodG4g4gdml.cc b/environments/g4py/source/g4gdml/pymodG4g4gdml.cc new file mode 100644 index 0000000000..7ebd051ec4 --- /dev/null +++ b/environments/g4py/source/g4gdml/pymodG4g4gdml.cc @@ -0,0 +1,47 @@ +// +// ******************************************************************** +// * 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: pymodG4g4gdml.cc,v 1.1 2007/11/25 19:39:47 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pymodG4g4gdml.cc [Geant4Py module] +// +// 2007 Q +// ==================================================================== +#include + +using namespace boost::python; + +// ==================================================================== +// module definition +// ==================================================================== + +void export_G4GDMLParser(); + +BOOST_PYTHON_MODULE(G4g4gdml) +{ + export_G4GDMLParser(); +} + diff --git a/environments/g4py/source/gdml/GNUmakefile b/environments/g4py/source/gdml/GNUmakefile new file mode 100644 index 0000000000..de99787e01 --- /dev/null +++ b/environments/g4py/source/gdml/GNUmakefile @@ -0,0 +1,14 @@ +# $Id: GNUmakefile,v 1.1 2007/11/13 10:03:33 kmura Exp $ +# $Name: geant4-09-01 $ +# =========================================================== +# Makefile for building Geant4Py modules +# =========================================================== +include ../../config/config.gmk + +# python module name +MODULE := G4gdml# + +include $(G4PY_INSTALL)/config/g4py.gmk +include $(G4PY_INSTALL)/config/module.gmk +include $(G4PY_INSTALL)/config/install.gmk + diff --git a/environments/g4py/source/gdml/pyG4GDMLWriter.cc b/environments/g4py/source/gdml/pyG4GDMLWriter.cc new file mode 100644 index 0000000000..60cf137bce --- /dev/null +++ b/environments/g4py/source/gdml/pyG4GDMLWriter.cc @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * 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: pyG4GDMLWriter.cc,v 1.1 2007/11/13 10:03:23 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4GDMLWriter.cc +// +// based on 2.10.0 +// +// 2007 Q +// ==================================================================== +#include +#include "G4Writer/G4GDMLWriter.h" + +using namespace boost::python; + +// ==================================================================== +// thin wrappers +// ==================================================================== +namespace pyG4GDMLWriter { + +// DumpGeometryInfo +void (G4GDMLWriter::*f1_DumpGeometryInfo)(G4VPhysicalVolume*) + = &G4GDMLWriter::DumpGeometryInfo; + +} + +using namespace pyG4GDMLWriter; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4GDMLWriter() +{ + class_("G4GDMLWriter", "GDML writer class") + .def(init<>()) + .def(init()) + .def(init()) + .def(init()) + // --- + .def("DumpGeometryInfo", f1_DumpGeometryInfo) + ; +} diff --git a/environments/g4py/source/gdml/pyGDMLProcessor.cc b/environments/g4py/source/gdml/pyGDMLProcessor.cc new file mode 100644 index 0000000000..76600e4e77 --- /dev/null +++ b/environments/g4py/source/gdml/pyGDMLProcessor.cc @@ -0,0 +1,85 @@ +// +// ******************************************************************** +// * 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: pyGDMLProcessor.cc,v 1.1 2007/11/13 10:03:23 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyGDMLProcessor.cc +// +// based on 2.10.0 +// +// 2007 Q +// ==================================================================== +#include +#include "G4Processor/GDMLProcessor.h" + +using namespace boost::python; + +// ==================================================================== +// thin wrappers +// ==================================================================== +namespace pyG4GDMLProcessor { + +// GetWorldVolumeOfParsedFile +const G4VPhysicalVolume* (GDMLProcessor::*f1_GetWorldVolumeOfParsedFile) + (const std::string&)= &GDMLProcessor::GetWorldVolumeOfParsedFile; + +const G4VPhysicalVolume* (GDMLProcessor::*f2_GetWorldVolumeOfParsedFile) + (const char*)= &GDMLProcessor::GetWorldVolumeOfParsedFile; + +// GetWorldVolume +const G4VPhysicalVolume* (GDMLProcessor::*f1_GetWorldVolume)() + = &GDMLProcessor::GetWorldVolume; + +G4VPhysicalVolume* (GDMLProcessor::*f2_GetWorldVolume)(int) + = &GDMLProcessor::GetWorldVolume; + +} + +using namespace pyG4GDMLProcessor; + +// ==================================================================== +// module definition +// ==================================================================== +void export_GDMLProcessor() +{ + class_ + ("GDMLProcessor", "GDML processor", no_init) + // --- + .def("GetInstance", &GDMLProcessor::GetInstance, + return_value_policy()) + .staticmethod("GetInstance") + // --- + .def("GetWorldVolumeOfParsedFile", f1_GetWorldVolumeOfParsedFile, + return_value_policy()) + .def("GetWorldVolumeOfParsedFile", f2_GetWorldVolumeOfParsedFile, + return_value_policy()) + .def("GetWorldVolume", f1_GetWorldVolume, + return_value_policy()) + .def("GetWorldVolume", f2_GetWorldVolume, + return_value_policy()) + ; +} + diff --git a/environments/g4py/source/gdml/pyProcessingConfigurator.cc b/environments/g4py/source/gdml/pyProcessingConfigurator.cc new file mode 100644 index 0000000000..0cc3ee2597 --- /dev/null +++ b/environments/g4py/source/gdml/pyProcessingConfigurator.cc @@ -0,0 +1,71 @@ +// +// ******************************************************************** +// * 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: pyProcessingConfigurator.cc,v 1.1 2007/11/13 10:03:23 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyProcessingConfigurator.cc +// +// based on 2.10.0 +// +// 2007 Q +// ==================================================================== +#include +#include "Saxana/ProcessingConfigurator.h" + +using namespace boost::python; + +// ==================================================================== +// module definition +// ==================================================================== +void export_ProcessingConfigurator() +{ + scope in_ProcessingConfigurator= + class_("ProcessingConfigurator", + "processing configurator class") + // --- + .def("SetMode", &ProcessingConfigurator::SetMode) + .def("Mode", &ProcessingConfigurator::Mode) + .def("SetURI", &ProcessingConfigurator::SetURI) + .def("URI", &ProcessingConfigurator::URI, + return_value_policy()) + .def("SetType", &ProcessingConfigurator::SetType) + .def("Type", &ProcessingConfigurator::Type, + return_value_policy()) + .def("SetSetupName", &ProcessingConfigurator::SetSetupName) + .def("SetupName", &ProcessingConfigurator::SetupName, + return_value_policy()) + .def("SetSetupVersion", &ProcessingConfigurator::SetSetupVersion) + .def("SetupVersion", &ProcessingConfigurator::SetupVersion, + return_value_policy()) + ; + + enum_("SAXMode") + .value("eBatch", ProcessingConfigurator::eBatch) + .value("eProgressive", ProcessingConfigurator::eProgressive) + .value("eSearch", ProcessingConfigurator::eSearch) + ; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAElectronExcitation.cc b/environments/g4py/source/gdml/pySAXProcessor.cc similarity index 64% rename from source/processes/electromagnetic/lowenergy/src/G4DNAElectronExcitation.cc rename to environments/g4py/source/gdml/pySAXProcessor.cc index ed55b57aee..d50fd9478f 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAElectronExcitation.cc +++ b/environments/g4py/source/gdml/pySAXProcessor.cc @@ -23,27 +23,32 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// $Id: pySAXProcessor.cc,v 1.1 2007/11/13 10:03:23 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pySAXProcessor.cc // -// $Id: G4DNAElectronExcitation.cc,v 1.2 2006/06/29 19:39:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// based on 2.10.0 +// +// 2007 Q +// ==================================================================== +#include +#include "Saxana/SAXProcessor.h" +#include "Saxana/ProcessingConfigurator.h" -#include "G4DNAElectronExcitation.hh" -#include "G4Electron.hh" +using namespace boost::python; - G4DNAElectronExcitationEnergyLimitsPolicy :: G4DNAElectronExcitationEnergyLimitsPolicy() -: - lowEnergyLimit(7*eV), - zeroBelowLowEnergyLimit(false), - highEnergyLimit(10*keV), - zeroAboveHighEnergyLimit(false) +// ==================================================================== +// module definition +// ==================================================================== +void export_SAXProcessor() { + class_("SAXProcessor", "SAX processor class") + // --- + .def("Initialize", &SAXProcessor::Initialize) + .def("Configure", &SAXProcessor::Configure) + .def("Run", &SAXProcessor::Run) + .def("Finalize", &SAXProcessor::Finalize) + ; } - G4DNAElectronExcitationIncomingParticlePolicy :: G4DNAElectronExcitationIncomingParticlePolicy() - -{} - -const G4ParticleDefinition * G4DNAElectronExcitationIncomingParticlePolicy :: IncomingParticleDefinition(void) const -{ - return G4Electron::Electron(); -} diff --git a/environments/g4py/source/gdml/pyStatusCode.cc b/environments/g4py/source/gdml/pyStatusCode.cc new file mode 100644 index 0000000000..96f2a08207 --- /dev/null +++ b/environments/g4py/source/gdml/pyStatusCode.cc @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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: pyStatusCode.cc,v 1.1 2007/11/13 10:03:23 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyStatusCode.cc +// +// based on 2.10.0 +// +// 2007 Q +// ==================================================================== +#include +#include "Saxana/StatusCode.h" + +using namespace boost::python; + +// ==================================================================== +// module definition +// ==================================================================== +void export_StatusCode() +{ + scope in_StatusCode= + class_("StatusCode", "status code") + .def(init<>()) + .def(init()) + // --- + .def("IsOk", &StatusCode::IsOk) + .def("IsFailure", &StatusCode::IsFailure) + .def("Info", &StatusCode::Info) + ; + + enum_("EInfo") + .value("eError", StatusCode::eError) + .value("eOk", StatusCode::eOk) + .value("eWarning", StatusCode::eWarning) + .value("eParserInitFailure", StatusCode::eParserInitFailure) + ; +} + diff --git a/examples/extended/medical/DICOM/src/DicomOctreeNode.cc b/environments/g4py/source/gdml/pymodG4gdml.cc similarity index 66% rename from examples/extended/medical/DICOM/src/DicomOctreeNode.cc rename to environments/g4py/source/gdml/pymodG4gdml.cc index 6b8af755bb..8c1a00fc5b 100644 --- a/examples/extended/medical/DICOM/src/DicomOctreeNode.cc +++ b/environments/g4py/source/gdml/pymodG4gdml.cc @@ -23,40 +23,33 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca +// $Id: pymodG4gdml.cc,v 1.1 2007/11/13 10:03:23 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pymodG4gdml.cc [Geant4Py module] // -// -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 -// -// + Université Laval, Québec (QC) Canada -//******************************************************* +// 2007 Q +// ==================================================================== +#include -#include -#include "DicomOctreeNode.hh" +using namespace boost::python; -G4int DicomOctreeNode::mInstanceCounter = 0; +// ==================================================================== +// module definition +// ==================================================================== -DicomOctreeNode::DicomOctreeNode() +void export_G4GDMLWriter(); +void export_GDMLProcessor(); +void export_SAXProcessor(); +void export_StatusCode(); +void export_ProcessingConfigurator(); + +BOOST_PYTHON_MODULE(G4gdml) { - mParent = 0; - mInstanceCounter++; -} - -DicomOctreeNode::~DicomOctreeNode() -{ - mInstanceCounter--; -} - -DicomOctreeNode::DicomOctreeNode( DicomOctreeNode* pParent ) -{ - mParent = pParent; - mInstanceCounter++; + export_G4GDMLWriter(); + export_GDMLProcessor(); + export_SAXProcessor(); + export_StatusCode(); + export_ProcessingConfigurator(); } diff --git a/environments/g4py/source/geometry/GNUmakefile b/environments/g4py/source/geometry/GNUmakefile index 76a09014ee..75dc7b6cfa 100644 --- a/environments/g4py/source/geometry/GNUmakefile +++ b/environments/g4py/source/geometry/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:45 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNABornExcitationFinalStatesPolicy.icc b/environments/g4py/source/geometry/pyG4BooleanSolid.cc similarity index 56% rename from source/processes/electromagnetic/lowenergy/include/G4DNABornExcitationFinalStatesPolicy.icc rename to environments/g4py/source/geometry/pyG4BooleanSolid.cc index 74bfedd878..2671d23bdf 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4DNABornExcitationFinalStatesPolicy.icc +++ b/environments/g4py/source/geometry/pyG4BooleanSolid.cc @@ -23,34 +23,36 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// $Id: pyG4BooleanSolid.cc,v 1.1 2007/08/07 03:35:53 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4BooleanSolid.cc // -// $Id: G4DNABornExcitationFinalStatesPolicy.icc,v 2005/09/19 13:55:54 Ziad FRANCIS -// GEANT4 tag $Name: geant4-09-00 $ -// +// 2007 Q +// ==================================================================== +#include +#include "G4BooleanSolid.hh" -#ifdef G4DNABornExcitationFinalStatesPolicy_HH - #include "Randomize.hh" +using namespace boost::python; +// ==================================================================== +// module definition +// ==================================================================== +void export_G4BooleanSolid() +{ + class_, boost::noncopyable> + ("G4BooleanSolid", "boolean solid class", no_init) + // --- + .def("GetCubVolStatistics", &G4BooleanSolid::GetCubVolStatistics) + .def("GetCubVolEpsilon", &G4BooleanSolid::GetCubVolEpsilon) + .def("SetCubVolStatistics", &G4BooleanSolid::SetCubVolStatistics) + .def("SetCubVolEpsilon", &G4BooleanSolid::SetCubVolEpsilon) + .def("GetAreaStatistics", &G4BooleanSolid::GetAreaStatistics) + .def("GetAreaAccuracy", &G4BooleanSolid::GetAreaAccuracy) + .def("SetAreaStatistics", &G4BooleanSolid::SetAreaStatistics) + .def("SetAreaAccuracy", &G4BooleanSolid::SetAreaAccuracy) + .def("GetPointOnSurface", &G4BooleanSolid::GetPointOnSurface) + ; - template - G4bool G4DNABornExcitationFinalStatesPolicy :: KillIncomingParticle(G4double energy) const - { - if(energy < EnergyLimitsPolicy::lowEnergyLimit) return(true); - else return (false); - } - - template - void G4DNABornExcitationFinalStatesPolicy ::BuildFinalStatesData(void) const - {} - - template - G4double G4DNABornExcitationFinalStatesPolicy::EnergyConstant(G4int excitationLevelIndex) const - { - const G4double excitationEnergy[]={8.22*eV, 10.00*eV, 11.24*eV, 12.61*eV, 13.77*eV}; - return(excitationEnergy[excitationLevelIndex]); - } - - - -#endif /* G4DNABornExcitationTotalCrossSectionPolicy_HH */ +} diff --git a/environments/g4py/source/geometry/pyG4Box.cc b/environments/g4py/source/geometry/pyG4Box.cc index 1c5931d0f4..8e0daed002 100644 --- a/environments/g4py/source/geometry/pyG4Box.cc +++ b/environments/g4py/source/geometry/pyG4Box.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4Box.cc,v 1.4 2006/06/29 15:31:50 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4Box.cc,v 1.6 2007/07/12 10:01:53 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Box.cc // @@ -35,6 +35,21 @@ using namespace boost::python; +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4Box { + +G4Box* CreateBox(const G4String& name, G4double pX, G4double pY, + G4double pZ) +{ + return new G4Box(name, pX, pY, pZ); +} + +} + +using namespace pyG4Box; + // ==================================================================== // module definition // ==================================================================== @@ -51,9 +66,12 @@ void export_G4Box() .def("SetXHalfLength", &G4Box::SetXHalfLength) .def("SetYHalfLength", &G4Box::SetYHalfLength) .def("SetZHalfLength", &G4Box::SetZHalfLength) - .def("GetCubicVolume", &G4Box::GetCubicVolume) // operators .def(self_ns::str(self)) ; + + // Create solid + def("CreateBox", CreateBox, return_value_policy()); + } diff --git a/environments/g4py/source/geometry/pyG4ChordFinder.cc b/environments/g4py/source/geometry/pyG4ChordFinder.cc index 0928fc8759..8d8cf86ada 100644 --- a/environments/g4py/source/geometry/pyG4ChordFinder.cc +++ b/environments/g4py/source/geometry/pyG4ChordFinder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ChordFinder.cc,v 1.4 2006/06/29 15:31:53 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ChordFinder.cc // diff --git a/environments/g4py/source/geometry/pyG4Cons.cc b/environments/g4py/source/geometry/pyG4Cons.cc index 3033ef6a0b..3f265f3faa 100644 --- a/environments/g4py/source/geometry/pyG4Cons.cc +++ b/environments/g4py/source/geometry/pyG4Cons.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4Cons.cc,v 1.4 2006/06/29 15:31:56 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4Cons.cc,v 1.5 2007/07/12 10:01:53 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Cons.cc // @@ -35,6 +35,22 @@ using namespace boost::python; +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4Cons { + +G4Cons* CreateCons(const G4String& name, G4double pRmin1, G4double pRmax1, + G4double pRmin2, G4double pRmax2, G4double pDz, + G4double pSPhi, G4double pDPhi) +{ + return new G4Cons(name, pRmin1, pRmax1, pRmin2, pRmax2, pDz, pSPhi, pDPhi); +} + +} + +using namespace pyG4Cons; + // ==================================================================== // module definition // ==================================================================== @@ -60,9 +76,12 @@ void export_G4Cons() .def("SetZHalfLength", &G4Cons::SetZHalfLength) .def("SetStartPhiAngle", &G4Cons::SetStartPhiAngle) .def("SetDeltaPhiAngle", &G4Cons::SetDeltaPhiAngle) - .def("GetCubicVolume", &G4Cons::GetCubicVolume) // operators .def(self_ns::str(self)) ; + + // Create solid + def("CreateCons", CreateCons, return_value_policy()); + } diff --git a/environments/g4py/source/geometry/pyG4Ellipsoid.cc b/environments/g4py/source/geometry/pyG4Ellipsoid.cc new file mode 100644 index 0000000000..311156fb34 --- /dev/null +++ b/environments/g4py/source/geometry/pyG4Ellipsoid.cc @@ -0,0 +1,86 @@ +// +// ******************************************************************** +// * 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: pyG4Ellipsoid.cc,v 1.2 2007/07/13 04:57:50 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4Ellipsoid.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4Ellipsoid.hh" + +using namespace boost::python; + +// ==================================================================== +// thin wrappers +// ==================================================================== +namespace pyG4Ellipsoid { + +G4Ellipsoid* CreateEllipsoid(const G4String& name, + G4double pxSemiAxis, + G4double pySemiAxis, + G4double pzSemiAxis, + G4double pzBottomCut=0, + G4double pzTopCut=0) +{ + return new G4Ellipsoid(name, pxSemiAxis, pySemiAxis, pzSemiAxis, + pzBottomCut, pzTopCut); +} + +BOOST_PYTHON_FUNCTION_OVERLOADS(f_CreateEllipsoid, CreateEllipsoid, 4,6); + +} + +using namespace pyG4Ellipsoid; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4Ellipsoid() +{ + class_ > + ("G4Ellipsoid", "ellipsoid class", no_init) + // constructors + .def(init()) + .def(init()) + .def(init()) + // --- + .def("GetSemiAxisMax", &G4Ellipsoid::GetSemiAxisMax) + .def("GetZBottomCut", &G4Ellipsoid::GetZBottomCut) + .def("GetZTopCut", &G4Ellipsoid::GetZTopCut) + .def("SetSemiAxis", &G4Ellipsoid::SetSemiAxis) + .def("SetZCuts", &G4Ellipsoid::SetZCuts) + // operators + .def(self_ns::str(self)) + ; + + // Create solid + def("CreateEllipsoid", CreateEllipsoid, + f_CreateEllipsoid()[return_value_policy()]); +} + diff --git a/environments/g4py/source/geometry/pyG4EllipticalCone.cc b/environments/g4py/source/geometry/pyG4EllipticalCone.cc new file mode 100644 index 0000000000..ce4128806e --- /dev/null +++ b/environments/g4py/source/geometry/pyG4EllipticalCone.cc @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * 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: pyG4EllipticalCone.cc,v 1.2 2007/07/13 04:57:50 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4EllipticalCone.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4EllipticalCone.hh" + +using namespace boost::python; + +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4EllipticalCone { + +G4EllipticalCone* CreateEllipticalCone(const G4String& name, + G4double pxSemiAxis, + G4double pySemiAxis, + G4double zMax, + G4double pzTopCut) +{ + new G4EllipticalCone(name, pxSemiAxis,pySemiAxis, zMax, pzTopCut); +} + +} + +using namespace pyG4EllipticalCone; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4EllipticalCone() +{ + class_ > + ("G4EllipticalCone", "elliptical cone solid class", no_init) + // constructors + .def(init()) + // --- + .def("GetSimiAxisMax", &G4EllipticalCone::GetSemiAxisMax) + .def("GetZTopCut", &G4EllipticalCone::GetZTopCut) + .def("SetSemiAxis", &G4EllipticalCone::SetSemiAxis) + .def("SetZCut", &G4EllipticalCone::SetZCut) + // operators + .def(self_ns::str(self)) + ; + + // Create solid + def("CreateEllipticalCone", CreateEllipticalCone, + return_value_policy()); + +} + diff --git a/environments/g4py/source/geometry/pyG4EllipticalTube.cc b/environments/g4py/source/geometry/pyG4EllipticalTube.cc new file mode 100644 index 0000000000..2bfe6c5c23 --- /dev/null +++ b/environments/g4py/source/geometry/pyG4EllipticalTube.cc @@ -0,0 +1,81 @@ +// +// ******************************************************************** +// * 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: pyG4EllipticalTube.cc,v 1.2 2007/07/13 04:57:50 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4EllipticalTube.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4EllipticalTube.hh" + +using namespace boost::python; + +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4EllipticalTube { + +G4EllipticalTube* CreateEllipticalTube(const G4String& name, + G4double theDx, + G4double theDy, + G4double theDz) +{ + return new G4EllipticalTube(name, theDx, theDy, theDz); +} + +} + +using namespace pyG4EllipticalTube; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4EllipticalTube() +{ + class_ > + ("G4EllipticalTube", "elliptical tube solid class", no_init) + // constructors + .def(init()) + // --- + .def("GetDx", &G4EllipticalTube::GetDx) + .def("GetDy", &G4EllipticalTube::GetDy) + .def("GetDz", &G4EllipticalTube::GetDz) + .def("SetDx", &G4EllipticalTube::SetDx) + .def("SetDy", &G4EllipticalTube::SetDy) + .def("SetDz", &G4EllipticalTube::SetDz) + + // operators + .def(self_ns::str(self)) + ; + + // Create solid + def("CreateEllipticalTube", CreateEllipticalTube, + return_value_policy()); + +} + diff --git a/environments/g4py/source/geometry/pyG4Field.cc b/environments/g4py/source/geometry/pyG4Field.cc index f85cf4f765..5564b8d1da 100644 --- a/environments/g4py/source/geometry/pyG4Field.cc +++ b/environments/g4py/source/geometry/pyG4Field.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Field.cc,v 1.4 2006/06/29 15:31:59 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Field.cc // diff --git a/environments/g4py/source/geometry/pyG4FieldManager.cc b/environments/g4py/source/geometry/pyG4FieldManager.cc index 7c319e0617..136f09de35 100644 --- a/environments/g4py/source/geometry/pyG4FieldManager.cc +++ b/environments/g4py/source/geometry/pyG4FieldManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4FieldManager.cc,v 1.4 2006/06/29 15:32:02 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4FieldManager.cc // diff --git a/environments/g4py/source/geometry/pyG4Hype.cc b/environments/g4py/source/geometry/pyG4Hype.cc new file mode 100644 index 0000000000..a169a451c1 --- /dev/null +++ b/environments/g4py/source/geometry/pyG4Hype.cc @@ -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: pyG4Hype.cc,v 1.2 2007/07/13 04:57:50 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4Hype.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4Hype.hh" + +using namespace boost::python; + +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4Hype { + +G4Hype* CreateHype(const G4String& name, + G4double newInnerRadius, + G4double newOuterRadius, + G4double newInnerStereo, + G4double newOuterStereo, + G4double newHalfLenZ) +{ + + return new G4Hype(name, newInnerRadius, newOuterRadius, + newInnerStereo, newOuterStereo, + newHalfLenZ); +} + +} + +using namespace pyG4Hype; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4Hype() +{ + class_ > + ("G4Hype", "hyperbolic solid class", no_init) + // constructors + .def(init()) + // --- + .def("GetInnerRadius", &G4Hype::GetInnerRadius) + .def("GetOuterRadius", &G4Hype::GetOuterRadius) + .def("GetZHalfLength", &G4Hype::GetZHalfLength) + .def("GetInnerStereo", &G4Hype::GetInnerStereo) + .def("GetOuterStereo", &G4Hype::GetOuterStereo) + .def("SetInnerRadius", &G4Hype::SetInnerRadius) + .def("SetOuterRadius", &G4Hype::SetOuterRadius) + .def("SetZHalfLength", &G4Hype::SetZHalfLength) + .def("SetInnerStereo", &G4Hype::SetInnerStereo) + .def("SetOuterStereo", &G4Hype::SetOuterStereo) + // operators + .def(self_ns::str(self)) + ; + + // Create solid + def("CreateHype", CreateHype, return_value_policy()); + +} + diff --git a/environments/g4py/source/geometry/pyG4IntersctionSolid.cc b/environments/g4py/source/geometry/pyG4IntersctionSolid.cc new file mode 100644 index 0000000000..40424e043b --- /dev/null +++ b/environments/g4py/source/geometry/pyG4IntersctionSolid.cc @@ -0,0 +1,54 @@ +// +// ******************************************************************** +// * 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: pyG4IntersctionSolid.cc,v 1.1 2007/08/07 03:35:53 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4IntersectionSolid.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4IntersectionSolid.hh" + +using namespace boost::python; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4IntersectionSolid() +{ + class_,boost::noncopyable> + ("G4IntersectionSolid", "intersection solid class", no_init) + // --- + .def(init()) + .def(init()) + .def(init()) + ; +} + diff --git a/environments/g4py/source/geometry/pyG4LogicalVolume.cc b/environments/g4py/source/geometry/pyG4LogicalVolume.cc index f9092d4442..49f9f31bd0 100644 --- a/environments/g4py/source/geometry/pyG4LogicalVolume.cc +++ b/environments/g4py/source/geometry/pyG4LogicalVolume.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4LogicalVolume.cc,v 1.4 2006/06/29 15:32:08 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4LogicalVolume.cc // diff --git a/environments/g4py/source/geometry/pyG4MagneticField.cc b/environments/g4py/source/geometry/pyG4MagneticField.cc index f438bd755a..5a9706ac6a 100644 --- a/environments/g4py/source/geometry/pyG4MagneticField.cc +++ b/environments/g4py/source/geometry/pyG4MagneticField.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4MagneticField.cc,v 1.4 2006/06/29 15:32:10 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4MagneticField.cc // diff --git a/environments/g4py/source/geometry/pyG4Navigator.cc b/environments/g4py/source/geometry/pyG4Navigator.cc new file mode 100644 index 0000000000..454ecbf80c --- /dev/null +++ b/environments/g4py/source/geometry/pyG4Navigator.cc @@ -0,0 +1,55 @@ +// +// ******************************************************************** +// * 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: pyG4Navigator.cc,v 1.1 2007/11/13 10:23:51 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4Navigator.cc +// +// Only limitted functionalities are exposed. +// +// 2007 Q +// ==================================================================== +#include +#include "G4Navigator.hh" + +using namespace boost::python; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4Navigator() +{ + class_("G4Navigator", "navigator") + // --- + .def("GetWorldVolume", &G4Navigator::GetWorldVolume, + return_value_policy()) + .def("GetVerboseLevel", &G4Navigator::GetVerboseLevel) + .def("SetVerboseLevel", &G4Navigator::SetVerboseLevel) + .def("IsActive", &G4Navigator::IsActive) + .def("PrintState", &G4Navigator::PrintState) + ; +} + diff --git a/environments/g4py/source/geometry/pyG4Orb.cc b/environments/g4py/source/geometry/pyG4Orb.cc index 82f21751a5..738ba5bb69 100644 --- a/environments/g4py/source/geometry/pyG4Orb.cc +++ b/environments/g4py/source/geometry/pyG4Orb.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4Orb.cc,v 1.4 2006/06/29 15:32:13 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4Orb.cc,v 1.5 2007/07/13 04:57:50 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Orb.cc // @@ -35,6 +35,20 @@ using namespace boost::python; +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4Orb { + +G4Orb* CreateOrb(const G4String& name, G4double pRmax) +{ + return new G4Orb(name, pRmax); +} + +} + +using namespace pyG4Orb; + // ==================================================================== // module definition // ==================================================================== @@ -47,8 +61,11 @@ void export_G4Orb() // --- .def("GetRadius", &G4Orb::GetRadius) .def("SetRadius", &G4Orb::SetRadius) - .def("GetCubicVolume", &G4Orb::GetCubicVolume) // operators .def(self_ns::str(self)) ; + + // Create solid + def("CreateOrb", CreateOrb, return_value_policy()); + } diff --git a/environments/g4py/source/geometry/pyG4PVPlacement.cc b/environments/g4py/source/geometry/pyG4PVPlacement.cc index 400c453472..f6fbf055dc 100644 --- a/environments/g4py/source/geometry/pyG4PVPlacement.cc +++ b/environments/g4py/source/geometry/pyG4PVPlacement.cc @@ -23,19 +23,41 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4PVPlacement.cc,v 1.4 2006/06/29 15:32:15 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4PVPlacement.cc,v 1.5 2007/08/07 03:35:53 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4PVPlacement.cc // // 2005 Q // ==================================================================== #include +#include "pyG4Version.hh" #include "G4PVPlacement.hh" #include "G4LogicalVolume.hh" using namespace boost::python; +// ==================================================================== +// thin wrappers +// ==================================================================== +namespace pyG4PVPlacement { + +#if G4VERSION_NUMBER <=711 +#elif G4VERSION_NUMBER <= 820 +BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_CheckOverlaps, + CheckOverlaps, 0, 1); +#elif G4VERSION_NUMBER <=821 +BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_CheckOverlaps, + CheckOverlaps, 0, 2); +#else +BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_CheckOverlaps, + CheckOverlaps, 0, 3); +#endif + +} + +using namespace pyG4PVPlacement; + // ==================================================================== // module definition // ==================================================================== @@ -55,6 +77,22 @@ void export_G4PVPlacement() G4VPhysicalVolume*, G4bool, G4int>()) .def(init()) +#if G4VERSION_NUMBER >=800 + .def(init()) + .def(init()) + .def(init()) + .def(init()) +#endif + // --- +#if G4VERSION_NUMBER >=800 + .def("CheckOverlaps", &G4PVPlacement::CheckOverlaps, f_CheckOverlaps()) +#endif ; } diff --git a/environments/g4py/source/geometry/pyG4PVReplica.cc b/environments/g4py/source/geometry/pyG4PVReplica.cc index 849add802b..99090f969b 100644 --- a/environments/g4py/source/geometry/pyG4PVReplica.cc +++ b/environments/g4py/source/geometry/pyG4PVReplica.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4PVReplica.cc,v 1.4 2006/06/29 15:32:18 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4PVReplica.cc // diff --git a/environments/g4py/source/geometry/pyG4Para.cc b/environments/g4py/source/geometry/pyG4Para.cc index a8edc88691..58c40e4e47 100644 --- a/environments/g4py/source/geometry/pyG4Para.cc +++ b/environments/g4py/source/geometry/pyG4Para.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4Para.cc,v 1.4 2006/06/29 15:32:21 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4Para.cc,v 1.5 2007/07/12 10:01:53 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Para.cc // @@ -35,6 +35,22 @@ using namespace boost::python; +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4Para { + +G4Para* CreatePara(const G4String& name, + G4double pDx, G4double pDy, G4double pDz, + G4double pAlpha, G4double pTheta, G4double pPhi) +{ + return new G4Para(name, pDx, pDy, pDz, pAlpha, pTheta, pPhi); +} + +} + +using namespace pyG4Para; + // ==================================================================== // module definition // ==================================================================== @@ -58,9 +74,11 @@ void export_G4Para() .def("SetTanAlpha", &G4Para::SetTanAlpha) .def("SetThetaAndPhi", &G4Para::SetThetaAndPhi) .def("SetAllParameters", &G4Para::SetAllParameters) - .def("GetCubicVolume", &G4Para::GetCubicVolume) // operators .def(self_ns::str(self)) ; + + // Create solid + def("CreatePara", CreatePara, return_value_policy()); } diff --git a/environments/g4py/source/geometry/pyG4Polycone.cc b/environments/g4py/source/geometry/pyG4Polycone.cc new file mode 100644 index 0000000000..84f1b4ded0 --- /dev/null +++ b/environments/g4py/source/geometry/pyG4Polycone.cc @@ -0,0 +1,114 @@ +// +// ******************************************************************** +// * 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: pyG4Polycone.cc,v 1.1 2007/07/11 05:39:50 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4Polycone.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4Polycone.hh" + +using namespace boost::python; + +// ==================================================================== +// thin wrappers +// ==================================================================== +namespace pyG4Polycone { + +// create solid methods + +G4Polycone* f1_CreatePolycone(const G4String& name, G4double phiStart, + G4double phiTotal, G4int numZPlanes, + const std::vector& zPlane, + const std::vector& rInner, + const std::vector& rOuter) +{ + G4double zlist[numZPlanes]; + G4double r0list[numZPlanes]; + G4double r1list[numZPlanes]; + + for (G4int i=0; i< numZPlanes; i++) { + zlist[i]= zPlane[i]; + r0list[i]= rInner[i]; + r1list[i]= rOuter[i]; + } + + return new G4Polycone(name, phiStart, phiTotal, numZPlanes, + zlist, r0list, r1list); +} + + +G4Polycone* f2_CreatePolycone(const G4String& name, G4double phiStart, + G4double phiTotal, G4int numRZ, + const std::vector& r, + const std::vector& z) +{ + G4double zlist[numRZ]; + G4double rlist[numRZ]; + + for (G4int i=0; i< numRZ; i++) { + rlist[i]= r[i]; + zlist[i]= z[i]; + } + + return new G4Polycone(name, phiStart, phiTotal, numRZ, + rlist, zlist); + +} + +} + +using namespace pyG4Polycone; + + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4Polycone() +{ + class_ > + ("G4Polycone", "Polycone solid class", no_init) + // --- + .def("GetStartPhi", &G4Polycone::GetStartPhi) + .def("GetEndPhi", &G4Polycone::GetEndPhi) + .def("IsOpen", &G4Polycone::IsOpen) + .def("IsGeneric", &G4Polycone::IsGeneric) + .def("GetNumRZCorner", &G4Polycone::GetNumRZCorner) + + // operators + .def(self_ns::str(self)) + ; + + // Create solid + def("CreatePolycone", f1_CreatePolycone, + return_value_policy()); + def("CreatePolycone", f2_CreatePolycone, + return_value_policy()); + +} + diff --git a/environments/g4py/source/geometry/pyG4Polyhedra.cc b/environments/g4py/source/geometry/pyG4Polyhedra.cc new file mode 100644 index 0000000000..2c64058cda --- /dev/null +++ b/environments/g4py/source/geometry/pyG4Polyhedra.cc @@ -0,0 +1,115 @@ +// +// ******************************************************************** +// * 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: pyG4Polyhedra.cc,v 1.2 2007/07/11 10:02:22 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4Polyhedra.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4Polyhedra.hh" + +using namespace boost::python; + +// ==================================================================== +// thin wrappers +// ==================================================================== +namespace pyG4Polyhedra { + +// create solid methods + +G4Polyhedra* f1_CreatePolyhedra(const G4String& name, + G4double phiStart, G4double phiTotal, + G4int numSide, G4int numZPlanes, + const std::vector& zPlane, + const std::vector& rInner, + const std::vector& rOuter) +{ + G4double zlist[numZPlanes]; + G4double r0list[numZPlanes]; + G4double r1list[numZPlanes]; + + for (G4int i=0; i< numZPlanes; i++) { + zlist[i]= zPlane[i]; + r0list[i]= rInner[i]; + r1list[i]= rOuter[i]; + } + + return new G4Polyhedra(name, phiStart, phiTotal, numSide, numZPlanes, + zlist, r0list, r1list); +} + + +G4Polyhedra* f2_CreatePolyhedra(const G4String& name, + G4double phiStart, G4double phiTotal, + G4int numSide, G4int numRZ, + const std::vector& r, + const std::vector& z) +{ + G4double zlist[numRZ]; + G4double rlist[numRZ]; + + for (G4int i=0; i< numRZ; i++) { + zlist[i]= z[i]; + rlist[i]= r[i]; + } + + return new G4Polyhedra(name, phiStart, phiTotal, numSide, numRZ, + rlist, zlist); + +} + +} + +using namespace pyG4Polyhedra; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4Polyhedra() +{ + class_ > + ("G4Polyhedra", "Polyhedra solid class", no_init) + // --- + .def("GetStartPhi", &G4Polyhedra::GetStartPhi) + .def("GetEndPhi", &G4Polyhedra::GetEndPhi) + .def("GetNumSide", &G4Polyhedra::GetNumSide) + .def("GetNumRZCorner", &G4Polyhedra::GetNumRZCorner) + .def("IsOpen", &G4Polyhedra::IsOpen) + .def("IsGeneric", &G4Polyhedra::IsGeneric) + + // operators + .def(self_ns::str(self)) + ; + + // Create solid + def("CreatePolyhedra", f1_CreatePolyhedra, + return_value_policy()); + def("CreatePolyhedra", f2_CreatePolyhedra, + return_value_policy()); +} + diff --git a/environments/g4py/source/geometry/pyG4Region.cc b/environments/g4py/source/geometry/pyG4Region.cc index 3cfcef665f..09b03e721b 100644 --- a/environments/g4py/source/geometry/pyG4Region.cc +++ b/environments/g4py/source/geometry/pyG4Region.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Region.cc,v 1.4 2006/06/29 15:32:25 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Region.cc // diff --git a/environments/g4py/source/geometry/pyG4Sphere.cc b/environments/g4py/source/geometry/pyG4Sphere.cc index f3ec3343d2..101067aa00 100644 --- a/environments/g4py/source/geometry/pyG4Sphere.cc +++ b/environments/g4py/source/geometry/pyG4Sphere.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4Sphere.cc,v 1.4 2006/06/29 15:32:27 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4Sphere.cc,v 1.5 2007/07/13 04:57:50 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Sphere.cc // @@ -35,6 +35,23 @@ using namespace boost::python; +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4Sphere { + +G4Sphere* CreateSphere(const G4String& name, + G4double pRmin, G4double pRmax, + G4double pSPhi, G4double pDPhi, + G4double pSTheta, G4double pDTheta) +{ + return new G4Sphere(name, pRmin, pRmax, pSPhi, pDPhi, pSTheta, pDTheta); +} + +} + +using namespace pyG4Sphere; + // ==================================================================== // module definition // ==================================================================== @@ -58,8 +75,11 @@ void export_G4Sphere() .def("SetDeltaPhiAngle", &G4Sphere::SetDeltaPhiAngle) .def("SetStartThetaAngle", &G4Sphere::SetStartThetaAngle) .def("SetDeltaThetaAngle", &G4Sphere::SetDeltaThetaAngle) - .def("GetCubicVolume", &G4Sphere::GetCubicVolume) // operators .def(self_ns::str(self)) ; + + // Create solid + def("CreateSphere", CreateSphere, return_value_policy()); + } diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAHeliumExcitation.cc b/environments/g4py/source/geometry/pyG4SubtractionSolid.cc similarity index 61% rename from source/processes/electromagnetic/lowenergy/src/G4DNAHeliumExcitation.cc rename to environments/g4py/source/geometry/pyG4SubtractionSolid.cc index 6b82fb21a8..e28ecb14ca 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAHeliumExcitation.cc +++ b/environments/g4py/source/geometry/pyG4SubtractionSolid.cc @@ -23,38 +23,33 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// $Id: pyG4SubtractionSolid.cc,v 1.1 2007/08/07 03:35:53 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4SubtractionSolid.cc // -// $Id: G4DNAHeliumExcitation.cc,v 1.3 2006/06/29 19:39:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// 2007 Q +// ==================================================================== +#include +#include "G4SubtractionSolid.hh" -#include "G4DNAHeliumExcitation.hh" -#include "G4DNAGenericIonsManager.hh" +using namespace boost::python; - G4DNAHeliumExcitationEnergyLimitsPolicy :: G4DNAHeliumExcitationEnergyLimitsPolicy() -: - lowEnergyLimit(1*keV), - zeroBelowLowEnergyLimit(false), - highEnergyLimit(10*MeV), - zeroAboveHighEnergyLimit(true) +// ==================================================================== +// module definition +// ==================================================================== +void export_G4SubtractionSolid() { + class_,boost::noncopyable> + ("G4SubtractionSolid", "subtraction solid class", no_init) + // --- + .def(init()) + .def(init()) + .def(init()) + ; + } - G4DNAHeliumExcitationIncomingParticlePolicy :: G4DNAHeliumExcitationIncomingParticlePolicy() -: - kineticEnergyCorrection(0.9382723/3.727417) -{ - slaterEffectiveCharge[0]=1.7; - slaterEffectiveCharge[1]=1.15; - slaterEffectiveCharge[2]=1.15; - sCoefficient[0]=0.5; - sCoefficient[1]=0.25; - sCoefficient[2]=0.25; -} - -const G4ParticleDefinition * G4DNAHeliumExcitationIncomingParticlePolicy :: IncomingParticleDefinition(void) const -{ - G4DNAGenericIonsManager *instance; - instance = G4DNAGenericIonsManager::Instance(); - - return instance->GetIon("helium"); -} diff --git a/environments/g4py/source/geometry/pyG4Tet.cc b/environments/g4py/source/geometry/pyG4Tet.cc new file mode 100644 index 0000000000..c6c967f648 --- /dev/null +++ b/environments/g4py/source/geometry/pyG4Tet.cc @@ -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: pyG4Tet.cc,v 1.2 2007/07/13 04:57:50 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4Tet.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4Tet.hh" + +using namespace boost::python; + +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4Tet { + +G4Tet* CreateTet(const G4String& name, G4ThreeVector anchor, G4ThreeVector p2, + G4ThreeVector p3, G4ThreeVector p4) +{ + return new G4Tet(name, anchor, p2, p3, p4); +} + +} + +using namespace pyG4Tet; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4Tet() +{ + class_ > + ("G4Tet", "tetrahedra solid class", no_init) + // constructors + .def(init()) + // operators + .def(self_ns::str(self)) + ; + + // Create solid + def("CreateTet", CreateTet, return_value_policy()); + +} diff --git a/environments/g4py/source/geometry/pyG4Torus.cc b/environments/g4py/source/geometry/pyG4Torus.cc index d503074191..73c2e91272 100644 --- a/environments/g4py/source/geometry/pyG4Torus.cc +++ b/environments/g4py/source/geometry/pyG4Torus.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4Torus.cc,v 1.4 2006/06/29 15:32:30 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4Torus.cc,v 1.5 2007/07/13 04:57:50 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Torus.cc // @@ -35,6 +35,21 @@ using namespace boost::python; +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4Torus { + +G4Torus* CreateTorus(const G4String& name, G4double pRmin, G4double pRmax, + G4double pRtor, G4double pSPhi, G4double pDPhi) +{ + return new G4Torus(name, pRmin, pRmax, pRtor, pSPhi, pDPhi); +} + +} + +using namespace pyG4Torus; + // ==================================================================== // module definition // ==================================================================== @@ -51,8 +66,10 @@ void export_G4Torus() .def("GetRtor", &G4Torus::GetRtor) .def("GetSPhi", &G4Torus::GetSPhi) .def("GetDPhi", &G4Torus::GetDPhi) - .def("GetCubicVolume", &G4Torus::GetCubicVolume) // operators .def(self_ns::str(self)) ; + + // Create solid + def("CreateTorus", CreateTorus, return_value_policy()); } diff --git a/environments/g4py/source/geometry/pyG4TouchableHistory.cc b/environments/g4py/source/geometry/pyG4TouchableHistory.cc index f893648a10..17fe40840e 100644 --- a/environments/g4py/source/geometry/pyG4TouchableHistory.cc +++ b/environments/g4py/source/geometry/pyG4TouchableHistory.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4TouchableHistory.cc,v 1.4 2006/06/29 15:32:33 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VTouchable.cc // diff --git a/environments/g4py/source/geometry/pyG4TransportationManager.cc b/environments/g4py/source/geometry/pyG4TransportationManager.cc index e462a299d8..301ead536f 100644 --- a/environments/g4py/source/geometry/pyG4TransportationManager.cc +++ b/environments/g4py/source/geometry/pyG4TransportationManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4TransportationManager.cc,v 1.4 2006/06/29 15:32:36 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4TransportationManager.cc // diff --git a/environments/g4py/source/geometry/pyG4Trap.cc b/environments/g4py/source/geometry/pyG4Trap.cc index 134d52bf5b..38f28935bd 100644 --- a/environments/g4py/source/geometry/pyG4Trap.cc +++ b/environments/g4py/source/geometry/pyG4Trap.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4Trap.cc,v 1.4 2006/06/29 15:32:39 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4Trap.cc,v 1.6 2007/07/13 04:57:50 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Trap.cc // @@ -35,6 +35,68 @@ using namespace boost::python; +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4Trap { + +G4Trap* f1_CreateTrap(const G4String& name) +{ + return new G4Trap(name); +} + + +G4Trap* f2_CreateTrap(const G4String& name, G4double pDz, + G4double pTheta, G4double pPhi, + G4double pDy1, G4double pDx1, G4double pDx2, + G4double pAlp1, + G4double pDy2, G4double pDx3, G4double pDx4, + G4double pAlp2) +{ + return new G4Trap(name, pDz, pTheta, pPhi, + pDy1, pDx1, pDx2, pAlp1, + pDy2, pDx3, pDx4, pAlp2); + +} + + +G4Trap* f3_CreateTrap(const G4String& name, + const std::vector& pt) +{ + G4ThreeVector ptlist[8]; + for (G4int i=0; i<8; i++) { + ptlist[i]= pt[i]; + } + + return new G4Trap(name, ptlist); +} + + +G4Trap* f4_CreateTrap(const G4String& name, G4double pZ, + G4double pY, G4double pX, G4double pLTX) +{ + return new G4Trap(name, pZ, pY, pX, pLTX); +} + + +G4Trap* f5_CreateTrap(const G4String& name, G4double pDx1, G4double pDx2, + G4double pDy1, G4double pDy2, G4double pDz) +{ + return new G4Trap(name, pDx1, pDx2, pDy1, pDy2, pDz); +} + + +G4Trap* f6_CreateTrap(const G4String& name, G4double pDx, G4double pDy, + G4double pDz, + G4double pAlpha, G4double pTheta, G4double pPhi ) +{ + return new G4Trap(name, pDx, pDy, pDz, pAlpha, pTheta, pPhi); +} + +} + +using namespace pyG4Trap; + // ==================================================================== // module definition // ==================================================================== @@ -65,8 +127,17 @@ void export_G4Trap() .def("GetSidePlane", &G4Trap::GetSidePlane) .def("GetSymAxis", &G4Trap::GetSymAxis) .def("SetAllParameters", &G4Trap::SetAllParameters) - .def("GetCubicVolume", &G4Trap::GetCubicVolume) // operators .def(self_ns::str(self)) ; + + // Create solid + def("CreateTrap", f1_CreateTrap, return_value_policy()); + def("CreateTrap", f2_CreateTrap, return_value_policy()); + def("CreateTrap", f3_CreateTrap, return_value_policy()); + def("CreateTrap", f4_CreateTrap, return_value_policy()); + def("CreateTrap", f5_CreateTrap, return_value_policy()); + def("CreateTrap", f6_CreateTrap, return_value_policy()); + } + diff --git a/environments/g4py/source/geometry/pyG4Trd.cc b/environments/g4py/source/geometry/pyG4Trd.cc index a72e6e6748..96ae800c45 100644 --- a/environments/g4py/source/geometry/pyG4Trd.cc +++ b/environments/g4py/source/geometry/pyG4Trd.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4Trd.cc,v 1.4 2006/06/29 15:32:42 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4Trd.cc,v 1.5 2007/07/12 10:01:53 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Trd.cc // @@ -35,6 +35,21 @@ using namespace boost::python; +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4Trd { + +G4Trd* CreateTrd(const G4String& name, G4double pdx1, G4double pdx2, + G4double pdy1, G4double pdy2, G4double pdz ) +{ + return new G4Trd(name, pdx1, pdx2, pdy1, pdy2, pdz); +} + +} + +using namespace pyG4Trd; + // ==================================================================== // module definition // ==================================================================== @@ -56,9 +71,12 @@ void export_G4Trd() .def("SetYHalfLength1", &G4Trd::SetYHalfLength1) .def("SetYHalfLength2", &G4Trd::SetYHalfLength2) .def("SetZHalfLength", &G4Trd::SetZHalfLength) - .def("GetCubicVolume", &G4Trd::GetCubicVolume) // operators .def(self_ns::str(self)) ; + + // Create solid + def("CreateTrd", CreateTrd, return_value_policy()); + } diff --git a/environments/g4py/source/geometry/pyG4Tubs.cc b/environments/g4py/source/geometry/pyG4Tubs.cc index e436d17d51..41e9f70c8e 100644 --- a/environments/g4py/source/geometry/pyG4Tubs.cc +++ b/environments/g4py/source/geometry/pyG4Tubs.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4Tubs.cc,v 1.4 2006/06/29 15:32:45 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4Tubs.cc,v 1.5 2007/07/12 10:01:53 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Tubs.cc // @@ -35,6 +35,21 @@ using namespace boost::python; +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4Tubs { + +G4Tubs* CreateTubs(const G4String& name, G4double pRMin, G4double pRMax, + G4double pDz, G4double pSPhi, G4double pDPhi ) +{ + return new G4Tubs(name, pRMin, pRMax, pDz, pSPhi, pDPhi); +} + +} + +using namespace pyG4Tubs; + // ==================================================================== // module definition // ==================================================================== @@ -61,9 +76,12 @@ void export_G4Tubs() .def("GetDz", &G4Tubs::GetDz) .def("GetSPhi", &G4Tubs::GetSPhi) .def("GetDPhi", &G4Tubs::GetDPhi) - .def("GetCubicVolume", &G4Tubs::GetCubicVolume) // operators .def(self_ns::str(self)) ; + + // Create solid + def("CreateTubs", CreateTubs, return_value_policy()); + } diff --git a/environments/g4py/source/geometry/pyG4TwistedBox.cc b/environments/g4py/source/geometry/pyG4TwistedBox.cc new file mode 100644 index 0000000000..d783cfa6f3 --- /dev/null +++ b/environments/g4py/source/geometry/pyG4TwistedBox.cc @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * 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: pyG4TwistedBox.cc,v 1.2 2007/07/13 04:57:50 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4TwistedBox.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4TwistedBox.hh" + +using namespace boost::python; + +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4TwistedBox { + +G4TwistedBox* CreateTwistedBox(const G4String& name, + G4double pPhiTwist, + G4double pDx, G4double pDy, G4double pDz) +{ + + return new G4TwistedBox(name, pPhiTwist, pDx, pDy, pDz ); + +} + +} + +using namespace pyG4TwistedBox; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4TwistedBox() +{ + class_ > + ("G4TwistedBox", "twisted box solid class", no_init) + // constructors + .def(init()) + // --- + .def("GetXHalfLength", &G4TwistedBox::GetXHalfLength) + .def("GetYHalfLength", &G4TwistedBox::GetYHalfLength) + .def("GetZHalfLength", &G4TwistedBox::GetZHalfLength) + .def("GetPhiTwist", &G4TwistedBox::GetPhiTwist) + // operators + .def(self_ns::str(self)) + ; + + // Create solid + def("CreateTwistedBox", CreateTwistedBox, + return_value_policy()); + +} + diff --git a/environments/g4py/source/geometry/pyG4TwistedTrap.cc b/environments/g4py/source/geometry/pyG4TwistedTrap.cc new file mode 100644 index 0000000000..3d8f498889 --- /dev/null +++ b/environments/g4py/source/geometry/pyG4TwistedTrap.cc @@ -0,0 +1,93 @@ +// +// ******************************************************************** +// * 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: pyG4TwistedTrap.cc,v 1.2 2007/07/13 04:57:50 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4TwistedTrap.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4TwistedTrap.hh" + +using namespace boost::python; + +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4TwistedTrap { + +G4TwistedTrap* f1_CreateTwistedTrap(const G4String& name, + G4double pPhiTwist, + G4double pDx1, G4double pDx2, + G4double pDy, G4double pDz) +{ + return new G4TwistedTrap(name, pPhiTwist, pDx1, pDx2, pDy, pDz); +} + + +G4TwistedTrap* f2_CreateTwistedTrap(const G4String& name, + G4double pPhiTwist, + G4double pDz, G4double pTheta, + G4double pPhi, G4double pDy1, + G4double pDx1, G4double pDx2, + G4double pDy2, G4double pDx3, + G4double pDx4, G4double pAlph) +{ + return new G4TwistedTrap(name, pPhiTwist, pDz, pTheta, pPhi, + pDy1, pDx1, pDx2, pDy2, pDx3, pDx4, pAlph); +} + +} + +using namespace pyG4TwistedTrap; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4TwistedTrap() +{ + class_ > + ("G4TwistedTrap", "twisted trapezoid solid class", no_init) + // constructors + .def(init()) + .def(init()) + // operators + .def(self_ns::str(self)) + ; + + // Create solid + def("CreateTwistedTap", f1_CreateTwistedTrap, + return_value_policy()); + def("CreateTwistedTap", f2_CreateTwistedTrap, + return_value_policy()); + +} + diff --git a/environments/g4py/source/geometry/pyG4TwistedTrd.cc b/environments/g4py/source/geometry/pyG4TwistedTrd.cc new file mode 100644 index 0000000000..4ebca757af --- /dev/null +++ b/environments/g4py/source/geometry/pyG4TwistedTrd.cc @@ -0,0 +1,81 @@ +// +// ******************************************************************** +// * 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: pyG4TwistedTrd.cc,v 1.1 2007/07/13 04:58:29 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4TwistedTrap.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4TwistedTrd.hh" + +using namespace boost::python; + +// ==================================================================== +// wrappers +// ==================================================================== +namespace pyG4TwistedTrd { + +G4TwistedTrd* CreateTwistedTrd(const G4String& name, + G4double pDx1, G4double pDx2, + G4double pDy1, G4double pDy2, + G4double pDz, G4double pPhiTwist) +{ + return new G4TwistedTrd(name, pDx1, pDx2, pDy1, pDy2, pDz, pPhiTwist); +} + +} + +using namespace pyG4TwistedTrd; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4TwistedTrd() +{ + class_ > + ("G4TwistedTrd", "twisted trapezoid solid class", no_init) + // constructors + .def(init()) + // --- + .def("GetX1HalfLength", &G4TwistedTrd::GetX1HalfLength) + .def("GetX2HalfLength", &G4TwistedTrd::GetX2HalfLength) + .def("GetY1HalfLength", &G4TwistedTrd::GetY1HalfLength) + .def("GetY2HalfLength", &G4TwistedTrd::GetY2HalfLength) + .def("GetZHalfLength", &G4TwistedTrd::GetZHalfLength) + .def("GetPhiTwist", &G4TwistedTrd::GetPhiTwist) + // operators + .def(self_ns::str(self)) + ; + + // Create solid + def("CreateTwistedTrd", CreateTwistedTrd, + return_value_policy()); + +} + diff --git a/environments/g4py/source/geometry/pyG4TwistedTubs.cc b/environments/g4py/source/geometry/pyG4TwistedTubs.cc new file mode 100644 index 0000000000..5f7ec42a25 --- /dev/null +++ b/environments/g4py/source/geometry/pyG4TwistedTubs.cc @@ -0,0 +1,161 @@ +// +// ******************************************************************** +// * 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: pyG4TwistedTubs.cc,v 1.2 2007/07/13 04:57:51 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4TwistedTubs.cc +// +// 2007 Q +// ==================================================================== +#include +#include "G4TwistedTubs.hh" + +using namespace boost::python; + + +// ==================================================================== +// thin wrappers +// ==================================================================== +namespace pyG4TwistedTubs { + +// GetEndInnerRadius +G4double (G4TwistedTubs::*f1_GetEndInnerRadius)(G4int) const + = &G4TwistedTubs::GetEndInnerRadius; +G4double (G4TwistedTubs::*f2_GetEndInnerRadius)(G4int) const + = &G4TwistedTubs::GetEndInnerRadius; + +// GetOuterRadius +G4double (G4TwistedTubs::*f1_GetEndOuterRadius)(G4int) const + = &G4TwistedTubs::GetEndOuterRadius; +G4double (G4TwistedTubs::*f2_GetEndOuterRadius)() const + = &G4TwistedTubs::GetEndOuterRadius; + + +// Create Solid +G4TwistedTubs* f1_CreateTwistedTubs(const G4String& name, + G4double twistedangle, + G4double endinnerrad, + G4double endouterrad, + G4double halfzlen, + G4double dphi) +{ + return new G4TwistedTubs(name, twistedangle, endinnerrad, + endouterrad, halfzlen, dphi); +} + +G4TwistedTubs* f2_CreateTwistedTubs(const G4String& name, + G4double twistedangle, + G4double endinnerrad, + G4double endouterrad, + G4double halfzlen, + G4int nseg, + G4double totphi) +{ + return new G4TwistedTubs(name, twistedangle, endinnerrad, + endouterrad, halfzlen, nseg, totphi); +} + +G4TwistedTubs* f3_CreateTwistedTubs(const G4String& name, + G4double twistedangle, + G4double innerrad, + G4double outerrad, + G4double negativeEndz, + G4double positiveEndz, + G4double dphi) +{ + return new G4TwistedTubs(name, twistedangle, innerrad, outerrad, + negativeEndz, positiveEndz, dphi); +} + +G4TwistedTubs* f4_CreateTwistedTubs(const G4String& name, + G4double twistedangle, + G4double innerrad, + G4double outerrad, + G4double negativeEndz, + G4double positiveEndz, + G4int nseg, + G4double totphi) +{ + return new G4TwistedTubs(name, twistedangle, innerrad, outerrad, + negativeEndz, positiveEndz, nseg, totphi); +} + + +} + +using namespace pyG4TwistedTubs; + +// ==================================================================== +// module definition +// ==================================================================== +void export_G4TwistedTubs() +{ + class_ > + ("G4TwistedTubs", "twisted tube solid class", no_init) + // constructors + .def(init()) + .def(init()) + .def(init()) + .def(init()) + // --- + .def("GetDPhi", &G4TwistedTubs::GetDPhi) + .def("GetPhiTwist", &G4TwistedTubs::GetPhiTwist) + .def("GetInnerRadius", &G4TwistedTubs::GetInnerRadius) + .def("GetOuterRadius", &G4TwistedTubs::GetOuterRadius) + .def("GetInnerStereo", &G4TwistedTubs::GetInnerStereo) + .def("GetOuterStereo", &G4TwistedTubs::GetOuterStereo) + .def("GetZHalfLength", &G4TwistedTubs::GetZHalfLength) + .def("GetKappa", &G4TwistedTubs::GetKappa) + .def("GetTanInnerStereo", &G4TwistedTubs::GetTanInnerStereo) + .def("GetTanInnerStereo2", &G4TwistedTubs::GetTanInnerStereo2) + .def("GetTanOuterStereo", &G4TwistedTubs::GetTanOuterStereo) + .def("GetTanOuterStereo2", &G4TwistedTubs::GetTanOuterStereo2) + .def("GetEndZ", &G4TwistedTubs::GetEndZ) + .def("GetEndPhi", &G4TwistedTubs::GetEndPhi) + .def("GetEndInnerRadius", f1_GetEndInnerRadius) + .def("GetEndInnerRadius", f2_GetEndInnerRadius) + .def("GetEndOuterRadius", f1_GetEndOuterRadius) + .def("GetEndOuterRadius", f2_GetEndOuterRadius) + // operators + .def(self_ns::str(self)) + ; + + // Create solid + def("CreateTwistedTubs", f1_CreateTwistedTubs, + return_value_policy()); + def("CreateTwistedTubs", f2_CreateTwistedTubs, + return_value_policy()); + def("CreateTwistedTubs", f3_CreateTwistedTubs, + return_value_policy()); + def("CreateTwistedTubs", f4_CreateTwistedTubs, + return_value_policy()); + +} + diff --git a/environments/g4py/source/geometry/pyG4UniformMagField.cc b/environments/g4py/source/geometry/pyG4UniformMagField.cc index de9312756e..5bd817a544 100644 --- a/environments/g4py/source/geometry/pyG4UniformMagField.cc +++ b/environments/g4py/source/geometry/pyG4UniformMagField.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4UniformMagField.cc,v 1.4 2006/06/29 15:32:48 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UniformMagField.cc // diff --git a/examples/extended/medical/DICOM/src/DicomOctreeTerminalNode.cc b/environments/g4py/source/geometry/pyG4UnionSolid.cc similarity index 62% rename from examples/extended/medical/DICOM/src/DicomOctreeTerminalNode.cc rename to environments/g4py/source/geometry/pyG4UnionSolid.cc index 9f39017a6d..42028d176e 100644 --- a/examples/extended/medical/DICOM/src/DicomOctreeTerminalNode.cc +++ b/environments/g4py/source/geometry/pyG4UnionSolid.cc @@ -23,44 +23,33 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca +// $Id: pyG4UnionSolid.cc,v 1.1 2007/08/07 03:35:53 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// pyG4UnionSolid.cc // -// -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 -// -// + Université Laval, Québec (QC) Canada -//******************************************************* +// 2007 Q +// ==================================================================== +#include +#include "G4UnionSolid.hh" +using namespace boost::python; -#include "DicomOctreeNode.hh" -#include "DicomOctreeTerminalNode.hh" - -DicomOctreeNode* DicomOctreeTerminalNode::mNull = 0; - -DicomOctreeTerminalNode::DicomOctreeTerminalNode( DicomOctreeNode* pParent) : DicomOctreeNode( pParent ) -{ - -} -DicomOctreeTerminalNode::~DicomOctreeTerminalNode() +// ==================================================================== +// module definition +// ==================================================================== +void export_G4UnionSolid() { + class_,boost::noncopyable> + ("G4UnionSolid", "union solid class", no_init) + // --- + .def(init()) + .def(init()) + .def(init()) + ; } -DicomOctreeNode*& DicomOctreeTerminalNode::operator []( G4int ) -{ - return mNull; -} - -G4int DicomOctreeTerminalNode::MemSize() -{ - return sizeof(DicomOctreeTerminalNode); -} - - diff --git a/environments/g4py/source/geometry/pyG4VPhysicalVolume.cc b/environments/g4py/source/geometry/pyG4VPhysicalVolume.cc index af0c42e3dc..be1bd0de7b 100644 --- a/environments/g4py/source/geometry/pyG4VPhysicalVolume.cc +++ b/environments/g4py/source/geometry/pyG4VPhysicalVolume.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VPhysicalVolume.cc,v 1.6 2006/11/21 06:03:22 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VPhysicalVolume.cc // diff --git a/environments/g4py/source/geometry/pyG4VSolid.cc b/environments/g4py/source/geometry/pyG4VSolid.cc index 0551ac67d1..fcca5a6253 100644 --- a/environments/g4py/source/geometry/pyG4VSolid.cc +++ b/environments/g4py/source/geometry/pyG4VSolid.cc @@ -23,14 +23,15 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4VSolid.cc,v 1.4 2006/06/29 15:32:54 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4VSolid.cc,v 1.5 2007/07/11 15:21:24 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VSolid.cc // // 2005 Q // ==================================================================== #include +#include "pyG4Version.hh" #include "G4VSolid.hh" using namespace boost::python; @@ -43,9 +44,17 @@ void export_G4VSolid() class_ ("G4VSolid", "solid class", no_init) // --- - .def("GetName", &G4VSolid::GetName) - .def("SetName", &G4VSolid::SetName) - .def("DumpInfo", &G4VSolid::DumpInfo) + .def("GetName", &G4VSolid::GetName) + .def("SetName", &G4VSolid::SetName) + .def("DumpInfo", &G4VSolid::DumpInfo) + + .def("GetCubicVolume", &G4VSolid::GetCubicVolume) +#if G4VERSION_NUMBER >=820 + .def("GetSurfaceArea", &G4VSolid::GetSurfaceArea) +#endif +#if G4VERSION_NUMBER >=800 + .def("GetPointOnSurface", &G4VSolid::GetPointOnSurface) +#endif // operators .def(self == self) ; diff --git a/environments/g4py/source/geometry/pyG4VTouchable.cc b/environments/g4py/source/geometry/pyG4VTouchable.cc index 19d83fa6c8..7cb019ee42 100644 --- a/environments/g4py/source/geometry/pyG4VTouchable.cc +++ b/environments/g4py/source/geometry/pyG4VTouchable.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VTouchable.cc,v 1.4 2006/06/29 15:32:57 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VTouchable.cc // diff --git a/environments/g4py/source/geometry/pymodG4geometry.cc b/environments/g4py/source/geometry/pymodG4geometry.cc index 9498dcf0bd..a3e342f3be 100644 --- a/environments/g4py/source/geometry/pymodG4geometry.cc +++ b/environments/g4py/source/geometry/pymodG4geometry.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pymodG4geometry.cc,v 1.4 2006/06/29 15:33:00 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pymodG4geometry.cc,v 1.9 2007/11/13 08:05:27 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4geometry.cc [Geant4Py module] // @@ -54,7 +54,23 @@ void export_G4Orb(); void export_G4Sphere(); void export_G4Trap(); void export_G4Tubs(); +void export_G4Polycone(); +void export_G4Polyhedra(); +void export_G4EllipticalTube(); +void export_G4Ellipsoid(); +void export_G4EllipticalCone(); +void export_G4Hype(); +void export_G4Tet(); +void export_G4TwistedBox(); +void export_G4TwistedTrap(); +void export_G4TwistedTrd(); +void export_G4TwistedTubs(); +void export_G4BooleanSolid(); +void export_G4UnionSolid(); +void export_G4IntersectionSolid(); +void export_G4SubtractionSolid(); void export_G4TransportationManager(); +void export_G4Navigator(); void export_G4FieldManager(); void export_G4Field(); void export_G4MagneticField(); @@ -80,7 +96,23 @@ BOOST_PYTHON_MODULE(G4geometry) export_G4Sphere(); export_G4Trap(); export_G4Tubs(); + export_G4Polycone(); + export_G4Polyhedra(); + export_G4EllipticalTube(); + export_G4Ellipsoid(); + export_G4EllipticalCone(); + export_G4Hype(); + export_G4Tet(); + export_G4TwistedBox(); + export_G4TwistedTrap(); + export_G4TwistedTrd(); + export_G4TwistedTubs(); + export_G4BooleanSolid(); + export_G4UnionSolid(); + export_G4IntersectionSolid(); + export_G4SubtractionSolid(); export_G4TransportationManager(); + export_G4Navigator(); export_G4FieldManager(); export_G4Field(); export_G4MagneticField(); diff --git a/environments/g4py/source/global/G4PyCoutDestination.cc b/environments/g4py/source/global/G4PyCoutDestination.cc index 525602170b..611f499ac5 100644 --- a/environments/g4py/source/global/G4PyCoutDestination.cc +++ b/environments/g4py/source/global/G4PyCoutDestination.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PyCoutDestination.cc,v 1.3 2006/06/29 15:33:03 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // G4PyCoutDistination.cc // diff --git a/environments/g4py/source/global/G4PyCoutDestination.hh b/environments/g4py/source/global/G4PyCoutDestination.hh index 21a22a1f56..80663bbee5 100644 --- a/environments/g4py/source/global/G4PyCoutDestination.hh +++ b/environments/g4py/source/global/G4PyCoutDestination.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PyCoutDestination.hh,v 1.3 2006/06/29 15:33:06 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // G4PyCoutDestination.hh // diff --git a/environments/g4py/source/global/GNUmakefile b/environments/g4py/source/global/GNUmakefile index c6afbe74ae..be8823509a 100644 --- a/environments/g4py/source/global/GNUmakefile +++ b/environments/g4py/source/global/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:45 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/global/pyG4ApplicationState.cc b/environments/g4py/source/global/pyG4ApplicationState.cc index b68118f94d..5347d29e9c 100644 --- a/environments/g4py/source/global/pyG4ApplicationState.cc +++ b/environments/g4py/source/global/pyG4ApplicationState.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ApplicationState.cc,v 1.5 2006/11/20 05:56:46 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ApplicationState.cc // diff --git a/environments/g4py/source/global/pyG4Exception.cc b/environments/g4py/source/global/pyG4Exception.cc index 3e4e48daf3..548989afdd 100644 --- a/environments/g4py/source/global/pyG4Exception.cc +++ b/environments/g4py/source/global/pyG4Exception.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Exception.cc,v 1.1 2006/11/20 05:57:16 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Exception.cc // diff --git a/environments/g4py/source/global/pyG4ExceptionHandler.cc b/environments/g4py/source/global/pyG4ExceptionHandler.cc index d8a61efbb6..6c0f24f3a6 100644 --- a/environments/g4py/source/global/pyG4ExceptionHandler.cc +++ b/environments/g4py/source/global/pyG4ExceptionHandler.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ExceptionHandler.cc,v 1.1 2006/11/21 05:58:33 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ExceptionHandler.cc // diff --git a/environments/g4py/source/global/pyG4ExceptionSeverity.cc b/environments/g4py/source/global/pyG4ExceptionSeverity.cc index bffbfda07b..696bc52c71 100644 --- a/environments/g4py/source/global/pyG4ExceptionSeverity.cc +++ b/environments/g4py/source/global/pyG4ExceptionSeverity.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ExceptionSeverity.cc,v 1.1 2006/11/20 05:57:16 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ExceptionSeverity.cc // diff --git a/environments/g4py/source/global/pyG4RandomDirection.cc b/environments/g4py/source/global/pyG4RandomDirection.cc index 5c9a58b7bb..ca8c1e6040 100644 --- a/environments/g4py/source/global/pyG4RandomDirection.cc +++ b/environments/g4py/source/global/pyG4RandomDirection.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4RandomDirection.cc,v 1.4 2006/06/29 15:33:12 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4RandomDirection.cc // diff --git a/environments/g4py/source/global/pyG4RotationMatrix.cc b/environments/g4py/source/global/pyG4RotationMatrix.cc index 7c22f3ca13..a0b3f79312 100644 --- a/environments/g4py/source/global/pyG4RotationMatrix.cc +++ b/environments/g4py/source/global/pyG4RotationMatrix.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4RotationMatrix.cc,v 1.4 2006/06/29 15:33:15 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4RotationMatrix.cc // diff --git a/environments/g4py/source/global/pyG4StateManager.cc b/environments/g4py/source/global/pyG4StateManager.cc index 48695983a8..3af475bf39 100644 --- a/environments/g4py/source/global/pyG4StateManager.cc +++ b/environments/g4py/source/global/pyG4StateManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4StateManager.cc,v 1.4 2006/06/29 15:33:18 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4StateManager.cc // diff --git a/environments/g4py/source/global/pyG4String.cc b/environments/g4py/source/global/pyG4String.cc index a75cad04cb..05115b2f3d 100644 --- a/environments/g4py/source/global/pyG4String.cc +++ b/environments/g4py/source/global/pyG4String.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4String.cc,v 1.4 2006/06/29 15:33:21 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4String.cc // diff --git a/environments/g4py/source/global/pyG4ThreeVector.cc b/environments/g4py/source/global/pyG4ThreeVector.cc index be9048c40a..f92cafdb21 100644 --- a/environments/g4py/source/global/pyG4ThreeVector.cc +++ b/environments/g4py/source/global/pyG4ThreeVector.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ThreeVector.cc,v 1.5 2006/06/29 15:33:24 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ThreeVector.cc // diff --git a/environments/g4py/source/global/pyG4Timer.cc b/environments/g4py/source/global/pyG4Timer.cc index 436fc5a7f5..65bb746ca9 100644 --- a/environments/g4py/source/global/pyG4Timer.cc +++ b/environments/g4py/source/global/pyG4Timer.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Timer.cc,v 1.3 2006/06/29 15:33:27 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Timer.cc // diff --git a/environments/g4py/source/global/pyG4Transform3D.cc b/environments/g4py/source/global/pyG4Transform3D.cc index 39223ce8bf..983b3216f7 100644 --- a/environments/g4py/source/global/pyG4Transform3D.cc +++ b/environments/g4py/source/global/pyG4Transform3D.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Transform3D.cc,v 1.4 2006/06/29 15:33:30 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Transform3D.cc // diff --git a/environments/g4py/source/global/pyG4TwoVector.cc b/environments/g4py/source/global/pyG4TwoVector.cc index 23c5516743..e0c0ff315d 100644 --- a/environments/g4py/source/global/pyG4TwoVector.cc +++ b/environments/g4py/source/global/pyG4TwoVector.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4TwoVector.cc,v 1.1 2007/05/28 03:03:21 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4TwoVector.cc // diff --git a/environments/g4py/source/global/pyG4UnitsTable.cc b/environments/g4py/source/global/pyG4UnitsTable.cc index db6cc5e74a..a9c058e67c 100644 --- a/environments/g4py/source/global/pyG4UnitsTable.cc +++ b/environments/g4py/source/global/pyG4UnitsTable.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4UnitsTable.cc,v 1.4 2006/06/29 15:33:33 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UnitsTable.cc // diff --git a/environments/g4py/source/global/pyG4UserLimits.cc b/environments/g4py/source/global/pyG4UserLimits.cc index 0bd4851e92..d0532851fb 100644 --- a/environments/g4py/source/global/pyG4UserLimits.cc +++ b/environments/g4py/source/global/pyG4UserLimits.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4UserLimits.cc,v 1.4 2006/06/29 15:33:36 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UserLimits.cc // diff --git a/environments/g4py/source/global/pyG4Version.cc b/environments/g4py/source/global/pyG4Version.cc index e83d07c25e..0d311bde36 100644 --- a/environments/g4py/source/global/pyG4Version.cc +++ b/environments/g4py/source/global/pyG4Version.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Version.cc,v 1.1 2006/08/23 04:43:27 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Version.cc // diff --git a/environments/g4py/source/global/pyRandomEngines.cc b/environments/g4py/source/global/pyRandomEngines.cc index ae65eea19d..5b9c99a21d 100644 --- a/environments/g4py/source/global/pyRandomEngines.cc +++ b/environments/g4py/source/global/pyRandomEngines.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyRandomEngines.cc,v 1.4 2006/06/29 15:33:39 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyRandomEngines.cc // diff --git a/environments/g4py/source/global/pyRandomize.cc b/environments/g4py/source/global/pyRandomize.cc index 353f64e4ff..f3d473d711 100644 --- a/environments/g4py/source/global/pyRandomize.cc +++ b/environments/g4py/source/global/pyRandomize.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyRandomize.cc,v 1.4 2006/06/29 15:33:42 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyRandomize.cc // diff --git a/environments/g4py/source/global/pygeomdefs.cc b/environments/g4py/source/global/pygeomdefs.cc index 5e25d9fee9..38889e17cf 100644 --- a/environments/g4py/source/global/pygeomdefs.cc +++ b/environments/g4py/source/global/pygeomdefs.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pygeomdefs.cc,v 1.4 2006/06/29 15:33:45 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pygeomdefs.cc // diff --git a/environments/g4py/source/global/pyglobals.cc b/environments/g4py/source/global/pyglobals.cc index efa4428f60..dd1366440d 100644 --- a/environments/g4py/source/global/pyglobals.cc +++ b/environments/g4py/source/global/pyglobals.cc @@ -23,17 +23,20 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyglobals.cc,v 1.4 2006/06/29 15:33:48 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyglobals.cc,v 1.5 2007/07/12 09:38:01 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyglobals.cc // // 2005 Q // ==================================================================== #include +#include "pyG4Version.hh" #include "G4strstreambuf.hh" #include "G4UImanager.hh" #include "G4PyCoutDestination.hh" +#include "G4ThreeVector.hh" +#include "G4TwoVector.hh" #include "pyG4indexing.hh" #include @@ -62,7 +65,10 @@ void ResetG4PyCoutDestination() typedef std::vector G4intVector; typedef std::vector G4doubleVector; typedef std::vector G4StringVector; - +typedef std::vector G4ThreeVectorVector; +#if G4VERSION_NUMBER >= 830 +typedef std::vector G4TwoVectorVector; +#endif }; using namespace pyglobals; @@ -86,5 +92,16 @@ void export_globals() class_ ("G4StringVector", "string vector") .def(vector_indexing_suite()) ; + + class_ ("G4ThreeVectorVector", "3-vector vector") + .def(vector_indexing_suite()) + ; + +#if G4VERSION_NUMBER >= 830 + class_ ("G4StringVector", "2-vector vector") + .def(vector_indexing_suite()) + ; +#endif + } diff --git a/environments/g4py/source/global/pymodG4global.cc b/environments/g4py/source/global/pymodG4global.cc index a6e6d225a1..21a59c0b20 100644 --- a/environments/g4py/source/global/pymodG4global.cc +++ b/environments/g4py/source/global/pymodG4global.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4global.cc,v 1.8 2007/05/28 03:03:21 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4global.cc [Geant4Py module] // diff --git a/environments/g4py/source/graphics_reps/GNUmakefile b/environments/g4py/source/graphics_reps/GNUmakefile index d6a09037db..3f1bc5958d 100644 --- a/environments/g4py/source/graphics_reps/GNUmakefile +++ b/environments/g4py/source/graphics_reps/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:45 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/graphics_reps/pyG4Colour.cc b/environments/g4py/source/graphics_reps/pyG4Colour.cc index 107f8695f4..5534faa017 100644 --- a/environments/g4py/source/graphics_reps/pyG4Colour.cc +++ b/environments/g4py/source/graphics_reps/pyG4Colour.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Colour.cc,v 1.4 2006/06/29 15:33:54 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Colour.cc // diff --git a/environments/g4py/source/graphics_reps/pyG4VisAttributes.cc b/environments/g4py/source/graphics_reps/pyG4VisAttributes.cc index a75a30a686..8641a59d41 100644 --- a/environments/g4py/source/graphics_reps/pyG4VisAttributes.cc +++ b/environments/g4py/source/graphics_reps/pyG4VisAttributes.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VisAttributes.cc,v 1.4 2006/06/29 15:33:57 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VisAttributes.cc // diff --git a/environments/g4py/source/graphics_reps/pymodG4graphics_reps.cc b/environments/g4py/source/graphics_reps/pymodG4graphics_reps.cc index 3c7777eef7..773a6ceb8e 100644 --- a/environments/g4py/source/graphics_reps/pymodG4graphics_reps.cc +++ b/environments/g4py/source/graphics_reps/pymodG4graphics_reps.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4graphics_reps.cc,v 1.4 2006/06/29 15:33:59 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4graphics_reps.cc [Geant4Py module] // diff --git a/environments/g4py/source/intercoms/GNUmakefile b/environments/g4py/source/intercoms/GNUmakefile index 8939f9bc41..f75236faa4 100644 --- a/environments/g4py/source/intercoms/GNUmakefile +++ b/environments/g4py/source/intercoms/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.1 2006/08/08 05:20:57 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/intercoms/pyG4UIcommand.cc b/environments/g4py/source/intercoms/pyG4UIcommand.cc index ddf158870e..cd3209b71b 100644 --- a/environments/g4py/source/intercoms/pyG4UIcommand.cc +++ b/environments/g4py/source/intercoms/pyG4UIcommand.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4UIcommand.cc,v 1.1 2006/08/08 05:20:57 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UIcommand.cc // diff --git a/environments/g4py/source/intercoms/pyG4UIcommandTree.cc b/environments/g4py/source/intercoms/pyG4UIcommandTree.cc index 3905e78930..01250cfdbd 100644 --- a/environments/g4py/source/intercoms/pyG4UIcommandTree.cc +++ b/environments/g4py/source/intercoms/pyG4UIcommandTree.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4UIcommandTree.cc,v 1.1 2006/08/08 05:20:57 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UIcommandTree.cc // diff --git a/environments/g4py/source/intercoms/pyG4UImanager.cc b/environments/g4py/source/intercoms/pyG4UImanager.cc index aec96b4baf..b5def39338 100644 --- a/environments/g4py/source/intercoms/pyG4UImanager.cc +++ b/environments/g4py/source/intercoms/pyG4UImanager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4UImanager.cc,v 1.1 2006/08/08 05:20:57 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UImanager.cc // diff --git a/environments/g4py/source/intercoms/pyG4UIparameter.cc b/environments/g4py/source/intercoms/pyG4UIparameter.cc index 7da4c51e31..56f231f14f 100644 --- a/environments/g4py/source/intercoms/pyG4UIparameter.cc +++ b/environments/g4py/source/intercoms/pyG4UIparameter.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4UIparameter.cc,v 1.1 2006/08/08 05:20:57 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UIparameter.cc // diff --git a/environments/g4py/source/intercoms/pymodG4intercoms.cc b/environments/g4py/source/intercoms/pymodG4intercoms.cc index 584733358d..ec334d8369 100644 --- a/environments/g4py/source/intercoms/pymodG4intercoms.cc +++ b/environments/g4py/source/intercoms/pymodG4intercoms.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4intercoms.cc,v 1.1 2006/08/08 05:20:57 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4intercoms.cc [Geant4Py module] // diff --git a/environments/g4py/source/interface/GNUmakefile b/environments/g4py/source/interface/GNUmakefile index 0aa2360971..19bc17f0db 100644 --- a/environments/g4py/source/interface/GNUmakefile +++ b/environments/g4py/source/interface/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:45 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/interface/pyG4UIterminal.cc b/environments/g4py/source/interface/pyG4UIterminal.cc index 2c0493c1bf..0ef7e03798 100644 --- a/environments/g4py/source/interface/pyG4UIterminal.cc +++ b/environments/g4py/source/interface/pyG4UIterminal.cc @@ -23,14 +23,15 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4UIterminal.cc,v 1.6 2007/05/28 03:11:20 kmura Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4UIterminal.cc,v 1.7 2007/06/29 02:22:20 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UIterminal.cc // // 2005 Q // ==================================================================== #include +#include "pyG4Version.hh" #include "G4UIterminal.hh" #include "G4UItcsh.hh" @@ -51,7 +52,11 @@ void StartUISession() G4UItcsh* tcsh= new G4UItcsh("g4py(%s)[%/]:"); +#if G4VERSION_NUMBER >= 900 session= new G4UIterminal(tcsh, false); +#else + session= new G4UIterminal(tcsh); +#endif tcsh-> SetLsColor(BLUE,RED); } diff --git a/environments/g4py/source/interface/pymodG4interface.cc b/environments/g4py/source/interface/pymodG4interface.cc index 5a78689479..01dbf180a3 100644 --- a/environments/g4py/source/interface/pymodG4interface.cc +++ b/environments/g4py/source/interface/pymodG4interface.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4interface.cc,v 1.5 2006/08/08 05:20:09 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4interface.cc [Geant4Py module] // diff --git a/environments/g4py/source/materials/GNUmakefile b/environments/g4py/source/materials/GNUmakefile index 300b2fa35a..3a3f3e6c2e 100644 --- a/environments/g4py/source/materials/GNUmakefile +++ b/environments/g4py/source/materials/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:45 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/materials/pyG4Element.cc b/environments/g4py/source/materials/pyG4Element.cc index fa4834a3db..e2daa3ecf4 100644 --- a/environments/g4py/source/materials/pyG4Element.cc +++ b/environments/g4py/source/materials/pyG4Element.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Element.cc,v 1.5 2006/08/25 05:46:17 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Element.cc // diff --git a/environments/g4py/source/materials/pyG4ElementTable.cc b/environments/g4py/source/materials/pyG4ElementTable.cc index 98687975f0..6effecadc7 100644 --- a/environments/g4py/source/materials/pyG4ElementTable.cc +++ b/environments/g4py/source/materials/pyG4ElementTable.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ElementTable.cc,v 1.4 2006/06/29 15:34:12 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ElementTable.cc // diff --git a/environments/g4py/source/materials/pyG4Material.cc b/environments/g4py/source/materials/pyG4Material.cc index 72ce56786d..e580399ad5 100644 --- a/environments/g4py/source/materials/pyG4Material.cc +++ b/environments/g4py/source/materials/pyG4Material.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Material.cc,v 1.5 2006/12/01 02:10:08 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Material.cc // diff --git a/environments/g4py/source/materials/pyG4MaterialTable.cc b/environments/g4py/source/materials/pyG4MaterialTable.cc index 7a22e4178f..20e6379900 100644 --- a/environments/g4py/source/materials/pyG4MaterialTable.cc +++ b/environments/g4py/source/materials/pyG4MaterialTable.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4MaterialTable.cc,v 1.4 2006/06/29 15:34:18 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4MaterialTable.cc // diff --git a/environments/g4py/source/materials/pyG4NistManager.cc b/environments/g4py/source/materials/pyG4NistManager.cc index b3688c0dba..a8ab197ead 100644 --- a/environments/g4py/source/materials/pyG4NistManager.cc +++ b/environments/g4py/source/materials/pyG4NistManager.cc @@ -23,16 +23,15 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4NistManager.cc,v 1.5 2007/05/28 03:11:20 kmura Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4NistManager.cc,v 1.6 2007/11/07 08:49:31 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4NistManager.cc // // 2005 Q // =================================================================== #include -#include "pyG4Version.hh" - +#include "G4Version.hh" #if G4VERSION_NUMBER >= 710 #include "G4NistManager.hh" @@ -64,6 +63,23 @@ BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_FindOrBuildMaterial, FindOrBuildMaterial, 1, 2); // ConstructNewMaterial +#if G4VERSION_NUMBER >= 910 +G4Material*(G4NistManager::*f1_ConstructNewMaterial) + (const G4String&, const std::vector&, + const std::vector&, G4double, G4bool, + G4State, G4double, G4double) + = &G4NistManager::ConstructNewMaterial; + +G4Material*(G4NistManager::*f2_ConstructNewMaterial) + (const G4String&, const std::vector&, + const std::vector&, G4double, G4bool, + G4State, G4double, G4double) + = &G4NistManager::ConstructNewMaterial; + +BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_ConstructNewMaterial, + ConstructNewMaterial, 4, 8); + +#else G4Material*(G4NistManager::*f1_ConstructNewMaterial) (const G4String&, const std::vector&, const std::vector&, G4double, G4bool) @@ -74,9 +90,16 @@ G4Material*(G4NistManager::*f2_ConstructNewMaterial) const std::vector&, G4double, G4bool) = &G4NistManager::ConstructNewMaterial; -BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_ConstructNewMaterial, +BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_ConstructNewMaterial, ConstructNewMaterial, 4, 5); +#endif + +#if G4VERSION_NUMBER >= 910 +BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_ConstructNewGasMaterial, + ConstructNewGasMaterial, 4, 5); +#endif + }; using namespace pyG4NistManager; @@ -100,8 +123,10 @@ void export_G4NistManager() .def("SetVerbose", &G4NistManager::SetVerbose) .def("GetVerbose", &G4NistManager::GetVerbose) // --- +#if G4VERSION_NUMBER < 910 .def("RegisterElement", &G4NistManager::RegisterElement) .def("DeRegisterElement", &G4NistManager::DeRegisterElement) +#endif .def("GetElement", &G4NistManager::GetElement, return_internal_reference<>()) .def("FindOrBuildElement", f1_FindOrBuildElement, @@ -117,8 +142,10 @@ void export_G4NistManager() .def("PrintElement", f2_PrintElement) .def("PrintG4Element", &G4NistManager::PrintG4Element) // --- +#if G4VERSION_NUMBER < 910 .def("RegisterMaterial", &G4NistManager::RegisterMaterial) .def("DeRegisterMaterial", &G4NistManager::DeRegisterMaterial) +#endif .def("GetMaterial", &G4NistManager::GetMaterial, return_value_policy()) .def("FindOrBuildMaterial", &G4NistManager::FindOrBuildMaterial, @@ -130,6 +157,11 @@ void export_G4NistManager() .def("ConstructNewMaterial", f2_ConstructNewMaterial, f_ConstructNewMaterial() [return_value_policy()]) +#if G4VERSION_NUMBER >= 910 + .def("ConstructNewGasMaterial", &G4NistManager::ConstructNewGasMaterial, + f_ConstructNewGasMaterial() + [return_value_policy()]) +#endif .def("GetNumberOfMaterials", &G4NistManager::GetNumberOfMaterials) .def("ListMaterials", &G4NistManager::ListMaterials) .def("PrintG4Material", &G4NistManager::PrintG4Material) diff --git a/environments/g4py/source/materials/pymodG4materials.cc b/environments/g4py/source/materials/pymodG4materials.cc index 7e56455921..12876ff2a7 100644 --- a/environments/g4py/source/materials/pymodG4materials.cc +++ b/environments/g4py/source/materials/pymodG4materials.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4materials.cc,v 1.5 2007/05/28 03:11:20 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4materials.cc [Geant4Py module] // diff --git a/environments/g4py/source/particles/GNUmakefile b/environments/g4py/source/particles/GNUmakefile index 06440b38c7..b8d3947cbf 100644 --- a/environments/g4py/source/particles/GNUmakefile +++ b/environments/g4py/source/particles/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:45 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/particles/pyG4DecayTable.cc b/environments/g4py/source/particles/pyG4DecayTable.cc index 052a4ffd6f..dc998593a3 100644 --- a/environments/g4py/source/particles/pyG4DecayTable.cc +++ b/environments/g4py/source/particles/pyG4DecayTable.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4DecayTable.cc,v 1.4 2006/06/29 15:34:27 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4DecayTable.cc // diff --git a/environments/g4py/source/particles/pyG4DynamicParticle.cc b/environments/g4py/source/particles/pyG4DynamicParticle.cc index e16cd9e2bf..a907cd5c69 100644 --- a/environments/g4py/source/particles/pyG4DynamicParticle.cc +++ b/environments/g4py/source/particles/pyG4DynamicParticle.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4DynamicParticle.cc,v 1.5 2006/08/25 05:52:51 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4DynamicParticle.cc // diff --git a/environments/g4py/source/particles/pyG4ParticleDefinition.cc b/environments/g4py/source/particles/pyG4ParticleDefinition.cc index 1629f2f8dd..dee0310323 100644 --- a/environments/g4py/source/particles/pyG4ParticleDefinition.cc +++ b/environments/g4py/source/particles/pyG4ParticleDefinition.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ParticleDefinition.cc,v 1.5 2006/08/25 06:14:52 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ParticleDefinition.cc // diff --git a/environments/g4py/source/particles/pyG4ParticleList.cc b/environments/g4py/source/particles/pyG4ParticleList.cc index 322c907a71..d9f4557d42 100644 --- a/environments/g4py/source/particles/pyG4ParticleList.cc +++ b/environments/g4py/source/particles/pyG4ParticleList.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ParticleList.cc,v 1.3 2006/06/29 15:34:35 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ParticleList.cc // diff --git a/environments/g4py/source/particles/pyG4ParticleTable.cc b/environments/g4py/source/particles/pyG4ParticleTable.cc index 38f98e976f..ba41f8859d 100644 --- a/environments/g4py/source/particles/pyG4ParticleTable.cc +++ b/environments/g4py/source/particles/pyG4ParticleTable.cc @@ -23,14 +23,15 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4ParticleTable.cc,v 1.4 2006/06/29 15:34:37 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4ParticleTable.cc,v 1.5 2007/11/07 09:12:53 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ParticleTable.cc // // 2005 Q // ==================================================================== #include +#include "G4Version.hh" #include "G4ParticleTable.hh" using namespace boost::python; @@ -71,8 +72,22 @@ G4ParticleDefinition*(G4ParticleTable::*f3_FindAntiParticle)( G4ParticleDefinition*(G4ParticleTable::*f1_FindIon)(G4int, G4int, G4double) = &G4ParticleTable::FindIon; -G4ParticleDefinition*(G4ParticleTable::*f2_FindIon)( -G4int, G4int, G4int, G4int)= &G4ParticleTable::FindIon; +G4ParticleDefinition*(G4ParticleTable::*f2_FindIon) + (G4int, G4int, G4int, G4int)= &G4ParticleTable::FindIon; + +#if G4VERSION_NUMBER >= 910 +G4ParticleDefinition*(G4ParticleTable::*f3_FindIon) + (G4int, G4int, G4int, G4double)= &G4ParticleTable::FindIon; +#endif + +#if G4VERSION_NUMBER >= 910 +// GetIon +G4ParticleDefinition*(G4ParticleTable::*f1_GetIon)(G4int, G4int, G4double) + = &G4ParticleTable::GetIon; + +G4ParticleDefinition*(G4ParticleTable::*f2_GetIon) + (G4int, G4int, G4int, G4double)= &G4ParticleTable::GetIon; +#endif // DumpTable BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_DumpTable, DumpTable, 0, 1); @@ -135,8 +150,19 @@ void export_G4ParticleTable() return_value_policy()) .def("FindIon", f2_FindIon, return_value_policy()) +#if G4VERSION_NUMBER >= 910 + .def("FindIon", f3_FindIon, + return_value_policy()) +#endif +#if G4VERSION_NUMBER >= 910 + .def("GetIon", f1_GetIon, + return_value_policy()) + .def("GetIon", f2_GetIon, + return_value_policy()) +#else .def("GetIon", &G4ParticleTable::GetIon, return_value_policy()) +#endif .def("DumpTable", &G4ParticleTable::DumpTable, f_DumpTable()) //.def("GetIonTable", &G4ParticleTable::GetIonTable, //...) diff --git a/environments/g4py/source/particles/pyG4PrimaryParticle.cc b/environments/g4py/source/particles/pyG4PrimaryParticle.cc index 4b586e980e..b77fe7b724 100644 --- a/environments/g4py/source/particles/pyG4PrimaryParticle.cc +++ b/environments/g4py/source/particles/pyG4PrimaryParticle.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4PrimaryParticle.cc,v 1.4 2006/06/29 15:34:40 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4PrimaryParticle.cc // diff --git a/environments/g4py/source/particles/pyG4PrimaryVertex.cc b/environments/g4py/source/particles/pyG4PrimaryVertex.cc index 2efacf8829..58806b6d37 100644 --- a/environments/g4py/source/particles/pyG4PrimaryVertex.cc +++ b/environments/g4py/source/particles/pyG4PrimaryVertex.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4PrimaryVertex.cc,v 1.4 2006/06/29 15:34:43 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4PrimaryVertex.cc // diff --git a/environments/g4py/source/particles/pymodG4particles.cc b/environments/g4py/source/particles/pymodG4particles.cc index 8f4245d796..9c4792ab67 100644 --- a/environments/g4py/source/particles/pymodG4particles.cc +++ b/environments/g4py/source/particles/pymodG4particles.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4particles.cc,v 1.4 2006/06/29 15:34:46 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4particles.cc // diff --git a/environments/g4py/source/physics_lists/GNUmakefile b/environments/g4py/source/physics_lists/GNUmakefile index a5de71c734..782463c375 100644 --- a/environments/g4py/source/physics_lists/GNUmakefile +++ b/environments/g4py/source/physics_lists/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.1 2006/11/20 08:53:12 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/physics_lists/pyPhysicsLists.cc b/environments/g4py/source/physics_lists/pyPhysicsLists.cc index d411f87f1c..037ecdfa4e 100644 --- a/environments/g4py/source/physics_lists/pyPhysicsLists.cc +++ b/environments/g4py/source/physics_lists/pyPhysicsLists.cc @@ -23,12 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyPhysicsLists.cc,v 1.3 2007/06/07 09:06:43 kmura Exp $ -// $Name: geant4-09-00 $ +// $Id: pyPhysicsLists.cc,v 1.5 2007/11/25 19:40:13 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyPhysicsLists.cc // -// 2005 Q +// 2007 Q // ==================================================================== #include #include "pyG4Version.hh" @@ -82,6 +82,14 @@ #include "QGSP_NQE.hh" #endif +#if G4VERSION_NUMBER >= 910 +#include "FTFP_BERT.hh" +#include "FTF_BIC.hh" +#include "QGSC_BERT.hh" +#include "QGS_BIC.hh" +#include "QGSP_BIC2.hh" +#endif + using namespace boost::python; // ==================================================================== @@ -240,5 +248,23 @@ void export_PhysicsLists() ; #endif +#if G4VERSION_NUMBER >= 910 + class_ > + ("FTFP_BERT", "FTFP_BERT physics list") + ; + class_ > + ("FTF_BIC", "FTFP_BIC physics list") + ; + class_ > + ("QGSC_BERT", "QGSC_BERT physics list") + ; + class_ > + ("QGS_BIC", "QGS_BIC physics list") + ; + class_ > + ("QGSP_BIC2", "QGSP_BIC2 physics list") + ; +#endif + } diff --git a/environments/g4py/source/physics_lists/pymodG4physicslists.cc b/environments/g4py/source/physics_lists/pymodG4physicslists.cc index c3dcd9717f..ebe02b4610 100644 --- a/environments/g4py/source/physics_lists/pymodG4physicslists.cc +++ b/environments/g4py/source/physics_lists/pymodG4physicslists.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4physicslists.cc,v 1.2 2007/05/28 03:11:20 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4physicslists.cc [Geant4Py module] // diff --git a/environments/g4py/source/processes/GNUmakefile b/environments/g4py/source/processes/GNUmakefile index 4496d05c5d..0766c75c80 100644 --- a/environments/g4py/source/processes/GNUmakefile +++ b/environments/g4py/source/processes/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:45 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/processes/pyG4EmCalculator.cc b/environments/g4py/source/processes/pyG4EmCalculator.cc index 300d93295d..f69581ca7a 100644 --- a/environments/g4py/source/processes/pyG4EmCalculator.cc +++ b/environments/g4py/source/processes/pyG4EmCalculator.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4EmCalculator.cc,v 1.6 2007/05/28 03:11:20 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4EmCalculator.cc // diff --git a/environments/g4py/source/processes/pyG4LossTableManager.cc b/environments/g4py/source/processes/pyG4LossTableManager.cc index 5f111bd250..cce21d3ec1 100644 --- a/environments/g4py/source/processes/pyG4LossTableManager.cc +++ b/environments/g4py/source/processes/pyG4LossTableManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4LossTableManager.cc,v 1.4 2007/06/07 08:59:39 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4LossTableManager.cc // diff --git a/environments/g4py/source/processes/pyG4ProcVector.cc b/environments/g4py/source/processes/pyG4ProcVector.cc index 1ffcb05df5..127cc35019 100644 --- a/environments/g4py/source/processes/pyG4ProcVector.cc +++ b/environments/g4py/source/processes/pyG4ProcVector.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ProcVector.cc,v 1.4 2006/06/29 15:34:52 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ProcVector.cc // diff --git a/environments/g4py/source/processes/pyG4ProcessManager.cc b/environments/g4py/source/processes/pyG4ProcessManager.cc index e3667e6f77..67f563688c 100644 --- a/environments/g4py/source/processes/pyG4ProcessManager.cc +++ b/environments/g4py/source/processes/pyG4ProcessManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ProcessManager.cc,v 1.4 2006/06/29 15:34:55 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ProcessManager.cc // diff --git a/environments/g4py/source/processes/pyG4ProcessTable.cc b/environments/g4py/source/processes/pyG4ProcessTable.cc index 82b77db59c..81bc190a61 100644 --- a/environments/g4py/source/processes/pyG4ProcessTable.cc +++ b/environments/g4py/source/processes/pyG4ProcessTable.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ProcessTable.cc,v 1.4 2006/06/29 15:34:58 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ProcessTable.cc // diff --git a/environments/g4py/source/processes/pyG4ProcessType.cc b/environments/g4py/source/processes/pyG4ProcessType.cc index a6a85d1040..462941fdaa 100644 --- a/environments/g4py/source/processes/pyG4ProcessType.cc +++ b/environments/g4py/source/processes/pyG4ProcessType.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ProcessType.cc,v 1.4 2006/06/29 15:35:00 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ProcessTyoe.cc // diff --git a/environments/g4py/source/processes/pyG4ProductionCutsTable.cc b/environments/g4py/source/processes/pyG4ProductionCutsTable.cc index 66ac1becc9..777e46733a 100644 --- a/environments/g4py/source/processes/pyG4ProductionCutsTable.cc +++ b/environments/g4py/source/processes/pyG4ProductionCutsTable.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ProductionCutsTable.cc,v 1.3 2007/05/28 03:11:20 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ProductionCutsTable.cc // diff --git a/environments/g4py/source/processes/pyG4VProcess.cc b/environments/g4py/source/processes/pyG4VProcess.cc index a0a5a8a3d3..e7ffe5f7fa 100644 --- a/environments/g4py/source/processes/pyG4VProcess.cc +++ b/environments/g4py/source/processes/pyG4VProcess.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VProcess.cc,v 1.4 2006/06/29 15:35:03 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VProcess.cc // diff --git a/environments/g4py/source/processes/pymodG4processes.cc b/environments/g4py/source/processes/pymodG4processes.cc index 2a05d5524d..8a6286225f 100644 --- a/environments/g4py/source/processes/pymodG4processes.cc +++ b/environments/g4py/source/processes/pymodG4processes.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4processes.cc,v 1.6 2006/07/12 05:43:18 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4processes.cc // diff --git a/environments/g4py/source/python/GNUmakefile b/environments/g4py/source/python/GNUmakefile index 2b45ea1d57..ec04038649 100644 --- a/environments/g4py/source/python/GNUmakefile +++ b/environments/g4py/source/python/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.3 2006/06/29 01:39:00 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/python/__init__.py b/environments/g4py/source/python/__init__.py index 7a8dc724e4..73a1e5a613 100644 --- a/environments/g4py/source/python/__init__.py +++ b/environments/g4py/source/python/__init__.py @@ -1,4 +1,4 @@ -# $Id: __init__.py,v 1.13 2007/05/28 03:02:05 kmura Exp $ +# $Id: __init__.py,v 1.16 2007/11/13 09:59:46 kmura Exp $ """ # ================================================================== # [Geant4] module package @@ -13,8 +13,8 @@ # ================================================================== # docs # ================================================================== -__version__ = '1.3.0' -__date__ = '25/May/2007' +__version__ = '1.5.0' +__date__ = '16/Nov/2007' __author__ = 'K.Murakami (Koichi.Murakami@kek.jp)' __url__ = 'http://www-geant4.kek.jp/projects/Geant4Py/' diff --git a/environments/g4py/source/run/GNUmakefile b/environments/g4py/source/run/GNUmakefile index a9cb90a214..13d7165f4d 100644 --- a/environments/g4py/source/run/GNUmakefile +++ b/environments/g4py/source/run/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:45 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/run/pyG4Run.cc b/environments/g4py/source/run/pyG4Run.cc index 196e93060c..1549773c44 100644 --- a/environments/g4py/source/run/pyG4Run.cc +++ b/environments/g4py/source/run/pyG4Run.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Run.cc,v 1.4 2006/06/29 15:35:09 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Run.cc // diff --git a/environments/g4py/source/run/pyG4RunManager.cc b/environments/g4py/source/run/pyG4RunManager.cc index e94b5b5aff..8b3900967c 100644 --- a/environments/g4py/source/run/pyG4RunManager.cc +++ b/environments/g4py/source/run/pyG4RunManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4RunManager.cc,v 1.4 2006/06/29 15:35:12 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4RunManager.cc // diff --git a/environments/g4py/source/run/pyG4RunManagerKernel.cc b/environments/g4py/source/run/pyG4RunManagerKernel.cc index e1ff831e35..06d188a874 100644 --- a/environments/g4py/source/run/pyG4RunManagerKernel.cc +++ b/environments/g4py/source/run/pyG4RunManagerKernel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4RunManagerKernel.cc,v 1.3 2006/06/29 15:35:15 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4RunManagerKernel.cc // diff --git a/environments/g4py/source/run/pyG4UserRunAction.cc b/environments/g4py/source/run/pyG4UserRunAction.cc index 3c2761d63f..70ebfaea2f 100644 --- a/environments/g4py/source/run/pyG4UserRunAction.cc +++ b/environments/g4py/source/run/pyG4UserRunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4UserRunAction.cc,v 1.6 2006/06/29 15:35:18 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UserRunAction.cc // diff --git a/environments/g4py/source/run/pyG4VModularPhysicsList.cc b/environments/g4py/source/run/pyG4VModularPhysicsList.cc index a0763e1158..2a36c3a3c0 100644 --- a/environments/g4py/source/run/pyG4VModularPhysicsList.cc +++ b/environments/g4py/source/run/pyG4VModularPhysicsList.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VModularPhysicsList.cc,v 1.3 2006/06/29 15:35:21 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VModularPhysicsList.cc // diff --git a/environments/g4py/source/run/pyG4VPhysicsConstructor.cc b/environments/g4py/source/run/pyG4VPhysicsConstructor.cc index 309cea8907..8e97608db9 100644 --- a/environments/g4py/source/run/pyG4VPhysicsConstructor.cc +++ b/environments/g4py/source/run/pyG4VPhysicsConstructor.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VPhysicsConstructor.cc,v 1.3 2006/06/29 15:35:24 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VPhysicsConstructor.cc // diff --git a/environments/g4py/source/run/pyG4VUserDetectorConstruction.cc b/environments/g4py/source/run/pyG4VUserDetectorConstruction.cc index be2d8c1180..6ac084a828 100644 --- a/environments/g4py/source/run/pyG4VUserDetectorConstruction.cc +++ b/environments/g4py/source/run/pyG4VUserDetectorConstruction.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: pyG4VUserDetectorConstruction.cc,v 1.5 2006/06/29 15:35:27 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: pyG4VUserDetectorConstruction.cc,v 1.6 2007/07/10 07:09:51 kmura Exp $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VUserDetectorConstruction.cc // @@ -45,7 +45,7 @@ struct CB_G4VUserDetectorConstruction : G4VUserDetectorConstruction, wrapper { G4VPhysicalVolume* Construct() { - get_override("Construct")(); + return get_override("Construct")(); } }; diff --git a/environments/g4py/source/run/pyG4VUserPhysicsList.cc b/environments/g4py/source/run/pyG4VUserPhysicsList.cc index 88434a6183..4904eb9231 100644 --- a/environments/g4py/source/run/pyG4VUserPhysicsList.cc +++ b/environments/g4py/source/run/pyG4VUserPhysicsList.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VUserPhysicsList.cc,v 1.5 2006/06/29 15:35:30 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VUserPhysicsList.cc // diff --git a/environments/g4py/source/run/pyG4VUserPrimaryGeneratorAction.cc b/environments/g4py/source/run/pyG4VUserPrimaryGeneratorAction.cc index b710dc1aae..dea0f27d01 100644 --- a/environments/g4py/source/run/pyG4VUserPrimaryGeneratorAction.cc +++ b/environments/g4py/source/run/pyG4VUserPrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VUserPrimaryGeneratorAction.cc,v 1.7 2006/06/29 15:35:33 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VUserPrimaryGeneratorAction.cc // diff --git a/environments/g4py/source/run/pymodG4run.cc b/environments/g4py/source/run/pymodG4run.cc index 5dcbf29aa3..9ab656053e 100644 --- a/environments/g4py/source/run/pymodG4run.cc +++ b/environments/g4py/source/run/pymodG4run.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4run.cc,v 1.4 2006/06/29 15:35:35 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4run.cc [Geant4Py module] // diff --git a/environments/g4py/source/track/GNUmakefile b/environments/g4py/source/track/GNUmakefile index b36ca04cc8..b8bd589ac5 100644 --- a/environments/g4py/source/track/GNUmakefile +++ b/environments/g4py/source/track/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:45 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/track/pyG4Step.cc b/environments/g4py/source/track/pyG4Step.cc index a085542a85..3b644ecdcc 100644 --- a/environments/g4py/source/track/pyG4Step.cc +++ b/environments/g4py/source/track/pyG4Step.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Step.cc,v 1.4 2006/06/29 15:35:38 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Step.cc // diff --git a/environments/g4py/source/track/pyG4StepPoint.cc b/environments/g4py/source/track/pyG4StepPoint.cc index b907aba01d..eca1c92212 100644 --- a/environments/g4py/source/track/pyG4StepPoint.cc +++ b/environments/g4py/source/track/pyG4StepPoint.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4StepPoint.cc,v 1.4 2006/06/29 15:35:40 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4StepPoint.cc // diff --git a/environments/g4py/source/track/pyG4StepStatus.cc b/environments/g4py/source/track/pyG4StepStatus.cc index 1a71596ea5..54b8c0b009 100644 --- a/environments/g4py/source/track/pyG4StepStatus.cc +++ b/environments/g4py/source/track/pyG4StepStatus.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4StepStatus.cc,v 1.4 2006/06/29 15:35:42 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4StepStatus.cc // diff --git a/environments/g4py/source/track/pyG4Track.cc b/environments/g4py/source/track/pyG4Track.cc index 5082919ccd..6684bd4f71 100644 --- a/environments/g4py/source/track/pyG4Track.cc +++ b/environments/g4py/source/track/pyG4Track.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Track.cc,v 1.5 2006/06/29 15:35:46 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Track.cc // diff --git a/environments/g4py/source/track/pyG4TrackStatus.cc b/environments/g4py/source/track/pyG4TrackStatus.cc index 599dbc1f06..7f2da781e4 100644 --- a/environments/g4py/source/track/pyG4TrackStatus.cc +++ b/environments/g4py/source/track/pyG4TrackStatus.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4TrackStatus.cc,v 1.4 2006/06/29 15:35:48 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4TrackStatus.cc // diff --git a/environments/g4py/source/track/pymodG4track.cc b/environments/g4py/source/track/pymodG4track.cc index 23aa70155a..6a7db294f7 100644 --- a/environments/g4py/source/track/pymodG4track.cc +++ b/environments/g4py/source/track/pymodG4track.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4track.cc,v 1.4 2006/06/29 15:35:50 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4track.cc [Geant4Py module] // diff --git a/environments/g4py/source/tracking/GNUmakefile b/environments/g4py/source/tracking/GNUmakefile index 209352e5da..ccd0115841 100644 --- a/environments/g4py/source/tracking/GNUmakefile +++ b/environments/g4py/source/tracking/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:45 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/tracking/pyG4TrackingManager.cc b/environments/g4py/source/tracking/pyG4TrackingManager.cc index 6573acc396..b376c81bd8 100644 --- a/environments/g4py/source/tracking/pyG4TrackingManager.cc +++ b/environments/g4py/source/tracking/pyG4TrackingManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4TrackingManager.cc,v 1.4 2006/06/29 15:35:53 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4TrackingManager.cc // diff --git a/environments/g4py/source/tracking/pyG4UserSteppingAction.cc b/environments/g4py/source/tracking/pyG4UserSteppingAction.cc index ad26ed6271..3961eabbf4 100644 --- a/environments/g4py/source/tracking/pyG4UserSteppingAction.cc +++ b/environments/g4py/source/tracking/pyG4UserSteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $ID$ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UserSteppingAction.cc // diff --git a/environments/g4py/source/tracking/pyG4UserTrackingAction.cc b/environments/g4py/source/tracking/pyG4UserTrackingAction.cc index 2b9708ae54..812034a21c 100644 --- a/environments/g4py/source/tracking/pyG4UserTrackingAction.cc +++ b/environments/g4py/source/tracking/pyG4UserTrackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $ID$ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4UserTrackingAction.cc // diff --git a/environments/g4py/source/tracking/pymodG4tracking.cc b/environments/g4py/source/tracking/pymodG4tracking.cc index 37fc876584..22b94025c3 100644 --- a/environments/g4py/source/tracking/pymodG4tracking.cc +++ b/environments/g4py/source/tracking/pymodG4tracking.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4tracking.cc,v 1.4 2006/06/29 15:36:02 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4tracking.cc [Geant4Py module] // diff --git a/environments/g4py/source/version/G4Version_7.0.hh b/environments/g4py/source/version/G4Version_7.0.hh index 5caca02efa..4b0cfa28a1 100644 --- a/environments/g4py/source/version/G4Version_7.0.hh +++ b/environments/g4py/source/version/G4Version_7.0.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4Version_7.0.hh,v 1.4 2006/06/29 15:36:05 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // G4Version_7.0.hh // @@ -38,14 +38,14 @@ #endif #ifndef G4VERSION_TAG -#define G4VERSION_TAG "$Name: geant4-09-00 $" +#define G4VERSION_TAG "$Name: geant4-09-01 $" #endif // as variables #include "G4String.hh" -static const G4String G4Version = "$Name: geant4-09-00 $"; +static const G4String G4Version = "$Name: geant4-09-01 $"; static const G4String G4Date = "(17-December-2004)"; #endif diff --git a/environments/g4py/source/version/G4Version_7.0.p01.hh b/environments/g4py/source/version/G4Version_7.0.p01.hh index 39ffa3a2bd..6cce025b09 100644 --- a/environments/g4py/source/version/G4Version_7.0.p01.hh +++ b/environments/g4py/source/version/G4Version_7.0.p01.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4Version_7.0.p01.hh,v 1.4 2006/06/29 15:36:08 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // G4Version_7.0.p01.hh // @@ -38,14 +38,14 @@ #endif #ifndef G4VERSION_TAG -#define G4VERSION_TAG "$Name: geant4-09-00 $" +#define G4VERSION_TAG "$Name: geant4-09-01 $" #endif // as variables #include "G4String.hh" -static const G4String G4Version = "$Name: geant4-09-00 $"; +static const G4String G4Version = "$Name: geant4-09-01 $"; static const G4String G4Date = "(23-February-2005)"; #endif diff --git a/environments/g4py/source/version/G4Version_7.1.hh b/environments/g4py/source/version/G4Version_7.1.hh index ae338d627d..a6a58da2cd 100644 --- a/environments/g4py/source/version/G4Version_7.1.hh +++ b/environments/g4py/source/version/G4Version_7.1.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4Version_7.1.hh,v 1.4 2006/06/29 15:36:11 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // G4Version_7.1.hh // @@ -38,14 +38,14 @@ #endif #ifndef G4VERSION_TAG -#define G4VERSION_TAG "$Name: geant4-09-00 $" +#define G4VERSION_TAG "$Name: geant4-09-01 $" #endif // as variables #include "G4String.hh" -static const G4String G4Version = "$Name: geant4-09-00 $"; +static const G4String G4Version = "$Name: geant4-09-01 $"; static const G4String G4Date = "(30-June-2005)"; #endif diff --git a/environments/g4py/source/version/G4Version_7.1.p01.hh b/environments/g4py/source/version/G4Version_7.1.p01.hh index 35894c363a..6d39c9afde 100644 --- a/environments/g4py/source/version/G4Version_7.1.p01.hh +++ b/environments/g4py/source/version/G4Version_7.1.p01.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4Version_7.1.p01.hh,v 1.4 2006/06/29 15:36:14 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // G4Version_7.1.p01hh // @@ -38,14 +38,14 @@ #endif #ifndef G4VERSION_TAG -#define G4VERSION_TAG "$Name: geant4-09-00 $" +#define G4VERSION_TAG "$Name: geant4-09-01 $" #endif // as variables #include "G4String.hh" -static const G4String G4Version = "$Name: geant4-09-00 $"; +static const G4String G4Version = "$Name: geant4-09-01 $"; static const G4String G4Date = "(25-Oct-2005)"; #endif diff --git a/environments/g4py/source/version/GNUmakefile b/environments/g4py/source/version/GNUmakefile index 76b8474584..99a1503181 100644 --- a/environments/g4py/source/version/GNUmakefile +++ b/environments/g4py/source/version/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:45 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/version/pyG4Version.hh b/environments/g4py/source/version/pyG4Version.hh index f5f2f1dc07..9e27168a49 100644 --- a/environments/g4py/source/version/pyG4Version.hh +++ b/environments/g4py/source/version/pyG4Version.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4Version.hh,v 1.4 2006/06/29 15:36:17 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4Version.hh // diff --git a/environments/g4py/source/visualization/GNUmakefile b/environments/g4py/source/visualization/GNUmakefile index 24d274d944..4e371094f2 100644 --- a/environments/g4py/source/visualization/GNUmakefile +++ b/environments/g4py/source/visualization/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 08:09:45 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/source/visualization/pyG4ASCIITree.cc b/environments/g4py/source/visualization/pyG4ASCIITree.cc index fc43d59536..d48a27db13 100644 --- a/environments/g4py/source/visualization/pyG4ASCIITree.cc +++ b/environments/g4py/source/visualization/pyG4ASCIITree.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ASCIITree.cc,v 1.5 2006/06/29 15:36:20 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4ASCIITree.cc // diff --git a/environments/g4py/source/visualization/pyG4DAWNFILE.cc b/environments/g4py/source/visualization/pyG4DAWNFILE.cc index 2e631c9cef..e663eec381 100644 --- a/environments/g4py/source/visualization/pyG4DAWNFILE.cc +++ b/environments/g4py/source/visualization/pyG4DAWNFILE.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4DAWNFILE.cc,v 1.5 2006/06/29 15:36:23 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4DAWNFILE.cc // diff --git a/environments/g4py/source/visualization/pyG4HepRep.cc b/environments/g4py/source/visualization/pyG4HepRep.cc index a6fe89600d..310095d999 100644 --- a/environments/g4py/source/visualization/pyG4HepRep.cc +++ b/environments/g4py/source/visualization/pyG4HepRep.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4HepRep.cc,v 1.5 2006/06/29 15:36:25 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4HepRep.cc // diff --git a/environments/g4py/source/visualization/pyG4HepRepFile.cc b/environments/g4py/source/visualization/pyG4HepRepFile.cc index ea5bf6b41c..43e11c66b9 100644 --- a/environments/g4py/source/visualization/pyG4HepRepFile.cc +++ b/environments/g4py/source/visualization/pyG4HepRepFile.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4HepRepFile.cc,v 1.5 2006/06/29 15:36:27 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4HepRepFile.cc // diff --git a/environments/g4py/source/visualization/pyG4OpenGLImmediateX.cc b/environments/g4py/source/visualization/pyG4OpenGLImmediateX.cc index ecc23e395e..7d5c4fc6cc 100644 --- a/environments/g4py/source/visualization/pyG4OpenGLImmediateX.cc +++ b/environments/g4py/source/visualization/pyG4OpenGLImmediateX.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4OpenGLImmediateX.cc,v 1.5 2006/06/29 15:36:29 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4OpenGLImmediateX.cc // diff --git a/environments/g4py/source/visualization/pyG4OpenGLImmediateXm.cc b/environments/g4py/source/visualization/pyG4OpenGLImmediateXm.cc index 5a85b073ec..fccbc980be 100644 --- a/environments/g4py/source/visualization/pyG4OpenGLImmediateXm.cc +++ b/environments/g4py/source/visualization/pyG4OpenGLImmediateXm.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4OpenGLImmediateXm.cc,v 1.5 2006/06/29 15:36:32 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4OpenGLImmediateXm.cc // diff --git a/environments/g4py/source/visualization/pyG4OpenGLStoredX.cc b/environments/g4py/source/visualization/pyG4OpenGLStoredX.cc index 3bb44b1f36..652a5a6a6d 100644 --- a/environments/g4py/source/visualization/pyG4OpenGLStoredX.cc +++ b/environments/g4py/source/visualization/pyG4OpenGLStoredX.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4OpenGLStoredX.cc,v 1.5 2006/06/29 15:36:35 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4OpenGLStoredX.cc // diff --git a/environments/g4py/source/visualization/pyG4OpenGLStoredXm.cc b/environments/g4py/source/visualization/pyG4OpenGLStoredXm.cc index d213f16768..813e116b31 100644 --- a/environments/g4py/source/visualization/pyG4OpenGLStoredXm.cc +++ b/environments/g4py/source/visualization/pyG4OpenGLStoredXm.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4OpenGLStoredXm.cc,v 1.5 2006/06/29 15:36:38 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4OpenGLStoredXm.cc // diff --git a/environments/g4py/source/visualization/pyG4RayTracer.cc b/environments/g4py/source/visualization/pyG4RayTracer.cc index 6582ae5b98..00ffa72fc9 100644 --- a/environments/g4py/source/visualization/pyG4RayTracer.cc +++ b/environments/g4py/source/visualization/pyG4RayTracer.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4RayTracer.cc,v 1.5 2006/06/29 15:36:41 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4RayTracer.cc // diff --git a/environments/g4py/source/visualization/pyG4RayTracerX.cc b/environments/g4py/source/visualization/pyG4RayTracerX.cc index eeb72cf2bd..5bee667d13 100644 --- a/environments/g4py/source/visualization/pyG4RayTracerX.cc +++ b/environments/g4py/source/visualization/pyG4RayTracerX.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4RayTracerX.cc,v 1.5 2006/06/29 15:36:44 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4RayTracerX.cc // diff --git a/environments/g4py/source/visualization/pyG4VGraphicsSystem.cc b/environments/g4py/source/visualization/pyG4VGraphicsSystem.cc index f5858e5a36..10e3fced7a 100644 --- a/environments/g4py/source/visualization/pyG4VGraphicsSystem.cc +++ b/environments/g4py/source/visualization/pyG4VGraphicsSystem.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VGraphicsSystem.cc,v 1.5 2006/06/29 15:36:47 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VGraphicsSystem.cc // diff --git a/environments/g4py/source/visualization/pyG4VRML1File.cc b/environments/g4py/source/visualization/pyG4VRML1File.cc index 147caae73f..d5db5ef7bb 100644 --- a/environments/g4py/source/visualization/pyG4VRML1File.cc +++ b/environments/g4py/source/visualization/pyG4VRML1File.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VRML1File.cc,v 1.5 2006/06/29 15:36:50 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VRML1File.cc // diff --git a/environments/g4py/source/visualization/pyG4VRML2File.cc b/environments/g4py/source/visualization/pyG4VRML2File.cc index 14fceca7ab..258aa696b0 100644 --- a/environments/g4py/source/visualization/pyG4VRML2File.cc +++ b/environments/g4py/source/visualization/pyG4VRML2File.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VRML2File.cc,v 1.5 2006/06/29 15:36:53 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VRML2File.cc // diff --git a/environments/g4py/source/visualization/pyG4VisManager.cc b/environments/g4py/source/visualization/pyG4VisManager.cc index 91b4a8b242..7cc1f86ac4 100644 --- a/environments/g4py/source/visualization/pyG4VisManager.cc +++ b/environments/g4py/source/visualization/pyG4VisManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4VisManager.cc,v 1.6 2006/12/01 02:17:54 kmura Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pyG4VisManager.cc // diff --git a/environments/g4py/source/visualization/pymodG4visualization.cc b/environments/g4py/source/visualization/pymodG4visualization.cc index 8f770862db..c43bf61940 100644 --- a/environments/g4py/source/visualization/pymodG4visualization.cc +++ b/environments/g4py/source/visualization/pymodG4visualization.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4visualization.cc,v 1.4 2006/06/29 15:36:59 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // pymodG4visualization.cc [Geant4Py module] // diff --git a/environments/g4py/tests/GNUmakefile b/environments/g4py/tests/GNUmakefile index 913054d793..8fe894bbee 100644 --- a/environments/g4py/tests/GNUmakefile +++ b/environments/g4py/tests/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.2 2006/04/25 07:54:28 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/tests/History b/environments/g4py/tests/History index 6efcc7f154..e2ec71a14d 100644 --- a/environments/g4py/tests/History +++ b/environments/g4py/tests/History @@ -1,4 +1,4 @@ -$Id: History,v 1.3 2006/08/08 05:10:09 kmura Exp $ +$Id: History,v 1.5 2007/08/07 03:37:36 kmura Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,13 @@ A set of tests for python wrapping of C++ elements. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Aug.07, 2007 K.Murakami +- gtest06 is added. +- gtest07 is added. + +Jul.10, 2007 K.Murakami +- gtest05 is added. + Aug.07, 2006 K.Murakami - gtest04 is added. diff --git a/environments/g4py/tests/README b/environments/g4py/tests/README index 849ae56ad1..70d5890fa7 100644 --- a/environments/g4py/tests/README +++ b/environments/g4py/tests/README @@ -1,4 +1,4 @@ -$Id: README,v 1.3 2006/08/08 05:10:09 kmura Exp $ +$Id: README,v 1.5 2007/08/07 03:37:36 kmura Exp $ ------------------------------------------------------------------- ========================================================= @@ -35,4 +35,6 @@ gtest01 ## user application (K.M) gtest02 ## test for using site-module packages (K.M) gtest03 ## test for EZsim package (K.M) gtest04 ## test for getting command tree and command information (K.M) - +gtest05 ## test for constructing CSG geometries in Python (K.M) +gtest06 ## test for constructing/visualizing boolean geoemtries (K.M) +gtest07 ## test for checking overlapped geometries (K.M) diff --git a/environments/g4py/tests/gtest01/g4lib/GNUmakefile b/environments/g4py/tests/gtest01/g4lib/GNUmakefile index 8545a19f55..cd908006b8 100644 --- a/environments/g4py/tests/gtest01/g4lib/GNUmakefile +++ b/environments/g4py/tests/gtest01/g4lib/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.1 2006/05/11 03:00:08 kmura Exp $ -# $Name: geant4-09-00 $ +# $Name: geant4-09-01 $ # =========================================================== # Makefile for building Geant4Py modules # =========================================================== diff --git a/environments/g4py/tests/gtest01/g4lib/Particles.cc b/environments/g4py/tests/gtest01/g4lib/Particles.cc index 2a21da63cf..a7be3e3fa7 100644 --- a/environments/g4py/tests/gtest01/g4lib/Particles.cc +++ b/environments/g4py/tests/gtest01/g4lib/Particles.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: Particles.cc,v 1.3 2006/06/29 15:37:02 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // Particles.cc // diff --git a/environments/g4py/tests/gtest01/g4lib/PhysicsListEMstd.cc b/environments/g4py/tests/gtest01/g4lib/PhysicsListEMstd.cc index 26e87f6536..dfd6dca72c 100644 --- a/environments/g4py/tests/gtest01/g4lib/PhysicsListEMstd.cc +++ b/environments/g4py/tests/gtest01/g4lib/PhysicsListEMstd.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListEMstd.cc,v 1.3 2006/06/29 15:37:08 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // PhysicsListEMstd.cc // diff --git a/environments/g4py/tests/gtest01/g4lib/QDetectorConstruction.cc b/environments/g4py/tests/gtest01/g4lib/QDetectorConstruction.cc index b317f92d66..07f0afc11a 100644 --- a/environments/g4py/tests/gtest01/g4lib/QDetectorConstruction.cc +++ b/environments/g4py/tests/gtest01/g4lib/QDetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QDetectorConstruction.cc,v 1.3 2006/06/29 15:37:14 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // QDetectorConstruction.cc // diff --git a/environments/g4py/tests/gtest01/g4lib/QDetectorConstruction.hh b/environments/g4py/tests/gtest01/g4lib/QDetectorConstruction.hh index 8a81b30254..96344e2352 100644 --- a/environments/g4py/tests/gtest01/g4lib/QDetectorConstruction.hh +++ b/environments/g4py/tests/gtest01/g4lib/QDetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QDetectorConstruction.hh,v 1.3 2006/06/29 15:37:17 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // QDetectorConstruction.hh // diff --git a/environments/g4py/tests/gtest01/g4lib/QEventAction.cc b/environments/g4py/tests/gtest01/g4lib/QEventAction.cc index b68c1b06ed..0d6e576ba1 100644 --- a/environments/g4py/tests/gtest01/g4lib/QEventAction.cc +++ b/environments/g4py/tests/gtest01/g4lib/QEventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QEventAction.cc,v 1.3 2006/06/29 15:37:19 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // QEventAction.cc // diff --git a/environments/g4py/tests/gtest01/g4lib/QEventAction.hh b/environments/g4py/tests/gtest01/g4lib/QEventAction.hh index 826d6e52df..4f4e6930e0 100644 --- a/environments/g4py/tests/gtest01/g4lib/QEventAction.hh +++ b/environments/g4py/tests/gtest01/g4lib/QEventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QEventAction.hh,v 1.3 2006/06/29 15:37:22 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // QEventAction.hh // diff --git a/environments/g4py/tests/gtest01/g4lib/QMaterials.cc b/environments/g4py/tests/gtest01/g4lib/QMaterials.cc index 13638c96cd..5000631cde 100644 --- a/environments/g4py/tests/gtest01/g4lib/QMaterials.cc +++ b/environments/g4py/tests/gtest01/g4lib/QMaterials.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QMaterials.cc,v 1.3 2006/06/29 15:37:25 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // QMaterials.cc // diff --git a/environments/g4py/tests/gtest01/g4lib/QMaterials.hh b/environments/g4py/tests/gtest01/g4lib/QMaterials.hh index c0ab2b681d..46d7a07e13 100644 --- a/environments/g4py/tests/gtest01/g4lib/QMaterials.hh +++ b/environments/g4py/tests/gtest01/g4lib/QMaterials.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QMaterials.hh,v 1.3 2006/06/29 15:37:28 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // QMaterials.hh // diff --git a/environments/g4py/tests/gtest01/g4lib/QPhysicsList.cc b/environments/g4py/tests/gtest01/g4lib/QPhysicsList.cc index 7a4503e814..79b0855cb2 100644 --- a/environments/g4py/tests/gtest01/g4lib/QPhysicsList.cc +++ b/environments/g4py/tests/gtest01/g4lib/QPhysicsList.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QPhysicsList.cc,v 1.3 2006/06/29 15:37:31 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // QPhysicsList.cc // diff --git a/environments/g4py/tests/gtest01/g4lib/QPhysicsList.hh b/environments/g4py/tests/gtest01/g4lib/QPhysicsList.hh index 29c64f68b8..1633cd7685 100644 --- a/environments/g4py/tests/gtest01/g4lib/QPhysicsList.hh +++ b/environments/g4py/tests/gtest01/g4lib/QPhysicsList.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QPhysicsList.hh,v 1.3 2006/06/29 15:37:34 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // QPhysicsList.hh // diff --git a/environments/g4py/tests/gtest01/g4lib/QPrimaryGeneratorAction.cc b/environments/g4py/tests/gtest01/g4lib/QPrimaryGeneratorAction.cc index 9252f8a06d..959c1e44bc 100644 --- a/environments/g4py/tests/gtest01/g4lib/QPrimaryGeneratorAction.cc +++ b/environments/g4py/tests/gtest01/g4lib/QPrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QPrimaryGeneratorAction.cc,v 1.3 2006/06/29 15:37:37 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // QPrimaryGeneratorAction.cc // diff --git a/environments/g4py/tests/gtest01/g4lib/QPrimaryGeneratorAction.hh b/environments/g4py/tests/gtest01/g4lib/QPrimaryGeneratorAction.hh index 34f9e63af6..14ea20c1c8 100644 --- a/environments/g4py/tests/gtest01/g4lib/QPrimaryGeneratorAction.hh +++ b/environments/g4py/tests/gtest01/g4lib/QPrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QPrimaryGeneratorAction.hh,v 1.3 2006/06/29 15:37:40 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // QPrimaryGeneratorAction.hh // diff --git a/environments/g4py/tests/gtest01/g4lib/gtest01.cc b/environments/g4py/tests/gtest01/g4lib/gtest01.cc index e57aef26e2..8b5c7f1fc6 100644 --- a/environments/g4py/tests/gtest01/g4lib/gtest01.cc +++ b/environments/g4py/tests/gtest01/g4lib/gtest01.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: gtest01.cc,v 1.3 2006/06/29 15:37:43 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // gtest01.cc // diff --git a/environments/g4py/tests/gtest04/test.py b/environments/g4py/tests/gtest04/test.py new file mode 100755 index 0000000000..b895ba7a90 --- /dev/null +++ b/environments/g4py/tests/gtest04/test.py @@ -0,0 +1,36 @@ +#!/usr/bin/python +# ================================================================== +# python script for Geant4Py test +# +# gtest04 +# - test for command tree and command information +# ================================================================== +from Geant4 import * + +def DumpTree(atree): + print "@@", atree.GetPathName(), "::", atree.GetTitle() + ntree= atree.GetTreeEntry() + ncommand= atree.GetCommandEntry() + + for i in range(1, ncommand+1): + icommand= atree.GetCommand(i) + print " **", icommand.GetCommandPath() + print " ", icommand.GetTitle() + x= icommand.GetStateList() + + nparameter= icommand.GetParameterEntries() + for j in range(0, nparameter): + iparam= icommand.GetParameter(j) + print " +", iparam.GetParameterName(), iparam.GetParameterType() + + for i in range(1, ntree+1): + itree= atree.GetTree(i) + DumpTree(itree) + +# ================================================================== +# main +# ================================================================== +root_tree= gUImanager.GetTree() + +DumpTree(root_tree) + diff --git a/environments/g4py/tests/gtest05/test.py b/environments/g4py/tests/gtest05/test.py new file mode 100755 index 0000000000..aae54ead7f --- /dev/null +++ b/environments/g4py/tests/gtest05/test.py @@ -0,0 +1,310 @@ +#!/usr/bin/python +# ================================================================== +# python script for Geant4Py test +# +# gtest05 +# - test for CSG geometry construction in Python +# ================================================================== +from Geant4 import * +import ExN01pl, ParticleGun +import os, math + +# ================================================================== +# user actions in python +# ================================================================== +class MyDetectorConstruction(G4VUserDetectorConstruction): + "My Detector Construction" + + def __init__(self): + G4VUserDetectorConstruction.__init__(self) + self.air= gNistManager.FindOrBuildMaterial("G4_AIR") + self.lv_object= None + self.world= self.ConstructWorld() + + self.va_red= G4VisAttributes(G4Color(1.,0.,0.)) + self.va_cyan= G4VisAttributes(G4Color(0.,1.,1.)) + self.va_green= G4VisAttributes(G4Color(0.,1.,0.)) + self.va_blue= G4VisAttributes(G4Color(0.,0.,1.)) + self.va_magenta= G4VisAttributes(G4Color(1.,0.,1.)) + + # ----------------------------------------------------------------- + def ConstructWorld(self): + # Python has automatic garbage collection system. + # Geometry objects must be defined as GLOBAL not to be deleted. + global sld_world, lv_world, pv_world, va_world + + sld_world= G4Box("world", 1.*m, 1.*m, 1.*m) + lv_world= G4LogicalVolume(sld_world, self.air, "world") + pv_world= G4PVPlacement(G4Transform3D(), lv_world, "world", + None, False, 0) + + va_world= G4VisAttributes() + va_world.SetVisibility(False) + lv_world.SetVisAttributes(va_world) + + # solid object (dummy) + global sld_sld, lv_sld, pv_sld + sld_sld= G4Box("dummy", 10.*cm, 10.*cm, 10.*cm) + self.lv_object= lv_sld= G4LogicalVolume(sld_sld, self.air, "dummy") + pv_sld= G4PVPlacement(None, G4ThreeVector(), "dummy", lv_sld, + pv_world, False, 0) + + return pv_world + + # ----------------------------------------------------------------- + def ConstructBox(self): + global sld_box + sld_box= G4Box("box", 30.*cm, 40.*cm, 60.*cm) + self.lv_object.SetSolid(sld_box) + self.lv_object.SetVisAttributes(self.va_red) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructTubs(self): + global sld_tubs + sld_tubs= G4Tubs("tubs", 10.*cm, 15.*cm, 20.*cm, 0., pi) + self.lv_object.SetSolid(sld_tubs) + self.lv_object.SetVisAttributes(self.va_cyan) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructCons(self): + global sld_cons + sld_cons= G4Cons("cons", 5.*cm, 10.*cm, 20.*cm, 25.*cm, + 40.*cm, 0., 4./3.*pi) + self.lv_object.SetSolid(sld_cons) + self.lv_object.SetVisAttributes(self.va_green) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructPara(self): + global sld_para + sld_para= G4Para("para", 30.*cm, 40.*cm, 60.*cm, pi/4., pi/8., 0.) + self.lv_object.SetSolid(sld_para) + self.lv_object.SetVisAttributes(self.va_blue) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructTrd(self): + global sld_trd + sld_trd= G4Trd("trd", 30.*cm, 10.*cm, 40.*cm, 15.*cm, 60.*cm) + self.lv_object.SetSolid(sld_trd) + self.lv_object.SetVisAttributes(self.va_blue) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructTrap(self): + global sld_trap + sld_trap= G4Trap("trap", 60.*cm, 20.*degree, 5.*degree, + 40.*cm, 30.*cm, 40.*cm, 10.*degree, + 16.*cm, 10*cm, 14.*cm, 10.*deg) + self.lv_object.SetSolid(sld_trap) + self.lv_object.SetVisAttributes(self.va_green) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructSphere(self): + global sld_sphere + sld_sphere= G4Sphere("sphere", 100.*cm, 120.*cm, 0., 180.*deg, + 0., 180.*deg) + self.lv_object.SetSolid(sld_sphere) + self.lv_object.SetVisAttributes(self.va_cyan) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructOrb(self): + global sld_orb + sld_orb= G4Orb("orb", 100.*cm) + self.lv_object.SetSolid(sld_orb) + self.lv_object.SetVisAttributes(self.va_red) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructTorus(self): + global sld_torus + sld_torus= G4Torus("torus", 40.*cm, 60.*cm, 200.*cm, 0., 90.*deg) + self.lv_object.SetSolid(sld_torus) + self.lv_object.SetVisAttributes(self.va_magenta) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructPolycone(self): + zvec= G4doubleVector() + rinvec= G4doubleVector() + routvec= G4doubleVector() + + zvec[:]= [ 5.*cm, 7.*cm, 9.*cm, 11.*cm, 25.*cm, 27.*cm, 29.*cm, + 31.*cm, 35.*cm ] + rinvec[:]= [0.,0.,0.,0.,0.,0.,0.,0.,0.] + routvec[:]= [ 0., 10.*cm, 10.*cm, 5.*cm, 5.*cm, 10.*cm, + 10.*cm, 2.*cm, 2.*cm ] + + global sld_pcon + sld_pcon= CreatePolycone("pcon", 0., twopi, 9, zvec, rinvec,routvec) + self.lv_object.SetSolid(sld_pcon) + self.lv_object.SetVisAttributes(self.va_cyan) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructPolyhedra(self): + zvec= G4doubleVector() + rinvec= G4doubleVector() + routvec= G4doubleVector() + + zvec[:]= [ 0., 5.*cm, 8.*cm, 13.*cm, 30.*cm, 32.*cm, 35.*cm ] + rinvec[:]= [0.,0.,0.,0.,0.,0.,0. ] + routvec[:]= [ 0., 15.*cm, 15.*cm, 4.*cm, 4.*cm, 10.*cm, 10.*cm ] + + global sld_pgon + sld_pgon= CreatePolyhedra("pgon", 0., twopi, 5, 7, zvec, rinvec,routvec) + self.lv_object.SetSolid(sld_pgon) + self.lv_object.SetVisAttributes(self.va_green) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructEllipticalTube(self): + global sld_et + sld_et= G4EllipticalTube("ellipticaltube", 5.*cm, 10.*cm, 20.*cm) + self.lv_object.SetSolid(sld_et) + self.lv_object.SetVisAttributes(self.va_cyan) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructEllipsoid(self): + global sld_es + sld_es= G4Ellipsoid("ellipsoid", 10.*cm, 20.*cm, 50.*cm, + -10.*cm, 40.*cm) + self.lv_object.SetSolid(sld_es) + self.lv_object.SetVisAttributes(self.va_red) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructEllipticalCone(self): + global sld_ec + sld_ec= G4EllipticalCone("ellipticalcone", 30.*cm, 60.*cm, + 50.*cm, 25.*cm) + self.lv_object.SetSolid(sld_ec) + self.lv_object.SetVisAttributes(self.va_magenta) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructHype(self): + global sld_hype + sld_hype= G4Hype("hype", 20.*cm, 30.*cm, 0.7, 0.7, 50.*cm) + self.lv_object.SetSolid(sld_hype) + self.lv_object.SetVisAttributes(self.va_blue) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructTet(self): + global sld_tet + p1= G4ThreeVector(0., 0., math.sqrt(3.)*cm) + p2= G4ThreeVector(0., 2*math.sqrt(2./3.)*cm, -1./math.sqrt(3)*cm) + p3= G4ThreeVector(-math.sqrt(2.)*cm, -math.sqrt(2./3.)*cm, + -1./math.sqrt(3)*cm) + p4= G4ThreeVector(math.sqrt(2)*cm, -math.sqrt(2./3.)*cm, + -1./math.sqrt(3)*cm) + + sld_tet= G4Tet("tet", 20.*p1, 20.*p2, 20.*p3, 20.*p4) + self.lv_object.SetSolid(sld_tet) + self.lv_object.SetVisAttributes(self.va_green) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructTwistedBox(self): + global sld_twb + sld_twb= G4TwistedBox("twistedbox", 30.*deg, 30.*cm, 40.*cm, 60.*cm) + self.lv_object.SetSolid(sld_twb) + self.lv_object.SetVisAttributes(self.va_cyan) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructTwistedTrap(self): + global sld_twtrp + sld_twtrp= G4TwistedTrap("twistedtrap", 30.*deg, + 60.*cm, 20.*deg, 5.*deg, + 40.*cm, 30.*cm, 40.*cm, + 16.*cm, 10.*cm, 14.*cm, 10.*deg) + self.lv_object.SetSolid(sld_twtrp) + self.lv_object.SetVisAttributes(self.va_blue) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructTwistedTrd(self): + global sld_twtrd + sld_twtrd= G4TwistedTrd("twistedtrd", 30.*cm, 10.*cm, + 40.*cm, 15.*cm, 60.*cm, 30.*deg) + self.lv_object.SetSolid(sld_twtrd) + self.lv_object.SetVisAttributes(self.va_green) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructTwistedTubs(self): + global sld_twt + sld_twt= G4TwistedTubs("twistedtube", 60.*deg, + 10.*cm, 15.*cm, 20.*cm, 90.*deg) + self.lv_object.SetSolid(sld_twt) + self.lv_object.SetVisAttributes(self.va_magenta) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def Construct(self): # return the world volume + return self.world + +# ================================================================== +# main +# ================================================================== +os.environ["G4VRML_DEST_DIR"]= "." +os.environ["G4VRMLFILE_MAX_FILE_NUM"]= "1" +os.environ["G4VRMLFILE_VIEWER"]= "echo" + +# 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 VRML2FILE") +gApplyUICommand("/vis/scene/create") +gApplyUICommand("/vis/scene/add/volume") +gApplyUICommand("/vis/sceneHandler/attach") +gApplyUICommand("/vis/scene/add/axes 0. 0. 0. 10. cm") + +# create a vrml file for each solid type +f_list= ( + ("g4box", myDC.ConstructBox), + ("g4tubs", myDC.ConstructTubs), + ("g4cons", myDC.ConstructCons), + ("g4para", myDC.ConstructPara), + ("g4trd", myDC.ConstructTrd), + ("g4trap", myDC.ConstructTrap), + ("g4sphere", myDC.ConstructSphere), + ("g4orb", myDC.ConstructOrb), + ("g4torus", myDC.ConstructTorus), + ("g4polycone", myDC.ConstructPolycone), + ("g4polyhedra", myDC.ConstructPolyhedra), + ("g4ellipticaltube", myDC.ConstructEllipticalTube), + ("g4ellipsoid", myDC.ConstructEllipsoid), + ("g4ellipticalcone", myDC.ConstructEllipticalCone), + ("g4hype", myDC.ConstructHype), + ("g4tet", myDC.ConstructTet), + ("g4twistedbox", myDC.ConstructTwistedBox), + ("g4twistedtrap", myDC.ConstructTwistedTrap), + ("g4twistedtrd", myDC.ConstructTwistedTrd), + ("g4twistedtubs", myDC.ConstructTwistedTubs) + ) + +for s,f in f_list: + f.__call__() + gRunManager.BeamOn(1) + fname= "%s.wrl" % (s) + os.rename("g4_00.wrl", fname) + diff --git a/environments/g4py/tests/gtest05/vrml/g4box.wrl b/environments/g4py/tests/gtest05/vrml/g4box.wrl new file mode 100644 index 0000000000..83932f5902 --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4box.wrl @@ -0,0 +1,102 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + -300 -400 -600, + 300 -400 -600, + 300 400 -600, + -300 400 -600, + -300 -400 600, + 300 -400 600, + 300 400 600, + -300 400 600, + ] + } + coordIndex [ + 0, 3, 2, 1, -1, + 4, 7, 3, 0, -1, + 7, 6, 2, 3, -1, + 6, 5, 1, 2, -1, + 5, 4, 0, 1, -1, + 4, 5, 6, 7, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4cons.wrl b/environments/g4py/tests/gtest05/vrml/g4cons.wrl new file mode 100644 index 0000000000..3ea90815a5 --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4cons.wrl @@ -0,0 +1,222 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 250 0 400, + 241.481 64.7048 400, + 216.506 125 400, + 176.777 176.777 400, + 125 216.506 400, + 64.7048 241.481 400, + 1.53081e-14 250 400, + -64.7048 241.481 400, + -125 216.506 400, + -176.777 176.777 400, + -216.506 125 400, + -241.481 64.7048 400, + -250 3.06162e-14 400, + -241.481 -64.7048 400, + -216.506 -125 400, + -176.777 -176.777 400, + -125 -216.506 400, + 100 0 -400, + 96.5926 25.8819 -400, + 86.6025 50 -400, + 70.7107 70.7107 -400, + 50 86.6025 -400, + 25.8819 96.5926 -400, + 6.12323e-15 100 -400, + -25.8819 96.5926 -400, + -50 86.6025 -400, + -70.7107 70.7107 -400, + -86.6025 50 -400, + -96.5926 25.8819 -400, + -100 1.22465e-14 -400, + -96.5926 -25.8819 -400, + -86.6025 -50 -400, + -70.7107 -70.7107 -400, + -50 -86.6025 -400, + 200 0 400, + 193.185 51.7638 400, + 173.205 100 400, + 141.421 141.421 400, + 100 173.205 400, + 51.7638 193.185 400, + 1.22465e-14 200 400, + -51.7638 193.185 400, + -100 173.205 400, + -141.421 141.421 400, + -173.205 100 400, + -193.185 51.7638 400, + -200 2.44929e-14 400, + -193.185 -51.7638 400, + -173.205 -100 400, + -141.421 -141.421 400, + -100 -173.205 400, + 50 0 -400, + 48.2963 12.941 -400, + 43.3013 25 -400, + 35.3553 35.3553 -400, + 25 43.3013 -400, + 12.941 48.2963 -400, + 3.06162e-15 50 -400, + -12.941 48.2963 -400, + -25 43.3013 -400, + -35.3553 35.3553 -400, + -43.3013 25 -400, + -48.2963 12.941 -400, + -50 6.12323e-15 -400, + -48.2963 -12.941 -400, + -43.3013 -25 -400, + -35.3553 -35.3553 -400, + -25 -43.3013 -400, + ] + } + coordIndex [ + 0, 17, 18, 1, -1, + 1, 18, 19, 2, -1, + 2, 19, 20, 3, -1, + 3, 20, 21, 4, -1, + 4, 21, 22, 5, -1, + 5, 22, 23, 6, -1, + 6, 23, 24, 7, -1, + 7, 24, 25, 8, -1, + 8, 25, 26, 9, -1, + 9, 26, 27, 10, -1, + 10, 27, 28, 11, -1, + 11, 28, 29, 12, -1, + 12, 29, 30, 13, -1, + 13, 30, 31, 14, -1, + 14, 31, 32, 15, -1, + 15, 32, 33, 16, -1, + 51, 34, 35, 52, -1, + 52, 35, 36, 53, -1, + 53, 36, 37, 54, -1, + 54, 37, 38, 55, -1, + 55, 38, 39, 56, -1, + 56, 39, 40, 57, -1, + 57, 40, 41, 58, -1, + 58, 41, 42, 59, -1, + 59, 42, 43, 60, -1, + 60, 43, 44, 61, -1, + 61, 44, 45, 62, -1, + 62, 45, 46, 63, -1, + 63, 46, 47, 64, -1, + 64, 47, 48, 65, -1, + 65, 48, 49, 66, -1, + 66, 49, 50, 67, -1, + 34, 0, 1, 35, -1, + 35, 1, 2, 36, -1, + 36, 2, 3, 37, -1, + 37, 3, 4, 38, -1, + 38, 4, 5, 39, -1, + 39, 5, 6, 40, -1, + 40, 6, 7, 41, -1, + 41, 7, 8, 42, -1, + 42, 8, 9, 43, -1, + 43, 9, 10, 44, -1, + 44, 10, 11, 45, -1, + 45, 11, 12, 46, -1, + 46, 12, 13, 47, -1, + 47, 13, 14, 48, -1, + 48, 14, 15, 49, -1, + 49, 15, 16, 50, -1, + 17, 51, 52, 18, -1, + 18, 52, 53, 19, -1, + 19, 53, 54, 20, -1, + 20, 54, 55, 21, -1, + 21, 55, 56, 22, -1, + 22, 56, 57, 23, -1, + 23, 57, 58, 24, -1, + 24, 58, 59, 25, -1, + 25, 59, 60, 26, -1, + 26, 60, 61, 27, -1, + 27, 61, 62, 28, -1, + 28, 62, 63, 29, -1, + 29, 63, 64, 30, -1, + 30, 64, 65, 31, -1, + 31, 65, 66, 32, -1, + 32, 66, 67, 33, -1, + 0, 34, 51, 17, -1, + 33, 67, 50, 16, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4ellipsoid.wrl b/environments/g4py/tests/gtest05/vrml/g4ellipsoid.wrl new file mode 100644 index 0000000000..6deeebdf85 --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4ellipsoid.wrl @@ -0,0 +1,403 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 0 0 400, + 60 0 400, + 57.9555 31.0583 400, + 51.9615 60 400, + 42.4264 84.8528 400, + 30 103.923 400, + 15.5291 115.911 400, + 3.67394e-15 120 400, + -15.5291 115.911 400, + -30 103.923 400, + -42.4264 84.8528 400, + -51.9615 60 400, + -57.9555 31.0583 400, + -60 1.46958e-14 400, + -57.9555 -31.0583 400, + -51.9615 -60 400, + -42.4264 -84.8528 400, + -30 -103.923 400, + -15.5291 -115.911 400, + -1.10218e-14 -120 400, + 15.5291 -115.911 400, + 30 -103.923 400, + 42.4264 -84.8528 400, + 51.9615 -60 400, + 57.9555 -31.0583 400, + 76.3833 0 322.707, + 73.7806 39.5389 322.707, + 66.1499 76.3833 322.707, + 54.0112 108.022 322.707, + 38.1917 132.3 322.707, + 19.7695 147.561 322.707, + 4.67713e-15 152.767 322.707, + -19.7695 147.561 322.707, + -38.1917 132.3 322.707, + -54.0112 108.022 322.707, + -66.1499 76.3833 322.707, + -73.7806 39.5389 322.707, + -76.3833 1.87085e-14 322.707, + -73.7806 -39.5389 322.707, + -66.1499 -76.3833 322.707, + -54.0112 -108.022 322.707, + -38.1917 -132.3 322.707, + -19.7695 -147.561 322.707, + -1.40314e-14 -152.767 322.707, + 19.7695 -147.561 322.707, + 38.1917 -132.3 322.707, + 54.0112 -108.022 322.707, + 66.1499 -76.3833 322.707, + 73.7806 -39.5389 322.707, + 88.8911 0 229.04, + 85.8622 46.0134 229.04, + 76.982 88.8911 229.04, + 62.8555 125.711 229.04, + 44.4456 153.964 229.04, + 23.0067 171.724 229.04, + 5.44301e-15 177.782 229.04, + -23.0067 171.724 229.04, + -44.4456 153.964 229.04, + -62.8555 125.711 229.04, + -76.982 88.8911 229.04, + -85.8622 46.0134 229.04, + -88.8911 2.1772e-14 229.04, + -85.8622 -46.0134 229.04, + -76.982 -88.8911 229.04, + -62.8555 -125.711 229.04, + -44.4456 -153.964 229.04, + -23.0067 -171.724 229.04, + -1.6329e-14 -177.782 229.04, + 23.0067 -171.724 229.04, + 44.4456 -153.964 229.04, + 62.8555 -125.711 229.04, + 76.982 -88.8911 229.04, + 85.8622 -46.0134 229.04, + 96.8887 0 123.752, + 93.5873 50.1533 123.752, + 83.9081 96.8887 123.752, + 68.5106 137.021 123.752, + 48.4443 167.816 123.752, + 25.0766 187.175 123.752, + 5.93272e-15 193.777 123.752, + -25.0766 187.175 123.752, + -48.4443 167.816 123.752, + -68.5106 137.021 123.752, + -83.9081 96.8887 123.752, + -93.5873 50.1533 123.752, + -96.8887 2.37309e-14 123.752, + -93.5873 -50.1533 123.752, + -83.9081 -96.8887 123.752, + -68.5106 -137.021 123.752, + -48.4443 -167.816 123.752, + -25.0766 -187.175 123.752, + -1.77982e-14 -193.777 123.752, + 25.0766 -187.175 123.752, + 48.4443 -167.816 123.752, + 68.5106 -137.021 123.752, + 83.9081 -96.8887 123.752, + 93.5873 -50.1533 123.752, + 99.9703 0 12.1851, + 96.5639 51.7484 12.1851, + 86.5768 99.9703 12.1851, + 70.6897 141.379 12.1851, + 49.9852 173.154 12.1851, + 25.8742 193.128 12.1851, + 6.12142e-15 199.941 12.1851, + -25.8742 193.128 12.1851, + -49.9852 173.154 12.1851, + -70.6897 141.379 12.1851, + -86.5768 99.9703 12.1851, + -96.5639 51.7484 12.1851, + -99.9703 2.44857e-14 12.1851, + -96.5639 -51.7484 12.1851, + -86.5768 -99.9703 12.1851, + -70.6897 -141.379 12.1851, + -49.9852 -173.154 12.1851, + -25.8742 -193.128 12.1851, + -1.83642e-14 -199.941 12.1851, + 25.8742 -193.128 12.1851, + 49.9852 -173.154 12.1851, + 70.6897 -141.379 12.1851, + 86.5768 -99.9703 12.1851, + 96.5639 -51.7484 12.1851, + 97.9796 0 -100, + 94.641 50.718 -100, + 84.8528 97.9796 -100, + 69.282 138.564 -100, + 48.9898 169.706 -100, + 25.359 189.282 -100, + 5.99952e-15 195.959 -100, + -25.359 189.282 -100, + -48.9898 169.706 -100, + -69.282 138.564 -100, + -84.8528 97.9796 -100, + -94.641 50.718 -100, + -97.9796 2.39981e-14 -100, + -94.641 -50.718 -100, + -84.8528 -97.9796 -100, + -69.282 -138.564 -100, + -48.9898 -169.706 -100, + -25.359 -189.282 -100, + -1.79986e-14 -195.959 -100, + 25.359 -189.282 -100, + 48.9898 -169.706 -100, + 69.282 -138.564 -100, + 84.8528 -97.9796 -100, + 94.641 -50.718 -100, + 0 0 -100, + 0 0 0, + ] + } + coordIndex [ + 0, 1, 2, -1, + 0, 2, 3, -1, + 0, 3, 4, -1, + 0, 4, 5, -1, + 0, 5, 6, -1, + 0, 6, 7, -1, + 0, 7, 8, -1, + 0, 8, 9, -1, + 0, 9, 10, -1, + 0, 10, 11, -1, + 0, 11, 12, -1, + 0, 12, 13, -1, + 0, 13, 14, -1, + 0, 14, 15, -1, + 0, 15, 16, -1, + 0, 16, 17, -1, + 0, 17, 18, -1, + 0, 18, 19, -1, + 0, 19, 20, -1, + 0, 20, 21, -1, + 0, 21, 22, -1, + 0, 22, 23, -1, + 0, 23, 24, -1, + 0, 24, 1, -1, + 1, 25, 26, 2, -1, + 2, 26, 27, 3, -1, + 3, 27, 28, 4, -1, + 4, 28, 29, 5, -1, + 5, 29, 30, 6, -1, + 6, 30, 31, 7, -1, + 7, 31, 32, 8, -1, + 8, 32, 33, 9, -1, + 9, 33, 34, 10, -1, + 10, 34, 35, 11, -1, + 11, 35, 36, 12, -1, + 12, 36, 37, 13, -1, + 13, 37, 38, 14, -1, + 14, 38, 39, 15, -1, + 15, 39, 40, 16, -1, + 16, 40, 41, 17, -1, + 17, 41, 42, 18, -1, + 18, 42, 43, 19, -1, + 19, 43, 44, 20, -1, + 20, 44, 45, 21, -1, + 21, 45, 46, 22, -1, + 22, 46, 47, 23, -1, + 23, 47, 48, 24, -1, + 24, 48, 25, 1, -1, + 25, 49, 50, 26, -1, + 26, 50, 51, 27, -1, + 27, 51, 52, 28, -1, + 28, 52, 53, 29, -1, + 29, 53, 54, 30, -1, + 30, 54, 55, 31, -1, + 31, 55, 56, 32, -1, + 32, 56, 57, 33, -1, + 33, 57, 58, 34, -1, + 34, 58, 59, 35, -1, + 35, 59, 60, 36, -1, + 36, 60, 61, 37, -1, + 37, 61, 62, 38, -1, + 38, 62, 63, 39, -1, + 39, 63, 64, 40, -1, + 40, 64, 65, 41, -1, + 41, 65, 66, 42, -1, + 42, 66, 67, 43, -1, + 43, 67, 68, 44, -1, + 44, 68, 69, 45, -1, + 45, 69, 70, 46, -1, + 46, 70, 71, 47, -1, + 47, 71, 72, 48, -1, + 48, 72, 49, 25, -1, + 49, 73, 74, 50, -1, + 50, 74, 75, 51, -1, + 51, 75, 76, 52, -1, + 52, 76, 77, 53, -1, + 53, 77, 78, 54, -1, + 54, 78, 79, 55, -1, + 55, 79, 80, 56, -1, + 56, 80, 81, 57, -1, + 57, 81, 82, 58, -1, + 58, 82, 83, 59, -1, + 59, 83, 84, 60, -1, + 60, 84, 85, 61, -1, + 61, 85, 86, 62, -1, + 62, 86, 87, 63, -1, + 63, 87, 88, 64, -1, + 64, 88, 89, 65, -1, + 65, 89, 90, 66, -1, + 66, 90, 91, 67, -1, + 67, 91, 92, 68, -1, + 68, 92, 93, 69, -1, + 69, 93, 94, 70, -1, + 70, 94, 95, 71, -1, + 71, 95, 96, 72, -1, + 72, 96, 73, 49, -1, + 73, 97, 98, 74, -1, + 74, 98, 99, 75, -1, + 75, 99, 100, 76, -1, + 76, 100, 101, 77, -1, + 77, 101, 102, 78, -1, + 78, 102, 103, 79, -1, + 79, 103, 104, 80, -1, + 80, 104, 105, 81, -1, + 81, 105, 106, 82, -1, + 82, 106, 107, 83, -1, + 83, 107, 108, 84, -1, + 84, 108, 109, 85, -1, + 85, 109, 110, 86, -1, + 86, 110, 111, 87, -1, + 87, 111, 112, 88, -1, + 88, 112, 113, 89, -1, + 89, 113, 114, 90, -1, + 90, 114, 115, 91, -1, + 91, 115, 116, 92, -1, + 92, 116, 117, 93, -1, + 93, 117, 118, 94, -1, + 94, 118, 119, 95, -1, + 95, 119, 120, 96, -1, + 96, 120, 97, 73, -1, + 97, 121, 122, 98, -1, + 98, 122, 123, 99, -1, + 99, 123, 124, 100, -1, + 100, 124, 125, 101, -1, + 101, 125, 126, 102, -1, + 102, 126, 127, 103, -1, + 103, 127, 128, 104, -1, + 104, 128, 129, 105, -1, + 105, 129, 130, 106, -1, + 106, 130, 131, 107, -1, + 107, 131, 132, 108, -1, + 108, 132, 133, 109, -1, + 109, 133, 134, 110, -1, + 110, 134, 135, 111, -1, + 111, 135, 136, 112, -1, + 112, 136, 137, 113, -1, + 113, 137, 138, 114, -1, + 114, 138, 139, 115, -1, + 115, 139, 140, 116, -1, + 116, 140, 141, 117, -1, + 117, 141, 142, 118, -1, + 118, 142, 143, 119, -1, + 119, 143, 144, 120, -1, + 120, 144, 121, 97, -1, + 121, 145, 122, -1, + 122, 145, 123, -1, + 123, 145, 124, -1, + 124, 145, 125, -1, + 125, 145, 126, -1, + 126, 145, 127, -1, + 127, 145, 128, -1, + 128, 145, 129, -1, + 129, 145, 130, -1, + 130, 145, 131, -1, + 131, 145, 132, -1, + 132, 145, 133, -1, + 133, 145, 134, -1, + 134, 145, 135, -1, + 135, 145, 136, -1, + 136, 145, 137, -1, + 137, 145, 138, -1, + 138, 145, 139, -1, + 139, 145, 140, -1, + 140, 145, 141, -1, + 141, 145, 142, -1, + 142, 145, 143, -1, + 143, 145, 144, -1, + 144, 145, 121, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4ellipticalcone.wrl b/environments/g4py/tests/gtest05/vrml/g4ellipticalcone.wrl new file mode 100644 index 0000000000..7ee1aad4af --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4ellipticalcone.wrl @@ -0,0 +1,210 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 1 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 150 0 250, + 144.889 77.6457 250, + 129.904 150 250, + 106.066 212.132 250, + 75 259.808 250, + 38.8229 289.778 250, + 9.18485e-15 300 250, + -38.8229 289.778 250, + -75 259.808 250, + -106.066 212.132 250, + -129.904 150 250, + -144.889 77.6457 250, + -150 3.67394e-14 250, + -144.889 -77.6457 250, + -129.904 -150 250, + -106.066 -212.132 250, + -75 -259.808 250, + -38.8229 -289.778 250, + -2.75546e-14 -300 250, + 38.8229 -289.778 250, + 75 -259.808 250, + 106.066 -212.132 250, + 129.904 -150 250, + 144.889 -77.6457 250, + 450 0 -250, + 434.667 232.937 -250, + 389.711 450 -250, + 318.198 636.396 -250, + 225 779.423 -250, + 116.469 869.333 -250, + 2.75546e-14 900 -250, + -116.469 869.333 -250, + -225 779.423 -250, + -318.198 636.396 -250, + -389.711 450 -250, + -434.667 232.937 -250, + -450 1.10218e-13 -250, + -434.667 -232.937 -250, + -389.711 -450 -250, + -318.198 -636.396 -250, + -225 -779.423 -250, + -116.469 -869.333 -250, + -8.26637e-14 -900 -250, + 116.469 -869.333 -250, + 225 -779.423 -250, + 318.198 -636.396 -250, + 389.711 -450 -250, + 434.667 -232.937 -250, + 0 0 250, + 0 0 -250, + ] + } + coordIndex [ + 0, 24, 25, 1, -1, + 1, 25, 26, 2, -1, + 2, 26, 27, 3, -1, + 3, 27, 28, 4, -1, + 4, 28, 29, 5, -1, + 5, 29, 30, 6, -1, + 6, 30, 31, 7, -1, + 7, 31, 32, 8, -1, + 8, 32, 33, 9, -1, + 9, 33, 34, 10, -1, + 10, 34, 35, 11, -1, + 11, 35, 36, 12, -1, + 12, 36, 37, 13, -1, + 13, 37, 38, 14, -1, + 14, 38, 39, 15, -1, + 15, 39, 40, 16, -1, + 16, 40, 41, 17, -1, + 17, 41, 42, 18, -1, + 18, 42, 43, 19, -1, + 19, 43, 44, 20, -1, + 20, 44, 45, 21, -1, + 21, 45, 46, 22, -1, + 22, 46, 47, 23, -1, + 23, 47, 24, 0, -1, + 48, 0, 1, -1, + 48, 1, 2, -1, + 48, 2, 3, -1, + 48, 3, 4, -1, + 48, 4, 5, -1, + 48, 5, 6, -1, + 48, 6, 7, -1, + 48, 7, 8, -1, + 48, 8, 9, -1, + 48, 9, 10, -1, + 48, 10, 11, -1, + 48, 11, 12, -1, + 48, 12, 13, -1, + 48, 13, 14, -1, + 48, 14, 15, -1, + 48, 15, 16, -1, + 48, 16, 17, -1, + 48, 17, 18, -1, + 48, 18, 19, -1, + 48, 19, 20, -1, + 48, 20, 21, -1, + 48, 21, 22, -1, + 48, 22, 23, -1, + 48, 23, 0, -1, + 24, 49, 25, -1, + 25, 49, 26, -1, + 26, 49, 27, -1, + 27, 49, 28, -1, + 28, 49, 29, -1, + 29, 49, 30, -1, + 30, 49, 31, -1, + 31, 49, 32, -1, + 32, 49, 33, -1, + 33, 49, 34, -1, + 34, 49, 35, -1, + 35, 49, 36, -1, + 36, 49, 37, -1, + 37, 49, 38, -1, + 38, 49, 39, -1, + 39, 49, 40, -1, + 40, 49, 41, -1, + 41, 49, 42, -1, + 42, 49, 43, -1, + 43, 49, 44, -1, + 44, 49, 45, -1, + 45, 49, 46, -1, + 46, 49, 47, -1, + 47, 49, 24, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4ellipticaltube.wrl b/environments/g4py/tests/gtest05/vrml/g4ellipticaltube.wrl new file mode 100644 index 0000000000..3efae86d7b --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4ellipticaltube.wrl @@ -0,0 +1,210 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 1 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 50 0 200, + 48.2963 25.8819 200, + 43.3013 50 200, + 35.3553 70.7107 200, + 25 86.6025 200, + 12.941 96.5926 200, + 3.06162e-15 100 200, + -12.941 96.5926 200, + -25 86.6025 200, + -35.3553 70.7107 200, + -43.3013 50 200, + -48.2963 25.8819 200, + -50 1.22465e-14 200, + -48.2963 -25.8819 200, + -43.3013 -50 200, + -35.3553 -70.7107 200, + -25 -86.6025 200, + -12.941 -96.5926 200, + -9.18485e-15 -100 200, + 12.941 -96.5926 200, + 25 -86.6025 200, + 35.3553 -70.7107 200, + 43.3013 -50 200, + 48.2963 -25.8819 200, + 50 0 -200, + 48.2963 25.8819 -200, + 43.3013 50 -200, + 35.3553 70.7107 -200, + 25 86.6025 -200, + 12.941 96.5926 -200, + 3.06162e-15 100 -200, + -12.941 96.5926 -200, + -25 86.6025 -200, + -35.3553 70.7107 -200, + -43.3013 50 -200, + -48.2963 25.8819 -200, + -50 1.22465e-14 -200, + -48.2963 -25.8819 -200, + -43.3013 -50 -200, + -35.3553 -70.7107 -200, + -25 -86.6025 -200, + -12.941 -96.5926 -200, + -9.18485e-15 -100 -200, + 12.941 -96.5926 -200, + 25 -86.6025 -200, + 35.3553 -70.7107 -200, + 43.3013 -50 -200, + 48.2963 -25.8819 -200, + 0 0 200, + 0 0 -200, + ] + } + coordIndex [ + 0, 24, 25, 1, -1, + 1, 25, 26, 2, -1, + 2, 26, 27, 3, -1, + 3, 27, 28, 4, -1, + 4, 28, 29, 5, -1, + 5, 29, 30, 6, -1, + 6, 30, 31, 7, -1, + 7, 31, 32, 8, -1, + 8, 32, 33, 9, -1, + 9, 33, 34, 10, -1, + 10, 34, 35, 11, -1, + 11, 35, 36, 12, -1, + 12, 36, 37, 13, -1, + 13, 37, 38, 14, -1, + 14, 38, 39, 15, -1, + 15, 39, 40, 16, -1, + 16, 40, 41, 17, -1, + 17, 41, 42, 18, -1, + 18, 42, 43, 19, -1, + 19, 43, 44, 20, -1, + 20, 44, 45, 21, -1, + 21, 45, 46, 22, -1, + 22, 46, 47, 23, -1, + 23, 47, 24, 0, -1, + 48, 0, 1, -1, + 48, 1, 2, -1, + 48, 2, 3, -1, + 48, 3, 4, -1, + 48, 4, 5, -1, + 48, 5, 6, -1, + 48, 6, 7, -1, + 48, 7, 8, -1, + 48, 8, 9, -1, + 48, 9, 10, -1, + 48, 10, 11, -1, + 48, 11, 12, -1, + 48, 12, 13, -1, + 48, 13, 14, -1, + 48, 14, 15, -1, + 48, 15, 16, -1, + 48, 16, 17, -1, + 48, 17, 18, -1, + 48, 18, 19, -1, + 48, 19, 20, -1, + 48, 20, 21, -1, + 48, 21, 22, -1, + 48, 22, 23, -1, + 48, 23, 0, -1, + 24, 49, 25, -1, + 25, 49, 26, -1, + 26, 49, 27, -1, + 27, 49, 28, -1, + 28, 49, 29, -1, + 29, 49, 30, -1, + 30, 49, 31, -1, + 31, 49, 32, -1, + 32, 49, 33, -1, + 33, 49, 34, -1, + 34, 49, 35, -1, + 35, 49, 36, -1, + 36, 49, 37, -1, + 37, 49, 38, -1, + 38, 49, 39, -1, + 39, 49, 40, -1, + 40, 49, 41, -1, + 41, 49, 42, -1, + 42, 49, 43, -1, + 43, 49, 44, -1, + 44, 49, 45, -1, + 45, 49, 46, -1, + 46, 49, 47, -1, + 47, 49, 24, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4hype.wrl b/environments/g4py/tests/gtest05/vrml/g4hype.wrl new file mode 100644 index 0000000000..2eed8bcc54 --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4hype.wrl @@ -0,0 +1,280 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 517.071 0 500, + 499.452 133.828 500, + 447.797 258.536 500, + 365.624 365.624 500, + 258.536 447.797 500, + 133.828 499.452 500, + 3.16615e-14 517.071 500, + -133.828 499.452 500, + -258.536 447.797 500, + -365.624 365.624 500, + -447.797 258.536 500, + -499.452 133.828 500, + -517.071 6.33229e-14 500, + -499.452 -133.828 500, + -447.797 -258.536 500, + -365.624 -365.624 500, + -258.536 -447.797 500, + -133.828 -499.452 500, + -9.49844e-14 -517.071 500, + 133.828 -499.452 500, + 258.536 -447.797 500, + 365.624 -365.624 500, + 447.797 -258.536 500, + 499.452 -133.828 500, + 517.071 0 -500, + 499.452 133.828 -500, + 447.797 258.536 -500, + 365.624 365.624 -500, + 258.536 447.797 -500, + 133.828 499.452 -500, + 3.16615e-14 517.071 -500, + -133.828 499.452 -500, + -258.536 447.797 -500, + -365.624 365.624 -500, + -447.797 258.536 -500, + -499.452 133.828 -500, + -517.071 6.33229e-14 -500, + -499.452 -133.828 -500, + -447.797 -258.536 -500, + -365.624 -365.624 -500, + -258.536 -447.797 -500, + -133.828 -499.452 -500, + -9.49844e-14 -517.071 -500, + 133.828 -499.452 -500, + 258.536 -447.797 -500, + 365.624 -365.624 -500, + 447.797 -258.536 -500, + 499.452 -133.828 -500, + 466.221 0 500, + 450.335 120.667 500, + 403.76 233.111 500, + 329.668 329.668 500, + 233.111 403.76 500, + 120.667 450.335 500, + 2.85478e-14 466.221 500, + -120.667 450.335 500, + -233.111 403.76 500, + -329.668 329.668 500, + -403.76 233.111 500, + -450.335 120.667 500, + -466.221 5.70957e-14 500, + -450.335 -120.667 500, + -403.76 -233.111 500, + -329.668 -329.668 500, + -233.111 -403.76 500, + -120.667 -450.335 500, + -8.56435e-14 -466.221 500, + 120.667 -450.335 500, + 233.111 -403.76 500, + 329.668 -329.668 500, + 403.76 -233.111 500, + 450.335 -120.667 500, + 466.221 0 -500, + 450.335 120.667 -500, + 403.76 233.111 -500, + 329.668 329.668 -500, + 233.111 403.76 -500, + 120.667 450.335 -500, + 2.85478e-14 466.221 -500, + -120.667 450.335 -500, + -233.111 403.76 -500, + -329.668 329.668 -500, + -403.76 233.111 -500, + -450.335 120.667 -500, + -466.221 5.70957e-14 -500, + -450.335 -120.667 -500, + -403.76 -233.111 -500, + -329.668 -329.668 -500, + -233.111 -403.76 -500, + -120.667 -450.335 -500, + -8.56435e-14 -466.221 -500, + 120.667 -450.335 -500, + 233.111 -403.76 -500, + 329.668 -329.668 -500, + 403.76 -233.111 -500, + 450.335 -120.667 -500, + ] + } + coordIndex [ + 0, 24, 25, 1, -1, + 1, 25, 26, 2, -1, + 2, 26, 27, 3, -1, + 3, 27, 28, 4, -1, + 4, 28, 29, 5, -1, + 5, 29, 30, 6, -1, + 6, 30, 31, 7, -1, + 7, 31, 32, 8, -1, + 8, 32, 33, 9, -1, + 9, 33, 34, 10, -1, + 10, 34, 35, 11, -1, + 11, 35, 36, 12, -1, + 12, 36, 37, 13, -1, + 13, 37, 38, 14, -1, + 14, 38, 39, 15, -1, + 15, 39, 40, 16, -1, + 16, 40, 41, 17, -1, + 17, 41, 42, 18, -1, + 18, 42, 43, 19, -1, + 19, 43, 44, 20, -1, + 20, 44, 45, 21, -1, + 21, 45, 46, 22, -1, + 22, 46, 47, 23, -1, + 23, 47, 24, 0, -1, + 72, 48, 49, 73, -1, + 73, 49, 50, 74, -1, + 74, 50, 51, 75, -1, + 75, 51, 52, 76, -1, + 76, 52, 53, 77, -1, + 77, 53, 54, 78, -1, + 78, 54, 55, 79, -1, + 79, 55, 56, 80, -1, + 80, 56, 57, 81, -1, + 81, 57, 58, 82, -1, + 82, 58, 59, 83, -1, + 83, 59, 60, 84, -1, + 84, 60, 61, 85, -1, + 85, 61, 62, 86, -1, + 86, 62, 63, 87, -1, + 87, 63, 64, 88, -1, + 88, 64, 65, 89, -1, + 89, 65, 66, 90, -1, + 90, 66, 67, 91, -1, + 91, 67, 68, 92, -1, + 92, 68, 69, 93, -1, + 93, 69, 70, 94, -1, + 94, 70, 71, 95, -1, + 95, 71, 48, 72, -1, + 48, 0, 1, 49, -1, + 49, 1, 2, 50, -1, + 50, 2, 3, 51, -1, + 51, 3, 4, 52, -1, + 52, 4, 5, 53, -1, + 53, 5, 6, 54, -1, + 54, 6, 7, 55, -1, + 55, 7, 8, 56, -1, + 56, 8, 9, 57, -1, + 57, 9, 10, 58, -1, + 58, 10, 11, 59, -1, + 59, 11, 12, 60, -1, + 60, 12, 13, 61, -1, + 61, 13, 14, 62, -1, + 62, 14, 15, 63, -1, + 63, 15, 16, 64, -1, + 64, 16, 17, 65, -1, + 65, 17, 18, 66, -1, + 66, 18, 19, 67, -1, + 67, 19, 20, 68, -1, + 68, 20, 21, 69, -1, + 69, 21, 22, 70, -1, + 70, 22, 23, 71, -1, + 71, 23, 0, 48, -1, + 24, 72, 73, 25, -1, + 25, 73, 74, 26, -1, + 26, 74, 75, 27, -1, + 27, 75, 76, 28, -1, + 28, 76, 77, 29, -1, + 29, 77, 78, 30, -1, + 30, 78, 79, 31, -1, + 31, 79, 80, 32, -1, + 32, 80, 81, 33, -1, + 33, 81, 82, 34, -1, + 34, 82, 83, 35, -1, + 35, 83, 84, 36, -1, + 36, 84, 85, 37, -1, + 37, 85, 86, 38, -1, + 38, 86, 87, 39, -1, + 39, 87, 88, 40, -1, + 40, 88, 89, 41, -1, + 41, 89, 90, 42, -1, + 42, 90, 91, 43, -1, + 43, 91, 92, 44, -1, + 44, 92, 93, 45, -1, + 45, 93, 94, 46, -1, + 46, 94, 95, 47, -1, + 47, 95, 72, 24, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4orb.wrl b/environments/g4py/tests/gtest05/vrml/g4orb.wrl new file mode 100644 index 0000000000..b4961d1be8 --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4orb.wrl @@ -0,0 +1,643 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 0 0 1000, + 258.819 0 965.926, + 250 66.9873 965.926, + 224.144 129.41 965.926, + 183.013 183.013 965.926, + 129.41 224.144 965.926, + 66.9873 250 965.926, + 1.58481e-14 258.819 965.926, + -66.9873 250 965.926, + -129.41 224.144 965.926, + -183.013 183.013 965.926, + -224.144 129.41 965.926, + -250 66.9873 965.926, + -258.819 3.16962e-14 965.926, + -250 -66.9873 965.926, + -224.144 -129.41 965.926, + -183.013 -183.013 965.926, + -129.41 -224.144 965.926, + -66.9873 -250 965.926, + -4.75443e-14 -258.819 965.926, + 66.9873 -250 965.926, + 129.41 -224.144 965.926, + 183.013 -183.013 965.926, + 224.144 -129.41 965.926, + 250 -66.9873 965.926, + 500 0 866.025, + 482.963 129.41 866.025, + 433.013 250 866.025, + 353.553 353.553 866.025, + 250 433.013 866.025, + 129.41 482.963 866.025, + 3.06162e-14 500 866.025, + -129.41 482.963 866.025, + -250 433.013 866.025, + -353.553 353.553 866.025, + -433.013 250 866.025, + -482.963 129.41 866.025, + -500 6.12323e-14 866.025, + -482.963 -129.41 866.025, + -433.013 -250 866.025, + -353.553 -353.553 866.025, + -250 -433.013 866.025, + -129.41 -482.963 866.025, + -9.18485e-14 -500 866.025, + 129.41 -482.963 866.025, + 250 -433.013 866.025, + 353.553 -353.553 866.025, + 433.013 -250 866.025, + 482.963 -129.41 866.025, + 707.107 0 707.107, + 683.013 183.013 707.107, + 612.372 353.553 707.107, + 500 500 707.107, + 353.553 612.372 707.107, + 183.013 683.013 707.107, + 4.32978e-14 707.107 707.107, + -183.013 683.013 707.107, + -353.553 612.372 707.107, + -500 500 707.107, + -612.372 353.553 707.107, + -683.013 183.013 707.107, + -707.107 8.65956e-14 707.107, + -683.013 -183.013 707.107, + -612.372 -353.553 707.107, + -500 -500 707.107, + -353.553 -612.372 707.107, + -183.013 -683.013 707.107, + -1.29893e-13 -707.107 707.107, + 183.013 -683.013 707.107, + 353.553 -612.372 707.107, + 500 -500 707.107, + 612.372 -353.553 707.107, + 683.013 -183.013 707.107, + 866.025 0 500, + 836.516 224.144 500, + 750 433.013 500, + 612.372 612.372 500, + 433.013 750 500, + 224.144 836.516 500, + 5.30288e-14 866.025 500, + -224.144 836.516 500, + -433.013 750 500, + -612.372 612.372 500, + -750 433.013 500, + -836.516 224.144 500, + -866.025 1.06058e-13 500, + -836.516 -224.144 500, + -750 -433.013 500, + -612.372 -612.372 500, + -433.013 -750 500, + -224.144 -836.516 500, + -1.59086e-13 -866.025 500, + 224.144 -836.516 500, + 433.013 -750 500, + 612.372 -612.372 500, + 750 -433.013 500, + 836.516 -224.144 500, + 965.926 0 258.819, + 933.013 250 258.819, + 836.516 482.963 258.819, + 683.013 683.013 258.819, + 482.963 836.516 258.819, + 250 933.013 258.819, + 5.91459e-14 965.926 258.819, + -250 933.013 258.819, + -482.963 836.516 258.819, + -683.013 683.013 258.819, + -836.516 482.963 258.819, + -933.013 250 258.819, + -965.926 1.18292e-13 258.819, + -933.013 -250 258.819, + -836.516 -482.963 258.819, + -683.013 -683.013 258.819, + -482.963 -836.516 258.819, + -250 -933.013 258.819, + -1.77438e-13 -965.926 258.819, + 250 -933.013 258.819, + 482.963 -836.516 258.819, + 683.013 -683.013 258.819, + 836.516 -482.963 258.819, + 933.013 -250 258.819, + 1000 0 6.12323e-14, + 965.926 258.819 6.12323e-14, + 866.025 500 6.12323e-14, + 707.107 707.107 6.12323e-14, + 500 866.025 6.12323e-14, + 258.819 965.926 6.12323e-14, + 6.12323e-14 1000 6.12323e-14, + -258.819 965.926 6.12323e-14, + -500 866.025 6.12323e-14, + -707.107 707.107 6.12323e-14, + -866.025 500 6.12323e-14, + -965.926 258.819 6.12323e-14, + -1000 1.22465e-13 6.12323e-14, + -965.926 -258.819 6.12323e-14, + -866.025 -500 6.12323e-14, + -707.107 -707.107 6.12323e-14, + -500 -866.025 6.12323e-14, + -258.819 -965.926 6.12323e-14, + -1.83697e-13 -1000 6.12323e-14, + 258.819 -965.926 6.12323e-14, + 500 -866.025 6.12323e-14, + 707.107 -707.107 6.12323e-14, + 866.025 -500 6.12323e-14, + 965.926 -258.819 6.12323e-14, + 965.926 0 -258.819, + 933.013 250 -258.819, + 836.516 482.963 -258.819, + 683.013 683.013 -258.819, + 482.963 836.516 -258.819, + 250 933.013 -258.819, + 5.91459e-14 965.926 -258.819, + -250 933.013 -258.819, + -482.963 836.516 -258.819, + -683.013 683.013 -258.819, + -836.516 482.963 -258.819, + -933.013 250 -258.819, + -965.926 1.18292e-13 -258.819, + -933.013 -250 -258.819, + -836.516 -482.963 -258.819, + -683.013 -683.013 -258.819, + -482.963 -836.516 -258.819, + -250 -933.013 -258.819, + -1.77438e-13 -965.926 -258.819, + 250 -933.013 -258.819, + 482.963 -836.516 -258.819, + 683.013 -683.013 -258.819, + 836.516 -482.963 -258.819, + 933.013 -250 -258.819, + 866.025 0 -500, + 836.516 224.144 -500, + 750 433.013 -500, + 612.372 612.372 -500, + 433.013 750 -500, + 224.144 836.516 -500, + 5.30288e-14 866.025 -500, + -224.144 836.516 -500, + -433.013 750 -500, + -612.372 612.372 -500, + -750 433.013 -500, + -836.516 224.144 -500, + -866.025 1.06058e-13 -500, + -836.516 -224.144 -500, + -750 -433.013 -500, + -612.372 -612.372 -500, + -433.013 -750 -500, + -224.144 -836.516 -500, + -1.59086e-13 -866.025 -500, + 224.144 -836.516 -500, + 433.013 -750 -500, + 612.372 -612.372 -500, + 750 -433.013 -500, + 836.516 -224.144 -500, + 707.107 0 -707.107, + 683.013 183.013 -707.107, + 612.372 353.553 -707.107, + 500 500 -707.107, + 353.553 612.372 -707.107, + 183.013 683.013 -707.107, + 4.32978e-14 707.107 -707.107, + -183.013 683.013 -707.107, + -353.553 612.372 -707.107, + -500 500 -707.107, + -612.372 353.553 -707.107, + -683.013 183.013 -707.107, + -707.107 8.65956e-14 -707.107, + -683.013 -183.013 -707.107, + -612.372 -353.553 -707.107, + -500 -500 -707.107, + -353.553 -612.372 -707.107, + -183.013 -683.013 -707.107, + -1.29893e-13 -707.107 -707.107, + 183.013 -683.013 -707.107, + 353.553 -612.372 -707.107, + 500 -500 -707.107, + 612.372 -353.553 -707.107, + 683.013 -183.013 -707.107, + 500 0 -866.025, + 482.963 129.41 -866.025, + 433.013 250 -866.025, + 353.553 353.553 -866.025, + 250 433.013 -866.025, + 129.41 482.963 -866.025, + 3.06162e-14 500 -866.025, + -129.41 482.963 -866.025, + -250 433.013 -866.025, + -353.553 353.553 -866.025, + -433.013 250 -866.025, + -482.963 129.41 -866.025, + -500 6.12323e-14 -866.025, + -482.963 -129.41 -866.025, + -433.013 -250 -866.025, + -353.553 -353.553 -866.025, + -250 -433.013 -866.025, + -129.41 -482.963 -866.025, + -9.18485e-14 -500 -866.025, + 129.41 -482.963 -866.025, + 250 -433.013 -866.025, + 353.553 -353.553 -866.025, + 433.013 -250 -866.025, + 482.963 -129.41 -866.025, + 258.819 0 -965.926, + 250 66.9873 -965.926, + 224.144 129.41 -965.926, + 183.013 183.013 -965.926, + 129.41 224.144 -965.926, + 66.9873 250 -965.926, + 1.58481e-14 258.819 -965.926, + -66.9873 250 -965.926, + -129.41 224.144 -965.926, + -183.013 183.013 -965.926, + -224.144 129.41 -965.926, + -250 66.9873 -965.926, + -258.819 3.16962e-14 -965.926, + -250 -66.9873 -965.926, + -224.144 -129.41 -965.926, + -183.013 -183.013 -965.926, + -129.41 -224.144 -965.926, + -66.9873 -250 -965.926, + -4.75443e-14 -258.819 -965.926, + 66.9873 -250 -965.926, + 129.41 -224.144 -965.926, + 183.013 -183.013 -965.926, + 224.144 -129.41 -965.926, + 250 -66.9873 -965.926, + 0 0 -1000, + 0 0 0, + ] + } + coordIndex [ + 0, 1, 2, -1, + 0, 2, 3, -1, + 0, 3, 4, -1, + 0, 4, 5, -1, + 0, 5, 6, -1, + 0, 6, 7, -1, + 0, 7, 8, -1, + 0, 8, 9, -1, + 0, 9, 10, -1, + 0, 10, 11, -1, + 0, 11, 12, -1, + 0, 12, 13, -1, + 0, 13, 14, -1, + 0, 14, 15, -1, + 0, 15, 16, -1, + 0, 16, 17, -1, + 0, 17, 18, -1, + 0, 18, 19, -1, + 0, 19, 20, -1, + 0, 20, 21, -1, + 0, 21, 22, -1, + 0, 22, 23, -1, + 0, 23, 24, -1, + 0, 24, 1, -1, + 1, 25, 26, 2, -1, + 2, 26, 27, 3, -1, + 3, 27, 28, 4, -1, + 4, 28, 29, 5, -1, + 5, 29, 30, 6, -1, + 6, 30, 31, 7, -1, + 7, 31, 32, 8, -1, + 8, 32, 33, 9, -1, + 9, 33, 34, 10, -1, + 10, 34, 35, 11, -1, + 11, 35, 36, 12, -1, + 12, 36, 37, 13, -1, + 13, 37, 38, 14, -1, + 14, 38, 39, 15, -1, + 15, 39, 40, 16, -1, + 16, 40, 41, 17, -1, + 17, 41, 42, 18, -1, + 18, 42, 43, 19, -1, + 19, 43, 44, 20, -1, + 20, 44, 45, 21, -1, + 21, 45, 46, 22, -1, + 22, 46, 47, 23, -1, + 23, 47, 48, 24, -1, + 24, 48, 25, 1, -1, + 25, 49, 50, 26, -1, + 26, 50, 51, 27, -1, + 27, 51, 52, 28, -1, + 28, 52, 53, 29, -1, + 29, 53, 54, 30, -1, + 30, 54, 55, 31, -1, + 31, 55, 56, 32, -1, + 32, 56, 57, 33, -1, + 33, 57, 58, 34, -1, + 34, 58, 59, 35, -1, + 35, 59, 60, 36, -1, + 36, 60, 61, 37, -1, + 37, 61, 62, 38, -1, + 38, 62, 63, 39, -1, + 39, 63, 64, 40, -1, + 40, 64, 65, 41, -1, + 41, 65, 66, 42, -1, + 42, 66, 67, 43, -1, + 43, 67, 68, 44, -1, + 44, 68, 69, 45, -1, + 45, 69, 70, 46, -1, + 46, 70, 71, 47, -1, + 47, 71, 72, 48, -1, + 48, 72, 49, 25, -1, + 49, 73, 74, 50, -1, + 50, 74, 75, 51, -1, + 51, 75, 76, 52, -1, + 52, 76, 77, 53, -1, + 53, 77, 78, 54, -1, + 54, 78, 79, 55, -1, + 55, 79, 80, 56, -1, + 56, 80, 81, 57, -1, + 57, 81, 82, 58, -1, + 58, 82, 83, 59, -1, + 59, 83, 84, 60, -1, + 60, 84, 85, 61, -1, + 61, 85, 86, 62, -1, + 62, 86, 87, 63, -1, + 63, 87, 88, 64, -1, + 64, 88, 89, 65, -1, + 65, 89, 90, 66, -1, + 66, 90, 91, 67, -1, + 67, 91, 92, 68, -1, + 68, 92, 93, 69, -1, + 69, 93, 94, 70, -1, + 70, 94, 95, 71, -1, + 71, 95, 96, 72, -1, + 72, 96, 73, 49, -1, + 73, 97, 98, 74, -1, + 74, 98, 99, 75, -1, + 75, 99, 100, 76, -1, + 76, 100, 101, 77, -1, + 77, 101, 102, 78, -1, + 78, 102, 103, 79, -1, + 79, 103, 104, 80, -1, + 80, 104, 105, 81, -1, + 81, 105, 106, 82, -1, + 82, 106, 107, 83, -1, + 83, 107, 108, 84, -1, + 84, 108, 109, 85, -1, + 85, 109, 110, 86, -1, + 86, 110, 111, 87, -1, + 87, 111, 112, 88, -1, + 88, 112, 113, 89, -1, + 89, 113, 114, 90, -1, + 90, 114, 115, 91, -1, + 91, 115, 116, 92, -1, + 92, 116, 117, 93, -1, + 93, 117, 118, 94, -1, + 94, 118, 119, 95, -1, + 95, 119, 120, 96, -1, + 96, 120, 97, 73, -1, + 97, 121, 122, 98, -1, + 98, 122, 123, 99, -1, + 99, 123, 124, 100, -1, + 100, 124, 125, 101, -1, + 101, 125, 126, 102, -1, + 102, 126, 127, 103, -1, + 103, 127, 128, 104, -1, + 104, 128, 129, 105, -1, + 105, 129, 130, 106, -1, + 106, 130, 131, 107, -1, + 107, 131, 132, 108, -1, + 108, 132, 133, 109, -1, + 109, 133, 134, 110, -1, + 110, 134, 135, 111, -1, + 111, 135, 136, 112, -1, + 112, 136, 137, 113, -1, + 113, 137, 138, 114, -1, + 114, 138, 139, 115, -1, + 115, 139, 140, 116, -1, + 116, 140, 141, 117, -1, + 117, 141, 142, 118, -1, + 118, 142, 143, 119, -1, + 119, 143, 144, 120, -1, + 120, 144, 121, 97, -1, + 121, 145, 146, 122, -1, + 122, 146, 147, 123, -1, + 123, 147, 148, 124, -1, + 124, 148, 149, 125, -1, + 125, 149, 150, 126, -1, + 126, 150, 151, 127, -1, + 127, 151, 152, 128, -1, + 128, 152, 153, 129, -1, + 129, 153, 154, 130, -1, + 130, 154, 155, 131, -1, + 131, 155, 156, 132, -1, + 132, 156, 157, 133, -1, + 133, 157, 158, 134, -1, + 134, 158, 159, 135, -1, + 135, 159, 160, 136, -1, + 136, 160, 161, 137, -1, + 137, 161, 162, 138, -1, + 138, 162, 163, 139, -1, + 139, 163, 164, 140, -1, + 140, 164, 165, 141, -1, + 141, 165, 166, 142, -1, + 142, 166, 167, 143, -1, + 143, 167, 168, 144, -1, + 144, 168, 145, 121, -1, + 145, 169, 170, 146, -1, + 146, 170, 171, 147, -1, + 147, 171, 172, 148, -1, + 148, 172, 173, 149, -1, + 149, 173, 174, 150, -1, + 150, 174, 175, 151, -1, + 151, 175, 176, 152, -1, + 152, 176, 177, 153, -1, + 153, 177, 178, 154, -1, + 154, 178, 179, 155, -1, + 155, 179, 180, 156, -1, + 156, 180, 181, 157, -1, + 157, 181, 182, 158, -1, + 158, 182, 183, 159, -1, + 159, 183, 184, 160, -1, + 160, 184, 185, 161, -1, + 161, 185, 186, 162, -1, + 162, 186, 187, 163, -1, + 163, 187, 188, 164, -1, + 164, 188, 189, 165, -1, + 165, 189, 190, 166, -1, + 166, 190, 191, 167, -1, + 167, 191, 192, 168, -1, + 168, 192, 169, 145, -1, + 169, 193, 194, 170, -1, + 170, 194, 195, 171, -1, + 171, 195, 196, 172, -1, + 172, 196, 197, 173, -1, + 173, 197, 198, 174, -1, + 174, 198, 199, 175, -1, + 175, 199, 200, 176, -1, + 176, 200, 201, 177, -1, + 177, 201, 202, 178, -1, + 178, 202, 203, 179, -1, + 179, 203, 204, 180, -1, + 180, 204, 205, 181, -1, + 181, 205, 206, 182, -1, + 182, 206, 207, 183, -1, + 183, 207, 208, 184, -1, + 184, 208, 209, 185, -1, + 185, 209, 210, 186, -1, + 186, 210, 211, 187, -1, + 187, 211, 212, 188, -1, + 188, 212, 213, 189, -1, + 189, 213, 214, 190, -1, + 190, 214, 215, 191, -1, + 191, 215, 216, 192, -1, + 192, 216, 193, 169, -1, + 193, 217, 218, 194, -1, + 194, 218, 219, 195, -1, + 195, 219, 220, 196, -1, + 196, 220, 221, 197, -1, + 197, 221, 222, 198, -1, + 198, 222, 223, 199, -1, + 199, 223, 224, 200, -1, + 200, 224, 225, 201, -1, + 201, 225, 226, 202, -1, + 202, 226, 227, 203, -1, + 203, 227, 228, 204, -1, + 204, 228, 229, 205, -1, + 205, 229, 230, 206, -1, + 206, 230, 231, 207, -1, + 207, 231, 232, 208, -1, + 208, 232, 233, 209, -1, + 209, 233, 234, 210, -1, + 210, 234, 235, 211, -1, + 211, 235, 236, 212, -1, + 212, 236, 237, 213, -1, + 213, 237, 238, 214, -1, + 214, 238, 239, 215, -1, + 215, 239, 240, 216, -1, + 216, 240, 217, 193, -1, + 217, 241, 242, 218, -1, + 218, 242, 243, 219, -1, + 219, 243, 244, 220, -1, + 220, 244, 245, 221, -1, + 221, 245, 246, 222, -1, + 222, 246, 247, 223, -1, + 223, 247, 248, 224, -1, + 224, 248, 249, 225, -1, + 225, 249, 250, 226, -1, + 226, 250, 251, 227, -1, + 227, 251, 252, 228, -1, + 228, 252, 253, 229, -1, + 229, 253, 254, 230, -1, + 230, 254, 255, 231, -1, + 231, 255, 256, 232, -1, + 232, 256, 257, 233, -1, + 233, 257, 258, 234, -1, + 234, 258, 259, 235, -1, + 235, 259, 260, 236, -1, + 236, 260, 261, 237, -1, + 237, 261, 262, 238, -1, + 238, 262, 263, 239, -1, + 239, 263, 264, 240, -1, + 240, 264, 241, 217, -1, + 241, 265, 242, -1, + 242, 265, 243, -1, + 243, 265, 244, -1, + 244, 265, 245, -1, + 245, 265, 246, -1, + 246, 265, 247, -1, + 247, 265, 248, -1, + 248, 265, 249, -1, + 249, 265, 250, -1, + 250, 265, 251, -1, + 251, 265, 252, -1, + 252, 265, 253, -1, + 253, 265, 254, -1, + 254, 265, 255, -1, + 255, 265, 256, -1, + 256, 265, 257, -1, + 257, 265, 258, -1, + 258, 265, 259, -1, + 259, 265, 260, -1, + 260, 265, 261, -1, + 261, 265, 262, -1, + 262, 265, 263, -1, + 263, 265, 264, -1, + 264, 265, 241, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4para.wrl b/environments/g4py/tests/gtest05/vrml/g4para.wrl new file mode 100644 index 0000000000..1fcf6d556e --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4para.wrl @@ -0,0 +1,102 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + -948.528 -400 -600, + -348.528 -400 -600, + 451.472 400 -600, + -148.528 400 -600, + -451.472 -400 600, + 148.528 -400 600, + 948.528 400 600, + 348.528 400 600, + ] + } + coordIndex [ + 0, 3, 2, 1, -1, + 4, 7, 3, 0, -1, + 7, 6, 2, 3, -1, + 6, 5, 1, 2, -1, + 5, 4, 0, 1, -1, + 4, 5, 6, 7, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4polycone.wrl b/environments/g4py/tests/gtest05/vrml/g4polycone.wrl new file mode 100644 index 0000000000..494fe6e448 --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4polycone.wrl @@ -0,0 +1,505 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 1 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 20 0 350, + 19.3185 5.17638 350, + 17.3205 10 350, + 14.1421 14.1421 350, + 10 17.3205 350, + 5.17638 19.3185 350, + 1.22465e-15 20 350, + -5.17638 19.3185 350, + -10 17.3205 350, + -14.1421 14.1421 350, + -17.3205 10 350, + -19.3185 5.17638 350, + -20 2.44929e-15 350, + -19.3185 -5.17638 350, + -17.3205 -10 350, + -14.1421 -14.1421 350, + -10 -17.3205 350, + -5.17638 -19.3185 350, + -3.67394e-15 -20 350, + 5.17638 -19.3185 350, + 10 -17.3205 350, + 14.1421 -14.1421 350, + 17.3205 -10 350, + 19.3185 -5.17638 350, + 20 0 310, + 19.3185 5.17638 310, + 17.3205 10 310, + 14.1421 14.1421 310, + 10 17.3205 310, + 5.17638 19.3185 310, + 1.22465e-15 20 310, + -5.17638 19.3185 310, + -10 17.3205 310, + -14.1421 14.1421 310, + -17.3205 10 310, + -19.3185 5.17638 310, + -20 2.44929e-15 310, + -19.3185 -5.17638 310, + -17.3205 -10 310, + -14.1421 -14.1421 310, + -10 -17.3205 310, + -5.17638 -19.3185 310, + -3.67394e-15 -20 310, + 5.17638 -19.3185 310, + 10 -17.3205 310, + 14.1421 -14.1421 310, + 17.3205 -10 310, + 19.3185 -5.17638 310, + 100 0 290, + 96.5926 25.8819 290, + 86.6025 50 290, + 70.7107 70.7107 290, + 50 86.6025 290, + 25.8819 96.5926 290, + 6.12323e-15 100 290, + -25.8819 96.5926 290, + -50 86.6025 290, + -70.7107 70.7107 290, + -86.6025 50 290, + -96.5926 25.8819 290, + -100 1.22465e-14 290, + -96.5926 -25.8819 290, + -86.6025 -50 290, + -70.7107 -70.7107 290, + -50 -86.6025 290, + -25.8819 -96.5926 290, + -1.83697e-14 -100 290, + 25.8819 -96.5926 290, + 50 -86.6025 290, + 70.7107 -70.7107 290, + 86.6025 -50 290, + 96.5926 -25.8819 290, + 100 0 270, + 96.5926 25.8819 270, + 86.6025 50 270, + 70.7107 70.7107 270, + 50 86.6025 270, + 25.8819 96.5926 270, + 6.12323e-15 100 270, + -25.8819 96.5926 270, + -50 86.6025 270, + -70.7107 70.7107 270, + -86.6025 50 270, + -96.5926 25.8819 270, + -100 1.22465e-14 270, + -96.5926 -25.8819 270, + -86.6025 -50 270, + -70.7107 -70.7107 270, + -50 -86.6025 270, + -25.8819 -96.5926 270, + -1.83697e-14 -100 270, + 25.8819 -96.5926 270, + 50 -86.6025 270, + 70.7107 -70.7107 270, + 86.6025 -50 270, + 96.5926 -25.8819 270, + 50 0 250, + 48.2963 12.941 250, + 43.3013 25 250, + 35.3553 35.3553 250, + 25 43.3013 250, + 12.941 48.2963 250, + 3.06162e-15 50 250, + -12.941 48.2963 250, + -25 43.3013 250, + -35.3553 35.3553 250, + -43.3013 25 250, + -48.2963 12.941 250, + -50 6.12323e-15 250, + -48.2963 -12.941 250, + -43.3013 -25 250, + -35.3553 -35.3553 250, + -25 -43.3013 250, + -12.941 -48.2963 250, + -9.18485e-15 -50 250, + 12.941 -48.2963 250, + 25 -43.3013 250, + 35.3553 -35.3553 250, + 43.3013 -25 250, + 48.2963 -12.941 250, + 50 0 110, + 48.2963 12.941 110, + 43.3013 25 110, + 35.3553 35.3553 110, + 25 43.3013 110, + 12.941 48.2963 110, + 3.06162e-15 50 110, + -12.941 48.2963 110, + -25 43.3013 110, + -35.3553 35.3553 110, + -43.3013 25 110, + -48.2963 12.941 110, + -50 6.12323e-15 110, + -48.2963 -12.941 110, + -43.3013 -25 110, + -35.3553 -35.3553 110, + -25 -43.3013 110, + -12.941 -48.2963 110, + -9.18485e-15 -50 110, + 12.941 -48.2963 110, + 25 -43.3013 110, + 35.3553 -35.3553 110, + 43.3013 -25 110, + 48.2963 -12.941 110, + 100 0 90, + 96.5926 25.8819 90, + 86.6025 50 90, + 70.7107 70.7107 90, + 50 86.6025 90, + 25.8819 96.5926 90, + 6.12323e-15 100 90, + -25.8819 96.5926 90, + -50 86.6025 90, + -70.7107 70.7107 90, + -86.6025 50 90, + -96.5926 25.8819 90, + -100 1.22465e-14 90, + -96.5926 -25.8819 90, + -86.6025 -50 90, + -70.7107 -70.7107 90, + -50 -86.6025 90, + -25.8819 -96.5926 90, + -1.83697e-14 -100 90, + 25.8819 -96.5926 90, + 50 -86.6025 90, + 70.7107 -70.7107 90, + 86.6025 -50 90, + 96.5926 -25.8819 90, + 100 0 70, + 96.5926 25.8819 70, + 86.6025 50 70, + 70.7107 70.7107 70, + 50 86.6025 70, + 25.8819 96.5926 70, + 6.12323e-15 100 70, + -25.8819 96.5926 70, + -50 86.6025 70, + -70.7107 70.7107 70, + -86.6025 50 70, + -96.5926 25.8819 70, + -100 1.22465e-14 70, + -96.5926 -25.8819 70, + -86.6025 -50 70, + -70.7107 -70.7107 70, + -50 -86.6025 70, + -25.8819 -96.5926 70, + -1.83697e-14 -100 70, + 25.8819 -96.5926 70, + 50 -86.6025 70, + 70.7107 -70.7107 70, + 86.6025 -50 70, + 96.5926 -25.8819 70, + 0 0 50, + 0 0 350, + 0 0 310, + 0 0 290, + 0 0 270, + 0 0 250, + 0 0 110, + 0 0 90, + 0 0 70, + ] + } + coordIndex [ + 0, 24, 25, 1, -1, + 1, 25, 26, 2, -1, + 2, 26, 27, 3, -1, + 3, 27, 28, 4, -1, + 4, 28, 29, 5, -1, + 5, 29, 30, 6, -1, + 6, 30, 31, 7, -1, + 7, 31, 32, 8, -1, + 8, 32, 33, 9, -1, + 9, 33, 34, 10, -1, + 10, 34, 35, 11, -1, + 11, 35, 36, 12, -1, + 12, 36, 37, 13, -1, + 13, 37, 38, 14, -1, + 14, 38, 39, 15, -1, + 15, 39, 40, 16, -1, + 16, 40, 41, 17, -1, + 17, 41, 42, 18, -1, + 18, 42, 43, 19, -1, + 19, 43, 44, 20, -1, + 20, 44, 45, 21, -1, + 21, 45, 46, 22, -1, + 22, 46, 47, 23, -1, + 23, 47, 24, 0, -1, + 24, 48, 49, 25, -1, + 25, 49, 50, 26, -1, + 26, 50, 51, 27, -1, + 27, 51, 52, 28, -1, + 28, 52, 53, 29, -1, + 29, 53, 54, 30, -1, + 30, 54, 55, 31, -1, + 31, 55, 56, 32, -1, + 32, 56, 57, 33, -1, + 33, 57, 58, 34, -1, + 34, 58, 59, 35, -1, + 35, 59, 60, 36, -1, + 36, 60, 61, 37, -1, + 37, 61, 62, 38, -1, + 38, 62, 63, 39, -1, + 39, 63, 64, 40, -1, + 40, 64, 65, 41, -1, + 41, 65, 66, 42, -1, + 42, 66, 67, 43, -1, + 43, 67, 68, 44, -1, + 44, 68, 69, 45, -1, + 45, 69, 70, 46, -1, + 46, 70, 71, 47, -1, + 47, 71, 48, 24, -1, + 48, 72, 73, 49, -1, + 49, 73, 74, 50, -1, + 50, 74, 75, 51, -1, + 51, 75, 76, 52, -1, + 52, 76, 77, 53, -1, + 53, 77, 78, 54, -1, + 54, 78, 79, 55, -1, + 55, 79, 80, 56, -1, + 56, 80, 81, 57, -1, + 57, 81, 82, 58, -1, + 58, 82, 83, 59, -1, + 59, 83, 84, 60, -1, + 60, 84, 85, 61, -1, + 61, 85, 86, 62, -1, + 62, 86, 87, 63, -1, + 63, 87, 88, 64, -1, + 64, 88, 89, 65, -1, + 65, 89, 90, 66, -1, + 66, 90, 91, 67, -1, + 67, 91, 92, 68, -1, + 68, 92, 93, 69, -1, + 69, 93, 94, 70, -1, + 70, 94, 95, 71, -1, + 71, 95, 72, 48, -1, + 72, 96, 97, 73, -1, + 73, 97, 98, 74, -1, + 74, 98, 99, 75, -1, + 75, 99, 100, 76, -1, + 76, 100, 101, 77, -1, + 77, 101, 102, 78, -1, + 78, 102, 103, 79, -1, + 79, 103, 104, 80, -1, + 80, 104, 105, 81, -1, + 81, 105, 106, 82, -1, + 82, 106, 107, 83, -1, + 83, 107, 108, 84, -1, + 84, 108, 109, 85, -1, + 85, 109, 110, 86, -1, + 86, 110, 111, 87, -1, + 87, 111, 112, 88, -1, + 88, 112, 113, 89, -1, + 89, 113, 114, 90, -1, + 90, 114, 115, 91, -1, + 91, 115, 116, 92, -1, + 92, 116, 117, 93, -1, + 93, 117, 118, 94, -1, + 94, 118, 119, 95, -1, + 95, 119, 96, 72, -1, + 96, 120, 121, 97, -1, + 97, 121, 122, 98, -1, + 98, 122, 123, 99, -1, + 99, 123, 124, 100, -1, + 100, 124, 125, 101, -1, + 101, 125, 126, 102, -1, + 102, 126, 127, 103, -1, + 103, 127, 128, 104, -1, + 104, 128, 129, 105, -1, + 105, 129, 130, 106, -1, + 106, 130, 131, 107, -1, + 107, 131, 132, 108, -1, + 108, 132, 133, 109, -1, + 109, 133, 134, 110, -1, + 110, 134, 135, 111, -1, + 111, 135, 136, 112, -1, + 112, 136, 137, 113, -1, + 113, 137, 138, 114, -1, + 114, 138, 139, 115, -1, + 115, 139, 140, 116, -1, + 116, 140, 141, 117, -1, + 117, 141, 142, 118, -1, + 118, 142, 143, 119, -1, + 119, 143, 120, 96, -1, + 120, 144, 145, 121, -1, + 121, 145, 146, 122, -1, + 122, 146, 147, 123, -1, + 123, 147, 148, 124, -1, + 124, 148, 149, 125, -1, + 125, 149, 150, 126, -1, + 126, 150, 151, 127, -1, + 127, 151, 152, 128, -1, + 128, 152, 153, 129, -1, + 129, 153, 154, 130, -1, + 130, 154, 155, 131, -1, + 131, 155, 156, 132, -1, + 132, 156, 157, 133, -1, + 133, 157, 158, 134, -1, + 134, 158, 159, 135, -1, + 135, 159, 160, 136, -1, + 136, 160, 161, 137, -1, + 137, 161, 162, 138, -1, + 138, 162, 163, 139, -1, + 139, 163, 164, 140, -1, + 140, 164, 165, 141, -1, + 141, 165, 166, 142, -1, + 142, 166, 167, 143, -1, + 143, 167, 144, 120, -1, + 144, 168, 169, 145, -1, + 145, 169, 170, 146, -1, + 146, 170, 171, 147, -1, + 147, 171, 172, 148, -1, + 148, 172, 173, 149, -1, + 149, 173, 174, 150, -1, + 150, 174, 175, 151, -1, + 151, 175, 176, 152, -1, + 152, 176, 177, 153, -1, + 153, 177, 178, 154, -1, + 154, 178, 179, 155, -1, + 155, 179, 180, 156, -1, + 156, 180, 181, 157, -1, + 157, 181, 182, 158, -1, + 158, 182, 183, 159, -1, + 159, 183, 184, 160, -1, + 160, 184, 185, 161, -1, + 161, 185, 186, 162, -1, + 162, 186, 187, 163, -1, + 163, 187, 188, 164, -1, + 164, 188, 189, 165, -1, + 165, 189, 190, 166, -1, + 166, 190, 191, 167, -1, + 167, 191, 168, 144, -1, + 168, 192, 169, -1, + 169, 192, 170, -1, + 170, 192, 171, -1, + 171, 192, 172, -1, + 172, 192, 173, -1, + 173, 192, 174, -1, + 174, 192, 175, -1, + 175, 192, 176, -1, + 176, 192, 177, -1, + 177, 192, 178, -1, + 178, 192, 179, -1, + 179, 192, 180, -1, + 180, 192, 181, -1, + 181, 192, 182, -1, + 182, 192, 183, -1, + 183, 192, 184, -1, + 184, 192, 185, -1, + 185, 192, 186, -1, + 186, 192, 187, -1, + 187, 192, 188, -1, + 188, 192, 189, -1, + 189, 192, 190, -1, + 190, 192, 191, -1, + 191, 192, 168, -1, + 193, 0, 1, -1, + 193, 1, 2, -1, + 193, 2, 3, -1, + 193, 3, 4, -1, + 193, 4, 5, -1, + 193, 5, 6, -1, + 193, 6, 7, -1, + 193, 7, 8, -1, + 193, 8, 9, -1, + 193, 9, 10, -1, + 193, 10, 11, -1, + 193, 11, 12, -1, + 193, 12, 13, -1, + 193, 13, 14, -1, + 193, 14, 15, -1, + 193, 15, 16, -1, + 193, 16, 17, -1, + 193, 17, 18, -1, + 193, 18, 19, -1, + 193, 19, 20, -1, + 193, 20, 21, -1, + 193, 21, 22, -1, + 193, 22, 23, -1, + 193, 23, 0, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4polyhedra.wrl b/environments/g4py/tests/gtest05/vrml/g4polyhedra.wrl new file mode 100644 index 0000000000..4fb6508105 --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4polyhedra.wrl @@ -0,0 +1,160 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 123.607 0 350, + 38.1966 117.557 350, + -100 72.6543 350, + -100 -72.6543 350, + 38.1966 -117.557 350, + 123.607 0 320, + 38.1966 117.557 320, + -100 72.6543 320, + -100 -72.6543 320, + 38.1966 -117.557 320, + 49.4427 0 300, + 15.2786 47.0228 300, + -40 29.0617 300, + -40 -29.0617 300, + 15.2786 -47.0228 300, + 49.4427 0 130, + 15.2786 47.0228 130, + -40 29.0617 130, + -40 -29.0617 130, + 15.2786 -47.0228 130, + 185.41 0 80, + 57.2949 176.336 80, + -150 108.981 80, + -150 -108.981 80, + 57.2949 -176.336 80, + 185.41 0 50, + 57.2949 176.336 50, + -150 108.981 50, + -150 -108.981 50, + 57.2949 -176.336 50, + 0 0 0, + 0 0 350, + 0 0 320, + 0 0 300, + 0 0 130, + 0 0 80, + 0 0 50, + ] + } + coordIndex [ + 0, 5, 6, 1, -1, + 1, 6, 7, 2, -1, + 2, 7, 8, 3, -1, + 3, 8, 9, 4, -1, + 4, 9, 5, 0, -1, + 5, 10, 11, 6, -1, + 6, 11, 12, 7, -1, + 7, 12, 13, 8, -1, + 8, 13, 14, 9, -1, + 9, 14, 10, 5, -1, + 10, 15, 16, 11, -1, + 11, 16, 17, 12, -1, + 12, 17, 18, 13, -1, + 13, 18, 19, 14, -1, + 14, 19, 15, 10, -1, + 15, 20, 21, 16, -1, + 16, 21, 22, 17, -1, + 17, 22, 23, 18, -1, + 18, 23, 24, 19, -1, + 19, 24, 20, 15, -1, + 20, 25, 26, 21, -1, + 21, 26, 27, 22, -1, + 22, 27, 28, 23, -1, + 23, 28, 29, 24, -1, + 24, 29, 25, 20, -1, + 25, 30, 26, -1, + 26, 30, 27, -1, + 27, 30, 28, -1, + 28, 30, 29, -1, + 29, 30, 25, -1, + 31, 0, 1, -1, + 31, 1, 2, -1, + 31, 2, 3, -1, + 31, 3, 4, -1, + 31, 4, 0, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4sphere.wrl b/environments/g4py/tests/gtest05/vrml/g4sphere.wrl new file mode 100644 index 0000000000..285c300eac --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4sphere.wrl @@ -0,0 +1,690 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 1 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 0 0 1200, + 310.583 0 1159.11, + 300 80.3848 1159.11, + 268.973 155.291 1159.11, + 219.615 219.615 1159.11, + 155.291 268.973 1159.11, + 80.3848 300 1159.11, + 1.90177e-14 310.583 1159.11, + -80.3848 300 1159.11, + -155.291 268.973 1159.11, + -219.615 219.615 1159.11, + -268.973 155.291 1159.11, + -300 80.3848 1159.11, + -310.583 3.80354e-14 1159.11, + 600 0 1039.23, + 579.555 155.291 1039.23, + 519.615 300 1039.23, + 424.264 424.264 1039.23, + 300 519.615 1039.23, + 155.291 579.555 1039.23, + 3.67394e-14 600 1039.23, + -155.291 579.555 1039.23, + -300 519.615 1039.23, + -424.264 424.264 1039.23, + -519.615 300 1039.23, + -579.555 155.291 1039.23, + -600 7.34788e-14 1039.23, + 848.528 0 848.528, + 819.615 219.615 848.528, + 734.847 424.264 848.528, + 600 600 848.528, + 424.264 734.847 848.528, + 219.615 819.615 848.528, + 5.19574e-14 848.528 848.528, + -219.615 819.615 848.528, + -424.264 734.847 848.528, + -600 600 848.528, + -734.847 424.264 848.528, + -819.615 219.615 848.528, + -848.528 1.03915e-13 848.528, + 1039.23 0 600, + 1003.82 268.973 600, + 900 519.615 600, + 734.847 734.847 600, + 519.615 900 600, + 268.973 1003.82 600, + 6.36345e-14 1039.23 600, + -268.973 1003.82 600, + -519.615 900 600, + -734.847 734.847 600, + -900 519.615 600, + -1003.82 268.973 600, + -1039.23 1.27269e-13 600, + 1159.11 0 310.583, + 1119.62 300 310.583, + 1003.82 579.555 310.583, + 819.615 819.615 310.583, + 579.555 1003.82 310.583, + 300 1119.62 310.583, + 7.09751e-14 1159.11 310.583, + -300 1119.62 310.583, + -579.555 1003.82 310.583, + -819.615 819.615 310.583, + -1003.82 579.555 310.583, + -1119.62 300 310.583, + -1159.11 1.4195e-13 310.583, + 1200 0 7.34788e-14, + 1159.11 310.583 7.34788e-14, + 1039.23 600 7.34788e-14, + 848.528 848.528 7.34788e-14, + 600 1039.23 7.34788e-14, + 310.583 1159.11 7.34788e-14, + 7.34788e-14 1200 7.34788e-14, + -310.583 1159.11 7.34788e-14, + -600 1039.23 7.34788e-14, + -848.528 848.528 7.34788e-14, + -1039.23 600 7.34788e-14, + -1159.11 310.583 7.34788e-14, + -1200 1.46958e-13 7.34788e-14, + 1159.11 0 -310.583, + 1119.62 300 -310.583, + 1003.82 579.555 -310.583, + 819.615 819.615 -310.583, + 579.555 1003.82 -310.583, + 300 1119.62 -310.583, + 7.09751e-14 1159.11 -310.583, + -300 1119.62 -310.583, + -579.555 1003.82 -310.583, + -819.615 819.615 -310.583, + -1003.82 579.555 -310.583, + -1119.62 300 -310.583, + -1159.11 1.4195e-13 -310.583, + 1039.23 0 -600, + 1003.82 268.973 -600, + 900 519.615 -600, + 734.847 734.847 -600, + 519.615 900 -600, + 268.973 1003.82 -600, + 6.36345e-14 1039.23 -600, + -268.973 1003.82 -600, + -519.615 900 -600, + -734.847 734.847 -600, + -900 519.615 -600, + -1003.82 268.973 -600, + -1039.23 1.27269e-13 -600, + 848.528 0 -848.528, + 819.615 219.615 -848.528, + 734.847 424.264 -848.528, + 600 600 -848.528, + 424.264 734.847 -848.528, + 219.615 819.615 -848.528, + 5.19574e-14 848.528 -848.528, + -219.615 819.615 -848.528, + -424.264 734.847 -848.528, + -600 600 -848.528, + -734.847 424.264 -848.528, + -819.615 219.615 -848.528, + -848.528 1.03915e-13 -848.528, + 600 0 -1039.23, + 579.555 155.291 -1039.23, + 519.615 300 -1039.23, + 424.264 424.264 -1039.23, + 300 519.615 -1039.23, + 155.291 579.555 -1039.23, + 3.67394e-14 600 -1039.23, + -155.291 579.555 -1039.23, + -300 519.615 -1039.23, + -424.264 424.264 -1039.23, + -519.615 300 -1039.23, + -579.555 155.291 -1039.23, + -600 7.34788e-14 -1039.23, + 310.583 0 -1159.11, + 300 80.3848 -1159.11, + 268.973 155.291 -1159.11, + 219.615 219.615 -1159.11, + 155.291 268.973 -1159.11, + 80.3848 300 -1159.11, + 1.90177e-14 310.583 -1159.11, + -80.3848 300 -1159.11, + -155.291 268.973 -1159.11, + -219.615 219.615 -1159.11, + -268.973 155.291 -1159.11, + -300 80.3848 -1159.11, + -310.583 3.80354e-14 -1159.11, + 0 0 -1200, + 0 0 1000, + 258.819 0 965.926, + 250 66.9873 965.926, + 224.144 129.41 965.926, + 183.013 183.013 965.926, + 129.41 224.144 965.926, + 66.9873 250 965.926, + 1.58481e-14 258.819 965.926, + -66.9873 250 965.926, + -129.41 224.144 965.926, + -183.013 183.013 965.926, + -224.144 129.41 965.926, + -250 66.9873 965.926, + -258.819 3.16962e-14 965.926, + 500 0 866.025, + 482.963 129.41 866.025, + 433.013 250 866.025, + 353.553 353.553 866.025, + 250 433.013 866.025, + 129.41 482.963 866.025, + 3.06162e-14 500 866.025, + -129.41 482.963 866.025, + -250 433.013 866.025, + -353.553 353.553 866.025, + -433.013 250 866.025, + -482.963 129.41 866.025, + -500 6.12323e-14 866.025, + 707.107 0 707.107, + 683.013 183.013 707.107, + 612.372 353.553 707.107, + 500 500 707.107, + 353.553 612.372 707.107, + 183.013 683.013 707.107, + 4.32978e-14 707.107 707.107, + -183.013 683.013 707.107, + -353.553 612.372 707.107, + -500 500 707.107, + -612.372 353.553 707.107, + -683.013 183.013 707.107, + -707.107 8.65956e-14 707.107, + 866.025 0 500, + 836.516 224.144 500, + 750 433.013 500, + 612.372 612.372 500, + 433.013 750 500, + 224.144 836.516 500, + 5.30288e-14 866.025 500, + -224.144 836.516 500, + -433.013 750 500, + -612.372 612.372 500, + -750 433.013 500, + -836.516 224.144 500, + -866.025 1.06058e-13 500, + 965.926 0 258.819, + 933.013 250 258.819, + 836.516 482.963 258.819, + 683.013 683.013 258.819, + 482.963 836.516 258.819, + 250 933.013 258.819, + 5.91459e-14 965.926 258.819, + -250 933.013 258.819, + -482.963 836.516 258.819, + -683.013 683.013 258.819, + -836.516 482.963 258.819, + -933.013 250 258.819, + -965.926 1.18292e-13 258.819, + 1000 0 6.12323e-14, + 965.926 258.819 6.12323e-14, + 866.025 500 6.12323e-14, + 707.107 707.107 6.12323e-14, + 500 866.025 6.12323e-14, + 258.819 965.926 6.12323e-14, + 6.12323e-14 1000 6.12323e-14, + -258.819 965.926 6.12323e-14, + -500 866.025 6.12323e-14, + -707.107 707.107 6.12323e-14, + -866.025 500 6.12323e-14, + -965.926 258.819 6.12323e-14, + -1000 1.22465e-13 6.12323e-14, + 965.926 0 -258.819, + 933.013 250 -258.819, + 836.516 482.963 -258.819, + 683.013 683.013 -258.819, + 482.963 836.516 -258.819, + 250 933.013 -258.819, + 5.91459e-14 965.926 -258.819, + -250 933.013 -258.819, + -482.963 836.516 -258.819, + -683.013 683.013 -258.819, + -836.516 482.963 -258.819, + -933.013 250 -258.819, + -965.926 1.18292e-13 -258.819, + 866.025 0 -500, + 836.516 224.144 -500, + 750 433.013 -500, + 612.372 612.372 -500, + 433.013 750 -500, + 224.144 836.516 -500, + 5.30288e-14 866.025 -500, + -224.144 836.516 -500, + -433.013 750 -500, + -612.372 612.372 -500, + -750 433.013 -500, + -836.516 224.144 -500, + -866.025 1.06058e-13 -500, + 707.107 0 -707.107, + 683.013 183.013 -707.107, + 612.372 353.553 -707.107, + 500 500 -707.107, + 353.553 612.372 -707.107, + 183.013 683.013 -707.107, + 4.32978e-14 707.107 -707.107, + -183.013 683.013 -707.107, + -353.553 612.372 -707.107, + -500 500 -707.107, + -612.372 353.553 -707.107, + -683.013 183.013 -707.107, + -707.107 8.65956e-14 -707.107, + 500 0 -866.025, + 482.963 129.41 -866.025, + 433.013 250 -866.025, + 353.553 353.553 -866.025, + 250 433.013 -866.025, + 129.41 482.963 -866.025, + 3.06162e-14 500 -866.025, + -129.41 482.963 -866.025, + -250 433.013 -866.025, + -353.553 353.553 -866.025, + -433.013 250 -866.025, + -482.963 129.41 -866.025, + -500 6.12323e-14 -866.025, + 258.819 0 -965.926, + 250 66.9873 -965.926, + 224.144 129.41 -965.926, + 183.013 183.013 -965.926, + 129.41 224.144 -965.926, + 66.9873 250 -965.926, + 1.58481e-14 258.819 -965.926, + -66.9873 250 -965.926, + -129.41 224.144 -965.926, + -183.013 183.013 -965.926, + -224.144 129.41 -965.926, + -250 66.9873 -965.926, + -258.819 3.16962e-14 -965.926, + 0 0 -1000, + ] + } + coordIndex [ + 0, 1, 2, -1, + 0, 2, 3, -1, + 0, 3, 4, -1, + 0, 4, 5, -1, + 0, 5, 6, -1, + 0, 6, 7, -1, + 0, 7, 8, -1, + 0, 8, 9, -1, + 0, 9, 10, -1, + 0, 10, 11, -1, + 0, 11, 12, -1, + 0, 12, 13, -1, + 1, 14, 15, 2, -1, + 2, 15, 16, 3, -1, + 3, 16, 17, 4, -1, + 4, 17, 18, 5, -1, + 5, 18, 19, 6, -1, + 6, 19, 20, 7, -1, + 7, 20, 21, 8, -1, + 8, 21, 22, 9, -1, + 9, 22, 23, 10, -1, + 10, 23, 24, 11, -1, + 11, 24, 25, 12, -1, + 12, 25, 26, 13, -1, + 14, 27, 28, 15, -1, + 15, 28, 29, 16, -1, + 16, 29, 30, 17, -1, + 17, 30, 31, 18, -1, + 18, 31, 32, 19, -1, + 19, 32, 33, 20, -1, + 20, 33, 34, 21, -1, + 21, 34, 35, 22, -1, + 22, 35, 36, 23, -1, + 23, 36, 37, 24, -1, + 24, 37, 38, 25, -1, + 25, 38, 39, 26, -1, + 27, 40, 41, 28, -1, + 28, 41, 42, 29, -1, + 29, 42, 43, 30, -1, + 30, 43, 44, 31, -1, + 31, 44, 45, 32, -1, + 32, 45, 46, 33, -1, + 33, 46, 47, 34, -1, + 34, 47, 48, 35, -1, + 35, 48, 49, 36, -1, + 36, 49, 50, 37, -1, + 37, 50, 51, 38, -1, + 38, 51, 52, 39, -1, + 40, 53, 54, 41, -1, + 41, 54, 55, 42, -1, + 42, 55, 56, 43, -1, + 43, 56, 57, 44, -1, + 44, 57, 58, 45, -1, + 45, 58, 59, 46, -1, + 46, 59, 60, 47, -1, + 47, 60, 61, 48, -1, + 48, 61, 62, 49, -1, + 49, 62, 63, 50, -1, + 50, 63, 64, 51, -1, + 51, 64, 65, 52, -1, + 53, 66, 67, 54, -1, + 54, 67, 68, 55, -1, + 55, 68, 69, 56, -1, + 56, 69, 70, 57, -1, + 57, 70, 71, 58, -1, + 58, 71, 72, 59, -1, + 59, 72, 73, 60, -1, + 60, 73, 74, 61, -1, + 61, 74, 75, 62, -1, + 62, 75, 76, 63, -1, + 63, 76, 77, 64, -1, + 64, 77, 78, 65, -1, + 66, 79, 80, 67, -1, + 67, 80, 81, 68, -1, + 68, 81, 82, 69, -1, + 69, 82, 83, 70, -1, + 70, 83, 84, 71, -1, + 71, 84, 85, 72, -1, + 72, 85, 86, 73, -1, + 73, 86, 87, 74, -1, + 74, 87, 88, 75, -1, + 75, 88, 89, 76, -1, + 76, 89, 90, 77, -1, + 77, 90, 91, 78, -1, + 79, 92, 93, 80, -1, + 80, 93, 94, 81, -1, + 81, 94, 95, 82, -1, + 82, 95, 96, 83, -1, + 83, 96, 97, 84, -1, + 84, 97, 98, 85, -1, + 85, 98, 99, 86, -1, + 86, 99, 100, 87, -1, + 87, 100, 101, 88, -1, + 88, 101, 102, 89, -1, + 89, 102, 103, 90, -1, + 90, 103, 104, 91, -1, + 92, 105, 106, 93, -1, + 93, 106, 107, 94, -1, + 94, 107, 108, 95, -1, + 95, 108, 109, 96, -1, + 96, 109, 110, 97, -1, + 97, 110, 111, 98, -1, + 98, 111, 112, 99, -1, + 99, 112, 113, 100, -1, + 100, 113, 114, 101, -1, + 101, 114, 115, 102, -1, + 102, 115, 116, 103, -1, + 103, 116, 117, 104, -1, + 105, 118, 119, 106, -1, + 106, 119, 120, 107, -1, + 107, 120, 121, 108, -1, + 108, 121, 122, 109, -1, + 109, 122, 123, 110, -1, + 110, 123, 124, 111, -1, + 111, 124, 125, 112, -1, + 112, 125, 126, 113, -1, + 113, 126, 127, 114, -1, + 114, 127, 128, 115, -1, + 115, 128, 129, 116, -1, + 116, 129, 130, 117, -1, + 118, 131, 132, 119, -1, + 119, 132, 133, 120, -1, + 120, 133, 134, 121, -1, + 121, 134, 135, 122, -1, + 122, 135, 136, 123, -1, + 123, 136, 137, 124, -1, + 124, 137, 138, 125, -1, + 125, 138, 139, 126, -1, + 126, 139, 140, 127, -1, + 127, 140, 141, 128, -1, + 128, 141, 142, 129, -1, + 129, 142, 143, 130, -1, + 131, 144, 132, -1, + 132, 144, 133, -1, + 133, 144, 134, -1, + 134, 144, 135, -1, + 135, 144, 136, -1, + 136, 144, 137, -1, + 137, 144, 138, -1, + 138, 144, 139, -1, + 139, 144, 140, -1, + 140, 144, 141, -1, + 141, 144, 142, -1, + 142, 144, 143, -1, + 146, 145, 147, -1, + 147, 145, 148, -1, + 148, 145, 149, -1, + 149, 145, 150, -1, + 150, 145, 151, -1, + 151, 145, 152, -1, + 152, 145, 153, -1, + 153, 145, 154, -1, + 154, 145, 155, -1, + 155, 145, 156, -1, + 156, 145, 157, -1, + 157, 145, 158, -1, + 159, 146, 147, 160, -1, + 160, 147, 148, 161, -1, + 161, 148, 149, 162, -1, + 162, 149, 150, 163, -1, + 163, 150, 151, 164, -1, + 164, 151, 152, 165, -1, + 165, 152, 153, 166, -1, + 166, 153, 154, 167, -1, + 167, 154, 155, 168, -1, + 168, 155, 156, 169, -1, + 169, 156, 157, 170, -1, + 170, 157, 158, 171, -1, + 172, 159, 160, 173, -1, + 173, 160, 161, 174, -1, + 174, 161, 162, 175, -1, + 175, 162, 163, 176, -1, + 176, 163, 164, 177, -1, + 177, 164, 165, 178, -1, + 178, 165, 166, 179, -1, + 179, 166, 167, 180, -1, + 180, 167, 168, 181, -1, + 181, 168, 169, 182, -1, + 182, 169, 170, 183, -1, + 183, 170, 171, 184, -1, + 185, 172, 173, 186, -1, + 186, 173, 174, 187, -1, + 187, 174, 175, 188, -1, + 188, 175, 176, 189, -1, + 189, 176, 177, 190, -1, + 190, 177, 178, 191, -1, + 191, 178, 179, 192, -1, + 192, 179, 180, 193, -1, + 193, 180, 181, 194, -1, + 194, 181, 182, 195, -1, + 195, 182, 183, 196, -1, + 196, 183, 184, 197, -1, + 198, 185, 186, 199, -1, + 199, 186, 187, 200, -1, + 200, 187, 188, 201, -1, + 201, 188, 189, 202, -1, + 202, 189, 190, 203, -1, + 203, 190, 191, 204, -1, + 204, 191, 192, 205, -1, + 205, 192, 193, 206, -1, + 206, 193, 194, 207, -1, + 207, 194, 195, 208, -1, + 208, 195, 196, 209, -1, + 209, 196, 197, 210, -1, + 211, 198, 199, 212, -1, + 212, 199, 200, 213, -1, + 213, 200, 201, 214, -1, + 214, 201, 202, 215, -1, + 215, 202, 203, 216, -1, + 216, 203, 204, 217, -1, + 217, 204, 205, 218, -1, + 218, 205, 206, 219, -1, + 219, 206, 207, 220, -1, + 220, 207, 208, 221, -1, + 221, 208, 209, 222, -1, + 222, 209, 210, 223, -1, + 224, 211, 212, 225, -1, + 225, 212, 213, 226, -1, + 226, 213, 214, 227, -1, + 227, 214, 215, 228, -1, + 228, 215, 216, 229, -1, + 229, 216, 217, 230, -1, + 230, 217, 218, 231, -1, + 231, 218, 219, 232, -1, + 232, 219, 220, 233, -1, + 233, 220, 221, 234, -1, + 234, 221, 222, 235, -1, + 235, 222, 223, 236, -1, + 237, 224, 225, 238, -1, + 238, 225, 226, 239, -1, + 239, 226, 227, 240, -1, + 240, 227, 228, 241, -1, + 241, 228, 229, 242, -1, + 242, 229, 230, 243, -1, + 243, 230, 231, 244, -1, + 244, 231, 232, 245, -1, + 245, 232, 233, 246, -1, + 246, 233, 234, 247, -1, + 247, 234, 235, 248, -1, + 248, 235, 236, 249, -1, + 250, 237, 238, 251, -1, + 251, 238, 239, 252, -1, + 252, 239, 240, 253, -1, + 253, 240, 241, 254, -1, + 254, 241, 242, 255, -1, + 255, 242, 243, 256, -1, + 256, 243, 244, 257, -1, + 257, 244, 245, 258, -1, + 258, 245, 246, 259, -1, + 259, 246, 247, 260, -1, + 260, 247, 248, 261, -1, + 261, 248, 249, 262, -1, + 263, 250, 251, 264, -1, + 264, 251, 252, 265, -1, + 265, 252, 253, 266, -1, + 266, 253, 254, 267, -1, + 267, 254, 255, 268, -1, + 268, 255, 256, 269, -1, + 269, 256, 257, 270, -1, + 270, 257, 258, 271, -1, + 271, 258, 259, 272, -1, + 272, 259, 260, 273, -1, + 273, 260, 261, 274, -1, + 274, 261, 262, 275, -1, + 276, 263, 264, 277, -1, + 277, 264, 265, 278, -1, + 278, 265, 266, 279, -1, + 279, 266, 267, 280, -1, + 280, 267, 268, 281, -1, + 281, 268, 269, 282, -1, + 282, 269, 270, 283, -1, + 283, 270, 271, 284, -1, + 284, 271, 272, 285, -1, + 285, 272, 273, 286, -1, + 286, 273, 274, 287, -1, + 287, 274, 275, 288, -1, + 289, 276, 277, -1, + 289, 277, 278, -1, + 289, 278, 279, -1, + 289, 279, 280, -1, + 289, 280, 281, -1, + 289, 281, 282, -1, + 289, 282, 283, -1, + 289, 283, 284, -1, + 289, 284, 285, -1, + 289, 285, 286, -1, + 289, 286, 287, -1, + 289, 287, 288, -1, + 0, 145, 146, 1, -1, + 13, 158, 145, 0, -1, + 1, 146, 159, 14, -1, + 26, 171, 158, 13, -1, + 14, 159, 172, 27, -1, + 39, 184, 171, 26, -1, + 27, 172, 185, 40, -1, + 52, 197, 184, 39, -1, + 40, 185, 198, 53, -1, + 65, 210, 197, 52, -1, + 53, 198, 211, 66, -1, + 78, 223, 210, 65, -1, + 66, 211, 224, 79, -1, + 91, 236, 223, 78, -1, + 79, 224, 237, 92, -1, + 104, 249, 236, 91, -1, + 92, 237, 250, 105, -1, + 117, 262, 249, 104, -1, + 105, 250, 263, 118, -1, + 130, 275, 262, 117, -1, + 118, 263, 276, 131, -1, + 143, 288, 275, 130, -1, + 131, 276, 289, 144, -1, + 144, 289, 288, 143, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4tet.wrl b/environments/g4py/tests/gtest05/vrml/g4tet.wrl new file mode 100644 index 0000000000..1259f8f3b9 --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4tet.wrl @@ -0,0 +1,96 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 0 0 346.41, + 0 326.599 -115.47, + 282.843 -163.299 -115.47, + -282.843 -163.299 -115.47, + ] + } + coordIndex [ + 0, 2, 1, -1, + 0, 3, 2, -1, + 0, 1, 3, -1, + 1, 2, 3, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4torus.wrl b/environments/g4py/tests/gtest05/vrml/g4torus.wrl new file mode 100644 index 0000000000..3d3edcce0f --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4torus.wrl @@ -0,0 +1,760 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 1 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 2000 0 600, + 1931.85 517.638 600, + 1732.05 1000 600, + 1414.21 1414.21 600, + 1000 1732.05 600, + 517.638 1931.85 600, + 1.22465e-13 2000 600, + 2155.29 0 579.555, + 2081.85 557.83 579.555, + 1866.54 1077.65 579.555, + 1524.02 1524.02 579.555, + 1077.65 1866.54 579.555, + 557.83 2081.85 579.555, + 1.31974e-13 2155.29 579.555, + 2300 0 519.615, + 2221.63 595.284 519.615, + 1991.86 1150 519.615, + 1626.35 1626.35 519.615, + 1150 1991.86 519.615, + 595.284 2221.63 519.615, + 1.40834e-13 2300 519.615, + 2424.26 0 424.264, + 2341.66 627.446 424.264, + 2099.47 1212.13 424.264, + 1714.21 1714.21 424.264, + 1212.13 2099.47 424.264, + 627.446 2341.66 424.264, + 1.48443e-13 2424.26 424.264, + 2519.62 0 300, + 2433.76 652.124 300, + 2182.05 1259.81 300, + 1781.64 1781.64 300, + 1259.81 2182.05 300, + 652.124 2433.76 300, + 1.54282e-13 2519.62 300, + 2579.56 0 155.291, + 2491.66 667.638 155.291, + 2233.96 1289.78 155.291, + 1824.02 1824.02 155.291, + 1289.78 2233.96 155.291, + 667.638 2491.66 155.291, + 1.57952e-13 2579.56 155.291, + 2600 0 3.67394e-14, + 2511.41 672.93 3.67394e-14, + 2251.67 1300 3.67394e-14, + 1838.48 1838.48 3.67394e-14, + 1300 2251.67 3.67394e-14, + 672.93 2511.41 3.67394e-14, + 1.59204e-13 2600 3.67394e-14, + 2579.56 0 -155.291, + 2491.66 667.638 -155.291, + 2233.96 1289.78 -155.291, + 1824.02 1824.02 -155.291, + 1289.78 2233.96 -155.291, + 667.638 2491.66 -155.291, + 1.57952e-13 2579.56 -155.291, + 2519.62 0 -300, + 2433.76 652.124 -300, + 2182.05 1259.81 -300, + 1781.64 1781.64 -300, + 1259.81 2182.05 -300, + 652.124 2433.76 -300, + 1.54282e-13 2519.62 -300, + 2424.26 0 -424.264, + 2341.66 627.446 -424.264, + 2099.47 1212.13 -424.264, + 1714.21 1714.21 -424.264, + 1212.13 2099.47 -424.264, + 627.446 2341.66 -424.264, + 1.48443e-13 2424.26 -424.264, + 2300 0 -519.615, + 2221.63 595.284 -519.615, + 1991.86 1150 -519.615, + 1626.35 1626.35 -519.615, + 1150 1991.86 -519.615, + 595.284 2221.63 -519.615, + 1.40834e-13 2300 -519.615, + 2155.29 0 -579.555, + 2081.85 557.83 -579.555, + 1866.54 1077.65 -579.555, + 1524.02 1524.02 -579.555, + 1077.65 1866.54 -579.555, + 557.83 2081.85 -579.555, + 1.31974e-13 2155.29 -579.555, + 2000 0 -600, + 1931.85 517.638 -600, + 1732.05 1000 -600, + 1414.21 1414.21 -600, + 1000 1732.05 -600, + 517.638 1931.85 -600, + 1.22465e-13 2000 -600, + 1844.71 0 -579.555, + 1781.85 477.446 -579.555, + 1597.56 922.354 -579.555, + 1304.41 1304.41 -579.555, + 922.354 1597.56 -579.555, + 477.446 1781.85 -579.555, + 1.12956e-13 1844.71 -579.555, + 1700 0 -519.615, + 1642.07 439.992 -519.615, + 1472.24 850 -519.615, + 1202.08 1202.08 -519.615, + 850 1472.24 -519.615, + 439.992 1642.07 -519.615, + 1.04095e-13 1700 -519.615, + 1575.74 0 -424.264, + 1522.04 407.83 -424.264, + 1364.63 787.868 -424.264, + 1114.21 1114.21 -424.264, + 787.868 1364.63 -424.264, + 407.83 1522.04 -424.264, + 9.6486e-14 1575.74 -424.264, + 1480.38 0 -300, + 1429.94 383.152 -300, + 1282.05 740.192 -300, + 1046.79 1046.79 -300, + 740.192 1282.05 -300, + 383.152 1429.94 -300, + 9.06474e-14 1480.38 -300, + 1420.44 0 -155.291, + 1372.04 367.638 -155.291, + 1230.14 710.222 -155.291, + 1004.41 1004.41 -155.291, + 710.222 1230.14 -155.291, + 367.638 1372.04 -155.291, + 8.69771e-14 1420.44 -155.291, + 1400 0 -1.10218e-13, + 1352.3 362.347 -1.10218e-13, + 1212.44 700 -1.10218e-13, + 989.949 989.949 -1.10218e-13, + 700 1212.44 -1.10218e-13, + 362.347 1352.3 -1.10218e-13, + 8.57253e-14 1400 -1.10218e-13, + 1420.44 0 155.291, + 1372.04 367.638 155.291, + 1230.14 710.222 155.291, + 1004.41 1004.41 155.291, + 710.222 1230.14 155.291, + 367.638 1372.04 155.291, + 8.69771e-14 1420.44 155.291, + 1480.38 0 300, + 1429.94 383.152 300, + 1282.05 740.192 300, + 1046.79 1046.79 300, + 740.192 1282.05 300, + 383.152 1429.94 300, + 9.06474e-14 1480.38 300, + 1575.74 0 424.264, + 1522.04 407.83 424.264, + 1364.63 787.868 424.264, + 1114.21 1114.21 424.264, + 787.868 1364.63 424.264, + 407.83 1522.04 424.264, + 9.6486e-14 1575.74 424.264, + 1700 0 519.615, + 1642.07 439.992 519.615, + 1472.24 850 519.615, + 1202.08 1202.08 519.615, + 850 1472.24 519.615, + 439.992 1642.07 519.615, + 1.04095e-13 1700 519.615, + 1844.71 0 579.555, + 1781.85 477.446 579.555, + 1597.56 922.354 579.555, + 1304.41 1304.41 579.555, + 922.354 1597.56 579.555, + 477.446 1781.85 579.555, + 1.12956e-13 1844.71 579.555, + 2000 0 400, + 1931.85 517.638 400, + 1732.05 1000 400, + 1414.21 1414.21 400, + 1000 1732.05 400, + 517.638 1931.85 400, + 1.22465e-13 2000 400, + 2103.53 0 386.37, + 2031.85 544.433 386.37, + 1821.71 1051.76 386.37, + 1487.42 1487.42 386.37, + 1051.76 1821.71 386.37, + 544.433 2031.85 386.37, + 1.28804e-13 2103.53 386.37, + 2200 0 346.41, + 2125.04 569.402 346.41, + 1905.26 1100 346.41, + 1555.63 1555.63 346.41, + 1100 1905.26 346.41, + 569.402 2125.04 346.41, + 1.34711e-13 2200 346.41, + 2282.84 0 282.843, + 2205.06 590.843 282.843, + 1977 1141.42 282.843, + 1614.21 1614.21 282.843, + 1141.42 1977 282.843, + 590.843 2205.06 282.843, + 1.39784e-13 2282.84 282.843, + 2346.41 0 200, + 2266.46 607.296 200, + 2032.05 1173.21 200, + 1659.16 1659.16 200, + 1173.21 2032.05 200, + 607.296 2266.46 200, + 1.43676e-13 2346.41 200, + 2386.37 0 103.528, + 2305.06 617.638 103.528, + 2066.66 1193.19 103.528, + 1687.42 1687.42 103.528, + 1193.19 2066.66 103.528, + 617.638 2305.06 103.528, + 1.46123e-13 2386.37 103.528, + 2400 0 2.44929e-14, + 2318.22 621.166 2.44929e-14, + 2078.46 1200 2.44929e-14, + 1697.06 1697.06 2.44929e-14, + 1200 2078.46 2.44929e-14, + 621.166 2318.22 2.44929e-14, + 1.46958e-13 2400 2.44929e-14, + 2386.37 0 -103.528, + 2305.06 617.638 -103.528, + 2066.66 1193.19 -103.528, + 1687.42 1687.42 -103.528, + 1193.19 2066.66 -103.528, + 617.638 2305.06 -103.528, + 1.46123e-13 2386.37 -103.528, + 2346.41 0 -200, + 2266.46 607.296 -200, + 2032.05 1173.21 -200, + 1659.16 1659.16 -200, + 1173.21 2032.05 -200, + 607.296 2266.46 -200, + 1.43676e-13 2346.41 -200, + 2282.84 0 -282.843, + 2205.06 590.843 -282.843, + 1977 1141.42 -282.843, + 1614.21 1614.21 -282.843, + 1141.42 1977 -282.843, + 590.843 2205.06 -282.843, + 1.39784e-13 2282.84 -282.843, + 2200 0 -346.41, + 2125.04 569.402 -346.41, + 1905.26 1100 -346.41, + 1555.63 1555.63 -346.41, + 1100 1905.26 -346.41, + 569.402 2125.04 -346.41, + 1.34711e-13 2200 -346.41, + 2103.53 0 -386.37, + 2031.85 544.433 -386.37, + 1821.71 1051.76 -386.37, + 1487.42 1487.42 -386.37, + 1051.76 1821.71 -386.37, + 544.433 2031.85 -386.37, + 1.28804e-13 2103.53 -386.37, + 2000 0 -400, + 1931.85 517.638 -400, + 1732.05 1000 -400, + 1414.21 1414.21 -400, + 1000 1732.05 -400, + 517.638 1931.85 -400, + 1.22465e-13 2000 -400, + 1896.47 0 -386.37, + 1831.85 490.843 -386.37, + 1642.39 948.236 -386.37, + 1341.01 1341.01 -386.37, + 948.236 1642.39 -386.37, + 490.843 1831.85 -386.37, + 1.16125e-13 1896.47 -386.37, + 1800 0 -346.41, + 1738.67 465.874 -346.41, + 1558.85 900 -346.41, + 1272.79 1272.79 -346.41, + 900 1558.85 -346.41, + 465.874 1738.67 -346.41, + 1.10218e-13 1800 -346.41, + 1717.16 0 -282.843, + 1658.65 444.433 -282.843, + 1487.1 858.579 -282.843, + 1214.21 1214.21 -282.843, + 858.579 1487.1 -282.843, + 444.433 1658.65 -282.843, + 1.05146e-13 1717.16 -282.843, + 1653.59 0 -200, + 1597.25 427.981 -200, + 1432.05 826.795 -200, + 1169.26 1169.26 -200, + 826.795 1432.05 -200, + 427.981 1597.25 -200, + 1.01253e-13 1653.59 -200, + 1613.63 0 -103.528, + 1558.65 417.638 -103.528, + 1397.44 806.815 -103.528, + 1141.01 1141.01 -103.528, + 806.815 1397.44 -103.528, + 417.638 1558.65 -103.528, + 9.88063e-14 1613.63 -103.528, + 1600 0 -7.34788e-14, + 1545.48 414.11 -7.34788e-14, + 1385.64 800 -7.34788e-14, + 1131.37 1131.37 -7.34788e-14, + 800 1385.64 -7.34788e-14, + 414.11 1545.48 -7.34788e-14, + 9.79717e-14 1600 -7.34788e-14, + 1613.63 0 103.528, + 1558.65 417.638 103.528, + 1397.44 806.815 103.528, + 1141.01 1141.01 103.528, + 806.815 1397.44 103.528, + 417.638 1558.65 103.528, + 9.88063e-14 1613.63 103.528, + 1653.59 0 200, + 1597.25 427.981 200, + 1432.05 826.795 200, + 1169.26 1169.26 200, + 826.795 1432.05 200, + 427.981 1597.25 200, + 1.01253e-13 1653.59 200, + 1717.16 0 282.843, + 1658.65 444.433 282.843, + 1487.1 858.579 282.843, + 1214.21 1214.21 282.843, + 858.579 1487.1 282.843, + 444.433 1658.65 282.843, + 1.05146e-13 1717.16 282.843, + 1800 0 346.41, + 1738.67 465.874 346.41, + 1558.85 900 346.41, + 1272.79 1272.79 346.41, + 900 1558.85 346.41, + 465.874 1738.67 346.41, + 1.10218e-13 1800 346.41, + 1896.47 0 386.37, + 1831.85 490.843 386.37, + 1642.39 948.236 386.37, + 1341.01 1341.01 386.37, + 948.236 1642.39 386.37, + 490.843 1831.85 386.37, + 1.16125e-13 1896.47 386.37, + ] + } + coordIndex [ + 0, 7, 8, 1, -1, + 1, 8, 9, 2, -1, + 2, 9, 10, 3, -1, + 3, 10, 11, 4, -1, + 4, 11, 12, 5, -1, + 5, 12, 13, 6, -1, + 7, 14, 15, 8, -1, + 8, 15, 16, 9, -1, + 9, 16, 17, 10, -1, + 10, 17, 18, 11, -1, + 11, 18, 19, 12, -1, + 12, 19, 20, 13, -1, + 14, 21, 22, 15, -1, + 15, 22, 23, 16, -1, + 16, 23, 24, 17, -1, + 17, 24, 25, 18, -1, + 18, 25, 26, 19, -1, + 19, 26, 27, 20, -1, + 21, 28, 29, 22, -1, + 22, 29, 30, 23, -1, + 23, 30, 31, 24, -1, + 24, 31, 32, 25, -1, + 25, 32, 33, 26, -1, + 26, 33, 34, 27, -1, + 28, 35, 36, 29, -1, + 29, 36, 37, 30, -1, + 30, 37, 38, 31, -1, + 31, 38, 39, 32, -1, + 32, 39, 40, 33, -1, + 33, 40, 41, 34, -1, + 35, 42, 43, 36, -1, + 36, 43, 44, 37, -1, + 37, 44, 45, 38, -1, + 38, 45, 46, 39, -1, + 39, 46, 47, 40, -1, + 40, 47, 48, 41, -1, + 42, 49, 50, 43, -1, + 43, 50, 51, 44, -1, + 44, 51, 52, 45, -1, + 45, 52, 53, 46, -1, + 46, 53, 54, 47, -1, + 47, 54, 55, 48, -1, + 49, 56, 57, 50, -1, + 50, 57, 58, 51, -1, + 51, 58, 59, 52, -1, + 52, 59, 60, 53, -1, + 53, 60, 61, 54, -1, + 54, 61, 62, 55, -1, + 56, 63, 64, 57, -1, + 57, 64, 65, 58, -1, + 58, 65, 66, 59, -1, + 59, 66, 67, 60, -1, + 60, 67, 68, 61, -1, + 61, 68, 69, 62, -1, + 63, 70, 71, 64, -1, + 64, 71, 72, 65, -1, + 65, 72, 73, 66, -1, + 66, 73, 74, 67, -1, + 67, 74, 75, 68, -1, + 68, 75, 76, 69, -1, + 70, 77, 78, 71, -1, + 71, 78, 79, 72, -1, + 72, 79, 80, 73, -1, + 73, 80, 81, 74, -1, + 74, 81, 82, 75, -1, + 75, 82, 83, 76, -1, + 77, 84, 85, 78, -1, + 78, 85, 86, 79, -1, + 79, 86, 87, 80, -1, + 80, 87, 88, 81, -1, + 81, 88, 89, 82, -1, + 82, 89, 90, 83, -1, + 84, 91, 92, 85, -1, + 85, 92, 93, 86, -1, + 86, 93, 94, 87, -1, + 87, 94, 95, 88, -1, + 88, 95, 96, 89, -1, + 89, 96, 97, 90, -1, + 91, 98, 99, 92, -1, + 92, 99, 100, 93, -1, + 93, 100, 101, 94, -1, + 94, 101, 102, 95, -1, + 95, 102, 103, 96, -1, + 96, 103, 104, 97, -1, + 98, 105, 106, 99, -1, + 99, 106, 107, 100, -1, + 100, 107, 108, 101, -1, + 101, 108, 109, 102, -1, + 102, 109, 110, 103, -1, + 103, 110, 111, 104, -1, + 105, 112, 113, 106, -1, + 106, 113, 114, 107, -1, + 107, 114, 115, 108, -1, + 108, 115, 116, 109, -1, + 109, 116, 117, 110, -1, + 110, 117, 118, 111, -1, + 112, 119, 120, 113, -1, + 113, 120, 121, 114, -1, + 114, 121, 122, 115, -1, + 115, 122, 123, 116, -1, + 116, 123, 124, 117, -1, + 117, 124, 125, 118, -1, + 119, 126, 127, 120, -1, + 120, 127, 128, 121, -1, + 121, 128, 129, 122, -1, + 122, 129, 130, 123, -1, + 123, 130, 131, 124, -1, + 124, 131, 132, 125, -1, + 126, 133, 134, 127, -1, + 127, 134, 135, 128, -1, + 128, 135, 136, 129, -1, + 129, 136, 137, 130, -1, + 130, 137, 138, 131, -1, + 131, 138, 139, 132, -1, + 133, 140, 141, 134, -1, + 134, 141, 142, 135, -1, + 135, 142, 143, 136, -1, + 136, 143, 144, 137, -1, + 137, 144, 145, 138, -1, + 138, 145, 146, 139, -1, + 140, 147, 148, 141, -1, + 141, 148, 149, 142, -1, + 142, 149, 150, 143, -1, + 143, 150, 151, 144, -1, + 144, 151, 152, 145, -1, + 145, 152, 153, 146, -1, + 147, 154, 155, 148, -1, + 148, 155, 156, 149, -1, + 149, 156, 157, 150, -1, + 150, 157, 158, 151, -1, + 151, 158, 159, 152, -1, + 152, 159, 160, 153, -1, + 154, 161, 162, 155, -1, + 155, 162, 163, 156, -1, + 156, 163, 164, 157, -1, + 157, 164, 165, 158, -1, + 158, 165, 166, 159, -1, + 159, 166, 167, 160, -1, + 161, 0, 1, 162, -1, + 162, 1, 2, 163, -1, + 163, 2, 3, 164, -1, + 164, 3, 4, 165, -1, + 165, 4, 5, 166, -1, + 166, 5, 6, 167, -1, + 175, 168, 169, 176, -1, + 176, 169, 170, 177, -1, + 177, 170, 171, 178, -1, + 178, 171, 172, 179, -1, + 179, 172, 173, 180, -1, + 180, 173, 174, 181, -1, + 182, 175, 176, 183, -1, + 183, 176, 177, 184, -1, + 184, 177, 178, 185, -1, + 185, 178, 179, 186, -1, + 186, 179, 180, 187, -1, + 187, 180, 181, 188, -1, + 189, 182, 183, 190, -1, + 190, 183, 184, 191, -1, + 191, 184, 185, 192, -1, + 192, 185, 186, 193, -1, + 193, 186, 187, 194, -1, + 194, 187, 188, 195, -1, + 196, 189, 190, 197, -1, + 197, 190, 191, 198, -1, + 198, 191, 192, 199, -1, + 199, 192, 193, 200, -1, + 200, 193, 194, 201, -1, + 201, 194, 195, 202, -1, + 203, 196, 197, 204, -1, + 204, 197, 198, 205, -1, + 205, 198, 199, 206, -1, + 206, 199, 200, 207, -1, + 207, 200, 201, 208, -1, + 208, 201, 202, 209, -1, + 210, 203, 204, 211, -1, + 211, 204, 205, 212, -1, + 212, 205, 206, 213, -1, + 213, 206, 207, 214, -1, + 214, 207, 208, 215, -1, + 215, 208, 209, 216, -1, + 217, 210, 211, 218, -1, + 218, 211, 212, 219, -1, + 219, 212, 213, 220, -1, + 220, 213, 214, 221, -1, + 221, 214, 215, 222, -1, + 222, 215, 216, 223, -1, + 224, 217, 218, 225, -1, + 225, 218, 219, 226, -1, + 226, 219, 220, 227, -1, + 227, 220, 221, 228, -1, + 228, 221, 222, 229, -1, + 229, 222, 223, 230, -1, + 231, 224, 225, 232, -1, + 232, 225, 226, 233, -1, + 233, 226, 227, 234, -1, + 234, 227, 228, 235, -1, + 235, 228, 229, 236, -1, + 236, 229, 230, 237, -1, + 238, 231, 232, 239, -1, + 239, 232, 233, 240, -1, + 240, 233, 234, 241, -1, + 241, 234, 235, 242, -1, + 242, 235, 236, 243, -1, + 243, 236, 237, 244, -1, + 245, 238, 239, 246, -1, + 246, 239, 240, 247, -1, + 247, 240, 241, 248, -1, + 248, 241, 242, 249, -1, + 249, 242, 243, 250, -1, + 250, 243, 244, 251, -1, + 252, 245, 246, 253, -1, + 253, 246, 247, 254, -1, + 254, 247, 248, 255, -1, + 255, 248, 249, 256, -1, + 256, 249, 250, 257, -1, + 257, 250, 251, 258, -1, + 259, 252, 253, 260, -1, + 260, 253, 254, 261, -1, + 261, 254, 255, 262, -1, + 262, 255, 256, 263, -1, + 263, 256, 257, 264, -1, + 264, 257, 258, 265, -1, + 266, 259, 260, 267, -1, + 267, 260, 261, 268, -1, + 268, 261, 262, 269, -1, + 269, 262, 263, 270, -1, + 270, 263, 264, 271, -1, + 271, 264, 265, 272, -1, + 273, 266, 267, 274, -1, + 274, 267, 268, 275, -1, + 275, 268, 269, 276, -1, + 276, 269, 270, 277, -1, + 277, 270, 271, 278, -1, + 278, 271, 272, 279, -1, + 280, 273, 274, 281, -1, + 281, 274, 275, 282, -1, + 282, 275, 276, 283, -1, + 283, 276, 277, 284, -1, + 284, 277, 278, 285, -1, + 285, 278, 279, 286, -1, + 287, 280, 281, 288, -1, + 288, 281, 282, 289, -1, + 289, 282, 283, 290, -1, + 290, 283, 284, 291, -1, + 291, 284, 285, 292, -1, + 292, 285, 286, 293, -1, + 294, 287, 288, 295, -1, + 295, 288, 289, 296, -1, + 296, 289, 290, 297, -1, + 297, 290, 291, 298, -1, + 298, 291, 292, 299, -1, + 299, 292, 293, 300, -1, + 301, 294, 295, 302, -1, + 302, 295, 296, 303, -1, + 303, 296, 297, 304, -1, + 304, 297, 298, 305, -1, + 305, 298, 299, 306, -1, + 306, 299, 300, 307, -1, + 308, 301, 302, 309, -1, + 309, 302, 303, 310, -1, + 310, 303, 304, 311, -1, + 311, 304, 305, 312, -1, + 312, 305, 306, 313, -1, + 313, 306, 307, 314, -1, + 315, 308, 309, 316, -1, + 316, 309, 310, 317, -1, + 317, 310, 311, 318, -1, + 318, 311, 312, 319, -1, + 319, 312, 313, 320, -1, + 320, 313, 314, 321, -1, + 322, 315, 316, 323, -1, + 323, 316, 317, 324, -1, + 324, 317, 318, 325, -1, + 325, 318, 319, 326, -1, + 326, 319, 320, 327, -1, + 327, 320, 321, 328, -1, + 329, 322, 323, 330, -1, + 330, 323, 324, 331, -1, + 331, 324, 325, 332, -1, + 332, 325, 326, 333, -1, + 333, 326, 327, 334, -1, + 334, 327, 328, 335, -1, + 168, 329, 330, 169, -1, + 169, 330, 331, 170, -1, + 170, 331, 332, 171, -1, + 171, 332, 333, 172, -1, + 172, 333, 334, 173, -1, + 173, 334, 335, 174, -1, + 0, 168, 175, 7, -1, + 13, 181, 174, 6, -1, + 7, 175, 182, 14, -1, + 20, 188, 181, 13, -1, + 14, 182, 189, 21, -1, + 27, 195, 188, 20, -1, + 21, 189, 196, 28, -1, + 34, 202, 195, 27, -1, + 28, 196, 203, 35, -1, + 41, 209, 202, 34, -1, + 35, 203, 210, 42, -1, + 48, 216, 209, 41, -1, + 42, 210, 217, 49, -1, + 55, 223, 216, 48, -1, + 49, 217, 224, 56, -1, + 62, 230, 223, 55, -1, + 56, 224, 231, 63, -1, + 69, 237, 230, 62, -1, + 63, 231, 238, 70, -1, + 76, 244, 237, 69, -1, + 70, 238, 245, 77, -1, + 83, 251, 244, 76, -1, + 77, 245, 252, 84, -1, + 90, 258, 251, 83, -1, + 84, 252, 259, 91, -1, + 97, 265, 258, 90, -1, + 91, 259, 266, 98, -1, + 104, 272, 265, 97, -1, + 98, 266, 273, 105, -1, + 111, 279, 272, 104, -1, + 105, 273, 280, 112, -1, + 118, 286, 279, 111, -1, + 112, 280, 287, 119, -1, + 125, 293, 286, 118, -1, + 119, 287, 294, 126, -1, + 132, 300, 293, 125, -1, + 126, 294, 301, 133, -1, + 139, 307, 300, 132, -1, + 133, 301, 308, 140, -1, + 146, 314, 307, 139, -1, + 140, 308, 315, 147, -1, + 153, 321, 314, 146, -1, + 147, 315, 322, 154, -1, + 160, 328, 321, 153, -1, + 154, 322, 329, 161, -1, + 167, 335, 328, 160, -1, + 161, 329, 168, 0, -1, + 6, 174, 335, 167, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4trap.wrl b/environments/g4py/tests/gtest05/vrml/g4trap.wrl new file mode 100644 index 0000000000..f382e3a649 --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4trap.wrl @@ -0,0 +1,102 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + -588.082 -419.033 -600, + 11.9181 -419.033 -600, + 252.98 380.967 -600, + -547.02 380.967 -600, + 89.3388 -140.967 600, + 289.339 -140.967 600, + 385.763 179.033 600, + 105.763 179.033 600, + ] + } + coordIndex [ + 0, 3, 2, 1, -1, + 4, 7, 3, 0, -1, + 7, 6, 2, 3, -1, + 6, 5, 1, 2, -1, + 5, 4, 0, 1, -1, + 4, 5, 6, 7, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4trd.wrl b/environments/g4py/tests/gtest05/vrml/g4trd.wrl new file mode 100644 index 0000000000..c21a8e1a6f --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4trd.wrl @@ -0,0 +1,102 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + -300 -400 -600, + 300 -400 -600, + 300 400 -600, + -300 400 -600, + -100 -150 600, + 100 -150 600, + 100 150 600, + -100 150 600, + ] + } + coordIndex [ + 0, 3, 2, 1, -1, + 4, 7, 3, 0, -1, + 7, 6, 2, 3, -1, + 6, 5, 1, 2, -1, + 5, 4, 0, 1, -1, + 4, 5, 6, 7, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4tubs.wrl b/environments/g4py/tests/gtest05/vrml/g4tubs.wrl new file mode 100644 index 0000000000..5e574c1088 --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4tubs.wrl @@ -0,0 +1,190 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 1 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 150 0 200, + 144.889 38.8229 200, + 129.904 75 200, + 106.066 106.066 200, + 75 129.904 200, + 38.8229 144.889 200, + 9.18485e-15 150 200, + -38.8229 144.889 200, + -75 129.904 200, + -106.066 106.066 200, + -129.904 75 200, + -144.889 38.8229 200, + -150 1.83697e-14 200, + 150 0 -200, + 144.889 38.8229 -200, + 129.904 75 -200, + 106.066 106.066 -200, + 75 129.904 -200, + 38.8229 144.889 -200, + 9.18485e-15 150 -200, + -38.8229 144.889 -200, + -75 129.904 -200, + -106.066 106.066 -200, + -129.904 75 -200, + -144.889 38.8229 -200, + -150 1.83697e-14 -200, + 100 0 200, + 96.5926 25.8819 200, + 86.6025 50 200, + 70.7107 70.7107 200, + 50 86.6025 200, + 25.8819 96.5926 200, + 6.12323e-15 100 200, + -25.8819 96.5926 200, + -50 86.6025 200, + -70.7107 70.7107 200, + -86.6025 50 200, + -96.5926 25.8819 200, + -100 1.22465e-14 200, + 100 0 -200, + 96.5926 25.8819 -200, + 86.6025 50 -200, + 70.7107 70.7107 -200, + 50 86.6025 -200, + 25.8819 96.5926 -200, + 6.12323e-15 100 -200, + -25.8819 96.5926 -200, + -50 86.6025 -200, + -70.7107 70.7107 -200, + -86.6025 50 -200, + -96.5926 25.8819 -200, + -100 1.22465e-14 -200, + ] + } + coordIndex [ + 0, 13, 14, 1, -1, + 1, 14, 15, 2, -1, + 2, 15, 16, 3, -1, + 3, 16, 17, 4, -1, + 4, 17, 18, 5, -1, + 5, 18, 19, 6, -1, + 6, 19, 20, 7, -1, + 7, 20, 21, 8, -1, + 8, 21, 22, 9, -1, + 9, 22, 23, 10, -1, + 10, 23, 24, 11, -1, + 11, 24, 25, 12, -1, + 39, 26, 27, 40, -1, + 40, 27, 28, 41, -1, + 41, 28, 29, 42, -1, + 42, 29, 30, 43, -1, + 43, 30, 31, 44, -1, + 44, 31, 32, 45, -1, + 45, 32, 33, 46, -1, + 46, 33, 34, 47, -1, + 47, 34, 35, 48, -1, + 48, 35, 36, 49, -1, + 49, 36, 37, 50, -1, + 50, 37, 38, 51, -1, + 26, 0, 1, 27, -1, + 27, 1, 2, 28, -1, + 28, 2, 3, 29, -1, + 29, 3, 4, 30, -1, + 30, 4, 5, 31, -1, + 31, 5, 6, 32, -1, + 32, 6, 7, 33, -1, + 33, 7, 8, 34, -1, + 34, 8, 9, 35, -1, + 35, 9, 10, 36, -1, + 36, 10, 11, 37, -1, + 37, 11, 12, 38, -1, + 13, 39, 40, 14, -1, + 14, 40, 41, 15, -1, + 15, 41, 42, 16, -1, + 16, 42, 43, 17, -1, + 17, 43, 44, 18, -1, + 18, 44, 45, 19, -1, + 19, 45, 46, 20, -1, + 20, 46, 47, 21, -1, + 21, 47, 48, 22, -1, + 22, 48, 49, 23, -1, + 23, 49, 50, 24, -1, + 24, 50, 51, 25, -1, + 0, 26, 39, 13, -1, + 25, 51, 38, 12, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4twistedbox.wrl b/environments/g4py/tests/gtest05/vrml/g4twistedbox.wrl new file mode 100644 index 0000000000..085b2c147e --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4twistedbox.wrl @@ -0,0 +1,198 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 1 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + -393.305 -308.725 -600, + -200.12 -360.488 -600, + -6.93504 -412.252 -600, + 186.25 -464.016 -600, + -324.287 -51.1444 -600, + -131.102 -102.908 -600, + 62.0834 -154.672 -600, + 255.269 -206.436 -600, + -255.269 206.436 -600, + -62.0834 154.672 -600, + 131.102 102.908 -600, + 324.287 51.1444 -600, + -186.25 464.016 -600, + 6.93504 412.252 -600, + 200.12 360.488 -600, + 393.305 308.725 -600, + -186.25 -464.016 600, + 6.93504 -412.252 600, + 200.12 -360.488 600, + 393.305 -308.725 600, + -255.269 -206.436 600, + -62.0834 -154.672 600, + 131.102 -102.908 600, + 324.287 -51.1444 600, + -324.287 51.1444 600, + -131.102 102.908 600, + 62.0834 154.672 600, + 255.269 206.436 600, + -393.305 308.725 600, + -200.12 360.488 600, + -6.93504 412.252 600, + 186.25 464.016 600, + -333.721 -372.331 -200, + -134.482 -389.762 -200, + 64.7572 -407.193 -200, + 263.996 -424.625 -200, + 287.238 -158.973 -200, + 310.479 106.679 -200, + 333.721 372.331 -200, + 134.482 389.762 -200, + -64.7572 407.193 -200, + -263.996 424.625 -200, + -287.238 158.973 -200, + -310.479 -106.679 -200, + -263.996 -424.625 200, + -64.7572 -407.193 200, + 134.482 -389.762 200, + 333.721 -372.331 200, + 310.479 -106.679 200, + 287.238 158.973 200, + 263.996 424.625 200, + 64.7572 407.193 200, + -134.482 389.762 200, + -333.721 372.331 200, + -310.479 106.679 200, + -287.238 -158.973 200, + ] + } + coordIndex [ + 0, 4, 5, 1, -1, + 1, 5, 6, 2, -1, + 2, 6, 7, 3, -1, + 4, 8, 9, 5, -1, + 5, 9, 10, 6, -1, + 6, 10, 11, 7, -1, + 8, 12, 13, 9, -1, + 9, 13, 14, 10, -1, + 10, 14, 15, 11, -1, + 16, 17, 21, 20, -1, + 17, 18, 22, 21, -1, + 18, 19, 23, 22, -1, + 20, 21, 25, 24, -1, + 21, 22, 26, 25, -1, + 22, 23, 27, 26, -1, + 24, 25, 29, 28, -1, + 25, 26, 30, 29, -1, + 26, 27, 31, 30, -1, + 0, 1, 33, 32, -1, + 1, 2, 34, 33, -1, + 2, 3, 35, 34, -1, + 32, 33, 45, 44, -1, + 33, 34, 46, 45, -1, + 34, 35, 47, 46, -1, + 44, 45, 17, 16, -1, + 45, 46, 18, 17, -1, + 46, 47, 19, 18, -1, + 3, 7, 36, 35, -1, + 7, 11, 37, 36, -1, + 11, 15, 38, 37, -1, + 35, 36, 48, 47, -1, + 36, 37, 49, 48, -1, + 37, 38, 50, 49, -1, + 47, 48, 23, 19, -1, + 48, 49, 27, 23, -1, + 49, 50, 31, 27, -1, + 15, 14, 39, 38, -1, + 14, 13, 40, 39, -1, + 13, 12, 41, 40, -1, + 38, 39, 51, 50, -1, + 39, 40, 52, 51, -1, + 40, 41, 53, 52, -1, + 50, 51, 30, 31, -1, + 51, 52, 29, 30, -1, + 52, 53, 28, 29, -1, + 12, 8, 42, 41, -1, + 8, 4, 43, 42, -1, + 4, 0, 32, 43, -1, + 41, 42, 54, 53, -1, + 42, 43, 55, 54, -1, + 43, 32, 44, 55, -1, + 53, 54, 24, 28, -1, + 54, 55, 20, 24, -1, + 55, 44, 16, 20, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4twistedtrap.wrl b/environments/g4py/tests/gtest05/vrml/g4twistedtrap.wrl new file mode 100644 index 0000000000..65b84140fa --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4twistedtrap.wrl @@ -0,0 +1,198 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + -678.984 -309.503 -600, + -485.799 -361.267 -600, + -292.614 -413.031 -600, + -99.4285 -464.795 -600, + -596.745 -55.4654 -600, + -382.095 -112.981 -600, + -167.444 -170.496 -600, + 47.2058 -228.011 -600, + -514.506 198.572 -600, + -278.39 135.305 -600, + -42.2752 72.0385 -600, + 193.84 8.77163 -600, + -432.266 452.61 -600, + -174.686 383.592 -600, + 82.8941 314.573 -600, + 340.474 245.555 -600, + 135.119 -168.699 600, + 199.514 -151.444 600, + 263.909 -134.189 600, + 328.304 -116.935 600, + 112.8 -64.2496 600, + 185.781 -44.6944 600, + 258.762 -25.1391 600, + 331.743 -5.58392 600, + 90.4805 40.1995 600, + 172.048 62.0553 600, + 253.615 83.9112 600, + 335.182 105.767 600, + 68.1615 144.649 600, + 158.315 168.805 600, + 248.468 192.961 600, + 338.621 217.118 600, + -389.062 -299.873 -200, + -234.099 -313.43 -200, + -79.135 -326.988 -200, + 75.8286 -340.545 -200, + 158.46 -133.626 -200, + 241.092 73.2925 -200, + 323.724 280.211 -200, + 115.63 298.417 -200, + -92.4643 316.623 -200, + -300.558 334.829 -200, + -330.06 123.262 -200, + -359.561 -88.3055 -200, + -114.755 -250.957 200, + -4.06717 -241.273 200, + 106.621 -231.589 200, + 217.309 -221.905 200, + 251.393 -58.3115 200, + 285.477 105.282 200, + 319.561 268.875 200, + 169.025 255.705 200, + 18.4891 242.534 200, + -132.047 229.364 200, + -126.283 69.2572 200, + -120.519 -90.8497 200, + ] + } + coordIndex [ + 0, 4, 5, 1, -1, + 1, 5, 6, 2, -1, + 2, 6, 7, 3, -1, + 4, 8, 9, 5, -1, + 5, 9, 10, 6, -1, + 6, 10, 11, 7, -1, + 8, 12, 13, 9, -1, + 9, 13, 14, 10, -1, + 10, 14, 15, 11, -1, + 16, 17, 21, 20, -1, + 17, 18, 22, 21, -1, + 18, 19, 23, 22, -1, + 20, 21, 25, 24, -1, + 21, 22, 26, 25, -1, + 22, 23, 27, 26, -1, + 24, 25, 29, 28, -1, + 25, 26, 30, 29, -1, + 26, 27, 31, 30, -1, + 0, 1, 33, 32, -1, + 1, 2, 34, 33, -1, + 2, 3, 35, 34, -1, + 32, 33, 45, 44, -1, + 33, 34, 46, 45, -1, + 34, 35, 47, 46, -1, + 44, 45, 17, 16, -1, + 45, 46, 18, 17, -1, + 46, 47, 19, 18, -1, + 3, 7, 36, 35, -1, + 7, 11, 37, 36, -1, + 11, 15, 38, 37, -1, + 35, 36, 48, 47, -1, + 36, 37, 49, 48, -1, + 37, 38, 50, 49, -1, + 47, 48, 23, 19, -1, + 48, 49, 27, 23, -1, + 49, 50, 31, 27, -1, + 15, 14, 39, 38, -1, + 14, 13, 40, 39, -1, + 13, 12, 41, 40, -1, + 38, 39, 51, 50, -1, + 39, 40, 52, 51, -1, + 40, 41, 53, 52, -1, + 50, 51, 30, 31, -1, + 51, 52, 29, 30, -1, + 52, 53, 28, 29, -1, + 12, 8, 42, 41, -1, + 8, 4, 43, 42, -1, + 4, 0, 32, 43, -1, + 41, 42, 54, 53, -1, + 42, 43, 55, 54, -1, + 43, 32, 44, 55, -1, + 53, 54, 24, 28, -1, + 54, 55, 20, 24, -1, + 55, 44, 16, 20, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4twistedtrd.wrl b/environments/g4py/tests/gtest05/vrml/g4twistedtrd.wrl new file mode 100644 index 0000000000..2920326f90 --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4twistedtrd.wrl @@ -0,0 +1,198 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + -393.305 -308.725 -600, + -200.12 -360.488 -600, + -6.93504 -412.252 -600, + 186.25 -464.016 -600, + -324.287 -51.1444 -600, + -131.102 -102.908 -600, + 62.0834 -154.672 -600, + 255.269 -206.436 -600, + -255.269 206.436 -600, + -62.0834 154.672 -600, + 131.102 102.908 -600, + 324.287 51.1444 -600, + -186.25 464.016 -600, + 6.93504 412.252 -600, + 200.12 360.488 -600, + 393.305 308.725 -600, + -57.7697 -170.771 600, + 6.62533 -153.516 600, + 71.0204 -136.262 600, + 135.415 -119.007 600, + -83.6516 -74.1782 600, + -19.2566 -56.9236 600, + 45.1385 -39.669 600, + 109.534 -22.4144 600, + -109.534 22.4144 600, + -45.1385 39.669 600, + 19.2566 56.9236 600, + 83.6516 74.1782 600, + -135.415 119.007 600, + -71.0204 136.262 600, + -6.62533 153.516 600, + 57.7697 170.771 600, + -260.045 -295.125 -200, + -105.081 -308.683 -200, + 49.8825 -322.24 -200, + 204.846 -335.798 -200, + 223.246 -125.49 -200, + 241.645 84.8175 -200, + 260.045 295.125 -200, + 105.081 308.683 -200, + -49.8825 322.24 -200, + -204.846 335.798 -200, + -223.246 125.49 -200, + -241.645 -84.8175 -200, + -145.696 -246.971 200, + -35.0078 -237.287 200, + 75.6805 -227.603 200, + 186.369 -217.919 200, + 172.811 -62.9559 200, + 159.254 92.0078 200, + 145.696 246.971 200, + 35.0078 237.287 200, + -75.6805 227.603 200, + -186.369 217.919 200, + -172.811 62.9559 200, + -159.254 -92.0078 200, + ] + } + coordIndex [ + 0, 4, 5, 1, -1, + 1, 5, 6, 2, -1, + 2, 6, 7, 3, -1, + 4, 8, 9, 5, -1, + 5, 9, 10, 6, -1, + 6, 10, 11, 7, -1, + 8, 12, 13, 9, -1, + 9, 13, 14, 10, -1, + 10, 14, 15, 11, -1, + 16, 17, 21, 20, -1, + 17, 18, 22, 21, -1, + 18, 19, 23, 22, -1, + 20, 21, 25, 24, -1, + 21, 22, 26, 25, -1, + 22, 23, 27, 26, -1, + 24, 25, 29, 28, -1, + 25, 26, 30, 29, -1, + 26, 27, 31, 30, -1, + 0, 1, 33, 32, -1, + 1, 2, 34, 33, -1, + 2, 3, 35, 34, -1, + 32, 33, 45, 44, -1, + 33, 34, 46, 45, -1, + 34, 35, 47, 46, -1, + 44, 45, 17, 16, -1, + 45, 46, 18, 17, -1, + 46, 47, 19, 18, -1, + 3, 7, 36, 35, -1, + 7, 11, 37, 36, -1, + 11, 15, 38, 37, -1, + 35, 36, 48, 47, -1, + 36, 37, 49, 48, -1, + 37, 38, 50, 49, -1, + 47, 48, 23, 19, -1, + 48, 49, 27, 23, -1, + 49, 50, 31, 27, -1, + 15, 14, 39, 38, -1, + 14, 13, 40, 39, -1, + 13, 12, 41, 40, -1, + 38, 39, 51, 50, -1, + 39, 40, 52, 51, -1, + 40, 41, 53, 52, -1, + 50, 51, 30, 31, -1, + 51, 52, 29, 30, -1, + 52, 53, 28, 29, -1, + 12, 8, 42, 41, -1, + 8, 4, 43, 42, -1, + 4, 0, 32, 43, -1, + 41, 42, 54, 53, -1, + 42, 43, 55, 54, -1, + 43, 32, 44, 55, -1, + 53, 54, 24, 28, -1, + 54, 55, 20, 24, -1, + 55, 44, 16, 20, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest05/vrml/g4twistedtubs.wrl b/environments/g4py/tests/gtest05/vrml/g4twistedtubs.wrl new file mode 100644 index 0000000000..017efc4bef --- /dev/null +++ b/environments/g4py/tests/gtest05/vrml/g4twistedtubs.wrl @@ -0,0 +1,566 @@ +#VRML V2.0 utf8 +# Generated by VRML 2.0 driver of GEANT4 + + +#---------- CAMERA +Viewpoint { + position 0 0 452.607 +} + +#---------- SOLID: dummy.0 + Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 1 + transparency 0.7 + } + } + geometry IndexedFaceSet { + coord Coordinate { + point [ + 25.8819 -96.5926 -200, + 46.7269 -88.4115 -200, + 65.2287 -75.7972 -200, + 80.4598 -59.382 -200, + 91.6562 -39.9892 -200, + 98.2566 -18.5912 -200, + 99.9301 3.73912 -200, + 96.5926 25.8819 -200, + 27.7306 -103.492 -200, + 50.0645 -94.7266 -200, + 69.8879 -81.2113 -200, + 86.2069 -63.6236 -200, + 98.2031 -42.8456 -200, + 105.275 -19.9191 -200, + 107.068 4.0062 -200, + 103.492 27.7306 -200, + 29.5793 -110.392 -200, + 53.4021 -101.042 -200, + 74.5471 -86.6253 -200, + 91.954 -67.8652 -200, + 104.75 -45.7019 -200, + 112.293 -21.247 -200, + 114.206 4.27328 -200, + 110.392 29.5793 -200, + 31.428 -117.291 -200, + 56.7398 -107.357 -200, + 79.2063 -92.0394 -200, + 97.7012 -72.1067 -200, + 111.297 -48.5583 -200, + 119.312 -22.575 -200, + 121.344 4.54036 -200, + 117.291 31.428 -200, + 33.2767 -124.19 -200, + 60.0774 -113.672 -200, + 83.8655 -97.4535 -200, + 103.448 -76.3483 -200, + 117.844 -51.4147 -200, + 126.33 -23.9029 -200, + 128.482 4.80744 -200, + 124.19 33.2767 -200, + 35.1254 -131.09 -200, + 63.415 -119.987 -200, + 88.5247 -102.868 -200, + 109.195 -80.5899 -200, + 124.391 -54.2711 -200, + 133.348 -25.2309 -200, + 135.619 5.07452 -200, + 131.09 35.1254 -200, + 36.9741 -137.989 -200, + 66.7527 -126.302 -200, + 93.1839 -108.282 -200, + 114.943 -84.8315 -200, + 130.937 -57.1274 -200, + 140.367 -26.5588 -200, + 142.757 5.3416 -200, + 137.989 36.9741 -200, + 38.8229 -144.889 -200, + 70.0903 -132.617 -200, + 97.8431 -113.696 -200, + 120.69 -89.073 -200, + 137.484 -59.9838 -200, + 147.385 -27.8867 -200, + 149.895 5.60868 -200, + 144.889 38.8229 -200, + 96.5926 -25.8819 200, + 99.9301 -3.73912 200, + 98.2566 18.5912 200, + 91.6562 39.9892 200, + 80.4598 59.382 200, + 65.2287 75.7972 200, + 46.7269 88.4115 200, + 25.8819 96.5926 200, + 103.492 -27.7306 200, + 107.068 -4.0062 200, + 105.275 19.9191 200, + 98.2031 42.8456 200, + 86.2069 63.6236 200, + 69.8879 81.2113 200, + 50.0645 94.7266 200, + 27.7306 103.492 200, + 110.392 -29.5793 200, + 114.206 -4.27328 200, + 112.293 21.247 200, + 104.75 45.7019 200, + 91.954 67.8652 200, + 74.5471 86.6253 200, + 53.4021 101.042 200, + 29.5793 110.392 200, + 117.291 -31.428 200, + 121.344 -4.54036 200, + 119.312 22.575 200, + 111.297 48.5583 200, + 97.7012 72.1067 200, + 79.2063 92.0394 200, + 56.7398 107.357 200, + 31.428 117.291 200, + 124.19 -33.2767 200, + 128.482 -4.80744 200, + 126.33 23.9029 200, + 117.844 51.4147 200, + 103.448 76.3483 200, + 83.8655 97.4535 200, + 60.0774 113.672 200, + 33.2767 124.19 200, + 131.09 -35.1254 200, + 135.619 -5.07452 200, + 133.348 25.2309 200, + 124.391 54.2711 200, + 109.195 80.5899 200, + 88.5247 102.868 200, + 63.415 119.987 200, + 35.1254 131.09 200, + 137.989 -36.9741 200, + 142.757 -5.3416 200, + 140.367 26.5588 200, + 130.937 57.1274 200, + 114.943 84.8315 200, + 93.1839 108.282 200, + 66.7527 126.302 200, + 36.9741 137.989 200, + 144.889 -38.8229 200, + 149.895 -5.60868 200, + 147.385 27.8867 200, + 137.484 59.9838 200, + 120.69 89.073 200, + 97.8431 113.696 200, + 70.0903 132.617 200, + 38.8229 144.889 200, + 40.024 -82.4504 -120, + 57.3675 -71.4771 -120, + 71.8343 -56.9195 -120, + 82.6991 -39.5078 -120, + 89.4169 -20.115 -120, + 91.6511 0.286506 -120, + 89.2894 20.6736 -120, + 82.4504 40.024 -120, + 88.3398 42.8829 -120, + 94.2291 45.7418 -120, + 100.118 48.6006 -120, + 106.008 51.4595 -120, + 111.897 54.3183 -120, + 117.786 57.1772 -120, + 123.676 60.0361 -120, + 133.934 31.0104 -120, + 137.477 0.429759 -120, + 134.125 -30.1724 -120, + 124.049 -59.2617 -120, + 107.751 -85.3793 -120, + 86.0513 -107.216 -120, + 60.0361 -123.676 -120, + 57.1772 -117.786 -120, + 54.3183 -111.897 -120, + 51.4595 -106.008 -120, + 48.6006 -100.118 -120, + 45.7418 -94.2291 -120, + 42.8829 -88.3398 -120, + 54.1662 -68.3083 -40, + 68.0081 -54.5426 -40, + 78.4399 -38.0418 -40, + 84.9384 -19.6335 -40, + 87.1776 -0.240714 -40, + 85.0455 19.1642 -40, + 78.6488 37.6081 -40, + 68.3083 54.1662 -40, + 73.1875 58.0352 -40, + 78.0666 61.9042 -40, + 82.9458 65.7732 -40, + 87.825 69.6422 -40, + 92.7041 73.5112 -40, + 97.5833 77.3803 -40, + 102.462 81.2493 -40, + 117.973 56.4121 -40, + 127.568 28.7463 -40, + 130.766 -0.361071 -40, + 127.408 -29.4503 -40, + 117.66 -57.0628 -40, + 102.012 -81.8139 -40, + 81.2493 -102.462 -40, + 77.3803 -97.5833 -40, + 73.5112 -92.7041 -40, + 69.6422 -87.825 -40, + 65.7732 -82.9458 -40, + 61.9042 -78.0666 -40, + 58.0352 -73.1875 -40, + 68.3083 -54.1662 40, + 78.6488 -37.6081 40, + 85.0455 -19.1642 40, + 87.1776 0.240714 40, + 84.9384 19.6335 40, + 78.4399 38.0418 40, + 68.0081 54.5426 40, + 54.1662 68.3083 40, + 58.0352 73.1875 40, + 61.9042 78.0666 40, + 65.7732 82.9458 40, + 69.6422 87.825 40, + 73.5112 92.7041 40, + 77.3803 97.5833 40, + 81.2493 102.462 40, + 102.012 81.8139 40, + 117.66 57.0628 40, + 127.408 29.4503 40, + 130.766 0.361071 40, + 127.568 -28.7463 40, + 117.973 -56.4121 40, + 102.462 -81.2493 40, + 97.5833 -77.3803 40, + 92.7041 -73.5112 40, + 87.825 -69.6422 40, + 82.9458 -65.7732 40, + 78.0666 -61.9042 40, + 73.1875 -58.0352 40, + 82.4504 -40.024 120, + 89.2894 -20.6736 120, + 91.6511 -0.286506 120, + 89.4169 20.115 120, + 82.6991 39.5078 120, + 71.8343 56.9195 120, + 57.3675 71.4771 120, + 40.024 82.4504 120, + 42.8829 88.3398 120, + 45.7418 94.2291 120, + 48.6006 100.118 120, + 51.4595 106.008 120, + 54.3183 111.897 120, + 57.1772 117.786 120, + 60.0361 123.676 120, + 86.0513 107.216 120, + 107.751 85.3793 120, + 124.049 59.2617 120, + 134.125 30.1724 120, + 137.477 -0.429759 120, + 133.934 -31.0104 120, + 123.676 -60.0361 120, + 117.786 -57.1772 120, + 111.897 -54.3183 120, + 106.008 -51.4595 120, + 100.118 -48.6006 120, + 94.2291 -45.7418 120, + 88.3398 -42.8829 120, + ] + } + coordIndex [ + 0, 1, 9, 8, -1, + 1, 2, 10, 9, -1, + 2, 3, 11, 10, -1, + 3, 4, 12, 11, -1, + 4, 5, 13, 12, -1, + 5, 6, 14, 13, -1, + 6, 7, 15, 14, -1, + 8, 9, 17, 16, -1, + 9, 10, 18, 17, -1, + 10, 11, 19, 18, -1, + 11, 12, 20, 19, -1, + 12, 13, 21, 20, -1, + 13, 14, 22, 21, -1, + 14, 15, 23, 22, -1, + 16, 17, 25, 24, -1, + 17, 18, 26, 25, -1, + 18, 19, 27, 26, -1, + 19, 20, 28, 27, -1, + 20, 21, 29, 28, -1, + 21, 22, 30, 29, -1, + 22, 23, 31, 30, -1, + 24, 25, 33, 32, -1, + 25, 26, 34, 33, -1, + 26, 27, 35, 34, -1, + 27, 28, 36, 35, -1, + 28, 29, 37, 36, -1, + 29, 30, 38, 37, -1, + 30, 31, 39, 38, -1, + 32, 33, 41, 40, -1, + 33, 34, 42, 41, -1, + 34, 35, 43, 42, -1, + 35, 36, 44, 43, -1, + 36, 37, 45, 44, -1, + 37, 38, 46, 45, -1, + 38, 39, 47, 46, -1, + 40, 41, 49, 48, -1, + 41, 42, 50, 49, -1, + 42, 43, 51, 50, -1, + 43, 44, 52, 51, -1, + 44, 45, 53, 52, -1, + 45, 46, 54, 53, -1, + 46, 47, 55, 54, -1, + 48, 49, 57, 56, -1, + 49, 50, 58, 57, -1, + 50, 51, 59, 58, -1, + 51, 52, 60, 59, -1, + 52, 53, 61, 60, -1, + 53, 54, 62, 61, -1, + 54, 55, 63, 62, -1, + 64, 72, 73, 65, -1, + 65, 73, 74, 66, -1, + 66, 74, 75, 67, -1, + 67, 75, 76, 68, -1, + 68, 76, 77, 69, -1, + 69, 77, 78, 70, -1, + 70, 78, 79, 71, -1, + 72, 80, 81, 73, -1, + 73, 81, 82, 74, -1, + 74, 82, 83, 75, -1, + 75, 83, 84, 76, -1, + 76, 84, 85, 77, -1, + 77, 85, 86, 78, -1, + 78, 86, 87, 79, -1, + 80, 88, 89, 81, -1, + 81, 89, 90, 82, -1, + 82, 90, 91, 83, -1, + 83, 91, 92, 84, -1, + 84, 92, 93, 85, -1, + 85, 93, 94, 86, -1, + 86, 94, 95, 87, -1, + 88, 96, 97, 89, -1, + 89, 97, 98, 90, -1, + 90, 98, 99, 91, -1, + 91, 99, 100, 92, -1, + 92, 100, 101, 93, -1, + 93, 101, 102, 94, -1, + 94, 102, 103, 95, -1, + 96, 104, 105, 97, -1, + 97, 105, 106, 98, -1, + 98, 106, 107, 99, -1, + 99, 107, 108, 100, -1, + 100, 108, 109, 101, -1, + 101, 109, 110, 102, -1, + 102, 110, 111, 103, -1, + 104, 112, 113, 105, -1, + 105, 113, 114, 106, -1, + 106, 114, 115, 107, -1, + 107, 115, 116, 108, -1, + 108, 116, 117, 109, -1, + 109, 117, 118, 110, -1, + 110, 118, 119, 111, -1, + 112, 120, 121, 113, -1, + 113, 121, 122, 114, -1, + 114, 122, 123, 115, -1, + 115, 123, 124, 116, -1, + 116, 124, 125, 117, -1, + 117, 125, 126, 118, -1, + 118, 126, 127, 119, -1, + 0, 128, 129, 1, -1, + 1, 129, 130, 2, -1, + 2, 130, 131, 3, -1, + 3, 131, 132, 4, -1, + 4, 132, 133, 5, -1, + 5, 133, 134, 6, -1, + 6, 134, 135, 7, -1, + 128, 156, 157, 129, -1, + 129, 157, 158, 130, -1, + 130, 158, 159, 131, -1, + 131, 159, 160, 132, -1, + 132, 160, 161, 133, -1, + 133, 161, 162, 134, -1, + 134, 162, 163, 135, -1, + 156, 184, 185, 157, -1, + 157, 185, 186, 158, -1, + 158, 186, 187, 159, -1, + 159, 187, 188, 160, -1, + 160, 188, 189, 161, -1, + 161, 189, 190, 162, -1, + 162, 190, 191, 163, -1, + 184, 212, 213, 185, -1, + 185, 213, 214, 186, -1, + 186, 214, 215, 187, -1, + 187, 215, 216, 188, -1, + 188, 216, 217, 189, -1, + 189, 217, 218, 190, -1, + 190, 218, 219, 191, -1, + 212, 64, 65, 213, -1, + 213, 65, 66, 214, -1, + 214, 66, 67, 215, -1, + 215, 67, 68, 216, -1, + 216, 68, 69, 217, -1, + 217, 69, 70, 218, -1, + 218, 70, 71, 219, -1, + 7, 135, 136, 15, -1, + 15, 136, 137, 23, -1, + 23, 137, 138, 31, -1, + 31, 138, 139, 39, -1, + 39, 139, 140, 47, -1, + 47, 140, 141, 55, -1, + 55, 141, 142, 63, -1, + 135, 163, 164, 136, -1, + 136, 164, 165, 137, -1, + 137, 165, 166, 138, -1, + 138, 166, 167, 139, -1, + 139, 167, 168, 140, -1, + 140, 168, 169, 141, -1, + 141, 169, 170, 142, -1, + 163, 191, 192, 164, -1, + 164, 192, 193, 165, -1, + 165, 193, 194, 166, -1, + 166, 194, 195, 167, -1, + 167, 195, 196, 168, -1, + 168, 196, 197, 169, -1, + 169, 197, 198, 170, -1, + 191, 219, 220, 192, -1, + 192, 220, 221, 193, -1, + 193, 221, 222, 194, -1, + 194, 222, 223, 195, -1, + 195, 223, 224, 196, -1, + 196, 224, 225, 197, -1, + 197, 225, 226, 198, -1, + 219, 71, 79, 220, -1, + 220, 79, 87, 221, -1, + 221, 87, 95, 222, -1, + 222, 95, 103, 223, -1, + 223, 103, 111, 224, -1, + 224, 111, 119, 225, -1, + 225, 119, 127, 226, -1, + 63, 142, 143, 62, -1, + 62, 143, 144, 61, -1, + 61, 144, 145, 60, -1, + 60, 145, 146, 59, -1, + 59, 146, 147, 58, -1, + 58, 147, 148, 57, -1, + 57, 148, 149, 56, -1, + 142, 170, 171, 143, -1, + 143, 171, 172, 144, -1, + 144, 172, 173, 145, -1, + 145, 173, 174, 146, -1, + 146, 174, 175, 147, -1, + 147, 175, 176, 148, -1, + 148, 176, 177, 149, -1, + 170, 198, 199, 171, -1, + 171, 199, 200, 172, -1, + 172, 200, 201, 173, -1, + 173, 201, 202, 174, -1, + 174, 202, 203, 175, -1, + 175, 203, 204, 176, -1, + 176, 204, 205, 177, -1, + 198, 226, 227, 199, -1, + 199, 227, 228, 200, -1, + 200, 228, 229, 201, -1, + 201, 229, 230, 202, -1, + 202, 230, 231, 203, -1, + 203, 231, 232, 204, -1, + 204, 232, 233, 205, -1, + 226, 127, 126, 227, -1, + 227, 126, 125, 228, -1, + 228, 125, 124, 229, -1, + 229, 124, 123, 230, -1, + 230, 123, 122, 231, -1, + 231, 122, 121, 232, -1, + 232, 121, 120, 233, -1, + 56, 149, 150, 48, -1, + 48, 150, 151, 40, -1, + 40, 151, 152, 32, -1, + 32, 152, 153, 24, -1, + 24, 153, 154, 16, -1, + 16, 154, 155, 8, -1, + 8, 155, 128, 0, -1, + 149, 177, 178, 150, -1, + 150, 178, 179, 151, -1, + 151, 179, 180, 152, -1, + 152, 180, 181, 153, -1, + 153, 181, 182, 154, -1, + 154, 182, 183, 155, -1, + 155, 183, 156, 128, -1, + 177, 205, 206, 178, -1, + 178, 206, 207, 179, -1, + 179, 207, 208, 180, -1, + 180, 208, 209, 181, -1, + 181, 209, 210, 182, -1, + 182, 210, 211, 183, -1, + 183, 211, 184, 156, -1, + 205, 233, 234, 206, -1, + 206, 234, 235, 207, -1, + 207, 235, 236, 208, -1, + 208, 236, 237, 209, -1, + 209, 237, 238, 210, -1, + 210, 238, 239, 211, -1, + 211, 239, 212, 184, -1, + 233, 120, 112, 234, -1, + 234, 112, 104, 235, -1, + 235, 104, 96, 236, -1, + 236, 96, 88, 237, -1, + 237, 88, 80, 238, -1, + 238, 80, 72, 239, -1, + 239, 72, 64, 212, -1, + ] + solid FALSE + } + } +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 1 0 0 + emissiveColor 1 0 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 100 0 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 1 0 + emissiveColor 0 1 0 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 100 0, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#---------- POLYLINE +Shape { + appearance Appearance { + material Material { + diffuseColor 0 0 1 + emissiveColor 0 0 1 + } + } + geometry IndexedLineSet { + coord Coordinate { + point [ + 0 0 0, + 0 0 100, + ] + } + coordIndex [ + 0, 1, -1 + ] + } +} +#End of file. diff --git a/environments/g4py/tests/gtest06/jpg/intersection.jpg b/environments/g4py/tests/gtest06/jpg/intersection.jpg new file mode 100644 index 0000000000..4d63759d67 Binary files /dev/null and b/environments/g4py/tests/gtest06/jpg/intersection.jpg differ diff --git a/environments/g4py/tests/gtest06/jpg/subtraction.jpg b/environments/g4py/tests/gtest06/jpg/subtraction.jpg new file mode 100644 index 0000000000..6e06dbd282 Binary files /dev/null and b/environments/g4py/tests/gtest06/jpg/subtraction.jpg differ diff --git a/environments/g4py/tests/gtest06/jpg/union.jpg b/environments/g4py/tests/gtest06/jpg/union.jpg new file mode 100644 index 0000000000..4ff0a7272c Binary files /dev/null and b/environments/g4py/tests/gtest06/jpg/union.jpg differ diff --git a/environments/g4py/tests/gtest06/test.py b/environments/g4py/tests/gtest06/test.py new file mode 100755 index 0000000000..d0cf900744 --- /dev/null +++ b/environments/g4py/tests/gtest06/test.py @@ -0,0 +1,130 @@ +#!/usr/bin/python +# ================================================================== +# python script for Geant4Py test +# +# gtest06 +# - test for constructing/visualizing boolean geoemtries +# ================================================================== +from Geant4 import * +import ExN01pl, ParticleGun + +# ================================================================== +# user actions in python +# ================================================================== +class MyDetectorConstruction(G4VUserDetectorConstruction): + "My Detector Construction" + + def __init__(self): + G4VUserDetectorConstruction.__init__(self) + self.air= gNistManager.FindOrBuildMaterial("G4_AIR") + self.lv_object= None + self.world= self.ConstructWorld() + + self.va_red= G4VisAttributes(G4Color(1.,0.,0.)) + self.va_cyan= G4VisAttributes(G4Color(0.,1.,1.)) + self.va_green= G4VisAttributes(G4Color(0.,1.,0.)) + self.va_blue= G4VisAttributes(G4Color(0.,0.,1.)) + self.va_magenta= G4VisAttributes(G4Color(1.,0.,1.)) + + self.sld_box= G4Box("box",20.*cm, 20.*cm, 20.*cm); + self.sld_cyl= G4Tubs("cylinder",0., 10.*cm, 30.*cm, 0., twopi) + + # ----------------------------------------------------------------- + def ConstructWorld(self): + # Python has automatic garbage collection system. + # Geometry objects must be defined as GLOBAL not to be deleted. + global sld_world, lv_world, pv_world, va_world + + sld_world= G4Box("world", 1.*m, 1.*m, 1.*m) + lv_world= G4LogicalVolume(sld_world, self.air, "world") + pv_world= G4PVPlacement(G4Transform3D(), lv_world, "world", + None, False, 0) + + va_world= G4VisAttributes() + va_world.SetVisibility(False) + lv_world.SetVisAttributes(va_world) + + # solid object (dummy) + global sld_sld, lv_sld, pv_sld + sld_sld= G4Box("dummy", 10.*cm, 10.*cm, 10.*cm) + self.lv_object= lv_sld= G4LogicalVolume(sld_sld, self.air, "dummy") + pv_sld= G4PVPlacement(None, G4ThreeVector(), "dummy", lv_sld, + pv_world, False, 0) + + return pv_world + + # ----------------------------------------------------------------- + def ConstructUnion(self): + global sld_union + sld_union= G4UnionSolid("box+cylinder", self.sld_box, self.sld_cyl); + + self.lv_object.SetSolid(sld_union) + self.lv_object.SetVisAttributes(self.va_blue) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructIntersection(self): + offset= G4ThreeVector(20.*cm, 20.*cm, 0.) + global sld_intersection + sld_intersection= G4IntersectionSolid("box*cylinder", + self.sld_box, self.sld_cyl, + None, offset) + + self.lv_object.SetSolid(sld_intersection) + self.lv_object.SetVisAttributes(self.va_magenta) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def ConstructSubtraction(self): + global sld_subtraction + sld_subtraction= G4SubtractionSolid("box-cylinder", + self.sld_box, self.sld_cyl) + + self.lv_object.SetSolid(sld_subtraction) + self.lv_object.SetVisAttributes(self.va_red) + gRunManager.GeometryHasBeenModified() + + # ----------------------------------------------------------------- + def Construct(self): # return the world volume + 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 +if(q_raytracer_x): + gApplyUICommand("/vis/open RayTracerX") +else: + gApplyUICommand("/vis/open RayTracer") + +gApplyUICommand("/vis/rayTracer/headAngle 40.") +gApplyUICommand("/vis/rayTracer/eyePosition 100 100 150 cm") + +# create a vrml file for each solid type +f_list= ( + ("union", myDC.ConstructUnion), + ("intersection", myDC.ConstructIntersection), + ("subtraction", myDC.ConstructSubtraction) + ) + + +for s,f in f_list: + f.__call__() + fname= "%s.jpg" % (s) + cmdstr= "/vis/rayTracer/trace " + fname + gApplyUICommand(cmdstr) + + diff --git a/environments/g4py/tests/gtest07/test.py b/environments/g4py/tests/gtest07/test.py new file mode 100755 index 0000000000..09660577ca --- /dev/null +++ b/environments/g4py/tests/gtest07/test.py @@ -0,0 +1,80 @@ +#!/usr/bin/python +# ================================================================== +# python script for Geant4Py test +# +# gtest07 +# - test for checking overlapped geometries +# ================================================================== +from Geant4 import * +import ExN01pl, ParticleGun + +# ================================================================== +# user actions in python +# ================================================================== +class MyDetectorConstruction(G4VUserDetectorConstruction): + "My Detector Construction" + + def __init__(self): + G4VUserDetectorConstruction.__init__(self) + + # ----------------------------------------------------------------- + def Construct(self): + # Python has automatic garbage collection system. + # Geometry objects must be defined as GLOBAL not to be deleted. + air= gNistManager.FindOrBuildMaterial("G4_AIR") + + # world volume + global sld_world, lv_world, pv_world + sld_world= G4Box("world", 1.*m, 1.*m, 1.*m) + lv_world= G4LogicalVolume(sld_world, air, "world") + pv_world= G4PVPlacement(G4Transform3D(), lv_world, "world", + None, False, 0) + + # box + global sld_box, lv_box, pv_box + sld_box= G4Box("box", 10.*cm, 10.*cm, 10.*cm); + lv_box= G4LogicalVolume(sld_box, air, "box") + pv_box= G4PVPlacement(None, G4ThreeVector(), "box", lv_box, + pv_world, False, 0, True) + + # cylinder + global sld_cyl, lv_cyl, pv_cyl1, pv_cyl2, pv_cyl3 + sld_cyl= G4Tubs("cylinder",0., 2.*cm, 2.*cm, 0., twopi) + lv_cyl= G4LogicalVolume(sld_cyl, air, "cylinder") + + # + # the following placements are !! overlapped !! + # + # doubly placed + pv_cyl1= G4PVPlacement(None, G4ThreeVector(), "cylinder", lv_cyl, + pv_world, False, 0, True) + + # overlaped + pv_cyl2= G4PVPlacement(None, G4ThreeVector(10.*cm,0.,0.), + "cylinder", lv_cyl, + pv_world, False, 1, True) + + # sticked out + pv_cyl3= G4PVPlacement(None, G4ThreeVector(10.*cm,0.,0.), + "cylinder", lv_cyl, + pv_box, False, 0, True) + + return pv_world + +# ================================================================== +# main +# ================================================================== +# set geometry +myDC= MyDetectorConstruction() +gRunManager.SetUserInitialization(myDC) + +# minimal physics list +ExN01pl.Construct() + +# set primary generator action +ParticleGun.Construct() + +# initialize +gRunManager.Initialize() # overlap should be detected !! + + diff --git a/environments/g4py/tests/test06/test06.cc b/environments/g4py/tests/test06/test06.cc index 04d0800ad7..9bcda4787a 100644 --- a/environments/g4py/tests/test06/test06.cc +++ b/environments/g4py/tests/test06/test06.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: test06.cc,v 1.4 2006/06/29 15:38:55 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // test06.cc // diff --git a/environments/g4py/tests/test07/test07.cc b/environments/g4py/tests/test07/test07.cc index 4fb8218662..0018053f31 100644 --- a/environments/g4py/tests/test07/test07.cc +++ b/environments/g4py/tests/test07/test07.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: test07.cc,v 1.4 2006/06/29 15:39:08 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // test07.cc // diff --git a/environments/g4py/tests/test08/test08.cc b/environments/g4py/tests/test08/test08.cc index 5a1fc45e36..97851a408f 100644 --- a/environments/g4py/tests/test08/test08.cc +++ b/environments/g4py/tests/test08/test08.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: test08.cc,v 1.4 2006/06/29 15:39:11 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // test08.cc // diff --git a/environments/g4py/tests/test09/test09.cc b/environments/g4py/tests/test09/test09.cc index e034171344..1d50631133 100644 --- a/environments/g4py/tests/test09/test09.cc +++ b/environments/g4py/tests/test09/test09.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: test09.cc,v 1.4 2006/06/29 15:39:14 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // test09.cc // diff --git a/environments/g4py/tests/test10/test10.cc b/environments/g4py/tests/test10/test10.cc index 81ffb0b068..eadfb3ebce 100644 --- a/environments/g4py/tests/test10/test10.cc +++ b/environments/g4py/tests/test10/test10.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: test10.cc,v 1.4 2006/06/29 15:39:17 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // test10.cc // diff --git a/environments/g4py/tests/test11/test11.cc b/environments/g4py/tests/test11/test11.cc index 75322ee684..b18a5ade38 100644 --- a/environments/g4py/tests/test11/test11.cc +++ b/environments/g4py/tests/test11/test11.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: test11.cc,v 1.4 2006/06/29 15:39:20 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // test11.cc // diff --git a/environments/g4py/tests/test12/test.py b/environments/g4py/tests/test12/test.py index 30f6e9f17a..6d23c724e0 100755 --- a/environments/g4py/tests/test12/test.py +++ b/environments/g4py/tests/test12/test.py @@ -16,9 +16,7 @@ c= test12.AClass() c.ival=30 v= test12.AVector() -v.push_back(a) -v.push_back(b) -v.push_back(c) +v[:]= [a, b, c] print "*** size of vector= ", len(v) x=v[0] diff --git a/environments/g4py/tests/test12/test12.cc b/environments/g4py/tests/test12/test12.cc index 903179d188..981c144bbe 100644 --- a/environments/g4py/tests/test12/test12.cc +++ b/environments/g4py/tests/test12/test12.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: test12.cc,v 1.4 2006/06/29 15:39:23 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // test12.cc // diff --git a/environments/g4py/tests/test13/test13.cc b/environments/g4py/tests/test13/test13.cc index 268d09bdd1..575a276cd8 100644 --- a/environments/g4py/tests/test13/test13.cc +++ b/environments/g4py/tests/test13/test13.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: test13.cc,v 1.4 2006/06/29 15:39:25 gunter Exp $ -// $Name: geant4-09-00 $ +// $Name: geant4-09-01 $ // ==================================================================== // test13.cc // diff --git a/environments/g4py/tools/g4autobuild/g4auto.cfg b/environments/g4py/tools/g4autobuild/g4auto.cfg index 2eb9a96348..6f378bc1e2 100644 --- a/environments/g4py/tools/g4autobuild/g4auto.cfg +++ b/environments/g4py/tools/g4autobuild/g4auto.cfg @@ -32,7 +32,7 @@ CLHEPBASE /opt/heplib/CLHEP # v DAWN v VRML -v RAYTRACERX_DRIVER +v RAYTRACERX v OPENGLX # diff --git a/examples/History b/examples/History index d45cb02dd3..32af4191c3 100644 --- a/examples/History +++ b/examples/History @@ -1,4 +1,4 @@ -$Id: History,v 1.124 2007/06/26 12:53:40 gcosmo Exp $ +$Id: History,v 1.129 2007/12/13 14:54:23 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,36 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +13th December 2007 Gabriele Cosmo (examples-V09-01-00) +- Updated reference outputs according to reference tag geant4-09-01-ref-00. +- Includes tags: hadrontherapy-V09-00-00, DMX-V09-00-02, testem1-V09-00-01, + testem3-V09-00-02, testem5-V09-00-07, testem7-V09-00-10, + testem8-V09-00-05, testem9-V09-00-00, testem11-V09-00-01, + testem12-V09-00-01, testem14-V09-00-01, testem15-V09-00-00, + testem18-V09-00-01, exgdml-V09-00-02, exhadr01-V09-00-03, + DICOM-V09-00-01, fano-V09-00-08, fano2-V09-00-01, + exparallel-V09-00-00, exampleP02-V09-00-00, expol01-V09-00-01, + exrdm-V09-00-02, exampleN03-V09-00-01, exampleN05-V09-00-00. + +2nd November 2007 Gabriele Cosmo (examples-V09-00-03) +- Updated reference outputs according to reference tag geant4-09-00-ref-03. +- Includes tags: fieldex04-V09-00-01, fano-V09-00-06, exampleN02-V09-00-02. + +12th October 2007 Gabriele Cosmo (examples-V09-00-02) +- Updated reference outputs according to reference tag geant4-09-00-ref-02. +- Includes tags: air_shower-V09-00-00, Rich-V09-00-00, LXe-V09-00-00, + testem8-V09-00-04, fano-V09-00-04, exampleN06-V09-00-00. + +31st August 2007 Gabriele Cosmo (examples-V09-00-01) +- Updated reference outputs according to reference tag geant4-09-00-ref-01. +- Includes tags: medical_linac-V08-03-02, microbeam-V09-00-03, DMX-V09-00-01, + testem1-V09-00-00, testem2-V09-00-00, testem3-V09-00-00, + testem5-V09-00-01, testem7-V09-00-02, testem8-V09-00-02, + testem10-V09-00-00, testem11-V09-00-00, testem12-V09-00-00, + testem13-V09-00-00, testem14-V09-00-00, monopole-V09-00-00, + fano-V09-00-01, gtherapy-V09-00-00, exampleN02-V09-00-01, + exampleN03-V09-00-00, exampleN04-V09-00-00, exrdm-V09-00-00. + 26th June 2007 Gabriele Cosmo (examples-V09-00-00) - Updated reference outputs according to reference tag geant4-09-00-ref-00. - Includes tags: brachy-V08-03-00, cosmicray_charging-V08-03-00, diff --git a/examples/README b/examples/README index d628999275..334879308b 100644 --- a/examples/README +++ b/examples/README @@ -1,4 +1,4 @@ -$Id: README,v 1.11 2007/06/12 09:34:33 gcosmo Exp $ +$Id: README,v 1.12 2007/08/28 10:20:39 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -62,6 +62,8 @@ Extended level examples - Use of the error propagation utility (Geant4e). eventgenerator - Applications using interface to HepMC + exoticphysics + - Exotic simulation applications (classical magnetic monopole, etc...) field - Specific simulation setups in magnetic field g3tog3 diff --git a/examples/advanced/Rich/History b/examples/advanced/Rich/History index 633e976049..693fa25b52 100644 --- a/examples/advanced/Rich/History +++ b/examples/advanced/Rich/History @@ -1,5 +1,5 @@ ------------------------------------------------------------------- -$Id: History,v 1.10 2007/05/14 07:50:42 ribon Exp $ +$Id: History,v 1.11 2007/09/30 23:00:40 gum Exp $ ------------------------------------------------------------------- ========================================================= @@ -9,6 +9,9 @@ $Id: History,v 1.10 2007/05/14 07:50:42 ribon Exp $ Category History file --------------------- +30.09.2007 - P.Gumplinger (Rich-V09-00-00) + adjust to the G4Cerenkov process now being a G4VDiscreteProcess + 14.05.2007 - A.Ribon (Rich-V08-03-00) The constant "kCarTolerance" is no longer available, so it must be explicitly declared. diff --git a/examples/advanced/Rich/src/RichTbPhysicsList.cc b/examples/advanced/Rich/src/RichTbPhysicsList.cc index 80ce409d37..8f6fe0fc6e 100644 --- a/examples/advanced/Rich/src/RichTbPhysicsList.cc +++ b/examples/advanced/Rich/src/RichTbPhysicsList.cc @@ -267,7 +267,8 @@ void RichTbPhysicsList::ConstructOp() G4ProcessManager* pmanager = particle->GetProcessManager(); G4String particleName = particle->GetParticleName(); if (theCerenkovProcess->IsApplicable(*particle)) { - pmanager->AddContinuousProcess(theCerenkovProcess); + pmanager->AddProcess(theCerenkovProcess); + pmanager->SetProcessOrdering(theCerenkovProcess,idxPostStep); } if (particleName == "opticalphoton") { G4cout << " AddDiscreteProcess to OpticalPhoton " << G4endl; diff --git a/examples/advanced/Tiara/GNUmakefile b/examples/advanced/Tiara/GNUmakefile index 31c0a0aba4..2cd8c768b2 100644 --- a/examples/advanced/Tiara/GNUmakefile +++ b/examples/advanced/Tiara/GNUmakefile @@ -1,6 +1,6 @@ # $Id: GNUmakefile,v 1.7 2004/12/08 15:37:13 daquinog Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # -------------------------------------------------------------- diff --git a/examples/advanced/Tiara/History b/examples/advanced/Tiara/History index 0cf1d1d719..6f3b869afb 100644 --- a/examples/advanced/Tiara/History +++ b/examples/advanced/Tiara/History @@ -1,6 +1,6 @@ # $Id: History,v 1.31 2006/11/20 12:44:40 ahoward Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- ========================================================= diff --git a/examples/advanced/Tiara/README b/examples/advanced/Tiara/README index 8ab94595a1..7a758d591d 100644 --- a/examples/advanced/Tiara/README +++ b/examples/advanced/Tiara/README @@ -1,6 +1,6 @@ # $Id: README,v 1.21 2005/03/17 19:48:27 daquinog Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- Simulation of the TIARA experiment using importance sampling diff --git a/examples/advanced/Tiara/envCommon.csh b/examples/advanced/Tiara/envCommon.csh index c7c7d9d05b..7226455354 100644 --- a/examples/advanced/Tiara/envCommon.csh +++ b/examples/advanced/Tiara/envCommon.csh @@ -1,6 +1,6 @@ # $Id: envCommon.csh,v 1.13 2005/03/17 19:48:27 daquinog Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # Before sourcing this script make sure you have set the # environment variables according to the description in README. diff --git a/examples/advanced/Tiara/run/runSim.py b/examples/advanced/Tiara/run/runSim.py index dca09f619f..c4f1dabb9e 100755 --- a/examples/advanced/Tiara/run/runSim.py +++ b/examples/advanced/Tiara/run/runSim.py @@ -2,7 +2,7 @@ # # $Id: runSim.py,v 1.12 2005/12/15 16:23:11 ahoward Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # importing python libraries diff --git a/examples/advanced/Tiara/run/runSimNoAnalysis.py b/examples/advanced/Tiara/run/runSimNoAnalysis.py index 91ae5e7af6..bd8a17426d 100755 --- a/examples/advanced/Tiara/run/runSimNoAnalysis.py +++ b/examples/advanced/Tiara/run/runSimNoAnalysis.py @@ -2,7 +2,7 @@ # # $Id: runSimNoAnalysis.py,v 1.7 2005/12/15 16:23:06 ahoward Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- diff --git a/examples/advanced/Tiara/run/runVisMode.py b/examples/advanced/Tiara/run/runVisMode.py index 4a0a5c113c..b84e6900cf 100644 --- a/examples/advanced/Tiara/run/runVisMode.py +++ b/examples/advanced/Tiara/run/runVisMode.py @@ -2,7 +2,7 @@ # # $Id: runVisMode.py,v 1.8 2006/06/26 10:12:05 ahoward Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- diff --git a/examples/advanced/Tiara/run/runVisNoAnalysis.py b/examples/advanced/Tiara/run/runVisNoAnalysis.py index aec7feb0d8..508dd8553b 100755 --- a/examples/advanced/Tiara/run/runVisNoAnalysis.py +++ b/examples/advanced/Tiara/run/runVisNoAnalysis.py @@ -2,7 +2,7 @@ # # $Id: runVisNoAnalysis.py,v 1.5 2006/06/26 10:12:05 ahoward Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- diff --git a/examples/advanced/Tiara/run/vis.mac b/examples/advanced/Tiara/run/vis.mac index a29798e60f..1be8169653 100644 --- a/examples/advanced/Tiara/run/vis.mac +++ b/examples/advanced/Tiara/run/vis.mac @@ -1,6 +1,6 @@ # $Id: vis.mac,v 1.2 2003/06/16 17:06:44 dressel Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- diff --git a/examples/advanced/Tiara/source/CLHEPWrapper/include/CLHEP.i b/examples/advanced/Tiara/source/CLHEPWrapper/include/CLHEP.i index 22fdcb0a1d..6ad9109286 100644 --- a/examples/advanced/Tiara/source/CLHEPWrapper/include/CLHEP.i +++ b/examples/advanced/Tiara/source/CLHEPWrapper/include/CLHEP.i @@ -1,6 +1,6 @@ # $Id: CLHEP.i,v 1.5 2005/12/15 14:23:31 ahoward Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- diff --git a/examples/advanced/Tiara/source/G4KernelWrapper/G4String.i b/examples/advanced/Tiara/source/G4KernelWrapper/G4String.i index ed72514ba9..08a2d8ea14 100644 --- a/examples/advanced/Tiara/source/G4KernelWrapper/G4String.i +++ b/examples/advanced/Tiara/source/G4KernelWrapper/G4String.i @@ -1,6 +1,6 @@ # $Id: G4String.i,v 1.1 2003/06/17 15:25:01 mdressel Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- // coppied from std_string.i diff --git a/examples/advanced/Tiara/source/G4KernelWrapper/include/G4Kernel.i b/examples/advanced/Tiara/source/G4KernelWrapper/include/G4Kernel.i index f2d560b0cf..07ae9448a2 100644 --- a/examples/advanced/Tiara/source/G4KernelWrapper/include/G4Kernel.i +++ b/examples/advanced/Tiara/source/G4KernelWrapper/include/G4Kernel.i @@ -1,6 +1,6 @@ # $Id: G4Kernel.i,v 1.7 2005/12/15 14:24:56 ahoward Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- %module G4Kernel diff --git a/examples/advanced/Tiara/source/TiaraWrapper/include/Tiara.i b/examples/advanced/Tiara/source/TiaraWrapper/include/Tiara.i index 189cfd6911..b0dc350db9 100644 --- a/examples/advanced/Tiara/source/TiaraWrapper/include/Tiara.i +++ b/examples/advanced/Tiara/source/TiaraWrapper/include/Tiara.i @@ -1,6 +1,6 @@ # $Id: Tiara.i,v 1.9 2005/12/14 13:18:40 ahoward Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- %module Tiara diff --git a/examples/advanced/Tiara/source/py_modules/dataAcess.py b/examples/advanced/Tiara/source/py_modules/dataAcess.py index 7f274a8fb2..d79697a526 100644 --- a/examples/advanced/Tiara/source/py_modules/dataAcess.py +++ b/examples/advanced/Tiara/source/py_modules/dataAcess.py @@ -1,6 +1,6 @@ # $Id: dataAcess.py,v 1.3 2003/06/26 11:54:13 dressel Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import os diff --git a/examples/advanced/Tiara/source/py_modules/detector.py b/examples/advanced/Tiara/source/py_modules/detector.py index 2972d2eef3..22b548f5cb 100644 --- a/examples/advanced/Tiara/source/py_modules/detector.py +++ b/examples/advanced/Tiara/source/py_modules/detector.py @@ -1,6 +1,6 @@ # $Id: detector.py,v 1.3 2003/06/26 11:54:13 dressel Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # diff --git a/examples/advanced/Tiara/source/py_modules/dpsManip.py b/examples/advanced/Tiara/source/py_modules/dpsManip.py index 9d45354c85..5390c258ee 100644 --- a/examples/advanced/Tiara/source/py_modules/dpsManip.py +++ b/examples/advanced/Tiara/source/py_modules/dpsManip.py @@ -1,6 +1,6 @@ # $Id: dpsManip.py,v 1.2 2003/06/16 17:06:44 dressel Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import math diff --git a/examples/advanced/Tiara/source/py_modules/extractShelve.py b/examples/advanced/Tiara/source/py_modules/extractShelve.py index 27531edc02..c0fee1b5c6 100644 --- a/examples/advanced/Tiara/source/py_modules/extractShelve.py +++ b/examples/advanced/Tiara/source/py_modules/extractShelve.py @@ -1,6 +1,6 @@ # $Id: extractShelve.py,v 1.3 2003/07/04 13:26:31 dressel Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import string diff --git a/examples/advanced/Tiara/source/py_modules/myPI.py b/examples/advanced/Tiara/source/py_modules/myPI.py index b7279c6947..0bd85d5032 100644 --- a/examples/advanced/Tiara/source/py_modules/myPI.py +++ b/examples/advanced/Tiara/source/py_modules/myPI.py @@ -1,6 +1,6 @@ # $Id: myPI.py,v 1.1 2004/06/09 15:04:36 daquinog Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import sys diff --git a/examples/advanced/Tiara/source/py_modules/myUtils.py b/examples/advanced/Tiara/source/py_modules/myUtils.py index c03ddba61e..80d01ebe5b 100644 --- a/examples/advanced/Tiara/source/py_modules/myUtils.py +++ b/examples/advanced/Tiara/source/py_modules/myUtils.py @@ -1,6 +1,6 @@ # $Id: myUtils.py,v 1.6 2004/12/08 15:37:14 daquinog Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import CLHEP diff --git a/examples/advanced/Tiara/source/py_modules/parallelHall.py b/examples/advanced/Tiara/source/py_modules/parallelHall.py index 6a0bda15db..9443fff8d7 100644 --- a/examples/advanced/Tiara/source/py_modules/parallelHall.py +++ b/examples/advanced/Tiara/source/py_modules/parallelHall.py @@ -1,6 +1,6 @@ # $Id: parallelHall.py,v 1.4 2003/06/20 12:41:06 dressel Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import G4Kernel diff --git a/examples/advanced/Tiara/source/py_modules/posLog.py b/examples/advanced/Tiara/source/py_modules/posLog.py index 54e32b5147..20cff1ecf1 100644 --- a/examples/advanced/Tiara/source/py_modules/posLog.py +++ b/examples/advanced/Tiara/source/py_modules/posLog.py @@ -1,6 +1,6 @@ # $Id: posLog.py,v 1.2 2003/06/16 17:06:44 dressel Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # diff --git a/examples/advanced/Tiara/source/py_modules/runSequence.py b/examples/advanced/Tiara/source/py_modules/runSequence.py index 19fffed96e..43b5504659 100644 --- a/examples/advanced/Tiara/source/py_modules/runSequence.py +++ b/examples/advanced/Tiara/source/py_modules/runSequence.py @@ -1,6 +1,6 @@ # $Id: runSequence.py,v 1.4 2004/06/09 15:04:36 daquinog Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import Tiara diff --git a/examples/advanced/Tiara/source/py_modules/slabGeometry.py b/examples/advanced/Tiara/source/py_modules/slabGeometry.py index 8a5760772f..d0b1bb1a69 100644 --- a/examples/advanced/Tiara/source/py_modules/slabGeometry.py +++ b/examples/advanced/Tiara/source/py_modules/slabGeometry.py @@ -1,6 +1,6 @@ # $Id: slabGeometry.py,v 1.3 2003/06/20 12:41:07 dressel Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import math diff --git a/examples/advanced/Tiara/source/py_modules/tallyData.py b/examples/advanced/Tiara/source/py_modules/tallyData.py index 4cdf4b43da..28d5fdf733 100644 --- a/examples/advanced/Tiara/source/py_modules/tallyData.py +++ b/examples/advanced/Tiara/source/py_modules/tallyData.py @@ -1,6 +1,6 @@ # $Id: tallyData.py,v 1.2 2003/06/16 17:06:44 dressel Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # diff --git a/examples/advanced/Tiara/source/py_modules/tiaraApplication.py b/examples/advanced/Tiara/source/py_modules/tiaraApplication.py index 8725538ee5..4bf9994aa6 100644 --- a/examples/advanced/Tiara/source/py_modules/tiaraApplication.py +++ b/examples/advanced/Tiara/source/py_modules/tiaraApplication.py @@ -1,6 +1,6 @@ # $Id: tiaraApplication.py,v 1.7 2006/06/26 10:13:14 ahoward Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import string diff --git a/examples/advanced/Tiara/source/py_modules/tiaraDetectors.py b/examples/advanced/Tiara/source/py_modules/tiaraDetectors.py index 5b87c80527..d50056cf1b 100644 --- a/examples/advanced/Tiara/source/py_modules/tiaraDetectors.py +++ b/examples/advanced/Tiara/source/py_modules/tiaraDetectors.py @@ -1,6 +1,6 @@ # $Id: tiaraDetectors.py,v 1.4 2004/06/09 15:04:36 daquinog Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import CLHEP diff --git a/examples/advanced/Tiara/source/py_modules/tiaraGenerators.py b/examples/advanced/Tiara/source/py_modules/tiaraGenerators.py index 4442f634cc..144bb640c7 100644 --- a/examples/advanced/Tiara/source/py_modules/tiaraGenerators.py +++ b/examples/advanced/Tiara/source/py_modules/tiaraGenerators.py @@ -1,6 +1,6 @@ # $Id: tiaraGenerators.py,v 1.3 2004/06/09 15:04:36 daquinog Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import string diff --git a/examples/advanced/Tiara/source/py_modules/tiaraSpecifications.py b/examples/advanced/Tiara/source/py_modules/tiaraSpecifications.py index a36b89d688..4342c747b2 100644 --- a/examples/advanced/Tiara/source/py_modules/tiaraSpecifications.py +++ b/examples/advanced/Tiara/source/py_modules/tiaraSpecifications.py @@ -1,6 +1,6 @@ # $Id: tiaraSpecifications.py,v 1.3 2003/06/20 12:41:07 dressel Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import CLHEP diff --git a/examples/advanced/Tiara/source/py_modules/variableGeometry.py b/examples/advanced/Tiara/source/py_modules/variableGeometry.py index c95640bda6..d851b59168 100644 --- a/examples/advanced/Tiara/source/py_modules/variableGeometry.py +++ b/examples/advanced/Tiara/source/py_modules/variableGeometry.py @@ -1,6 +1,6 @@ # $Id: variableGeometry.py,v 1.2 2003/06/16 17:06:45 dressel Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- # import G4Kernel diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraCellScorer.hh b/examples/advanced/Tiara/source/tiara/include/TiaraCellScorer.hh index 3684021449..069ecafa96 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraCellScorer.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraCellScorer.hh @@ -25,7 +25,7 @@ // // // $Id: TiaraCellScorer.hh,v 1.4 2006/06/29 15:43:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class TiaraCellScorer diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraCellScorerStore.hh b/examples/advanced/Tiara/source/tiara/include/TiaraCellScorerStore.hh index 4ef1a76de0..79144c127c 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraCellScorerStore.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraCellScorerStore.hh @@ -25,7 +25,7 @@ // // // $Id: TiaraCellScorerStore.hh,v 1.3 2006/06/29 15:43:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class TiaraCellScorerStore diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraConcreteShieldA.hh b/examples/advanced/Tiara/source/tiara/include/TiaraConcreteShieldA.hh index bb67cd4fbb..2e3230e946 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraConcreteShieldA.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraConcreteShieldA.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraConcreteShieldA.hh,v 1.4 2006/06/29 15:43:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraConcreteShieldB.hh b/examples/advanced/Tiara/source/tiara/include/TiaraConcreteShieldB.hh index 4a25a6f604..c7676b1e77 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraConcreteShieldB.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraConcreteShieldB.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraConcreteShieldB.hh,v 1.4 2006/06/29 15:43:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraDPSSampledEnergy.hh b/examples/advanced/Tiara/source/tiara/include/TiaraDPSSampledEnergy.hh index e432d2731a..5594005ebd 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraDPSSampledEnergy.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraDPSSampledEnergy.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraDPSSampledEnergy.hh,v 1.7 2006/06/29 15:43:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraDimensions.hh b/examples/advanced/Tiara/source/tiara/include/TiaraDimensions.hh index fc17010d54..c53c47b2f0 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraDimensions.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraDimensions.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraDimensions.hh,v 1.4 2006/06/29 15:43:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraEnergyCutProcess.hh b/examples/advanced/Tiara/source/tiara/include/TiaraEnergyCutProcess.hh index 4988441c8a..7d8faef819 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraEnergyCutProcess.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraEnergyCutProcess.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraEnergyCutProcess.hh,v 1.4 2006/06/29 15:43:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraFileAcess.hh b/examples/advanced/Tiara/source/tiara/include/TiaraFileAcess.hh index d4a643cde9..c367a39fc0 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraFileAcess.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraFileAcess.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraFileAcess.hh,v 1.4 2006/06/29 15:43:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraFixedEnergyGenerator.hh b/examples/advanced/Tiara/source/tiara/include/TiaraFixedEnergyGenerator.hh index 5bc4799c10..cf8973c439 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraFixedEnergyGenerator.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraFixedEnergyGenerator.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraFixedEnergyGenerator.hh,v 1.4 2006/06/29 15:43:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraGeometry.hh b/examples/advanced/Tiara/source/tiara/include/TiaraGeometry.hh index 15ba349390..755670686c 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraGeometry.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraGeometry.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraGeometry.hh,v 1.5 2006/06/29 15:43:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraIronShieldA.hh b/examples/advanced/Tiara/source/tiara/include/TiaraIronShieldA.hh index bc9f0e6bcb..cf9ea753d2 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraIronShieldA.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraIronShieldA.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraIronShieldA.hh,v 1.4 2006/06/29 15:43:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraIronShieldB.hh b/examples/advanced/Tiara/source/tiara/include/TiaraIronShieldB.hh index 8c9357a114..c740e7fa4c 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraIronShieldB.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraIronShieldB.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraIronShieldB.hh,v 1.4 2006/06/29 15:43:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraIsotropicDirections.hh b/examples/advanced/Tiara/source/tiara/include/TiaraIsotropicDirections.hh index 1b483856b7..1de050890c 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraIsotropicDirections.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraIsotropicDirections.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraIsotropicDirections.hh,v 1.4 2006/06/29 15:43:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraMaterials.hh b/examples/advanced/Tiara/source/tiara/include/TiaraMaterials.hh index 881b5a7a34..b005b027f3 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraMaterials.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraMaterials.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraMaterials.hh,v 1.5 2006/06/29 15:43:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraMeasure.hh b/examples/advanced/Tiara/source/tiara/include/TiaraMeasure.hh index 85396bd5c4..95f63fa40d 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraMeasure.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraMeasure.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraMeasure.hh,v 1.4 2006/06/29 15:43:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraPart.hh b/examples/advanced/Tiara/source/tiara/include/TiaraPart.hh index ba29c5d66d..b86d40a256 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraPart.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraPart.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraPart.hh,v 1.4 2006/06/29 15:44:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraPhysicsList.hh b/examples/advanced/Tiara/source/tiara/include/TiaraPhysicsList.hh index ae6026936d..f7da0200d5 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraPhysicsList.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraPhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: TiaraPhysicsList.hh,v 1.1.1.2 2006/06/29 15:44:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class TiaraPhysicsList diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraPrimaryGeneratorAction.hh b/examples/advanced/Tiara/source/tiara/include/TiaraPrimaryGeneratorAction.hh index af0e254a93..e68d30bb1c 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraPrimaryGeneratorAction.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraPrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: TiaraPrimaryGeneratorAction.hh,v 1.1.1.2 2006/06/29 15:44:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef TiaraPrimaryGeneratorAction_hh diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraRandom.hh b/examples/advanced/Tiara/source/tiara/include/TiaraRandom.hh index f038e03cf5..c91161904e 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraRandom.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraRandom.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraRandom.hh,v 1.4 2006/06/29 15:44:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraSampledEnergy.hh b/examples/advanced/Tiara/source/tiara/include/TiaraSampledEnergy.hh index e7f722d4c0..1af5123307 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraSampledEnergy.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraSampledEnergy.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraSampledEnergy.hh,v 1.5 2006/06/29 15:44:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraSim.hh b/examples/advanced/Tiara/source/tiara/include/TiaraSim.hh index 70de5390fb..6a55d2b6bf 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraSim.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraSim.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraSim.hh,v 1.5 2006/06/29 15:44:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraTally.hh b/examples/advanced/Tiara/source/tiara/include/TiaraTally.hh index 8831e81738..e88e545fd8 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraTally.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraTally.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraTally.hh,v 1.5 2006/06/29 15:44:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraTimedEventAction.hh b/examples/advanced/Tiara/source/tiara/include/TiaraTimedEventAction.hh index 505193bbea..7e776ae166 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraTimedEventAction.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraTimedEventAction.hh @@ -25,7 +25,7 @@ // // // $Id: TiaraTimedEventAction.hh,v 1.1.1.2 2006/06/29 15:44:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class TiaraTimedEventAction diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraVComponent.hh b/examples/advanced/Tiara/source/tiara/include/TiaraVComponent.hh index 21f6b33ae0..5e77063912 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraVComponent.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraVComponent.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraVComponent.hh,v 1.5 2006/06/29 15:44:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraVDirectionGenerator.hh b/examples/advanced/Tiara/source/tiara/include/TiaraVDirectionGenerator.hh index f6493770a3..131f45ccb0 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraVDirectionGenerator.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraVDirectionGenerator.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraVDirectionGenerator.hh,v 1.4 2006/06/29 15:44:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraVSourceEnergyGenerator.hh b/examples/advanced/Tiara/source/tiara/include/TiaraVSourceEnergyGenerator.hh index 38d0b23ead..a1af5281e3 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraVSourceEnergyGenerator.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraVSourceEnergyGenerator.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraVSourceEnergyGenerator.hh,v 1.4 2006/06/29 15:44:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraVisEventAction.hh b/examples/advanced/Tiara/source/tiara/include/TiaraVisEventAction.hh index 8af0e1b246..42b7ea8ba4 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraVisEventAction.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraVisEventAction.hh @@ -25,7 +25,7 @@ // // // $Id: TiaraVisEventAction.hh,v 1.1.1.2 2006/06/29 15:44:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class TiaraVisEventAction diff --git a/examples/advanced/Tiara/source/tiara/include/TiaraVisRunAction.hh b/examples/advanced/Tiara/source/tiara/include/TiaraVisRunAction.hh index c6a631212d..c659f12aba 100644 --- a/examples/advanced/Tiara/source/tiara/include/TiaraVisRunAction.hh +++ b/examples/advanced/Tiara/source/tiara/include/TiaraVisRunAction.hh @@ -25,7 +25,7 @@ // // // $Id: TiaraVisRunAction.hh,v 1.1.1.2 2006/06/29 15:44:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class TiaraVisRunAction diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraCellScorer.cc b/examples/advanced/Tiara/source/tiara/src/TiaraCellScorer.cc index 1498311a8f..d7cbde3e39 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraCellScorer.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraCellScorer.cc @@ -25,7 +25,7 @@ // // // $Id: TiaraCellScorer.cc,v 1.5 2006/06/29 15:44:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraCellScorerStore.cc b/examples/advanced/Tiara/source/tiara/src/TiaraCellScorerStore.cc index 527a50dfeb..8d6dbe4f5d 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraCellScorerStore.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraCellScorerStore.cc @@ -25,7 +25,7 @@ // // // $Id: TiaraCellScorerStore.cc,v 1.1.1.2 2006/06/29 15:44:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraConcreteShieldA.cc b/examples/advanced/Tiara/source/tiara/src/TiaraConcreteShieldA.cc index a9deec9019..5776b7162b 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraConcreteShieldA.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraConcreteShieldA.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraConcreteShieldA.cc,v 1.4 2006/06/29 15:44:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraConcreteShieldA.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraConcreteShieldB.cc b/examples/advanced/Tiara/source/tiara/src/TiaraConcreteShieldB.cc index e6f6baf908..fd183bc4ad 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraConcreteShieldB.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraConcreteShieldB.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraConcreteShieldB.cc,v 1.4 2006/06/29 15:44:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraConcreteShieldB.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraDPSSampledEnergy.cc b/examples/advanced/Tiara/source/tiara/src/TiaraDPSSampledEnergy.cc index 218fb00ecf..4461b6e1e9 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraDPSSampledEnergy.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraDPSSampledEnergy.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraDPSSampledEnergy.cc,v 1.9 2006/06/29 15:44:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraDPSSampledEnergy.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraDimensions.cc b/examples/advanced/Tiara/source/tiara/src/TiaraDimensions.cc index c5a5fbb320..3116207935 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraDimensions.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraDimensions.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraDimensions.cc,v 1.4 2006/06/29 15:44:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraDimensions.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraEnergyCutProcess.cc b/examples/advanced/Tiara/source/tiara/src/TiaraEnergyCutProcess.cc index a7b999340c..435c050935 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraEnergyCutProcess.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraEnergyCutProcess.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraEnergyCutProcess.cc,v 1.6 2006/06/29 15:44:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraEnergyCutProcess.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraFileAcess.cc b/examples/advanced/Tiara/source/tiara/src/TiaraFileAcess.cc index 78c4693012..c7d0b4ff29 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraFileAcess.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraFileAcess.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraFileAcess.cc,v 1.4 2006/06/29 15:44:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraFileAcess.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraFixedEnergyGenerator.cc b/examples/advanced/Tiara/source/tiara/src/TiaraFixedEnergyGenerator.cc index e8fcc350c7..77fd15aa76 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraFixedEnergyGenerator.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraFixedEnergyGenerator.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraFixedEnergyGenerator.cc,v 1.4 2006/06/29 15:45:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraFixedEnergyGenerator.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraGeometry.cc b/examples/advanced/Tiara/source/tiara/src/TiaraGeometry.cc index 6c73763c42..99fb669c28 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraGeometry.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraGeometry.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraGeometry.cc,v 1.5 2006/06/29 15:45:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraGeometry.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraIronShieldA.cc b/examples/advanced/Tiara/source/tiara/src/TiaraIronShieldA.cc index 0d01a36be9..3528ad965f 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraIronShieldA.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraIronShieldA.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraIronShieldA.cc,v 1.4 2006/06/29 15:45:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraIronShieldA.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraIronShieldB.cc b/examples/advanced/Tiara/source/tiara/src/TiaraIronShieldB.cc index c085edfcdd..15685a7eae 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraIronShieldB.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraIronShieldB.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraIronShieldB.cc,v 1.4 2006/06/29 15:45:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraIronShieldB.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraIsotropicDirections.cc b/examples/advanced/Tiara/source/tiara/src/TiaraIsotropicDirections.cc index 56e36e6f12..7e26403b2c 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraIsotropicDirections.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraIsotropicDirections.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraIsotropicDirections.cc,v 1.5 2006/06/29 15:45:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraIsotropicDirections.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraMaterials.cc b/examples/advanced/Tiara/source/tiara/src/TiaraMaterials.cc index 26d98d3c98..461c210488 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraMaterials.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraMaterials.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraMaterials.cc,v 1.5 2006/06/29 15:45:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraMaterials.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraMeasure.cc b/examples/advanced/Tiara/source/tiara/src/TiaraMeasure.cc index da6d51075a..baf2da0d27 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraMeasure.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraMeasure.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraMeasure.cc,v 1.4 2006/06/29 15:45:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraMeasure.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraPhysicsList.cc b/examples/advanced/Tiara/source/tiara/src/TiaraPhysicsList.cc index 8fd80af396..0d3d0a6ab8 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraPhysicsList.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraPhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: TiaraPhysicsList.cc,v 1.6 2006/06/29 15:45:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraPrimaryGeneratorAction.cc b/examples/advanced/Tiara/source/tiara/src/TiaraPrimaryGeneratorAction.cc index 3392521bfb..0d113b10f4 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraPrimaryGeneratorAction.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraPrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: TiaraPrimaryGeneratorAction.cc,v 1.5 2006/06/29 15:45:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraRandom.cc b/examples/advanced/Tiara/source/tiara/src/TiaraRandom.cc index 8465914659..6e652cf8c3 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraRandom.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraRandom.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraRandom.cc,v 1.5 2006/06/29 15:45:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraRandom.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraSampledEnergy.cc b/examples/advanced/Tiara/source/tiara/src/TiaraSampledEnergy.cc index 0f6f94128b..e3ea000fac 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraSampledEnergy.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraSampledEnergy.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraSampledEnergy.cc,v 1.5 2006/06/29 15:45:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraSampledEnergy.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraSim.cc b/examples/advanced/Tiara/source/tiara/src/TiaraSim.cc index 0cf51fb9c4..c8790ed30d 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraSim.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraSim.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraSim.cc,v 1.9 2006/06/29 15:45:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraSim.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraStackingAction.cc b/examples/advanced/Tiara/source/tiara/src/TiaraStackingAction.cc index c025d62dfd..9c4c2b3dae 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraStackingAction.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraStackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraStackingAction.cc,v 1.5 2006/06/29 15:45:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraStackingAction.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraTally.cc b/examples/advanced/Tiara/source/tiara/src/TiaraTally.cc index 2f849a41e9..35e67b64f6 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraTally.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraTally.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraTally.cc,v 1.5 2006/06/29 15:45:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraTally.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraTimedEventAction.cc b/examples/advanced/Tiara/source/tiara/src/TiaraTimedEventAction.cc index f3e3e63407..81358af7c7 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraTimedEventAction.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraTimedEventAction.cc @@ -25,7 +25,7 @@ // // // $Id: TiaraTimedEventAction.cc,v 1.4 2006/06/29 15:45:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraVComponent.cc b/examples/advanced/Tiara/source/tiara/src/TiaraVComponent.cc index 1e5a90c790..fcfe2fdd72 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraVComponent.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraVComponent.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraVComponent.cc,v 1.4 2006/06/29 15:45:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraVComponent.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraVDirectionGenerator.cc b/examples/advanced/Tiara/source/tiara/src/TiaraVDirectionGenerator.cc index ff66de630f..656301d802 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraVDirectionGenerator.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraVDirectionGenerator.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraVDirectionGenerator.cc,v 1.4 2006/06/29 15:45:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraVDirectionGenerator.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraVSourceEnergyGenerator.cc b/examples/advanced/Tiara/source/tiara/src/TiaraVSourceEnergyGenerator.cc index bb3fad18ab..11ab9b6276 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraVSourceEnergyGenerator.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraVSourceEnergyGenerator.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TiaraVSourceEnergyGenerator.cc,v 1.4 2006/06/29 15:45:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "TiaraVSourceEnergyGenerator.hh" diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraVisEventAction.cc b/examples/advanced/Tiara/source/tiara/src/TiaraVisEventAction.cc index 4b0ac14b18..d821a17b30 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraVisEventAction.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraVisEventAction.cc @@ -25,7 +25,7 @@ // // // $Id: TiaraVisEventAction.cc,v 1.4 2006/06/29 15:45:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/Tiara/source/tiara/src/TiaraVisRunAction.cc b/examples/advanced/Tiara/source/tiara/src/TiaraVisRunAction.cc index 4b48d98b99..e5458dd2f6 100644 --- a/examples/advanced/Tiara/source/tiara/src/TiaraVisRunAction.cc +++ b/examples/advanced/Tiara/source/tiara/src/TiaraVisRunAction.cc @@ -25,7 +25,7 @@ // // // $Id: TiaraVisRunAction.cc,v 1.1.1.2 2006/06/29 15:45:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/air_shower/History b/examples/advanced/air_shower/History index 05251eb8c8..984d5e058e 100644 --- a/examples/advanced/air_shower/History +++ b/examples/advanced/air_shower/History @@ -1,4 +1,4 @@ -$Id: History,v 1.13 2006/11/16 04:53:32 tomezb Exp $ +$Id: History,v 1.14 2007/09/30 23:05:58 gum Exp $ ------------------------------------------------------------------- ========================================================= @@ -7,6 +7,10 @@ $Id: History,v 1.13 2006/11/16 04:53:32 tomezb Exp $ History file ------------ + +30.09.2007 -- P.Gumplinger - air_shower-V09-00-00 + -- adjust to the G4Cerenkov process now being a G4VDiscreteProcess + 16.11.2006 -- B. Tome - air_shower-V08-01-00 -- Tested with candidate tag geant4-08-02-cand-00. -- Ultra.cc - Removed invocation of Visualisation.mac if argc==1. diff --git a/examples/advanced/air_shower/src/UltraPhysicsList.cc b/examples/advanced/air_shower/src/UltraPhysicsList.cc index f5f75ec79f..c5df8ae22a 100644 --- a/examples/advanced/air_shower/src/UltraPhysicsList.cc +++ b/examples/advanced/air_shower/src/UltraPhysicsList.cc @@ -276,7 +276,8 @@ void UltraPhysicsList::ConstructOp() G4String particleName = particle->GetParticleName(); if (theCerenkovProcess->IsApplicable(*particle)) { - // pmanager->AddContinuousProcess(theCerenkovProcess); + // pmanager->AddProcess(theCerenkovProcess); + // pmanager->SetProcessOrdering(theCerenkovProcess,idxPostStep); } if (theScintillationProcess->IsApplicable(*particle)) { diff --git a/examples/advanced/brachytherapy/Brachy.cc b/examples/advanced/brachytherapy/Brachy.cc index c25caee140..b805cf9b8c 100644 --- a/examples/advanced/brachytherapy/Brachy.cc +++ b/examples/advanced/brachytherapy/Brachy.cc @@ -25,7 +25,7 @@ // // // $Id: Brachy.cc -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // GEANT 4 - Brachytherapy example diff --git a/examples/advanced/brachytherapy/include/BrachyAnalysisManager.hh b/examples/advanced/brachytherapy/include/BrachyAnalysisManager.hh index 5eb6fc78c5..a12b3737b6 100644 --- a/examples/advanced/brachytherapy/include/BrachyAnalysisManager.hh +++ b/examples/advanced/brachytherapy/include/BrachyAnalysisManager.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: BrachyAnalysisManager.hh,v 1.13 2007/06/21 14:58:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // Code review: MG Pia, 14/05/2207 // Contact: Geant4-INFN Genova group, MariaGrazia.Pia@ge.infn.it diff --git a/examples/advanced/brachytherapy/include/BrachyDetectorConstruction.hh b/examples/advanced/brachytherapy/include/BrachyDetectorConstruction.hh index 2567a57531..184ed9dd40 100644 --- a/examples/advanced/brachytherapy/include/BrachyDetectorConstruction.hh +++ b/examples/advanced/brachytherapy/include/BrachyDetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyDetectorConstruction.hh,v 1.17 2006/06/29 15:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // **************************************** // * * diff --git a/examples/advanced/brachytherapy/include/BrachyDetectorConstructionI.hh b/examples/advanced/brachytherapy/include/BrachyDetectorConstructionI.hh index 7e0ea79f50..4d4fe98033 100644 --- a/examples/advanced/brachytherapy/include/BrachyDetectorConstructionI.hh +++ b/examples/advanced/brachytherapy/include/BrachyDetectorConstructionI.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyDetectorConstructionI.hh,v 1.5 2006/06/29 15:47:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // **************************************** // * * diff --git a/examples/advanced/brachytherapy/include/BrachyDetectorConstructionIr.hh b/examples/advanced/brachytherapy/include/BrachyDetectorConstructionIr.hh index 20dfa80a31..fac65d6c5b 100644 --- a/examples/advanced/brachytherapy/include/BrachyDetectorConstructionIr.hh +++ b/examples/advanced/brachytherapy/include/BrachyDetectorConstructionIr.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyDetectorConstructionIr.hh,v 1.5 2006/06/29 15:47:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // **************************************** // * * diff --git a/examples/advanced/brachytherapy/include/BrachyDetectorConstructionLeipzig.hh b/examples/advanced/brachytherapy/include/BrachyDetectorConstructionLeipzig.hh index be6e64f01a..32b03160f3 100644 --- a/examples/advanced/brachytherapy/include/BrachyDetectorConstructionLeipzig.hh +++ b/examples/advanced/brachytherapy/include/BrachyDetectorConstructionLeipzig.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyDetectorConstructionLeipzig.hh,v 1.5 2006/06/29 15:47:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ************************************************ diff --git a/examples/advanced/brachytherapy/include/BrachyDetectorMessenger.hh b/examples/advanced/brachytherapy/include/BrachyDetectorMessenger.hh index e67cb7b9fe..af0762dfa0 100644 --- a/examples/advanced/brachytherapy/include/BrachyDetectorMessenger.hh +++ b/examples/advanced/brachytherapy/include/BrachyDetectorMessenger.hh @@ -31,7 +31,7 @@ // ***************************************** // // $Id: BrachyDetectorMessenger.hh,v 1.7 2006/06/29 15:47:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // #ifndef BrachyDetectorMessenger_h diff --git a/examples/advanced/brachytherapy/include/BrachyEventAction.hh b/examples/advanced/brachytherapy/include/BrachyEventAction.hh index b491794b98..c1f65dd936 100644 --- a/examples/advanced/brachytherapy/include/BrachyEventAction.hh +++ b/examples/advanced/brachytherapy/include/BrachyEventAction.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyEventAction.hh,v 1.15 2006/06/29 15:47:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: // S.Guatelli diff --git a/examples/advanced/brachytherapy/include/BrachyFactory.hh b/examples/advanced/brachytherapy/include/BrachyFactory.hh index 3ba8e5d887..7f3e3d0ef6 100644 --- a/examples/advanced/brachytherapy/include/BrachyFactory.hh +++ b/examples/advanced/brachytherapy/include/BrachyFactory.hh @@ -26,7 +26,7 @@ // Code developed by: Susanna Guatelli // // $Id: BrachyFactory.hh,v 1.6 2006/06/29 15:47:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ********************************** // * * diff --git a/examples/advanced/brachytherapy/include/BrachyFactoryI.hh b/examples/advanced/brachytherapy/include/BrachyFactoryI.hh index e6738a5bc7..6a4b918065 100644 --- a/examples/advanced/brachytherapy/include/BrachyFactoryI.hh +++ b/examples/advanced/brachytherapy/include/BrachyFactoryI.hh @@ -35,7 +35,7 @@ // // // $Id: BrachyFactoryI.hh,v 1.7 2006/06/29 15:47:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/advanced/brachytherapy/include/BrachyFactoryIr.hh b/examples/advanced/brachytherapy/include/BrachyFactoryIr.hh index c098c3f791..c17a77555e 100644 --- a/examples/advanced/brachytherapy/include/BrachyFactoryIr.hh +++ b/examples/advanced/brachytherapy/include/BrachyFactoryIr.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyFactoryIr.hh,v 1.6 2006/06/29 15:47:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ********************************** // * * diff --git a/examples/advanced/brachytherapy/include/BrachyFactoryLeipzig.hh b/examples/advanced/brachytherapy/include/BrachyFactoryLeipzig.hh index f00915a4c0..23b91dd73e 100644 --- a/examples/advanced/brachytherapy/include/BrachyFactoryLeipzig.hh +++ b/examples/advanced/brachytherapy/include/BrachyFactoryLeipzig.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyFactoryLeipzig.hh,v 1.6 2006/06/29 15:47:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ********************************** // * * diff --git a/examples/advanced/brachytherapy/include/BrachyMaterial.hh b/examples/advanced/brachytherapy/include/BrachyMaterial.hh index 41f0091c72..ec36866400 100644 --- a/examples/advanced/brachytherapy/include/BrachyMaterial.hh +++ b/examples/advanced/brachytherapy/include/BrachyMaterial.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyMaterial.hh,v 1.7 2006/06/29 15:47:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ********************************** // * * diff --git a/examples/advanced/brachytherapy/include/BrachyPhantomROGeometry.hh b/examples/advanced/brachytherapy/include/BrachyPhantomROGeometry.hh index bcf029b232..e7fa354129 100644 --- a/examples/advanced/brachytherapy/include/BrachyPhantomROGeometry.hh +++ b/examples/advanced/brachytherapy/include/BrachyPhantomROGeometry.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyPhantomROGeometry.hh,v 1.7 2006/06/29 15:47:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ************************************ // * * diff --git a/examples/advanced/brachytherapy/include/BrachyPhantomSD.hh b/examples/advanced/brachytherapy/include/BrachyPhantomSD.hh index d6f1a7b100..d113677bbf 100644 --- a/examples/advanced/brachytherapy/include/BrachyPhantomSD.hh +++ b/examples/advanced/brachytherapy/include/BrachyPhantomSD.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyPhantomSD.hh,v 1.10 2006/06/29 15:47:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ******************************** // * * diff --git a/examples/advanced/brachytherapy/include/BrachyPhysicsList.hh b/examples/advanced/brachytherapy/include/BrachyPhysicsList.hh index 228ac95a08..6cf29b0aa3 100644 --- a/examples/advanced/brachytherapy/include/BrachyPhysicsList.hh +++ b/examples/advanced/brachytherapy/include/BrachyPhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyPhysicsList.hh,v 1.9 2006/11/15 10:02:17 guatelli Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code review: MGP, 5 November 2006 (still to be completed) // diff --git a/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorAction.hh b/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorAction.hh index 4f31f2d9e2..ee24f8e173 100644 --- a/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorAction.hh +++ b/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyPrimaryGeneratorAction.hh,v 1.12 2006/06/29 15:47:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ******************************************** // * * diff --git a/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorActionI.hh b/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorActionI.hh index 95ee33c3bc..afab43d51b 100644 --- a/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorActionI.hh +++ b/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorActionI.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyPrimaryGeneratorActionI.hh,v 1.6 2006/06/29 15:47:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorActionIr.hh b/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorActionIr.hh index 0bda002219..f373e53b64 100644 --- a/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorActionIr.hh +++ b/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorActionIr.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyPrimaryGeneratorActionIr.hh,v 1.7 2006/06/29 15:47:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ************************************************* // * * diff --git a/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorMessenger.hh b/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorMessenger.hh index d0298dc4bb..abeee4000e 100644 --- a/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorMessenger.hh +++ b/examples/advanced/brachytherapy/include/BrachyPrimaryGeneratorMessenger.hh @@ -31,7 +31,7 @@ // *********************************************** // // $Id: BrachyPrimaryGeneratorMessenger.hh,v 1.2 2006/06/29 15:48:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // #ifndef BrachyPrimaryGeneratorMessenger_h diff --git a/examples/advanced/brachytherapy/include/BrachyRunAction.hh b/examples/advanced/brachytherapy/include/BrachyRunAction.hh index 061e0620b9..291468b0ca 100644 --- a/examples/advanced/brachytherapy/include/BrachyRunAction.hh +++ b/examples/advanced/brachytherapy/include/BrachyRunAction.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyRunAction.hh,v 1.11 2006/06/29 15:48:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/examples/advanced/brachytherapy/src/BrachyAnalysisManager.cc b/examples/advanced/brachytherapy/src/BrachyAnalysisManager.cc index c21b53ebdd..0775489f4f 100644 --- a/examples/advanced/brachytherapy/src/BrachyAnalysisManager.cc +++ b/examples/advanced/brachytherapy/src/BrachyAnalysisManager.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyAnalysisManager.cc,v 1.19 2007/05/14 09:57:55 pia Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include #include diff --git a/examples/advanced/brachytherapy/src/BrachyDetectorConstruction.cc b/examples/advanced/brachytherapy/src/BrachyDetectorConstruction.cc index 760e78e320..2026d2128e 100644 --- a/examples/advanced/brachytherapy/src/BrachyDetectorConstruction.cc +++ b/examples/advanced/brachytherapy/src/BrachyDetectorConstruction.cc @@ -38,7 +38,7 @@ // **************************************** // // $Id: BrachyDetectorConstruction.cc,v 1.29 2006/06/29 15:48:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4CSGSolid.hh" #include "G4MaterialPropertyVector.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyDetectorConstructionI.cc b/examples/advanced/brachytherapy/src/BrachyDetectorConstructionI.cc index 420163b6d9..1cb818f3e5 100644 --- a/examples/advanced/brachytherapy/src/BrachyDetectorConstructionI.cc +++ b/examples/advanced/brachytherapy/src/BrachyDetectorConstructionI.cc @@ -37,7 +37,7 @@ // **************************************** // // $Id: BrachyDetectorConstructionI.cc,v 1.9 2006/06/29 15:48:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" #include "BrachyDetectorConstructionI.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyDetectorConstructionIr.cc b/examples/advanced/brachytherapy/src/BrachyDetectorConstructionIr.cc index b4acd32d23..3ee01f203c 100644 --- a/examples/advanced/brachytherapy/src/BrachyDetectorConstructionIr.cc +++ b/examples/advanced/brachytherapy/src/BrachyDetectorConstructionIr.cc @@ -38,7 +38,7 @@ // **************************************** // // $Id: BrachyDetectorConstructionIr.cc,v 1.10 2006/06/29 15:48:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" #include "BrachyDetectorConstructionIr.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyDetectorConstructionLeipzig.cc b/examples/advanced/brachytherapy/src/BrachyDetectorConstructionLeipzig.cc index 17173c97f0..867d231355 100644 --- a/examples/advanced/brachytherapy/src/BrachyDetectorConstructionLeipzig.cc +++ b/examples/advanced/brachytherapy/src/BrachyDetectorConstructionLeipzig.cc @@ -39,7 +39,7 @@ // // // $Id: BrachyDetectorConstructionLeipzig.cc,v 1.10 2006/06/29 15:48:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyDetectorMessenger.cc b/examples/advanced/brachytherapy/src/BrachyDetectorMessenger.cc index ec863d949f..3dee14985e 100644 --- a/examples/advanced/brachytherapy/src/BrachyDetectorMessenger.cc +++ b/examples/advanced/brachytherapy/src/BrachyDetectorMessenger.cc @@ -35,7 +35,7 @@ // // // $Id: BrachyDetectorMessenger.cc,v 1.12 2006/06/29 15:48:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/brachytherapy/src/BrachyEventAction.cc b/examples/advanced/brachytherapy/src/BrachyEventAction.cc index 95fce0c6a7..744187a188 100644 --- a/examples/advanced/brachytherapy/src/BrachyEventAction.cc +++ b/examples/advanced/brachytherapy/src/BrachyEventAction.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyEventAction.cc,v 1.21 2006/06/29 15:48:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyEventAction.hh" #include "G4Event.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyFactory.cc b/examples/advanced/brachytherapy/src/BrachyFactory.cc index b3957fed12..9c23e7e141 100644 --- a/examples/advanced/brachytherapy/src/BrachyFactory.cc +++ b/examples/advanced/brachytherapy/src/BrachyFactory.cc @@ -35,7 +35,7 @@ // ******************************* // // $Id: BrachyFactory.cc,v 1.7 2006/06/29 15:48:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Factory of brachytherapic sources // diff --git a/examples/advanced/brachytherapy/src/BrachyFactoryI.cc b/examples/advanced/brachytherapy/src/BrachyFactoryI.cc index 4408d92f6e..db4065a46a 100644 --- a/examples/advanced/brachytherapy/src/BrachyFactoryI.cc +++ b/examples/advanced/brachytherapy/src/BrachyFactoryI.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyFactoryI.cc,v 1.6 2006/06/29 15:48:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyFactoryI.hh" #include "BrachyPrimaryGeneratorActionI.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyFactoryIr.cc b/examples/advanced/brachytherapy/src/BrachyFactoryIr.cc index 5933ae72c9..11eac69032 100644 --- a/examples/advanced/brachytherapy/src/BrachyFactoryIr.cc +++ b/examples/advanced/brachytherapy/src/BrachyFactoryIr.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyFactoryIr.cc,v 1.6 2006/06/29 15:48:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" #include "BrachyFactoryIr.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyFactoryLeipzig.cc b/examples/advanced/brachytherapy/src/BrachyFactoryLeipzig.cc index 8558c50d9f..03e5676314 100644 --- a/examples/advanced/brachytherapy/src/BrachyFactoryLeipzig.cc +++ b/examples/advanced/brachytherapy/src/BrachyFactoryLeipzig.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyFactoryLeipzig.cc,v 1.6 2006/06/29 15:48:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyMaterial.cc b/examples/advanced/brachytherapy/src/BrachyMaterial.cc index d1fbb22f33..49b694b96a 100644 --- a/examples/advanced/brachytherapy/src/BrachyMaterial.cc +++ b/examples/advanced/brachytherapy/src/BrachyMaterial.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyMaterial.cc,v 1.7 2006/06/29 15:48:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4MaterialPropertiesTable.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyPhantomROGeometry.cc b/examples/advanced/brachytherapy/src/BrachyPhantomROGeometry.cc index a295c6f745..8e3af96a1f 100644 --- a/examples/advanced/brachytherapy/src/BrachyPhantomROGeometry.cc +++ b/examples/advanced/brachytherapy/src/BrachyPhantomROGeometry.cc @@ -34,7 +34,7 @@ // ************************************ // // $Id: BrachyPhantomROGeometry.cc,v 1.11 2006/06/29 15:48:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyPhantomROGeometry.hh" #include "BrachyDummySD.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyPhantomSD.cc b/examples/advanced/brachytherapy/src/BrachyPhantomSD.cc index 92ec547e7c..9adb11adae 100644 --- a/examples/advanced/brachytherapy/src/BrachyPhantomSD.cc +++ b/examples/advanced/brachytherapy/src/BrachyPhantomSD.cc @@ -34,7 +34,7 @@ // ******************************** // // $Id: BrachyPhantomSD.cc,v 1.13 2006/06/29 15:48:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyPhantomSD.hh" #include "BrachyAnalysisManager.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyPhysicsList.cc b/examples/advanced/brachytherapy/src/BrachyPhysicsList.cc index c20e9d8a2d..350a9bba32 100644 --- a/examples/advanced/brachytherapy/src/BrachyPhysicsList.cc +++ b/examples/advanced/brachytherapy/src/BrachyPhysicsList.cc @@ -36,7 +36,7 @@ // ********************************** // // $Id: BrachyPhysicsList.cc,v 1.13 2006/11/15 10:02:17 guatelli Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyPhysicsList.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorAction.cc b/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorAction.cc index 6aa137141c..a298167033 100644 --- a/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorAction.cc +++ b/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorAction.cc @@ -38,7 +38,7 @@ // ******************************************** // // $Id: BrachyPrimaryGeneratorAction.cc,v 1.18 2006/06/29 15:48:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" #include "BrachyPrimaryGeneratorAction.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorActionI.cc b/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorActionI.cc index 3de970b984..4f51c44212 100644 --- a/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorActionI.cc +++ b/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorActionI.cc @@ -38,7 +38,7 @@ // ******************************************** // // $Id: BrachyPrimaryGeneratorActionI.cc,v 1.10 2006/06/29 15:48:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyPrimaryGeneratorActionI.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorActionIr.cc b/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorActionIr.cc index ced1d0b6bc..84b4b24632 100644 --- a/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorActionIr.cc +++ b/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorActionIr.cc @@ -38,7 +38,7 @@ // ******************************************** // // $Id: BrachyPrimaryGeneratorActionIr.cc,v 1.11 2006/06/29 15:48:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyPrimaryGeneratorActionIr.hh" diff --git a/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorMessenger.cc b/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorMessenger.cc index f49573ac6e..0a0faff0a5 100644 --- a/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorMessenger.cc +++ b/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorMessenger.cc @@ -35,7 +35,7 @@ // // // $Id: BrachyPrimaryGeneratorMessenger.cc,v 1.3 2006/06/29 15:48:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/brachytherapy/src/BrachyRunAction.cc b/examples/advanced/brachytherapy/src/BrachyRunAction.cc index 6f3a4a23d6..7232b73039 100644 --- a/examples/advanced/brachytherapy/src/BrachyRunAction.cc +++ b/examples/advanced/brachytherapy/src/BrachyRunAction.cc @@ -39,7 +39,7 @@ // ******************************* // // $Id: BrachyRunAction.cc,v 1.18 2006/06/29 15:48:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyRunAction.hh" diff --git a/examples/advanced/gammaray_telescope/GammaRayTel.cc b/examples/advanced/gammaray_telescope/GammaRayTel.cc index 24627a135a..73e6d2d2ab 100644 --- a/examples/advanced/gammaray_telescope/GammaRayTel.cc +++ b/examples/advanced/gammaray_telescope/GammaRayTel.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTel.cc,v 1.16 2006/06/29 15:54:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysis.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysis.hh index 3c571b0dc0..44416933e3 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysis.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysis.hh @@ -26,7 +26,7 @@ #ifdef G4ANALYSIS_USE // // $Id: GammaRayTelAnalysis.hh,v 1.18 2006/06/29 15:54:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysisMessenger.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysisMessenger.hh index caa20fb1de..eb39495ce7 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysisMessenger.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysisMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelAnalysisMessenger.hh,v 1.4 2006/06/29 15:54:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class header file diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceHit.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceHit.hh index c103fe7f91..edf4ec04a0 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceHit.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceHit.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelAnticoincidenceHit.hh,v 1.3 2006/06/29 15:54:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceSD.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceSD.hh index efd315868a..e4477f91e4 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceSD.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceSD.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelAnticoincidenceSD.hh,v 1.5 2006/06/29 15:55:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterHit.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterHit.hh index 09873cb3d8..81cca2d500 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterHit.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterHit.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelCalorimeterHit.hh,v 1.3 2006/06/29 15:55:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterSD.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterSD.hh index 9988ff97f1..78e5a17104 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterSD.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterSD.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelCalorimeterSD.hh,v 1.5 2006/06/29 15:55:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorConstruction.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorConstruction.hh index 1fd623ab84..9cb0c7398c 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorConstruction.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelDetectorConstruction.hh,v 1.10 2006/06/29 15:55:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorMessenger.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorMessenger.hh index 7efc7088c3..65c8f6249b 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorMessenger.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelDetectorMessenger.hh,v 1.4 2006/06/29 15:55:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class header file diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelDigi.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelDigi.hh index d76f9700c4..bcea3a2f1d 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelDigi.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelDigi.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelDigi.hh,v 1.3 2006/06/29 15:55:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizer.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizer.hh index 354eb6d402..5e5d30921d 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizer.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizer.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelDigitizer.hh,v 1.4 2006/06/29 15:55:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizerMessenger.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizerMessenger.hh index 180571bfcb..de0bc64b7c 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizerMessenger.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizerMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelDigitizerMessenger.hh,v 1.2 2006/06/29 15:55:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelDummySD.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelDummySD.hh index 32783f469d..ebafe79744 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelDummySD.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelDummySD.hh @@ -26,7 +26,7 @@ // // $Id: GammaRayTelDummySD.hh,v 1.6 2006/06/29 15:55:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelEMPhysics.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelEMPhysics.hh index fcf1bde9fd..fd3784bb2c 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelEMPhysics.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelEMPhysics.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelEMPhysics.hh,v 1.2 2006/06/29 15:55:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelEventAction.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelEventAction.hh index 53f05f7577..4fcb39c02f 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelEventAction.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelEventAction.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelEventAction.hh,v 1.10 2006/06/29 15:55:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelGeneralPhysics.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelGeneralPhysics.hh index 6eae5650b5..c968a36628 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelGeneralPhysics.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelGeneralPhysics.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelGeneralPhysics.hh,v 1.2 2006/06/29 15:55:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelHadronPhysics.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelHadronPhysics.hh index b53ed90cb7..516ee243e3 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelHadronPhysics.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelHadronPhysics.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: GammaRayTelHadronPhysics.hh,v 1.4 2006/06/29 15:55:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class header file diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelIonPhysics.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelIonPhysics.hh index 4dcaf1854c..afd35ded3f 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelIonPhysics.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelIonPhysics.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelIonPhysics.hh,v 1.2 2006/06/29 15:55:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelMuonPhysics.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelMuonPhysics.hh index c6adbcaef8..b8bc16e1f7 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelMuonPhysics.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelMuonPhysics.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelMuonPhysics.hh,v 1.2 2006/06/29 15:55:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorAction.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorAction.hh index 1f23ffbfab..3af6f52b5f 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorAction.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelPrimaryGeneratorAction.hh,v 1.8 2006/06/29 15:55:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class header file diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorMessenger.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorMessenger.hh index 6cd26c2e26..5cd2718daa 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorMessenger.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelPrimaryGeneratorMessenger.hh,v 1.5 2006/06/29 15:55:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelRunAction.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelRunAction.hh index 8f4b90dabe..a889c090ac 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelRunAction.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelRunAction.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelRunAction.hh,v 1.6 2006/06/29 15:55:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerHit.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerHit.hh index c5b588f079..d8212889be 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerHit.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerHit.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelTrackerHit.hh,v 1.3 2006/06/29 15:55:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerROGeometry.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerROGeometry.hh index 5396df7e39..8d540dad56 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerROGeometry.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerROGeometry.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelTrackerROGeometry.hh,v 1.5 2006/06/29 15:56:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerSD.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerSD.hh index dcc22cb768..6a13ec98e0 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerSD.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerSD.hh @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelTrackerSD.hh,v 1.5 2006/06/29 15:56:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysis.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysis.cc index cf3712e683..52ae20895a 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysis.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysis.cc @@ -26,7 +26,7 @@ #ifdef G4ANALYSIS_USE // // $Id: GammaRayTelAnalysis.cc,v 1.21 2006/06/29 15:56:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysisMessenger.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysisMessenger.cc index d0735f86bd..bc4f28869f 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysisMessenger.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysisMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelAnalysisMessenger.cc,v 1.9 2006/06/29 15:56:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceHit.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceHit.cc index 24133a63fa..1627ff9bc3 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceHit.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceHit.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelAnticoincidenceHit.cc,v 1.4 2006/06/29 15:56:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceSD.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceSD.cc index e56c8b4cae..63e1a16b7c 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceSD.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceSD.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelAnticoincidenceSD.cc,v 1.6 2006/06/29 15:56:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterHit.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterHit.cc index f96862ddd2..1eefdc29bc 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterHit.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterHit.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelCalorimeterHit.cc,v 1.4 2006/06/29 15:56:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterSD.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterSD.cc index 437c457b43..ccc20666fa 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterSD.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterSD.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelCalorimeterSD.cc,v 1.7 2006/06/29 15:56:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelDetectorConstruction.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelDetectorConstruction.cc index 77928d6ce7..3964a5ca33 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelDetectorConstruction.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelDetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelDetectorConstruction.cc,v 1.15 2006/06/29 15:56:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelDetectorMessenger.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelDetectorMessenger.cc index 0cfaa1e054..6cb32350eb 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelDetectorMessenger.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelDetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelDetectorMessenger.cc,v 1.8 2006/06/29 15:56:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelDigi.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelDigi.cc index 1214e49f40..502f6fda26 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelDigi.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelDigi.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelDigi.cc,v 1.5 2006/06/29 15:56:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizer.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizer.cc index d6295037cf..223e64d259 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizer.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizer.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelDigitizer.cc,v 1.6 2006/06/29 15:56:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizerMessenger.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizerMessenger.cc index 6d0c903f25..6ad8101687 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizerMessenger.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizerMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelDigitizerMessenger.cc,v 1.5 2006/06/29 15:56:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelEMPhysics.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelEMPhysics.cc index d0f3098138..57b514adc5 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelEMPhysics.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelEMPhysics.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelEMPhysics.cc,v 1.4 2006/06/29 15:56:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelEventAction.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelEventAction.cc index 394d5ee114..7160d87668 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelEventAction.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelEventAction.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelEventAction.cc,v 1.19 2006/06/29 15:56:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelHadronPhysics.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelHadronPhysics.cc index da81793649..993c0e78f2 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelHadronPhysics.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelHadronPhysics.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelHadronPhysics.cc,v 1.4 2006/06/29 15:56:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "GammaRayTelHadronPhysics.hh" diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelIonPhysics.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelIonPhysics.cc index aa670928d9..46503a6f3a 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelIonPhysics.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelIonPhysics.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelIonPhysics.cc,v 1.4 2006/06/29 15:56:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelMuonPhysics.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelMuonPhysics.cc index 0bc9ca414d..5cb91c3e67 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelMuonPhysics.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelMuonPhysics.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelMuonPhysics.cc,v 1.4 2006/06/29 15:56:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelPhysicsList.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelPhysicsList.cc index 6d7c274838..28edec8fd0 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelPhysicsList.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelPhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelPhysicsList.cc,v 1.7 2006/06/29 15:56:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorAction.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorAction.cc index 0a0d1d3450..99787c263e 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorAction.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelPrimaryGeneratorAction.cc,v 1.10 2006/06/29 15:56:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorMessenger.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorMessenger.cc index 9242b6f534..1e5b10ecf2 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorMessenger.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelPrimaryGeneratorMessenger.cc,v 1.8 2006/06/29 15:57:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelRunAction.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelRunAction.cc index 6e07e970e4..452d604e49 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelRunAction.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelRunAction.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelRunAction.cc,v 1.11 2006/06/29 15:57:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerHit.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerHit.cc index 0b0181d331..f4ccac0c16 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerHit.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerHit.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelTrackerHit.cc,v 1.4 2006/06/29 15:57:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerROGeometry.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerROGeometry.cc index 9590df17e8..767763157a 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerROGeometry.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerROGeometry.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelTrackerROGeometry.cc,v 1.6 2006/06/29 15:57:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerSD.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerSD.cc index a6650a156c..a458c0bb29 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerSD.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerSD.cc @@ -25,7 +25,7 @@ // // // $Id: GammaRayTelTrackerSD.cc,v 1.9 2006/06/29 15:57:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/hadrontherapy/History b/examples/advanced/hadrontherapy/History index 87dd093c7c..cd5582b027 100644 --- a/examples/advanced/hadrontherapy/History +++ b/examples/advanced/hadrontherapy/History @@ -8,6 +8,10 @@ $Id: History, v 1.6 2004/02/27 G.A.P. Cirrone Category History file +16.11.2007 Anton Lechner tag hadrontherapy-V09-00-00 + Updated physics commands in macro files + Updated README + 07.06.2007 MGP tag hadrontherapy-V08-03-04 On top of head as on 07.06.2007 Physics component redesigned and reimplemented by Anton Lechner diff --git a/examples/advanced/hadrontherapy/README b/examples/advanced/hadrontherapy/README index d31fccfd27..19dc440ce7 100644 --- a/examples/advanced/hadrontherapy/README +++ b/examples/advanced/hadrontherapy/README @@ -13,10 +13,13 @@ a. Laboratori Nazionali del Sud - Istituto Nazionale di Fisica Nucleare 95123 Catania, Italy * e-mail:cirrone@lns.infn.it -S. GUATELLI(b), M.G. PIA(b) +M.G. PIA(b) b. Istituto Nazionale di Fisica Nucleare, Sezione di Genova Via Dodecaneso, 33 16146, Genova, Italy +A. LECHNER (c) +c. CERN, Switzerland + More informations on the Hadrontherapy example can be found in the Hadrontherapy Documentation available at http://www.ge.infn.it/geant4/examples/ @@ -169,30 +172,49 @@ to visualise the experimental set-up with OpenGL ---->5. PHYSICS -Both electromagnetic and hadronic physic processes are activated for the particles of the -experimental set-up. +Both electromagnetic and hadronic physic processes are activated for +the particles of the experimental set-up. Different physics models can be activated by the user interactively. -Examples of activation are provided in the macro files. -- protonEMLowEnergy.mac: example to activate e.m. low energy physics with different -stopping power models for protons -- protonEMStandard.mac: example to activate the e.m. standard physics + +Examples of activation are provided in the macro files starting +with the string "physics": + +All possible physics options are summarized in the file +physicsAllOptions.mac. + +Different options concerning electromagnetic interactions of protons +and neutrons can be tested with the files: +physicsElectromagneticICRU49.mac +physicsElectromagneticZiegler77.mac +physicsElectromagneticZiegler85.mac + +Different options concerning hadronic interactions of protons and +neutrons can be tested with the files: +physicsHadronicBertini.mac +physicsHadronicBinary.mac +physicsHadronicLEP.mac +physicsHadronicPrecompound.mac + +NOTE: Apart from the different models for protons and neutrons, a user +can also select among several interaction models for particles like +electrons or photons. All possible options are listed in the file +physicsAllOptions.mac. ---->6. SIMULATION OUTPUT The output is an .hbk file (hadrontherapy.hbk) produced if the variable G4ANALYSIS_USE is set to 1 and the analysis tool (AIDA -interface and PI) correctly installed. +interface) correctly installed. The file contains an histogram and an n-tuple. The histogram contains the Bragg curve: energy deposited by the proton beam (in MeV) versus the depth in water (in mm). The n-tuple contains the total 3D energy deposit in the phantom; the information is energy deposit in each voxel with respect to the position of the voxel. -Setup for analysis: AIDA 3.2.1, PI 1.3.8. +Setup for analysis: AIDA 3.2.1 Users can download the analysis tools from: http://aida.freehep.org/ -http://www.cern.ch/PI Note that the same information can be stored in any different format. Please contact cirrone@lns.infn.it if you want store the information in @@ -203,5 +225,5 @@ a different format. for comments, advices, doubts and questions please contact: cirrone@lns.infn.it, giorgiorusso@lns.infn.it -last modified: S. Guatelli, 30/05/2006 +last modified: A. Lechner, 16/11/2007 diff --git a/examples/advanced/hadrontherapy/currentEvent.rndm b/examples/advanced/hadrontherapy/currentEvent.rndm index aba0f68c06..95e130170d 100644 --- a/examples/advanced/hadrontherapy/currentEvent.rndm +++ b/examples/advanced/hadrontherapy/currentEvent.rndm @@ -1,17 +1,5 @@ Uvec 1878463799 -<<<<<<< currentEvent.rndm -0 -600533981 -1872063321 -======= -<<<<<<< currentEvent.rndm -0 -1386277506 -1621732584 -======= -0 -669385865 -2063007468 ->>>>>>> 1.39 ->>>>>>> 1.40 +49 +1636708877 +1921529609 diff --git a/examples/advanced/hadrontherapy/defaultMacro.mac b/examples/advanced/hadrontherapy/defaultMacro.mac index 3c3026fa9b..86a497a1ba 100644 --- a/examples/advanced/hadrontherapy/defaultMacro.mac +++ b/examples/advanced/hadrontherapy/defaultMacro.mac @@ -29,15 +29,17 @@ /event/verbose 0 # SETTING FOR THE PHYSICS MODELS +/physics/addPhysics Decay /physics/addPhysics EM-Photon-EPDL /physics/addPhysics EM-Electron-EEDL /physics/addPhysics EM-Positron-Standard /physics/addPhysics EM-HadronIon-LowE -/physics/addPhysics EM-Muon-Standardmuon-standard -/physics/addPhysics Decay -/physics/addPhysics HadronicEl-HadronIon-QElastic +/physics/addPhysics EM-Muon-Standard +/physics/addPhysics HadronicEl-HadronIon-LElastic +/physics/addPhysics HadronicInel-ProtonNeutron-LEP /physics/addPhysics HadronicInel-Ion-LEP -/physics/addPhysics HadronicInel-ProtonNeutron-Prec +/physics/addPhysics HadronicInel-Pion-LEP +/physics/addPhysics HadronicAtRest-MuonMinus-Capture # FIX THE FOLLOWIG PARAMETERS # TO SET THE RANGE SHIFTER diff --git a/examples/advanced/hadrontherapy/include/HadrontherapyAnalysisManager.hh b/examples/advanced/hadrontherapy/include/HadrontherapyAnalysisManager.hh index 4b9179c1f1..932cb029a1 100644 --- a/examples/advanced/hadrontherapy/include/HadrontherapyAnalysisManager.hh +++ b/examples/advanced/hadrontherapy/include/HadrontherapyAnalysisManager.hh @@ -50,7 +50,7 @@ namespace AIDA{ class ITree; class IAnalysisFactory; class ITreeFactory; -}; +} class HadrontherapyAnalysisManager { @@ -142,5 +142,3 @@ private: #endif #endif - - diff --git a/examples/advanced/hadrontherapy/modulatorMacro.mac b/examples/advanced/hadrontherapy/modulatorMacro.mac index 3ef864cf59..9aef5432eb 100644 --- a/examples/advanced/hadrontherapy/modulatorMacro.mac +++ b/examples/advanced/hadrontherapy/modulatorMacro.mac @@ -30,15 +30,17 @@ # SETTING FOR THE PHYSICS MODELS +/physics/addPhysics Decay /physics/addPhysics EM-Photon-EPDL /physics/addPhysics EM-Electron-EEDL /physics/addPhysics EM-Positron-Standard /physics/addPhysics EM-HadronIon-LowE -/physics/addPhysics EM-Muon-Standardmuon-standard -/physics/addPhysics Decay -/physics/addPhysics HadronicEl-HadronIon-QElastic +/physics/addPhysics EM-Muon-Standard +/physics/addPhysics HadronicEl-HadronIon-LElastic +/physics/addPhysics HadronicInel-ProtonNeutron-LEP /physics/addPhysics HadronicInel-Ion-LEP -/physics/addPhysics HadronicInel-ProtonNeutron-Prec +/physics/addPhysics HadronicInel-Pion-LEP +/physics/addPhysics HadronicAtRest-MuonMinus-Capture /run/initialize diff --git a/examples/advanced/hadrontherapy/physicsAllOptions.mac b/examples/advanced/hadrontherapy/physicsAllOptions.mac new file mode 100644 index 0000000000..843d56559b --- /dev/null +++ b/examples/advanced/hadrontherapy/physicsAllOptions.mac @@ -0,0 +1,204 @@ +############################################################################ +# +# This example macro file provides an overview of all possible physics +# options available in the Hadrontherapy advanced example. A user can +# create his own physics list by combining different physics constructors. +# +############################################################################ +# +# Summary of available physics options and associated macro commands: +# +# Commands are arranged by the type of interactions and the different +# particles. +# +# NOTE: For a given type of physics processes and a given particle ONLY ONE +# physics constructor should be activated (the different options are +# indicated by "Option X", where in some cases only one option exists). +# +# To create a complete physics list, a physics constructor must be +# activated for each subpoint (A,B,C,...) of each of the different physics +# interactions (I-V). +# +# Below the overview one can find an example set of macro commands for +# activating physics constructors, where alternative options are also +# specified (as comments). +# +# +# I) Decay: +# --------- +# A. Unstable particles +# Option 1: Decay model +# Macro command: /physics/addPhysics Decay +# +# +# II) Electromagnetic Physics +# --------------------------- +# A. Photons +# Option 1: Livermore-based models (Low-energy package) +# Macro command: /physics/addPhysics EM-Photon-EPDL +# Option 2: Penelope-like models (Low-energy package) +# Macro command: /physics/addPhysics EM-Photon-Penelope +# Option 3: Standard models (Standard package) +# Macro command: /physics/addPhysics EM-Photon-Standard +# +# B. Electrons +# Option 1: Livermore-based models (Low-energy package) +# Macro command: /physics/addPhysics EM-Electron-EEDL +# Option 2: Penelope-like models (Low-energy package) +# Macro command: /physics/addPhysics EM-Electron-Penelope +# Option 3: Standard models (Standard package) +# Macro command: /physics/addPhysics EM-Electron-Standard +# +# C. Charged hadrons, ions +# Option 1: ICRU49-based models (Low-energy package) +# Macro command: /physics/addPhysics EM-HadronIon-LowE +# Option 2: Ziegler77-based models (Low-energy package) +# Macro command: /physics/addPhysics EM-HadronIon-LowEZiegler1977 +# Option 3: Ziegler85-based models (Low-energy package) +# Macro command: /physics/addPhysics EM-HadronIon-LowEZiegler1985 +# Option 4: Standard models (Standard package) +# Macro command: /physics/addPhysics EM-HadronIon-Standard +# +# D. Positrons +# Option 1: Penelope-like models (Low-energy package) +# Macro command: /physics/addPhysics EM-Positron-Penelope +# Option 2: Standard models (Standard package) +# Macro command: /physics/addPhysics EM-Positron-Standard +# +# E. Muons +# Option 1: Standard models (Standard package) +# Macro command: /physics/addPhysics EM-Muon-Standard +# +# +# III) Hadronic Physics (elastic) +# ------------------------------- +# A. Hadrons (protons, neutrons, pions), ions (deuterons, tritons, alphas) +# Option 1: LEP elastic scattering model +# Macro command: /physics/addPhysics HadronicEl-HadronIon-LElastic +# Option 2: Bertini model (hadrons), LEP model (ions) +# Macro command: /physics/addPhysics HadronicEl-HadronIon-Bert +# Option 3: UHadronElasticProcess +# Macro command: /physics/addPhysics HadronicEl-HadronIon-UElastic +# Option 4: CHIPS (protons, neutrons), LEP model (other hadrons, ions) +# Macro command: /physics/addPhysics HadronicEl-HadronIon-QElastic +# +# +# IV) Hadronic Physics (inelastic) +# -------------------------------- +# A. Protons, neutrons +# Option 1: LEP model +# Macro command: /physics/addPhysics HadronicInel-ProtonNeutron-LEP +# Option 2: Precompound model (default evaporation) +# Macro command: /physics/addPhysics HadronicInel-ProtonNeutron-Prec +# Option 3: Precompound model (GEM evaporation) +# Macro command: /physics/addPhysics HadronicInel-ProtonNeutron-PrecGEM +# Option 4: Precompound model (default evaporation, Fermi break-up) +# Macro command: /physics/addPhysics HadronicInel-ProtonNeutron-PrecFermi +# Option 5: Precompound model (GEM evaporation, Fermi break-up) +# Macro command: /physics/addPhysics HadronicInel-ProtonNeutron-PrecGEMFermi +# Option 6: Bertini model +# Macro command: /physics/addPhysics HadronicInel-ProtonNeutron-Bert +# Option 7: Binary cascade model +# Macro command: /physics/addPhysics HadronicInel-ProtonNeutron-Bin +# +# B. Pions +# Option 1: LEP model +# Macro command: /physics/addPhysics HadronicInel-Pion-LEP +# Option 2: Bertini model +# Macro command: /physics/addPhysics HadronicInel-Pion-Bert +# +# C. Ions (deuterons, tritons, alphas) +# Option 1: LEP model +# Macro command: /physics/addPhysics HadronicInel-Ion-LEP +# +# +# V) Hadronic Physics (at rest) +# ----------------------------- +# A. Muons- +# Option 1: Muon Minus Capture model +# Macro command: /physics/addPhysics HadronicAtRest-MuonMinus-Capture +# +# +# +############################################################################## + + +#################### +# VERBOSITY LEVELS # +#################### + +/control/verbose 1 +/tracking/verbose 0 +/run/verbose 0 +/event/verbose 0 + + +########### +# PHYSICS # +########### + +/physics/addPhysics Decay + +/physics/addPhysics EM-Photon-EPDL +### Alternatively: +### /physics/addPhysics EM-Photon-Penelope +### /physics/addPhysics EM-Photon-Standard + +/physics/addPhysics EM-Electron-EEDL +### Alternatively: +### /physics/addPhysics EM-Electron-Penelope +### /physics/addPhysics EM-Electron-Standard + +/physics/addPhysics EM-HadronIon-LowE +### Alternatively: +### /physics/addPhysics EM-HadronIon-LowEZiegler1977 +### /physics/addPhysics EM-HadronIon-LowEZiegler1985 +### /physics/addPhysics EM-HadronIon-Standard + +/physics/addPhysics EM-Positron-Penelope +### Alternatively: +### /physics/addPhysics EM-Positron-Standard + +/physics/addPhysics EM-Muon-Standard + +/physics/addPhysics HadronicEl-HadronIon-LElastic +### Alternatively: +### /physics/addPhysics HadronicEl-HadronIon-Bert +### /physics/addPhysics HadronicEl-HadronIon-UElastic +### /physics/addPhysics HadronicEl-HadronIon-QElastic + +/physics/addPhysics HadronicInel-ProtonNeutron-LEP +### Alternatively: +### /physics/addPhysics HadronicInel-ProtonNeutron-Prec +### /physics/addPhysics HadronicInel-ProtonNeutron-PrecGEM +### /physics/addPhysics HadronicInel-ProtonNeutron-PrecFermi +### /physics/addPhysics HadronicInel-ProtonNeutron-PrecGEMFermi +### /physics/addPhysics HadronicInel-ProtonNeutron-Bert +### /physics/addPhysics HadronicInel-ProtonNeutron-Bin + +/physics/addPhysics HadronicInel-Pion-LEP +### Alternatively: +### /physics/addPhysics HadronicInel-Pion-Bert + +/physics/addPhysics HadronicInel-Ion-LEP + +/physics/addPhysics HadronicAtRest-MuonMinus-Capture + + +############################## +# BEAM LINE SETTINGS AND RUN # +############################## + +/run/initialize + +### IF YOU WANT A RANGE SHIFTER PLEASE CHANGE +### THE FOLLOWIG PARAMETERS +### SETTING FOR THE RANGE SHIFTER + +#/beamLine/RangeShifter/thickness 4 cm +#/beamLine/RangeShifter/RSMat Water + +/run/beamOn 200 + + + diff --git a/examples/advanced/hadrontherapy/physicsElectromagneticICRU49.mac b/examples/advanced/hadrontherapy/physicsElectromagneticICRU49.mac new file mode 100644 index 0000000000..df4bb38748 --- /dev/null +++ b/examples/advanced/hadrontherapy/physicsElectromagneticICRU49.mac @@ -0,0 +1,87 @@ +############################################################################ +# +# PHYSICS LIST: +# ============= +# +# Decay: +# ------ +# * Decay of all unstable particles +# +# +# Electromagnetic Physics +# ----------------------- +# * Livermore-based models for photons, electrons +# * ICRU49-based models for charged hadrons, ions +# * Standard models for positrons, muons +# +# +# Hadronic Physics (elastic) +# -------------------------- +# * LEP elastic scattering model for hadrons (protons, +# neutrons, pions), ions (deuterons, tritons, alphas) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * LEP model for protons, neutrons +# * Fission and capture models for neutrons +# * LEP model for ions (deuterons, tritons, alphas) +# * LEP model for pions (pions+, pions-) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * Capture model for muons- +# +############################################################################## + + +#################### +# VERBOSITY LEVELS # +#################### + +/control/verbose 1 +/tracking/verbose 0 +/run/verbose 0 +/event/verbose 0 + + +########### +# PHYSICS # +########### + +### A) EM PHYSICS AND DECAY + +/physics/addPhysics Decay +/physics/addPhysics EM-Photon-EPDL +/physics/addPhysics EM-Electron-EEDL +/physics/addPhysics EM-Positron-Standard +/physics/addPhysics EM-HadronIon-LowE +/physics/addPhysics EM-Muon-Standard + +### B) HADRONIC PHYSICS + +/physics/addPhysics HadronicEl-HadronIon-LElastic +/physics/addPhysics HadronicInel-ProtonNeutron-LEP +/physics/addPhysics HadronicInel-Ion-LEP +/physics/addPhysics HadronicInel-Pion-LEP +/physics/addPhysics HadronicAtRest-MuonMinus-Capture + + +############################## +# BEAM LINE SETTINGS AND RUN # +############################## + +/run/initialize + +### IF YOU WANT A RANGE SHIFTER PLEASE CHANGE +### THE FOLLOWIG PARAMETERS +### SETTING FOR THE RANGE SHIFTER + +#/beamLine/RangeShifter/thickness 4 cm +#/beamLine/RangeShifter/RSMat Water + +/run/beamOn 200 + + + diff --git a/examples/advanced/hadrontherapy/physicsElectromagneticZiegler77.mac b/examples/advanced/hadrontherapy/physicsElectromagneticZiegler77.mac new file mode 100644 index 0000000000..55b627494a --- /dev/null +++ b/examples/advanced/hadrontherapy/physicsElectromagneticZiegler77.mac @@ -0,0 +1,87 @@ +############################################################################ +# +# PHYSICS LIST: +# ============= +# +# Decay: +# ------ +# * Decay of all unstable particles +# +# +# Electromagnetic Physics +# ----------------------- +# * Livermore-based models for photons, electrons +# * Ziegler77-based models for charged hadrons, ions +# * Standard models for positrons, muons +# +# +# Hadronic Physics (elastic) +# -------------------------- +# * LEP elastic scattering model for hadrons (protons, +# neutrons, pions), ions (deuterons, tritons, alphas) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * LEP model for protons, neutrons +# * Fission and capture models for neutrons +# * LEP model for ions (deuterons, tritons, alphas) +# * LEP model for pions (pions+, pions-) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * Capture model for muons- +# +############################################################################## + + +#################### +# VERBOSITY LEVELS # +#################### + +/control/verbose 1 +/tracking/verbose 0 +/run/verbose 0 +/event/verbose 0 + + +########### +# PHYSICS # +########### + +### A) EM PHYSICS AND DECAY + +/physics/addPhysics Decay +/physics/addPhysics EM-Photon-EPDL +/physics/addPhysics EM-Electron-EEDL +/physics/addPhysics EM-Positron-Standard +/physics/addPhysics EM-HadronIon-LowEZiegler1977 +/physics/addPhysics EM-Muon-Standard + +### B) HADRONIC PHYSICS + +/physics/addPhysics HadronicEl-HadronIon-LElastic +/physics/addPhysics HadronicInel-ProtonNeutron-LEP +/physics/addPhysics HadronicInel-Ion-LEP +/physics/addPhysics HadronicInel-Pion-LEP +/physics/addPhysics HadronicAtRest-MuonMinus-Capture + + +############################## +# BEAM LINE SETTINGS AND RUN # +############################## + +/run/initialize + +### IF YOU WANT A RANGE SHIFTER PLEASE CHANGE +### THE FOLLOWIG PARAMETERS +### SETTING FOR THE RANGE SHIFTER + +#/beamLine/RangeShifter/thickness 4 cm +#/beamLine/RangeShifter/RSMat Water + +/run/beamOn 200 + + + diff --git a/examples/advanced/hadrontherapy/physicsElectromagneticZiegler85.mac b/examples/advanced/hadrontherapy/physicsElectromagneticZiegler85.mac new file mode 100644 index 0000000000..946251abda --- /dev/null +++ b/examples/advanced/hadrontherapy/physicsElectromagneticZiegler85.mac @@ -0,0 +1,87 @@ +############################################################################ +# +# PHYSICS LIST: +# ============= +# +# Decay: +# ------ +# * Decay of all unstable particles +# +# +# Electromagnetic Physics +# ----------------------- +# * Livermore-based models for photons, electrons +# * Ziegler85-based models for charged hadrons, ions +# * Standard models for positrons, muons +# +# +# Hadronic Physics (elastic) +# -------------------------- +# * LEP elastic scattering model for hadrons (protons, +# neutrons, pions), ions (deuterons, tritons, alphas) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * LEP model for protons, neutrons +# * Fission and capture models for neutrons +# * LEP model for ions (deuterons, tritons, alphas) +# * LEP model for pions (pions+, pions-) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * Capture model for muons- +# +############################################################################## + + +#################### +# VERBOSITY LEVELS # +#################### + +/control/verbose 1 +/tracking/verbose 0 +/run/verbose 0 +/event/verbose 0 + + +########### +# PHYSICS # +########### + +### A) EM PHYSICS AND DECAY + +/physics/addPhysics Decay +/physics/addPhysics EM-Photon-EPDL +/physics/addPhysics EM-Electron-EEDL +/physics/addPhysics EM-Positron-Standard +/physics/addPhysics EM-HadronIon-LowEZiegler1985 +/physics/addPhysics EM-Muon-Standard + +### B) HADRONIC PHYSICS + +/physics/addPhysics HadronicEl-HadronIon-LElastic +/physics/addPhysics HadronicInel-ProtonNeutron-LEP +/physics/addPhysics HadronicInel-Ion-LEP +/physics/addPhysics HadronicInel-Pion-LEP +/physics/addPhysics HadronicAtRest-MuonMinus-Capture + + +############################## +# BEAM LINE SETTINGS AND RUN # +############################## + +/run/initialize + +### IF YOU WANT A RANGE SHIFTER PLEASE CHANGE +### THE FOLLOWIG PARAMETERS +### SETTING FOR THE RANGE SHIFTER + +#/beamLine/RangeShifter/thickness 4 cm +#/beamLine/RangeShifter/RSMat Water + +/run/beamOn 200 + + + diff --git a/examples/advanced/hadrontherapy/physicsHadronicBertini.mac b/examples/advanced/hadrontherapy/physicsHadronicBertini.mac new file mode 100644 index 0000000000..8a4f75a3f7 --- /dev/null +++ b/examples/advanced/hadrontherapy/physicsHadronicBertini.mac @@ -0,0 +1,87 @@ +############################################################################ +# +# PHYSICS LIST: +# ============= +# +# Decay: +# ------ +# * Decay of all unstable particles +# +# +# Electromagnetic Physics +# ----------------------- +# * Livermore-based models for photons, electrons +# * ICRU49-based models for charged hadrons, ions +# * Standard models for positrons, muons +# +# +# Hadronic Physics (elastic) +# -------------------------- +# * LEP elastic scattering model for hadrons (protons, +# neutrons, pions), ions (deuterons, tritons, alphas) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * Bertini model for protons, neutrons +# * Fission and capture models for neutrons +# * LEP model for ions (deuterons, tritons, alphas) +# * LEP model for pions (pions+, pions-) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * Capture model for muons- +# +############################################################################## + + +#################### +# VERBOSITY LEVELS # +#################### + +/control/verbose 1 +/tracking/verbose 0 +/run/verbose 0 +/event/verbose 0 + + +########### +# PHYSICS # +########### + +### A) EM PHYSICS AND DECAY + +/physics/addPhysics Decay +/physics/addPhysics EM-Photon-EPDL +/physics/addPhysics EM-Electron-EEDL +/physics/addPhysics EM-Positron-Standard +/physics/addPhysics EM-HadronIon-LowE +/physics/addPhysics EM-Muon-Standard + +### B) HADRONIC PHYSICS + +/physics/addPhysics HadronicEl-HadronIon-LElastic +/physics/addPhysics HadronicInel-ProtonNeutron-Bert +/physics/addPhysics HadronicInel-Ion-LEP +/physics/addPhysics HadronicInel-Pion-LEP +/physics/addPhysics HadronicAtRest-MuonMinus-Capture + + +############################## +# BEAM LINE SETTINGS AND RUN # +############################## + +/run/initialize + +### IF YOU WANT A RANGE SHIFTER PLEASE CHANGE +### THE FOLLOWIG PARAMETERS +### SETTING FOR THE RANGE SHIFTER + +#/beamLine/RangeShifter/thickness 4 cm +#/beamLine/RangeShifter/RSMat Water + +/run/beamOn 200 + + + diff --git a/examples/advanced/hadrontherapy/physicsHadronicBinary.mac b/examples/advanced/hadrontherapy/physicsHadronicBinary.mac new file mode 100644 index 0000000000..087da21941 --- /dev/null +++ b/examples/advanced/hadrontherapy/physicsHadronicBinary.mac @@ -0,0 +1,87 @@ +############################################################################ +# +# PHYSICS LIST: +# ============= +# +# Decay: +# ------ +# * Decay of all unstable particles +# +# +# Electromagnetic Physics +# ----------------------- +# * Livermore-based models for photons, electrons +# * ICRU49-based models for charged hadrons, ions +# * Standard models for positrons, muons +# +# +# Hadronic Physics (elastic) +# -------------------------- +# * LEP elastic scattering model for hadrons (protons, +# neutrons, pions), ions (deuterons, tritons, alphas) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * Binary model for protons, neutrons +# * Fission and capture models for neutrons +# * LEP model for ions (deuterons, tritons, alphas) +# * LEP model for pions (pions+, pions-) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * Capture model for muons- +# +############################################################################## + + +#################### +# VERBOSITY LEVELS # +#################### + +/control/verbose 1 +/tracking/verbose 0 +/run/verbose 0 +/event/verbose 0 + + +########### +# PHYSICS # +########### + +### A) EM PHYSICS AND DECAY + +/physics/addPhysics Decay +/physics/addPhysics EM-Photon-EPDL +/physics/addPhysics EM-Electron-EEDL +/physics/addPhysics EM-Positron-Standard +/physics/addPhysics EM-HadronIon-LowE +/physics/addPhysics EM-Muon-Standard + +### B) HADRONIC PHYSICS + +/physics/addPhysics HadronicEl-HadronIon-LElastic +/physics/addPhysics HadronicInel-ProtonNeutron-Bin +/physics/addPhysics HadronicInel-Ion-LEP +/physics/addPhysics HadronicInel-Pion-LEP +/physics/addPhysics HadronicAtRest-MuonMinus-Capture + + +############################## +# BEAM LINE SETTINGS AND RUN # +############################## + +/run/initialize + +### IF YOU WANT A RANGE SHIFTER PLEASE CHANGE +### THE FOLLOWIG PARAMETERS +### SETTING FOR THE RANGE SHIFTER + +#/beamLine/RangeShifter/thickness 4 cm +#/beamLine/RangeShifter/RSMat Water + +/run/beamOn 200 + + + diff --git a/examples/advanced/hadrontherapy/physicsHadronicLEP.mac b/examples/advanced/hadrontherapy/physicsHadronicLEP.mac new file mode 100644 index 0000000000..df4bb38748 --- /dev/null +++ b/examples/advanced/hadrontherapy/physicsHadronicLEP.mac @@ -0,0 +1,87 @@ +############################################################################ +# +# PHYSICS LIST: +# ============= +# +# Decay: +# ------ +# * Decay of all unstable particles +# +# +# Electromagnetic Physics +# ----------------------- +# * Livermore-based models for photons, electrons +# * ICRU49-based models for charged hadrons, ions +# * Standard models for positrons, muons +# +# +# Hadronic Physics (elastic) +# -------------------------- +# * LEP elastic scattering model for hadrons (protons, +# neutrons, pions), ions (deuterons, tritons, alphas) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * LEP model for protons, neutrons +# * Fission and capture models for neutrons +# * LEP model for ions (deuterons, tritons, alphas) +# * LEP model for pions (pions+, pions-) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * Capture model for muons- +# +############################################################################## + + +#################### +# VERBOSITY LEVELS # +#################### + +/control/verbose 1 +/tracking/verbose 0 +/run/verbose 0 +/event/verbose 0 + + +########### +# PHYSICS # +########### + +### A) EM PHYSICS AND DECAY + +/physics/addPhysics Decay +/physics/addPhysics EM-Photon-EPDL +/physics/addPhysics EM-Electron-EEDL +/physics/addPhysics EM-Positron-Standard +/physics/addPhysics EM-HadronIon-LowE +/physics/addPhysics EM-Muon-Standard + +### B) HADRONIC PHYSICS + +/physics/addPhysics HadronicEl-HadronIon-LElastic +/physics/addPhysics HadronicInel-ProtonNeutron-LEP +/physics/addPhysics HadronicInel-Ion-LEP +/physics/addPhysics HadronicInel-Pion-LEP +/physics/addPhysics HadronicAtRest-MuonMinus-Capture + + +############################## +# BEAM LINE SETTINGS AND RUN # +############################## + +/run/initialize + +### IF YOU WANT A RANGE SHIFTER PLEASE CHANGE +### THE FOLLOWIG PARAMETERS +### SETTING FOR THE RANGE SHIFTER + +#/beamLine/RangeShifter/thickness 4 cm +#/beamLine/RangeShifter/RSMat Water + +/run/beamOn 200 + + + diff --git a/examples/advanced/hadrontherapy/physicsHadronicPrecompound.mac b/examples/advanced/hadrontherapy/physicsHadronicPrecompound.mac new file mode 100644 index 0000000000..ab4443d7bd --- /dev/null +++ b/examples/advanced/hadrontherapy/physicsHadronicPrecompound.mac @@ -0,0 +1,95 @@ +############################################################################ +# +# PHYSICS LIST: +# ============= +# +# Decay: +# ------ +# * Decay of all unstable particles +# +# +# Electromagnetic Physics +# ----------------------- +# * Livermore-based models for photons, electrons +# * ICRU49-based models for charged hadrons, ions +# * Standard models for positrons, muons +# +# +# Hadronic Physics (elastic) +# -------------------------- +# * LEP elastic scattering model for hadrons (protons, +# neutrons, pions), ions (deuterons, tritons, alphas) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * Precompound model for protons, neutrons +# Options: A. Default evaporation, no Fermi break-up (activated) +# B. GEM evaporation, no Fermi break-up +# C. GEM evaporation, Fermi break-up +# D. Default evaporation evaporation, Fermi break-up +# * Fission and capture models for neutrons +# * LEP model for ions (deuterons, tritons, alphas) +# * LEP model for pions (pions+, pions-) +# +# +# Hadronic Physics (inelastic) +# ---------------------------- +# * Capture model for muons- +# +############################################################################## + + +#################### +# VERBOSITY LEVELS # +#################### + +/control/verbose 1 +/tracking/verbose 0 +/run/verbose 0 +/event/verbose 0 + + +########### +# PHYSICS # +########### + +### A) EM PHYSICS AND DECAY + +/physics/addPhysics Decay +/physics/addPhysics EM-Photon-EPDL +/physics/addPhysics EM-Electron-EEDL +/physics/addPhysics EM-Positron-Standard +/physics/addPhysics EM-HadronIon-LowE +/physics/addPhysics EM-Muon-Standard + +### B) HADRONIC PHYSICS + +/physics/addPhysics HadronicEl-HadronIon-LElastic +/physics/addPhysics HadronicInel-ProtonNeutron-Prec +### Other options for Precompound model (for a description see above): +### Option B. /physics/addPhysics HadronicInel-ProtonNeutron-PrecGEM +### Option C. /physics/addPhysics HadronicInel-ProtonNeutron-PrecGEMFermi +### Option D. /physics/addPhysics HadronicInel-ProtonNeutron-PrecFermi +/physics/addPhysics HadronicInel-Ion-LEP +/physics/addPhysics HadronicInel-Pion-LEP +/physics/addPhysics HadronicAtRest-MuonMinus-Capture + + +############################## +# BEAM LINE SETTINGS AND RUN # +############################## + +/run/initialize + +### IF YOU WANT A RANGE SHIFTER PLEASE CHANGE +### THE FOLLOWIG PARAMETERS +### SETTING FOR THE RANGE SHIFTER + +#/beamLine/RangeShifter/thickness 4 cm +#/beamLine/RangeShifter/RSMat Water + +/run/beamOn 200 + + + diff --git a/examples/advanced/hadrontherapy/visualisationMacro.mac b/examples/advanced/hadrontherapy/visualisationMacro.mac index 8cfdf27b18..2b3677cb07 100644 --- a/examples/advanced/hadrontherapy/visualisationMacro.mac +++ b/examples/advanced/hadrontherapy/visualisationMacro.mac @@ -31,15 +31,17 @@ /event/verbose 0 # SETTING FOR THE PHYSICS MODELS +/physics/addPhysics Decay /physics/addPhysics EM-Photon-EPDL /physics/addPhysics EM-Electron-EEDL /physics/addPhysics EM-Positron-Standard /physics/addPhysics EM-HadronIon-LowE -/physics/addPhysics EM-Muon-Standardmuon-standard -/physics/addPhysics Decay -/physics/addPhysics HadronicEl-HadronIon-QElastic +/physics/addPhysics EM-Muon-Standard +/physics/addPhysics HadronicEl-HadronIon-LElastic +/physics/addPhysics HadronicInel-ProtonNeutron-LEP /physics/addPhysics HadronicInel-Ion-LEP -/physics/addPhysics HadronicInel-ProtonNeutron-Prec +/physics/addPhysics HadronicInel-Pion-LEP +/physics/addPhysics HadronicAtRest-MuonMinus-Capture /run/initialize diff --git a/examples/advanced/human_phantom/include/G4HumanPhantomHit.hh b/examples/advanced/human_phantom/include/G4HumanPhantomHit.hh index f7d67dcb53..d9b3297924 100644 --- a/examples/advanced/human_phantom/include/G4HumanPhantomHit.hh +++ b/examples/advanced/human_phantom/include/G4HumanPhantomHit.hh @@ -25,7 +25,7 @@ // // // $Id: G4HumanPhantomHit.hh,v 1.10 2007/05/15 14:46:54 guatelli Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4HumanPhantomHit_h diff --git a/examples/advanced/human_phantom/src/G4HumanPhantomHit.cc b/examples/advanced/human_phantom/src/G4HumanPhantomHit.cc index 3b772c276f..2abcbeadd3 100644 --- a/examples/advanced/human_phantom/src/G4HumanPhantomHit.cc +++ b/examples/advanced/human_phantom/src/G4HumanPhantomHit.cc @@ -25,7 +25,7 @@ // // // $Id: G4HumanPhantomHit.cc,v 1.11 2007/05/15 14:45:35 guatelli Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4HumanPhantomHit.hh" diff --git a/examples/advanced/lAr_calorimeter/include/FCALCalorHit.hh b/examples/advanced/lAr_calorimeter/include/FCALCalorHit.hh index 188c8796fe..6492a1a993 100644 --- a/examples/advanced/lAr_calorimeter/include/FCALCalorHit.hh +++ b/examples/advanced/lAr_calorimeter/include/FCALCalorHit.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALCalorHit.hh,v 1.6 2006/06/29 16:01:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/include/FCALEMModuleSD.hh b/examples/advanced/lAr_calorimeter/include/FCALEMModuleSD.hh index bb387bffad..2d7051638e 100644 --- a/examples/advanced/lAr_calorimeter/include/FCALEMModuleSD.hh +++ b/examples/advanced/lAr_calorimeter/include/FCALEMModuleSD.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALEMModuleSD.hh,v 1.8 2006/06/29 16:01:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/include/FCALHadModuleSD.hh b/examples/advanced/lAr_calorimeter/include/FCALHadModuleSD.hh index 4cd0e3e150..f9358cb25f 100644 --- a/examples/advanced/lAr_calorimeter/include/FCALHadModuleSD.hh +++ b/examples/advanced/lAr_calorimeter/include/FCALHadModuleSD.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALHadModuleSD.hh,v 1.8 2006/06/29 16:01:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/include/FCALPrimaryGeneratorAction.hh b/examples/advanced/lAr_calorimeter/include/FCALPrimaryGeneratorAction.hh index d84ed22c43..b385869c87 100644 --- a/examples/advanced/lAr_calorimeter/include/FCALPrimaryGeneratorAction.hh +++ b/examples/advanced/lAr_calorimeter/include/FCALPrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALPrimaryGeneratorAction.hh,v 1.6 2006/06/29 16:02:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/include/FCALRunAction.hh b/examples/advanced/lAr_calorimeter/include/FCALRunAction.hh index 210d9eb061..12d7e7e06c 100644 --- a/examples/advanced/lAr_calorimeter/include/FCALRunAction.hh +++ b/examples/advanced/lAr_calorimeter/include/FCALRunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALRunAction.hh,v 1.10 2006/06/29 16:02:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/include/FCALSteppingAction.hh b/examples/advanced/lAr_calorimeter/include/FCALSteppingAction.hh index 5503facd0e..2b9c913109 100644 --- a/examples/advanced/lAr_calorimeter/include/FCALSteppingAction.hh +++ b/examples/advanced/lAr_calorimeter/include/FCALSteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALSteppingAction.hh,v 1.7 2006/06/29 16:02:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/include/FCALSteppingVerbose.hh b/examples/advanced/lAr_calorimeter/include/FCALSteppingVerbose.hh index 1f6ef3bbf3..690ae35edc 100644 --- a/examples/advanced/lAr_calorimeter/include/FCALSteppingVerbose.hh +++ b/examples/advanced/lAr_calorimeter/include/FCALSteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALSteppingVerbose.hh,v 1.6 2006/06/29 16:02:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/examples/advanced/lAr_calorimeter/include/FCALTBEventAction.hh b/examples/advanced/lAr_calorimeter/include/FCALTBEventAction.hh index b08cea20d8..dce1c4969f 100644 --- a/examples/advanced/lAr_calorimeter/include/FCALTBEventAction.hh +++ b/examples/advanced/lAr_calorimeter/include/FCALTBEventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALTBEventAction.hh,v 1.11 2006/06/29 16:02:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/include/FCALTestbeamSetupSD.hh b/examples/advanced/lAr_calorimeter/include/FCALTestbeamSetupSD.hh index 7b41252563..85552ad009 100644 --- a/examples/advanced/lAr_calorimeter/include/FCALTestbeamSetupSD.hh +++ b/examples/advanced/lAr_calorimeter/include/FCALTestbeamSetupSD.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALTestbeamSetupSD.hh,v 1.7 2006/06/29 16:02:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/lArCal.cc b/examples/advanced/lAr_calorimeter/lArCal.cc index ea417d6920..cd2b871d05 100644 --- a/examples/advanced/lAr_calorimeter/lArCal.cc +++ b/examples/advanced/lAr_calorimeter/lArCal.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: lArCal.cc,v 1.11 2006/06/29 16:01:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/advanced/lAr_calorimeter/src/FCALCalorHit.cc b/examples/advanced/lAr_calorimeter/src/FCALCalorHit.cc index 2b296564cb..3319049015 100644 --- a/examples/advanced/lAr_calorimeter/src/FCALCalorHit.cc +++ b/examples/advanced/lAr_calorimeter/src/FCALCalorHit.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALCalorHit.cc,v 1.6 2006/06/29 16:02:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/src/FCALEMModuleSD.cc b/examples/advanced/lAr_calorimeter/src/FCALEMModuleSD.cc index f2585bc9b9..d7de332ab8 100644 --- a/examples/advanced/lAr_calorimeter/src/FCALEMModuleSD.cc +++ b/examples/advanced/lAr_calorimeter/src/FCALEMModuleSD.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALEMModuleSD.cc,v 1.12 2006/07/21 11:45:53 ribon Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/src/FCALHadModuleSD.cc b/examples/advanced/lAr_calorimeter/src/FCALHadModuleSD.cc index 22bb72737f..9dc70a11cd 100644 --- a/examples/advanced/lAr_calorimeter/src/FCALHadModuleSD.cc +++ b/examples/advanced/lAr_calorimeter/src/FCALHadModuleSD.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALHadModuleSD.cc,v 1.10 2006/07/21 11:45:53 ribon Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/src/FCALPrimaryGeneratorAction.cc b/examples/advanced/lAr_calorimeter/src/FCALPrimaryGeneratorAction.cc index 0e90f3387d..b55efd203c 100644 --- a/examples/advanced/lAr_calorimeter/src/FCALPrimaryGeneratorAction.cc +++ b/examples/advanced/lAr_calorimeter/src/FCALPrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALPrimaryGeneratorAction.cc,v 1.9 2006/07/21 08:19:33 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/src/FCALRunAction.cc b/examples/advanced/lAr_calorimeter/src/FCALRunAction.cc index 2a7c1d264a..d40c53080b 100644 --- a/examples/advanced/lAr_calorimeter/src/FCALRunAction.cc +++ b/examples/advanced/lAr_calorimeter/src/FCALRunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALRunAction.cc,v 1.7 2006/06/29 16:03:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/src/FCALSteppingAction.cc b/examples/advanced/lAr_calorimeter/src/FCALSteppingAction.cc index 7157b6ff57..d0b755f2ed 100644 --- a/examples/advanced/lAr_calorimeter/src/FCALSteppingAction.cc +++ b/examples/advanced/lAr_calorimeter/src/FCALSteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALSteppingAction.cc,v 1.7 2006/06/29 16:03:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/src/FCALSteppingVerbose.cc b/examples/advanced/lAr_calorimeter/src/FCALSteppingVerbose.cc index c9cd2af194..825f8b4e4a 100644 --- a/examples/advanced/lAr_calorimeter/src/FCALSteppingVerbose.cc +++ b/examples/advanced/lAr_calorimeter/src/FCALSteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALSteppingVerbose.cc,v 1.7 2006/06/29 16:03:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/examples/advanced/lAr_calorimeter/src/FCALTBEventAction.cc b/examples/advanced/lAr_calorimeter/src/FCALTBEventAction.cc index 15f5b62669..f654f1495c 100644 --- a/examples/advanced/lAr_calorimeter/src/FCALTBEventAction.cc +++ b/examples/advanced/lAr_calorimeter/src/FCALTBEventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALTBEventAction.cc,v 1.13 2006/06/29 16:03:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/lAr_calorimeter/src/FCALTestbeamSetupSD.cc b/examples/advanced/lAr_calorimeter/src/FCALTestbeamSetupSD.cc index 5f4fe1ccd3..30385afeb2 100644 --- a/examples/advanced/lAr_calorimeter/src/FCALTestbeamSetupSD.cc +++ b/examples/advanced/lAr_calorimeter/src/FCALTestbeamSetupSD.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FCALTestbeamSetupSD.cc,v 1.11 2006/06/29 16:03:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/medical_linac/G4History.macro b/examples/advanced/medical_linac/G4History.macro index 0b2613d515..cc1e8d2b4a 100644 --- a/examples/advanced/medical_linac/G4History.macro +++ b/examples/advanced/medical_linac/G4History.macro @@ -171,7 +171,6 @@ /Jaws/Y1/DistanceFromAxis -6.6 cm /Jaws/Y2/DistanceFromAxis 6.8 cm /Jaws/update -/vis/scene/notifyHandlers scene-0 /energy 6.0 MeV /sourceType 0.127 MeV /run/beamOn 10 diff --git a/examples/advanced/medical_linac/History b/examples/advanced/medical_linac/History index 4354a86752..69fa15ef18 100644 --- a/examples/advanced/medical_linac/History +++ b/examples/advanced/medical_linac/History @@ -1,4 +1,4 @@ -$Id: History,v 1.17 2005/12/08 13:34:51 mpiergen Exp $ +$Id: History,v 1.19 2007/07/06 21:39:05 mpiergen Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,17 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +06.07.2007 Michela Piergentili, tag medical_linac-V08-03-02 + bug 880 fixed in Detector Construction + +01.07.2007 Michela Piergentili, tag medical_linac-V08-03-01 + macro updated + +01.07.2007 Michela Piergentili, tag medical_linac-V08-03-00 + removed MedLinacVisManager, set initial seed to 0 + The example compiles with CLHEP 2.0.3.1 + use of MultipleScattering instead of MultipleScattering52 + 08.12.2005 Michela Piergentili , tag medical_linac-V07-01-05 updated macro for visualization diff --git a/examples/advanced/medical_linac/MedLinac.cc b/examples/advanced/medical_linac/MedLinac.cc index bce87f1a4a..ab245b11b3 100644 --- a/examples/advanced/medical_linac/MedLinac.cc +++ b/examples/advanced/medical_linac/MedLinac.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: MedLinac.cc,v 1.11 2006/06/29 16:03:27 gunter Exp $ +// $Id: MedLinac.cc,v 1.12 2007/07/01 15:19:18 mpiergen Exp $ // // -------------------------------------------------------------- // GEANT 4 - medical_linac @@ -65,7 +65,7 @@ int main(int argc ,char ** argv) //choose the Random engine CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine); - G4int seed = time(0); + G4int seed = 0; CLHEP::HepRandom :: setTheSeed(seed); // Construct the default run manager diff --git a/examples/advanced/medical_linac/dawnvis.mac b/examples/advanced/medical_linac/dawnvis.mac index 8949e54829..212794a6b6 100644 --- a/examples/advanced/medical_linac/dawnvis.mac +++ b/examples/advanced/medical_linac/dawnvis.mac @@ -7,7 +7,6 @@ /vis/viewer/flush /vis/viewer/set/viewpointThetaPhi 90 180 deg /vis/viewer/zoom 1.4 -/tracking/storeTrajectory 1 /vis/scene/endOfEventAction accumulate /vis/viewer/update diff --git a/examples/advanced/medical_linac/macro.mac b/examples/advanced/medical_linac/macro.mac index fd6b01496a..cf55adff84 100644 --- a/examples/advanced/medical_linac/macro.mac +++ b/examples/advanced/medical_linac/macro.mac @@ -1,9 +1,9 @@ + /PhysicsList/cut 0.2 mm /control/verbose 1 /control/saveHistory /run/verbose 2 - /run/initialize /tracking/storeTrajectory 1 @@ -14,6 +14,9 @@ /PhantomSD/dimension 15. cm /PhantomSD/Nvoxels 150 +#/run/initialize +#/tracking/storeTrajectory 1 + # Multi Leaf diff --git a/examples/advanced/medical_linac/src/MedLinacDetectorConstruction.cc b/examples/advanced/medical_linac/src/MedLinacDetectorConstruction.cc index c1a259ec6a..f6d7345b5b 100644 --- a/examples/advanced/medical_linac/src/MedLinacDetectorConstruction.cc +++ b/examples/advanced/medical_linac/src/MedLinacDetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: MedLinacDetectorConstruction.cc,v 1.11 2006/06/29 16:04:19 gunter Exp $ +// $Id: MedLinacDetectorConstruction.cc,v 1.12 2007/07/06 21:39:05 mpiergen Exp $ // // Code developed by: M. Piergentili // @@ -89,10 +89,7 @@ MedLinacDetectorConstruction::MedLinacDetectorConstruction(G4String SDName) JawX1_phys(0), JawX2_phys(0), Phantom_phys(0) { - //G4double phantomDim_x = 15.*cm; - //G4double phantomDim_y = 15.*cm; - //G4double phantomDim_z = 15.*cm; - + phantomDim = 15.*cm; //PhantomDimensionX = PhantomDim_x; //PhantomDimensionY = PhantomDim_y; //PhantomDimensionZ = PhantomDim_z; @@ -152,7 +149,6 @@ G4VPhysicalVolume* MedLinacDetectorConstruction::Construct() G4VPhysicalVolume* MedLinacDetectorConstruction::ConstructGeom () { - // Cleanup old geometry G4GeometryManager::GetInstance()->OpenGeometry(); @@ -447,8 +443,9 @@ void MedLinacDetectorConstruction::PrintParameters() //G4cout <<"jaws2 x position "<< fieldX2/cm << " cm "<AddProcess(new G4MultipleScattering52, -1, 1,1); + pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); pmanager->AddProcess(loweIon, -1, 2,2); pmanager->AddProcess(loweBrem, -1,-1,3); pmanager -> AddProcess(new G4StepLimiter(), -1, -1, 3); @@ -170,7 +170,7 @@ void MedLinacPhysicsList::ConstructEM() } else if (particleName == "e+") { //positron - pmanager->AddProcess(new G4MultipleScattering52,-1, 1,1); + 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); diff --git a/examples/advanced/medical_linac/src/MedLinacVisManager.cc b/examples/advanced/medical_linac/src/MedLinacVisManager.cc deleted file mode 100644 index 6af2b3f809..0000000000 --- a/examples/advanced/medical_linac/src/MedLinacVisManager.cc +++ /dev/null @@ -1,143 +0,0 @@ -// -// ******************************************************************** -// * 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: MedLinacVisManager.cc,v 1.6 2006/06/29 16:04:55 gunter Exp $ -// -// -// Code developed by: M. Piergentili - - -#ifdef G4VIS_USE - -#include "MedLinacVisManager.hh" - -// Supported drivers... - -// Not needing external packages or libraries... -#include "G4ASCIITree.hh" -#include "G4DAWNFILE.hh" -#include "G4GAGTree.hh" -#include "G4HepRepFile.hh" -#include "G4HepRep.hh" -#include "G4RayTracer.hh" -#include "G4VRML1File.hh" -#include "G4VRML2File.hh" - -// Needing external packages or libraries... - -#ifdef G4VIS_USE_DAWN -#include "G4FukuiRenderer.hh" -#endif - -#ifdef G4VIS_USE_OPENGLX -#include "G4OpenGLImmediateX.hh" -#include "G4OpenGLStoredX.hh" -#endif - -//#ifdef G4VIS_USE_OPENGLWIN32 -//#include "G4OpenGLImmediateWin32.hh" -//#include "G4OpenGLStoredWin32.hh" -//#endif - -//#ifdef G4VIS_USE_OPENGLXM -//#include "G4OpenGLImmediateXm.hh" -//#include "G4OpenGLStoredXm.hh" -//#endif - -//#ifdef G4VIS_USE_OIX -//#include "G4OpenInventorX.hh" -//#endif - -//#ifdef G4VIS_USE_OIWIN32 -//#include "G4OpenInventorWin32.hh" -//#endif - -#ifdef G4VIS_USE_VRML -#include "G4VRML1.hh" -#include "G4VRML2.hh" -#endif - -//--------------------------------------------------------------- - -MedLinacVisManager::MedLinacVisManager () {} - -//--------------------------------------------------------------- - -void MedLinacVisManager::RegisterGraphicsSystems () { - - // Graphics Systems not needing external packages or libraries... - RegisterGraphicsSystem (new G4ASCIITree); - RegisterGraphicsSystem (new G4DAWNFILE); - RegisterGraphicsSystem (new G4GAGTree); - RegisterGraphicsSystem (new G4HepRepFile); - RegisterGraphicsSystem (new G4HepRep); - RegisterGraphicsSystem (new G4RayTracer); - RegisterGraphicsSystem (new G4VRML1File); - RegisterGraphicsSystem (new G4VRML2File); - - // Graphics systems needing external packages or libraries... - -#ifdef G4VIS_USE_DAWN - RegisterGraphicsSystem (new G4FukuiRenderer); -#endif - -#ifdef G4VIS_USE_OPENGLX - RegisterGraphicsSystem (new G4OpenGLImmediateX); - RegisterGraphicsSystem (new G4OpenGLStoredX); -#endif - - //#ifdef G4VIS_USE_OPENGLWIN32 - //RegisterGraphicsSystem (new G4OpenGLImmediateWin32); - //RegisterGraphicsSystem (new G4OpenGLStoredWin32); - //#endif - - //#ifdef G4VIS_USE_OPENGLXM - //RegisterGraphicsSystem (new G4OpenGLImmediateXm); - //RegisterGraphicsSystem (new G4OpenGLStoredXm); - //#endif - - //#ifdef G4VIS_USE_OIX - //RegisterGraphicsSystem (new G4OpenInventorX); - //#endif - - //#ifdef G4VIS_USE_OIWIN32 - //RegisterGraphicsSystem (new G4OpenInventorWin32); - //#endif - - //#ifdef G4VIS_USE_VRML - //RegisterGraphicsSystem (new G4VRML1); - //RegisterGraphicsSystem (new G4VRML2); - //#endif - - if (fVerbose > 0) { - G4cout << - "\nYou have successfully chosen to use the following graphics systems." - << G4endl; - PrintAvailableGraphicsSystems (); - } -} - -#endif - diff --git a/examples/advanced/medical_linac/vrmlvis.mac b/examples/advanced/medical_linac/vrmlvis.mac index ea29ead536..cd7c303bb1 100644 --- a/examples/advanced/medical_linac/vrmlvis.mac +++ b/examples/advanced/medical_linac/vrmlvis.mac @@ -7,7 +7,6 @@ /vis/viewer/flush /vis/viewer/set/viewpointThetaPhi 90 180 deg /vis/viewer/zoom 1.4 -/tracking/storeTrajectory 1 /vis/scene/endOfEventAction accumulate /vis/viewer/update diff --git a/examples/advanced/microbeam/History b/examples/advanced/microbeam/History index 0bd578eea7..fc7c53f088 100644 --- a/examples/advanced/microbeam/History +++ b/examples/advanced/microbeam/History @@ -1,5 +1,5 @@ ------------------------------------------------------------------- -$Id: History,v 1.10 2006/11/23 12:24:20 sincerti Exp $ +$Id: History,v 1.16 2007/08/28 09:48:40 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -9,6 +9,27 @@ $Id: History,v 1.10 2006/11/23 12:24:20 sincerti Exp $ Package History file -------------------- +28 August 2007 - tag microbeam-V09-00-03 - G. Cosmo +- Replaced M_PI constants with CLHEP::pi, and protected usage of G4UItcsh + to allow for compilation on WIN32-VC systems. + +22 August 2007 - tag microbeam-V09-00-02 - S. Incerti +- Updated dose computation to take into account volume edges in src/MicrobeamSteppingAction.cc + +21 August 2007 - tag microbeam-V09-00-01 - S. Incerti +- Changed number of incident alpha particles in microbeam.mac + +05 July 2007 - S. Incerti +- Added protection against scattering at large angles in collimators in src/MicrobeamEMField.cc +- Suppressed field manager in zero field zones in src/MicrobeamEMField.cc +- Chose kUndefined optimization in cell phantom implementation in src/MicrobeamDetectorConstruction.cc +- Updated dose computation for very low energy secondaries in src/MicrobeamSteppingAction.cc + +27 Fev 2007 - S. Incerti +- Modified dE/dX calculation in src/MicrobeamSteppingAction.cc +in order to average on Pre/Post step. +- Updated README and html files with publications. + 23 Nov 2006 - S. Incerti (microbeam-V08-01-01) - Replaced G4MultipleScattering process for alphas by G4hMultipleScattering process in src/MicrobeamPhysicsList.cc. diff --git a/examples/advanced/microbeam/Microbeam.cc b/examples/advanced/microbeam/Microbeam.cc index dbf67824e8..6ecc1c0fe7 100755 --- a/examples/advanced/microbeam/Microbeam.cc +++ b/examples/advanced/microbeam/Microbeam.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // ------------------------------------------------------------------- -// $Id: Microbeam.cc,v 1.8 2006/06/29 16:04:57 gunter Exp $ +// $Id: Microbeam.cc,v 1.9 2007/08/28 09:48:40 gcosmo Exp $ // ------------------------------------------------------------------- // GEANT4 - Microbeam example // Developed by S. Incerti et al. @@ -103,9 +103,13 @@ int main(int argc,char** argv) { if (argc==1) // define UI session for interactive mode. { - // G4UIterminal is a dumb or a TCSH terminal. - // G4UIsession * session = new G4UIterminal(); // dumb terminal (for Windows) - G4UIsession * session = new G4UIterminal(new G4UItcsh); // TCSH terminal + // G4UIterminal is a (dumb) terminal. + G4UIsession * session = 0; +#ifdef G4UI_USE_TCSH + session = new G4UIterminal(new G4UItcsh); +#else + session = new G4UIterminal(); +#endif UI->ApplyCommand("/control/execute microbeam.mac"); session->SessionStart(); delete session; diff --git a/examples/advanced/microbeam/README b/examples/advanced/microbeam/README index d31ed65150..570fce4f02 100644 --- a/examples/advanced/microbeam/README +++ b/examples/advanced/microbeam/README @@ -1,208 +1,231 @@ -------------------------------------------------------------------- -$Id: README,v 1.9 2006/11/23 12:24:20 sincerti Exp $ -------------------------------------------------------------------- - - ========================================================= - Geant4 - Microbeam example - ========================================================= - - README file - ---------------------- - - CORRESPONDING AUTHOR - -S. Incerti (a, *) et al. -a. Centre d'Etudes Nucleaires de Bordeaux-Gradignan -(CENBG), IN2P3 / CNRS / Bordeaux 1 University, 33175 Gradignan, France -* e-mail:incerti@cenbg.in2p3.fr - -Last modified by S. Incerti, 23/06/2006 - ----->0. INTRODUCTION. - -The microbeam example simulates the cellular irradiation beam line -installed on the AIFIRA electrostatic accelerator facility located at -CENBG, Bordeaux-Gradignan, France. For more information on this facility, -please visit : -http://www.cenbg.in2p3.fr/ - -An overall description of this example is also available in this directory: -to access it, simply open the microbeam.htm file with your internet browser. - ----->1. GEOMETRY SET-UP. - -The elements simulated are: - -1. A switching dipole magnet with fringing field, to deflect the 3 MeV alpha -beam generated by the electrostatic accelerator into the microbeam line, -oriented at 10 degrees from the main beam direction; - -2. A circular collimator object, defining the incident beam size at the -microbeam line entrance; - -3. A quadrupole based magnetic symmetric focusing system allowing equal -transverse demagnifications of 10. Fringe fields are calculated from Enge's -model. - -4. A dedicated cellular irradiation chamber setup; - -5. A set of horizontal and vertical electrostatic deflecting plates which can -be turned on or off to deflect the beam on target; - -6. A realistic human keratinocyte voxellized cell observed from confocal -microscopy and taking into account realistic nucleus and cytoplasm chemical -compositions - - ----->2. EXPERIMENTAL SET-UP. - -The beam is defined at the microbeam line entrance through a collimator -5 micrometer in diameter. The beam is then focused onto target using a -quadruplet of quadrupoles in the so-called Dymnikov magnetic configuration. -The beam is sent to the irradiation chamber where it travels through a -isobutane gas detector for counting purpose before reaching the polypropylene -culture foil of the target cell which is immersed in the growing medium and -enclosed within a dish. - -A cell is placed on the polypropylene foil and is irradiated using the -microbeam. The cell is represented through a 3D phantom (G4PVParameterization) -obtained from confocal microscopy. In the provided example, the voxels sizes -are : 359 nm (X) x 359 nm (Y) x 163 nm (Z) - -The primary particle beam parameters are generated from experimental -measurements performed on the AIFIRA facility. Incident particle used for -cellular irradiation are 3 MeV alpha particles. - -More details on the experimental setup and its simulation with Geant4 can -be found in the following papers : - -- GEANT4 SIMULATION OF THE NEW CENBG MICRO AND NANOPROBES FACILITY -By S. Incerti, C. Habchi, Ph. Moretto, J. Olivier and H. Seznec -(CENBG, Gradignan),. May 2006. 5pp. -Published in Nucl.Instrum.Meth.B249:738-742, 2006 - -- DEVELOPMENT OF A FOCUSED CHARGED PARTICLE MICROBEAM FOR THE IRRADIATION OF -INDIVIDUAL CELLS. -By Ph. Barberet, A. Balana, S. Incerti, C. Michelet-Habchi, Ph. Moretto, -Th. Pouthier (CENBG, Gradignan),. Dec 2004. 6pp. -Published in Rev.Sci.Instrum.76:015101, 2005 - -- SIMULATION OF CELLULAR IRRADIATION WITH THE CENBG MICROBEAM LINE USING -GEANT4. -By S. Incerti, Ph. Barberet, R. Villeneuve, P. Aguer, E. Gontier, -C. Michelet-Habchi, Ph. Moretto, D.T. Nguyen, T. Pouthier, R.W. Smith -(CENBG, Gradignan),. Oct 2003. 6pp. -Published in IEEE Trans.Nucl.Sci.51:1395-1401, 2004 - -- SIMULATION OF ION PROPAGATION IN THE MICROBEAM LINE OF CENBG USING GEANT4. -S. Incerti, Ph. Barberet, B. Courtois, C. Michelet-Habchi, Ph. Moretto -(CENBG, Gradignan). Sep 2003. -Published in Nucl.Instrum.Meth.B210:92-97, 2003 - - ----->3. SET-UP - -- a standard Geant4 example GNUmakefile is provided - -setup with: -compiler = gcc-3.2.3 -G4SYSTEM = linux-g++ - -The following section gives the necessary environment variables. - -------->>3.1 ENVIRONMENT VARIABLES - -All variables are defined with their default value. - - - G4SYSTEM = Linux-g++ - - - G4INSTALL points to the installation directory of GEANT4; - - - G4LIB point to the compiled libraries of GEANT4; - - - G4WORKDIR points to the work directory; - - - CLHEP_BASE_DIR points to the installation directory of CHLEP; - - - G4LEDATA points to the low energy electromagnetic libraries; - - - LD_LIBRARY_PATH = $CLHEP_BASE_DIR/lib - - - G4LEVELGAMMADATA points to the photoevaporation library; - - - NeutronHPCrossSections points to the neutron data files; - - - G4RADIOACTIVEDATA points to the libraries for radio-active decay - hadronic processes; - -However, the $G4LEVELGAMMADATA, $NeutronHPCrossSections and $G4RADIOACTIVEDATA -variables do not need to be defined for this example. - -Once these variables have been set, simply type gmake to compile the Microbeam -example. - -------->>3.2 VISUALIZATION - -The user can visualize the targeted cell with OpenGL, DAWN and vrml, -as chosen in the microbeam.mac file. OpenGL is the default viewer. The -cytoplasm in shown in red and the nucleus in green. - - ----->4. HOW TO RUN THE EXAMPLE - -In interactive mode, run: - -> $G4WORDIR/bin/Linux-g++/Microbeam - -The macro microbeam.mac is executed by default. To get vizualisation, make -sure to uncomment the /vis/... lines in the microbeam.mac macro. -The Microbeam code reads the phantom.dat file containing all the necessary -information describing the cell phantom. 10 alphas particles are generated. - - ----->5. PHYSICS - -Low energy electromagnetic processes (for alphas, electrons, photons) and -hadronic elastic and inelastic scattering for alphas are activated by default. -Low energy electromagnetic electronic and nuclear stopping power are computed -from ICRU tables. - - ----->6. SIMULATION OUTPUT AND RESULT ANALYZIS - -This example does not need any external analysis package. -The output results consists in several .txt files: - -* dose.txt : gives the total deposited dose in the cell nucleus and in the cell -cytoplasm by each incident alpha particle; - -* 3DDose.txt : gives the average on the whole run of the dose deposited per -Voxel per incident alpha particle; - -* range.txt : indicates the final stopping (x,y,z) position of the incident -alpha particle within the irradiated medium (cell or culture medium) - -* stoppingPower.txt : gives the actual stopping power dE/dx of the incident -alpha particle just before penetrating into the targeted cell; - -* beamPosition.txt : gives the beam transverse position distribution(X and Y) -just before penetrating into the targeted cell; - -These files can be easily analyzed using for example the provided ROOT macro -file plot.C; to do so : -* be sure to have ROOT installed on your machine -* be sure to be in the microbeam directory -* launch ROOT by typing root -* under your ROOT session, type in : .X plot.C to execute the macro file - -A graphical output obtained with this macro for 40000 incident alpha particles -is shown in the file microbeam.gif - -The simulation predicts that 95% of the incident alpha particles detected by the -gas detector are located within a circle of 10 um in diameter on the target, in -nice agreement with experimental measurements performed on the CENBG setup. - ---------------------------------------------------------------------------- - -Should you have any enquiry, please do not hesitate to contact: -incerti@cenbg.in2p3.fr +------------------------------------------------------------------- +$Id: README,v 1.10 2007/02/27 12:02:09 sincerti Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - Microbeam example + ========================================================= + + README file + ---------------------- + + CORRESPONDING AUTHOR + +S. Incerti (a, *) et al. +a. Centre d'Etudes Nucleaires de Bordeaux-Gradignan +(CENBG), IN2P3 / CNRS / Bordeaux 1 University, 33175 Gradignan, France +* e-mail:incerti@cenbg.in2p3.fr + +Last modified by S. Incerti, 27/02/2007 + +---->0. INTRODUCTION. + +The microbeam example simulates the cellular irradiation beam line +installed on the AIFIRA electrostatic accelerator facility located at +CENBG, Bordeaux-Gradignan, France. For more information on this facility, +please visit : +http://www.cenbg.in2p3.fr/ + +An overall description of this example is also available in this directory: +to access it, simply open the microbeam.htm file with your internet browser. + +---->1. GEOMETRY SET-UP. + +The elements simulated are: + +1. A switching dipole magnet with fringing field, to deflect the 3 MeV alpha +beam generated by the electrostatic accelerator into the microbeam line, +oriented at 10 degrees from the main beam direction; + +2. A circular collimator object, defining the incident beam size at the +microbeam line entrance; + +3. A quadrupole based magnetic symmetric focusing system allowing equal +transverse demagnifications of 10. Fringe fields are calculated from Enge's +model. + +4. A dedicated cellular irradiation chamber setup; + +5. A set of horizontal and vertical electrostatic deflecting plates which can +be turned on or off to deflect the beam on target; + +6. A realistic human keratinocyte voxellized cell observed from confocal +microscopy and taking into account realistic nucleus and cytoplasm chemical +compositions + + +---->2. EXPERIMENTAL SET-UP. + +The beam is defined at the microbeam line entrance through a collimator +5 micrometer in diameter. The beam is then focused onto target using a +quadruplet of quadrupoles in the so-called Dymnikov magnetic configuration. +The beam is sent to the irradiation chamber where it travels through a +isobutane gas detector for counting purpose before reaching the polypropylene +culture foil of the target cell which is immersed in the growing medium and +enclosed within a dish. + +A cell is placed on the polypropylene foil and is irradiated using the +microbeam. The cell is represented through a 3D phantom (G4PVParameterization) +obtained from confocal microscopy. In the provided example, the voxels sizes +are : 359 nm (X) x 359 nm (Y) x 163 nm (Z) + +The primary particle beam parameters are generated from experimental +measurements performed on the AIFIRA facility. Incident particle used for +cellular irradiation are 3 MeV alpha particles. + +More details on the experimental setup and its simulation with Geant4 can +be found in the following papers, which may be found on the SLAC-SPIRES +online database (http://www.slac.stanford.edu/spires/) : + +- MONTE CARLO MICRODOSIMETRY FOR TARGETED IRRADIATION OF INDIVIDUAL CELLS USING +A MICROBEAM FACILITY +By S. Incerti, T. Pouthier, H. Seznec, Ph. Moretto, O. Boissonnade, +T. M. H. Ha, F. Andersson, Ph. Barberet, C. Habchi and D. T. Nguyen +In preparation (2007) + +- MONTE CARLO SIMULATION OF THE CENBG MICROBEAM AND NANOBEAM LINES WITH THE +GEANT4 TOOLKIT +By S. Incerti, Q. Zhang, F. Andersson, Ph. Moretto, G.W. Grime, +M.J. Merchant, D.T. Nguyen, C. Habchi, T. Pouthier and H. Seznec +In press in Nucl.Instrum.Meth.B, 2007 + +- A COMPARISON OF CELLULAR IRRADIATION TECHNIQUES WITH ALPHA PARTICLES USING +THE GEANT4 MONTE CARLO SIMULATION TOOLKIT +By S. Incerti, N. Gault, C. Habchi, J.L.. Lefaix, Ph. Moretto, J.L.. Poncy, +T. Pouthier, H. Seznec. Dec 2006. 3pp. +Published in Rad.Prot.Dos.,1-3,2006 (Micros 2005 special issue). + +- GEANT4 SIMULATION OF THE NEW CENBG MICRO AND NANO PROBES FACILITY +By S. Incerti, C. Habchi, Ph. Moretto, J. Olivier and H. Seznec. May 2006. 5pp. +Published in Nucl.Instrum.Meth.B249:738-742, 2006 + +- A COMPARISON OF RAY-TRACING SOFTWARE FOR THE DESIGN OF QUADRUPOLE MICROBEAM +SYSTEMS +By S. Incerti et al., +Published in Nucl.Instrum.Meth.B231:76-85, 2005 + +- DEVELOPMENT OF A FOCUSED CHARGED PARTICLE MICROBEAM FOR THE IRRADIATION OF +INDIVIDUAL CELLS. +By Ph. Barberet, A. Balana, S. Incerti, C. Michelet-Habchi, Ph. Moretto, +Th. Pouthier. Dec 2004. 6pp. +Published in Rev.Sci.Instrum.76:015101, 2005 + +- SIMULATION OF CELLULAR IRRADIATION WITH THE CENBG MICROBEAM LINE USING +GEANT4. +By S. Incerti, Ph. Barberet, R. Villeneuve, P. Aguer, E. Gontier, +C. Michelet-Habchi, Ph. Moretto, D.T. Nguyen, T. Pouthier, R.W. Smith. Oct 2003. 6pp. +Published in IEEE Trans.Nucl.Sci.51:1395-1401, 2004 + +- SIMULATION OF ION PROPAGATION IN THE MICROBEAM LINE OF CENBG USING +GEANT4. +By S. Incerti, Ph. Barberet, B. Courtois, C. Michelet-Habchi, +Ph. Moretto. Sep 2003. +Published in Nucl.Instrum.Meth.B210:92-97, 2003 + + +---->3. SET-UP + +- a standard Geant4 example GNUmakefile is provided + +setup with: +compiler = gcc-3.2.3 +G4SYSTEM = linux-g++ + +The following section gives the necessary environment variables. + +------->>3.1 ENVIRONMENT VARIABLES + +All variables are defined with their default value. + + - G4SYSTEM = Linux-g++ + + - G4INSTALL points to the installation directory of GEANT4; + + - G4LIB point to the compiled libraries of GEANT4; + + - G4WORKDIR points to the work directory; + + - CLHEP_BASE_DIR points to the installation directory of CHLEP; + + - G4LEDATA points to the low energy electromagnetic libraries; + + - LD_LIBRARY_PATH = $CLHEP_BASE_DIR/lib + + - G4LEVELGAMMADATA points to the photoevaporation library; + + - NeutronHPCrossSections points to the neutron data files; + + - G4RADIOACTIVEDATA points to the libraries for radio-active decay + hadronic processes; + +However, the $G4LEVELGAMMADATA, $NeutronHPCrossSections and $G4RADIOACTIVEDATA +variables do not need to be defined for this example. + +Once these variables have been set, simply type gmake to compile the Microbeam +example. + +------->>3.2 VISUALIZATION + +The user can visualize the targeted cell with OpenGL, DAWN and vrml, +as chosen in the microbeam.mac file. OpenGL is the default viewer. The +cytoplasm in shown in red and the nucleus in green. + + +---->4. HOW TO RUN THE EXAMPLE + +In interactive mode, run: + +> $G4WORDIR/bin/Linux-g++/Microbeam + +The macro microbeam.mac is executed by default. To get vizualisation, make +sure to uncomment the /vis/... lines in the microbeam.mac macro. +The Microbeam code reads the phantom.dat file containing all the necessary +information describing the cell phantom. 10 alphas particles are generated. + + +---->5. PHYSICS + +Low energy electromagnetic processes (for alphas, electrons, photons) and +hadronic elastic and inelastic scattering for alphas are activated by default. +Low energy electromagnetic electronic and nuclear stopping power are computed +from ICRU tables. + + +---->6. SIMULATION OUTPUT AND RESULT ANALYZIS + +This example does not need any external analysis package. +The output results consists in several .txt files: + +* dose.txt : gives the total deposited dose in the cell nucleus and in the cell +cytoplasm by each incident alpha particle; + +* 3DDose.txt : gives the average on the whole run of the dose deposited per +Voxel per incident alpha particle; + +* range.txt : indicates the final stopping (x,y,z) position of the incident +alpha particle within the irradiated medium (cell or culture medium) + +* stoppingPower.txt : gives the actual stopping power dE/dx of the incident +alpha particle just before penetrating into the targeted cell; + +* beamPosition.txt : gives the beam transverse position distribution(X and Y) +just before penetrating into the targeted cell; + +These files can be easily analyzed using for example the provided ROOT macro +file plot.C; to do so : +* be sure to have ROOT installed on your machine +* be sure to be in the microbeam directory +* launch ROOT by typing root +* under your ROOT session, type in : .X plot.C to execute the macro file + +A graphical output obtained with this macro for 40000 incident alpha particles +is shown in the file microbeam.gif + +The simulation predicts that 95% of the incident alpha particles detected by the +gas detector are located within a circle of 10 um in diameter on the target, in +nice agreement with experimental measurements performed on the CENBG setup. + +--------------------------------------------------------------------------- + +Should you have any enquiry, please do not hesitate to contact: +incerti@cenbg.in2p3.fr diff --git a/examples/advanced/microbeam/include/MicrobeamEMField.hh b/examples/advanced/microbeam/include/MicrobeamEMField.hh index 857e1639d7..3ea1adeaa4 100755 --- a/examples/advanced/microbeam/include/MicrobeamEMField.hh +++ b/examples/advanced/microbeam/include/MicrobeamEMField.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // ------------------------------------------------------------------- -// $Id: MicrobeamEMField.hh,v 1.5 2006/06/29 16:05:03 gunter Exp $ +// $Id: MicrobeamEMField.hh,v 1.6 2007/07/06 06:52:54 sincerti Exp $ // ------------------------------------------------------------------- #ifndef MicrobeamEMField_h @@ -32,6 +32,8 @@ #include "globals.hh" #include "G4ElectroMagneticField.hh" +#include "G4FieldManager.hh" +#include "G4TransportationManager.hh" class MicrobeamEMField #ifndef STANDALONE diff --git a/examples/advanced/microbeam/microbeam.htm b/examples/advanced/microbeam/microbeam.htm index 21270e18e6..5705e6021b 100755 --- a/examples/advanced/microbeam/microbeam.htm +++ b/examples/advanced/microbeam/microbeam.htm @@ -1,1148 +1,1322 @@ - - - - - - - - - - - -Geant4 Microbeam Advanced Example - - - - - - - - - -
- -

Geant4 -Microbeam Advanced Example

- -

 

- -

 

- -

Interface -Physics Biology group

- -

( S. Incerti*, -O. Boissonnade, C. Habchi, Ph. Moretto, D. T. Nguyen, T. Pouthier, H. Seznec, -Q. Zhang )

- -

 

- -

Centre -d’Etudes Nucléaires de Bordeaux-Gradignan (CENBG)

- -

IN2P3 -/ CNRS / Bordeaux 1 University

- -

33175 -Gradignan

- -

France

- -

 

- -

* corresponding author e-mail : incerti@cenbg.in2p3.fr

- -

 

- -

                                                                      -

- -

INTRODUCTION

- -

 

- -

The microbeam example -simulates the microbeam cellular irradiation beam -line installed on the -AIFIRA electrostatic accelerator -facility located at CENBG, Bordeaux-Gradignan, -France. This setup is mainly used to investigate the effects -of low dose irradiation on living cells. The microbeam -line allows irradiation of individual -biological living cells in culture medium in single ion mode, -with an exact control of the delivered dose to a particular -cell among the cell population. This Geant4 example -simulates the microbeam line in a configuration of -irradiation with 3 MeV incident alpha particles and allows the calculation of -the dose deposited by the incident particles in the cell cytoplasm and in the -cell nucleus, which are inaccessible by experimental measurements. For the -first time in Monte Carlo microdosimetry, the simulation includes a realistic cell -phantom obtained from confocal microscopy.

- -

 

- -

For more -information on this irradiation facility, please visit :

- -

 

- -

http://www.cenbg.in2p3.fr

- -

 

- -

 

- -

- -

 

- -

Schematic view -of the CENBG five AIFIRA beam lines :
-the microbeam line is located at 10° from the main -exit of the switching magnet (© CENBG)

- -

 

- -

 

- -

- -

 

- -

View of the -CENBG microbeam line (© CENBG)

- -

 

- -

 

- -

SIMULATED SETUP

- -

 

- -

The beam -is emitted just before the 10° switching magnet taking into account -experimental beam parameters measurements ; the main -elements simulated are :

- -

 

- -

1. A switching -dipole magnet with fringing field, to deflect by 10° the 3 MeV -alpha beam generated by the electrostatic accelerator into the microbeam line, oriented at 10 degrees from the main beam -direction;

- -

 

- -

2. A circular -object collimator, defining the incident beam size at the microbeam line entrance; the collimator has been simulated -from realistic electron microscopy images;

- -

 

- -

- -

 

- -

Collimator geometry implemented in Geant4 as embedded -cones

- -

 

- -

 

- -

3. A quadrupole -based magnetic symmetric focusing system allowing equal -transverse demagnifications of 10. Fringe fields are calculated from Enge’s -model.

- -

 

- -

- -

 

- -

Geant4 fine -ray-tracing of beam profile inside the focusing quadruplet in both horizontal -and transverse planes, showing the beam focus point.

- -

 

- -

 

- -

4. A dedicated cellular -irradiation chamber setup, taking into account all the elements -encountered by the incident beam (diaphragm, gas detector, isobutane, -beam extraction window, air, culture foil, culture medium, cell dish…) ;

- -

 

- -

5. A set of -horizontal and vertical electrostatic deflecting plates which -can be turned on or off to deflect the beam on target;

- -

 

- -

6. A realistic -human keratinocyte voxellized -cell observed from confocal microscopy and taking into -account realistic nucleus and cytoplasm chemical compositions. The phantom uses -the G4PVParameterised class.

- -

 

- -

 

- -

- -

 

- -

Confocal -microscopy image of a HaCat cell showing the cytoplasm (red) and the nucleus -(purple)
-© CENBG

- -

 

- -

                       

- -

 

- -

Corresponding -Geant4 phantom showing four incident alpha particles penetrating the cell.
-The phantom is made of voxels with a size of 489 nm (X) x 489 nm (Y) x 163 nm -(Z).
-Approximately 4x104 voxels are shown.

- -

 

- -

 

- -

 

- -

 

- -

PHYSICS

- -

 

- -

Low energy -electromagnetic processes (for alphas, electrons, photons) and hadronic elastic and -inelastic scattering for alphas are activated by default. Low -energy electromagnetic electronic and nuclear stopping power -are computed from ICRU tables.

- -

           

- -

 

- -

CODE DESIGN

- -

 

- -

The Microbeam code design obtained from the Rational Rose -software is shown below.

- -

 

- -

- -

 

- -

Rational Rose class diagram of the -Microbeam example.

- -

Manager classes are filled with red and Microbeam classes are filled with sky blue.

- -

 

- -

 

- -

SUGGESTED -PAPERS ABOUT THIS SIMULATION AND ITS VALIDATION

- -

 

- -

GEANT4 -SIMULATION OF THE NEW CENBG MICRO AND NANO PROBES FACILITY

- -

By S. - Incerti, C. Habchi, Ph. Moretto, J. Olivier and -H. Seznec

- -

To be -published in NIMB, 2006

- -

 

- -

DEVELOPMENT OF A FOCUSED CHARGED PARTICLE -MICROBEAM FOR THE IRRADIATION OF INDIVIDUAL CELLS.

- -

By Ph. -Barberet, A. Balana, S. -Incerti, C. Michelet-Habchi, Ph. Moretto, Th. Pouthier (CENBG, Gradignan),. Dec -2004. 6pp.

- -

Published -in Rev.Sci.Instrum.76:015101, 2005

- -

 

- -

SIMULATION OF CELLULAR IRRADIATION WITH THE CENBG -MICROBEAM LINE USING GEANT4.

- -

By S. -Incerti, Ph. Barberet, R. Villeneuve, -P. Aguer, E. Gontier, C. Michelet-Habchi, Ph. Moretto, D.T. Nguyen, T. Pouthier, R.W. Smith (CENBG, Gradignan),. -Oct 2003. 6pp.

- -

Published -in IEEE Trans.Nucl.Sci.51:1395-1401, 2004

- -

 

- -

SIMULATION -OF ION PROPAGATION IN THE MICROBEAM LINE OF CENBG USING GEANT4.
-By
S. Incerti, Ph. Barberet, B. Courtois, C. Michelet-Habchi, Ph. Moretto (CENBG, Gradignan),. -Sep 2003.
-Published in
Nucl.Instrum.Meth.B210:92-97,2003

- -

 

- -

 

- -

HOW TO INSTALL -AND RUN THE EXAMPLE

- -

 

- -

Please, look at -the README file provided with -the example.

- -

 

- -

 

- -

SIMULATION -RESULTS

- -

 

- -

This example does -not need any external analysis tool. The output consists in several text -(*.txt) files which are created directly in the microbeam -directory :

- -

 

- -

► -dose.txt : gives -the total deposited dose in the cell nucleus and in the cell cytoplasm for each -incident alpha particle;

- -

 

- -

► -3DDose.txt : gives -the average dose deposited per voxel per incident -alpha particle;

- -

 

- -

► -range.txt : -indicates the final stopping (x,y,z) position of the -incident alpha particle within the irradiated medium (cell or culture medium)

- -

 

- -

► -stoppingPower.txt : gives -the actual stopping power dE/dx of the incident alpha -particle just before penetrating into the targeted cell;

- -

 

- -

► -beamPosition.txt : gives -the beam transverse position distribution (X and Y) just before penetrating -into the targeted cell;

- -

 

- -

 

- -

These files can -be easily analyzed using the provided ROOT macro file plot.C. Fore more -details, please refer to the README file. The -ROOT website is available at : http://root.cern.ch. The macro gives -the following graphical output :

- -

 

- -

 

- -

- -

 

- -

Typical -graphical output from the plot.C macro file -obtained for 2x104 incident alpha particles :

- -

 

- -

TOP row

- -

left -plot : nucleus voxel intensity -(0-255) distribution, two density zones have been isolated in the simulation

- -

middle -left plot : alpha dose deposit in nucleus

- -

middle -right plot : nucleus voxel intensity -projected on cell transverse section

- -

right -plot : beam transverse (X) position distribution on target. -The sigma of the Gaussian fit is compatible with the measured experimental -value.

- -

 

- -

MIDDLE row

- -

left -plot : cytoplasm voxel -intensity (0-255) distribution, two density zones have been isolated (one for -pure cytoplasm in red, the other for nucleoli in yellow)

- -

middle -left plot : alpha dose deposit in cytoplasm

- -

middle -right plot : cytoplasm voxel -intensity projected on cell transverse section

- -

right -plot : beam transverse (Y) position distribution on target. -The sigma of the Gaussian fit is compatible with the measured experimental -value.

- -

 

- -

BOTTOM row

- -

left -plot : beam stopping power dE/dx -distribution at cell entrance

- -

middle -left plot : 3D distribution of alpha particle range in cell or -medium

- -

middle -right plot : projected mean energy deposit per voxel (transverse, z axis is in eV)

- -

right -plot : projected mean energy deposit per voxel -(longitudinal, z axis is in eV).

- -

 

- -

 

- -

The -simulation predicts that 95% of the incident alpha particles detected by the -gas detector are located within a circle of 10 µm in diameter on the target, in -nice agreement with experimental measurements performed on the CENBG setup.

- -

 

- -

 

- -

FUTURE

- -

 

- -

Running this -example requires a large amount of memory and CPU time. Decrease of memory use and -acceleration of navigation could be investigated using nested parameterization. -Microdosimetry with other geometries like tissues will be investigated.

- -

 

- -

 

- -

CONTACT

- -

 

- -

Should you have -any enquiry, please do not hesitate to contact the corresponding author : incerti@cenbg.in2p3.fr -

- -

 

- -

Last modified by S. Incerti, 10/04/2006

- -
- - - - + + + + + + + + + + + +Geant4 Microbeam Advanced Example + + + + + + + + + + +
+ +

Geant4 +Microbeam Advanced Example

+ +

 

+ +

 

+ +

Interface +Physics Biology group

+ +

( S. Incerti*, O. Boissonnade, +C. Habchi, Ph. Moretto, D. T. Nguyen, T. Pouthier, H. Seznec, Q. Zhang )

+ +

 

+ +

Centre +d’Etudes Nucléaires de Bordeaux-Gradignan (CENBG)

+ +

IN2P3 / CNRS / Bordeaux 1 +University

+ +

33175 Gradignan

+ +

France

+ +

 

+ +

* corresponding author e-mail +: incerti@cenbg.in2p3.fr

+ +

 

+ +

                                                                      +

+ +

INTRODUCTION

+ +

 

+ +

The microbeam example simulates the microbeam +cellular irradiation beam line installed on the AIFIRA electrostatic +accelerator facility located at CENBG, Bordeaux-Gradignan, France. This +setup is mainly used to investigate the effects of low dose irradiation on +living cells. The microbeam line allows irradiation +of individual biological living cells in +culture medium in single ion mode, with an exact control of +the delivered dose to a particular cell among the cell +population. This Geant4 example simulates the microbeam +line in a configuration of irradiation with 3 MeV incident alpha particles and +allows the calculation of the dose deposited by the incident particles in the +cell cytoplasm and in the cell nucleus, which are inaccessible by experimental +measurements. For the first time in Monte Carlo microdosimetry, the simulation includes a realistic cell +phantom obtained from confocal microscopy.

+ +

 

+ +

For more +information on this irradiation facility, please visit :

+ +

 

+ +

http://www.cenbg.in2p3.fr

+ +

 

+ +

 

+ +

+ +

 

+ +

Schematic view +of the CENBG five AIFIRA beam lines :
+the microbeam line is located at 10° from the main +exit of the switching magnet (© CENBG)

+ +

 

+ +

 

+ +

+ +

 

+ +

View of the +CENBG microbeam line (© CENBG)

+ +

 

+ +

 

+ +

SIMULATED SETUP

+ +

 

+ +

The beam +is emitted just before the 10° switching magnet taking into account +experimental beam parameters measurements ; the main +elements simulated are :

+ +

 

+ +

1. A switching +dipole magnet with fringing field, to deflect by 10° the 3 MeV +alpha beam generated by the electrostatic accelerator into the microbeam line, oriented at 10 degrees from the main beam +direction;

+ +

 

+ +

2. A circular +object collimator, defining the incident beam size at the microbeam line entrance; the collimator has been simulated +from realistic electron microscopy images;

+ +

 

+ +

+ +

 

+ +

Collimator geometry implemented in Geant4 as embedded +cones

+ +

 

+ +

 

+ +

3. A quadrupole +based magnetic symmetric focusing system allowing equal +transverse demagnifications of 10. Fringe fields are calculated from Enge’s +model.

+ +

 

+ +

+ +

 

+ +

Geant4 fine +ray-tracing of beam profile inside the focusing quadruplet in both horizontal +and transverse planes, showing the beam focus point.

+ +

 

+ +

 

+ +

4. A dedicated cellular +irradiation chamber setup, taking into account all the elements +encountered by the incident beam (diaphragm, gas detector, isobutane, +beam extraction window, air, culture foil, culture medium, cell dish…) ;

+ +

 

+ +

5. A set of +horizontal and vertical electrostatic deflecting plates which +can be turned on or off to deflect the beam on target;

+ +

 

+ +

6. A realistic +human keratinocyte voxellized +cell observed from confocal microscopy and taking into +account realistic nucleus and cytoplasm chemical compositions. The phantom uses +the G4PVParameterised class.

+ +

 

+ +

 

+ +

+ +

 

+ +

Confocal +microscopy image of a HaCat cell showing the cytoplasm (red) and the nucleus +(purple)
+© CENBG

+ +

 

+ +

                       

+ +

 

+ +

Corresponding +Geant4 phantom showing four incident alpha particles penetrating the cell.
+The phantom is made of voxels with a size of 489 nm (X) x 489 nm (Y) x 163 nm +(Z).
+Approximately 4x104 voxels are shown.

+ +

 

+ +

 

+ +

 

+ +

 

+ +

PHYSICS

+ +

 

+ +

Low energy +electromagnetic processes (for alphas, electrons, photons) and hadronic elastic and +inelastic scattering for alphas are activated by default. Low +energy electromagnetic electronic and nuclear stopping power +are computed from ICRU tables.

+ +

           

+ +

 

+ +

CODE DESIGN

+ +

 

+ +

The Microbeam code design obtained from the Rational Rose +software is shown below.

+ +

 

+ +

+ +

 

+ +

Rational Rose class diagram of the +Microbeam example.

+ +

Manager classes are filled with red and Microbeam classes are filled with sky blue.

+ +

 

+ +

 

+ +

SUGGESTED +PAPERS ABOUT THIS SIMULATION AND ITS VALIDATION

+ +

 

+ +

            These papers can be accessed online +at the SLAC-SPIRES online database by clicking here

+ +

 

+ +

Monte +Carlo microdosimetry for targeted irradiation of individual cells using a +microbeam facility

+ +

By S. + Incerti, T. Pouthier, +H. Seznec, Ph. Moretto, O. Boissonnade, T. M. H. +Ha, F. Andersson, Ph. Barberet, C. Habchi and D. T. Nguyen

+ +

In preparation +(2007)

+ +

 

+ +

Monte Carlo simulation of the CENBG microbeam +and nanobeam lines with the Geant4 toolkit 
+By S. Incerti, Q. Zhang, F. Andersson, Ph. Moretto, G.W. Grime, M.J. Merchant, D.T. Nguyen, C. Habchi, T. Pouthier and H. Seznec

+ +

In +press in Nucl.Instrum.Meth.B, +2007

+ +

 

+ +

A Comparison of cellular irradiation techniques with alpha particles +using the Geant4 Monte Carlo simulation toolkit
+By
S. Incerti, N. Gault, C. Habchi, J.L.. Lefaix, Ph. Moretto, J.L.. Poncy, T. Pouthier, H. Seznec. Dec +2006. 3pp.
+Published in
Rad.Prot.Dos.,1-3,2006 +(Micros 2005 special issue).

+ +

 

+ +

GEANT4 +SIMULATION OF THE NEW CENBG MICRO AND NANO PROBES FACILITY

+ +

By S. Incerti, C. Habchi, Ph. Moretto, J. Olivier and H. Seznec. May +2006. 5pp.

+ +

Published +in Nucl.Instrum.Meth.B249:738-742, 2006

+ +

 

+ +

A Comparison of ray-tracing software for the design of quadrupole +microbeam systems
+
By S. Incerti et al.,
+Published
in Nucl.Instrum.Meth.B231:76-85, 2005

+ +

 

+ +

DEVELOPMENT OF A FOCUSED CHARGED PARTICLE +MICROBEAM FOR THE IRRADIATION OF INDIVIDUAL CELLS.

+ +

By Ph. +Barberet, A. Balana, S. +Incerti, C. Michelet-Habchi, Ph. Moretto, Th. Pouthier. Dec 2004. 6pp.

+ +

Published +in Rev.Sci.Instrum.76:015101, 2005

+ +

 

+ +

SIMULATION OF CELLULAR IRRADIATION WITH THE CENBG +MICROBEAM LINE USING GEANT4.

+ +

By S. +Incerti, Ph. Barberet, R. Villeneuve, +P. Aguer, E. Gontier, C. Michelet-Habchi, Ph. Moretto, D.T. Nguyen, T. Pouthier, R.W. Smith. Oct 2003. 6pp.

+ +

Published +in IEEE Trans.Nucl.Sci.51:1395-1401, 2004

+ +

 

+ +

SIMULATION +OF ION PROPAGATION IN THE MICROBEAM LINE OF CENBG USING GEANT4.
+By
S. Incerti, Ph. Barberet, B. Courtois, C. Michelet-Habchi, Ph. Moretto. Sep +2003.
+Published in
Nucl.Instrum.Meth.B210:92-97, 2003

+ +

 

+ +

 

+ +

HOW TO INSTALL +AND RUN THE EXAMPLE

+ +

 

+ +

Please, look at +the README file provided with +the example.

+ +

 

+ +

 

+ +

SIMULATION +RESULTS

+ +

 

+ +

This example does +not need any external analysis tool. The output consists in several text +(*.txt) files which are created directly in the microbeam +directory :

+ +

 

+ +

► +dose.txt : gives +the total deposited dose in the cell nucleus and in the cell cytoplasm for each +incident alpha particle;

+ +

 

+ +

► +3DDose.txt : gives +the average dose deposited per voxel per incident +alpha particle;

+ +

 

+ +

► +range.txt : +indicates the final stopping (x,y,z) position of the +incident alpha particle within the irradiated medium (cell or culture medium)

+ +

 

+ +

► +stoppingPower.txt : gives +the actual stopping power dE/dx of the incident alpha +particle just before penetrating into the targeted cell;

+ +

 

+ +

► +beamPosition.txt : gives +the beam transverse position distribution (X and Y) just before penetrating +into the targeted cell;

+ +

 

+ +

 

+ +

These files can +be easily analyzed using the provided ROOT macro file plot.C. Fore more +details, please refer to the README file. The +ROOT website is available at : http://root.cern.ch. The macro gives +the following graphical output :

+ +

 

+ +

 

+ +

+ +

 

+ +

Typical +graphical output from the plot.C macro file +obtained for 2x104 incident alpha particles :

+ +

 

+ +

TOP row

+ +

left +plot : nucleus voxel intensity +(0-255) distribution, two density zones have been isolated in the simulation

+ +

middle +left plot : alpha dose deposit in nucleus

+ +

middle +right plot : nucleus voxel intensity +projected on cell transverse section

+ +

right +plot : beam transverse (X) position distribution on target. +The sigma of the Gaussian fit is compatible with the measured experimental +value.

+ +

 

+ +

MIDDLE row

+ +

left +plot : cytoplasm voxel +intensity (0-255) distribution, two density zones have been isolated (one for pure +cytoplasm in red, the other for nucleoli in yellow)

+ +

middle +left plot : alpha dose deposit in cytoplasm

+ +

middle +right plot : cytoplasm voxel +intensity projected on cell transverse section

+ +

right +plot : beam transverse (Y) position distribution on target. +The sigma of the Gaussian fit is compatible with the measured experimental +value.

+ +

 

+ +

BOTTOM row

+ +

left +plot : beam stopping power dE/dx +distribution at cell entrance

+ +

middle +left plot : 3D distribution of alpha particle range in cell or +medium

+ +

middle +right plot : projected mean energy deposit per voxel (transverse, z axis is in eV)

+ +

right +plot : projected mean energy deposit per voxel +(longitudinal, z axis is in eV).

+ +

 

+ +

 

+ +

The +simulation predicts that 95% of the incident alpha particles detected by the +gas detector are located within a circle of 10 µm in diameter on the target, in +nice agreement with experimental measurements performed on the CENBG setup.

+ +

 

+ +

 

+ +

FUTURE

+ +

 

+ +

Running this +example requires a large amount of memory and CPU time. Decrease of memory use +and acceleration of navigation could be investigated using nested +parameterization. Microdosimetry with other geometries like 3D tissues will be +investigated.

+ +

 

+ +

 

+ +

CONTACT

+ +

 

+ +

Should you have +any enquiry, please do not hesitate to contact the corresponding author : incerti@cenbg.in2p3.fr +

+ +

 

+ +

Last modified by S. Incerti, 27/02/2007

+ +
+ + + + diff --git a/examples/advanced/microbeam/microbeam.mac b/examples/advanced/microbeam/microbeam.mac index 18fa17e737..fde1967895 100755 --- a/examples/advanced/microbeam/microbeam.mac +++ b/examples/advanced/microbeam/microbeam.mac @@ -6,7 +6,7 @@ #/vis/viewer/zoom 2000000 #/vis/viewer/set/viewpointVector 400 0 105.79 -#/tracking/storeTrajectory 1 +/tracking/storeTrajectory 1 #/vis/scene/endOfEventAction accumulate /tracking/verbose 0 diff --git a/examples/advanced/microbeam/microbeam.out b/examples/advanced/microbeam/microbeam.out index 5202e5d455..833d54d58a 100644 --- a/examples/advanced/microbeam/microbeam.out +++ b/examples/advanced/microbeam/microbeam.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -40,81 +40,81 @@ Registered filter factories: ***** Table : Nb of materials = 16 ***** - Material: Vacuum density: 0.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 204727576.737 pc + Material: Vacuum density: 0.000 mg/cm3 RadL: 204727576.737 pc Imean: 21.800 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Vacuum ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: H2O density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm + Material: H2O density: 1.000 g/cm3 RadL: 36.092 cm Imean: 70.893 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: Air density: 1.290 mg/cm3 temperature: 293.16 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 293.16 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: LPAir density: 0.000 mg/cm3 temperature: 293.16 K pressure: 1.00 atm RadLength: 56273252.573 km + Material: LPAir density: 0.000 mg/cm3 RadL: 56273252.573 km Imean: 87.308 eV temperature: 293.16 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 71.50 % ElmAbundance 75.57 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 25.00 % ElmAbundance 23.14 % ---> Element: Argon (Ar) Z = 18.0 N = 39.9 A = 39.95 g/mole ElmMassFraction: 3.50 % ElmAbundance 1.30 % - Material: Pl density: 21.400 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.058 mm + Material: Pl density: 21.400 g/cm3 RadL: 3.058 mm Imean: 787.800 eV ---> Element: Pl ( ) Z = 78.0 N = 195.1 A = 195.09 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Butane density: 0.026 mg/cm3 temperature: 293.16 K pressure: 0.01 atm RadLength: 17.729 km + Material: Butane density: 0.026 mg/cm3 RadL: 17.729 km Imean: 53.612 eV temperature: 293.16 K pressure: 0.01 atm ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 82.63 % ElmAbundance 28.57 % ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 17.37 % ElmAbundance 71.43 % - Material: Polyprop density: 900.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 49.764 cm + Material: Polyprop density: 900.000 mg/cm3 RadL: 49.764 cm Imean: 56.713 eV ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 85.60 % ElmAbundance 33.33 % ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 14.40 % ElmAbundance 66.67 % - Material: Si3N4 density: 3.440 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 7.644 cm + Material: Si3N4 density: 3.440 g/cm3 RadL: 7.644 cm Imean: 128.542 eV ---> Element: Silicon (Si) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 60.06 % ElmAbundance 42.86 % ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 39.94 % ElmAbundance 57.14 % - Material: SiO2 density: 2.500 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 10.819 cm + Material: SiO2 density: 2.500 g/cm3 RadL: 10.819 cm Imean: 126.007 eV ---> Element: Silicon (Si) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 46.74 % ElmAbundance 33.33 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 53.26 % ElmAbundance 66.67 % - Material: Laiton density: 8.500 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.487 cm + Material: Laiton density: 8.500 g/cm3 RadL: 1.487 cm Imean: 325.993 eV ---> Element: Cuivre (Cu) Z = 29.0 N = 63.5 A = 63.55 g/mole ElmMassFraction: 49.28 % ElmAbundance 50.00 % ---> Element: Zinc (Zn) Z = 30.0 N = 65.4 A = 65.41 g/mole ElmMassFraction: 50.72 % ElmAbundance 50.00 % - Material: Cytoplasm1 density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 48.413 cm + Material: Cytoplasm1 density: 1.000 g/cm3 RadL: 48.413 cm Imean: 31.293 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 59.60 % ElmAbundance 95.53 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 24.24 % ElmAbundance 2.45 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 11.11 % ElmAbundance 1.50 % ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 4.04 % ElmAbundance 0.47 % ---> Element: Phosphorus (P) Z = 15.0 N = 31.0 A = 30.97 g/mole ElmMassFraction: 1.01 % ElmAbundance 0.05 % - Material: Cytoplasm2 density: 10.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.619 cm + Material: Cytoplasm2 density: 10.000 g/cm3 RadL: 3.619 cm Imean: 71.338 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 10.64 % ElmAbundance 64.80 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 74.50 % ElmAbundance 28.64 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 9.04 % ElmAbundance 4.63 % ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 3.21 % ElmAbundance 1.41 % ---> Element: Phosphorus (P) Z = 15.0 N = 31.0 A = 30.97 g/mole ElmMassFraction: 2.61 % ElmAbundance 0.52 % - Material: Cytoplasm3 density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 48.413 cm + Material: Cytoplasm3 density: 1.000 g/cm3 RadL: 48.413 cm Imean: 31.293 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 59.60 % ElmAbundance 95.53 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 24.24 % ElmAbundance 2.45 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 11.11 % ElmAbundance 1.50 % ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 4.04 % ElmAbundance 0.47 % ---> Element: Phosphorus (P) Z = 15.0 N = 31.0 A = 30.97 g/mole ElmMassFraction: 1.01 % ElmAbundance 0.05 % - Material: Nucleus1 density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.185 cm + Material: Nucleus1 density: 1.000 g/cm3 RadL: 36.185 cm Imean: 71.338 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 10.64 % ElmAbundance 64.80 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 74.50 % ElmAbundance 28.64 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 9.04 % ElmAbundance 4.63 % ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 3.21 % ElmAbundance 1.41 % ---> Element: Phosphorus (P) Z = 15.0 N = 31.0 A = 30.97 g/mole ElmMassFraction: 2.61 % ElmAbundance 0.52 % - Material: Nucleus2 density: 1.100 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 32.896 cm + Material: Nucleus2 density: 1.100 g/cm3 RadL: 32.896 cm Imean: 71.338 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 10.64 % ElmAbundance 64.80 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 74.50 % ElmAbundance 28.64 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 9.04 % ElmAbundance 4.63 % ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 3.21 % ElmAbundance 1.41 % ---> Element: Phosphorus (P) Z = 15.0 N = 31.0 A = 30.97 g/mole ElmMassFraction: 2.61 % ElmAbundance 0.52 % - Material: Nucleus3 density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.185 cm + Material: Nucleus3 density: 1.000 g/cm3 RadL: 36.185 cm Imean: 71.338 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 10.64 % ElmAbundance 64.80 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 74.50 % ElmAbundance 28.64 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 9.04 % ElmAbundance 4.63 % @@ -159,7 +159,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -305,45 +305,56 @@ Index : 12 used in the geometry : Yes recalculation needed : No ==================================================================== -> Event # 1 generated - ===> The incident alpha particle has reached the targeted cell : - -----> total absorbed dose within Nucleus is (Gy) = 0.307962 - -----> total absorbed dose within Cytoplasm is (Gy) = 0.0382348 + ===> Sorry, the incident alpha particle has missed the targeted cell ! +G4VisManager: Using G4TrajectoryDrawByCharge as default trajectory model. +See commands in /vis/modeling/trajectories/ for other options. +Trajectory drawing configuration will be based on imode value of 50 +WARNING: G4VisManager::IsValidView(): Attempt to draw when no graphics system + has been instantiated. Use "/vis/open" or "/vis/sceneHandler/create". + Alternatively, to avoid this message, suppress instantiation of vis + manager (G4VisExecutive), possibly by setting G4VIS_NONE, and ensure + drawing code is executed only if G4VVisManager::GetConcreteInstance() + is non-zero. -> Event # 2 generated - ===> The incident alpha particle has reached the targeted cell : - -----> total absorbed dose within Nucleus is (Gy) = 0.3149 - -----> total absorbed dose within Cytoplasm is (Gy) = 0.13141 + ===> Sorry, the incident alpha particle has missed the targeted cell ! -> Event # 3 generated - ===> The incident alpha particle has reached the targeted cell : - -----> total absorbed dose within Nucleus is (Gy) = 0.307115 - -----> total absorbed dose within Cytoplasm is (Gy) = 0.100445 + ===> Sorry, the incident alpha particle has missed the targeted cell ! -> Event # 4 generated - ===> The incident alpha particle has reached the targeted cell : - -----> total absorbed dose within Nucleus is (Gy) = 0.388045 - -----> total absorbed dose within Cytoplasm is (Gy) = 0.0381594 + ===> Sorry, the incident alpha particle has missed the targeted cell ! -> Event # 5 generated - ===> Sorry, the incident alpha particle has missed the targeted cell ! + ===> The incident alpha particle has reached the targeted cell : + -----> total absorbed dose within Nucleus is (Gy) = 0.32025772 + -----> total absorbed dose within Cytoplasm is (Gy) = 0.031617269 -> Event # 6 generated - ===> Sorry, the incident alpha particle has missed the targeted cell ! + ===> The incident alpha particle has reached the targeted cell : + -----> total absorbed dose within Nucleus is (Gy) = 0.32341093 + -----> total absorbed dose within Cytoplasm is (Gy) = 0.036113653 -> Event # 7 generated - ===> Sorry, the incident alpha particle has missed the targeted cell ! + ===> The incident alpha particle has reached the targeted cell : + -----> total absorbed dose within Nucleus is (Gy) = 0.26556093 + -----> total absorbed dose within Cytoplasm is (Gy) = 0.050062224 -> Event # 8 generated - ===> Sorry, the incident alpha particle has missed the targeted cell ! + ===> The incident alpha particle has reached the targeted cell : + -----> total absorbed dose within Nucleus is (Gy) = 0.32553893 + -----> total absorbed dose within Cytoplasm is (Gy) = 0.061953552 -> Event # 9 generated ===> Sorry, the incident alpha particle has missed the targeted cell ! -> Event # 10 generated - ===> Sorry, the incident alpha particle has missed the targeted cell ! + ===> The incident alpha particle has reached the targeted cell : + -----> total absorbed dose within Nucleus is (Gy) = 0.6130144 + -----> total absorbed dose within Cytoplasm is (Gy) = 0.027280906 ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. --> Total number of particles detected by the gas detector : 4 +-> Total number of particles detected by the gas detector : 5 Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/advanced/microbeam/microbeam_fichiers/oledata.mso b/examples/advanced/microbeam/microbeam_fichiers/oledata.mso index e9fe62023b..09c6b3d409 100755 Binary files a/examples/advanced/microbeam/microbeam_fichiers/oledata.mso and b/examples/advanced/microbeam/microbeam_fichiers/oledata.mso differ diff --git a/examples/advanced/microbeam/src/MicrobeamDetectorConstruction.cc b/examples/advanced/microbeam/src/MicrobeamDetectorConstruction.cc index 0fe50f76a3..a2b32a9799 100755 --- a/examples/advanced/microbeam/src/MicrobeamDetectorConstruction.cc +++ b/examples/advanced/microbeam/src/MicrobeamDetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // ------------------------------------------------------------------- -// $Id: MicrobeamDetectorConstruction.cc,v 1.5 2006/06/29 16:05:25 gunter Exp $ +// $Id: MicrobeamDetectorConstruction.cc,v 1.7 2007/08/27 15:51:54 gcosmo Exp $ // ------------------------------------------------------------------- #include "MicrobeamDetectorConstruction.hh" @@ -396,7 +396,7 @@ G4VPhysicalVolume* MicrobeamDetectorConstruction::ConstructMicrobeamLine() solid1Gap = new G4Cons("_CollObj_gap1_", 0.*micrometer, 6*micrometer, 0.*micrometer,2.5*micrometer, 3.5*micrometer, - 0, ((360*M_PI)/180)); + 0, ((360*CLHEP::pi)/180)); logic1Gap = new G4LogicalVolume(solid1Gap, defaultMaterial, "_CollObj_gap1_"); @@ -408,7 +408,7 @@ G4VPhysicalVolume* MicrobeamDetectorConstruction::ConstructMicrobeamLine() solid2Gap = new G4Cons("_CollObj_gap2_", 0.*micrometer, 15*micrometer, 0.*micrometer,6*micrometer, 6.5*micrometer, - 0, ((360*M_PI)/180)); + 0, ((360*CLHEP::pi)/180)); logic2Gap = new G4LogicalVolume(solid2Gap, defaultMaterial, "_CollObj_gap2_"); @@ -420,7 +420,7 @@ G4VPhysicalVolume* MicrobeamDetectorConstruction::ConstructMicrobeamLine() solid3Gap = new G4Cons("_CollObj_gap3_", 0.*micrometer, 105*micrometer, 0.*micrometer,15*micrometer, 25*micrometer, - 0, ((360*M_PI)/180)); + 0, ((360*CLHEP::pi)/180)); logic3Gap = new G4LogicalVolume(solid3Gap, defaultMaterial, "_CollObj_gap3_"); @@ -443,7 +443,7 @@ G4VPhysicalVolume* MicrobeamDetectorConstruction::ConstructMicrobeamLine() solid4Gap = new G4Cons("_CollDet_gap4_", 0.*micrometer, 8*micrometer, 0.*micrometer,5*micrometer, 7.5*micrometer, - 0, ((360*M_PI)/180)); + 0, ((360*CLHEP::pi)/180)); logic4Gap = new G4LogicalVolume(solid4Gap, defaultMaterial, "_CollDet_gap4_"); @@ -454,7 +454,7 @@ G4VPhysicalVolume* MicrobeamDetectorConstruction::ConstructMicrobeamLine() solid5Gap = new G4Cons("_CollDet_gap5_", 0.*micrometer, 105*micrometer, 0.*micrometer,8*micrometer, 27.5*micrometer, - 0, ((360*M_PI)/180)); + 0, ((360*CLHEP::pi)/180)); logic5Gap = new G4LogicalVolume(solid5Gap, defaultMaterial, "_CollDet_gap5_"); @@ -633,7 +633,7 @@ G4VPhysicalVolume* MicrobeamDetectorConstruction::ConstructMicrobeamLine() logicPhantom, // their logical volumr // logicCyto, // Mother logical volume logicKgm, // Mother logical volume - kZAxis, // Are placed along this axis + kUndefined, // Are placed along this axis phantomParam->GetNoBoxes(), // Number of boxes phantomParam,false); // The parametrisation diff --git a/examples/advanced/microbeam/src/MicrobeamEMField.cc b/examples/advanced/microbeam/src/MicrobeamEMField.cc index 20947072ee..0fd5639b67 100755 --- a/examples/advanced/microbeam/src/MicrobeamEMField.cc +++ b/examples/advanced/microbeam/src/MicrobeamEMField.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // ------------------------------------------------------------------- -// $Id: MicrobeamEMField.cc,v 1.5 2006/06/29 16:05:27 gunter Exp $ +// $Id: MicrobeamEMField.cc,v 1.6 2007/07/06 06:52:54 sincerti Exp $ // ------------------------------------------------------------------- #include "MicrobeamEMField.hh" @@ -253,6 +253,8 @@ if (z>=-1400*mm & z <-200*mm) G2=0; G3=0; cte=0; + + G4bool largeScattering=false; for (G4int i=0;i<4; i++) { @@ -264,6 +266,8 @@ if (z>=-1400*mm & z <-200*mm) x_local = (x - xoprime) * std::cos (lineAngle) - (z - zoprime) * std::sin (lineAngle); y_local = y; z_local = (z - zoprime) * std::cos (lineAngle) + (x - xoprime) * std::sin (lineAngle); + if (std::sqrt(x_local*x_local+y_local*y_local)>a0[i]) largeScattering=true; + } if (i==1) @@ -273,6 +277,7 @@ if (z>=-1400*mm & z <-200*mm) x_local = (x - xoprime) * std::cos (lineAngle) - (z - zoprime) * std::sin (lineAngle); y_local = y; z_local = (z - zoprime) * std::cos (lineAngle) + (x - xoprime) * std::sin (lineAngle); + if (std::sqrt(x_local*x_local+y_local*y_local)>a0[i]) largeScattering=true; } if (i==2) @@ -282,6 +287,7 @@ if (z>=-1400*mm & z <-200*mm) x_local = (x - xoprime) * std::cos (lineAngle) - (z - zoprime) * std::sin (lineAngle); y_local = y; z_local = (z - zoprime) * std::cos (lineAngle) + (x - xoprime) * std::sin (lineAngle); + if (std::sqrt(x_local*x_local+y_local*y_local)>a0[i]) largeScattering=true; } if (i==3) @@ -291,6 +297,7 @@ if (z>=-1400*mm & z <-200*mm) x_local = (x - xoprime) * std::cos (lineAngle) - (z - zoprime) * std::sin (lineAngle); y_local = y; z_local = (z - zoprime) * std::cos (lineAngle) + (x - xoprime) * std::sin (lineAngle); + if (std::sqrt(x_local*x_local+y_local*y_local)>a0[i]) largeScattering=true; } @@ -357,6 +364,16 @@ if (z>=-1400*mm & z <-200*mm) } + // PROTECTION AGAINST LARGE SCATTERING + + if ( largeScattering ) + { + G0=0; + G1=0; + G2=0; + G3=0; + } + // MAGNETIC FIELD COMPUTATION FOR EACH QUADRUPOLE Bx_local = y_local*(G0-(1./12)*(3*x_local*x_local+y_local*y_local)*G2); @@ -502,5 +519,26 @@ if (z>=-1400*mm & z <-200*mm) Bfield[5] = 0; } +// ZERO FIELD REGIONS + +if ( +(Bfield[0]==0. & +Bfield[1]==0. & +Bfield[2]==0. & +Bfield[4]==0. & +Bfield[5]==0. & +Bfield[6]==0. ) +) +{ + +G4FieldManager *pFieldMgr; +pFieldMgr = G4TransportationManager::GetTransportationManager()->GetFieldManager(); +pFieldMgr = NULL; + +} + +// + + } diff --git a/examples/advanced/microbeam/src/MicrobeamPrimaryGeneratorAction.cc b/examples/advanced/microbeam/src/MicrobeamPrimaryGeneratorAction.cc index a58dd4e8bb..15306301bf 100755 --- a/examples/advanced/microbeam/src/MicrobeamPrimaryGeneratorAction.cc +++ b/examples/advanced/microbeam/src/MicrobeamPrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // ------------------------------------------------------------------- -// $Id: MicrobeamPrimaryGeneratorAction.cc,v 1.6 2006/06/29 16:05:35 gunter Exp $ +// $Id: MicrobeamPrimaryGeneratorAction.cc,v 1.7 2007/08/27 15:51:54 gcosmo Exp $ // ------------------------------------------------------------------- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -83,7 +83,7 @@ void MicrobeamPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) } while(theta>1.1e-6*rad); - phi=2*M_PI*G4UniformRand()*rad; + phi=CLHEP::twopi*G4UniformRand()*rad; xMom0=std::sin(theta)*std::cos(phi); yMom0=std::sin(theta)*std::sin(phi); @@ -100,7 +100,7 @@ void MicrobeamPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) G4cout << "-> Event # " << numEvent << " : THETA from Z axis (mrad) = " << theta*1000 - << " -- PHI (deg) = " << phi*180/M_PI + << " -- PHI (deg) = " << phi*180/CLHEP::pi << " -- x0 (um) = " << x0/micrometer << " -- y0 (um) = " << y0/micrometer << " -- z0 (m) = " << z0/m diff --git a/examples/advanced/microbeam/src/MicrobeamSteppingAction.cc b/examples/advanced/microbeam/src/MicrobeamSteppingAction.cc index 62d1ffdf62..ca010ae3a7 100755 --- a/examples/advanced/microbeam/src/MicrobeamSteppingAction.cc +++ b/examples/advanced/microbeam/src/MicrobeamSteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // ------------------------------------------------------------------- -// $Id: MicrobeamSteppingAction.cc,v 1.5 2006/06/29 16:05:39 gunter Exp $ +// $Id: MicrobeamSteppingAction.cc,v 1.8 2007/08/22 13:58:33 sincerti Exp $ // ------------------------------------------------------------------- #include "G4SteppingManager.hh" @@ -94,11 +94,21 @@ if ( ((aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName() == "Polypr fclose (myFile); } + // Average dE over step syggested by Michel Maire + G4StepPoint* p1 = aStep->GetPreStepPoint(); G4ThreeVector coord1 = p1->GetPosition(); + const G4AffineTransform transformation1 = p1->GetTouchable()->GetHistory()->GetTopTransform(); + G4ThreeVector localPosition1 = transformation1.TransformPoint(coord1); - const G4AffineTransform transformation = p1->GetTouchable()->GetHistory()->GetTopTransform(); - G4ThreeVector localPosition = transformation.TransformPoint(coord1); + G4StepPoint* p2 = aStep->GetPostStepPoint(); + G4ThreeVector coord2 = p2->GetPosition(); + const G4AffineTransform transformation2 = p2->GetTouchable()->GetHistory()->GetTopTransform(); + G4ThreeVector localPosition2 = transformation2.TransformPoint(coord2); + + G4ThreeVector localPosition = localPosition1 + G4UniformRand()*(localPosition2-localPosition1); + + // end FILE *myFile; myFile=fopen("beamPosition.txt","a"); @@ -144,9 +154,8 @@ if ( // TOTAL DOSE DEPOSIT AND DOSE DEPOSIT WITHIN A PHANTOM VOXEL -if ( (aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName() == "physicalNucleus") - && (aStep->GetPostStepPoint()->GetPhysicalVolume()->GetName() == "physicalNucleus") - && (aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->GetParticleName() == "alpha") ) +if (aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName() == "physicalNucleus") + { G4double dose = (e_SI*(aStep->GetTotalEnergyDeposit()/eV))/(Run->GetMassNucleus()); Run->AddDoseN(dose); @@ -156,9 +165,9 @@ if ( (aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName() == "physical aStep->GetTotalEnergyDeposit()/eV); } -if ( (aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName() == "physicalCytoplasm") - && (aStep->GetPostStepPoint()->GetPhysicalVolume()->GetName() == "physicalCytoplasm") - && (aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->GetParticleName() == "alpha") ) + +if (aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName() == "physicalCytoplasm") + { G4double dose = (e_SI*(aStep->GetTotalEnergyDeposit()/eV))/(Run->GetMassCytoplasm()); Run->AddDoseC(dose); diff --git a/examples/advanced/purging_magnet/PurgMag.cc b/examples/advanced/purging_magnet/PurgMag.cc index ab37e7e057..641d7b8fb7 100644 --- a/examples/advanced/purging_magnet/PurgMag.cc +++ b/examples/advanced/purging_magnet/PurgMag.cc @@ -33,7 +33,7 @@ // ********************* // // $Id: PurgMag.cc,v 1.5 2006/06/29 16:05:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Comments: Main program for the Purgin Magnet example. // diff --git a/examples/advanced/purging_magnet/include/PurgMagAnalysisManager.hh b/examples/advanced/purging_magnet/include/PurgMagAnalysisManager.hh index e4e0b4946f..08a887b80e 100644 --- a/examples/advanced/purging_magnet/include/PurgMagAnalysisManager.hh +++ b/examples/advanced/purging_magnet/include/PurgMagAnalysisManager.hh @@ -33,7 +33,7 @@ // ************************************ // // $Id: PurgMagAnalysisManager.hh,v 1.3 2006/06/29 16:05:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifdef G4ANALYSIS_USE diff --git a/examples/advanced/purging_magnet/include/PurgMagDetectorConstruction.hh b/examples/advanced/purging_magnet/include/PurgMagDetectorConstruction.hh index bc265467a8..b2b273cdd4 100644 --- a/examples/advanced/purging_magnet/include/PurgMagDetectorConstruction.hh +++ b/examples/advanced/purging_magnet/include/PurgMagDetectorConstruction.hh @@ -33,7 +33,7 @@ // ***************************************** // // $Id: PurgMagDetectorConstruction.hh,v 1.3 2006/06/29 16:05:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/advanced/purging_magnet/include/PurgMagEventAction.hh b/examples/advanced/purging_magnet/include/PurgMagEventAction.hh index cb204ffba9..22bcdb6be5 100644 --- a/examples/advanced/purging_magnet/include/PurgMagEventAction.hh +++ b/examples/advanced/purging_magnet/include/PurgMagEventAction.hh @@ -33,7 +33,7 @@ // ******************************** // // $Id: PurgMagEventAction.hh,v 1.3 2006/06/29 16:05:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/advanced/purging_magnet/include/PurgMagPhysicsList.hh b/examples/advanced/purging_magnet/include/PurgMagPhysicsList.hh index 15e94edafa..aa97db9b77 100644 --- a/examples/advanced/purging_magnet/include/PurgMagPhysicsList.hh +++ b/examples/advanced/purging_magnet/include/PurgMagPhysicsList.hh @@ -34,7 +34,7 @@ // // // $Id: PurgMagPhysicsList.hh,v 1.4 2006/06/29 16:05:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/advanced/purging_magnet/include/PurgMagPrimaryGeneratorAction.hh b/examples/advanced/purging_magnet/include/PurgMagPrimaryGeneratorAction.hh index 243bb92bad..3d4b1cea0f 100644 --- a/examples/advanced/purging_magnet/include/PurgMagPrimaryGeneratorAction.hh +++ b/examples/advanced/purging_magnet/include/PurgMagPrimaryGeneratorAction.hh @@ -34,7 +34,7 @@ // ******************************************** // // $Id: PurgMagPrimaryGeneratorAction.hh,v 1.3 2006/06/29 16:05:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/advanced/purging_magnet/include/PurgMagRunAction.hh b/examples/advanced/purging_magnet/include/PurgMagRunAction.hh index e7e4339dfa..e767d49e95 100644 --- a/examples/advanced/purging_magnet/include/PurgMagRunAction.hh +++ b/examples/advanced/purging_magnet/include/PurgMagRunAction.hh @@ -33,7 +33,7 @@ // ****************************** // // $Id: PurgMagRunAction.hh,v 1.3 2006/06/29 16:05:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef PurgMagRunAction_h diff --git a/examples/advanced/purging_magnet/include/PurgMagSteppingAction.hh b/examples/advanced/purging_magnet/include/PurgMagSteppingAction.hh index 954d908bc1..50a2487778 100644 --- a/examples/advanced/purging_magnet/include/PurgMagSteppingAction.hh +++ b/examples/advanced/purging_magnet/include/PurgMagSteppingAction.hh @@ -33,7 +33,7 @@ // *********************************** // // $Id: PurgMagSteppingAction.hh,v 1.3 2006/06/29 16:06:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/advanced/purging_magnet/include/PurgMagSteppingVerbose.hh b/examples/advanced/purging_magnet/include/PurgMagSteppingVerbose.hh index b2b9944a91..2c40ba0b4a 100644 --- a/examples/advanced/purging_magnet/include/PurgMagSteppingVerbose.hh +++ b/examples/advanced/purging_magnet/include/PurgMagSteppingVerbose.hh @@ -34,7 +34,7 @@ // ************************************ // // $Id: PurgMagSteppingVerbose.hh,v 1.3 2006/06/29 16:06:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // class PurgMagSteppingVerbose; diff --git a/examples/advanced/purging_magnet/include/PurgMagTabulatedField3D.hh b/examples/advanced/purging_magnet/include/PurgMagTabulatedField3D.hh index cb4ada52a9..b0369a3db4 100644 --- a/examples/advanced/purging_magnet/include/PurgMagTabulatedField3D.hh +++ b/examples/advanced/purging_magnet/include/PurgMagTabulatedField3D.hh @@ -33,7 +33,7 @@ // ************************************* // // $Id: PurgMagTabulatedField3D.hh,v 1.3 2006/06/29 16:06:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/advanced/purging_magnet/include/PurgMagTrackingAction.hh b/examples/advanced/purging_magnet/include/PurgMagTrackingAction.hh index c0a0f5e1b9..c5928fa4b9 100644 --- a/examples/advanced/purging_magnet/include/PurgMagTrackingAction.hh +++ b/examples/advanced/purging_magnet/include/PurgMagTrackingAction.hh @@ -33,7 +33,7 @@ // ********************************** // // $Id: PurgMagTrackingAction.hh,v 1.3 2006/06/29 16:06:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef PurgMagTrackingAction_h diff --git a/examples/advanced/purging_magnet/src/PurgMagAnalysisManager.cc b/examples/advanced/purging_magnet/src/PurgMagAnalysisManager.cc index 3084ac8119..7595c9af59 100644 --- a/examples/advanced/purging_magnet/src/PurgMagAnalysisManager.cc +++ b/examples/advanced/purging_magnet/src/PurgMagAnalysisManager.cc @@ -33,7 +33,7 @@ // ************************************ // // $Id: PurgMagAnalysisManager.cc,v 1.3 2006/06/29 16:06:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifdef G4ANALYSIS_USE #include diff --git a/examples/advanced/purging_magnet/src/PurgMagDetectorConstruction.cc b/examples/advanced/purging_magnet/src/PurgMagDetectorConstruction.cc index c1957ed795..dc2d7727ba 100644 --- a/examples/advanced/purging_magnet/src/PurgMagDetectorConstruction.cc +++ b/examples/advanced/purging_magnet/src/PurgMagDetectorConstruction.cc @@ -33,7 +33,7 @@ // ***************************************** // // $Id: PurgMagDetectorConstruction.cc,v 1.4 2006/06/29 16:06:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "PurgMagDetectorConstruction.hh" #include "PurgMagTabulatedField3D.hh" diff --git a/examples/advanced/purging_magnet/src/PurgMagEventAction.cc b/examples/advanced/purging_magnet/src/PurgMagEventAction.cc index 7186ccbd7d..c1f45bf1f7 100644 --- a/examples/advanced/purging_magnet/src/PurgMagEventAction.cc +++ b/examples/advanced/purging_magnet/src/PurgMagEventAction.cc @@ -33,7 +33,7 @@ // ******************************** // // $Id: PurgMagEventAction.cc,v 1.4 2006/06/29 16:06:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/advanced/purging_magnet/src/PurgMagPhysicsList.cc b/examples/advanced/purging_magnet/src/PurgMagPhysicsList.cc index f86cec8dc8..ef2911a4cd 100644 --- a/examples/advanced/purging_magnet/src/PurgMagPhysicsList.cc +++ b/examples/advanced/purging_magnet/src/PurgMagPhysicsList.cc @@ -34,7 +34,7 @@ // // // $Id: PurgMagPhysicsList.cc,v 1.5 2006/06/29 16:06:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/advanced/purging_magnet/src/PurgMagPrimaryGeneratorAction.cc b/examples/advanced/purging_magnet/src/PurgMagPrimaryGeneratorAction.cc index 6b24e4afc2..b0ffc2aa7d 100644 --- a/examples/advanced/purging_magnet/src/PurgMagPrimaryGeneratorAction.cc +++ b/examples/advanced/purging_magnet/src/PurgMagPrimaryGeneratorAction.cc @@ -33,7 +33,7 @@ // ******************************************** // // $Id: PurgMagPrimaryGeneratorAction.cc,v 1.3 2006/06/29 16:06:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/advanced/purging_magnet/src/PurgMagRunAction.cc b/examples/advanced/purging_magnet/src/PurgMagRunAction.cc index a972768f35..79c1d542dc 100644 --- a/examples/advanced/purging_magnet/src/PurgMagRunAction.cc +++ b/examples/advanced/purging_magnet/src/PurgMagRunAction.cc @@ -33,7 +33,7 @@ // ****************************** // // $Id: PurgMagRunAction.cc,v 1.4 2006/06/29 16:06:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "PurgMagRunAction.hh" diff --git a/examples/advanced/purging_magnet/src/PurgMagSteppingAction.cc b/examples/advanced/purging_magnet/src/PurgMagSteppingAction.cc index fd3454b6f3..54c45ad48d 100644 --- a/examples/advanced/purging_magnet/src/PurgMagSteppingAction.cc +++ b/examples/advanced/purging_magnet/src/PurgMagSteppingAction.cc @@ -33,7 +33,7 @@ // *********************************** // // $Id: PurgMagSteppingAction.cc,v 1.5 2006/06/29 16:06:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/advanced/purging_magnet/src/PurgMagSteppingVerbose.cc b/examples/advanced/purging_magnet/src/PurgMagSteppingVerbose.cc index c24f30deef..3381e9b3e9 100644 --- a/examples/advanced/purging_magnet/src/PurgMagSteppingVerbose.cc +++ b/examples/advanced/purging_magnet/src/PurgMagSteppingVerbose.cc @@ -33,7 +33,7 @@ // ************************************ // // $Id: PurgMagSteppingVerbose.cc,v 1.3 2006/06/29 16:06:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "PurgMagSteppingVerbose.hh" diff --git a/examples/advanced/purging_magnet/src/PurgMagTabulatedField3D.cc b/examples/advanced/purging_magnet/src/PurgMagTabulatedField3D.cc index fb467db154..ec435b5192 100644 --- a/examples/advanced/purging_magnet/src/PurgMagTabulatedField3D.cc +++ b/examples/advanced/purging_magnet/src/PurgMagTabulatedField3D.cc @@ -33,7 +33,7 @@ // ************************************* // // $Id: PurgMagTabulatedField3D.cc,v 1.4 2006/06/29 16:06:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "PurgMagTabulatedField3D.hh" diff --git a/examples/advanced/purging_magnet/src/PurgMagTrackingAction.cc b/examples/advanced/purging_magnet/src/PurgMagTrackingAction.cc index 8794720aab..d206646806 100644 --- a/examples/advanced/purging_magnet/src/PurgMagTrackingAction.cc +++ b/examples/advanced/purging_magnet/src/PurgMagTrackingAction.cc @@ -33,7 +33,7 @@ // *********************************** // // $Id: PurgMagTrackingAction.cc,v 1.3 2006/06/29 16:06:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "PurgMagTrackingAction.hh" diff --git a/examples/advanced/radiation_monitor/Radmon.cc b/examples/advanced/radiation_monitor/Radmon.cc index 9d341565d5..583cd5fbed 100644 --- a/examples/advanced/radiation_monitor/Radmon.cc +++ b/examples/advanced/radiation_monitor/Radmon.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: Radmon.cc,v 1.3 2006/06/29 16:06:29 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Application main file // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysis.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysis.hh index 46c51767c6..abd567335e 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysis.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysis.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonAnalysis.hh,v 1.4 2006/06/29 16:06:41 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Analysis main class // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisLayout.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisLayout.hh index 045a7cd7e4..13589302d9 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisLayout.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonAnalysisLayout.hh,v 1.3 2006/06/29 16:06:44 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Concrete class to keep track of the analysis options // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisMessenger.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisMessenger.hh index 6591dc3cd8..6be5ad634b 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisMessenger.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisMessenger.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonAnalysisMessenger.hh,v 1.3 2006/06/29 16:06:47 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: UI commands for managing a layout // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisSensitiveDetectorTypeLayout.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisSensitiveDetectorTypeLayout.hh index 5abd2d8e79..b2f9492666 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisSensitiveDetectorTypeLayout.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisSensitiveDetectorTypeLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonAnalysisSensitiveDetectorTypeLayout.hh,v 1.3 2006/06/29 16:06:49 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Internal class to manage sensitive detector types // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisSensitiveDetectorTypeLayout.icc b/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisSensitiveDetectorTypeLayout.icc index 74728e2a4c..a31b89f3b1 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisSensitiveDetectorTypeLayout.icc +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonAnalysisSensitiveDetectorTypeLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonAnalysisSensitiveDetectorTypeLayout.icc,v 1.3 2006/06/29 16:06:51 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONANALYSISSENSITIVEDETECTORTYPELAYOUT_HH diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisDepositedEnergy.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisDepositedEnergy.hh index 75c3923aad..58d29905e1 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisDepositedEnergy.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisDepositedEnergy.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDataAnalysisDepositedEnergy.hh,v 1.3 2006/06/29 16:06:53 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Energy deposit analysis // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisDepositedEnergy.icc b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisDepositedEnergy.icc index 30d0cc1c5f..0c0d3b0068 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisDepositedEnergy.icc +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisDepositedEnergy.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDataAnalysisDepositedEnergy.icc,v 1.3 2006/06/29 16:06:55 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDATAANALYSISDEPOSITEDENERGY_HH diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisLayout.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisLayout.hh index cf4df630dd..90c46e5c84 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisLayout.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDataAnalysisLayout.hh,v 1.3 2006/06/29 16:06:57 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Internal class that describes layer informations // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisLayout.icc b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisLayout.icc index abaf6b0c8e..a56a2fecf0 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisLayout.icc +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDataAnalysisLayout.icc,v 1.3 2006/06/29 16:07:01 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDATAANALYSISLAYOUT_HH diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisWithLabelFactory.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisWithLabelFactory.hh index e3276b07c7..43eb0cef12 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisWithLabelFactory.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisWithLabelFactory.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDataAnalysisWithLabelFactory.hh,v 1.3 2006/06/29 16:07:05 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Concrete factory that constructs // RadmonSubPhysiscsListWithLabel objects diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisWithLabelFactory.icc b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisWithLabelFactory.icc index 28a2bb1ca0..a3c4f571c8 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisWithLabelFactory.icc +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisWithLabelFactory.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDataAnalysisWithLabelFactory.icc,v 1.3 2006/06/29 16:07:07 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDATAANALYSISWITHLABELFACTORY_HH diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisWithLabelMessenger.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisWithLabelMessenger.hh index 76900979fd..a6037ac6e6 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisWithLabelMessenger.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonDataAnalysisWithLabelMessenger.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDataAnalysisWithLabelMessenger.hh,v 1.3 2006/06/29 16:07:09 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: UI commands for dumping the available constructors // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonVAnalysisLayout.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonVAnalysisLayout.hh index cf5459e114..3d5d9ea5b7 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonVAnalysisLayout.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonVAnalysisLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVAnalysisLayout.hh,v 1.1.2.2 2006/06/29 16:07:11 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class to keep track of the analysis options // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonVAnalysisLayout.icc b/examples/advanced/radiation_monitor/analysis/include/RadmonVAnalysisLayout.icc index 6e5bb1eb34..315b6e13f8 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonVAnalysisLayout.icc +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonVAnalysisLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVAnalysisLayout.icc,v 1.3 2006/06/29 16:07:13 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVANALYSISLAYOUT_HH diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysis.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysis.hh index 1613f904c3..7f83db7fbb 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysis.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysis.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDataAnalysis.hh,v 1.4 2006/06/29 16:07:15 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class of an analysis piece // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysis.icc b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysis.icc index 1a3378f2a7..1672b7e415 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysis.icc +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysis.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDataAnalysis.icc,v 1.3 2006/06/29 16:07:17 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVDATAANALYSIS_HH diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.hh index 23cccf1e10..0be0b29176 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDataAnalysisFactory.hh,v 1.1.2.2 2006/06/29 16:07:19 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class of a factory of analysis items // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.icc b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.icc index 9e9effb090..4cffd3c055 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.icc +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDataAnalysisFactory.icc,v 1.1.2.2 2006/06/29 16:07:21 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVDATAANALYSISFACTORY_HH diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisWithLabel.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisWithLabel.hh index 7a2e37e85b..5de17fade4 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisWithLabel.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisWithLabel.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDataAnalysisWithLabel.hh,v 1.3 2006/06/29 16:07:23 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class of an analysis piece with label // and attributes diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisWithLabel.icc b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisWithLabel.icc index 312155ed23..0dc8ffabc4 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisWithLabel.icc +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisWithLabel.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDataAnalysisWithLabel.icc,v 1.3 2006/06/29 16:07:25 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVDATAANALYSISWITHLABEL_HH diff --git a/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysis.cc b/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysis.cc index d6106e55f5..d761d8b205 100644 --- a/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysis.cc +++ b/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysis.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonAnalysis.cc,v 1.2.2.2 2006/06/29 16:07:35 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisLayout.cc b/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisLayout.cc index c4bf3092f5..41af771a94 100644 --- a/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisLayout.cc +++ b/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonAnalysisLayout.cc,v 1.3 2006/06/29 16:07:37 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisMessenger.cc b/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisMessenger.cc index 7d26f7c08b..22e079dcee 100644 --- a/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisMessenger.cc +++ b/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonAnalysisMessenger.cc,v 1.3 2006/06/29 16:07:39 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Messenger commands path diff --git a/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisSensitiveDetectorTypeLayout.cc b/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisSensitiveDetectorTypeLayout.cc index 46342109ad..c3617998c7 100644 --- a/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisSensitiveDetectorTypeLayout.cc +++ b/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysisSensitiveDetectorTypeLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonAnalysisSensitiveDetectorTypeLayout.cc,v 1.3 2006/06/29 16:07:41 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisDepositedEnergy.cc b/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisDepositedEnergy.cc index 9470fe939c..0d80a48c5c 100644 --- a/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisDepositedEnergy.cc +++ b/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisDepositedEnergy.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDataAnalysisDepositedEnergy.cc,v 1.3 2006/06/29 16:07:43 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonDataAnalysisDepositedEnergy.hh" diff --git a/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisLayout.cc b/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisLayout.cc index fa3c71209d..18a3e54ab1 100644 --- a/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisLayout.cc +++ b/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDataAnalysisLayout.cc,v 1.1.2.2 2006/06/29 16:07:45 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisWithLabelFactory.cc b/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisWithLabelFactory.cc index 92d7ff7420..82a520e2c8 100644 --- a/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisWithLabelFactory.cc +++ b/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisWithLabelFactory.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDataAnalysisWithLabelFactory.cc,v 1.3 2006/06/29 16:07:47 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisWithLabelMessenger.cc b/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisWithLabelMessenger.cc index 9efa5ba8e2..d1e736978a 100644 --- a/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisWithLabelMessenger.cc +++ b/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisWithLabelMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDataAnalysisWithLabelMessenger.cc,v 1.3 2006/06/29 16:07:49 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Messenger commands path diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplication.hh b/examples/advanced/radiation_monitor/application/include/RadmonApplication.hh index 072bac05f4..eed9e12661 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplication.hh +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplication.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplication.hh,v 1.8 2006/06/29 16:07:51 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Radmon application // diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplication.icc b/examples/advanced/radiation_monitor/application/include/RadmonApplication.icc index 9dbd63718c..b81df8e904 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplication.icc +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplication.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplication.icc,v 1.3 2006/06/29 16:07:53 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONAPPLICATION_HH diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationAnalysisSetup.hh b/examples/advanced/radiation_monitor/application/include/RadmonApplicationAnalysisSetup.hh index d7f49697cf..d2dabf25b6 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationAnalysisSetup.hh +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationAnalysisSetup.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationAnalysisSetup.hh,v 1.3 2006/06/29 16:07:55 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Radmon application analysis setup // diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationAnalysisSetup.icc b/examples/advanced/radiation_monitor/application/include/RadmonApplicationAnalysisSetup.icc index 6e84c0ae2b..77ce5ab4d4 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationAnalysisSetup.icc +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationAnalysisSetup.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationAnalysisSetup.icc,v 1.3 2006/06/29 16:07:57 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONAPPLICATIONANALYSISSETUP_HH diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationDetectorSetup.hh b/examples/advanced/radiation_monitor/application/include/RadmonApplicationDetectorSetup.hh index 9b5882be09..fe385fc1db 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationDetectorSetup.hh +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationDetectorSetup.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationDetectorSetup.hh,v 1.3 2006/06/29 16:07:59 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Radmon application detector entity constructors setup // diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationDetectorSetup.icc b/examples/advanced/radiation_monitor/application/include/RadmonApplicationDetectorSetup.icc index 56d3d63739..46767c33e2 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationDetectorSetup.icc +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationDetectorSetup.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationDetectorSetup.icc,v 1.3 2006/06/29 16:08:01 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONAPPLICATIONDETECTORSETUP_HH diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventNumbering.hh b/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventNumbering.hh index f3f07e3f8b..8bad720b02 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventNumbering.hh +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventNumbering.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationEventNumbering.hh,v 1.3 2006/06/29 16:08:03 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Dumps event id // diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventNumbering.icc b/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventNumbering.icc index b2e9b71cd6..e094ec8e62 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventNumbering.icc +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventNumbering.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationEventNumbering.icc,v 1.3 2006/06/29 16:08:05 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONAPPLICATIONEVENTNUMBERING_HH diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventTracks.hh b/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventTracks.hh index a9b773cddb..2c947099b3 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventTracks.hh +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventTracks.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationEventTracks.hh,v 1.3 2006/06/29 16:08:07 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Dumps event id // diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventTracks.icc b/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventTracks.icc index 2ab94c320b..bef6de68d6 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventTracks.icc +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationEventTracks.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationEventTracks.icc,v 1.3 2006/06/29 16:08:09 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONAPPLICATIONEVENTTRACKS_HH diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationGeneratorSetup.hh b/examples/advanced/radiation_monitor/application/include/RadmonApplicationGeneratorSetup.hh index 9605e7ccf1..546cbc9e39 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationGeneratorSetup.hh +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationGeneratorSetup.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationGeneratorSetup.hh,v 1.3 2006/06/29 16:08:11 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Radmon application generators algoritms setup // diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationGeneratorSetup.icc b/examples/advanced/radiation_monitor/application/include/RadmonApplicationGeneratorSetup.icc index 2576b12e7f..23b61358fd 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationGeneratorSetup.icc +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationGeneratorSetup.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationGeneratorSetup.icc,v 1.3 2006/06/29 16:08:13 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONAPPLICATIONGENERATORSETUP_HH diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationMessenger.hh b/examples/advanced/radiation_monitor/application/include/RadmonApplicationMessenger.hh index c131201d05..772c83b07a 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationMessenger.hh +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationMessenger.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationMessenger.hh,v 1.1.2.2 2006/06/29 16:08:15 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: UI commands for managing application level options // diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationOptions.hh b/examples/advanced/radiation_monitor/application/include/RadmonApplicationOptions.hh index bdd657f662..ab8140aa51 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationOptions.hh +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationOptions.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationOptions.hh,v 1.3 2006/06/29 16:08:17 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Supporting class for application startup // diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationOptions.icc b/examples/advanced/radiation_monitor/application/include/RadmonApplicationOptions.icc index b2bd00cf2b..7903f2ce58 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationOptions.icc +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationOptions.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationOptions.icc,v 1.3 2006/06/29 16:08:19 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONAPPLICATIONOPTIONS_HH diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationPhysicsSetup.hh b/examples/advanced/radiation_monitor/application/include/RadmonApplicationPhysicsSetup.hh index ae4d7cd63a..de0a1466b4 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationPhysicsSetup.hh +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationPhysicsSetup.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationPhysicsSetup.hh,v 1.3 2006/06/29 16:08:21 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Radmon application generators algoritms setup // diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationPhysicsSetup.icc b/examples/advanced/radiation_monitor/application/include/RadmonApplicationPhysicsSetup.icc index a9b9583069..1b6dd630ee 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationPhysicsSetup.icc +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationPhysicsSetup.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationPhysicsSetup.icc,v 1.3 2006/06/29 16:08:23 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONAPPLICATIONPHYSICSSETUP_HH diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationRunNumbering.hh b/examples/advanced/radiation_monitor/application/include/RadmonApplicationRunNumbering.hh index 9ef3151025..b875c793c5 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationRunNumbering.hh +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationRunNumbering.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationRunNumbering.hh,v 1.3 2006/06/29 16:08:25 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Dumps run id // diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationRunNumbering.icc b/examples/advanced/radiation_monitor/application/include/RadmonApplicationRunNumbering.icc index d9f2a656a9..fab9aa7230 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationRunNumbering.icc +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationRunNumbering.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationRunNumbering.icc,v 1.3 2006/06/29 16:08:27 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONAPPLICATIONRUNNUMBERING_HH diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplication.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplication.cc index a437f4ccc7..91825b46c5 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplication.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplication.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplication.cc,v 1.12.2.2 2006/06/29 16:08:29 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationAnalysisSetup.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationAnalysisSetup.cc index dea5600554..0825c329da 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationAnalysisSetup.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationAnalysisSetup.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationAnalysisSetup.cc,v 1.3.2.2 2006/06/29 16:08:31 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationDetectorSetup.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationDetectorSetup.cc index 8628e8f856..824c449c38 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationDetectorSetup.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationDetectorSetup.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationDetectorSetup.cc,v 1.1.2.2 2006/06/29 16:08:33 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationEventNumbering.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationEventNumbering.cc index 55d36c02b2..d48e00eab8 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationEventNumbering.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationEventNumbering.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationEventNumbering.cc,v 1.3 2006/06/29 16:08:35 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationEventTracks.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationEventTracks.cc index d7b0517fa1..ed60a6141d 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationEventTracks.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationEventTracks.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationEventTracks.cc,v 1.3 2006/06/29 16:08:37 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationGeneratorSetup.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationGeneratorSetup.cc index 6d45364d4f..b4f7749eb8 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationGeneratorSetup.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationGeneratorSetup.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationGeneratorSetup.cc,v 1.3 2006/06/29 16:08:39 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationMessenger.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationMessenger.cc index 3e133f6816..1053631cfb 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationMessenger.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationMessenger.cc,v 1.1.2.2 2006/06/29 16:08:41 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Messenger commands path diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationOptions.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationOptions.cc index 57ace3198f..2de9fde8be 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationOptions.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationOptions.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationOptions.cc,v 1.5 2006/06/29 16:08:43 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationPhysicsSetup.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationPhysicsSetup.cc index b0d17b279f..b6b3144c7b 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationPhysicsSetup.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationPhysicsSetup.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationPhysicsSetup.cc,v 1.4.2.2 2006/06/29 16:08:45 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationRunNumbering.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationRunNumbering.cc index b409399f60..92075b8721 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationRunNumbering.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationRunNumbering.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonApplicationRunNumbering.cc,v 1.3 2006/06/29 16:08:47 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeConstructor.hh index ca0dace708..1be3243dad 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeConstructor.hh,v 1.3 2006/06/29 16:08:49 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with carved borders // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeConstructor.icc index c242ca8fc9..5baae6be87 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeConstructor.icc,v 1.1.2.2 2006/06/29 16:08:51 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORCARVEDFLATVOLUMECONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh index ec3f1b488e..69a850d56e 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh,v 1.3 2006/06/29 16:08:53 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a carved box with a ground pad and marks and hole // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc index 4099e5f946..4f1d357926 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc,v 1.3 2006/06/29 16:08:55 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.hh index 056ccc146c..2a2d5de1e8 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.hh,v 1.3 2006/06/29 16:08:57 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a carved box with a ground pad and marks // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.icc index 3571503589..0e8a9b6c8f 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithGroundAndKeyMarksConstructor.icc,v 1.3 2006/06/29 16:08:59 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundConstructor.hh index 280bffe2f7..3b690b7f2a 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithGroundConstructor.hh,v 1.3 2006/06/29 16:09:01 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with carved borders // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundConstructor.icc index 026cbae4bf..16a31f57f2 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithGroundConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithGroundConstructor.icc,v 1.3 2006/06/29 16:09:03 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithHoleConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithHoleConstructor.hh index 08c37f84d2..422b132ff3 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithHoleConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithHoleConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithHoleConstructor.hh,v 1.3 2006/06/29 16:09:05 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with carved borders // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithHoleConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithHoleConstructor.icc index 1ad35a650e..1b83248b1a 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithHoleConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithHoleConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithHoleConstructor.icc,v 1.3 2006/06/29 16:09:07 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHHOLECONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithPinsConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithPinsConstructor.hh index 4e985ebfa4..2191659d83 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithPinsConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithPinsConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithPinsConstructor.hh,v 1.3 2006/06/29 16:09:09 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with carved borders and pins // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithPinsConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithPinsConstructor.icc index c44e4296c7..53736c5e44 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithPinsConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithPinsConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithPinsConstructor.icc,v 1.3 2006/06/29 16:09:11 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHPINSCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.hh index 57f243eff0..5aa131dd84 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.hh,v 1.3 2006/06/29 16:09:13 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with carved borders // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.icc index 116d34e301..4083485a9b 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithTracksAndHoleConstructor.icc,v 1.3 2006/06/29 16:09:15 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksConstructor.hh index 89d929233e..ca3da44382 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithTracksConstructor.hh,v 1.3 2006/06/29 16:09:17 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with carved borders and tracks // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksConstructor.icc index 3ae5c4ebd9..3c6c68d310 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeWithTracksConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorCarvedFlatVolumeWithTracksConstructor.icc,v 1.3 2006/06/29 16:09:19 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORCARVEDFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorConstruction.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorConstruction.hh index 190138fad5..c8ee4552f8 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorConstruction.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorConstruction.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorConstruction.hh,v 1.3.2.2 2006/06/29 16:09:21 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Implementation of the G4VUserDetectorConstruction // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorEnvironmentLayout.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorEnvironmentLayout.hh index c9a10a0436..23180b278e 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorEnvironmentLayout.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorEnvironmentLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorEnvironmentLayout.hh,v 1.5 2006/06/29 16:09:23 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Internal class to describe the environment layout // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorEnvironmentLayout.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorEnvironmentLayout.icc index 97e6e3077a..f5a578a7e0 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorEnvironmentLayout.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorEnvironmentLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorEnvironmentLayout.icc,v 1.3 2006/06/29 16:09:25 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORENVIRONMENTLAYOUT_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeComponent.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeComponent.hh index 82716dce54..f89daf496e 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeComponent.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeComponent.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeComponent.hh,v 1.4 2006/06/29 16:09:27 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Component to create a box // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeComponent.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeComponent.icc index 97c57f7b51..3f49e10cc6 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeComponent.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeComponent.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeComponent.icc,v 1.1.2.2 2006/06/29 16:09:29 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORFLATVOLUMECOMPONENT_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeConstructor.hh index 6e657a810b..72adf4b1c9 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeConstructor.hh,v 1.3 2006/06/29 16:09:31 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeConstructor.icc index cb87b43e9f..96cb8d864a 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeConstructor.icc,v 1.3 2006/06/29 16:09:33 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORFLATVOLUMECONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh index c6c960006c..75ffe68128 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.hh,v 1.3 2006/06/29 16:09:35 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with a ground pad, marks and hole // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc index 9fb8bfc370..cc95962ee0 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithGroundAndKeyMarksAndHoleConstructor.icc,v 1.3 2006/06/29 16:09:37 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSANDHOLECONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.hh index 956941aa44..2f255225df 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.hh,v 1.3 2006/06/29 16:09:39 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with a ground pad and marks // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.icc index 264431eb08..488f01afab 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithGroundAndKeyMarksConstructor.icc,v 1.3 2006/06/29 16:09:41 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORFLATVOLUMEWITHGROUNDANDKEYMARKSCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundConstructor.hh index b58d4fa6e5..bf4fcb6fd7 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithGroundConstructor.hh,v 1.3 2006/06/29 16:09:43 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with carved borders // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundConstructor.icc index 8d1d96f1ea..fff51916fb 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithGroundConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithGroundConstructor.icc,v 1.3 2006/06/29 16:09:45 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORFLATVOLUMEWITHGROUNDCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithHoleConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithHoleConstructor.hh index ffa6cd5bc3..2d644d67ef 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithHoleConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithHoleConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithHoleConstructor.hh,v 1.3 2006/06/29 16:09:47 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with a hole // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithHoleConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithHoleConstructor.icc index 52f713a424..6d303b7603 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithHoleConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithHoleConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithHoleConstructor.icc,v 1.3 2006/06/29 16:09:49 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORFLATVOLUMEWITHHOLECONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPadsConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPadsConstructor.hh index 96965fb707..adea9cdcf1 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPadsConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPadsConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithPadsConstructor.hh,v 1.3 2006/06/29 16:09:51 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with pins // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPadsConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPadsConstructor.icc index a1671635e1..b7381c0911 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPadsConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPadsConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithPadsConstructor.icc,v 1.3 2006/06/29 16:09:53 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORFLATVOLUMEWITHPADSCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPinsConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPinsConstructor.hh index 408c9638b4..0d17585319 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPinsConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPinsConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithPinsConstructor.hh,v 1.3 2006/06/29 16:09:55 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with pins // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPinsConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPinsConstructor.icc index 5ff9bc3df1..5cc61e645d 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPinsConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithPinsConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithPinsConstructor.icc,v 1.3 2006/06/29 16:09:57 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORFLATVOLUMEWITHPINSCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.hh index dcbe9c167d..01174f10f3 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.hh,v 1.3 2006/06/29 16:09:59 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with tracks and a hole // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.icc index 7ccafbb424..0ef4827cbf 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithTracksAndHoleConstructor.icc,v 1.3 2006/06/29 16:10:01 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORFLATVOLUMEWITHTRACKSANDHOLECONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksConstructor.hh index 29b057aba8..9351d7a536 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithTracksConstructor.hh,v 1.3 2006/06/29 16:10:03 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Builds a box with tracks // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksConstructor.icc index a149199eb6..77c9c80d58 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeWithTracksConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeWithTracksConstructor.icc,v 1.3 2006/06/29 16:10:05 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORFLATVOLUMEWITHTRACKSCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLabelledEntitiesConstructorsFactory.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLabelledEntitiesConstructorsFactory.hh index 263623e547..9900bbd79a 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLabelledEntitiesConstructorsFactory.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLabelledEntitiesConstructorsFactory.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLabelledEntitiesConstructorsFactory.hh,v 1.4 2006/06/29 16:10:07 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Concrete factory that constructs // RadmonVDetectorLabelledEntityConstructor objects diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLabelledEntitiesConstructorsFactory.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLabelledEntitiesConstructorsFactory.icc index adfa608aa3..2016f97f7c 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLabelledEntitiesConstructorsFactory.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLabelledEntitiesConstructorsFactory.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLabelledEntitiesConstructorsFactory.icc,v 1.3 2006/06/29 16:10:09 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORLABELLEDENTITIESCONSTRUCTORSFACTORY_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLabelledEntitiesConstructorsMessenger.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLabelledEntitiesConstructorsMessenger.hh index 8fe912f0f9..ac82b8663a 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLabelledEntitiesConstructorsMessenger.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLabelledEntitiesConstructorsMessenger.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLabelledEntitiesConstructorsMessenger.hh,v 1.3 2006/06/29 16:10:11 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: UI commands for dumping the available constructors // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerLayout.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerLayout.hh index ec42146029..42af826385 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerLayout.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerLayout.hh,v 1.5 2006/06/29 16:10:13 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Internal class that describes layer informations // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerLayout.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerLayout.icc index fb9b169346..a8a8f99e23 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerLayout.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerLayout.icc,v 1.5 2006/06/29 16:10:15 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORLAYERLAYOUT_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItem.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItem.hh index 7b5c1ee04a..509104f3ff 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItem.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItem.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumeItem.hh,v 1.5 2006/06/29 16:10:17 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: solids, physical and logical volumes // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItem.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItem.icc index 9d32a03a1c..4cf15f00c2 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItem.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItem.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumeItem.icc,v 1.4 2006/06/29 16:10:19 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORLAYERVOLUMEITEM_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemIntersection.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemIntersection.hh index ba816d195f..a96dc7514c 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemIntersection.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemIntersection.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumeItemIntersection.hh,v 1.3 2006/06/29 16:10:21 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Intersection of two solids // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemIntersection.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemIntersection.icc index 79b2309439..8ae5f22a27 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemIntersection.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemIntersection.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumeItemIntersection.icc,v 1.3 2006/06/29 16:10:23 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORLAYERVOLUMEITEMINTERSECTION_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemSubtraction.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemSubtraction.hh index 2564cdf465..ca5f3bdee9 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemSubtraction.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemSubtraction.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumeItemSubtraction.hh,v 1.3 2006/06/29 16:10:25 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Subtraction of two solids // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemSubtraction.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemSubtraction.icc index b8441c0bee..91059351b8 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemSubtraction.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemSubtraction.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumeItemSubtraction.icc,v 1.3 2006/06/29 16:10:27 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORLAYERVOLUMEITEMSUBTRACTION_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemUnion.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemUnion.hh index fc465db7c8..c4120f863c 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemUnion.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemUnion.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumeItemUnion.hh,v 1.3 2006/06/29 16:10:29 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Union of two solids // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemUnion.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemUnion.icc index d9ea9985aa..6f9806181b 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemUnion.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumeItemUnion.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumeItemUnion.icc,v 1.3 2006/06/29 16:10:31 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORLAYERVOLUMEITEMUNION_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumesList.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumesList.hh index f09624c4c5..1599d40eef 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumesList.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumesList.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumesList.hh,v 1.4 2006/06/29 16:10:33 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Collection of solids, physical and logical volumes // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumesList.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumesList.icc index 2e9b0b0b7f..48c4121a60 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumesList.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayerVolumesList.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumesList.icc,v 1.3 2006/06/29 16:10:35 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORLAYERVOLUMESLIST_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayout.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayout.hh index df9a3afa9e..56c0324a3f 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayout.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayout.hh,v 1.4.2.2 2006/06/29 16:10:37 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Class to keep track of the configured detector layout // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMessenger.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMessenger.hh index a8a998113e..f4b2e000f8 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMessenger.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMessenger.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMessenger.hh,v 1.5 2006/06/29 16:10:39 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: UI commands for managing a layout // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerLayout.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerLayout.hh index 73c20db26f..43c3cacc14 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerLayout.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMultilayerLayout.hh,v 1.4 2006/06/29 16:10:41 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Internal class to manage multilayers // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerLayout.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerLayout.icc index 8e998b9271..50c7e945fa 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerLayout.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMultilayerLayout.icc,v 1.4 2006/06/29 16:10:43 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORMULTILAYERLAYOUT_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementLayout.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementLayout.hh index 7320a16657..da2c38bc1e 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementLayout.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMultilayerPlacementLayout.hh,v 1.4 2006/06/29 16:10:45 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Internal class to manage placed multilayer // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementLayout.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementLayout.icc index 8c47d182e1..f22ab7b579 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementLayout.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMultilayerPlacementLayout.icc,v 1.3 2006/06/29 16:10:47 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORMULTILAYERPLACEMENTLAYOUT_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementsLayoutCollection.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementsLayoutCollection.hh index 561287f6a8..53bd96223c 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementsLayoutCollection.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementsLayoutCollection.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMultilayerPlacementsLayoutCollection.hh,v 1.4 2006/06/29 16:10:49 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Internal class to collect placed multilayer // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementsLayoutCollection.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementsLayoutCollection.icc index 12b0f8265c..174dad8472 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementsLayoutCollection.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayerPlacementsLayoutCollection.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMultilayerPlacementsLayoutCollection.icc,v 1.3 2006/06/29 16:11:14 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORMULTILAYERPLACEMENTSLAYOUTCOLLECTION_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayersLayoutCollection.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayersLayoutCollection.hh index 3226865255..5fce451ff0 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayersLayoutCollection.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayersLayoutCollection.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMultilayersLayoutCollection.hh,v 1.4 2006/06/29 16:11:42 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Internal class to collect multilayers // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayersLayoutCollection.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayersLayoutCollection.icc index d0c2232f2e..d3f111c1db 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayersLayoutCollection.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorMultilayersLayoutCollection.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMultilayersLayoutCollection.icc,v 1.3 2006/06/29 16:12:06 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORMULTILAYERSLAYOUTCOLLECTION_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorPadsData.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorPadsData.hh index aac8ec72c7..6c439bcda8 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorPadsData.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorPadsData.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorPadsData.hh,v 1.3 2006/06/29 16:12:09 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Internal class for pads data managemenet // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorPadsData.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorPadsData.icc index 3a60579880..ad8c3cb71c 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorPadsData.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorPadsData.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorPadsData.icc,v 1.3 2006/06/29 16:12:11 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONDETECTORPADSDATA_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorCarvedVolumesDecorator.hh b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorCarvedVolumesDecorator.hh index b414cc80c7..59bcaf7ac2 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorCarvedVolumesDecorator.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorCarvedVolumesDecorator.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorCarvedVolumesDecorator.hh,v 1.5 2006/06/29 16:12:13 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Carves the borders of a component with the following method // - Constructor diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorCarvedVolumesDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorCarvedVolumesDecorator.icc index 99cdf99137..f4cc2a9528 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorCarvedVolumesDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorCarvedVolumesDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorCarvedVolumesDecorator.icc,v 1.2.2.2 2006/06/29 16:12:15 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONTDETECTORCARVEDVOLUMESDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorLayerConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorLayerConstructor.hh index 7b8cbaca5f..709ec404c2 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorLayerConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorLayerConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorLayerConstructor.hh,v 1.4 2006/06/29 16:12:17 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Generates a layer using a component with the following methods // - Constructor with RadmonVDetectorLabelledEntityConstructor or its base classes as argument diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorLayerConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorLayerConstructor.icc index a86d4310a3..e70e697c8a 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorLayerConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorLayerConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorLayerConstructor.icc,v 1.2.2.2 2006/06/29 16:12:20 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONTDETECTORLAYERCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithGroundDecorator.hh b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithGroundDecorator.hh index d7739189b8..14ff7216e9 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithGroundDecorator.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithGroundDecorator.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorVolumesWithGroundDecorator.hh,v 1.4 2006/06/29 16:12:28 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Decorates with a ground plane // - Constructor diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithGroundDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithGroundDecorator.icc index 8f3334d5fb..8c77c44dd1 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithGroundDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithGroundDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorVolumesWithGroundDecorator.icc,v 1.1.2.2 2006/06/29 16:12:30 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONTDETECTORVOLUMESWITHGROUNDDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithHoleDecorator.hh b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithHoleDecorator.hh index bca21681c2..24fe4ea2eb 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithHoleDecorator.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithHoleDecorator.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorVolumesWithHoleDecorator.hh,v 1.5 2006/06/29 16:12:32 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Decorates with a hole a component with the following method // - Constructor diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithHoleDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithHoleDecorator.icc index 97fad22c75..0ca008e45d 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithHoleDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithHoleDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorVolumesWithHoleDecorator.icc,v 1.4 2006/06/29 16:12:34 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONTDETECTORVOLUMESWITHHOLEDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithKeyMarksDecorator.hh b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithKeyMarksDecorator.hh index 9aa10b2aa5..16606c98ed 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithKeyMarksDecorator.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithKeyMarksDecorator.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorVolumesWithKeyMarksDecorator.hh,v 1.3 2006/06/29 16:12:36 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Decorates with key marks // - Constructor diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithKeyMarksDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithKeyMarksDecorator.icc index 8c8a9790ab..564118c507 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithKeyMarksDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithKeyMarksDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorVolumesWithKeyMarksDecorator.icc,v 1.1.2.2 2006/06/29 16:12:38 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONTDETECTORVOLUMESWITHKEYMARKSDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPadsDecorator.hh b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPadsDecorator.hh index 4141c149b6..bcc859d675 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPadsDecorator.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPadsDecorator.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorVolumesWithPadsDecorator.hh,v 1.3 2006/06/29 16:12:40 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Decorates with a ground plane // - Constructor diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPadsDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPadsDecorator.icc index 3dfbe6a6b5..2042a2209f 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPadsDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPadsDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorVolumesWithPadsDecorator.icc,v 1.1.2.2 2006/06/29 16:12:42 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONTDETECTORVOLUMESWITHPADSDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPinsDecorator.hh b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPinsDecorator.hh index 74aadff21a..6780aac062 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPinsDecorator.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPinsDecorator.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorVolumesWithPinsDecorator.hh,v 1.3 2006/06/29 16:12:44 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Decorates with the pin out // - Constructor diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPinsDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPinsDecorator.icc index 46e787ad4f..cfcc316756 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPinsDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPinsDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorVolumesWithPinsDecorator.icc,v 1.1.2.2 2006/06/29 16:12:46 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONTDETECTORVOLUMESWITHPINSDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithTracksDecorator.hh b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithTracksDecorator.hh index d4d68da18b..2c5dc94993 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithTracksDecorator.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithTracksDecorator.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorVolumesWithTracksDecorator.hh,v 1.3 2006/06/29 16:12:48 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Decorates with tracks according to the pin-out // - Constructor diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithTracksDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithTracksDecorator.icc index 4a804d76c5..b2011d9dd1 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithTracksDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithTracksDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTDetectorVolumesWithTracksDecorator.icc,v 1.1.2.2 2006/06/29 16:12:50 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONTDETECTORVOLUMESWITHTRACKSDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntitiesConstructorsFactory.hh b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntitiesConstructorsFactory.hh index 802bf67889..c3e8b3e2ea 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntitiesConstructorsFactory.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntitiesConstructorsFactory.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDetectorEntitiesConstructorsFactory.hh,v 1.4 2006/06/29 16:12:52 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class of a factory of detector-entity constructor // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntitiesConstructorsFactory.icc b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntitiesConstructorsFactory.icc index 31758ad1f2..f5c3c86be6 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntitiesConstructorsFactory.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntitiesConstructorsFactory.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDetectorEntitiesConstructorsFactory.icc,v 1.3 2006/06/29 16:13:10 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVDETECTORENTITIESCONSTRUCTORSFACTORY_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntityConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntityConstructor.hh index 168388fa87..51d1acada9 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntityConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntityConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDetectorEntityConstructor.hh,v 1.4 2006/06/29 16:13:12 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class of a detector-entity constructor // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntityConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntityConstructor.icc index d476cc75e7..2cc1d0a595 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntityConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorEntityConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDetectorEntityConstructor.icc,v 1.3 2006/06/29 16:13:14 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVDETECTORENTITYCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLabelledEntityConstructor.hh b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLabelledEntityConstructor.hh index f752ba433e..751d618a42 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLabelledEntityConstructor.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLabelledEntityConstructor.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDetectorLabelledEntityConstructor.hh,v 1.8 2006/06/29 16:13:16 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class of a detector-entity constructor with label // and attributes diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLabelledEntityConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLabelledEntityConstructor.icc index 8a8abfb97b..e35cebca45 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLabelledEntityConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLabelledEntityConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDetectorLabelledEntityConstructor.icc,v 1.3 2006/06/29 16:13:18 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVDETECTORLABELLEDENTITYCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayerVolumeItemOperation.hh b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayerVolumeItemOperation.hh index f99c0c58a0..5ce0360661 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayerVolumeItemOperation.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayerVolumeItemOperation.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDetectorLayerVolumeItemOperation.hh,v 1.3 2006/06/29 16:13:20 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Operates on solids // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayerVolumeItemOperation.icc b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayerVolumeItemOperation.icc index b498aed599..b7cfc454c7 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayerVolumeItemOperation.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayerVolumeItemOperation.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDetectorLayerVolumeItemOperation.icc,v 1.3 2006/06/29 16:13:22 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVDETECTORLAYERVOLUMEITEMOPERATION_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayout.hh b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayout.hh index 8d9cc0ba6d..29e9b1ae30 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayout.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDetectorLayout.hh,v 1.7 2006/06/29 16:13:24 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class to keep track of the configured detector // layout diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayout.icc b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayout.icc index 69c30607b0..24d3042629 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayout.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonVDetectorLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDetectorLayout.icc,v 1.3 2006/06/29 16:13:26 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVDETECTORLAYOUT_HH diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorConstruction.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorConstruction.cc index c4f62a61c9..36cecdbeef 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorConstruction.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorConstruction.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorConstruction.cc,v 1.4.2.2 2006/06/29 16:13:28 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorEnvironmentLayout.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorEnvironmentLayout.cc index e89cb90b7a..469070dc77 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorEnvironmentLayout.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorEnvironmentLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorEnvironmentLayout.cc,v 1.5 2006/06/29 16:13:30 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorFlatVolumeComponent.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorFlatVolumeComponent.cc index b0d3e7cbb0..dd4674577b 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorFlatVolumeComponent.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorFlatVolumeComponent.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorFlatVolumeComponent.cc,v 1.2.2.2 2006/06/29 16:13:32 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLabelledEntitiesConstructorsFactory.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLabelledEntitiesConstructorsFactory.cc index 77b3c8469a..b6b8bc4360 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLabelledEntitiesConstructorsFactory.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLabelledEntitiesConstructorsFactory.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLabelledEntitiesConstructorsFactory.cc,v 1.2.2.2 2006/06/29 16:13:34 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLabelledEntitiesConstructorsMessenger.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLabelledEntitiesConstructorsMessenger.cc index 149cdedba0..7d240f1f09 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLabelledEntitiesConstructorsMessenger.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLabelledEntitiesConstructorsMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLabelledEntitiesConstructorsMessenger.cc,v 1.5 2006/06/29 16:13:36 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Messenger commands path diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerLayout.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerLayout.cc index cb7422adfe..b51212e990 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerLayout.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerLayout.cc,v 1.5 2006/06/29 16:13:39 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItem.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItem.cc index 751fa93321..9a33ade020 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItem.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItem.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumeItem.cc,v 1.2.2.2 2006/06/29 16:13:44 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItemIntersection.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItemIntersection.cc index 5c992d6f0c..4b74981e49 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItemIntersection.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItemIntersection.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumeItemIntersection.cc,v 1.3 2006/06/29 16:13:49 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItemSubtraction.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItemSubtraction.cc index 0f0332a124..0affc15235 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItemSubtraction.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItemSubtraction.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumeItemSubtraction.cc,v 1.3 2006/06/29 16:13:53 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItemUnion.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItemUnion.cc index dc38a7313f..e1652b11b6 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItemUnion.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItemUnion.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumeItemUnion.cc,v 1.3 2006/06/29 16:13:55 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumesList.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumesList.cc index 0a61f35a5d..eb88b8965a 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumesList.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumesList.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayerVolumesList.cc,v 1.3 2006/06/29 16:13:57 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayout.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayout.cc index d3617f16ab..98c2c55fb3 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayout.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorLayout.cc,v 1.3.2.2 2006/06/29 16:13:59 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMessenger.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMessenger.cc index df057f84ef..3d92d50aef 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMessenger.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMessenger.cc,v 1.3.2.2 2006/06/29 16:14:01 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Messenger commands path diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerLayout.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerLayout.cc index 9684be77d1..5f5d4c3786 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerLayout.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMultilayerLayout.cc,v 1.6.2.2 2006/06/29 16:14:03 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerPlacementLayout.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerPlacementLayout.cc index d788a510f4..18cb0d7b2a 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerPlacementLayout.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerPlacementLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMultilayerPlacementLayout.cc,v 1.5 2006/06/29 16:14:05 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerPlacementsLayoutCollection.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerPlacementsLayoutCollection.cc index 35693c29fd..4f5fb9d16a 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerPlacementsLayoutCollection.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerPlacementsLayoutCollection.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMultilayerPlacementsLayoutCollection.cc,v 1.4 2006/06/29 16:14:07 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayersLayoutCollection.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayersLayoutCollection.cc index 9a7180b48b..46bd55c449 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayersLayoutCollection.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayersLayoutCollection.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorMultilayersLayoutCollection.cc,v 1.5 2006/06/29 16:14:09 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorPadsData.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorPadsData.cc index 5a929773ae..1f6d82bfc8 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorPadsData.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorPadsData.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDetectorPadsData.cc,v 1.3 2006/06/29 16:14:11 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonVDetectorLabelledEntityConstructor.cc b/examples/advanced/radiation_monitor/detector/src/RadmonVDetectorLabelledEntityConstructor.cc index 4c8b011312..015a1dc883 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonVDetectorLabelledEntityConstructor.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonVDetectorLabelledEntityConstructor.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDetectorLabelledEntityConstructor.cc,v 1.7 2006/06/29 16:14:13 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonVDetectorLayerVolumeItemOperation.cc b/examples/advanced/radiation_monitor/detector/src/RadmonVDetectorLayerVolumeItemOperation.cc index b4863fef55..ae3e45156e 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonVDetectorLayerVolumeItemOperation.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonVDetectorLayerVolumeItemOperation.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVDetectorLayerVolumeItemOperation.cc,v 1.3 2006/06/29 16:14:15 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonDumpStyle.hh b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonDumpStyle.hh index 84989ff34f..f4a3f5d2b7 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonDumpStyle.hh +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonDumpStyle.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonDumpStyle.hh,v 1.3 2006/06/29 16:14:17 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Define dump widths // diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonLayoutEntityWithAttributes.hh b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonLayoutEntityWithAttributes.hh index 665134b4e5..955894cb04 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonLayoutEntityWithAttributes.hh +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonLayoutEntityWithAttributes.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonLayoutEntityWithAttributes.hh,v 1.3.2.2 2006/06/29 16:14:19 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Provides attributes to other detector classes // diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonLayoutEntityWithAttributes.icc b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonLayoutEntityWithAttributes.icc index be757d537e..e1870e30ff 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonLayoutEntityWithAttributes.icc +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonLayoutEntityWithAttributes.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonLayoutEntityWithAttributes.icc,v 1.3 2006/06/29 16:14:21 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONLAYOUTENTITYWITHATTRIBUTES_HH diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonMessenger.hh b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonMessenger.hh index d357887e69..39a98e09d3 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonMessenger.hh +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonMessenger.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonMessenger.hh,v 1.3 2006/06/29 16:14:23 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: UI commands for managing a layout // diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonMessenger.icc b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonMessenger.icc index e7f41a006d..55fb16330d 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonMessenger.icc +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonMessenger.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonMessenger.icc,v 1.3 2006/06/29 16:14:25 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONMESSENGER_HH diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonMessengersSupport.hh b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonMessengersSupport.hh index dcef20180e..b3369a9e9f 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonMessengersSupport.hh +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonMessengersSupport.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonMessengersSupport.hh,v 1.3 2006/06/29 16:14:27 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Define macros useful to maintain the code of messengers // diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTLabelledCollection.hh b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTLabelledCollection.hh index f4ea1005d4..d64acdf938 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTLabelledCollection.hh +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTLabelledCollection.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTLabelledCollection.hh,v 1.4 2006/06/29 16:14:29 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Container for objects with the following methods // - Constructor diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTLabelledCollection.icc b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTLabelledCollection.icc index d6add60923..407711bd7f 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTLabelledCollection.icc +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTLabelledCollection.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTLabelledCollection.icc,v 1.6 2006/06/29 16:14:31 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONTLABELLEDCOLLECTION_HH diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTokenizer.hh b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTokenizer.hh index 4eba0ceadc..2e69a74168 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTokenizer.hh +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTokenizer.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTokenizer.hh,v 1.3 2006/06/29 16:14:33 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Reads single tokens of a string // diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTokenizer.icc b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTokenizer.icc index d9b711784c..0e2669a214 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTokenizer.icc +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTokenizer.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTokenizer.icc,v 1.3 2006/06/29 16:14:35 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONTOKENIZER_HH diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutObserver.hh b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutObserver.hh index 7acebc1351..8eb1c4a03b 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutObserver.hh +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutObserver.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVLayoutObserver.hh,v 1.3 2006/06/29 16:14:37 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Observer class of the observer-subjectmodel for the detector // layout diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutObserver.icc b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutObserver.icc index bb0a2117b5..912b0f7808 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutObserver.icc +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutObserver.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVLayoutObserver.icc,v 1.3 2006/06/29 16:14:39 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVLAYOUTOBSERVER_HH diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutSubject.hh b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutSubject.hh index b48281d057..6590be588b 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutSubject.hh +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutSubject.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVLayoutSubject.hh,v 1.2.2.2 2006/06/29 16:14:41 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Subject class of the observer-subjectmodel for the detector // layout diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutSubject.icc b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutSubject.icc index 27d4b33daf..4431aadfe9 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutSubject.icc +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutSubject.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVLayoutSubject.icc,v 1.3 2006/06/29 16:14:43 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVLAYOUTSUBJECT_HH diff --git a/examples/advanced/radiation_monitor/generalPurpose/src/RadmonLayoutEntityWithAttributes.cc b/examples/advanced/radiation_monitor/generalPurpose/src/RadmonLayoutEntityWithAttributes.cc index 5c07e5cf52..60429eeadf 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/src/RadmonLayoutEntityWithAttributes.cc +++ b/examples/advanced/radiation_monitor/generalPurpose/src/RadmonLayoutEntityWithAttributes.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonLayoutEntityWithAttributes.cc,v 1.5 2006/06/29 16:14:45 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generalPurpose/src/RadmonMessenger.cc b/examples/advanced/radiation_monitor/generalPurpose/src/RadmonMessenger.cc index b6234d6d1e..f77edd57cb 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/src/RadmonMessenger.cc +++ b/examples/advanced/radiation_monitor/generalPurpose/src/RadmonMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonMessenger.cc,v 1.3 2006/06/29 16:14:47 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generalPurpose/src/RadmonTokenizer.cc b/examples/advanced/radiation_monitor/generalPurpose/src/RadmonTokenizer.cc index 64975dad3a..8452376a04 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/src/RadmonTokenizer.cc +++ b/examples/advanced/radiation_monitor/generalPurpose/src/RadmonTokenizer.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonTokenizer.cc,v 1.3 2006/06/29 16:14:49 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generalPurpose/src/RadmonVLayoutSubject.cc b/examples/advanced/radiation_monitor/generalPurpose/src/RadmonVLayoutSubject.cc index 9afbf8d2cf..61bfd421de 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/src/RadmonVLayoutSubject.cc +++ b/examples/advanced/radiation_monitor/generalPurpose/src/RadmonVLayoutSubject.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVLayoutSubject.cc,v 1.3 2006/06/29 16:14:51 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedDirection.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedDirection.hh index edd79e3cf9..eef6321fe5 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedDirection.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedDirection.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorFixedDirection.hh,v 1.3 2006/06/29 16:14:53 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class for a primary generator // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedDirection.icc b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedDirection.icc index 744589b802..4554c6f39f 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedDirection.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedDirection.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorFixedDirection.icc,v 1.3 2006/06/29 16:14:55 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONGENERATORFIXEDDIRECTION_HH diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedEnergy.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedEnergy.hh index 15ce511288..b7091a39e6 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedEnergy.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedEnergy.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorFixedEnergy.hh,v 1.3 2006/06/29 16:14:57 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class for a primary generator // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedEnergy.icc b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedEnergy.icc index 0b24095632..166750d50e 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedEnergy.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedEnergy.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorFixedEnergy.icc,v 1.3 2006/06/29 16:14:59 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONGENERATORFIXEDENERGY_HH diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedParticle.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedParticle.hh index dfcacb9721..e43114062c 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedParticle.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedParticle.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorFixedParticle.hh,v 1.3 2006/06/29 16:15:01 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class for a primary generator // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedParticle.icc b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedParticle.icc index 76655e218f..222b804e3e 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedParticle.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedParticle.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorFixedParticle.icc,v 1.3 2006/06/29 16:15:03 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONGENERATORFIXEDPARTICLE_HH diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedPosition.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedPosition.hh index 8116e1b94f..75932a0799 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedPosition.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedPosition.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorFixedPosition.hh,v 1.3 2006/06/29 16:15:05 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class for a primary generator // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedPosition.icc b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedPosition.icc index 7f36f5836d..64f106abb7 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedPosition.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorFixedPosition.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorFixedPosition.icc,v 1.3 2006/06/29 16:15:07 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONGENERATORFIXEDPOSITION_HH diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorLayout.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorLayout.hh index af091cff15..eaf07d99c6 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorLayout.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorLayout.hh,v 1.3 2006/06/29 16:15:09 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Implementation of the particles source data // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorLayout.icc b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorLayout.icc index 5aef1a1a39..dee305614b 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorLayout.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorLayout.icc,v 1.3 2006/06/29 16:15:11 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONGENERATORLAYOUT_HH diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorMessenger.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorMessenger.hh index a0947a1f02..4c7e1b0c83 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorMessenger.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorMessenger.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorMessenger.hh,v 1.3 2006/06/29 16:15:13 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Messenger to change sources properties // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceAlgorithmLayout.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceAlgorithmLayout.hh index 21d13f4bc3..08d2408b60 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceAlgorithmLayout.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceAlgorithmLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorSourceAlgorithmLayout.hh,v 1.3 2006/06/29 16:15:15 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Container for the data of an algorithm of a particles source // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceAlgorithmLayout.icc b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceAlgorithmLayout.icc index 705bc5fe7d..34c5f73ea2 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceAlgorithmLayout.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceAlgorithmLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorSourceAlgorithmLayout.icc,v 1.3 2006/06/29 16:15:17 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONGENERATORSOURCEALGORITHMLAYOUT_HH diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceLayout.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceLayout.hh index df6755575d..44af4a3fdd 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceLayout.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorSourceLayout.hh,v 1.3 2006/06/29 16:15:19 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Container for the data of a particles source // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceLayout.icc b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceLayout.icc index baa2fbe594..b42653b314 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceLayout.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorSourceLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorSourceLayout.icc,v 1.3 2006/06/29 16:15:21 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONGENERATORSOURCELAYOUT_HH diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformPlane.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformPlane.hh index 6d7ac6c5db..758996db57 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformPlane.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformPlane.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorUniformPlane.hh,v 1.3 2006/06/29 16:15:23 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class for a primary generator // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformPlane.icc b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformPlane.icc index 69068c4714..91f1176661 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformPlane.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformPlane.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorUniformPlane.icc,v 1.3 2006/06/29 16:15:36 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONGENERATORUNIFORMPLANE_HH diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformSphere.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformSphere.hh index 42783db2b6..e50342ceb6 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformSphere.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformSphere.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorUniformSphere.hh,v 1.3 2006/06/29 16:15:40 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class for a primary generator // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformSphere.icc b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformSphere.icc index 33d123a309..10c68b1d03 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformSphere.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorUniformSphere.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorUniformSphere.icc,v 1.3 2006/06/29 16:15:42 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONGENERATORUNIFORMSPHERE_HH diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorsWithLabelFactory.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorsWithLabelFactory.hh index accb459b44..2d39650664 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorsWithLabelFactory.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorsWithLabelFactory.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorsWithLabelFactory.hh,v 1.3 2006/06/29 16:15:44 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Factory of primary generators with a label // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorsWithLabelMessenger.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorsWithLabelMessenger.hh index b29f5eb3f2..181c121f8a 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorsWithLabelMessenger.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGeneratorsWithLabelMessenger.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorsWithLabelMessenger.hh,v 1.3 2006/06/29 16:15:46 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: UI commands for dumping the available constructors // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonPrimaryGeneratorAction.hh b/examples/advanced/radiation_monitor/generator/include/RadmonPrimaryGeneratorAction.hh index 4a05d97d3a..9eddd69e36 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonPrimaryGeneratorAction.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonPrimaryGeneratorAction.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPrimaryGeneratorAction.hh,v 1.1.2.2 2006/06/29 16:15:48 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Primary particles generator user action // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonVGenerator.hh b/examples/advanced/radiation_monitor/generator/include/RadmonVGenerator.hh index 17b82a64c6..daee1f5880 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonVGenerator.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonVGenerator.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVGenerator.hh,v 1.3 2006/06/29 16:15:50 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class for a primary generator // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonVGenerator.icc b/examples/advanced/radiation_monitor/generator/include/RadmonVGenerator.icc index b02bc704ce..59bef2dcd6 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonVGenerator.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonVGenerator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVGenerator.icc,v 1.3 2006/06/29 16:15:52 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVGENERATOR_HH diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorLayout.hh b/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorLayout.hh index 0ae51975c0..c47d7c2275 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorLayout.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVGeneratorLayout.hh,v 1.3 2006/06/29 16:15:54 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class for storing primary generator data // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorLayout.icc b/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorLayout.icc index 2c79043ef9..6aa7be5113 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorLayout.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVGeneratorLayout.icc,v 1.3 2006/06/29 16:15:56 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVGENERATORLAYOUT_HH diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorWithLabel.hh b/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorWithLabel.hh index 89ae9da123..2f0e7a21f7 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorWithLabel.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorWithLabel.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVGeneratorWithLabel.hh,v 1.3 2006/06/29 16:15:58 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Primary generators with a label abstract class // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorWithLabel.icc b/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorWithLabel.icc index 2d6d2558d4..e87b863aa1 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorWithLabel.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorWithLabel.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVGeneratorWithLabel.icc,v 1.3 2006/06/29 16:16:00 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVGENERATORWITHLABEL_HH diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorsFactory.hh b/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorsFactory.hh index f379ce9672..b4fcfff319 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorsFactory.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorsFactory.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVGeneratorsFactory.hh,v 1.3 2006/06/29 16:16:02 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract factory for a primary generators // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorsFactory.icc b/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorsFactory.icc index f2925b70cc..24bbd3e83a 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorsFactory.icc +++ b/examples/advanced/radiation_monitor/generator/include/RadmonVGeneratorsFactory.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVGeneratorsFactory.icc,v 1.3 2006/06/29 16:16:04 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVGENERATORSFACTORY_HH diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedDirection.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedDirection.cc index d661e5fd7e..b6b61a5653 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedDirection.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedDirection.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorFixedDirection.cc,v 1.4 2006/06/29 16:16:16 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedEnergy.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedEnergy.cc index 0b3855c112..409e5f7e0f 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedEnergy.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedEnergy.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorFixedEnergy.cc,v 1.3 2006/06/29 16:16:19 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedParticle.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedParticle.cc index a260549431..c859ad418a 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedParticle.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedParticle.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorFixedParticle.cc,v 1.3 2006/06/29 16:16:21 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedPosition.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedPosition.cc index a157ad1d07..6eff7496af 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedPosition.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorFixedPosition.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorFixedPosition.cc,v 1.3 2006/06/29 16:16:23 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorLayout.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorLayout.cc index 7dc06b0c8b..9be33e3410 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorLayout.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorLayout.cc,v 1.1.2.2 2006/06/29 16:16:25 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorMessenger.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorMessenger.cc index 5fbb00fe70..29918ba056 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorMessenger.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorMessenger.cc,v 1.3 2006/06/29 16:16:27 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Messenger commands path diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorSourceAlgorithmLayout.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorSourceAlgorithmLayout.cc index 074eee9f40..3fb14bc630 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorSourceAlgorithmLayout.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorSourceAlgorithmLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorSourceAlgorithmLayout.cc,v 1.3 2006/06/29 16:16:29 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorSourceLayout.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorSourceLayout.cc index 4c5d31fc43..879d00d420 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorSourceLayout.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorSourceLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorSourceLayout.cc,v 1.3 2006/06/29 16:16:31 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorUniformPlane.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorUniformPlane.cc index b65db08c6b..7e18bdff8d 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorUniformPlane.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorUniformPlane.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorUniformPlane.cc,v 1.5 2006/06/29 16:16:33 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorUniformSphere.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorUniformSphere.cc index 8252bb607c..ad578a6086 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorUniformSphere.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorUniformSphere.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorUniformSphere.cc,v 1.4 2006/06/29 16:16:35 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorsWithLabelFactory.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorsWithLabelFactory.cc index e2257e5b5f..c497b90dec 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorsWithLabelFactory.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorsWithLabelFactory.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorsWithLabelFactory.cc,v 1.3 2006/06/29 16:16:37 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorsWithLabelMessenger.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorsWithLabelMessenger.cc index 9e6f080fa6..330f1dc7d3 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorsWithLabelMessenger.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorsWithLabelMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonGeneratorsWithLabelMessenger.cc,v 1.3 2006/06/29 16:16:39 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Messenger commands path diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonPrimaryGeneratorAction.cc b/examples/advanced/radiation_monitor/generator/src/RadmonPrimaryGeneratorAction.cc index a78a9070e8..022adc0656 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonPrimaryGeneratorAction.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonPrimaryGeneratorAction.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPrimaryGeneratorAction.cc,v 1.2.2.2 2006/06/29 16:16:41 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsDumpStyle.hh b/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsDumpStyle.hh index 6023b235ff..981965c90a 100644 --- a/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsDumpStyle.hh +++ b/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsDumpStyle.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonMaterialsDumpStyle.hh,v 1.3 2006/06/29 16:16:43 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Define dump widths // diff --git a/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsManager.hh b/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsManager.hh index 2d6ddb173f..3b0ee79e2c 100644 --- a/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsManager.hh +++ b/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsManager.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonMaterialsManager.hh,v 1.4 2006/06/29 16:16:45 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Singleton that manages the materials creation // diff --git a/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsManager.icc b/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsManager.icc index 3408a2270a..f90de86844 100644 --- a/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsManager.icc +++ b/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsManager.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonMaterialsManager.icc,v 1.3 2006/06/29 16:16:47 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONMATERIALSMANAGER_HH diff --git a/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsMessenger.hh b/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsMessenger.hh index 5ead3420c2..81e46f6714 100644 --- a/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsMessenger.hh +++ b/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsMessenger.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonMaterialsMessenger.hh,v 1.5 2006/06/29 16:16:49 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: UI commands for managing a layout // diff --git a/examples/advanced/radiation_monitor/materials/src/RadmonMaterialsManager.cc b/examples/advanced/radiation_monitor/materials/src/RadmonMaterialsManager.cc index e3045e31ef..1252640b7c 100644 --- a/examples/advanced/radiation_monitor/materials/src/RadmonMaterialsManager.cc +++ b/examples/advanced/radiation_monitor/materials/src/RadmonMaterialsManager.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonMaterialsManager.cc,v 1.4 2006/06/29 16:16:51 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/materials/src/RadmonMaterialsMessenger.cc b/examples/advanced/radiation_monitor/materials/src/RadmonMaterialsMessenger.cc index 8488dd9376..8412d0c675 100644 --- a/examples/advanced/radiation_monitor/materials/src/RadmonMaterialsMessenger.cc +++ b/examples/advanced/radiation_monitor/materials/src/RadmonMaterialsMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonMaterialsMessenger.cc,v 1.4 2006/06/29 16:16:53 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Messenger commands path diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsDecay.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsDecay.hh index bf9f6ed95b..32eb0bdaf7 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsDecay.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsDecay.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsDecay.hh,v 1.4 2006/06/29 16:16:55 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Decay processes // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsDecay.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsDecay.icc index f513382820..6033ec4b56 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsDecay.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsDecay.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsDecay.icc,v 1.3 2006/06/29 16:16:57 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSDECAY_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronEEDL.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronEEDL.hh index 8edea69511..da56c46201 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronEEDL.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronEEDL.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsElectronEEDL.hh,v 1.3 2006/06/29 16:16:59 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: EEDL processes for electrons // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronEEDL.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronEEDL.icc index 30dcb36665..dfc945c77e 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronEEDL.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronEEDL.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsElectronEEDL.icc,v 1.3 2006/06/29 16:17:01 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSELECTRONEEDL_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronStandard.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronStandard.hh index ba2232ad7b..1cb820a850 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronStandard.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronStandard.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsElectronStandard.hh,v 1.3 2006/06/29 16:17:03 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Standard processes for electrons // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronStandard.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronStandard.icc index b777962fab..91b24e17df 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronStandard.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsElectronStandard.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsElectronStandard.icc,v 1.3 2006/06/29 16:17:05 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSELECTRONSTANDARD_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBertini.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBertini.hh index d0db749577..543099d6f6 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBertini.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBertini.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsHadronsBertini.hh,v 1.3 2006/06/29 16:17:07 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Hadrons (except neutron) processes based on bertini cascade model // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBertini.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBertini.icc index cbb29dd455..e8bddb0ac6 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBertini.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBertini.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsHadronsBertini.icc,v 1.3 2006/06/29 16:17:09 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSHADRONSBERTINI_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBinary.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBinary.hh index ecca49d8f0..0cea090051 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBinary.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBinary.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsHadronsBinary.hh,v 1.3 2006/06/29 16:17:11 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Hadrons (except neutron) processes based on binary cascade model // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBinary.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBinary.icc index e3aca15dce..63739b1802 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBinary.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsHadronsBinary.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsHadronsBinary.icc,v 1.3 2006/06/29 16:17:13 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSHADRONSBINARY_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsICRUIonization.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsICRUIonization.hh index c23b00e8c4..7277076c1d 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsICRUIonization.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsICRUIonization.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsICRUIonization.hh,v 1.3 2006/06/29 16:17:15 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: ICRU ionization processe // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsICRUIonization.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsICRUIonization.icc index 02ed6aad8f..8f483c2351 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsICRUIonization.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsICRUIonization.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsICRUIonization.icc,v 1.3 2006/06/29 16:17:17 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSICRUIONIZATION_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfo.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfo.hh index ba690707c2..b63282fb69 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfo.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfo.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsInfo.hh,v 1.3 2006/06/29 16:17:19 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Provides informations about a process // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfo.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfo.icc index 76b942b7a7..0fab1f8d6c 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfo.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfo.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsInfo.icc,v 1.3 2006/06/29 16:17:21 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSINFO_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfoList.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfoList.hh index 8e968971ae..76c610f444 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfoList.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfoList.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsInfoList.hh,v 1.3 2006/06/29 16:17:23 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Provides informations about a process // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfoList.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfoList.icc index 57a2dc17a9..f95bc8aac8 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfoList.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsInfoList.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsInfoList.icc,v 1.3 2006/06/29 16:17:25 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSINFOLIST_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsLayout.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsLayout.hh index 39f2c9b66d..80314b0e0b 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsLayout.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsLayout.hh,v 1.4 2006/06/29 16:17:27 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class to keep track of the configured physics list // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsList.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsList.hh index 00ba6aa618..9457f5db18 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsList.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsList.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsList.hh,v 1.6 2006/06/29 16:17:29 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Implementation of the G4VUserPhysicsList // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsMessenger.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsMessenger.hh index fdec1fe673..33466ae2a2 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsMessenger.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsMessenger.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsMessenger.hh,v 1.3 2006/06/29 16:17:31 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: UI commands for managing a layout // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsMuonStandard.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsMuonStandard.hh index d8eb7cf549..b16cbb1bfe 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsMuonStandard.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsMuonStandard.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsMuonStandard.hh,v 1.3 2006/06/29 16:17:33 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: EEDL processes for electrons // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsMuonStandard.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsMuonStandard.icc index 01a39fb591..bbe3946a2a 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsMuonStandard.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsMuonStandard.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsMuonStandard.icc,v 1.3 2006/06/29 16:17:35 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSMUONSTANDARD_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBertini.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBertini.hh index 8cbf340b8b..8530f27284 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBertini.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBertini.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsNeutronBertini.hh,v 1.3 2006/06/29 16:17:37 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Neutron processes based on bertini cascade model // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBertini.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBertini.icc index 873252e2a2..a665e47bf9 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBertini.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBertini.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsNeutronBertini.icc,v 1.3 2006/06/29 16:17:39 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSNEUTRONBERTINI_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBinary.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBinary.hh index 50aa2ba5c0..58e9c9afe8 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBinary.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBinary.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsNeutronBinary.hh,v 1.4 2006/06/29 16:17:41 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Neutron processes based on binary cascade model // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBinary.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBinary.icc index dba5f3718b..4e2248cf0c 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBinary.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNeutronBinary.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsNeutronBinary.icc,v 1.3 2006/06/29 16:17:43 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSNEUTRONBINARY_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNuclear.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNuclear.hh index 744884a46c..e1656454d5 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNuclear.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNuclear.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsNuclear.hh,v 1.3 2006/06/29 16:17:45 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: EEDL processes for electrons // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNuclear.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNuclear.icc index 97f7376ebf..0995f47bae 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNuclear.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsNuclear.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsNuclear.icc,v 1.3 2006/06/29 16:17:47 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSNUCLEAR_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonEPDL.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonEPDL.hh index b7d7b0d8c7..406af81e56 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonEPDL.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonEPDL.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsPhotonEPDL.hh,v 1.3 2006/06/29 16:17:49 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: EEDL processes for electrons // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonEPDL.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonEPDL.icc index 60aea4e775..1152cdda7f 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonEPDL.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonEPDL.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsPhotonEPDL.icc,v 1.3 2006/06/29 16:17:51 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSPHOTONEPDL_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonStandard.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonStandard.hh index aa32f12318..bd346c01ea 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonStandard.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonStandard.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsPhotonStandard.hh,v 1.3 2006/06/29 16:17:53 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: EEDL processes for electrons // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonStandard.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonStandard.icc index d4abe6299f..c9077ae979 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonStandard.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPhotonStandard.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsPhotonStandard.icc,v 1.3 2006/06/29 16:17:55 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSPHOTONSTANDARD_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPositronStandard.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPositronStandard.hh index ec2c61aa02..1514525a66 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPositronStandard.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPositronStandard.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsPositronStandard.hh,v 1.3 2006/06/29 16:17:57 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Standard processes for electrons // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPositronStandard.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPositronStandard.icc index 616fe00980..fd9a0afaed 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPositronStandard.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsPositronStandard.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsPositronStandard.icc,v 1.3 2006/06/29 16:17:59 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSPOSITRONSTANDARD_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsProductionCuts.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsProductionCuts.hh index 5e4b091d4b..1601e531f7 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsProductionCuts.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsProductionCuts.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsProductionCuts.hh,v 1.3 2006/06/29 16:18:01 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Particles production cuts // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsProductionCuts.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsProductionCuts.icc index 96b1a064d0..13c7f2f081 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsProductionCuts.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsProductionCuts.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsProductionCuts.icc,v 1.3 2006/06/29 16:18:03 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSPRODUCTIONCUTS_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsSteppingAction.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsSteppingAction.hh index 4d50d17e93..d2e112ca26 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsSteppingAction.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsSteppingAction.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsSteppingAction.hh,v 1.3 2006/06/29 16:18:05 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Observer class for the Stepping Action // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsSteppingAction.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsSteppingAction.icc index 1b5d65b512..31a29bc55f 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsSteppingAction.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsSteppingAction.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsSteppingAction.icc,v 1.3 2006/06/29 16:18:07 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSSTEPPINGACTION_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsTauStandard.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsTauStandard.hh index 6c699062cb..52f3d6a426 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsTauStandard.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsTauStandard.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsTauStandard.hh,v 1.3 2006/06/29 16:18:09 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: EEDL processes for electrons // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsTauStandard.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsTauStandard.icc index b456b560f2..5b3cbd14b5 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsTauStandard.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsTauStandard.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsTauStandard.icc,v 1.3 2006/06/29 16:18:11 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONPHYSICSTAUSTANDARD_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListLayout.hh b/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListLayout.hh index 3a0a5a7a3e..17f5242e11 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListLayout.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSubPhysicsListLayout.hh,v 1.5 2006/06/29 16:18:13 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Internal class that describes sub physics list informations // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListLayout.icc b/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListLayout.icc index 697b4c4d2b..00fe1cf192 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListLayout.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSubPhysicsListLayout.icc,v 1.5 2006/06/29 16:18:15 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONSUBPHYSICSLISTLAYOUT_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListWithLabelFactory.hh b/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListWithLabelFactory.hh index a8ed458570..b7eeea1742 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListWithLabelFactory.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListWithLabelFactory.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSubPhysicsListWithLabelFactory.hh,v 1.3 2006/06/29 16:18:17 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Concrete factory that constructs // RadmonSubPhysiscsListWithLabel objects diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListWithLabelFactory.icc b/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListWithLabelFactory.icc index 9c0727914b..545aa546bc 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListWithLabelFactory.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListWithLabelFactory.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSubPhysicsListWithLabelFactory.icc,v 1.3 2006/06/29 16:18:19 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONSUBPHYSICSLISTWITHLABELFACTORY_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListWithLabelMessenger.hh b/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListWithLabelMessenger.hh index cb6b8a2427..df8ce4ecb1 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListWithLabelMessenger.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonSubPhysicsListWithLabelMessenger.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSubPhysicsListWithLabelMessenger.hh,v 1.4 2006/06/29 16:18:21 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: UI commands for dumping the available constructors // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonVPhysicsLayout.hh b/examples/advanced/radiation_monitor/physics/include/RadmonVPhysicsLayout.hh index aa6e56d29b..9e9601f85d 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonVPhysicsLayout.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonVPhysicsLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVPhysicsLayout.hh,v 1.4 2006/06/29 16:18:23 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class to keep track of the configured physics list // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonVPhysicsLayout.icc b/examples/advanced/radiation_monitor/physics/include/RadmonVPhysicsLayout.icc index ba820328cd..1e6f928b5d 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonVPhysicsLayout.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonVPhysicsLayout.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVPhysicsLayout.icc,v 1.3 2006/06/29 16:18:25 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVPHYSICSLAYOUT_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsList.hh b/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsList.hh index d4772ec5a8..44ade934ad 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsList.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsList.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVSubPhysicsList.hh,v 1.4 2006/06/29 16:18:27 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class of a physics list piece // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsList.icc b/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsList.icc index ccf0501a00..5a345255cb 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsList.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsList.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVSubPhysicsList.icc,v 1.3 2006/06/29 16:18:29 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVSUBPHYSICSLIST_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListFactory.hh b/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListFactory.hh index 8d23d434fe..6f86f2f9da 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListFactory.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListFactory.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVSubPhysicsListFactory.hh,v 1.4 2006/06/29 16:18:31 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class of a factory of sub physics lists // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListFactory.icc b/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListFactory.icc index f332ff24d2..307ed9f394 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListFactory.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListFactory.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVSubPhysicsListFactory.icc,v 1.3 2006/06/29 16:18:33 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVSUBPHYSICSLISTFACTORY_HH diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListWithLabel.hh b/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListWithLabel.hh index 1808c3f043..57d573ad33 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListWithLabel.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListWithLabel.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVSubPhysicsListWithLabel.hh,v 1.4 2006/06/29 16:18:35 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Abstract class of a physics list piece with label // and attributes diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListWithLabel.icc b/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListWithLabel.icc index c72b04e62f..fb0aa330d6 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListWithLabel.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonVSubPhysicsListWithLabel.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonVSubPhysicsListWithLabel.icc,v 1.4 2006/06/29 16:18:37 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONVSUBPHYSICSLISTWITHLABEL_HH diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsDecay.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsDecay.cc index d65aae27c8..2578bed038 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsDecay.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsDecay.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsDecay.cc,v 1.6 2006/06/29 16:18:39 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsDecay.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsElectronEEDL.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsElectronEEDL.cc index 813894295d..346aaefc5e 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsElectronEEDL.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsElectronEEDL.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsElectronEEDL.cc,v 1.4 2006/06/29 16:18:41 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsElectronEEDL.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsElectronStandard.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsElectronStandard.cc index ad77a5348e..6affaac458 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsElectronStandard.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsElectronStandard.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsElectronStandard.cc,v 1.4 2006/06/29 16:18:43 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsElectronStandard.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsHadronsBertini.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsHadronsBertini.cc index 1923d4b2dd..5193a149f2 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsHadronsBertini.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsHadronsBertini.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsHadronsBertini.cc,v 1.4 2006/06/29 16:18:45 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsHadronsBertini.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsHadronsBinary.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsHadronsBinary.cc index cb54e0c851..5330665e36 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsHadronsBinary.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsHadronsBinary.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsHadronsBinary.cc,v 1.3 2006/06/29 16:18:47 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsHadronsBinary.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsICRUIonization.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsICRUIonization.cc index 14943db99a..6cbd4785c9 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsICRUIonization.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsICRUIonization.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsICRUIonization.cc,v 1.5 2006/06/29 16:18:49 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsICRUIonization.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsInfo.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsInfo.cc index 927d9ced23..1bf87f3c81 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsInfo.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsInfo.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsInfo.cc,v 1.3 2006/06/29 16:18:51 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsInfo.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsInfoList.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsInfoList.cc index 27e5d4f1ef..5dbf44572c 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsInfoList.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsInfoList.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsInfoList.cc,v 1.3 2006/06/29 16:18:53 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsInfoList.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsLayout.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsLayout.cc index 83635975da..50e5e6af81 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsLayout.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsLayout.cc,v 1.4 2006/06/29 16:18:55 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsList.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsList.cc index 8c116d2ddf..230e671f92 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsList.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsList.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsList.cc,v 1.6 2006/06/29 16:18:57 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsMessenger.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsMessenger.cc index b7050dd435..9fbe88086b 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsMessenger.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsMessenger.cc,v 1.4 2006/06/29 16:18:59 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Messenger commands path diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsMuonStandard.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsMuonStandard.cc index 9198ac5690..d7e9a65ad1 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsMuonStandard.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsMuonStandard.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsMuonStandard.cc,v 1.4 2006/06/29 16:19:01 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsMuonStandard.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBertini.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBertini.cc index ca257ac348..90188b4c35 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBertini.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBertini.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsNeutronBertini.cc,v 1.1.2.2 2006/06/29 16:19:14 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsNeutronBertini.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBinary.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBinary.cc index 73d2f3ae5e..2621a961d3 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBinary.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBinary.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsNeutronBinary.cc,v 1.2.2.2 2006/06/29 16:19:29 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsNeutronBinary.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNuclear.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNuclear.cc index d6b02c9b61..a0a9a4ad95 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNuclear.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNuclear.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsNuclear.cc,v 1.3 2006/06/29 16:19:33 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsNuclear.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsPhotonEPDL.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsPhotonEPDL.cc index 2ce7d0c8d1..b0d52e34de 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsPhotonEPDL.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsPhotonEPDL.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsPhotonEPDL.cc,v 1.3 2006/06/29 16:19:46 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsPhotonEPDL.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsPhotonStandard.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsPhotonStandard.cc index dc6df96733..752478a8a2 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsPhotonStandard.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsPhotonStandard.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsPhotonStandard.cc,v 1.3 2006/06/29 16:19:48 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsPhotonStandard.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsPositronStandard.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsPositronStandard.cc index a31583f1f1..8bb5d4ef5c 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsPositronStandard.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsPositronStandard.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsPositronStandard.cc,v 1.4 2006/06/29 16:19:50 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsPositronStandard.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsProductionCuts.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsProductionCuts.cc index 468350cbe6..fa68e9d056 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsProductionCuts.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsProductionCuts.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsProductionCuts.cc,v 1.3 2006/06/29 16:19:52 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsProductionCuts.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsSteppingAction.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsSteppingAction.cc index 4c570ca308..d1b7154cb3 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsSteppingAction.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsSteppingAction.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsSteppingAction.cc,v 1.3 2006/06/29 16:19:54 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsTauStandard.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsTauStandard.cc index 8806c40a5a..4e95e7df90 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsTauStandard.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsTauStandard.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonPhysicsTauStandard.cc,v 1.3 2006/06/29 16:19:56 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #include "RadmonPhysicsTauStandard.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonSubPhysicsListLayout.cc b/examples/advanced/radiation_monitor/physics/src/RadmonSubPhysicsListLayout.cc index 83ad09af46..c607f37e6f 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonSubPhysicsListLayout.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonSubPhysicsListLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSubPhysicsListLayout.cc,v 1.5 2006/06/29 16:19:59 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonSubPhysicsListWithLabelFactory.cc b/examples/advanced/radiation_monitor/physics/src/RadmonSubPhysicsListWithLabelFactory.cc index 79340a16ba..aab7cfe47e 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonSubPhysicsListWithLabelFactory.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonSubPhysicsListWithLabelFactory.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSubPhysicsListWithLabelFactory.cc,v 1.3 2006/06/29 16:20:10 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonSubPhysicsListWithLabelMessenger.cc b/examples/advanced/radiation_monitor/physics/src/RadmonSubPhysicsListWithLabelMessenger.cc index 159d9c5790..14e7ac2d96 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonSubPhysicsListWithLabelMessenger.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonSubPhysicsListWithLabelMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSubPhysicsListWithLabelMessenger.cc,v 1.5 2006/06/29 16:20:12 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Messenger commands path diff --git a/examples/advanced/radiation_monitor/sensitivity/include/RadmonHit.hh b/examples/advanced/radiation_monitor/sensitivity/include/RadmonHit.hh index 03940ab74f..5a64cfae14 100644 --- a/examples/advanced/radiation_monitor/sensitivity/include/RadmonHit.hh +++ b/examples/advanced/radiation_monitor/sensitivity/include/RadmonHit.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonHit.hh,v 1.3 2006/06/29 16:20:14 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Radmon hit // diff --git a/examples/advanced/radiation_monitor/sensitivity/include/RadmonHit.icc b/examples/advanced/radiation_monitor/sensitivity/include/RadmonHit.icc index 25ff841395..682b61e750 100644 --- a/examples/advanced/radiation_monitor/sensitivity/include/RadmonHit.icc +++ b/examples/advanced/radiation_monitor/sensitivity/include/RadmonHit.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonHit.icc,v 1.3 2006/06/29 16:20:16 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONHIT_HH diff --git a/examples/advanced/radiation_monitor/sensitivity/include/RadmonHitsManager.hh b/examples/advanced/radiation_monitor/sensitivity/include/RadmonHitsManager.hh index 4b1bb2e3f5..998b920a12 100644 --- a/examples/advanced/radiation_monitor/sensitivity/include/RadmonHitsManager.hh +++ b/examples/advanced/radiation_monitor/sensitivity/include/RadmonHitsManager.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonHitsManager.hh,v 1.3 2006/06/29 16:20:18 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Global features for hits // diff --git a/examples/advanced/radiation_monitor/sensitivity/include/RadmonHitsManager.icc b/examples/advanced/radiation_monitor/sensitivity/include/RadmonHitsManager.icc index 706185dbf1..6a3668decb 100644 --- a/examples/advanced/radiation_monitor/sensitivity/include/RadmonHitsManager.icc +++ b/examples/advanced/radiation_monitor/sensitivity/include/RadmonHitsManager.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonHitsManager.icc,v 1.3 2006/06/29 16:20:20 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONHITSMANAGER_HH diff --git a/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetector.hh b/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetector.hh index a7fbd292a2..51458c88e4 100644 --- a/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetector.hh +++ b/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetector.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSensitiveDetector.hh,v 1.4 2006/06/29 16:20:22 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Radmon sensitive detector class // diff --git a/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetector.icc b/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetector.icc index 0dc753fc62..7368a60761 100644 --- a/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetector.icc +++ b/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetector.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSensitiveDetector.icc,v 1.3 2006/06/29 16:20:24 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONSENSITIVEDETECTOR_HH diff --git a/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetectorDataStorer.hh b/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetectorDataStorer.hh index 6d6c9921f6..069c9ca0a0 100644 --- a/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetectorDataStorer.hh +++ b/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetectorDataStorer.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSensitiveDetectorDataStorer.hh,v 1.3 2006/06/29 16:20:26 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Stores data step into a radmon hit // diff --git a/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetectorDataStorer.icc b/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetectorDataStorer.icc index 24350a23df..590b6ac78e 100644 --- a/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetectorDataStorer.icc +++ b/examples/advanced/radiation_monitor/sensitivity/include/RadmonSensitiveDetectorDataStorer.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSensitiveDetectorDataStorer.icc,v 1.3 2006/06/29 16:20:28 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONSENSITIVEDETECTORDATASTORER_HH diff --git a/examples/advanced/radiation_monitor/sensitivity/src/RadmonHit.cc b/examples/advanced/radiation_monitor/sensitivity/src/RadmonHit.cc index 65bdccece3..af67e836cf 100644 --- a/examples/advanced/radiation_monitor/sensitivity/src/RadmonHit.cc +++ b/examples/advanced/radiation_monitor/sensitivity/src/RadmonHit.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonHit.cc,v 1.3 2006/06/29 16:20:30 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/sensitivity/src/RadmonHitsManager.cc b/examples/advanced/radiation_monitor/sensitivity/src/RadmonHitsManager.cc index e439e71b4b..ac82aaddca 100644 --- a/examples/advanced/radiation_monitor/sensitivity/src/RadmonHitsManager.cc +++ b/examples/advanced/radiation_monitor/sensitivity/src/RadmonHitsManager.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonHitsManager.cc,v 1.3 2006/06/29 16:20:32 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/sensitivity/src/RadmonSensitiveDetector.cc b/examples/advanced/radiation_monitor/sensitivity/src/RadmonSensitiveDetector.cc index 9a954d014f..34af8dd671 100644 --- a/examples/advanced/radiation_monitor/sensitivity/src/RadmonSensitiveDetector.cc +++ b/examples/advanced/radiation_monitor/sensitivity/src/RadmonSensitiveDetector.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSensitiveDetector.cc,v 1.2.2.2 2006/06/29 16:20:34 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/userActions/include/RadmonEventAction.hh b/examples/advanced/radiation_monitor/userActions/include/RadmonEventAction.hh index c504b9de00..ecd7af58d5 100644 --- a/examples/advanced/radiation_monitor/userActions/include/RadmonEventAction.hh +++ b/examples/advanced/radiation_monitor/userActions/include/RadmonEventAction.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonEventAction.hh,v 1.3 2006/06/29 16:20:36 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Radmon event action class // diff --git a/examples/advanced/radiation_monitor/userActions/include/RadmonEventAction.icc b/examples/advanced/radiation_monitor/userActions/include/RadmonEventAction.icc index 5383168c23..61e4b080fd 100644 --- a/examples/advanced/radiation_monitor/userActions/include/RadmonEventAction.icc +++ b/examples/advanced/radiation_monitor/userActions/include/RadmonEventAction.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonEventAction.icc,v 1.3 2006/06/29 16:20:38 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONEVENTACTION_HH diff --git a/examples/advanced/radiation_monitor/userActions/include/RadmonEventActionObserver.hh b/examples/advanced/radiation_monitor/userActions/include/RadmonEventActionObserver.hh index 62b98ba843..ef31355ce5 100644 --- a/examples/advanced/radiation_monitor/userActions/include/RadmonEventActionObserver.hh +++ b/examples/advanced/radiation_monitor/userActions/include/RadmonEventActionObserver.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonEventActionObserver.hh,v 1.3 2006/06/29 16:20:40 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Observer class for the Event Action // diff --git a/examples/advanced/radiation_monitor/userActions/include/RadmonEventActionObserver.icc b/examples/advanced/radiation_monitor/userActions/include/RadmonEventActionObserver.icc index cd7aa3de2f..5b50b4f3f9 100644 --- a/examples/advanced/radiation_monitor/userActions/include/RadmonEventActionObserver.icc +++ b/examples/advanced/radiation_monitor/userActions/include/RadmonEventActionObserver.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonEventActionObserver.icc,v 1.3 2006/06/29 16:20:42 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONEVENTACTIONOBSERVER_HH diff --git a/examples/advanced/radiation_monitor/userActions/include/RadmonRunAction.hh b/examples/advanced/radiation_monitor/userActions/include/RadmonRunAction.hh index e604597928..2e29368ec3 100644 --- a/examples/advanced/radiation_monitor/userActions/include/RadmonRunAction.hh +++ b/examples/advanced/radiation_monitor/userActions/include/RadmonRunAction.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonRunAction.hh,v 1.3 2006/06/29 16:21:00 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Radmon run action class // diff --git a/examples/advanced/radiation_monitor/userActions/include/RadmonRunAction.icc b/examples/advanced/radiation_monitor/userActions/include/RadmonRunAction.icc index 8579f9a60a..9598e915c9 100644 --- a/examples/advanced/radiation_monitor/userActions/include/RadmonRunAction.icc +++ b/examples/advanced/radiation_monitor/userActions/include/RadmonRunAction.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonRunAction.icc,v 1.3 2006/06/29 16:21:38 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONRUNACTION_HH diff --git a/examples/advanced/radiation_monitor/userActions/include/RadmonRunActionObserver.hh b/examples/advanced/radiation_monitor/userActions/include/RadmonRunActionObserver.hh index a246251270..c513ee05e6 100644 --- a/examples/advanced/radiation_monitor/userActions/include/RadmonRunActionObserver.hh +++ b/examples/advanced/radiation_monitor/userActions/include/RadmonRunActionObserver.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonRunActionObserver.hh,v 1.3 2006/06/29 16:21:44 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Observer class for the Run Action // diff --git a/examples/advanced/radiation_monitor/userActions/include/RadmonRunActionObserver.icc b/examples/advanced/radiation_monitor/userActions/include/RadmonRunActionObserver.icc index 19c1484b85..421edbe444 100644 --- a/examples/advanced/radiation_monitor/userActions/include/RadmonRunActionObserver.icc +++ b/examples/advanced/radiation_monitor/userActions/include/RadmonRunActionObserver.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonRunActionObserver.icc,v 1.3 2006/06/29 16:21:46 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONRUNACTIONOBSERVER_HH diff --git a/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingAction.hh b/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingAction.hh index 143b01ca51..5ccce7220e 100644 --- a/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingAction.hh +++ b/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingAction.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSteppingAction.hh,v 1.3 2006/06/29 16:21:48 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Radmon stepping action class // diff --git a/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingAction.icc b/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingAction.icc index 684afd4347..26af6e8e42 100644 --- a/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingAction.icc +++ b/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingAction.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSteppingAction.icc,v 1.3 2006/06/29 16:21:50 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONSTEPPINGACTION_HH diff --git a/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingActionObserver.hh b/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingActionObserver.hh index a5bf40bb27..39b588640e 100644 --- a/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingActionObserver.hh +++ b/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingActionObserver.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSteppingActionObserver.hh,v 1.3 2006/06/29 16:21:52 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Description: Observer class for the Stepping Action // diff --git a/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingActionObserver.icc b/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingActionObserver.icc index 6378d389a4..ba4de63598 100644 --- a/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingActionObserver.icc +++ b/examples/advanced/radiation_monitor/userActions/include/RadmonSteppingActionObserver.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSteppingActionObserver.icc,v 1.3 2006/06/29 16:21:54 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // #ifndef RADMONSTEPPINGACTIONOBSERVER_HH diff --git a/examples/advanced/radiation_monitor/userActions/src/RadmonEventAction.cc b/examples/advanced/radiation_monitor/userActions/src/RadmonEventAction.cc index e61718cf71..9533bcfd96 100644 --- a/examples/advanced/radiation_monitor/userActions/src/RadmonEventAction.cc +++ b/examples/advanced/radiation_monitor/userActions/src/RadmonEventAction.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonEventAction.cc,v 1.1.2.2 2006/06/29 16:21:56 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/userActions/src/RadmonRunAction.cc b/examples/advanced/radiation_monitor/userActions/src/RadmonRunAction.cc index a5b5e3a04c..a0a94e3f0c 100644 --- a/examples/advanced/radiation_monitor/userActions/src/RadmonRunAction.cc +++ b/examples/advanced/radiation_monitor/userActions/src/RadmonRunAction.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonRunAction.cc,v 1.3 2006/06/29 16:21:58 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radiation_monitor/userActions/src/RadmonSteppingAction.cc b/examples/advanced/radiation_monitor/userActions/src/RadmonSteppingAction.cc index fa6b3746fd..d9c24cf673 100644 --- a/examples/advanced/radiation_monitor/userActions/src/RadmonSteppingAction.cc +++ b/examples/advanced/radiation_monitor/userActions/src/RadmonSteppingAction.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra // // Id: $Id: RadmonSteppingAction.cc,v 1.3 2006/06/29 16:22:00 gunter Exp $ -// Tag: $Name: geant4-09-00 $ +// Tag: $Name: geant4-09-01 $ // // Include files diff --git a/examples/advanced/radioprotection/include/RemSimDecay.hh b/examples/advanced/radioprotection/include/RemSimDecay.hh index 201eeaee02..2dae25eff3 100644 --- a/examples/advanced/radioprotection/include/RemSimDecay.hh +++ b/examples/advanced/radioprotection/include/RemSimDecay.hh @@ -31,7 +31,7 @@ // ************************ // // $Id: RemSimDecay.hh,v 1.3 2006/06/29 16:22:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author:Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimDecorator.hh b/examples/advanced/radioprotection/include/RemSimDecorator.hh index b6bdbee6e6..656403c695 100644 --- a/examples/advanced/radioprotection/include/RemSimDecorator.hh +++ b/examples/advanced/radioprotection/include/RemSimDecorator.hh @@ -31,7 +31,7 @@ // *************************** // // $Id: RemSimDecorator.hh,v 1.10 2006/06/29 16:22:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author:Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimDetectorConstruction.hh b/examples/advanced/radioprotection/include/RemSimDetectorConstruction.hh index 53b1c2027f..cf7a4b8b62 100644 --- a/examples/advanced/radioprotection/include/RemSimDetectorConstruction.hh +++ b/examples/advanced/radioprotection/include/RemSimDetectorConstruction.hh @@ -30,7 +30,7 @@ // ************************************** // // $Id: RemSimDetectorConstruction.hh,v 1.13 2006/06/29 16:22:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author:Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimDetectorMessenger.hh b/examples/advanced/radioprotection/include/RemSimDetectorMessenger.hh index a99bb447e3..d796b16e9f 100644 --- a/examples/advanced/radioprotection/include/RemSimDetectorMessenger.hh +++ b/examples/advanced/radioprotection/include/RemSimDetectorMessenger.hh @@ -31,7 +31,7 @@ // ***************************************** // // $Id: RemSimDetectorMessenger.hh,v 1.9 2006/06/29 16:22:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // #ifndef RemSimDetectorMessenger_h diff --git a/examples/advanced/radioprotection/include/RemSimElectronEEDL.hh b/examples/advanced/radioprotection/include/RemSimElectronEEDL.hh index d1aff3538a..baf10e40ed 100644 --- a/examples/advanced/radioprotection/include/RemSimElectronEEDL.hh +++ b/examples/advanced/radioprotection/include/RemSimElectronEEDL.hh @@ -25,7 +25,7 @@ // // // $Id: RemSimElectronEEDL.hh,v 1.4 2006/06/29 16:22:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli, guatelli@ge.infn.it diff --git a/examples/advanced/radioprotection/include/RemSimEventAction.hh b/examples/advanced/radioprotection/include/RemSimEventAction.hh index 695876c3ab..0cafe4be9b 100644 --- a/examples/advanced/radioprotection/include/RemSimEventAction.hh +++ b/examples/advanced/radioprotection/include/RemSimEventAction.hh @@ -31,7 +31,7 @@ // ********************************** // // $Id: RemSimEventAction.hh,v 1.5 2006/06/29 16:22:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author : Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimHadronicBertini.hh b/examples/advanced/radioprotection/include/RemSimHadronicBertini.hh index f1f06d1daf..e7838a5aab 100644 --- a/examples/advanced/radioprotection/include/RemSimHadronicBertini.hh +++ b/examples/advanced/radioprotection/include/RemSimHadronicBertini.hh @@ -30,7 +30,7 @@ // ************************************** // // $Id: RemSimHadronicBertini.hh,v 1.5 2006/11/15 18:39:30 guatelli Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author : Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimHadronicBinary.hh b/examples/advanced/radioprotection/include/RemSimHadronicBinary.hh index 297bae266a..29306e5711 100644 --- a/examples/advanced/radioprotection/include/RemSimHadronicBinary.hh +++ b/examples/advanced/radioprotection/include/RemSimHadronicBinary.hh @@ -30,7 +30,7 @@ // ************************************** // // $Id: RemSimHadronicBinary.hh,v 1.5 2006/11/15 18:39:30 guatelli Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author : Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimIonICRU.hh b/examples/advanced/radioprotection/include/RemSimIonICRU.hh index 635c4c9042..f3752ae754 100644 --- a/examples/advanced/radioprotection/include/RemSimIonICRU.hh +++ b/examples/advanced/radioprotection/include/RemSimIonICRU.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimIonICRU.hh,v 1.5 2006/06/29 16:22:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli, guatelli@ge.infn.it diff --git a/examples/advanced/radioprotection/include/RemSimMaterial.hh b/examples/advanced/radioprotection/include/RemSimMaterial.hh index 1a1f992193..847b28a88b 100644 --- a/examples/advanced/radioprotection/include/RemSimMaterial.hh +++ b/examples/advanced/radioprotection/include/RemSimMaterial.hh @@ -25,7 +25,7 @@ // // // $Id: RemSimMaterial.hh,v 1.6 2006/06/29 16:22:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ********************************** // * * diff --git a/examples/advanced/radioprotection/include/RemSimMoonHabitat.hh b/examples/advanced/radioprotection/include/RemSimMoonHabitat.hh index 50c9a9419d..34d71e667d 100644 --- a/examples/advanced/radioprotection/include/RemSimMoonHabitat.hh +++ b/examples/advanced/radioprotection/include/RemSimMoonHabitat.hh @@ -31,7 +31,7 @@ // ************************************** // // $Id: RemSimMoonHabitat.hh,v 1.6 2006/06/29 16:22:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author:Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimMuonStandard.hh b/examples/advanced/radioprotection/include/RemSimMuonStandard.hh index 04333742ae..0896b25971 100644 --- a/examples/advanced/radioprotection/include/RemSimMuonStandard.hh +++ b/examples/advanced/radioprotection/include/RemSimMuonStandard.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimMuonStandard.hh,v 1.3 2006/06/29 16:22:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author:Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimPhotonEPDL.hh b/examples/advanced/radioprotection/include/RemSimPhotonEPDL.hh index 69fbf556c7..c12bab31e4 100644 --- a/examples/advanced/radioprotection/include/RemSimPhotonEPDL.hh +++ b/examples/advanced/radioprotection/include/RemSimPhotonEPDL.hh @@ -25,7 +25,7 @@ // // // $Id: RemSimPhotonEPDL.hh,v 1.4 2006/06/29 16:22:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author:Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimPhysicsList.hh b/examples/advanced/radioprotection/include/RemSimPhysicsList.hh index 9679f3508d..a59b51c472 100644 --- a/examples/advanced/radioprotection/include/RemSimPhysicsList.hh +++ b/examples/advanced/radioprotection/include/RemSimPhysicsList.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimPhysicsList.hh,v 1.6 2006/06/29 16:23:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli, guatelli@ge.infn.it diff --git a/examples/advanced/radioprotection/include/RemSimPhysicsListMessenger.hh b/examples/advanced/radioprotection/include/RemSimPhysicsListMessenger.hh index 0048c578a5..8fb90b6e74 100644 --- a/examples/advanced/radioprotection/include/RemSimPhysicsListMessenger.hh +++ b/examples/advanced/radioprotection/include/RemSimPhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimPhysicsListMessenger.hh,v 1.4 2006/06/29 16:23:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli, guatelli@ge.infn.it diff --git a/examples/advanced/radioprotection/include/RemSimPositronStandard.hh b/examples/advanced/radioprotection/include/RemSimPositronStandard.hh index ec7c283904..a37b44efa0 100644 --- a/examples/advanced/radioprotection/include/RemSimPositronStandard.hh +++ b/examples/advanced/radioprotection/include/RemSimPositronStandard.hh @@ -25,7 +25,7 @@ // // // $Id: RemSimPositronStandard.hh,v 1.4 2006/06/29 16:23:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli, guatelli@ge.infn.it diff --git a/examples/advanced/radioprotection/include/RemSimPrimaryGeneratorAction.hh b/examples/advanced/radioprotection/include/RemSimPrimaryGeneratorAction.hh index 5567f63910..b76e3f275b 100644 --- a/examples/advanced/radioprotection/include/RemSimPrimaryGeneratorAction.hh +++ b/examples/advanced/radioprotection/include/RemSimPrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: RemSimPrimaryGeneratorAction.hh,v 1.14 2006/06/29 16:23:07 gunter Exp $// GEANT4 tag $Name: geant4-09-00 $ +// $Id: RemSimPrimaryGeneratorAction.hh,v 1.14 2006/06/29 16:23:07 gunter Exp $// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimPrimaryGeneratorMessenger.hh b/examples/advanced/radioprotection/include/RemSimPrimaryGeneratorMessenger.hh index beac8c8870..50ace0c368 100644 --- a/examples/advanced/radioprotection/include/RemSimPrimaryGeneratorMessenger.hh +++ b/examples/advanced/radioprotection/include/RemSimPrimaryGeneratorMessenger.hh @@ -31,7 +31,7 @@ // ************************************************ // // $Id: RemSimPrimaryGeneratorMessenger.hh,v 1.10 2006/06/29 16:23:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimROGeometry.hh b/examples/advanced/radioprotection/include/RemSimROGeometry.hh index f4e37c9428..b9f8471aea 100644 --- a/examples/advanced/radioprotection/include/RemSimROGeometry.hh +++ b/examples/advanced/radioprotection/include/RemSimROGeometry.hh @@ -25,7 +25,7 @@ // // // $Id: RemSimROGeometry.hh,v 1.6 2006/06/29 16:23:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ************************************ // * * diff --git a/examples/advanced/radioprotection/include/RemSimRoofDecorator.hh b/examples/advanced/radioprotection/include/RemSimRoofDecorator.hh index 1cdd5c7bce..7a57cc3da5 100644 --- a/examples/advanced/radioprotection/include/RemSimRoofDecorator.hh +++ b/examples/advanced/radioprotection/include/RemSimRoofDecorator.hh @@ -33,7 +33,7 @@ // // // $Id: RemSimRoofDecorator.hh,v 1.6 2006/06/29 16:23:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RemSimRoofDecorator_h diff --git a/examples/advanced/radioprotection/include/RemSimRunAction.hh b/examples/advanced/radioprotection/include/RemSimRunAction.hh index aad2691622..82548bd922 100644 --- a/examples/advanced/radioprotection/include/RemSimRunAction.hh +++ b/examples/advanced/radioprotection/include/RemSimRunAction.hh @@ -25,7 +25,7 @@ // // // $Id: RemSimRunAction.hh,v 1.10 2006/06/29 16:23:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimSensitiveDetector.hh b/examples/advanced/radioprotection/include/RemSimSensitiveDetector.hh index 630c385e8c..add8e3ce46 100644 --- a/examples/advanced/radioprotection/include/RemSimSensitiveDetector.hh +++ b/examples/advanced/radioprotection/include/RemSimSensitiveDetector.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimSensitiveDetector.hh,v 1.5 2006/06/29 16:23:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimShelterSPEDecorator.hh b/examples/advanced/radioprotection/include/RemSimShelterSPEDecorator.hh index 5eb0b937d1..b06927dd5f 100644 --- a/examples/advanced/radioprotection/include/RemSimShelterSPEDecorator.hh +++ b/examples/advanced/radioprotection/include/RemSimShelterSPEDecorator.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimShelterSPEDecorator.hh,v 1.5 2006/06/29 16:23:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimShieldingDecorator.hh b/examples/advanced/radioprotection/include/RemSimShieldingDecorator.hh index 12b78213d8..3dfa18fd1f 100644 --- a/examples/advanced/radioprotection/include/RemSimShieldingDecorator.hh +++ b/examples/advanced/radioprotection/include/RemSimShieldingDecorator.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimShieldingDecorator.hh,v 1.7 2006/06/29 16:23:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimSteppingAction.hh b/examples/advanced/radioprotection/include/RemSimSteppingAction.hh index 615f2bd6ec..5de1cdbec5 100644 --- a/examples/advanced/radioprotection/include/RemSimSteppingAction.hh +++ b/examples/advanced/radioprotection/include/RemSimSteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: RemSimSteppingAction.hh,v 1.4 2006/06/29 16:23:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli (guatelli@ge.infn.it) // diff --git a/examples/advanced/radioprotection/include/RemSimSteppingActionMessenger.hh b/examples/advanced/radioprotection/include/RemSimSteppingActionMessenger.hh index 876e34f653..a8816f4309 100644 --- a/examples/advanced/radioprotection/include/RemSimSteppingActionMessenger.hh +++ b/examples/advanced/radioprotection/include/RemSimSteppingActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: RemSimSteppingActionMessenger.hh,v 1.3 2006/06/29 16:23:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimVGeometryComponent.hh b/examples/advanced/radioprotection/include/RemSimVGeometryComponent.hh index fad7df6361..2c0ccc1471 100644 --- a/examples/advanced/radioprotection/include/RemSimVGeometryComponent.hh +++ b/examples/advanced/radioprotection/include/RemSimVGeometryComponent.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimVGeometryComponent.hh,v 1.8 2006/06/29 16:23:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/include/RemSimVehicle1.hh b/examples/advanced/radioprotection/include/RemSimVehicle1.hh index 073fb1f16d..3e90a10adb 100644 --- a/examples/advanced/radioprotection/include/RemSimVehicle1.hh +++ b/examples/advanced/radioprotection/include/RemSimVehicle1.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimVehicle1.hh,v 1.8 2006/06/29 16:23:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/remsim.cc b/examples/advanced/radioprotection/remsim.cc index af7b0a5700..431b220757 100644 --- a/examples/advanced/radioprotection/remsim.cc +++ b/examples/advanced/radioprotection/remsim.cc @@ -25,7 +25,7 @@ // // // $Id: remsim.cc,v 1.14 2006/07/24 09:53:27 guatelli Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4RunManager.hh" #include "G4UImanager.hh" diff --git a/examples/advanced/radioprotection/src/RemSimDecay.cc b/examples/advanced/radioprotection/src/RemSimDecay.cc index f4efd74ae5..1d242d0792 100644 --- a/examples/advanced/radioprotection/src/RemSimDecay.cc +++ b/examples/advanced/radioprotection/src/RemSimDecay.cc @@ -31,7 +31,7 @@ // *********************** // // $Id: RemSimDecay.cc,v 1.5 2006/06/29 16:23:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author:Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/src/RemSimDecorator.cc b/examples/advanced/radioprotection/src/RemSimDecorator.cc index 8d614d3d5a..eb6b3165b0 100644 --- a/examples/advanced/radioprotection/src/RemSimDecorator.cc +++ b/examples/advanced/radioprotection/src/RemSimDecorator.cc @@ -31,7 +31,7 @@ // *************************** // // $Id: RemSimDecorator.cc,v 1.6 2006/06/29 16:23:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author:Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/src/RemSimDetectorConstruction.cc b/examples/advanced/radioprotection/src/RemSimDetectorConstruction.cc index 1c0ceba164..0f747b3c53 100644 --- a/examples/advanced/radioprotection/src/RemSimDetectorConstruction.cc +++ b/examples/advanced/radioprotection/src/RemSimDetectorConstruction.cc @@ -31,7 +31,7 @@ // ************************************** // // $Id: RemSimDetectorConstruction.cc,v 1.17 2006/06/29 16:23:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author:Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/src/RemSimDetectorMessenger.cc b/examples/advanced/radioprotection/src/RemSimDetectorMessenger.cc index 20d726839c..c0e83cb6af 100644 --- a/examples/advanced/radioprotection/src/RemSimDetectorMessenger.cc +++ b/examples/advanced/radioprotection/src/RemSimDetectorMessenger.cc @@ -35,7 +35,7 @@ // // // $Id: RemSimDetectorMessenger.cc,v 1.13 2006/06/29 16:23:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/radioprotection/src/RemSimElectronEEDL.cc b/examples/advanced/radioprotection/src/RemSimElectronEEDL.cc index 728d4d76f6..6f2859ab4d 100644 --- a/examples/advanced/radioprotection/src/RemSimElectronEEDL.cc +++ b/examples/advanced/radioprotection/src/RemSimElectronEEDL.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimElectronEEDL.cc,v 1.6 2006/06/29 16:23:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli, guatelloi@ge.infn.it diff --git a/examples/advanced/radioprotection/src/RemSimEventAction.cc b/examples/advanced/radioprotection/src/RemSimEventAction.cc index 68f27fb155..2f5e069f4a 100644 --- a/examples/advanced/radioprotection/src/RemSimEventAction.cc +++ b/examples/advanced/radioprotection/src/RemSimEventAction.cc @@ -31,7 +31,7 @@ // // // $Id: RemSimEventAction.cc,v 1.9 2006/06/29 16:23:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author : Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/src/RemSimHadronicBertini.cc b/examples/advanced/radioprotection/src/RemSimHadronicBertini.cc index 719997a2b7..51522b5ee4 100644 --- a/examples/advanced/radioprotection/src/RemSimHadronicBertini.cc +++ b/examples/advanced/radioprotection/src/RemSimHadronicBertini.cc @@ -30,7 +30,7 @@ // ************************************** // // $Id: RemSimHadronicBertini.cc,v 1.5 2006/11/15 18:39:30 guatelli Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author : Susanna Guatelli, guatelli@ge.infn.it diff --git a/examples/advanced/radioprotection/src/RemSimHadronicBinary.cc b/examples/advanced/radioprotection/src/RemSimHadronicBinary.cc index ee8424dc26..3513d58a9b 100644 --- a/examples/advanced/radioprotection/src/RemSimHadronicBinary.cc +++ b/examples/advanced/radioprotection/src/RemSimHadronicBinary.cc @@ -30,7 +30,7 @@ // ************************************** // // $Id: RemSimHadronicBinary.cc,v 1.7 2006/11/15 18:39:30 guatelli Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author : Susanna Guatelli, guatelli@ge.infn.it diff --git a/examples/advanced/radioprotection/src/RemSimIonICRU.cc b/examples/advanced/radioprotection/src/RemSimIonICRU.cc index c0cd565340..589373e4e0 100644 --- a/examples/advanced/radioprotection/src/RemSimIonICRU.cc +++ b/examples/advanced/radioprotection/src/RemSimIonICRU.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimIonICRU.cc,v 1.10 2006/06/29 16:23:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli, guatelli@ge.infn.it diff --git a/examples/advanced/radioprotection/src/RemSimMaterial.cc b/examples/advanced/radioprotection/src/RemSimMaterial.cc index 38a481a714..af4546b285 100644 --- a/examples/advanced/radioprotection/src/RemSimMaterial.cc +++ b/examples/advanced/radioprotection/src/RemSimMaterial.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: RemSimMaterial.cc,v 1.7 2006/06/29 16:23:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4MaterialPropertiesTable.hh" diff --git a/examples/advanced/radioprotection/src/RemSimMoonHabitat.cc b/examples/advanced/radioprotection/src/RemSimMoonHabitat.cc index 6cf0656263..3a08bfd660 100644 --- a/examples/advanced/radioprotection/src/RemSimMoonHabitat.cc +++ b/examples/advanced/radioprotection/src/RemSimMoonHabitat.cc @@ -31,7 +31,7 @@ // ************************************** // // $Id: RemSimMoonHabitat.cc,v 1.7 2006/06/29 16:23:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author:Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/src/RemSimMuonStandard.cc b/examples/advanced/radioprotection/src/RemSimMuonStandard.cc index 92d3ea4052..effaf4a09f 100644 --- a/examples/advanced/radioprotection/src/RemSimMuonStandard.cc +++ b/examples/advanced/radioprotection/src/RemSimMuonStandard.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimMuonStandard.cc,v 1.6 2006/06/29 16:23:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author:Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/src/RemSimPhotonEPDL.cc b/examples/advanced/radioprotection/src/RemSimPhotonEPDL.cc index e155bab41e..eb824edff8 100644 --- a/examples/advanced/radioprotection/src/RemSimPhotonEPDL.cc +++ b/examples/advanced/radioprotection/src/RemSimPhotonEPDL.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimPhotonEPDL.cc,v 1.7 2006/06/29 16:24:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author:Susanna Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/src/RemSimPhysicsList.cc b/examples/advanced/radioprotection/src/RemSimPhysicsList.cc index 8cb918c5fb..b9a2cdcf17 100644 --- a/examples/advanced/radioprotection/src/RemSimPhysicsList.cc +++ b/examples/advanced/radioprotection/src/RemSimPhysicsList.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimPhysicsList.cc,v 1.10 2006/06/29 16:24:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli diff --git a/examples/advanced/radioprotection/src/RemSimPhysicsListMessenger.cc b/examples/advanced/radioprotection/src/RemSimPhysicsListMessenger.cc index ecb26880cf..7e7064ddcc 100644 --- a/examples/advanced/radioprotection/src/RemSimPhysicsListMessenger.cc +++ b/examples/advanced/radioprotection/src/RemSimPhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimPhysicsListMessenger.cc,v 1.4 2006/06/29 16:24:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli, guatelli@ge.infn.it diff --git a/examples/advanced/radioprotection/src/RemSimPositronStandard.cc b/examples/advanced/radioprotection/src/RemSimPositronStandard.cc index c156a0f84e..95f76d6a2d 100644 --- a/examples/advanced/radioprotection/src/RemSimPositronStandard.cc +++ b/examples/advanced/radioprotection/src/RemSimPositronStandard.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimPositronStandard.cc,v 1.6 2006/06/29 16:24:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Susanna Guatelli, guatelli@ge.infn.it #include "RemSimPositronStandard.hh" diff --git a/examples/advanced/radioprotection/src/RemSimPrimaryGeneratorMessenger.cc b/examples/advanced/radioprotection/src/RemSimPrimaryGeneratorMessenger.cc index 102b17089a..ea468bb08e 100644 --- a/examples/advanced/radioprotection/src/RemSimPrimaryGeneratorMessenger.cc +++ b/examples/advanced/radioprotection/src/RemSimPrimaryGeneratorMessenger.cc @@ -34,7 +34,7 @@ // // // $Id: RemSimPrimaryGeneratorMessenger.cc,v 1.11 2006/06/29 16:24:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/radioprotection/src/RemSimROGeometry.cc b/examples/advanced/radioprotection/src/RemSimROGeometry.cc index 705a7fb288..814c04e338 100644 --- a/examples/advanced/radioprotection/src/RemSimROGeometry.cc +++ b/examples/advanced/radioprotection/src/RemSimROGeometry.cc @@ -33,7 +33,7 @@ // ************************************ // // $Id: RemSimROGeometry.cc,v 1.6 2006/06/29 16:24:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RemSimROGeometry.hh" #include "RemSimDummySD.hh" diff --git a/examples/advanced/radioprotection/src/RemSimRoofDecorator.cc b/examples/advanced/radioprotection/src/RemSimRoofDecorator.cc index 46fa340895..7e0e201b3f 100644 --- a/examples/advanced/radioprotection/src/RemSimRoofDecorator.cc +++ b/examples/advanced/radioprotection/src/RemSimRoofDecorator.cc @@ -33,7 +33,7 @@ // // // $Id: RemSimRoofDecorator.cc,v 1.7 2006/06/29 16:24:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RemSimVGeometryComponent.hh" #include "RemSimMaterial.hh" diff --git a/examples/advanced/radioprotection/src/RemSimRunAction.cc b/examples/advanced/radioprotection/src/RemSimRunAction.cc index a586c0e33b..949ad6a171 100644 --- a/examples/advanced/radioprotection/src/RemSimRunAction.cc +++ b/examples/advanced/radioprotection/src/RemSimRunAction.cc @@ -32,7 +32,7 @@ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // $Id: RemSimRunAction.cc,v 1.14 2006/06/29 16:24:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RemSimRunAction.hh" diff --git a/examples/advanced/radioprotection/src/RemSimSensitiveDetector.cc b/examples/advanced/radioprotection/src/RemSimSensitiveDetector.cc index abf12f6069..c67a8b59df 100644 --- a/examples/advanced/radioprotection/src/RemSimSensitiveDetector.cc +++ b/examples/advanced/radioprotection/src/RemSimSensitiveDetector.cc @@ -25,7 +25,7 @@ // // // $Id: RemSimSensitiveDetector.cc,v 1.15 2006/06/29 16:24:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/src/RemSimShelterSPEDecorator.cc b/examples/advanced/radioprotection/src/RemSimShelterSPEDecorator.cc index e352bab878..989a0be224 100644 --- a/examples/advanced/radioprotection/src/RemSimShelterSPEDecorator.cc +++ b/examples/advanced/radioprotection/src/RemSimShelterSPEDecorator.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimShelterSPEDecorator.cc,v 1.3 2006/06/29 16:24:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/src/RemSimShieldingDecorator.cc b/examples/advanced/radioprotection/src/RemSimShieldingDecorator.cc index 042a49bad2..abbda09c5c 100644 --- a/examples/advanced/radioprotection/src/RemSimShieldingDecorator.cc +++ b/examples/advanced/radioprotection/src/RemSimShieldingDecorator.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimShieldingDecorator.cc,v 1.6 2006/06/29 16:24:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/src/RemSimSteppingAction.cc b/examples/advanced/radioprotection/src/RemSimSteppingAction.cc index afb93f874f..15244eb829 100644 --- a/examples/advanced/radioprotection/src/RemSimSteppingAction.cc +++ b/examples/advanced/radioprotection/src/RemSimSteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: RemSimSteppingAction.cc,v 1.10 2006/06/29 16:24:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Author: Susanna Guatelli (guatelli@ge.infn.it) diff --git a/examples/advanced/radioprotection/src/RemSimSteppingActionMessenger.cc b/examples/advanced/radioprotection/src/RemSimSteppingActionMessenger.cc index 199f497a51..8996a520be 100644 --- a/examples/advanced/radioprotection/src/RemSimSteppingActionMessenger.cc +++ b/examples/advanced/radioprotection/src/RemSimSteppingActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -//$Id: RemSimSteppingActionMessenger.cc,v 1.5 2006/06/29 16:24:27 gunter Exp $// GEANT4 tag $Name: geant4-09-00 $ +//$Id: RemSimSteppingActionMessenger.cc,v 1.5 2006/06/29 16:24:27 gunter Exp $// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/src/RemSimVGeometryComponent.cc b/examples/advanced/radioprotection/src/RemSimVGeometryComponent.cc index bf97de0498..857bfcb7d4 100644 --- a/examples/advanced/radioprotection/src/RemSimVGeometryComponent.cc +++ b/examples/advanced/radioprotection/src/RemSimVGeometryComponent.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimVGeometryComponent.cc,v 1.4 2006/06/29 16:24:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radioprotection/src/RemSimVehicle1.cc b/examples/advanced/radioprotection/src/RemSimVehicle1.cc index 77cd0e6a70..388da1cb30 100644 --- a/examples/advanced/radioprotection/src/RemSimVehicle1.cc +++ b/examples/advanced/radioprotection/src/RemSimVehicle1.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RemSimVehicle1.cc,v 1.9 2006/06/29 16:24:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/raredecay_calorimetry/PhotIn.cc b/examples/advanced/raredecay_calorimetry/PhotIn.cc index 190aa32802..0137baf9cc 100644 --- a/examples/advanced/raredecay_calorimetry/PhotIn.cc +++ b/examples/advanced/raredecay_calorimetry/PhotIn.cc @@ -25,7 +25,7 @@ // // // $Id: PhotIn.cc,v 1.10 2006/11/22 09:46:02 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/advanced/raredecay_calorimetry/PhotIn.out b/examples/advanced/raredecay_calorimetry/PhotIn.out index 791ceacec7..8d7fb933a4 100644 --- a/examples/advanced/raredecay_calorimetry/PhotIn.out +++ b/examples/advanced/raredecay_calorimetry/PhotIn.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -541,7 +541,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -554,7 +554,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -581,7 +581,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for GenericIon LateralDisplacementFlag= 0 Skin= 0 @@ -593,7 +593,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -605,7 +605,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -622,7 +622,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -640,7 +640,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -653,7 +653,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -711,3 +711,129 @@ Index : 6 used in the geometry : Yes recalculation needed : No Start Run processing. PhotInPrimaryGeneratorAction::GeneratePrimaries: pi+,E=100 PhotInPrimaryGeneratorAction::GeneratePrimaries: part&E're redefined +Run terminated. +Run Summary + Number of events processed : 1 + User=83.65s Real=85.24s Sys=1.41s +############################################################## + Run Summary - Number of events : 1 +############################################################## +Region Region0 +==================== + Production thresholds : + ----------------------- + gamma 1 mm e- 1 mm e+ 1 mm + Energy deposition in Absorber 473.00283 MeV, in Gap 0 eV + Number of secondaries in the event : + ------------------------------------ + gamma in Absorber 12, in Gap 61 + e- in Absorber 354, in Gap 488 + e+ in Absorber 2, in Gap 7 + Minimum kinetic energy of generated secondaries : + ------------------------------------------------- + gamma in Absorber = 3.3752091 keV, in Gap = 7.0509842 keV + e- in Absorber = 15.253568 eV , in Gap = 93.836379 eV + e+ in Absorber = 233.25152 keV in Gap = 490.36708 keV + Mean total track length of neutrons in the event : in Absorber = 3.6482229 m , in Gap = 0 fm + Mean number of steps of charged particles in the event : in Absorber =68, in Gap = 0 +############################################################## +Region Region1 +==================== + Production thresholds : + ----------------------- + gamma 1 cm e- 1 cm e+ 1 cm + Energy deposition in Absorber 76.955166 GeV, in Gap 0 eV + Number of secondaries in the event : + ------------------------------------ + gamma in Absorber 2430, in Gap 10685 + e- in Absorber 27139, in Gap 58942 + e+ in Absorber 168, in Gap 834 + Minimum kinetic energy of generated secondaries : + ------------------------------------------------- + gamma in Absorber = 5.7278431 keV, in Gap = 20.500267 keV + e- in Absorber = 0.055180376 eV , in Gap = 0.022609692 eV + e+ in Absorber = 208.06526 keV in Gap = 59.60516 keV + Mean total track length of neutrons in the event : in Absorber = 85.845699 m , in Gap = 0 fm + Mean number of steps of charged particles in the event : in Absorber =2029, in Gap = 0 +############################################################## +Region Region2 +==================== + Production thresholds : + ----------------------- + gamma 10 cm e- 10 cm e+ 10 cm + Energy deposition in Absorber 551.38833 MeV, in Gap 0 eV + Number of secondaries in the event : + ------------------------------------ + gamma in Absorber 4, in Gap 56 + e- in Absorber 274, in Gap 518 + e+ in Absorber 1, in Gap 7 + Minimum kinetic energy of generated secondaries : + ------------------------------------------------- + gamma in Absorber = 510.99906 keV, in Gap = 106.78933 keV + e- in Absorber = 19.000542 eV , in Gap = 28.262672 eV + e+ in Absorber = 6.5886094 MeV in Gap = 1.8229204 MeV + Mean total track length of neutrons in the event : in Absorber = 3.4871681 m , in Gap = 0 fm + Mean number of steps of charged particles in the event : in Absorber =76, in Gap = 0 +############################################################## +/run/dumpCouples + +========= Table of registered couples ============================== + +Index : 0 used in the geometry : Yes recalculation needed : No + Material : Vac + Range cuts : gamma 1 mm e- 1 mm e+ 1 mm + Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV + Region(s) which use this couple : + DefaultRegionForTheWorld + +Index : 1 used in the geometry : Yes recalculation needed : No + Material : Aluminium + Range cuts : gamma 1 mm e- 1 mm e+ 1 mm + Energy thresholds : gamma 6.8873065 keV e- 596.68045 keV e+ 568.01052 keV + Region(s) which use this couple : + Region0 + +Index : 2 used in the geometry : Yes recalculation needed : No + Material : Scintillator + Range cuts : gamma 1 mm e- 1 mm e+ 1 mm + Energy thresholds : gamma 2.3689452 keV e- 355.79082 keV e+ 347.13789 keV + Region(s) which use this couple : + Region0 + +Index : 3 used in the geometry : Yes recalculation needed : No + Material : Aluminium + Range cuts : gamma 1 cm e- 1 cm e+ 1 cm + Energy thresholds : gamma 20.494884 keV e- 4.5487391 MeV e+ 4.2771968 MeV + Region(s) which use this couple : + Region1 + +Index : 4 used in the geometry : Yes recalculation needed : No + Material : Scintillator + Range cuts : gamma 1 cm e- 1 cm e+ 1 cm + Energy thresholds : gamma 5.6988252 keV e- 2.200168 MeV e+ 2.0688264 MeV + Region(s) which use this couple : + Region1 + +Index : 5 used in the geometry : Yes recalculation needed : No + Material : Aluminium + Range cuts : gamma 10 cm e- 10 cm e+ 10 cm + Energy thresholds : gamma 79.141018 keV e- 56.740688 MeV e+ 54.014351 MeV + Region(s) which use this couple : + Region2 + +Index : 6 used in the geometry : Yes recalculation needed : No + Material : Scintillator + Range cuts : gamma 10 cm e- 10 cm e+ 10 cm + Energy thresholds : gamma 18.864481 keV e- 23.386044 MeV e+ 22.262366 MeV + Region(s) which use this couple : + Region2 + +==================================================================== + +## +## +## +/run/setCutForRegqion Region0 0.2 mm +Graphics systems deleted. +Visualization Manager deleting... +G4 kernel has come to Quit state. diff --git a/examples/advanced/raredecay_calorimetry/include/PhotInCalorHit.hh b/examples/advanced/raredecay_calorimetry/include/PhotInCalorHit.hh index 86fb5d46b8..920efefa03 100644 --- a/examples/advanced/raredecay_calorimetry/include/PhotInCalorHit.hh +++ b/examples/advanced/raredecay_calorimetry/include/PhotInCalorHit.hh @@ -25,7 +25,7 @@ // // // $Id: PhotInCalorHit.hh,v 1.4 2006/06/29 16:24:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef PhotInCalorHit_h diff --git a/examples/advanced/raredecay_calorimetry/include/PhotInCalorimeterSD.hh b/examples/advanced/raredecay_calorimetry/include/PhotInCalorimeterSD.hh index f5a2d4e8f5..445c999852 100644 --- a/examples/advanced/raredecay_calorimetry/include/PhotInCalorimeterSD.hh +++ b/examples/advanced/raredecay_calorimetry/include/PhotInCalorimeterSD.hh @@ -25,7 +25,7 @@ // // // $Id: PhotInCalorimeterSD.hh,v 1.3 2006/06/29 16:24:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef PhotInCalorimeterSD_h diff --git a/examples/advanced/raredecay_calorimetry/include/PhotInConstants.hh b/examples/advanced/raredecay_calorimetry/include/PhotInConstants.hh index 60da79d8a1..197e3c233c 100644 --- a/examples/advanced/raredecay_calorimetry/include/PhotInConstants.hh +++ b/examples/advanced/raredecay_calorimetry/include/PhotInConstants.hh @@ -25,7 +25,7 @@ // // // $Id: PhotInConstants.hh,v 1.2 2006/06/29 16:24:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef PhotInConstants_h diff --git a/examples/advanced/raredecay_calorimetry/include/PhotInDetectorConstruction.hh b/examples/advanced/raredecay_calorimetry/include/PhotInDetectorConstruction.hh index b4eead2af9..61364ba2d2 100644 --- a/examples/advanced/raredecay_calorimetry/include/PhotInDetectorConstruction.hh +++ b/examples/advanced/raredecay_calorimetry/include/PhotInDetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: PhotInDetectorConstruction.hh,v 1.3 2006/06/29 16:24:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/advanced/raredecay_calorimetry/include/PhotInDetectorMessenger.hh b/examples/advanced/raredecay_calorimetry/include/PhotInDetectorMessenger.hh index 57d2439702..4dd215a44a 100644 --- a/examples/advanced/raredecay_calorimetry/include/PhotInDetectorMessenger.hh +++ b/examples/advanced/raredecay_calorimetry/include/PhotInDetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: PhotInDetectorMessenger.hh,v 1.5 2006/06/29 16:24:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef PhotInDetectorMessenger_h diff --git a/examples/advanced/raredecay_calorimetry/include/PhotInEventAction.hh b/examples/advanced/raredecay_calorimetry/include/PhotInEventAction.hh index e7eb3f4a46..7eb9b014c8 100644 --- a/examples/advanced/raredecay_calorimetry/include/PhotInEventAction.hh +++ b/examples/advanced/raredecay_calorimetry/include/PhotInEventAction.hh @@ -25,7 +25,7 @@ // // // $Id: PhotInEventAction.hh,v 1.3 2006/06/29 16:24:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef PhotInEventAction_h diff --git a/examples/advanced/raredecay_calorimetry/include/PhotInGapParameterisation.hh b/examples/advanced/raredecay_calorimetry/include/PhotInGapParameterisation.hh index e7213c084d..630405473c 100644 --- a/examples/advanced/raredecay_calorimetry/include/PhotInGapParameterisation.hh +++ b/examples/advanced/raredecay_calorimetry/include/PhotInGapParameterisation.hh @@ -25,7 +25,7 @@ // // // $Id: PhotInGapParameterisation.hh,v 1.5 2006/11/22 09:44:22 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A parameterisation that describes a series of boxes along Z diff --git a/examples/advanced/raredecay_calorimetry/include/PhotInLayerParameterisation.hh b/examples/advanced/raredecay_calorimetry/include/PhotInLayerParameterisation.hh index 4e3130536d..a96ff87a06 100644 --- a/examples/advanced/raredecay_calorimetry/include/PhotInLayerParameterisation.hh +++ b/examples/advanced/raredecay_calorimetry/include/PhotInLayerParameterisation.hh @@ -25,7 +25,7 @@ // // // $Id: PhotInLayerParameterisation.hh,v 1.3 2006/06/29 16:24:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A parameterisation that describes a series of boxes along Z diff --git a/examples/advanced/raredecay_calorimetry/include/PhotInPhysicsList.hh b/examples/advanced/raredecay_calorimetry/include/PhotInPhysicsList.hh index b98b910fee..7d9d237e55 100644 --- a/examples/advanced/raredecay_calorimetry/include/PhotInPhysicsList.hh +++ b/examples/advanced/raredecay_calorimetry/include/PhotInPhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhotInPhysicsList.hh,v 1.4 2006/06/29 16:24:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef PhotInPhysicsList_h diff --git a/examples/advanced/raredecay_calorimetry/include/PhotInPrimaryGeneratorAction.hh b/examples/advanced/raredecay_calorimetry/include/PhotInPrimaryGeneratorAction.hh index 29de7f388b..d69454e4ad 100644 --- a/examples/advanced/raredecay_calorimetry/include/PhotInPrimaryGeneratorAction.hh +++ b/examples/advanced/raredecay_calorimetry/include/PhotInPrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: PhotInPrimaryGeneratorAction.hh,v 1.5 2006/06/29 16:24:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef PhotInPrimaryGeneratorAction_h diff --git a/examples/advanced/raredecay_calorimetry/include/PhotInRun.hh b/examples/advanced/raredecay_calorimetry/include/PhotInRun.hh index fc06e8cd95..58e3ca717e 100644 --- a/examples/advanced/raredecay_calorimetry/include/PhotInRun.hh +++ b/examples/advanced/raredecay_calorimetry/include/PhotInRun.hh @@ -25,7 +25,7 @@ // // // $Id: PhotInRun.hh,v 1.4 2006/06/29 16:24:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef PhotInRun_h diff --git a/examples/advanced/raredecay_calorimetry/include/PhotInRunAction.hh b/examples/advanced/raredecay_calorimetry/include/PhotInRunAction.hh index f730661bc9..08eca7e571 100644 --- a/examples/advanced/raredecay_calorimetry/include/PhotInRunAction.hh +++ b/examples/advanced/raredecay_calorimetry/include/PhotInRunAction.hh @@ -25,7 +25,7 @@ // // // $Id: PhotInRunAction.hh,v 1.3 2006/06/29 16:24:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef PhotInRunAction_h diff --git a/examples/advanced/raredecay_calorimetry/src/PhotInCalorHit.cc b/examples/advanced/raredecay_calorimetry/src/PhotInCalorHit.cc index 8e99fe7888..e3e9e924b4 100644 --- a/examples/advanced/raredecay_calorimetry/src/PhotInCalorHit.cc +++ b/examples/advanced/raredecay_calorimetry/src/PhotInCalorHit.cc @@ -25,7 +25,7 @@ // // // $Id: PhotInCalorHit.cc,v 1.4 2006/06/29 16:25:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //#define debug diff --git a/examples/advanced/raredecay_calorimetry/src/PhotInCalorimeterSD.cc b/examples/advanced/raredecay_calorimetry/src/PhotInCalorimeterSD.cc index d667143206..080f1b048c 100644 --- a/examples/advanced/raredecay_calorimetry/src/PhotInCalorimeterSD.cc +++ b/examples/advanced/raredecay_calorimetry/src/PhotInCalorimeterSD.cc @@ -25,7 +25,7 @@ // // // $Id: PhotInCalorimeterSD.cc,v 1.6 2006/06/29 16:25:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //#define debug diff --git a/examples/advanced/raredecay_calorimetry/src/PhotInDetectorConstruction.cc b/examples/advanced/raredecay_calorimetry/src/PhotInDetectorConstruction.cc index cfc1f1487e..98ea644b63 100644 --- a/examples/advanced/raredecay_calorimetry/src/PhotInDetectorConstruction.cc +++ b/examples/advanced/raredecay_calorimetry/src/PhotInDetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: PhotInDetectorConstruction.cc,v 1.5 2006/06/29 16:25:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // *************************************************************************** diff --git a/examples/advanced/raredecay_calorimetry/src/PhotInDetectorMessenger.cc b/examples/advanced/raredecay_calorimetry/src/PhotInDetectorMessenger.cc index 8138feccee..fffa7194cd 100644 --- a/examples/advanced/raredecay_calorimetry/src/PhotInDetectorMessenger.cc +++ b/examples/advanced/raredecay_calorimetry/src/PhotInDetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: PhotInDetectorMessenger.cc,v 1.5 2006/06/29 16:25:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //#define debug diff --git a/examples/advanced/raredecay_calorimetry/src/PhotInEventAction.cc b/examples/advanced/raredecay_calorimetry/src/PhotInEventAction.cc index 72aa29f39f..b80e6b6cf7 100644 --- a/examples/advanced/raredecay_calorimetry/src/PhotInEventAction.cc +++ b/examples/advanced/raredecay_calorimetry/src/PhotInEventAction.cc @@ -25,7 +25,7 @@ // // // $Id: PhotInEventAction.cc,v 1.6 2006/06/29 16:25:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //#define debug diff --git a/examples/advanced/raredecay_calorimetry/src/PhotInGapParameterisation.cc b/examples/advanced/raredecay_calorimetry/src/PhotInGapParameterisation.cc index e484a23fe5..99796da540 100644 --- a/examples/advanced/raredecay_calorimetry/src/PhotInGapParameterisation.cc +++ b/examples/advanced/raredecay_calorimetry/src/PhotInGapParameterisation.cc @@ -25,7 +25,7 @@ // // // $Id: PhotInGapParameterisation.cc,v 1.5 2006/06/29 16:25:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //#define debug diff --git a/examples/advanced/raredecay_calorimetry/src/PhotInLayerParameterisation.cc b/examples/advanced/raredecay_calorimetry/src/PhotInLayerParameterisation.cc index 54f99a8b74..7e3c4bd9cd 100644 --- a/examples/advanced/raredecay_calorimetry/src/PhotInLayerParameterisation.cc +++ b/examples/advanced/raredecay_calorimetry/src/PhotInLayerParameterisation.cc @@ -25,7 +25,7 @@ // // // $Id: PhotInLayerParameterisation.cc,v 1.3 2006/06/29 16:25:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //#define debug diff --git a/examples/advanced/raredecay_calorimetry/src/PhotInPhysicsList.cc b/examples/advanced/raredecay_calorimetry/src/PhotInPhysicsList.cc index 8d41e2f7ea..73ee221cda 100644 --- a/examples/advanced/raredecay_calorimetry/src/PhotInPhysicsList.cc +++ b/examples/advanced/raredecay_calorimetry/src/PhotInPhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: PhotInPhysicsList.cc,v 1.4 2006/06/29 16:25:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #define debug diff --git a/examples/advanced/raredecay_calorimetry/src/PhotInPrimaryGeneratorAction.cc b/examples/advanced/raredecay_calorimetry/src/PhotInPrimaryGeneratorAction.cc index 4ad9d087df..39f66a2755 100644 --- a/examples/advanced/raredecay_calorimetry/src/PhotInPrimaryGeneratorAction.cc +++ b/examples/advanced/raredecay_calorimetry/src/PhotInPrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: PhotInPrimaryGeneratorAction.cc,v 1.6 2006/06/29 16:25:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #define debug diff --git a/examples/advanced/raredecay_calorimetry/src/PhotInRun.cc b/examples/advanced/raredecay_calorimetry/src/PhotInRun.cc index 123d8445b0..4cc892433a 100644 --- a/examples/advanced/raredecay_calorimetry/src/PhotInRun.cc +++ b/examples/advanced/raredecay_calorimetry/src/PhotInRun.cc @@ -25,7 +25,7 @@ // // // $Id: PhotInRun.cc,v 1.6 2006/06/29 16:25:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //#define debug diff --git a/examples/advanced/raredecay_calorimetry/src/PhotInRunAction.cc b/examples/advanced/raredecay_calorimetry/src/PhotInRunAction.cc index 4819c2d902..e0ece5edbb 100644 --- a/examples/advanced/raredecay_calorimetry/src/PhotInRunAction.cc +++ b/examples/advanced/raredecay_calorimetry/src/PhotInRunAction.cc @@ -25,7 +25,7 @@ // // // $Id: PhotInRunAction.cc,v 1.5 2006/06/29 16:25:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //#define debug diff --git a/examples/advanced/underground_physics/History b/examples/advanced/underground_physics/History index 3ad726f139..8ded6c1aac 100644 --- a/examples/advanced/underground_physics/History +++ b/examples/advanced/underground_physics/History @@ -1,5 +1,5 @@ ------------------------------------------------------------------- -$Id: History,v 1.12 2007/06/13 15:00:48 ahoward Exp $ +$Id: History,v 1.15 2007/11/06 09:38:16 ahoward Exp $ ------------------------------------------------------------------- ========================================================= @@ -8,6 +8,17 @@ $Id: History,v 1.12 2007/06/13 15:00:48 ahoward Exp $ Category History file --------------------- +06.11.2007 - A. Howard (DMX-V09-00-02) + Corrected micrometer unit in macros from mum to um (old bug since + release 8.2) + +02.07.2007 - A. Howard (DMX-V09-00-01) + Added G4StepLimiter to physics list (correction of migration to + Geant4 9.0) + +02.07.2007 - A. Howard (DMX-V09-00-00) + Added missing header file G4hIonisation.hh to DMXPhysicsLists.cc + 06.06.2007 - A. Howard (DMX-V08-03-01) Changed fG4v71 to preferable fMinimal for msc step limitation Converted to hIonisation from hLowEnergyIonisation until diff --git a/examples/advanced/underground_physics/alpha.mac b/examples/advanced/underground_physics/alpha.mac index c898b80b80..bec4e1b5fc 100644 --- a/examples/advanced/underground_physics/alpha.mac +++ b/examples/advanced/underground_physics/alpha.mac @@ -37,7 +37,7 @@ # gun: source /dmx/gun/type Volume /dmx/gun/shape Cylinder -/dmx/gun/radius 250 mum +/dmx/gun/radius 250 um /dmx/gun/halfz 10.0 nm /dmx/gun/centre 0 0 -302.65 mm /dmx/gun/confine americium_phys diff --git a/examples/advanced/underground_physics/alpha_low.mac b/examples/advanced/underground_physics/alpha_low.mac index 4e162b406e..3425215eae 100644 --- a/examples/advanced/underground_physics/alpha_low.mac +++ b/examples/advanced/underground_physics/alpha_low.mac @@ -37,7 +37,7 @@ # gun: source /dmx/gun/type Volume /dmx/gun/shape Cylinder -/dmx/gun/radius 250 mum +/dmx/gun/radius 250 um /dmx/gun/halfz 10.0 nm /dmx/gun/centre 0 0 -302.65 mm /dmx/gun/confine americium_phys diff --git a/examples/advanced/underground_physics/include/DMXMinEkineCuts.hh b/examples/advanced/underground_physics/include/DMXMinEkineCuts.hh index 79ac587b10..b7bc3ada9b 100644 --- a/examples/advanced/underground_physics/include/DMXMinEkineCuts.hh +++ b/examples/advanced/underground_physics/include/DMXMinEkineCuts.hh @@ -25,7 +25,7 @@ // // // $Id: DMXMinEkineCuts.hh,v 1.4 2006/06/29 16:25:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/examples/advanced/underground_physics/src/DMXMinEkineCuts.cc b/examples/advanced/underground_physics/src/DMXMinEkineCuts.cc index 2249ecdb12..d435493f39 100644 --- a/examples/advanced/underground_physics/src/DMXMinEkineCuts.cc +++ b/examples/advanced/underground_physics/src/DMXMinEkineCuts.cc @@ -25,7 +25,7 @@ // // // $Id: DMXMinEkineCuts.cc,v 1.6 2006/06/29 16:26:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/advanced/underground_physics/src/DMXPhysicsList.cc b/examples/advanced/underground_physics/src/DMXPhysicsList.cc index 8b8fa9eedc..c9e2cc08b3 100644 --- a/examples/advanced/underground_physics/src/DMXPhysicsList.cc +++ b/examples/advanced/underground_physics/src/DMXPhysicsList.cc @@ -187,6 +187,7 @@ void DMXPhysicsList::ConstructProcess() // Transportation /////////////////////////////////////////////////////////// #include "DMXMaxTimeCuts.hh" #include "DMXMinEkineCuts.hh" +#include "G4StepLimiter.hh" void DMXPhysicsList::AddTransportation() { @@ -199,9 +200,13 @@ void DMXPhysicsList::AddTransportation() { G4String particleName = particle->GetParticleName(); // time cuts for ONLY neutrons: if(particleName == "neutron") - pmanager->AddDiscreteProcess(new DMXMaxTimeCuts()); + pmanager->AddDiscreteProcess(new DMXMaxTimeCuts()); // Energy cuts to kill charged (embedded in method) particles: pmanager->AddDiscreteProcess(new DMXMinEkineCuts()); + + // Step limit applied to all particles: + pmanager->AddProcess(new G4StepLimiter, -1,-1,1); + } } @@ -240,7 +245,7 @@ void DMXPhysicsList::AddTransportation() { #include "G4MuonMinusCaptureAtRest.hh" //OTHERS: -//#include "G4hIonisation.hh" // standard hadron ionisation +#include "G4hIonisation.hh" // standard hadron ionisation //em process options to allow msc step-limitation to be switched off #include "G4EmProcessOptions.hh" diff --git a/examples/advanced/xray_fluorescence/History b/examples/advanced/xray_fluorescence/History index 3e96a0f760..23659d7303 100644 --- a/examples/advanced/xray_fluorescence/History +++ b/examples/advanced/xray_fluorescence/History @@ -1,6 +1,6 @@ # $Id: History,v 1.6 2005/11/15 15:57:47 gcosmo Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # ------------------------------------------------------------------- ========================================================= diff --git a/examples/advanced/xray_telescope/include/XrayTelAnalysis.hh b/examples/advanced/xray_telescope/include/XrayTelAnalysis.hh index 6bdc18a719..953a10420a 100644 --- a/examples/advanced/xray_telescope/include/XrayTelAnalysis.hh +++ b/examples/advanced/xray_telescope/include/XrayTelAnalysis.hh @@ -25,7 +25,7 @@ // // // $Id: XrayTelAnalysis.hh,v 1.10 2006/06/29 16:29:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: A. Pfeiffer (Andreas.Pfeiffer@cern.ch) // (copy of his UserAnalyser class) diff --git a/examples/advanced/xray_telescope/src/XrayTelAnalysis.cc b/examples/advanced/xray_telescope/src/XrayTelAnalysis.cc index e24eb02970..ccff136ddb 100644 --- a/examples/advanced/xray_telescope/src/XrayTelAnalysis.cc +++ b/examples/advanced/xray_telescope/src/XrayTelAnalysis.cc @@ -25,7 +25,7 @@ // // // $Id: XrayTelAnalysis.cc,v 1.12 2006/06/29 16:30:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: A. Pfeiffer (Andreas.Pfeiffer@cern.ch) // (copied from his UserAnalyser class) diff --git a/examples/advanced/xray_telescope/test.out b/examples/advanced/xray_telescope/test.out index af4cf68e74..aab1b5d2c7 100644 --- a/examples/advanced/xray_telescope/test.out +++ b/examples/advanced/xray_telescope/test.out @@ -1,5 +1,5 @@ ********************************************** - Geant4 version $Name: geant4-09-00 $ + Geant4 version $Name: geant4-09-01 $ (19-May-2003) Copyright : Geant4 Collaboration ********************************************** diff --git a/examples/extended/analysis/A01/test.out b/examples/extended/analysis/A01/test.out index 5f3547693e..24b9c34d5b 100644 --- a/examples/extended/analysis/A01/test.out +++ b/examples/extended/analysis/A01/test.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version $Name: geant4-09-00 $ (25-June-2004) + Geant4 version $Name: geant4-09-01 $ (25-June-2004) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/analysis/AnaEx01/AnaEx01.cc b/examples/extended/analysis/AnaEx01/AnaEx01.cc index cddafb529f..27ae26d58f 100644 --- a/examples/extended/analysis/AnaEx01/AnaEx01.cc +++ b/examples/extended/analysis/AnaEx01/AnaEx01.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01.cc,v 1.14 2006/06/29 16:33:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01AnalysisManager.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01AnalysisManager.hh index 51b2c99112..ba29074fad 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01AnalysisManager.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01AnalysisManager.hh @@ -25,7 +25,7 @@ // // // $Id: AnaEx01AnalysisManager.hh,v 1.9 2006/06/29 16:33:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01CalorHit.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01CalorHit.hh index aea56f8b96..e0d960de18 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01CalorHit.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01CalorHit.hh @@ -25,7 +25,7 @@ // // // $Id: AnaEx01CalorHit.hh,v 1.4 2006/06/29 16:33:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01CalorimeterSD.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01CalorimeterSD.hh index 781693d577..2feb64b45c 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01CalorimeterSD.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01CalorimeterSD.hh @@ -25,7 +25,7 @@ // // // $Id: AnaEx01CalorimeterSD.hh,v 1.4 2006/06/29 16:33:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorConstruction.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorConstruction.hh index 88de128d76..8dfe18e8e7 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorConstruction.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: AnaEx01DetectorConstruction.hh,v 1.4 2006/06/29 16:33:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorMessenger.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorMessenger.hh index 4b7e0d6bd3..8617247d9e 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorMessenger.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: AnaEx01DetectorMessenger.hh,v 1.4 2006/06/29 16:33:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01EventAction.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01EventAction.hh index 70f5853e7b..4a7ab3eb88 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01EventAction.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: AnaEx01EventAction.hh,v 1.6 2006/06/29 16:33:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01PhysicsList.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01PhysicsList.hh index 1c34fc14e6..39b9a859e3 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01PhysicsList.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: AnaEx01PhysicsList.hh,v 1.4 2006/06/29 16:33:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorAction.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorAction.hh index ffafc089a5..9fbbad319f 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorAction.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: AnaEx01PrimaryGeneratorAction.hh,v 1.4 2006/06/29 16:33:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorMessenger.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorMessenger.hh index c0db6c3d25..663aed2a29 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorMessenger.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: AnaEx01PrimaryGeneratorMessenger.hh,v 1.4 2006/06/29 16:33:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01RunAction.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01RunAction.hh index 7133bca25b..5bd532530c 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01RunAction.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: AnaEx01RunAction.hh,v 1.6 2006/06/29 16:33:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingAction.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingAction.hh index 34b1721d30..9d21c89d9d 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingAction.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: AnaEx01SteppingAction.hh,v 1.6 2006/06/29 16:33:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingVerbose.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingVerbose.hh index c431d42c63..bd74b85c34 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingVerbose.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: AnaEx01SteppingVerbose.hh,v 1.4 2006/06/29 16:33:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01AnalysisManager.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01AnalysisManager.cc index d7851c58b9..869e2060a8 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01AnalysisManager.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01AnalysisManager.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01AnalysisManager.cc,v 1.16 2006/06/29 16:33:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Guy Barrand 14th Septembre 2000. diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01CalorHit.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01CalorHit.cc index 62e3972c08..f25a943255 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01CalorHit.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01CalorHit.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01CalorHit.cc,v 1.6 2006/06/29 16:33:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01CalorimeterSD.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01CalorimeterSD.cc index 1ca1c70c71..684b90ec6a 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01CalorimeterSD.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01CalorimeterSD.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01CalorimeterSD.cc,v 1.5 2006/06/29 16:33:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorConstruction.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorConstruction.cc index 16757221e5..c85153141f 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorConstruction.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01DetectorConstruction.cc,v 1.5 2006/06/29 16:33:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorMessenger.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorMessenger.cc index 60f6a902c1..24c6c259b8 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorMessenger.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01DetectorMessenger.cc,v 1.5 2006/06/29 16:33:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01EventAction.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01EventAction.cc index 8ca71b3cb5..f90e34e69e 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01EventAction.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01EventAction.cc,v 1.6 2006/06/29 16:33:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01PhysicsList.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01PhysicsList.cc index fba7c70e25..d94944ff89 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01PhysicsList.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01PhysicsList.cc,v 1.5 2006/06/29 16:33:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorAction.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorAction.cc index f6f7ef75e3..4020463080 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorAction.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01PrimaryGeneratorAction.cc,v 1.5 2006/06/29 16:33:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorMessenger.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorMessenger.cc index be4197e6c9..c1912728ae 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorMessenger.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01PrimaryGeneratorMessenger.cc,v 1.5 2006/06/29 16:33:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01RunAction.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01RunAction.cc index 2ce1e98f6a..1ece1e2df8 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01RunAction.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01RunAction.cc,v 1.7 2006/06/29 16:34:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingAction.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingAction.cc index 9c270f6ee9..a53cea21b7 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingAction.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01SteppingAction.cc,v 1.7 2006/06/29 16:34:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingVerbose.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingVerbose.cc index 646a64652d..c35475823c 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingVerbose.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01SteppingVerbose.cc,v 1.7 2006/06/29 16:34:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/analysis/N03Con/exampleN03Con.cc b/examples/extended/analysis/N03Con/exampleN03Con.cc index 6779168c91..5b5dbc886b 100644 --- a/examples/extended/analysis/N03Con/exampleN03Con.cc +++ b/examples/extended/analysis/N03Con/exampleN03Con.cc @@ -25,7 +25,7 @@ // // // $Id: exampleN03Con.cc,v 1.2 2007/05/26 00:24:09 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/analysis/N03Con/include/ExN03DetectorConstruction.hh b/examples/extended/analysis/N03Con/include/ExN03DetectorConstruction.hh index 5b5c9b044c..fc5a2398a4 100644 --- a/examples/extended/analysis/N03Con/include/ExN03DetectorConstruction.hh +++ b/examples/extended/analysis/N03Con/include/ExN03DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03DetectorConstruction.hh,v 1.1 2007/05/26 00:18:27 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/include/ExN03DetectorMessenger.hh b/examples/extended/analysis/N03Con/include/ExN03DetectorMessenger.hh index bdbeba1dee..85904bbdb2 100644 --- a/examples/extended/analysis/N03Con/include/ExN03DetectorMessenger.hh +++ b/examples/extended/analysis/N03Con/include/ExN03DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03DetectorMessenger.hh,v 1.1 2007/05/26 00:18:27 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/include/ExN03EventAction.hh b/examples/extended/analysis/N03Con/include/ExN03EventAction.hh index 6cd699e32b..ca28671d28 100644 --- a/examples/extended/analysis/N03Con/include/ExN03EventAction.hh +++ b/examples/extended/analysis/N03Con/include/ExN03EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03EventAction.hh,v 1.1 2007/05/26 00:18:27 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/include/ExN03EventActionMessenger.hh b/examples/extended/analysis/N03Con/include/ExN03EventActionMessenger.hh index 643894fbc4..8b45baef8f 100644 --- a/examples/extended/analysis/N03Con/include/ExN03EventActionMessenger.hh +++ b/examples/extended/analysis/N03Con/include/ExN03EventActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03EventActionMessenger.hh,v 1.1 2007/05/26 00:18:27 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/include/ExN03PhysicsList.hh b/examples/extended/analysis/N03Con/include/ExN03PhysicsList.hh index 09114f46b3..51baec7655 100644 --- a/examples/extended/analysis/N03Con/include/ExN03PhysicsList.hh +++ b/examples/extended/analysis/N03Con/include/ExN03PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03PhysicsList.hh,v 1.1 2007/05/26 00:18:27 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/include/ExN03PrimaryGeneratorAction.hh b/examples/extended/analysis/N03Con/include/ExN03PrimaryGeneratorAction.hh index 63b0a0e73e..83a81b515c 100644 --- a/examples/extended/analysis/N03Con/include/ExN03PrimaryGeneratorAction.hh +++ b/examples/extended/analysis/N03Con/include/ExN03PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03PrimaryGeneratorAction.hh,v 1.1 2007/05/26 00:18:27 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/include/ExN03PrimaryGeneratorMessenger.hh b/examples/extended/analysis/N03Con/include/ExN03PrimaryGeneratorMessenger.hh index 01b5118d03..0fe6794bb3 100644 --- a/examples/extended/analysis/N03Con/include/ExN03PrimaryGeneratorMessenger.hh +++ b/examples/extended/analysis/N03Con/include/ExN03PrimaryGeneratorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03PrimaryGeneratorMessenger.hh,v 1.1 2007/05/26 00:18:27 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/include/ExN03RunAction.hh b/examples/extended/analysis/N03Con/include/ExN03RunAction.hh index c166d2fefb..c71780ca1e 100644 --- a/examples/extended/analysis/N03Con/include/ExN03RunAction.hh +++ b/examples/extended/analysis/N03Con/include/ExN03RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03RunAction.hh,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/include/ExN03SteppingAction.hh b/examples/extended/analysis/N03Con/include/ExN03SteppingAction.hh index 69f6e9bc50..8849af11d0 100644 --- a/examples/extended/analysis/N03Con/include/ExN03SteppingAction.hh +++ b/examples/extended/analysis/N03Con/include/ExN03SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03SteppingAction.hh,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/include/ExN03SteppingVerbose.hh b/examples/extended/analysis/N03Con/include/ExN03SteppingVerbose.hh index 63a266e52a..04216aac72 100644 --- a/examples/extended/analysis/N03Con/include/ExN03SteppingVerbose.hh +++ b/examples/extended/analysis/N03Con/include/ExN03SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03SteppingVerbose.hh,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/analysis/N03Con/src/ExN03DetectorConstruction.cc b/examples/extended/analysis/N03Con/src/ExN03DetectorConstruction.cc index a28b6b22bd..ce5bb648a1 100644 --- a/examples/extended/analysis/N03Con/src/ExN03DetectorConstruction.cc +++ b/examples/extended/analysis/N03Con/src/ExN03DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03DetectorConstruction.cc,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/src/ExN03DetectorMessenger.cc b/examples/extended/analysis/N03Con/src/ExN03DetectorMessenger.cc index 6cd260bf72..0e2279f997 100644 --- a/examples/extended/analysis/N03Con/src/ExN03DetectorMessenger.cc +++ b/examples/extended/analysis/N03Con/src/ExN03DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03DetectorMessenger.cc,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/src/ExN03EventAction.cc b/examples/extended/analysis/N03Con/src/ExN03EventAction.cc index ee0136a03f..5024ed8bb2 100644 --- a/examples/extended/analysis/N03Con/src/ExN03EventAction.cc +++ b/examples/extended/analysis/N03Con/src/ExN03EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03EventAction.cc,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/src/ExN03EventActionMessenger.cc b/examples/extended/analysis/N03Con/src/ExN03EventActionMessenger.cc index 265f66d324..c5a80d25e0 100644 --- a/examples/extended/analysis/N03Con/src/ExN03EventActionMessenger.cc +++ b/examples/extended/analysis/N03Con/src/ExN03EventActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03EventActionMessenger.cc,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/src/ExN03PhysicsList.cc b/examples/extended/analysis/N03Con/src/ExN03PhysicsList.cc index 19533a9320..8d7d88c9f0 100644 --- a/examples/extended/analysis/N03Con/src/ExN03PhysicsList.cc +++ b/examples/extended/analysis/N03Con/src/ExN03PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03PhysicsList.cc,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/src/ExN03PrimaryGeneratorAction.cc b/examples/extended/analysis/N03Con/src/ExN03PrimaryGeneratorAction.cc index 21165b8eca..74218c8cf6 100644 --- a/examples/extended/analysis/N03Con/src/ExN03PrimaryGeneratorAction.cc +++ b/examples/extended/analysis/N03Con/src/ExN03PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03PrimaryGeneratorAction.cc,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/src/ExN03PrimaryGeneratorMessenger.cc b/examples/extended/analysis/N03Con/src/ExN03PrimaryGeneratorMessenger.cc index eda654c209..d1c85fe4c8 100644 --- a/examples/extended/analysis/N03Con/src/ExN03PrimaryGeneratorMessenger.cc +++ b/examples/extended/analysis/N03Con/src/ExN03PrimaryGeneratorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03PrimaryGeneratorMessenger.cc,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/src/ExN03RunAction.cc b/examples/extended/analysis/N03Con/src/ExN03RunAction.cc index 1e25f7ea62..e233cd1fbe 100644 --- a/examples/extended/analysis/N03Con/src/ExN03RunAction.cc +++ b/examples/extended/analysis/N03Con/src/ExN03RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03RunAction.cc,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/analysis/N03Con/src/ExN03SteppingAction.cc b/examples/extended/analysis/N03Con/src/ExN03SteppingAction.cc index 44bb578e7e..4fe786050b 100644 --- a/examples/extended/analysis/N03Con/src/ExN03SteppingAction.cc +++ b/examples/extended/analysis/N03Con/src/ExN03SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03SteppingAction.cc,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/analysis/N03Con/src/ExN03SteppingVerbose.cc b/examples/extended/analysis/N03Con/src/ExN03SteppingVerbose.cc index c226dc1ca8..f4c4d6f891 100644 --- a/examples/extended/analysis/N03Con/src/ExN03SteppingVerbose.cc +++ b/examples/extended/analysis/N03Con/src/ExN03SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03SteppingVerbose.cc,v 1.1 2007/05/26 00:18:28 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/biasing/B01/exampleB01.cc b/examples/extended/biasing/B01/exampleB01.cc index 3f86cc12e7..3dcc19af69 100644 --- a/examples/extended/biasing/B01/exampleB01.cc +++ b/examples/extended/biasing/B01/exampleB01.cc @@ -25,7 +25,7 @@ // // // $Id: exampleB01.cc,v 1.27 2007/06/22 13:22:09 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/biasing/B01/exampleB01.out b/examples/extended/biasing/B01/exampleB01.out index 71445902a7..7ef2bad484 100644 --- a/examples/extended/biasing/B01/exampleB01.out +++ b/examples/extended/biasing/B01/exampleB01.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -38,8 +38,13 @@ Going to assign importance: 131072, to volume: cell_18 creating importance process, paraflag is: 0 importance process paraflag is: 0 === G4ProcessPlacer::AddProcessAsSecondDoIt: for: neutron - ProcessName: ImportanceProcess -The initial Vectors: + Modifying Process Order for ProcessName: ImportanceProcess + The initial AlongStep Vectors: +GPIL Vector: + Transportation +DoIt Vector: + Transportation +The initial PostStep Vectors: GPIL Vector: Decay HadronCapture @@ -54,7 +59,14 @@ DoIt Vector: HadronFission HadronCapture Decay -The final Vectors: + The final AlongStep Vectors: +GPIL Vector: + ImportanceProcess + Transportation +DoIt Vector: + Transportation + ImportanceProcess +The final PostStep Vectors: GPIL Vector: Decay HadronCapture @@ -97,7 +109,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -110,7 +122,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -133,7 +145,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for GenericIon LateralDisplacementFlag= 0 Skin= 0 @@ -145,7 +157,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -157,7 +169,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -174,7 +186,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -192,7 +204,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -205,7 +217,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ++ ConcreteSD/Collisions id 0 ++ ConcreteSD/CollWeight id 1 ++ ConcreteSD/Population id 2 @@ -221,30 +233,37 @@ hIoni: tables are built for pi- Number of event processed : 100 ============================================================= Volume | Tr.Entering | Population | Collisions | Coll*WGT | NumWGTedE | FluxWGTedE | Av.Tr.WGT | SL | SLW | SLW_v | SLWE | SLWE_v | - cell_00 | 7 | 106 | 0 | 0 | 4.8570632 | 6.394919 | 1 | 1113.0539 | 1113.0539 | 39.997852 | 7117.8892 | 194.27209 | - cell_01 | 107 | 126 | 160 | 160 | 7.245862 | 8.6524027 | 1 | 12127.588 | 12127.588 | 350.85037 | 104932.77 | 2542.2133 | - cell_02 | 72 | 171 | 216 | 108 | 6.1900176 | 8.0820959 | 0.5 | 16630.552 | 8315.2759 | 269.99556 | 67204.857 | 1671.2773 | - cell_03 | 84 | 188 | 199 | 49.75 | 7.3393396 | 8.7216156 | 0.25 | 19277.93 | 4819.4826 | 139.36705 | 42033.675 | 1022.8621 | - cell_04 | 107 | 249 | 314 | 39.25 | 6.2237328 | 8.0359115 | 0.125 | 25982.232 | 3247.779 | 105.22726 | 26098.865 | 654.90636 | - cell_05 | 119 | 274 | 350 | 21.875 | 5.8304001 | 7.7473901 | 0.0625 | 29050.14 | 1815.6337 | 61.166969 | 14066.423 | 356.6279 | - cell_06 | 138 | 314 | 483 | 15.09375 | 5.061069 | 7.4461955 | 0.03125 | 33710.715 | 1053.4598 | 39.851437 | 7844.2679 | 201.69087 | - cell_07 | 138 | 312 | 458 | 7.15625 | 5.2852313 | 7.2039361 | 0.015625 | 35495.11 | 554.6111 | 19.756546 | 3995.3829 | 104.41791 | - cell_08 | 170 | 390 | 654 | 5.109375 | 4.9015271 | 6.698322 | 0.0078125 | 45936.052 | 358.8754 | 13.198783 | 2403.863 | 64.694191 | - cell_09 | 186 | 431 | 655 | 2.5585938 | 4.5999796 | 6.2994019 | 0.00390625 | 45880.729 | 179.2216 | 6.788147 | 1128.9889 | 31.225338 | - cell_10 | 205 | 461 | 802 | 1.5664062 | 4.0725245 | 5.9959975 | 0.001953125 | 52001.934 | 101.56628 | 4.2218939 | 608.99115 | 17.193766 | - cell_11 | 232 | 512 | 857 | 0.83691406 | 0.75577079 | 5.6832231 | 0.0009765625 | 58106.748 | 56.744871 | 12.259625 | 322.49376 | 9.2654668 | - cell_12 | 271 | 584 | 1056 | 0.515625 | 3.0370662 | 5.2506271 | 0.00048828125 | 67467.473 | 32.943102 | 1.6912862 | 172.97195 | 5.136548 | - cell_13 | 311 | 675 | 1216 | 0.296875 | 3.2604017 | 4.9243062 | 0.00024414062 | 75024.488 | 18.316525 | 0.84787155 | 90.196179 | 2.7644018 | - cell_14 | 329 | 758 | 1419 | 0.17321777 | 3.4451656 | 4.769336 | 0.00012207031 | 84584.636 | 10.325273 | 0.4478539 | 49.244695 | 1.5429309 | - cell_15 | 364 | 783 | 1540 | 0.093994141 | 0.40940195 | 4.4470643 | 6.1035156e-05 | 91736.425 | 5.599147 | 1.9622683 | 24.899767 | 0.80335646 | - cell_16 | 398 | 858 | 1703 | 0.051971436 | 0.25175739 | 4.2259526 | 3.0517578e-05 | 98797.986 | 3.0150753 | 1.6715126 | 12.741565 | 0.42081564 | - cell_17 | 413 | 932 | 1881 | 0.028701782 | 2.8791199 | 4.1895463 | 1.5258789e-05 | 107543.85 | 1.6409889 | 0.079050326 | 6.874999 | 0.22759537 | - cell_18 | 383 | 889 | 1706 | 0.013015747 | 2.8292119 | 4.1307913 | 7.6293945e-06 | 100556.11 | 0.76718227 | 0.037287182 | 3.1690698 | 0.10549334 | - cell_19 | 440 | 440 | 0 | 0 | 2.8202313 | 4.1847543 | 7.6293945e-06 | 63345.904 | 0.48329089 | 0.023651264 | 2.0224537 | 0.066702034 | + cell_00 | 15 | 115 | 0 | 0 | 6.1693238 | 7.188295 | 1 | 2532.137 | 2532.137 | 78.12431 | 18201.747 | 481.97417 | + cell_01 | 110 | 136 | 144 | 144 | 7.5216138 | 8.7754593 | 1 | 11872.863 | 11872.863 | 334.63119 | 104189.82 | 2516.9666 | + cell_02 | 74 | 196 | 217 | 108.5 | 8.1052514 | 8.7570374 | 0.5 | 17778.519 | 8889.2597 | 233.54288 | 77843.579 | 1892.9237 | + cell_03 | 91 | 210 | 207 | 51.75 | 7.5922639 | 8.5918388 | 0.25 | 19594.449 | 4898.6122 | 135.58275 | 42088.086 | 1029.38 | + cell_04 | 117 | 279 | 378 | 47.25 | 6.2266601 | 7.7116445 | 0.125 | 30673.893 | 3834.2366 | 121.13123 | 29568.269 | 754.243 | + cell_05 | 133 | 318 | 437 | 27.3125 | 5.7489132 | 7.5024664 | 0.0625 | 32642.28 | 2040.1425 | 68.533945 | 15306.101 | 393.9957 | + cell_06 | 151 | 333 | 480 | 15 | 5.1433918 | 7.0956906 | 0.03125 | 36018.114 | 1125.5661 | 40.777795 | 7986.6686 | 209.73618 | + cell_07 | 177 | 412 | 636 | 9.9375 | 0.066616337 | 6.705372 | 0.015625 | 46841.617 | 731.90027 | 1965.7765 | 4907.6636 | 130.95283 | + cell_08 | 197 | 449 | 704 | 5.5 | 3.6435456 | 6.1452679 | 0.0078125 | 50071.975 | 391.18731 | 18.16726 | 2403.9508 | 66.19324 | + cell_09 | 224 | 510 | 876 | 3.421875 | 3.8825485 | 5.8797423 | 0.00390625 | 55829.968 | 218.08581 | 9.3342389 | 1282.2884 | 36.240635 | + cell_10 | 246 | 533 | 881 | 1.7207031 | 3.8256521 | 5.9375623 | 0.001953125 | 57222.209 | 111.76213 | 4.8739454 | 663.59459 | 18.646019 | + cell_11 | 255 | 569 | 955 | 0.93261719 | 3.750962 | 5.6920465 | 0.0009765625 | 61230.795 | 59.795698 | 2.6064336 | 340.35989 | 9.7766332 | + cell_12 | 301 | 647 | 1113 | 0.54345703 | 0.40008235 | 5.086439 | 0.00048828125 | 70839.28 | 34.589492 | 13.215827 | 175.93734 | 5.2874193 | + cell_13 | 353 | 789 | 1557 | 0.38012695 | 3.1708067 | 4.7100104 | 0.00024414062 | 92751.696 | 22.644457 | 1.0519334 | 106.65563 | 3.3354775 | + cell_14 | 387 | 823 | 1653 | 0.20178223 | 2.997233 | 4.4191157 | 0.00012207031 | 99295.668 | 12.121053 | 0.5754521 | 53.564337 | 1.724764 | + cell_15 | 421 | 920 | 1933 | 0.11798096 | 0.16704108 | 4.1903824 | 6.1035156e-05 | 109936.62 | 6.7099985 | 5.5391092 | 28.11746 | 0.92525875 | + cell_16 | 466 | 1001 | 1987 | 0.060638428 | 2.7742618 | 4.1818373 | 3.0517578e-05 | 115154.22 | 3.5142278 | 0.17524981 | 14.695929 | 0.48618886 | + cell_17 | 527 | 1160 | 2312 | 0.03527832 | 0.12747609 | 4.0136176 | 1.5258789e-05 | 131119.17 | 2.0007197 | 2.118756 | 8.0301238 | 0.27009073 | + cell_18 | 538 | 1264 | 2527 | 0.01927948 | 2.4519093 | 3.9615137 | 7.6293945e-06 | 143738.51 | 1.0966378 | 0.060193964 | 4.3443456 | 0.14759014 | + cell_19 | 596 | 596 | 0 | 0 | 2.7600991 | 4.1615587 | 7.6293945e-06 | 85856.912 | 0.65503626 | 0.032889241 | 2.7259719 | 0.090777566 | ============================================= === G4ProcessPlacer::RemoveProcess: for: neutron ProcessName: ImportanceProcess, will be removed! - The initial Vectors: + The initial AlongStep Vectors: +GPIL Vector: + ImportanceProcess + Transportation +DoIt Vector: + Transportation + ImportanceProcess + The initial PostStep Vectors: GPIL Vector: Decay HadronCapture @@ -261,7 +280,12 @@ DoIt Vector: HadronFission HadronCapture Decay - The final Vectors: + The final AlongStep Vectors: +GPIL Vector: + Transportation +DoIt Vector: + Transportation + The final PostStep Vectors: GPIL Vector: Decay HadronCapture diff --git a/examples/extended/biasing/B01/include/B01DetectorConstruction.hh b/examples/extended/biasing/B01/include/B01DetectorConstruction.hh index f79b2fcb0a..b16dd678f5 100644 --- a/examples/extended/biasing/B01/include/B01DetectorConstruction.hh +++ b/examples/extended/biasing/B01/include/B01DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: B01DetectorConstruction.hh,v 1.9 2007/06/22 13:15:29 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef B01DetectorConstruction_hh diff --git a/examples/extended/biasing/B01/include/B01Run.hh b/examples/extended/biasing/B01/include/B01Run.hh index f3b35b7b80..eec22e597f 100644 --- a/examples/extended/biasing/B01/include/B01Run.hh +++ b/examples/extended/biasing/B01/include/B01Run.hh @@ -25,7 +25,7 @@ // // // $Id: B01Run.hh,v 1.4 2007/06/21 15:03:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------- // (Purpose) diff --git a/examples/extended/biasing/B01/include/B01RunAction.hh b/examples/extended/biasing/B01/include/B01RunAction.hh index 27ebe5b6bd..4e8117beb3 100644 --- a/examples/extended/biasing/B01/include/B01RunAction.hh +++ b/examples/extended/biasing/B01/include/B01RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: B01RunAction.hh,v 1.2 2007/06/21 15:03:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef B01RunAction_h diff --git a/examples/extended/biasing/B01/include/B01ScoreTable.hh b/examples/extended/biasing/B01/include/B01ScoreTable.hh index 737fc6ceb9..a032f55f44 100644 --- a/examples/extended/biasing/B01/include/B01ScoreTable.hh +++ b/examples/extended/biasing/B01/include/B01ScoreTable.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: B01ScoreTable.hh,v 1.1 2007/06/05 18:20:09 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class B01ScoreTable diff --git a/examples/extended/biasing/B01/src/B01DetectorConstruction.cc b/examples/extended/biasing/B01/src/B01DetectorConstruction.cc index bff8c40bbc..0c594a0bc9 100644 --- a/examples/extended/biasing/B01/src/B01DetectorConstruction.cc +++ b/examples/extended/biasing/B01/src/B01DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: B01DetectorConstruction.cc,v 1.20 2007/06/22 13:15:29 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4Types.hh" diff --git a/examples/extended/biasing/B01/src/B01PhysicsList.cc b/examples/extended/biasing/B01/src/B01PhysicsList.cc index 54277c0fa4..c0b8a1921d 100644 --- a/examples/extended/biasing/B01/src/B01PhysicsList.cc +++ b/examples/extended/biasing/B01/src/B01PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: B01PhysicsList.cc,v 1.8 2007/06/05 18:20:09 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/extended/biasing/B01/src/B01PrimaryGeneratorAction.cc b/examples/extended/biasing/B01/src/B01PrimaryGeneratorAction.cc index f31640ed69..bd713ea29e 100644 --- a/examples/extended/biasing/B01/src/B01PrimaryGeneratorAction.cc +++ b/examples/extended/biasing/B01/src/B01PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: B01PrimaryGeneratorAction.cc,v 1.8 2006/06/29 16:34:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/extended/biasing/B01/src/B01Run.cc b/examples/extended/biasing/B01/src/B01Run.cc index c80b7cca9d..ce452eb1b9 100644 --- a/examples/extended/biasing/B01/src/B01Run.cc +++ b/examples/extended/biasing/B01/src/B01Run.cc @@ -25,7 +25,7 @@ // // // $Id: B01Run.cc,v 1.4 2007/06/21 15:03:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //===================================================================== diff --git a/examples/extended/biasing/B01/src/B01RunAction.cc b/examples/extended/biasing/B01/src/B01RunAction.cc index 4a304f50a4..582458cced 100644 --- a/examples/extended/biasing/B01/src/B01RunAction.cc +++ b/examples/extended/biasing/B01/src/B01RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: B01RunAction.cc,v 1.4 2007/06/22 13:29:45 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "B01RunAction.hh" #include "B01Run.hh" diff --git a/examples/extended/biasing/B01/src/B01ScoreTable.cc b/examples/extended/biasing/B01/src/B01ScoreTable.cc index b0fd7a14cb..d6840d1433 100644 --- a/examples/extended/biasing/B01/src/B01ScoreTable.cc +++ b/examples/extended/biasing/B01/src/B01ScoreTable.cc @@ -25,7 +25,7 @@ // // // $Id: B01ScoreTable.cc,v 1.2 2007/06/22 13:15:29 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/examples/extended/biasing/B02/exampleB02.cc b/examples/extended/biasing/B02/exampleB02.cc index 13ec118e07..5a998b769a 100644 --- a/examples/extended/biasing/B02/exampleB02.cc +++ b/examples/extended/biasing/B02/exampleB02.cc @@ -25,7 +25,7 @@ // // // $Id: exampleB02.cc,v 1.22 2007/06/22 13:38:55 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/biasing/B02/exampleB02.out b/examples/extended/biasing/B02/exampleB02.out index 56ceeca550..435944daee 100644 --- a/examples/extended/biasing/B02/exampleB02.out +++ b/examples/extended/biasing/B02/exampleB02.out @@ -1,5 +1,5 @@ ********************************************** - Geant4 version $Name: geant4-09-00 $ + Geant4 version $Name: geant4-09-01 $ (31-Jul-2002) Copyright : Geant4 Collaboration ********************************************** diff --git a/examples/extended/biasing/B02/include/B02CellScorer.hh b/examples/extended/biasing/B02/include/B02CellScorer.hh index dc461340fd..ed3e960f55 100644 --- a/examples/extended/biasing/B02/include/B02CellScorer.hh +++ b/examples/extended/biasing/B02/include/B02CellScorer.hh @@ -25,7 +25,7 @@ // // // $Id: B02CellScorer.hh,v 1.3 2006/06/29 16:34:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class B02CellScorer diff --git a/examples/extended/biasing/B02/include/B02CellScorerStore.hh b/examples/extended/biasing/B02/include/B02CellScorerStore.hh index db32eb7476..0e2f7bb580 100644 --- a/examples/extended/biasing/B02/include/B02CellScorerStore.hh +++ b/examples/extended/biasing/B02/include/B02CellScorerStore.hh @@ -25,7 +25,7 @@ // // // $Id: B02CellScorerStore.hh,v 1.3 2006/06/29 16:34:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class B02CellScorerStore diff --git a/examples/extended/biasing/B02/include/B02DetectorConstruction.hh b/examples/extended/biasing/B02/include/B02DetectorConstruction.hh index 428b8aea85..11a903acb0 100644 --- a/examples/extended/biasing/B02/include/B02DetectorConstruction.hh +++ b/examples/extended/biasing/B02/include/B02DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: B02DetectorConstruction.hh,v 1.6 2007/06/22 13:38:55 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef B02DetectorConstruction_hh diff --git a/examples/extended/biasing/B02/include/B02ImportanceDetectorConstruction.hh b/examples/extended/biasing/B02/include/B02ImportanceDetectorConstruction.hh index de040bd147..0bf7b4cfb8 100644 --- a/examples/extended/biasing/B02/include/B02ImportanceDetectorConstruction.hh +++ b/examples/extended/biasing/B02/include/B02ImportanceDetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: B02ImportanceDetectorConstruction.hh,v 1.7 2007/06/22 13:38:55 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef B02ImportanceDetectorConstruction_hh diff --git a/examples/extended/biasing/B02/include/B02PSScoringDetectorConstruction.hh b/examples/extended/biasing/B02/include/B02PSScoringDetectorConstruction.hh index d8cd3e86a7..014fccb57c 100644 --- a/examples/extended/biasing/B02/include/B02PSScoringDetectorConstruction.hh +++ b/examples/extended/biasing/B02/include/B02PSScoringDetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: B02PSScoringDetectorConstruction.hh,v 1.2 2007/06/22 13:38:55 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef B02PSScoringDetectorConstruction_hh diff --git a/examples/extended/biasing/B02/include/B02Run.hh b/examples/extended/biasing/B02/include/B02Run.hh index 2576e8185c..649fb2fee6 100644 --- a/examples/extended/biasing/B02/include/B02Run.hh +++ b/examples/extended/biasing/B02/include/B02Run.hh @@ -25,7 +25,7 @@ // // // $Id: B02Run.hh,v 1.2 2007/06/21 15:03:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------- // (Purpose) diff --git a/examples/extended/biasing/B02/include/B02RunAction.hh b/examples/extended/biasing/B02/include/B02RunAction.hh index dac172a5c8..21f4e4525f 100644 --- a/examples/extended/biasing/B02/include/B02RunAction.hh +++ b/examples/extended/biasing/B02/include/B02RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: B02RunAction.hh,v 1.2 2007/06/21 15:03:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef B02RunAction_h diff --git a/examples/extended/biasing/B02/include/B02ScoreTable.hh b/examples/extended/biasing/B02/include/B02ScoreTable.hh index 34bedc125d..61d55693f7 100644 --- a/examples/extended/biasing/B02/include/B02ScoreTable.hh +++ b/examples/extended/biasing/B02/include/B02ScoreTable.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: B02ScoreTable.hh,v 1.1 2007/06/13 13:31:41 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class B02ScoreTable diff --git a/examples/extended/biasing/B02/include/B02ScoringDetectorConstruction.hh b/examples/extended/biasing/B02/include/B02ScoringDetectorConstruction.hh index 32c07e1346..6dbb89d522 100644 --- a/examples/extended/biasing/B02/include/B02ScoringDetectorConstruction.hh +++ b/examples/extended/biasing/B02/include/B02ScoringDetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: B02ScoringDetectorConstruction.hh,v 1.3 2006/06/29 16:34:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef B02ScoringDetectorConstruction_hh diff --git a/examples/extended/biasing/B02/src/B02CellScorer.cc b/examples/extended/biasing/B02/src/B02CellScorer.cc index f0eeac88fe..6faa65bc91 100644 --- a/examples/extended/biasing/B02/src/B02CellScorer.cc +++ b/examples/extended/biasing/B02/src/B02CellScorer.cc @@ -25,7 +25,7 @@ // // // $Id: B02CellScorer.cc,v 1.2 2006/06/29 16:34:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/examples/extended/biasing/B02/src/B02CellScorerStore.cc b/examples/extended/biasing/B02/src/B02CellScorerStore.cc index d70317dfa1..b3d2aeb1c2 100644 --- a/examples/extended/biasing/B02/src/B02CellScorerStore.cc +++ b/examples/extended/biasing/B02/src/B02CellScorerStore.cc @@ -25,7 +25,7 @@ // // // $Id: B02CellScorerStore.cc,v 1.3 2006/06/29 16:34:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/examples/extended/biasing/B02/src/B02DetectorConstruction.cc b/examples/extended/biasing/B02/src/B02DetectorConstruction.cc index e0a39a6dbd..07ea9e2fa0 100644 --- a/examples/extended/biasing/B02/src/B02DetectorConstruction.cc +++ b/examples/extended/biasing/B02/src/B02DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: B02DetectorConstruction.cc,v 1.13 2007/06/13 13:31:41 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4Types.hh" #include "globals.hh" diff --git a/examples/extended/biasing/B02/src/B02ImportanceDetectorConstruction.cc b/examples/extended/biasing/B02/src/B02ImportanceDetectorConstruction.cc index c4b431e62c..8fca2f3bc7 100644 --- a/examples/extended/biasing/B02/src/B02ImportanceDetectorConstruction.cc +++ b/examples/extended/biasing/B02/src/B02ImportanceDetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: B02ImportanceDetectorConstruction.cc,v 1.11 2007/06/22 13:38:55 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/extended/biasing/B02/src/B02PSScoringDetectorConstruction.cc b/examples/extended/biasing/B02/src/B02PSScoringDetectorConstruction.cc index 07d0662edb..7439cce7a5 100644 --- a/examples/extended/biasing/B02/src/B02PSScoringDetectorConstruction.cc +++ b/examples/extended/biasing/B02/src/B02PSScoringDetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: B02PSScoringDetectorConstruction.cc,v 1.2 2007/06/22 13:38:55 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/extended/biasing/B02/src/B02PhysicsList.cc b/examples/extended/biasing/B02/src/B02PhysicsList.cc index 447f9d0cb3..1d6599172b 100644 --- a/examples/extended/biasing/B02/src/B02PhysicsList.cc +++ b/examples/extended/biasing/B02/src/B02PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: B02PhysicsList.cc,v 1.7 2007/06/22 13:38:55 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/extended/biasing/B02/src/B02PrimaryGeneratorAction.cc b/examples/extended/biasing/B02/src/B02PrimaryGeneratorAction.cc index 4bba921e0a..256b29fecc 100644 --- a/examples/extended/biasing/B02/src/B02PrimaryGeneratorAction.cc +++ b/examples/extended/biasing/B02/src/B02PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: B02PrimaryGeneratorAction.cc,v 1.6 2006/06/29 16:34:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/extended/biasing/B02/src/B02Run.cc b/examples/extended/biasing/B02/src/B02Run.cc index eecb9a195d..3742cfa44a 100644 --- a/examples/extended/biasing/B02/src/B02Run.cc +++ b/examples/extended/biasing/B02/src/B02Run.cc @@ -25,7 +25,7 @@ // // // $Id: B02Run.cc,v 1.2 2007/06/21 15:03:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //===================================================================== diff --git a/examples/extended/biasing/B02/src/B02RunAction.cc b/examples/extended/biasing/B02/src/B02RunAction.cc index f0366e636e..6f35f293fb 100644 --- a/examples/extended/biasing/B02/src/B02RunAction.cc +++ b/examples/extended/biasing/B02/src/B02RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: B02RunAction.cc,v 1.3 2007/06/22 13:38:55 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "B02RunAction.hh" #include "B02Run.hh" diff --git a/examples/extended/biasing/B02/src/B02ScoreTable.cc b/examples/extended/biasing/B02/src/B02ScoreTable.cc index 5cc65a8b38..89d5ff2331 100644 --- a/examples/extended/biasing/B02/src/B02ScoreTable.cc +++ b/examples/extended/biasing/B02/src/B02ScoreTable.cc @@ -25,7 +25,7 @@ // // // $Id: B02ScoreTable.cc,v 1.2 2007/06/22 13:38:55 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/examples/extended/biasing/B02/src/B02ScoringDetectorConstruction.cc b/examples/extended/biasing/B02/src/B02ScoringDetectorConstruction.cc index 70567dff17..df80c125b9 100644 --- a/examples/extended/biasing/B02/src/B02ScoringDetectorConstruction.cc +++ b/examples/extended/biasing/B02/src/B02ScoringDetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: B02ScoringDetectorConstruction.cc,v 1.7 2006/06/29 16:34:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/extended/electromagnetic/TestEm0/DirectAccess.cc b/examples/extended/electromagnetic/TestEm0/DirectAccess.cc index dd6275f29c..6e238585d0 100644 --- a/examples/extended/electromagnetic/TestEm0/DirectAccess.cc +++ b/examples/extended/electromagnetic/TestEm0/DirectAccess.cc @@ -25,7 +25,7 @@ // // // $Id: DirectAccess.cc,v 1.2 2006/06/29 16:35:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // diff --git a/examples/extended/electromagnetic/TestEm0/TestEm0.cc b/examples/extended/electromagnetic/TestEm0/TestEm0.cc index 41848f5e0f..fd3105cf97 100644 --- a/examples/extended/electromagnetic/TestEm0/TestEm0.cc +++ b/examples/extended/electromagnetic/TestEm0/TestEm0.cc @@ -25,7 +25,7 @@ // // // $Id: TestEm0.cc,v 1.4 2007/06/21 17:30:53 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm0/TestEm0.out b/examples/extended/electromagnetic/TestEm0/TestEm0.out index 7a55d0b9de..a5aeb2d834 100644 --- a/examples/extended/electromagnetic/TestEm0/TestEm0.out +++ b/examples/extended/electromagnetic/TestEm0/TestEm0.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,54 +9,54 @@ ***** Table : Nb of materials = 15 ***** - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: H2liquid density: 70.800 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.923 m + Material: H2liquid density: 70.800 mg/cm3 RadL: 8.923 m Imean: 21.800 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm + Material: Water density: 1.000 g/cm3 RadL: 36.092 cm Imean: 75.000 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: WaterSteam density: 1.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 360.925 m + Material: WaterSteam density: 1.000 mg/cm3 RadL: 360.925 m Imean: 71.600 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: BGO density: 7.100 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.123 cm + Material: BGO density: 7.100 g/cm3 RadL: 1.123 cm Imean: 469.142 eV ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 15.41 % ElmAbundance 63.16 % ---> Element: Germanium (Ge) Z = 32.0 N = 72.6 A = 72.59 g/mole ElmMassFraction: 17.48 % ElmAbundance 15.79 % ---> Element: Bismuth (Bi) Z = 83.0 N = 209.0 A = 208.98 g/mole ElmMassFraction: 67.10 % ElmAbundance 21.05 % - Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm + Material: Aluminium density: 2.700 g/cm3 RadL: 8.893 cm Imean: 166.400 eV ---> Element: Aluminium ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Silicon density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm + Material: Silicon density: 2.330 g/cm3 RadL: 9.368 cm Imean: 173.600 eV ---> Element: Silicon ( ) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm + Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Imean: 187.200 eV ---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm + Material: Iron density: 7.870 g/cm3 RadL: 1.759 cm Imean: 286.000 eV ---> Element: Iron ( ) Z = 26.0 N = 55.9 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Copper density: 8.960 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.436 cm + Material: Copper density: 8.960 g/cm3 RadL: 1.436 cm Imean: 321.900 eV ---> Element: Copper ( ) Z = 29.0 N = 63.5 A = 63.55 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Germanium density: 5.323 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.301 cm + Material: Germanium density: 5.323 g/cm3 RadL: 2.301 cm Imean: 332.800 eV ---> Element: Germanium ( ) Z = 32.0 N = 72.6 A = 72.61 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Silver density: 10.500 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.543 mm + Material: Silver density: 10.500 g/cm3 RadL: 8.543 mm Imean: 470.000 eV ---> Element: Silver ( ) Z = 47.0 N = 107.9 A = 107.87 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Tungsten density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm + Material: Tungsten density: 19.300 g/cm3 RadL: 3.504 mm Imean: 725.200 eV ---> Element: Tungsten ( ) Z = 74.0 N = 183.8 A = 183.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm + Material: Lead density: 11.350 g/cm3 RadL: 5.612 mm Imean: 820.000 eV ---> Element: Lead ( ) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Uranium density: 18.950 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.166 mm + Material: Uranium density: 18.950 g/cm3 RadL: 3.166 mm Imean: 892.400 eV ---> Element: Uranium ( ) Z = 92.0 N = 238.0 A = 238.03 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % diff --git a/examples/extended/electromagnetic/TestEm0/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm0/include/DetectorConstruction.hh index d947ce66fe..0f6f27a803 100644 --- a/examples/extended/electromagnetic/TestEm0/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm0/include/DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: DetectorConstruction.hh,v 1.2 2006/06/29 16:35:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm0/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm0/include/DetectorMessenger.hh index b15f6f5333..0d110bcddc 100644 --- a/examples/extended/electromagnetic/TestEm0/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm0/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.2 2006/06/29 16:35:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm0/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm0/include/PhysListEmStandard.hh index 3561a2b1c7..f0eff3a13d 100644 --- a/examples/extended/electromagnetic/TestEm0/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm0/include/PhysListEmStandard.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.hh,v 1.2 2006/06/29 16:35:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm0/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm0/include/PhysicsList.hh index 649f419ff7..7328e9036d 100644 --- a/examples/extended/electromagnetic/TestEm0/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm0/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.2 2006/06/29 16:35:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/examples/extended/electromagnetic/TestEm0/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm0/include/PhysicsListMessenger.hh index 309ccb6266..0f7f859e1d 100644 --- a/examples/extended/electromagnetic/TestEm0/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm0/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.2 2006/06/29 16:35:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm0/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm0/include/PrimaryGeneratorAction.hh index f24fa1eb27..ed0d909ea6 100644 --- a/examples/extended/electromagnetic/TestEm0/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm0/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.2 2006/06/29 16:35:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm0/include/RunAction.hh b/examples/extended/electromagnetic/TestEm0/include/RunAction.hh index d3b3f8c562..51aa019ed5 100644 --- a/examples/extended/electromagnetic/TestEm0/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm0/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.3 2006/06/29 16:35:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm0/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm0/src/DetectorConstruction.cc index 83fdafc4f2..69a9034d9c 100644 --- a/examples/extended/electromagnetic/TestEm0/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm0/src/DetectorConstruction.cc @@ -26,7 +26,7 @@ // // $Id: DetectorConstruction.cc,v 1.9 2006/12/08 16:38:38 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm0/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm0/src/DetectorMessenger.cc index 1f470739a3..c07d62aafb 100644 --- a/examples/extended/electromagnetic/TestEm0/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm0/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.2 2006/06/29 16:35:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm0/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm0/src/PhysListEmStandard.cc index e42b7a56a0..01e8a390fc 100644 --- a/examples/extended/electromagnetic/TestEm0/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm0/src/PhysListEmStandard.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.cc,v 1.2 2006/06/29 16:35:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm0/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm0/src/PhysicsList.cc index c3bdc6dc45..dd0ac0c99c 100644 --- a/examples/extended/electromagnetic/TestEm0/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm0/src/PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.cc,v 1.5 2006/08/17 13:50:45 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm0/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm0/src/PhysicsListMessenger.cc index 344457fc34..a1b9465cce 100644 --- a/examples/extended/electromagnetic/TestEm0/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm0/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.2 2006/06/29 16:35:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm0/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm0/src/PrimaryGeneratorAction.cc index 03be671c12..667cebbcec 100644 --- a/examples/extended/electromagnetic/TestEm0/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm0/src/PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: PrimaryGeneratorAction.cc,v 1.2 2006/06/29 16:35:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm0/src/RunAction.cc b/examples/extended/electromagnetic/TestEm0/src/RunAction.cc index 59697e4cb4..d48b293e56 100644 --- a/examples/extended/electromagnetic/TestEm0/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm0/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.9 2006/12/08 16:38:38 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/History b/examples/extended/electromagnetic/TestEm1/History index 12440fd141..de589f4745 100644 --- a/examples/extended/electromagnetic/TestEm1/History +++ b/examples/extended/electromagnetic/TestEm1/History @@ -1,4 +1,4 @@ -$Id: History,v 1.80 2007/06/21 17:10:11 maire Exp $ +$Id: History,v 1.82 2007/11/12 15:48:58 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,12 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +12-11-07 mma (testem1-V09-00-01) +- HistoManager/HistoMessenger : print selected histos on ascii file + +22-07-07 V.Ivant (testem1-V09-00-00) +- add material CO2 10^-6 atm + 21-06-07 mma (testem1-V08-03-02) - make visualization only in interactive mode diff --git a/examples/extended/electromagnetic/TestEm1/README b/examples/extended/electromagnetic/TestEm1/README index e1bdcd9b6f..d9551204f2 100644 --- a/examples/extended/electromagnetic/TestEm1/README +++ b/examples/extended/electromagnetic/TestEm1/README @@ -1,4 +1,4 @@ -$Id: README,v 1.21 2006/05/15 14:38:15 maire Exp $ +$Id: README,v 1.22 2007/11/12 15:48:58 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -100,6 +100,21 @@ $Id: README,v 1.21 2006/05/15 14:38:15 maire Exp $ 1 : track length of primary particle 2 : number of steps primary particle 3 : step size of primary particle + + The histograms are managed by the HistoManager class and its Messenger. + The histos can be individually activated with the command : + /testem/histo/setHisto id nbBins valMin valMax unit + where unit is the desired unit for the histo (MeV or keV, deg or mrad, etc..) + + One can control the name of the histograms file with the command: + /testem/histo/setFileName name (default testem1) + + It is possible to choose the format of the histogram file (hbook, root, XML) + with the command /testem/histo/setFileType (hbook by default) + + It is also possible to print selected histograms on an ascii file: + /testem/histo/printHisto id + All selected histos will be written on a file name.ascii (default testem1) Note that, by default, histograms are disabled. To activate them, uncomment the flag G4ANALYSIS_USE in GNUmakefile. diff --git a/examples/extended/electromagnetic/TestEm1/TestEm1.cc b/examples/extended/electromagnetic/TestEm1/TestEm1.cc index 9a910c92c6..270688a62e 100644 --- a/examples/extended/electromagnetic/TestEm1/TestEm1.cc +++ b/examples/extended/electromagnetic/TestEm1/TestEm1.cc @@ -25,7 +25,7 @@ // // // $Id: TestEm1.cc,v 1.15 2007/06/21 17:10:11 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/TestEm1.out b/examples/extended/electromagnetic/TestEm1/TestEm1.out index 3ef8ce6b21..717dc3e786 100644 --- a/examples/extended/electromagnetic/TestEm1/TestEm1.out +++ b/examples/extended/electromagnetic/TestEm1/TestEm1.out @@ -1,58 +1,65 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 ************************************************************* -***** Table : Nb of materials = 12 ***** +***** Table : Nb of materials = 14 ***** - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: H2liquid density: 70.800 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.923 m + Material: H2liquid density: 70.800 mg/cm3 RadL: 8.923 m Imean: 21.800 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm + Material: Water density: 1.000 g/cm3 RadL: 36.092 cm Imean: 75.000 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm + Material: CO2 density: 0.001 mg/cm3 RadL: 361.873 km Imean: 90.164 eV temperature: 273.15 K pressure: 1.00 atm + ---> Element: Hydrogen (C) Z = 6.0 N = 12.0 A = 12.00 g/mole ElmMassFraction: 27.27 % ElmAbundance 33.33 % + ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 72.73 % ElmAbundance 66.67 % + + Material: D2_gas density: 0.036 mg/cm3 RadL: 13.184 km Imean: 41.800 eV temperature: 273.15 K pressure: 1.00 atm + ---> Element: D2_gas ( ) Z = 2.0 N = 2.0 A = 2.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % + + Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Imean: 187.200 eV ---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm + Material: Aluminium density: 2.700 g/cm3 RadL: 8.893 cm Imean: 166.400 eV ---> Element: Aluminium ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Silicon density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm + Material: Silicon density: 2.330 g/cm3 RadL: 9.368 cm Imean: 173.600 eV ---> Element: Silicon ( ) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Germanium density: 5.323 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.301 cm + Material: Germanium density: 5.323 g/cm3 RadL: 2.301 cm Imean: 332.800 eV ---> Element: Germanium ( ) Z = 32.0 N = 72.6 A = 72.61 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: BGO density: 7.100 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.123 cm + Material: BGO density: 7.100 g/cm3 RadL: 1.123 cm Imean: 469.142 eV ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 15.41 % ElmAbundance 63.16 % ---> Element: Germanium (Ge) Z = 32.0 N = 72.6 A = 72.59 g/mole ElmMassFraction: 17.48 % ElmAbundance 15.79 % ---> Element: Bismuth (Bi) Z = 83.0 N = 209.0 A = 208.98 g/mole ElmMassFraction: 67.10 % ElmAbundance 21.05 % - Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm + Material: Iron density: 7.870 g/cm3 RadL: 1.759 cm Imean: 286.000 eV ---> Element: Iron ( ) Z = 26.0 N = 55.9 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Tungsten density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm + Material: Tungsten density: 19.300 g/cm3 RadL: 3.504 mm Imean: 725.200 eV ---> Element: Tungsten ( ) Z = 74.0 N = 183.8 A = 183.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm + Material: Lead density: 11.350 g/cm3 RadL: 5.612 mm Imean: 820.000 eV ---> Element: Lead ( ) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Uranium density: 18.950 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.166 mm + Material: Uranium density: 18.950 g/cm3 RadL: 3.166 mm Imean: 892.400 eV ---> Element: Uranium ( ) Z = 92.0 N = 238.0 A = 238.03 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % /run/verbose 2 # -/testem/det/setMat Aluminium +/testem/det/setMat Aluminium /testem/det/setSize 10 m # /run/initialize @@ -65,23 +72,23 @@ physicsList->Construct() start. physicsList->setCut() start. PhysicsList::SetCuts:CutLength : 1 mm # -/testem/gun/setDefault +/testem/gun/setDefault /gun/particle e- /gun/energy 100 MeV # -/testem/histo/setHisto 1 100 0 50 cm #track length of primary +/testem/histo/setHisto 1 100 0 50 cm ----> SetHisto 1: total track length of primary particle (cm); 100 bins from 0 cm to 50 cm -/testem/histo/setHisto 2 100 0 300 none #nb steps of primary +/testem/histo/setHisto 2 100 0 300 none ----> SetHisto 2: nb steps of primary particle; 100 bins from 0 none to 300 none -/testem/histo/setHisto 3 200 0 20 mm #step size of primary +/testem/histo/setHisto 3 200 0 20 mm ----> SetHisto 3: step size of primary particle (mm); 200 bins from 0 mm to 20 mm # -/testem/histo/setFileType hbook +/testem/histo/setFileType hbook ###/testem/histo/setFileType root ###/testem/histo/setFileType XML # /testem/phys/setCuts 1 mm -/testem/histo/setFileName run0 +/testem/histo/setFileName run0 /run/beamOn 2000 phot: Total cross sections from Sandia parametrisation. @@ -113,7 +120,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. Subcutoff sampling in 1 regions @@ -129,7 +136,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. Subcutoff sampling in 1 regions @@ -155,7 +162,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. Subcutoff sampling in 1 regions @@ -171,7 +178,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. Subcutoff sampling in 1 regions @@ -181,7 +188,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. Subcutoff sampling in 1 regions @@ -195,7 +202,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. Subcutoff sampling in 1 regions @@ -216,7 +223,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. Subcutoff sampling in 1 regions @@ -238,7 +245,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. Subcutoff sampling in 1 regions @@ -253,7 +260,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. Subcutoff sampling in 1 regions @@ -291,7 +298,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 2000 - User=216.91s Real=248.87s Sys=1.16s + User=242.11s Real=266.38s Sys=1.58s ======================== run summary ====================== @@ -299,29 +306,29 @@ Run Summary ============================================================ - total energy deposit: 99.753 MeV + total energy deposit: 99.751 MeV - nb tracks/event neutral: 27.59 charged: 146.63 - nb steps/event neutral: 139.56 charged: 470.18 + nb tracks/event neutral: 27.991 charged: 148.21 + nb steps/event neutral: 141.08 charged: 473.11 nb of process calls per event: - eBrem eIoni msc compt phot conv annihilTransportation - 25.092 299.95 143.75 111.97 25.236 1.38 1.38 0.983 + eBrem eIoni phot msc comptTransportation conv annihil + 25.36 302.05 25.558 144.23 113.09 0.989 1.4555 1.4555 --------------------------------------------------------- Primary particle : - true Range = 11.047 cm rms = 3.6991 cm - proj Range = 9.5588 cm rms = 3.4579 cm - proj/true = 0.8653 - transverse dispersion at end = 1.666 cm - mass true Range from simulation = 29.826 g/cm2 + true Range = 10.916 cm rms = 3.7893 cm + proj Range = 9.4781 cm rms = 3.527 cm + proj/true = 0.86825 + transverse dispersion at end = 1.6503 cm + mass true Range from simulation = 29.474 g/cm2 from PhysicsTable (csda range) = 31.791 g/cm2 --------------------------------------------------------- --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 974936918, 493377930 + Current couple of seeds = 94606324, 1695920523 ---------------------------------------- # /process/eLoss/verbose 0 @@ -351,7 +358,7 @@ Index : 0 used in the geometry : Yes recalculation needed : No --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 974936918, 493377930 + Current couple of seeds = 94606324, 1695920523 ---------------------------------------- Start Run processing. @@ -359,7 +366,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 2000 - User=390.49s Real=418.67s Sys=1.24s + User=430.97s Real=458.27s Sys=1.53s ======================== run summary ====================== @@ -367,29 +374,29 @@ Run Summary ============================================================ - total energy deposit: 99.783 MeV + total energy deposit: 99.786 MeV - nb tracks/event neutral: 36.649 charged: 291.13 - nb steps/event neutral: 147.12 charged: 906.89 + nb tracks/event neutral: 36.579 charged: 290.75 + nb steps/event neutral: 146.08 charged: 905.1 nb of process calls per event: - eIoni eBrem msc compt phot conv annihilTransportation - 584.13 34.724 286.61 110.47 34.261 1.4115 1.4115 0.986 + eIoni eBrem msc phot compt conv annihilTransportation + 584.15 34.754 284.81 34.291 109.5 1.3795 1.3795 0.9155 --------------------------------------------------------- Primary particle : - true Range = 11.247 cm rms = 3.8053 cm - proj Range = 9.6902 cm rms = 3.5545 cm - proj/true = 0.86159 - transverse dispersion at end = 1.7684 cm - mass true Range from simulation = 30.366 g/cm2 + true Range = 11.189 cm rms = 3.8844 cm + proj Range = 9.772 cm rms = 3.6506 cm + proj/true = 0.87333 + transverse dispersion at end = 1.7114 cm + mass true Range from simulation = 30.211 g/cm2 from PhysicsTable (csda range) = 31.791 g/cm2 --------------------------------------------------------- --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 496431318, 2059279466 + Current couple of seeds = 1449229223, 780955839 ---------------------------------------- UserDetectorConstruction deleted. UserPhysicsList deleted. diff --git a/examples/extended/electromagnetic/TestEm1/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm1/include/DetectorConstruction.hh index 6ca0978913..97a65ab5be 100644 --- a/examples/extended/electromagnetic/TestEm1/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: DetectorConstruction.hh,v 1.2 2006/06/29 16:36:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/DetectorMessenger.hh index 05e6c06c94..6ce323a52e 100644 --- a/examples/extended/electromagnetic/TestEm1/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.3 2006/06/29 16:36:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/EventAction.hh b/examples/extended/electromagnetic/TestEm1/include/EventAction.hh index 24f13ff495..ae400e190c 100644 --- a/examples/extended/electromagnetic/TestEm1/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: EventAction.hh,v 1.3 2006/06/29 16:36:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/EventActionMessenger.hh index e7fcd2e193..261bb3824a 100644 --- a/examples/extended/electromagnetic/TestEm1/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.3 2006/06/29 16:36:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/HistoManager.hh b/examples/extended/electromagnetic/TestEm1/include/HistoManager.hh index c235fbc914..a5a219b1e7 100644 --- a/examples/extended/electromagnetic/TestEm1/include/HistoManager.hh +++ b/examples/extended/electromagnetic/TestEm1/include/HistoManager.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.hh,v 1.5 2006/06/29 16:36:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.hh,v 1.6 2007/11/12 15:48:58 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -63,7 +63,8 @@ class HistoManager void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none"); void FillHisto(G4int id, G4double e, G4double weight = 1.0); void RemoveHisto (G4int); - + void PrintHisto (G4int); + G4bool HistoExist (G4int id) {return exist[id];} G4double GetHistoUnit(G4int id) {return Unit[id];} G4double GetBinWidth (G4int id) {return Width[id];} @@ -84,8 +85,13 @@ class HistoManager G4double Vmax [MaxHisto]; G4double Unit [MaxHisto]; G4double Width[MaxHisto]; + G4bool ascii[MaxHisto]; + G4bool factoryOn; HistoMessenger* histoMessenger; + + private: + void saveAscii(); }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/HistoMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/HistoMessenger.hh index a52581cf88..e53583cbd9 100644 --- a/examples/extended/electromagnetic/TestEm1/include/HistoMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/HistoMessenger.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.hh,v 1.3 2006/06/29 16:36:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.hh,v 1.4 2007/11/12 15:48:58 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -63,6 +63,7 @@ class HistoMessenger: public G4UImessenger G4UIcmdWithAString* typeCmd; G4UIcmdWithAString* optionCmd; G4UIcommand* histoCmd; + G4UIcmdWithAnInteger* prhistoCmd; G4UIcmdWithAnInteger* rmhistoCmd; }; diff --git a/examples/extended/electromagnetic/TestEm1/include/PhysListEmLivermore.hh b/examples/extended/electromagnetic/TestEm1/include/PhysListEmLivermore.hh index 7c4e53de28..1c819cb09a 100644 --- a/examples/extended/electromagnetic/TestEm1/include/PhysListEmLivermore.hh +++ b/examples/extended/electromagnetic/TestEm1/include/PhysListEmLivermore.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.hh,v 1.2 2006/06/29 16:36:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/PhysListEmPenelope.hh b/examples/extended/electromagnetic/TestEm1/include/PhysListEmPenelope.hh index a8204f350d..ae9ec7abd0 100644 --- a/examples/extended/electromagnetic/TestEm1/include/PhysListEmPenelope.hh +++ b/examples/extended/electromagnetic/TestEm1/include/PhysListEmPenelope.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.hh,v 1.2 2006/06/29 16:36:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm1/include/PhysListEmStandard.hh index 673db1551c..e573034214 100644 --- a/examples/extended/electromagnetic/TestEm1/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm1/include/PhysListEmStandard.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: PhysListEmStandard.hh,v 1.4 2006/06/29 16:36:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysListEmStandard.hh,v 1.5 2007/11/12 15:48:58 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm1/include/PhysicsList.hh index 59cfae5c83..86c87e0d37 100644 --- a/examples/extended/electromagnetic/TestEm1/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm1/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.4 2006/06/29 16:36:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/examples/extended/electromagnetic/TestEm1/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/PhysicsListMessenger.hh index ba4da740ab..45e62df43f 100644 --- a/examples/extended/electromagnetic/TestEm1/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.3 2006/06/29 16:36:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm1/include/PrimaryGeneratorAction.hh index 45802d4add..5ba0065657 100644 --- a/examples/extended/electromagnetic/TestEm1/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.3 2006/06/29 16:36:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/PrimaryGeneratorMessenger.hh index 40e0867d55..768dd08183 100644 --- a/examples/extended/electromagnetic/TestEm1/include/PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/PrimaryGeneratorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.hh,v 1.3 2006/06/29 16:36:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/ProcessesCount.hh b/examples/extended/electromagnetic/TestEm1/include/ProcessesCount.hh index 2366cfb425..9b2773fd85 100644 --- a/examples/extended/electromagnetic/TestEm1/include/ProcessesCount.hh +++ b/examples/extended/electromagnetic/TestEm1/include/ProcessesCount.hh @@ -25,7 +25,7 @@ // // // $Id: ProcessesCount.hh,v 1.10 2006/06/29 16:36:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/RunAction.hh b/examples/extended/electromagnetic/TestEm1/include/RunAction.hh index bdb04f6364..82addf9312 100644 --- a/examples/extended/electromagnetic/TestEm1/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.8 2006/06/29 16:36:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/StepMax.hh b/examples/extended/electromagnetic/TestEm1/include/StepMax.hh index 7209a2e97d..5ceace6785 100644 --- a/examples/extended/electromagnetic/TestEm1/include/StepMax.hh +++ b/examples/extended/electromagnetic/TestEm1/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.2 2006/06/29 16:36:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/StepMaxMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/StepMaxMessenger.hh index 38f0e88cba..12d79dfc1a 100644 --- a/examples/extended/electromagnetic/TestEm1/include/StepMaxMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.2 2006/06/29 16:36:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm1/include/SteppingAction.hh index b24c0fa34a..2dde173575 100644 --- a/examples/extended/electromagnetic/TestEm1/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.4 2006/06/29 16:36:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm1/include/SteppingVerbose.hh index 9f9b34f571..a068aeaab3 100644 --- a/examples/extended/electromagnetic/TestEm1/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm1/include/SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: SteppingVerbose.hh,v 1.2 2006/06/29 16:36:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/electromagnetic/TestEm1/include/TrackingAction.hh b/examples/extended/electromagnetic/TestEm1/include/TrackingAction.hh index c72b936a9d..9a64a09839 100644 --- a/examples/extended/electromagnetic/TestEm1/include/TrackingAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/TrackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TrackingAction.hh,v 1.4 2006/06/29 16:36:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm1/src/DetectorConstruction.cc index 6771822cdd..e4691647ce 100644 --- a/examples/extended/electromagnetic/TestEm1/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/DetectorConstruction.cc @@ -25,8 +25,8 @@ // // -// $Id: DetectorConstruction.cc,v 1.6 2006/06/29 16:36:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: DetectorConstruction.cc,v 1.8 2007/11/12 15:48:58 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -82,6 +82,7 @@ void DetectorConstruction::DefineMaterials() G4double z,a; G4Element* H = new G4Element("Hydrogen" ,"H" , z= 1., a= 1.01*g/mole); + G4Element* C = new G4Element("Hydrogen" ,"C" , z= 6., a= 12.00*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); @@ -110,6 +111,13 @@ void DetectorConstruction::DefineMaterials() ///H2O->SetChemicalFormula("H_2O"); H2O->GetIonisation()->SetMeanExcitationEnergy(75.0*eV); + density = 0.001*mg/cm3; + G4Material* CO2 = new G4Material("CO2", density, ncomponents=2); + CO2->AddElement(C, natoms=1); + CO2->AddElement(O, natoms=2); + + new G4Material("D2_gas", z=2., a= 2.0141*g/mole, density= 0.036*mg/cm3); + new G4Material("liquidArgon", z=18., a= 39.95*g/mole, density= 1.390*g/cm3); new G4Material("Aluminium" , z=13., a= 26.98*g/mole, density= 2.700*g/cm3); diff --git a/examples/extended/electromagnetic/TestEm1/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/DetectorMessenger.cc index e2cdf077dd..8741106fec 100644 --- a/examples/extended/electromagnetic/TestEm1/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.3 2006/06/29 16:36:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/EventAction.cc b/examples/extended/electromagnetic/TestEm1/src/EventAction.cc index 8d351ef437..71798509b4 100644 --- a/examples/extended/electromagnetic/TestEm1/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/EventAction.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: EventAction.cc,v 1.6 2007/06/20 15:26:33 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: EventAction.cc,v 1.7 2007/11/12 15:48:58 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -64,8 +64,9 @@ void EventAction::BeginOfEventAction(const G4Event* evt) G4int evtNb = evt->GetEventID(); //printing survey - if (evtNb%printModulo == 0) + if (evtNb%printModulo == 0) { G4cout << "\n---> Begin of Event: " << evtNb << G4endl; +} //additional initializations TotalEnergyDeposit = 0.; diff --git a/examples/extended/electromagnetic/TestEm1/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/EventActionMessenger.cc index 0c8f095ccc..fe83cd2075 100644 --- a/examples/extended/electromagnetic/TestEm1/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.3 2006/06/29 16:37:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/HistoManager.cc b/examples/extended/electromagnetic/TestEm1/src/HistoManager.cc index e3e3c90a00..6bf5cb5dd2 100644 --- a/examples/extended/electromagnetic/TestEm1/src/HistoManager.cc +++ b/examples/extended/electromagnetic/TestEm1/src/HistoManager.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.cc,v 1.9 2006/06/29 16:37:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.cc,v 1.10 2007/11/12 15:48:58 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -61,6 +61,7 @@ HistoManager::HistoManager() exist[k] = false; Unit[k] = 1.0; Width[k] = 1.0; + ascii[k] = false; } histoMessenger = new HistoMessenger(this); @@ -126,6 +127,7 @@ void HistoManager::save() { #ifdef G4ANALYSIS_USE if (factoryOn) { + saveAscii(); // Write ascii file, if any tree->commit(); // Writing the histograms to the file tree->close(); // and closing the tree (and the file) G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl; @@ -210,3 +212,42 @@ void HistoManager::RemoveHisto(G4int ih) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void HistoManager::PrintHisto(G4int ih) +{ + if (ih < MaxHisto) ascii[ih] = true; + else + G4cout << "---> warning from HistoManager::PrintHisto() : histo " << ih + << "does not exist" << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include + +void HistoManager::saveAscii() +{ +#ifdef G4ANALYSIS_USE + + G4String name = fileName[0] + ".ascii"; + std::ofstream File(name, std::ios::out); + File.setf( std::ios::scientific, std::ios::floatfield ); + + //write selected histograms + for (G4int ih=0; ihbinMean(iBin) << "\t" + << histo[ih]->binHeight(iBin) + << G4endl; + } + } + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/electromagnetic/TestEm1/src/HistoMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/HistoMessenger.cc index 3076665da9..602b23c3f9 100644 --- a/examples/extended/electromagnetic/TestEm1/src/HistoMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/HistoMessenger.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.cc,v 1.5 2006/06/29 16:37:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.cc,v 1.6 2007/11/12 15:48:58 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -85,6 +85,11 @@ HistoMessenger::HistoMessenger(HistoManager* manager) unit->SetDefaultValue("none"); histoCmd->SetParameter(unit); + prhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/printHisto",this); + prhistoCmd->SetGuidance("print histo #id on ascii file"); + prhistoCmd->SetParameterName("id",false); + prhistoCmd->SetRange("id>0"); + rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this); rmhistoCmd->SetGuidance("desactivate histo #id"); rmhistoCmd->SetParameterName("id",false); @@ -96,6 +101,7 @@ HistoMessenger::HistoMessenger(HistoManager* manager) HistoMessenger::~HistoMessenger() { delete rmhistoCmd; + delete prhistoCmd; delete histoCmd; delete optionCmd; delete typeCmd; @@ -126,7 +132,10 @@ void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues) if (unit != "none") vUnit = G4UIcommand::ValueOf(unit); histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit); } - + + if (command == prhistoCmd) + histoManager->PrintHisto(prhistoCmd->GetNewIntValue(newValues)); + if (command == rmhistoCmd) histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues)); } diff --git a/examples/extended/electromagnetic/TestEm1/src/PhysListEmLivermore.cc b/examples/extended/electromagnetic/TestEm1/src/PhysListEmLivermore.cc index b393ade429..c78e02bd42 100644 --- a/examples/extended/electromagnetic/TestEm1/src/PhysListEmLivermore.cc +++ b/examples/extended/electromagnetic/TestEm1/src/PhysListEmLivermore.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.cc,v 1.4 2006/10/19 17:24:13 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/PhysListEmPenelope.cc b/examples/extended/electromagnetic/TestEm1/src/PhysListEmPenelope.cc index ebd0e1ada4..0f1de5f431 100644 --- a/examples/extended/electromagnetic/TestEm1/src/PhysListEmPenelope.cc +++ b/examples/extended/electromagnetic/TestEm1/src/PhysListEmPenelope.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.cc,v 1.3 2006/10/19 17:24:13 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm1/src/PhysListEmStandard.cc index be9f5c35b7..5ec91d7e08 100644 --- a/examples/extended/electromagnetic/TestEm1/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm1/src/PhysListEmStandard.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.cc,v 1.14 2007/06/20 15:26:33 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm1/src/PhysicsList.cc index dcd3ea3034..a82925c343 100644 --- a/examples/extended/electromagnetic/TestEm1/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm1/src/PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.cc,v 1.10 2006/10/19 17:24:13 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/PhysicsListMessenger.cc index 6a92105960..98731eb040 100644 --- a/examples/extended/electromagnetic/TestEm1/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.3 2006/06/29 16:37:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm1/src/PrimaryGeneratorAction.cc index 9197f3cb5d..373e8e8383 100644 --- a/examples/extended/electromagnetic/TestEm1/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: PrimaryGeneratorAction.cc,v 1.4 2006/06/29 16:37:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm1/src/PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/PrimaryGeneratorMessenger.cc index cc75b3b3d8..124685bdf5 100644 --- a/examples/extended/electromagnetic/TestEm1/src/PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/PrimaryGeneratorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.cc,v 1.4 2006/06/29 16:37:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/RunAction.cc b/examples/extended/electromagnetic/TestEm1/src/RunAction.cc index e292b49c1e..319fdea8b7 100644 --- a/examples/extended/electromagnetic/TestEm1/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.19 2006/06/29 16:37:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/StepMax.cc b/examples/extended/electromagnetic/TestEm1/src/StepMax.cc index 7b9cda0184..867b168339 100644 --- a/examples/extended/electromagnetic/TestEm1/src/StepMax.cc +++ b/examples/extended/electromagnetic/TestEm1/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.2 2006/06/29 16:37:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/StepMaxMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/StepMaxMessenger.cc index 597d8de599..624011f2de 100644 --- a/examples/extended/electromagnetic/TestEm1/src/StepMaxMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.2 2006/06/29 16:37:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm1/src/SteppingAction.cc index f4a8033026..bd4923e71d 100644 --- a/examples/extended/electromagnetic/TestEm1/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.cc,v 1.8 2006/06/29 16:37:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm1/src/SteppingVerbose.cc index a5cd2bb243..0795b50015 100644 --- a/examples/extended/electromagnetic/TestEm1/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm1/src/SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: SteppingVerbose.cc,v 1.2 2006/06/29 16:37:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/TrackingAction.cc b/examples/extended/electromagnetic/TestEm1/src/TrackingAction.cc index ee659a4117..d596d31221 100644 --- a/examples/extended/electromagnetic/TestEm1/src/TrackingAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/TrackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TrackingAction.cc,v 1.10 2006/06/29 16:37:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm10/History b/examples/extended/electromagnetic/TestEm10/History index dca6a8b7c6..c6d9fc6ccd 100644 --- a/examples/extended/electromagnetic/TestEm10/History +++ b/examples/extended/electromagnetic/TestEm10/History @@ -1,4 +1,4 @@ -$Id: History,v 1.20 2006/10/26 15:19:21 maire Exp $ +$Id: History,v 1.21 2007/07/27 17:52:04 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,9 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +27-07-07 V.Ivant (testem10-V09-00-00) +- Create VisManager only for interactive session, improve destructor + of Em10DetectorConstruction class 25-10-06 mma (testem10-V08-01-00) - GNUmakefile : LOADLIBS diff --git a/examples/extended/electromagnetic/TestEm10/TestEm10.cc b/examples/extended/electromagnetic/TestEm10/TestEm10.cc index 12f82a24f1..7eea5418f3 100644 --- a/examples/extended/electromagnetic/TestEm10/TestEm10.cc +++ b/examples/extended/electromagnetic/TestEm10/TestEm10.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: TestEm10.cc,v 1.8 2006/08/16 15:58:32 grichine Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: TestEm10.cc,v 1.9 2007/07/27 17:52:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -54,7 +54,7 @@ #include "Em10EventAction.hh" #include "Em10SteppingAction.hh" #include "Em10SteppingVerbose.hh" - #include "Em10TrackingAction.hh" +#include "Em10TrackingAction.hh" int main(int argc,char** argv) { @@ -83,16 +83,10 @@ int main(int argc,char** argv) runManager->SetUserInitialization(new Em10PhysicsList(detector)); #ifdef G4VIS_USE - - // visualization manager - - G4VisManager* visManager = new G4VisExecutive; - visManager->Initialize(); - + G4VisManager* visManager = 0; #endif // set user action classes - runManager->SetUserAction(new Em10PrimaryGeneratorAction(detector)); Em10RunAction* runAction = new Em10RunAction; @@ -112,31 +106,28 @@ int main(int argc,char** argv) runManager->SetUserAction( new Em10TrackingAction ); - - //Initialize G4 kernel, physics tables ... - - // runManager->Initialize(); - - // get the pointer to the User Interface manager - G4UImanager* UI = G4UImanager::GetUIpointer(); if (argc==1) // Define UI terminal for interactive mode - { - G4UIsession * session = new G4UIterminal; - UI->ApplyCommand("/control/execute init.mac"); - session->SessionStart(); - delete session; - } + { +#ifdef G4VIS_USE + visManager = new G4VisExecutive; + visManager->Initialize(); +#endif + + G4UIsession * session = new G4UIterminal; + UI->ApplyCommand("/control/execute init.mac"); + session->SessionStart(); + delete session; + } else // Batch mode - { - G4String command = "/control/execute "; - G4String fileName = argv[1]; - UI->ApplyCommand(command+fileName); - } + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } // job termination - #ifdef G4VIS_USE delete visManager; #endif diff --git a/examples/extended/electromagnetic/TestEm10/TestEm10.large_N.out b/examples/extended/electromagnetic/TestEm10/TestEm10.large_N.out index c78131a51a..63d78bc4a5 100644 --- a/examples/extended/electromagnetic/TestEm10/TestEm10.large_N.out +++ b/examples/extended/electromagnetic/TestEm10/TestEm10.large_N.out @@ -1,5 +1,5 @@ ********************************************** - Geant4 version $Name: geant4-09-00 $ + Geant4 version $Name: geant4-09-01 $ (13-Dec-2002) Copyright : Geant4 Collaboration ********************************************** diff --git a/examples/extended/electromagnetic/TestEm10/TestEm10.out b/examples/extended/electromagnetic/TestEm10/TestEm10.out index ad8eaa43cc..847e7a4f43 100644 --- a/examples/extended/electromagnetic/TestEm10/TestEm10.out +++ b/examples/extended/electromagnetic/TestEm10/TestEm10.out @@ -1,41 +1,11 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 ************************************************************* -Visualization Manager instantiating... -Visualization Manager initialising... -Registering graphics systems... - -You have successfully registered the following graphics systems. -Current available graphics systems are: - ASCIITree (ATree) - DAWNFILE (DAWNFILE) - G4HepRep (HepRepXML) - G4HepRepFile (HepRepFile) - RayTracer (RayTracer) - VRML1FILE (VRML1FILE) - VRML2FILE (VRML2FILE) - -Registering model factories... - -You have successfully registered the following model factories. -Registered model factories: - generic - drawByCharge - drawByParticleID - drawByOriginVolume - drawByAttribute - -Registered filter factories: - chargeFilter - particleFilter - originVolumeFilter - attributeFilter - hist file = g4.p11 Nb of bins in Edep plot = 65 Elow in the Edep plot = 0 @@ -56,7 +26,7 @@ fRadiatorMat = radiatorMat WorldMaterial = Air XTR model = transpM -the number of TR radiator plates = 220 +### G4VXTRenergyLoss: the number of TR radiator plates = 220 total radiator thickness = 5.94 cm plate material = Mylar gas material = Air @@ -96,7 +66,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -107,16 +77,16 @@ eBrem: tables are built for e- Lorentz Factor XTR photon number 107.6 0.0003511 -123.4 0.0006268 +123.4 0.0006267 141.5 0.00108 162.3 0.001512 186.2 0.002884 213.7 0.004693 245.2 0.006089 -281.3 0.009624 +281.3 0.009623 322.9 0.01836 370.5 0.03094 -425.3 0.04305 +425.3 0.04304 488.2 0.05196 560.3 0.06382 643.2 0.08555 @@ -157,7 +127,7 @@ Lorentz Factor XTR photon number 8.085e+04 3.149 9.283e+04 3.149 -total time for build X-ray TR energy loss tables = 0.94 s +total time for build X-ray TR energy loss tables = 1.04 s SynRad: Incoherent Synchrotron Radiation good description for long magnets at all energies @@ -167,7 +137,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -182,16 +152,16 @@ annihil: Sampling according eplus2gg model Lorentz Factor XTR photon number 107.6 0.0003511 -123.4 0.0006268 +123.4 0.0006267 141.5 0.00108 162.3 0.001512 186.2 0.002884 213.7 0.004693 245.2 0.006089 -281.3 0.009624 +281.3 0.009623 322.9 0.01836 370.5 0.03094 -425.3 0.04305 +425.3 0.04304 488.2 0.05196 560.3 0.06382 643.2 0.08555 @@ -232,7 +202,7 @@ Lorentz Factor XTR photon number 8.085e+04 3.149 9.283e+04 3.149 -total time for build X-ray TR energy loss tables = 0.94 s +total time for build X-ray TR energy loss tables = 1.05 s msc: Model variant of multiple scattering for proton Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -245,7 +215,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -257,7 +227,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -274,7 +244,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -292,7 +262,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -305,7 +275,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -338,34 +308,32 @@ Index : 2 used in the geometry : Yes recalculation needed : No Initial seed (index) = 0 Current couple of seeds = 9876, 54321 ---------------------------------------- -WARNING: Scene "refresh" not found. - /vis/scene/list to see scenes. Start Run processing. ---> Begin of Event: 0 Run terminated. Run Summary Number of events processed : 1000 - User=58.9s Real=62.83s Sys=3.91s + User=41.54s Real=42.67s Sys=1.11s ================== run summary ===================== end of Run TotNbofEvents = 1000 - mean charged track length in absorber=102.367 +- 1.84321 mm + mean charged track length in absorber=43.8791 +- 0.504856 mm - mean energy deposit in absorber=0.0509725 +- 0.000788754 MeV + mean energy deposit in absorber=0.0518824 +- 0.000873635 MeV - mean number of steps in absorber (charged) =49.275 +- 1.3154 - mean number of steps in absorber (neutral) =2.909 +- 0.0538398 + mean number of steps in absorber (charged) =8.695 +- 0.236808 + mean number of steps in absorber (neutral) =2.832 +- 0.0524574 - mean number of charged secondaries = 3.616 +- 0.0743811 + mean number of charged secondaries = 3.608 +- 0.0792864 - mean number of neutral secondaries = 0.135 +- 0.0115228 + mean number of neutral secondaries = 0.044 +- 0.00648568 - mean number of e-s =3.616 and e+s =0 + mean number of e-s =3.608 and e+s =0 -(number) transmission coeff=0.542 reflection coeff=0.07 +(number) transmission coeff=0.498 reflection coeff=0.024 energy deposit distribution -#entries=1000 #underflows=0 #overflows=50 +#entries=1000 #underflows=0 #overflows=46 bin nb Elow entries normalized 0 0 0 0 1 1.53846 0 0 @@ -375,71 +343,70 @@ Run Summary 5 7.69231 0 0 6 9.23077 0 0 7 10.7692 0 0 - 8 12.3077 3 0.003 + 8 12.3077 1 0.001 9 13.8462 1 0.001 - 10 15.3846 4 0.004 - 11 16.9231 10 0.01 - 12 18.4615 21 0.021 - 13 20 21 0.021 - 14 21.5385 18 0.018 - 15 23.0769 22 0.022 - 16 24.6154 21 0.021 - 17 26.1538 32 0.032 - 18 27.6923 30 0.03 - 19 29.2308 23 0.023 - 20 30.7692 25 0.025 - 21 32.3077 35 0.035 - 22 33.8462 26 0.026 - 23 35.3846 32 0.032 - 24 36.9231 30 0.03 + 10 15.3846 10 0.01 + 11 16.9231 18 0.018 + 12 18.4615 15 0.015 + 13 20 13 0.013 + 14 21.5385 23 0.023 + 15 23.0769 24 0.024 + 16 24.6154 29 0.029 + 17 26.1538 18 0.018 + 18 27.6923 23 0.023 + 19 29.2308 27 0.027 + 20 30.7692 34 0.034 + 21 32.3077 18 0.018 + 22 33.8462 35 0.035 + 23 35.3846 26 0.026 + 24 36.9231 38 0.038 25 38.4615 27 0.027 - 26 40 32 0.032 - 27 41.5385 27 0.027 - 28 43.0769 25 0.025 - 29 44.6154 28 0.028 - 30 46.1538 37 0.037 - 31 47.6923 25 0.025 - 32 49.2308 31 0.031 - 33 50.7692 23 0.023 - 34 52.3077 31 0.031 - 35 53.8462 16 0.016 - 36 55.3846 22 0.022 - 37 56.9231 28 0.028 - 38 58.4615 17 0.017 - 39 60 19 0.019 + 26 40 26 0.026 + 27 41.5385 24 0.024 + 28 43.0769 26 0.026 + 29 44.6154 30 0.03 + 30 46.1538 31 0.031 + 31 47.6923 23 0.023 + 32 49.2308 23 0.023 + 33 50.7692 26 0.026 + 34 52.3077 32 0.032 + 35 53.8462 25 0.025 + 36 55.3846 26 0.026 + 37 56.9231 26 0.026 + 38 58.4615 15 0.015 + 39 60 23 0.023 40 61.5385 16 0.016 - 41 63.0769 17 0.017 - 42 64.6154 17 0.017 - 43 66.1538 10 0.01 - 44 67.6923 7 0.007 - 45 69.2308 11 0.011 - 46 70.7692 12 0.012 - 47 72.3077 8 0.008 - 48 73.8462 7 0.007 - 49 75.3846 14 0.014 - 50 76.9231 11 0.011 + 41 63.0769 14 0.014 + 42 64.6154 14 0.014 + 43 66.1538 14 0.014 + 44 67.6923 13 0.013 + 45 69.2308 20 0.02 + 46 70.7692 16 0.016 + 47 72.3077 7 0.007 + 48 73.8462 9 0.009 + 49 75.3846 9 0.009 + 50 76.9231 4 0.004 51 78.4615 10 0.01 - 52 80 6 0.006 - 53 81.5385 7 0.007 - 54 83.0769 8 0.008 - 55 84.6154 4 0.004 - 56 86.1538 8 0.008 - 57 87.6923 5 0.005 - 58 89.2308 6 0.006 - 59 90.7692 2 0.002 - 60 92.3077 5 0.005 - 61 93.8462 3 0.003 - 62 95.3846 8 0.008 - 63 96.9231 3 0.003 - 64 98.4615 3 0.003 + 52 80 11 0.011 + 53 81.5385 6 0.006 + 54 83.0769 6 0.006 + 55 84.6154 10 0.01 + 56 86.1538 7 0.007 + 57 87.6923 4 0.004 + 58 89.2308 5 0.005 + 59 90.7692 6 0.006 + 60 92.3077 3 0.003 + 61 93.8462 2 0.002 + 62 95.3846 3 0.003 + 63 96.9231 4 0.004 + 64 98.4615 5 0.005 - Emp = 0.0461538 width= 0.0415385 MeV + Emp = 0.0369231 width= 0.0476923 MeV -ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1121803273, 1592404030 + Current couple of seeds = 1475465879, 1720338131 ---------------------------------------- ========= Table of registered couples ============================== @@ -467,6 +434,4 @@ Index : 2 used in the geometry : Yes recalculation needed : No ==================================================================== -Graphics systems deleted. -Visualization Manager deleting... G4 kernel has come to Quit state. diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10CalorHit.hh b/examples/extended/electromagnetic/TestEm10/include/Em10CalorHit.hh index 9f4bf52f8c..d14ad2e2ad 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10CalorHit.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10CalorHit.hh @@ -25,7 +25,7 @@ // // // $Id: Em10CalorHit.hh,v 1.4 2006/06/29 16:37:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10CalorimeterSD.hh b/examples/extended/electromagnetic/TestEm10/include/Em10CalorimeterSD.hh index 7e4414d40d..ce09d2c71b 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10CalorimeterSD.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10CalorimeterSD.hh @@ -25,7 +25,7 @@ // // // $Id: Em10CalorimeterSD.hh,v 1.3 2006/06/29 16:37:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm10/include/Em10DetectorConstruction.hh index 79f44ca157..8b99e050d3 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: Em10DetectorConstruction.hh,v 1.19 2006/06/29 16:37:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm10/include/Em10DetectorMessenger.hh index 9b7a78daf6..aece80a302 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: Em10DetectorMessenger.hh,v 1.7 2006/06/29 16:37:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10EventAction.hh b/examples/extended/electromagnetic/TestEm10/include/Em10EventAction.hh index 9766a98f7e..024544f44c 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10EventAction.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: Em10EventAction.hh,v 1.3 2006/06/29 16:37:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm10/include/Em10EventActionMessenger.hh index 295c82b048..eb1f765acd 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10EventActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: Em10EventActionMessenger.hh,v 1.3 2006/06/29 16:37:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsList.hh b/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsList.hh index 7d03aa9334..eabeeffc6e 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: Em10PhysicsList.hh,v 1.11 2006/06/29 16:37:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef Em10PhysicsList_h diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsListMessenger.hh index 34bd8e5003..25f82e0e03 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsListMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: Em10PhysicsListMessenger.hh,v 1.7 2006/06/29 16:37:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorAction.hh index e9cf7911b8..aa4ed99ef7 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: Em10PrimaryGeneratorAction.hh,v 1.3 2006/06/29 16:38:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorMessenger.hh index b3feffcfba..737541681e 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: Em10PrimaryGeneratorMessenger.hh,v 1.3 2006/06/29 16:38:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10RunAction.hh b/examples/extended/electromagnetic/TestEm10/include/Em10RunAction.hh index 3ca2c377e1..add5200875 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10RunAction.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: Em10RunAction.hh,v 1.5 2006/06/29 16:38:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10RunMessenger.hh b/examples/extended/electromagnetic/TestEm10/include/Em10RunMessenger.hh index 8b2fda1c75..3659196b2d 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10RunMessenger.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10RunMessenger.hh @@ -26,7 +26,7 @@ // // $Id: Em10RunMessenger.hh,v 1.3 2006/06/29 16:38:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10StepCut.hh b/examples/extended/electromagnetic/TestEm10/include/Em10StepCut.hh index b67fb4da84..0d23f27cf5 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10StepCut.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10StepCut.hh @@ -25,7 +25,7 @@ // // // $Id: Em10StepCut.hh,v 1.5 2006/06/29 16:38:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10SteppingAction.hh b/examples/extended/electromagnetic/TestEm10/include/Em10SteppingAction.hh index 765d365b01..ca611fb69e 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: Em10SteppingAction.hh,v 1.3 2006/06/29 16:38:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10SteppingMessenger.hh b/examples/extended/electromagnetic/TestEm10/include/Em10SteppingMessenger.hh index d1dd1ef097..e0cf669ad3 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10SteppingMessenger.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10SteppingMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: Em10SteppingMessenger.hh,v 1.3 2006/06/29 16:38:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm10/include/Em10SteppingVerbose.hh index 3612d86af9..1374fb5051 100644 --- a/examples/extended/electromagnetic/TestEm10/include/Em10SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: Em10SteppingVerbose.hh,v 1.3 2006/06/29 16:38:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm10/include/StepMax.hh b/examples/extended/electromagnetic/TestEm10/include/StepMax.hh index 476cf26592..536e6e9876 100644 --- a/examples/extended/electromagnetic/TestEm10/include/StepMax.hh +++ b/examples/extended/electromagnetic/TestEm10/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.2 2006/06/29 16:38:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // /////////////////////////////////////////////////////////////////////////////////. diff --git a/examples/extended/electromagnetic/TestEm10/include/TRTDetectorConstruction.hh b/examples/extended/electromagnetic/TestEm10/include/TRTDetectorConstruction.hh index 0834a2e3a3..387aaf903e 100644 --- a/examples/extended/electromagnetic/TestEm10/include/TRTDetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm10/include/TRTDetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: TRTDetectorConstruction.hh,v 1.3 2006/06/29 16:38:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/include/TRTMaterials.hh b/examples/extended/electromagnetic/TestEm10/include/TRTMaterials.hh index 435a6bae9b..8cf083ffb2 100644 --- a/examples/extended/electromagnetic/TestEm10/include/TRTMaterials.hh +++ b/examples/extended/electromagnetic/TestEm10/include/TRTMaterials.hh @@ -25,7 +25,7 @@ // // // $Id: TRTMaterials.hh,v 1.3 2006/06/29 16:38:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10CalorHit.cc b/examples/extended/electromagnetic/TestEm10/src/Em10CalorHit.cc index 131b654612..7590420a2e 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10CalorHit.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10CalorHit.cc @@ -25,7 +25,7 @@ // // // $Id: Em10CalorHit.cc,v 1.4 2006/06/29 16:38:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10CalorimeterSD.cc b/examples/extended/electromagnetic/TestEm10/src/Em10CalorimeterSD.cc index 5e40494dea..78f8972f4a 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10CalorimeterSD.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10CalorimeterSD.cc @@ -25,7 +25,7 @@ // // // $Id: Em10CalorimeterSD.cc,v 1.4 2006/06/29 16:38:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm10/src/Em10DetectorConstruction.cc index b3e21d96f7..28b464c8fc 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10DetectorConstruction.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: Em10DetectorConstruction.cc,v 1.31 2006/06/29 16:38:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: Em10DetectorConstruction.cc,v 1.32 2007/07/27 17:52:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -82,6 +82,7 @@ Em10DetectorConstruction::Em10DetectorConstruction() Em10DetectorConstruction::~Em10DetectorConstruction() { delete fDetectorMessenger; + delete fMat; } ////////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm10/src/Em10DetectorMessenger.cc index a533d7fa87..24b21d60ae 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: Em10DetectorMessenger.cc,v 1.11 2006/06/29 16:38:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10EventAction.cc b/examples/extended/electromagnetic/TestEm10/src/Em10EventAction.cc index 9bd5bbe52c..596b46f5bc 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10EventAction.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: Em10EventAction.cc,v 1.6 2006/06/29 16:38:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm10/src/Em10EventActionMessenger.cc index 7d761eb35c..27a308a9cd 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10EventActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: Em10EventActionMessenger.cc,v 1.4 2006/06/29 16:38:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsList.cc b/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsList.cc index 29e0802936..bf50f4ff06 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: Em10PhysicsList.cc,v 1.24 2006/06/29 16:38:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "Em10PhysicsList.hh" diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsListMessenger.cc index f2d6417295..19ece0f2df 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsListMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: Em10PhysicsListMessenger.cc,v 1.9 2006/06/29 16:38:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorAction.cc index 2e72c9c35e..1a5ba306fd 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: Em10PrimaryGeneratorAction.cc,v 1.6 2006/06/29 16:38:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorMessenger.cc index ee0a087133..2ea1069494 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: Em10PrimaryGeneratorMessenger.cc,v 1.4 2006/06/29 16:38:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10RunAction.cc b/examples/extended/electromagnetic/TestEm10/src/Em10RunAction.cc index 3f6245558b..9f601a2d96 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10RunAction.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: Em10RunAction.cc,v 1.9 2006/06/29 16:38:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10RunMessenger.cc b/examples/extended/electromagnetic/TestEm10/src/Em10RunMessenger.cc index 33f5e1e51b..97c8671c19 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10RunMessenger.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10RunMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: Em10RunMessenger.cc,v 1.5 2006/06/29 16:39:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10StepCut.cc b/examples/extended/electromagnetic/TestEm10/src/Em10StepCut.cc index e944028a11..ced5a8b765 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10StepCut.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10StepCut.cc @@ -25,7 +25,7 @@ // // // $Id: Em10StepCut.cc,v 1.3 2006/06/29 16:39:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "Em10StepCut.hh" diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10SteppingAction.cc b/examples/extended/electromagnetic/TestEm10/src/Em10SteppingAction.cc index b853902229..fce60f8a2e 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: Em10SteppingAction.cc,v 1.6 2006/06/29 16:39:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10SteppingMessenger.cc b/examples/extended/electromagnetic/TestEm10/src/Em10SteppingMessenger.cc index 0a7a072a1e..255c580151 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10SteppingMessenger.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10SteppingMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: Em10SteppingMessenger.cc,v 1.4 2006/06/29 16:39:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm10/src/Em10SteppingVerbose.cc index 7b95fba93b..013e741725 100644 --- a/examples/extended/electromagnetic/TestEm10/src/Em10SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm10/src/Em10SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: Em10SteppingVerbose.cc,v 1.6 2006/06/29 16:39:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... diff --git a/examples/extended/electromagnetic/TestEm10/src/StepMax.cc b/examples/extended/electromagnetic/TestEm10/src/StepMax.cc index 7282ff91af..099e850e51 100644 --- a/examples/extended/electromagnetic/TestEm10/src/StepMax.cc +++ b/examples/extended/electromagnetic/TestEm10/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.2 2006/06/29 16:39:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /////////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm11/History b/examples/extended/electromagnetic/TestEm11/History index 8d5572f810..4207b8a031 100644 --- a/examples/extended/electromagnetic/TestEm11/History +++ b/examples/extended/electromagnetic/TestEm11/History @@ -1,4 +1,4 @@ -$Id: History,v 1.14 2006/10/26 10:18:59 maire Exp $ +$Id: History,v 1.16 2007/11/07 17:22:15 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -6,7 +6,7 @@ $Id: History,v 1.14 2006/10/26 10:18:59 maire Exp $ ========================================================= TestEm11 History file - -------------------- + --------------------- This file should be used by the G4 example coordinator to briefly summarize all major modifications introduced in the code and keep track of all tags. @@ -15,6 +15,13 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +07-11-07 mma (testem11-V09-00-01) +- HistoManager/HistoMessenger : print selected histos on ascii file + +12-08-07 mma (testem11-V09-00-00) +- add histo 8 : energy profile as function of x/range. Same logic as TestEm12 +- add macro sandia.mac + 25-10-06 mma (testem11-V08-01-02) - GNUmakefile : LOADLIBS - remove PhysicsLists 52 and 71 diff --git a/examples/extended/electromagnetic/TestEm11/README b/examples/extended/electromagnetic/TestEm11/README index 2e644108cf..e46abaa4fc 100644 --- a/examples/extended/electromagnetic/TestEm11/README +++ b/examples/extended/electromagnetic/TestEm11/README @@ -1,4 +1,4 @@ -$Id: README,v 1.5 2006/05/15 14:41:29 maire Exp $ +$Id: README,v 1.7 2007/11/07 17:22:15 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -94,7 +94,7 @@ $Id: README,v 1.5 2006/05/15 14:41:29 maire Exp $ In order to control the accuracy of the deposition, the maximum step size of charged particles is computed automatically from the binning of - histogram 1. + histogram 1 and 8 (see HistoManager). As an example, this limitation is implemented as a 'full' process : see StepMax class and its Messenger. The 'StepMax process' is registered @@ -115,7 +115,9 @@ $Id: README,v 1.5 2006/05/15 14:41:29 maire Exp $ 5 : projected range of the primary track 6 : total track length of charged secondary tracks 7 : step size of charged secondary tracks - + 8 : longitudinal energy profile (in MeV.cm2/g), as a function of x/r0 + where r0 is the range of the primary particle + The histograms are managed by the HistoManager class and its Messenger. The histos can be individually activated with the command : /testem/histo/setHisto id nbBins valMin valMax unit @@ -126,6 +128,10 @@ $Id: README,v 1.5 2006/05/15 14:41:29 maire Exp $ It is possible to choose the format of the histogram file (hbook, root, XML) with the command /testem/histo/setFileType (hbook by default) + + It is also possible to print selected histograms on an ascii file: + /testem/histo/printHisto id + All selected histos will be written on a file name.ascii (default testem11) Note that, by default, histograms are disabled. To activate them, uncomment the flag G4ANALYSIS_USE in GNUmakefile. diff --git a/examples/extended/electromagnetic/TestEm11/TestEm11.cc b/examples/extended/electromagnetic/TestEm11/TestEm11.cc index b1f68b27da..5a15d2d753 100644 --- a/examples/extended/electromagnetic/TestEm11/TestEm11.cc +++ b/examples/extended/electromagnetic/TestEm11/TestEm11.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TestEm11.cc,v 1.3 2006/06/29 16:39:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/TestEm11.out b/examples/extended/electromagnetic/TestEm11/TestEm11.out index a54073f77c..54cbe40e75 100644 --- a/examples/extended/electromagnetic/TestEm11/TestEm11.out +++ b/examples/extended/electromagnetic/TestEm11/TestEm11.out @@ -1,42 +1,57 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 ************************************************************* -***** Table : Nb of materials = 9 ***** +***** Table : Nb of materials = 13 ***** - Material: G4_Al density: 2.699 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.896 cm + Material: G4_Al density: 2.699 g/cm3 RadL: 8.896 cm Imean: 166.000 eV ---> Element: Al (Al) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_Si density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.366 cm + Material: G4_Si density: 2.330 g/cm3 RadL: 9.366 cm Imean: 173.000 eV ---> Element: Si (Si) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_Fe density: 7.874 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.757 cm + Material: G4_Fe density: 7.874 g/cm3 RadL: 1.757 cm Imean: 286.000 eV ---> Element: Fe (Fe) Z = 26.0 N = 55.8 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_Ge density: 5.323 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.301 cm + Material: G4_Ge density: 5.323 g/cm3 RadL: 2.301 cm Imean: 350.000 eV ---> Element: Ge (Ge) Z = 32.0 N = 72.6 A = 72.61 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_W density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm + Material: G4_Mo density: 10.220 g/cm3 RadL: 9.591 mm Imean: 424.000 eV + ---> Element: Mo (Mo) Z = 42.0 N = 95.9 A = 95.93 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % + + Material: G4_Ta density: 16.654 g/cm3 RadL: 4.094 mm Imean: 718.000 eV + ---> Element: Ta (Ta) Z = 73.0 N = 180.9 A = 180.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % + + Material: G4_W density: 19.300 g/cm3 RadL: 3.504 mm Imean: 727.000 eV ---> Element: W (W) Z = 74.0 N = 183.8 A = 183.84 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_Au density: 19.320 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.344 mm + Material: G4_Au density: 19.320 g/cm3 RadL: 3.344 mm Imean: 790.000 eV ---> Element: Au (Au) Z = 79.0 N = 197.0 A = 196.97 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_Pb density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.613 mm + Material: G4_Pb density: 11.350 g/cm3 RadL: 5.613 mm Imean: 823.000 eV ---> Element: Pb (Pb) Z = 82.0 N = 207.2 A = 207.22 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_AIR density: 1.205 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 303.921 m + Material: G4_PbWO4 density: 8.280 g/cm3 RadL: 8.925 mm Imean: 541.543 eV + ---> Element: O (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 14.06 % ElmAbundance 66.67 % + ---> Element: Pb (Pb) Z = 82.0 N = 207.2 A = 207.22 g/mole ElmMassFraction: 45.54 % ElmAbundance 16.67 % + ---> Element: W (W) Z = 74.0 N = 183.8 A = 183.84 g/mole ElmMassFraction: 40.40 % ElmAbundance 16.67 % + + Material: G4_SODIUM_IODIDE density: 3.667 g/cm3 RadL: 2.588 cm Imean: 452.000 eV + ---> Element: Na (Na) Z = 11.0 N = 23.0 A = 22.99 g/mole ElmMassFraction: 15.34 % ElmAbundance 50.00 % + ---> Element: I (I) Z = 53.0 N = 126.9 A = 126.90 g/mole ElmMassFraction: 84.66 % ElmAbundance 50.00 % + + Material: G4_AIR density: 1.205 mg/cm3 RadL: 303.921 m Imean: 85.700 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: C (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 0.01 % ElmAbundance 0.02 % ---> Element: N (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 75.53 % ElmAbundance 78.44 % ---> Element: O (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 23.18 % ElmAbundance 21.07 % ---> Element: Ar (Ar) Z = 18.0 N = 39.9 A = 39.95 g/mole ElmMassFraction: 1.28 % ElmAbundance 0.47 % - Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.083 cm + Material: Water density: 1.000 g/cm3 RadL: 36.083 cm Imean: 75.000 eV ---> Element: H (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.19 % ElmAbundance 66.67 % ---> Element: O (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.81 % ElmAbundance 33.33 % @@ -74,12 +89,12 @@ Registered filter factories: /run/verbose 2 # /testem/det/setMat G4_Si -/testem/det/setSizeX 1 mm +/testem/det/setSizeX 1 mm /testem/det/setSizeYZ 1 mm # -/testem/phys/addPhysics standard # em physics +/testem/phys/addPhysics standard PhysicsList::AddPhysicsList: -###/testem/phys/addPhysics penelope # em physics +###/testem/phys/addPhysics penelope # em physics # /run/initialize userDetector->Construct() start. @@ -99,16 +114,15 @@ PhysicsList::SetCuts:CutLength : 1 mm # /testem/histo/setFileType hbook /testem/histo/setFileName testem11 -/testem/histo/setHisto 1 100 0. 1. mm #edep profile +/testem/histo/setHisto 1 100 0. 1. mm ----> SetHisto 1: Edep (MeV/mm) along absorber (mm); 100 bins from 0 mm to 1 mm - stepMax = 10 um -/testem/histo/setHisto 2 102 0. 510. keV #total Edep +/testem/histo/setHisto 2 102 0. 510. keV ----> SetHisto 2: total Energy deposited in absorber (keV); 102 bins from 0 keV to 510 keV -/testem/histo/setHisto 3 100 0. 2. mm #track length +/testem/histo/setHisto 3 100 0. 2. mm ----> SetHisto 3: true track length of the primary particle (mm); 100 bins from 0 mm to 2 mm -/testem/histo/setHisto 4 100 0. 200. um #step length +/testem/histo/setHisto 4 100 0. 200. um ----> SetHisto 4: true step size of the primary particle (um); 100 bins from 0 um to 200 um -/testem/histo/setHisto 5 100 0. 1. mm #proj range +/testem/histo/setHisto 5 100 0. 1. mm ----> SetHisto 5: projected range of the primary particle (mm); 100 bins from 0 mm to 1 mm # /testem/event/printModulo 10000 @@ -138,7 +152,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. eBrem: tables are built for e- @@ -152,7 +166,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. eBrem: tables are built for e+ @@ -176,7 +190,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. msc: Model variant of multiple scattering for GenericIon @@ -191,7 +205,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. hIoni: tables are built for anti_proton @@ -200,7 +214,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. msc: Model variant of multiple scattering for mu+ @@ -213,7 +227,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. muBrems: tables are built for mu+ @@ -231,7 +245,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. muBrems: tables are built for mu- @@ -250,7 +264,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. msc: Model variant of multiple scattering for pi- @@ -264,7 +278,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. Region -- appears in world volume @@ -295,6 +309,8 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Initial seed (index) = 0 Current couple of seeds = 9876, 54321 ---------------------------------------- + +---> stepMax from HistoManager = 10 um Start Run processing. ---> Begin of Event: 0 @@ -303,7 +319,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 20000 - User=310.07s Real=547.62s Sys=15.53s + User=339.3s Real=592.59s Sys=61.35s ======================== run summary ====================== @@ -311,20 +327,20 @@ Run Summary ============================================================ - Total Energy deposited = 449.883 keV +- 102.538 keV + Total Energy deposited = 449.481 keV +- 103.918 keV - Track length of primary track = 877.459 um +- 187.170 um + Track length of primary track = 875.564 um +- 190.543 um Range from EmCalculator = 937.365 um (from full dE/dx) - Projected range = 337.189 um +- 204.671 um + Projected range = 339.800 um +- 207.947 um - Nb of steps of primary track = 88.26 +- 18.70 Step size= 9.933 um +- 93.084 nm + Nb of steps of primary track = 88.07 +- 19.04 Step size= 9.933 um +- 90.371 nm - absorbed = 78.62 % transmit = 5.64 % reflected = 15.74 % + absorbed = 78.56 % transmit = 5.51 % reflected = 15.93 % --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1888543794, 1916470412 + Current couple of seeds = 372068914, 58752001 ---------------------------------------- Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/extended/electromagnetic/TestEm11/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm11/include/DetectorConstruction.hh index 97e9e87e76..1fd8e219de 100644 --- a/examples/extended/electromagnetic/TestEm11/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm11/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.2 2006/06/29 16:39:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm11/include/DetectorMessenger.hh index bc1445c0f9..0e8922b4a1 100644 --- a/examples/extended/electromagnetic/TestEm11/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm11/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.2 2006/06/29 16:39:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/EventAction.hh b/examples/extended/electromagnetic/TestEm11/include/EventAction.hh index 2e1dafffa7..5ad205658d 100644 --- a/examples/extended/electromagnetic/TestEm11/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm11/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.2 2006/06/29 16:39:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm11/include/EventActionMessenger.hh index 7adfd63cb8..6cc7ac89aa 100644 --- a/examples/extended/electromagnetic/TestEm11/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm11/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.2 2006/06/29 16:39:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/HistoManager.hh b/examples/extended/electromagnetic/TestEm11/include/HistoManager.hh index 7551724cfc..05a7c2b2f3 100644 --- a/examples/extended/electromagnetic/TestEm11/include/HistoManager.hh +++ b/examples/extended/electromagnetic/TestEm11/include/HistoManager.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.hh,v 1.3 2006/06/29 16:39:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.hh,v 1.5 2007/11/07 17:22:15 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -44,7 +44,7 @@ namespace AIDA { class HistoMessenger; -const G4int MaxHisto = 8; +const G4int MaxHisto = 9; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -64,12 +64,15 @@ class HistoManager void FillHisto(G4int id, G4double e, G4double weight = 1.0); void RemoveHisto (G4int); void Scale (G4int, G4double); + void PrintHisto (G4int); G4bool HistoExist (G4int id) {return exist[id];} G4double GetHistoUnit(G4int id) {return Unit[id];} G4double GetBinWidth (G4int id) {return Width[id];} - G4double GetStepMax() {return stepMax;}; + void SetcsdaRange(G4double val) {csdaRange = val; rangeFlag = true;}; + G4double GetcsdaRange() {return csdaRange;}; + G4double ComputeStepMax(G4double); private: @@ -87,10 +90,16 @@ class HistoManager G4double Vmax [MaxHisto]; G4double Unit [MaxHisto]; G4double Width[MaxHisto]; + G4bool ascii[MaxHisto]; + G4bool factoryOn; HistoMessenger* histoMessenger; - G4double stepMax; + G4bool rangeFlag; + G4double csdaRange; + + private: + void saveAscii(); }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/HistoMessenger.hh b/examples/extended/electromagnetic/TestEm11/include/HistoMessenger.hh index 1df80bbf1f..2d7604c02d 100644 --- a/examples/extended/electromagnetic/TestEm11/include/HistoMessenger.hh +++ b/examples/extended/electromagnetic/TestEm11/include/HistoMessenger.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.hh,v 1.2 2006/06/29 16:39:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.hh,v 1.4 2007/11/07 17:22:16 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -42,6 +42,7 @@ class G4UIdirectory; class G4UIcommand; class G4UIcmdWithAString; class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -56,14 +57,15 @@ class HistoMessenger: public G4UImessenger private: - HistoManager* histoManager; + HistoManager* histoManager; - G4UIdirectory* histoDir; - G4UIcmdWithAString* factoryCmd; - G4UIcmdWithAString* typeCmd; - G4UIcommand* histoCmd; - G4UIcmdWithAnInteger* rmhistoCmd; - + G4UIdirectory* histoDir; + G4UIcmdWithAString* factoryCmd; + G4UIcmdWithAString* typeCmd; + G4UIcommand* histoCmd; + G4UIcmdWithAnInteger* prhistoCmd; + G4UIcmdWithAnInteger* rmhistoCmd; + G4UIcmdWithADoubleAndUnit* csdaCmd; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/PhysListEmLivermore.hh b/examples/extended/electromagnetic/TestEm11/include/PhysListEmLivermore.hh index 87835255dc..436a3b9bab 100644 --- a/examples/extended/electromagnetic/TestEm11/include/PhysListEmLivermore.hh +++ b/examples/extended/electromagnetic/TestEm11/include/PhysListEmLivermore.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.hh,v 1.2 2006/06/29 16:39:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/PhysListEmPenelope.hh b/examples/extended/electromagnetic/TestEm11/include/PhysListEmPenelope.hh index 88a3bd238d..e2a27471cb 100644 --- a/examples/extended/electromagnetic/TestEm11/include/PhysListEmPenelope.hh +++ b/examples/extended/electromagnetic/TestEm11/include/PhysListEmPenelope.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.hh,v 1.2 2006/06/29 16:39:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm11/include/PhysListEmStandard.hh index b8edf93502..fd0e4dbb33 100644 --- a/examples/extended/electromagnetic/TestEm11/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm11/include/PhysListEmStandard.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.hh,v 1.2 2006/06/29 16:39:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm11/include/PhysicsList.hh index 37e9b68196..68a6f5d555 100644 --- a/examples/extended/electromagnetic/TestEm11/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm11/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.3 2006/06/29 16:39:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/examples/extended/electromagnetic/TestEm11/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm11/include/PhysicsListMessenger.hh index a97a168bf3..ff82f181c1 100644 --- a/examples/extended/electromagnetic/TestEm11/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm11/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.2 2006/06/29 16:39:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm11/include/PrimaryGeneratorAction.hh index a7771c4ea0..efe1d4e981 100644 --- a/examples/extended/electromagnetic/TestEm11/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm11/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.2 2006/06/29 16:39:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm11/include/PrimaryGeneratorMessenger.hh index 9d4987c9a0..de89dd5693 100644 --- a/examples/extended/electromagnetic/TestEm11/include/PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm11/include/PrimaryGeneratorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.hh,v 1.2 2006/06/29 16:39:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/RunAction.hh b/examples/extended/electromagnetic/TestEm11/include/RunAction.hh index cd79503c48..60bfb7bad3 100644 --- a/examples/extended/electromagnetic/TestEm11/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm11/include/RunAction.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: RunAction.hh,v 1.2 2006/06/29 16:39:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: RunAction.hh,v 1.3 2007/08/19 20:52:53 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -74,6 +74,8 @@ class RunAction : public G4UserRunAction G4int nbOfSteps, nbOfSteps2; G4double stepSize, stepSize2; G4int status[3]; + + G4double csdaRange; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/StepMax.hh b/examples/extended/electromagnetic/TestEm11/include/StepMax.hh index 4ee28bce95..17c82e4e04 100644 --- a/examples/extended/electromagnetic/TestEm11/include/StepMax.hh +++ b/examples/extended/electromagnetic/TestEm11/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.3 2006/06/29 16:39:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/StepMaxMessenger.hh b/examples/extended/electromagnetic/TestEm11/include/StepMaxMessenger.hh index 134c279b0c..963f4776af 100644 --- a/examples/extended/electromagnetic/TestEm11/include/StepMaxMessenger.hh +++ b/examples/extended/electromagnetic/TestEm11/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.3 2006/06/29 16:40:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm11/include/SteppingAction.hh index 5594732d3e..c0b5ac556b 100644 --- a/examples/extended/electromagnetic/TestEm11/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm11/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.2 2006/06/29 16:40:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm11/include/SteppingVerbose.hh index b2e4dd8a9f..8af7553ad8 100644 --- a/examples/extended/electromagnetic/TestEm11/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm11/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.2 2006/06/29 16:40:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/include/TrackingAction.hh b/examples/extended/electromagnetic/TestEm11/include/TrackingAction.hh index af2b6c343e..4ab6713023 100644 --- a/examples/extended/electromagnetic/TestEm11/include/TrackingAction.hh +++ b/examples/extended/electromagnetic/TestEm11/include/TrackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TrackingAction.hh,v 1.2 2006/06/29 16:40:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/range.mac b/examples/extended/electromagnetic/TestEm11/range.mac index 7480e26fbf..639989a2d2 100644 --- a/examples/extended/electromagnetic/TestEm11/range.mac +++ b/examples/extended/electromagnetic/TestEm11/range.mac @@ -1,4 +1,4 @@ -# $Id: range.mac,v 1.3 2006/09/18 17:26:20 maire Exp $ +# $Id: range.mac,v 1.4 2007/08/19 20:52:53 maire Exp $ # # Macro file for "TestEm11.cc" # @@ -26,9 +26,9 @@ /process/eLoss/fluct false # /gun/particle e- -/gun/energy 500 keV +/gun/energy 600 keV # -/testem/histo/setFileName range.std +/testem/histo/setFileName range /testem/histo/setFileType hbook /testem/histo/setHisto 3 200 0 4 mm # csda range # diff --git a/examples/extended/electromagnetic/TestEm11/sandia.mac b/examples/extended/electromagnetic/TestEm11/sandia.mac new file mode 100644 index 0000000000..e06a8a3acc --- /dev/null +++ b/examples/extended/electromagnetic/TestEm11/sandia.mac @@ -0,0 +1,30 @@ +# $Id: sandia.mac,v 1.1 2007/08/19 20:52:53 maire Exp $ +# +# limit the step size from histo 8 +# +# G.J.Lockwood et al. Sandia report SAND79-0414.UC-34a, February 1987 +# O.Kadri et al. NIM B 258 (2007) 381 +# +/control/verbose 2 +/run/verbose 2 +# +/testem/det/setMat G4_Al +###/testem/det/setMat G4_Ta +/testem/det/setSizeX 1 cm +/testem/det/setSizeYZ 1 cm +# +/testem/phys/addPhysics standard # em physics +# +/run/initialize +# +/gun/particle e- +/gun/energy 500 keV +# +/testem/histo/setFileType hbook +/testem/histo/setFileName Al.500keV +/testem/histo/setHisto 8 100 0. 1.0 none #normalized Edep profile +###/testem/histo/setHisto 8 100 0. 0.5 none +# +/testem/event/printModulo 10000 +# +/run/beamOn 100000 diff --git a/examples/extended/electromagnetic/TestEm11/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm11/src/DetectorConstruction.cc index c5697e48d4..926d8f3266 100644 --- a/examples/extended/electromagnetic/TestEm11/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm11/src/DetectorConstruction.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: DetectorConstruction.cc,v 1.6 2006/10/26 10:18:59 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: DetectorConstruction.cc,v 1.8 2007/11/07 17:22:16 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -91,9 +91,13 @@ void DetectorConstruction::DefineMaterials() man->FindOrBuildMaterial("G4_Si", isotopes); man->FindOrBuildMaterial("G4_Fe", isotopes); man->FindOrBuildMaterial("G4_Ge", isotopes); + man->FindOrBuildMaterial("G4_Mo", isotopes); + man->FindOrBuildMaterial("G4_Ta", isotopes); man->FindOrBuildMaterial("G4_W" , isotopes); man->FindOrBuildMaterial("G4_Au", isotopes); - man->FindOrBuildMaterial("G4_Pb", isotopes); + man->FindOrBuildMaterial("G4_Pb", isotopes); + man->FindOrBuildMaterial("G4_PbWO4", isotopes); + man->FindOrBuildMaterial("G4_SODIUM_IODIDE", isotopes); man->FindOrBuildMaterial("G4_AIR" , isotopes); ///man->FindOrBuildMaterial("G4_WATER", isotopes); diff --git a/examples/extended/electromagnetic/TestEm11/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm11/src/DetectorMessenger.cc index 3194b9437f..4ca7e5b220 100644 --- a/examples/extended/electromagnetic/TestEm11/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm11/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.2 2006/06/29 16:40:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/EventAction.cc b/examples/extended/electromagnetic/TestEm11/src/EventAction.cc index 8b12590bf7..cb97edda52 100644 --- a/examples/extended/electromagnetic/TestEm11/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm11/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.2 2006/06/29 16:40:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm11/src/EventActionMessenger.cc index d5856a16fe..54c3c07707 100644 --- a/examples/extended/electromagnetic/TestEm11/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm11/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.2 2006/06/29 16:40:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/HistoManager.cc b/examples/extended/electromagnetic/TestEm11/src/HistoManager.cc index 4559c857e8..fd2c99cb87 100644 --- a/examples/extended/electromagnetic/TestEm11/src/HistoManager.cc +++ b/examples/extended/electromagnetic/TestEm11/src/HistoManager.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.cc,v 1.4 2006/07/06 15:56:38 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.cc,v 1.6 2007/11/07 17:22:16 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -52,7 +52,7 @@ HistoManager::HistoManager() } #endif - fileName[0] = "testem11"; + fileName[0] = "dummy"; fileType = "hbook"; fileOption = "--noErrors uncompress"; // histograms @@ -61,11 +61,13 @@ HistoManager::HistoManager() exist[k] = false; Unit[k] = 1.0; Width[k] = 1.0; + ascii[k] = false; } histoMessenger = new HistoMessenger(this); - - stepMax = DBL_MAX; + + rangeFlag = false; + csdaRange = DBL_MAX; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -128,6 +130,7 @@ void HistoManager::save() { #ifdef G4ANALYSIS_USE if (factoryOn) { + saveAscii(); // Write ascii file, if any tree->commit(); // Writing the histograms to the file tree->close(); // and closing the tree (and the file) G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl; @@ -164,7 +167,7 @@ void HistoManager::SetHisto(G4int ih, return; } - const G4String id[] = { "0", "1", "2", "3", "4", "5", "6", "7" }; + const G4String id[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8" }; const G4String title[] = { "dummy", //0 "Edep (MeV/mm) along absorber", //1 @@ -173,7 +176,8 @@ void HistoManager::SetHisto(G4int ih, "true step size of the primary particle", //4 "projected range of the primary particle", //5 "true track length of charged secondaries", //6 - "true step size of charged secondaries" //7 + "true step size of charged secondaries", //7 + "Edep (MeV.cm2/g) along x/r0" //8 }; @@ -197,15 +201,7 @@ void HistoManager::SetHisto(G4int ih, G4cout << "----> SetHisto " << ih << ": " << titl << "; " << nbins << " bins from " - << vmin << " " << unit << " to " << vmax << " " << unit << G4endl; - - // compute constraint on stepMax from histos 1 - // - G4double frac = 1.; - if (ih == 1) { - stepMax = frac*Width[ih]; - G4cout << " stepMax = " << G4BestUnit(stepMax,"Length") << G4endl; - } + << vmin << " " << unit << " to " << vmax << " " << unit << G4endl; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -237,3 +233,68 @@ void HistoManager::Scale(G4int ih, G4double fac) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void HistoManager::PrintHisto(G4int ih) +{ + if (ih < MaxHisto) ascii[ih] = true; + else + G4cout << "---> warning from HistoManager::PrintHisto() : histo " << ih + << "does not exist" << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include + +void HistoManager::saveAscii() +{ +#ifdef G4ANALYSIS_USE + + G4String name = fileName[0] + ".ascii"; + std::ofstream File(name, std::ios::out); + File.setf( std::ios::scientific, std::ios::floatfield ); + + //write selected histograms + for (G4int ih=0; ihbinMean(iBin) << "\t" + << histo[ih]->binHeight(iBin) + << G4endl; + } + } + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double HistoManager::ComputeStepMax(G4double range) +{ + // compute constraint on stepMax from histos 1 and 8 + // + G4double stepMax = DBL_MAX; + G4double frac = 1.; + + G4int ih = 1; + if (exist[ih]) { + stepMax = frac*Width[ih]; + } + + ih = 8; + if (exist[ih]) { + if (!rangeFlag) csdaRange = range; + if (csdaRange > 0.) stepMax = std::min(stepMax,frac*Width[ih]*csdaRange); + } + + G4cout << "\n---> stepMax from HistoManager = " + << G4BestUnit(stepMax,"Length") << G4endl; + + return stepMax; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/electromagnetic/TestEm11/src/HistoMessenger.cc b/examples/extended/electromagnetic/TestEm11/src/HistoMessenger.cc index ae4d4f9145..19adfacded 100644 --- a/examples/extended/electromagnetic/TestEm11/src/HistoMessenger.cc +++ b/examples/extended/electromagnetic/TestEm11/src/HistoMessenger.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.cc,v 1.3 2006/06/29 16:40:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.cc,v 1.5 2007/11/07 17:22:16 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -39,6 +39,7 @@ #include "G4UIparameter.hh" #include "G4UIcmdWithAString.hh" #include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -82,17 +83,30 @@ HistoMessenger::HistoMessenger(HistoManager* manager) unit->SetDefaultValue("none"); histoCmd->SetParameter(unit); + prhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/printHisto",this); + prhistoCmd->SetGuidance("print histo #id on ascii file"); + prhistoCmd->SetParameterName("id",false); + prhistoCmd->SetRange("id>0"); + rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this); rmhistoCmd->SetGuidance("desactivate histo #id"); rmhistoCmd->SetParameterName("id",false); rmhistoCmd->SetRange("id>0"); + + csdaCmd = new G4UIcmdWithADoubleAndUnit("/testem/histo/setcsdaRange",this); + csdaCmd->SetGuidance("Set csda range for normalisation"); + csdaCmd->SetParameterName("csda",false); + csdaCmd->SetRange("csda>0."); + csdaCmd->SetUnitCategory("Length"); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... HistoMessenger::~HistoMessenger() { + delete csdaCmd; delete rmhistoCmd; + delete prhistoCmd; delete histoCmd; delete typeCmd; delete factoryCmd; @@ -119,9 +133,15 @@ void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues) if (unit != "none") vUnit = G4UIcommand::ValueOf(unit); histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit); } - + + if (command == prhistoCmd) + histoManager->PrintHisto(prhistoCmd->GetNewIntValue(newValues)); + if (command == rmhistoCmd) - histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues)); + histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues)); + + if (command == csdaCmd) + histoManager->SetcsdaRange(csdaCmd->GetNewDoubleValue(newValues)); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/PhysListEmLivermore.cc b/examples/extended/electromagnetic/TestEm11/src/PhysListEmLivermore.cc index 2192779a71..2469077cda 100644 --- a/examples/extended/electromagnetic/TestEm11/src/PhysListEmLivermore.cc +++ b/examples/extended/electromagnetic/TestEm11/src/PhysListEmLivermore.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.cc,v 1.4 2006/09/18 17:26:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/PhysListEmPenelope.cc b/examples/extended/electromagnetic/TestEm11/src/PhysListEmPenelope.cc index 1faaafd49d..45eb3a51d7 100644 --- a/examples/extended/electromagnetic/TestEm11/src/PhysListEmPenelope.cc +++ b/examples/extended/electromagnetic/TestEm11/src/PhysListEmPenelope.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.cc,v 1.3 2006/09/18 17:26:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm11/src/PhysListEmStandard.cc index 22809bec7f..4e35202488 100644 --- a/examples/extended/electromagnetic/TestEm11/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm11/src/PhysListEmStandard.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.cc,v 1.3 2006/06/29 16:40:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm11/src/PhysicsList.cc index 4df7f0f7d9..52c35978cb 100644 --- a/examples/extended/electromagnetic/TestEm11/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm11/src/PhysicsList.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsList.cc,v 1.5 2006/10/26 10:18:59 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm11/src/PhysicsListMessenger.cc index f395cb63d7..d50a41f315 100644 --- a/examples/extended/electromagnetic/TestEm11/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm11/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.2 2006/06/29 16:40:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm11/src/PrimaryGeneratorAction.cc index 1a00bfb74a..698cf38d7e 100644 --- a/examples/extended/electromagnetic/TestEm11/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm11/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.2 2006/06/29 16:40:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm11/src/PrimaryGeneratorMessenger.cc index 977e5acb93..9da8fbb0c8 100644 --- a/examples/extended/electromagnetic/TestEm11/src/PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm11/src/PrimaryGeneratorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.cc,v 1.2 2006/06/29 16:40:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/RunAction.cc b/examples/extended/electromagnetic/TestEm11/src/RunAction.cc index 567d74f2de..c4b3f0b60a 100644 --- a/examples/extended/electromagnetic/TestEm11/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm11/src/RunAction.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: RunAction.cc,v 1.6 2006/06/29 16:40:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: RunAction.cc,v 1.7 2007/08/19 20:52:53 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -85,14 +85,25 @@ void RunAction::BeginOfRunAction(const G4Run* aRun) //initialize track status // status[0] = status[1] = status[2] = 0; - + + //get csdaRange from EmCalculator + // + G4EmCalculator emCalculator; + G4Material* material = detector->GetAbsorMaterial(); + G4ParticleDefinition* particle = kinematic->GetParticleGun() + ->GetParticleDefinition(); + G4double energy = kinematic->GetParticleGun()->GetParticleEnergy(); + csdaRange = DBL_MAX; + if (particle->GetPDGCharge() != 0.) + csdaRange = emCalculator.GetCSDARange(energy,particle,material); + //histograms // histoManager->book(); //set StepMax from histos // - G4double stepMax = histoManager->GetStepMax(); + G4double stepMax = histoManager->ComputeStepMax(csdaRange); physics->GetStepMaxProcess()->SetMaxStep(stepMax); } @@ -154,10 +165,10 @@ void RunAction::EndOfRunAction(const G4Run* aRun) //compare with csda range // - G4EmCalculator emCalculator; - G4double csdaRange = 0.; - if (particle->GetPDGCharge() != 0.) - csdaRange = emCalculator.GetCSDARange(energy,particle,material); + //G4EmCalculator emCalculator; + //G4double csdaRange = 0.; + //if (particle->GetPDGCharge() != 0.) + // csdaRange = emCalculator.GetCSDARange(energy,particle,material); G4cout << "\n Range from EmCalculator = " << G4BestUnit(csdaRange,"Length") << " (from full dE/dx)" << G4endl; @@ -204,13 +215,19 @@ void RunAction::EndOfRunAction(const G4Run* aRun) << " transmit = " << transmit << " %" << " reflected = " << reflected << " %" << G4endl; - // normalize histogram of longitudinal energy profile + // normalize histograms of longitudinal energy profile // G4int ih = 1; G4double binWidth = histoManager->GetBinWidth(ih); G4double fac = (1./(NbofEvents*binWidth))*(mm/MeV); histoManager->Scale(ih,fac); + ih = 8; + binWidth = histoManager->GetBinWidth(ih); + G4double range = histoManager->GetcsdaRange(); + fac = (1./(NbofEvents*binWidth*range*density))*(g/(MeV*cm2)); + histoManager->Scale(ih,fac); + // reset default formats G4cout.setf(mode,std::ios::floatfield); G4cout.precision(prec); diff --git a/examples/extended/electromagnetic/TestEm11/src/StepMax.cc b/examples/extended/electromagnetic/TestEm11/src/StepMax.cc index 5398f8c8de..46cc2efb5c 100644 --- a/examples/extended/electromagnetic/TestEm11/src/StepMax.cc +++ b/examples/extended/electromagnetic/TestEm11/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.3 2006/06/29 16:40:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/StepMaxMessenger.cc b/examples/extended/electromagnetic/TestEm11/src/StepMaxMessenger.cc index 1950e6eb51..457361b62c 100644 --- a/examples/extended/electromagnetic/TestEm11/src/StepMaxMessenger.cc +++ b/examples/extended/electromagnetic/TestEm11/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.3 2006/06/29 16:40:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm11/src/SteppingAction.cc index 9c78b5eb92..4471d65132 100644 --- a/examples/extended/electromagnetic/TestEm11/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm11/src/SteppingAction.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: SteppingAction.cc,v 1.4 2006/09/18 17:26:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: SteppingAction.cc,v 1.5 2007/08/19 20:52:53 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -69,6 +69,9 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep) G4double x = point.x() + 0.5*detector->GetAbsorSizeX(); histoManager->FillHisto(1, x, edep); + G4double r0 = histoManager->GetcsdaRange(); + if (r0 > 0.) histoManager->FillHisto(8, x/r0, edep); + //step size of primary particle or charged secondaries // G4double steplen = aStep->GetStepLength(); diff --git a/examples/extended/electromagnetic/TestEm11/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm11/src/SteppingVerbose.cc index 2c8205f12b..c7b457032f 100644 --- a/examples/extended/electromagnetic/TestEm11/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm11/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.2 2006/06/29 16:41:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm11/src/TrackingAction.cc b/examples/extended/electromagnetic/TestEm11/src/TrackingAction.cc index e9a70a74df..64b91bc7a2 100644 --- a/examples/extended/electromagnetic/TestEm11/src/TrackingAction.cc +++ b/examples/extended/electromagnetic/TestEm11/src/TrackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TrackingAction.cc,v 1.2 2006/06/29 16:41:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/History b/examples/extended/electromagnetic/TestEm12/History index e170d233f0..806d18188e 100644 --- a/examples/extended/electromagnetic/TestEm12/History +++ b/examples/extended/electromagnetic/TestEm12/History @@ -1,4 +1,4 @@ -$Id: History,v 1.13 2007/04/27 10:38:11 maire Exp $ +$Id: History,v 1.15 2007/11/09 17:35:06 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,13 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +09-11-07 mma (testem12-V09-00-01) +- HistoManager/HistoMessenger : print selected histos on ascii file + +16-08-07 mma (testem12-V09-00-00) +- HistoManager : modify the way to get csdaRange from G4EmCalculator + and compute stepMax for histo 8 + 27-04-07 mma (testem12-V08-02-01) - HistoManager : by default, get csdaRange from G4EmCalculator diff --git a/examples/extended/electromagnetic/TestEm12/README b/examples/extended/electromagnetic/TestEm12/README index 0a9e951ded..afaf018d94 100644 --- a/examples/extended/electromagnetic/TestEm12/README +++ b/examples/extended/electromagnetic/TestEm12/README @@ -1,4 +1,4 @@ -$Id: README,v 1.5 2006/05/15 14:42:19 maire Exp $ +$Id: README,v 1.7 2007/11/09 17:35:06 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -93,7 +93,7 @@ $Id: README,v 1.5 2006/05/15 14:42:19 maire Exp $ In order to control the accuracy of the deposition, the maximum step size of charged particles is computed automatically from the binning of - histograms 1 and 8. + histograms 1 and 8 (see HistoManager). As an example, this limitation is implemented as a 'full' process : see StepMax class and its Messenger. The 'StepMax process' is registered @@ -127,7 +127,11 @@ $Id: README,v 1.5 2006/05/15 14:42:19 maire Exp $ It is possible to choose the format of the histogram file (hbook, root, XML) with the command /testem/histo/setFileType (hbook by default) - + + It is also possible to print selected histograms on an ascii file: + /testem/histo/printHisto id + All selected histos will be written on a file name.ascii (default testem12) + Note that, by default, histograms are disabled. To activate them, uncomment the flag G4ANALYSIS_USE in GNUmakefile. diff --git a/examples/extended/electromagnetic/TestEm12/TestEm12.cc b/examples/extended/electromagnetic/TestEm12/TestEm12.cc index 3e41b84141..a08bd619ef 100644 --- a/examples/extended/electromagnetic/TestEm12/TestEm12.cc +++ b/examples/extended/electromagnetic/TestEm12/TestEm12.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TestEm12.cc,v 1.4 2006/06/29 16:41:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/TestEm12.out b/examples/extended/electromagnetic/TestEm12/TestEm12.out index 549911c34d..46549b7f5c 100644 --- a/examples/extended/electromagnetic/TestEm12/TestEm12.out +++ b/examples/extended/electromagnetic/TestEm12/TestEm12.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,31 +9,31 @@ ***** Table : Nb of materials = 8 ***** - Material: G4_Al density: 2.699 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.896 cm + Material: G4_Al density: 2.699 g/cm3 RadL: 8.896 cm Imean: 166.000 eV ---> Element: Al (Al) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_Si density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.366 cm + Material: G4_Si density: 2.330 g/cm3 RadL: 9.366 cm Imean: 173.000 eV ---> Element: Si (Si) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_Fe density: 7.874 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.757 cm + Material: G4_Fe density: 7.874 g/cm3 RadL: 1.757 cm Imean: 286.000 eV ---> Element: Fe (Fe) Z = 26.0 N = 55.8 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_Ge density: 5.323 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.301 cm + Material: G4_Ge density: 5.323 g/cm3 RadL: 2.301 cm Imean: 350.000 eV ---> Element: Ge (Ge) Z = 32.0 N = 72.6 A = 72.61 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_W density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm + Material: G4_W density: 19.300 g/cm3 RadL: 3.504 mm Imean: 727.000 eV ---> Element: W (W) Z = 74.0 N = 183.8 A = 183.84 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_Pb density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.613 mm + Material: G4_Pb density: 11.350 g/cm3 RadL: 5.613 mm Imean: 823.000 eV ---> Element: Pb (Pb) Z = 82.0 N = 207.2 A = 207.22 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_AIR density: 1.205 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 303.921 m + Material: G4_AIR density: 1.205 mg/cm3 RadL: 303.921 m Imean: 85.700 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: C (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 0.01 % ElmAbundance 0.02 % ---> Element: N (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 75.53 % ElmAbundance 78.44 % ---> Element: O (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 23.18 % ElmAbundance 21.07 % ---> Element: Ar (Ar) Z = 18.0 N = 39.9 A = 39.95 g/mole ElmMassFraction: 1.28 % ElmAbundance 0.47 % - Material: G4_WATER H_2O density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.083 cm + Material: G4_WATER H_2O density: 1.000 g/cm3 RadL: 36.083 cm Imean: 75.000 eV ---> Element: H (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.19 % ElmAbundance 66.67 % ---> Element: O (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.81 % ElmAbundance 33.33 % @@ -71,10 +71,10 @@ Registered filter factories: /run/verbose 2 # /testem/det/setMat G4_WATER -/testem/det/setRadius 3 cm +/testem/det/setRadius 3 cm /testem/det/setNbOfLayers 1 # -/testem/phys/addPhysics standard # em physics +/testem/phys/addPhysics standard PhysicsList::AddPhysicsList: # /run/initialize @@ -97,21 +97,19 @@ PhysicsList::SetCuts:CutLength : 1 mm # /testem/histo/setFileType hbook /testem/histo/setFileName testem12 -/testem/histo/setHisto 1 120 0. 2.4 cm #edep profile +/testem/histo/setHisto 1 120 0. 2.4 cm ----> SetHisto 1: dE/dr (MeV/mm) along radius (cm); 120 bins from 0 cm to 2.4 cm - stepMax = 200 um -/testem/histo/setHisto 2 180 0. 4.5 MeV #total Edep +/testem/histo/setHisto 2 180 0. 4.5 MeV ----> SetHisto 2: total Energy deposited in absorber (MeV); 180 bins from 0 MeV to 4.5 MeV -/testem/histo/setHisto 3 100 0. 3. cm #true track length +/testem/histo/setHisto 3 100 0. 3. cm ----> SetHisto 3: true track length of the primary particle (cm); 100 bins from 0 cm to 3 cm -/testem/histo/setHisto 4 100 0. 500. um #true step length +/testem/histo/setHisto 4 100 0. 500. um ----> SetHisto 4: true step size of the primary particle (um); 100 bins from 0 um to 500 um -/testem/histo/setHisto 5 200 -3. 3. cm #proj range +/testem/histo/setHisto 5 200 -3. 3. cm ----> SetHisto 5: projected range of the primary particle (cm); 200 bins from -3 cm to 3 cm -/testem/histo/setcsdaRange 2.037 cm -/testem/histo/setHisto 8 120 0. 1.2 none #normalized edep profile +/testem/histo/setcsdaRange 2.037 cm +/testem/histo/setHisto 8 120 0. 1.2 none ----> SetHisto 8: d(E/E0)/d(r/r0) along r/r0; 120 bins from 0 none to 1.2 none - stepMax = 200 um # /testem/event/printModulo 1000 # @@ -140,7 +138,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. eBrem: tables are built for e- @@ -154,7 +152,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. eBrem: tables are built for e+ @@ -178,7 +176,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. msc: Model variant of multiple scattering for GenericIon @@ -193,7 +191,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. hIoni: tables are built for anti_proton @@ -202,7 +200,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. msc: Model variant of multiple scattering for mu+ @@ -215,7 +213,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. muBrems: tables are built for mu+ @@ -233,7 +231,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. muBrems: tables are built for mu- @@ -252,7 +250,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. msc: Model variant of multiple scattering for pi- @@ -266,7 +264,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 CSDA range table up to 1 GeV in 70 bins. Region -- appears in world volume @@ -297,6 +295,8 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Initial seed (index) = 0 Current couple of seeds = 9876, 54321 ---------------------------------------- + +---> stepMax from HistoManager = 2e+02 um Start Run processing. ---> Begin of Event: 0 @@ -321,7 +321,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10000 - User=1100.88s Real=1232.71s Sys=6.51s + User=1241.43s Real=1366.2s Sys=7.54s ======================== run summary ====================== @@ -329,18 +329,18 @@ Run Summary ============================================================ - Total Energy deposited = 3.937 MeV +- 224.228 keV + Total Energy deposited = 3.939 MeV +- 214.508 keV - Track length of primary track = 2.014 cm +- 2.811 mm + Track length of primary track = 2.016 cm +- 2.774 mm Range from EmCalculator = 2.021 cm (from full dE/dx) - Projected range = 1.309 cm +- 4.369 mm + Projected range = 1.314 cm +- 4.196 mm - Nb of steps of primary track = 238.58 +- 31.12 Step size= 84.405 um +- 4.561 um + Nb of steps of primary track = 238.44 +- 30.73 Step size= 84.539 um +- 4.514 um --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 2089723964, 1269053900 + Current couple of seeds = 1657344995, 1592221949 ---------------------------------------- Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/extended/electromagnetic/TestEm12/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm12/include/DetectorConstruction.hh index 65a76b1f33..a7be60b8af 100644 --- a/examples/extended/electromagnetic/TestEm12/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm12/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.2 2006/06/29 16:42:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm12/include/DetectorMessenger.hh index d4a7fbfa0b..306ab0d292 100644 --- a/examples/extended/electromagnetic/TestEm12/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm12/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.2 2006/06/29 16:42:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/EventAction.hh b/examples/extended/electromagnetic/TestEm12/include/EventAction.hh index 6c32d6661d..cec4c9cae8 100644 --- a/examples/extended/electromagnetic/TestEm12/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm12/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.2 2006/06/29 16:42:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm12/include/EventActionMessenger.hh index 7b1df7c8c4..a24b652b61 100644 --- a/examples/extended/electromagnetic/TestEm12/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm12/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.2 2006/06/29 16:42:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/HistoManager.hh b/examples/extended/electromagnetic/TestEm12/include/HistoManager.hh index 92ee87f4da..d2c5aa6d49 100644 --- a/examples/extended/electromagnetic/TestEm12/include/HistoManager.hh +++ b/examples/extended/electromagnetic/TestEm12/include/HistoManager.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.hh,v 1.4 2007/04/27 10:38:11 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.hh,v 1.6 2007/11/09 17:35:06 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -58,20 +58,21 @@ class HistoManager void SetFileName (const G4String& name) { fileName[0] = name;}; void SetFileType (const G4String& name) { fileType = name;}; void SetFileOption (const G4String& name) { fileOption = name;}; - void book(G4double); + void book(); void save(); void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none"); void FillHisto(G4int id, G4double e, G4double weight = 1.0); void RemoveHisto (G4int); void Scale (G4int, G4double); - + void PrintHisto (G4int); + G4bool HistoExist (G4int id) {return exist[id];} G4double GetHistoUnit(G4int id) {return Unit[id];} G4double GetBinWidth (G4int id) {return Width[id];} void SetcsdaRange(G4double val) {csdaRange = val;}; G4double GetcsdaRange() {return csdaRange;}; - G4double GetStepMax() {return stepMax;}; + G4double ComputeStepMax(G4double); private: @@ -89,11 +90,16 @@ class HistoManager G4double Vmax [MaxHisto]; G4double Unit [MaxHisto]; G4double Width[MaxHisto]; + G4bool ascii[MaxHisto]; + G4bool factoryOn; HistoMessenger* histoMessenger; + G4bool rangeFlag; G4double csdaRange; - G4double stepMax; + + private: + void saveAscii(); }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/HistoMessenger.hh b/examples/extended/electromagnetic/TestEm12/include/HistoMessenger.hh index 32cb761518..0258788e25 100644 --- a/examples/extended/electromagnetic/TestEm12/include/HistoMessenger.hh +++ b/examples/extended/electromagnetic/TestEm12/include/HistoMessenger.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.hh,v 1.2 2006/06/29 16:42:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.hh,v 1.3 2007/11/09 17:35:06 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -63,6 +63,7 @@ class HistoMessenger: public G4UImessenger G4UIcmdWithAString* factoryCmd; G4UIcmdWithAString* typeCmd; G4UIcommand* histoCmd; + G4UIcmdWithAnInteger* prhistoCmd; G4UIcmdWithAnInteger* rmhistoCmd; G4UIcmdWithADoubleAndUnit* csdaCmd; }; diff --git a/examples/extended/electromagnetic/TestEm12/include/PhysListEmLivermore.hh b/examples/extended/electromagnetic/TestEm12/include/PhysListEmLivermore.hh index e604bf96e1..f01176f2d5 100644 --- a/examples/extended/electromagnetic/TestEm12/include/PhysListEmLivermore.hh +++ b/examples/extended/electromagnetic/TestEm12/include/PhysListEmLivermore.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.hh,v 1.2 2006/06/29 16:42:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/PhysListEmPenelope.hh b/examples/extended/electromagnetic/TestEm12/include/PhysListEmPenelope.hh index 4d6f385b4d..9ed49dcd72 100644 --- a/examples/extended/electromagnetic/TestEm12/include/PhysListEmPenelope.hh +++ b/examples/extended/electromagnetic/TestEm12/include/PhysListEmPenelope.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.hh,v 1.2 2006/06/29 16:42:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm12/include/PhysListEmStandard.hh index 6581821137..2fc86feb13 100644 --- a/examples/extended/electromagnetic/TestEm12/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm12/include/PhysListEmStandard.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.hh,v 1.2 2006/06/29 16:42:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm12/include/PhysicsList.hh index a3862626c9..ce5bf27950 100644 --- a/examples/extended/electromagnetic/TestEm12/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm12/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.3 2006/06/29 16:42:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/examples/extended/electromagnetic/TestEm12/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm12/include/PhysicsListMessenger.hh index 79720acc4f..efd8745ca7 100644 --- a/examples/extended/electromagnetic/TestEm12/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm12/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.2 2006/06/29 16:42:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm12/include/PrimaryGeneratorAction.hh index 2cacafe6d0..284a455687 100644 --- a/examples/extended/electromagnetic/TestEm12/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm12/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.2 2006/06/29 16:42:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm12/include/PrimaryGeneratorMessenger.hh index 6ed91562aa..1023905238 100644 --- a/examples/extended/electromagnetic/TestEm12/include/PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm12/include/PrimaryGeneratorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.hh,v 1.2 2006/06/29 16:42:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/RunAction.hh b/examples/extended/electromagnetic/TestEm12/include/RunAction.hh index 8805491ef6..8d85583d9d 100644 --- a/examples/extended/electromagnetic/TestEm12/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm12/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.4 2007/04/27 10:38:11 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/StepMax.hh b/examples/extended/electromagnetic/TestEm12/include/StepMax.hh index bdc9ee08b0..d29fa974e1 100644 --- a/examples/extended/electromagnetic/TestEm12/include/StepMax.hh +++ b/examples/extended/electromagnetic/TestEm12/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.3 2006/06/29 16:42:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/StepMaxMessenger.hh b/examples/extended/electromagnetic/TestEm12/include/StepMaxMessenger.hh index 4ee7348d09..1661d5f38c 100644 --- a/examples/extended/electromagnetic/TestEm12/include/StepMaxMessenger.hh +++ b/examples/extended/electromagnetic/TestEm12/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.3 2006/06/29 16:42:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm12/include/SteppingAction.hh index c065cf490d..0e3b3b5fc7 100644 --- a/examples/extended/electromagnetic/TestEm12/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm12/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.2 2006/06/29 16:42:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm12/include/SteppingVerbose.hh index 3e97b46fa3..be7bae3dc5 100644 --- a/examples/extended/electromagnetic/TestEm12/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm12/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.2 2006/06/29 16:42:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/include/TrackingAction.hh b/examples/extended/electromagnetic/TestEm12/include/TrackingAction.hh index ccf208c848..dcb3ea2543 100644 --- a/examples/extended/electromagnetic/TestEm12/include/TrackingAction.hh +++ b/examples/extended/electromagnetic/TestEm12/include/TrackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TrackingAction.hh,v 1.2 2006/06/29 16:42:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm12/src/DetectorConstruction.cc index 17e6992210..eb0257847f 100644 --- a/examples/extended/electromagnetic/TestEm12/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm12/src/DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.cc,v 1.2 2006/06/29 16:43:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm12/src/DetectorMessenger.cc index 8b26684839..598d0d2d57 100644 --- a/examples/extended/electromagnetic/TestEm12/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm12/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.2 2006/06/29 16:43:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/EventAction.cc b/examples/extended/electromagnetic/TestEm12/src/EventAction.cc index ff82322b99..25af6aab7d 100644 --- a/examples/extended/electromagnetic/TestEm12/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm12/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.2 2006/06/29 16:43:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm12/src/EventActionMessenger.cc index 36fce77cc0..f8f496a9ea 100644 --- a/examples/extended/electromagnetic/TestEm12/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm12/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.2 2006/06/29 16:43:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/HistoManager.cc b/examples/extended/electromagnetic/TestEm12/src/HistoManager.cc index 3b1b579433..53634668d0 100644 --- a/examples/extended/electromagnetic/TestEm12/src/HistoManager.cc +++ b/examples/extended/electromagnetic/TestEm12/src/HistoManager.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.cc,v 1.4 2007/04/27 10:38:11 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.cc,v 1.6 2007/11/09 17:35:06 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -61,12 +61,13 @@ HistoManager::HistoManager() exist[k] = false; Unit[k] = 1.0; Width[k] = 1.0; + ascii[k] = false; } histoMessenger = new HistoMessenger(this); - csdaRange = 0.; - stepMax = DBL_MAX; + rangeFlag = false; + csdaRange = DBL_MAX; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -82,7 +83,7 @@ HistoManager::~HistoManager() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void HistoManager::book(G4double range) +void HistoManager::book() { #ifdef G4ANALYSIS_USE if(!af) return; @@ -121,8 +122,6 @@ void HistoManager::book(G4double range) if (factoryOn) G4cout << "\n----> Histogram Tree is opened in " << fileName[1] << G4endl; #endif - -if (csdaRange == 0.) csdaRange = range; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -131,6 +130,7 @@ void HistoManager::save() { #ifdef G4ANALYSIS_USE if (factoryOn) { + saveAscii(); // Write ascii file, if any tree->commit(); // Writing the histograms to the file tree->close(); // and closing the tree (and the file) G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl; @@ -202,19 +202,6 @@ void HistoManager::SetHisto(G4int ih, G4cout << "----> SetHisto " << ih << ": " << titl << "; " << nbins << " bins from " << vmin << " " << unit << " to " << vmax << " " << unit << G4endl; - - // compute constraint of stepMax from histos 1 and 8 - // - G4double frac = 1.; - if (ih == 1) { - stepMax = std::min(stepMax,frac*Width[ih]); - G4cout << " stepMax = " << G4BestUnit(stepMax,"Length") << G4endl; - } - - if ((ih == 8)&&(csdaRange>0.)) { - stepMax = std::min(stepMax,frac*Width[ih]*csdaRange); - G4cout << " stepMax = " << G4BestUnit(stepMax,"Length") << G4endl; - } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -246,3 +233,68 @@ void HistoManager::Scale(G4int ih, G4double fac) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void HistoManager::PrintHisto(G4int ih) +{ + if (ih < MaxHisto) ascii[ih] = true; + else + G4cout << "---> warning from HistoManager::PrintHisto() : histo " << ih + << "does not exist" << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include + +void HistoManager::saveAscii() +{ +#ifdef G4ANALYSIS_USE + + G4String name = fileName[0] + ".ascii"; + std::ofstream File(name, std::ios::out); + File.setf( std::ios::scientific, std::ios::floatfield ); + + //write selected histograms + for (G4int ih=0; ihbinMean(iBin) << "\t" + << histo[ih]->binHeight(iBin) + << G4endl; + } + } + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double HistoManager::ComputeStepMax(G4double range) +{ + // compute constraint on stepMax from histos 1 and 8 + // + G4double stepMax = DBL_MAX; + G4double frac = 1.; + + G4int ih = 1; + if (exist[ih]) { + stepMax = frac*Width[ih]; + } + + ih = 8; + if (exist[ih]) { + if (!rangeFlag) csdaRange = range; + if (csdaRange > 0.) stepMax = std::min(stepMax,frac*Width[ih]*csdaRange); + } + + G4cout << "\n---> stepMax from HistoManager = " + << G4BestUnit(stepMax,"Length") << G4endl; + + return stepMax; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/electromagnetic/TestEm12/src/HistoMessenger.cc b/examples/extended/electromagnetic/TestEm12/src/HistoMessenger.cc index 76018810e6..1bf2adea4c 100644 --- a/examples/extended/electromagnetic/TestEm12/src/HistoMessenger.cc +++ b/examples/extended/electromagnetic/TestEm12/src/HistoMessenger.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.cc,v 1.3 2006/06/29 16:43:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.cc,v 1.4 2007/11/09 17:35:06 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -83,6 +83,11 @@ HistoMessenger::HistoMessenger(HistoManager* manager) unit->SetDefaultValue("none"); histoCmd->SetParameter(unit); + prhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/printHisto",this); + prhistoCmd->SetGuidance("print histo #id on ascii file"); + prhistoCmd->SetParameterName("id",false); + prhistoCmd->SetRange("id>0"); + rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this); rmhistoCmd->SetGuidance("desactivate histo #id"); rmhistoCmd->SetParameterName("id",false); @@ -101,6 +106,7 @@ HistoMessenger::~HistoMessenger() { delete csdaCmd; delete rmhistoCmd; + delete prhistoCmd; delete histoCmd; delete typeCmd; delete factoryCmd; @@ -127,6 +133,9 @@ void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues) if (unit != "none") vUnit = G4UIcommand::ValueOf(unit); histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit); } + + if (command == prhistoCmd) + histoManager->PrintHisto(prhistoCmd->GetNewIntValue(newValues)); if (command == rmhistoCmd) histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues)); diff --git a/examples/extended/electromagnetic/TestEm12/src/PhysListEmLivermore.cc b/examples/extended/electromagnetic/TestEm12/src/PhysListEmLivermore.cc index 246b682185..ebd781ec17 100644 --- a/examples/extended/electromagnetic/TestEm12/src/PhysListEmLivermore.cc +++ b/examples/extended/electromagnetic/TestEm12/src/PhysListEmLivermore.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.cc,v 1.3 2007/01/08 16:33:52 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/PhysListEmPenelope.cc b/examples/extended/electromagnetic/TestEm12/src/PhysListEmPenelope.cc index f228177edc..fe41a6b430 100644 --- a/examples/extended/electromagnetic/TestEm12/src/PhysListEmPenelope.cc +++ b/examples/extended/electromagnetic/TestEm12/src/PhysListEmPenelope.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.cc,v 1.2 2006/06/29 16:43:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm12/src/PhysListEmStandard.cc index 7210fab25f..fbc8042cb2 100644 --- a/examples/extended/electromagnetic/TestEm12/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm12/src/PhysListEmStandard.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.cc,v 1.2 2006/06/29 16:43:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm12/src/PhysicsList.cc index 1d638f0ba6..b33c712acd 100644 --- a/examples/extended/electromagnetic/TestEm12/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm12/src/PhysicsList.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysicsList.cc,v 1.5 2006/10/25 17:27:02 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.cc,v 1.6 2007/08/19 20:57:28 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -292,7 +292,7 @@ void PhysicsList::SetCuts() G4cout << "PhysicsList::SetCuts:"; G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; } - + // 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"); diff --git a/examples/extended/electromagnetic/TestEm12/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm12/src/PhysicsListMessenger.cc index 9f5d39b11c..041ad0d61f 100644 --- a/examples/extended/electromagnetic/TestEm12/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm12/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.2 2006/06/29 16:43:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm12/src/PrimaryGeneratorAction.cc index 47b5dfc332..19101adf4c 100644 --- a/examples/extended/electromagnetic/TestEm12/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm12/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.2 2006/06/29 16:43:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm12/src/PrimaryGeneratorMessenger.cc index 8a74c234ea..8c0996a2aa 100644 --- a/examples/extended/electromagnetic/TestEm12/src/PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm12/src/PrimaryGeneratorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.cc,v 1.2 2006/06/29 16:43:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/RunAction.cc b/examples/extended/electromagnetic/TestEm12/src/RunAction.cc index 5f5c53da58..306290413e 100644 --- a/examples/extended/electromagnetic/TestEm12/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm12/src/RunAction.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: RunAction.cc,v 1.7 2007/04/27 10:38:11 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: RunAction.cc,v 1.8 2007/08/19 20:57:29 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -89,17 +89,17 @@ void RunAction::BeginOfRunAction(const G4Run* aRun) G4ParticleDefinition* particle = kinematic->GetParticleGun() ->GetParticleDefinition(); G4double energy = kinematic->GetParticleGun()->GetParticleEnergy(); - csdaRange = 0.; + csdaRange = DBL_MAX; if (particle->GetPDGCharge() != 0.) csdaRange = emCalculator.GetCSDARange(energy,particle,material); - + //histograms // - histoManager->book(csdaRange); + histoManager->book(); //set StepMax from histos // - G4double stepMax = histoManager->GetStepMax(); + G4double stepMax = histoManager->ComputeStepMax(csdaRange); physics->GetStepMaxProcess()->SetMaxStep(stepMax); } diff --git a/examples/extended/electromagnetic/TestEm12/src/StepMax.cc b/examples/extended/electromagnetic/TestEm12/src/StepMax.cc index f25f9f2187..8d54d92a7c 100644 --- a/examples/extended/electromagnetic/TestEm12/src/StepMax.cc +++ b/examples/extended/electromagnetic/TestEm12/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.3 2006/06/29 16:43:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/StepMaxMessenger.cc b/examples/extended/electromagnetic/TestEm12/src/StepMaxMessenger.cc index f29cb62568..83b5ba38ff 100644 --- a/examples/extended/electromagnetic/TestEm12/src/StepMaxMessenger.cc +++ b/examples/extended/electromagnetic/TestEm12/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.3 2006/06/29 16:43:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm12/src/SteppingAction.cc index d451b8eeac..8fcd945c34 100644 --- a/examples/extended/electromagnetic/TestEm12/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm12/src/SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.cc,v 1.4 2007/04/27 10:38:11 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm12/src/SteppingVerbose.cc index 4213cd0d4f..c065f8cdac 100644 --- a/examples/extended/electromagnetic/TestEm12/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm12/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.2 2006/06/29 16:43:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm12/src/TrackingAction.cc b/examples/extended/electromagnetic/TestEm12/src/TrackingAction.cc index f1c56cac85..58353afd0a 100644 --- a/examples/extended/electromagnetic/TestEm12/src/TrackingAction.cc +++ b/examples/extended/electromagnetic/TestEm12/src/TrackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TrackingAction.cc,v 1.2 2006/06/29 16:43:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/History b/examples/extended/electromagnetic/TestEm13/History index 88f6ec61f2..69738e52e6 100644 --- a/examples/extended/electromagnetic/TestEm13/History +++ b/examples/extended/electromagnetic/TestEm13/History @@ -1,4 +1,4 @@ -$Id: History,v 1.13 2007/04/06 16:00:50 maire Exp $ +$Id: History,v 1.15 2007/07/02 09:18:45 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,12 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +02-07-07 V.Ivant (testem13-V09-00-00) + +25-06-07 mma (testem13-V08-03-00) +- SteppingAction : modify logic to take into account low energy packages +- cosmetic in TestEm13.in 06-04-07 mma (testem13-V08-02-00) - vis.mac : suppress the command drawTracks diff --git a/examples/extended/electromagnetic/TestEm13/TestEm13.cc b/examples/extended/electromagnetic/TestEm13/TestEm13.cc index c5216cd3e1..446d016e5d 100644 --- a/examples/extended/electromagnetic/TestEm13/TestEm13.cc +++ b/examples/extended/electromagnetic/TestEm13/TestEm13.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: TestEm13.cc,v 1.4 2006/06/29 16:43:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: TestEm13.cc,v 1.5 2007/06/24 22:26:54 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -67,12 +67,6 @@ int main(int argc,char** argv) { runManager->SetUserInitialization(det = new DetectorConstruction); runManager->SetUserInitialization(new PhysicsList); runManager->SetUserAction(prim = new PrimaryGeneratorAction(det)); - - #ifdef G4VIS_USE - // visualization manager - G4VisManager* visManager = new G4VisExecutive; - visManager->Initialize(); - #endif // set user action classes RunAction* run; @@ -83,8 +77,20 @@ int main(int argc,char** argv) { // get the pointer to the User Interface manager G4UImanager* UI = G4UImanager::GetUIpointer(); - if (argc==1) // Define UI terminal for interactive mode + if (argc!=1) // batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + else //define visualization and UI terminal for interactive mode { +#ifdef G4VIS_USE + G4VisManager* visManager = new G4VisExecutive; + visManager->Initialize(); +#endif + G4UIsession * session = 0; #ifdef G4UI_USE_TCSH session = new G4UIterminal(new G4UItcsh); @@ -93,19 +99,14 @@ int main(int argc,char** argv) { #endif session->SessionStart(); delete session; - } - else // Batch mode - { - G4String command = "/control/execute "; - G4String fileName = argv[1]; - UI->ApplyCommand(command+fileName); + +#ifdef G4VIS_USE + delete visManager; +#endif } // job termination -#ifdef G4VIS_USE - delete visManager; -#endif - + // delete runManager; return 0; diff --git a/examples/extended/electromagnetic/TestEm13/TestEm13.out b/examples/extended/electromagnetic/TestEm13/TestEm13.out index 47b7d6fae2..96ada4a876 100644 --- a/examples/extended/electromagnetic/TestEm13/TestEm13.out +++ b/examples/extended/electromagnetic/TestEm13/TestEm13.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,87 +9,57 @@ ***** Table : Nb of materials = 15 ***** - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: H2liquid density: 70.800 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.923 m + Material: H2liquid density: 70.800 mg/cm3 RadL: 8.923 m Imean: 21.800 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Water H_2O density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm + Material: Water H_2O density: 1.000 g/cm3 RadL: 36.092 cm Imean: 75.000 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm + Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Imean: 187.200 eV ---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Carbon density: 2.267 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 18.833 cm + Material: Carbon density: 2.267 g/cm3 RadL: 18.833 cm Imean: 78.000 eV ---> Element: Carbon ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm + Material: Aluminium density: 2.700 g/cm3 RadL: 8.893 cm Imean: 166.400 eV ---> Element: Aluminium ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Silicon density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm + Material: Silicon density: 2.330 g/cm3 RadL: 9.368 cm Imean: 173.600 eV ---> Element: Silicon ( ) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Germanium density: 5.323 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.301 cm + Material: Germanium density: 5.323 g/cm3 RadL: 2.301 cm Imean: 332.800 eV ---> Element: Germanium ( ) Z = 32.0 N = 72.6 A = 72.61 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: NaI density: 3.670 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.586 cm + Material: NaI density: 3.670 g/cm3 RadL: 2.586 cm Imean: 452.000 eV ---> Element: Sodium (Na) Z = 11.0 N = 23.0 A = 22.99 g/mole ElmMassFraction: 15.34 % ElmAbundance 50.00 % ---> Element: Iodine (I) Z = 53.0 N = 126.9 A = 126.90 g/mole ElmMassFraction: 84.66 % ElmAbundance 50.00 % - Material: Iodine density: 4.930 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.720 cm + Material: Iodine density: 4.930 g/cm3 RadL: 1.720 cm Imean: 492.900 eV ---> Element: Iodine (I) Z = 53.0 N = 126.9 A = 126.90 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: BGO density: 7.100 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.123 cm + Material: BGO density: 7.100 g/cm3 RadL: 1.123 cm Imean: 469.142 eV ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 15.41 % ElmAbundance 63.16 % ---> Element: Germanium (Ge) Z = 32.0 N = 72.6 A = 72.59 g/mole ElmMassFraction: 17.48 % ElmAbundance 15.79 % ---> Element: Bismuth (Bi) Z = 83.0 N = 209.0 A = 208.98 g/mole ElmMassFraction: 67.10 % ElmAbundance 21.05 % - Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm + Material: Iron density: 7.870 g/cm3 RadL: 1.759 cm Imean: 286.000 eV ---> Element: Iron ( ) Z = 26.0 N = 55.9 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Tungsten density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm + Material: Tungsten density: 19.300 g/cm3 RadL: 3.504 mm Imean: 725.200 eV ---> Element: Tungsten ( ) Z = 74.0 N = 183.8 A = 183.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm + Material: Lead density: 11.350 g/cm3 RadL: 5.612 mm Imean: 820.000 eV ---> Element: Lead ( ) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Uranium density: 18.950 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.166 mm + Material: Uranium density: 18.950 g/cm3 RadL: 3.166 mm Imean: 892.400 eV ---> Element: Uranium ( ) Z = 92.0 N = 238.0 A = 238.03 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % -Visualization Manager instantiating... -Visualization Manager initialising... -Registering graphics systems... - -You have successfully registered the following graphics systems. -Current available graphics systems are: - ASCIITree (ATree) - DAWNFILE (DAWNFILE) - G4HepRep (HepRepXML) - G4HepRepFile (HepRepFile) - RayTracer (RayTracer) - VRML1FILE (VRML1FILE) - VRML2FILE (VRML2FILE) - -Registering model factories... - -You have successfully registered the following model factories. -Registered model factories: - generic - drawByCharge - drawByParticleID - drawByOriginVolume - drawByAttribute - -Registered filter factories: - chargeFilter - particleFilter - originVolumeFilter - attributeFilter - /run/verbose 2 # /testem/det/setMat Water @@ -129,7 +99,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -142,7 +112,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -160,7 +130,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 ionIoni: tables are built for GenericIon dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -170,7 +140,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -178,14 +148,14 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 muIoni: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -202,7 +172,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -220,7 +190,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 hIoni: tables are built for pi- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -228,7 +198,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 Region -- appears in world volume Root logical volume(s) : Water @@ -282,7 +252,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=29.8s Real=29.82s Sys=0s + User=30.01s Real=30.03s Sys=0s The run consists of 100000 gamma of 100 keV through 1 cm of Water (density: 1 g/cm3 ) @@ -351,7 +321,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=30.94s Real=30.94s Sys=0s + User=31.54s Real=31.54s Sys=0s The run consists of 100000 e- of 100 MeV through 1 cm of Water (density: 1 g/cm3 ) @@ -368,8 +338,6 @@ Run Summary Initial seed (index) = 0 Current couple of seeds = 1186383716, 309205105 ---------------------------------------- -Graphics systems deleted. -Visualization Manager deleting... UserDetectorConstruction deleted. UserPhysicsList deleted. UserRunAction deleted. diff --git a/examples/extended/electromagnetic/TestEm13/gamma.mac b/examples/extended/electromagnetic/TestEm13/gamma.mac index a3b57ae1f7..7d1f8872e6 100644 --- a/examples/extended/electromagnetic/TestEm13/gamma.mac +++ b/examples/extended/electromagnetic/TestEm13/gamma.mac @@ -1,4 +1,4 @@ -# $Id: gamma.mac,v 1.3 2006/05/10 12:09:13 maire Exp $ +# $Id: gamma.mac,v 1.4 2007/06/24 22:26:54 maire Exp $ # # Macro file for "TestEm13.cc" # (can be run in batch, without graphic) @@ -11,6 +11,8 @@ /testem/det/setMat Water /testem/det/setSize 1 cm # +/testem/phys/addPhysics standard +# /run/initialize # /gun/particle gamma diff --git a/examples/extended/electromagnetic/TestEm13/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm13/include/DetectorConstruction.hh index 499791c6d8..7f94fe7d16 100644 --- a/examples/extended/electromagnetic/TestEm13/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm13/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.2 2006/06/29 16:43:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm13/include/DetectorMessenger.hh index 1f09a62d88..63d24556b1 100644 --- a/examples/extended/electromagnetic/TestEm13/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm13/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.2 2006/06/29 16:43:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/include/EventAction.hh b/examples/extended/electromagnetic/TestEm13/include/EventAction.hh index 088c34e32d..b39f4ba93f 100644 --- a/examples/extended/electromagnetic/TestEm13/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm13/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.2 2006/06/29 16:43:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm13/include/EventActionMessenger.hh index b68fda7240..addf2efe32 100644 --- a/examples/extended/electromagnetic/TestEm13/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm13/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.2 2006/06/29 16:44:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/include/PhysListEmLivermore.hh b/examples/extended/electromagnetic/TestEm13/include/PhysListEmLivermore.hh index 8d3b3a493a..59e88f1e0b 100644 --- a/examples/extended/electromagnetic/TestEm13/include/PhysListEmLivermore.hh +++ b/examples/extended/electromagnetic/TestEm13/include/PhysListEmLivermore.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.hh,v 1.2 2006/06/29 16:44:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/include/PhysListEmPenelope.hh b/examples/extended/electromagnetic/TestEm13/include/PhysListEmPenelope.hh index d6c0459e73..1555c2642d 100644 --- a/examples/extended/electromagnetic/TestEm13/include/PhysListEmPenelope.hh +++ b/examples/extended/electromagnetic/TestEm13/include/PhysListEmPenelope.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.hh,v 1.2 2006/06/29 16:44:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm13/include/PhysListEmStandard.hh index 27d48b6c3c..07a0506b76 100644 --- a/examples/extended/electromagnetic/TestEm13/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm13/include/PhysListEmStandard.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmStandard.hh,v 1.2 2006/06/29 16:44:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm13/include/PhysicsList.hh index e8d23ed108..71cb3d8fd1 100644 --- a/examples/extended/electromagnetic/TestEm13/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm13/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.3 2006/06/29 16:44:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/examples/extended/electromagnetic/TestEm13/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm13/include/PhysicsListMessenger.hh index 2d00706900..fe9992b51a 100644 --- a/examples/extended/electromagnetic/TestEm13/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm13/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.3 2006/06/29 16:44:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm13/include/PrimaryGeneratorAction.hh index 839f42ad2a..d9fb29957d 100644 --- a/examples/extended/electromagnetic/TestEm13/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm13/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.2 2006/06/29 16:44:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/include/ProcessesCount.hh b/examples/extended/electromagnetic/TestEm13/include/ProcessesCount.hh index cd7b360fd7..f436938317 100644 --- a/examples/extended/electromagnetic/TestEm13/include/ProcessesCount.hh +++ b/examples/extended/electromagnetic/TestEm13/include/ProcessesCount.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ProcessesCount.hh,v 1.2 2006/06/29 16:44:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/include/RunAction.hh b/examples/extended/electromagnetic/TestEm13/include/RunAction.hh index 5de4b3f38e..8dbfe51239 100644 --- a/examples/extended/electromagnetic/TestEm13/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm13/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.3 2006/06/29 16:44:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm13/include/SteppingAction.hh index 15296b4831..78a9479bbc 100644 --- a/examples/extended/electromagnetic/TestEm13/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm13/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.4 2006/06/29 16:44:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm13/include/SteppingVerbose.hh index f4d48a9f47..6e8e5e32c4 100644 --- a/examples/extended/electromagnetic/TestEm13/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm13/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.2 2006/06/29 16:44:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/electromagnetic/TestEm13/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm13/src/DetectorConstruction.cc index da95c87b41..0947c7d8b2 100644 --- a/examples/extended/electromagnetic/TestEm13/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm13/src/DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.cc,v 1.5 2006/06/29 16:44:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm13/src/DetectorMessenger.cc index b23bd8c1f7..3d2a71f49d 100644 --- a/examples/extended/electromagnetic/TestEm13/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm13/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.2 2006/06/29 16:44:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/src/EventAction.cc b/examples/extended/electromagnetic/TestEm13/src/EventAction.cc index 14ab9b9dfc..f93188db6e 100644 --- a/examples/extended/electromagnetic/TestEm13/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm13/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.2 2006/06/29 16:44:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm13/src/EventActionMessenger.cc index cae45cb9de..ea7c83ddcb 100644 --- a/examples/extended/electromagnetic/TestEm13/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm13/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.2 2006/06/29 16:44:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/src/PhysListEmLivermore.cc b/examples/extended/electromagnetic/TestEm13/src/PhysListEmLivermore.cc index 5691b5d30e..eddd21cec9 100644 --- a/examples/extended/electromagnetic/TestEm13/src/PhysListEmLivermore.cc +++ b/examples/extended/electromagnetic/TestEm13/src/PhysListEmLivermore.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.cc,v 1.3 2006/06/29 16:44:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/src/PhysListEmPenelope.cc b/examples/extended/electromagnetic/TestEm13/src/PhysListEmPenelope.cc index f3b6d5ffb3..d74085e26a 100644 --- a/examples/extended/electromagnetic/TestEm13/src/PhysListEmPenelope.cc +++ b/examples/extended/electromagnetic/TestEm13/src/PhysListEmPenelope.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.cc,v 1.3 2006/06/29 16:44:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm13/src/PhysListEmStandard.cc index 9a436b60eb..b1f1739cb4 100644 --- a/examples/extended/electromagnetic/TestEm13/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm13/src/PhysListEmStandard.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.cc,v 1.3 2006/06/29 16:44:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm13/src/PhysicsList.cc index a415ea25b6..4cb6fe6cfa 100644 --- a/examples/extended/electromagnetic/TestEm13/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm13/src/PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.cc,v 1.5 2006/06/29 16:44:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm13/src/PhysicsListMessenger.cc index 8b5b242f4a..4a47278ea6 100644 --- a/examples/extended/electromagnetic/TestEm13/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm13/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.3 2006/06/29 16:44:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm13/src/PrimaryGeneratorAction.cc index 34eac62742..2c7b2424f6 100644 --- a/examples/extended/electromagnetic/TestEm13/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm13/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.2 2006/06/29 16:44:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/src/RunAction.cc b/examples/extended/electromagnetic/TestEm13/src/RunAction.cc index 98a72e17cf..72196d5c7a 100644 --- a/examples/extended/electromagnetic/TestEm13/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm13/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.6 2006/06/29 16:44:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm13/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm13/src/SteppingAction.cc index d9c4a7c48e..809a8c6218 100644 --- a/examples/extended/electromagnetic/TestEm13/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm13/src/SteppingAction.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: SteppingAction.cc,v 1.5 2006/06/29 16:44:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: SteppingAction.cc,v 1.6 2007/06/24 22:26:54 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -52,11 +52,14 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep) G4StepPoint* endPoint = aStep->GetPostStepPoint(); G4String procName = endPoint->GetProcessDefinedStep()->GetProcessName(); - //count real processes (at least 1 secondary) or transmitted beam + //count real interaction or transmitted beam // + G4double charge = aStep->GetTrack()->GetDefinition()->GetPDGCharge(); G4TrackVector* secondary = fpSteppingManager->GetSecondary(); + G4bool interaction = ((charge == 0.) || ((*secondary).size() > 0)); G4bool transmit = (endPoint->GetStepStatus() <= fGeomBoundary); - if (((*secondary).size() > 0) || transmit) { + + if (interaction || transmit) { runAction->CountProcesses(procName); } diff --git a/examples/extended/electromagnetic/TestEm13/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm13/src/SteppingVerbose.cc index ec485a706d..8520e30e50 100644 --- a/examples/extended/electromagnetic/TestEm13/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm13/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.2 2006/06/29 16:44:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/History b/examples/extended/electromagnetic/TestEm14/History index a0310cd4fe..369d49d5fb 100644 --- a/examples/extended/electromagnetic/TestEm14/History +++ b/examples/extended/electromagnetic/TestEm14/History @@ -1,4 +1,4 @@ -$Id: History,v 1.9 2007/04/06 16:07:53 maire Exp $ +$Id: History,v 1.12 2007/11/13 12:13:32 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,15 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +13-11-07 mma (testem14-V09-00-01) +- HistoManager/HistoMessenger : print selected histos on ascii file + +02-07-07 V.Ivant (testem14-V09-00-00) + +24-06-07 mma (testem14-V08-03-00) +- SteppingAction : modify logic to take into account low energy packages +- cosmetic in TestEm14.in + 06-04-07 mma (testem14-V08-02-00) - vis.mac : suppress command drawTracks diff --git a/examples/extended/electromagnetic/TestEm14/README b/examples/extended/electromagnetic/TestEm14/README index 8287d3ef85..f3cd424943 100644 --- a/examples/extended/electromagnetic/TestEm14/README +++ b/examples/extended/electromagnetic/TestEm14/README @@ -1,4 +1,4 @@ -$Id: README,v 1.5 2006/05/15 14:43:01 maire Exp $ +$Id: README,v 1.6 2007/11/13 12:13:32 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -26,7 +26,7 @@ $Id: README,v 1.5 2006/05/15 14:43:01 maire Exp $ 2- PHYSICS LIST The physics list contains the standard electromagnetic processes. - In order not to introduce 'articicial' constraints on the step size, the + In order not to introduce 'artificial' constraints on the step size, the multiple scattering is not instanciated, and there is no limitation from the maximum energy lost per step. @@ -79,6 +79,11 @@ $Id: README,v 1.5 2006/05/15 14:43:01 maire Exp $ the commands: /testem/histo/setFileName name (default testem14) /testem/histo/setFileType name (default hbook) + + It is also possible to print selected histograms on an ascii file: + /testem/histo/printHisto id + All selected histos will be written on a file name.ascii + (default testem14) Note that, by default, histograms are disabled. To activate them, uncomment the flag G4ANALYSIS_USE in GNUmakefile. diff --git a/examples/extended/electromagnetic/TestEm14/TestEm14.cc b/examples/extended/electromagnetic/TestEm14/TestEm14.cc index 0a27cc4a73..e047b4feb0 100644 --- a/examples/extended/electromagnetic/TestEm14/TestEm14.cc +++ b/examples/extended/electromagnetic/TestEm14/TestEm14.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: TestEm14.cc,v 1.3 2006/06/29 16:44:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: TestEm14.cc,v 1.4 2007/06/23 22:23:20 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -69,12 +69,6 @@ int main(int argc,char** argv) { runManager->SetUserInitialization(new PhysicsList); runManager->SetUserAction(prim = new PrimaryGeneratorAction(det)); - #ifdef G4VIS_USE - // visualization manager - G4VisManager* visManager = new G4VisExecutive; - visManager->Initialize(); - #endif - HistoManager* histo = new HistoManager(); // set user action classes @@ -86,8 +80,20 @@ int main(int argc,char** argv) { // get the pointer to the User Interface manager G4UImanager* UI = G4UImanager::GetUIpointer(); - if (argc==1) // Define UI terminal for interactive mode + if (argc!=1) // batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + else //define visualization and UI terminal for interactive mode { +#ifdef G4VIS_USE + G4VisManager* visManager = new G4VisExecutive; + visManager->Initialize(); +#endif + G4UIsession * session = 0; #ifdef G4UI_USE_TCSH session = new G4UIterminal(new G4UItcsh); @@ -96,19 +102,14 @@ int main(int argc,char** argv) { #endif session->SessionStart(); delete session; - } - else // Batch mode - { - G4String command = "/control/execute "; - G4String fileName = argv[1]; - UI->ApplyCommand(command+fileName); - } - - // job termination + #ifdef G4VIS_USE - delete visManager; -#endif + delete visManager; +#endif + } + // job termination + // delete histo; delete runManager; diff --git a/examples/extended/electromagnetic/TestEm14/TestEm14.out b/examples/extended/electromagnetic/TestEm14/TestEm14.out index 36d2605d8b..ac1dbd7b5a 100644 --- a/examples/extended/electromagnetic/TestEm14/TestEm14.out +++ b/examples/extended/electromagnetic/TestEm14/TestEm14.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,87 +9,57 @@ ***** Table : Nb of materials = 15 ***** - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: H2liquid density: 70.800 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.923 m + Material: H2liquid density: 70.800 mg/cm3 RadL: 8.923 m Imean: 21.800 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Water H_2O density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm + Material: Water H_2O density: 1.000 g/cm3 RadL: 36.092 cm Imean: 75.000 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm + Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Imean: 187.200 eV ---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Carbon density: 2.267 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 18.833 cm + Material: Carbon density: 2.267 g/cm3 RadL: 18.833 cm Imean: 78.000 eV ---> Element: Carbon ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm + Material: Aluminium density: 2.700 g/cm3 RadL: 8.893 cm Imean: 166.400 eV ---> Element: Aluminium ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Silicon density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm + Material: Silicon density: 2.330 g/cm3 RadL: 9.368 cm Imean: 173.600 eV ---> Element: Silicon ( ) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Germanium density: 5.323 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.301 cm + Material: Germanium density: 5.323 g/cm3 RadL: 2.301 cm Imean: 332.800 eV ---> Element: Germanium ( ) Z = 32.0 N = 72.6 A = 72.61 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: NaI density: 3.670 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.586 cm + Material: NaI density: 3.670 g/cm3 RadL: 2.586 cm Imean: 452.000 eV ---> Element: Sodium (Na) Z = 11.0 N = 23.0 A = 22.99 g/mole ElmMassFraction: 15.34 % ElmAbundance 50.00 % ---> Element: Iodine (I) Z = 53.0 N = 126.9 A = 126.90 g/mole ElmMassFraction: 84.66 % ElmAbundance 50.00 % - Material: Iodine density: 4.930 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.720 cm + Material: Iodine density: 4.930 g/cm3 RadL: 1.720 cm Imean: 492.900 eV ---> Element: Iodine (I) Z = 53.0 N = 126.9 A = 126.90 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: BGO density: 7.100 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.123 cm + Material: BGO density: 7.100 g/cm3 RadL: 1.123 cm Imean: 469.142 eV ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 15.41 % ElmAbundance 63.16 % ---> Element: Germanium (Ge) Z = 32.0 N = 72.6 A = 72.59 g/mole ElmMassFraction: 17.48 % ElmAbundance 15.79 % ---> Element: Bismuth (Bi) Z = 83.0 N = 209.0 A = 208.98 g/mole ElmMassFraction: 67.10 % ElmAbundance 21.05 % - Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm + Material: Iron density: 7.870 g/cm3 RadL: 1.759 cm Imean: 286.000 eV ---> Element: Iron ( ) Z = 26.0 N = 55.9 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Tungsten density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm + Material: Tungsten density: 19.300 g/cm3 RadL: 3.504 mm Imean: 725.200 eV ---> Element: Tungsten ( ) Z = 74.0 N = 183.8 A = 183.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm + Material: Lead density: 11.350 g/cm3 RadL: 5.612 mm Imean: 820.000 eV ---> Element: Lead ( ) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Uranium density: 18.950 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.166 mm + Material: Uranium density: 18.950 g/cm3 RadL: 3.166 mm Imean: 892.400 eV ---> Element: Uranium ( ) Z = 92.0 N = 238.0 A = 238.03 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % -Visualization Manager instantiating... -Visualization Manager initialising... -Registering graphics systems... - -You have successfully registered the following graphics systems. -Current available graphics systems are: - ASCIITree (ATree) - DAWNFILE (DAWNFILE) - G4HepRep (HepRepXML) - G4HepRepFile (HepRepFile) - RayTracer (RayTracer) - VRML1FILE (VRML1FILE) - VRML2FILE (VRML2FILE) - -Registering model factories... - -You have successfully registered the following model factories. -Registered model factories: - generic - drawByCharge - drawByParticleID - drawByOriginVolume - drawByAttribute - -Registered filter factories: - chargeFilter - particleFilter - originVolumeFilter - attributeFilter - /run/verbose 2 # /testem/det/setMat Water @@ -130,7 +100,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -143,7 +113,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -161,7 +131,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 ionIoni: tables are built for GenericIon dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -171,7 +141,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -179,14 +149,14 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 muIoni: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -203,7 +173,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -221,7 +191,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 hIoni: tables are built for pi- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -229,7 +199,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 Region -- appears in world volume Root logical volume(s) : Water @@ -283,7 +253,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=32s Real=32s Sys=0s + User=32s Real=32s Sys=0.01s The run consists of 100000 gamma of 100 keV through 100 m of Water (density: 1 g/cm3 ) @@ -292,7 +262,7 @@ Run Summary MeanFreePath: 6.0496 cm +- 6.0503 cm massic: 6.0496 g/cm2 CrossSection: 0.1653 cm^-1 massic: 0.1653 cm2/g - mean energy of charged secondaries: 15.218 keV mass_energy_transfer coef: 0.025156 cm2/g + mean energy of charged secondaries: 15.209 keV mass_energy_transfer coef: 0.025141 cm2/g Verification : crossSections from G4EmCalculator compt= 0.1623 cm2/g phot= 0.0026853 cm2/g total= 0.16498 cm2/g @@ -372,8 +342,6 @@ Run Summary Initial seed (index) = 0 Current couple of seeds = 679237908, 105871640 ---------------------------------------- -Graphics systems deleted. -Visualization Manager deleting... UserDetectorConstruction deleted. UserPhysicsList deleted. UserRunAction deleted. diff --git a/examples/extended/electromagnetic/TestEm14/gamma.mac b/examples/extended/electromagnetic/TestEm14/gamma.mac index ce9fb3ed94..f1028cca2a 100644 --- a/examples/extended/electromagnetic/TestEm14/gamma.mac +++ b/examples/extended/electromagnetic/TestEm14/gamma.mac @@ -1,4 +1,4 @@ -# $Id: gamma.mac,v 1.2 2006/05/10 11:15:33 maire Exp $ +# $Id: gamma.mac,v 1.3 2007/06/23 22:23:20 maire Exp $ # # Macro file for "TestEm14.cc" # (can be run in batch, without graphic) @@ -9,6 +9,7 @@ /run/verbose 2 # /testem/det/setMat Water +/testem/phys/addPhysics standard # /run/initialize # diff --git a/examples/extended/electromagnetic/TestEm14/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm14/include/DetectorConstruction.hh index fba80c9a69..0d838fcfe2 100644 --- a/examples/extended/electromagnetic/TestEm14/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm14/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.3 2006/06/29 16:44:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm14/include/DetectorMessenger.hh index e9f4add54f..ae52dda1af 100644 --- a/examples/extended/electromagnetic/TestEm14/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm14/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.3 2006/06/29 16:44:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/EventAction.hh b/examples/extended/electromagnetic/TestEm14/include/EventAction.hh index 9613fe1f1d..c94fb90107 100644 --- a/examples/extended/electromagnetic/TestEm14/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm14/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.3 2006/06/29 16:45:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm14/include/EventActionMessenger.hh index 48b324e0fe..349129a30f 100644 --- a/examples/extended/electromagnetic/TestEm14/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm14/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.3 2006/06/29 16:45:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/HistoManager.hh b/examples/extended/electromagnetic/TestEm14/include/HistoManager.hh index d45c14e53c..08723f307c 100644 --- a/examples/extended/electromagnetic/TestEm14/include/HistoManager.hh +++ b/examples/extended/electromagnetic/TestEm14/include/HistoManager.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.hh,v 1.3 2006/06/29 16:45:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.hh,v 1.4 2007/11/13 12:13:32 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -63,7 +63,8 @@ class HistoManager void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none"); void FillHisto(G4int id, G4double e, G4double weight = 1.0); void RemoveHisto (G4int); - + void PrintHisto (G4int); + G4bool HistoExist (G4int id) {return exist[id];} G4double GetHistoUnit(G4int id) {return Unit[id];} G4double GetBinWidth (G4int id) {return Width[id];} @@ -84,8 +85,13 @@ class HistoManager G4double Vmax [MaxHisto]; G4double Unit [MaxHisto]; G4double Width[MaxHisto]; + G4bool ascii[MaxHisto]; + G4bool factoryOn; HistoMessenger* histoMessenger; + + private: + void saveAscii(); }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/HistoMessenger.hh b/examples/extended/electromagnetic/TestEm14/include/HistoMessenger.hh index ac64382766..e38beb0dc4 100644 --- a/examples/extended/electromagnetic/TestEm14/include/HistoMessenger.hh +++ b/examples/extended/electromagnetic/TestEm14/include/HistoMessenger.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.hh,v 1.3 2006/06/29 16:45:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.hh,v 1.4 2007/11/13 12:13:32 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -64,7 +64,8 @@ class HistoMessenger: public G4UImessenger G4UIcmdWithAString* optionCmd; G4UIcommand* histoCmd; G4UIcmdWithAnInteger* rmhistoCmd; - + G4UIcmdWithAnInteger* prhistoCmd; + }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/PhysListEmLivermore.hh b/examples/extended/electromagnetic/TestEm14/include/PhysListEmLivermore.hh index 0f10bf63b1..13d4926afc 100644 --- a/examples/extended/electromagnetic/TestEm14/include/PhysListEmLivermore.hh +++ b/examples/extended/electromagnetic/TestEm14/include/PhysListEmLivermore.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.hh,v 1.2 2006/06/29 16:45:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/PhysListEmPenelope.hh b/examples/extended/electromagnetic/TestEm14/include/PhysListEmPenelope.hh index 88a219ab36..55635c5e25 100644 --- a/examples/extended/electromagnetic/TestEm14/include/PhysListEmPenelope.hh +++ b/examples/extended/electromagnetic/TestEm14/include/PhysListEmPenelope.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.hh,v 1.2 2006/06/29 16:45:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm14/include/PhysListEmStandard.hh index da84497772..ae70462e06 100644 --- a/examples/extended/electromagnetic/TestEm14/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm14/include/PhysListEmStandard.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmStandard.hh,v 1.3 2006/06/29 16:45:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm14/include/PhysicsList.hh index 8f9c304975..eccc919fce 100644 --- a/examples/extended/electromagnetic/TestEm14/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm14/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.3 2006/06/29 16:45:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/examples/extended/electromagnetic/TestEm14/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm14/include/PhysicsListMessenger.hh index ca63ce5ed8..a119db02cb 100644 --- a/examples/extended/electromagnetic/TestEm14/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm14/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.3 2006/06/29 16:45:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm14/include/PrimaryGeneratorAction.hh index 00eec8febb..320804fcf2 100644 --- a/examples/extended/electromagnetic/TestEm14/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm14/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.3 2006/06/29 16:45:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/ProcessesCount.hh b/examples/extended/electromagnetic/TestEm14/include/ProcessesCount.hh index 339b8206fc..d5e2687665 100644 --- a/examples/extended/electromagnetic/TestEm14/include/ProcessesCount.hh +++ b/examples/extended/electromagnetic/TestEm14/include/ProcessesCount.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ProcessesCount.hh,v 1.3 2006/06/29 16:45:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/RunAction.hh b/examples/extended/electromagnetic/TestEm14/include/RunAction.hh index ed1b56b7f2..7526dec5f7 100644 --- a/examples/extended/electromagnetic/TestEm14/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm14/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.4 2006/09/06 09:56:06 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm14/include/SteppingAction.hh index d9339afad9..99987eff0b 100644 --- a/examples/extended/electromagnetic/TestEm14/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm14/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.4 2006/09/06 09:56:06 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/SteppingMessenger.hh b/examples/extended/electromagnetic/TestEm14/include/SteppingMessenger.hh index dd149f1c70..36f13ce73d 100644 --- a/examples/extended/electromagnetic/TestEm14/include/SteppingMessenger.hh +++ b/examples/extended/electromagnetic/TestEm14/include/SteppingMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingMessenger.hh,v 1.2 2006/06/29 16:45:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm14/include/SteppingVerbose.hh index 6eb6a3aefb..a79f5e9633 100644 --- a/examples/extended/electromagnetic/TestEm14/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm14/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.3 2006/06/29 16:45:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/electromagnetic/TestEm14/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm14/src/DetectorConstruction.cc index 2cf010146f..7fcabd8c12 100644 --- a/examples/extended/electromagnetic/TestEm14/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm14/src/DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.cc,v 1.4 2006/06/29 16:45:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm14/src/DetectorMessenger.cc index 3c0162ac4c..e09cf3b684 100644 --- a/examples/extended/electromagnetic/TestEm14/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm14/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.3 2006/06/29 16:45:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/src/EventAction.cc b/examples/extended/electromagnetic/TestEm14/src/EventAction.cc index 68913e5f87..76b3a18549 100644 --- a/examples/extended/electromagnetic/TestEm14/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm14/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.3 2006/06/29 16:45:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm14/src/EventActionMessenger.cc index 601b0fc304..492d5bc909 100644 --- a/examples/extended/electromagnetic/TestEm14/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm14/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.3 2006/06/29 16:45:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/src/HistoManager.cc b/examples/extended/electromagnetic/TestEm14/src/HistoManager.cc index d6a7278cfa..cb8600423a 100644 --- a/examples/extended/electromagnetic/TestEm14/src/HistoManager.cc +++ b/examples/extended/electromagnetic/TestEm14/src/HistoManager.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.cc,v 1.4 2006/06/29 16:45:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.cc,v 1.5 2007/11/13 12:13:32 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -61,6 +61,7 @@ HistoManager::HistoManager() exist[k] = false; Unit[k] = 1.0; Width[k] = 1.0; + ascii[k] = false; } histoMessenger = new HistoMessenger(this); @@ -126,6 +127,7 @@ void HistoManager::save() { #ifdef G4ANALYSIS_USE if (factoryOn) { + saveAscii(); // Write ascii file, if any tree->commit(); // Writing the histograms to the file tree->close(); // and closing the tree (and the file) G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl; @@ -213,3 +215,42 @@ void HistoManager::RemoveHisto(G4int ih) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void HistoManager::PrintHisto(G4int ih) +{ + if (ih < MaxHisto) ascii[ih] = true; + else + G4cout << "---> warning from HistoManager::PrintHisto() : histo " << ih + << "does not exist" << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include + +void HistoManager::saveAscii() +{ +#ifdef G4ANALYSIS_USE + + G4String name = fileName[0] + ".ascii"; + std::ofstream File(name, std::ios::out); + File.setf( std::ios::scientific, std::ios::floatfield ); + + //write selected histograms + for (G4int ih=0; ihbinMean(iBin) << "\t" + << histo[ih]->binHeight(iBin) + << G4endl; + } + } + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/electromagnetic/TestEm14/src/HistoMessenger.cc b/examples/extended/electromagnetic/TestEm14/src/HistoMessenger.cc index 1cee614ac1..fa720e66ca 100644 --- a/examples/extended/electromagnetic/TestEm14/src/HistoMessenger.cc +++ b/examples/extended/electromagnetic/TestEm14/src/HistoMessenger.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.cc,v 1.3 2006/06/29 16:45:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.cc,v 1.4 2007/11/13 12:17:07 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -52,12 +52,12 @@ HistoMessenger::HistoMessenger(HistoManager* manager) factoryCmd->SetGuidance("set name for the histograms file"); typeCmd = new G4UIcmdWithAString("/testem/histo/setFileType",this); - typeCmd->SetGuidance("set histograms file type"); + typeCmd->SetGuidance("set histograms file type: hbook, root, XML"); typeCmd->SetCandidates("hbook root XML"); optionCmd = new G4UIcmdWithAString("/testem/histo/setFileOption",this); optionCmd->SetGuidance("set option for the histograms file"); - + histoCmd = new G4UIcommand("/testem/histo/setHisto",this); histoCmd->SetGuidance("Set bining of the histo number ih :"); histoCmd->SetGuidance(" nbBins; valMin; valMax; unit (of vmin and vmax)"); @@ -85,6 +85,11 @@ HistoMessenger::HistoMessenger(HistoManager* manager) unit->SetDefaultValue("none"); histoCmd->SetParameter(unit); + prhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/printHisto",this); + prhistoCmd->SetGuidance("print histo #id on ascii file"); + prhistoCmd->SetParameterName("id",false); + prhistoCmd->SetRange("id>0"); + rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this); rmhistoCmd->SetGuidance("desactivate histo #id"); rmhistoCmd->SetParameterName("id",false); @@ -96,8 +101,9 @@ HistoMessenger::HistoMessenger(HistoManager* manager) HistoMessenger::~HistoMessenger() { delete rmhistoCmd; + delete prhistoCmd; delete histoCmd; - delete optionCmd; + delete optionCmd; delete typeCmd; delete factoryCmd; delete histoDir; @@ -126,7 +132,10 @@ void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues) if (unit != "none") vUnit = G4UIcommand::ValueOf(unit); histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit); } - + + if (command == prhistoCmd) + histoManager->PrintHisto(prhistoCmd->GetNewIntValue(newValues)); + if (command == rmhistoCmd) histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues)); } diff --git a/examples/extended/electromagnetic/TestEm14/src/PhysListEmLivermore.cc b/examples/extended/electromagnetic/TestEm14/src/PhysListEmLivermore.cc index bea1c88308..c26ad057ba 100644 --- a/examples/extended/electromagnetic/TestEm14/src/PhysListEmLivermore.cc +++ b/examples/extended/electromagnetic/TestEm14/src/PhysListEmLivermore.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.cc,v 1.2 2006/06/29 16:45:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/src/PhysListEmPenelope.cc b/examples/extended/electromagnetic/TestEm14/src/PhysListEmPenelope.cc index 5e8d200b64..89a6b14f4d 100644 --- a/examples/extended/electromagnetic/TestEm14/src/PhysListEmPenelope.cc +++ b/examples/extended/electromagnetic/TestEm14/src/PhysListEmPenelope.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.cc,v 1.2 2006/06/29 16:45:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm14/src/PhysListEmStandard.cc index d9c1fb012f..05d5d163b4 100644 --- a/examples/extended/electromagnetic/TestEm14/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm14/src/PhysListEmStandard.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.cc,v 1.4 2006/10/24 16:54:16 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm14/src/PhysicsList.cc index 1c55276764..84b06fe296 100644 --- a/examples/extended/electromagnetic/TestEm14/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm14/src/PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.cc,v 1.4 2006/10/24 16:54:16 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm14/src/PhysicsListMessenger.cc index c79c957634..31c6cd9079 100644 --- a/examples/extended/electromagnetic/TestEm14/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm14/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.3 2006/06/29 16:45:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm14/src/PrimaryGeneratorAction.cc index b564704ff6..072f2f6a6d 100644 --- a/examples/extended/electromagnetic/TestEm14/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm14/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.3 2006/06/29 16:45:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/src/RunAction.cc b/examples/extended/electromagnetic/TestEm14/src/RunAction.cc index b2028aa11d..fec4052979 100644 --- a/examples/extended/electromagnetic/TestEm14/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm14/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.4 2006/09/06 09:56:06 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm14/src/SteppingAction.cc index 716a44d35a..b8337600d8 100644 --- a/examples/extended/electromagnetic/TestEm14/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm14/src/SteppingAction.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: SteppingAction.cc,v 1.4 2006/09/06 09:56:06 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: SteppingAction.cc,v 1.5 2007/06/23 22:23:20 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -60,17 +60,19 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep) { G4StepPoint* endPoint = aStep->GetPostStepPoint(); G4String procName = endPoint->GetProcessDefinedStep()->GetProcessName(); - G4double stepLength = aStep->GetStepLength(); - - //count real processes (at least 1 secondary) and sum track length - // - G4TrackVector* secondary = fpSteppingManager->GetSecondary(); + G4TrackVector* secondary = fpSteppingManager->GetSecondary(); G4bool transmit = (endPoint->GetStepStatus() <= fGeomBoundary); - if ((*secondary).size() > 0) { - runAction->CountProcesses(procName); - runAction->SumTrack(stepLength); + if (transmit) runAction->CountProcesses(procName); + else { + //count real processes and sum track length + G4double stepLength = aStep->GetStepLength(); + G4double charge = aStep->GetTrack()->GetDefinition()->GetPDGCharge(); + if ((charge == 0.) || ((charge != 0.) && (((*secondary).size() > 0)))) + { + runAction->CountProcesses(procName); + runAction->SumTrack(stepLength); + } } - else if (transmit) runAction->CountProcesses(procName); //plot final state (only if continuous energy loss is small enough) // diff --git a/examples/extended/electromagnetic/TestEm14/src/SteppingMessenger.cc b/examples/extended/electromagnetic/TestEm14/src/SteppingMessenger.cc index d7fa7aebf7..55ca153f61 100644 --- a/examples/extended/electromagnetic/TestEm14/src/SteppingMessenger.cc +++ b/examples/extended/electromagnetic/TestEm14/src/SteppingMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingMessenger.cc,v 1.2 2006/06/29 16:46:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm14/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm14/src/SteppingVerbose.cc index 5b3ac8d6fc..7d46515896 100644 --- a/examples/extended/electromagnetic/TestEm14/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm14/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.3 2006/06/29 16:46:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/History b/examples/extended/electromagnetic/TestEm15/History index bcb1ad61fe..51759484d5 100644 --- a/examples/extended/electromagnetic/TestEm15/History +++ b/examples/extended/electromagnetic/TestEm15/History @@ -1,4 +1,4 @@ -$Id: History,v 1.8 2007/03/15 15:52:39 maire Exp $ +$Id: History,v 1.9 2007/11/13 14:13:31 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,9 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +13-11-07 mma (testem15-V09-00-00) +- HistoManager/HistoMessenger : print selected histos on ascii file + 15-03-07 mma (testem15-V08-02-00) - SteppingAction: add protection if no lateralDisplacement diff --git a/examples/extended/electromagnetic/TestEm15/README b/examples/extended/electromagnetic/TestEm15/README index 4a796f2813..0486c476a1 100644 --- a/examples/extended/electromagnetic/TestEm15/README +++ b/examples/extended/electromagnetic/TestEm15/README @@ -1,4 +1,4 @@ -$Id: README,v 1.3 2006/05/15 14:43:23 maire Exp $ +$Id: README,v 1.4 2007/11/13 14:13:31 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -77,6 +77,11 @@ $Id: README,v 1.3 2006/05/15 14:43:23 maire Exp $ /testem/histo/setFileName name (default testem15) /testem/histo/setFileType name (default hbook) + It is also possible to print selected histograms on an ascii file: + /testem/histo/printHisto id + All selected histos will be written on a file name.ascii + (default testem15) + Note that, by default, histograms are disabled. To activate them, uncomment the flag G4ANALYSIS_USE in GNUmakefile. diff --git a/examples/extended/electromagnetic/TestEm15/TestEm15.cc b/examples/extended/electromagnetic/TestEm15/TestEm15.cc index 1c0a55f97b..49c87bae22 100644 --- a/examples/extended/electromagnetic/TestEm15/TestEm15.cc +++ b/examples/extended/electromagnetic/TestEm15/TestEm15.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TestEm15.cc,v 1.2 2006/06/29 16:46:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/TestEm15.out b/examples/extended/electromagnetic/TestEm15/TestEm15.out index c4c7b9e049..2274de8a7b 100644 --- a/examples/extended/electromagnetic/TestEm15/TestEm15.out +++ b/examples/extended/electromagnetic/TestEm15/TestEm15.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,57 +9,57 @@ ***** Table : Nb of materials = 16 ***** - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: H2liquid density: 70.800 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.923 m + Material: H2liquid density: 70.800 mg/cm3 RadL: 8.923 m Imean: 21.800 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Water H_2O density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm + Material: Water H_2O density: 1.000 g/cm3 RadL: 36.092 cm Imean: 75.000 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm + Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Imean: 187.200 eV ---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Carbon density: 2.267 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 18.833 cm + Material: Carbon density: 2.267 g/cm3 RadL: 18.833 cm Imean: 78.000 eV ---> Element: Carbon ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm + Material: Aluminium density: 2.700 g/cm3 RadL: 8.893 cm Imean: 166.400 eV ---> Element: Aluminium ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Silicon density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm + Material: Silicon density: 2.330 g/cm3 RadL: 9.368 cm Imean: 173.600 eV ---> Element: Silicon ( ) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Germanium density: 5.323 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.301 cm + Material: Germanium density: 5.323 g/cm3 RadL: 2.301 cm Imean: 332.800 eV ---> Element: Germanium ( ) Z = 32.0 N = 72.6 A = 72.61 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: NaI density: 3.670 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.586 cm + Material: NaI density: 3.670 g/cm3 RadL: 2.586 cm Imean: 452.000 eV ---> Element: Sodium (Na) Z = 11.0 N = 23.0 A = 22.99 g/mole ElmMassFraction: 15.34 % ElmAbundance 50.00 % ---> Element: Iodine (I) Z = 53.0 N = 126.9 A = 126.90 g/mole ElmMassFraction: 84.66 % ElmAbundance 50.00 % - Material: Iodine density: 4.930 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.720 cm + Material: Iodine density: 4.930 g/cm3 RadL: 1.720 cm Imean: 492.900 eV ---> Element: Iodine (I) Z = 53.0 N = 126.9 A = 126.90 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: BGO density: 7.100 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.123 cm + Material: BGO density: 7.100 g/cm3 RadL: 1.123 cm Imean: 469.142 eV ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 15.41 % ElmAbundance 63.16 % ---> Element: Germanium (Ge) Z = 32.0 N = 72.6 A = 72.59 g/mole ElmMassFraction: 17.48 % ElmAbundance 15.79 % ---> Element: Bismuth (Bi) Z = 83.0 N = 209.0 A = 208.98 g/mole ElmMassFraction: 67.10 % ElmAbundance 21.05 % - Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm + Material: Iron density: 7.870 g/cm3 RadL: 1.759 cm Imean: 286.000 eV ---> Element: Iron ( ) Z = 26.0 N = 55.9 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Tungsten density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm + Material: Tungsten density: 19.300 g/cm3 RadL: 3.504 mm Imean: 725.200 eV ---> Element: Tungsten ( ) Z = 74.0 N = 183.8 A = 183.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm + Material: Lead density: 11.350 g/cm3 RadL: 5.612 mm Imean: 820.000 eV ---> Element: Lead ( ) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Uranium density: 18.950 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.166 mm + Material: Uranium density: 18.950 g/cm3 RadL: 3.166 mm Imean: 892.400 eV ---> Element: Uranium ( ) Z = 92.0 N = 238.0 A = 238.03 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 204322175.595 pc + Material: Galactic density: 0.000 mg/cm3 RadL: 204322175.595 pc Imean: 21.800 eV temperature: 2.73 K pressure: 0.00 atm ---> Element: Galactic ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % @@ -148,7 +148,7 @@ eBrem: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Total cross sections and sampling from StandBrem model (based on the EEDL data library) Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV. LPM flag 1 - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 eIoni: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -161,7 +161,7 @@ eBrem: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Total cross sections and sampling from StandBrem model (based on the EEDL data library) Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV. LPM flag 1 - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 annihil: Sampling according eplus2gg model tables are built for e+ @@ -178,7 +178,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 msc: Model variant of multiple scattering for GenericIon LateralDisplacementFlag= 0 Skin= 0 @@ -192,7 +192,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -200,7 +200,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -212,7 +212,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -229,7 +229,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -247,7 +247,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -260,7 +260,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0 + Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0, fluct: 0 Region -- appears in world volume Root logical volume(s) : World @@ -312,10 +312,10 @@ Run Summary truePathLength : 2.7521 cm +- 3.269 nm geomPathLength : 2.0696 cm +- 11.392 nm lateralDisplac : 1.1482 cm +- 9.6993 nm - Psi : 506.49 mrad +- 0.00036931 mrad (29.02 deg +- 2.116e-05 deg) + Psi : 506.49 mrad +- 0.00036939 mrad (29.02 deg +- 2.1164e-05 deg) - Theta_plane : 1803.7 mrad (103.34 deg) - phi correlation: 0.26266 +- 0.058181 (std::cos(phi_pos - phi_dir)) + Theta_plane : 1811.3 mrad (103.78 deg) + phi correlation: 0.26313 +- 0.056751 (std::cos(phi_pos - phi_dir)) Verification from G4EmCalculator. @@ -327,7 +327,7 @@ Run Summary --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 2018111343, 1005755293 + Current couple of seeds = 1495830004, 1445517985 ---------------------------------------- # /gun/energy 100 keV @@ -361,7 +361,7 @@ Index : 1 used in the geometry : Yes recalculation needed : No --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 2018111343, 1005755293 + Current couple of seeds = 1495830004, 1445517985 ---------------------------------------- Start Run processing. @@ -380,8 +380,8 @@ Run Summary lateralDisplac : 923.68 nm +- 256.83 fm Psi : 148.35 mrad +- 8.7703e-05 mrad (8.4998 deg +- 5.025e-06 deg) - Theta_plane : 246.16 mrad (14.104 deg) - phi correlation: 0.08837 +- 0.13162 (std::cos(phi_pos - phi_dir)) + Theta_plane : 231.09 mrad (13.241 deg) + phi correlation: 0.073719 +- 0.1302 (std::cos(phi_pos - phi_dir)) Verification from G4EmCalculator. @@ -393,7 +393,7 @@ Run Summary --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1387038228, 1801671687 + Current couple of seeds = 1231243716, 1284103083 ---------------------------------------- Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/extended/electromagnetic/TestEm15/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm15/include/DetectorConstruction.hh index c053e007ba..bfb42632d6 100644 --- a/examples/extended/electromagnetic/TestEm15/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm15/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.2 2006/06/29 16:46:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm15/include/DetectorMessenger.hh index 67b8027370..d19785b678 100644 --- a/examples/extended/electromagnetic/TestEm15/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm15/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.2 2006/06/29 16:46:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/EventAction.hh b/examples/extended/electromagnetic/TestEm15/include/EventAction.hh index 7feb7776b7..a0a994aa6e 100644 --- a/examples/extended/electromagnetic/TestEm15/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm15/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.2 2006/06/29 16:46:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm15/include/EventActionMessenger.hh index 346b0cf4c1..6731613a1a 100644 --- a/examples/extended/electromagnetic/TestEm15/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm15/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.2 2006/06/29 16:46:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/HistoManager.hh b/examples/extended/electromagnetic/TestEm15/include/HistoManager.hh index 4b226fd378..06587cfcfd 100644 --- a/examples/extended/electromagnetic/TestEm15/include/HistoManager.hh +++ b/examples/extended/electromagnetic/TestEm15/include/HistoManager.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.hh,v 1.3 2006/06/29 16:46:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.hh,v 1.4 2007/11/13 14:13:31 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -63,6 +63,7 @@ class HistoManager void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none"); void FillHisto(G4int id, G4double e, G4double weight = 1.0); void RemoveHisto (G4int); + void PrintHisto (G4int); G4bool HistoExist (G4int id) {return exist[id];} G4double GetHistoUnit(G4int id) {return Unit[id];} @@ -84,8 +85,13 @@ class HistoManager G4double Vmax [MaxHisto]; G4double Unit [MaxHisto]; G4double Width[MaxHisto]; + G4bool ascii[MaxHisto]; + G4bool factoryOn; HistoMessenger* histoMessenger; + + private: + void saveAscii(); }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/HistoMessenger.hh b/examples/extended/electromagnetic/TestEm15/include/HistoMessenger.hh index 3220def81f..c524b398b3 100644 --- a/examples/extended/electromagnetic/TestEm15/include/HistoMessenger.hh +++ b/examples/extended/electromagnetic/TestEm15/include/HistoMessenger.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.hh,v 1.2 2006/06/29 16:46:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.hh,v 1.3 2007/11/13 14:13:31 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -63,6 +63,7 @@ class HistoMessenger: public G4UImessenger G4UIcmdWithAString* typeCmd; G4UIcmdWithAString* optionCmd; G4UIcommand* histoCmd; + G4UIcmdWithAnInteger* prhistoCmd; G4UIcmdWithAnInteger* rmhistoCmd; }; diff --git a/examples/extended/electromagnetic/TestEm15/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm15/include/PhysListEmStandard.hh index 9f79033477..adccd5da2c 100644 --- a/examples/extended/electromagnetic/TestEm15/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm15/include/PhysListEmStandard.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.hh,v 1.2 2006/06/29 16:46:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm15/include/PhysicsList.hh index d2e5d66ce0..577f08acf0 100644 --- a/examples/extended/electromagnetic/TestEm15/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm15/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.2 2006/06/29 16:46:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/examples/extended/electromagnetic/TestEm15/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm15/include/PhysicsListMessenger.hh index d55b3c24b2..346ec1f45a 100644 --- a/examples/extended/electromagnetic/TestEm15/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm15/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.2 2006/06/29 16:46:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm15/include/PrimaryGeneratorAction.hh index ef9c71e486..b8b6586a80 100644 --- a/examples/extended/electromagnetic/TestEm15/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm15/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.2 2006/06/29 16:46:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/ProcessesCount.hh b/examples/extended/electromagnetic/TestEm15/include/ProcessesCount.hh index 67f4c6c481..16977b6b1b 100644 --- a/examples/extended/electromagnetic/TestEm15/include/ProcessesCount.hh +++ b/examples/extended/electromagnetic/TestEm15/include/ProcessesCount.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ProcessesCount.hh,v 1.2 2006/06/29 16:46:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/RunAction.hh b/examples/extended/electromagnetic/TestEm15/include/RunAction.hh index d6a34c95f3..0fe2017c14 100644 --- a/examples/extended/electromagnetic/TestEm15/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm15/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.3 2006/06/29 16:46:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/StepMax.hh b/examples/extended/electromagnetic/TestEm15/include/StepMax.hh index e02280941b..14f3c1ca13 100644 --- a/examples/extended/electromagnetic/TestEm15/include/StepMax.hh +++ b/examples/extended/electromagnetic/TestEm15/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.2 2006/06/29 16:46:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/StepMaxMessenger.hh b/examples/extended/electromagnetic/TestEm15/include/StepMaxMessenger.hh index 7226a0e281..951bccfe3f 100644 --- a/examples/extended/electromagnetic/TestEm15/include/StepMaxMessenger.hh +++ b/examples/extended/electromagnetic/TestEm15/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.2 2006/06/29 16:46:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm15/include/SteppingAction.hh index 7ac16aaa6a..84b6d5c65f 100644 --- a/examples/extended/electromagnetic/TestEm15/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm15/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.2 2006/06/29 16:46:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm15/include/SteppingVerbose.hh index ba81425a2a..cf44886167 100644 --- a/examples/extended/electromagnetic/TestEm15/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm15/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.2 2006/06/29 16:46:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/electromagnetic/TestEm15/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm15/src/DetectorConstruction.cc index b998f91124..1352a123cb 100644 --- a/examples/extended/electromagnetic/TestEm15/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm15/src/DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.cc,v 1.3 2006/06/29 16:46:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm15/src/DetectorMessenger.cc index fa9f77e80f..46cd81c5c6 100644 --- a/examples/extended/electromagnetic/TestEm15/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm15/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.2 2006/06/29 16:46:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/src/EventAction.cc b/examples/extended/electromagnetic/TestEm15/src/EventAction.cc index 31e3317a50..6955f24e1f 100644 --- a/examples/extended/electromagnetic/TestEm15/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm15/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.2 2006/06/29 16:46:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm15/src/EventActionMessenger.cc index 96614a69f2..2f9d4d4ad6 100644 --- a/examples/extended/electromagnetic/TestEm15/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm15/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.2 2006/06/29 16:46:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/src/HistoManager.cc b/examples/extended/electromagnetic/TestEm15/src/HistoManager.cc index 9b5416563e..1a2ac9a636 100644 --- a/examples/extended/electromagnetic/TestEm15/src/HistoManager.cc +++ b/examples/extended/electromagnetic/TestEm15/src/HistoManager.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.cc,v 1.4 2006/06/29 16:46:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.cc,v 1.5 2007/11/13 14:13:31 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -61,6 +61,7 @@ HistoManager::HistoManager() exist[k] = false; Unit[k] = 1.0; Width[k] = 1.0; + ascii[k] = false; } histoMessenger = new HistoMessenger(this); @@ -126,6 +127,7 @@ void HistoManager::save() { #ifdef G4ANALYSIS_USE if (factoryOn) { + saveAscii(); // Write ascii file, if any tree->commit(); // Writing the histograms to the file tree->close(); // and closing the tree (and the file) G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl; @@ -216,3 +218,43 @@ void HistoManager::RemoveHisto(G4int ih) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void HistoManager::PrintHisto(G4int ih) +{ + if (ih < MaxHisto) ascii[ih] = true; + else + G4cout << "---> warning from HistoManager::PrintHisto() : histo " << ih + << "does not exist" << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include + +void HistoManager::saveAscii() +{ +#ifdef G4ANALYSIS_USE + + G4String name = fileName[0] + ".ascii"; + std::ofstream File(name, std::ios::out); + File.setf( std::ios::scientific, std::ios::floatfield ); + + //write selected histograms + for (G4int ih=0; ihbinMean(iBin) << "\t" + << histo[ih]->binHeight(iBin) + << G4endl; + } + } + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + diff --git a/examples/extended/electromagnetic/TestEm15/src/HistoMessenger.cc b/examples/extended/electromagnetic/TestEm15/src/HistoMessenger.cc index 6e651f38f0..0afdeeff8b 100644 --- a/examples/extended/electromagnetic/TestEm15/src/HistoMessenger.cc +++ b/examples/extended/electromagnetic/TestEm15/src/HistoMessenger.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.cc,v 1.2 2006/06/29 16:46:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.cc,v 1.3 2007/11/13 14:13:31 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -52,12 +52,12 @@ HistoMessenger::HistoMessenger(HistoManager* manager) factoryCmd->SetGuidance("set name for the histograms file"); typeCmd = new G4UIcmdWithAString("/testem/histo/setFileType",this); - typeCmd->SetGuidance("set histograms file type"); + typeCmd->SetGuidance("set histograms file type: hbook, root, XML"); typeCmd->SetCandidates("hbook root XML"); optionCmd = new G4UIcmdWithAString("/testem/histo/setFileOption",this); optionCmd->SetGuidance("set option for the histograms file"); - + histoCmd = new G4UIcommand("/testem/histo/setHisto",this); histoCmd->SetGuidance("Set bining of the histo number ih :"); histoCmd->SetGuidance(" nbBins; valMin; valMax; unit (of vmin and vmax)"); @@ -85,6 +85,11 @@ HistoMessenger::HistoMessenger(HistoManager* manager) unit->SetDefaultValue("none"); histoCmd->SetParameter(unit); + prhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/printHisto",this); + prhistoCmd->SetGuidance("print histo #id on ascii file"); + prhistoCmd->SetParameterName("id",false); + prhistoCmd->SetRange("id>0"); + rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this); rmhistoCmd->SetGuidance("desactivate histo #id"); rmhistoCmd->SetParameterName("id",false); @@ -96,8 +101,9 @@ HistoMessenger::HistoMessenger(HistoManager* manager) HistoMessenger::~HistoMessenger() { delete rmhistoCmd; + delete prhistoCmd; delete histoCmd; - delete optionCmd; + delete optionCmd; delete typeCmd; delete factoryCmd; delete histoDir; @@ -126,7 +132,10 @@ void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues) if (unit != "none") vUnit = G4UIcommand::ValueOf(unit); histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit); } - + + if (command == prhistoCmd) + histoManager->PrintHisto(prhistoCmd->GetNewIntValue(newValues)); + if (command == rmhistoCmd) histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues)); } diff --git a/examples/extended/electromagnetic/TestEm15/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm15/src/PhysListEmStandard.cc index a0b802a471..1508cd6ca7 100644 --- a/examples/extended/electromagnetic/TestEm15/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm15/src/PhysListEmStandard.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.cc,v 1.2 2006/06/29 16:47:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm15/src/PhysicsList.cc index 1adc22a5bd..418b6c22ca 100644 --- a/examples/extended/electromagnetic/TestEm15/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm15/src/PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.cc,v 1.2 2006/06/29 16:47:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm15/src/PhysicsListMessenger.cc index 35f12ca18a..9e4b552b06 100644 --- a/examples/extended/electromagnetic/TestEm15/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm15/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.2 2006/06/29 16:47:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm15/src/PrimaryGeneratorAction.cc index 21bb0503d2..743bf253e4 100644 --- a/examples/extended/electromagnetic/TestEm15/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm15/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.2 2006/06/29 16:47:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/src/RunAction.cc b/examples/extended/electromagnetic/TestEm15/src/RunAction.cc index 6cc138f958..c3407dabd7 100644 --- a/examples/extended/electromagnetic/TestEm15/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm15/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.5 2006/06/29 16:47:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/src/StepMax.cc b/examples/extended/electromagnetic/TestEm15/src/StepMax.cc index fd8c14210b..47d089365f 100644 --- a/examples/extended/electromagnetic/TestEm15/src/StepMax.cc +++ b/examples/extended/electromagnetic/TestEm15/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.2 2006/06/29 16:47:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/src/StepMaxMessenger.cc b/examples/extended/electromagnetic/TestEm15/src/StepMaxMessenger.cc index 38a7a9d51d..8e6a35055c 100644 --- a/examples/extended/electromagnetic/TestEm15/src/StepMaxMessenger.cc +++ b/examples/extended/electromagnetic/TestEm15/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.2 2006/06/29 16:47:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm15/src/SteppingAction.cc index c93baec0f5..3689af3bf0 100644 --- a/examples/extended/electromagnetic/TestEm15/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm15/src/SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.cc,v 1.6 2007/03/15 15:52:39 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm15/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm15/src/SteppingVerbose.cc index da0e2bf039..3de93df723 100644 --- a/examples/extended/electromagnetic/TestEm15/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm15/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.2 2006/06/29 16:47:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/TestEm16.cc b/examples/extended/electromagnetic/TestEm16/TestEm16.cc index 1348f1bf1e..64faf1c36c 100644 --- a/examples/extended/electromagnetic/TestEm16/TestEm16.cc +++ b/examples/extended/electromagnetic/TestEm16/TestEm16.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TestEm16.cc,v 1.3 2007/01/18 09:07:20 hbu Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/TestEm16.out b/examples/extended/electromagnetic/TestEm16/TestEm16.out index b5b18b5d9b..377ef93dc5 100644 --- a/examples/extended/electromagnetic/TestEm16/TestEm16.out +++ b/examples/extended/electromagnetic/TestEm16/TestEm16.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,16 +9,16 @@ ***** Table : Nb of materials = 4 ***** - Material: Beryllium density: 1.848 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 35.276 cm + Material: Beryllium density: 1.848 g/cm3 RadL: 35.276 cm Imean: 63.600 eV ---> Element: Beryllium ( ) Z = 4.0 N = 9.0 A = 9.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Carbon density: 2.265 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 18.851 cm + Material: Carbon density: 2.265 g/cm3 RadL: 18.851 cm Imean: 78.000 eV ---> Element: Carbon ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm + Material: Iron density: 7.870 g/cm3 RadL: 1.759 cm Imean: 286.000 eV ---> Element: Iron ( ) Z = 26.0 N = 55.9 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Vacuum density: 0.000 mg/cm3 temperature: 296.15 K pressure: 0.00 atm RadLength: 25050962965.731 km + Material: Vacuum density: 0.000 mg/cm3 RadL: 25050962965.731 km Imean: 81.900 eV temperature: 296.15 K pressure: 0.00 atm ---> Element: Vacuum ( ) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % @@ -122,7 +122,7 @@ eBrem: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Total cross sections and sampling from StandBrem model (based on the EEDL data library) Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV. LPM flag 1 - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 SynRad: Incoherent Synchrotron Radiation good description for long magnets at all energies @@ -138,7 +138,7 @@ eBrem: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Total cross sections and sampling from StandBrem model (based on the EEDL data library) Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV. LPM flag 1 - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 annihil: Sampling according eplus2gg model tables are built for e+ @@ -154,7 +154,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -171,7 +171,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -224,7 +224,7 @@ G4SynchrotronRadiation::GetRandomEnergySR : Run terminated. Run Summary Number of events processed : 100 - User=25.86s Real=27.07s Sys=0.07s + User=27s Real=28.1s Sys=0.06s Summary for synchrotron radiation : Number of photons = 64554 Emean = 20.24 +/- 0.1449 keV diff --git a/examples/extended/electromagnetic/TestEm16/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm16/include/DetectorConstruction.hh index 7831c35bbc..d3ebc9407a 100644 --- a/examples/extended/electromagnetic/TestEm16/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm16/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.4 2007/01/18 09:07:20 hbu Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm16/include/DetectorMessenger.hh index 03af97d6ba..5bcc6611af 100644 --- a/examples/extended/electromagnetic/TestEm16/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm16/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.4 2007/01/18 09:07:20 hbu Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/include/EventAction.hh b/examples/extended/electromagnetic/TestEm16/include/EventAction.hh index 8795717c0a..43562716ed 100644 --- a/examples/extended/electromagnetic/TestEm16/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm16/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.2 2006/06/29 16:47:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm16/include/EventActionMessenger.hh index 6930e94e34..fa74006b4c 100644 --- a/examples/extended/electromagnetic/TestEm16/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm16/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.2 2006/06/29 16:47:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm16/include/PhysicsList.hh index c951d47ffd..f60b4c176a 100644 --- a/examples/extended/electromagnetic/TestEm16/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm16/include/PhysicsList.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsList.hh,v 1.4 2006/06/29 16:47:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm16/include/PhysicsListMessenger.hh index 21536cb847..fc16f4fbb1 100644 --- a/examples/extended/electromagnetic/TestEm16/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm16/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.4 2006/06/29 16:47:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm16/include/PrimaryGeneratorAction.hh index 2800690dcc..c167205fd2 100644 --- a/examples/extended/electromagnetic/TestEm16/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm16/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.3 2006/06/29 16:47:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/include/RunAction.hh b/examples/extended/electromagnetic/TestEm16/include/RunAction.hh index 2a74d60c83..7240aeef64 100644 --- a/examples/extended/electromagnetic/TestEm16/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm16/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.5 2007/01/18 09:07:20 hbu Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm16/include/SteppingAction.hh index 5dbc06a7d7..8916de9a11 100644 --- a/examples/extended/electromagnetic/TestEm16/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm16/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.3 2007/01/18 09:07:20 hbu Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm16/include/SteppingVerbose.hh index a65b0042c1..99515caa82 100644 --- a/examples/extended/electromagnetic/TestEm16/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm16/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.2 2006/06/29 16:47:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/electromagnetic/TestEm16/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm16/src/DetectorConstruction.cc index d7c437bba4..2dc3cc6af3 100644 --- a/examples/extended/electromagnetic/TestEm16/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm16/src/DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.cc,v 1.4 2007/01/18 09:07:20 hbu Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm16/src/DetectorMessenger.cc index cd2fc3908d..ca8261c555 100644 --- a/examples/extended/electromagnetic/TestEm16/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm16/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.3 2007/01/18 09:07:20 hbu Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/src/EventAction.cc b/examples/extended/electromagnetic/TestEm16/src/EventAction.cc index 2af36f4b7d..9adb11fd7b 100644 --- a/examples/extended/electromagnetic/TestEm16/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm16/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.2 2006/06/29 16:47:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm16/src/EventActionMessenger.cc index 052ccb7f73..5145f01447 100644 --- a/examples/extended/electromagnetic/TestEm16/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm16/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.2 2006/06/29 16:47:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm16/src/PhysicsList.cc index 30f9539cc4..4bf378a13e 100644 --- a/examples/extended/electromagnetic/TestEm16/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm16/src/PhysicsList.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsList.cc,v 1.4 2006/06/29 16:47:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm16/src/PhysicsListMessenger.cc index 6132792d07..81c8fc54ef 100644 --- a/examples/extended/electromagnetic/TestEm16/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm16/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.4 2006/06/29 16:47:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm16/src/PrimaryGeneratorAction.cc index 342fddd277..821de65eb9 100644 --- a/examples/extended/electromagnetic/TestEm16/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm16/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.3 2006/06/29 16:48:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/src/RunAction.cc b/examples/extended/electromagnetic/TestEm16/src/RunAction.cc index 0fded05702..878c72ccc7 100644 --- a/examples/extended/electromagnetic/TestEm16/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm16/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.8 2007/01/18 10:24:35 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm16/src/SteppingAction.cc index d9af112af6..de4d9704e0 100644 --- a/examples/extended/electromagnetic/TestEm16/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm16/src/SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.cc,v 1.5 2007/01/18 09:07:20 hbu Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm16/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm16/src/SteppingVerbose.cc index 4213e56d62..5c976d19e6 100644 --- a/examples/extended/electromagnetic/TestEm16/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm16/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.2 2006/06/29 16:48:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/TestEm17.cc b/examples/extended/electromagnetic/TestEm17/TestEm17.cc index 3e41f1c95e..3411a6cd93 100644 --- a/examples/extended/electromagnetic/TestEm17/TestEm17.cc +++ b/examples/extended/electromagnetic/TestEm17/TestEm17.cc @@ -25,7 +25,7 @@ // // // $Id: TestEm17.cc,v 1.2 2006/06/29 16:48:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/TestEm17.out b/examples/extended/electromagnetic/TestEm17/TestEm17.out index 604e7d193e..4501528e1d 100644 --- a/examples/extended/electromagnetic/TestEm17/TestEm17.out +++ b/examples/extended/electromagnetic/TestEm17/TestEm17.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,28 +9,28 @@ ***** Table : Nb of materials = 7 ***** - Material: galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 204727576.737 pc + Material: galactic density: 0.000 mg/cm3 RadL: 204727576.737 pc Imean: 21.800 eV temperature: 2.73 K pressure: 0.00 atm ---> Element: galactic ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: CaCO3 density: 2.800 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.581 cm + Material: CaCO3 density: 2.800 g/cm3 RadL: 8.581 cm Imean: 123.060 eV ---> Element: Calcium (Ca) Z = 20.0 N = 40.1 A = 40.08 g/mole ElmMassFraction: 40.04 % ElmAbundance 20.00 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 12.00 % ElmAbundance 20.00 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 47.96 % ElmAbundance 60.00 % - Material: Carbon density: 2.265 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 18.850 cm + Material: Carbon density: 2.265 g/cm3 RadL: 18.850 cm Imean: 78.000 eV ---> Element: Carbon ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm + Material: Iron density: 7.870 g/cm3 RadL: 1.759 cm Imean: 286.000 eV ---> Element: Iron ( ) Z = 26.0 N = 55.9 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Tin density: 7.310 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.206 cm + Material: Tin density: 7.310 g/cm3 RadL: 1.206 cm Imean: 490.000 eV ---> Element: Tin ( ) Z = 50.0 N = 118.7 A = 118.70 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: HI density: 2.800 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.049 cm + Material: HI density: 2.800 g/cm3 RadL: 3.049 cm Imean: 465.242 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 0.79 % ElmAbundance 50.00 % ---> Element: Iodine (I) Z = 53.0 N = 126.9 A = 126.90 g/mole ElmMassFraction: 99.21 % ElmAbundance 50.00 % @@ -142,18 +142,18 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10000 - User=138.96s Real=254.58s Sys=6.83s + User=148.99s Real=261.1s Sys=6.76s The run consists of 10000 mu+ of 10 TeV through 1 m of Iron (density: 7.9 g/cm3 ) - Number of process calls ---> muIoni : 469141 muPairProd : 63354 muBrems : 711 + Number of process calls ---> muIoni : 468278 muPairProd : 63553 muBrems : 665 - Simulation: total CrossSection = 0.53321 /cm MeanFreePath = 1.8754 cm massicCrossSection = 0.067752 cm2/g + Simulation: total CrossSection = 0.5325 /cm MeanFreePath = 1.8779 cm massicCrossSection = 0.067661 cm2/g Theory: total CrossSection = 0.53938 /cm MeanFreePath = 1.854 cm massicCrossSection = 0.068536 cm2/g --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 630902075, 802952017 + Current couple of seeds = 1877659782, 1214151217 ---------------------------------------- Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/extended/electromagnetic/TestEm17/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm17/include/DetectorConstruction.hh index 631d837bb0..94bfefa13a 100644 --- a/examples/extended/electromagnetic/TestEm17/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm17/include/DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: DetectorConstruction.hh,v 1.2 2006/06/29 16:48:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm17/include/DetectorMessenger.hh index 89998d2910..6c7b6dbc86 100644 --- a/examples/extended/electromagnetic/TestEm17/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm17/include/DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: DetectorMessenger.hh,v 1.2 2006/06/29 16:48:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm17/include/EventAction.hh b/examples/extended/electromagnetic/TestEm17/include/EventAction.hh index a183515904..199db2ba97 100644 --- a/examples/extended/electromagnetic/TestEm17/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm17/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.2 2006/06/29 16:48:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm17/include/EventActionMessenger.hh index e8f45a39e8..292ea6c218 100644 --- a/examples/extended/electromagnetic/TestEm17/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm17/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.2 2006/06/29 16:48:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/HistoManager.hh b/examples/extended/electromagnetic/TestEm17/include/HistoManager.hh index 2deccb3508..f8a0445a26 100644 --- a/examples/extended/electromagnetic/TestEm17/include/HistoManager.hh +++ b/examples/extended/electromagnetic/TestEm17/include/HistoManager.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HistoManager.hh,v 1.2 2006/06/29 16:48:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/HistoMessenger.hh b/examples/extended/electromagnetic/TestEm17/include/HistoMessenger.hh index 6f42cec0ab..7ae6db4ee4 100644 --- a/examples/extended/electromagnetic/TestEm17/include/HistoMessenger.hh +++ b/examples/extended/electromagnetic/TestEm17/include/HistoMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HistoMessenger.hh,v 1.2 2006/06/29 16:48:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/MuCrossSections.hh b/examples/extended/electromagnetic/TestEm17/include/MuCrossSections.hh index 83af476af7..42eee8a1c3 100644 --- a/examples/extended/electromagnetic/TestEm17/include/MuCrossSections.hh +++ b/examples/extended/electromagnetic/TestEm17/include/MuCrossSections.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: MuCrossSections.hh,v 1.2 2006/06/29 16:48:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/MuNuclearBuilder.hh b/examples/extended/electromagnetic/TestEm17/include/MuNuclearBuilder.hh index 7d7841eb94..5b52e2dc54 100644 --- a/examples/extended/electromagnetic/TestEm17/include/MuNuclearBuilder.hh +++ b/examples/extended/electromagnetic/TestEm17/include/MuNuclearBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: MuNuclearBuilder.hh,v 1.2 2006/06/29 16:48:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm17/include/PhysListEmStandard.hh index 04040f1cae..304163a777 100644 --- a/examples/extended/electromagnetic/TestEm17/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm17/include/PhysListEmStandard.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmStandard.hh,v 1.2 2006/06/29 16:48:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm17/include/PhysicsList.hh index 289e3d9299..1cdd14b409 100644 --- a/examples/extended/electromagnetic/TestEm17/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm17/include/PhysicsList.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsList.hh,v 1.2 2006/06/29 16:48:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm17/include/PhysicsListMessenger.hh index dff71fbe36..5a58ab12e7 100644 --- a/examples/extended/electromagnetic/TestEm17/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm17/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.2 2006/06/29 16:48:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm17/include/PrimaryGeneratorAction.hh index 3261a829db..f317291c22 100644 --- a/examples/extended/electromagnetic/TestEm17/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm17/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.2 2006/06/29 16:48:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/ProcessesCount.hh b/examples/extended/electromagnetic/TestEm17/include/ProcessesCount.hh index de1fffa289..549decac94 100644 --- a/examples/extended/electromagnetic/TestEm17/include/ProcessesCount.hh +++ b/examples/extended/electromagnetic/TestEm17/include/ProcessesCount.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ProcessesCount.hh,v 1.2 2006/06/29 16:48:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/RunAction.hh b/examples/extended/electromagnetic/TestEm17/include/RunAction.hh index f6002afdcb..ad70b2cabd 100644 --- a/examples/extended/electromagnetic/TestEm17/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm17/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.2 2006/06/29 16:48:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/StackingAction.hh b/examples/extended/electromagnetic/TestEm17/include/StackingAction.hh index fa30d68957..78b600963b 100644 --- a/examples/extended/electromagnetic/TestEm17/include/StackingAction.hh +++ b/examples/extended/electromagnetic/TestEm17/include/StackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingAction.hh,v 1.2 2006/06/29 16:48:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm17/include/SteppingAction.hh index 49b4f2b53e..49b863781b 100644 --- a/examples/extended/electromagnetic/TestEm17/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm17/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.2 2006/06/29 16:48:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm17/include/SteppingVerbose.hh index 6e36919048..9298337f67 100644 --- a/examples/extended/electromagnetic/TestEm17/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm17/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.2 2006/06/29 16:48:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/electromagnetic/TestEm17/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm17/src/DetectorConstruction.cc index edfd3dc161..6d37f43366 100644 --- a/examples/extended/electromagnetic/TestEm17/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm17/src/DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: DetectorConstruction.cc,v 1.3 2007/05/12 16:33:53 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm17/src/DetectorMessenger.cc index 416943b83b..b976164024 100644 --- a/examples/extended/electromagnetic/TestEm17/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm17/src/DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: DetectorMessenger.cc,v 1.2 2006/06/29 16:48:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm17/src/EventAction.cc b/examples/extended/electromagnetic/TestEm17/src/EventAction.cc index ca7b4d6774..1535714166 100644 --- a/examples/extended/electromagnetic/TestEm17/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm17/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.2 2006/06/29 16:48:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm17/src/EventActionMessenger.cc index 03e30f4b99..f1e62f6682 100644 --- a/examples/extended/electromagnetic/TestEm17/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm17/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.2 2006/06/29 16:48:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/HistoManager.cc b/examples/extended/electromagnetic/TestEm17/src/HistoManager.cc index 67c0f55691..1d7390c3cb 100644 --- a/examples/extended/electromagnetic/TestEm17/src/HistoManager.cc +++ b/examples/extended/electromagnetic/TestEm17/src/HistoManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HistoManager.cc,v 1.2 2006/06/29 16:48:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/HistoMessenger.cc b/examples/extended/electromagnetic/TestEm17/src/HistoMessenger.cc index ee46c49c4c..bd8f0e5b93 100644 --- a/examples/extended/electromagnetic/TestEm17/src/HistoMessenger.cc +++ b/examples/extended/electromagnetic/TestEm17/src/HistoMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HistoMessenger.cc,v 1.2 2006/06/29 16:49:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/MuCrossSections.cc b/examples/extended/electromagnetic/TestEm17/src/MuCrossSections.cc index 128e3b8654..568405a05f 100644 --- a/examples/extended/electromagnetic/TestEm17/src/MuCrossSections.cc +++ b/examples/extended/electromagnetic/TestEm17/src/MuCrossSections.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: MuCrossSections.cc,v 1.2 2006/06/29 16:49:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/MuNuclearBuilder.cc b/examples/extended/electromagnetic/TestEm17/src/MuNuclearBuilder.cc index 51981012b6..543a4cb6e8 100644 --- a/examples/extended/electromagnetic/TestEm17/src/MuNuclearBuilder.cc +++ b/examples/extended/electromagnetic/TestEm17/src/MuNuclearBuilder.cc @@ -25,7 +25,7 @@ // // // $Id: MuNuclearBuilder.cc,v 1.2 2006/06/29 16:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm17/src/PhysListEmStandard.cc index b59bdfb221..34779a35ac 100644 --- a/examples/extended/electromagnetic/TestEm17/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm17/src/PhysListEmStandard.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmStandard.cc,v 1.2 2006/06/29 16:49:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm17/src/PhysicsList.cc index bdddbf94ed..d1517493f5 100644 --- a/examples/extended/electromagnetic/TestEm17/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm17/src/PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.cc,v 1.4 2006/10/24 10:06:21 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm17/src/PhysicsListMessenger.cc index fed394992f..8c4672ddb0 100644 --- a/examples/extended/electromagnetic/TestEm17/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm17/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.2 2006/06/29 16:49:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm17/src/PrimaryGeneratorAction.cc index 579314d7dd..bbea50c8d1 100644 --- a/examples/extended/electromagnetic/TestEm17/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm17/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.2 2006/06/29 16:49:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/RunAction.cc b/examples/extended/electromagnetic/TestEm17/src/RunAction.cc index e487b32e0f..bf441f1d7c 100644 --- a/examples/extended/electromagnetic/TestEm17/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm17/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.2 2006/06/29 16:49:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/StackingAction.cc b/examples/extended/electromagnetic/TestEm17/src/StackingAction.cc index 681c402c42..faad4fd61a 100644 --- a/examples/extended/electromagnetic/TestEm17/src/StackingAction.cc +++ b/examples/extended/electromagnetic/TestEm17/src/StackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingAction.cc,v 1.2 2006/06/29 16:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm17/src/SteppingAction.cc index e4696b5f1b..555b06c7ef 100644 --- a/examples/extended/electromagnetic/TestEm17/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm17/src/SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.cc,v 1.2 2006/06/29 16:49:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm17/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm17/src/SteppingVerbose.cc index 86a7f78f6e..5035833cf0 100644 --- a/examples/extended/electromagnetic/TestEm17/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm17/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.2 2006/06/29 16:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/History b/examples/extended/electromagnetic/TestEm18/History index 6ad0dd2d49..76519e41ab 100644 --- a/examples/extended/electromagnetic/TestEm18/History +++ b/examples/extended/electromagnetic/TestEm18/History @@ -1,4 +1,4 @@ -$Id: History,v 1.2 2007/02/16 11:59:47 maire Exp $ +$Id: History,v 1.4 2007/11/20 14:15:18 maire Exp $ ---------------------------------------------------- ========================================================= @@ -15,6 +15,12 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + 20-nov-07 mma (testem18-V09-00-01) +- PhysicsList : more EmOptions + + 13-nov-07 mma (testem18-V09-00-00) +- HistoManager/HistoMessenger : print selected histos on ascii file + 16-feb-07 mma (testem18-V08-02-01) - add Water-vapor - correct RunAction::GetEnergyFromRange() diff --git a/examples/extended/electromagnetic/TestEm18/README b/examples/extended/electromagnetic/TestEm18/README index 5723f8b74c..2c3e7c126a 100644 --- a/examples/extended/electromagnetic/TestEm18/README +++ b/examples/extended/electromagnetic/TestEm18/README @@ -1,4 +1,4 @@ -$Id: README,v 1.1 2007/02/13 17:57:19 maire Exp $ +$Id: README,v 1.2 2007/11/13 16:43:59 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -66,6 +66,10 @@ $Id: README,v 1.1 2007/02/13 17:57:19 maire Exp $ the commands: /testem/histo/setFileName name (default testem18) /testem/histo/setFileType name (default hbook) + + It is also possible to print selected histograms on an ascii file: + /testem/histo/printHisto id + All selected histos will be written on a file name.ascii (default testem18) Note that, by default, histograms are disabled. To activate them, uncomment the flag G4ANALYSIS_USE in GNUmakefile. diff --git a/examples/extended/electromagnetic/TestEm18/TestEm18.cc b/examples/extended/electromagnetic/TestEm18/TestEm18.cc index 4dd23894ef..aba2c1a3e0 100644 --- a/examples/extended/electromagnetic/TestEm18/TestEm18.cc +++ b/examples/extended/electromagnetic/TestEm18/TestEm18.cc @@ -25,7 +25,7 @@ // // // $Id: TestEm18.cc,v 1.1 2007/02/13 17:57:19 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/TestEm18.out b/examples/extended/electromagnetic/TestEm18/TestEm18.out index 1a69d74383..fdcc29d01b 100644 --- a/examples/extended/electromagnetic/TestEm18/TestEm18.out +++ b/examples/extended/electromagnetic/TestEm18/TestEm18.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,40 +9,40 @@ ***** Table : Nb of materials = 11 ***** - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm + Material: Water density: 1.000 g/cm3 RadL: 36.092 cm Imean: 75.000 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: Water_vapor density: 1.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 360.925 m + Material: Water_vapor density: 1.000 mg/cm3 RadL: 360.925 m Imean: 75.000 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: Carbon density: 2.267 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 18.833 cm + Material: Carbon density: 2.267 g/cm3 RadL: 18.833 cm Imean: 78.000 eV ---> Element: Carbon ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm + Material: Aluminium density: 2.700 g/cm3 RadL: 8.893 cm Imean: 166.400 eV ---> Element: Aluminium ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Silicon density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm + Material: Silicon density: 2.330 g/cm3 RadL: 9.368 cm Imean: 173.600 eV ---> Element: Silicon ( ) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm + Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Imean: 187.200 eV ---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm + Material: Iron density: 7.870 g/cm3 RadL: 1.759 cm Imean: 286.000 eV ---> Element: Iron ( ) Z = 26.0 N = 55.9 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Germanium density: 5.323 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.301 cm + Material: Germanium density: 5.323 g/cm3 RadL: 2.301 cm Imean: 332.800 eV ---> Element: Germanium ( ) Z = 32.0 N = 72.6 A = 72.61 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Tungsten density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm + Material: Tungsten density: 19.300 g/cm3 RadL: 3.504 mm Imean: 725.200 eV ---> Element: Tungsten ( ) Z = 74.0 N = 183.8 A = 183.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm + Material: Lead density: 11.350 g/cm3 RadL: 5.612 mm Imean: 820.000 eV ---> Element: Lead ( ) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % @@ -63,7 +63,7 @@ physicsList->Construct() start. physicsList->setCut() start. PhysicsList::SetCuts:CutLength : 1 mm # -/gun/particle e- +/gun/particle e- /gun/energy 10 MeV # /run/beamOn 100000 @@ -74,38 +74,38 @@ phot: Total cross sections from Sandia parametrisation. compt: Total cross sections has a good parametrisation from 10 KeV to (100/Z) GeV Sampling according Klein-Nishina model tables are built for gamma - Lambda tables from 100 eV to 100 GeV in 90 bins. + Lambda tables from 100 eV to 100 TeV in 1200 bins. conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV for all Z; sampling secondary e+e- according Bethe-Heitler model tables are built for gamma - Lambda tables from 1.022 MeV to 100 GeV in 100 bins. + Lambda tables from 1.022 MeV to 100 TeV in 1200 bins. eIoni: tables are built for e- - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 - CSDA range table up to 100 TeV in 480 bins. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 100 TeV in 1200 bins. eBrem: tables are built for e- - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Total cross sections and sampling from StandBrem model (based on the EEDL data library) Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV. LPM flag 1 eIoni: tables are built for e+ - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 - CSDA range table up to 100 TeV in 480 bins. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 100 TeV in 1200 bins. eBrem: tables are built for e+ - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Total cross sections and sampling from StandBrem model (based on the EEDL data library) Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV. LPM flag 1 @@ -114,87 +114,87 @@ annihil: Sampling according eplus2gg model Lambda tables from 100 eV to 100 TeV in 120 bins. hIoni: tables are built for proton - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 - CSDA range table up to 100 TeV in 480 bins. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 100 TeV in 1200 bins. ionIoni: tables are built for GenericIon - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1 - CSDA range table up to 100 TeV in 480 bins. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 100 TeV in 1200 bins. hIoni: tables are built for anti_proton - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 - CSDA range table up to 100 TeV in 480 bins. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 100 TeV in 1200 bins. muIoni: tables are built for mu+ - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 - CSDA range table up to 100 TeV in 480 bins. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 100 TeV in 1200 bins. muBrems: tables are built for mu+ - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Parametrised model muPairProd: tables are built for mu+ - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Parametrised model muIoni: tables are built for mu- - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 - CSDA range table up to 100 TeV in 480 bins. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 100 TeV in 1200 bins. muBrems: tables are built for mu- - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Parametrised model muPairProd: tables are built for mu- - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Parametrised model hIoni: tables are built for pi+ - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 - CSDA range table up to 100 TeV in 480 bins. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 100 TeV in 1200 bins. hIoni: tables are built for pi- - dE/dx and range tables from 100 eV to 100 TeV in 480 bins. - Lambda tables from threshold to 100 TeV in 480 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 - CSDA range table up to 100 TeV in 480 bins. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 100 TeV in 1200 bins. Region -- appears in world volume Root logical volume(s) : Water @@ -248,7 +248,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=47.51s Real=47.52s Sys=0s + User=48.4s Real=48.4s Sys=0s ======================== run summary ====================== @@ -256,19 +256,19 @@ Run Summary =========================================================== - trackLength= 1.0005 cm nb of steps= 1.5539 stepSize= 6.4383 mm + trackLength= 1.0005 cm nb of steps= 1.5836 stepSize= 6.3178 mm - d-rays : eLoss/primary= 245.12 keV nb of d-rays= 0.23468 = 1.0445 MeV Tmin= 347.15 keV Tmax= 4.9503 MeV + d-rays : eLoss/primary= 247.88 keV nb of d-rays= 0.2368 = 1.0468 MeV Tmin= 347.15 keV Tmax= 4.9503 MeV - brems : eLoss/primary= 176.1 keV nb of gammas= 0.30529 = 576.82 keV Tmin= 2.9021 keV Tmax= 9.7003 MeV + brems : eLoss/primary= 177.14 keV nb of gammas= 0.3051 = 580.59 keV Tmin= 2.9021 keV Tmax= 9.6977 MeV - deposit : eLoss/primary= 1.7338 MeV table= 1.7348 MeV ---> simul/reference= 0.99947 + deposit : eLoss/primary= 1.7336 MeV table= 1.7348 MeV ---> simul/reference= 0.99932 - total : eLoss/primary= 2.1551 MeV table= 2.1626 MeV ---> simul/reference= 0.99653 + total : eLoss/primary= 2.1586 MeV table= 2.1627 MeV ---> simul/reference= 0.9981 --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1318030641, 1948814343 + Current couple of seeds = 539777958, 476209442 ---------------------------------------- UserDetectorConstruction deleted. UserPhysicsList deleted. diff --git a/examples/extended/electromagnetic/TestEm18/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm18/include/DetectorConstruction.hh index c101231c32..42a3ba6e77 100644 --- a/examples/extended/electromagnetic/TestEm18/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm18/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm18/include/DetectorMessenger.hh index 7bbd471d3e..40d0cec68d 100644 --- a/examples/extended/electromagnetic/TestEm18/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm18/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/EventAction.hh b/examples/extended/electromagnetic/TestEm18/include/EventAction.hh index 66be5cd698..ae43d6aa49 100644 --- a/examples/extended/electromagnetic/TestEm18/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm18/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/EventMessenger.hh b/examples/extended/electromagnetic/TestEm18/include/EventMessenger.hh index 9597441415..7673a1fffc 100644 --- a/examples/extended/electromagnetic/TestEm18/include/EventMessenger.hh +++ b/examples/extended/electromagnetic/TestEm18/include/EventMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/HistoManager.hh b/examples/extended/electromagnetic/TestEm18/include/HistoManager.hh index bffb4dc8b5..61a232ceef 100644 --- a/examples/extended/electromagnetic/TestEm18/include/HistoManager.hh +++ b/examples/extended/electromagnetic/TestEm18/include/HistoManager.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.hh,v 1.2 2007/11/13 16:43:59 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -63,7 +63,8 @@ class HistoManager void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none"); void FillHisto(G4int id, G4double e, G4double weight = 1.0); void RemoveHisto (G4int); - + void PrintHisto (G4int); + G4bool HistoExist (G4int id) {return exist[id];} G4double GetHistoUnit(G4int id) {return Unit[id];} G4double GetBinWidth (G4int id) {return Width[id];} @@ -84,8 +85,13 @@ class HistoManager G4double Vmax [MaxHisto]; G4double Unit [MaxHisto]; G4double Width[MaxHisto]; + G4bool ascii[MaxHisto]; + G4bool factoryOn; HistoMessenger* histoMessenger; + + private: + void saveAscii(); }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/HistoMessenger.hh b/examples/extended/electromagnetic/TestEm18/include/HistoMessenger.hh index 15ca1a5090..937dc49368 100644 --- a/examples/extended/electromagnetic/TestEm18/include/HistoMessenger.hh +++ b/examples/extended/electromagnetic/TestEm18/include/HistoMessenger.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.hh,v 1.2 2007/11/13 16:43:59 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -61,8 +61,9 @@ class HistoMessenger: public G4UImessenger G4UIdirectory* histoDir; G4UIcmdWithAString* factoryCmd; G4UIcmdWithAString* typeCmd; - G4UIcmdWithAString* optionCmd; + G4UIcmdWithAString* optionCmd; G4UIcommand* histoCmd; + G4UIcmdWithAnInteger* prhistoCmd; G4UIcmdWithAnInteger* rmhistoCmd; }; diff --git a/examples/extended/electromagnetic/TestEm18/include/PhysListEmLivermore.hh b/examples/extended/electromagnetic/TestEm18/include/PhysListEmLivermore.hh index 31ecfaef4b..fc2f0d3852 100644 --- a/examples/extended/electromagnetic/TestEm18/include/PhysListEmLivermore.hh +++ b/examples/extended/electromagnetic/TestEm18/include/PhysListEmLivermore.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/PhysListEmPenelope.hh b/examples/extended/electromagnetic/TestEm18/include/PhysListEmPenelope.hh index 48a05e6c39..12d2f73636 100644 --- a/examples/extended/electromagnetic/TestEm18/include/PhysListEmPenelope.hh +++ b/examples/extended/electromagnetic/TestEm18/include/PhysListEmPenelope.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmPenelope.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm18/include/PhysListEmStandard.hh index d00048e0dd..f76e983f25 100644 --- a/examples/extended/electromagnetic/TestEm18/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm18/include/PhysListEmStandard.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmStandard.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm18/include/PhysicsList.hh index 42d0fb4f96..9a275734f9 100644 --- a/examples/extended/electromagnetic/TestEm18/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm18/include/PhysicsList.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsList.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm18/include/PhysicsListMessenger.hh index ddeee7ad86..39f5cb6bba 100644 --- a/examples/extended/electromagnetic/TestEm18/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm18/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm18/include/PrimaryGeneratorAction.hh index 8a74506d09..c751ccea7b 100644 --- a/examples/extended/electromagnetic/TestEm18/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm18/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/RunAction.hh b/examples/extended/electromagnetic/TestEm18/include/RunAction.hh index 5ff11b7dc8..4c31e93104 100644 --- a/examples/extended/electromagnetic/TestEm18/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm18/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/StackingAction.hh b/examples/extended/electromagnetic/TestEm18/include/StackingAction.hh index 737faedd8b..ce05b50818 100644 --- a/examples/extended/electromagnetic/TestEm18/include/StackingAction.hh +++ b/examples/extended/electromagnetic/TestEm18/include/StackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/StepMax.hh b/examples/extended/electromagnetic/TestEm18/include/StepMax.hh index 344deb569c..9d163a2751 100644 --- a/examples/extended/electromagnetic/TestEm18/include/StepMax.hh +++ b/examples/extended/electromagnetic/TestEm18/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/StepMaxMessenger.hh b/examples/extended/electromagnetic/TestEm18/include/StepMaxMessenger.hh index d570cb7d2c..4720f02a50 100644 --- a/examples/extended/electromagnetic/TestEm18/include/StepMaxMessenger.hh +++ b/examples/extended/electromagnetic/TestEm18/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm18/include/SteppingAction.hh index 606e3cbe1c..cf24d4a963 100644 --- a/examples/extended/electromagnetic/TestEm18/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm18/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm18/include/SteppingVerbose.hh index 70ed7d7fb0..b60b787d46 100644 --- a/examples/extended/electromagnetic/TestEm18/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm18/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/electromagnetic/TestEm18/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm18/src/DetectorConstruction.cc index 9f7f529c72..7e4f6c2b8a 100644 --- a/examples/extended/electromagnetic/TestEm18/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm18/src/DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.cc,v 1.2 2007/02/16 11:59:47 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm18/src/DetectorMessenger.cc index 849746e87c..57efbf3744 100644 --- a/examples/extended/electromagnetic/TestEm18/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm18/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/EventAction.cc b/examples/extended/electromagnetic/TestEm18/src/EventAction.cc index e44e0f65d5..556869c0e9 100644 --- a/examples/extended/electromagnetic/TestEm18/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm18/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/EventMessenger.cc b/examples/extended/electromagnetic/TestEm18/src/EventMessenger.cc index 85113a9ab7..f58c3c5263 100644 --- a/examples/extended/electromagnetic/TestEm18/src/EventMessenger.cc +++ b/examples/extended/electromagnetic/TestEm18/src/EventMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/HistoManager.cc b/examples/extended/electromagnetic/TestEm18/src/HistoManager.cc index b99ea61871..035d6bd21a 100644 --- a/examples/extended/electromagnetic/TestEm18/src/HistoManager.cc +++ b/examples/extended/electromagnetic/TestEm18/src/HistoManager.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.cc,v 1.2 2007/11/13 16:43:59 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -61,6 +61,7 @@ HistoManager::HistoManager() exist[k] = false; Unit[k] = 1.0; Width[k] = 1.0; + ascii[k] = false; } histoMessenger = new HistoMessenger(this); @@ -127,6 +128,7 @@ void HistoManager::save() { #ifdef G4ANALYSIS_USE if (factoryOn) { + saveAscii(); // Write ascii file, if any tree->commit(); // Writing the histograms to the file tree->close(); // and closing the tree (and the file) G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl; @@ -212,4 +214,43 @@ void HistoManager::RemoveHisto(G4int ih) } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void HistoManager::PrintHisto(G4int ih) +{ + if (ih < MaxHisto) ascii[ih] = true; + else + G4cout << "---> warning from HistoManager::PrintHisto() : histo " << ih + << "does not exist" << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include + +void HistoManager::saveAscii() +{ +#ifdef G4ANALYSIS_USE + + G4String name = fileName[0] + ".ascii"; + std::ofstream File(name, std::ios::out); + File.setf( std::ios::scientific, std::ios::floatfield ); + + //write selected histograms + for (G4int ih=0; ihbinMean(iBin) << "\t" + << histo[ih]->binHeight(iBin) + << G4endl; + } + } + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/electromagnetic/TestEm18/src/HistoMessenger.cc b/examples/extended/electromagnetic/TestEm18/src/HistoMessenger.cc index 114a1450ee..89f9bd7b74 100644 --- a/examples/extended/electromagnetic/TestEm18/src/HistoMessenger.cc +++ b/examples/extended/electromagnetic/TestEm18/src/HistoMessenger.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.cc,v 1.2 2007/11/13 16:43:59 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -57,7 +57,7 @@ HistoMessenger::HistoMessenger(HistoManager* manager) optionCmd = new G4UIcmdWithAString("/testem/histo/setFileOption",this); optionCmd->SetGuidance("set option for the histograms file"); - + histoCmd = new G4UIcommand("/testem/histo/setHisto",this); histoCmd->SetGuidance("Set bining of the histo number ih :"); histoCmd->SetGuidance(" nbBins; valMin; valMax; unit (of vmin and vmax)"); @@ -85,6 +85,11 @@ HistoMessenger::HistoMessenger(HistoManager* manager) unit->SetDefaultValue("none"); histoCmd->SetParameter(unit); + prhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/printHisto",this); + prhistoCmd->SetGuidance("print histo #id on ascii file"); + prhistoCmd->SetParameterName("id",false); + prhistoCmd->SetRange("id>0"); + rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this); rmhistoCmd->SetGuidance("desactivate histo #id"); rmhistoCmd->SetParameterName("id",false); @@ -96,8 +101,9 @@ HistoMessenger::HistoMessenger(HistoManager* manager) HistoMessenger::~HistoMessenger() { delete rmhistoCmd; + delete prhistoCmd; delete histoCmd; - delete optionCmd; + delete optionCmd; delete typeCmd; delete factoryCmd; delete histoDir; @@ -126,7 +132,10 @@ void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues) if (unit != "none") vUnit = G4UIcommand::ValueOf(unit); histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit); } - + + if (command == prhistoCmd) + histoManager->PrintHisto(prhistoCmd->GetNewIntValue(newValues)); + if (command == rmhistoCmd) histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues)); } diff --git a/examples/extended/electromagnetic/TestEm18/src/PhysListEmLivermore.cc b/examples/extended/electromagnetic/TestEm18/src/PhysListEmLivermore.cc index 0eca10a690..78599e0169 100644 --- a/examples/extended/electromagnetic/TestEm18/src/PhysListEmLivermore.cc +++ b/examples/extended/electromagnetic/TestEm18/src/PhysListEmLivermore.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/PhysListEmPenelope.cc b/examples/extended/electromagnetic/TestEm18/src/PhysListEmPenelope.cc index dc852d2c8f..00b42ae236 100644 --- a/examples/extended/electromagnetic/TestEm18/src/PhysListEmPenelope.cc +++ b/examples/extended/electromagnetic/TestEm18/src/PhysListEmPenelope.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm18/src/PhysListEmStandard.cc index 5d333d6b38..26412342e5 100644 --- a/examples/extended/electromagnetic/TestEm18/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm18/src/PhysListEmStandard.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmStandard.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm18/src/PhysicsList.cc index f673f47a79..7ab25331a2 100644 --- a/examples/extended/electromagnetic/TestEm18/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm18/src/PhysicsList.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysicsList.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.cc,v 1.2 2007/11/20 14:15:18 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -178,11 +178,27 @@ void PhysicsList::ConstructProcess() emPhysicsList->ConstructProcess(); AddStepMax(); + // Em options + // G4EmProcessOptions emOptions; + + //physics tables + // + emOptions.SetMinEnergy(100*eV); + emOptions.SetMaxEnergy(100*TeV); + emOptions.SetDEDXBinning(1200); + emOptions.SetLambdaBinning(1200); + + //energy loss + // + emOptions.SetStepFunction(0.2, 10*um); + emOptions.SetLinearLossLimit(1.e-6); + + //build CSDA range + // emOptions.SetBuildCSDARange(true); emOptions.SetMaxEnergyForCSDARange(100*TeV); - emOptions.SetDEDXBinningForCSDARange(480); - emOptions.SetDEDXBinning(480); + emOptions.SetDEDXBinningForCSDARange(1200); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm18/src/PhysicsListMessenger.cc index e95d60debb..002f719c91 100644 --- a/examples/extended/electromagnetic/TestEm18/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm18/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm18/src/PrimaryGeneratorAction.cc index b50c60474f..82576cb722 100644 --- a/examples/extended/electromagnetic/TestEm18/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm18/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/RunAction.cc b/examples/extended/electromagnetic/TestEm18/src/RunAction.cc index 3eae4e389d..82b75cbcde 100644 --- a/examples/extended/electromagnetic/TestEm18/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm18/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.2 2007/02/16 11:59:47 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/StackingAction.cc b/examples/extended/electromagnetic/TestEm18/src/StackingAction.cc index 6000510fbe..8ad0f183b0 100644 --- a/examples/extended/electromagnetic/TestEm18/src/StackingAction.cc +++ b/examples/extended/electromagnetic/TestEm18/src/StackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingAction.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/StepMax.cc b/examples/extended/electromagnetic/TestEm18/src/StepMax.cc index a90ac7fb5e..2c8df7f919 100644 --- a/examples/extended/electromagnetic/TestEm18/src/StepMax.cc +++ b/examples/extended/electromagnetic/TestEm18/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/StepMaxMessenger.cc b/examples/extended/electromagnetic/TestEm18/src/StepMaxMessenger.cc index cc2f87668e..6a60bcbcaa 100644 --- a/examples/extended/electromagnetic/TestEm18/src/StepMaxMessenger.cc +++ b/examples/extended/electromagnetic/TestEm18/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm18/src/SteppingAction.cc index 5051917d4f..9e2ad1906b 100644 --- a/examples/extended/electromagnetic/TestEm18/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm18/src/SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm18/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm18/src/SteppingVerbose.cc index 77ca76f845..7743f1d6bd 100644 --- a/examples/extended/electromagnetic/TestEm18/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm18/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.1 2007/02/13 17:57:20 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/History b/examples/extended/electromagnetic/TestEm2/History index 69571c8d66..42ed91e5d6 100644 --- a/examples/extended/electromagnetic/TestEm2/History +++ b/examples/extended/electromagnetic/TestEm2/History @@ -1,4 +1,4 @@ -$Id: History,v 1.68 2007/06/12 15:29:38 vnivanch Exp $ +$Id: History,v 1.72 2007/07/02 14:26:38 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,17 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +02-07-07 V.Ivant (testem2-V09-00-00) +12-06-07 V.Ivant (testem2-V08-03-03) +- PhysicsLists - add options from physics_lists library +- TestEm2.in update to provide the same reference output as before + +21-06-07 mma (testem2-V08-03-02) +- cosmetic in TestEm2.cc + +21-06-07 mma (testem2-V08-03-01) +- PhysListEmStandard options completed + 12-06-07 V.Ivant (testem2-V08-03-00) - Update main macro file; use visialisation only for interactive session diff --git a/examples/extended/electromagnetic/TestEm2/TestEm2.cc b/examples/extended/electromagnetic/TestEm2/TestEm2.cc index fa168d8ac3..57d129d44e 100644 --- a/examples/extended/electromagnetic/TestEm2/TestEm2.cc +++ b/examples/extended/electromagnetic/TestEm2/TestEm2.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: TestEm2.cc,v 1.12 2007/06/12 15:29:38 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: TestEm2.cc,v 1.14 2007/06/21 17:47:08 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -70,11 +70,6 @@ int main(int argc,char** argv) { PrimaryGeneratorAction* primary = new PrimaryGeneratorAction(detector); runManager->SetUserAction(primary); -#ifdef G4VIS_USE - // visualization manager - G4VisManager* visManager = 0; -#endif - // set user action classes RunAction* RunAct = new RunAction(detector,primary); runManager->SetUserAction(RunAct); @@ -85,30 +80,37 @@ int main(int argc,char** argv) { // get the pointer to the User Interface manager G4UImanager* UI = G4UImanager::GetUIpointer(); - if (argc==1) // Define UI terminal for interactive mode. + if (argc!=1) // batch mode { - visManager = new G4VisExecutive; - visManager->Initialize(); + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + else // define visualization and UI terminal for interactive mode + { +#ifdef G4VIS_USE + G4VisManager* visManager = new G4VisExecutive; + visManager->Initialize(); +#endif + G4UIsession * session = 0; #ifdef G4UI_USE_TCSH session = new G4UIterminal(new G4UItcsh); #else session = new G4UIterminal(); -#endif +#endif + session->SessionStart(); delete session; - } - else // Batch mode - { - G4String command = "/control/execute "; - G4String fileName = argv[1]; - UI->ApplyCommand(command+fileName); + +#ifdef G4VIS_USE + delete visManager; +#endif } // job termination -#ifdef G4VIS_USE - delete visManager; -#endif + // delete runManager; return 0; diff --git a/examples/extended/electromagnetic/TestEm2/TestEm2.in b/examples/extended/electromagnetic/TestEm2/TestEm2.in index 05337455e4..1a463a7706 100644 --- a/examples/extended/electromagnetic/TestEm2/TestEm2.in +++ b/examples/extended/electromagnetic/TestEm2/TestEm2.in @@ -1,4 +1,4 @@ -# $Id: TestEm2.in,v 1.23 2007/06/12 15:29:38 vnivanch Exp $ +# $Id: TestEm2.in,v 1.24 2007/06/22 16:35:07 vnivanch Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -15,11 +15,12 @@ # Acceptance printout is activated /testem/run/acceptance 0.949 0.0082 3.0 # -/testem/phys/addPhysics standard +/testem/phys/addPhysics emstandard # /testem/phys/setCuts 1.0 mm # /run/initialize +/process/eLoss/verbose 1 # /gun/particle e- /gun/energy 5 GeV diff --git a/examples/extended/electromagnetic/TestEm2/TestEm2.out b/examples/extended/electromagnetic/TestEm2/TestEm2.out index 552da7a9b2..7a625e2109 100644 --- a/examples/extended/electromagnetic/TestEm2/TestEm2.out +++ b/examples/extended/electromagnetic/TestEm2/TestEm2.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,38 +9,38 @@ ***** Table : Nb of materials = 10 ***** - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm + Material: Water density: 1.000 g/cm3 RadL: 36.092 cm Imean: 75.000 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm + Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Imean: 187.200 eV ---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm + Material: Aluminium density: 2.700 g/cm3 RadL: 8.893 cm Imean: 166.400 eV ---> Element: Aluminium ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm + Material: Iron density: 7.870 g/cm3 RadL: 1.759 cm Imean: 286.000 eV ---> Element: Iron ( ) Z = 26.0 N = 55.9 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Copper density: 8.960 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.436 cm + Material: Copper density: 8.960 g/cm3 RadL: 1.436 cm Imean: 321.900 eV ---> Element: Copper ( ) Z = 29.0 N = 63.5 A = 63.55 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm + Material: Lead density: 11.350 g/cm3 RadL: 5.612 mm Imean: 820.000 eV ---> Element: Lead ( ) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Uranium density: 18.950 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.166 mm + Material: Uranium density: 18.950 g/cm3 RadL: 3.166 mm Imean: 892.400 eV ---> Element: Uranium ( ) Z = 92.0 N = 238.0 A = 238.03 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: BGO density: 7.100 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.123 cm + Material: BGO density: 7.100 g/cm3 RadL: 1.123 cm Imean: 469.142 eV ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 15.41 % ElmAbundance 63.16 % ---> Element: Germanium (Ge) Z = 32.0 N = 72.6 A = 72.59 g/mole ElmMassFraction: 17.48 % ElmAbundance 15.79 % ---> Element: Bismuth (Bi) Z = 83.0 N = 209.0 A = 208.98 g/mole ElmMassFraction: 67.10 % ElmAbundance 21.05 % - Material: PbWO4 density: 8.280 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.924 mm + Material: PbWO4 density: 8.280 g/cm3 RadL: 8.924 mm Imean: 541.543 eV ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 14.07 % ElmAbundance 66.67 % ---> Element: Lead (Pb) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 45.53 % ElmAbundance 16.67 % ---> Element: Tungsten (W) Z = 74.0 N = 183.8 A = 183.84 g/mole ElmMassFraction: 40.40 % ElmAbundance 16.67 % @@ -50,17 +50,18 @@ /testem/det/setMat PbWO4 /testem/det/setLbin 40 0.5 /testem/det/setRbin 50 0.1 -/testem/run/acceptance 0.949 0.0082 3.0 -/testem/phys/addPhysics standard -PhysicsList::AddPhysicsList: +/testem/run/acceptance 0.949 0.0082 3.0 +/testem/phys/addPhysics emstandard +PhysicsList::AddPhysicsList: /testem/phys/setCuts 1.0 mm /run/initialize Absorber is 17.848 cm of PbWO4 - Material: PbWO4 density: 8.280 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.924 mm + Material: PbWO4 density: 8.280 g/cm3 RadL: 8.924 mm Imean: 541.543 eV ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 14.07 % ElmAbundance 66.67 % ---> Element: Lead (Pb) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 45.53 % ElmAbundance 16.67 % ---> Element: Tungsten (W) Z = 74.0 N = 183.8 A = 183.84 g/mole ElmMassFraction: 40.40 % ElmAbundance 16.67 % PhysicsList::SetCuts:CutLength : 1 mm +/process/eLoss/verbose 1 /gun/particle e- /gun/energy 5 GeV /testem/event/printModulo 20 @@ -89,7 +90,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -102,7 +103,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -117,7 +118,7 @@ annihil: Sampling according eplus2gg model msc: Model variant of multiple scattering for proton Lambda tables from 100 eV to 100 TeV in 120 bins. LateralDisplacementFlag= 1 Skin= 0 - Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 1 + Boundary/stepping algorithm is active with RangeFactor= 0.2 Step limit type 0 hIoni: tables are built for proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -125,7 +126,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for GenericIon LateralDisplacementFlag= 0 Skin= 0 @@ -139,7 +140,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -147,19 +148,19 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. LateralDisplacementFlag= 1 Skin= 0 - Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 1 + Boundary/stepping algorithm is active with RangeFactor= 0.2 Step limit type 0 muIoni: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -176,7 +177,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -194,12 +195,12 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. LateralDisplacementFlag= 1 Skin= 0 - Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 1 + Boundary/stepping algorithm is active with RangeFactor= 0.2 Step limit type 0 hIoni: tables are built for pi- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -207,7 +208,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -240,24 +241,24 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=230.57s Real=232.74s Sys=0.1s + User=250.48s Real=251.75s Sys=0.15s SUMMARY - energy deposit : 94.09 % E0 +- 3.39 % E0 - charged traklen: 480.77 radl +- 17.09 radl - neutral traklen: 4415.63 radl +- 238.27 radl + energy deposit : 94.71 % E0 +- 1.17 % E0 + charged traklen: 478.55 radl +- 6.12 radl + neutral traklen: 4421.30 radl +- 146.80 radl - 90.00 % confinement: radius = 3.23 radl (2.88 cm ) + 90.00 % confinement: radius = 3.04 radl (2.71 cm ) --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 945930242, 400601456 + Current couple of seeds = 1908754286, 838266047 ---------------------------------------- <<<>>> 100 events for Total Energy in Absorber -Edep: 0.94094309 delEdep= -0.0080569076 nrms= -9.8254971 -Erms: 0.033906596 delErms= 0.025706596 nrms= 31.349508 -<<<>>> IS NOT ACCEPTED +Edep: 0.94709332 delEdep= -0.0019066805 nrms= -2.3252201 +Erms: 0.01166298 delErms= 0.0034629801 nrms= 4.2231465 +<<<>>> IS ACCEPTED G4 kernel has come to Quit state. diff --git a/examples/extended/electromagnetic/TestEm2/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm2/include/DetectorConstruction.hh index b05eb01567..125b9177a1 100644 --- a/examples/extended/electromagnetic/TestEm2/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.9 2006/06/29 16:49:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm2/include/DetectorMessenger.hh index 99cf2844d6..1657105c79 100644 --- a/examples/extended/electromagnetic/TestEm2/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm2/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.6 2006/06/29 16:49:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/EmAcceptance.hh b/examples/extended/electromagnetic/TestEm2/include/EmAcceptance.hh index 7240b0a2b0..db23220167 100644 --- a/examples/extended/electromagnetic/TestEm2/include/EmAcceptance.hh +++ b/examples/extended/electromagnetic/TestEm2/include/EmAcceptance.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EmAcceptance.hh,v 1.3 2006/06/29 16:49:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/EventAction.hh b/examples/extended/electromagnetic/TestEm2/include/EventAction.hh index e23b69baa6..881807a0fa 100644 --- a/examples/extended/electromagnetic/TestEm2/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.3 2006/06/29 16:49:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm2/include/EventActionMessenger.hh index c459a12d57..91cc24ce1a 100644 --- a/examples/extended/electromagnetic/TestEm2/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm2/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.3 2006/06/29 16:49:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/PhysListEmLivermore.hh b/examples/extended/electromagnetic/TestEm2/include/PhysListEmLivermore.hh index c379c20909..eadf50bee8 100644 --- a/examples/extended/electromagnetic/TestEm2/include/PhysListEmLivermore.hh +++ b/examples/extended/electromagnetic/TestEm2/include/PhysListEmLivermore.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.hh,v 1.2 2006/06/29 16:49:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/PhysListEmPenelope.hh b/examples/extended/electromagnetic/TestEm2/include/PhysListEmPenelope.hh index 4b56f8210e..6d83018fd5 100644 --- a/examples/extended/electromagnetic/TestEm2/include/PhysListEmPenelope.hh +++ b/examples/extended/electromagnetic/TestEm2/include/PhysListEmPenelope.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.hh,v 1.2 2006/06/29 16:49:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm2/include/PhysListEmStandard.hh index 1218568171..c06b485a8d 100644 --- a/examples/extended/electromagnetic/TestEm2/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm2/include/PhysListEmStandard.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.hh,v 1.4 2006/06/29 16:49:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm2/include/PhysicsList.hh index 7db34d199d..971583472b 100644 --- a/examples/extended/electromagnetic/TestEm2/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm2/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.8 2006/06/29 16:49:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/examples/extended/electromagnetic/TestEm2/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm2/include/PhysicsListMessenger.hh index 02f39d6d5e..ce1171361d 100644 --- a/examples/extended/electromagnetic/TestEm2/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm2/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.5 2006/06/29 16:49:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm2/include/PrimaryGeneratorAction.hh index c8dc73220f..4e663b8a94 100644 --- a/examples/extended/electromagnetic/TestEm2/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.5 2006/06/29 16:49:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/RunAction.hh b/examples/extended/electromagnetic/TestEm2/include/RunAction.hh index 5dc3d072e4..81078ee7a4 100644 --- a/examples/extended/electromagnetic/TestEm2/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.9 2006/06/29 16:49:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/RunActionMessenger.hh b/examples/extended/electromagnetic/TestEm2/include/RunActionMessenger.hh index 65e9640c4b..6a6c6c01c2 100644 --- a/examples/extended/electromagnetic/TestEm2/include/RunActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm2/include/RunActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunActionMessenger.hh,v 1.4 2006/06/29 16:50:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/StepMax.hh b/examples/extended/electromagnetic/TestEm2/include/StepMax.hh index d48f83b4a7..d13d2917d6 100644 --- a/examples/extended/electromagnetic/TestEm2/include/StepMax.hh +++ b/examples/extended/electromagnetic/TestEm2/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.2 2006/06/29 16:50:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/StepMaxMessenger.hh b/examples/extended/electromagnetic/TestEm2/include/StepMaxMessenger.hh index fdec5f9460..e7178efa71 100644 --- a/examples/extended/electromagnetic/TestEm2/include/StepMaxMessenger.hh +++ b/examples/extended/electromagnetic/TestEm2/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.2 2006/06/29 16:50:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm2/include/SteppingAction.hh index 6bf128f365..96e3506195 100644 --- a/examples/extended/electromagnetic/TestEm2/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.4 2006/06/29 16:50:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm2/include/SteppingVerbose.hh index 807d0d4a09..dfc13ee4b6 100644 --- a/examples/extended/electromagnetic/TestEm2/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm2/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.3 2006/06/29 16:50:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/electromagnetic/TestEm2/include/TrackingAction.hh b/examples/extended/electromagnetic/TestEm2/include/TrackingAction.hh index f954311d83..724d8b8683 100644 --- a/examples/extended/electromagnetic/TestEm2/include/TrackingAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/TrackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TrackingAction.hh,v 1.4 2006/06/29 16:50:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/run01.mac b/examples/extended/electromagnetic/TestEm2/run01.mac index a2d9227163..fc779edf8e 100644 --- a/examples/extended/electromagnetic/TestEm2/run01.mac +++ b/examples/extended/electromagnetic/TestEm2/run01.mac @@ -1,4 +1,4 @@ -# $Id: run01.mac,v 1.24 2006/10/20 16:03:39 maire Exp $ +# $Id: run01.mac,v 1.25 2007/06/21 14:21:46 maire Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -17,7 +17,7 @@ /testem/phys/setCuts 1 mm # # histogram file -/testem/histo/setFileName run01 +/testem/histo/setFileName stand /testem/histo/setFileType hbook # /run/initialize diff --git a/examples/extended/electromagnetic/TestEm2/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm2/src/DetectorConstruction.cc index f64f9c39a1..1471888614 100644 --- a/examples/extended/electromagnetic/TestEm2/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: DetectorConstruction.cc,v 1.12 2006/10/20 16:03:40 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm2/src/DetectorMessenger.cc index 145288f9c2..73cbe69565 100644 --- a/examples/extended/electromagnetic/TestEm2/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm2/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.8 2006/06/29 16:50:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/EmAcceptance.cc b/examples/extended/electromagnetic/TestEm2/src/EmAcceptance.cc index 0763d427db..f313b804e3 100644 --- a/examples/extended/electromagnetic/TestEm2/src/EmAcceptance.cc +++ b/examples/extended/electromagnetic/TestEm2/src/EmAcceptance.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EmAcceptance.cc,v 1.5 2006/06/29 16:50:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/EventAction.cc b/examples/extended/electromagnetic/TestEm2/src/EventAction.cc index 3db12c6b86..93edd1cd0d 100644 --- a/examples/extended/electromagnetic/TestEm2/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.3 2006/06/29 16:50:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm2/src/EventActionMessenger.cc index 8f23716301..cb93092d25 100644 --- a/examples/extended/electromagnetic/TestEm2/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm2/src/EventActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: EventActionMessenger.cc,v 1.3 2006/06/29 16:50:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm2/src/PhysListEmLivermore.cc b/examples/extended/electromagnetic/TestEm2/src/PhysListEmLivermore.cc index 75679ec85e..ef7a6e74b1 100644 --- a/examples/extended/electromagnetic/TestEm2/src/PhysListEmLivermore.cc +++ b/examples/extended/electromagnetic/TestEm2/src/PhysListEmLivermore.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.cc,v 1.3 2007/01/08 16:32:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/PhysListEmPenelope.cc b/examples/extended/electromagnetic/TestEm2/src/PhysListEmPenelope.cc index bee1fee7f3..5b4f407135 100644 --- a/examples/extended/electromagnetic/TestEm2/src/PhysListEmPenelope.cc +++ b/examples/extended/electromagnetic/TestEm2/src/PhysListEmPenelope.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.cc,v 1.2 2006/06/29 16:50:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm2/src/PhysListEmStandard.cc index 778da13d31..c65e4e606a 100644 --- a/examples/extended/electromagnetic/TestEm2/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm2/src/PhysListEmStandard.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: PhysListEmStandard.cc,v 1.5 2006/06/29 16:50:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysListEmStandard.cc,v 1.6 2007/06/21 14:21:46 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -51,6 +51,10 @@ #include "G4hIonisation.hh" #include "G4ionIonisation.hh" +#include "G4EmProcessOptions.hh" +#include "G4MscStepLimitType.hh" + + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... PhysListEmStandard::PhysListEmStandard(const G4String& name) @@ -113,6 +117,28 @@ void PhysListEmStandard::ConstructProcess() pmanager->AddProcess(new G4hIonisation, -1,2,2); } } + + // Em options + // + G4EmProcessOptions emOptions; + + //coulomb scattering + // + emOptions.SetMscStepLimitation(fUseDistanceToBoundary); + emOptions.SetSkin(2.); + + //energy loss + // + emOptions.SetLinearLossLimit(1.e-6); + emOptions.SetStepFunction(0.2, 100*um); + + //ionization + // + emOptions.SetSubCutoff(true); + + // define high energy threshold for bremstrahlung + // + emOptions.SetBremsstrahlungTh(10.*GeV); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm2/src/PhysicsList.cc index 64b7d6e697..e30145a2b9 100644 --- a/examples/extended/electromagnetic/TestEm2/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm2/src/PhysicsList.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysicsList.cc,v 1.12 2006/10/20 16:03:41 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.cc,v 1.13 2007/06/22 16:35:07 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -36,6 +36,10 @@ #include "PhysListEmLivermore.hh" #include "PhysListEmPenelope.hh" +#include "G4EmStandardPhysics.hh" +#include "G4EmStandardPhysics_option1.hh" +#include "G4EmStandardPhysics_option2.hh" + #include "G4LossTableManager.hh" #include "G4UnitsTable.hh" @@ -203,6 +207,24 @@ void PhysicsList::AddPhysicsList(const G4String& name) delete emPhysicsList; emPhysicsList = new PhysListEmStandard(name); + } else if (name == "emstandard") { + + emName = name; + delete emPhysicsList; + emPhysicsList = new G4EmStandardPhysics(); + + } else if (name == "emstandard_opt1") { + + emName = name; + delete emPhysicsList; + emPhysicsList = new G4EmStandardPhysics_option1(); + + } else if (name == "emstandard_opt2") { + + emName = name; + delete emPhysicsList; + emPhysicsList = new G4EmStandardPhysics_option2(); + } else if (name == "livermore") { emName = name; diff --git a/examples/extended/electromagnetic/TestEm2/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm2/src/PhysicsListMessenger.cc index 2483d85362..afb26db920 100644 --- a/examples/extended/electromagnetic/TestEm2/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm2/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.5 2006/06/29 16:50:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm2/src/PrimaryGeneratorAction.cc index a05785cf9e..03c639b6dd 100644 --- a/examples/extended/electromagnetic/TestEm2/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.6 2006/06/29 16:50:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/RunAction.cc b/examples/extended/electromagnetic/TestEm2/src/RunAction.cc index 21eaf8fb0e..ef40a67631 100644 --- a/examples/extended/electromagnetic/TestEm2/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.21 2006/06/29 16:50:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/RunActionMessenger.cc b/examples/extended/electromagnetic/TestEm2/src/RunActionMessenger.cc index e3c21bf7d6..290816c867 100644 --- a/examples/extended/electromagnetic/TestEm2/src/RunActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm2/src/RunActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunActionMessenger.cc,v 1.4 2006/06/29 16:50:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/StepMax.cc b/examples/extended/electromagnetic/TestEm2/src/StepMax.cc index c951db5134..d21c5b74d2 100644 --- a/examples/extended/electromagnetic/TestEm2/src/StepMax.cc +++ b/examples/extended/electromagnetic/TestEm2/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.2 2006/06/29 16:50:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/StepMaxMessenger.cc b/examples/extended/electromagnetic/TestEm2/src/StepMaxMessenger.cc index a22168c38d..55610801ae 100644 --- a/examples/extended/electromagnetic/TestEm2/src/StepMaxMessenger.cc +++ b/examples/extended/electromagnetic/TestEm2/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.2 2006/06/29 16:50:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm2/src/SteppingAction.cc index c1c20df2f0..5e9f07513e 100644 --- a/examples/extended/electromagnetic/TestEm2/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.cc,v 1.6 2006/06/29 16:50:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm2/src/SteppingVerbose.cc index 768e54d68a..4de1361873 100644 --- a/examples/extended/electromagnetic/TestEm2/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm2/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.3 2006/06/29 16:50:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/TrackingAction.cc b/examples/extended/electromagnetic/TestEm2/src/TrackingAction.cc index 7e49d5446f..d6132c3b69 100644 --- a/examples/extended/electromagnetic/TestEm2/src/TrackingAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/TrackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TrackingAction.cc,v 1.3 2006/06/29 16:51:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/History b/examples/extended/electromagnetic/TestEm3/History index a2dfacc6a2..748aea5853 100644 --- a/examples/extended/electromagnetic/TestEm3/History +++ b/examples/extended/electromagnetic/TestEm3/History @@ -1,4 +1,4 @@ -$Id: History,v 1.104 2007/05/18 19:00:43 vnivanch Exp $ +$Id: History,v 1.109 2007/11/13 14:37:04 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,19 @@ track of all tags. * Reverse chronological order (last date on top), please * --------------------------------------------------------- +13-11-07 V.Ivant (testem3-V09-00-02) +- added PhysListEmStandardIG experimental PhysList + +12-11-07 mma (testem3-V09-00-01) +- HistoManager/HistoMessenger : print selected histos on ascii file + +02-07-07 V.Ivant (testem3-V09-00-00) +- update TestEm3.in in order to have the same options as before + +22-06-07 mma (testem3-V08-03-02) +- more options in PhysListEmStandard +- cosmetic in TestEm3.cc + 18-05-07 V.Ivant (testem3-V08-03-01) - update macro files diff --git a/examples/extended/electromagnetic/TestEm3/README b/examples/extended/electromagnetic/TestEm3/README index 7267745c1c..40a3914844 100644 --- a/examples/extended/electromagnetic/TestEm3/README +++ b/examples/extended/electromagnetic/TestEm3/README @@ -1,4 +1,4 @@ -$Id: README,v 1.28 2006/11/22 19:16:09 vnivanch Exp $ +$Id: README,v 1.29 2007/11/12 17:04:55 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -155,7 +155,10 @@ $Id: README,v 1.28 2006/11/22 19:16:09 vnivanch Exp $ absorbers : from 1 to NbOfAbsor (inclued) planes : from 1 to NbOfLayers*NbOfAbsor + 1 (inclued) - + It is also possible to print selected histograms on an ascii file: + /testem/histo/printHisto id + All selected histos will be written on a file name.ascii (default testem3) + Note that, by default, histograms are disabled. To activate them, uncomment the flag G4ANALYSIS_USE in GNUmakefile. diff --git a/examples/extended/electromagnetic/TestEm3/TestEm3.cc b/examples/extended/electromagnetic/TestEm3/TestEm3.cc index a6bdbdccf0..b10f614859 100644 --- a/examples/extended/electromagnetic/TestEm3/TestEm3.cc +++ b/examples/extended/electromagnetic/TestEm3/TestEm3.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: TestEm3.cc,v 1.22 2007/04/06 17:41:54 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: TestEm3.cc,v 1.23 2007/06/22 09:22:05 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -73,10 +73,6 @@ int main(int argc,char** argv) { // primary generator PrimaryGeneratorAction* primary = new PrimaryGeneratorAction(detector,histo); runManager->SetUserAction(primary); - -#ifdef G4VIS_USE - G4VisManager* visManager = 0; -#endif // set user action classes RunAction* runAct = new RunAction(detector,primary,histo); @@ -92,36 +88,36 @@ int main(int argc,char** argv) { // get the pointer to the User Interface manager G4UImanager* UI = G4UImanager::GetUIpointer(); - if (argc==1) // Define UI session for interactive mode. + if (argc!=1) // batch mode { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + else //define visualization and UI terminal for interactive mode + { #ifdef G4VIS_USE - // visualization manager - visManager = new G4VisExecutive; - visManager->Initialize(); -#endif - // G4UIterminal is a (dumb) terminal. - G4UIsession * session = 0; + G4VisManager* visManager = new G4VisExecutive; + visManager->Initialize(); +#endif + + G4UIsession * session = 0; #ifdef G4UI_USE_TCSH session = new G4UIterminal(new G4UItcsh); #else session = new G4UIterminal(); -#endif - session->SessionStart(); - delete session; - } - else // Batch mode - { - G4String command = "/control/execute "; - G4String fileName = argv[1]; - UI->ApplyCommand(command+fileName); +#endif + session->SessionStart(); + delete session; + +#ifdef G4VIS_USE + delete visManager; +#endif } // job termination - -#ifdef G4VIS_USE - if(visManager) delete visManager; -#endif - + // delete histo; delete runManager; diff --git a/examples/extended/electromagnetic/TestEm3/TestEm3.in b/examples/extended/electromagnetic/TestEm3/TestEm3.in index 2ffae7f201..8dacfd4221 100644 --- a/examples/extended/electromagnetic/TestEm3/TestEm3.in +++ b/examples/extended/electromagnetic/TestEm3/TestEm3.in @@ -1,4 +1,4 @@ -# $Id: TestEm3.in,v 1.24 2006/10/31 12:53:48 maire Exp $ +# $Id: TestEm3.in,v 1.25 2007/06/22 16:20:14 vnivanch Exp $ # # Macro file for "exampleN03.cc" # (can be run in batch, without graphic) @@ -8,9 +8,11 @@ /control/verbose 2 /run/verbose 2 # -/testem/phys/addPhysics standard +/testem/phys/addPhysics emstandard # /run/initialize +/process/eLoss/verbose 1 +/process/msc/Skin 1 # /gun/particle e- /gun/energy 1 GeV diff --git a/examples/extended/electromagnetic/TestEm3/TestEm3.out b/examples/extended/electromagnetic/TestEm3/TestEm3.out index 3f97c34f23..5c28ff5b27 100644 --- a/examples/extended/electromagnetic/TestEm3/TestEm3.out +++ b/examples/extended/electromagnetic/TestEm3/TestEm3.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -8,7 +8,7 @@ /run/verbose 2 # -/testem/phys/addPhysics standard +/testem/phys/addPhysics emstandard # /run/initialize userDetector->Construct() start. @@ -19,17 +19,17 @@ userDetector->Construct() start. liquidArgon: 5.7 mm ------------------------------------------------------------- - Material: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 204322175.595 pc + Material: Galactic density: 0.000 mg/cm3 RadL: 204322175.595 pc Imean: 21.800 eV temperature: 2.73 K pressure: 0.00 atm ---> Element: Galactic ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.613 mm + Material: Lead density: 11.350 g/cm3 RadL: 5.613 mm Imean: 820.000 eV ---> Element: Pb (Pb) Z = 82.0 N = 207.2 A = 207.22 g/mole ---> Isotope: Pb Z = 82 N = 204 A = 203.97 g/mole abundance: 1.40 % ---> Isotope: Pb Z = 82 N = 206 A = 205.97 g/mole abundance: 24.10 % ---> Isotope: Pb Z = 82 N = 207 A = 206.98 g/mole abundance: 22.10 % ---> Isotope: Pb Z = 82 N = 208 A = 207.98 g/mole abundance: 52.40 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.064 cm + Material: liquidArgon density: 1.390 g/cm3 RadL: 14.064 cm Imean: 187.200 eV ---> Element: Ar (Ar) Z = 18.0 N = 40.0 A = 39.95 g/mole ---> Isotope: Ar Z = 18 N = 36 A = 35.97 g/mole abundance: 0.34 % ---> Isotope: Ar Z = 18 N = 38 A = 37.96 g/mole abundance: 0.06 % @@ -41,23 +41,26 @@ physicsList->Construct() start. physicsList->Construct() start. physicsList->setCut() start. PhysicsList::SetCuts:CutLength : 1 mm +/process/eLoss/verbose 1 +/process/msc/Skin 1 +/run/physicsModified # /gun/particle e- /gun/energy 1 GeV # /testem/histo/setFileName testem3 /testem/histo/setFileType hbook -/testem/histo/setHisto 1 100 700. 1000. MeV #edep in absor1 +/testem/histo/setHisto 1 100 700. 1000. MeV ----> SetHisto 1: Edep in absorber 1 (MeV); 100 bins from 700 MeV to 1000 MeV -/testem/histo/setHisto 2 100 0. 300. MeV #edep in absor2 +/testem/histo/setHisto 2 100 0. 300. MeV ----> SetHisto 2: Edep in absorber 2 (MeV); 100 bins from 0 MeV to 300 MeV -/testem/histo/setHisto 11 52 0. 52. none #long. profile in absor1 +/testem/histo/setHisto 11 52 0. 52. none ----> SetHisto 11: longit. profile of Edep (MeV/event) in absorber 1; 52 bins from 0 none to 52 none -/testem/histo/setHisto 12 52 0. 52. none #long. profile in absor2 +/testem/histo/setHisto 12 52 0. 52. none ----> SetHisto 12: longit. profile of Edep (MeV/event) in absorber 2; 52 bins from 0 none to 52 none -/testem/histo/setHisto 21 102 0. 102. none #energy flow +/testem/histo/setHisto 21 102 0. 102. none ----> SetHisto 21: energy flow (MeV/event); 102 bins from 0 none to 102 none -/testem/histo/setHisto 22 102 0. 102. none #lateral energy leakage +/testem/histo/setHisto 22 102 0. 102. none ----> SetHisto 22: lateral energy leak (MeV/event); 102 bins from 0 none to 102 none # /testem/event/printModulo 50 @@ -87,7 +90,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -100,7 +103,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -115,7 +118,7 @@ annihil: Sampling according eplus2gg model msc: Model variant of multiple scattering for proton Lambda tables from 100 eV to 100 TeV in 120 bins. LateralDisplacementFlag= 1 Skin= 1 - Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 2 + Boundary/stepping algorithm is active with RangeFactor= 0.2 Step limit type 2 hIoni: tables are built for proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -123,7 +126,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for GenericIon LateralDisplacementFlag= 0 Skin= 0 @@ -137,7 +140,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -145,19 +148,19 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. LateralDisplacementFlag= 1 Skin= 1 - Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 2 + Boundary/stepping algorithm is active with RangeFactor= 0.2 Step limit type 2 muIoni: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -174,7 +177,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -192,12 +195,12 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. LateralDisplacementFlag= 1 Skin= 1 - Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 2 + Boundary/stepping algorithm is active with RangeFactor= 0.2 Step limit type 2 hIoni: tables are built for pi- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -205,7 +208,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 Region -- appears in world volume Root logical volume(s) : World @@ -242,19 +245,19 @@ Start closing geometry. G4GeometryManager::ReportVoxelStats -- Voxel Statistics Total memory consumed for geometry optimisation: 1 kByte - Total CPU time elapsed for geometry optimisation: 0 seconds + Total CPU time elapsed for geometry optimisation: 0.01 seconds Voxelisation: top CPU users: Percent Total CPU System CPU Memory Volume ------- ---------- ---------- -------- ---------- + 100.00 0.01 0.00 0k Layer 0.00 0.00 0.00 2k Calorimeter - 0.00 0.00 0.00 0k Layer Voxelisation: top memory users: Percent Memory Heads Nodes Pointers Total CPU Volume ------- -------- ------ ------ -------- ---------- ---------- 91.70 1k 1 50 50 0.00 Calorimeter - 8.30 0k 1 3 4 0.00 Layer + 8.30 0k 1 3 4 0.01 Layer ### Run 0 start. --------- Ranecu engine status --------- @@ -269,28 +272,28 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=185.5s Real=186.77s Sys=0.04s + User=182.99s Real=184.27s Sys=0.08s ------------------------------------------------------------ material Total Edep sqrt(E0(GeV))*rmsE/Emean total tracklen - Lead: 781.05 MeV +- 17.85 MeV 2.285 +- 0.2285 % 53.7 cm +- 1.33 cm - liquidArgon: 207.34 MeV +- 15.88 MeV 7.657 +- 0.7657 % 1.02 m +- 8.16 cm + Lead: 788.34 MeV +- 14.84 MeV 1.883 +- 0.1883 % 54.3 cm +- 1.1 cm + liquidArgon: 202.61 MeV +- 14.65 MeV 7.231 +- 0.7231 % 99.6 cm +- 7.58 cm ------------------------------------------------------------ Energy deposition from Energy flow balance : material Total Edep - Lead: 781.048 MeV -liquidArgon: 207.339 MeV + Lead: 788.341 MeV +liquidArgon: 202.608 MeV ------------------------------------------------------------ --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 596130632, 1069559193 + Current couple of seeds = 1237127441, 1064633457 ---------------------------------------- UserDetectorConstruction deleted. UserPhysicsList deleted. diff --git a/examples/extended/electromagnetic/TestEm3/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm3/include/DetectorConstruction.hh index 9a918b6357..920c0c64c3 100644 --- a/examples/extended/electromagnetic/TestEm3/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.13 2006/06/29 16:51:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/DetectorMessenger.hh index f53546f40f..c7e9d15039 100644 --- a/examples/extended/electromagnetic/TestEm3/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.8 2006/06/29 16:51:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/EmAcceptance.hh b/examples/extended/electromagnetic/TestEm3/include/EmAcceptance.hh index f87db3abfb..a0ab563841 100644 --- a/examples/extended/electromagnetic/TestEm3/include/EmAcceptance.hh +++ b/examples/extended/electromagnetic/TestEm3/include/EmAcceptance.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EmAcceptance.hh,v 1.4 2006/06/29 16:51:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/EventAction.hh b/examples/extended/electromagnetic/TestEm3/include/EventAction.hh index 7d77be5542..a0ba213d04 100644 --- a/examples/extended/electromagnetic/TestEm3/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.10 2006/06/29 16:51:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/EventActionMessenger.hh index 88959c3905..ed881c2fc8 100644 --- a/examples/extended/electromagnetic/TestEm3/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.3 2006/06/29 16:51:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/HistoManager.hh b/examples/extended/electromagnetic/TestEm3/include/HistoManager.hh index 78080fd432..5014aa5a9b 100644 --- a/examples/extended/electromagnetic/TestEm3/include/HistoManager.hh +++ b/examples/extended/electromagnetic/TestEm3/include/HistoManager.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.hh,v 1.7 2006/06/29 16:51:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.hh,v 1.8 2007/11/12 17:04:55 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -65,7 +65,8 @@ class HistoManager void FillHisto(G4int id, G4double bin, G4double weight = 1.0); void Normalize(G4int id, G4double fac); void RemoveHisto(G4int); - + void PrintHisto (G4int); + G4bool HistoExist (G4int id) {return exist[id];} G4double GetHistoUnit(G4int id) {return Unit[id];} G4double GetBinWidth (G4int id) {return Width[id];} @@ -86,8 +87,13 @@ class HistoManager G4double Vmax [MaxHisto]; G4double Unit [MaxHisto]; G4double Width[MaxHisto]; + G4bool ascii[MaxHisto]; + G4bool factoryOn; HistoMessenger* histoMessenger; + + private: + void saveAscii(); }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/HistoMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/HistoMessenger.hh index c91b2b9e08..b39704d3ac 100644 --- a/examples/extended/electromagnetic/TestEm3/include/HistoMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/HistoMessenger.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.hh,v 1.4 2006/06/29 16:51:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.hh,v 1.5 2007/11/12 17:04:55 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -63,6 +63,7 @@ class HistoMessenger: public G4UImessenger G4UIcmdWithAString* typeCmd; G4UIcmdWithAString* optionCmd; G4UIcommand* histoCmd; + G4UIcmdWithAnInteger* prhistoCmd; G4UIcmdWithAnInteger* rmhistoCmd; }; diff --git a/examples/extended/electromagnetic/TestEm3/include/PhysListEmLivermore.hh b/examples/extended/electromagnetic/TestEm3/include/PhysListEmLivermore.hh index 2e9b454616..006b40dd82 100644 --- a/examples/extended/electromagnetic/TestEm3/include/PhysListEmLivermore.hh +++ b/examples/extended/electromagnetic/TestEm3/include/PhysListEmLivermore.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.hh,v 1.2 2006/06/29 16:51:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/PhysListEmPenelope.hh b/examples/extended/electromagnetic/TestEm3/include/PhysListEmPenelope.hh index f3f970ee86..09cd27e06b 100644 --- a/examples/extended/electromagnetic/TestEm3/include/PhysListEmPenelope.hh +++ b/examples/extended/electromagnetic/TestEm3/include/PhysListEmPenelope.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.hh,v 1.2 2006/06/29 16:51:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm3/include/PhysListEmStandard.hh index cde4de660b..940954588c 100644 --- a/examples/extended/electromagnetic/TestEm3/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm3/include/PhysListEmStandard.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmStandard.hh,v 1.4 2006/06/29 16:51:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm8/include/PhysListGeneral.hh b/examples/extended/electromagnetic/TestEm3/include/PhysListEmStandardIG.hh similarity index 76% rename from examples/extended/electromagnetic/TestEm8/include/PhysListGeneral.hh rename to examples/extended/electromagnetic/TestEm3/include/PhysListEmStandardIG.hh index 929bfaa3be..64dc1ea6d6 100644 --- a/examples/extended/electromagnetic/TestEm8/include/PhysListGeneral.hh +++ b/examples/extended/electromagnetic/TestEm3/include/PhysListEmStandardIG.hh @@ -23,37 +23,34 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// $Id: PhysListGeneral.hh,v 1.2 2006/06/29 16:59:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysListEmStandardIG.hh,v 1.1 2007/11/13 14:37:05 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -#ifndef PhysListGeneral_h -#define PhysListGeneral_h 1 +#ifndef PhysListEmStandardIG_h +#define PhysListEmStandardIG_h 1 #include "G4VPhysicsConstructor.hh" -#include "G4Decay.hh" #include "globals.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -class PhysListGeneral : public G4VPhysicsConstructor +class PhysListEmStandardIG : public G4VPhysicsConstructor { - public: - PhysListGeneral(const G4String& name = "general"); - virtual ~PhysListGeneral(); +public: + PhysListEmStandardIG(const G4String& name = "standardIG"); + virtual ~PhysListEmStandardIG(); - public: - // This method is dummy for physics - virtual void ConstructParticle() {}; +public: + // 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(); - + // 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 + void ConstructProcess(); }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm3/include/PhysicsList.hh index 54a4c5a99f..777b434151 100644 --- a/examples/extended/electromagnetic/TestEm3/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm3/include/PhysicsList.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsList.hh,v 1.6 2006/06/29 16:51:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/PhysicsListMessenger.hh index 768379bd4d..13f08cb1f6 100644 --- a/examples/extended/electromagnetic/TestEm3/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.3 2006/06/29 16:52:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm3/include/PrimaryGeneratorAction.hh index 385074a662..3132efa402 100644 --- a/examples/extended/electromagnetic/TestEm3/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.4 2006/06/29 16:52:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/PrimaryGeneratorMessenger.hh index bf90e68497..255aadab7b 100644 --- a/examples/extended/electromagnetic/TestEm3/include/PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/PrimaryGeneratorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.hh,v 1.3 2006/06/29 16:52:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/RunAction.hh b/examples/extended/electromagnetic/TestEm3/include/RunAction.hh index 0accd506af..30d7ed384e 100644 --- a/examples/extended/electromagnetic/TestEm3/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.18 2007/04/22 16:25:21 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/RunActionMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/RunActionMessenger.hh index 6be8ec4358..9d527241e5 100644 --- a/examples/extended/electromagnetic/TestEm3/include/RunActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/RunActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunActionMessenger.hh,v 1.10 2007/04/22 16:25:21 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/StepMax.hh b/examples/extended/electromagnetic/TestEm3/include/StepMax.hh index 8d4a34d7ab..90cf63fb53 100644 --- a/examples/extended/electromagnetic/TestEm3/include/StepMax.hh +++ b/examples/extended/electromagnetic/TestEm3/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.7 2006/06/29 16:52:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/StepMaxMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/StepMaxMessenger.hh index 45bc86b7e4..fbae656402 100644 --- a/examples/extended/electromagnetic/TestEm3/include/StepMaxMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.2 2006/06/29 16:52:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm3/include/SteppingAction.hh index 6e520507f6..660a04859b 100644 --- a/examples/extended/electromagnetic/TestEm3/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.8 2006/06/29 16:52:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm3/include/SteppingVerbose.hh index b8e5eb4f40..2de8505981 100644 --- a/examples/extended/electromagnetic/TestEm3/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm3/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.5 2006/06/29 16:52:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/electromagnetic/TestEm3/include/TrackingAction.hh b/examples/extended/electromagnetic/TestEm3/include/TrackingAction.hh index 34c966786d..715ff676fe 100644 --- a/examples/extended/electromagnetic/TestEm3/include/TrackingAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/TrackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TrackingAction.hh,v 1.2 2006/06/29 16:52:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm3/src/DetectorConstruction.cc index f3aef1e752..5b89b26af4 100644 --- a/examples/extended/electromagnetic/TestEm3/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.cc,v 1.20 2007/03/19 20:10:38 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/DetectorMessenger.cc index 56a31366ef..e42f6d2abd 100644 --- a/examples/extended/electromagnetic/TestEm3/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.11 2006/06/29 16:52:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/EmAcceptance.cc b/examples/extended/electromagnetic/TestEm3/src/EmAcceptance.cc index 7f9ea95034..3e4ab00a30 100644 --- a/examples/extended/electromagnetic/TestEm3/src/EmAcceptance.cc +++ b/examples/extended/electromagnetic/TestEm3/src/EmAcceptance.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EmAcceptance.cc,v 1.6 2006/06/29 16:52:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/EventAction.cc b/examples/extended/electromagnetic/TestEm3/src/EventAction.cc index 021e5dffdd..9c621f4f52 100644 --- a/examples/extended/electromagnetic/TestEm3/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.15 2007/04/22 16:25:21 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/EventActionMessenger.cc index 01be9249ac..8702f49071 100644 --- a/examples/extended/electromagnetic/TestEm3/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.4 2006/06/29 16:52:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/HistoManager.cc b/examples/extended/electromagnetic/TestEm3/src/HistoManager.cc index 981d308365..837fa47b16 100644 --- a/examples/extended/electromagnetic/TestEm3/src/HistoManager.cc +++ b/examples/extended/electromagnetic/TestEm3/src/HistoManager.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.cc,v 1.13 2006/06/29 16:52:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.cc,v 1.14 2007/11/12 17:04:55 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -61,6 +61,7 @@ HistoManager::HistoManager() exist[k] = false; Unit[k] = 1.0; Width[k] = 1.0; + ascii[k] = false; } histoMessenger = new HistoMessenger(this); } @@ -125,6 +126,7 @@ void HistoManager::save() { #ifdef G4ANALYSIS_USE if (factoryOn) { + saveAscii(); // Write ascii file, if any tree->commit(); // Writing the histograms to the file tree->close(); // and closing the tree (and the file) G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl; @@ -236,4 +238,43 @@ void HistoManager::RemoveHisto(G4int ih) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void HistoManager::PrintHisto(G4int ih) +{ + if (ih < MaxHisto) ascii[ih] = true; + else + G4cout << "---> warning from HistoManager::PrintHisto() : histo " << ih + << "does not exist" << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include + +void HistoManager::saveAscii() +{ +#ifdef G4ANALYSIS_USE + + G4String name = fileName[0] + ".ascii"; + std::ofstream File(name, std::ios::out); + File.setf( std::ios::scientific, std::ios::floatfield ); + + //write selected histograms + for (G4int ih=0; ihbinMean(iBin) << "\t" + << histo[ih]->binHeight(iBin) + << G4endl; + } + } + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/electromagnetic/TestEm3/src/HistoMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/HistoMessenger.cc index 8a5d02a576..a5d8660f00 100644 --- a/examples/extended/electromagnetic/TestEm3/src/HistoMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/HistoMessenger.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.cc,v 1.8 2006/06/29 16:52:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.cc,v 1.9 2007/11/12 17:04:55 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -85,6 +85,11 @@ HistoMessenger::HistoMessenger(HistoManager* manager) unit->SetDefaultValue("none"); histoCmd->SetParameter(unit); + prhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/printHisto",this); + prhistoCmd->SetGuidance("print histo #id on ascii file"); + prhistoCmd->SetParameterName("id",false); + prhistoCmd->SetRange("id>0"); + rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this); rmhistoCmd->SetGuidance("desactivate histo #id"); rmhistoCmd->SetParameterName("id",false); @@ -96,6 +101,7 @@ HistoMessenger::HistoMessenger(HistoManager* manager) HistoMessenger::~HistoMessenger() { delete rmhistoCmd; + delete prhistoCmd; delete histoCmd; delete optionCmd; delete typeCmd; @@ -126,7 +132,10 @@ void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues) if (unit != "none") vUnit = G4UIcommand::ValueOf(unit); histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit); } - + + if (command == prhistoCmd) + histoManager->PrintHisto(prhistoCmd->GetNewIntValue(newValues)); + if (command == rmhistoCmd) { histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues));} } diff --git a/examples/extended/electromagnetic/TestEm3/src/PhysListEmLivermore.cc b/examples/extended/electromagnetic/TestEm3/src/PhysListEmLivermore.cc index 7a6364b358..e4f1e337d9 100644 --- a/examples/extended/electromagnetic/TestEm3/src/PhysListEmLivermore.cc +++ b/examples/extended/electromagnetic/TestEm3/src/PhysListEmLivermore.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.cc,v 1.2 2006/06/29 16:52:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/PhysListEmPenelope.cc b/examples/extended/electromagnetic/TestEm3/src/PhysListEmPenelope.cc index e4f8811c5c..93b356a379 100644 --- a/examples/extended/electromagnetic/TestEm3/src/PhysListEmPenelope.cc +++ b/examples/extended/electromagnetic/TestEm3/src/PhysListEmPenelope.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.cc,v 1.2 2006/06/29 16:52:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm3/src/PhysListEmStandard.cc index dc37568ce3..58034c1c07 100644 --- a/examples/extended/electromagnetic/TestEm3/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm3/src/PhysListEmStandard.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysListEmStandard.cc,v 1.13 2007/04/24 13:05:14 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysListEmStandard.cc,v 1.14 2007/06/22 09:22:05 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -49,7 +49,9 @@ #include "G4hIonisation.hh" #include "G4ionIonisation.hh" + #include "G4EmProcessOptions.hh" +#include "G4MscStepLimitType.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -82,41 +84,57 @@ void PhysListEmStandard::ConstructProcess() } else if (particleName == "e-") { //electron - pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1); - pmanager->AddProcess(new G4eIonisation, -1, 2, 2); - pmanager->AddProcess(new G4eBremsstrahlung(), -1, 3, 3); + pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1); + pmanager->AddProcess(new G4eIonisation, -1, 2, 2); + 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, 3, 3); - pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4); + pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1); + pmanager->AddProcess(new G4eIonisation, -1, 2, 2); + 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, 3,3); - pmanager->AddProcess(new G4MuPairProduction, -1, 4,4); + pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1); + pmanager->AddProcess(new G4MuIonisation, -1, 2, 2); + pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3, 3); + pmanager->AddProcess(new G4MuPairProduction, -1, 4, 4); } else if( particleName == "alpha" || particleName == "He3" || particleName == "GenericIon" ) { - pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); - pmanager->AddProcess(new G4ionIonisation, -1, 2,2); + 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 G4MultipleScattering, -1, 1, 1); + pmanager->AddProcess(new G4hIonisation, -1, 2, 2); } } - G4EmProcessOptions opt; - opt.SetSkin(1.0); + + // Em options + // + G4EmProcessOptions emOptions; + + //coulomb scattering + // + emOptions.SetMscStepLimitation(fUseDistanceToBoundary); + emOptions.SetSkin(2.); + + //energy loss + // + emOptions.SetLinearLossLimit(1.e-6); + emOptions.SetStepFunction(0.2, 100*um); + + //ionization + // + emOptions.SetSubCutoff(true); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/PhysListEmStandardIG.cc b/examples/extended/electromagnetic/TestEm3/src/PhysListEmStandardIG.cc new file mode 100644 index 0000000000..57ac011d3c --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/src/PhysListEmStandardIG.cc @@ -0,0 +1,154 @@ +// +// ******************************************************************** +// * 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: PhysListEmStandardIG.cc,v 1.1 2007/11/13 14:37:05 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "PhysListEmStandardIG.hh" +#include "G4ParticleDefinition.hh" +#include "G4ProcessManager.hh" + +#include "G4ComptonScattering.hh" +#include "G4GammaConversion.hh" +#include "G4PhotoElectricEffect.hh" + +#include "G4MultipleScattering.hh" +#include "G4hMultipleScattering.hh" +#include "G4MuMultipleScattering.hh" + +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +#include "G4MuIonisation.hh" +#include "G4MuBremsstrahlung.hh" +#include "G4MuPairProduction.hh" + +#include "G4hIonisation.hh" +#include "G4ionGasIonisation.hh" +#include "G4CoulombScattering.hh" + +#include "G4EmProcessOptions.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PhysListEmStandardIG::PhysListEmStandardIG(const G4String& name) + : G4VPhysicsConstructor(name) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PhysListEmStandardIG::~PhysListEmStandardIG() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void PhysListEmStandardIG::ConstructProcess() +{ + G4double thetamin = 0.05; + + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + 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 G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4eIonisation, -1, 2,2); + pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + + } else if (particleName == "e+") { + //positron + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4eIonisation, -1, 2,2); + pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); + pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + + } else if (particleName == "mu+" || + particleName == "mu-" ) { + //muon + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4MuIonisation, -1, 2,2); + pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3); + pmanager->AddProcess(new G4MuPairProduction, -1, 4,4); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + + } else if (particleName == "alpha" || particleName == "He3") { + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4ionGasIonisation, -1, 2,2); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + // pmanager->AddDiscreteProcess(nucr); + + } else if (particleName == "GenericIon" ) { + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4ionGasIonisation, -1, 2,2); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + cs->SetBuildTableFlag(false); + pmanager->AddDiscreteProcess(cs); + + } else if ((!particle->IsShortLived()) && + (particle->GetPDGCharge() != 0.0) && + (particle->GetParticleName() != "chargedgeantino")) { + //all others charged particles except geantino + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4hIonisation, -1, 2,2); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + } + } + G4EmProcessOptions opt; + opt.SetSubCutoff(true); + opt.SetMinEnergy(0.1*keV); + opt.SetMaxEnergy(100.*GeV); + opt.SetDEDXBinning(360); + opt.SetLambdaBinning(360); + opt.SetLinearLossLimit(1.e-6); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/electromagnetic/TestEm3/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm3/src/PhysicsList.cc index bbf90899cf..3e88b3819d 100644 --- a/examples/extended/electromagnetic/TestEm3/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm3/src/PhysicsList.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysicsList.cc,v 1.19 2007/05/16 11:57:48 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.cc,v 1.20 2007/11/13 14:37:05 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -33,6 +33,7 @@ #include "PhysicsListMessenger.hh" #include "PhysListEmStandard.hh" +#include "PhysListEmStandardIG.hh" #include "PhysListEmLivermore.hh" #include "PhysListEmPenelope.hh" @@ -236,6 +237,12 @@ void PhysicsList::AddPhysicsList(const G4String& name) delete emPhysicsList; emPhysicsList = new G4EmStandardPhysics_option2(); + } else if (name == "standardIG") { + + emName = name; + delete emPhysicsList; + emPhysicsList = new PhysListEmStandardIG(name); + } else if (name == "livermore") { emName = name; diff --git a/examples/extended/electromagnetic/TestEm3/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/PhysicsListMessenger.cc index a374c94701..7e82e77b8e 100644 --- a/examples/extended/electromagnetic/TestEm3/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.3 2006/06/29 16:52:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm3/src/PrimaryGeneratorAction.cc index 36768effa3..04106de371 100644 --- a/examples/extended/electromagnetic/TestEm3/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.7 2006/06/29 16:53:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/PrimaryGeneratorMessenger.cc index fa38eff31d..7fcdebefff 100644 --- a/examples/extended/electromagnetic/TestEm3/src/PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/PrimaryGeneratorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.cc,v 1.3 2006/06/29 16:53:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/RunAction.cc b/examples/extended/electromagnetic/TestEm3/src/RunAction.cc index 7a31a012b5..2323a12b9d 100644 --- a/examples/extended/electromagnetic/TestEm3/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.34 2007/04/24 13:05:14 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/RunActionMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/RunActionMessenger.cc index 9ae6715215..802c4ed2db 100644 --- a/examples/extended/electromagnetic/TestEm3/src/RunActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/RunActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunActionMessenger.cc,v 1.13 2007/04/25 10:07:27 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/StepMax.cc b/examples/extended/electromagnetic/TestEm3/src/StepMax.cc index 29ee923bb6..76ee182301 100644 --- a/examples/extended/electromagnetic/TestEm3/src/StepMax.cc +++ b/examples/extended/electromagnetic/TestEm3/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.4 2006/06/29 16:53:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/StepMaxMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/StepMaxMessenger.cc index 01fe0ba45e..fd838ab249 100644 --- a/examples/extended/electromagnetic/TestEm3/src/StepMaxMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.3 2006/06/29 16:53:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm3/src/SteppingAction.cc index d94d734d99..93033c612f 100644 --- a/examples/extended/electromagnetic/TestEm3/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.cc,v 1.25 2006/06/29 16:53:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm3/src/SteppingVerbose.cc index 5215f3828f..85f7ff5e03 100644 --- a/examples/extended/electromagnetic/TestEm3/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm3/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.4 2006/06/29 16:53:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/TrackingAction.cc b/examples/extended/electromagnetic/TestEm3/src/TrackingAction.cc index 7a5997ef97..f9652fe9a7 100644 --- a/examples/extended/electromagnetic/TestEm3/src/TrackingAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/TrackingAction.cc @@ -25,7 +25,7 @@ // // // $Id: TrackingAction.cc,v 1.2 2006/06/29 16:53:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/TestEm4.cc b/examples/extended/electromagnetic/TestEm4/TestEm4.cc index aebc1d1541..78f71740ea 100644 --- a/examples/extended/electromagnetic/TestEm4/TestEm4.cc +++ b/examples/extended/electromagnetic/TestEm4/TestEm4.cc @@ -25,7 +25,7 @@ // // // $Id: TestEm4.cc,v 1.12 2007/06/22 09:55:22 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... diff --git a/examples/extended/electromagnetic/TestEm4/TestEm4.out b/examples/extended/electromagnetic/TestEm4/TestEm4.out index ac7badd715..3f969ec9de 100644 --- a/examples/extended/electromagnetic/TestEm4/TestEm4.out +++ b/examples/extended/electromagnetic/TestEm4/TestEm4.out @@ -1,12 +1,12 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 ************************************************************* - Material: FluorCarbonate density: 1.610 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 22.435 cm + Material: FluorCarbonate density: 1.610 g/cm3 RadL: 22.435 cm Imean: 92.428 eV ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 38.74 % ElmAbundance 50.00 % ---> Element: Fluorine (N) Z = 9.0 N = 19.0 A = 18.99 g/mole ElmMassFraction: 61.26 % ElmAbundance 50.00 % PhysicsList::SetCuts:CutLength : 1 (mm) @@ -37,7 +37,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -50,7 +50,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -114,11 +114,11 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=87.33s Real=1748.56s Sys=179.54s + User=86.99s Real=1074.42s Sys=65.87s --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1117451041, 1056599626 + Current couple of seeds = 1631683781, 1521324387 ---------------------------------------- UserDetectorConstruction deleted. UserPhysicsList deleted. diff --git a/examples/extended/electromagnetic/TestEm4/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm4/include/DetectorConstruction.hh index 30523e5e67..451807b76a 100644 --- a/examples/extended/electromagnetic/TestEm4/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: DetectorConstruction.hh,v 1.3 2006/06/29 16:53:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/include/EventAction.hh b/examples/extended/electromagnetic/TestEm4/include/EventAction.hh index e207bcc44b..32cac31a68 100644 --- a/examples/extended/electromagnetic/TestEm4/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: EventAction.hh,v 1.2 2006/06/29 16:53:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm4/include/EventActionMessenger.hh index cd01f50840..3e54652a88 100644 --- a/examples/extended/electromagnetic/TestEm4/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm4/include/EventActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: EventActionMessenger.hh,v 1.3 2006/06/29 16:53:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm4/include/PhysicsList.hh index d97be87b6d..2b3346454b 100644 --- a/examples/extended/electromagnetic/TestEm4/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm4/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.2 2006/06/29 16:53:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm4/include/PrimaryGeneratorAction.hh index e8d9aceecc..c2185f3132 100644 --- a/examples/extended/electromagnetic/TestEm4/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: PrimaryGeneratorAction.hh,v 1.2 2006/06/29 16:53:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/RunAction.hh b/examples/extended/electromagnetic/TestEm4/include/RunAction.hh index f132d9ab20..8a5d442e98 100644 --- a/examples/extended/electromagnetic/TestEm4/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.7 2006/06/29 16:53:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm4/include/SteppingAction.hh index 1604c383ce..768c7f1f65 100644 --- a/examples/extended/electromagnetic/TestEm4/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: SteppingAction.hh,v 1.2 2006/06/29 16:53:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm4/include/SteppingVerbose.hh index 8e7f5ae301..5097e0b0b5 100644 --- a/examples/extended/electromagnetic/TestEm4/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm4/include/SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: SteppingVerbose.hh,v 1.2 2006/06/29 16:53:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/electromagnetic/TestEm4/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm4/src/DetectorConstruction.cc index 4b8d4175b5..d7feaafca6 100644 --- a/examples/extended/electromagnetic/TestEm4/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: DetectorConstruction.cc,v 1.3 2006/06/29 16:53:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/src/EventAction.cc b/examples/extended/electromagnetic/TestEm4/src/EventAction.cc index ac8242286a..99c6c22c8d 100644 --- a/examples/extended/electromagnetic/TestEm4/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.7 2006/06/29 16:53:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm4/src/EventActionMessenger.cc index 6485eb8423..a106febd3f 100644 --- a/examples/extended/electromagnetic/TestEm4/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm4/src/EventActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: EventActionMessenger.cc,v 1.3 2006/06/29 16:54:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm4/src/PhysicsList.cc index 75b9f32315..90b254e98b 100644 --- a/examples/extended/electromagnetic/TestEm4/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm4/src/PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.cc,v 1.6 2006/06/29 16:54:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm4/src/PrimaryGeneratorAction.cc index 566503f482..e228ba9a76 100644 --- a/examples/extended/electromagnetic/TestEm4/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: PrimaryGeneratorAction.cc,v 1.3 2006/06/29 16:54:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/src/RunAction.cc b/examples/extended/electromagnetic/TestEm4/src/RunAction.cc index 04d49a16f2..75b1858c68 100644 --- a/examples/extended/electromagnetic/TestEm4/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.10 2006/06/29 16:54:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm4/src/SteppingAction.cc index 626203ee6c..1a63f53490 100644 --- a/examples/extended/electromagnetic/TestEm4/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: SteppingAction.cc,v 1.2 2006/06/29 16:54:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm4/src/SteppingVerbose.cc index 2f051df372..8add54eafb 100644 --- a/examples/extended/electromagnetic/TestEm4/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm4/src/SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: SteppingVerbose.cc,v 1.2 2006/06/29 16:54:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/History b/examples/extended/electromagnetic/TestEm5/History index 6d218a8b0a..e13f765566 100644 --- a/examples/extended/electromagnetic/TestEm5/History +++ b/examples/extended/electromagnetic/TestEm5/History @@ -1,4 +1,4 @@ -$Id: History,v 1.83 2007/06/22 10:48:00 maire Exp $ +$Id: History,v 1.93 2007/11/28 12:37:56 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,32 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +28-11-07 mma (testem5-V09-00-07) +- TrackingAction: new histos (4 and 5) to plot vertex position of secondaries + +21-11-07 mma (testem5-V09-00-06) +- RunAction: compute and print energy leakage and energy balance + +19-11-07 V.Ivant (testem5-V09-00-05) +- Fixed usage of elstic builders + +16-11-07 mma (testem5-V09-00-04) +- PhysListEmStandard : PhysicsTables set with 100 bins per decade (EmOptions) + +13-11-07 V.Ivant (testem5-V09-00-03) +- added PhysListEmStandardIG experimental PhysList + +12-11-07 mma (testem5-V09-00-02) +- HistoManager/HistoMessenger : print selected histos on ascii file + +31-07-07 mma (testem5-V09-00-01) +- new histogram numbering (see README). Change all macros acording to. +- idem in geant3 +- reordering processes in PhysListEmStandardSS + +05-07-07 mma (testem5-V09-00-00) +- histos 17->20 : energy fluence + 22-06-07 mma (testem5-V08-03-01) - more options in PhysListEmStandard - cosmetic in TestEm5.cc diff --git a/examples/extended/electromagnetic/TestEm5/README b/examples/extended/electromagnetic/TestEm5/README index 47a0efcd8b..91d1f0334f 100644 --- a/examples/extended/electromagnetic/TestEm5/README +++ b/examples/extended/electromagnetic/TestEm5/README @@ -1,4 +1,4 @@ -$Id: README,v 1.16 2006/05/30 12:36:46 maire Exp $ +$Id: README,v 1.21 2007/11/28 12:37:56 maire Exp $ ----------------------------------------------------- ========================================================= @@ -27,8 +27,23 @@ $Id: README,v 1.16 2006/05/30 12:36:46 maire Exp $ The default geometry is constructed in DetectorConstruction class, but all the parameters can be changed via commands defined in the DetectorMessenger class. The parameters of the "World" can be changed, too. - - 2- AN EVENT : THE PRIMARY GENERATOR + + 2- PHYSICS LIST + + The following EM physics lists are available in this example: + - "standard" standard EM physics (default) + - "livermore" low-energy EM physics using Livermore data + - "penelope" low-energy EM physics implementing Penelope models + - "standardSS" standard EM physics with single Coulomb scattering + instead of multiple scattering + + Alternatively, the user may use predefined Geant4 builders: + - "emstandard" G4EmStandardPhysics builder + - "emstandard_opt1" G4EmStandardPhysics_option1 builder + - "emstandard_opt2" G4EmStandardPhysics_option2 builder + See geant4/source/physics_lists/History for details + + 3- AN EVENT : THE PRIMARY GENERATOR The primary kinematic consists of a single particle which hits the absorber perpendicular to the input face. The type of the particle and its energy are @@ -38,7 +53,7 @@ $Id: README,v 1.16 2006/05/30 12:36:46 maire Exp $ In addition one can choose randomly the impact point of the incident particle. The interactive command is built in PrimaryGeneratorMessenger class. - 3- VISUALIZATION + 4- VISUALIZATION The Visualization Manager is set in the main(). The initialisation of the drawing is done via the commands in vis.mac @@ -51,7 +66,7 @@ $Id: README,v 1.16 2006/05/30 12:36:46 maire Exp $ Optionaly one can choose to draw all particles, only the charged, or none. This command is defined in EventActionMessenger class. - 4- TRACKING + 5- TRACKING During the tracking, one can keep or not the secondaries : see StackingAction class and its Messenger. @@ -59,7 +74,7 @@ $Id: README,v 1.16 2006/05/30 12:36:46 maire Exp $ this limitation is implemented as a 'full' process : see StepMax class and its Messenger. The 'StepMax process' is registered in the Physics List. - 5- DETECTOR RESPONSE + 6- DETECTOR RESPONSE At the end of a run, from the histogram(s), one can study different physics quantities such as : @@ -69,10 +84,10 @@ $Id: README,v 1.16 2006/05/30 12:36:46 maire Exp $ - transmission and backscattering coefficients, - ... - List of the built-in histograms - ------------------------------- + 7- List of the built-in histograms + ---------------------------------- - The test contains 16 built-in 1D histograms, which are managed by the + The test contains more than 20 built-in 1D histograms, which are managed by the HistoManager class and its Messenger. The histos can be individually activated with the command : /testem/histo/setHisto id nbBins valMin valMax unit @@ -82,34 +97,45 @@ $Id: README,v 1.16 2006/05/30 12:36:46 maire Exp $ 1 "energy deposit in absorber" 2 "energy of charged secondaries at creation" 3 "energy of gammas at creation (log10(Ekin/MeV))" - 4 "(transmit, charged) : kinetic energy at exit" - 5 "(transmit, charged) : space angle at exit" - 6 "(transmit, charged) : projected angle at exit" - 7 "(transmit, charged) : projected position at exit" - 8 "(transmit, neutral) : kinetic energy at exit" - 9 "(transmit, neutral) : space angle at exit" - 10 "(transmit, neutral) : projected angle at exit" - 11 "(reflect , charged) : kinetic energy at exit" - 12 "(reflect , charged) : space angle at exit" - 13 "(reflect , charged) : projected angle at exit" - 14 "(reflect , neutral) : kinetic energy at exit" - 15 "(reflect , neutral) : space angle at exit" - 16 "(reflect , neutral) : projected angle at exit" + 4 "x_vertex of charged secondaries (all)" + 5 "x_vertex of charged secondaries (not absorbed)" + 10 "(transmit, charged) : kinetic energy at exit" + 11 "(transmit, charged) : ener fluence: dE(MeV)/dOmega" + 12 "(transmit, charged) : space angle dN/dOmega" + 13 "(transmit, charged) : projected angle at exit" + 14 "(transmit, charged) : projected position at exit" + 15 "(transmit, charged) : radius at exit" + 20 "(transmit, neutral) : kinetic energy at exit" + 21 "(transmit, neutral) : ener fluence: dE(MeV)/dOmega" + 22 "(transmit, neutral) : space angle dN/dOmega" + 23 "(transmit, neutral) : projected angle at exit" + 30 "(reflect , charged) : kinetic energy at exit" + 31 "(reflect , charged) : ener fluence: dE(MeV)/dOmega" + 32 "(reflect , charged) : space angle dN/dOmega" + 33 "(reflect , charged) : projected angle at exit" + 40 "(reflect , neutral) : kinetic energy at exit" + 41 "(reflect , neutral) : ener fluence: dE(MeV)/dOmega" + 42 "(reflect , neutral) : space angle dN/dOmega" + 43 "(reflect , neutral) : projected angle at exit" The histograms can be viewed using PAW. See below the note on ANAPHE+AIDA. One can control the name of the histograms file with the command: /testem/histo/setFileName name (default testem5.hbook) + + It is also possible to print selected histograms on an ascii file: + /testem/histo/printHisto id + All selected histos will be written on a file name.ascii (default testem5) Note that, by default, histograms are disabled. To activate them, uncomment the flag G4ANALYSIS_USE in GNUmakefile. - 6- GEANT4/GEANT3/DATA COMPARISON + 8- GEANT4/GEANT3/DATA COMPARISON A Geant4/Geant3/exp. data comparison is given here for a few cases. These cases can be classified as follow: - e-/e+ incident particles versus protons and others. - - 3 energy regimes : low: < 1 MeV; medium: 1MeV -> few 10 MeV; high: > 100 MeV + - 3 energy regimes: low: < 1MeV; medium: 1MeV -> few 10MeV; high: > 100MeV We indicate here the corresponding macros. @@ -127,7 +153,7 @@ $Id: README,v 1.16 2006/05/30 12:36:46 maire Exp $ The relevant part of the GEANT3 code is in the subdirectory geant3 together with the xxxx.dat input files. - 7- HOW TO START ? + 9- HOW TO START ? - compile and link to generate an executable % cd TestEm5 @@ -143,7 +169,7 @@ $Id: README,v 1.16 2006/05/30 12:36:46 maire Exp $ Idle> run/beamOn 5 .... - 8- USING HISTOGRAMS + 10- USING HISTOGRAMS Note that, by default, histograms are disabled. To activate them, uncomment the flag G4ANALYSIS_USE in GNUmakefile. diff --git a/examples/extended/electromagnetic/TestEm5/TestEm5.cc b/examples/extended/electromagnetic/TestEm5/TestEm5.cc index 28f9bb3d95..1f23833fa9 100644 --- a/examples/extended/electromagnetic/TestEm5/TestEm5.cc +++ b/examples/extended/electromagnetic/TestEm5/TestEm5.cc @@ -25,7 +25,7 @@ // // // $Id: TestEm5.cc,v 1.17 2007/06/22 10:48:00 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/TestEm5.in b/examples/extended/electromagnetic/TestEm5/TestEm5.in index 69e0c3c72a..7455e57db1 100644 --- a/examples/extended/electromagnetic/TestEm5/TestEm5.in +++ b/examples/extended/electromagnetic/TestEm5/TestEm5.in @@ -1,4 +1,4 @@ -# $Id: TestEm5.in,v 1.18 2006/03/20 11:41:46 maire Exp $ +# $Id: TestEm5.in,v 1.19 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -10,7 +10,6 @@ /testem/det/setAbsYZ 50 um # /testem/phys/addPhysics standard -### /testem/phys/addPhysics g4v71 # /testem/phys/setGCut 2.13 mm /testem/phys/setECut 7.0 um @@ -24,6 +23,6 @@ # /testem/histo/setFileName testem5 /testem/histo/setFileType hbook -/testem/histo/setHisto 6 100 -0.25 0.25 mrad +/testem/histo/setHisto 13 100 -0.25 0.25 mrad # /run/beamOn 100000 diff --git a/examples/extended/electromagnetic/TestEm5/TestEm5.out b/examples/extended/electromagnetic/TestEm5/TestEm5.out index 302f4faf2c..dc502f7e12 100644 --- a/examples/extended/electromagnetic/TestEm5/TestEm5.out +++ b/examples/extended/electromagnetic/TestEm5/TestEm5.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -10,23 +10,22 @@ # /testem/det/setAbsMat Silicon /testem/det/setAbsThick 20 um -/testem/det/setAbsYZ 50 um +/testem/det/setAbsYZ 50 um # -/testem/phys/addPhysics standard +/testem/phys/addPhysics standard PhysicsList::AddPhysicsList: -### /testem/phys/addPhysics g4v71 # /testem/phys/setGCut 2.13 mm -/testem/phys/setECut 7.0 um -/testem/phys/setPCut 7.0 um +/testem/phys/setECut 7.0 um +/testem/phys/setPCut 7.0 um # /run/initialize userDetector->Construct() start. - Material: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 204727576.737 pc + Material: Galactic density: 0.000 mg/cm3 RadL: 204727576.737 pc Imean: 21.800 eV temperature: 2.73 K pressure: 0.00 atm ---> Element: Galactic ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Silicon density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm + Material: Silicon density: 2.330 g/cm3 RadL: 9.368 cm Imean: 173.600 eV ---> Element: Silicon ( ) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % The WORLD is made of 30 um of Galactic. The transverse size (YZ) of the world is 60 um @@ -39,13 +38,13 @@ physicsList->setCut() start. PhysicsList::SetCuts:CutLength : 1 mm # /testem/gun/setDefault -/gun/particle pi+ +/gun/particle pi+ /gun/energy 5 GeV # /testem/histo/setFileName testem5 /testem/histo/setFileType hbook -/testem/histo/setHisto 6 100 -0.25 0.25 mrad -----> SetHisto 6: (transmit, charged) : projected angle at exit (mrad); 100 bins from -0.25 mrad to 0.25 mrad +/testem/histo/setHisto 13 100 -0.25 0.25 mrad +----> SetHisto 13: (transmit, charged) : projected angle at exit (mrad); 100 bins from -0.25 mrad to 0.25 mrad # /run/beamOn 100000 @@ -55,41 +54,41 @@ phot: Total cross sections from Sandia parametrisation. compt: Total cross sections has a good parametrisation from 10 KeV to (100/Z) GeV Sampling according Klein-Nishina model tables are built for gamma - Lambda tables from 100 eV to 100 GeV in 90 bins. + Lambda tables from 100 eV to 100 TeV in 1200 bins. conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV for all Z; sampling secondary e+e- according Bethe-Heitler model tables are built for gamma - Lambda tables from 1.022 MeV to 100 GeV in 100 bins. + Lambda tables from 1.022 MeV to 100 TeV in 1200 bins. msc: Model variant of multiple scattering for e- - Lambda tables from 100 eV to 100 TeV in 120 bins. - LateralDisplacementFlag= 1 Skin= 2 + Lambda tables from 100 eV to 100 TeV in 1200 bins. + LateralDisplacementFlag= 1 Skin= 4 Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 2 eIoni: tables are built for e- - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Total cross sections and sampling from StandBrem model (based on the EEDL data library) Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV. LPM flag 1 eIoni: tables are built for e+ - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Total cross sections and sampling from StandBrem model (based on the EEDL data library) Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV. LPM flag 1 @@ -98,99 +97,99 @@ annihil: Sampling according eplus2gg model Lambda tables from 100 eV to 100 TeV in 120 bins. msc: Model variant of multiple scattering for proton - Lambda tables from 100 eV to 100 TeV in 120 bins. - LateralDisplacementFlag= 1 Skin= 2 + Lambda tables from 100 eV to 100 TeV in 1200 bins. + LateralDisplacementFlag= 1 Skin= 4 Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 2 hIoni: tables are built for proton - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for GenericIon LateralDisplacementFlag= 0 Skin= 0 Boundary/stepping algorithm is active with RangeFactor= 0.2 Step limit type 1 ionIoni: tables are built for GenericIon - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for anti_proton - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ - Lambda tables from 100 eV to 100 TeV in 120 bins. - LateralDisplacementFlag= 1 Skin= 2 + Lambda tables from 100 eV to 100 TeV in 1200 bins. + LateralDisplacementFlag= 1 Skin= 4 Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 2 muIoni: tables are built for mu+ - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Parametrised model muPairProd: tables are built for mu+ - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Parametrised model muIoni: tables are built for mu- - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Parametrised model muPairProd: tables are built for mu- - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Parametrised model hIoni: tables are built for pi+ - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- - Lambda tables from 100 eV to 100 TeV in 120 bins. - LateralDisplacementFlag= 1 Skin= 2 + Lambda tables from 100 eV to 100 TeV in 1200 bins. + LateralDisplacementFlag= 1 Skin= 4 Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 2 hIoni: tables are built for pi- - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 100 TeV in 1200 bins. + Lambda tables from threshold to 100 TeV in 1200 bins. Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 Region -- appears in world volume Root logical volume(s) : World @@ -251,26 +250,30 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=191.63s Real=1838s Sys=220.01s + User=266.08s Real=1016.8s Sys=67.21s ======================== run summary ====================== The run was 100000 pi+ of 5 GeV through 20 um of Silicon (density: 2.33 g/cm3 ) - Total energy deposit in absorber per event = 6.301 keV +- 16.44 eV - -----> Mean dE/dx = 3.15 MeV/cm (1.352 MeV*cm2/g) + Total energy deposit in absorber per event = 6.332 keV +- 16.77 eV + + -----> Mean dE/dx = 3.166 MeV/cm (1.359 MeV*cm2/g) From formulas : restricted dEdx = 2.936 MeV/cm (1.26 MeV*cm2/g) full dEdx = 4.696 MeV/cm (2.016 MeV*cm2/g) - Total track length (charged) in absorber per event = 20.27 um +- 7.825 nm - Total track length (neutral) in absorber per event = 6.457 Ang +- 3.871 Ang + Leakage : primary = 5 GeV +- 989.4 eV secondaries = 2.883 keV +- 988.9 eV + Energy balance : edep + eleak = 5 GeV - Number of steps (charged) in absorber per event = 6.121 +- 8.846e-06 - Number of steps (neutral) in absorber per event = 3e-05 +- 8.846e-06 + Total track length (charged) in absorber per event = 20.27 um +- 8.088 nm + Total track length (neutral) in absorber per event = 5.301 Ang +- 2.67 Ang - Number of secondaries per event : Gammas = 3e-05; electrons = 0.01746; positrons = 0 + Number of steps (charged) in absorber per event = 10.15 +- 8.994e-06 + Number of steps (neutral) in absorber per event = 4e-05 +- 8.994e-06 + + Number of secondaries per event : Gammas = 4e-05; electrons = 0.01747; positrons = 0 Number of events with the primary particle transmitted = 100 % Number of events with at least 1 particle transmitted (same charge as primary) = 100 % @@ -279,13 +282,13 @@ Run Summary Number of events with at least 1 particle reflected (same charge as primary) = 0 % MultipleScattering: - rms proj angle of transmit primary particle = 0.02377 mrad (central part only) + rms proj angle of transmit primary particle = 0.02414 mrad (central part only) computed theta0 (Highland formula) = 0.02627 mrad - central part defined as +- 0.0788 mrad; Tail ratio = 1.276 % + central part defined as +- 0.0788 mrad; Tail ratio = 1 % --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 651349949, 1204961610 + Current couple of seeds = 1050074337, 380686861 ---------------------------------------- UserDetectorConstruction deleted. UserPhysicsList deleted. diff --git a/examples/extended/electromagnetic/TestEm5/acosta.mac b/examples/extended/electromagnetic/TestEm5/acosta.mac index cfac355816..8369aba110 100644 --- a/examples/extended/electromagnetic/TestEm5/acosta.mac +++ b/examples/extended/electromagnetic/TestEm5/acosta.mac @@ -1,4 +1,4 @@ -# $Id: acosta.mac,v 1.1 2006/05/30 12:28:57 maire Exp $ +# $Id: acosta.mac,v 1.2 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -21,7 +21,7 @@ # /testem/histo/setFileName acosta /testem/histo/setFileType hbook -/testem/histo/setHisto 14 40 0 20 keV #energy at exit. (reflect,neutral) +/testem/histo/setHisto 40 40 0 20 keV #energy at exit. (reflect,neutral) # /testem/phys/setGCut 1 um # diff --git a/examples/extended/electromagnetic/TestEm5/air.mac b/examples/extended/electromagnetic/TestEm5/air.mac new file mode 100644 index 0000000000..74ec3c53e6 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/air.mac @@ -0,0 +1,31 @@ +# $Id: air.mac,v 1.2 2007/07/31 16:51:29 maire Exp $ +# +# macro file for TestEm5.cc +# +/control/verbose 2 +/run/verbose 2 +# +/testem/det/setAbsMat Air +/testem/det/setWorldMat Galactic +/testem/det/setAbsThick 10 cm +/testem/det/setAbsYZ 15 cm +# +/testem/phys/addPhysics standard +#### /testem/phys/addPhysics standardSS +# +/testem/phys/setCuts 0.1 mm +# +/run/initialize +# +/testem/gun/setDefault +/gun/particle e- +/gun/energy 6 MeV +# +/testem/histo/setFileName air +/testem/histo/setFileType hbook +/testem/histo/setHisto 13 100 -100 100 mrad #theta proj +/testem/histo/setHisto 15 200 0 20 mm #radius +# +/testem/event/printModulo 100000 +# +/run/beamOn 1000000 diff --git a/examples/extended/electromagnetic/TestEm5/anthony.mac b/examples/extended/electromagnetic/TestEm5/anthony.mac index 80c22b3abd..159664ef65 100644 --- a/examples/extended/electromagnetic/TestEm5/anthony.mac +++ b/examples/extended/electromagnetic/TestEm5/anthony.mac @@ -1,4 +1,4 @@ -# $Id: anthony.mac,v 1.3 2006/03/20 11:41:46 maire Exp $ +# $Id: anthony.mac,v 1.4 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -27,6 +27,6 @@ # /testem/histo/setFileName anthony /testem/histo/setFileType hbook -/testem/histo/setHisto 8 80 1.e-4 1. GeV #gamma energy at exit +/testem/histo/setHisto 20 80 1.e-4 1. GeV #gamma energy at exit # /run/beamOn 100000 diff --git a/examples/extended/electromagnetic/TestEm5/bichsel.mac b/examples/extended/electromagnetic/TestEm5/bichsel.mac index 534d157cbb..44ea793fa0 100644 --- a/examples/extended/electromagnetic/TestEm5/bichsel.mac +++ b/examples/extended/electromagnetic/TestEm5/bichsel.mac @@ -1,4 +1,4 @@ -# $Id: bichsel.mac,v 1.3 2006/03/20 11:41:46 maire Exp $ +# $Id: bichsel.mac,v 1.4 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -24,8 +24,8 @@ # /testem/histo/setFileName bichsel /testem/histo/setFileType hbook -/testem/histo/setHisto 5 100 0 9 deg #space angle -/testem/histo/setHisto 6 100 -9 +9 deg #projected angle +/testem/histo/setHisto 12 100 0 9 deg #space angle +/testem/histo/setHisto 13 100 -9 +9 deg #projected angle # /testem/stack/killSecondaries # diff --git a/examples/extended/electromagnetic/TestEm5/davidw.mac b/examples/extended/electromagnetic/TestEm5/davidw.mac index 84e2e6638f..1c373ff4c2 100644 --- a/examples/extended/electromagnetic/TestEm5/davidw.mac +++ b/examples/extended/electromagnetic/TestEm5/davidw.mac @@ -16,7 +16,7 @@ # /testem/histo/setFileName davidw.41r0 /testem/histo/setFileType hbook -/testem/histo/setHisto 5 100 0 100 mrad #space angle +/testem/histo/setHisto 12 100 0 100 mrad #space angle # /run/beamOn 10000 diff --git a/examples/extended/electromagnetic/TestEm5/geant3/anthony.dat b/examples/extended/electromagnetic/TestEm5/geant3/anthony.dat index ffaae0efbd..454f848f67 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/anthony.dat +++ b/examples/extended/electromagnetic/TestEm5/geant3/anthony.dat @@ -1,4 +1,4 @@ -FILE anthony.paw +FILE anthony.hbook LIST ABSOR 22 (aluminium) 0.53 (thicknX) 10.0 (sizeYZ) 0. (field) C ABSOR 28 (lead) 0.015 (thicknX) 10.0 (sizeYZ) 0. (field) @@ -8,7 +8,7 @@ ABAN 0 CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo) 2*10.0e-6 (bcute/m) 2*10.0e-6 (dcute/m) KINE 3 (electron) 25.0 (Ekin) 90.0 (theta) 0.0 (phi) -*HISTO 8 (idh) 80 (nbins) 1.e-4 (Emin) 1. (Emax) 1. (GeV) +*HISTO 20 (idh) 80 (nbins) 1.e-4 (Emin) 1. (Emax) 1. (GeV) SWIT 0 (draw) DEBUG 2 1 10000 TRIG 100000 diff --git a/examples/extended/electromagnetic/TestEm5/geant3/berger.dat b/examples/extended/electromagnetic/TestEm5/geant3/berger.dat index 28178f8c47..2d313427ab 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/berger.dat +++ b/examples/extended/electromagnetic/TestEm5/geant3/berger.dat @@ -1,4 +1,4 @@ -FILE berger.paw +FILE berger.hbook LIST ABSOR 23 (silicon) 61.e-4 (thicknX) 1.0 (sizeYZ) 0. (field) C ABSOR 23 (silicon) 105.e-4 (thicknX) 1.0 (sizeYZ) 0. (field) diff --git a/examples/extended/electromagnetic/TestEm5/geant3/bichsel.dat b/examples/extended/electromagnetic/TestEm5/geant3/bichsel.dat index 472c26af2f..528399119b 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/bichsel.dat +++ b/examples/extended/electromagnetic/TestEm5/geant3/bichsel.dat @@ -1,4 +1,4 @@ -FILE bichsel.paw +FILE bichsel.hbook LIST ABSOR 22 (aluminium) 5.0741e-4 (thicknX) 1. (sizeYZ) 0. (field) LOSS 1 @@ -7,8 +7,8 @@ ABAN 0 CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-6 (cutneu/had/muo) 2*6.89e-6 (bcute/m) 2*597.e-6 (dcute/m) KINE 14 (proton) 766.e-6 (Ekin) 90.0 (theta) 0.0 (phi) -*HISTO 5 (idh) 100 (nbins) 0. (tetmin) 9. (tetmax) 1.74533e-2 (deg) -*HISTO 6 (idh) 100 (nbins) -9. (tetmin) +9. (tetmax) 1.74533e-2 (deg) +*HISTO 12 (idh) 100 (nbins) 0. (tetmin) 9. (tetmax) 1.74533e-2 (deg) +*HISTO 13 (idh) 100 (nbins) -9. (tetmin) +9. (tetmax) 1.74533e-2 (deg) KILL TRUE SWIT 0 (draw) DEBUG 1 1 10000 diff --git a/examples/extended/electromagnetic/TestEm5/geant3/gottsch.dat b/examples/extended/electromagnetic/TestEm5/geant3/gottsch.dat index c36afdd68f..beb4bf6310 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/gottsch.dat +++ b/examples/extended/electromagnetic/TestEm5/geant3/gottsch.dat @@ -1,4 +1,4 @@ -FILE gottsch.paw +FILE gottsch.hbook LIST ABSOR 22 (aluminium) 800.e-4 (thicknX) 1. (sizeYZ) 0. (field) LOSS 1 @@ -7,8 +7,8 @@ ABAN 0 CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-6 (cutneu/had/muo) 2*6.89e-6 (bcute/m) 2*597.e-6 (dcute/m) KINE 14 (proton) 0.1586 (Ekin) 90.0 (theta) 0.0 (phi) -*HISTO 5 (idh) 100 (nbins) 0. (tetmin) 0.6 (tetmax) 1.74533e-2 (deg) -*HISTO 6 (idh) 100 (nbins) -0.6 (tetmin) +0.6 (tetmax) 1.74533e-2 (deg) +*HISTO 12 (idh) 100 (nbins) 0. (tetmin) 0.6 (tetmax) 1.74533e-2 (deg) +*HISTO 13 (idh) 100 (nbins) -0.6 (tetmin) +0.6 (tetmax) 1.74533e-2 (deg) KILL TRUE SWIT 0 (draw) DEBUG 1 1 10000 diff --git a/examples/extended/electromagnetic/TestEm5/geant3/hanson.dat b/examples/extended/electromagnetic/TestEm5/geant3/hanson.dat index 14f00e0c02..9d88f25039 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/hanson.dat +++ b/examples/extended/electromagnetic/TestEm5/geant3/hanson.dat @@ -1,4 +1,4 @@ -FILE hanson.paw +FILE hanson.hbook LIST ABSOR 27 (gold) 9.658e-4 (thicknX) 1.0 (sizeYZ) 0. (field) C ABSOR 27 (gold) 19.296e-4 (thicknX) 1.0 (sizeYZ) 0. (field) @@ -8,8 +8,8 @@ ABAN 0 CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo) 2*10.0e-6 (bcute/m) 2*10.0e-6 (dcute/m) KINE 3 (electron) 0.01570 (Ekine) 90.0 (theta) 0.0 (phi) -*HISTO 5 (idh) 100 (nbins) 0. (tetmin) 10. (tetmax) 1.74533e-2 (deg) -C *HISTO 5 (idh) 60 (nbins) 0. (tetmin) 30. (tetmax) 1.74533e-2 (deg) +*HISTO 12 (idh) 100 (nbins) 0. (tetmin) 10. (tetmax) 1.74533e-2 (deg) +C *HISTO 12 (idh) 60 (nbins) 0. (tetmin) 30. (tetmax) 1.74533e-2 (deg) SWIT 0 (draw) DEBUG 1 1 100000 TRIG 1000000 diff --git a/examples/extended/electromagnetic/TestEm5/geant3/include/histo.inc b/examples/extended/electromagnetic/TestEm5/geant3/include/histo.inc index 7ddfd03129..dae70d0c7e 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/include/histo.inc +++ b/examples/extended/electromagnetic/TestEm5/geant3/include/histo.inc @@ -3,6 +3,6 @@ COMMON/HISTO2/idhist,nbBins,valmin,valmax,valunit - PARAMETER (MaxHist = 16) + PARAMETER (MaxHist = 50) LOGICAL histo COMMON/HISTO3/histo(MaxHist),histUnit(MaxHist),binWidth(MaxHist) diff --git a/examples/extended/electromagnetic/TestEm5/geant3/kulchi.dat b/examples/extended/electromagnetic/TestEm5/geant3/kulchi.dat index 60d418f150..8b9b4754c1 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/kulchi.dat +++ b/examples/extended/electromagnetic/TestEm5/geant3/kulchi.dat @@ -1,4 +1,4 @@ -FILE kulchi.paw +FILE kulchi.hbook LIST ABSOR 22 (aluminium) 98.5185e-4 (thicknX) 1. (sizeYZ) 0. (field) LOSS 1 @@ -7,8 +7,8 @@ ABAN 0 CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo) 2*6.89e-6 (bcute/m) 2*597.e-6 (dcute/m) KINE 3 (electron) 0.00225 (Ekin) 90.0 (theta) 0.0 (phi) -*HISTO 5 (idh) 100 (nbins) 0. (tetmin) 25. (tetmax) 1.74533e-2 (deg) -*HISTO 6 (idh) 100 (nbins) -25. (tetmin) +25. (tetmax) 1.74533e-2 (deg) +*HISTO 12 (idh) 100 (nbins) 0. (tetmin) 25. (tetmax) 1.74533e-2 (deg) +*HISTO 13 (idh) 100 (nbins) -25. (tetmin) +25. (tetmax) 1.74533e-2 (deg) SWIT 0 (draw) DEBUG 1 1 10000 TRIG 100000 diff --git a/examples/extended/electromagnetic/TestEm5/geant3/shen1.dat b/examples/extended/electromagnetic/TestEm5/geant3/shen1.dat index 202e00a473..a323253f50 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/shen1.dat +++ b/examples/extended/electromagnetic/TestEm5/geant3/shen1.dat @@ -1,4 +1,4 @@ -FILE shen1.paw +FILE shen1.hbook LIST ABSOR 22 (aluminium) 0.4005 (thicknX) 1.0 (sizeYZ) 0. (field) LOSS 1 @@ -7,7 +7,7 @@ ABAN 0 CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo) 2*10.0e-6 (bcute/m) 2*10.0e-6 (dcute/m) KINE 14 (proton) 69.068 (Ekin) 90.0 (theta) 0.0 (phi) -*HISTO 5 (idh) 100 (nbins) 0. (tetmin) 0.01 (tetmax) 1.74533e-2 (deg) +*HISTO 12 (idh) 100 (nbins) 0. (tetmin) 0.01 (tetmax) 1.74533e-2 (deg) KILL TRUE SWIT 0 (draw) DEBUG 1 1 10000 diff --git a/examples/extended/electromagnetic/TestEm5/geant3/shen2.dat b/examples/extended/electromagnetic/TestEm5/geant3/shen2.dat index a3ec23675b..93436f6f89 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/shen2.dat +++ b/examples/extended/electromagnetic/TestEm5/geant3/shen2.dat @@ -1,4 +1,4 @@ -FILE shen2.paw +FILE shen2.hbook LIST ABSOR 22 (aluminium) 8.004e-1 (thicknX) 1. (sizeYZ) 0. (field) LOSS 1 @@ -7,8 +7,8 @@ ABAN 0 CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-6 (cutneu/had/muo) 2*6.89e-6 (bcute/m) 2*597.e-6 (dcute/m) KINE 14 (proton) 174.664 (Ekin) 90.0 (theta) 0.0 (phi) -*HISTO 5 (idh) 100 (nbins) 0. (tetmin) 0.004 (tetmax) 1.74533e-2 (deg) -*HISTO 6 (idh) 100 (nbins) -0.004 (tetmin) +0.004 (tetmax) 1.74533e-2 (deg) +*HISTO 12 (idh) 100 (nbins) 0. (tetmin) 0.004 (tetmax) 1.74533e-2 (deg) +*HISTO 13 (idh) 100 (nbins) -0.004 (tetmin) +0.004 (tetmax) 1.74533e-2 (deg) KILL TRUE SWIT 0 (draw) DEBUG 1 1 10000 diff --git a/examples/extended/electromagnetic/TestEm5/geant3/src/gutrak.F b/examples/extended/electromagnetic/TestEm5/geant3/src/gutrak.F index a1d9f88fc4..353b77de34 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/src/gutrak.F +++ b/examples/extended/electromagnetic/TestEm5/geant3/src/gutrak.F @@ -41,20 +41,20 @@ * * energy spectrum at exit * - if (transmit.and.charged) id = 4 - if (transmit.and.neutral) id = 8 - if (reflect .and.charged) id = 11 - if (reflect .and.neutral) id = 14 + if (transmit.and.charged) id = 10 + if (transmit.and.neutral) id = 20 + if (reflect .and.charged) id = 30 + if (reflect .and.neutral) id = 40 if (id.ne.0.and.histo(id)) then call hfill (id,gekin/histUnit(id),0.,1.) endif * * space angle distribution at exit * - if (transmit.and.charged) id = 5 - if (transmit.and.neutral) id = 9 - if (reflect .and.charged) id = 12 - if (reflect .and.neutral) id = 15 + if (transmit.and.charged) id = 12 + if (transmit.and.neutral) id = 22 + if (reflect .and.charged) id = 32 + if (reflect .and.neutral) id = 42 if (id.ne.0.and.histo(id)) then unit = histUnit(id) theta = acos(abs(vect(4))) @@ -67,10 +67,10 @@ * * projected angle distribution at exit * - if (transmit.and.charged) id = 6 - if (transmit.and.neutral) id = 10 - if (reflect .and.charged) id = 13 - if (reflect .and.neutral) id = 16 + if (transmit.and.charged) id = 13 + if (transmit.and.neutral) id = 23 + if (reflect .and.charged) id = 33 + if (reflect .and.neutral) id = 43 if (id.ne.0.and.histo(id)) then thety = atan(vect(5)/abs(vect(4))) thetz = atan(vect(6)/abs(vect(4))) @@ -80,7 +80,7 @@ * * projected position at exit * - if (transmit.and.charged) id = 7 + if (transmit.and.charged) id = 14 if (id.ne.0.and.histo(id)) then call hfill (id,vect(2)/histUnit(id),0.,1.) call hfill (id,vect(3)/histUnit(id),0.,1.) diff --git a/examples/extended/electromagnetic/TestEm5/geant3/src/ugeom.F b/examples/extended/electromagnetic/TestEm5/geant3/src/ugeom.F index 60fb337d92..161791a601 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/src/ugeom.F +++ b/examples/extended/electromagnetic/TestEm5/geant3/src/ugeom.F @@ -26,7 +26,8 @@ C CALL GSMATE(26,'COPPER',63.54,29.,8.96,1.430,0.,0,0) CALL GSMATE(27,'GOLD',196.967,79.,19.32,0.33,0.,0,0) CALL GSMATE(28,'LEAD',207.190,82.,11.35,0.560,0.,0,0) - CALL GSMATE(31,'XenonGas',131.29,54.,5.858e-3,1447.8,0.,0,0) + CALL GSMATE(31,'XenonGas',131.29,54.,5.858e-3,1447.8,0.,0,0) + CALL GSMATE(32,'Tungsten',183.85,74.,19.30,0.35,0.,0,0) C CALL GSMIXT(29,'WATER',AWAT,ZWAT,1.00,-2,WWAT) CALL GSMIXT(30,'AIR',AAIR,ZAIR,1.205E-3,+2,WAIR) diff --git a/examples/extended/electromagnetic/TestEm5/geant3/src/uhinit.F b/examples/extended/electromagnetic/TestEm5/geant3/src/uhinit.F index 2f43ddb61e..31a365ab87 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/src/uhinit.F +++ b/examples/extended/electromagnetic/TestEm5/geant3/src/uhinit.F @@ -4,26 +4,36 @@ * #include "histo.inc" * - CHARACTER*50 title(16) + CHARACTER*50 title(50) * data title / 1 'energy deposit in absorber', - 2 'energy of charged secondaries at creation', - 3 'energy of gammas at creation (log10(ekin/MeV))', - 4 '(transmit, charged) : kinetic energy at exit', - 5 '(transmit, charged) : space angle at exit', - 6 '(transmit, charged) : projected angle at exit', - 7 '(transmit, charged) : projected position at exit', - 8 '(transmit, neutral) : kinetic energy at exit', - 9 '(transmit, neutral) : space angle at exit', - + '(transmit, neutral) : projected angle at exit', - 1 '(reflect , charged) : kinetic energy at exit', - 2 '(reflect , charged) : space angle at exit', - 3 '(reflect , charged) : projected angle at exit', - 4 '(reflect , neutral) : kinetic energy at exit', - 5 '(reflect , neutral) : space angle at exit', - 6 '(reflect , neutral) : projected angle at exit' / -* + 2 'energy of charged secondaries at creation', + 3 'energy of gammas at creation (log10(ekin/MeV))', + C 'dummy','dummy','dummy','dummy','dummy','dummy', + + '(transmit, charged) : kinetic energy at exit', + 1 '(transmit, charged) : energy fluence dE(MeV)/dOmega', + 2 '(transmit, charged) : space angle dN/dOmega', + 3 '(transmit, charged) : projected angle at exit', + 4 '(transmit, charged) : projected position at exit', + 5 '(transmit, charged) : radius at exit', + C 'dummy','dummy','dummy','dummy', + + '(transmit, neutral) : kinetic energy at exit', + 1 '(transmit, neutral) : energy fluence dE(MeV)/dOmega', + 2 '(transmit, neutral) : space angle dN/dOmega', + 3 '(transmit, neutral) : projected angle at exit', + C 'dummy','dummy','dummy','dummy','dummy','dummy', + + '(reflect , charged) : kinetic energy at exit', + 1 '(reflect , charged) : energy fluence dE(MeV)/dOmega', + 2 '(reflect , charged) : space angle dN/dOmega', + 3 '(reflect , charged) : projected angle at exit', + C 'dummy','dummy','dummy','dummy','dummy','dummy', + + '(reflect , neutral) : kinetic energy at exit', + 1 '(reflect , neutral) : energy fluence dE(MeV)/dOmega', + 2 '(reflect , neutral) : space angle dN/dOmega', + 3 '(reflect , neutral) : projected angle at exit', + C 'dummy','dummy','dummy','dummy','dummy','dummy','dummy' / +* if (histo(idhist)) call hdelet(idhist) * vmin = valmin diff --git a/examples/extended/electromagnetic/TestEm5/geant3/testem5.dat b/examples/extended/electromagnetic/TestEm5/geant3/testem5.dat index 4dde66156e..486a132b18 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/testem5.dat +++ b/examples/extended/electromagnetic/TestEm5/geant3/testem5.dat @@ -1,4 +1,4 @@ -FILE testem5.paw +FILE testem5.hbook LIST ABSOR 23 (silicon) 20.5e-4 (thicknX) 0.1 (sizeYZ) 0. (field) LOSS 1 diff --git a/examples/extended/electromagnetic/TestEm5/geant3/tramu.dat b/examples/extended/electromagnetic/TestEm5/geant3/tramu.dat index 9dbc463e1c..a7d1bfd263 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/tramu.dat +++ b/examples/extended/electromagnetic/TestEm5/geant3/tramu.dat @@ -1,4 +1,4 @@ -FILE tramu.paw +FILE tramu.hbook LIST ABSOR 25 (iron) 300. (thicknX) 300. (sizeYZ) 0. (field) LOSS 1 @@ -7,7 +7,7 @@ ABAN 0 CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo) 2*21.0e-6 (bcute/m) 2*1.3e-3 (dcute/m) 10.e-3 (ppcutm) KINE 5 (muon) 1000. (Ekin) 90.0 (theta) 0.0 (phi) -*HISTO 4 (idh) 80 (nbins) 920. (Emin) 1000. (Emax) 1. (GeV) +*HISTO 10 (idh) 80 (nbins) 920. (Emin) 1000. (Emax) 1. (GeV) KILL TRUE SWIT 0 (draw) DEBUG 1 1 1000 diff --git a/examples/extended/electromagnetic/TestEm5/geant3/vincour.dat b/examples/extended/electromagnetic/TestEm5/geant3/vincour.dat index 0d138d466b..f970c6be1a 100644 --- a/examples/extended/electromagnetic/TestEm5/geant3/vincour.dat +++ b/examples/extended/electromagnetic/TestEm5/geant3/vincour.dat @@ -1,4 +1,4 @@ -FILE vincour.paw +FILE vincour.hbook LIST ABSOR 23 (silicon) 50.0e-4 (thicknX) 1.0 (sizeYZ) 0. (field) C ABSOR 23 (silicon) 92.6e-4 (thicknX) 1.0 (sizeYZ) 0. (field) @@ -8,7 +8,7 @@ ABAN 0 CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo) 2*10.0e-6 (bcute/m) 2*10.0e-6 (dcute/m) KINE 14 (proton) 0.00656 (Ekin) 90.0 (theta) 0.0 (phi) -*HISTO 5 (idh) 60 (nbins) 0. (tetmin) 6. (tetmax) 1.74533e-2 (deg) +*HISTO 12 (idh) 60 (nbins) 0. (tetmin) 6. (tetmax) 1.74533e-2 (deg) KILL TRUE SWIT 0 (draw) DEBUG 1 1 10000 diff --git a/examples/extended/electromagnetic/TestEm5/gottsch.mac b/examples/extended/electromagnetic/TestEm5/gottsch.mac index f95ecb66a9..1f396f39b3 100644 --- a/examples/extended/electromagnetic/TestEm5/gottsch.mac +++ b/examples/extended/electromagnetic/TestEm5/gottsch.mac @@ -1,4 +1,4 @@ -# $Id: gottsch.mac,v 1.2 2005/03/02 17:17:57 maire Exp $ +# $Id: gottsch.mac,v 1.3 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -24,8 +24,8 @@ # /testem/histo/setFileName gottsch /testem/histo/setFileType hbook -/testem/histo/setHisto 5 100 0.0 0.6 deg #space angle -/testem/histo/setHisto 6 100 -0.6 +0.6 deg #projected angle +/testem/histo/setHisto 12 100 0.0 0.6 deg #space angle +/testem/histo/setHisto 13 100 -0.6 +0.6 deg #projected angle # /testem/stack/killSecondaries # diff --git a/examples/extended/electromagnetic/TestEm5/hanson.mac b/examples/extended/electromagnetic/TestEm5/hanson.mac index f92bd3301d..421b5a55a5 100644 --- a/examples/extended/electromagnetic/TestEm5/hanson.mac +++ b/examples/extended/electromagnetic/TestEm5/hanson.mac @@ -1,4 +1,4 @@ -# $Id: hanson.mac,v 1.3 2006/03/20 11:41:46 maire Exp $ +# $Id: hanson.mac,v 1.4 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -26,8 +26,8 @@ # /testem/histo/setFileName hanson /testem/histo/setFileType hbook -/testem/histo/setHisto 5 100 0 10 deg #space angle -###/testem/histo/setHisto 5 60 0 30 deg #space angle +/testem/histo/setHisto 12 100 0 10 deg #space angle +###/testem/histo/setHisto 12 60 0 30 deg #space angle # /testem/event/printModulo 100000 /run/beamOn 1000000 diff --git a/examples/extended/electromagnetic/TestEm5/hunger.mac b/examples/extended/electromagnetic/TestEm5/hunger.mac index b71b530e5b..7887c064f1 100644 --- a/examples/extended/electromagnetic/TestEm5/hunger.mac +++ b/examples/extended/electromagnetic/TestEm5/hunger.mac @@ -1,4 +1,4 @@ -# $Id: hunger.mac,v 1.2 2006/05/30 12:28:57 maire Exp $ +# $Id: hunger.mac,v 1.3 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -22,7 +22,7 @@ # /testem/histo/setFileName hunger /testem/histo/setFileType hbook -/testem/histo/setHisto 11 50 0.0 50 keV #energy reflected_charged +/testem/histo/setHisto 30 50 0.0 50 keV #energy reflected_charged # ###/testem/stepMax 1 um # diff --git a/examples/extended/electromagnetic/TestEm5/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm5/include/DetectorConstruction.hh index b57d157668..b97afad151 100644 --- a/examples/extended/electromagnetic/TestEm5/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.6 2006/06/29 16:54:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/DetectorMessenger.hh index 81614c6781..537192aa86 100644 --- a/examples/extended/electromagnetic/TestEm5/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.5 2006/06/29 16:54:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/EventAction.hh b/examples/extended/electromagnetic/TestEm5/include/EventAction.hh index ef937d045c..72a1cbebba 100644 --- a/examples/extended/electromagnetic/TestEm5/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.3 2006/06/29 16:54:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/EventMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/EventMessenger.hh index 87b9bdef66..d6b3154c19 100644 --- a/examples/extended/electromagnetic/TestEm5/include/EventMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/EventMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventMessenger.hh,v 1.5 2006/06/29 16:54:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/HistoManager.hh b/examples/extended/electromagnetic/TestEm5/include/HistoManager.hh index 1015a8ba80..cff02d9a0b 100644 --- a/examples/extended/electromagnetic/TestEm5/include/HistoManager.hh +++ b/examples/extended/electromagnetic/TestEm5/include/HistoManager.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.hh,v 1.9 2006/06/29 16:54:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.hh,v 1.13 2007/11/12 17:48:16 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -44,7 +44,7 @@ namespace AIDA { class HistoMessenger; -const G4int MaxHisto = 17; +const G4int MaxHisto = 50; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -63,7 +63,8 @@ class HistoManager void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none"); void FillHisto(G4int id, G4double e, G4double weight = 1.0); void RemoveHisto (G4int); - + void PrintHisto (G4int); + G4bool HistoExist (G4int id) {return exist[id];} G4double GetHistoUnit(G4int id) {return Unit[id];} G4double GetBinWidth (G4int id) {return Width[id];} @@ -84,8 +85,13 @@ class HistoManager G4double Vmax [MaxHisto]; G4double Unit [MaxHisto]; G4double Width[MaxHisto]; + G4bool ascii[MaxHisto]; + G4bool factoryOn; HistoMessenger* histoMessenger; + + private: + void saveAscii(); }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/HistoMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/HistoMessenger.hh index 8c6185344e..fd435c9e5a 100644 --- a/examples/extended/electromagnetic/TestEm5/include/HistoMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/HistoMessenger.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.hh,v 1.7 2006/06/29 16:54:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.hh,v 1.8 2007/11/12 17:48:16 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -63,6 +63,7 @@ class HistoMessenger: public G4UImessenger G4UIcmdWithAString* typeCmd; G4UIcmdWithAString* optionCmd; G4UIcommand* histoCmd; + G4UIcmdWithAnInteger* prhistoCmd; G4UIcmdWithAnInteger* rmhistoCmd; }; diff --git a/examples/extended/electromagnetic/TestEm5/include/PhysListEmLivermore.hh b/examples/extended/electromagnetic/TestEm5/include/PhysListEmLivermore.hh index 175ad14a26..e2e8662b2f 100644 --- a/examples/extended/electromagnetic/TestEm5/include/PhysListEmLivermore.hh +++ b/examples/extended/electromagnetic/TestEm5/include/PhysListEmLivermore.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.hh,v 1.3 2006/08/10 08:44:39 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/PhysListEmPenelope.hh b/examples/extended/electromagnetic/TestEm5/include/PhysListEmPenelope.hh index 14d7cc997e..66729913dd 100644 --- a/examples/extended/electromagnetic/TestEm5/include/PhysListEmPenelope.hh +++ b/examples/extended/electromagnetic/TestEm5/include/PhysListEmPenelope.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmPenelope.hh,v 1.3 2006/08/10 08:44:39 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm5/include/PhysListEmStandard.hh index d5bec21e2d..996b7cf9fb 100644 --- a/examples/extended/electromagnetic/TestEm5/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm5/include/PhysListEmStandard.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmStandard.hh,v 1.6 2006/08/10 08:44:39 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/PhysListEmStandardIG.hh b/examples/extended/electromagnetic/TestEm5/include/PhysListEmStandardIG.hh new file mode 100644 index 0000000000..1de883bf16 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/include/PhysListEmStandardIG.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * 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: PhysListEmStandardIG.hh,v 1.1 2007/11/13 14:41:28 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef PhysListEmStandardIG_h +#define PhysListEmStandardIG_h 1 + +#include "G4VPhysicsConstructor.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class PhysListEmStandardIG : public G4VPhysicsConstructor +{ +public: + PhysListEmStandardIG(const G4String& name = "standardIG"); + virtual ~PhysListEmStandardIG(); + +public: + // 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 + void ConstructProcess(); +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + + + + + + + + diff --git a/examples/extended/electromagnetic/TestEm5/include/PhysListEmStandardSS.hh b/examples/extended/electromagnetic/TestEm5/include/PhysListEmStandardSS.hh index 79f3700f8b..8e60e56779 100644 --- a/examples/extended/electromagnetic/TestEm5/include/PhysListEmStandardSS.hh +++ b/examples/extended/electromagnetic/TestEm5/include/PhysListEmStandardSS.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmStandardSS.hh,v 1.1 2006/08/10 08:45:14 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm5/include/PhysicsList.hh index 223c37bba1..cff2ce726f 100644 --- a/examples/extended/electromagnetic/TestEm5/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm5/include/PhysicsList.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsList.hh,v 1.6 2007/03/20 18:50:53 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/PhysicsListMessenger.hh index ee1d109f90..a2f4b9ccb1 100644 --- a/examples/extended/electromagnetic/TestEm5/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.7 2006/06/29 16:55:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm5/include/PrimaryGeneratorAction.hh index 7fba79e530..db3688f3ea 100644 --- a/examples/extended/electromagnetic/TestEm5/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.4 2006/06/29 16:55:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/PrimaryGeneratorMessenger.hh index 1d76e1162d..f4f004e43f 100644 --- a/examples/extended/electromagnetic/TestEm5/include/PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/PrimaryGeneratorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.hh,v 1.4 2006/06/29 16:55:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/RunAction.hh b/examples/extended/electromagnetic/TestEm5/include/RunAction.hh index 2d6f985229..efe6e85b19 100644 --- a/examples/extended/electromagnetic/TestEm5/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/RunAction.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: RunAction.hh,v 1.7 2006/06/29 16:55:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: RunAction.hh,v 1.8 2007/11/21 17:41:19 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -93,6 +93,9 @@ class RunAction : public G4UserRunAction else if (flag == 2) {Reflect[0]++; Reflect[1]++; }}; G4double ComputeMscHighland(); + + void AddEnergyLeak (G4double eleak, G4int index) + { EnergyLeak[index] += eleak; EnergyLeak2[index] += eleak*eleak;}; private: G4double EnergyDeposit, EnergyDeposit2; @@ -106,6 +109,8 @@ class RunAction : public G4UserRunAction G4int nbGamma, nbElect, nbPosit; G4int Transmit[2], Reflect[2]; G4int MscEntryCentral; + + G4double EnergyLeak[2], EnergyLeak2[2]; DetectorConstruction* detector; PrimaryGeneratorAction* primary; diff --git a/examples/extended/electromagnetic/TestEm5/include/StackingAction.hh b/examples/extended/electromagnetic/TestEm5/include/StackingAction.hh index 25188469ae..f23557e6cb 100644 --- a/examples/extended/electromagnetic/TestEm5/include/StackingAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/StackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingAction.hh,v 1.4 2006/09/25 17:06:29 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/StackingMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/StackingMessenger.hh index 79d453bf67..406c756e37 100644 --- a/examples/extended/electromagnetic/TestEm5/include/StackingMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/StackingMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingMessenger.hh,v 1.6 2006/09/25 17:06:29 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/StepMax.hh b/examples/extended/electromagnetic/TestEm5/include/StepMax.hh index 4dd953e85e..5c446f2572 100644 --- a/examples/extended/electromagnetic/TestEm5/include/StepMax.hh +++ b/examples/extended/electromagnetic/TestEm5/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.3 2006/06/29 16:55:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/StepMaxMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/StepMaxMessenger.hh index 28431b6169..186946be96 100644 --- a/examples/extended/electromagnetic/TestEm5/include/StepMaxMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.3 2006/06/29 16:55:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm5/include/SteppingAction.hh index 6eb6188cef..4900baf250 100644 --- a/examples/extended/electromagnetic/TestEm5/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.3 2006/06/29 16:55:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm5/include/SteppingVerbose.hh index 011e36e223..845819ab16 100644 --- a/examples/extended/electromagnetic/TestEm5/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm5/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.3 2006/06/29 16:55:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/electromagnetic/TestEm5/include/TrackingAction.hh b/examples/extended/electromagnetic/TestEm5/include/TrackingAction.hh index d3cf4872f0..10b8a92417 100644 --- a/examples/extended/electromagnetic/TestEm5/include/TrackingAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/TrackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TrackingAction.hh,v 1.4 2006/06/29 16:55:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/kulchi.mac b/examples/extended/electromagnetic/TestEm5/kulchi.mac index f8236c7abd..01e3efdcac 100644 --- a/examples/extended/electromagnetic/TestEm5/kulchi.mac +++ b/examples/extended/electromagnetic/TestEm5/kulchi.mac @@ -1,4 +1,4 @@ -# $Id: kulchi.mac,v 1.3 2006/03/20 11:41:46 maire Exp $ +# $Id: kulchi.mac,v 1.4 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -25,7 +25,7 @@ # /testem/histo/setFileName kulchi /testem/histo/setFileType hbook -/testem/histo/setHisto 5 100 0. 25. deg #space angle -/testem/histo/setHisto 6 100 -25. +25. deg #projected angle +/testem/histo/setHisto 12 100 0. 25. deg #space angle +/testem/histo/setHisto 13 100 -25. +25. deg #projected angle # /run/beamOn 100000 diff --git a/examples/extended/electromagnetic/TestEm5/mumsc.mac b/examples/extended/electromagnetic/TestEm5/mumsc.mac index bf597ea376..3aabcf5f9e 100644 --- a/examples/extended/electromagnetic/TestEm5/mumsc.mac +++ b/examples/extended/electromagnetic/TestEm5/mumsc.mac @@ -1,4 +1,4 @@ -# $Id: mumsc.mac,v 1.7 2007/04/13 16:36:24 maire Exp $ +# $Id: mumsc.mac,v 1.8 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -23,8 +23,8 @@ # /testem/histo/setFileName mumsc /testem/histo/setFileType hbook -/testem/histo/setHisto 6 200 -20.0 +20.0 mrad #projected angle -/testem/histo/setHisto 7 200 -10.0 +10.0 mm #projected deviation +/testem/histo/setHisto 13 200 -20.0 +20.0 mrad #projected angle +/testem/histo/setHisto 14 200 -10.0 +10.0 mm #projected deviation # /testem/stack/killSecondaries # diff --git a/examples/extended/electromagnetic/TestEm5/neutron.mac b/examples/extended/electromagnetic/TestEm5/neutron.mac index 8f904d7449..4f1fba31ba 100644 --- a/examples/extended/electromagnetic/TestEm5/neutron.mac +++ b/examples/extended/electromagnetic/TestEm5/neutron.mac @@ -1,4 +1,4 @@ -# $Id: neutron.mac,v 1.3 2007/06/22 10:48:01 maire Exp $ +# $Id: neutron.mac,v 1.4 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -24,7 +24,7 @@ /gun/particle neutron /gun/energy 3 MeV # -/testem/histo/setFileName h2liq.paw +/testem/histo/setFileName h2liq /testem/histo/setHisto 1 200 0.01 4000. keV #energy deposit # ##/testem/event/printModulo 10000 diff --git a/examples/extended/electromagnetic/TestEm5/shen1.mac b/examples/extended/electromagnetic/TestEm5/shen1.mac index 377794f740..139a86fe83 100644 --- a/examples/extended/electromagnetic/TestEm5/shen1.mac +++ b/examples/extended/electromagnetic/TestEm5/shen1.mac @@ -1,4 +1,4 @@ -# $Id: shen1.mac,v 1.3 2006/03/20 11:41:46 maire Exp $ +# $Id: shen1.mac,v 1.4 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -25,7 +25,7 @@ # /testem/histo/setFileName shen1 /testem/histo/setFileType hbook -/testem/histo/setHisto 5 100 0.00 0.01 deg #space angle +/testem/histo/setHisto 12 100 0.00 0.01 deg #space angle # /testem/stack/killSecondaries # diff --git a/examples/extended/electromagnetic/TestEm5/shen2.mac b/examples/extended/electromagnetic/TestEm5/shen2.mac index 4e2216ac45..cd791804b7 100644 --- a/examples/extended/electromagnetic/TestEm5/shen2.mac +++ b/examples/extended/electromagnetic/TestEm5/shen2.mac @@ -1,4 +1,4 @@ -# $Id: shen2.mac,v 1.2 2005/03/02 17:17:57 maire Exp $ +# $Id: shen2.mac,v 1.3 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -25,8 +25,8 @@ # /testem/histo/setFileName shen2 /testem/histo/setFileType hbook -/testem/histo/setHisto 5 100 0.00 0.004 deg #space angle -/testem/histo/setHisto 6 100 -0.004 +0.004 deg #projected angle +/testem/histo/setHisto 12 100 0.00 0.004 deg #space angle +/testem/histo/setHisto 13 100 -0.004 +0.004 deg #projected angle # /testem/stack/killSecondaries # diff --git a/examples/extended/electromagnetic/TestEm5/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm5/src/DetectorConstruction.cc index 4a1f8ae956..2ab30d7ce6 100644 --- a/examples/extended/electromagnetic/TestEm5/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.cc,v 1.13 2006/09/25 17:06:29 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/DetectorMessenger.cc index 318bd545e5..8d1bb0f442 100644 --- a/examples/extended/electromagnetic/TestEm5/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.4 2006/06/29 16:55:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/EventAction.cc b/examples/extended/electromagnetic/TestEm5/src/EventAction.cc index b3aacb20af..56f7b630b4 100644 --- a/examples/extended/electromagnetic/TestEm5/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.6 2006/06/29 16:55:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/EventMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/EventMessenger.cc index e6fdb422aa..f10c457ea6 100644 --- a/examples/extended/electromagnetic/TestEm5/src/EventMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/EventMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventMessenger.cc,v 1.5 2006/06/29 16:55:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/HistoManager.cc b/examples/extended/electromagnetic/TestEm5/src/HistoManager.cc index b5398090e1..55a9ee2287 100644 --- a/examples/extended/electromagnetic/TestEm5/src/HistoManager.cc +++ b/examples/extended/electromagnetic/TestEm5/src/HistoManager.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.cc,v 1.16 2006/06/29 16:55:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.cc,v 1.21 2007/11/28 12:37:56 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -61,6 +61,7 @@ HistoManager::HistoManager() exist[k] = false; Unit[k] = 1.0; Width[k] = 1.0; + ascii[k] = false; } histoMessenger = new HistoMessenger(this); @@ -127,6 +128,7 @@ void HistoManager::save() { #ifdef G4ANALYSIS_USE if (factoryOn) { + saveAscii(); // Write ascii file, if any tree->commit(); // Writing the histograms to the file tree->close(); // and closing the tree (and the file) G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl; @@ -155,7 +157,7 @@ void HistoManager::FillHisto(G4int ih, G4double e, G4double weight) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void HistoManager::SetHisto(G4int ih, - G4int nbins, G4double valmin, G4double valmax, const G4String& unit) + G4int nbins, G4double valmin, G4double valmax, const G4String& unit) { if (ih > MaxHisto) { G4cout << "---> warning from HistoManager::SetHisto() : histo " << ih @@ -164,25 +166,42 @@ void HistoManager::SetHisto(G4int ih, } const G4String id[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", - "10","11","12","13","14","15","16"}; + "10","11","12","13","14","15","16","17","18","19", + "20","21","22","23","24","25","26","27","28","29", + "30","31","32","33","34","35","36","37","38","39", + "40","41","42","43","44","45","46","47","48","49" + }; + const G4String title[] = { "dummy", //0 "energy deposit in absorber", //1 "energy of charged secondaries at creation", //2 "energy of gammas at creation (std::log10(ekin/MeV))",//3 - "(transmit, charged) : kinetic energy at exit", //4 - "(transmit, charged) : space angle at exit", //5 - "(transmit, charged) : projected angle at exit", //6 - "(transmit, charged) : projected position at exit", //7 - "(transmit, neutral) : kinetic energy at exit", //8 - "(transmit, neutral) : space angle at exit", //9 - "(transmit, neutral) : projected angle at exit", //10 - "(reflect , charged) : kinetic energy at exit", //11 - "(reflect , charged) : space angle at exit", //12 - "(reflect , charged) : projected angle at exit", //13 - "(reflect , neutral) : kinetic energy at exit", //14 - "(reflect , neutral) : space angle at exit", //15 - "(reflect , neutral) : projected angle at exit" //16 + "x_vertex of charged secondaries (all)", //4 + "x_vertex of charged secondaries (not absorbed)", //5 + "dummy","dummy","dummy","dummy", //6-9 + "(transmit, charged) : kinetic energy at exit", //10 + "(transmit, charged) : ener fluence: dE(MeV)/dOmega", //11 + "(transmit, charged) : space angle: dN/dOmega", //12 + "(transmit, charged) : projected angle at exit", //13 + "(transmit, charged) : projected position at exit", //14 + "(transmit, charged) : radius at exit", //15 + "dummy","dummy","dummy","dummy", //16-19 + "(transmit, neutral) : kinetic energy at exit", //20 + "(transmit, neutral) : ener fluence: dE(MeV)/dOmega", //21 + "(transmit, neutral) : space angle: dN/dOmega", //22 + "(transmit, neutral) : projected angle at exit", //23 + "dummy","dummy","dummy","dummy","dummy","dummy", //24-29 + "(reflect , charged) : kinetic energy at exit", //30 + "(reflect , charged) : ener fluence: dE(MeV)/dOmega", //31 + "(reflect , charged) : space angle: dN/dOmega", //32 + "(reflect , charged) : projected angle at exit", //33 + "dummy","dummy","dummy","dummy","dummy","dummy", //34-39 + "(reflect , neutral) : kinetic energy at exit", //40 + "(reflect , neutral) : ener fluence: dE(MeV)/dOmega" //41 + "(reflect , neutral) : space angle: dN/dOmega", //42 + "(reflect , neutral) : projected angle at exit", //43 + "dummy","dummy","dummy","dummy","dummy","dummy" //44-49 }; G4String titl = title[ih]; @@ -225,3 +244,43 @@ void HistoManager::RemoveHisto(G4int ih) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void HistoManager::PrintHisto(G4int ih) +{ + if (ih < MaxHisto) ascii[ih] = true; + else + G4cout << "---> warning from HistoManager::PrintHisto() : histo " << ih + << "does not exist" << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include + +void HistoManager::saveAscii() +{ +#ifdef G4ANALYSIS_USE + + G4String name = fileName[0] + ".ascii"; + std::ofstream File(name, std::ios::out); + File.setf( std::ios::scientific, std::ios::floatfield ); + + //write selected histograms + for (G4int ih=0; ihbinMean(iBin) << "\t" + << histo[ih]->binHeight(iBin) + << G4endl; + } + } + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + diff --git a/examples/extended/electromagnetic/TestEm5/src/HistoMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/HistoMessenger.cc index 2897871f97..cf86a6ad4f 100644 --- a/examples/extended/electromagnetic/TestEm5/src/HistoMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/HistoMessenger.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.cc,v 1.7 2006/06/29 16:55:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.cc,v 1.8 2007/11/12 17:48:16 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -85,6 +85,11 @@ HistoMessenger::HistoMessenger(HistoManager* manager) unit->SetDefaultValue("none"); histoCmd->SetParameter(unit); + prhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/printHisto",this); + prhistoCmd->SetGuidance("print histo #id on ascii file"); + prhistoCmd->SetParameterName("id",false); + prhistoCmd->SetRange("id>0"); + rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this); rmhistoCmd->SetGuidance("desactivate histo #id"); rmhistoCmd->SetParameterName("id",false); @@ -96,6 +101,7 @@ HistoMessenger::HistoMessenger(HistoManager* manager) HistoMessenger::~HistoMessenger() { delete rmhistoCmd; + delete prhistoCmd; delete histoCmd; delete optionCmd; delete typeCmd; @@ -126,6 +132,9 @@ void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues) if (unit != "none") vUnit = G4UIcommand::ValueOf(unit); histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit); } + + if (command == prhistoCmd) + histoManager->PrintHisto(prhistoCmd->GetNewIntValue(newValues)); if (command == rmhistoCmd) histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues)); diff --git a/examples/extended/electromagnetic/TestEm5/src/PhysListEmLivermore.cc b/examples/extended/electromagnetic/TestEm5/src/PhysListEmLivermore.cc index fe006442a8..f094ff1503 100644 --- a/examples/extended/electromagnetic/TestEm5/src/PhysListEmLivermore.cc +++ b/examples/extended/electromagnetic/TestEm5/src/PhysListEmLivermore.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.cc,v 1.2 2006/06/29 16:55:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/PhysListEmPenelope.cc b/examples/extended/electromagnetic/TestEm5/src/PhysListEmPenelope.cc index b2562ebba7..53474e42cd 100644 --- a/examples/extended/electromagnetic/TestEm5/src/PhysListEmPenelope.cc +++ b/examples/extended/electromagnetic/TestEm5/src/PhysListEmPenelope.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.cc,v 1.3 2006/06/29 16:55:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm5/src/PhysListEmStandard.cc index b033874d56..01a6f50676 100644 --- a/examples/extended/electromagnetic/TestEm5/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm5/src/PhysListEmStandard.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysListEmStandard.cc,v 1.12 2007/06/22 10:48:01 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysListEmStandard.cc,v 1.14 2007/11/21 17:41:19 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -124,7 +124,14 @@ void PhysListEmStandard::ConstructProcess() //coulomb scattering // emOptions.SetMscStepLimitation(fUseDistanceToBoundary); - emOptions.SetSkin(2.); + emOptions.SetSkin(4.); + + //physics tables + // + emOptions.SetMinEnergy(100*eV); + emOptions.SetMaxEnergy(100*TeV); + emOptions.SetDEDXBinning(1200); + emOptions.SetLambdaBinning(1200); //energy loss // diff --git a/examples/extended/electromagnetic/TestEm5/src/PhysListEmStandardIG.cc b/examples/extended/electromagnetic/TestEm5/src/PhysListEmStandardIG.cc new file mode 100644 index 0000000000..b9ce969901 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm5/src/PhysListEmStandardIG.cc @@ -0,0 +1,154 @@ +// +// ******************************************************************** +// * 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: PhysListEmStandardIG.cc,v 1.1 2007/11/13 14:41:28 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "PhysListEmStandardIG.hh" +#include "G4ParticleDefinition.hh" +#include "G4ProcessManager.hh" + +#include "G4ComptonScattering.hh" +#include "G4GammaConversion.hh" +#include "G4PhotoElectricEffect.hh" + +#include "G4MultipleScattering.hh" +#include "G4hMultipleScattering.hh" +#include "G4MuMultipleScattering.hh" + +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +#include "G4MuIonisation.hh" +#include "G4MuBremsstrahlung.hh" +#include "G4MuPairProduction.hh" + +#include "G4hIonisation.hh" +#include "G4ionGasIonisation.hh" +#include "G4CoulombScattering.hh" + +#include "G4EmProcessOptions.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PhysListEmStandardIG::PhysListEmStandardIG(const G4String& name) + : G4VPhysicsConstructor(name) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PhysListEmStandardIG::~PhysListEmStandardIG() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void PhysListEmStandardIG::ConstructProcess() +{ + G4double thetamin = 0.05; + + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + 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 G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4eIonisation, -1, 2,2); + pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + + } else if (particleName == "e+") { + //positron + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4eIonisation, -1, 2,2); + pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); + pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + + } else if (particleName == "mu+" || + particleName == "mu-" ) { + //muon + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4MuIonisation, -1, 2,2); + pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3); + pmanager->AddProcess(new G4MuPairProduction, -1, 4,4); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + + } else if (particleName == "alpha" || particleName == "He3") { + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4ionGasIonisation, -1, 2,2); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + // pmanager->AddDiscreteProcess(nucr); + + } else if (particleName == "GenericIon" ) { + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4ionGasIonisation, -1, 2,2); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + cs->SetBuildTableFlag(false); + pmanager->AddDiscreteProcess(cs); + + } else if ((!particle->IsShortLived()) && + (particle->GetPDGCharge() != 0.0) && + (particle->GetParticleName() != "chargedgeantino")) { + //all others charged particles except geantino + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4hIonisation, -1, 2,2); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + } + } + G4EmProcessOptions opt; + opt.SetSubCutoff(true); + opt.SetMinEnergy(0.1*keV); + opt.SetMaxEnergy(100.*GeV); + opt.SetDEDXBinning(360); + opt.SetLambdaBinning(360); + opt.SetLinearLossLimit(1.e-6); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/electromagnetic/TestEm5/src/PhysListEmStandardSS.cc b/examples/extended/electromagnetic/TestEm5/src/PhysListEmStandardSS.cc index 70ec18c3ba..88acc6085d 100644 --- a/examples/extended/electromagnetic/TestEm5/src/PhysListEmStandardSS.cc +++ b/examples/extended/electromagnetic/TestEm5/src/PhysListEmStandardSS.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysListEmStandardSS.cc,v 1.2 2007/05/16 12:02:54 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysListEmStandardSS.cc,v 1.3 2007/07/31 16:51:29 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -82,42 +82,42 @@ void PhysListEmStandardSS::ConstructProcess() } else if (particleName == "e-") { //electron - pmanager->AddDiscreteProcess(new G4CoulombScattering); - pmanager->AddProcess(new G4eIonisation, -1, 2,2); - pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); + pmanager->AddProcess(new G4eIonisation, -1, 1,1); + pmanager->AddProcess(new G4eBremsstrahlung, -1, 2,2); + pmanager->AddDiscreteProcess(new G4CoulombScattering); } else if (particleName == "e+") { //positron - pmanager->AddDiscreteProcess(new G4CoulombScattering); - pmanager->AddProcess(new G4eIonisation, -1, 2,2); - pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); - pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4); + pmanager->AddProcess(new G4eIonisation, -1, 1,1); + pmanager->AddProcess(new G4eBremsstrahlung, -1, 2,2); + pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,3); + pmanager->AddDiscreteProcess(new G4CoulombScattering); } else if (particleName == "mu+" || particleName == "mu-" ) { //muon - pmanager->AddDiscreteProcess(new G4CoulombScattering); - pmanager->AddProcess(new G4MuIonisation, -1, 2,2); - pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3); - pmanager->AddProcess(new G4MuPairProduction, -1, 4,4); + pmanager->AddProcess(new G4MuIonisation, -1, 1,1); + pmanager->AddProcess(new G4MuBremsstrahlung, -1, 2,2); + pmanager->AddProcess(new G4MuPairProduction, -1, 3,3); + pmanager->AddDiscreteProcess(new G4CoulombScattering); } else if (particleName == "alpha" || particleName == "He3") { - pmanager->AddDiscreteProcess(new G4CoulombScattering); - pmanager->AddProcess(new G4ionIonisation, -1, 2,2); + pmanager->AddProcess(new G4ionIonisation, -1, 1,1); + pmanager->AddDiscreteProcess(new G4CoulombScattering); } else if (particleName == "GenericIon" ) { - + pmanager->AddProcess(new G4ionIonisation, -1, 1,1); G4CoulombScattering* cs = new G4CoulombScattering(); cs->SetBuildTableFlag(false); pmanager->AddDiscreteProcess(cs); - 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->AddDiscreteProcess(new G4CoulombScattering); - pmanager->AddProcess(new G4hIonisation, -1,2,2); + pmanager->AddProcess(new G4hIonisation, -1,1,1); + pmanager->AddDiscreteProcess(new G4CoulombScattering); } } } diff --git a/examples/extended/electromagnetic/TestEm5/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm5/src/PhysicsList.cc index 69b77bcfa7..56726f73ef 100644 --- a/examples/extended/electromagnetic/TestEm5/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm5/src/PhysicsList.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysicsList.cc,v 1.19 2007/05/16 12:02:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.cc,v 1.21 2007/11/19 14:57:07 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -34,6 +34,7 @@ #include "PhysListEmStandard.hh" #include "PhysListEmStandardSS.hh" +#include "PhysListEmStandardIG.hh" #include "PhysListEmLivermore.hh" #include "PhysListEmPenelope.hh" @@ -42,6 +43,7 @@ #include "G4EmStandardPhysics_option2.hh" #include "G4HadronElasticPhysics.hh" +#include "G4HadronDElasticPhysics.hh" #include "G4HadronHElasticPhysics.hh" #include "G4HadronQElasticPhysics.hh" #include "G4HadronInelasticQBBC.hh" @@ -244,6 +246,12 @@ void PhysicsList::AddPhysicsList(const G4String& name) delete emPhysicsList; emPhysicsList = new PhysListEmStandardSS(name); + } else if (name == "standardIG") { + + emName = name; + delete emPhysicsList; + emPhysicsList = new PhysListEmStandardIG(name); + } else if (name == "livermore") { emName = name; @@ -257,15 +265,19 @@ void PhysicsList::AddPhysicsList(const G4String& name) emPhysicsList = new PhysListEmPenelope(name); } else if (name == "elastic" && !helIsRegisted) { - hadronPhys.push_back( new G4HadronElasticPhysics(name)); + hadronPhys.push_back( new G4HadronElasticPhysics()); + helIsRegisted = true; + + } else if (name == "DElastic" && !helIsRegisted) { + hadronPhys.push_back( new G4HadronDElasticPhysics()); helIsRegisted = true; } else if (name == "HElastic" && !helIsRegisted) { - hadronPhys.push_back( new G4HadronHElasticPhysics(name)); + hadronPhys.push_back( new G4HadronHElasticPhysics()); helIsRegisted = true; } else if (name == "QElastic" && !helIsRegisted) { - hadronPhys.push_back( new G4HadronQElasticPhysics(name)); + hadronPhys.push_back( new G4HadronQElasticPhysics()); helIsRegisted = true; } else if (name == "binary" && !bicIsRegisted) { diff --git a/examples/extended/electromagnetic/TestEm5/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/PhysicsListMessenger.cc index 4d43ea617a..e667757f50 100644 --- a/examples/extended/electromagnetic/TestEm5/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.6 2006/06/29 16:56:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm5/src/PrimaryGeneratorAction.cc index f493490c44..874b7ed327 100644 --- a/examples/extended/electromagnetic/TestEm5/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.4 2006/06/29 16:56:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/PrimaryGeneratorMessenger.cc index 9eb4a31324..6f85034f72 100644 --- a/examples/extended/electromagnetic/TestEm5/src/PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/PrimaryGeneratorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.cc,v 1.4 2006/06/29 16:56:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/RunAction.cc b/examples/extended/electromagnetic/TestEm5/src/RunAction.cc index 2c48f499bf..d7eb7ca611 100644 --- a/examples/extended/electromagnetic/TestEm5/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/RunAction.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: RunAction.cc,v 1.23 2006/06/29 16:56:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: RunAction.cc,v 1.25 2007/11/21 17:41:19 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -74,6 +74,8 @@ void RunAction::BeginOfRunAction(const G4Run* aRun) Transmit[0] = Transmit[1] = Reflect[0] = Reflect[1] = 0; MscEntryCentral = 0; + + EnergyLeak[0] = EnergyLeak[1] = EnergyLeak2[0] = EnergyLeak2[1] = 0.; histoManager->book(); @@ -90,6 +92,9 @@ void RunAction::EndOfRunAction(const G4Run* aRun) // G4int TotNbofEvents = aRun->GetNumberOfEvent(); if (TotNbofEvents == 0) return; + + G4double EnergyBalance = EnergyDeposit + EnergyLeak[0] + EnergyLeak[1]; + EnergyBalance /= TotNbofEvents; EnergyDeposit /= TotNbofEvents; EnergyDeposit2 /= TotNbofEvents; G4double rmsEdep = EnergyDeposit2 - EnergyDeposit*EnergyDeposit; @@ -133,10 +138,20 @@ void RunAction::EndOfRunAction(const G4Run* aRun) MscProjecTheta /= MscEntryCentral; MscProjecTheta2 /= MscEntryCentral; rmsMsc = MscProjecTheta2 - MscProjecTheta*MscProjecTheta; if (rmsMsc > 0.) rmsMsc = std::sqrt(rmsMsc); - tailMsc = 100.- (100.*MscEntryCentral)/(2*Transmit[1]); - + tailMsc = 100.- (100.*MscEntryCentral)/(2*Transmit[1]); } + EnergyLeak[0] /= TotNbofEvents; EnergyLeak2[0] /= TotNbofEvents; + G4double rmsEl0 = EnergyLeak2[0] - EnergyLeak[0]*EnergyLeak[0]; + if (rmsEl0>0.) rmsEl0 = std::sqrt(rmsEl0/TotNbofEvents); + else rmsEl0 = 0.; + + EnergyLeak[1] /= TotNbofEvents; EnergyLeak2[1] /= TotNbofEvents; + G4double rmsEl1 = EnergyLeak2[1] - EnergyLeak[1]*EnergyLeak[1]; + if (rmsEl1>0.) rmsEl1 = std::sqrt(rmsEl1/TotNbofEvents); + else rmsEl1 = 0.; + + //Stopping Power from input Table. // G4Material* material = detector->GetAbsorberMaterial(); @@ -173,12 +188,13 @@ void RunAction::EndOfRunAction(const G4Run* aRun) << G4BestUnit(density,"Volumic Mass") << ")" << G4endl; G4cout.precision(4); + G4cout << "\n Total energy deposit in absorber per event = " << G4BestUnit(EnergyDeposit,"Energy") << " +- " << G4BestUnit(rmsEdep, "Energy") << G4endl; - G4cout << " -----> Mean dE/dx = " << meandEdx/(MeV/cm) << " MeV/cm" + G4cout << "\n -----> Mean dE/dx = " << meandEdx/(MeV/cm) << " MeV/cm" << "\t(" << stopPower/(MeV*cm2/g) << " MeV*cm2/g)" << G4endl; @@ -190,7 +206,19 @@ void RunAction::EndOfRunAction(const G4Run* aRun) G4cout << " full dEdx = " << dEdxFull/(MeV/cm) << " MeV/cm" << "\t(" << stopFull/(MeV*cm2/g) << " MeV*cm2/g)" << G4endl; - + + G4cout << "\n Leakage : primary = " + << G4BestUnit(EnergyLeak[0],"Energy") << " +- " + << G4BestUnit(rmsEl0, "Energy") + << " secondaries = " + << G4BestUnit(EnergyLeak[1],"Energy") << " +- " + << G4BestUnit(rmsEl1, "Energy") + << G4endl; + + G4cout << " Energy balance : edep + eleak = " + << G4BestUnit(EnergyBalance,"Energy") + << G4endl; + G4cout << "\n Total track length (charged) in absorber per event = " << G4BestUnit(TrakLenCharged,"Length") << " +- " << G4BestUnit(rmsTLCh, "Length") << G4endl; @@ -223,7 +251,7 @@ void RunAction::EndOfRunAction(const G4Run* aRun) // compute width of the Gaussian central part of the MultipleScattering // - if (histoManager->HistoExist(6)) { + if (histoManager->HistoExist(13)) { G4cout << "\n MultipleScattering:" << "\n rms proj angle of transmit primary particle = " << rmsMsc/mrad << " mrad (central part only)" << G4endl; @@ -234,7 +262,7 @@ void RunAction::EndOfRunAction(const G4Run* aRun) G4cout << " central part defined as +- " << MscThetaCentral/mrad << " mrad; " << " Tail ratio = " << tailMsc << " %" << G4endl; - } + } G4cout.precision(prec); diff --git a/examples/extended/electromagnetic/TestEm5/src/StackingAction.cc b/examples/extended/electromagnetic/TestEm5/src/StackingAction.cc index 9e727443b0..a5c3ef2c1e 100644 --- a/examples/extended/electromagnetic/TestEm5/src/StackingAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/StackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingAction.cc,v 1.7 2006/09/25 17:06:29 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/StackingMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/StackingMessenger.cc index e74dc0b4d5..8e07a4ad0c 100644 --- a/examples/extended/electromagnetic/TestEm5/src/StackingMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/StackingMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingMessenger.cc,v 1.5 2006/09/25 17:06:29 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/StepMax.cc b/examples/extended/electromagnetic/TestEm5/src/StepMax.cc index 93e586505b..88bd5a7fc5 100644 --- a/examples/extended/electromagnetic/TestEm5/src/StepMax.cc +++ b/examples/extended/electromagnetic/TestEm5/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.2 2006/06/29 16:56:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/StepMaxMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/StepMaxMessenger.cc index 7e515ac842..bde1c12cab 100644 --- a/examples/extended/electromagnetic/TestEm5/src/StepMaxMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.3 2006/06/29 16:56:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm5/src/SteppingAction.cc index 237b2f0869..fddef91b0c 100644 --- a/examples/extended/electromagnetic/TestEm5/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.cc,v 1.7 2006/06/29 16:56:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm5/src/SteppingVerbose.cc index f338a91879..ece2e1209c 100644 --- a/examples/extended/electromagnetic/TestEm5/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm5/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.3 2006/06/29 16:56:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/TrackingAction.cc b/examples/extended/electromagnetic/TestEm5/src/TrackingAction.cc index 3c6597499c..30aaf4cc12 100644 --- a/examples/extended/electromagnetic/TestEm5/src/TrackingAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/TrackingAction.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: TrackingAction.cc,v 1.11 2006/06/29 16:56:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: TrackingAction.cc,v 1.16 2007/11/28 12:37:57 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -68,6 +68,7 @@ void TrackingAction::PostUserTrackingAction(const G4Track* aTrack) G4bool transmit = (position.x() >= xendAbs); G4bool reflect = (position.x() <= xstartAbs); + G4bool notabsor = (transmit || reflect); //transmitted + reflected particles counter // @@ -76,7 +77,7 @@ void TrackingAction::PostUserTrackingAction(const G4Track* aTrack) if (aTrack->GetTrackID() == 1) flag = 2; if (transmit) eventaction->SetTransmitFlag(flag); if (reflect) eventaction->SetReflectFlag(flag); - + // //histograms // @@ -86,35 +87,62 @@ void TrackingAction::PostUserTrackingAction(const G4Track* aTrack) //energy spectrum at exit // - if (transmit && charged) id = 4; - else if (transmit && neutral) id = 8; - else if (reflect && charged) id = 11; - else if (reflect && neutral) id = 14; - + if (transmit && charged) id = 10; + else if (transmit && neutral) id = 20; + else if (reflect && charged) id = 30; + else if (reflect && neutral) id = 40; + histoManager->FillHisto(id, aTrack->GetKineticEnergy()); - - //space angle distribution at exit + + //energy leakage // - if (transmit && charged) id = 5; - else if (transmit && neutral) id = 9; - else if (reflect && charged) id = 12; - else if (reflect && neutral) id = 15; + if (notabsor) { + G4int trackID = aTrack->GetTrackID(); + G4int index = 0; if (trackID > 1) index = 1; //primary=0, secondaries=1 + G4double eleak = aTrack->GetKineticEnergy(); + if ((aTrack->GetDefinition() == G4Positron::Positron()) && (trackID > 1)) + eleak += 2*electron_mass_c2; + runaction->AddEnergyLeak(eleak,index); + } - G4ThreeVector direction = aTrack->GetMomentumDirection(); + //space angle distribution at exit : dN/dOmega + // + if (transmit && charged) id = 12; + else if (transmit && neutral) id = 22; + else if (reflect && charged) id = 32; + else if (reflect && neutral) id = 42; + + G4ThreeVector direction = aTrack->GetMomentumDirection(); if (histoManager->HistoExist(id)) { G4double theta = std::acos(direction.x()); G4double dteta = histoManager->GetBinWidth(id); - G4double weight = 1./(twopi*std::sin(theta)*dteta); - G4double unit = histoManager->GetHistoUnit(id); - histoManager->FillHisto(id,theta,weight*unit*unit); + G4double unit = histoManager->GetHistoUnit(id); + G4double weight = (unit*unit)/(twopi*std::sin(theta)*dteta); + histoManager->FillHisto(id,theta,weight); } + + //energy fluence at exit : dE(MeV)/dOmega + // + if (transmit && charged) id = 11; + else if (transmit && neutral) id = 21; + else if (reflect && charged) id = 31; + else if (reflect && neutral) id = 41; + if (histoManager->HistoExist(id)) { + G4double theta = std::acos(direction.x()); + G4double dteta = histoManager->GetBinWidth(id); + G4double unit = histoManager->GetHistoUnit(id); + G4double weight = (unit*unit)/(twopi*std::sin(theta)*dteta); + weight *= (aTrack->GetKineticEnergy()/MeV); + histoManager->FillHisto(id,theta,weight); + } + //projected angles distribution at exit // - if (transmit && charged) id = 6; - else if (transmit && neutral) id = 10; - else if (reflect && charged) id = 13; - else if (reflect && neutral) id = 16; + if (transmit && charged) id = 13; + else if (transmit && neutral) id = 23; + else if (reflect && charged) id = 33; + else if (reflect && neutral) id = 43; if(id>0) { G4double tet = std::atan(direction.y()/std::fabs(direction.x())); @@ -126,11 +154,24 @@ void TrackingAction::PostUserTrackingAction(const G4Track* aTrack) if (transmit && (flag == 2)) runaction->AddMscProjTheta(tet); } - //projected position at exit + //projected position and radius at exit // - if (transmit && charged) { - histoManager->FillHisto(7, position.y()); - histoManager->FillHisto(7, position.z()); + if (transmit && charged) id = 14; + + if (id>0) { + G4double y = position.y(), z = position.z(); + G4double r = std::sqrt(y*y + z*z); + histoManager->FillHisto(id, y); + histoManager->FillHisto(id, z); + histoManager->FillHisto(id+1, r); + } + + //x-vertex of charged secondaries + // + if ((aTrack->GetParentID() == 1) && charged) { + G4double xVertex = (aTrack->GetVertexPosition()).x(); + histoManager->FillHisto(4, xVertex); + if (notabsor) histoManager->FillHisto(5, xVertex); } } diff --git a/examples/extended/electromagnetic/TestEm5/tavora.mac b/examples/extended/electromagnetic/TestEm5/tavora.mac index c38fda8a8e..82a024db33 100644 --- a/examples/extended/electromagnetic/TestEm5/tavora.mac +++ b/examples/extended/electromagnetic/TestEm5/tavora.mac @@ -1,4 +1,4 @@ -# $Id: tavora.mac,v 1.1 2006/05/30 12:28:57 maire Exp $ +# $Id: tavora.mac,v 1.2 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -21,7 +21,7 @@ # /testem/histo/setFileName tavora /testem/histo/setFileType hbook -/testem/histo/setHisto 11 40 0.0 40 keV #energy reflected_charged +/testem/histo/setHisto 30 40 0.0 40 keV #energy reflected_charged # /testem/stepMax 50 nm # diff --git a/examples/extended/electromagnetic/TestEm5/tramu.mac b/examples/extended/electromagnetic/TestEm5/tramu.mac index a0e0b24501..1dabb05fd6 100644 --- a/examples/extended/electromagnetic/TestEm5/tramu.mac +++ b/examples/extended/electromagnetic/TestEm5/tramu.mac @@ -1,4 +1,4 @@ -# $Id: tramu.mac,v 1.6 2006/05/19 14:35:29 maire Exp $ +# $Id: tramu.mac,v 1.7 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -25,7 +25,7 @@ # /testem/histo/setFileName tramu /testem/histo/setFileType hbook -/testem/histo/setHisto 4 50 950 1000 GeV #energy at exit +/testem/histo/setHisto 10 50 950 1000 GeV #energy at exit # /testem/stack/killSecondaries # diff --git a/examples/extended/electromagnetic/TestEm5/vincour.mac b/examples/extended/electromagnetic/TestEm5/vincour.mac index b634ac29a0..dec60f6bb2 100644 --- a/examples/extended/electromagnetic/TestEm5/vincour.mac +++ b/examples/extended/electromagnetic/TestEm5/vincour.mac @@ -1,4 +1,4 @@ -# $Id: vincour.mac,v 1.3 2006/03/20 11:41:46 maire Exp $ +# $Id: vincour.mac,v 1.4 2007/07/31 16:51:29 maire Exp $ # # macro file for TestEm5.cc # @@ -25,7 +25,7 @@ # /testem/histo/setFileName vincour /testem/histo/setFileType hbook -/testem/histo/setHisto 5 60 0. 6. deg #space angle +/testem/histo/setHisto 12 60 0. 6. deg #space angle # /testem/stack/killSecondaries # diff --git a/examples/extended/electromagnetic/TestEm6/TestEm6.cc b/examples/extended/electromagnetic/TestEm6/TestEm6.cc index 6503238632..5f0d333b6e 100644 --- a/examples/extended/electromagnetic/TestEm6/TestEm6.cc +++ b/examples/extended/electromagnetic/TestEm6/TestEm6.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TestEm6.cc,v 1.15 2006/06/29 16:56:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/TestEm6.out b/examples/extended/electromagnetic/TestEm6/TestEm6.out index 1a11e87898..0abcc423bf 100644 --- a/examples/extended/electromagnetic/TestEm6/TestEm6.out +++ b/examples/extended/electromagnetic/TestEm6/TestEm6.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,13 +9,13 @@ ***** Table : Nb of materials = 3 ***** - Material: Beryllium density: 1.848 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 35.276 cm + Material: Beryllium density: 1.848 g/cm3 RadL: 35.276 cm Imean: 63.600 eV ---> Element: Beryllium ( ) Z = 4.0 N = 9.0 A = 9.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Carbon density: 2.265 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 18.851 cm + Material: Carbon density: 2.265 g/cm3 RadL: 18.851 cm Imean: 78.000 eV ---> Element: Carbon ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm + Material: Iron density: 7.870 g/cm3 RadL: 1.759 cm Imean: 286.000 eV ---> Element: Iron ( ) Z = 26.0 N = 55.9 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % @@ -97,7 +97,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -124,14 +124,14 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hhIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. Lambda tables from threshold to 100 TeV in 120 bins. Delta-ray will not be produced; Bether-Bloch model for E > 2 ICRU49 parametrisation scaled from protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -143,7 +143,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -160,7 +160,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -178,7 +178,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -191,7 +191,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 Region -- appears in world volume Root logical volume(s) : Iron @@ -247,8 +247,8 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 31.9 m 0 fm 0 fm 29.8 TeV 0 eV 0 fm 0 fm Iron initStep - 1 189 m 5.6 mm 6.43 mm 12.5 TeV 17.3 TeV 157 m 157 m Iron muIoni - 2 250 m 7.22 mm 1.17 cm 8.53 TeV 4.01 TeV 61.5 m 218 m OutOfWorld Transportation + 1 189 m 2.5 mm 8.16 mm 12.5 TeV 17.3 TeV 157 m 157 m Iron muIoni + 2 250 m -386 um 1.03 cm 8.56 TeV 3.98 TeV 61.5 m 218 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = mu+, Track ID = 2, Parent ID = 1 @@ -256,8 +256,24 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 31.9 m 0 fm 0 fm 70.2 TeV 0 eV 0 fm 0 fm Iron initStep - 1 216 m -3.73 mm -3.16 mm 23.7 TeV 46.5 TeV 184 m 184 m Iron muIoni - 2 250 m -3.02 mm -6.1 mm 18.8 TeV 4.93 TeV 34.1 m 218 m OutOfWorld Transportation + 1 216 m -3.4 mm 3.56 mm 20.5 TeV 49.7 TeV 184 m 184 m Iron muIoni + 2 250 m -5.31 mm 3.61 mm 16.9 TeV 3.56 TeV 34.1 m 218 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -250 m 0 fm 0 fm 100 TeV 0 eV 0 fm 0 fm Iron initStep + 1 250 m 0 fm 0 fm 100 TeV 0 eV 500 m 500 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -250 m 0 fm 0 fm 100 TeV 0 eV 0 fm 0 fm Iron initStep + 1 250 m 0 fm 0 fm 100 TeV 0 eV 500 m 500 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 1, Parent ID = 0 @@ -273,9 +289,9 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 -212 m 0 fm 0 fm 87.9 TeV 0 eV 0 fm 0 fm Iron initStep - 1 -24.1 m 4.09 mm 2.1 mm 35.8 TeV 52.1 TeV 188 m 188 m Iron muIoni - 2 138 m 908 um 3.04 cm 13.3 TeV 22.5 TeV 162 m 351 m Iron muIoni - 3 250 m -5.63 mm 5.25 cm 7.37 TeV 5.89 TeV 112 m 462 m OutOfWorld Transportation + 1 -24.1 m -635 um 4.63 mm 27.5 TeV 60.4 TeV 188 m 188 m Iron muIoni + 2 130 m -4.55 mm 1.3 cm 10.7 TeV 16.8 TeV 154 m 342 m Iron muIoni + 3 250 m -1.41 cm 2.02 cm 5.59 TeV 5.15 TeV 120 m 462 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = mu+, Track ID = 2, Parent ID = 1 @@ -283,70 +299,20 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 -212 m 0 fm 0 fm 12.1 TeV 0 eV 0 fm 0 fm Iron initStep - 1 -84.6 m 6.01 mm 1.21 cm 6.24 TeV 5.85 TeV 128 m 128 m Iron muIoni - 2 22.3 m 3.13 cm 2.05 cm 2.57 TeV 3.67 TeV 107 m 235 m Iron muIoni - 3 102 m 6.36 cm 7.74 mm 1.55 TeV 1.02 TeV 79.4 m 314 m Iron muIoni - 4 166 m 7.42 cm 11.7 cm 1.05 TeV 494 GeV 64.5 m 379 m Iron muIoni - 5 220 m 11.2 cm 19.9 cm 762 GeV 292 GeV 53.8 m 432 m Iron muIoni - 6 250 m 15.4 cm 28.2 cm 607 GeV 155 GeV 30 m 462 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -250 m 0 fm 0 fm 100 TeV 0 eV 0 fm 0 fm Iron initStep - 1 117 m 0 fm 0 fm 0 eV 0 eV 367 m 367 m Iron GammaToMuPair - -********************************************************************************************************* -* G4Track Information: Particle = mu-, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 117 m 0 fm 0 fm 37.5 TeV 0 eV 0 fm 0 fm Iron initStep - 1 250 m 18 um 138 um 16.8 TeV 20.6 TeV 133 m 133 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = mu+, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 117 m 0 fm 0 fm 62.5 TeV 0 eV 0 fm 0 fm Iron initStep - 1 250 m -11 um -83.2 um 30.7 TeV 31.8 TeV 133 m 133 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -250 m 0 fm 0 fm 100 TeV 0 eV 0 fm 0 fm Iron initStep - 1 65.7 m 0 fm 0 fm 0 eV 0 eV 316 m 316 m Iron GammaToMuPair - -********************************************************************************************************* -* G4Track Information: Particle = mu-, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 65.7 m 0 fm 0 fm 56.4 TeV 0 eV 0 fm 0 fm Iron initStep - 1 243 m -5.67 mm -1.8 mm 20.2 TeV 36.2 TeV 177 m 177 m Iron muIoni - 2 250 m -5.6 mm -3.26 mm 19.4 TeV 835 GeV 7.22 m 184 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = mu+, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 65.7 m 0 fm 0 fm 43.6 TeV 0 eV 0 fm 0 fm Iron initStep - 1 234 m -6.08 mm 2.36 mm 18.4 TeV 25.2 TeV 169 m 169 m Iron muIoni - 2 250 m -6.78 mm 2.66 mm 16.7 TeV 1.65 TeV 15.5 m 184 m OutOfWorld Transportation + 1 -84.6 m -9.2 mm -1.26 cm 6.19 TeV 5.9 TeV 128 m 128 m Iron muIoni + 2 22 m -6.06 mm -5.63 cm 2.9 TeV 3.29 TeV 107 m 234 m Iron muIoni + 3 105 m 5.8 cm -6.11 cm 1.74 TeV 1.16 TeV 82.9 m 317 m Iron muIoni + 4 173 m 7.77 cm -6.05 cm 1.17 TeV 568 GeV 67.7 m 385 m Iron muIoni + 5 229 m 8.94 cm -8.13 cm 782 GeV 385 GeV 56.5 m 442 m Iron muIoni + 6 250 m 8.14 cm -9.86 cm 679 GeV 103 GeV 20.8 m 462 m OutOfWorld Transportation Run terminated. Run Summary Number of events processed : 5 - User=0.03s Real=0.22s Sys=0.01s + User=0.02s Real=0.12s Sys=0.01s --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 614347382, 874035293 + Current couple of seeds = 1109635762, 1437327022 ---------------------------------------- # /gun/particle e+ @@ -380,7 +346,7 @@ Index : 0 used in the geometry : Yes recalculation needed : No --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 614347382, 874035293 + Current couple of seeds = 1109635762, 1437327022 ---------------------------------------- Start Run processing. @@ -392,169 +358,162 @@ Start Run processing. Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 -250 m 0 fm 0 fm 1e+03 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -249 m 0 fm 0 fm 0 eV 0 eV 1.4 m 1.4 m Iron AnnihiToMuPair + 1 -250 m 0 fm 0 fm 0 eV 0 eV 11.2 cm 11.2 cm Iron AnnihiToMuPair ********************************************************************************************************* * G4Track Information: Particle = mu-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -249 m 0 fm 0 fm 411 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -217 m 9.02 cm 1.06 cm 304 GeV 107 GeV 31.4 m 31.4 m Iron muIoni - 2 -192 m 16 cm 5.5 cm 238 GeV 66.6 GeV 25.6 m 57 m Iron muIoni - 3 -170 m 18.7 cm 13 cm 170 GeV 68.3 GeV 21.5 m 78.5 m Iron muIoni - 4 -153 m 13.4 cm 14.9 cm 127 GeV 42.1 GeV 16.6 m 95.1 m Iron muIoni - 5 -140 m 3.52 cm 9.63 cm 102 GeV 25.2 GeV 13.2 m 108 m Iron muIoni - 6 -129 m -3.7 mm -3.84 mm 81.3 GeV 21 GeV 11 m 119 m Iron muIoni - 7 -120 m 9.5 mm -5.7 cm 65.1 GeV 16.2 GeV 9.09 m 128 m Iron muIoni - 8 -113 m 5.58 cm -8.85 cm 52 GeV 13.1 GeV 7.51 m 136 m Iron muIoni - 9 -106 m 1.32 cm -11 cm 42.4 GeV 9.6 GeV 6.17 m 142 m Iron muIoni - 10 -101 m 6.23 mm -11.2 cm 34.6 GeV 7.76 GeV 5.15 m 147 m Iron muIoni - 11 -97 m -2.47 cm -13.5 cm 28.1 GeV 6.56 GeV 4.3 m 152 m Iron muIoni - 12 -93.4 m -5.05 cm -17.5 cm 21.9 GeV 6.12 GeV 3.57 m 155 m Iron muIoni - 13 -90.5 m -5.09 cm -23.1 cm 17.4 GeV 4.52 GeV 2.86 m 158 m Iron muIoni - 14 -88.2 m 9.29 mm -22.2 cm 14.1 GeV 3.31 GeV 2.32 m 160 m Iron muIoni - 15 -86.3 m 8.73 cm -21.6 cm 11 GeV 3.14 GeV 1.91 m 162 m Iron muIoni - 16 -84.8 m 16.3 cm -19.4 cm 8.91 GeV 2.05 GeV 1.52 m 164 m Iron muIoni - 17 -83.5 m 22 cm -20.2 cm 6.86 GeV 2.05 GeV 1.26 m 165 m Iron muIoni - 18 -82.5 m 28.1 cm -20.6 cm 5.47 GeV 1.39 GeV 99.1 cm 166 m Iron muIoni - 19 -81.7 m 31.3 cm -19.7 cm 4.34 GeV 1.12 GeV 80.5 cm 167 m Iron muIoni - 20 -81.1 m 31.6 cm -18.1 cm 3.53 GeV 815 MeV 65.1 cm 168 m Iron muIoni - 21 -80.6 m 33.3 cm -16.8 cm 2.63 GeV 904 MeV 53.7 cm 168 m Iron muIoni - 22 -80.1 m 34.9 cm -16.3 cm 2.12 GeV 502 MeV 40.8 cm 168 m Iron muIoni - 23 -79.8 m 35.5 cm -11.8 cm 1.72 GeV 407 MeV 33.5 cm 169 m Iron muIoni - 24 -79.5 m 34.3 cm -9.3 cm 1.37 GeV 346 MeV 27.4 cm 169 m Iron muIoni - 25 -79.3 m 32.6 cm -7.07 cm 1.09 GeV 279 MeV 22.1 cm 169 m Iron muIoni - 26 -79.1 m 31 cm -5.99 cm 844 MeV 247 MeV 17.7 cm 169 m Iron muIoni - 27 -79 m 31.2 cm -4.81 cm 693 MeV 151 MeV 13.8 cm 170 m Iron muIoni - 28 -78.9 m 31.2 cm -4.13 cm 544 MeV 149 MeV 11.3 cm 170 m Iron muIoni - 29 -78.8 m 31.2 cm -3.09 cm 435 MeV 109 MeV 8.81 cm 170 m Iron muIoni - 30 -78.7 m 31.4 cm -1.64 cm 356 MeV 79.2 MeV 6.97 cm 170 m Iron muIoni - 31 -78.7 m 30.5 cm -3.69 mm 288 MeV 67.3 MeV 5.61 cm 170 m Iron muIoni - 32 -78.6 m 30 cm 4.41 mm 240 MeV 48 MeV 4.45 cm 170 m Iron muIoni - 33 -78.6 m 29.9 cm 9.5 mm 200 MeV 40.4 MeV 3.62 cm 170 m Iron muIoni - 34 -78.6 m 29.9 cm 1.67 cm 162 MeV 38.1 MeV 2.92 cm 170 m Iron muIoni - 35 -78.6 m 29.8 cm 2.23 cm 129 MeV 32.6 MeV 2.27 cm 170 m Iron muIoni - 36 -78.5 m 29.8 cm 2.83 cm 108 MeV 20.7 MeV 1.73 cm 170 m Iron muIoni - 37 -78.5 m 29.9 cm 3.2 cm 89.9 MeV 18.5 MeV 1.4 cm 170 m Iron muIoni - 38 -78.5 m 29.9 cm 3.48 cm 72.9 MeV 17.1 MeV 1.11 cm 170 m Iron muIoni - 39 -78.5 m 29.7 cm 3.69 cm 57.3 MeV 15.5 MeV 8.6 mm 170 m Iron muIoni - 40 -78.5 m 29.6 cm 3.93 cm 48.2 MeV 9.12 MeV 6.46 mm 170 m Iron muIoni - 41 -78.5 m 29.5 cm 4.04 cm 39.5 MeV 8.66 MeV 5.29 mm 170 m Iron muIoni - 42 -78.5 m 29.4 cm 4.12 cm 31.3 MeV 8.21 MeV 4.26 mm 170 m Iron muIoni - 43 -78.5 m 29.2 cm 4.18 cm 23.8 MeV 7.53 MeV 3.38 mm 170 m Iron muIoni - 44 -78.5 m 29.1 cm 4.21 cm 16.5 MeV 7.3 MeV 2.65 mm 170 m Iron muIoni - 45 -78.5 m 29 cm 4.28 cm 8.89 MeV 7.62 MeV 1.99 mm 170 m Iron muIoni - 46 -78.5 m 29 cm 4.32 cm 546 keV 8.35 MeV 1.08 mm 170 m Iron muIoni - 47 -78.5 m 29 cm 4.32 cm 0 eV 546 keV 8.85 um 170 m Iron muIoni - 48 -78.5 m 29 cm 4.32 cm 0 eV 0 eV 0 fm 170 m Iron Decay + 0 -250 m 0 fm 0 fm 69 GeV 0 eV 0 fm 0 fm Iron initStep + 1 -242 m -3.91 cm -3.15 cm 55.2 GeV 13.8 GeV 7.9 m 7.9 m Iron muIoni + 2 -235 m -6.46 cm -4.35 cm 45 GeV 10.2 GeV 6.5 m 14.4 m Iron muIoni + 3 -230 m -14.3 cm -1.93 cm 33.5 GeV 11.5 GeV 5.43 m 19.8 m Iron muIoni + 4 -226 m -22.3 cm -3.48 mm 27.3 GeV 6.2 GeV 4.18 m 24 m Iron muIoni + 5 -222 m -27.6 cm 2.33 mm 21.5 GeV 5.83 GeV 3.48 m 27.5 m Iron muIoni + 6 -220 m -33.8 cm -1.43 cm 17.4 GeV 4.11 GeV 2.8 m 30.3 m Iron muIoni + 7 -217 m -36.4 cm -5.42 cm 14.3 GeV 3.13 GeV 2.31 m 32.6 m Iron muIoni + 8 -215 m -39.1 cm -9.7 cm 11.8 GeV 2.46 GeV 1.93 m 34.5 m Iron muIoni + 9 -214 m -44.8 cm -12.3 cm 9.71 GeV 2.09 GeV 1.63 m 36.2 m Iron muIoni + 10 -212 m -49.7 cm -11.6 cm 7.13 GeV 2.58 GeV 1.36 m 37.5 m Iron muIoni + 11 -211 m -52.8 cm -11.4 cm 5.55 GeV 1.58 GeV 1.03 m 38.6 m Iron muIoni + 12 -211 m -58.2 cm -11.6 cm 4.55 GeV 996 MeV 81.5 cm 39.4 m Iron muIoni + 13 -210 m -62.5 cm -15.3 cm 3.58 GeV 968 MeV 68 cm 40.1 m Iron muIoni + 14 -209 m -63.6 cm -17.9 cm 2.92 GeV 664 MeV 54.5 cm 40.6 m Iron muIoni + 15 -209 m -65.4 cm -19.9 cm 2.34 GeV 575 MeV 45.1 cm 41.1 m Iron muIoni + 16 -208 m -67.1 cm -22.3 cm 1.91 GeV 430 MeV 36.7 cm 41.4 m Iron muIoni + 17 -208 m -68.6 cm -24.3 cm 1.46 GeV 451 MeV 30.4 cm 41.7 m Iron muIoni + 18 -208 m -68 cm -25.6 cm 1.2 GeV 268 MeV 23.5 cm 42 m Iron muIoni + 19 -208 m -67.6 cm -25.6 cm 895 MeV 300 MeV 19.4 cm 42.2 m Iron muIoni + 20 -208 m -68.1 cm -25.7 cm 707 MeV 188 MeV 14.6 cm 42.3 m Iron muIoni + 21 -207 m -68.6 cm -25 cm 548 MeV 159 MeV 11.5 cm 42.4 m Iron muIoni + 22 -207 m -69.2 cm -23.9 cm 433 MeV 114 MeV 8.88 cm 42.5 m Iron muIoni + 23 -207 m -69.7 cm -22.8 cm 359 MeV 74.7 MeV 6.94 cm 42.6 m Iron muIoni + 24 -207 m -70.2 cm -22.8 cm 298 MeV 60.6 MeV 5.66 cm 42.6 m Iron muIoni + 25 -207 m -70.6 cm -22.7 cm 245 MeV 53.5 MeV 4.62 cm 42.7 m Iron muIoni + 26 -207 m -71 cm -22.4 cm 203 MeV 41.4 MeV 3.69 cm 42.7 m Iron muIoni + 27 -207 m -71.1 cm -22.4 cm 172 MeV 31.7 MeV 2.98 cm 42.7 m Iron muIoni + 28 -207 m -71.3 cm -22.1 cm 139 MeV 32.5 MeV 2.44 cm 42.8 m Iron muIoni + 29 -207 m -71.3 cm -21.9 cm 117 MeV 22.3 MeV 1.89 cm 42.8 m Iron muIoni + 30 -207 m -71.2 cm -21.8 cm 97.5 MeV 19.2 MeV 1.53 cm 42.8 m Iron muIoni + 31 -207 m -71.1 cm -21.7 cm 80.4 MeV 17.2 MeV 1.23 cm 42.8 m Iron muIoni + 32 -207 m -71 cm -21.6 cm 66.7 MeV 13.6 MeV 9.66 mm 42.8 m Iron muIoni + 33 -207 m -71.1 cm -21.4 cm 55.2 MeV 11.6 MeV 7.73 mm 42.8 m Iron muIoni + 34 -207 m -71.1 cm -21.2 cm 45.9 MeV 9.22 MeV 6.18 mm 42.8 m Iron muIoni + 35 -207 m -71.1 cm -21 cm 36.3 MeV 9.59 MeV 5.02 mm 42.8 m Iron muIoni + 36 -207 m -71.2 cm -20.9 cm 29 MeV 7.33 MeV 3.92 mm 42.8 m Iron muIoni + 37 -207 m -71.3 cm -20.7 cm 22.9 MeV 6.11 MeV 3.15 mm 42.8 m Iron muIoni + 38 -207 m -71.4 cm -20.6 cm 15.8 MeV 7.13 MeV 2.57 mm 42.9 m Iron muIoni + 39 -207 m -71.5 cm -20.6 cm 8.73 MeV 7.05 MeV 1.91 mm 42.9 m Iron muIoni + 40 -207 m -71.5 cm -20.6 cm 49.5 keV 8.68 MeV 1.05 mm 42.9 m Iron muIoni + 41 -207 m -71.5 cm -20.6 cm 0 eV 49.5 keV 277 nm 42.9 m Iron muIoni + 42 -207 m -71.5 cm -20.6 cm 0 eV 0 eV 0 fm 42.9 m Iron Decay ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -78.5 m 29 cm 4.32 cm 51 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -78.5 m 28.8 cm 4.36 cm 31 MeV 20 MeV 6.37 mm 6.37 mm Iron eIoni - 2 -78.5 m 28.8 cm 4.34 cm 20.8 MeV 10.1 MeV 5.11 mm 1.15 cm Iron eIoni - 3 -78.5 m 28.9 cm 4.32 cm 12.8 MeV 8.04 MeV 4.25 mm 1.57 cm Iron eIoni - 4 -78.5 m 29.1 cm 4.26 cm 8.5 MeV 4.3 MeV 3.4 mm 1.91 cm Iron eIoni - 5 -78.5 m 29.1 cm 4.44 cm 3.6 MeV 4.91 MeV 2.83 mm 2.2 cm Iron eIoni - 6 -78.5 m 29.1 cm 4.57 cm 1.03 MeV 2.56 MeV 1.96 mm 2.39 cm Iron eIoni - 7 -78.5 m 29.1 cm 4.58 cm 0 eV 1.03 MeV 806 um 2.47 cm Iron eIoni + 0 -207 m -71.5 cm -20.6 cm 34.7 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -207 m -71.1 cm -20.9 cm 18.2 MeV 16.6 MeV 5.37 mm 5.37 mm Iron eIoni + 2 -207 m -70.9 cm -21.1 cm 11.6 MeV 6.54 MeV 3.99 mm 9.36 mm Iron eIoni + 3 -207 m -70.6 cm -21.3 cm 6.36 MeV 5.27 MeV 3.25 mm 1.26 cm Iron eIoni + 4 -207 m -70.4 cm -21.3 cm 1.99 MeV 4.37 MeV 2.5 mm 1.51 cm Iron eIoni + 5 -207 m -70.4 cm -21.3 cm 573 keV 1.42 MeV 1.46 mm 1.66 cm Iron eIoni + 6 -207 m -70.4 cm -21.3 cm 0 eV 573 keV 382 um 1.7 cm Iron eIoni ********************************************************************************************************* * G4Track Information: Particle = anti_nu_e, Track ID = 5, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -78.5 m 29 cm 4.32 cm 17.4 MeV 0 eV 0 fm 0 fm Iron initStep - 1 250 m 206 m -118 m 17.4 MeV 0 eV 405 m 405 m OutOfWorld Transportation + 0 -207 m -71.5 cm -20.6 cm 42.5 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -52.5 m -27 m 250 m 42.5 MeV 0 eV 295 m 295 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = nu_mu, Track ID = 4, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -78.5 m 29 cm 4.32 cm 36.2 MeV 0 eV 0 fm 0 fm Iron initStep - 1 250 m -23.4 m -12.7 m 36.2 MeV 0 eV 330 m 330 m OutOfWorld Transportation + 0 -207 m -71.5 cm -20.6 cm 27.4 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -250 m -65.3 m -40 m 27.4 MeV 0 eV 87.2 m 87.2 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = mu+, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -249 m 0 fm 0 fm 589 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -209 m -3.12 cm -8.4 mm 433 GeV 156 GeV 39.2 m 39.2 m Iron muIoni - 2 -177 m -1.09 cm -16.1 cm 328 GeV 105 GeV 32.4 m 71.6 m Iron muIoni - 3 -150 m 3.02 cm -35.4 cm 239 GeV 89 GeV 26.9 m 98.5 m Iron muIoni - 4 -129 m 6.77 cm -47.3 cm 188 GeV 50.9 GeV 21.5 m 120 m Iron muIoni - 5 -111 m -3.52 cm -1.01 m 138 GeV 49.5 GeV 17.9 m 138 m Iron muIoni - 6 -96.5 m -2.73 cm -1.5 m 108 GeV 30 GeV 14.1 m 152 m Iron muIoni - 7 -85 m -8.36 cm -1.91 m 82.2 GeV 26 GeV 11.5 m 164 m Iron muIoni - 8 -75.8 m -8.53 cm -2.23 m 57.6 GeV 24.6 GeV 9.17 m 173 m Iron muIoni - 9 -69.1 m -5.37 cm -2.49 m 46.8 GeV 10.7 GeV 6.74 m 180 m Iron muIoni - 10 -63.5 m 2.56 cm -2.72 m 34.5 GeV 12.4 GeV 5.62 m 185 m Iron muIoni - 11 -59.2 m 7.61 cm -2.88 m 27.5 GeV 6.93 GeV 4.28 m 189 m Iron muIoni - 12 -55.7 m 14 cm -3.02 m 22.4 GeV 5.09 GeV 3.5 m 193 m Iron muIoni - 13 -52.8 m 23 cm -3.12 m 18.3 GeV 4.19 GeV 2.91 m 196 m Iron muIoni - 14 -50.4 m 33 cm -3.21 m 15 GeV 3.25 GeV 2.41 m 198 m Iron muIoni - 15 -48.4 m 38.8 cm -3.26 m 12 GeV 3.02 GeV 2.02 m 200 m Iron muIoni - 16 -46.7 m 45.1 cm -3.32 m 9.68 GeV 2.3 GeV 1.65 m 202 m Iron muIoni - 17 -45.4 m 50 cm -3.36 m 3.52 GeV 6.17 GeV 1.36 m 203 m Iron muIoni - 18 -44.9 m 52 cm -3.37 m 2.87 GeV 645 MeV 53.4 cm 204 m Iron muIoni - 19 -44.4 m 51.9 cm -3.4 m 2.34 GeV 526 MeV 44.3 cm 204 m Iron muIoni - 20 -44 m 51.6 cm -3.42 m 1.88 GeV 468 MeV 36.7 cm 205 m Iron muIoni - 21 -43.7 m 50 cm -3.44 m 1.54 GeV 338 MeV 29.7 cm 205 m Iron muIoni - 22 -43.5 m 50.7 cm -3.47 m 1.25 GeV 289 MeV 24.6 cm 205 m Iron muIoni - 23 -43.3 m 50.6 cm -3.48 m 811 MeV 437 MeV 20.2 cm 205 m Iron muIoni - 24 -43.2 m 51.2 cm -3.5 m 652 MeV 159 MeV 13.2 cm 205 m Iron muIoni - 25 -43.1 m 51.5 cm -3.52 m 531 MeV 121 MeV 10.6 cm 206 m Iron muIoni - 26 -43 m 51.5 cm -3.54 m 431 MeV 99.8 MeV 8.58 cm 206 m Iron muIoni - 27 -42.9 m 51.7 cm -3.56 m 360 MeV 71.5 MeV 6.89 cm 206 m Iron muIoni - 28 -42.9 m 52.2 cm -3.57 m 298 MeV 61.4 MeV 5.66 cm 206 m Iron muIoni - 29 -42.8 m 52.3 cm -3.58 m 250 MeV 47.6 MeV 4.61 cm 206 m Iron muIoni - 30 -42.8 m 52.5 cm -3.58 m 211 MeV 39.4 MeV 3.78 cm 206 m Iron muIoni - 31 -42.7 m 52.6 cm -3.59 m 173 MeV 38.5 MeV 3.11 cm 206 m Iron muIoni - 32 -42.7 m 53 cm -3.59 m 144 MeV 28.8 MeV 2.45 cm 206 m Iron muIoni - 33 -42.7 m 53.3 cm -3.59 m 122 MeV 22 MeV 1.97 cm 206 m Iron muIoni - 34 -42.7 m 53.5 cm -3.59 m 104 MeV 17.3 MeV 1.61 cm 206 m Iron muIoni - 35 -42.7 m 53.7 cm -3.59 m 86 MeV 18.5 MeV 1.33 cm 206 m Iron muIoni - 36 -42.7 m 53.9 cm -3.6 m 70.3 MeV 15.6 MeV 1.05 cm 206 m Iron muIoni - 37 -42.7 m 54.1 cm -3.6 m 56.2 MeV 14.1 MeV 8.22 mm 206 m Iron muIoni - 38 -42.7 m 54.2 cm -3.6 m 46.6 MeV 9.55 MeV 6.31 mm 206 m Iron muIoni - 39 -42.6 m 54.3 cm -3.6 m 38.4 MeV 8.29 MeV 5.1 mm 206 m Iron muIoni - 40 -42.6 m 54.4 cm -3.6 m 30.9 MeV 7.45 MeV 4.13 mm 206 m Iron muIoni - 41 -42.6 m 54.5 cm -3.6 m 23.3 MeV 7.61 MeV 3.34 mm 206 m Iron muIoni - 42 -42.6 m 54.5 cm -3.6 m 16.8 MeV 6.45 MeV 2.6 mm 206 m Iron muIoni - 43 -42.6 m 54.6 cm -3.6 m 9.84 MeV 7 MeV 2.02 mm 206 m Iron muIoni - 44 -42.6 m 54.7 cm -3.6 m 1.63 MeV 8.22 MeV 1.24 mm 206 m Iron muIoni - 45 -42.6 m 54.7 cm -3.6 m 0 eV 1.63 MeV 55.8 um 206 m Iron muIoni - 46 -42.6 m 54.7 cm -3.6 m 0 eV 0 eV 0 fm 206 m Iron Decay + 0 -250 m 0 fm 0 fm 931 GeV 0 eV 0 fm 0 fm Iron initStep + 1 -199 m 5.58 cm -2.44 cm 639 GeV 292 GeV 50.5 m 50.5 m Iron muIoni + 2 -158 m 17.9 cm -1.38 cm 468 GeV 171 GeV 41.2 m 91.7 m Iron muIoni + 3 -124 m 32.5 cm 6.96 cm 326 GeV 142 GeV 34.1 m 126 m Iron muIoni + 4 -97.3 m 37.9 cm 9.6 cm 244 GeV 81.8 GeV 26.8 m 153 m Iron muIoni + 5 -75.5 m 42.8 cm 15.9 cm 90.6 GeV 153 GeV 21.9 m 174 m Iron muIoni + 6 -65.5 m 39.6 cm 18.4 cm 73.8 GeV 16.8 GeV 9.96 m 184 m Iron muIoni + 7 -57.2 m 40.7 cm 14.5 cm 59.9 GeV 14 GeV 8.36 m 193 m Iron muIoni + 8 -50.2 m 44 cm 12.2 cm 47.9 GeV 12 GeV 6.97 m 200 m Iron muIoni + 9 -44.5 m 38.3 cm 10.9 cm 38.7 GeV 9.22 GeV 5.73 m 205 m Iron muIoni + 10 -39.7 m 32.9 cm 3.71 cm 30.5 GeV 8.19 GeV 4.75 m 210 m Iron muIoni + 11 -35.9 m 32.3 cm -3.45 cm 24.4 GeV 6.11 GeV 3.84 m 214 m Iron muIoni + 12 -32.7 m 35.3 cm -8.05 cm 20 GeV 4.42 GeV 3.14 m 217 m Iron muIoni + 13 -30.1 m 36.7 cm -10.2 cm 15.6 GeV 4.37 GeV 2.62 m 220 m Iron muIoni + 14 -28 m 38.8 cm -15.5 cm 12.4 GeV 3.18 GeV 2.09 m 222 m Iron muIoni + 15 -26.3 m 42.7 cm -21.2 cm 8.99 GeV 3.41 GeV 1.7 m 224 m Iron muIoni + 16 -25.1 m 48.9 cm -22.8 cm 6.29 GeV 2.7 GeV 1.27 m 225 m Iron muIoni + 17 -24.1 m 52.9 cm -24 cm 4.89 GeV 1.41 GeV 91.4 cm 226 m Iron muIoni + 18 -23.4 m 55.8 cm -25.5 cm 4.02 GeV 870 MeV 72.4 cm 226 m Iron muIoni + 19 -22.8 m 58.6 cm -27.1 cm 3.1 GeV 910 MeV 60.5 cm 227 m Iron muIoni + 20 -22.3 m 59.8 cm -27.4 cm 2.42 GeV 688 MeV 47.6 cm 228 m Iron muIoni + 21 -22 m 60.2 cm -29.6 cm 1.99 GeV 426 MeV 37.7 cm 228 m Iron muIoni + 22 -21.7 m 60.8 cm -30.1 cm 1.57 GeV 422 MeV 31.5 cm 228 m Iron muIoni + 23 -21.4 m 61.4 cm -30.8 cm 1.26 GeV 307 MeV 25.1 cm 228 m Iron muIoni + 24 -21.2 m 61.3 cm -30.7 cm 981 MeV 281 MeV 20.4 cm 229 m Iron muIoni + 25 -21 m 61.8 cm -30 cm 713 MeV 268 MeV 15.9 cm 229 m Iron muIoni + 26 -20.9 m 62.1 cm -29.2 cm 590 MeV 123 MeV 11.6 cm 229 m Iron muIoni + 27 -20.8 m 63 cm -28.5 cm 457 MeV 132 MeV 9.56 cm 229 m Iron muIoni + 28 -20.8 m 63.1 cm -27.3 cm 380 MeV 76.9 MeV 7.33 cm 229 m Iron muIoni + 29 -20.7 m 63.2 cm -26.4 cm 304 MeV 75.9 MeV 6.02 cm 229 m Iron muIoni + 30 -20.7 m 64.1 cm -26 cm 252 MeV 52.6 MeV 4.72 cm 229 m Iron muIoni + 31 -20.6 m 64.6 cm -25.9 cm 213 MeV 38.5 MeV 3.81 cm 229 m Iron muIoni + 32 -20.6 m 65.1 cm -25.8 cm 177 MeV 35.8 MeV 3.14 cm 229 m Iron muIoni + 33 -20.6 m 65.6 cm -26.1 cm 146 MeV 31.7 MeV 2.53 cm 229 m Iron muIoni + 34 -20.5 m 66.2 cm -26.3 cm 114 MeV 31.5 MeV 2 cm 229 m Iron muIoni + 35 -20.5 m 66.7 cm -26.3 cm 95.3 MeV 19 MeV 1.49 cm 229 m Iron muIoni + 36 -20.5 m 67.2 cm -26.1 cm 77.7 MeV 17.6 MeV 1.19 cm 229 m Iron muIoni + 37 -20.5 m 67.6 cm -26 cm 65.6 MeV 12.2 MeV 9.27 mm 229 m Iron muIoni + 38 -20.5 m 67.9 cm -25.8 cm 55.4 MeV 10.1 MeV 7.55 mm 229 m Iron muIoni + 39 -20.5 m 68.2 cm -25.7 cm 45.7 MeV 9.7 MeV 6.21 mm 229 m Iron muIoni + 40 -20.5 m 68.4 cm -25.6 cm 36.2 MeV 9.56 MeV 4.99 mm 229 m Iron muIoni + 41 -20.5 m 68.6 cm -25.5 cm 28.4 MeV 7.74 MeV 3.9 mm 229 m Iron muIoni + 42 -20.5 m 68.7 cm -25.4 cm 20.9 MeV 7.54 MeV 3.09 mm 229 m Iron muIoni + 43 -20.5 m 68.9 cm -25.3 cm 14.7 MeV 6.2 MeV 2.38 mm 229 m Iron muIoni + 44 -20.5 m 69 cm -25.2 cm 7.56 MeV 7.11 MeV 1.81 mm 229 m Iron muIoni + 45 -20.5 m 69 cm -25.1 cm 0 eV 7.56 MeV 817 um 229 m Iron muIoni + 46 -20.5 m 69 cm -25.1 cm 0 eV 0 eV 0 fm 229 m Iron Decay ********************************************************************************************************* * G4Track Information: Particle = e+, Track ID = 9, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -42.6 m 54.7 cm -3.6 m 20 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -51.6 m 250 m 163 m 20 MeV 0 eV 300 m 300 m OutOfWorld Transportation + 0 -20.5 m 69 cm -25.1 cm 39.9 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -7.32 m 250 m 44.5 m 39.9 MeV 0 eV 254 m 254 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = nu_e, Track ID = 8, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -42.6 m 54.7 cm -3.6 m 40 MeV 0 eV 0 fm 0 fm Iron initStep - 1 250 m -30 m 56.5 m 40 MeV 0 eV 300 m 300 m OutOfWorld Transportation + 0 -20.5 m 69 cm -25.1 cm 35.2 MeV 0 eV 0 fm 0 fm Iron initStep + 1 4.82 m -250 m 176 m 35.2 MeV 0 eV 307 m 307 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = anti_nu_mu, Track ID = 7, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -42.6 m 54.7 cm -3.6 m 44.7 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -250 m -67.3 m -107 m 44.7 MeV 0 eV 241 m 241 m OutOfWorld Transportation + 0 -20.5 m 69 cm -25.1 cm 29.6 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -66.1 m -96.2 m -250 m 29.6 MeV 0 eV 272 m 272 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = e+, Track ID = 1, Parent ID = 0 @@ -562,169 +521,169 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 -250 m 0 fm 0 fm 1e+03 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -247 m 0 fm 0 fm 0 eV 0 eV 2.95 m 2.95 m Iron AnnihiToMuPair + 1 -248 m 0 fm 0 fm 0 eV 0 eV 1.8 m 1.8 m Iron AnnihiToMuPair ********************************************************************************************************* * G4Track Information: Particle = mu-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -247 m 0 fm 0 fm 507 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -211 m -5.67 cm 4.78 cm 381 GeV 126 GeV 35.9 m 35.9 m Iron muIoni - 2 -181 m -17.1 cm -4.13 mm 284 GeV 97.3 GeV 29.9 m 65.7 m Iron muIoni - 3 -157 m -15.1 cm -5.57 cm 219 GeV 64.2 GeV 24.4 m 90.1 m Iron muIoni - 4 -137 m -4.97 cm -6.73 cm 168 GeV 51 GeV 20.2 m 110 m Iron muIoni - 5 -120 m 7.59 cm 894 um 131 GeV 37.4 GeV 16.5 m 127 m Iron muIoni - 6 -107 m 12.2 cm 7.74 cm 103 GeV 28.5 GeV 13.5 m 140 m Iron muIoni - 7 -95.6 m 6.75 cm 9.93 cm 82.3 GeV 20.3 GeV 11.1 m 151 m Iron muIoni - 8 -86.4 m -3.58 mm 12.2 cm 65.2 GeV 17.1 GeV 9.19 m 161 m Iron muIoni - 9 -78.9 m -2.33 cm 11.5 cm 50.8 GeV 14.4 GeV 7.53 m 168 m Iron muIoni - 10 -72.8 m -9.92 cm 18.1 cm 40.8 GeV 10 GeV 6.05 m 174 m Iron muIoni - 11 -67.8 m -20.7 cm 20.8 cm 32.6 GeV 8.14 GeV 4.98 m 179 m Iron muIoni - 12 -63.8 m -19.9 cm 24.5 cm 23.9 GeV 8.68 GeV 4.08 m 183 m Iron muIoni - 13 -60.7 m -23.4 cm 27.4 cm 19.6 GeV 4.36 GeV 3.09 m 186 m Iron muIoni - 14 -58.1 m -27.8 cm 26.2 cm 15.1 GeV 4.51 GeV 2.58 m 189 m Iron muIoni - 15 -56.1 m -29.1 cm 23.4 cm 11.8 GeV 3.23 GeV 2.03 m 191 m Iron muIoni - 16 -54.4 m -28.3 cm 22.7 cm 9.65 GeV 2.2 GeV 1.63 m 193 m Iron muIoni - 17 -53.1 m -28.4 cm 23.2 cm 3.4 GeV 6.25 GeV 1.35 m 194 m Iron muIoni - 18 -52.5 m -28.8 cm 20.9 cm 2.73 GeV 672 MeV 51.9 cm 195 m Iron muIoni - 19 -52.1 m -28.5 cm 18.3 cm 2.22 GeV 509 MeV 42.3 cm 195 m Iron muIoni - 20 -51.8 m -30.1 cm 17.2 cm 1.78 GeV 436 MeV 34.9 cm 195 m Iron muIoni - 21 -51.5 m -33.9 cm 14.8 cm 1.44 GeV 344 MeV 28.4 cm 196 m Iron muIoni - 22 -51.3 m -37.9 cm 13.3 cm 1.19 GeV 247 MeV 23.1 cm 196 m Iron muIoni - 23 -51.1 m -40.6 cm 12.2 cm 942 MeV 249 MeV 19.3 cm 196 m Iron muIoni - 24 -50.9 m -43.5 cm 10.6 cm 742 MeV 200 MeV 15.4 cm 196 m Iron muIoni - 25 -50.8 m -46.7 cm 9.1 cm 604 MeV 138 MeV 12.1 cm 196 m Iron muIoni - 26 -50.7 m -49.4 cm 7.67 cm 499 MeV 105 MeV 9.83 cm 196 m Iron muIoni - 27 -50.6 m -51.9 cm 6.92 cm 395 MeV 104 MeV 8.06 cm 196 m Iron muIoni - 28 -50.6 m -54.2 cm 5.85 cm 333 MeV 62.4 MeV 6.29 cm 197 m Iron muIoni - 29 -50.5 m -55.9 cm 4.8 cm 266 MeV 67.2 MeV 5.22 cm 197 m Iron muIoni - 30 -50.5 m -57.1 cm 4 cm 221 MeV 44.7 MeV 4.06 cm 197 m Iron muIoni - 31 -50.5 m -58.3 cm 3.29 cm 183 MeV 38.2 MeV 3.28 cm 197 m Iron muIoni - 32 -50.4 m -59.2 cm 2.57 cm 154 MeV 29 MeV 2.63 cm 197 m Iron muIoni - 33 -50.4 m -59.9 cm 1.89 cm 127 MeV 26.3 MeV 2.14 cm 197 m Iron muIoni - 34 -50.4 m -60.2 cm 1.46 cm 107 MeV 20 MeV 1.7 cm 197 m Iron muIoni - 35 -50.4 m -60.6 cm 1.28 cm 86.6 MeV 20.9 MeV 1.38 cm 197 m Iron muIoni - 36 -50.4 m -60.7 cm 1.16 cm 69.7 MeV 16.8 MeV 1.06 cm 197 m Iron muIoni - 37 -50.4 m -61 cm 1.21 cm 58.4 MeV 11.3 MeV 8.15 mm 197 m Iron muIoni - 38 -50.4 m -61.1 cm 1.24 cm 48.1 MeV 10.3 MeV 6.61 mm 197 m Iron muIoni - 39 -50.4 m -61.3 cm 1.21 cm 39.5 MeV 8.62 MeV 5.28 mm 197 m Iron muIoni - 40 -50.4 m -61.5 cm 1.14 cm 31.6 MeV 7.88 MeV 4.26 mm 197 m Iron muIoni - 41 -50.4 m -61.5 cm 1.05 cm 23.9 MeV 7.75 MeV 3.41 mm 197 m Iron muIoni - 42 -50.4 m -61.6 cm 1.04 cm 17.2 MeV 6.7 MeV 2.66 mm 197 m Iron muIoni - 43 -50.4 m -61.6 cm 1.04 cm 10.9 MeV 6.28 MeV 2.05 mm 197 m Iron muIoni - 44 -50.4 m -61.6 cm 1.08 cm 2.71 MeV 8.21 MeV 1.4 mm 197 m Iron muIoni - 45 -50.4 m -61.6 cm 1.09 cm 0 eV 2.71 MeV 135 um 197 m Iron muIoni - 46 -50.4 m -61.6 cm 1.09 cm 0 eV 0 eV 0 fm 197 m Iron Decay + 0 -248 m 0 fm 0 fm 718 GeV 0 eV 0 fm 0 fm Iron initStep + 1 -204 m -1.81 cm 1.81 cm 523 GeV 195 GeV 43.9 m 43.9 m Iron muIoni + 2 -168 m -5.81 cm 8.49 mm 389 GeV 134 GeV 36.5 m 80.5 m Iron muIoni + 3 -137 m 4.03 mm -15.9 cm 296 GeV 93 GeV 30.3 m 111 m Iron muIoni + 4 -112 m 5.29 cm -23.7 cm 223 GeV 73.3 GeV 25.1 m 136 m Iron muIoni + 5 -91.8 m 5.63 cm -26.3 cm 169 GeV 53.7 GeV 20.5 m 156 m Iron muIoni + 6 -75.2 m 4.22 cm -35 cm 134 GeV 35.6 GeV 16.6 m 173 m Iron muIoni + 7 -61.5 m 12.8 cm -41 cm 106 GeV 28 GeV 13.7 m 187 m Iron muIoni + 8 -50.1 m 26.8 cm -46 cm 80.9 GeV 24.8 GeV 11.3 m 198 m Iron muIoni + 9 -41.1 m 42.6 cm -49.9 cm 51.4 GeV 29.5 GeV 9.06 m 207 m Iron muIoni + 10 -35 m 47.4 cm -46.4 cm 40.9 GeV 10.5 GeV 6.11 m 213 m Iron muIoni + 11 -30 m 49.2 cm -44 cm 33.1 GeV 7.77 GeV 4.99 m 218 m Iron muIoni + 12 -25.8 m 51 cm -39 cm 26.8 GeV 6.27 GeV 4.14 m 222 m Iron muIoni + 13 -22.4 m 47.5 cm -38.6 cm 21.1 GeV 5.69 GeV 3.42 m 226 m Iron muIoni + 14 -19.6 m 48.9 cm -38.1 cm 17.1 GeV 4.04 GeV 2.76 m 229 m Iron muIoni + 15 -17.4 m 48.1 cm -34 cm 13.4 GeV 3.68 GeV 2.28 m 231 m Iron muIoni + 16 -15.5 m 48.6 cm -31.7 cm 10.9 GeV 2.55 GeV 1.83 m 233 m Iron muIoni + 17 -14 m 48.7 cm -26 cm 8.62 GeV 2.23 GeV 1.51 m 234 m Iron muIoni + 18 -12.8 m 48.9 cm -21.7 cm 7.03 GeV 1.59 GeV 1.22 m 235 m Iron muIoni + 19 -11.8 m 51.2 cm -18.3 cm 5.61 GeV 1.42 GeV 1.01 m 236 m Iron muIoni + 20 -11 m 54.7 cm -10.6 cm 4.54 GeV 1.07 GeV 82.4 cm 237 m Iron muIoni + 21 -10.3 m 57 cm -5.06 cm 3.62 GeV 926 MeV 67.8 cm 238 m Iron muIoni + 22 -9.77 m 60.3 cm 3.13 mm 2.89 GeV 728 MeV 55 cm 238 m Iron muIoni + 23 -9.32 m 64.1 cm 5.64 cm 2.32 GeV 570 MeV 44.6 cm 239 m Iron muIoni + 24 -8.96 m 66.6 cm 8.54 cm 1.81 GeV 507 MeV 36.4 cm 239 m Iron muIoni + 25 -8.68 m 68.8 cm 11.6 cm 1.47 GeV 340 MeV 28.8 cm 240 m Iron muIoni + 26 -8.44 m 69 cm 13.6 cm 1.21 GeV 258 MeV 23.7 cm 240 m Iron muIoni + 27 -8.25 m 69.8 cm 14.2 cm 914 MeV 299 MeV 19.7 cm 240 m Iron muIoni + 28 -8.1 m 70.2 cm 15.5 cm 741 MeV 173 MeV 14.9 cm 240 m Iron muIoni + 29 -7.98 m 69.7 cm 17 cm 608 MeV 133 MeV 12.1 cm 240 m Iron muIoni + 30 -7.88 m 70 cm 17.7 cm 490 MeV 118 MeV 9.89 cm 240 m Iron muIoni + 31 -7.8 m 69.9 cm 18.7 cm 400 MeV 90.9 MeV 7.91 cm 240 m Iron muIoni + 32 -7.74 m 70.2 cm 19.3 cm 327 MeV 72.2 MeV 6.37 cm 240 m Iron muIoni + 33 -7.69 m 69.8 cm 19.5 cm 256 MeV 71.7 MeV 5.12 cm 241 m Iron muIoni + 34 -7.65 m 69.6 cm 19.6 cm 213 MeV 42.6 MeV 3.88 cm 241 m Iron muIoni + 35 -7.62 m 69.1 cm 20 cm 176 MeV 36.7 MeV 3.14 cm 241 m Iron muIoni + 36 -7.59 m 68.7 cm 20.2 cm 147 MeV 29.7 MeV 2.52 cm 241 m Iron muIoni + 37 -7.57 m 68.6 cm 20.3 cm 120 MeV 26.2 MeV 2.02 cm 241 m Iron muIoni + 38 -7.56 m 68.8 cm 20.3 cm 99.8 MeV 20.6 MeV 1.59 cm 241 m Iron muIoni + 39 -7.54 m 69.2 cm 20.3 cm 82.7 MeV 17.1 MeV 1.26 cm 241 m Iron muIoni + 40 -7.53 m 69.5 cm 20.5 cm 69 MeV 13.7 MeV 1 cm 241 m Iron muIoni + 41 -7.53 m 69.6 cm 20.6 cm 58 MeV 11.1 MeV 8.05 mm 241 m Iron muIoni + 42 -7.52 m 69.7 cm 20.6 cm 45.8 MeV 12.2 MeV 6.54 mm 241 m Iron muIoni + 43 -7.51 m 69.7 cm 20.7 cm 36.8 MeV 9.02 MeV 5 mm 241 m Iron muIoni + 44 -7.51 m 69.7 cm 20.7 cm 29.4 MeV 7.42 MeV 3.97 mm 241 m Iron muIoni + 45 -7.51 m 69.7 cm 20.7 cm 22.6 MeV 6.8 MeV 3.19 mm 241 m Iron muIoni + 46 -7.51 m 69.7 cm 20.6 cm 15.6 MeV 6.97 MeV 2.54 mm 241 m Iron muIoni + 47 -7.5 m 69.7 cm 20.6 cm 8.48 MeV 7.12 MeV 1.9 mm 241 m Iron muIoni + 48 -7.5 m 69.7 cm 20.6 cm 0 eV 8.48 MeV 998 um 241 m Iron muIoni + 49 -7.5 m 69.7 cm 20.6 cm 0 eV 0 eV 0 fm 241 m Iron Decay ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -50.4 m -61.6 cm 1.09 cm 39.7 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -50.4 m -61.4 cm 7.28 mm 24.7 MeV 15 MeV 5.71 mm 5.71 mm Iron eIoni - 2 -50.3 m -61.3 cm 3.27 mm 15.9 MeV 8.83 MeV 4.61 mm 1.03 cm Iron eIoni - 3 -50.3 m -61.2 cm 211 um 10.9 MeV 4.99 MeV 3.75 mm 1.41 cm Iron eIoni - 4 -50.3 m -61.2 cm -2.7 mm 7.03 MeV 3.87 MeV 3.16 mm 1.72 cm Iron eIoni - 5 -50.3 m -61.4 cm -2.87 mm 3.74 MeV 3.29 MeV 2.61 mm 1.98 cm Iron eIoni - 6 -50.4 m -61.3 cm -2.42 mm 421 keV 3.31 MeV 1.99 mm 2.18 cm Iron eIoni - 7 -50.4 m -61.3 cm -2.46 mm 0 eV 421 keV 251 um 2.21 cm Iron eIoni + 0 -7.5 m 69.7 cm 20.6 cm 24.8 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -7.5 m 69.8 cm 21 cm 16.2 MeV 8.55 MeV 4.61 mm 4.61 mm Iron eIoni + 2 -7.5 m 70 cm 21.3 cm 6.69 MeV 9.55 MeV 3.79 mm 8.4 mm Iron eIoni + 3 -7.5 m 70.2 cm 21.3 cm 3.8 MeV 2.89 MeV 2.55 mm 1.1 cm Iron eIoni + 4 -7.5 m 70.3 cm 21.5 cm 109 keV 3.69 MeV 2 mm 1.3 cm Iron eIoni + 5 -7.5 m 70.3 cm 21.5 cm 0 eV 109 keV 31.5 um 1.3 cm Iron eIoni ********************************************************************************************************* * G4Track Information: Particle = anti_nu_e, Track ID = 5, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -50.4 m -61.6 cm 1.09 cm 37.8 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -250 m -144 m 40.9 m 37.8 MeV 0 eV 249 m 249 m OutOfWorld Transportation + 0 -7.5 m 69.7 cm 20.6 cm 38.4 MeV 0 eV 0 fm 0 fm Iron initStep + 1 236 m -250 m -163 m 38.4 MeV 0 eV 386 m 386 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = nu_mu, Track ID = 4, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -50.4 m -61.6 cm 1.09 cm 27.1 MeV 0 eV 0 fm 0 fm Iron initStep - 1 35.6 m 91 m 250 m 27.1 MeV 0 eV 280 m 280 m OutOfWorld Transportation + 0 -7.5 m 69.7 cm 20.6 cm 41.4 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -250 m 179 m -50.6 m 41.4 MeV 0 eV 305 m 305 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = mu+, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -247 m 0 fm 0 fm 493 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -212 m 6.41 cm -4.41 cm 351 GeV 142 GeV 35.2 m 35.2 m Iron muIoni - 2 -184 m 12.4 cm -12.7 cm 270 GeV 81.3 GeV 28.2 m 63.5 m Iron muIoni - 3 -160 m 24.1 cm -16 cm 211 GeV 58.8 GeV 23.5 m 87 m Iron muIoni - 4 -140 m 27.7 cm -16.9 cm 100 GeV 111 GeV 19.6 m 107 m Iron muIoni - 5 -130 m 37.6 cm -24.1 cm 78.7 GeV 21.7 GeV 10.9 m 117 m Iron muIoni - 6 -121 m 49.4 cm -25 cm 62.8 GeV 15.8 GeV 8.84 m 126 m Iron muIoni - 7 -113 m 66 cm -13.7 cm 48.1 GeV 14.8 GeV 7.28 m 134 m Iron muIoni - 8 -108 m 82.7 cm -3.99 cm 38.7 GeV 9.39 GeV 5.75 m 139 m Iron muIoni - 9 -103 m 94.4 cm -2.33 mm 30.8 GeV 7.92 GeV 4.75 m 144 m Iron muIoni - 10 -99.1 m 1.04 m 4.14 mm 23.3 GeV 7.43 GeV 3.87 m 148 m Iron muIoni - 11 -96.1 m 1.15 m -2.9 cm 18.9 GeV 4.46 GeV 3.02 m 151 m Iron muIoni - 12 -93.6 m 1.23 m -3.5 cm 15.3 GeV 3.58 GeV 2.49 m 153 m Iron muIoni - 13 -91.5 m 1.33 m -7.7 cm 12.4 GeV 2.87 GeV 2.06 m 156 m Iron muIoni - 14 -89.8 m 1.43 m -9.07 cm 9.82 GeV 2.6 GeV 1.7 m 157 m Iron muIoni - 15 -88.5 m 1.52 m -10.6 cm 8.1 GeV 1.71 GeV 1.37 m 159 m Iron muIoni - 16 -87.3 m 1.61 m -9.24 cm 6.49 GeV 1.61 GeV 1.15 m 160 m Iron muIoni - 17 -86.4 m 1.7 m -7.3 cm 5.24 GeV 1.26 GeV 94.1 cm 161 m Iron muIoni - 18 -85.6 m 1.78 m -5.25 cm 4.23 GeV 1.01 GeV 77.2 cm 161 m Iron muIoni - 19 -85 m 1.82 m -4.63 cm 3.46 GeV 770 MeV 63.5 cm 162 m Iron muIoni - 20 -84.4 m 1.85 m -5.44 cm 2.79 GeV 670 MeV 52.7 cm 163 m Iron muIoni - 21 -84 m 1.87 m -6.22 cm 2.25 GeV 540 MeV 43.2 cm 163 m Iron muIoni - 22 -83.7 m 1.88 m -6.47 cm 1.79 GeV 464 MeV 35.3 cm 163 m Iron muIoni - 23 -83.4 m 1.88 m -7.01 cm 1.45 GeV 337 MeV 28.4 cm 164 m Iron muIoni - 24 -83.1 m 1.89 m -9.43 cm 1.17 GeV 281 MeV 23.3 cm 164 m Iron muIoni - 25 -83 m 1.91 m -11.7 cm 943 MeV 226 MeV 18.9 cm 164 m Iron muIoni - 26 -82.8 m 1.92 m -12.6 cm 743 MeV 200 MeV 15.3 cm 164 m Iron muIoni - 27 -82.7 m 1.94 m -12.5 cm 598 MeV 145 MeV 12.1 cm 164 m Iron muIoni - 28 -82.6 m 1.95 m -12.5 cm 481 MeV 117 MeV 9.71 cm 165 m Iron muIoni - 29 -82.5 m 1.96 m -12.5 cm 396 MeV 85.4 MeV 7.74 cm 165 m Iron muIoni - 30 -82.5 m 1.96 m -12.6 cm 332 MeV 63.9 MeV 6.29 cm 165 m Iron muIoni - 31 -82.4 m 1.97 m -12.4 cm 269 MeV 63.1 MeV 5.19 cm 165 m Iron muIoni - 32 -82.4 m 1.98 m -12.2 cm 221 MeV 47.5 MeV 4.1 cm 165 m Iron muIoni - 33 -82.3 m 1.98 m -12.6 cm 181 MeV 39.7 MeV 3.28 cm 165 m Iron muIoni - 34 -82.3 m 2 m -13.3 cm 152 MeV 29.9 MeV 2.6 cm 165 m Iron muIoni - 35 -82.3 m 2.01 m -13.6 cm 129 MeV 22.9 MeV 2.1 cm 165 m Iron muIoni - 36 -82.3 m 2.02 m -13.9 cm 109 MeV 19.6 MeV 1.72 cm 165 m Iron muIoni - 37 -82.3 m 2.03 m -14.2 cm 91.5 MeV 17.4 MeV 1.4 cm 165 m Iron muIoni - 38 -82.3 m 2.04 m -14.3 cm 74.2 MeV 17.4 MeV 1.13 cm 165 m Iron muIoni - 39 -82.3 m 2.05 m -14.2 cm 61.1 MeV 13 MeV 8.77 mm 165 m Iron muIoni - 40 -82.2 m 2.05 m -14.3 cm 49 MeV 12.1 MeV 6.95 mm 165 m Iron muIoni - 41 -82.2 m 2.06 m -14.3 cm 39.2 MeV 9.78 MeV 5.38 mm 165 m Iron muIoni - 42 -82.2 m 2.06 m -14.2 cm 30.5 MeV 8.71 MeV 4.23 mm 165 m Iron muIoni - 43 -82.2 m 2.06 m -14.2 cm 23.9 MeV 6.6 MeV 3.3 mm 165 m Iron muIoni - 44 -82.2 m 2.06 m -14 cm 16.4 MeV 7.54 MeV 2.66 mm 165 m Iron muIoni - 45 -82.2 m 2.06 m -13.8 cm 9.23 MeV 7.12 MeV 1.97 mm 165 m Iron muIoni - 46 -82.2 m 2.06 m -13.7 cm 1.08 MeV 8.16 MeV 1.14 mm 165 m Iron muIoni - 47 -82.2 m 2.06 m -13.7 cm 0 eV 1.08 MeV 27.7 um 165 m Iron muIoni - 48 -82.2 m 2.06 m -13.7 cm 0 eV 0 eV 0 fm 165 m Iron Decay + 0 -248 m 0 fm 0 fm 281 GeV 0 eV 0 fm 0 fm Iron initStep + 1 -224 m -3.23 cm -2.26 cm 217 GeV 64.2 GeV 24.2 m 24.2 m Iron muIoni + 2 -204 m -5.88 cm -6.9 cm 161 GeV 56.3 GeV 20 m 44.2 m Iron muIoni + 3 -188 m -3.43 cm -19.2 cm 123 GeV 37.9 GeV 15.9 m 60.2 m Iron muIoni + 4 -175 m -2.83 cm -29.7 cm 96.6 GeV 26.3 GeV 12.8 m 73 m Iron muIoni + 5 -165 m -1.62 cm -29.3 cm 78.4 GeV 18.3 GeV 10.5 m 83.5 m Iron muIoni + 6 -156 m -4.43 cm -35 cm 62.7 GeV 15.7 GeV 8.81 m 92.3 m Iron muIoni + 7 -149 m 1.39 cm -45.3 cm 47.7 GeV 15 GeV 7.27 m 99.6 m Iron muIoni + 8 -143 m 6.07 cm -56.6 cm 37.9 GeV 9.83 GeV 5.72 m 105 m Iron muIoni + 9 -138 m 8.67 cm -62.8 cm 30.5 GeV 7.36 GeV 4.66 m 110 m Iron muIoni + 10 -134 m 16.3 cm -65.3 cm 24.5 GeV 5.99 GeV 3.84 m 114 m Iron muIoni + 11 -131 m 21.4 cm -65.3 cm 20.1 GeV 4.41 GeV 3.16 m 117 m Iron muIoni + 12 -129 m 24.7 cm -64.8 cm 16.3 GeV 3.83 GeV 2.64 m 120 m Iron muIoni + 13 -126 m 26.2 cm -65.3 cm 13.1 GeV 3.24 GeV 2.18 m 122 m Iron muIoni + 14 -125 m 27.4 cm -68.1 cm 10.6 GeV 2.45 GeV 1.78 m 124 m Iron muIoni + 15 -123 m 28.3 cm -67 cm 8.78 GeV 1.82 GeV 1.47 m 125 m Iron muIoni + 16 -122 m 29.2 cm -66.2 cm 6.85 GeV 1.93 GeV 1.24 m 126 m Iron muIoni + 17 -121 m 30 cm -63.9 cm 5.54 GeV 1.31 GeV 98.7 cm 127 m Iron muIoni + 18 -120 m 31.9 cm -62.1 cm 4.43 GeV 1.11 GeV 81.2 cm 128 m Iron muIoni + 19 -119 m 36.2 cm -58.2 cm 2.77 GeV 1.66 GeV 66.1 cm 129 m Iron muIoni + 20 -119 m 37.6 cm -55.5 cm 2.2 GeV 570 MeV 42.8 cm 129 m Iron muIoni + 21 -119 m 38.4 cm -54.8 cm 1.79 GeV 406 MeV 34.5 cm 130 m Iron muIoni + 22 -118 m 39.5 cm -53.3 cm 1.37 GeV 425 MeV 28.5 cm 130 m Iron muIoni + 23 -118 m 40.6 cm -53.3 cm 1.12 GeV 249 MeV 22 cm 130 m Iron muIoni + 24 -118 m 42.6 cm -52.4 cm 901 MeV 218 MeV 18.1 cm 130 m Iron muIoni + 25 -118 m 44.1 cm -51.2 cm 707 MeV 194 MeV 14.7 cm 130 m Iron muIoni + 26 -118 m 44.4 cm -50.3 cm 570 MeV 137 MeV 11.5 cm 130 m Iron muIoni + 27 -118 m 44 cm -49.2 cm 468 MeV 102 MeV 9.23 cm 131 m Iron muIoni + 28 -118 m 44.2 cm -47.9 cm 388 MeV 79.5 MeV 7.52 cm 131 m Iron muIoni + 29 -118 m 44.2 cm -46.6 cm 321 MeV 67.3 MeV 6.16 cm 131 m Iron muIoni + 30 -117 m 44.3 cm -45.2 cm 263 MeV 58.6 MeV 5 cm 131 m Iron muIoni + 31 -117 m 44.2 cm -44 cm 219 MeV 43 MeV 3.99 cm 131 m Iron muIoni + 32 -117 m 43.8 cm -42.8 cm 183 MeV 36.2 MeV 3.25 cm 131 m Iron muIoni + 33 -117 m 43.6 cm -42.2 cm 155 MeV 28.7 MeV 2.63 cm 131 m Iron muIoni + 34 -117 m 43.6 cm -41.5 cm 131 MeV 24 MeV 2.15 cm 131 m Iron muIoni + 35 -117 m 43.3 cm -41.2 cm 110 MeV 20.6 MeV 1.75 cm 131 m Iron muIoni + 36 -117 m 43.3 cm -41.1 cm 92.7 MeV 17.2 MeV 1.42 cm 131 m Iron muIoni + 37 -117 m 43.1 cm -40.9 cm 77.8 MeV 14.9 MeV 1.15 cm 131 m Iron muIoni + 38 -117 m 42.9 cm -40.8 cm 63.2 MeV 14.6 MeV 9.28 mm 131 m Iron muIoni + 39 -117 m 42.7 cm -40.7 cm 52.6 MeV 10.6 MeV 7.22 mm 131 m Iron muIoni + 40 -117 m 42.5 cm -40.7 cm 43.2 MeV 9.46 MeV 5.84 mm 131 m Iron muIoni + 41 -117 m 42.5 cm -40.6 cm 34.5 MeV 8.72 MeV 4.69 mm 131 m Iron muIoni + 42 -117 m 42.4 cm -40.5 cm 26.1 MeV 8.37 MeV 3.71 mm 131 m Iron muIoni + 43 -117 m 42.5 cm -40.3 cm 19.6 MeV 6.47 MeV 2.86 mm 131 m Iron muIoni + 44 -117 m 42.4 cm -40.3 cm 14 MeV 5.63 MeV 2.26 mm 131 m Iron muIoni + 45 -117 m 42.4 cm -40.2 cm 6.38 MeV 7.6 MeV 1.75 mm 131 m Iron muIoni + 46 -117 m 42.4 cm -40.2 cm 0 eV 6.38 MeV 604 um 131 m Iron muIoni + 47 -117 m 42.4 cm -40.2 cm 0 eV 0 eV 0 fm 131 m Iron Decay ********************************************************************************************************* * G4Track Information: Particle = e+, Track ID = 9, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -82.2 m 2.06 m -13.7 cm 44.9 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -250 m 3.08 m -32.4 m 44.9 MeV 0 eV 171 m 171 m OutOfWorld Transportation + 0 -117 m 42.4 cm -40.2 cm 30.7 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -227 m 6.19 m 250 m 30.7 MeV 0 eV 274 m 274 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = nu_e, Track ID = 8, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -82.2 m 2.06 m -13.7 cm 17 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -16.6 m -250 m 157 m 17 MeV 0 eV 304 m 304 m OutOfWorld Transportation + 0 -117 m 42.4 cm -40.2 cm 24.4 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -137 m -250 m 214 m 24.4 MeV 0 eV 331 m 331 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = anti_nu_mu, Track ID = 7, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -82.2 m 2.06 m -13.7 cm 42.7 MeV 0 eV 0 fm 0 fm Iron initStep - 1 250 m 115 m -2.65 m 42.7 MeV 0 eV 351 m 351 m OutOfWorld Transportation + 0 -117 m 42.4 cm -40.2 cm 49.5 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -38.8 m 102 m -250 m 49.5 MeV 0 eV 281 m 281 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = e+, Track ID = 1, Parent ID = 0 @@ -732,169 +691,164 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 -250 m 0 fm 0 fm 1e+03 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -247 m 0 fm 0 fm 0 eV 0 eV 3.08 m 3.08 m Iron AnnihiToMuPair + 1 -250 m 0 fm 0 fm 0 eV 0 eV 37.3 cm 37.3 cm Iron AnnihiToMuPair ********************************************************************************************************* * G4Track Information: Particle = mu-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -247 m 0 fm 0 fm 818 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -200 m 3.47 cm 5.74 cm 595 GeV 223 GeV 47.3 m 47.3 m Iron muIoni - 2 -160 m 3.43 cm 16.3 cm 441 GeV 154 GeV 39.5 m 86.7 m Iron muIoni - 3 -127 m -7.37 cm 29.7 cm 327 GeV 114 GeV 32.8 m 120 m Iron muIoni - 4 -100 m -14.3 cm 41.5 cm 251 GeV 76.1 GeV 27 m 147 m Iron muIoni - 5 -78 m -14.2 cm 56.8 cm 193 GeV 58.6 GeV 22.4 m 169 m Iron muIoni - 6 -59.7 m -15.9 cm 82.4 cm 153 GeV 39.5 GeV 18.3 m 187 m Iron muIoni - 7 -44.4 m -22.8 cm 1.01 m 119 GeV 33.8 GeV 15.3 m 203 m Iron muIoni - 8 -31.8 m -26 cm 1.14 m 89.8 GeV 29.5 GeV 12.5 m 215 m Iron muIoni - 9 -21.9 m -30.1 cm 1.25 m 71.1 GeV 18.7 GeV 9.89 m 225 m Iron muIoni - 10 -13.8 m -34 cm 1.41 m 50.7 GeV 20.3 GeV 8.1 m 233 m Iron muIoni - 11 -7.79 m -39.6 cm 1.53 m 41.1 GeV 9.61 GeV 6.04 m 239 m Iron muIoni - 12 -2.77 m -44.6 cm 1.59 m 32.2 GeV 8.95 GeV 5.02 m 244 m Iron muIoni - 13 1.26 m -51.9 cm 1.56 m 24.7 GeV 7.41 GeV 4.03 m 248 m Iron muIoni - 14 4.45 m -53.4 cm 1.58 m 19.5 GeV 5.27 GeV 3.19 m 251 m Iron muIoni - 15 7 m -79.4 cm 1.6 m 15.2 GeV 4.23 GeV 2.57 m 254 m Iron muIoni - 16 9.04 m -98.1 cm 1.63 m 12.4 GeV 2.89 GeV 2.05 m 256 m Iron muIoni - 17 10.7 m -1.19 m 1.62 m 10 GeV 2.34 GeV 1.7 m 258 m Iron muIoni - 18 12.1 m -1.38 m 1.62 m 7.99 GeV 2.02 GeV 1.4 m 259 m Iron muIoni - 19 13.2 m -1.55 m 1.62 m 6.61 GeV 1.38 GeV 1.14 m 260 m Iron muIoni - 20 14.2 m -1.69 m 1.63 m 3.72 GeV 2.89 GeV 95.8 cm 261 m Iron muIoni - 21 14.7 m -1.77 m 1.63 m 3 GeV 720 MeV 56.4 cm 262 m Iron muIoni - 22 15.2 m -1.82 m 1.64 m 2.41 GeV 590 MeV 46.2 cm 262 m Iron muIoni - 23 15.6 m -1.86 m 1.64 m 1.95 GeV 463 MeV 37.7 cm 263 m Iron muIoni - 24 15.9 m -1.89 m 1.66 m 1.36 GeV 584 MeV 30.8 cm 263 m Iron muIoni - 25 16.1 m -1.91 m 1.67 m 1.12 GeV 243 MeV 22 cm 263 m Iron muIoni - 26 16.3 m -1.91 m 1.66 m 903 MeV 216 MeV 18.2 cm 263 m Iron muIoni - 27 16.4 m -1.91 m 1.66 m 714 MeV 188 MeV 14.7 cm 263 m Iron muIoni - 28 16.5 m -1.92 m 1.66 m 588 MeV 127 MeV 11.7 cm 264 m Iron muIoni - 29 16.6 m -1.92 m 1.66 m 473 MeV 115 MeV 9.55 cm 264 m Iron muIoni - 30 16.7 m -1.92 m 1.67 m 374 MeV 98.9 MeV 7.62 cm 264 m Iron muIoni - 31 16.8 m -1.93 m 1.67 m 302 MeV 72.6 MeV 5.93 cm 264 m Iron muIoni - 32 16.8 m -1.94 m 1.67 m 245 MeV 56.2 MeV 4.68 cm 264 m Iron muIoni - 33 16.9 m -1.95 m 1.67 m 204 MeV 41.2 MeV 3.7 cm 264 m Iron muIoni - 34 16.9 m -1.96 m 1.67 m 169 MeV 34.8 MeV 2.99 cm 264 m Iron muIoni - 35 16.9 m -1.97 m 1.68 m 143 MeV 26.5 MeV 2.4 cm 264 m Iron muIoni - 36 16.9 m -1.98 m 1.68 m 119 MeV 24.3 MeV 1.96 cm 264 m Iron muIoni - 37 16.9 m -1.98 m 1.68 m 99.4 MeV 19.2 MeV 1.56 cm 264 m Iron muIoni - 38 17 m -1.99 m 1.69 m 82.5 MeV 16.9 MeV 1.25 cm 264 m Iron muIoni - 39 17 m -1.99 m 1.69 m 68.6 MeV 14 MeV 9.99 mm 264 m Iron muIoni - 40 17 m -1.99 m 1.69 m 56.8 MeV 11.8 MeV 7.99 mm 264 m Iron muIoni - 41 17 m -2 m 1.69 m 46.3 MeV 10.4 MeV 6.39 mm 264 m Iron muIoni - 42 17 m -2 m 1.69 m 37.7 MeV 8.64 MeV 5.07 mm 264 m Iron muIoni - 43 17 m -2 m 1.7 m 30 MeV 7.68 MeV 4.07 mm 264 m Iron muIoni - 44 17 m -2 m 1.7 m 23.1 MeV 6.9 MeV 3.25 mm 264 m Iron muIoni - 45 17 m -2 m 1.7 m 15.8 MeV 7.29 MeV 2.59 mm 264 m Iron muIoni - 46 17 m -2 m 1.7 m 8.65 MeV 7.18 MeV 1.92 mm 264 m Iron muIoni - 47 17 m -2 m 1.7 m 407 keV 8.25 MeV 1.04 mm 264 m Iron muIoni - 48 17 m -2 m 1.7 m 0 eV 407 keV 5.46 um 264 m Iron muIoni - 49 17 m -2 m 1.7 m 0 eV 0 eV 0 fm 264 m Iron Decay + 0 -250 m 0 fm 0 fm 972 GeV 0 eV 0 fm 0 fm Iron initStep + 1 -198 m 4.02 mm -5.44 mm 653 GeV 319 GeV 51.7 m 51.7 m Iron muIoni + 2 -156 m 8.19 cm -12.5 cm 401 GeV 253 GeV 41.7 m 93.4 m Iron muIoni + 3 -125 m 21.9 cm -15.9 cm 307 GeV 93.7 GeV 30.9 m 124 m Iron muIoni + 4 -99.5 m 33.5 cm -16.9 cm 230 GeV 76.6 GeV 25.8 m 150 m Iron muIoni + 5 -78.5 m 37 cm -21.1 cm 182 GeV 48.4 GeV 21 m 171 m Iron muIoni + 6 -60.9 m 38.9 cm -24.9 cm 142 GeV 39.9 GeV 17.5 m 189 m Iron muIoni + 7 -46.5 m 41.4 cm -22.6 cm 113 GeV 29 GeV 14.4 m 203 m Iron muIoni + 8 -34.5 m 47.8 cm -14.1 cm 88.9 GeV 24.3 GeV 12 m 215 m Iron muIoni + 9 -24.7 m 45.2 cm -9.16 cm 71 GeV 17.8 GeV 9.8 m 225 m Iron muIoni + 10 -16.6 m 43.4 cm -12.6 cm 57.1 GeV 13.9 GeV 8.1 m 233 m Iron muIoni + 11 -9.9 m 40 cm -14.1 cm 45.3 GeV 11.8 GeV 6.7 m 240 m Iron muIoni + 12 -4.44 m 36 cm -12.1 cm 34.2 GeV 11.1 GeV 5.46 m 245 m Iron muIoni + 13 -18.2 cm 32.8 cm -9.24 cm 27.1 GeV 7.08 GeV 4.25 m 249 m Iron muIoni + 14 3.27 m 31.7 cm -8.84 cm 22 GeV 5.08 GeV 3.45 m 253 m Iron muIoni + 15 6.14 m 31.7 cm -11 cm 16.6 GeV 5.38 GeV 2.86 m 256 m Iron muIoni + 16 8.36 m 30.2 cm -14.6 cm 13.2 GeV 3.45 GeV 2.22 m 258 m Iron muIoni + 17 10.2 m 32.2 cm -21.6 cm 10.8 GeV 2.39 GeV 1.8 m 260 m Iron muIoni + 18 11.7 m 35.1 cm -28.4 cm 6.83 GeV 3.96 GeV 1.5 m 261 m Iron muIoni + 19 12.6 m 36 cm -33.5 cm 5.63 GeV 1.19 GeV 98.6 cm 262 m Iron muIoni + 20 13.5 m 38.1 cm -39.6 cm 4.52 GeV 1.11 GeV 82.7 cm 263 m Iron muIoni + 21 14.1 m 41.1 cm -44.5 cm 3.67 GeV 855 MeV 67.6 cm 264 m Iron muIoni + 22 14.7 m 43.1 cm -50 cm 3.01 GeV 657 MeV 55.7 cm 264 m Iron muIoni + 23 15.1 m 47.1 cm -57 cm 2.42 GeV 585 MeV 46.4 cm 265 m Iron muIoni + 24 15.5 m 51.2 cm -62.1 cm 1.95 GeV 470 MeV 37.9 cm 265 m Iron muIoni + 25 15.8 m 55.2 cm -65.3 cm 1.45 GeV 502 MeV 31 cm 265 m Iron muIoni + 26 16.1 m 57.7 cm -66.9 cm 1.19 GeV 262 MeV 23.4 cm 266 m Iron muIoni + 27 16.2 m 59.9 cm -68.9 cm 987 MeV 203 MeV 19.3 cm 266 m Iron muIoni + 28 16.4 m 61.8 cm -71.5 cm 808 MeV 179 MeV 16.1 cm 266 m Iron muIoni + 29 16.5 m 63.2 cm -72.9 cm 636 MeV 172 MeV 13.2 cm 266 m Iron muIoni + 30 16.6 m 63.7 cm -74 cm 507 MeV 130 MeV 10.4 cm 266 m Iron muIoni + 31 16.7 m 64.5 cm -75.6 cm 414 MeV 92.6 MeV 8.19 cm 266 m Iron muIoni + 32 16.8 m 64.9 cm -76.1 cm 328 MeV 86.1 MeV 6.61 cm 266 m Iron muIoni + 33 16.8 m 64.9 cm -76 cm 274 MeV 53.8 MeV 5.13 cm 267 m Iron muIoni + 34 16.9 m 64.7 cm -76.1 cm 216 MeV 58.7 MeV 4.2 cm 267 m Iron muIoni + 35 16.9 m 64.6 cm -76.4 cm 177 MeV 38.3 MeV 3.19 cm 267 m Iron muIoni + 36 16.9 m 64.4 cm -76.5 cm 143 MeV 34.6 MeV 2.53 cm 267 m Iron muIoni + 37 16.9 m 64.3 cm -76.6 cm 119 MeV 24.1 MeV 1.95 cm 267 m Iron muIoni + 38 17 m 64.1 cm -76.9 cm 99 MeV 19.5 MeV 1.56 cm 267 m Iron muIoni + 39 17 m 64 cm -77.1 cm 83 MeV 16.1 MeV 1.25 cm 267 m Iron muIoni + 40 17 m 63.9 cm -77.2 cm 69.8 MeV 13.1 MeV 1.01 cm 267 m Iron muIoni + 41 17 m 63.8 cm -77.4 cm 56.8 MeV 13 MeV 8.17 mm 267 m Iron muIoni + 42 17 m 63.7 cm -77.5 cm 46.9 MeV 9.92 MeV 6.4 mm 267 m Iron muIoni + 43 17 m 63.7 cm -77.5 cm 38.2 MeV 8.67 MeV 5.14 mm 267 m Iron muIoni + 44 17 m 63.5 cm -77.5 cm 30.6 MeV 7.67 MeV 4.12 mm 267 m Iron muIoni + 45 17 m 63.5 cm -77.6 cm 23.3 MeV 7.28 MeV 3.31 mm 267 m Iron muIoni + 46 17 m 63.4 cm -77.7 cm 16.1 MeV 7.25 MeV 2.61 mm 267 m Iron muIoni + 47 17 m 63.4 cm -77.8 cm 8.72 MeV 7.33 MeV 1.94 mm 267 m Iron muIoni + 48 17 m 63.4 cm -77.8 cm 60.9 keV 8.66 MeV 1.05 mm 267 m Iron muIoni + 49 17 m 63.4 cm -77.8 cm 0 eV 60.9 keV 352 nm 267 m Iron muIoni + 50 17 m 63.4 cm -77.8 cm 0 eV 0 eV 0 fm 267 m Iron Decay ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 17 m -2 m 1.7 m 17 MeV 0 eV 0 fm 0 fm Iron initStep - 1 17 m -2 m 1.7 m 7.19 MeV 9.78 MeV 3.86 mm 3.86 mm Iron eIoni - 2 17 m -2 m 1.7 m 3.56 MeV 3.63 MeV 2.63 mm 6.5 mm Iron eIoni - 3 17 m -2 m 1.7 m 1.51 MeV 2.05 MeV 1.95 mm 8.45 mm Iron eIoni - 4 17 m -2 m 1.7 m 44.3 keV 1.46 MeV 1.21 mm 9.65 mm Iron eIoni - 5 17 m -2 m 1.7 m 0 eV 44.3 keV 6.92 um 9.66 mm Iron eIoni + 0 17 m 63.4 cm -77.8 cm 42.6 MeV 0 eV 0 fm 0 fm Iron initStep + 1 17 m 63 cm -77.4 cm 25.5 MeV 17.1 MeV 5.89 mm 5.89 mm Iron eIoni + 2 17 m 62.7 cm -77 cm 17.2 MeV 8.3 MeV 4.67 mm 1.06 cm Iron eIoni + 3 17 m 62.7 cm -76.7 cm 10.6 MeV 6.64 MeV 3.89 mm 1.45 cm Iron eIoni + 4 17 m 62.5 cm -76.5 cm 5.53 MeV 5.07 MeV 3.12 mm 1.76 cm Iron eIoni + 5 17 m 62.3 cm -76.6 cm 2.09 MeV 3.43 MeV 2.35 mm 1.99 cm Iron eIoni + 6 17 m 62.4 cm -76.6 cm 356 keV 1.74 MeV 1.51 mm 2.14 cm Iron eIoni + 7 17 m 62.4 cm -76.6 cm 0 eV 356 keV 198 um 2.16 cm Iron eIoni ********************************************************************************************************* * G4Track Information: Particle = anti_nu_e, Track ID = 5, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 17 m -2 m 1.7 m 43.4 MeV 0 eV 0 fm 0 fm Iron initStep - 1 164 m -250 m 60.5 m 43.4 MeV 0 eV 294 m 294 m OutOfWorld Transportation + 0 17 m 63.4 cm -77.8 cm 29.6 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -231 m 117 m -250 m 29.6 MeV 0 eV 371 m 371 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = nu_mu, Track ID = 4, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 17 m -2 m 1.7 m 44.3 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -181 m 250 m 55.2 m 44.3 MeV 0 eV 325 m 325 m OutOfWorld Transportation + 0 17 m 63.4 cm -77.8 cm 32.4 MeV 0 eV 0 fm 0 fm Iron initStep + 1 250 m 118 m -151 m 32.4 MeV 0 eV 301 m 301 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = mu+, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -247 m 0 fm 0 fm 182 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -229 m -1.82 cm 9.53 mm 145 GeV 37 GeV 17.5 m 17.5 m Iron muIoni - 2 -215 m -3.63 cm 4.31 cm 115 GeV 29.3 GeV 14.6 m 32.1 m Iron muIoni - 3 -203 m -5.18 cm 12.9 cm 90.7 GeV 24.7 GeV 12.2 m 44.3 m Iron muIoni - 4 -193 m -7.26 cm 25.6 cm 72.8 GeV 17.8 GeV 9.96 m 54.2 m Iron muIoni - 5 -184 m -19.3 cm 41.8 cm 55.3 GeV 17.5 GeV 8.26 m 62.5 m Iron muIoni - 6 -178 m -23.3 cm 58 cm 44.5 GeV 10.7 GeV 6.5 m 69 m Iron muIoni - 7 -173 m -31 cm 70.1 cm 35.5 GeV 9.05 GeV 5.38 m 74.4 m Iron muIoni - 8 -168 m -38.7 cm 76.9 cm 28.6 GeV 6.91 GeV 4.39 m 78.8 m Iron muIoni - 9 -165 m -44.1 cm 82.3 cm 22.5 GeV 6.11 GeV 3.62 m 82.4 m Iron muIoni - 10 -162 m -50 cm 90.9 cm 17.5 GeV 4.96 GeV 2.91 m 85.3 m Iron muIoni - 11 -159 m -53 cm 1 m 14.3 GeV 3.23 GeV 2.33 m 87.6 m Iron muIoni - 12 -157 m -54 cm 1.1 m 11.7 GeV 2.59 GeV 1.93 m 89.6 m Iron muIoni - 13 -156 m -55.2 cm 1.17 m 9.57 GeV 2.13 GeV 1.61 m 91.2 m Iron muIoni - 14 -154 m -57.4 cm 1.22 m 7.93 GeV 1.63 GeV 1.34 m 92.5 m Iron muIoni - 15 -153 m -58.6 cm 1.26 m 6.11 GeV 1.82 GeV 1.13 m 93.7 m Iron muIoni - 16 -152 m -59.1 cm 1.31 m 4.88 GeV 1.23 GeV 88.9 cm 94.5 m Iron muIoni - 17 -152 m -61.5 cm 1.33 m 3.89 GeV 993 MeV 72.4 cm 95.3 m Iron muIoni - 18 -151 m -63 cm 1.38 m 2.99 GeV 901 MeV 58.7 cm 95.9 m Iron muIoni - 19 -151 m -66.2 cm 1.44 m 2.41 GeV 578 MeV 46 cm 96.3 m Iron muIoni - 20 -150 m -69.1 cm 1.49 m 1.98 GeV 433 MeV 37.7 cm 96.7 m Iron muIoni - 21 -150 m -71.8 cm 1.53 m 1.63 GeV 351 MeV 31.3 cm 97 m Iron muIoni - 22 -150 m -75.5 cm 1.57 m 1.31 GeV 318 MeV 26 cm 97.3 m Iron muIoni - 23 -149 m -78.7 cm 1.6 m 1.04 GeV 265 MeV 21.1 cm 97.5 m Iron muIoni - 24 -149 m -81.8 cm 1.62 m 857 MeV 188 MeV 17 cm 97.6 m Iron muIoni - 25 -149 m -85.3 cm 1.63 m 694 MeV 163 MeV 14 cm 97.8 m Iron muIoni - 26 -149 m -87.7 cm 1.65 m 562 MeV 132 MeV 11.3 cm 97.9 m Iron muIoni - 27 -149 m -90.7 cm 1.66 m 461 MeV 101 MeV 9.1 cm 98 m Iron muIoni - 28 -149 m -93 cm 1.68 m 360 MeV 101 MeV 7.39 cm 98.1 m Iron muIoni - 29 -149 m -95 cm 1.68 m 296 MeV 63.9 MeV 5.67 cm 98.1 m Iron muIoni - 30 -149 m -96.6 cm 1.69 m 244 MeV 51.6 MeV 4.57 cm 98.2 m Iron muIoni - 31 -149 m -98.1 cm 1.7 m 204 MeV 40 MeV 3.68 cm 98.2 m Iron muIoni - 32 -149 m -97 cm 1.69 m 173 MeV 31 MeV 2.99 cm 98.2 m Iron muIoni - 33 -149 m -96 cm 1.68 m 141 MeV 32.2 MeV 2.46 cm 98.3 m Iron muIoni - 34 -149 m -94.9 cm 1.68 m 118 MeV 23.1 MeV 1.92 cm 98.3 m Iron muIoni - 35 -149 m -94.3 cm 1.67 m 100 MeV 17.6 MeV 1.55 cm 98.3 m Iron muIoni - 36 -149 m -93.8 cm 1.67 m 85.2 MeV 15.2 MeV 1.27 cm 98.3 m Iron muIoni - 37 -149 m -93.6 cm 1.67 m 71.4 MeV 13.7 MeV 1.04 cm 98.3 m Iron muIoni - 38 -149 m -93.4 cm 1.67 m 60.4 MeV 11 MeV 8.38 mm 98.3 m Iron muIoni - 39 -149 m -93.3 cm 1.68 m 49.7 MeV 10.7 MeV 6.86 mm 98.3 m Iron muIoni - 40 -149 m -93.2 cm 1.68 m 39.7 MeV 10 MeV 5.47 mm 98.3 m Iron muIoni - 41 -149 m -93.1 cm 1.67 m 31.3 MeV 8.43 MeV 4.28 mm 98.3 m Iron muIoni - 42 -149 m -93.1 cm 1.67 m 23.2 MeV 8.04 MeV 3.37 mm 98.3 m Iron muIoni - 43 -149 m -93.1 cm 1.67 m 15.9 MeV 7.32 MeV 2.6 mm 98.3 m Iron muIoni - 44 -149 m -93.1 cm 1.67 m 9.03 MeV 6.9 MeV 1.93 mm 98.3 m Iron muIoni - 45 -149 m -93.1 cm 1.67 m 599 keV 8.43 MeV 1.11 mm 98.3 m Iron muIoni - 46 -149 m -93.1 cm 1.67 m 0 eV 599 keV 10.3 um 98.3 m Iron muIoni - 47 -149 m -93.1 cm 1.67 m 0 eV 0 eV 0 fm 98.3 m Iron Decay + 0 -250 m 0 fm 0 fm 27.4 GeV 0 eV 0 fm 0 fm Iron initStep + 1 -246 m 6.43 mm -3.55 mm 21.9 GeV 5.47 GeV 3.48 m 3.48 m Iron muIoni + 2 -243 m 2.48 cm -6.05 mm 17.7 GeV 4.26 GeV 2.85 m 6.33 m Iron muIoni + 3 -241 m 4.22 cm 4.33 cm 14.3 GeV 3.34 GeV 2.34 m 8.67 m Iron muIoni + 4 -239 m -2.28 mm 9.7 cm 11.2 GeV 3.15 GeV 1.94 m 10.6 m Iron muIoni + 5 -237 m -6.01 cm 11.4 cm 8.06 GeV 3.11 GeV 1.54 m 12.2 m Iron muIoni + 6 -236 m -11.4 cm 14.2 cm 6.25 GeV 1.81 GeV 1.15 m 13.3 m Iron muIoni + 7 -235 m -17.2 cm 15 cm 5.02 GeV 1.23 GeV 90.8 cm 14.2 m Iron muIoni + 8 -235 m -19.6 cm 15.9 cm 4.04 GeV 978 MeV 74.2 cm 15 m Iron muIoni + 9 -234 m -23.9 cm 16.6 cm 3.22 GeV 819 MeV 60.8 cm 15.6 m Iron muIoni + 10 -234 m -26.5 cm 17.6 cm 2.59 GeV 631 MeV 49.3 cm 16.1 m Iron muIoni + 11 -233 m -28.4 cm 17.2 cm 2.08 GeV 503 MeV 40.2 cm 16.5 m Iron muIoni + 12 -233 m -31.4 cm 17.2 cm 1.71 GeV 376 MeV 32.8 cm 16.8 m Iron muIoni + 13 -233 m -33.4 cm 17.8 cm 1.41 GeV 300 MeV 27.2 cm 17.1 m Iron muIoni + 14 -232 m -35.3 cm 19.7 cm 1.16 GeV 248 MeV 22.7 cm 17.3 m Iron muIoni + 15 -232 m -37.2 cm 21.1 cm 928 MeV 233 MeV 18.8 cm 17.5 m Iron muIoni + 16 -232 m -39 cm 21 cm 774 MeV 154 MeV 15.1 cm 17.6 m Iron muIoni + 17 -232 m -39.8 cm 19.2 cm 638 MeV 136 MeV 12.6 cm 17.7 m Iron muIoni + 18 -232 m -39.7 cm 16.9 cm 509 MeV 129 MeV 10.4 cm 17.9 m Iron muIoni + 19 -232 m -39.3 cm 15.2 cm 415 MeV 94.1 MeV 8.21 cm 17.9 m Iron muIoni + 20 -232 m -39.6 cm 13.5 cm 340 MeV 74.8 MeV 6.61 cm 18 m Iron muIoni + 21 -232 m -39.6 cm 12.7 cm 281 MeV 58.8 MeV 5.33 cm 18.1 m Iron muIoni + 22 -232 m -39.9 cm 11.5 cm 238 MeV 42.7 MeV 4.31 cm 18.1 m Iron muIoni + 23 -232 m -40 cm 10.3 cm 198 MeV 40.7 MeV 3.58 cm 18.1 m Iron muIoni + 24 -231 m -39.9 cm 9.37 cm 166 MeV 31.7 MeV 2.88 cm 18.2 m Iron muIoni + 25 -231 m -39.5 cm 8.6 cm 138 MeV 28.4 MeV 2.34 cm 18.2 m Iron muIoni + 26 -231 m -39.3 cm 8.05 cm 118 MeV 20.1 MeV 1.87 cm 18.2 m Iron muIoni + 27 -231 m -39.1 cm 7.5 cm 98.3 MeV 19.3 MeV 1.54 cm 18.2 m Iron muIoni + 28 -231 m -39 cm 7.18 cm 81.6 MeV 16.7 MeV 1.24 cm 18.2 m Iron muIoni + 29 -231 m -38.8 cm 6.9 cm 68.1 MeV 13.5 MeV 9.83 mm 18.2 m Iron muIoni + 30 -231 m -38.6 cm 6.6 cm 56.6 MeV 11.5 MeV 7.91 mm 18.2 m Iron muIoni + 31 -231 m -38.5 cm 6.44 cm 47.2 MeV 9.36 MeV 6.35 mm 18.3 m Iron muIoni + 32 -231 m -38.4 cm 6.27 cm 38.8 MeV 8.37 MeV 5.17 mm 18.3 m Iron muIoni + 33 -231 m -38.4 cm 6.05 cm 31 MeV 7.84 MeV 4.18 mm 18.3 m Iron muIoni + 34 -231 m -38.4 cm 5.9 cm 23.9 MeV 7.05 MeV 3.34 mm 18.3 m Iron muIoni + 35 -231 m -38.4 cm 5.76 cm 17.7 MeV 6.28 MeV 2.66 mm 18.3 m Iron muIoni + 36 -231 m -38.4 cm 5.71 cm 11.5 MeV 6.16 MeV 2.09 mm 18.3 m Iron muIoni + 37 -231 m -38.4 cm 5.62 cm 3.33 MeV 8.16 MeV 1.47 mm 18.3 m Iron muIoni + 38 -231 m -38.4 cm 5.6 cm 0 eV 3.33 MeV 195 um 18.3 m Iron muIoni + 39 -231 m -38.4 cm 5.6 cm 0 eV 0 eV 0 fm 18.3 m Iron Decay ********************************************************************************************************* * G4Track Information: Particle = e+, Track ID = 9, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -149 m -93.1 cm 1.67 m 46.1 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -250 m -72.1 m 41.9 m 46.1 MeV 0 eV 130 m 130 m OutOfWorld Transportation + 0 -231 m -38.4 cm 5.6 cm 52 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -250 m -14 m -8.88 m 52 MeV 0 eV 24.7 m 24.7 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = nu_e, Track ID = 8, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -149 m -93.1 cm 1.67 m 7.76 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -250 m 43.9 m 22.9 m 7.76 MeV 0 eV 113 m 113 m OutOfWorld Transportation + 0 -231 m -38.4 cm 5.6 cm 24 MeV 0 eV 0 fm 0 fm Iron initStep + 1 1.77 m 250 m 152 m 24 MeV 0 eV 374 m 374 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = anti_nu_mu, Track ID = 7, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -149 m -93.1 cm 1.67 m 50.7 MeV 0 eV 0 fm 0 fm Iron initStep - 1 250 m 206 m -145 m 50.7 MeV 0 eV 473 m 473 m OutOfWorld Transportation + 0 -231 m -38.4 cm 5.6 cm 28.7 MeV 0 eV 0 fm 0 fm Iron initStep + 1 250 m 248 m 181 m 28.7 MeV 0 eV 571 m 571 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = e+, Track ID = 1, Parent ID = 0 @@ -902,167 +856,166 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 -250 m 0 fm 0 fm 1e+03 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -247 m 0 fm 0 fm 0 eV 0 eV 2.79 m 2.79 m Iron AnnihiToMuPair + 1 -245 m 0 fm 0 fm 0 eV 0 eV 5.35 m 5.35 m Iron AnnihiToMuPair ********************************************************************************************************* * G4Track Information: Particle = mu-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -247 m 0 fm 0 fm 777 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -201 m 1.99 mm 2.4 cm 513 GeV 264 GeV 46 m 46 m Iron muIoni - 2 -165 m 3.03 cm -2.31 cm 323 GeV 190 GeV 36.1 m 82.1 m Iron muIoni - 3 -138 m 2.69 cm 1.15 cm 238 GeV 85.2 GeV 26.7 m 109 m Iron muIoni - 4 -117 m -1.75 cm -1 cm 184 GeV 53.7 GeV 21.5 m 130 m Iron muIoni - 5 -99.2 m 8.75 cm -6.03 cm 145 GeV 38.8 GeV 17.7 m 148 m Iron muIoni - 6 -84.5 m 15.5 cm -11.9 cm 116 GeV 29.1 GeV 14.7 m 163 m Iron muIoni - 7 -72.3 m 7.61 cm -5.09 cm 91.4 GeV 24.7 GeV 12.3 m 175 m Iron muIoni - 8 -62.2 m 10 cm 6.93 cm 71.7 GeV 19.7 GeV 10 m 185 m Iron muIoni - 9 -54.1 m 16 cm 20.4 cm 46.9 GeV 24.9 GeV 8.17 m 193 m Iron muIoni - 10 -48.4 m 22.5 cm 31.4 cm 34.4 GeV 12.5 GeV 5.63 m 199 m Iron muIoni - 11 -44.2 m 29.2 cm 40.9 cm 27 GeV 7.41 GeV 4.28 m 203 m Iron muIoni - 12 -40.7 m 35.9 cm 44.4 cm 21.3 GeV 5.68 GeV 3.44 m 206 m Iron muIoni - 13 -37.9 m 49.1 cm 48.4 cm 17 GeV 4.3 GeV 2.78 m 209 m Iron muIoni - 14 -35.7 m 64.3 cm 52.8 cm 13.9 GeV 3.13 GeV 2.27 m 212 m Iron muIoni - 15 -33.8 m 79.9 cm 75.3 cm 11.4 GeV 2.51 GeV 1.88 m 213 m Iron muIoni - 16 -32.3 m 90.9 cm 95 cm 9.01 GeV 2.35 GeV 1.57 m 215 m Iron muIoni - 17 -31 m 1 m 1.1 m 7.16 GeV 1.85 GeV 1.27 m 216 m Iron muIoni - 18 -30 m 1.1 m 1.23 m 5.6 GeV 1.55 GeV 1.03 m 217 m Iron muIoni - 19 -29.2 m 1.15 m 1.33 m 4.55 GeV 1.06 GeV 82.3 cm 218 m Iron muIoni - 20 -28.5 m 1.2 m 1.39 m 3.63 GeV 912 MeV 67.9 cm 219 m Iron muIoni - 21 -28 m 1.25 m 1.42 m 2.93 GeV 701 MeV 55.2 cm 219 m Iron muIoni - 22 -27.5 m 1.29 m 1.45 m 2.26 GeV 678 MeV 45.3 cm 220 m Iron muIoni - 23 -27.2 m 1.32 m 1.51 m 1.81 GeV 449 MeV 35.4 cm 220 m Iron muIoni - 24 -26.9 m 1.34 m 1.56 m 1.45 GeV 359 MeV 28.7 cm 220 m Iron muIoni - 25 -26.6 m 1.36 m 1.61 m 1.16 GeV 289 MeV 23.3 cm 221 m Iron muIoni - 26 -26.5 m 1.36 m 1.64 m 924 MeV 234 MeV 18.8 cm 221 m Iron muIoni - 27 -26.3 m 1.36 m 1.63 m 760 MeV 165 MeV 15.1 cm 221 m Iron muIoni - 28 -26.2 m 1.37 m 1.64 m 610 MeV 150 MeV 12.4 cm 221 m Iron muIoni - 29 -26.1 m 1.37 m 1.65 m 496 MeV 114 MeV 9.93 cm 221 m Iron muIoni - 30 -26 m 1.37 m 1.66 m 404 MeV 91.9 MeV 8.01 cm 221 m Iron muIoni - 31 -25.9 m 1.36 m 1.67 m 333 MeV 71.6 MeV 6.45 cm 221 m Iron muIoni - 32 -25.9 m 1.36 m 1.68 m 281 MeV 51.4 MeV 5.21 cm 221 m Iron muIoni - 33 -25.9 m 1.35 m 1.69 m 235 MeV 46.2 MeV 4.33 cm 221 m Iron muIoni - 34 -25.8 m 1.34 m 1.7 m 191 MeV 44.3 MeV 3.53 cm 222 m Iron muIoni - 35 -25.8 m 1.33 m 1.71 m 160 MeV 30.8 MeV 2.77 cm 222 m Iron muIoni - 36 -25.8 m 1.32 m 1.72 m 133 MeV 27 MeV 2.24 cm 222 m Iron muIoni - 37 -25.8 m 1.31 m 1.73 m 109 MeV 24.4 MeV 1.79 cm 222 m Iron muIoni - 38 -25.8 m 1.31 m 1.73 m 87.7 MeV 21 MeV 1.4 cm 222 m Iron muIoni - 39 -25.7 m 1.31 m 1.74 m 74.2 MeV 13.4 MeV 1.08 cm 222 m Iron muIoni - 40 -25.7 m 1.31 m 1.74 m 59.1 MeV 15.1 MeV 8.79 mm 222 m Iron muIoni - 41 -25.7 m 1.31 m 1.75 m 47.5 MeV 11.7 MeV 6.69 mm 222 m Iron muIoni - 42 -25.7 m 1.31 m 1.75 m 37.8 MeV 9.68 MeV 5.2 mm 222 m Iron muIoni - 43 -25.7 m 1.31 m 1.75 m 30.1 MeV 7.68 MeV 4.07 mm 222 m Iron muIoni - 44 -25.7 m 1.31 m 1.75 m 22.6 MeV 7.49 MeV 3.26 mm 222 m Iron muIoni - 45 -25.7 m 1.31 m 1.75 m 16 MeV 6.64 MeV 2.54 mm 222 m Iron muIoni - 46 -25.7 m 1.31 m 1.75 m 8.72 MeV 7.25 MeV 1.93 mm 222 m Iron muIoni - 47 -25.7 m 1.31 m 1.75 m 0 eV 8.72 MeV 1.05 mm 222 m Iron muIoni - 48 -25.7 m 1.31 m 1.75 m 0 eV 0 eV 0 fm 222 m Iron Decay + 0 -245 m 0 fm 0 fm 131 GeV 0 eV 0 fm 0 fm Iron initStep + 1 -231 m 4.59 cm 1.37 cm 99.8 GeV 31 GeV 13.5 m 13.5 m Iron muIoni + 2 -220 m 14.4 cm 10.6 cm 74.5 GeV 25.3 GeV 10.8 m 24.3 m Iron muIoni + 3 -212 m 11.4 cm 24.8 cm 59.6 GeV 14.9 GeV 8.44 m 32.8 m Iron muIoni + 4 -205 m 4.55 cm 31 cm 48.1 GeV 11.5 GeV 6.95 m 39.7 m Iron muIoni + 5 -199 m 1.72 cm 35.4 cm 39.2 GeV 8.89 GeV 5.76 m 45.5 m Iron muIoni + 6 -194 m -8.58 cm 41.6 cm 31.3 GeV 7.93 GeV 4.81 m 50.3 m Iron muIoni + 7 -190 m -13.7 cm 40.9 cm 24.8 GeV 6.41 GeV 3.93 m 54.2 m Iron muIoni + 8 -187 m -18.6 cm 43 cm 19.6 GeV 5.24 GeV 3.2 m 57.4 m Iron muIoni + 9 -185 m -20.3 cm 43.9 cm 15.4 GeV 4.17 GeV 2.58 m 60 m Iron muIoni + 10 -183 m -25.8 cm 44.9 cm 12.7 GeV 2.71 GeV 2.08 m 62.1 m Iron muIoni + 11 -181 m -30.7 cm 43.6 cm 9.97 GeV 2.76 GeV 1.74 m 63.8 m Iron muIoni + 12 -179 m -37.6 cm 43.6 cm 8.09 GeV 1.88 GeV 1.4 m 65.2 m Iron muIoni + 13 -178 m -40.9 cm 46.4 cm 6.55 GeV 1.54 GeV 1.15 m 66.4 m Iron muIoni + 14 -177 m -44.7 cm 48.9 cm 5.25 GeV 1.3 GeV 94.9 cm 67.3 m Iron muIoni + 15 -177 m -48.4 cm 48.5 cm 4.17 GeV 1.08 GeV 77.5 cm 68.1 m Iron muIoni + 16 -176 m -51.3 cm 48.8 cm 3.19 GeV 980 MeV 62.7 cm 68.7 m Iron muIoni + 17 -175 m -55.4 cm 49.9 cm 2.48 GeV 704 MeV 48.9 cm 69.2 m Iron muIoni + 18 -175 m -61.1 cm 51.7 cm 1.99 GeV 495 MeV 38.8 cm 69.6 m Iron muIoni + 19 -175 m -64.8 cm 54.4 cm 1.6 GeV 393 MeV 31.5 cm 69.9 m Iron muIoni + 20 -175 m -69.6 cm 56.6 cm 1.32 GeV 281 MeV 25.6 cm 70.2 m Iron muIoni + 21 -174 m -72.2 cm 58.1 cm 1.06 GeV 252 MeV 21.2 cm 70.4 m Iron muIoni + 22 -174 m -73.2 cm 58.9 cm 868 MeV 194 MeV 17.3 cm 70.6 m Iron muIoni + 23 -174 m -74.9 cm 59.7 cm 712 MeV 156 MeV 14.2 cm 70.7 m Iron muIoni + 24 -174 m -75.5 cm 61.3 cm 581 MeV 131 MeV 11.6 cm 70.8 m Iron muIoni + 25 -174 m -76.4 cm 61.8 cm 456 MeV 125 MeV 9.44 cm 70.9 m Iron muIoni + 26 -174 m -76.8 cm 61.8 cm 355 MeV 101 MeV 7.32 cm 71 m Iron muIoni + 27 -174 m -76.7 cm 62.1 cm 294 MeV 60.5 MeV 5.59 cm 71 m Iron muIoni + 28 -174 m -76.8 cm 62.6 cm 235 MeV 58.6 MeV 4.55 cm 71.1 m Iron muIoni + 29 -174 m -76.9 cm 62.7 cm 191 MeV 44.5 MeV 3.53 cm 71.1 m Iron muIoni + 30 -174 m -76.9 cm 63 cm 161 MeV 30.3 MeV 2.77 cm 71.2 m Iron muIoni + 31 -174 m -77.1 cm 63.5 cm 132 MeV 29 MeV 2.25 cm 71.2 m Iron muIoni + 32 -173 m -77.4 cm 64 cm 111 MeV 21.1 MeV 1.77 cm 71.2 m Iron muIoni + 33 -173 m -77.6 cm 64.2 cm 92.5 MeV 18.1 MeV 1.43 cm 71.2 m Iron muIoni + 34 -173 m -77.9 cm 64.3 cm 77.1 MeV 15.4 MeV 1.15 cm 71.2 m Iron muIoni + 35 -173 m -78.1 cm 64.4 cm 63.1 MeV 14.1 MeV 9.19 mm 71.2 m Iron muIoni + 36 -173 m -78.2 cm 64.5 cm 51.6 MeV 11.4 MeV 7.21 mm 71.2 m Iron muIoni + 37 -173 m -78.4 cm 64.6 cm 42.7 MeV 8.97 MeV 5.72 mm 71.2 m Iron muIoni + 38 -173 m -78.6 cm 64.6 cm 33.4 MeV 9.24 MeV 4.63 mm 71.2 m Iron muIoni + 39 -173 m -78.6 cm 64.6 cm 25.8 MeV 7.65 MeV 3.61 mm 71.3 m Iron muIoni + 40 -173 m -78.7 cm 64.6 cm 18.1 MeV 7.65 MeV 2.83 mm 71.3 m Iron muIoni + 41 -173 m -78.7 cm 64.6 cm 10.5 MeV 7.66 MeV 2.14 mm 71.3 m Iron muIoni + 42 -173 m -78.8 cm 64.6 cm 2.3 MeV 8.17 MeV 1.34 mm 71.3 m Iron muIoni + 43 -173 m -78.8 cm 64.6 cm 0 eV 2.3 MeV 102 um 71.3 m Iron muIoni + 44 -173 m -78.8 cm 64.6 cm 0 eV 0 eV 0 fm 71.3 m Iron Decay ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -25.7 m 1.31 m 1.75 m 45.2 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -25.7 m 1.31 m 1.75 m 6.81 MeV 38.4 MeV 6.04 mm 6.04 mm Iron eIoni - 2 -25.7 m 1.31 m 1.75 m 4.08 MeV 2.72 MeV 2.57 mm 8.61 mm Iron eIoni - 3 -25.7 m 1.32 m 1.75 m 1.84 MeV 2.24 MeV 2.07 mm 1.07 cm Iron eIoni - 4 -25.7 m 1.32 m 1.75 m 262 keV 1.58 MeV 1.39 mm 1.21 cm Iron eIoni - 5 -25.7 m 1.32 m 1.75 m 0 eV 262 keV 126 um 1.22 cm Iron eIoni + 0 -173 m -78.8 cm 64.6 cm 45.8 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -173 m -79.2 cm 64.7 cm 24.9 MeV 21 MeV 6.08 mm 6.08 mm Iron eIoni + 2 -173 m -79.6 cm 64.6 cm 15.9 MeV 8.99 MeV 4.62 mm 1.07 cm Iron eIoni + 3 -173 m -79.9 cm 64.4 cm 10.1 MeV 5.82 MeV 3.75 mm 1.44 cm Iron eIoni + 4 -173 m -80.2 cm 64.4 cm 5.96 MeV 4.11 MeV 3.05 mm 1.75 cm Iron eIoni + 5 -173 m -80.4 cm 64.5 cm 3.16 MeV 2.8 MeV 2.43 mm 1.99 cm Iron eIoni + 6 -173 m -80.5 cm 64.5 cm 1.07 MeV 2.09 MeV 1.85 mm 2.18 cm Iron eIoni + 7 -173 m -80.5 cm 64.5 cm 0 eV 1.07 MeV 835 um 2.26 cm Iron eIoni ********************************************************************************************************* * G4Track Information: Particle = anti_nu_e, Track ID = 5, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -25.7 m 1.31 m 1.75 m 49.5 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -192 m -72.7 m 250 m 49.5 MeV 0 eV 308 m 308 m OutOfWorld Transportation + 0 -173 m -78.8 cm 64.6 cm 33.9 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -90.6 m 250 m 46.3 m 33.9 MeV 0 eV 268 m 268 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = nu_mu, Track ID = 4, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -25.7 m 1.31 m 1.75 m 9.92 MeV 0 eV 0 fm 0 fm Iron initStep - 1 250 m 118 m 27.4 m 9.92 MeV 0 eV 301 m 301 m OutOfWorld Transportation + 0 -173 m -78.8 cm 64.6 cm 24.9 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -1.59 m 52.6 m -250 m 24.9 MeV 0 eV 309 m 309 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = mu+, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -247 m 0 fm 0 fm 223 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -227 m -4.84 cm -6.35 cm 172 GeV 50.1 GeV 20.4 m 20.4 m Iron muIoni - 2 -210 m -9.1 cm -13.2 cm 130 GeV 42.4 GeV 16.8 m 37.2 m Iron muIoni - 3 -197 m -9.63 cm -26.6 cm 91.3 GeV 38.7 GeV 13.4 m 50.6 m Iron muIoni - 4 -187 m -14 cm -29.8 cm 73.3 GeV 18 GeV 10 m 60.7 m Iron muIoni - 5 -178 m -38.6 cm -36.6 cm 58.8 GeV 14.6 GeV 8.31 m 69 m Iron muIoni - 6 -171 m -64.1 cm -43.5 cm 48 GeV 10.7 GeV 6.86 m 75.8 m Iron muIoni - 7 -166 m -87.1 cm -55 cm 39 GeV 8.99 GeV 5.75 m 81.6 m Iron muIoni - 8 -161 m -1.1 m -63 cm 31.2 GeV 7.86 GeV 4.79 m 86.4 m Iron muIoni - 9 -157 m -1.24 m -72 cm 23.3 GeV 7.85 GeV 3.92 m 90.3 m Iron muIoni - 10 -154 m -1.33 m -77.1 cm 19.2 GeV 4.17 GeV 3.01 m 93.3 m Iron muIoni - 11 -151 m -1.42 m -72.2 cm 15.6 GeV 3.54 GeV 2.52 m 95.8 m Iron muIoni - 12 -149 m -1.53 m -64.4 cm 12.2 GeV 3.43 GeV 2.1 m 97.9 m Iron muIoni - 13 -148 m -1.62 m -56.5 cm 9.93 GeV 2.27 GeV 1.67 m 99.6 m Iron muIoni - 14 -146 m -1.74 m -48 cm 7.98 GeV 1.94 GeV 1.39 m 101 m Iron muIoni - 15 -145 m -1.84 m -44.1 cm 6.57 GeV 1.42 GeV 1.14 m 102 m Iron muIoni - 16 -144 m -1.91 m -39.9 cm 5.33 GeV 1.24 GeV 95 cm 103 m Iron muIoni - 17 -143 m -2.01 m -36.2 cm 4.32 GeV 1.01 GeV 78.4 cm 104 m Iron muIoni - 18 -143 m -2.06 m -32.9 cm 3.56 GeV 760 MeV 64.6 cm 104 m Iron muIoni - 19 -142 m -2.11 m -26.6 cm 2.88 GeV 682 MeV 54.1 cm 105 m Iron muIoni - 20 -142 m -2.15 m -21.6 cm 2.32 GeV 559 MeV 44.4 cm 105 m Iron muIoni - 21 -141 m -2.2 m -17.4 cm 1.83 GeV 487 MeV 36.3 cm 106 m Iron muIoni - 22 -141 m -2.23 m -14.6 cm 1.5 GeV 330 MeV 29.1 cm 106 m Iron muIoni - 23 -141 m -2.26 m -11.9 cm 1.24 GeV 264 MeV 24.1 cm 106 m Iron muIoni - 24 -141 m -2.27 m -10 cm 883 MeV 354 MeV 20 cm 107 m Iron muIoni - 25 -141 m -2.27 m -7.84 cm 696 MeV 186 MeV 14.4 cm 107 m Iron muIoni - 26 -140 m -2.28 m -5.73 cm 551 MeV 146 MeV 11.3 cm 107 m Iron muIoni - 27 -140 m -2.3 m -4.32 cm 443 MeV 108 MeV 8.91 cm 107 m Iron muIoni - 28 -140 m -2.31 m -3.61 cm 366 MeV 76.5 MeV 7.09 cm 107 m Iron muIoni - 29 -140 m -2.31 m -3.44 cm 303 MeV 63.3 MeV 5.78 cm 107 m Iron muIoni - 30 -140 m -2.31 m -3.46 cm 255 MeV 47.6 MeV 4.69 cm 107 m Iron muIoni - 31 -140 m -2.31 m -3.79 cm 212 MeV 43.7 MeV 3.87 cm 107 m Iron muIoni - 32 -140 m -2.31 m -4.02 cm 176 MeV 35.2 MeV 3.12 cm 107 m Iron muIoni - 33 -140 m -2.31 m -3.8 cm 146 MeV 30.2 MeV 2.52 cm 107 m Iron muIoni - 34 -140 m -2.31 m -3.7 cm 118 MeV 28 MeV 2.01 cm 107 m Iron muIoni - 35 -140 m -2.3 m -3.8 cm 99.5 MeV 18.7 MeV 1.55 cm 107 m Iron muIoni - 36 -140 m -2.3 m -3.93 cm 84.1 MeV 15.4 MeV 1.25 cm 107 m Iron muIoni - 37 -140 m -2.3 m -3.92 cm 67.6 MeV 16.5 MeV 1.02 cm 107 m Iron muIoni - 38 -140 m -2.29 m -3.87 cm 56.5 MeV 11.1 MeV 7.84 mm 107 m Iron muIoni - 39 -140 m -2.29 m -3.85 cm 46.1 MeV 10.4 MeV 6.34 mm 107 m Iron muIoni - 40 -140 m -2.29 m -3.85 cm 36.9 MeV 9.21 MeV 5.03 mm 107 m Iron muIoni - 41 -140 m -2.29 m -3.7 cm 26.9 MeV 9.98 MeV 3.97 mm 107 m Iron muIoni - 42 -140 m -2.29 m -3.55 cm 19.6 MeV 7.27 MeV 2.94 mm 107 m Iron muIoni - 43 -140 m -2.29 m -3.49 cm 12.4 MeV 7.16 MeV 2.26 mm 107 m Iron muIoni - 44 -140 m -2.29 m -3.43 cm 4.5 MeV 7.95 MeV 1.58 mm 107 m Iron muIoni - 45 -140 m -2.29 m -3.43 cm 0 eV 4.5 MeV 330 um 107 m Iron muIoni - 46 -140 m -2.29 m -3.43 cm 0 eV 0 eV 0 fm 107 m Iron Decay + 0 -245 m 0 fm 0 fm 869 GeV 0 eV 0 fm 0 fm Iron initStep + 1 -196 m 6.52 mm -6.57 cm 610 GeV 259 GeV 48.7 m 48.7 m Iron muIoni + 2 -156 m 6.6 cm -15.6 cm 421 GeV 189 GeV 40 m 88.7 m Iron muIoni + 3 -124 m 10.1 cm -18.1 cm 240 GeV 181 GeV 31.8 m 121 m Iron muIoni + 4 -102 m 3.94 cm -26.1 cm 184 GeV 56.5 GeV 21.6 m 142 m Iron muIoni + 5 -84.8 m 6.95 cm -33.5 cm 142 GeV 42.2 GeV 17.7 m 160 m Iron muIoni + 6 -70.4 m 6.42 cm -34.6 cm 108 GeV 33.9 GeV 14.4 m 174 m Iron muIoni + 7 -58.9 m 9.16 cm -42.9 cm 86.8 GeV 21.1 GeV 11.5 m 186 m Iron muIoni + 8 -49.3 m 16.6 cm -49.9 cm 70.1 GeV 16.7 GeV 9.6 m 195 m Iron muIoni + 9 -41.3 m 27.3 cm -58.4 cm 55.9 GeV 14.2 GeV 7.99 m 203 m Iron muIoni + 10 -34.7 m 41.5 cm -63.4 cm 44.5 GeV 11.3 GeV 6.56 m 210 m Iron muIoni + 11 -29.3 m 46.3 cm -63 cm 34.6 GeV 9.92 GeV 5.38 m 215 m Iron muIoni + 12 -25 m 50 cm -63.8 cm 28 GeV 6.6 GeV 4.3 m 220 m Iron muIoni + 13 -21.5 m 53.4 cm -66.9 cm 22.8 GeV 5.22 GeV 3.55 m 223 m Iron muIoni + 14 -18.5 m 53.7 cm -70.9 cm 17.9 GeV 4.93 GeV 2.95 m 226 m Iron muIoni + 15 -16.2 m 59.8 cm -76.3 cm 14.3 GeV 3.58 GeV 2.37 m 228 m Iron muIoni + 16 -14.2 m 65.4 cm -76.7 cm 11.4 GeV 2.91 GeV 1.93 m 230 m Iron muIoni + 17 -12.7 m 70.9 cm -75.1 cm 8.77 GeV 2.61 GeV 1.57 m 232 m Iron muIoni + 18 -11.4 m 73.9 cm -73.6 cm 6.77 GeV 2.01 GeV 1.24 m 233 m Iron muIoni + 19 -10.5 m 75.5 cm -72.7 cm 5.45 GeV 1.32 GeV 97.7 cm 234 m Iron muIoni + 20 -9.66 m 77.3 cm -73.7 cm 4.36 GeV 1.08 GeV 80 cm 235 m Iron muIoni + 21 -9 m 78.5 cm -73.9 cm 2.15 GeV 2.22 GeV 65.2 cm 236 m Iron muIoni + 22 -8.67 m 78.4 cm -75.2 cm 1.7 GeV 442 MeV 33.7 cm 236 m Iron muIoni + 23 -8.4 m 78.3 cm -77.7 cm 1.31 GeV 397 MeV 27.1 cm 236 m Iron muIoni + 24 -8.19 m 78.7 cm -80 cm 1.07 GeV 239 MeV 21.1 cm 236 m Iron muIoni + 25 -8.01 m 78.7 cm -81.3 cm 859 MeV 209 MeV 17.3 cm 237 m Iron muIoni + 26 -7.87 m 79 cm -82.8 cm 698 MeV 162 MeV 14 cm 237 m Iron muIoni + 27 -7.76 m 79.1 cm -83.9 cm 572 MeV 126 MeV 11.4 cm 237 m Iron muIoni + 28 -7.67 m 78.7 cm -85 cm 429 MeV 143 MeV 9.27 cm 237 m Iron muIoni + 29 -7.6 m 78.5 cm -85.8 cm 353 MeV 75.6 MeV 6.85 cm 237 m Iron muIoni + 30 -7.55 m 78.2 cm -85.8 cm 289 MeV 64.2 MeV 5.56 cm 237 m Iron muIoni + 31 -7.5 m 77.7 cm -85.4 cm 234 MeV 55.5 MeV 4.45 cm 237 m Iron muIoni + 32 -7.47 m 77.2 cm -85 cm 195 MeV 39 MeV 3.5 cm 237 m Iron muIoni + 33 -7.44 m 76.4 cm -84.9 cm 158 MeV 36.2 MeV 2.83 cm 237 m Iron muIoni + 34 -7.42 m 75.9 cm -85 cm 131 MeV 27.4 MeV 2.21 cm 237 m Iron muIoni + 35 -7.4 m 75.6 cm -85 cm 109 MeV 21.5 MeV 1.76 cm 237 m Iron muIoni + 36 -7.39 m 75.2 cm -84.9 cm 91.8 MeV 17.6 MeV 1.41 cm 237 m Iron muIoni + 37 -7.38 m 74.7 cm -84.9 cm 78.3 MeV 13.6 MeV 1.14 cm 237 m Iron muIoni + 38 -7.37 m 74.4 cm -85 cm 65.4 MeV 12.9 MeV 9.34 mm 237 m Iron muIoni + 39 -7.36 m 74 cm -85.1 cm 54.5 MeV 10.8 MeV 7.53 mm 237 m Iron muIoni + 40 -7.36 m 73.7 cm -85.3 cm 44.3 MeV 10.3 MeV 6.09 mm 237 m Iron muIoni + 41 -7.35 m 73.6 cm -85.5 cm 36 MeV 8.28 MeV 4.82 mm 237 m Iron muIoni + 42 -7.35 m 73.5 cm -85.7 cm 27.7 MeV 8.26 MeV 3.88 mm 237 m Iron muIoni + 43 -7.35 m 73.5 cm -85.8 cm 20.4 MeV 7.36 MeV 3.03 mm 237 m Iron muIoni + 44 -7.35 m 73.5 cm -85.9 cm 13.2 MeV 7.21 MeV 2.33 mm 237 m Iron muIoni + 45 -7.34 m 73.5 cm -85.9 cm 6.07 MeV 7.09 MeV 1.66 mm 237 m Iron muIoni + 46 -7.34 m 73.5 cm -85.9 cm 0 eV 6.07 MeV 555 um 237 m Iron muIoni + 47 -7.34 m 73.5 cm -85.9 cm 0 eV 0 eV 0 fm 237 m Iron Decay ********************************************************************************************************* * G4Track Information: Particle = e+, Track ID = 9, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -140 m -2.29 m -3.43 cm 23.3 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -250 m -26.8 m -49.2 m 23.3 MeV 0 eV 123 m 123 m OutOfWorld Transportation + 0 -7.34 m 73.5 cm -85.9 cm 37 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -250 m 189 m -96.9 m 37 MeV 0 eV 322 m 322 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = nu_e, Track ID = 8, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -140 m -2.29 m -3.43 cm 34.1 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -151 m -250 m -58.2 m 34.1 MeV 0 eV 255 m 255 m OutOfWorld Transportation + 0 -7.34 m 73.5 cm -85.9 cm 24.3 MeV 0 eV 0 fm 0 fm Iron initStep + 1 187 m 102 m -250 m 24.3 MeV 0 eV 332 m 332 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = anti_nu_mu, Track ID = 7, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -140 m -2.29 m -3.43 cm 47.2 MeV 0 eV 0 fm 0 fm Iron initStep - 1 9.51 m 250 m 114 m 47.2 MeV 0 eV 315 m 315 m OutOfWorld Transportation + 0 -7.34 m 73.5 cm -85.9 cm 43.4 MeV 0 eV 0 fm 0 fm Iron initStep + 1 110 m -248 m 250 m 43.4 MeV 0 eV 372 m 372 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = e+, Track ID = 1, Parent ID = 0 @@ -1070,171 +1023,176 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 -250 m 0 fm 0 fm 1e+03 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -245 m 0 fm 0 fm 0 eV 0 eV 4.97 m 4.97 m Iron AnnihiToMuPair + 1 -241 m 0 fm 0 fm 0 eV 0 eV 8.62 m 8.62 m Iron AnnihiToMuPair ********************************************************************************************************* * G4Track Information: Particle = mu-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -245 m 0 fm 0 fm 203 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -226 m -2.48 cm 8.47 cm 157 GeV 45.8 GeV 19.1 m 19.1 m Iron muIoni - 2 -210 m -13.8 cm 9.52 cm 127 GeV 30.1 GeV 15.7 m 34.8 m Iron muIoni - 3 -197 m -23 cm 15.5 cm 98.9 GeV 28.3 GeV 13.2 m 48 m Iron muIoni - 4 -186 m -26.6 cm 12.2 cm 40.9 GeV 58 GeV 10.7 m 58.8 m Iron muIoni - 5 -181 m -27.2 cm 12 cm 19.1 GeV 21.8 GeV 4.99 m 63.8 m Iron muIoni - 6 -179 m -30.1 cm 8.55 cm 15.2 GeV 3.85 GeV 2.52 m 66.3 m Iron muIoni - 7 -177 m -31.5 cm 3.12 cm 12.4 GeV 2.81 GeV 2.05 m 68.3 m Iron muIoni - 8 -175 m -35.7 cm -5.96 cm 9.75 GeV 2.68 GeV 1.71 m 70 m Iron muIoni - 9 -174 m -36.7 cm -14.3 cm 7.76 GeV 1.99 GeV 1.37 m 71.4 m Iron muIoni - 10 -173 m -38 cm -19.9 cm 6.12 GeV 1.64 GeV 1.11 m 72.5 m Iron muIoni - 11 -172 m -40.9 cm -26 cm 4.86 GeV 1.26 GeV 89.2 cm 73.4 m Iron muIoni - 12 -171 m -42.4 cm -28.4 cm 3.8 GeV 1.07 GeV 72.2 cm 74.1 m Iron muIoni - 13 -170 m -43.9 cm -31.2 cm 2.88 GeV 912 MeV 57.5 cm 74.7 m Iron muIoni - 14 -170 m -46.4 cm -36.2 cm 2.35 GeV 532 MeV 44.6 cm 75.1 m Iron muIoni - 15 -170 m -50.1 cm -39.5 cm 1.81 GeV 542 MeV 36.9 cm 75.5 m Iron muIoni - 16 -169 m -53.1 cm -43.2 cm 1.41 GeV 395 MeV 28.8 cm 75.8 m Iron muIoni - 17 -169 m -56.5 cm -46 cm 1.11 GeV 306 MeV 22.8 cm 76 m Iron muIoni - 18 -169 m -58.5 cm -48 cm 909 MeV 200 MeV 18 cm 76.2 m Iron muIoni - 19 -169 m -59.4 cm -49.1 cm 697 MeV 211 MeV 14.8 cm 76.4 m Iron muIoni - 20 -169 m -60.5 cm -50.2 cm 556 MeV 142 MeV 11.4 cm 76.5 m Iron muIoni - 21 -169 m -60.6 cm -51.2 cm 453 MeV 102 MeV 9.02 cm 76.6 m Iron muIoni - 22 -168 m -60.6 cm -51.5 cm 371 MeV 82.3 MeV 7.29 cm 76.6 m Iron muIoni - 23 -168 m -60.9 cm -51.6 cm 308 MeV 63 MeV 5.88 cm 76.7 m Iron muIoni - 24 -168 m -60.7 cm -52 cm 249 MeV 59.6 MeV 4.79 cm 76.7 m Iron muIoni - 25 -168 m -60.3 cm -52.4 cm 208 MeV 40.2 MeV 3.76 cm 76.8 m Iron muIoni - 26 -168 m -60.3 cm -52.7 cm 175 MeV 33 MeV 3.06 cm 76.8 m Iron muIoni - 27 -168 m -60.3 cm -53.2 cm 147 MeV 28.4 MeV 2.5 cm 76.8 m Iron muIoni - 28 -168 m -60 cm -53.4 cm 123 MeV 24 MeV 2.02 cm 76.9 m Iron muIoni - 29 -168 m -59.8 cm -53.7 cm 101 MeV 22.3 MeV 1.63 cm 76.9 m Iron muIoni - 30 -168 m -59.4 cm -53.9 cm 84.6 MeV 16 MeV 1.27 cm 76.9 m Iron muIoni - 31 -168 m -59.1 cm -54 cm 71.7 MeV 12.9 MeV 1.03 cm 76.9 m Iron muIoni - 32 -168 m -58.8 cm -53.9 cm 59.1 MeV 12.6 MeV 8.43 mm 76.9 m Iron muIoni - 33 -168 m -58.7 cm -53.9 cm 49.6 MeV 9.52 MeV 6.69 mm 76.9 m Iron muIoni - 34 -168 m -58.6 cm -53.9 cm 40.4 MeV 9.17 MeV 5.45 mm 76.9 m Iron muIoni - 35 -168 m -58.5 cm -53.8 cm 31.2 MeV 9.18 MeV 4.36 mm 76.9 m Iron muIoni - 36 -168 m -58.4 cm -53.7 cm 24.2 MeV 6.98 MeV 3.37 mm 76.9 m Iron muIoni - 37 -168 m -58.3 cm -53.7 cm 16.9 MeV 7.36 MeV 2.69 mm 76.9 m Iron muIoni - 38 -168 m -58.2 cm -53.6 cm 9.8 MeV 7.07 MeV 2.02 mm 76.9 m Iron muIoni - 39 -168 m -58.1 cm -53.6 cm 1.74 MeV 8.06 MeV 1.23 mm 76.9 m Iron muIoni - 40 -168 m -58.1 cm -53.6 cm 0 eV 1.74 MeV 62.6 um 76.9 m Iron muIoni - 41 -168 m -58.1 cm -53.6 cm 0 eV 0 eV 0 fm 76.9 m Iron Decay + 0 -241 m 0 fm 0 fm 555 GeV 0 eV 0 fm 0 fm Iron initStep + 1 -204 m 4.23 mm -2.12 cm 413 GeV 142 GeV 37.8 m 37.8 m Iron muIoni + 2 -172 m 5.25 cm -6.8 cm 313 GeV 99.6 GeV 31.5 m 69.3 m Iron muIoni + 3 -146 m 14.7 cm -5.73 cm 238 GeV 75 GeV 26.2 m 95.5 m Iron muIoni + 4 -124 m 14.7 cm -2 cm 187 GeV 51 GeV 21.5 m 117 m Iron muIoni + 5 -106 m 14 cm 1.53 cm 148 GeV 39.1 GeV 17.9 m 135 m Iron muIoni + 6 -91.6 m 9.47 cm 3.39 mm 115 GeV 32.9 GeV 14.9 m 150 m Iron muIoni + 7 -79.4 m 13.5 cm 1.22 cm 89.3 GeV 26 GeV 12.2 m 162 m Iron muIoni + 8 -69.5 m 16.1 cm 3.2 cm 71.9 GeV 17.3 GeV 9.84 m 172 m Iron muIoni + 9 -61.4 m 19.6 cm 9.51 cm 58.7 GeV 13.2 GeV 8.18 m 180 m Iron muIoni + 10 -54.5 m 21.6 cm 16.2 cm 47.7 GeV 11 GeV 6.86 m 187 m Iron muIoni + 11 -48.8 m 26.3 cm 18.5 cm 38.7 GeV 9.01 GeV 5.72 m 193 m Iron muIoni + 12 -44 m 25 cm 23.1 cm 30.7 GeV 7.94 GeV 4.75 m 197 m Iron muIoni + 13 -40.1 m 25.9 cm 26.1 cm 24.4 GeV 6.29 GeV 3.87 m 201 m Iron muIoni + 14 -37 m 27.5 cm 31.9 cm 19.9 GeV 4.55 GeV 3.15 m 204 m Iron muIoni + 15 -34.4 m 29.4 cm 35.8 cm 15.9 GeV 3.97 GeV 2.61 m 207 m Iron muIoni + 16 -32.2 m 32.7 cm 37.8 cm 12.5 GeV 3.39 GeV 2.14 m 209 m Iron muIoni + 17 -30.5 m 36.3 cm 43 cm 9.17 GeV 3.35 GeV 1.72 m 211 m Iron muIoni + 18 -29.2 m 43.3 cm 47.9 cm 7.36 GeV 1.81 GeV 1.29 m 212 m Iron muIoni + 19 -28.2 m 44.8 cm 53.3 cm 5.89 GeV 1.47 GeV 1.06 m 213 m Iron muIoni + 20 -27.3 m 46.1 cm 57.7 cm 4.61 GeV 1.28 GeV 86.2 cm 214 m Iron muIoni + 21 -26.6 m 45.6 cm 60.2 cm 3.68 GeV 931 MeV 68.8 cm 215 m Iron muIoni + 22 -26.1 m 45.9 cm 61.9 cm 2.98 GeV 697 MeV 55.8 cm 215 m Iron muIoni + 23 -25.6 m 46.9 cm 65.1 cm 2.31 GeV 674 MeV 46 cm 216 m Iron muIoni + 24 -25.3 m 47.3 cm 69.8 cm 1.67 GeV 635 MeV 36.2 cm 216 m Iron muIoni + 25 -25 m 45.8 cm 72.6 cm 1.3 GeV 368 MeV 26.7 cm 216 m Iron muIoni + 26 -24.8 m 45.5 cm 74.1 cm 1.06 GeV 248 MeV 21.1 cm 217 m Iron muIoni + 27 -24.6 m 45.8 cm 76.4 cm 837 MeV 220 MeV 17.2 cm 217 m Iron muIoni + 28 -24.5 m 45.7 cm 77.4 cm 634 MeV 202 MeV 13.7 cm 217 m Iron muIoni + 29 -24.4 m 45.7 cm 79.1 cm 480 MeV 154 MeV 10.3 cm 217 m Iron muIoni + 30 -24.3 m 46.5 cm 79.9 cm 404 MeV 76.2 MeV 7.73 cm 217 m Iron muIoni + 31 -24.2 m 47.4 cm 80.6 cm 333 MeV 70.1 MeV 6.44 cm 217 m Iron muIoni + 32 -24.2 m 48 cm 80.8 cm 275 MeV 58.1 MeV 5.23 cm 217 m Iron muIoni + 33 -24.1 m 48.9 cm 80.6 cm 223 MeV 51.9 MeV 4.22 cm 217 m Iron muIoni + 34 -24.1 m 49.6 cm 80.5 cm 166 MeV 57.5 MeV 3.33 cm 217 m Iron muIoni + 35 -24.1 m 50.1 cm 80.3 cm 137 MeV 28.7 MeV 2.34 cm 217 m Iron muIoni + 36 -24.1 m 50.6 cm 79.9 cm 116 MeV 21.2 MeV 1.86 cm 217 m Iron muIoni + 37 -24.1 m 51.1 cm 79.5 cm 95.7 MeV 20.3 MeV 1.52 cm 217 m Iron muIoni + 38 -24 m 51.6 cm 79.2 cm 77.3 MeV 18.5 MeV 1.2 cm 217 m Iron muIoni + 39 -24 m 51.7 cm 79 cm 65.3 MeV 12 MeV 9.21 mm 217 m Iron muIoni + 40 -24 m 52 cm 78.8 cm 54.1 MeV 11.2 MeV 7.52 mm 217 m Iron muIoni + 41 -24 m 52.2 cm 78.7 cm 43.7 MeV 10.4 MeV 6.04 mm 217 m Iron muIoni + 42 -24 m 52.3 cm 78.7 cm 35 MeV 8.72 MeV 4.76 mm 217 m Iron muIoni + 43 -24 m 52.3 cm 78.6 cm 27.1 MeV 7.88 MeV 3.77 mm 217 m Iron muIoni + 44 -24 m 52.2 cm 78.6 cm 19.4 MeV 7.73 MeV 2.97 mm 217 m Iron muIoni + 45 -24 m 52.2 cm 78.6 cm 12.8 MeV 6.6 MeV 2.25 mm 217 m Iron muIoni + 46 -24 m 52.2 cm 78.5 cm 5.39 MeV 7.4 MeV 1.62 mm 217 m Iron muIoni + 47 -24 m 52.2 cm 78.5 cm 0 eV 5.39 MeV 451 um 217 m Iron muIoni + 48 -24 m 52.2 cm 78.5 cm 0 eV 0 eV 0 fm 217 m Iron Decay ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -168 m -58.1 cm -53.6 cm 42.6 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -168 m -58.2 cm -53.1 cm 29.1 MeV 13.5 MeV 5.89 mm 5.89 mm Iron eIoni - 2 -168 m -58.3 cm -52.6 cm 14.8 MeV 14.3 MeV 4.96 mm 1.08 cm Iron eIoni - 3 -168 m -58.4 cm -52.3 cm 7.38 MeV 7.39 MeV 3.62 mm 1.45 cm Iron eIoni - 4 -168 m -58.5 cm -52.1 cm 4.51 MeV 2.87 MeV 2.66 mm 1.71 cm Iron eIoni - 5 -168 m -58.4 cm -52.1 cm 2.39 MeV 2.12 MeV 2.16 mm 1.93 cm Iron eIoni - 6 -168 m -58.3 cm -52 cm 836 keV 1.56 MeV 1.62 mm 2.09 cm Iron eIoni - 7 -168 m -58.3 cm -52 cm 0 eV 836 keV 621 um 2.15 cm Iron eIoni + 0 -24 m 52.2 cm 78.5 cm 22 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -24 m 52.1 cm 78.9 cm 12.8 MeV 9.18 MeV 4.36 mm 4.36 mm Iron eIoni + 2 -24 m 52.1 cm 79.2 cm 7.39 MeV 5.42 MeV 3.4 mm 7.76 mm Iron eIoni + 3 -24 m 52.1 cm 79.4 cm 4.39 MeV 3 MeV 2.66 mm 1.04 cm Iron eIoni + 4 -24 m 52.1 cm 79.6 cm 1.23 MeV 3.16 MeV 2.13 mm 1.26 cm Iron eIoni + 5 -24 m 52.1 cm 79.6 cm 0 eV 1.23 MeV 990 um 1.35 cm Iron eIoni ********************************************************************************************************* * G4Track Information: Particle = anti_nu_e, Track ID = 5, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -168 m -58.1 cm -53.6 cm 40.1 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -250 m 99.9 m -211 m 40.1 MeV 0 eV 248 m 248 m OutOfWorld Transportation + 0 -24 m 52.2 cm 78.5 cm 40 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -250 m 233 m 6.44 m 40 MeV 0 eV 324 m 324 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = nu_mu, Track ID = 4, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -168 m -58.1 cm -53.6 cm 21.9 MeV 0 eV 0 fm 0 fm Iron initStep - 1 250 m -15.1 m -91.5 m 21.9 MeV 0 eV 428 m 428 m OutOfWorld Transportation + 0 -24 m 52.2 cm 78.5 cm 42.7 MeV 0 eV 0 fm 0 fm Iron initStep + 1 250 m -145 m -153 m 42.7 MeV 0 eV 346 m 346 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = mu+, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -245 m 0 fm 0 fm 797 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -198 m 3.51 cm -6.48 cm 584 GeV 212 GeV 46.6 m 46.6 m Iron muIoni - 2 -159 m 15.4 cm -12.3 cm 425 GeV 160 GeV 39 m 85.6 m Iron muIoni - 3 -127 m 34.5 cm -11.8 cm 287 GeV 138 GeV 32 m 118 m Iron muIoni - 4 -103 m 46.4 cm -18.5 cm 178 GeV 109 GeV 24.5 m 142 m Iron muIoni - 5 -85.7 m 56.6 cm -15.6 cm 135 GeV 43.4 GeV 17.2 m 159 m Iron muIoni - 6 -71.9 m 50.8 cm -13.4 cm 103 GeV 31.2 GeV 13.8 m 173 m Iron muIoni - 7 -60.8 m 48.6 cm -21.2 cm 65.8 GeV 37.5 GeV 11.1 m 184 m Iron muIoni - 8 -53.2 m 47.5 cm -36.4 cm 52 GeV 13.8 GeV 7.57 m 192 m Iron muIoni - 9 -47 m 58.8 cm -48.2 cm 40.6 GeV 11.4 GeV 6.17 m 198 m Iron muIoni - 10 -42.1 m 67.9 cm -55.7 cm 33.1 GeV 7.47 GeV 4.96 m 203 m Iron muIoni - 11 -37.9 m 75 cm -64.4 cm 25.8 GeV 7.39 GeV 4.13 m 207 m Iron muIoni - 12 -34.6 m 82.4 cm -68.7 cm 19.7 GeV 6.04 GeV 3.3 m 210 m Iron muIoni - 13 -32.1 m 88.2 cm -73.2 cm 16.1 GeV 3.6 GeV 2.59 m 213 m Iron muIoni - 14 -29.9 m 89.9 cm -80.2 cm 12.8 GeV 3.29 GeV 2.16 m 215 m Iron muIoni - 15 -28.2 m 91 cm -87.3 cm 10.3 GeV 2.5 GeV 1.75 m 217 m Iron muIoni - 16 -26.7 m 89.6 cm -97.5 cm 7.16 GeV 3.16 GeV 1.44 m 218 m Iron muIoni - 17 -25.7 m 93 cm -1.07 m 5.84 GeV 1.31 GeV 1.03 m 219 m Iron muIoni - 18 -24.9 m 94.5 cm -1.15 m 4.81 GeV 1.03 GeV 85.4 cm 220 m Iron muIoni - 19 -24.1 m 97.3 cm -1.22 m 3.78 GeV 1.03 GeV 71.4 cm 221 m Iron muIoni - 20 -23.6 m 97.8 cm -1.29 m 3.07 GeV 715 MeV 57.2 cm 221 m Iron muIoni - 21 -23.1 m 98.6 cm -1.32 m 2.43 GeV 635 MeV 47.1 cm 222 m Iron muIoni - 22 -22.7 m 99.1 cm -1.35 m 1.93 GeV 500 MeV 38 cm 222 m Iron muIoni - 23 -22.4 m 98.4 cm -1.37 m 1.56 GeV 371 MeV 30.6 cm 223 m Iron muIoni - 24 -22.2 m 97.7 cm -1.4 m 1.22 GeV 346 MeV 25 cm 223 m Iron muIoni - 25 -22 m 97.7 cm -1.42 m 900 MeV 316 MeV 19.6 cm 223 m Iron muIoni - 26 -21.8 m 97.7 cm -1.43 m 722 MeV 178 MeV 14.6 cm 223 m Iron muIoni - 27 -21.7 m 96.7 cm -1.44 m 578 MeV 143 MeV 11.7 cm 223 m Iron muIoni - 28 -21.6 m 95.4 cm -1.45 m 467 MeV 112 MeV 9.37 cm 223 m Iron muIoni - 29 -21.5 m 94.7 cm -1.47 m 383 MeV 83.8 MeV 7.49 cm 224 m Iron muIoni - 30 -21.5 m 93.8 cm -1.48 m 312 MeV 70.6 MeV 6.06 cm 224 m Iron muIoni - 31 -21.4 m 93 cm -1.5 m 260 MeV 52.1 MeV 4.85 cm 224 m Iron muIoni - 32 -21.4 m 92 cm -1.49 m 215 MeV 45.4 MeV 3.95 cm 224 m Iron muIoni - 33 -21.4 m 91.3 cm -1.5 m 174 MeV 40.3 MeV 3.17 cm 224 m Iron muIoni - 34 -21.4 m 91 cm -1.5 m 145 MeV 29 MeV 2.48 cm 224 m Iron muIoni - 35 -21.3 m 91 cm -1.5 m 119 MeV 26.6 MeV 2 cm 224 m Iron muIoni - 36 -21.3 m 91.1 cm -1.51 m 99.6 MeV 19.2 MeV 1.56 cm 224 m Iron muIoni - 37 -21.3 m 91.2 cm -1.51 m 81.4 MeV 18.2 MeV 1.25 cm 224 m Iron muIoni - 38 -21.3 m 91.1 cm -1.51 m 65.8 MeV 15.6 MeV 9.8 mm 224 m Iron muIoni - 39 -21.3 m 90.9 cm -1.51 m 55 MeV 10.7 MeV 7.58 mm 224 m Iron muIoni - 40 -21.3 m 90.7 cm -1.51 m 45.5 MeV 9.58 MeV 6.16 mm 224 m Iron muIoni - 41 -21.3 m 90.5 cm -1.5 m 37.2 MeV 8.23 MeV 4.96 mm 224 m Iron muIoni - 42 -21.3 m 90.4 cm -1.5 m 28.9 MeV 8.35 MeV 4.01 mm 224 m Iron muIoni - 43 -21.3 m 90.4 cm -1.5 m 21.7 MeV 7.15 MeV 3.14 mm 224 m Iron muIoni - 44 -21.3 m 90.4 cm -1.5 m 14.8 MeV 6.9 MeV 2.46 mm 224 m Iron muIoni - 45 -21.3 m 90.4 cm -1.5 m 7.51 MeV 7.31 MeV 1.83 mm 224 m Iron muIoni - 46 -21.3 m 90.4 cm -1.5 m 0 eV 7.51 MeV 808 um 224 m Iron muIoni - 47 -21.3 m 90.4 cm -1.5 m 0 eV 0 eV 0 fm 224 m Iron Decay + 0 -241 m 0 fm 0 fm 445 GeV 0 eV 0 fm 0 fm Iron initStep + 1 -208 m -1.78 cm 8.36 mm 321 GeV 124 GeV 33 m 33 m Iron muIoni + 2 -182 m 1.02 cm -3.01 cm 250 GeV 71.2 GeV 26.6 m 59.5 m Iron muIoni + 3 -160 m 4.57 cm -2.77 cm 186 GeV 63.2 GeV 22.2 m 81.8 m Iron muIoni + 4 -142 m 10.4 cm -4.78 cm 145 GeV 41.7 GeV 17.8 m 99.6 m Iron muIoni + 5 -127 m 12 cm -19.6 cm 115 GeV 29.8 GeV 14.6 m 114 m Iron muIoni + 6 -115 m 14.7 cm -42 cm 90.4 GeV 24.4 GeV 12.1 m 126 m Iron muIoni + 7 -105 m 18.4 cm -60.4 cm 73.3 GeV 17.1 GeV 9.93 m 136 m Iron muIoni + 8 -96.8 m 12.2 cm -77 cm 58.8 GeV 14.5 GeV 8.31 m 145 m Iron muIoni + 9 -89.9 m 10 cm -93.1 cm 48.3 GeV 10.6 GeV 6.87 m 151 m Iron muIoni + 10 -84.1 m 12.6 cm -1.16 m 37.6 GeV 10.7 GeV 5.78 m 157 m Iron muIoni + 11 -79.5 m 19.7 cm -1.33 m 29.3 GeV 8.29 GeV 4.62 m 162 m Iron muIoni + 12 -75.8 m 27.1 cm -1.37 m 23.9 GeV 5.39 GeV 3.7 m 166 m Iron muIoni + 13 -72.7 m 30.6 cm -1.38 m 16.8 GeV 7.03 GeV 3.08 m 169 m Iron muIoni + 14 -70.5 m 34 cm -1.38 m 13.8 GeV 3.05 GeV 2.24 m 171 m Iron muIoni + 15 -68.6 m 37 cm -1.4 m 11.3 GeV 2.53 GeV 1.87 m 173 m Iron muIoni + 16 -67.1 m 38.2 cm -1.46 m 8.88 GeV 2.38 GeV 1.56 m 174 m Iron muIoni + 17 -65.8 m 43.5 cm -1.52 m 6.92 GeV 1.96 GeV 1.25 m 176 m Iron muIoni + 18 -64.8 m 48.1 cm -1.56 m 5.45 GeV 1.47 GeV 99.7 cm 177 m Iron muIoni + 19 -64 m 51 cm -1.61 m 4.38 GeV 1.07 GeV 80.1 cm 177 m Iron muIoni + 20 -63.4 m 54.2 cm -1.63 m 3.46 GeV 919 MeV 65.4 cm 178 m Iron muIoni + 21 -62.8 m 56.6 cm -1.64 m 2.58 GeV 882 MeV 52.6 cm 179 m Iron muIoni + 22 -62.4 m 58.6 cm -1.65 m 1.63 GeV 942 MeV 40 cm 179 m Iron muIoni + 23 -62.2 m 58.9 cm -1.65 m 1.27 GeV 367 MeV 26.1 cm 179 m Iron muIoni + 24 -62 m 60.1 cm -1.65 m 1.05 GeV 221 MeV 20.5 cm 179 m Iron muIoni + 25 -61.8 m 61.4 cm -1.65 m 865 MeV 182 MeV 17 cm 180 m Iron muIoni + 26 -61.7 m 64.1 cm -1.66 m 678 MeV 187 MeV 14.1 cm 180 m Iron muIoni + 27 -61.6 m 66.4 cm -1.66 m 549 MeV 129 MeV 11 cm 180 m Iron muIoni + 28 -61.5 m 67.8 cm -1.66 m 461 MeV 88.4 MeV 8.89 cm 180 m Iron muIoni + 29 -61.4 m 68.6 cm -1.66 m 379 MeV 82.2 MeV 7.4 cm 180 m Iron muIoni + 30 -61.3 m 69.7 cm -1.66 m 295 MeV 83.4 MeV 6 cm 180 m Iron muIoni + 31 -61.3 m 70.3 cm -1.66 m 240 MeV 55.5 MeV 4.56 cm 180 m Iron muIoni + 32 -61.3 m 70.8 cm -1.66 m 197 MeV 42.8 MeV 3.6 cm 180 m Iron muIoni + 33 -61.2 m 71.2 cm -1.66 m 162 MeV 35.5 MeV 2.87 cm 180 m Iron muIoni + 34 -61.2 m 71.3 cm -1.66 m 132 MeV 29.7 MeV 2.26 cm 180 m Iron muIoni + 35 -61.2 m 71.4 cm -1.66 m 109 MeV 22.3 MeV 1.77 cm 180 m Iron muIoni + 36 -61.2 m 71.5 cm -1.66 m 91 MeV 18.5 MeV 1.41 cm 180 m Iron muIoni + 37 -61.2 m 71.5 cm -1.66 m 77.3 MeV 13.6 MeV 1.12 cm 180 m Iron muIoni + 38 -61.2 m 71.4 cm -1.66 m 63.4 MeV 13.9 MeV 9.21 mm 180 m Iron muIoni + 39 -61.2 m 71.2 cm -1.66 m 51.6 MeV 11.8 MeV 7.25 mm 180 m Iron muIoni + 40 -61.1 m 71.1 cm -1.66 m 41.9 MeV 9.77 MeV 5.71 mm 180 m Iron muIoni + 41 -61.1 m 71 cm -1.66 m 33.3 MeV 8.54 MeV 4.53 mm 180 m Iron muIoni + 42 -61.1 m 70.9 cm -1.66 m 24.8 MeV 8.52 MeV 3.59 mm 180 m Iron muIoni + 43 -61.1 m 70.9 cm -1.66 m 17.6 MeV 7.24 MeV 2.74 mm 180 m Iron muIoni + 44 -61.1 m 70.8 cm -1.66 m 10 MeV 7.55 MeV 2.08 mm 180 m Iron muIoni + 45 -61.1 m 70.8 cm -1.66 m 2.21 MeV 7.79 MeV 1.26 mm 180 m Iron muIoni + 46 -61.1 m 70.8 cm -1.66 m 0 eV 2.21 MeV 95.7 um 180 m Iron muIoni + 47 -61.1 m 70.8 cm -1.66 m 0 eV 0 eV 0 fm 180 m Iron Decay ********************************************************************************************************* * G4Track Information: Particle = e+, Track ID = 9, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -21.3 m 90.4 cm -1.5 m 51.5 MeV 0 eV 0 fm 0 fm Iron initStep - 1 -250 m -132 m -54.7 m 51.5 MeV 0 eV 270 m 270 m OutOfWorld Transportation + 0 -61.1 m 70.8 cm -1.66 m 33.9 MeV 0 eV 0 fm 0 fm Iron initStep + 1 2.84 m 250 m -159 m 33.9 MeV 0 eV 302 m 302 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = nu_e, Track ID = 8, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -21.3 m 90.4 cm -1.5 m 25.4 MeV 0 eV 0 fm 0 fm Iron initStep - 1 250 m 220 m 148 m 25.4 MeV 0 eV 379 m 379 m OutOfWorld Transportation + 0 -61.1 m 70.8 cm -1.66 m 29.9 MeV 0 eV 0 fm 0 fm Iron initStep + 1 250 m -34.7 m 202 m 29.9 MeV 0 eV 373 m 373 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = anti_nu_mu, Track ID = 7, Parent ID = 2 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -21.3 m 90.4 cm -1.5 m 27.7 MeV 0 eV 0 fm 0 fm Iron initStep - 1 250 m 115 m -7.67 cm 27.7 MeV 0 eV 294 m 294 m OutOfWorld Transportation + 0 -61.1 m 70.8 cm -1.66 m 40.8 MeV 0 eV 0 fm 0 fm Iron initStep + 1 -250 m -147 m 6.46 m 40.8 MeV 0 eV 240 m 240 m OutOfWorld Transportation Run terminated. Run Summary Number of events processed : 5 - User=0.4s Real=0.54s Sys=0.09s + User=0.39s Real=0.73s Sys=0.11s --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 384969411, 1465002996 + Current couple of seeds = 2036273619, 1795196462 ---------------------------------------- # /gun/particle anti_proton @@ -1262,7 +1220,7 @@ Index : 0 used in the geometry : Yes recalculation needed : No --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 384969411, 1465002996 + Current couple of seeds = 2036273619, 1795196462 ---------------------------------------- Start Run processing. @@ -1274,62 +1232,62 @@ Start Run processing. Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 -250 m 0 fm 0 fm 1 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -250 m -521 um 646 um 927 MeV 72.6 MeV 5.8 cm 5.8 cm Iron hhIoni - 2 -250 m -3.47 mm -334 um 860 MeV 67.1 MeV 5.23 cm 11 cm Iron hhIoni - 3 -250 m -6.76 mm -927 um 800 MeV 60.4 MeV 4.71 cm 15.7 cm Iron hhIoni - 4 -250 m -8.87 mm -268 um 742 MeV 57.4 MeV 4.24 cm 20 cm Iron hhIoni - 5 -250 m -1.08 cm -269 um 691 MeV 51 MeV 3.82 cm 23.8 cm Iron hhIoni - 6 -250 m -1.22 cm -109 um 644 MeV 47.9 MeV 3.45 cm 27.3 cm Iron hhIoni - 7 -250 m -1.26 cm 591 um 599 MeV 44.9 MeV 3.1 cm 30.4 cm Iron hhIoni - 8 -250 m -1.32 cm 1.53 mm 556 MeV 42.5 MeV 2.79 cm 33.1 cm Iron hhIoni - 9 -250 m -1.41 cm 2.87 mm 519 MeV 37.3 MeV 2.5 cm 35.6 cm Iron hhIoni - 10 -250 m -1.48 cm 3.57 mm 485 MeV 33.7 MeV 2.25 cm 37.9 cm Iron hhIoni - 11 -250 m -1.61 cm 4.48 mm 451 MeV 33.8 MeV 2.03 cm 39.9 cm Iron hhIoni - 12 -250 m -1.71 cm 5.32 mm 424 MeV 27.6 MeV 1.82 cm 41.7 cm Iron hhIoni - 13 -250 m -1.8 cm 5.88 mm 397 MeV 27 MeV 1.65 cm 43.4 cm Iron hhIoni - 14 -250 m -1.89 cm 6.79 mm 369 MeV 28.3 MeV 1.49 cm 44.9 cm Iron hhIoni - 15 -250 m -2 cm 7.49 mm 344 MeV 24.4 MeV 1.33 cm 46.2 cm Iron hhIoni - 16 -250 m -2.11 cm 8.36 mm 322 MeV 21.9 MeV 1.19 cm 47.4 cm Iron hhIoni - 17 -250 m -2.19 cm 9.2 mm 301 MeV 21 MeV 1.07 cm 48.5 cm Iron hhIoni - 18 -250 m -2.3 cm 9.81 mm 281 MeV 20.5 MeV 9.63 mm 49.4 cm Iron hhIoni - 19 -249 m -2.41 cm 1.03 cm 264 MeV 16.7 MeV 8.62 mm 50.3 cm Iron hhIoni - 20 -249 m -2.52 cm 1.09 cm 249 MeV 15.6 MeV 7.8 mm 51.1 cm Iron hhIoni - 21 -249 m -2.6 cm 1.16 cm 234 MeV 14.7 MeV 7.05 mm 51.8 cm Iron hhIoni - 22 -249 m -2.68 cm 1.24 cm 219 MeV 14.7 MeV 6.41 mm 52.4 cm Iron hhIoni - 23 -249 m -2.75 cm 1.32 cm 205 MeV 14 MeV 5.78 mm 53 cm Iron hhIoni - 24 -249 m -2.81 cm 1.39 cm 192 MeV 12.8 MeV 5.17 mm 53.5 cm Iron hhIoni - 25 -249 m -2.86 cm 1.46 cm 180 MeV 12.2 MeV 4.66 mm 54 cm Iron hhIoni - 26 -249 m -2.91 cm 1.53 cm 169 MeV 11.3 MeV 4.2 mm 54.4 cm Iron hhIoni - 27 -249 m -2.96 cm 1.6 cm 160 MeV 9.21 MeV 3.78 mm 54.8 cm Iron hhIoni - 28 -249 m -3.02 cm 1.66 cm 149 MeV 10.1 MeV 3.43 mm 55.1 cm Iron hhIoni - 29 -249 m -3.08 cm 1.71 cm 141 MeV 8.89 MeV 3.1 mm 55.4 cm Iron hhIoni - 30 -249 m -3.13 cm 1.75 cm 131 MeV 9.47 MeV 2.81 mm 55.7 cm Iron hhIoni - 31 -249 m -3.17 cm 1.79 cm 123 MeV 7.79 MeV 2.51 mm 56 cm Iron hhIoni - 32 -249 m -3.21 cm 1.82 cm 115 MeV 8.02 MeV 2.27 mm 56.2 cm Iron hhIoni - 33 -249 m -3.24 cm 1.83 cm 107 MeV 7.75 MeV 2.05 mm 56.4 cm Iron hhIoni - 34 -249 m -3.27 cm 1.85 cm 101 MeV 6.15 MeV 1.83 mm 56.6 cm Iron hhIoni - 35 -249 m -3.29 cm 1.87 cm 94.3 MeV 7.08 MeV 1.66 mm 56.8 cm Iron hhIoni - 36 -249 m -3.31 cm 1.89 cm 88 MeV 6.23 MeV 1.49 mm 56.9 cm Iron hhIoni - 37 -249 m -3.33 cm 1.91 cm 81.9 MeV 6.09 MeV 1.35 mm 57 cm Iron hhIoni - 38 -249 m -3.36 cm 1.93 cm 76.2 MeV 5.69 MeV 1.2 mm 57.2 cm Iron hhIoni - 39 -249 m -3.39 cm 1.94 cm 70.7 MeV 5.57 MeV 1.08 mm 57.3 cm Iron hhIoni - 40 -249 m -3.41 cm 1.96 cm 66.1 MeV 4.58 MeV 973 um 57.4 cm Iron hhIoni - 41 -249 m -3.43 cm 1.98 cm 60.8 MeV 5.32 MeV 883 um 57.5 cm Iron hhIoni - 42 -249 m -3.45 cm 1.98 cm 55.7 MeV 5.08 MeV 785 um 57.5 cm Iron hhIoni - 43 -249 m -3.47 cm 1.99 cm 51.3 MeV 4.39 MeV 701 um 57.6 cm Iron hhIoni - 44 -249 m -3.48 cm 2 cm 47 MeV 4.33 MeV 628 um 57.7 cm Iron hhIoni - 45 -249 m -3.49 cm 2.01 cm 43 MeV 3.94 MeV 564 um 57.7 cm Iron hhIoni - 46 -249 m -3.5 cm 2.01 cm 39.3 MeV 3.78 MeV 509 um 57.8 cm Iron hhIoni - 47 -249 m -3.51 cm 2.02 cm 35.3 MeV 3.91 MeV 457 um 57.8 cm Iron hhIoni - 48 -249 m -3.52 cm 2.02 cm 31.9 MeV 3.49 MeV 411 um 57.9 cm Iron hhIoni - 49 -249 m -3.52 cm 2.02 cm 27.8 MeV 4.01 MeV 370 um 57.9 cm Iron hhIoni - 50 -249 m -3.53 cm 2.02 cm 24.3 MeV 3.51 MeV 329 um 57.9 cm Iron hhIoni - 51 -249 m -3.54 cm 2.02 cm 20.8 MeV 3.55 MeV 294 um 58 cm Iron hhIoni - 52 -249 m -3.55 cm 2.02 cm 17.2 MeV 3.54 MeV 263 um 58 cm Iron hhIoni - 53 -249 m -3.56 cm 2.04 cm 13.4 MeV 3.86 MeV 234 um 58 cm Iron hhIoni - 54 -249 m -3.57 cm 2.05 cm 9.2 MeV 4.18 MeV 203 um 58 cm Iron hhIoni - 55 -249 m -3.57 cm 2.05 cm 4.16 MeV 5.05 MeV 164 um 58 cm Iron hhIoni - 56 -249 m -3.58 cm 2.05 cm 0 eV 4.16 MeV 60.6 um 58 cm Iron hhIoni + 1 -250 m 187 um 809 um 928 MeV 72.3 MeV 5.8 cm 5.8 cm Iron hhIoni + 2 -250 m -932 um 429 um 858 MeV 69.7 MeV 5.23 cm 11 cm Iron hhIoni + 3 -250 m -110 um -399 um 800 MeV 58.2 MeV 4.69 cm 15.7 cm Iron hhIoni + 4 -250 m 1.15 mm -1.4 mm 744 MeV 56.2 MeV 4.24 cm 20 cm Iron hhIoni + 5 -250 m 2.12 mm -2.55 mm 695 MeV 48.9 MeV 3.83 cm 23.8 cm Iron hhIoni + 6 -250 m 3.9 mm -2.94 mm 646 MeV 48.6 MeV 3.47 cm 27.3 cm Iron hhIoni + 7 -250 m 5.87 mm -3.1 mm 601 MeV 45.6 MeV 3.12 cm 30.4 cm Iron hhIoni + 8 -250 m 8.03 mm -3.37 mm 559 MeV 41.2 MeV 2.8 cm 33.2 cm Iron hhIoni + 9 -250 m 1.03 cm -3.67 mm 519 MeV 40.7 MeV 2.52 cm 35.7 cm Iron hhIoni + 10 -250 m 1.24 cm -4.19 mm 487 MeV 31.7 MeV 2.25 cm 38 cm Iron hhIoni + 11 -250 m 1.48 cm -4.35 mm 455 MeV 32 MeV 2.04 cm 40 cm Iron hhIoni + 12 -250 m 1.68 cm -4.09 mm 425 MeV 30 MeV 1.84 cm 41.8 cm Iron hhIoni + 13 -250 m 1.84 cm -3.71 mm 399 MeV 26.1 MeV 1.66 cm 43.5 cm Iron hhIoni + 14 -250 m 1.94 cm -3.04 mm 372 MeV 27 MeV 1.5 cm 45 cm Iron hhIoni + 15 -250 m 1.98 cm -2.61 mm 348 MeV 23.9 MeV 1.35 cm 46.4 cm Iron hhIoni + 16 -250 m 2.04 cm -2.19 mm 326 MeV 21.8 MeV 1.21 cm 47.6 cm Iron hhIoni + 17 -250 m 2.09 cm -1.64 mm 305 MeV 21.5 MeV 1.09 cm 48.7 cm Iron hhIoni + 18 -250 m 2.13 cm -1.11 mm 285 MeV 19.4 MeV 9.8 mm 49.6 cm Iron hhIoni + 19 -249 m 2.12 cm -404 um 267 MeV 17.9 MeV 8.84 mm 50.5 cm Iron hhIoni + 20 -249 m 2.12 cm 127 um 252 MeV 15.7 MeV 7.96 mm 51.3 cm Iron hhIoni + 21 -249 m 2.13 cm 481 um 235 MeV 16.8 MeV 7.18 mm 52 cm Iron hhIoni + 22 -249 m 2.13 cm 893 um 220 MeV 14.8 MeV 6.45 mm 52.7 cm Iron hhIoni + 23 -249 m 2.12 cm 976 um 207 MeV 13 MeV 5.81 mm 53.3 cm Iron hhIoni + 24 -249 m 2.12 cm 1.16 mm 194 MeV 12.5 MeV 5.25 mm 53.8 cm Iron hhIoni + 25 -249 m 2.12 cm 1.28 mm 182 MeV 12.4 MeV 4.74 mm 54.3 cm Iron hhIoni + 26 -249 m 2.12 cm 1.57 mm 171 MeV 10.9 MeV 4.27 mm 54.7 cm Iron hhIoni + 27 -249 m 2.11 cm 1.94 mm 161 MeV 10 MeV 3.86 mm 55.1 cm Iron hhIoni + 28 -249 m 2.09 cm 2.3 mm 150 MeV 10.8 MeV 3.49 mm 55.4 cm Iron hhIoni + 29 -249 m 2.08 cm 2.61 mm 141 MeV 9.48 MeV 3.13 mm 55.7 cm Iron hhIoni + 30 -249 m 2.06 cm 2.81 mm 132 MeV 9.25 MeV 2.82 mm 56 cm Iron hhIoni + 31 -249 m 2.06 cm 3.02 mm 123 MeV 8.4 MeV 2.52 mm 56.3 cm Iron hhIoni + 32 -249 m 2.05 cm 3.14 mm 115 MeV 8.32 MeV 2.26 mm 56.5 cm Iron hhIoni + 33 -249 m 2.04 cm 3.23 mm 107 MeV 7.83 MeV 2.03 mm 56.7 cm Iron hhIoni + 34 -249 m 2.04 cm 3.38 mm 101 MeV 6.42 MeV 1.82 mm 56.9 cm Iron hhIoni + 35 -249 m 2.04 cm 3.52 mm 93.5 MeV 7.03 MeV 1.64 mm 57 cm Iron hhIoni + 36 -249 m 2.03 cm 3.65 mm 87.5 MeV 6.02 MeV 1.48 mm 57.2 cm Iron hhIoni + 37 -249 m 2.02 cm 3.76 mm 81.9 MeV 5.67 MeV 1.33 mm 57.3 cm Iron hhIoni + 38 -249 m 2.01 cm 3.83 mm 76.3 MeV 5.57 MeV 1.2 mm 57.4 cm Iron hhIoni + 39 -249 m 2 cm 3.91 mm 70.7 MeV 5.54 MeV 1.08 mm 57.6 cm Iron hhIoni + 40 -249 m 1.99 cm 3.93 mm 65.3 MeV 5.44 MeV 974 um 57.7 cm Iron hhIoni + 41 -249 m 1.99 cm 3.97 mm 60.5 MeV 4.81 MeV 867 um 57.7 cm Iron hhIoni + 42 -249 m 1.98 cm 4 mm 55.6 MeV 4.84 MeV 780 um 57.8 cm Iron hhIoni + 43 -249 m 1.97 cm 4.03 mm 51.3 MeV 4.31 MeV 700 um 57.9 cm Iron hhIoni + 44 -249 m 1.95 cm 4.06 mm 46.8 MeV 4.49 MeV 628 um 57.9 cm Iron hhIoni + 45 -249 m 1.94 cm 4.05 mm 42.7 MeV 4.19 MeV 562 um 58 cm Iron hhIoni + 46 -249 m 1.93 cm 4.05 mm 38.7 MeV 3.96 MeV 504 um 58.1 cm Iron hhIoni + 47 -249 m 1.92 cm 4.04 mm 34.7 MeV 4.02 MeV 451 um 58.1 cm Iron hhIoni + 48 -249 m 1.91 cm 4.04 mm 31 MeV 3.64 MeV 403 um 58.1 cm Iron hhIoni + 49 -249 m 1.91 cm 4.02 mm 27.4 MeV 3.65 MeV 361 um 58.2 cm Iron hhIoni + 50 -249 m 1.9 cm 4.01 mm 23.8 MeV 3.63 MeV 324 um 58.2 cm Iron hhIoni + 51 -249 m 1.89 cm 3.99 mm 20 MeV 3.72 MeV 289 um 58.2 cm Iron hhIoni + 52 -249 m 1.89 cm 3.97 mm 16.3 MeV 3.76 MeV 256 um 58.3 cm Iron hhIoni + 53 -249 m 1.89 cm 3.97 mm 12.4 MeV 3.91 MeV 226 um 58.3 cm Iron hhIoni + 54 -249 m 1.89 cm 3.97 mm 8.05 MeV 4.34 MeV 194 um 58.3 cm Iron hhIoni + 55 -249 m 1.88 cm 3.99 mm 2.83 MeV 5.21 MeV 148 um 58.3 cm Iron hhIoni + 56 -249 m 1.88 cm 3.98 mm 0 eV 2.83 MeV 32.7 um 58.3 cm Iron hhIoni ********************************************************************************************************* * G4Track Information: Particle = anti_proton, Track ID = 1, Parent ID = 0 @@ -1337,70 +1295,70 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 -250 m 0 fm 0 fm 1 GeV 0 eV 0 fm 0 fm Iron initStep - 1 -250 m 410 um 722 um 925 MeV 75.4 MeV 5.8 cm 5.8 cm Iron hhIoni - 2 -250 m 97.4 um 3.05 mm 862 MeV 62.8 MeV 5.21 cm 11 cm Iron hhIoni - 3 -250 m -712 um 4.72 mm 797 MeV 65.2 MeV 4.72 cm 15.7 cm Iron hhIoni - 4 -250 m -2.85 mm 5.58 mm 740 MeV 57 MeV 4.22 cm 19.9 cm Iron hhIoni - 5 -250 m -5.34 mm 5.11 mm 692 MeV 47.9 MeV 3.8 cm 23.7 cm Iron hhIoni - 6 -250 m -7.07 mm 3.98 mm 643 MeV 48.5 MeV 3.45 cm 27.2 cm Iron hhIoni - 7 -250 m -9.87 mm 2.91 mm 596 MeV 47.6 MeV 3.1 cm 30.3 cm Iron hhIoni - 8 -250 m -1.29 cm 1.34 mm 556 MeV 39.1 MeV 2.77 cm 33.1 cm Iron hhIoni - 9 -250 m -1.49 cm 8.39 um 520 MeV 36.9 MeV 2.5 cm 35.6 cm Iron hhIoni - 10 -250 m -1.67 cm -550 um 483 MeV 36.5 MeV 2.25 cm 37.8 cm Iron hhIoni - 11 -250 m -1.85 cm -1.16 mm 450 MeV 32.9 MeV 2.02 cm 39.8 cm Iron hhIoni - 12 -250 m -2.02 cm -1.46 mm 422 MeV 28.1 MeV 1.81 cm 41.7 cm Iron hhIoni - 13 -250 m -2.15 cm -1.68 mm 396 MeV 26.1 MeV 1.64 cm 43.3 cm Iron hhIoni - 14 -250 m -2.26 cm -1.51 mm 373 MeV 22.7 MeV 1.48 cm 44.8 cm Iron hhIoni - 15 -250 m -2.34 cm -1.61 mm 348 MeV 25.7 MeV 1.35 cm 46.1 cm Iron hhIoni - 16 -250 m -2.48 cm -1.69 mm 323 MeV 24.2 MeV 1.21 cm 47.3 cm Iron hhIoni - 17 -250 m -2.58 cm -1.55 mm 302 MeV 20.9 MeV 1.08 cm 48.4 cm Iron hhIoni - 18 -250 m -2.7 cm -1.37 mm 284 MeV 18.8 MeV 9.69 mm 49.4 cm Iron hhIoni - 19 -249 m -2.8 cm -1.32 mm 267 MeV 16.7 MeV 8.76 mm 50.3 cm Iron hhIoni - 20 -249 m -2.9 cm -1.51 mm 249 MeV 17.7 MeV 7.94 mm 51.1 cm Iron hhIoni - 21 -249 m -3 cm -1.64 mm 233 MeV 16.3 MeV 7.08 mm 51.8 cm Iron hhIoni - 22 -249 m -3.09 cm -1.85 mm 218 MeV 15.4 MeV 6.37 mm 52.4 cm Iron hhIoni - 23 -249 m -3.17 cm -2.01 mm 205 MeV 12.5 MeV 5.71 mm 53 cm Iron hhIoni - 24 -249 m -3.25 cm -2.23 mm 192 MeV 12.7 MeV 5.17 mm 53.5 cm Iron hhIoni - 25 -249 m -3.32 cm -2.49 mm 179 MeV 13 MeV 4.66 mm 54 cm Iron hhIoni - 26 -249 m -3.38 cm -2.71 mm 168 MeV 11.2 MeV 4.18 mm 54.4 cm Iron hhIoni - 27 -249 m -3.42 cm -2.89 mm 158 MeV 10.4 MeV 3.75 mm 54.8 cm Iron hhIoni - 28 -249 m -3.48 cm -2.9 mm 147 MeV 10.9 MeV 3.37 mm 55.1 cm Iron hhIoni - 29 -249 m -3.53 cm -2.92 mm 138 MeV 9.31 MeV 3.02 mm 55.4 cm Iron hhIoni - 30 -249 m -3.57 cm -2.98 mm 128 MeV 9.56 MeV 2.72 mm 55.7 cm Iron hhIoni - 31 -249 m -3.61 cm -2.96 mm 119 MeV 8.56 MeV 2.41 mm 55.9 cm Iron hhIoni - 32 -249 m -3.64 cm -2.94 mm 112 MeV 7.24 MeV 2.16 mm 56.1 cm Iron hhIoni - 33 -249 m -3.67 cm -2.94 mm 105 MeV 7.1 MeV 1.96 mm 56.3 cm Iron hhIoni - 34 -249 m -3.7 cm -2.89 mm 98.2 MeV 6.91 MeV 1.77 mm 56.5 cm Iron hhIoni - 35 -249 m -3.72 cm -2.81 mm 91.5 MeV 6.68 MeV 1.59 mm 56.6 cm Iron hhIoni - 36 -249 m -3.73 cm -2.72 mm 85.7 MeV 5.84 MeV 1.43 mm 56.8 cm Iron hhIoni - 37 -249 m -3.75 cm -2.64 mm 79.8 MeV 5.87 MeV 1.29 mm 56.9 cm Iron hhIoni - 38 -249 m -3.77 cm -2.56 mm 74.2 MeV 5.68 MeV 1.15 mm 57 cm Iron hhIoni - 39 -249 m -3.79 cm -2.49 mm 68.7 MeV 5.43 MeV 1.04 mm 57.1 cm Iron hhIoni - 40 -249 m -3.8 cm -2.43 mm 63.6 MeV 5.14 MeV 934 um 57.2 cm Iron hhIoni - 41 -249 m -3.81 cm -2.34 mm 58.7 MeV 4.87 MeV 833 um 57.3 cm Iron hhIoni - 42 -249 m -3.82 cm -2.26 mm 54.4 MeV 4.32 MeV 751 um 57.4 cm Iron hhIoni - 43 -249 m -3.83 cm -2.21 mm 50.2 MeV 4.2 MeV 679 um 57.5 cm Iron hhIoni - 44 -249 m -3.84 cm -2.18 mm 46 MeV 4.16 MeV 609 um 57.5 cm Iron hhIoni - 45 -249 m -3.84 cm -2.13 mm 42.3 MeV 3.73 MeV 551 um 57.6 cm Iron hhIoni - 46 -249 m -3.85 cm -2.08 mm 38.5 MeV 3.81 MeV 499 um 57.6 cm Iron hhIoni - 47 -249 m -3.85 cm -2.01 mm 34.4 MeV 4.11 MeV 448 um 57.7 cm Iron hhIoni - 48 -249 m -3.86 cm -1.95 mm 30.6 MeV 3.79 MeV 400 um 57.7 cm Iron hhIoni - 49 -249 m -3.86 cm -1.89 mm 26.9 MeV 3.66 MeV 357 um 57.7 cm Iron hhIoni - 50 -249 m -3.87 cm -1.86 mm 23.7 MeV 3.27 MeV 320 um 57.8 cm Iron hhIoni - 51 -249 m -3.87 cm -1.83 mm 20.2 MeV 3.41 MeV 288 um 57.8 cm Iron hhIoni - 52 -249 m -3.87 cm -1.8 mm 16.5 MeV 3.71 MeV 258 um 57.8 cm Iron hhIoni - 53 -249 m -3.87 cm -1.77 mm 12.7 MeV 3.84 MeV 228 um 57.9 cm Iron hhIoni - 54 -249 m -3.88 cm -1.73 mm 8.3 MeV 4.4 MeV 197 um 57.9 cm Iron hhIoni - 55 -249 m -3.88 cm -1.71 mm 3.08 MeV 5.22 MeV 152 um 57.9 cm Iron hhIoni - 56 -249 m -3.88 cm -1.7 mm 0 eV 3.08 MeV 37.3 um 57.9 cm Iron hhIoni + 1 -250 m -218 um -801 um 926 MeV 74.1 MeV 5.8 cm 5.8 cm Iron hhIoni + 2 -250 m 1.13 mm -3.08 mm 858 MeV 67.5 MeV 5.22 cm 11 cm Iron hhIoni + 3 -250 m 1.93 mm -4.48 mm 798 MeV 60.6 MeV 4.7 cm 15.7 cm Iron hhIoni + 4 -250 m 2.07 mm -6.02 mm 740 MeV 57.4 MeV 4.23 cm 19.9 cm Iron hhIoni + 5 -250 m 1.58 mm -7.82 mm 688 MeV 52.3 MeV 3.81 cm 23.7 cm Iron hhIoni + 6 -250 m 1.46 mm -9.42 mm 642 MeV 46.5 MeV 3.42 cm 27.2 cm Iron hhIoni + 7 -250 m 1.38 mm -1.1 cm 599 MeV 42.6 MeV 3.09 cm 30.3 cm Iron hhIoni + 8 -250 m 623 um -1.2 cm 556 MeV 42.6 MeV 2.79 cm 33 cm Iron hhIoni + 9 -250 m -281 um -1.38 cm 516 MeV 40.1 MeV 2.5 cm 35.6 cm Iron hhIoni + 10 -250 m -1.42 mm -1.53 cm 482 MeV 34.5 MeV 2.23 cm 37.8 cm Iron hhIoni + 11 -250 m -2.5 mm -1.65 cm 449 MeV 33.3 MeV 2.01 cm 39.8 cm Iron hhIoni + 12 -250 m -3.24 mm -1.76 cm 418 MeV 30.3 MeV 1.8 cm 41.6 cm Iron hhIoni + 13 -250 m -3.78 mm -1.84 cm 392 MeV 26 MeV 1.62 cm 43.2 cm Iron hhIoni + 14 -250 m -4.29 mm -1.98 cm 365 MeV 27 MeV 1.46 cm 44.7 cm Iron hhIoni + 15 -250 m -4.17 mm -2.09 cm 340 MeV 25.2 MeV 1.31 cm 46 cm Iron hhIoni + 16 -250 m -3.62 mm -2.14 cm 319 MeV 20.8 MeV 1.17 cm 47.2 cm Iron hhIoni + 17 -250 m -3.23 mm -2.22 cm 298 MeV 20.9 MeV 1.05 cm 48.2 cm Iron hhIoni + 18 -250 m -2.9 mm -2.29 cm 278 MeV 20.2 MeV 9.49 mm 49.2 cm Iron hhIoni + 19 -250 m -3 mm -2.36 cm 262 MeV 16.4 MeV 8.5 mm 50 cm Iron hhIoni + 20 -249 m -2.75 mm -2.41 cm 245 MeV 16.9 MeV 7.69 mm 50.8 cm Iron hhIoni + 21 -249 m -2.65 mm -2.46 cm 229 MeV 16 MeV 6.89 mm 51.5 cm Iron hhIoni + 22 -249 m -2.42 mm -2.49 cm 215 MeV 14.3 MeV 6.2 mm 52.1 cm Iron hhIoni + 23 -249 m -2.22 mm -2.5 cm 202 MeV 13.1 MeV 5.58 mm 52.6 cm Iron hhIoni + 24 -249 m -2.15 mm -2.5 cm 188 MeV 13.4 MeV 5.02 mm 53.1 cm Iron hhIoni + 25 -249 m -2.41 mm -2.48 cm 175 MeV 13.1 MeV 4.5 mm 53.6 cm Iron hhIoni + 26 -249 m -2.78 mm -2.47 cm 164 MeV 10.9 MeV 4.01 mm 54 cm Iron hhIoni + 27 -249 m -2.92 mm -2.46 cm 154 MeV 10.1 MeV 3.6 mm 54.4 cm Iron hhIoni + 28 -249 m -3 mm -2.45 cm 144 MeV 9.98 MeV 3.25 mm 54.7 cm Iron hhIoni + 29 -249 m -2.98 mm -2.44 cm 135 MeV 9.45 MeV 2.93 mm 55 cm Iron hhIoni + 30 -249 m -3.01 mm -2.44 cm 127 MeV 7.64 MeV 2.62 mm 55.2 cm Iron hhIoni + 31 -249 m -3.03 mm -2.45 cm 119 MeV 8.18 MeV 2.38 mm 55.5 cm Iron hhIoni + 32 -249 m -3.01 mm -2.45 cm 111 MeV 8.06 MeV 2.14 mm 55.7 cm Iron hhIoni + 33 -249 m -2.99 mm -2.45 cm 104 MeV 6.41 MeV 1.92 mm 55.9 cm Iron hhIoni + 34 -249 m -2.99 mm -2.45 cm 97.5 MeV 6.82 MeV 1.75 mm 56.1 cm Iron hhIoni + 35 -249 m -2.97 mm -2.47 cm 91.4 MeV 6.12 MeV 1.57 mm 56.2 cm Iron hhIoni + 36 -249 m -2.89 mm -2.47 cm 85.8 MeV 5.59 MeV 1.43 mm 56.4 cm Iron hhIoni + 37 -249 m -2.82 mm -2.48 cm 79.8 MeV 6.01 MeV 1.29 mm 56.5 cm Iron hhIoni + 38 -249 m -2.67 mm -2.49 cm 73.7 MeV 6.1 MeV 1.15 mm 56.6 cm Iron hhIoni + 39 -249 m -2.52 mm -2.5 cm 68.5 MeV 5.24 MeV 1.03 mm 56.7 cm Iron hhIoni + 40 -249 m -2.4 mm -2.51 cm 63.7 MeV 4.73 MeV 929 um 56.8 cm Iron hhIoni + 41 -249 m -2.32 mm -2.51 cm 58.7 MeV 5.01 MeV 836 um 56.9 cm Iron hhIoni + 42 -249 m -2.26 mm -2.51 cm 54.7 MeV 3.98 MeV 751 um 57 cm Iron hhIoni + 43 -249 m -2.19 mm -2.51 cm 50.5 MeV 4.22 MeV 685 um 57 cm Iron hhIoni + 44 -249 m -2.12 mm -2.51 cm 45.9 MeV 4.65 MeV 615 um 57.1 cm Iron hhIoni + 45 -249 m -2.07 mm -2.51 cm 41.8 MeV 4.03 MeV 549 um 57.1 cm Iron hhIoni + 46 -249 m -2 mm -2.51 cm 38.1 MeV 3.71 MeV 492 um 57.2 cm Iron hhIoni + 47 -249 m -1.97 mm -2.51 cm 34.6 MeV 3.55 MeV 444 um 57.2 cm Iron hhIoni + 48 -249 m -1.93 mm -2.51 cm 31.4 MeV 3.2 MeV 402 um 57.3 cm Iron hhIoni + 49 -249 m -1.9 mm -2.51 cm 27.6 MeV 3.81 MeV 365 um 57.3 cm Iron hhIoni + 50 -249 m -1.88 mm -2.51 cm 24.1 MeV 3.46 MeV 326 um 57.3 cm Iron hhIoni + 51 -249 m -1.87 mm -2.51 cm 20.4 MeV 3.73 MeV 292 um 57.4 cm Iron hhIoni + 52 -249 m -1.87 mm -2.51 cm 16.6 MeV 3.76 MeV 259 um 57.4 cm Iron hhIoni + 53 -249 m -1.86 mm -2.51 cm 13.1 MeV 3.48 MeV 229 um 57.4 cm Iron hhIoni + 54 -249 m -1.83 mm -2.51 cm 8.6 MeV 4.53 MeV 200 um 57.4 cm Iron hhIoni + 55 -249 m -1.82 mm -2.51 cm 3.32 MeV 5.28 MeV 156 um 57.5 cm Iron hhIoni + 56 -249 m -1.82 mm -2.51 cm 0 eV 3.32 MeV 42.2 um 57.5 cm Iron hhIoni Run terminated. Run Summary Number of events processed : 2 - User=0.06s Real=0.1s Sys=0.02s + User=0.08s Real=0.17s Sys=0.02s --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1319701757, 224519741 + Current couple of seeds = 1912810932, 566814574 ---------------------------------------- # Graphics systems deleted. diff --git a/examples/extended/electromagnetic/TestEm6/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm6/include/DetectorConstruction.hh index 4ecbdc45b9..1044895b4e 100644 --- a/examples/extended/electromagnetic/TestEm6/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm6/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.3 2006/06/29 16:56:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm6/include/DetectorMessenger.hh index 4166f89caa..9d6fd9f42d 100644 --- a/examples/extended/electromagnetic/TestEm6/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm6/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.4 2006/06/29 16:56:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/include/EventAction.hh b/examples/extended/electromagnetic/TestEm6/include/EventAction.hh index 9180c99862..72c398d66e 100644 --- a/examples/extended/electromagnetic/TestEm6/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm6/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.3 2006/06/29 16:56:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm6/include/EventActionMessenger.hh index ce4cb8e975..61dd6a083c 100644 --- a/examples/extended/electromagnetic/TestEm6/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm6/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.3 2006/06/29 16:56:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm6/include/PhysicsList.hh index e6a708bb25..f1865a8edc 100644 --- a/examples/extended/electromagnetic/TestEm6/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm6/include/PhysicsList.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsList.hh,v 1.7 2006/06/29 16:56:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm6/include/PhysicsListMessenger.hh index aea5a55c11..e44bbe43c0 100644 --- a/examples/extended/electromagnetic/TestEm6/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm6/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.5 2006/06/29 16:56:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm6/include/PrimaryGeneratorAction.hh index 63d3270e3b..9a58725c6e 100644 --- a/examples/extended/electromagnetic/TestEm6/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm6/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.3 2006/06/29 16:56:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/include/PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm6/include/PrimaryGeneratorMessenger.hh index 2653dadd31..8413aa214a 100644 --- a/examples/extended/electromagnetic/TestEm6/include/PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm6/include/PrimaryGeneratorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.hh,v 1.3 2006/06/29 16:56:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/include/RunAction.hh b/examples/extended/electromagnetic/TestEm6/include/RunAction.hh index f41e923dab..c21ab0c2c5 100644 --- a/examples/extended/electromagnetic/TestEm6/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm6/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.9 2006/06/29 16:56:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm6/include/SteppingAction.hh index fa946a348f..9c6a41b310 100644 --- a/examples/extended/electromagnetic/TestEm6/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm6/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.4 2006/06/29 16:56:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm6/include/SteppingVerbose.hh index 9a3b48caf0..9f57a2708c 100644 --- a/examples/extended/electromagnetic/TestEm6/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm6/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.3 2006/06/29 16:56:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/electromagnetic/TestEm6/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm6/src/DetectorConstruction.cc index fe825ab632..c81eeceb6b 100644 --- a/examples/extended/electromagnetic/TestEm6/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm6/src/DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.cc,v 1.10 2006/06/29 16:57:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm6/src/DetectorMessenger.cc index 0b37c59c1d..5c1155b49c 100644 --- a/examples/extended/electromagnetic/TestEm6/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm6/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.5 2006/06/29 16:57:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/src/EventAction.cc b/examples/extended/electromagnetic/TestEm6/src/EventAction.cc index ac951fd63e..b33b7acaea 100644 --- a/examples/extended/electromagnetic/TestEm6/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm6/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.6 2006/06/29 16:57:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm6/src/EventActionMessenger.cc index 391be4ccfa..0e45eb4305 100644 --- a/examples/extended/electromagnetic/TestEm6/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm6/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.6 2006/06/29 16:57:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm6/src/PhysicsList.cc index b7f22dec5e..2300e0b6e4 100644 --- a/examples/extended/electromagnetic/TestEm6/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm6/src/PhysicsList.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsList.cc,v 1.12 2006/06/29 16:57:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm6/src/PhysicsListMessenger.cc index 3b7416185f..9c479db3f1 100644 --- a/examples/extended/electromagnetic/TestEm6/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm6/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.8 2006/06/29 16:57:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm6/src/PrimaryGeneratorAction.cc index ff69a691ac..a078b685ae 100644 --- a/examples/extended/electromagnetic/TestEm6/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm6/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.3 2006/06/29 16:57:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/src/PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm6/src/PrimaryGeneratorMessenger.cc index 4f3fb0f848..77499fd2ca 100644 --- a/examples/extended/electromagnetic/TestEm6/src/PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm6/src/PrimaryGeneratorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.cc,v 1.5 2006/06/29 16:57:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/src/RunAction.cc b/examples/extended/electromagnetic/TestEm6/src/RunAction.cc index 2f70b08384..69707d28a3 100644 --- a/examples/extended/electromagnetic/TestEm6/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm6/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.12 2006/06/29 16:57:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm6/src/SteppingAction.cc index 8c72c70b83..c43caa862e 100644 --- a/examples/extended/electromagnetic/TestEm6/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm6/src/SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.cc,v 1.9 2006/06/29 16:57:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm6/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm6/src/SteppingVerbose.cc index 5f98308ca4..54012209b8 100644 --- a/examples/extended/electromagnetic/TestEm6/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm6/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.5 2006/06/29 16:57:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/History b/examples/extended/electromagnetic/TestEm7/History index b4a8b569a9..27290ced42 100644 --- a/examples/extended/electromagnetic/TestEm7/History +++ b/examples/extended/electromagnetic/TestEm7/History @@ -1,4 +1,4 @@ -$Id: History,v 1.50 2007/06/22 12:44:42 maire Exp $ +$Id: History,v 1.61 2007/12/07 17:51:10 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,47 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +07-12-07 V.Ivant (testem7-V09-00-10) +- Fixed disclaimer + +19-11-07 V.Ivant (testem7-V09-00-09) +- Updated README + +19-11-07 V.Ivant (testem7-V09-00-08) +- Fixed usage of elastic builders + +13-11-07 V.Ivant (testem7-V09-00-07) +- c2_functions (M.Mendenhall) substitute snsprintf by ostringstream + (better for Windows) + +12-11-07 V.Ivant (testem7-V09-00-06) +- c2_functions (M.Mendenhall) fixed compilation problems at SUN and + Windows + +12-11-07 V.Ivant (testem7-V09-00-05) +- c2_functions (M.Mendenhall) fixed compilation problems at SUN + +11-11-07 V.Ivant (testem7-V09-00-04) +- G4ScreenNuclearRecoil, c2_functions (M.Mendenhall) fixed compilation + problems at SUN and Windows + +07-11-07 V.Ivant (testem7-V09-00-03) +- PhysListStandardSS - use G4ionGasIonisation +- PhysListStandardIG - use G4ScreenNuclearRecoil +- G4ScreenNuclearRecoil - ion-ion scattering provided by Vanderbuilt + University + +30-07-07 mma (testem7-V09-00-02) +- PhysListStandardSS and PhysListStandardIG: review process ordering + +28-07-07 V.Ivant (testem7-V09-00-01) +- add PhysListStandardIG - ion G4ionIonisation process is + substituted by G4ionGasIonisation and for Coulomb scattering + the model taking into account the recoil is used + +26-07-07 mma (testem7-V09-00-00) +- update README for physicsList names 22-06-07 mma (testem7-V08-03-02) - cosmetic in TestEm7.cc diff --git a/examples/extended/electromagnetic/TestEm7/README b/examples/extended/electromagnetic/TestEm7/README index e2aed37f87..6fcd18271d 100644 --- a/examples/extended/electromagnetic/TestEm7/README +++ b/examples/extended/electromagnetic/TestEm7/README @@ -1,4 +1,4 @@ -$Id: README,v 1.14 2006/11/22 18:56:20 vnivanch Exp $ +$Id: README,v 1.17 2007/12/04 12:06:28 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -34,26 +34,36 @@ $Id: README,v 1.14 2006/11/22 18:56:20 vnivanch Exp $ defined via UI commands : /testem/det/tally... 2- PHYSICS LIST - - Physics Lists are subdivided on 4 following modules: - 1. "particles" - particle definitions - 2. "general" - decays and transportation - The following options for EM physics are available: - - "standard" the best standard EM physics (default) - - "G4standard" recommended standard EM physics for LHC - - "G4standard_fast" the best CPU performance standard physics for LHC - - "Livermore" low-energy EM physics using Livermore data - - "Penelope" low-energy EM physics implementing Penelope models + The following EM physics lists are available in this example: + - "standard" standard EM physics (default) + - "livermore" low-energy EM physics using Livermore data + - "penelope" low-energy EM physics implementing Penelope models + - "standardSS" standard EM physics with single Coulomb scattering + instead of multiple scattering; G4ionIonisation is + substituted by G4ionGasIonisation for GenericIons + - "standardNR" standard EM physics with single Coulomb scattering + process G4ScreenedNuclearRecoil instead of the + multiple scattering; the new process was developed + by M.H. Mendenhall and R.A. Weller from Vanderbuilt + University and published in NIM B 277 (2005) 420. + In later Geant4 releases the process will be a part + of Geant4 source, currently it is released together + with its mathematical tool c2_functions in current + example + + Alternatively, the user may use predefined Geant4 builders: + - "emstandard" G4EmStandardPhysics builder + - "emstandard_opt1" G4EmStandardPhysics_option1 builder + - "emstandard_opt2" G4EmStandardPhysics_option2 builder + See geant4/source/physics_lists/History for details Optional components can be added: - "elastic" elastic scattering of hadrons + - "HElastic" + - "QElastic" - "binary" QBBC configuration of hadron inelastic models - - "binary_ion" Binary ion inelastic models - - Notice that there is an example of definition of a static ion : IonC12 - (see PhysListParticle.cc) and an example of use : ionC12.mac - + - "binary_ion" Binary ion inelastic models 3- AN EVENT : THE PRIMARY GENERATOR diff --git a/examples/extended/electromagnetic/TestEm7/TestEm7.cc b/examples/extended/electromagnetic/TestEm7/TestEm7.cc index 74e780b355..5f666c97e4 100644 --- a/examples/extended/electromagnetic/TestEm7/TestEm7.cc +++ b/examples/extended/electromagnetic/TestEm7/TestEm7.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TestEm7.cc,v 1.8 2007/06/22 12:44:42 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/TestEm7.out b/examples/extended/electromagnetic/TestEm7/TestEm7.out index 12b5c26d8c..8f0c56b778 100644 --- a/examples/extended/electromagnetic/TestEm7/TestEm7.out +++ b/examples/extended/electromagnetic/TestEm7/TestEm7.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -8,34 +8,39 @@ /run/verbose 1 /testem/det/setMat G4_WATER -/testem/det/setSizeX 20 cm +/testem/det/setSizeX 20 cm /testem/det/setSizeYZ 20 cm /testem/det/tallyMat G4_WATER /testem/det/tallySize 2. 2. 2. mm /testem/det/tallyPosition -9.9 0. 0. cm -/testem/det/tallyPosition -5. 0. 0. cm -/testem/det/tallyPosition 0. 0. 0. cm -/testem/det/tallyPosition 5. 0. 0. cm -/testem/phys/addPhysics standard # em physics +/testem/det/tallyPosition -5. 0. 0. cm +/testem/det/tallyPosition 0. 0. 0. cm +/testem/det/tallyPosition 5. 0. 0. cm +/testem/phys/addPhysics standard PhysicsList::AddPhysicsList: /run/initialize ***** Table : Nb of materials = 4 ***** - Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.084 cm + Material: Water density: 1.000 g/cm3 RadL: 36.084 cm Imean: 75.000 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.19 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.81 % ElmAbundance 33.33 % - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 204322175.595 pc + Material: Galactic density: 0.000 mg/cm3 RadL: 204322175.595 pc Imean: 21.800 eV temperature: 2.73 K pressure: 0.00 atm ---> Element: Galactic ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_WATER H_2O density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.084 cm - ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.19 % ElmAbundance 66.67 % - ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.81 % ElmAbundance 33.33 % + Material: G4_WATER H_2O density: 1.000 g/cm3 RadL: 36.083 cm Imean: 75.000 eV + ---> Element: H (H) Z = 1.0 N = 1.0 A = 1.01 g/mole + ---> Isotope: H Z = 1 N = 1 A = 1.01 g/mole abundance: 99.99 % + ---> Isotope: H Z = 1 N = 2 A = 2.01 g/mole abundance: 0.01 % ElmMassFraction: 11.19 % ElmAbundance 66.67 % + ---> Element: O (O) Z = 8.0 N = 16.0 A = 16.00 g/mole + ---> Isotope: O Z = 8 N = 16 A = 15.99 g/mole abundance: 99.76 % + ---> Isotope: O Z = 8 N = 17 A = 17.00 g/mole abundance: 0.04 % + ---> Isotope: O Z = 8 N = 18 A = 18.00 g/mole abundance: 0.20 % ElmMassFraction: 88.81 % ElmAbundance 33.33 % @@ -81,7 +86,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 480 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 480 bins. @@ -94,7 +99,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 480 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 480 bins. @@ -117,7 +122,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for GenericIon LateralDisplacementFlag= 0 Skin= 0 @@ -131,7 +136,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 480 bins. @@ -139,7 +144,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -151,7 +156,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 480 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 480 bins. @@ -168,7 +173,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 480 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 480 bins. @@ -186,7 +191,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -199,7 +204,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -249,26 +254,26 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10000 - User=405.86s Real=529.6s Sys=6.68s + User=519.33s Real=703.96s Sys=7.13s The run consists of 10000 proton of 160 MeV through 20 cm of G4_WATER (density: 1 g/cm3 ) - projected Range= 17.6845 cm rms= 3.32188 mm - mean number of primary steps = 185.515 + projected Range= 17.6842 cm rms= 3.38486 mm + mean number of primary steps = 185.903 --------------------------------------------------------- Cumulated Doses : Edep Edep/Ebeam Dose - tally 0: 4.65922 GeV 0.291201 % 9.33112e-05 Gy - tally 1: 5.03052 GeV 0.314407 % 0.000100747 Gy - tally 2: 3.21919 GeV 0.201199 % 6.44714e-05 Gy - tally 3: 1.84085 GeV 0.115053 % 3.68671e-05 Gy + tally 0: 4.61625 GeV 0.288516 % 9.24506e-05 Gy + tally 1: 4.99089 GeV 0.311931 % 9.99536e-05 Gy + tally 2: 3.2655 GeV 0.204094 % 6.53989e-05 Gy + tally 3: 1.91167 GeV 0.11948 % 3.82855e-05 Gy --------------------------------------------------------- --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 148901156, 2023382443 + Current couple of seeds = 1436866818, 1372743716 ---------------------------------------- /testem/stepMax 100 mm /gun/particle ion @@ -298,7 +303,7 @@ Index : 1 used in the geometry : Yes recalculation needed : No --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 148901156, 2023382443 + Current couple of seeds = 1436866818, 1372743716 ---------------------------------------- Start Run processing. @@ -306,48 +311,53 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 1000 - User=133.93s Real=154.11s Sys=0.76s + User=144.32s Real=155.54s Sys=0.8s The run consists of 1000 C12[0.0] of 3.5 GeV through 20 cm of G4_WATER (density: 1 g/cm3 ) - projected Range= 16.7078 cm rms= 549.595 um - mean number of primary steps = 95.235 + projected Range= 16.7092 cm rms= 759.06 um + mean number of primary steps = 94.931 --------------------------------------------------------- Cumulated Doses : Edep Edep/Ebeam Dose - tally 0: 11.3076 GeV 0.323075 % 0.00022646 Gy - tally 1: 12.482 GeV 0.356629 % 0.00024998 Gy - tally 2: 14.7304 GeV 0.42087 % 0.00029501 Gy - tally 3: 21.4555 GeV 0.613015 % 0.000429694 Gy + tally 0: 12.1185 GeV 0.346242 % 0.000242699 Gy + tally 1: 13.5739 GeV 0.387827 % 0.000271848 Gy + tally 2: 15.0017 GeV 0.42862 % 0.000300442 Gy + tally 3: 20.6443 GeV 0.589837 % 0.000413448 Gy --------------------------------------------------------- --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1659645478, 1103417087 + Current couple of seeds = 332474889, 1996155240 ---------------------------------------- /testem/det/setMat G4_Cu /testem/det/update ***** Table : Nb of materials = 5 ***** - Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.084 cm + Material: Water density: 1.000 g/cm3 RadL: 36.084 cm Imean: 75.000 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.19 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.81 % ElmAbundance 33.33 % - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 204322175.595 pc + Material: Galactic density: 0.000 mg/cm3 RadL: 204322175.595 pc Imean: 21.800 eV temperature: 2.73 K pressure: 0.00 atm ---> Element: Galactic ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_WATER H_2O density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.084 cm - ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.19 % ElmAbundance 66.67 % - ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.81 % ElmAbundance 33.33 % + Material: G4_WATER H_2O density: 1.000 g/cm3 RadL: 36.083 cm Imean: 75.000 eV + ---> Element: H (H) Z = 1.0 N = 1.0 A = 1.01 g/mole + ---> Isotope: H Z = 1 N = 1 A = 1.01 g/mole abundance: 99.99 % + ---> Isotope: H Z = 1 N = 2 A = 2.01 g/mole abundance: 0.01 % ElmMassFraction: 11.19 % ElmAbundance 66.67 % + ---> Element: O (O) Z = 8.0 N = 16.0 A = 16.00 g/mole + ---> Isotope: O Z = 8 N = 16 A = 15.99 g/mole abundance: 99.76 % + ---> Isotope: O Z = 8 N = 17 A = 17.00 g/mole abundance: 0.04 % + ---> Isotope: O Z = 8 N = 18 A = 18.00 g/mole abundance: 0.20 % ElmMassFraction: 88.81 % ElmAbundance 33.33 % - Material: G4_Cu density: 8.960 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.436 cm + Material: G4_Cu density: 8.960 g/cm3 RadL: 1.436 cm Imean: 322.000 eV ---> Element: Cu (Cu) Z = 29.0 N = 63.6 A = 63.55 g/mole ---> Isotope: Cu Z = 29 N = 63 A = 62.93 g/mole abundance: 69.17 % ---> Isotope: Cu Z = 29 N = 65 A = 64.93 g/mole abundance: 30.83 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % @@ -392,7 +402,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 480 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 480 bins. @@ -405,7 +415,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 480 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 480 bins. @@ -428,7 +438,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for GenericIon LateralDisplacementFlag= 0 Skin= 0 @@ -442,7 +452,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 480 bins. @@ -450,7 +460,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -462,7 +472,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 480 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 480 bins. @@ -479,7 +489,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 480 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 480 bins. @@ -497,7 +507,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -510,7 +520,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -541,7 +551,7 @@ Index : 2 used in the geometry : Yes recalculation needed : No --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1659645478, 1103417087 + Current couple of seeds = 332474889, 1996155240 ---------------------------------------- Start Run processing. @@ -549,17 +559,17 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 1000 - User=83.29s Real=102.13s Sys=0.68s + User=87.74s Real=109.99s Sys=0.86s The run consists of 1000 kaon+ of 100 MeV through 20 cm of G4_Cu (density: 8.96 g/cm3 ) - projected Range= 2.11477 cm rms= 3.16219 mm - mean number of primary steps = 17.684 + projected Range= 2.11404 cm rms= 3.56198 mm + mean number of primary steps = 17.674 --------------------------------------------------------- Cumulated Doses : Edep Edep/Ebeam Dose - tally 0: 413.171 MeV 0.413171 % 8.27467e-06 Gy - tally 1: 0 eV 0 % 0 Gy + tally 0: 386.397 MeV 0.386397 % 7.73846e-06 Gy + tally 1: 725.19 keV 0.00072519 % 1.45235e-08 Gy tally 2: 0 eV 0 % 0 Gy tally 3: 0 eV 0 % 0 Gy @@ -568,6 +578,6 @@ Run Summary --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 883759698, 2029731229 + Current couple of seeds = 1461246333, 1184902472 ---------------------------------------- G4 kernel has come to Quit state. diff --git a/examples/extended/electromagnetic/TestEm7/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm7/include/DetectorConstruction.hh index 62b9ce71a8..f63e7a914b 100644 --- a/examples/extended/electromagnetic/TestEm7/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm7/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.2 2006/06/29 16:57:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm7/include/DetectorMessenger.hh index 8d681b3854..363d0123c8 100644 --- a/examples/extended/electromagnetic/TestEm7/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm7/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.3 2006/06/29 16:57:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/EventAction.hh b/examples/extended/electromagnetic/TestEm7/include/EventAction.hh index 56909494d9..6615b46b68 100644 --- a/examples/extended/electromagnetic/TestEm7/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm7/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.2 2006/06/29 16:57:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm7/include/EventActionMessenger.hh index 2991fa10da..60443d6190 100644 --- a/examples/extended/electromagnetic/TestEm7/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm7/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.3 2006/06/29 16:57:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/G4ScreenedNuclearRecoil.hh b/examples/extended/electromagnetic/TestEm7/include/G4ScreenedNuclearRecoil.hh new file mode 100644 index 0000000000..f349ce4957 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm7/include/G4ScreenedNuclearRecoil.hh @@ -0,0 +1,283 @@ +// +// ******************************************************************** +// * 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: G4ScreenedNuclearRecoil.hh,v 1.3 2007/12/07 17:51:10 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// +// Class Description +// Process for screened electromagnetic nuclear elastic scattering; +// Physics comes from: +// Marcus H. Mendenhall and Robert A. Weller, +// "Algorithms for the rapid computation of classical cross sections +// for screened Coulomb collisions " +// Nuclear Instruments and Methods in Physics Research B58 (1991) 11-17 +// The only input required is a screening function phi(r/a) which is the ratio +// of the actual interatomic potential for two atoms with atomic numbers Z1 and Z2, +// to the unscreened potential Z1*Z2*e^2/r where e^2 is elm_coupling in Geant4 units +// the actual screening tables are computed externally in a python module "screened_scattering.py" +// to allow very specific screening functions to be added if desired, without messing +// with the insides of this code. +// +// First version, April 2004, Marcus H. Mendenhall, Vanderbilt University +// +// Class Description - End + + +#ifndef G4ScreenedNuclearRecoil_h +#define G4ScreenedNuclearRecoil_h 1 + +#include "globals.hh" +#include "G4VDiscreteProcess.hh" +#include "c2_function.hh" + +#include +#include + +class G4VParticleChange; + +typedef struct G4ScreeningTables { + G4double z1, z2, m1, m2, au, emin; + c2_function *EMphiData; +} G4ScreeningTables; + +// A class for loading ScreenedCoulombCrossSections +class G4ScreenedCoulombCrossSectionInfo +{ +public: + G4ScreenedCoulombCrossSectionInfo() { } + ~G4ScreenedCoulombCrossSectionInfo() { } + + const char *CVSHeaderVers() { return + ""; + } + + const char *CVSFileVers() { return ""; } +}; + +// A class for loading ScreenedCoulombCrossSections +class G4ScreenedCoulombCrossSection : public G4ScreenedCoulombCrossSectionInfo +{ +public: + + G4ScreenedCoulombCrossSection() : verbosity(1) { } + G4ScreenedCoulombCrossSection(const G4ScreenedCoulombCrossSection &src) : + G4ScreenedCoulombCrossSectionInfo(),verbosity(src.verbosity) { } + virtual ~G4ScreenedCoulombCrossSection(); + + typedef std::map ScreeningMap; + + // a local, fast-access mapping of a particle's Z to its full definition + typedef std::map ParticleCache; + + // LoadData is called by G4ScreenedNuclearRecoil::GetMeanFreePath + // It loads the data tables, builds the elemental cross-section tables. + virtual void LoadData(G4String screeningKey, G4int z1, G4double m1, G4double recoilCutoff) = 0; + + // BuildMFPTables is called by G4ScreenedNuclearRecoil::GetMeanFreePath to build the MFP tables for each material + void BuildMFPTables(void); // scan the MaterialsTable and construct MFP tables + + virtual G4ScreenedCoulombCrossSection *create() = 0; // a 'virtual constructor' which clones the class + const G4ScreeningTables *GetScreening(G4int Z) { return &(screeningData[Z]); } + void SetVerbosity(G4int v) { verbosity=v; } + + // this process needs element selection weighted only by number density + G4ParticleDefinition* SelectRandomUnweightedTarget(const G4MaterialCutsCouple* couple); + + enum { nMassMapElements=116 }; + + G4double standardmass(G4int z1) { return z1 <= nMassMapElements ? massmap[z1] : 2.5*z1; } + + // get the mean-free-path table for the indexed material + c2_function * operator [] (G4int materialIndex) { + return MFPTables.find(materialIndex)!=MFPTables.end() ? MFPTables[materialIndex] : (c2_function *)0; + } + +protected: + ScreeningMap screeningData; // screening tables for each element + ParticleCache targetMap; + G4int verbosity; + std::map *> sigmaMap; // total cross section for each element + std::map *> MFPTables; // MFP for each material + +private: + static const G4double massmap[nMassMapElements+1]; + +}; + +typedef struct G4CoulombKinematicsInfo { + G4double impactParameter; + G4ScreenedCoulombCrossSection *crossSection; + G4double a1, a2, sinTheta, cosTheta, sinZeta, cosZeta, eRecoil; + G4ParticleDefinition *recoilIon; } G4CoulombKinematicsInfo; + +class G4ScreenedCollisionStage { +public: + virtual void DoCollisionStep(class G4ScreenedNuclearRecoil *master, + const class G4Track& aTrack, const class G4Step& aStep)=0; + virtual ~G4ScreenedCollisionStage() {} +}; + +class G4ScreenedCoulombClassicalKinematics: public G4ScreenedCoulombCrossSectionInfo, public G4ScreenedCollisionStage { + +public: + G4ScreenedCoulombClassicalKinematics() { } + virtual void DoCollisionStep(class G4ScreenedNuclearRecoil *master, + const class G4Track& aTrack, const class G4Step& aStep); + + G4bool DoScreeningComputation(class G4ScreenedNuclearRecoil *master, + const G4ScreeningTables *screen, + G4double eps, G4double beta); + virtual ~G4ScreenedCoulombClassicalKinematics() {} +}; + +class G4SingleScatter: public G4ScreenedCoulombCrossSectionInfo, public G4ScreenedCollisionStage { + +public: + G4SingleScatter() { } + virtual void DoCollisionStep(class G4ScreenedNuclearRecoil *master, + const class G4Track& aTrack, const class G4Step& aStep); + virtual ~G4SingleScatter() {} +}; + +class G4ScreenedNuclearRecoil : public G4ScreenedCoulombCrossSectionInfo, public G4VDiscreteProcess +{ +public: + + friend class G4ScreenedCollisionStage; + + G4ScreenedNuclearRecoil(const G4String& processName = "ScreenedElastic", + const G4String &ScreeningKey="zbl", G4bool GenerateRecoils=1, + G4double RecoilCutoff=100.0*eV, G4double PhysicsCutoff=10.0*eV); + + virtual ~G4ScreenedNuclearRecoil(); + + virtual G4double GetMeanFreePath(const G4Track&, G4double, G4ForceCondition* ); + + virtual G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); + + virtual G4bool IsApplicable(const G4ParticleDefinition& aParticleType); + + virtual void BuildPhysicsTable(const G4ParticleDefinition&) { } + + virtual void DumpPhysicsTable(const G4ParticleDefinition& aParticleType); + + virtual G4bool CheckNuclearCollision(G4double A, G4double A1, G4double apsis); // return true if hard collision + + virtual G4ScreenedCoulombCrossSection *GetNewCrossSectionHandler(void); + + G4double GetNIEL() const { return NIEL; } // Get non-ionizing energy loss for last step + + void ResetTables(); // clear all data tables to allow changing energy cutoff, materials, etc. + + std::string GetScreeningKey() const { return screeningKey; } + void AllowEnergyDeposition(G4bool flag) { registerDepositedEnergy=flag; } + G4bool GetAllowEnergyDeposition() const { return registerDepositedEnergy; } + void EnableRecoils(G4bool flag) { generateRecoils=flag; } + G4bool GetEnableRecoils() const { return generateRecoils; } + void SetMFPScaling(G4double scale) { MFPScale=scale; } + G4double GetMFPScaling() const { return MFPScale; } + void AvoidNuclearReactions(G4bool flag) { avoidReactions=flag; } + G4bool GetAvoidNuclearReactions() const { return avoidReactions; } + void SetRecoilCutoff(G4double energy) { recoilCutoff=energy; } + G4double GetRecoilCutoff() const { return recoilCutoff; } + void SetPhysicsCutoff(G4double energy) { physicsCutoff=energy; ResetTables(); } + G4double GetPhysicsCutoff() const { return physicsCutoff; } + class G4ParticleChange &GetParticleChange() { return aParticleChange; } + void AddToNIEL(G4double energy) { NIEL+=energy; } + void SetCrossSectionHardening(G4double fraction, G4double HardeningFactor) { + hardeningFraction=fraction; + hardeningFactor=HardeningFactor; + } + G4double GetHardeningFraction() const { return hardeningFraction; } + G4double GetHardeningFactor() const { return hardeningFactor; } + G4double GetCurrentInteractionLength() const { return currentInteractionLength; } + void SetExternalCrossSectionHandler(G4ScreenedCoulombCrossSection *cs) { + externalCrossSectionConstructor=cs; + } + G4int GetVerboseLevel() const { return verboseLevel; } + std::map &GetCrossSectionHandlers() + { return crossSectionHandlers; } + void ClearStages(void); + void AddStage(G4ScreenedCollisionStage *stage) { collisionStages.push_back(stage); } + G4CoulombKinematicsInfo &GetKinematics() { return kinematics; } + void SetValidCollision(G4bool flag) { validCollision=flag; } + G4bool GetValidCollision() const { return validCollision; } + +protected: + G4double highEnergyLimit, lowEnergyLimit; + G4String screeningKey; + G4bool generateRecoils, avoidReactions; + G4double recoilCutoff, physicsCutoff; + G4bool registerDepositedEnergy; + G4double NIEL; + G4double MFPScale; + G4double hardeningFraction, hardeningFactor; + + G4ScreenedCoulombCrossSection *externalCrossSectionConstructor; + std::vector collisionStages; + + std::map crossSectionHandlers; + std::map*> meanFreePathTables; + + G4bool validCollision; + G4CoulombKinematicsInfo kinematics; + +}; + +// A customized G4CrossSectionHandler which gets its data from an external program +class G4NativeScreenedCoulombCrossSection: public G4ScreenedCoulombCrossSection +{ +public: + G4NativeScreenedCoulombCrossSection(); + + G4NativeScreenedCoulombCrossSection(const G4NativeScreenedCoulombCrossSection &src) + : G4ScreenedCoulombCrossSection(src), phiMap(src.phiMap) { } + + G4NativeScreenedCoulombCrossSection(const G4ScreenedCoulombCrossSection &src) : G4ScreenedCoulombCrossSection(src) { } + virtual ~G4NativeScreenedCoulombCrossSection(); + + virtual void LoadData(G4String screeningKey, G4int z1, G4double m1, G4double recoilCutoff); + virtual G4ScreenedCoulombCrossSection *create() + { return new G4NativeScreenedCoulombCrossSection(*this); } + // get a list of available keys + std::vector GetScreeningKeys() const; + + typedef c2_function &(*ScreeningFunc)(G4int z1, G4int z2, size_t nPoints, G4double rMax, G4double *au); + + void AddScreeningFunction(G4String name, ScreeningFunc fn) { + phiMap[name]=fn; + } + +private: + // this is a map used to look up screening function generators + std::map phiMap; +}; + + + +#endif diff --git a/examples/extended/electromagnetic/TestEm7/include/PhysListEmLivermore.hh b/examples/extended/electromagnetic/TestEm7/include/PhysListEmLivermore.hh index eff6802ad0..0fa4b163a7 100644 --- a/examples/extended/electromagnetic/TestEm7/include/PhysListEmLivermore.hh +++ b/examples/extended/electromagnetic/TestEm7/include/PhysListEmLivermore.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.hh,v 1.1 2006/11/22 18:56:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/PhysListEmPenelope.hh b/examples/extended/electromagnetic/TestEm7/include/PhysListEmPenelope.hh index c461022e78..34ad67fdb1 100644 --- a/examples/extended/electromagnetic/TestEm7/include/PhysListEmPenelope.hh +++ b/examples/extended/electromagnetic/TestEm7/include/PhysListEmPenelope.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.hh,v 1.1 2006/11/22 18:56:21 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm7/include/PhysListEmStandard.hh index 4de9bdbd43..d8914fd732 100644 --- a/examples/extended/electromagnetic/TestEm7/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm7/include/PhysListEmStandard.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.hh,v 1.3 2006/06/29 16:57:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/PhysListEmStandardIG.hh b/examples/extended/electromagnetic/TestEm7/include/PhysListEmStandardIG.hh new file mode 100644 index 0000000000..f41b8194d2 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm7/include/PhysListEmStandardIG.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * 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: PhysListEmStandardIG.hh,v 1.1 2007/07/28 16:39:31 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef PhysListEmStandardIG_h +#define PhysListEmStandardIG_h 1 + +#include "G4VPhysicsConstructor.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class PhysListEmStandardIG : public G4VPhysicsConstructor +{ +public: + PhysListEmStandardIG(const G4String& name = "standardIG"); + virtual ~PhysListEmStandardIG(); + +public: + // 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 + void ConstructProcess(); +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + + + + + + + + diff --git a/examples/extended/electromagnetic/TestEm7/include/PhysListEmStandardSS.hh b/examples/extended/electromagnetic/TestEm7/include/PhysListEmStandardSS.hh index 5421b53f65..dde64d7fea 100644 --- a/examples/extended/electromagnetic/TestEm7/include/PhysListEmStandardSS.hh +++ b/examples/extended/electromagnetic/TestEm7/include/PhysListEmStandardSS.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmStandardSS.hh,v 1.1 2006/10/24 11:37:56 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm7/include/PhysicsList.hh index d8c47060d9..f05bfbe807 100644 --- a/examples/extended/electromagnetic/TestEm7/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm7/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.6 2006/11/22 18:56:21 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/examples/extended/electromagnetic/TestEm7/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm7/include/PhysicsListMessenger.hh index 462551d620..8a5df616be 100644 --- a/examples/extended/electromagnetic/TestEm7/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm7/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.3 2006/06/29 16:57:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm7/include/PrimaryGeneratorAction.hh index 11dce77515..670838f286 100644 --- a/examples/extended/electromagnetic/TestEm7/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm7/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.3 2006/06/29 16:57:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm7/include/PrimaryGeneratorMessenger.hh index 3f91e955d5..db77de3ca8 100644 --- a/examples/extended/electromagnetic/TestEm7/include/PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm7/include/PrimaryGeneratorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.hh,v 1.3 2006/06/29 16:57:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/RunAction.hh b/examples/extended/electromagnetic/TestEm7/include/RunAction.hh index 5b3332c69b..62ac695e7a 100644 --- a/examples/extended/electromagnetic/TestEm7/include/RunAction.hh +++ b/examples/extended/electromagnetic/TestEm7/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.11 2007/06/12 14:01:13 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/StepMax.hh b/examples/extended/electromagnetic/TestEm7/include/StepMax.hh index 6e5d570b52..fdb4435e02 100644 --- a/examples/extended/electromagnetic/TestEm7/include/StepMax.hh +++ b/examples/extended/electromagnetic/TestEm7/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.3 2006/06/29 16:58:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/StepMaxMessenger.hh b/examples/extended/electromagnetic/TestEm7/include/StepMaxMessenger.hh index e9875098e9..260f561e57 100644 --- a/examples/extended/electromagnetic/TestEm7/include/StepMaxMessenger.hh +++ b/examples/extended/electromagnetic/TestEm7/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.2 2006/06/29 16:58:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm7/include/SteppingAction.hh index 2cd4f626aa..34d47ad5f9 100644 --- a/examples/extended/electromagnetic/TestEm7/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm7/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.2 2006/06/29 16:58:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm7/include/SteppingVerbose.hh index dc6b91e6db..1984804c3b 100644 --- a/examples/extended/electromagnetic/TestEm7/include/SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm7/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.2 2006/06/29 16:58:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/TrackingAction.hh b/examples/extended/electromagnetic/TestEm7/include/TrackingAction.hh index 31ca42bd0d..4ece474cfb 100644 --- a/examples/extended/electromagnetic/TestEm7/include/TrackingAction.hh +++ b/examples/extended/electromagnetic/TestEm7/include/TrackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TrackingAction.hh,v 1.2 2006/06/29 16:58:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/include/c2_function.hh b/examples/extended/electromagnetic/TestEm7/include/c2_function.hh new file mode 100644 index 0000000000..c90dd6dba6 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm7/include/c2_function.hh @@ -0,0 +1,1471 @@ +/** + * \file + * \brief Provides the headers for the general c2_function algebra which supports + * fast, flexible operations on piecewise-twice-differentiable functions + * + * \author Created by R. A. Weller and Marcus H. Mendenhall on 7/9/05. + * \author Copyright 2005 __Vanderbilt University__. All rights reserved. + * + * \version c2_function.hh,v 1.53 2007/11/12 13:58:57 marcus Exp + */ + +#ifndef __has_C2Functions_c2_h +#define __has_C2Functions_c2_h 1 + +#include +#include +#include + +/// \brief the exception class for c2_function operations. +class c2_exception : public std::exception { +public: + /// \brief construct the exception with an error message + /// \param msgcode the message + c2_exception(const char msgcode[]) : info(msgcode) { } + virtual ~c2_exception() throw() { } + /** Returns a C-style character string describing the general cause + * of the current error. */ + virtual const char* what() const throw() { return info.c_str(); } +private: + std::string info; +}; + +// put these forward references here, and with a bogus typename to make swig happy. +template class c2_composed_function; +template class c2_sum; +template class c2_diff; +template class c2_product; +template class c2_ratio; + +/** + \brief the parent class for all c2_functions. + + c2_functions know their value, first, and second derivative at almost every point. + They can be efficiently combined with binary operators, via c2_binary_function, + composed via c2_composed_function, + have their roots found via find_root(), + and be adaptively integrated via partial_integrals() or integral(). + They also can carry information with them about how to find 'interesting' points on the function. + This information is set with set_sampling_grid() and extracted with get_sampling_grid(). + + Particularly important subclasses are the interpolating functions classes, + interpolating_function , lin_log_interpolating_function, log_lin_interpolating_function, + log_log_interpolating_function, and arrhenius_interpolating_function, + as well as the template functions + inverse_integrated_density(). + + \warning + The composite flavors of c2_functions (c2_sum, c2_composed_function, c2_binary_function, e.g.) make no effort to manage + deletion of their component functions. + These are just container classes, and the user (along with normal automatic variable semantics) + is responsible for the lifetime of components. + Inappropriate attention to this can cause massive memory leaks. + However, in most cases these do exactly what is intended. + The classes will be left this way since the only other option is to use copy constructors on everything, + which would make this all very slow. + + */ +template class c2_function { +public: + /// \brief get versioning information for the header file + /// \return the CVS Id string + const std::string cvs_header_vers() const { return + "c2_function.hh,v 1.53 2007/11/12 13:58:57 marcus Exp"; + } + + /// \brief get versioning information for the source file + /// \return the CVS Id string + const std::string cvs_file_vers() const ; + +public: + /// \brief destructor + virtual ~c2_function() { if(sampling_grid && !no_overwrite_grid) delete sampling_grid; } + + /// \brief get the value and derivatives. + /// + /// There is required checking for null pointers on the derivatives, + /// and most implementations should operate faster if derivatives are not needed. + /// \param[in] x the point at which to evaluate the function + /// \param[out] yprime the first derivative (if pointer is non-null) + /// \param[out] yprime2 the second derivative (if pointer is non-null) + /// \return the value of the function + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) =0 ; // { return 0; }; + + /// \brief evaluate the function in the classic way, ignoring derivatives. + /// \param x the point at which to evaluate + /// \return the value of the function + inline float_type operator () (float_type x) const throw(c2_exception) + { return value_with_derivatives(x, (float_type *)0, (float_type *)0); } + + /// \brief compose this function outside another. + /// \param inner the inner function + /// \return the composed function + c2_composed_function & operator ()(const c2_function &inner) const + { return *new c2_composed_function((*this), inner); } + + /// \brief get the value and derivatives. + /// + /// \param[in] x the point at which to evaluate the function + /// \param[out] yprime the first derivative (if pointer is non-null) + /// \param[out] yprime2 the second derivative (if pointer is non-null) + /// \return the value of the function + inline float_type operator () (float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { return value_with_derivatives(x, yprime, yprime2); } + + /// \brief solve f(x)==value very efficiently, with explicit knowledge of derivatives of the function + /// + /// find_root solves by iterated inverse quadratic extrapolation for a solution to f(x)=y. It + /// includes checks against bad convergence, so it should never be able to fail. Unlike typical + /// secant method or fancier Brent's method finders, this does not depend in any strong wasy on the + /// brackets, unless the finder has to resort to successive approximations to close in on a root. + /// Often, it is possible to make the brackets equal to the domain of the function, if there is + /// any clue as to where the root lies, as given by the parameter \a start. + /// \param lower_bracket the lower bound for the search + /// \param upper_bracket the upper bound for the search. Function sign must be + /// opposite to that at \a lower_bracket + /// \param start starting value for the search + /// \param value the value of the function being sought (solves f(x) = \a value) + /// \param[out] error If pointer is zero, errors raise exception. Otherwise, returns error here. + /// \param[out] final_yprime If pointer is not zero, return derivative of function at root + /// \param[out] final_yprime2 If pointer is not zero, return second derivative of function at root + /// \return the position of the root. + float_type find_root(float_type lower_bracket, float_type upper_bracket, float_type start, + float_type value, int *error=0, + float_type *final_yprime=0, float_type *final_yprime2=0 ) const throw(c2_exception) ; // solve f(x)=value + + /// \brief for points in xgrid, adaptively return Integral[f(x),{x,xgrid[i],xgrid[i+1]}] and return in vector, along with sum + /// + /// partial_integrals uses a method with an error O(dx**10) with full information from the derivatives, + /// and falls back to lower order methods if informed of incomplete derivatives. + /// It uses exact midpoint splitting of the intervals for recursion, resulting in no recomputation of the function + /// during recursive descent at previously computed points. + /// \param xgrid points between which to evaluate definite integrals. + /// \param partials if non-NULL, a vector in which to receive the partial integrals. + /// It will automatically be sized apprpropriately, if provided, to contain \a n - 1 elements where \a n is the length of \a xgrid + /// \param abs_tol the absolute error bound for each segment + /// \param rel_tol the fractional error bound for each segment. + /// If the error is smaller than either the relative or absolute tolerance, the integration step is finished. + /// \param derivs number of derivatives to trust, which sets the order of the integrator. The order + /// is 3*\a derivs + 4. \a derivs can be 0, 1, or 2. + /// \param adapt if true, use recursive adaptation, otherwise do simple evaluation on the grid provided + /// with no error checking. + /// \param extrapolate if true, use simple Richardson extrapolation on the final 2 steps to reduce the error. + /// \return sum of partial integrals, whcih is the definite integral from the first value in \a xgrid to the last. + float_type partial_integrals(std::vector xgrid, std::vector *partials = 0, + float_type abs_tol=1e-12, float_type rel_tol=1e-12, int derivs=2, bool adapt=true, bool extrapolate=true) const; + + /// \brief a fully-automated integrator which uses the information provided by the get_sampling_grid() function + /// to figure out what to do. + /// + /// It returns the integral of the function over the domain requested + /// with error tolerances as specified. It is just a front-end to partial_integrals() + /// + /// \param xmin lower bound of the domain for integration + /// \param xmax upper bound of the domain for integration + /// \param partials if non-NULL, a vector in which to receive the partial integrals. + /// It will automatically be sized apprpropriately, if provided, to contain \a n - 1 elements where \a n is the length of \a xgrid + /// \param abs_tol the absolute error bound for each segment + /// \param rel_tol the fractional error bound for each segment. + /// If the error is smaller than either the relative or absolute tolerance, the integration step is finished. + /// \param derivs number of derivatives to trust, which sets the order of the integrator. The order + /// is 3*\a derivs + 4. \a derivs can be 0, 1, or 2. + /// \param adapt if true, use recursive adaptation, otherwise do simple evaluation on the grid provided + /// with no error checking. + /// \param extrapolate if true, use simple Richardson extrapolation on the final 2 steps to reduce the error. + /// \return sum of partial integrals, whcih is the definite integral from the first value in \a xgrid to the last. + float_type integral(float_type xmin, float_type xmax, std::vector *partials = 0, + float_type abs_tol=1e-12, float_type rel_tol=1e-12, int derivs=2, bool adapt=true, bool extrapolate=true) const; + + /// \brief return the lower bound of the domain for this function as set by set_domain() + inline float_type xmin() const { return fXMin; } + /// \brief return the upper bound of the domain for this function as set by set_domain() + inline float_type xmax() const { return fXMax; } + /// \brief set the domain for this function. + void set_domain(float_type xmin, float_type xmax) { fXMin=xmin; fXMax=xmax; } + + /// \brief this is a counter owned by the function but which can be used to monitor efficiency of algorithms. + /// + /// It is not maintained automatically in general! + /// The adaptive integrator and root finder do clear it at the start and update it for performance checking. + /// \return number of evaluations logged since last reset. + volatile int get_evaluations() const { return evaluations; } + /// \brief reset the counter + void reset_evaluations() const { evaluations=0; } // evaluations are 'invisible' to constant + /// \brief count evaluations + inline void increment_evaluations() const { evaluations++; } + + /// \brief check that a vector is monotonic, throw an exception if not, and return a flag if it is reversed + /// + /// \param data a vector of data points which are expected to be monotonic. + /// \param message an informative string to include in an exception if this throws c2_exception + /// \return true if in decreasing order, false if increasing + bool check_monotonicity(const std::vector &data, const char message[]) throw(c2_exception); + + /// \brief establish a grid of 'interesting' points on the function. + /// + /// The sampling grid describes a reasonable initial set of points to look at the function. + /// this should generally be set at a scale which is quite coarse, and sufficient for initializing + /// adaptive integration or possibly root bracketing. For sampling a function to build a new interpolating + /// function, one may want to refine this for accuracy. However, interpolating_functions themselves + /// return their original X grid by default, so refining the grid in this case might be a bad idea. + /// \param grid a vector of abscissas. The contents is copied into an internal vector, so the \a grid can be discarded after passingin. + virtual void set_sampling_grid(const std::vector &grid) throw(c2_exception); + + /// \brief return the grid of 'interesting' points along this function which lie in the region requested + /// + /// if a sampling grid is defined, work from there, otherwise return vector of (xmin, xmax) + /// \param xmin the lower bound for which the function is to be sampled + /// \param xmax the upper bound for which the function is to be sampled + /// \return a new vector containing the samplng grid. + virtual std::vector &get_sampling_grid(float_type xmin, float_type xmax) const ; + + /// \brief clean up endpoints on a grid of points + /// + /// \param[in,out] result the sampling grid with excessively closely space endpoints removed. + /// The grid is modified in place. + void preen_sampling_grid(std::vector *result) const; + /// \brief refine a grid by splitting each interval into more intervals + /// \param grid the grid to refine + /// \param refinement the number of new steps for each old step + /// \return a new sampling grid with more points. + std::vector & refine_sampling_grid(const std::vector &grid, size_t refinement) const; + + /// \brief create a new c2_function from this one which is normalized on the interval + /// \param xmin lower bound of the domain for integration + /// \param xmax upper bound of the domain for integration + /// \param norm the desired integral for the function over the region + /// \return a new c2_function with the desired \a norm. + c2_function &normalized_function(float_type xmin, float_type xmax, float_type norm=1.0); + /// \brief create a new c2_function from this one which is square-normalized on the interval + /// \param xmin lower bound of the domain for integration + /// \param xmax upper bound of the domain for integration + /// \param norm the desired integral for the function over the region + /// \return a new c2_function with the desired \a norm. + c2_function &square_normalized_function(float_type xmin, float_type xmax, float_type norm=1.0); + /// \brief create a new c2_function from this one which is square-normalized with the provided \a weight on the interval + /// \param xmin lower bound of the domain for integration + /// \param xmax upper bound of the domain for integration + /// \param weight a c2_function providing the weight + /// \param norm the desired integral for the function over the region + /// \return a new c2_function with the desired \a norm. + c2_function &square_normalized_function(float_type xmin, float_type xmax, const c2_function &weight, float_type norm=1.0); + + /// \brief factory function to create a c2_sum from an regular algebraic expression. + /// \note + /// be very wary of ownership issues if this is used in a complex expression. + c2_sum &operator + (const c2_function &rhs) { return *new c2_sum(*this, rhs); } + /// \brief factory function to create a c2_diff from an regular algebraic expression. + /// \note + /// be very wary of ownership issues if this is used in a complex expression. + c2_diff &operator - (const c2_function &rhs) { return *new c2_diff(*this, rhs); } + /// \brief factory function to create a c2_product from an regular algebraic expression. + /// \note + /// be very wary of ownership issues if this is used in a complex expression. + c2_product &operator * (const c2_function &rhs) { return *new c2_product(*this, rhs); } + /// \brief factory function to create a c2_ratio from an regular algebraic expression. + /// \note + /// be very wary of ownership issues if this is used in a complex expression. + c2_ratio &operator / (const c2_function &rhs) { return *new c2_ratio(*this, rhs); } + + + + std::vector *sampling_grid; + bool no_overwrite_grid; + +protected: + c2_function(const c2_function &src) : sampling_grid(0), + no_overwrite_grid(false), + fXMin(src.fXMin), fXMax(src.fXMax), rootInitialized(false) + {} // copy constructor only copies domain, and is only for internal use + c2_function() : + sampling_grid(0), no_overwrite_grid(0), + fXMin(-std::numeric_limits::max()), + fXMax(std::numeric_limits::max()), + rootInitialized(false) + {} // prevent accidental naked construction (impossible any since this has pure virtual methods) + + // this should only be called very early on, by a constructor, before anyone else + // sets a sampling grid, or it will leak memory + virtual void set_sampling_grid_pointer(std::vector &grid) + { + if (sampling_grid && !no_overwrite_grid) delete sampling_grid; // grid was ours, lose it. + sampling_grid=&grid; no_overwrite_grid=1; + } + + float_type fXMin, fXMax; + mutable int evaluations; + +private: + /// \brief structure used for recursion in adaptive integrator. + /// + /// Contains all the information for the function at one point. + struct c2_integrate_fblock { float_type x, y, yp, ypp; }; + /// \brief structure used to pass information recursively. + /// + /// the \a abs_tol is scaled by a factor of two at each division. + /// Everything else is just passed down. + struct c2_integrate_recur { struct c2_integrate_fblock *f0, *f1, *f2; + float_type abs_tol, rel_tol, *lr, eps_scale, extrap_coef, extrap2; + int depth, derivs; + bool adapt, extrapolate; + }; + + /// \brief Carry out the recursive subdivision and integration. + /// + /// This passes information recursively through the \a recur block pointer + /// to allow very efficient recursion. + /// \param rb a pointer to the recur struct. + float_type integrate_step(struct c2_integrate_recur &rb) const; + + /// these carry a memory of the last root bracketing, + /// to avoid the necessity of evaluating the function on the brackets every time + /// if the brackets have not been changed. + mutable float_type lastRootLowerX, lastRootUpperX, lastRootLowerY, lastRootUpperY; + mutable int rootInitialized; + +}; + +/// \brief a container into which any other c2_function can be dropped, to allow expressions +/// with replacable components. +/// +///It is useful for plugging different InterpolatingFunctions into a c2_function expression. +///It saves a lot of effort in other places with casting away const declarations. +/// +/// It is also useful as a wrapper for a function if it is necessary to have a copy of a function +/// which has a different domain or sampling grid than the parent function. This can be +/// be used, for example, to patch badly-behaved functions with c2_piecewise_function by +/// taking the parent function, creating two plugins of it with domains on each side of the +/// nasty bit, and then inserting a nice function in the hole. +template class c2_plugin_function : public c2_function { +public: + /// \brief construct the container with no function + c2_plugin_function() : c2_function(), func(0), owns(false) {} + /// \brief construct the container with a pre-defined function + c2_plugin_function(const c2_function &f) : c2_function(), func(0), owns(false) { set_function(f); } + /// \brief fill the container with a new function + void set_function(const c2_function &f) + { + if(owns && func) delete func; + func=&f; set_domain(f.xmin(), f.xmax()); + set_sampling_grid_pointer(*f.sampling_grid); + owns=false; + } + /// \copydoc c2_function::value_with_derivatives + /// Uses the internal function pointer set by set_function(). + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { + if(!func) throw c2_exception("c2_plugin_function called uninitialized"); + return this->func->value_with_derivatives(x, yprime, yprime2); + } + /// \brief clear the function + /// + /// Any attempt to use this c2_plugin_function throws an exception if the saved function is cleared. + void unset_function(void) { if(owns && func) delete func; func=0; owns=false; } + /// \brief destructor + ~c2_plugin_function() { if(owns && func) delete func; } + /// \brief tell us we should delete the function at destruction. NOT sticky when function is reset + void set_ownership() { this->owns=true; } + +protected: + const c2_function *func; + bool owns; + +}; + +/// \brief Provides support for c2_function objects which are constructed from two other c2_function +/// objects. +/// +/// It provides a very primitive ownership concept, so that the creator can tag a function +/// as being owned by this function, so that when this function is deleted, the owned function will be deleted, too. +/// This allows a piece of code to create various c2_function objects, combine them with binary operators, +/// appropriately mark wich ones have no other possible owners, and return the final function with +/// reasonable faith that everything will get cleaned up when the final function is deleted. Note that +/// none of this marking is automatic, to keep this class very lightweight. +template class c2_binary_function : public c2_function { +public: + + + /// \brief function to manage the binary operation, used by c2_binary_function::value_with_derivatives() + /// + /// Normally not used alone, but can be used to combine functions in other contexts. + /// See interpolating_function::binary_operator() for an example. + /// \param left the function on the left of the binary operator or outside the composition + /// \param right the function to the right of the operator or inside the composition + /// \param[in] x the point at which to evaluate the function + /// \param[out] yprime the first derivative (if pointer is non-null) + /// \param[out] yprime2 the second derivative (if pointer is non-null) + /// \return the value of the function + virtual float_type combine(const c2_function &left, const c2_function &right, + float_type x, float_type *yprime, float_type *yprime2) const =0; + + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw (c2_exception) + { + return this->combine(this->Left, this->Right, x, yprime, yprime2); + } + + /// \brief allow c2_binary_function to remember ownership of contained functions for automatic cleanup + /// + /// upon destruction, this will cause disposal of the left member function + void set_left_ownership(void) { leftown=true; } + /// \brief allow c2_binary_function to remember ownership of contained functions for automatic cleanup + /// + /// upon destruction, this will cause disposal of the right member function + void set_right_ownership(void) { rightown=true; } + /// \brief allow c2_binary_function to remember ownership of contained functions for automatic cleanup + /// + /// upon destruction, this will cause disposal of both member functions + void set_ownership(void) { leftown=rightown=true; } + /// \brief destructor executes disposal of member functions if flagged + /// + /// depends on judicious use of set_ownership(), set_right_ownership(), or set_left_ownership() + virtual ~c2_binary_function() { + if(leftown) delete &Left; + if(rightown) delete &Right; + } + +protected: + /// \brief construct the binary function + /// \param left the c2_function to be used in the left side of the binary relation + /// \param right the c2_function to be used in the right side of the binary relation + c2_binary_function( const c2_function &left, const c2_function &right) : + c2_function(), + Left(left), Right(right), leftown(false), rightown(false) + { + set_domain( + (left.xmin() > right.xmin()) ? left.xmin() : right.xmin(), + (left.xmax() < right.xmax()) ? left.xmax() : right.xmax() + ); + } + + /// \brief construct a 'stub' c2_binary_function, which provides access to the combine() function + /// \note Do not evaluate a 'stub' ever. It is only used so that combine() can be called + c2_binary_function() : c2_function(), + Left(*((c2_function *)0)), Right(*((c2_function *)0)) {} + + const c2_function &Left, &Right; + bool leftown, rightown; + +}; + +/// \brief Create a very lightweight method to return a scalar multiple of another function. +/// +template class c2_scaled_function : public c2_plugin_function { +public: + /// \brief construct the function with its scale factor. + /// + /// \param outer the function to be scaled + /// \param scale the multiplicative scale factor + c2_scaled_function(const c2_function &outer, float_type scale) : + c2_plugin_function(outer), yscale(scale) { } + + /// \brief set a new scale factor + /// \param scale the new factor + void reset(float_type scale) { yscale=scale; } + + /// \copydoc c2_function::value_with_derivatives + /// + /// provide our own value_with_derivatives which bypasses the combiner for quicker operation + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw (c2_exception) + { + float_type y=this->func->value_with_derivatives(x, yprime, yprime2); + if(yprime) (*yprime)*=yscale; + if(yprime2) (*yprime2)*=yscale; + return y*yscale; + } + +protected: + c2_scaled_function() {} // hide default constructor, since its use is almost always an error. + float_type yscale; +}; + +/// \brief A container into which any other c2_function can be dropped. +/// +/// It allows a function to be pre-evaluated at a point, and used at multiple places in an expression +/// efficiently. If it is re-evaluated at the previous point, it returns the remembered values; +/// otherwise, it re-evauates the function at the new point. +/// +template class c2_cached_function : public c2_plugin_function { +public: + /// \brief construct the container + /// + /// \param f the function to be cached + c2_cached_function(const c2_function &f) : c2_plugin_function(f), init(false) {} + /// \copydoc c2_function::value_with_derivatives + /// + /// Checks to see if the function is being re-evaluated at the previous point, and + /// returns remembered values if so. + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { + if(!init || x != x0) { + y=this->func->value_with_derivatives(x, &yp, &ypp); + x0=x; + init=true; + } + if(yprime) *yprime=yp; + if(yprime2) *yprime2=ypp; + return y; + } + +protected: + c2_cached_function() {} // hide default constructor, since its use is almost always an error. + mutable bool init; + mutable float_type x0, y, yp, ypp; + +}; + +/// \brief Provides function composition (nesting) +/// +/// This allows evaluation of \a f(g(x)) where \a f and \a g are c2_function objects. +/// +/// \note See c2_binary_function for discussion of ownership. +template class c2_composed_function : public c2_binary_function { +public: + + /// \brief construct \a outer( \a inner (x)) + /// \note See c2_binary_function for discussion of ownership. + /// \param outer the outer function + /// \param inner the inner function + c2_composed_function(const c2_function &outer, const c2_function &inner) : c2_binary_function(outer, inner) {} + /// \brief Create a stub just for the combiner to avoid statics. + c2_composed_function() : c2_binary_function() {} ; + + virtual float_type combine(const c2_function &left, const c2_function &right, + float_type x, float_type *yprime, float_type *yprime2) const + { + float_type y0, yp0, ypp0, y1, yp1, ypp1; + float_type *yp0p, *ypp0p, *yp1p, *ypp1p; + if(yprime || yprime2) { + yp0p=&yp0; ypp0p=&ypp0; yp1p=&yp1; ypp1p=&ypp1; + } else { + yp0p=ypp0p=yp1p=ypp1p=0; + } + + y0=right.value_with_derivatives(x, yp0p, ypp0p); + y1=left.value_with_derivatives(y0, yp1p, ypp1p); + if(yprime) *yprime=yp1*yp0; + if(yprime2) *yprime2=ypp0*yp1+yp0*yp0*ypp1; + return y1; + } +}; + +/// \brief create a c2_function which is the sum of two other c2_function objects. +/// +/// \note See c2_binary_function for discussion of ownership. +template class c2_sum : public c2_binary_function { +public: + /// \brief construct \a left + \a right + /// \note See c2_binary_function for discussion of ownership. + /// \param left the left function + /// \param right the right function + c2_sum(const c2_function &left, const c2_function &right) : c2_binary_function(left, right) {} + /// \brief Create a stub just for the combiner to avoid statics. + c2_sum() : c2_binary_function() {} ; // create a stub just for the combiner to avoid statics + + // function to do derivative arithmetic for sums + virtual float_type combine(const c2_function &left, const c2_function &right, + float_type x, float_type *yprime, float_type *yprime2) const + { + float_type y0, yp0, ypp0, y1, yp1, ypp1; + float_type *yp0p, *ypp0p, *yp1p, *ypp1p; + if(yprime || yprime2) { + yp0p=&yp0; ypp0p=& ypp0; yp1p=&yp1; ypp1p=&ypp1; + } else { + yp0p=ypp0p=yp1p=ypp1p=0; + } + y0=left.value_with_derivatives(x, yp0p, ypp0p); + y1=right.value_with_derivatives(x, yp1p, ypp1p); + if(yprime) *yprime=yp0+yp1; + if(yprime2) *yprime2=ypp0+ypp1; + return y0+y1; + } +}; + + +/// \brief create a c2_function which is the difference of two other c2_functions. +/// +/// \note See c2_binary_function for discussion of ownership. +template class c2_diff : public c2_binary_function { +public: + /// \brief construct \a left - \a right + /// \note See c2_binary_function for discussion of ownership. + /// \param left the left function + /// \param right the right function + c2_diff(const c2_function &left, const c2_function &right) : c2_binary_function(left, right) {} + /// \brief Create a stub just for the combiner to avoid statics. + c2_diff() : c2_binary_function() {} ; // create a stub just for the combiner to avoid statics + + // function to do derivative arithmetic for diffs + virtual float_type combine(const c2_function &left, const c2_function &right, + float_type x, float_type *yprime, float_type *yprime2) const + { + float_type y0, yp0, ypp0, y1, yp1, ypp1; + float_type *yp0p, *ypp0p, *yp1p, *ypp1p; + if(yprime || yprime2) { + yp0p=&yp0; ypp0p=&ypp0; yp1p=&yp1; ypp1p=&ypp1; + } else { + yp0p=ypp0p=yp1p=ypp1p=0; + } + y0=left.value_with_derivatives(x, yp0p, ypp0p); + y1=right.value_with_derivatives(x, yp1p, ypp1p); + if(yprime) *yprime=yp0-yp1; + if(yprime2) *yprime2=ypp0-ypp1; + return y0-y1; + } +}; + + +/// \brief create a c2_function which is the product of two other c2_functions. +/// +/// \note See c2_binary_function for discussion of ownership. +template class c2_product : public c2_binary_function { +public: + /// \brief construct \a left * \a right + /// \note See c2_binary_function for discussion of ownership. + /// \param left the left function + /// \param right the right function + c2_product(const c2_function &left, const c2_function &right) : c2_binary_function(left, right) {} + /// \brief Create a stub just for the combiner to avoid statics. + c2_product() : c2_binary_function() {} ; // create a stub just for the combiner to avoid statics + + virtual float_type combine(const c2_function &left, const c2_function &right, + float_type x, float_type *yprime, float_type *yprime2) const + { + float_type y0, yp0, ypp0, y1, yp1, ypp1; + float_type *yp0p, *ypp0p, *yp1p, *ypp1p; + if(yprime || yprime2) { + yp0p=&yp0; ypp0p=&ypp0; yp1p=&yp1; ypp1p=&ypp1; + } else { + yp0p=ypp0p=yp1p=ypp1p=0; + } + y0=left.value_with_derivatives(x, yp0p, ypp0p); + y1=right.value_with_derivatives(x, yp1p, ypp1p); + if(yprime) *yprime=y1*yp0+y0*yp1; + if(yprime2) *yprime2=ypp0*y1+2.0*yp0*yp1+ypp1*y0; + return y0*y1; + } +}; + + +/// \brief create a c2_function which is the ratio of two other c2_functions. +/// +/// \note See c2_binary_function for discussion of ownership. +template class c2_ratio : public c2_binary_function { +public: + /// \brief construct \a left / \a right + /// \note See c2_binary_function for discussion of ownership. + /// \param left the left function + /// \param right the right function + c2_ratio(const c2_function &left, const c2_function &right) : c2_binary_function(left, right) {} + /// \brief Create a stub just for the combiner to avoid statics. + c2_ratio() : c2_binary_function() {} ; // create a stub just for the combiner to avoid statics + + virtual float_type combine(const c2_function &left, const c2_function &right, + float_type x, float_type *yprime, float_type *yprime2) const + { + float_type y0, yp0, ypp0, y1, yp1, ypp1; + float_type *yp0p, *ypp0p, *yp1p, *ypp1p; + if(yprime || yprime2) { + yp0p=&yp0; ypp0p=&ypp0; yp1p=&yp1; ypp1p=&ypp1; + } else { + yp0p=ypp0p=yp1p=ypp1p=0; + } + y0=left.value_with_derivatives(x, yp0p, ypp0p); + y1=right.value_with_derivatives(x, yp1p, ypp1p); + if(yprime) *yprime=(yp0*y1-y0*yp1)/(y1*y1); // first deriv of ratio + if(yprime2) *yprime2=(y1*y1*ypp0+y0*(2*yp1*yp1-y1*ypp1)-2*y1*yp0*yp1)/(y1*y1*y1); // second deriv of ratio + return y0/y1; + } + +}; + +/// \brief a c2_function which is constant : can do interpolating_function f2=f1 + c2_constant(11.3) +template class c2_constant : public c2_function { +public: + c2_constant(float_type x=0.0) : c2_function(), value(x) {} + void reset(float_type val) { value=val; } + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { if(yprime) *yprime=0; if(yprime2) *yprime2=0; return value; } + +private: + float_type value; +}; + +/** + \brief create a cubic spline interpolation of a set of (x,y) pairs + + This is one of the main reasons for c2_function objects to exist. + + It provides support for cubic spline interpolation of data provides from tables of \a x, \a y pairs. + It supports automatic, transparent linearization of the data before storing in its tables (through + subclasses such as + log_lin_interpolating_function, lin_log_interpolating_function, and + log_log_interpolating_function) to permit very high accuracy representations of data which have a suitable + structure. It provides utility functions LinearInterpolatingGrid() and LogLogInterpolatingGrid() + to create grids for mapping other functions onto a arithmetic or geometric grid. + + In its simplest form, an untransformed cubic spline of a data set, using natural boundary conditions + (vanishing second derivative), is created as: \n + \code + std::vector xvals(10), yvals(10); + // < fill in xvals and yvals > + interpolating_function myfunc(xvals, yvals); + // and it can be evaluated at a point for its value only by: + double y=myfunc(x); + // or it can be evaluated with its derivatives by + double yprime, yprime2; + double y=myfunc(x,&yprime, &yprime2); + \endcode +*/ + +template class interpolating_function : public c2_function { +public: + /// \brief create the most general interpolating_function which defaults to linear-linear space + /// + /// lots to say here, but see Numerical Recipes for a discussion of cubic splines. + /// \param x the list of abscissas. Must be either strictly increasing or strictly decreasing. + /// Strictly increasing is preferred, as less memory is used since a copy is not required for the sampling grid. + /// \param f the list of function values. + /// \param lowerSlopeNatural if true, set y''(first point)=0, otherwise compute it from \a lowerSope + /// \param lowerSlope derivative of the function at the lower bound, used only if \a lowerSlopeNatural is false + /// \param upperSlopeNatural if true, set y''(last point)=0, otherwise compute it from \a upperSope + /// \param upperSlope derivative of the function at the upper bound, used only if \a upperSlopeNatural is false + /// \param inputXConversion a function (not a c2_function) which converts \a x into the internal space. \n + /// If this is NULL, use linear space and ignore inputXConversionPrime, inputXConversionDPrime + /// \param inputYConversion a function (not a c2_function) which converts \a y into the internal space. \n + /// If this is NULL, use linear space and ignore inputYConversionPrime, inputYConversionDPrime, outputYConversion + /// \param outputYConversion a function (not a c2_function) which converts \a y out of the internal space + /// \param inputXConversionPrime the derivative of \a inputXConversion + /// \param inputYConversionPrime the derivative of \a inputYConversion + /// \param inputXConversionDPrime the second derivative of \a inputXConversion + /// \param inputYConversionDPrime the second derivative of \a inputYConversion + interpolating_function(const std::vector &x, const std::vector &f, + bool lowerSlopeNatural=true, float_type lowerSlope=0.0, + bool upperSlopeNatural=true, float_type upperSlope=0.0, + float_type (*inputXConversion)(float_type)=0, + float_type (*inputYConversion)(float_type)=0, + float_type (*outputYConversion)(float_type)=0, + float_type (*inputXConversionPrime)(float_type)=0, + float_type (*inputYConversionPrime)(float_type)=0, + float_type (*inputXConversionDPrime)(float_type)=0, + float_type (*inputYConversionDPrime)(float_type)=0 + ) throw(c2_exception) : c2_function() + { init(x, f, lowerSlopeNatural, lowerSlope, upperSlopeNatural, upperSlope, + inputXConversion, inputYConversion, outputYConversion, + inputXConversionPrime, inputYConversionPrime, + inputXConversionDPrime, inputYConversionDPrime + ); + } + + /// \brief copy constructor + /// \param rhs interpolating_function to copy from + interpolating_function(const interpolating_function &rhs) : c2_function(rhs), + Xraw(rhs.Xraw), X(rhs.X), F(rhs.F), y2(rhs.y2), + fXin(rhs.fXin), fYin(rhs.fYin), fYout(rhs.fYout), + fXinPrime(rhs.fXinPrime), fYinPrime(rhs.fYinPrime), + fXinDPrime(rhs.fXinDPrime), fYinDPrime(rhs.fYinDPrime) , + xInverted(rhs.xInverted), lastKLow(-1) + { set_sampling_grid_pointer(Xraw); } + + virtual ~interpolating_function() { } // just to suppress warnings about no virtual destructor + + /// \brief retrieve copies of the x & y tables from which this was built + /// + /// This is often useful in the creation of new interpolating functions with transformed data. + /// The vectorswill have their sizes set correctly on return. + /// \param [in, out] xvals the abscissas + /// \param [in, out] yvals the ordinates + void get_data(std::vector &xvals, std::vector &yvals) const throw() ; + + /// \brief enable extrapolation of the function below the tabulated data. + /// + /// This allows the interpolator to be extrapolated outside the bounds of the data, + /// using whatever derivatives it already had at the lower bound. + /// \param bound the abscissa to which the function should be extended. + void set_lower_extrapolation(float_type bound); + /// \brief enable extrapolation of the function above the tabulated data. + /// + /// This allows the interpolator to be extrapolated outside the bounds of the data, + /// using whatever derivatives it already had at the upper bound. + /// \param bound the abscissa to which the function should be extended. + void set_upper_extrapolation(float_type bound); + + // these functions correctly combine the interpolating function with another interpolating function + // preserving the X bounds and mapping functions of the host (left hand) function. + + /// \brief create a new interpolating_function which is the \a source + /// function applied to every point in the interpolating tables + /// + /// This carefully manages the derivative of the composed function at the two ends. + /// \param source the function to apply + /// \return a new interpolating_function with the same mappings for x and y + interpolating_function & unary_operator(const c2_function &source) const; + + /// \brief create a new interpolating_function which is the parent interpolating_function + /// combined with \a rhs using \a combiner at every point in the interpolating tables + /// + /// This carefully manages the derivative of the composed function at the two ends. + /// \param rhs the function to apply + /// \param combining_stub a function which defines which binary operation to use. + /// \return a new interpolating_function with the same mappings for x and y + interpolating_function & binary_operator(const c2_function &rhs, + c2_binary_function *combining_stub + ) const; + + // InterpolatingFunctions override the c2_function operators, since they explicitly re-generate the interpolation table + // when they are applied. If this is not desired, these operators are not virtual, so the interpolating_function + // can be upcast back to a c2_function to produce unprocessed binaries. + + /// \brief produce a newly resampled interpolating_function which is the specified sum. + /// \param rhs the function to add, pointwise + /// \return a new interpolating_function + /// \note + /// InterpolatingFunctions override the c2_function operators, since they explicitly re-generate the interpolation table + /// when they are applied. If this is not desired, these operators are not virtual, so the interpolating_function + /// can be upcast back to a c2_function to produce unprocessed binaries. + interpolating_function & operator + (const c2_function &rhs) const { + return binary_operator(rhs, new c2_sum()); } + /// \brief produce a newly resampled interpolating_function which is the specified difference. + /// \param rhs the function to subtract, pointwise + /// \return a new interpolating_function + /// \note + /// InterpolatingFunctions override the c2_function operators, since they explicitly re-generate the interpolation table + /// when they are applied. If this is not desired, these operators are not virtual, so the interpolating_function + /// can be upcast back to a c2_function to produce unprocessed binaries. + interpolating_function & operator - (const c2_function &rhs) const { + return binary_operator(rhs, new c2_diff()); } + /// \brief produce a newly resampled interpolating_function which is the specified product. + /// \param rhs the function to multiply, pointwise + /// \return a new interpolating_function + /// \note + /// InterpolatingFunctions override the c2_function operators, since they explicitly re-generate the interpolation table + /// when they are applied. If this is not desired, these operators are not virtual, so the interpolating_function + /// can be upcast back to a c2_function to produce unprocessed binaries. + interpolating_function & operator * (const c2_function &rhs) const { + return binary_operator(rhs, new c2_product()); } + /// \brief produce a newly resampled interpolating_function which is the specified ratio. + /// \param rhs the function to divide, pointwise + /// \return a new interpolating_function + /// \note + /// InterpolatingFunctions override the c2_function operators, since they explicitly re-generate the interpolation table + /// when they are applied. If this is not desired, these operators are not virtual, so the interpolating_function + /// can be upcast back to a c2_function to produce unprocessed binaries. + interpolating_function & operator / (const c2_function &rhs) const { + return binary_operator(rhs, new c2_ratio()); } + /// \brief produce a newly resampled interpolating_function which is the specified sum. + /// \param rhs a constant to add, pointwise + /// \return a new interpolating_function + /// \note + /// InterpolatingFunctions override the c2_function operators, since they explicitly re-generate the interpolation table + /// when they are applied. If this is not desired, these operators are not virtual, so the interpolating_function + /// can be upcast back to a c2_function to produce unprocessed binaries. + interpolating_function & operator + (float_type rhs) const { return (*this)+c2_constant(rhs); } + /// \brief produce a newly resampled interpolating_function which is the specified difference. + /// \param rhs a constant to subtract, pointwise + /// \return a new interpolating_function + /// \note + /// InterpolatingFunctions override the c2_function operators, since they explicitly re-generate the interpolation table + /// when they are applied. If this is not desired, these operators are not virtual, so the interpolating_function + /// can be upcast back to a c2_function to produce unprocessed binaries. + interpolating_function & operator - (float_type rhs) const { return (*this)-c2_constant(rhs); } + /// \brief produce a newly resampled interpolating_function which is the specified product. + /// \param rhs a constant to multiply, pointwise + /// \return a new interpolating_function + /// \note + /// InterpolatingFunctions override the c2_function operators, since they explicitly re-generate the interpolation table + /// when they are applied. If this is not desired, these operators are not virtual, so the interpolating_function + /// can be upcast back to a c2_function to produce unprocessed binaries. + interpolating_function & operator * (float_type rhs) const { return (*this)*c2_constant(rhs); } + /// \brief produce a newly resampled interpolating_function which is the specified ratio. + /// \param rhs a constant to divide, pointwise + /// \return a new interpolating_function + /// \note + /// InterpolatingFunctions override the c2_function operators, since they explicitly re-generate the interpolation table + /// when they are applied. If this is not desired, these operators are not virtual, so the interpolating_function + /// can be upcast back to a c2_function to produce unprocessed binaries. + interpolating_function & operator / (float_type rhs) const { return (*this)/c2_constant(rhs); } + + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception); + + /// \brief move value & derivatives into our internal coordinates (use splint to go the other way!) + /// \note why? + void localize_derivatives(float_type xraw, float_type y, float_type yprime, float_type yprime2, float_type *y0, float_type *yp0, float_type *ypp0) const; + +protected: + + interpolating_function() : c2_function() { } // default constructor is never used, prevent accidents by protecting it. + + /// \brief do the dirty work of constructing the spline. See interpolating_function constructor for details. + void init(const std::vector &, const std::vector &, + bool lowerSlopeNatural, float_type lowerSlope, + bool upperSlopeNatural, float_type upperSlope, + float_type (*inputXConversion)(float_type)=0, + float_type (*inputXConversionPrime)(float_type)=0, + float_type (*inputXConversionDPrime)(float_type)=0, + float_type (*inputYConversion)(float_type)=0, + float_type (*inputYConversionPrime)(float_type)=0, + float_type (*inputYConversionDPrime)(float_type)=0, + float_type (*outputYConversion)(float_type)=0 + ) throw(c2_exception) ; + + std::vector Xraw, X, F, y2; + + float_type (*fXin)(float_type), (*fYin)(float_type), (*fYout)(float_type); + float_type (*fXinPrime)(float_type), (*fYinPrime)(float_type); + float_type (*fXinDPrime)(float_type), (*fYinDPrime)(float_type); + + int xInverted; + mutable int lastKLow; +}; + +/// \brief An interpolatingFunction with X transformed into log space. +/// +/// Most useful for functions looking like y=log(x) or any other function with a huge X dynamic range, +/// and a slowly varying Y. +template class log_lin_interpolating_function : public interpolating_function { +public: + /// \brief Construct the function. + /// \param x the list of abscissas. Must be either strictly increasing or strictly decreasing. + /// Strictly increasing is preferred, as less memory is used since a copy is not required for the sampling grid. + /// \param f the list of function values. + /// \param lowerSlopeNatural if true, set y''(first point)=0 in LogLin space, otherwise compute it from \a lowerSope + /// \param lowerSlope derivative of the function at the lower bound, used only if \a lowerSlopeNatural is false + /// \param upperSlopeNatural if true, set y''(last point)=0 in LogLin space, otherwise compute it from \a upperSope + /// \param upperSlope derivative of the function at the upper bound, used only if \a upperSlopeNatural is false + log_lin_interpolating_function(const std::vector &x, const std::vector &f, + bool lowerSlopeNatural=true, float_type lowerSlope=0.0, + bool upperSlopeNatural=true, float_type upperSlope=0.0); +protected: + log_lin_interpolating_function() {} // do not allow naked construction... it is usually an accident. +}; + + +/// \brief An interpolatingFunction with Y transformed into log space. +/// +/// Most useful for functions looking like y=exp(x) +template class lin_log_interpolating_function : public interpolating_function { +public: + /// \brief Construct the function. + /// \param x the list of abscissas. Must be either strictly increasing or strictly decreasing. + /// Strictly increasing is preferred, as less memory is used since a copy is not required for the sampling grid. + /// \param f the list of function values. + /// \param lowerSlopeNatural if true, set y''(first point)=0 in LinLog space, otherwise compute it from \a lowerSope + /// \param lowerSlope derivative of the function at the lower bound, used only if \a lowerSlopeNatural is false + /// \param upperSlopeNatural if true, set y''(last point)=0 in LinLog space, otherwise compute it from \a upperSope + /// \param upperSlope derivative of the function at the upper bound, used only if \a upperSlopeNatural is false + lin_log_interpolating_function(const std::vector &x, const std::vector &f, + bool lowerSlopeNatural=true, float_type lowerSlope=0.0, + bool upperSlopeNatural=true, float_type upperSlope=0.0); +protected: + lin_log_interpolating_function() {} // do not allow naked construction... it is usually an accident. +}; + + +/// \brief An interpolatingFunction with X and Y transformed into log space. +/// +/// Most useful for functions looking like y=x^n or any other function with a huge X and Y dynamic range. +template class log_log_interpolating_function : public interpolating_function { +public: + /// \brief Construct the function. + /// \param x the list of abscissas. Must be either strictly increasing or strictly decreasing. + /// Strictly increasing is preferred, as less memory is used since a copy is not required for the sampling grid. + /// \param f the list of function values. + /// \param lowerSlopeNatural if true, set y''(first point)=0 in LogLog space, otherwise compute it from \a lowerSope + /// \param lowerSlope derivative of the function at the lower bound, used only if \a lowerSlopeNatural is false + /// \param upperSlopeNatural if true, set y''(last point)=0 in LogLog space, otherwise compute it from \a upperSope + /// \param upperSlope derivative of the function at the upper bound, used only if \a upperSlopeNatural is false + log_log_interpolating_function(const std::vector &x, const std::vector &f, + bool lowerSlopeNatural=true, float_type lowerSlope=0.0, + bool upperSlopeNatural=true, float_type upperSlope=0.0); +protected: + log_log_interpolating_function() {} // do not allow naked construction... it is usually an accident. +}; + + +/// \brief An interpolating_function with X in reciprocal space and Y transformed in log space. +/// +/// Most useful for thermodynamic types of data where Y is roughly A*exp(-B/x). +/// Typical examples are reaction rate data, and thermistor calibration data. +template class arrhenius_interpolating_function : public interpolating_function { +public: + /// \brief Construct the function. + /// \param x the list of abscissas. Must be either strictly increasing or strictly decreasing. + /// Strictly increasing is preferred, as less memory is used since a copy is not required for the sampling grid. + /// \param f the list of function values. + /// \param lowerSlopeNatural if true, set y''(first point)=0 in Arrhenius space, otherwise compute it from \a lowerSope + /// \param lowerSlope derivative of the function at the lower bound, used only if \a lowerSlopeNatural is false + /// \param upperSlopeNatural if true, set y''(last point)=0 in Arrhenius space, otherwise compute it from \a upperSope + /// \param upperSlope derivative of the function at the upper bound, used only if \a upperSlopeNatural is false + arrhenius_interpolating_function(const std::vector &x, const std::vector &f, + bool lowerSlopeNatural=true, float_type lowerSlope=0.0, + bool upperSlopeNatural=true, float_type upperSlope=0.0); +protected: + arrhenius_interpolating_function() {} // do not allow naked construction... it is usually an accident. +}; + +/** + \brief create a linear-linear interpolating grid with both x & y set to + (xmin, xmin+dx, ... xmin + (count-1)*dx ) + + very useful for transformaiton with other functions e.g. + \code + f=c2_sin::sin(LinearInterpolatingGrid(-0.1,0.1, 65)) + \endcode + creates a spline table of sin(x) slightly beyond the first period + \param xmin the starting point for the grid + \param dx the step size for the grid + \param count the number of points in the grid + \return an identity interpolating_function with the requested grid + */ +template interpolating_function &linear_interpolating_grid(float_type xmin, float_type dx, int count) { + std::vector x(count); + for(int i=0; i(x,x); +} + +/** + \brief create a log-log interpolating grid with both x & y set to + (xmin, xmin*dx, ... xmin * dx^(count-1) ) + + very useful for transformaiton with other functions e.g. + \code + f=c2_log::log(LogLogInterpolatingGrid(2, 1.1, 65)) + \endcode + creates a spline table of log(x) + \param xmin the starting point for the grid + \param dx the ratio between points + \param count the number of points in the grid + \return an identity log_log_interpolating_function with the requested grid +*/ +template log_log_interpolating_function &log_log_interpolating_grid(float_type xmin, float_type dx, int count) { + std::vector x(count); + x[0]=xmin; + for(int i=1; i(x,x); +} + +/// \brief compute sin(x) with its derivatives. +/// +/// Creates a singleton instance c2_sin::sin of itself for convenient access. +template class c2_sin : public c2_function { +public: + /// \brief constructor. There is alread a singleton c2_sin::sin, which usually suffices. + c2_sin() {} + + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { float_type q=std::sin(x); if(yprime) *yprime=std::cos(x); if(yprime2) *yprime2=-q; return q; } + + /// \brief return a grid dynamically, suitable for use with trig functions with period 2*pi + /// \param xmin the lower bound for the grid + /// \param xmax upper bound for the grid + /// \return a new sampling grid. + virtual std::vector &get_sampling_grid(float_type xmin, float_type xmax); + /// \brief the static singleton + static const c2_sin sin; +}; +/// \brief compute cos(x) with its derivatives. +/// +/// Creates a singleton instance c2_cos::cos of itself for convenient access. +template class c2_cos : public c2_sin { +public: + /// \brief constructor. There is already a singleton c2_cos::cos, which usually suffices. + c2_cos() {} + + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { float_type q=std::cos(x); if(yprime) *yprime=-std::sin(x); if(yprime2) *yprime2=-q; return q; } + /// \brief the static singleton + static const c2_cos cos; +}; +/// \brief compute tan(x) with its derivatives. +/// +/// Creates a singleton instance c2_tan::tan of itself for convenient access. +template class c2_tan : public c2_function { +public: + /// \brief constructor. There is already a singleton c2_tan::tan, which usually suffices. + c2_tan() {} + + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { + float_type c=std::cos(x), s=std::sin(x); + float_type t=s/c; + float_type yp=1/(c*c); + if(yprime) *yprime=yp; if(yprime2) *yprime2=2*t*yp; + return t; + } + /// \brief the static singleton + static const c2_tan tan; +}; +/// \brief compute log(x) with its derivatives. +/// +/// Creates a singleton instance c2_log::log of itself for convenient access. +template class c2_log : public c2_function { +public: + /// \brief constructor. There is already a singleton c2_log::log, which usually suffices. + c2_log() {} + + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { if(yprime) *yprime=1.0/x; if(yprime2) *yprime2=-1.0/(x*x); return std::log(x); } + /// \brief the static singleton + static const c2_log log; +}; +/// \brief compute exp(x) with its derivatives. +/// +/// Creates a singleton instance c2_exp::exp of itself for convenient access. +template class c2_exp : public c2_function { +public: + /// \brief constructor. There is already a singleton c2_exp::exp, which usually suffices. + c2_exp() {} + + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { float_type q=std::exp(x); if(yprime) *yprime=q; if(yprime2) *yprime2=q; return q; } + /// \ brief the static singleton + static const c2_exp exp; +}; +/// \brief compute sqrt(x) with its derivatives. +/// +/// Creates a singleton instance c2_sqrt::sqrt of itself for convenient access. +template class c2_sqrt : public c2_function { +public: + /// \brief constructor. There is already a singleton c2_sqrt::sqrt, which usually suffices. + c2_sqrt() {} + + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { float_type q=std::sqrt(x); if(yprime) *yprime=0.5/q; if(yprime2) *yprime2=-0.25/(x*q); return q; } + /// \brief the static singleton + static const c2_sqrt sqrt; +}; +/// \brief compute scale/x with its derivatives. +/// +/// Creates a singleton instance c2_recip:recip of itself for convenient access. +template class c2_recip : public c2_function { +public: + /// \brief constructor. There is already a singleton c2_recip::recip, which usually suffices. + c2_recip(float_type scale) : rscale(scale) {} + + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { + float_type q=1.0/x; + float_type y=rscale*q; + if(yprime) *yprime=-y*q; + if(yprime2) *yprime2=2*y*q*q; + return y; + } + /// \brief reset the scale factor + /// \param scale the new numerator + void reset(float_type scale) { rscale=scale; } + /// \brief the static singleton + static const c2_recip recip; +private: + float_type rscale; +}; +/// \brief compute x with its derivatives. +/// +/// Creates a singleton instance c2_identity::identity of itself for convenient access. +template class c2_identity : public c2_function { +public: + /// \brief constructor. There is already a singleton c2_identity::identity, which usually suffices. + c2_identity() {} + + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { if(yprime) *yprime=1.0; if(yprime2) *yprime2=0; return x; } + /// \brief the static singleton + static const c2_identity identity; +}; + +/** + \brief create a linear mapping of another function + + for example, given a c2_function \a f + \code + c2_linear L(1.2, 2.0, 3.0); + c2_composed_function &F=L(f); + \endcode + produces a new c2_function F=2.0+3.0*(\a f - 1.2) +*/ +template class c2_linear : public c2_function { +public: + /// \brief Construct the operator f=y0 + slope * (x-x0) + /// \param x0 the x offset + /// \param y0 the y-intercept i.e. f(x0) + /// \param slope the slope of the mapping + c2_linear(float_type x0, float_type y0, float_type slope) : xint(x0), intercept(y0), m(slope) {} + /// \brief Change the slope and intercepts after construction. + /// \param x0 the x offset + /// \param y0 the y-intercept + /// \param slope the slope of the mapping + void reset(float_type x0, float_type y0, float_type slope) { xint=x0; intercept=y0; m=slope; } + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { if(yprime) *yprime=m; if(yprime2) *yprime2=0; return m*(x-xint)+intercept; } + +private: + float_type xint, intercept, m; +protected: + c2_linear() {} // do not allow naked construction... it is usually an accident. +}; + +/** +\brief create a quadratic mapping of another function + + for example, given a c2_function \a f + \code + c2_quadratic Q(1.2, 2.0, 3.0, 4.0); + c2_composed_function &F=Q(f); + \endcode + produces a new c2_function F=2.0 + 3.0*(f-1.2) + 4.0*(f-1.2)^2 + + note that the parameters are overdetermined, but allows the flexibility of two different representations + + */ +template class c2_quadratic : public c2_function { +public: + /// \brief Construct the operator + /// \param x0 the center around which the powers are computed + /// \param y0 the value of the function at \a x = \a x0 + /// \param xcoef the scale on the (\a x - \a x0) term + /// \param x2coef the scale on the (\a x - \a x0)^2 term + c2_quadratic(float_type x0, float_type y0, float_type xcoef, float_type x2coef) : intercept(y0), center(x0), a(x2coef), b(xcoef) {} + /// Modify the mapping after construction + /// \param x0 the new center around which the powers are computed + /// \param y0 the new value of the function at \a x = \a x0 + /// \param xcoef the new scale on the (\a x - \a x0) term + /// \param x2coef the new scale on the (\a x - \a x0)^2 term + void reset(float_type x0, float_type y0, float_type xcoef, float_type x2coef) { intercept=y0; center=x0; a=x2coef; b=xcoef; } + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { float_type dx=x-center; if(yprime) *yprime=2*a*dx+b; if(yprime2) *yprime2=2*a; return a*dx*dx+b*dx+intercept; } + +private: + float_type intercept, center, a, b; +protected: + c2_quadratic() {} // do not allow naked construction... it is usually an accident. +}; + +/** +\brief create a power law mapping of another function + + for example, given a c2_function \a f + \code + c2_power_law PLaw(1.2, 2.5); + c2_composed_function &F=PLaw(f); + \endcode + produces a new c2_function F=1.2 * f^2.5 + + */ +template class c2_power_law : public c2_function { +public: + /// \brief Construct the operator + /// \param scale the multipler + /// \param power the exponent + c2_power_law(float_type scale, float_type power) : a(scale), b(power) {} + /// \brief Modify the mapping after construction + /// \param scale the new multipler + /// \param power the new exponent + void reset(float_type scale, float_type power) { a=scale; b=power; } + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) + { float_type q=a*std::pow(x,b-2); if(yprime) *yprime=b*q*x; if(yprime2) *yprime2=b*(b-1)*q; return q*x*x; } + +private: + float_type a, b; +protected: + c2_power_law() {} // do not allow naked construction... it is usually an accident. +}; + +/** +\brief create the formal inverse function of another function + + for example, given a c2_function \a f + \code + c2_inverse_function inv(f); + a=f(x); + x1=inv(a); + \endcode + will return x1=x to machine precision. The important part of this + is that the resulting function is a first-class c2_function, so it knows its + derivatives, too, unlike the case of a simple root-finding inverse. This means + it can be integrated (for example) quite efficiently. + + Note that it is a subclass of c2_scaled_function only to manage ownership of another c2_function. + */ +template class c2_inverse_function : public c2_plugin_function { +public: + /// \brief Construct the operator + /// \param source the function to be inverted + c2_inverse_function(const c2_function &source); + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception); + + /// \brief give the function a hint as to where to look for its inverse + /// \param hint the likely value of the inverse, which defaults to whatever the evaluation returned. + void set_start_hint(float_type hint) const { start_hint=hint; } + + /// \brief get the starting hint. + /// + /// This is virtual so if there is a better way, this can be easily overridden. + /// It is used in value_with_derivatives() to guess where to start the root finder. + /// \param x the abscissa for which an estimate is needed + virtual float_type get_start_hint(float_type x) const { return start_hint; } + +protected: + c2_inverse_function() {} // do not allow naked construction... it is usually an accident. + mutable float_type start_hint; +}; + +/** + \brief + An interpolating_function which is the cumulative integral of a histogram. + + Note than binedges should be one element longer than binheights, since the lower & upper edges are specified. + Note that this is a malformed spline, since the second derivatives are all zero, so it has less continuity. + Also, note that the bin edges can be given in backwards order to generate the + reversed accumulation (starting at the high end) +*/ + +template class accumulated_histogram : public interpolating_function { +public: + /// \brief Construct the integrated histogram + /// \param binedges the edges of the bins in \a binheights. It should have one more element than \a binheights + /// \param binheights the number of counts in each bin. + /// \param normalize if true, normalize integral to 1 + /// \param inverse_function if true, drop zero channels, and return inverse function for random generation + /// \param drop_zeros eliminate null bins before integrating, so integral is strictly monotonic. + accumulated_histogram(const std::vectorbinedges, const std::vector binheights, + bool normalize=false, bool inverse_function=false, bool drop_zeros=true); + +}; + +/** + \brief Construct a function useful for generation of random numbers from the given distribution + + inverse_integrated_density() starts with a probability density c2_function, generates the integral, + and generates an interpolating_function which, when evaluated using a uniform random on [0,1] returns values + with a density distribution equal to the input distribution + If the data are passed in reverse order (large X first), the integral is carried out from the big end. + + \sa template Final inverse_integrated_density(const std::vector, c2_function &) + + \param bincenters points at which to sample the c2_function \a binheights + \param binheights a c2_function which describes the random number distribution to be produced. + \return an interpolating_function of the type requested in the template which, + if evaluated randomly with a uniform variate on [0,1) produces numbers + distributed according to \a binheights +*/ + +template + Final &inverse_integrated_density(const std::vector &bincenters, c2_function &binheights) +{ + std::vector integral; + + // integrate from first to last bin in original order, leaving results in integral + // ask for relative error of 1e-6 on each bin, with absolute error set to 0 (since we don't know the data scale). + float_type sum=binheights.partial_integrals(bincenters, &integral, 0.0, 1e-6); + // the integral vector now has partial integrals... it must be accumulated by summing + integral.insert(integral.begin(), 0.0); // integral from start to start is 0 + float_type scale=1.0/sum; + for(size_t i=1; i + Final & inverse_integrated_density(const std::vector &bincenters, const std::vector &binheights) + \endcode + is a variant of \code + template + Final & inverse_integrated_density(const std::vector &bincenters, c2_function &binheights) + \endcode + which takes two std::vectors and generates the intermediate interpolating_function required for + inverse_integrated_density(), and then calls it. + + \param bincenters points at which \a binheights are defined + \param binheights an std::vector which describes the random number distribution to be produced. + \return an interpolating_function of the type requested in the template which, + if evaluated randomly with a uniform variate on [0,1) produces numbers + distributed according to \a binheights +*/ + +template Final + &inverse_integrated_density(const std::vector &bincenters, const std::vector &binheights) +{ + std::vector be(bincenters), bh(binheights); + + if(be[1] < be[0]) { // reverse data for interpolator if x axis passed in backwards + std::reverse(be.begin(), be.end()); + std::reverse(bh.begin(), bh.end()); + } + + Intermediate temp(be, bh); // create a temporary interpolating_function to integrate + Final &result=inverse_integrated_density(bincenters, temp); + + return result; +} + +/// \brief create a c2_function which smoothly connects two other c2_functions. +/// +/// This takes two points and generates a polynomial which matches two c2_function arguments +/// at those two points, with two derivatives at each point, and an arbitrary value at the center of the +/// region. It is useful for splicing together functions over rough spots (0/0, for example). +/// +/// If \a auto_center is true, the value at the midpoint is computed so that the resulting polynomial is +/// of order 5. If \a auto_center is false, the value \a y1 is used at the midpoint, resulting in a +/// polynomial of order 6. +template class c2_connector_function : public c2_function { +public: + /// \brief construct the container + /// \param f1 the function on the left side to be connected + /// \param f2 the function on the right side to be connected + /// \param x0 the point at which to match \a f1 and its derivatives + /// \param x2 the point at which to match \a f2 and its derivatives + /// \param auto_center if true, no midpoint value is specified. If false, match the value \a y1 at the midpoint + /// \param y1 the value to match at the midpoint, if \a auto_center is false + /// \return a c2_function with domain (\a x0,\a x2) which smoothly connects \a f1 and \a f2 + c2_connector_function(const c2_function &f1, const c2_function &f2, float_type x0, float_type x2, + bool auto_center, float_type y1); + /// \brief destructor + virtual ~c2_connector_function(); + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw (c2_exception); +protected: + float_type fx1, fhinv, fdx, fy1, fa, fb, fc, fd, fe, ff; +}; + + + +/// \brief create a c2_function which is a piecewise assembly of other c2_functions. +/// +/// The functions must have increasing, non-overlapping domains. Any empty space +/// between functions will be filled with a linear interpolation. +/// \note The creation of the container results in the creation of an explicit sampling grid. +/// If this is used with functions with a large domain, or which generate very dense sampling grids, +/// it could eat a lot of memory. Do not abuse this by using functions which can generate gigantic grids. +/// +/// See c2_plugin_function for a discussion of how this might be used. +template class c2_piecewise_function : public c2_function { +public: + /// \brief construct the container + c2_piecewise_function(); + /// \brief destructor + virtual ~c2_piecewise_function(); + virtual float_type value_with_derivatives(float_type x, float_type *yprime, float_type *yprime2) const throw (c2_exception); + /// \brief append a new function to the sequence + /// + /// This takes a c2_function, and appends it onto the end of the piecewise collection. + /// The domain of the function (which MUST be set) specifies the place it will be used in + /// the final function. If the domain exactly abuts the domain of the previous function, it + /// will be directly attached. If there is a gap, the gap will be filled in by linear interpolation. + /// If the function being appended is to be deleted automatically when this container is deleted, set the pass_ownership flag. + /// \param func a c2_function with a defined domain to be appended to the collection + /// \param pass_ownership if set, \a func will be deleted when the container is destroyed + void append_function(c2_function &func, bool pass_ownership) throw (c2_exception); +protected: + std::vector *> functions; + std::vector owns; + mutable int lastKLow; +}; + +#include "c2_function.icc" + +#endif diff --git a/examples/extended/electromagnetic/TestEm7/include/c2_function.icc b/examples/extended/electromagnetic/TestEm7/include/c2_function.icc new file mode 100644 index 0000000000..f996b89b49 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm7/include/c2_function.icc @@ -0,0 +1,1062 @@ +/** + * \file + * \brief Provides code for the general c2_function algebra which supports + * fast, flexible operations on piecewise-twice-differentiable functions + * + * \author Created by R. A. Weller and Marcus H. Mendenhall on 7/9/05. + * \author Copyright 2005 __Vanderbilt University__. All rights reserved. + * + * \version c2_function.cc,v 1.43 2007/11/12 20:22:54 marcus Exp + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +template const std::string c2_function::cvs_file_vers() const +{ return "c2_function.cc,v 1.43 2007/11/12 20:22:54 marcus Exp"; } + +// find a pre-bracketed root of a c2_function, which is a MUCH easier job than general root finding +// since the derivatives are known exactly, and smoothness is guaranteed. +// this searches for f(x)=value, to make life a little easier than always searching for f(x)=0 +template float_type c2_function::find_root(float_type lower_bracket, float_type upper_bracket, + float_type start, float_type value, int *error, + float_type *final_yprime, float_type *final_yprime2) const throw(c2_exception) +{ + // find f(x)=value within the brackets, using the guarantees of smoothness associated with a c2_function + // can use local f(x)=a*x**2 + b*x + c and solve quadratic to find root, then iterate + reset_evaluations(); + + float_type yp, yp2; // we will make unused pointers point here, to save null checks later + if (!final_yprime) final_yprime=&yp; + if (!final_yprime2) final_yprime2=&yp2; + + float_type ftol=5*(std::numeric_limits::epsilon()*std::abs(value)+std::numeric_limits::min()); + float_type xtol=5*(std::numeric_limits::epsilon()*(std::abs(upper_bracket)+std::abs(lower_bracket))+std::numeric_limits::min()); + + float_type root=start; // start looking in the middle + if(error) *error=0; // start out with error flag set to OK, if it is expected + + float_type c, b; + + // this new logic is to keep track of where we were before, and lower the number of + // function evaluations if we are searching inside the same bracket as before. + // Since this root finder has, very often, the bracket of the entire domain of the function, + // this makes a big difference, especially to c2_inverse_function + if(!rootInitialized || upper_bracket != lastRootUpperX || lower_bracket != lastRootLowerX) { + lastRootUpperY=value_with_derivatives(upper_bracket, final_yprime, final_yprime2); + increment_evaluations(); + lastRootUpperX=upper_bracket; + + lastRootLowerY=value_with_derivatives(lower_bracket, final_yprime, final_yprime2); + increment_evaluations(); + lastRootLowerX=lower_bracket; + rootInitialized=true; + } + + float_type clower=lastRootLowerY-value; + float_type cupper=lastRootUpperY-value; + if(clower*cupper >0) { + // argh, no sign change in here! + if(error) { *error=1; return 0.0; } + else { + std::ostringstream outstr; + outstr << "unbracketed root in find_root at xlower= " << lower_bracket << ", xupper= " << upper_bracket; + outstr << ", value= " << value << ": bailing"; + throw c2_exception(outstr.str().c_str()); + } + } + + float_type delta=upper_bracket-lower_bracket; // first error step + c=value_with_derivatives(root, final_yprime, final_yprime2)-value; // compute initial values + b=*final_yprime; // make a local copy for readability + increment_evaluations(); + + while( + std::abs(delta) > xtol && // absolute x step check + std::abs(c) > ftol && // absolute y tolerance + std::abs(c) > xtol*std::abs(b) // comparison to smallest possible Y step from derivative + ) + { + float_type a=(*final_yprime2)/2; // second derivative is 2*a + float_type disc=b*b-4*a*c; + // std::cout << std::endl << "find_root_debug a,b,c,d " << a << " " << b << " " << c << " " << disc << std::endl; + + if(disc >= 0) { + float_type q=-0.5*((b>=0)?(b+std::sqrt(disc)):(b-std::sqrt(disc))); + if(q*q > std::abs(a*c)) delta=c/q; // since x1=q/a, x2=c/q, x1/x2=q^2/ac, this picks smaller step + else delta=q/a; + root+=delta; + } + + if(disc < 0 || rootupper_bracket || + std::abs(delta) >= 0.5*(upper_bracket-lower_bracket)) { + // if we jump out of the bracket, or aren't converging well, bisect + root=0.5*(lower_bracket+upper_bracket); + delta=upper_bracket-lower_bracket; + } + c=value_with_derivatives(root, final_yprime, final_yprime2)-value; // compute initial values + b=*final_yprime; // make a local copy for readability + increment_evaluations(); + + // now, close in bracket on whichever side this still brackets + if(c*clower < 0.0) { + cupper=c; + upper_bracket=root; + } else { + clower=c; + lower_bracket=root; + } + // std::cout << "find_root_debug x, y, dx " << root << " " << c << " " << delta << std::endl; + } + return root; +} + +/* def partial_integrals(self, xgrid): + Return the integrals of a function between the sampling points xgrid. The sum is the definite integral. + This method uses an exact integration of the polynomial which matches the values and derivatives at the + endpoints of a segment. Its error scales as h**6, if the input functions really are smooth. + This could very well be used as a stepper for adaptive Romberg integration. + For InterpolatingFunctions, it is likely that the Simpson's rule integrator is sufficient. + #the weights come from an exact mathematica solution to the 5th order polynomial with the given values & derivatives + #yint = (y0+y1)*dx/2 + dx^2*(yp0-yp1)/10 + dx^3 * (ypp0+ypp1)/120 ) +*/ + +// the recursive part of the integrator is agressively designed to minimize copying of data... lots of pointers +template float_type c2_function::integrate_step(c2_integrate_recur &rb) const +{ + struct c2_integrate_fblock *fbl[3]={rb.f0, rb.f1, rb.f2}; + struct c2_integrate_fblock f1; // will hold new middle values + float_type retvals[2]={0.0,0.0}; + float_type lr[2]; + + // std::cout << "entering with " << rb.f0->x << " " << rb.f1->x << " " << rb.f2->x << std::endl; + + int depth=rb.depth; // save this from the recursion block + float_type abs_tol=rb.abs_tol; // this is the value we will pass down + float_type *rblr=rb.lr; // save pointer to our parent's lr[2] array since it will get trampled in recursion + + if(!depth) { + switch(rb.derivs) { + case 0: + rb.eps_scale=0.1; rb.extrap_coef=16; break; + case 1: + rb.eps_scale=0.1; rb.extrap_coef=64; break; + case 2: + rb.eps_scale=0.02; rb.extrap_coef=1024; break; + default: + throw c2_exception("derivs must be 0, 1 or 2 in partial_integrals"); + } + + rb.extrap2=1.0/(rb.extrap_coef-1.0); + } + + for (int i=0; i<(depth==0?1:2); i++) { // handle left and right intervals, but only left one for depth=0 + struct c2_integrate_fblock *f0=fbl[i], *f2=fbl[i+1]; + f1.x=0.5*(f0->x + f2->x); // center of interval + float_type dx=f2->x - f0->x; + float_type dx2 = 0.5*dx; + float_type total; + + f1.y=value_with_derivatives(f1.x, &(f1.yp), &(f1.ypp)); + increment_evaluations(); + + // check for underflow on step size, which prevents us from achieving specified accuracy. + if(std::abs(dx) < std::abs(f1.x)*rb.rel_tol) { + std::ostringstream outstr; + outstr << "Step size underflow in adaptive_partial_integrals at depth=" << depth << ", x= " << f1.x; + throw c2_exception(outstr.str().c_str()); + } + + if(!depth) { // top level, total has not been initialized yet + switch(rb.derivs) { // create estimate of next lower order for first try + case 0: + total=0.5*(f0->y+f2->y)*dx; break; + case 1: + total=(f0->y+4.0*f1.y+f2->y)*dx/6.0; break; + case 2: + total=( (14*f0->y + 32*f1.y + 14*f2->y) + dx * (f0->yp - f2->yp) ) * dx /60.; break; + default: + total=0.0; // just to suppress missing default warnings + } + } else total=rblr[i]; // otherwise, get it from previous level + + float_type left, right; + + switch(rb.derivs) { + case 2: + // use ninth-order estimates for each side, from full set of all values (!) (Thanks, Mathematica!) + left= ( ( (169*f0->ypp + 1024*f1.ypp - 41*f2->ypp)*dx2 + + (2727*f0->yp - 5040*f1.yp + 423*f2->yp) )*dx2 + + (17007*f0->y + 24576*f1.y - 1263*f2->y) )* (dx2/40320.0); + right= ( ( (169*f2->ypp + 1024*f1.ypp - 41*f0->ypp)*dx2 - + (2727*f2->yp - 5040*f1.yp + 423*f0->yp) )*dx2 + + (17007*f2->y + 24576*f1.y - 1263*f0->y) )* (dx2/40320.0); + // std::cout << f0->x << " " << f1.x << " " << f2->x << std::endl ; + // std::cout << f0->y << " " << f1.y << " " << f2->y << " " << left << " " << right << " " << total << std::endl ; + break; + case 1: + left= ( (202*f0->y + 256*f1.y + 22*f2->y) + dx*(13*f0->yp - 40*f1.yp - 3*f2->yp) ) * dx /960.; + right= ( (202*f2->y + 256*f1.y + 22*f0->y) - dx*(13*f2->yp - 40*f1.yp - 3*f0->yp) ) * dx /960.; + break; + case 0: + left= (5*f0->y + 8*f1.y - f2->y)*dx/24.; + right= (5*f2->y + 8*f1.y - f0->y)*dx/24.; + break; + default: + left=right=0.0; // suppress warnings about missing default + break; + } + + lr[0]= left; // left interval + lr[1]= right; // right interval + float_type lrsum=left+right; + + float_type eps=std::abs(total-lrsum)*rb.eps_scale; + if(rb.extrapolate) eps*=rb.eps_scale; + + if(!rb.adapt || eps < abs_tol || eps < std::abs(total)*rb.rel_tol) { + if(depth==0 || !rb.extrapolate) retvals[i]=lrsum; + else { + retvals[i]=(rb.extrap_coef*lrsum - total)*rb.extrap2; + // std::cout << "extrapolating " << lrsum << " " << total << " " << retvals[i] << std::endl; + + } + } else { + rb.depth=depth+1; // increment depth counter + rb.lr=lr; // point to our left-right values array for recursion + rb.abs_tol=abs_tol*0.5; // each half has half the error budget + rb.f0=f0; rb.f1=&f1; rb.f2=f2; // insert pointers to data into our recursion block + // std::cout << "recurring with " << f0->x << " " << f1.x << " " << f2->x << std::endl ; + retvals[i]=integrate_step(rb); // and recur + } + } + return retvals[0]+retvals[1]; +} + +template bool c2_function::check_monotonicity( + const std::vector &data, const char message[]) throw(c2_exception) +{ + size_t np=data.size(); + if(np < 2) return false; // one point has no direction! + + bool rev=(data[1] < data[0]); // which way do data point? + size_t i; + + if(!rev) for(i = 2; i < np && (data[i-1] < data[i]) ; i++); + else for(i = 2; i < np &&(data[i-1] > data[i]) ; i++); + + if(i != np) throw c2_exception(message); + + return rev; +} + +template void c2_function::set_sampling_grid(const std::vector &grid) throw(c2_exception) +{ + bool rev=check_monotonicity(grid, "set_sampling_grid: sampling grid not monotonic"); + + if(!sampling_grid || no_overwrite_grid) sampling_grid=new std::vector; + (*sampling_grid)=grid; no_overwrite_grid=0; + + if(rev) std::reverse(sampling_grid->begin(), sampling_grid->end()); // make it increasing +} + +template std::vector &c2_function::get_sampling_grid(float_type xmin, float_type xmax) const +{ + std::vector *result=new std::vector; + + if( !(sampling_grid) || !(sampling_grid->size()) || (xmax <= sampling_grid->front()) || (xmin >= sampling_grid->back()) ) { + // nothing is known about the function in this region, return xmin and xmax + result->push_back(xmin); + result->push_back(xmax); + } else { + std::vector &sg=*sampling_grid; // just a shortcut + int np=sg.size(); + int klo=0, khi=np-1, firstindex=0, lastindex=np-1; + + result->push_back(xmin); + + if(xmin > sg.front() ) { + // hunt through table for position bracketing starting point + while(khi-klo > 1) { + int km=(khi+klo)/2; + if(sg[km] > xmin) khi=km; + else klo=km; + } + khi=klo+1; + // khi now points to first point definitively beyond our first point, or last point of array + firstindex=khi; + khi=np-1; // restart upper end of search + } + + if(xmax < sg.back()) { + // hunt through table for position bracketing starting point + while(khi-klo > 1) { + int km=(khi+klo)/2; + if(sg[km] > xmax) khi=km; + else klo=km; + } + khi=klo+1; + // khi now points to first point definitively beyond our last point, or last point of array + lastindex=klo; + } + + int initsize=result->size(); + result->resize(initsize+(lastindex-firstindex+2)); + std::copy(sg.begin()+firstindex, sg.begin()+lastindex+1, result->begin()+initsize); + result->back()=xmax; + + // this is the unrefined sampling grid... now check for very close points on front & back and fix if needed. + preen_sampling_grid(result); + } + return *result; +} + +template void c2_function::preen_sampling_grid(std::vector *result) const +{ + // this is the unrefined sampling grid... now check for very close points on front & back and fix if needed. + if(result->size() > 2) { // may be able to prune dangerously close points near the ends if there are at least 3 points + bool deleteit=false; + float_type x0=(*result)[0], x1=(*result)[1]; + float_type dx1=x1-x0; + + float_type ftol=10.0*(std::numeric_limits::epsilon()*(std::abs(x0)+std::abs(x1))+std::numeric_limits::min()); + if(dx1 < ftol) deleteit=true; + float_type dx2=(*result)[2]-x0; + if(dx1/dx2 < 0.1) deleteit=true; // endpoint is very close to internal interesting point + + if(deleteit) result->erase(result->begin()+1); // delete redundant interesting point + } + + if(result->size() > 2) { // may be able to prune dangerously close points near the ends if there are at least 3 points + bool deleteit=false; + int pos=result->size()-3; + float_type x0=(*result)[pos+1], x1=(*result)[pos+2]; + float_type dx1=x1-x0; + + float_type ftol=10.0*(std::numeric_limits::epsilon()*(std::abs(x0)+std::abs(x1))+std::numeric_limits::min()); + if(dx1 < ftol) deleteit=true; + float_type dx2=x1-(*result)[pos]; + if(dx1/dx2 < 0.1) deleteit=true; // endpoint is very close to internal interesting point + + if(deleteit) result->erase(result->end()-2); // delete redundant interesting point + } +} + +template std::vector &c2_function:: + refine_sampling_grid(const std::vector &grid, size_t refinement) const +{ + size_t np=grid.size(); + size_t count=(np-1)*refinement + 1; + float_type dxscale=1.0/refinement; + + std::vector *result=new std::vector(count); + + for(size_t i=0; i<(np-1); i++) { + float_type x=grid[i]; + float_type dx=(grid[i+1]-x)*dxscale; + for(size_t j=0; j float_type c2_function::integral(float_type xmin, float_type xmax, std::vector *partials, + float_type abs_tol, float_type rel_tol, int derivs, bool adapt, bool extrapolate) const +{ + std::vector &grid=get_sampling_grid(xmin, xmax); + float_type intg=partial_integrals(grid, partials, abs_tol, rel_tol, adapt, extrapolate); + delete &grid; + return intg; +} + +template c2_function &c2_function::normalized_function(float_type xmin, float_type xmax, float_type norm) +{ + float_type intg=integral(xmin, xmax); + return *new c2_scaled_function(*this, norm/intg); +} + +template c2_function &c2_function::square_normalized_function(float_type xmin, float_type xmax, float_type norm) +{ + c2_quadratic q(0., 0., 0., 1.); + c2_composed_function mesquared(q,*this); + + std::vector grid(get_sampling_grid(xmin, xmax)); + float_type intg=mesquared.partial_integrals(grid); + + return *new c2_scaled_function(*this, std::sqrt(norm/intg)); +} + +template c2_function &c2_function::square_normalized_function( + float_type xmin, float_type xmax, const c2_function &weight, float_type norm) +{ + c2_quadratic q(0., 0., 0., 1.); + c2_composed_function mesquared(q,*this); + c2_product weighted(mesquared, weight); + + std::vector grid(get_sampling_grid(xmin, xmax)); + float_type intg=weighted.partial_integrals(grid); + + return *new c2_scaled_function(*this, std::sqrt(norm/intg)); +} + +template float_type c2_function::partial_integrals( + std::vector xgrid, std::vector *partials, + float_type abs_tol, float_type rel_tol, int derivs, bool adapt, bool extrapolate) const +{ + int np=xgrid.size(); + + struct c2_integrate_fblock f0, f2; + struct c2_integrate_recur rb; + rb.rel_tol=rel_tol; + rb.extrapolate=extrapolate; + rb.adapt=adapt; + rb.derivs=derivs; + + reset_evaluations(); // counter returns with total evaluations needed for this integral + + if(partials) partials->resize(np-1); + + float_type sum=0.0; + + f2.x=xgrid[0]; + f2.y=value_with_derivatives(f2.x, &f2.yp, &f2.ypp); + increment_evaluations(); + + for(int i=0; i const c2_##X c2_##X::X=c2_##X(); +c2_singleton(sin) +c2_singleton(cos) +c2_singleton(tan) +c2_singleton(log) +c2_singleton(exp) +c2_singleton(sqrt) +c2_singleton(identity) + +// reciprocal is actually parametric (a/x), but make singleton 1/x +template const c2_recip c2_recip::recip=c2_recip(1.0); + +#undef c2_singleton + +// generate a sampling grid at points separated by dx=5, which is intentionally +// incommensurate with pi and 2*pi so grid errors are somewhat randomized +template std::vector &c2_sin::get_sampling_grid(float_type xmin, float_type xmax) +{ + std::vector *result=new std::vector; + + for(; xmin < xmax; xmin+=5.0) result->push_back(xmin); + result->push_back(xmax); + this->preen_sampling_grid(result); + return *result; +} + +template float_type Identity(float_type x) { return x; } // a useful function +template float_type f_one(float_type) { return 1.0; } // the first derivative of identity +template float_type f_zero(float_type) { return 0.0; } // the second derivative of identity + +// The constructor +template void interpolating_function::init( + const std::vector &x, const std::vector &f, + bool lowerSlopeNatural, float_type lowerSlope, + bool upperSlopeNatural, float_type upperSlope, + float_type (*inputXConversion)(float_type), + float_type (*inputXConversionPrime)(float_type), + float_type (*inputXConversionDPrime)(float_type), + float_type (*inputYConversion)(float_type), + float_type (*inputYConversionPrime)(float_type), + float_type (*inputYConversionDPrime)(float_type), + float_type (*outputYConversion)(float_type) + ) throw(c2_exception) +{ + X= x; + F= f; + + // Xraw is useful in some of the arithmetic operations between interpolating functions + Xraw=x; + + set_domain(std::min(Xraw.front(), Xraw.back()),std::max(Xraw.front(), Xraw.back())); + + fXin=inputXConversion; + fXinPrime=inputXConversionPrime; + fXinDPrime=inputXConversionDPrime; + fYin=inputYConversion; + fYinPrime=inputYConversionPrime; + fYinDPrime=inputYConversionDPrime; + fYout=outputYConversion; + + if(x.size() != f.size()) { + throw c2_exception("interpolating_function::init() -- x & y inputs are of different size"); + } + + size_t np=X.size(); // they are the same now, so lets take a short cut + + if(np < 2) { + throw c2_exception("interpolating_function::init() -- input < 2 elements "); + } + + bool xraw_rev=check_monotonicity(Xraw, + "interpolating_function::init() non-monotonic raw x input"); // which way does raw X point? sampling grid MUST be increasing + + if(!xraw_rev) { // we can use pointer to raw X values if they are in the right order + set_sampling_grid_pointer(Xraw); // our intial grid of x values is certainly a good guess for 'interesting' points + } else { + set_sampling_grid(Xraw); // make a copy of it, and assure it is in right order + } + + if(fXin) { // check if X scale is nonlinear, and if so, do transform + if(!lowerSlopeNatural) lowerSlope /= fXinPrime(X[0]); + if(!upperSlopeNatural) upperSlope /= fXinPrime(X[np-1]); + for(size_t i=0; i; + fXinPrime=f_one; + fXinDPrime=f_zero; + } + + if(inputYConversion) { // check if Y scale is nonlinear, and if so, do transform + if(!lowerSlopeNatural) lowerSlope *= fYinPrime(F[0]); + if(!upperSlopeNatural) upperSlope *= fYinPrime(F[np-1]); + for(size_t i=0; i; + fYinPrime=f_one; + fYinDPrime=f_zero; + fYout=Identity; + } + + xInverted=check_monotonicity(X, + "interpolating_function::init() non-monotonic transformed x input"); + + // construct spline tables here. + // this code is a re-translation of the pythonlabtools spline algorithm from pythonlabtools.sourceforge.net + + std::vector u(np), dy(np-1), dx(np-1), dxi(np-1), dx2i(np-2), siga(np-2), dydx(np-1); + + std::transform(X.begin()+1, X.end(), X.begin(), dx.begin(), std::minus() ); // dx=X[1:] - X [:-1] + for(size_t i=0; i() ); // dy = F[i+1]-F[i] + std::transform(dx2i.begin(), dx2i.end(), dx.begin(), siga.begin(), std::multiplies()); // siga = dx[:-1]*dx2i + std::transform(dxi.begin(), dxi.end(), dy.begin(), dydx.begin(), std::multiplies()); // dydx=dy/dx + + // u[i]=(y[i+1]-y[i])/float(x[i+1]-x[i]) - (y[i]-y[i-1])/float(x[i]-x[i-1]) + std::transform(dydx.begin()+1, dydx.end(), dydx.begin(), u.begin()+1, std::minus() ); // incomplete rendering of u = dydx[1:]-dydx[:-1] + + y2.resize(np,0.0); + + if(lowerSlopeNatural) { + y2[0]=u[0]=0.0; + } else { + y2[0]= -0.5; + u[0]=(3.0*dxi[0])*(dy[0]*dxi[0] -lowerSlope); + } + + for(size_t i=1; i < np -1; i++) { // the inner loop + float_type sig=siga[i-1]; + float_type p=sig*y2[i-1]+2.0; + y2[i]=(sig-1.0)/p; + u[i]=(6.0*u[i]*dx2i[i-1] - sig*u[i-1])/p; + } + + float_type qn, un; + + if(upperSlopeNatural) { + qn=un=0.0; + } else { + qn= 0.5; + un=(3.0*dxi[dxi.size()-1])*(upperSlope- dy[dy.size()-1]*dxi[dxi.size()-1] ); + } + + y2[np-1]=(un-qn*u[np-2])/(qn*y2[np-2]+1.0); + for (size_t k=np-1; k != 0; k--) y2[k-1]=y2[k-1]*y2[k]+u[k-1]; + + lastKLow=-1; // flag new X search required for next evaluation +} + +// This function is the reason for this class to exist +// it computes the interpolated function, and (if requested) its proper first and second derivatives including all coordinate transforms +template float_type interpolating_function::value_with_derivatives( + float_type x, float_type *yprime, float_type *yprime2) const throw(c2_exception) +{ + if(x < this->xmin() || x > this->xmax()) { + std::ostringstream outstr; + outstr << "Interpolating function argument " << x << " out of range " << this->xmin() << " -- " << this ->xmax() << ": bailing"; + throw c2_exception(outstr.str().c_str()); + } + + float_type xraw=x; + + // template here is impossible! if(fXin && fXin != (Identity) ) + x=fXin(x); // save time by explicitly testing for identity function here + + int klo=0, khi=X.size()-1; + + if(!xInverted) { // select search depending on whether transformed X is increasing or decreasing + if(lastKLow >=0 && (X[lastKLow] <= x) && (X[lastKLow+1] >= x) ) { // already bracketed + klo=lastKLow; + } else if(lastKLow >=0 && (X[lastKLow+1] <= x) && (X[lastKLow+2] > x)) { // in next bracket to the right + klo=lastKLow+1; + } else if(lastKLow > 0 && (X[lastKLow-1] <= x) && (X[lastKLow] > x)) { // in next bracket to the left + klo=lastKLow-1; + } else { // not bracketed, not close, start over + // search for new KLow + while(khi-klo > 1) { + int km=(khi+klo)/2; + if(X[km] > x) khi=km; + else klo=km; + } + } + } else { + if(lastKLow >=0 && (X[lastKLow] >= x) && (X[lastKLow+1] <= x) ) { // already bracketed + klo=lastKLow; + } else if(lastKLow >=0 && (X[lastKLow+1] >= x) && (X[lastKLow+2] < x)) { // in next bracket to the right + klo=lastKLow+1; + } else if(lastKLow > 0 && (X[lastKLow-1] >= x) && (X[lastKLow] < x)) { // in next bracket to the left + klo=lastKLow-1; + } else { // not bracketed, not close, start over + // search for new KLow + while(khi-klo > 1) { + int km=(khi+klo)/2; + if(X[km] < x) khi=km; + else klo=km; + } + } + } + + khi=klo+1; + lastKLow=klo; + + float_type h=X[khi]-X[klo]; + + float_type a=(X[khi]-x)/h; + float_type b=1.0-a; + float_type ylo=F[klo], yhi=F[khi], y2lo=y2[klo], y2hi=y2[khi]; + float_type y=a*ylo+b*yhi+((a*a*a-a)*y2lo+(b*b*b-b)*y2hi)*(h*h)/6.0; + + // template here is impossible! if(fYin && fYin != Identity) + y=fYout(y); // save time by explicitly testing for identity function here + + if(yprime || yprime2) { + float_type fpi=1.0/fYinPrime(y); + float_type gp=fXinPrime(xraw); + float_type yp0=(yhi-ylo)/h+((3*b*b-1)*y2hi-(3*a*a-1)*y2lo)*h/6.0; // the derivative in interpolating table coordinates + + // from Mathematica Dt[InverseFunction[f][y[g[x]]], x] + if(yprime) *yprime=gp*yp0*fpi; // the real derivative of the inverse transformed output + if(yprime2) { + float_type ypp0=b*y2hi+a*y2lo; + float_type fpp=fYinDPrime(y); + float_type gpp=fXinDPrime(xraw); + // also from Mathematica Dt[InverseFunction[f][y[g[x]]], {x,2}] + if(yprime2) *yprime2=(gp*gp*ypp0 + yp0*gpp - gp*gp*yp0*yp0*fpp*fpi*fpi)*fpi; + } + } + + return y; +} + +template void interpolating_function::set_lower_extrapolation(float_type bound) +{ + int kl = 0 ; + int kh=kl+1; + float_type xx=fXin(bound); + float_type h0=X[kh]-X[kl]; + float_type h1=xx-X[kl]; + float_type yextrap=F[kl]+((F[kh]-F[kl])/h0 - h0*(y2[kl]+2.0*y2[kh])/6.0)*h1+y2[kl]*h1*h1/2.0; + + X.insert(X.begin(), xx); + F.insert(F.begin(), yextrap); + y2.insert(y2.begin(), y2.front()); // duplicate first or last element + Xraw.insert(Xraw.begin(), bound); + if (bound < this->fXMin) this->fXMin=bound; // check for reversed data + else this->fXMax=bound; + + //printf("%10.4f %10.4f %10.4f %10.4f %10.4f\n", bound, xx, h0, h1, yextrap); + //for(int i=0; i void interpolating_function::set_upper_extrapolation(float_type bound) +{ + int kl = X.size()-2 ; + int kh=kl+1; + float_type xx=fXin(bound); + float_type h0=X[kh]-X[kl]; + float_type h1=xx-X[kl]; + float_type yextrap=F[kl]+((F[kh]-F[kl])/h0 - h0*(y2[kl]+2.0*y2[kh])/6.0)*h1+y2[kl]*h1*h1/2.0; + + X.insert(X.end(), xx); + F.insert(F.end(), yextrap); + y2.insert(y2.end(), y2.back()); // duplicate first or last element + Xraw.insert(Xraw.end(), bound); + if (bound < this->fXMin) this->fXMin=bound; // check for reversed data + else this->fXMax=bound; + //printf("%10.4f %10.4f %10.4f %10.4f %10.4f\n", bound, xx, h0, h1, yextrap); + //for(int i=0; i void interpolating_function::localize_derivatives( + float_type xraw, float_type y, float_type yp, float_type ypp, float_type *y0, float_type *yprime, float_type *yprime2) const +{ + float_type fp=fYinPrime(y); + float_type gp=fXinPrime(xraw); + float_type fpp=fYinDPrime(y); + float_type gpp=fXinDPrime(xraw); + + if(y0) *y0=fYin(y); + if(yprime) *yprime=yp*fp/gp; // Mathematica Dt[f[y[InverseFunction[g][x]]], x] + if(yprime2) *yprime2=( yp*yp*fpp - fp*yp*gpp/gp + fp*ypp )/(gp*gp) ; // Mathematica Dt[f[y[InverseFunction[g][x]]], {x,2}] +} + +// return a new interpolating_function which is the unary function of an existing interpolating_function +// can also be used to generate a resampling of another c2_function on a different grid +// by creating a=interpolating_function(x,x) +// and doing b=a.unary_operator(c) where c is a c2_function (probably another interpolating_function) + +template interpolating_function& + interpolating_function::unary_operator(const c2_function &source) const +{ + size_t np=X.size(); + std::vectoryv(np); + c2_composed_function comp(source, *this); + float_type yp0, yp1, ypp; + + for(size_t i=0; i void +interpolating_function::get_data(std::vector &xvals, std::vector &yvals) const throw() +{ + + xvals=Xraw; + yvals.resize(F.size()); + + for(size_t i=0; i interpolating_function & + interpolating_function::binary_operator(const c2_function &rhs, + c2_binary_function *combining_stub) const +{ + size_t np=X.size(); + std::vector yv(np); + c2_constant fval; + c2_constant yval; + float_type yp0, yp1, ypp; + + for(size_t i=0; i float_type c2_f_logprime(float_type x) { return 1.0/x; } // the derivative of log(x) +template float_type c2_f_logprime2(float_type x) { return -1.0/(x*x); } // the second derivative of log(x) + +template log_lin_interpolating_function::log_lin_interpolating_function( + const std::vector &x, const std::vector &f, + bool lowerSlopeNatural, float_type lowerSlope, + bool upperSlopeNatural, float_type upperSlope) + : interpolating_function() +{ + init(x, f, lowerSlopeNatural, lowerSlope, upperSlopeNatural, upperSlope, + (float_type (*)(float_type)) (std::log), c2_f_logprime, c2_f_logprime2, 0, 0, 0, 0); +} + +template lin_log_interpolating_function::lin_log_interpolating_function( + const std::vector &x, const std::vector &f, + bool lowerSlopeNatural, float_type lowerSlope, + bool upperSlopeNatural, float_type upperSlope) + : interpolating_function() +{ + init(x, f, lowerSlopeNatural, lowerSlope, upperSlopeNatural, upperSlope, + 0, 0, 0, + (float_type (*)(float_type)) (std::log), c2_f_logprime, c2_f_logprime2, + (float_type (*)(float_type)) (std::exp) ); +} + +template log_log_interpolating_function::log_log_interpolating_function( + const std::vector &x, const std::vector &f, + bool lowerSlopeNatural, float_type lowerSlope, + bool upperSlopeNatural, float_type upperSlope) + : interpolating_function() +{ + init(x, f, lowerSlopeNatural, lowerSlope, upperSlopeNatural, upperSlope, + (float_type (*)(float_type)) (std::log), c2_f_logprime, c2_f_logprime2, + (float_type (*)(float_type)) (std::log), c2_f_logprime, c2_f_logprime2, + (float_type (*)(float_type)) (std::exp) ); +} + +template float_type c2_f_recip(float_type x) { return 1.0/x; } +template float_type c2_f_recipprime(float_type x) { return -1.0/(x*x); } // the derivative of 1/x +template float_type c2_f_recipprime2(float_type x) { return 2.0/(x*x*x); } // the second derivative of 1/x + +template arrhenius_interpolating_function::arrhenius_interpolating_function( + const std::vector &x, const std::vector &f, + bool lowerSlopeNatural, float_type lowerSlope, + bool upperSlopeNatural, float_type upperSlope) + : interpolating_function() +{ + init(x, f, lowerSlopeNatural, lowerSlope, upperSlopeNatural, upperSlope, + c2_f_recip, c2_f_recipprime, c2_f_recipprime2, + (float_type (*)(float_type)) (std::log), c2_f_logprime, c2_f_logprime2, + (float_type (*)(float_type)) (std::exp) ); +} + +template c2_inverse_function::c2_inverse_function(const c2_function &source) + : c2_plugin_function(source) +{ + float_type l=source.xmin(); + float_type r=source.xmax(); + start_hint=(l+r)*0.5; // guess that we start in the middle + // compute our domain assuming the function is monotonic so its values on its domain boundaries are our domain + float_type ly=source(l); + float_type ry=source(r); + if (ly > ry) { + float_type t=ly; ly=ry; ry=t; + } + set_domain(ly, ry); +} + +template float_type c2_inverse_function::value_with_derivatives( + float_type x, float_type *yprime, float_type *yprime2 + ) const throw(c2_exception) +{ + float_type l=this->func->xmin(); + float_type r=this->func->xmax(); + float_type yp, ypp; + float_type y=this->func->find_root(l, r, get_start_hint(x), x, 0, &yp, &ypp); + start_hint=y; + if(yprime) *yprime=1.0/yp; + if(yprime2) *yprime2=-ypp/(yp*yp*yp); + return y; +} + +//accumulated_histogram starts with binned data, generates the integral, and generates a piecewise linear interpolating_function +//If drop_zeros is true, it merges empty bins together before integration +//Note that the resulting interpolating_function is guaranteed to be increasing (if drop_zeros is false) +// or stricly increasing (if drop_zeros is true) +//If inverse_function is true, it drop zeros, integrates, and returns the inverse function which is useful +// for random number generation based on the input distribution. +//If normalize is true, the big end of the integral is scaled to 1. +//If the data are passed in reverse order (large X first), the integral is carried out from the big end, +// and then the data are reversed to the result in in increasing X order. +template accumulated_histogram::accumulated_histogram( + const std::vectorbinedges, const std::vector binheights, + bool normalize, bool inverse_function, bool drop_zeros) +{ + + int np=binheights.size(); + + std::vector be, bh; + if(drop_zeros || inverse_function) { //inverse functions cannot have any zero bins or they have vertical sections + if(binheights[0] || !inverse_function) { // conserve lower x bound if not an inverse function + be.push_back(binedges[0]); + bh.push_back(binheights[0]); + } + for(int i=1; i cum(np+1, 0.0); + for(int i=1; i<=np; i++) cum[i]=bh[i]*(be[i]-be[i-1])+cum[i-1]; // accumulate bins, leaving bin 0 as 0 + if(be[1] < be[0]) { // if bins passed in backwards, reverse them + std::reverse(be.begin(), be.end()); + std::reverse(cum.begin(), cum.end()); + for(unsigned int i=0; i(cum, be); // use cum as x axis in inverse function + else interpolating_function(be, cum); // else use lower bin edge as x axis + std::fill(this->y2.begin(), this->y2.end(), 0.0); // clear second derivatives, to we are piecewise linear +} + +template c2_piecewise_function::c2_piecewise_function() +: c2_function(), lastKLow(-1) +{ + this->sampling_grid=new std::vector; // this always has a smapling grid +} + +template c2_piecewise_function::~c2_piecewise_function() +{ + size_t np=functions.size(); + for(size_t i=0; i float_type c2_piecewise_function::value_with_derivatives( + float_type x, float_type *yprime, float_type *yprime2 + ) const throw(c2_exception) +{ + + size_t np=functions.size(); + if(!np) throw c2_exception("attempting to evaluate an empty piecewise function"); + + if(x < this->xmin() || x > this->xmax()) { + std::ostringstream outstr; + outstr << "piecewise function argument " << x << " out of range " << this->xmin() << " -- " << this->xmax(); + throw c2_exception(outstr.str().c_str()); + } + + int klo=0; + + if(lastKLow >= 0 && functions[lastKLow]->xmin() <= x && functions[lastKLow]->xmax() > x) { + klo=lastKLow; + } else { + int khi=np; + while(khi-klo > 1) { + int km=(khi+klo)/2; + if(functions[km]->xmin() > x) khi=km; + else klo=km; + } + } + lastKLow=klo; + return functions[klo]->value_with_derivatives(x, yprime, yprime2); +} + +template void c2_piecewise_function::append_function( + c2_function &func, bool pass_ownership) throw(c2_exception) +{ + if(functions.size()) { // check whether there are any gaps to fill, etc. + c2_function &tail=*(functions.back()); + float_type x0=tail.xmax(); + float_type x1=func.xmin(); + if(x0 < x1) { + // must insert a connector if x0 < x1 + float_type y0=tail(x0); + float_type y1=func(x1); + c2_function *connector=new c2_linear(x0, y0, (y1-y0)/(x1-x0)); + connector->set_domain(x0,x1); + functions.push_back(connector); + owns.push_back(true); + this->sampling_grid->push_back(x1); + } else if(x0>x1) throw c2_exception("function domains not increasing in c2_piecewise_function"); + } + functions.push_back(&func); + owns.push_back(pass_ownership); + // extend our domain to include all known functions + this->set_domain(functions.front()->xmin(), functions.back()->xmax()); + // extend our sampling grid with the new function's grid, with the first point dropped to avoid duplicates + std::vector &newgrid=func.get_sampling_grid(func.xmin(), func.xmax()); + this->sampling_grid->insert(this->sampling_grid->end(), newgrid.begin()+1, newgrid.end()); + delete &newgrid; +} + +template c2_connector_function::c2_connector_function( + const c2_function &f1, const c2_function &f2, float_type x0, float_type x2, + bool auto_center, float_type y1) + +: c2_function() +{ + float_type y0, yp0, ypp0, y2, yp2, ypp2; + fdx=(x2-x0)/2.0; + fhinv=1.0/fdx; + fx1=(x0+x2)/2.0; + + y0=f1.value_with_derivatives(x0, &yp0, &ypp0); // get left wall values from conventional computation + y2=f2.value_with_derivatives(x2, &yp2, &ypp2); // get right wall values from conventional computation + + // scale derivs to put function on [-1,1] since mma solution is done this way + yp0*=fdx; + yp2*=fdx; + ypp0*=fdx*fdx; + ypp2*=fdx*fdx; + + float_type ff0=(8*(y0 + y2) + 5*(yp0 - yp2) + ypp0 + ypp2)/16.0; + if(auto_center) y1=ff0; // forces ff to be 0 if we are auto-centering + + // y[x_] = y1 + x (a + b x) + (x-1) x (x+1) (c + d x + e x^2 + f x^3) + fy1=y1; + fa=-(y0 - y2)/2.; + fb=(y0 - 2*y1 + y2)/2.; + fc=(7*(y0 - y2 + yp0 + yp2) + ypp0 - ypp2)/16.; + fd=(32*y1 - 16*(y2 + y0) + 9*(yp2 - yp0) - ypp0 - ypp2)/16.; + fe=(3*(y2 - y0 - yp0 - yp2) - ypp0 + ypp2)/16.; + ff=(ff0 - y1); + // y'[x] = a + 2 b x + (3x^2 - 1) (c + d x + e x^2 + f x^3) + (x-1) x (x+1) (d + 2 e x + 3 f x^2 ) + // y''[x] = 2b + (x-1) x (x+1) (2 e + 6 f x) + 2 (3 x^2 -1) (d + 2 e x + 3 f x^2 ) + 6 x (c + d x + e x^2 + f x^3) + this->set_domain(x0,x2); // this is where the function is valid +} + +template c2_connector_function::~c2_connector_function() +{ +} + +template float_type c2_connector_function::value_with_derivatives( + float_type x, float_type *yprime, float_type *yprime2 + ) const throw(c2_exception) +{ + + float_type dx=(x-fx1)*fhinv; + float_type q1=fc + dx*(fd + dx*(fe + dx*ff)); + float_type xp1=(dx-1)*(dx+1)*dx; + + float_type y= fy1 + dx*(fa+fb*dx) + xp1*q1; + if(yprime || yprime2) { + float_type q2 =fd + dx*(2*fe + dx*3*ff); + float_type q3=2*fe+6*ff*dx; + float_type xp2=(3*dx*dx-1); + if(yprime) *yprime=(fa + 2*fb*dx + xp2*q1 + xp1*q2)*fhinv; + if(yprime2) *yprime2=(2*fb+xp1*q3+2*xp2*q2+6*dx*q1)*fhinv*fhinv; + } + return y; +} diff --git a/examples/extended/electromagnetic/TestEm7/ionC12.mac b/examples/extended/electromagnetic/TestEm7/ionC12.mac index 917f3b5839..9401b101dd 100644 --- a/examples/extended/electromagnetic/TestEm7/ionC12.mac +++ b/examples/extended/electromagnetic/TestEm7/ionC12.mac @@ -1,4 +1,4 @@ -# $Id: ionC12.mac,v 1.16 2007/01/12 16:35:21 maire Exp $ +# $Id: ionC12.mac,v 1.19 2007/11/07 19:41:32 vnivanch Exp $ # # Macro file for "TestEm7.cc" # (can be run in batch, without graphic) @@ -6,6 +6,7 @@ # /control/verbose 2 /run/verbose 2 +/tracking/verbose 1 # /testem/det/setMat Water /testem/det/setSizeX 20 cm @@ -18,12 +19,15 @@ /testem/det/tallyPosition 0. 0. 0. cm /testem/det/tallyPosition 5. 0. 0. cm # -/testem/phys/addPhysics standard #em physics +/testem/phys/addPhysics standardNR +#/testem/phys/addPhysics emstandard +#/testem/phys/addPhysics standard_opt2 # /run/initialize # /gun/particle ion /gun/ion 6 12 6 +#/gun/ion 6 12 1 /gun/energy 3.5 GeV # # beam size @@ -34,4 +38,4 @@ # /testem/event/printModulo 1000 # -/run/beamOn 10000 +/run/beamOn 1000 diff --git a/examples/extended/electromagnetic/TestEm7/proton.mac b/examples/extended/electromagnetic/TestEm7/proton.mac index 21f4127c59..268d95a239 100644 --- a/examples/extended/electromagnetic/TestEm7/proton.mac +++ b/examples/extended/electromagnetic/TestEm7/proton.mac @@ -1,4 +1,4 @@ -# $Id: proton.mac,v 1.7 2007/06/22 12:44:42 maire Exp $ +# $Id: proton.mac,v 1.10 2007/07/28 16:39:31 vnivanch Exp $ # # Macro file for "TestEm7.cc" # (can be run in batch, without graphic) @@ -8,15 +8,15 @@ /run/verbose 2 # /testem/det/setMat Water -/testem/det/setSizeX 30 cm -/testem/det/setSizeYZ 30 cm +/testem/det/setSizeX 10 cm +/testem/det/setSizeYZ 10 cm # /testem/phys/addPhysics standard #em physics # /run/initialize # /gun/particle proton -/gun/energy 2000 MeV +/gun/energy 100 MeV # # step limit /testem/stepMax 0.5 mm diff --git a/examples/extended/electromagnetic/TestEm7/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm7/src/DetectorConstruction.cc index 28781c89b4..123c3fa747 100644 --- a/examples/extended/electromagnetic/TestEm7/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm7/src/DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.cc,v 1.8 2007/01/11 15:41:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm7/src/DetectorMessenger.cc index 6ebd410349..9c72a3030d 100644 --- a/examples/extended/electromagnetic/TestEm7/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm7/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.3 2006/06/29 16:58:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/EventAction.cc b/examples/extended/electromagnetic/TestEm7/src/EventAction.cc index a4a758fe50..a83ff42bf3 100644 --- a/examples/extended/electromagnetic/TestEm7/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm7/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.4 2006/06/29 16:58:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm7/src/EventActionMessenger.cc index 3c94b20983..91ae1f4ef4 100644 --- a/examples/extended/electromagnetic/TestEm7/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm7/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.4 2006/06/29 16:58:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/G4ScreenedNuclearRecoil.cc b/examples/extended/electromagnetic/TestEm7/src/G4ScreenedNuclearRecoil.cc new file mode 100644 index 0000000000..9c6b0c39b5 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm7/src/G4ScreenedNuclearRecoil.cc @@ -0,0 +1,909 @@ +// +// ******************************************************************** +// * 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: G4ScreenedNuclearRecoil.cc,v 1.4 2007/12/10 16:28:15 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// Class Description +// Process for screened electromagnetic nuclear elastic scattering; +// Physics comes from: +// Marcus H. Mendenhall and Robert A. Weller, +// "Algorithms for the rapid computation of classical cross +// sections for screened Coulomb collisions " +// Nuclear Instruments and Methods in Physics Research B58 (1991) 11-17 +// The only input required is a screening function phi(r/a) which is the ratio +// of the actual interatomic potential for two atoms with atomic numbers Z1 and Z2, +// to the unscreened potential Z1*Z2*e^2/r where e^2 is elm_coupling in Geant4 units +// +// First version, April 2004, Marcus H. Mendenhall, Vanderbilt University +// +// 5 May, 2004, Marcus Mendenhall +// Added an option for enhancing hard collisions statistically, to allow +// backscattering calculations to be carried out with much improved event rates, +// without distorting the multiple-scattering broadening too much. +// the method SetCrossSectionHardening(G4double fraction, G4double HardeningFactor) +// sets what fraction of the events will be randomly hardened, +// and the factor by which the impact area is reduced for such selected events. +// +// 21 November, 2004, Marcus Mendenhall +// added static_nucleus to IsApplicable +// +// 7 December, 2004, Marcus Mendenhall +// changed mean free path of stopping particle from 0.0 to 1.0*nanometer +// to avoid new verbose warning about 0 MFP in 4.6.2p02 +// +// 17 December, 2004, Marcus Mendenhall +// added code to permit screening out overly close collisions which are +// expected to be hadronic, not Coulombic +// +// 19 December, 2004, Marcus Mendenhall +// massive rewrite to add modular physics stages and plug-in cross section table +// computation. This allows one to select (e.g.) between the normal external python +// process and an embedded python interpreter (which is much faster) for generating +// the tables. +// It also allows one to switch between sub-sampled scattering (event biasing) and +// normal scattering, and between non-relativistic kinematics and relativistic +// kinematic approximations, without having a class for every combination. Further, one can +// add extra stages to the scattering, which can implement various book-keeping processes. +// +// January 2007, Marcus Mendenhall +// Reorganized heavily for inclusion in Geant4 Core. All modules merged into +// one source and header, all historic code removed. +// +// Class Description - End + + +#include + +#include "globals.hh" + +#include "G4ScreenedNuclearRecoil.hh" + +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" +#include "G4VParticleChange.hh" +#include "G4ParticleChange.hh" +#include "G4DataVector.hh" +#include "G4Track.hh" +#include "G4Step.hh" + +#include "G4Material.hh" +#include "G4Element.hh" +#include "G4Isotope.hh" +#include "G4MaterialCutsCouple.hh" +#include "G4ElementVector.hh" +#include "G4IsotopeVector.hh" + +#include "G4RangeTest.hh" +#include "G4ParticleDefinition.hh" +#include "G4DynamicParticle.hh" +#include "G4ProcessManager.hh" +#include "G4StableIsotopes.hh" + +#include "Randomize.hh" + +#include "CLHEP/Units/PhysicalConstants.h" + +#include +#include + +G4ScreenedCoulombCrossSection::~G4ScreenedCoulombCrossSection() +{ + ScreeningMap::iterator tables=screeningData.begin(); + for (;tables != screeningData.end(); tables++) { + delete (*tables).second.EMphiData; + } + screeningData.clear(); + + std::map *>::iterator mfpit=MFPTables.begin(); + for (;mfpit != MFPTables.end(); mfpit++) { + delete (*mfpit).second; + } + MFPTables.clear(); + +} + +const G4double G4ScreenedCoulombCrossSection::massmap[nMassMapElements+1]={ + 0, 1.007940, 4.002602, 6.941000, 9.012182, 10.811000, 12.010700, + 14.006700, 15.999400, 18.998403, 20.179700, 22.989770, 24.305000, 26.981538, 28.085500, + 30.973761, 32.065000, 35.453000, 39.948000, 39.098300, 40.078000, 44.955910, 47.867000, + 50.941500, 51.996100, 54.938049, 55.845000, 58.933200, 58.693400, 63.546000, 65.409000, + 69.723000, 72.640000, 74.921600, 78.960000, 79.904000, 83.798000, 85.467800, 87.620000, + 88.905850, 91.224000, 92.906380, 95.940000, 98.000000, 101.070000, 102.905500, 106.420000, + 107.868200, 112.411000, 114.818000, 118.710000, 121.760000, 127.600000, 126.904470, 131.293000, + 132.905450, 137.327000, 138.905500, 140.116000, 140.907650, 144.240000, 145.000000, 150.360000, + 151.964000, 157.250000, 158.925340, 162.500000, 164.930320, 167.259000, 168.934210, 173.040000, + 174.967000, 178.490000, 180.947900, 183.840000, 186.207000, 190.230000, 192.217000, 195.078000, + 196.966550, 200.590000, 204.383300, 207.200000, 208.980380, 209.000000, 210.000000, 222.000000, + 223.000000, 226.000000, 227.000000, 232.038100, 231.035880, 238.028910, 237.000000, 244.000000, + 243.000000, 247.000000, 247.000000, 251.000000, 252.000000, 257.000000, 258.000000, 259.000000, + 262.000000, 261.000000, 262.000000, 266.000000, 264.000000, 277.000000, 268.000000, 281.000000, + 272.000000, 285.000000, 282.500000, 289.000000, 287.500000, 292.000000}; + +G4ParticleDefinition* G4ScreenedCoulombCrossSection::SelectRandomUnweightedTarget(const G4MaterialCutsCouple* couple) +{ + // Select randomly an element within the material, according to number density only + const G4Material* material = couple->GetMaterial(); + G4int nMatElements = material->GetNumberOfElements(); + const G4ElementVector* elementVector = material->GetElementVector(); + const G4Element *element=0; + G4ParticleDefinition*target=0; + + // Special case: the material consists of one element + if (nMatElements == 1) + { + element= (*elementVector)[0]; + } + else + { + // Composite material + G4double random = G4UniformRand() * material->GetTotNbOfAtomsPerVolume(); + G4double nsum=0.0; + const G4double *atomDensities=material->GetVecNbOfAtomsPerVolume(); + + for (G4int k=0 ; k < nMatElements ; k++ ) + { + nsum+=atomDensities[k]; + element= (*elementVector)[k]; + if (nsum >= random) break; + } + } + + G4int N=0; + G4int Z=(G4int)std::floor(element->GetZ()+0.5); + + G4int nIsotopes=element->GetNumberOfIsotopes(); + if(!nIsotopes) { + if(Z<=92) { + // we have no detailed material isotopic info available, + // so use G4StableIsotopes table up to Z=92 + static G4StableIsotopes theIso; // get a stable isotope table for default results + nIsotopes=theIso.GetNumberOfIsotopes(Z); + G4double random = 100.0*G4UniformRand(); // values are expressed as percent, sum is 100 + G4int tablestart=theIso.GetFirstIsotope(Z); + G4double asum=0.0; + for(G4int i=0; i= random) break; + } + } else { + // too heavy for stable isotope table, just use mean mass + N=(G4int)std::floor(element->GetN()+0.5); + } + } else { + G4int i; + const G4IsotopeVector *isoV=element->GetIsotopeVector(); + G4double random = G4UniformRand(); + G4double *abundance=element->GetRelativeAbundanceVector(); + G4double asum=0.0; + for(i=0; iGetN(); + if(asum >= random) break; + } + } + + // get the official definition of this nucleus, to get the correct value of A + // note that GetIon is very slow, so we will cache ones we have already found ourselves. + ParticleCache::iterator p=targetMap.find(Z*1000+N); + if (p != targetMap.end()) { + target=(*p).second; + } else{ + target=G4ParticleTable::GetParticleTable()->GetIon(Z, N, 0.0); + targetMap[Z*1000+N]=target; + } + return target; +} + +void G4ScreenedCoulombCrossSection::BuildMFPTables() +{ + const G4int nmfpvals=200; + + std::vector evals(nmfpvals), mfpvals(nmfpvals); + + // sum up inverse MFPs per element for each material + const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); + if (materialTable == 0) + G4Exception("G4ScreenedCoulombCrossSection::BuildMFPTables - no MaterialTable found)"); + + G4int nMaterials = G4Material::GetNumberOfMaterials(); + + for (G4int matidx=0; matidx < nMaterials; matidx++) { + + const G4Material* material= (*materialTable)[matidx]; + const G4ElementVector &elementVector = *(material->GetElementVector()); + const G4int nMatElements = material->GetNumberOfElements(); + + const G4Element *element=0; + const G4double *atomDensities=material->GetVecNbOfAtomsPerVolume(); + + G4double emin=0, emax=0; // find innermost range of cross section functions + for (G4int kel=0 ; kel < nMatElements ; kel++ ) + { + element=elementVector[kel]; + G4int Z=(G4int)std::floor(element->GetZ()+0.5); + c2_function &ifunc=*sigmaMap[Z]; + if(!kel || ifunc.xmin() > emin) emin=ifunc.xmin(); + if(!kel || ifunc.xmax() < emax) emax=ifunc.xmax(); + } + + G4double logint=std::log(emax/emin) / (nmfpvals-1) ; // logarithmic increment for tables + + // compute energy scale for interpolator. Force exact values at both ends to avoid range errors + for (G4int i=1; iGetZ()+0.5); + c2_function &sigma=*sigmaMap[Z]; + G4double ndens = atomDensities[kel]; // compute atom fraction for this element in this material + + for (G4int eidx=0; eidx < nmfpvals; eidx++) { + mfpvals[eidx] += ndens*sigma(evals[eidx]); + } + } + + // convert inverse mfp to regular mfp + for (G4int eidx=0; eidx < nmfpvals; eidx++) { + mfpvals[eidx] = 1.0/mfpvals[eidx]; + } + // and make a new interpolating function out of the sum + MFPTables[matidx] = static_cast *>(new log_log_interpolating_function( + evals, mfpvals)); + } + +#ifdef DEBUG + for (G4int matidx=0; matidx < nMaterials; matidx++) { + const G4Material* material= (*materialTable)[matidx]; + G4cout << "***** MFP (1MeV) ***** " << material->GetName() << " " << (*MFPTables[matidx])(1.0) << G4endl; + } +#endif + +} + +G4ScreenedNuclearRecoil:: +G4ScreenedNuclearRecoil(const G4String& processName, + const G4String &ScreeningKey, + G4bool GenerateRecoils, + G4double RecoilCutoff, G4double PhysicsCutoff) : + G4VDiscreteProcess(processName), + screeningKey(ScreeningKey), + generateRecoils(GenerateRecoils), avoidReactions(1), + recoilCutoff(RecoilCutoff), physicsCutoff(PhysicsCutoff), + hardeningFraction(0.0), hardeningFactor(1.0), + externalCrossSectionConstructor(0) +{ + highEnergyLimit=100.0*MeV; + lowEnergyLimit=physicsCutoff; + registerDepositedEnergy=1; // by default, don't hide NIEL + MFPScale=1.0; + // SetVerboseLevel(2); + AddStage(new G4ScreenedCoulombClassicalKinematics); + AddStage(new G4SingleScatter); +} + +void G4ScreenedNuclearRecoil::ResetTables() +{ + std::map*>::iterator xh=meanFreePathTables.begin(); + for(;xh != meanFreePathTables.end(); xh++) { + delete (*xh).second; + } + meanFreePathTables.clear(); + + std::map::iterator xt=crossSectionHandlers.begin(); + for(;xt != crossSectionHandlers.end(); xt++) { + delete (*xt).second; + } + crossSectionHandlers.clear(); +} + +void G4ScreenedNuclearRecoil::ClearStages() +{ + // I don't think I like deleting the processes here... they are better abandoned + // if the creator doesn't get rid of them + // std::vector::iterator stage=collisionStages.begin(); + //for(; stage != collisionStages.end(); stage++) delete (*stage); + + collisionStages.clear(); +} + +G4ScreenedNuclearRecoil::~G4ScreenedNuclearRecoil() +{ + ResetTables(); +} + +// returns true if it appears the nuclei collided, and we are interested in checking +G4bool G4ScreenedNuclearRecoil::CheckNuclearCollision( + G4double A, G4double a1, G4double apsis) { + return avoidReactions && (apsis < (1.1*(std::pow(A,1.0/3.0)+std::pow(a1,1.0/3.0)) + 1.4)*fermi); + // nuclei are within 1.4 fm (reduced pion Compton wavelength) of each other at apsis, + // this is hadronic, skip it +} + +G4ScreenedCoulombCrossSection *G4ScreenedNuclearRecoil::GetNewCrossSectionHandler(void) { + G4ScreenedCoulombCrossSection *xc; + if(!externalCrossSectionConstructor) xc=new G4NativeScreenedCoulombCrossSection; + else xc=externalCrossSectionConstructor->create(); + xc->SetVerbosity(verboseLevel); + return xc; +} + +G4double G4ScreenedNuclearRecoil::GetMeanFreePath(const G4Track& track, + G4double, + G4ForceCondition*) +{ + const G4DynamicParticle* incoming = track.GetDynamicParticle(); + G4double energy = incoming->GetKineticEnergy(); + G4double a1=incoming->GetDefinition()->GetPDGMass()/amu_c2; + + G4double meanFreePath; + + if (energy < lowEnergyLimit || energy < recoilCutoff) return 1.0*nanometer; /* stop slow particles! */ + else if (energy > highEnergyLimit*a1) energy=highEnergyLimit*a1; /* constant MFP at high energy */ + + G4double fz1=incoming->GetDefinition()->GetPDGCharge(); + G4int z1=(G4int)(fz1/eplus + 0.5); + + std::map::iterator xh= + crossSectionHandlers.find(z1); + G4ScreenedCoulombCrossSection *xs; + + if (xh==crossSectionHandlers.end()) { + xs =crossSectionHandlers[z1]=GetNewCrossSectionHandler(); + xs->LoadData(screeningKey, z1, a1, physicsCutoff); + xs->BuildMFPTables(); + } else xs=(*xh).second; + + const G4MaterialCutsCouple* materialCouple = track.GetMaterialCutsCouple(); + size_t materialIndex = materialCouple->GetMaterial()->GetIndex(); + + c2_function &mfp=*(*xs)[materialIndex]; + + // make absolutely certain we don't get an out-of-range energy + meanFreePath = mfp(std::min(std::max(energy, mfp.xmin()), mfp.xmax())); + + // G4cout << "MFP: " << meanFreePath << " index " << materialIndex << " energy " << energy << " MFPScale " << MFPScale << G4endl; + + return meanFreePath*MFPScale; +} + +G4VParticleChange* G4ScreenedNuclearRecoil::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) +{ + validCollision=1; + aParticleChange.Initialize(aTrack); + NIEL=0.0; // default is no NIEL deposited + + // do universal setup + + const G4DynamicParticle* incidentParticle = aTrack.GetDynamicParticle(); + G4ParticleDefinition *baseParticle=aTrack.GetDefinition(); + + G4double fz1=baseParticle->GetPDGCharge()/eplus; + G4int z1=(G4int)(fz1+0.5); + G4double incidentEnergy = incidentParticle->GetKineticEnergy(); + + // Select randomly one element and (possibly) isotope in the current material. + const G4MaterialCutsCouple* couple = aTrack.GetMaterialCutsCouple(); + + if(incidentEnergy < GetRecoilCutoff()) { // check energy sanity on entry + if(!baseParticle->GetProcessManager()-> + GetAtRestProcessVector()->size()) + aParticleChange.ProposeTrackStatus(fStopAndKill); + else + aParticleChange.ProposeTrackStatus(fStopButAlive); + + AddToNIEL(incidentEnergy); + aParticleChange.ProposeEnergy(0.0); + // stop the particle and bail out + validCollision=0; + } + + const G4Material* mat = couple->GetMaterial(); + G4double numberDensity=mat->GetTotNbOfAtomsPerVolume(); + G4double lattice=0.5/std::pow(numberDensity,1.0/3.0); // typical lattice half-spacing + G4double length=GetCurrentInteractionLength(); + G4double sigopi=1.0/(CLHEP::pi*numberDensity*length); // this is sigma0/pi + + // compute the impact parameter very early, so if is rejected as too far away, little effort is wasted + // this is the TRIM method for determining an impact parameter based on the flight path + // this gives a cumulative distribution of N(P)= 1-exp(-pi P^2 n l) + // which says the probability of NOT hitting a disk of area sigma= pi P^2 =exp(-sigma N l) + // which may be reasonable + G4double P; + if(sigopi < lattice*lattice) { + // normal long-flight approximation + P = std::sqrt(-std::log(G4UniformRand()) *sigopi); + } else { + // short-flight limit + P = std::sqrt(G4UniformRand())*lattice; + } + + G4double fraction=GetHardeningFraction(); + if(fraction && G4UniformRand() < fraction) { + // pick out some events, and increase the central cross section + // by reducing the impact parameter + P /= std::sqrt(GetHardeningFactor()); + } + + + // check if we are far enough away that the energy transfer must be below cutoff, + // and leave everything alone if so, saving a lot of time. + if(P*P > sigopi) { + if(GetVerboseLevel() > 1) + printf("ScreenedNuclear impact reject: length=%.3f P=%.4f limit=%.4f\n", + length/angstrom, P/angstrom,std::sqrt(sigopi)/angstrom); + // no collision, don't follow up with anything + validCollision=0; + } + + // find out what we hit, and record it in our kinematics block. + if(validCollision) { + G4ScreenedCoulombCrossSection *xsect=GetCrossSectionHandlers()[z1]; + G4ParticleDefinition *recoilIon= + xsect->SelectRandomUnweightedTarget(couple); + kinematics.crossSection=xsect; + kinematics.recoilIon=recoilIon; + kinematics.impactParameter=P; + kinematics.a1=baseParticle->GetPDGMass()/amu_c2; + kinematics.a2=recoilIon->GetPDGMass()/amu_c2; + } else { + kinematics.recoilIon=0; + kinematics.impactParameter=0; + kinematics.a1=baseParticle->GetPDGMass()/amu_c2; + kinematics.a2=0; + } + + std::vector::iterator stage=collisionStages.begin(); + + for(; stage != collisionStages.end(); stage++) + (*stage)->DoCollisionStep(this,aTrack, aStep); + + if(registerDepositedEnergy) aParticleChange.ProposeLocalEnergyDeposit(NIEL); + + return G4VDiscreteProcess::PostStepDoIt( aTrack, aStep ); +} + +G4bool G4ScreenedCoulombClassicalKinematics::DoScreeningComputation(G4ScreenedNuclearRecoil *master, + const G4ScreeningTables *screen, G4double eps, G4double beta) +{ + G4double au=screen->au; + G4CoulombKinematicsInfo &kin=master->GetKinematics(); + G4double A=kin.a2; + G4double a1=kin.a1; + + G4double xx0; // first estimate of closest approach + if(eps < 5.0) { + G4double y=std::log(eps); + G4double mlrho4=((((3.517e-4*y+1.401e-2)*y+2.393e-1)*y+2.734)*y+2.220); + G4double rho4=std::exp(-mlrho4); // W&M eq. 18 + G4double bb2=0.5*beta*beta; + xx0=std::sqrt(bb2+std::sqrt(bb2*bb2+rho4)); // W&M eq. 17 + } else { + G4double ee=1.0/(2.0*eps); + xx0=ee+std::sqrt(ee*ee+beta*beta); // W&M eq. 15 (Rutherford value) + if(master->CheckNuclearCollision(A, a1, xx0*au)) return 0; // nuclei too close + + } + + c2_function &phiData=*(screen->EMphiData); + // instantiate all the needed functions statically, so no allocation is done at run time + // we will be solving x^2 - x phi(x*au)/eps - beta^2 == 0.0 + // or, for easier scaling, x'^2 - x' au phi(x')/eps - beta^2 au^2 + static c2_plugin_function phifunc; + static c2_quadratic xsq(0., 0., 0., 1.); // x^2 + static c2_linear xovereps(0., 0., 0.); // will fill this in with the right slope at run time + static c2_function &xphi=xovereps*phifunc; + static c2_function &diff=xsq-xphi; + + xovereps.reset(0., 0.0, au/eps); // slope of x*au/eps term + phifunc.set_function(phiData); // install interpolating table + + G4double xx1, phip, phip2; + G4int root_error; + + xx1=diff.find_root(phiData.xmin(), std::min(10*xx0*au,phiData.xmax()), + std::min(xx0*au, phiData.xmax()), beta*beta*au*au, &root_error, &phip, &phip2)/au; + + if(root_error) { + G4cout << "Screened Coulomb Root Finder Error" << G4endl; + G4cout << "au " << au << " A " << A << " a1 " << a1 << " xx1 " << xx1 << " eps " << eps << " beta " << beta << G4endl; + G4cout << " xmin " << phiData.xmin() << " xmax " << std::min(10*xx0*au,phiData.xmax()) ; + G4cout << " f(xmin) " << phifunc(phiData.xmin()) << " f(xmax) " << phifunc(std::min(10*xx0*au,phiData.xmax())) ; + G4cout << " xstart " << std::min(xx0*au, phiData.xmax()) << " target " << beta*beta*au*au ; + G4cout << G4endl; + throw c2_exception("Failed root find"); + } + + phifunc.unset_function(); // throws an exception if used without setting again + // phiprime is scaled by one factor of au because phi is evaluated at (xx0*au), + G4double phiprime=phip*au; + + //lambda0 is from W&M 19 + G4double lambda0=1.0/std::sqrt(0.5+beta*beta/(2.0*xx1*xx1)-phiprime/(2.0*eps)); + + //compute the 6-term Lobatto integral alpha (per W&M 21, with different coefficients) + // this is probably completely un-needed but gives the highest quality results, + G4double alpha=(1.0+ lambda0)/30.0; + G4double xvals[]={0.98302349, 0.84652241, 0.53235309, 0.18347974}; + G4double weights[]={0.03472124, 0.14769029, 0.23485003, 0.18602489}; + for(G4int k=0; k<4; k++) { + G4double x, ff; + x=xx1/xvals[k]; + ff=1.0/std::sqrt(1.0-phiData(x*au)/(x*eps)-beta*beta/(x*x)); + alpha+=weights[k]*ff; + } + + G4double thetac1=CLHEP::pi*beta*alpha/xx1; // complement of CM scattering angle + G4double sintheta=std::sin(thetac1); //note sin(pi-theta)=sin(theta) + G4double costheta=-std::cos(thetac1); // note cos(pi-theta)=-cos(theta) + // G4double psi=std::atan2(sintheta, costheta+a1/A); // lab scattering angle (M&T 3rd eq. 8.69) + + // numerics note: because we checked above for reasonable values of beta which give real recoils, + // we don't have to look too closely for theta -> 0 here (which would cause sin(theta) + // and 1-cos(theta) to both vanish and make the atan2 ill behaved). + G4double zeta=std::atan2(sintheta, 1-costheta); // lab recoil angle (M&T 3rd eq. 8.73) + G4double coszeta=std::cos(zeta); + G4double sinzeta=std::sin(zeta); + + kin.sinTheta=sintheta; + kin.cosTheta=costheta; + kin.sinZeta=sinzeta; + kin.cosZeta=coszeta; + return 1; // all OK, collision is valid +} + +void G4ScreenedCoulombClassicalKinematics::DoCollisionStep(G4ScreenedNuclearRecoil *master, + const G4Track& aTrack, const G4Step&) { + + if(!master->GetValidCollision()) return; + + G4ParticleChange &aParticleChange=master->GetParticleChange(); + G4CoulombKinematicsInfo &kin=master->GetKinematics(); + + const G4DynamicParticle* incidentParticle = aTrack.GetDynamicParticle(); + G4ParticleDefinition *baseParticle=aTrack.GetDefinition(); + + G4double incidentEnergy = incidentParticle->GetKineticEnergy(); + + // this adjustment to a1 gives the right results for soft (constant gamma) + // relativistic collisions. Hard collisions are wrong anyway, since the + // Coulombic and hadronic terms interfere and cannot be added. + G4double gamma=(1.0+incidentEnergy/baseParticle->GetPDGMass()); + G4double a1=kin.a1*gamma; // relativistic gamma correction + + G4ParticleDefinition *recoilIon=kin.recoilIon; + G4double A=recoilIon->GetPDGMass()/amu_c2; + G4int Z=(G4int)((recoilIon->GetPDGCharge()/eplus)+0.5); + + G4double Ec = incidentEnergy*(A/(A+a1)); // energy in CM frame (non-relativistic!) + const G4ScreeningTables *screen=kin.crossSection->GetScreening(Z); + G4double au=screen->au; // screening length + + G4double beta = kin.impactParameter/au; // dimensionless impact parameter + G4double eps = Ec/(screen->z1*Z*elm_coupling/au); // dimensionless energy + + G4bool ok=DoScreeningComputation(master, screen, eps, beta); + if(!ok) { + master->SetValidCollision(0); // flag bad collision + return; // just bail out without setting valid flag + } + + G4double eRecoil=4*incidentEnergy*a1*A*kin.cosZeta*kin.cosZeta/((a1+A)*(a1+A)); + kin.eRecoil=eRecoil; + + if(incidentEnergy-eRecoil < master->GetRecoilCutoff()) { + if(!baseParticle->GetProcessManager()-> + GetAtRestProcessVector()->size()) + aParticleChange.ProposeTrackStatus(fStopAndKill); + else + aParticleChange.ProposeTrackStatus(fStopButAlive); + aParticleChange.ProposeEnergy(0.0); + master->AddToNIEL(incidentEnergy-eRecoil); + } + + if(master->GetEnableRecoils() && eRecoil > master->GetRecoilCutoff()) { + kin.recoilIon=recoilIon; + } else { + kin.recoilIon=0; // this flags no recoil to be generated + master->AddToNIEL(eRecoil) ; + } +} + +void G4SingleScatter::DoCollisionStep(G4ScreenedNuclearRecoil *master, + const G4Track& aTrack, const G4Step&) { + + if(!master->GetValidCollision()) return; + + G4CoulombKinematicsInfo &kin=master->GetKinematics(); + G4ParticleChange &aParticleChange=master->GetParticleChange(); + + const G4DynamicParticle* incidentParticle = aTrack.GetDynamicParticle(); + G4double incidentEnergy = incidentParticle->GetKineticEnergy(); + G4double eRecoil=kin.eRecoil; + + G4double azimuth=G4UniformRand()*(2.0*CLHEP::pi); + G4double sa=std::sin(azimuth); + G4double ca=std::cos(azimuth); + + G4ThreeVector recoilMomentumDirection(kin.sinZeta*ca, kin.sinZeta*sa, kin.cosZeta); + G4ParticleMomentum incidentDirection = incidentParticle->GetMomentumDirection(); + recoilMomentumDirection=recoilMomentumDirection.rotateUz(incidentDirection); + G4ThreeVector recoilMomentum=recoilMomentumDirection*std::sqrt(2.0*eRecoil*kin.a2*amu_c2); + + if(aParticleChange.GetEnergy() != 0.0) { // DoKinematics hasn't stopped it! + G4ThreeVector beamMomentum=incidentParticle->GetMomentum()-recoilMomentum; + aParticleChange.ProposeMomentumDirection(beamMomentum.unit()) ; + aParticleChange.ProposeEnergy(incidentEnergy-eRecoil); + } + + if(kin.recoilIon) { + G4DynamicParticle* recoil = new G4DynamicParticle (kin.recoilIon, + recoilMomentumDirection,eRecoil) ; + + aParticleChange.SetNumberOfSecondaries(1); + aParticleChange.AddSecondary(recoil); + } +} + +G4bool G4ScreenedNuclearRecoil:: +IsApplicable(const G4ParticleDefinition& aParticleType) +{ + return aParticleType == *(G4Proton::Proton()) || + aParticleType.GetParticleType() == "nucleus" || + aParticleType.GetParticleType() == "static_nucleus"; +} + + +void +G4ScreenedNuclearRecoil:: +DumpPhysicsTable(const G4ParticleDefinition&) +{ +} + +// This used to be the file mhmScreenedNuclearRecoil_native.cc +// it has been included here to collect this file into a smaller number of packages + +#include "G4DataVector.hh" +#include "G4Material.hh" +#include "G4Element.hh" +#include "G4Isotope.hh" +#include "G4MaterialCutsCouple.hh" +#include "G4ElementVector.hh" +#include + +static c2_function &ZBLScreening(G4int z1, G4int z2, size_t npoints, G4double rMax, G4double *auval) +{ + static const size_t ncoef=4; + static G4double scales[ncoef]={-3.2, -0.9432, -0.4028, -0.2016}; + static G4double coefs[ncoef]={0.1818,0.5099,0.2802,0.0281}; + + G4double au=0.8854*angstrom*0.529/(std::pow(z1, 0.23)+std::pow(z2,0.23)); + std::vector r(npoints), phi(npoints); + + for(size_t i=0; i *>(new lin_log_interpolating_function(r, phi, false, phiprime0)); +} + +static c2_function &MoliereScreening(G4int z1, G4int z2, size_t npoints, G4double rMax, G4double *auval) +{ + static const size_t ncoef=3; + static G4double scales[ncoef]={-6.0, -1.2, -0.3}; + static G4double coefs[ncoef]={0.10, 0.55, 0.35}; + + G4double au=0.8853*0.529*angstrom/std::sqrt(std::pow(z1, 0.6667)+std::pow(z2,0.6667)); + std::vector r(npoints), phi(npoints); + + for(size_t i=0; i *>(new lin_log_interpolating_function(r, phi, false, phiprime0)); +} + +static c2_function &LJScreening(G4int z1, G4int z2, size_t npoints, G4double rMax, G4double *auval) +{ +//from Loftager, Besenbacher, Jensen & Sorensen +//PhysRev A20, 1443++, 1979 + G4double au=0.8853*0.529*angstrom/std::sqrt(std::pow(z1, 0.6667)+std::pow(z2,0.6667)); + std::vector r(npoints), phi(npoints); + + for(size_t i=0; i *>(new lin_log_interpolating_function(r, phi, false, logphiprime0*phi[0])); +} + +G4NativeScreenedCoulombCrossSection::~G4NativeScreenedCoulombCrossSection() { +} + +G4NativeScreenedCoulombCrossSection::G4NativeScreenedCoulombCrossSection() { + AddScreeningFunction("zbl", ZBLScreening); + AddScreeningFunction("lj", LJScreening); + AddScreeningFunction("mol", MoliereScreening); +} + +std::vector G4NativeScreenedCoulombCrossSection::GetScreeningKeys() const { + std::vector keys; + // find the available screening keys + std::map::const_iterator sfunciter=phiMap.begin(); + for(; sfunciter != phiMap.end(); sfunciter++) keys.push_back((*sfunciter).first); + return keys; +} + +static inline G4double cm_energy(G4double a1, G4double a2, G4double t0) { + // "relativistically correct energy in CM frame" + G4double m1=a1*amu_c2, m2=a2*amu_c2; + G4double mc2=(m1+m2); + G4double f=2.0*m2*t0/(mc2*mc2); + // old way: return (f < 1e-6) ? 0.5*mc2*f : mc2*(std::sqrt(1.0+f)-1.0); + // formally equivalent to previous, but numerically stable for all f without conditional + // uses identity (sqrt(1+x) - 1)(sqrt(1+x) + 1) = x + return mc2*f/(std::sqrt(1.0+f)+1.0); +} + +static inline G4double thetac(G4double m1, G4double m2, G4double eratio) { + G4double s2th2=eratio*( (m1+m2)*(m1+m2)/(4.0*m1*m2) ); + G4double sth2=std::sqrt(s2th2); + return 2.0*std::asin(sth2); +} + +void G4NativeScreenedCoulombCrossSection::LoadData(G4String screeningKey, G4int z1, G4double a1, G4double recoilCutoff) +{ + static const size_t sigLen=200; // since sigma doesn't matter much, a very coarse table will do + G4DataVector energies(sigLen); + G4DataVector data(sigLen); + + a1=standardmass(z1); // use standardized values for mass for building tables + + const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); + if (materialTable == 0) + G4Exception("mhmNativeCrossSection::LoadData - no MaterialTable found)"); + + G4int nMaterials = G4Material::GetNumberOfMaterials(); + + for (G4int m=0; mGetElementVector(); + const G4int nMatElements = material->GetNumberOfElements(); + + for (G4int iEl=0; iElGetZ(); + G4double a2=element->GetA()*(mole/gram); + + if(sigmaMap.find(Z)!=sigmaMap.end()) continue; // we've already got this element + + // find the screening function generator we need + std::map::iterator sfunciter=phiMap.find(screeningKey); + if(sfunciter==phiMap.end()) { + G4cout << "no such screening key " << screeningKey << G4endl; // FIXME later + exit(1); + } + ScreeningFunc sfunc=(*sfunciter).second; + + G4double au; + c2_function &screen=sfunc(z1, Z, 200, 50.0*angstrom, &au); // generate the screening data + + G4ScreeningTables st; + st.EMphiData=&screen; // this is our phi table + st.z1=z1; st.m1=a1; st.z2=Z; st.m2=a2; st.emin=recoilCutoff; + st.au=au; + + // now comes the hard part... build the total cross section tables from the phi table + //based on (pi-thetac) = pi*beta*alpha/x0, but noting that alpha is very nearly unity, always + //so just solve it wth alpha=1, which makes the solution much easier + //this function returns an approximation to (beta/x0)^2=phi(x0)/(eps*x0)-1 ~ ((pi-thetac)/pi)^2 + //Since we don't need exact sigma values, this is good enough (within a factor of 2 almost always) + //this rearranges to phi(x0)/(x0*eps) = 2*theta/pi - theta^2/pi^2 + + c2_linear c2au(0.0, 0.0, au); + c2_composed_function phiau(screen, c2au); // build phi(x*au) for dimensionless phi + c2_linear c2eps(0.0, 0.0, 0.0); // will store an appropriate eps inside this in loop + c2_ratio x0func(phiau, c2eps); // this will be phi(x)/(x*eps) when c2eps is correctly set + + G4double m1c2=a1*amu_c2; + G4double escale=z1*Z*elm_coupling/au; // energy at screening distance + G4double emax=m1c2; // model is doubtful in very relativistic range + G4double eratkin=0.9999*(4*a1*a2)/((a1+a2)*(a1+a2)); // #maximum kinematic ratio possible at 180 degrees + G4double cmfact0=st.emin/cm_energy(a1, a2, st.emin); + G4double l1=std::log(emax); + G4double l0=std::log(st.emin*cmfact0/eratkin); + + if(verbosity >=1) + G4cout << "Native Screening: " << screeningKey << " " << z1 << " " << a1 << " " << + Z << " " << a2 << " " << recoilCutoff << G4endl; + + for(size_t idx=0; idx *>(new log_log_interpolating_function( + energies, data)); + } + } +} diff --git a/examples/extended/electromagnetic/TestEm7/src/PhysListEmLivermore.cc b/examples/extended/electromagnetic/TestEm7/src/PhysListEmLivermore.cc index 8a1c9829f3..eebd63997a 100644 --- a/examples/extended/electromagnetic/TestEm7/src/PhysListEmLivermore.cc +++ b/examples/extended/electromagnetic/TestEm7/src/PhysListEmLivermore.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.cc,v 1.2 2006/12/11 20:13:53 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/PhysListEmPenelope.cc b/examples/extended/electromagnetic/TestEm7/src/PhysListEmPenelope.cc index c157a9620f..2a316614f4 100644 --- a/examples/extended/electromagnetic/TestEm7/src/PhysListEmPenelope.cc +++ b/examples/extended/electromagnetic/TestEm7/src/PhysListEmPenelope.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.cc,v 1.1 2006/11/22 18:56:21 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm7/src/PhysListEmStandard.cc index 037b3f9dfe..e2533ca277 100644 --- a/examples/extended/electromagnetic/TestEm7/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm7/src/PhysListEmStandard.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: PhysListEmStandard.cc,v 1.8 2007/06/22 12:44:42 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysListEmStandard.cc,v 1.9 2007/07/28 16:39:31 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/PhysListEmStandardIG.cc b/examples/extended/electromagnetic/TestEm7/src/PhysListEmStandardIG.cc new file mode 100644 index 0000000000..91dfc2932d --- /dev/null +++ b/examples/extended/electromagnetic/TestEm7/src/PhysListEmStandardIG.cc @@ -0,0 +1,133 @@ +// +// ******************************************************************** +// * 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: PhysListEmStandardIG.cc,v 1.3 2007/11/07 19:41:32 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "PhysListEmStandardIG.hh" +#include "G4ParticleDefinition.hh" +#include "G4ProcessManager.hh" + +#include "G4ComptonScattering.hh" +#include "G4GammaConversion.hh" +#include "G4PhotoElectricEffect.hh" + +#include "G4MultipleScattering.hh" +#include "G4hMultipleScattering.hh" +#include "G4ScreenedNuclearRecoil.hh" + +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +#include "G4MuIonisation.hh" +#include "G4MuBremsstrahlung.hh" +#include "G4MuPairProduction.hh" + +#include "G4hIonisation.hh" +#include "G4ionIonisation.hh" +#include "G4CoulombScattering.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PhysListEmStandardIG::PhysListEmStandardIG(const G4String& name) + : G4VPhysicsConstructor(name) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PhysListEmStandardIG::~PhysListEmStandardIG() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void PhysListEmStandardIG::ConstructProcess() +{ + // Add standard EM Processes + + G4ScreenedNuclearRecoil* nucr = new G4ScreenedNuclearRecoil(); + + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + 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, 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, 3,3); + pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4); + + } else if (particleName == "mu+" || + particleName == "mu-" ) { + //muon + pmanager->AddProcess(new G4hMultipleScattering,-1, 1,1); + pmanager->AddProcess(new G4MuIonisation, -1, 2,2); + pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3); + pmanager->AddProcess(new G4MuPairProduction, -1, 4,4); + + } else if (particleName == "alpha" || particleName == "He3") { + pmanager->AddProcess(new G4ionIonisation, -1, 1,1); + pmanager->AddDiscreteProcess(nucr); + + } else if (particleName == "GenericIon" ) { + pmanager->AddProcess(new G4ionIonisation, -1, 1,1); + pmanager->AddDiscreteProcess(nucr); + + } else if (particleName == "proton" || + particleName == "deuteron" || + particleName == "triton") { + pmanager->AddProcess(new G4hIonisation, -1, 1,1); + pmanager->AddDiscreteProcess(nucr); + + } else if ((!particle->IsShortLived()) && + (particle->GetPDGCharge() != 0.0) && + (particle->GetParticleName() != "chargedgeantino")) { + //all others charged particles except geantino + pmanager->AddProcess(new G4hMultipleScattering,-1, 1,1); + pmanager->AddProcess(new G4hIonisation, -1, 2,2); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/electromagnetic/TestEm7/src/PhysListEmStandardSS.cc b/examples/extended/electromagnetic/TestEm7/src/PhysListEmStandardSS.cc index cd1c87c928..d9915850c9 100644 --- a/examples/extended/electromagnetic/TestEm7/src/PhysListEmStandardSS.cc +++ b/examples/extended/electromagnetic/TestEm7/src/PhysListEmStandardSS.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysListEmStandardSS.cc,v 1.2 2007/05/16 13:14:17 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysListEmStandardSS.cc,v 1.4 2007/11/07 19:41:32 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -49,6 +49,7 @@ #include "G4hIonisation.hh" #include "G4ionIonisation.hh" +#include "G4ionGasIonisation.hh" #include "G4CoulombScattering.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -82,42 +83,42 @@ void PhysListEmStandardSS::ConstructProcess() } else if (particleName == "e-") { //electron - pmanager->AddDiscreteProcess(new G4CoulombScattering); - pmanager->AddProcess(new G4eIonisation, -1, 2,2); - pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); + pmanager->AddProcess(new G4eIonisation, -1, 1,1); + pmanager->AddProcess(new G4eBremsstrahlung, -1, 2,2); + pmanager->AddDiscreteProcess(new G4CoulombScattering); } else if (particleName == "e+") { //positron - pmanager->AddDiscreteProcess(new G4CoulombScattering); - pmanager->AddProcess(new G4eIonisation, -1, 2,2); - pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); - pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4); + pmanager->AddProcess(new G4eIonisation, -1, 1,1); + pmanager->AddProcess(new G4eBremsstrahlung, -1, 2,2); + pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,3); + pmanager->AddDiscreteProcess(new G4CoulombScattering); } else if (particleName == "mu+" || particleName == "mu-" ) { //muon - pmanager->AddDiscreteProcess(new G4CoulombScattering); - pmanager->AddProcess(new G4MuIonisation, -1, 2,2); - pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3); - pmanager->AddProcess(new G4MuPairProduction, -1, 4,4); + pmanager->AddProcess(new G4MuIonisation, -1, 1,1); + pmanager->AddProcess(new G4MuBremsstrahlung, -1, 2,2); + pmanager->AddProcess(new G4MuPairProduction, -1, 3,3); + pmanager->AddDiscreteProcess(new G4CoulombScattering); } else if (particleName == "alpha" || particleName == "He3") { - pmanager->AddDiscreteProcess(new G4CoulombScattering); - pmanager->AddProcess(new G4ionIonisation, -1, 2,2); + pmanager->AddProcess(new G4ionIonisation, -1, 1,1); + pmanager->AddDiscreteProcess(new G4CoulombScattering); } else if (particleName == "GenericIon" ) { - + pmanager->AddProcess(new G4ionGasIonisation, -1, 1,1); G4CoulombScattering* cs = new G4CoulombScattering(); cs->SetBuildTableFlag(false); pmanager->AddDiscreteProcess(cs); - 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->AddDiscreteProcess(new G4CoulombScattering); - pmanager->AddProcess(new G4hIonisation, -1,2,2); + pmanager->AddProcess(new G4hIonisation, -1,1,1); + pmanager->AddDiscreteProcess(new G4CoulombScattering); } } } diff --git a/examples/extended/electromagnetic/TestEm7/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm7/src/PhysicsList.cc index 74132feb01..4a9a0a9d78 100644 --- a/examples/extended/electromagnetic/TestEm7/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm7/src/PhysicsList.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysicsList.cc,v 1.24 2007/05/16 13:14:17 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.cc,v 1.27 2007/11/19 15:02:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -34,6 +34,7 @@ #include "PhysListEmStandard.hh" #include "PhysListEmStandardSS.hh" +#include "PhysListEmStandardIG.hh" #include "PhysListEmLivermore.hh" #include "PhysListEmPenelope.hh" #include "G4EmStandardPhysics.hh" @@ -41,6 +42,7 @@ #include "G4EmStandardPhysics_option2.hh" #include "G4HadronElasticPhysics.hh" +#include "G4HadronDElasticPhysics.hh" #include "G4HadronHElasticPhysics.hh" #include "G4HadronQElasticPhysics.hh" #include "G4HadronInelasticQBBC.hh" @@ -228,6 +230,12 @@ void PhysicsList::AddPhysicsList(const G4String& name) delete emPhysicsList; emPhysicsList = new PhysListEmStandardSS(name); + } else if (name == "standardNR") { + + emName = name; + delete emPhysicsList; + emPhysicsList = new PhysListEmStandardIG(name); + } else if (name == "livermore") { emName = name; delete emPhysicsList; @@ -239,15 +247,19 @@ void PhysicsList::AddPhysicsList(const G4String& name) emPhysicsList = new PhysListEmPenelope(); } else if (name == "elastic" && !helIsRegisted) { - hadronPhys.push_back( new G4HadronElasticPhysics(name)); + hadronPhys.push_back( new G4HadronElasticPhysics()); + helIsRegisted = true; + + } else if (name == "DElastic" && !helIsRegisted) { + hadronPhys.push_back( new G4HadronDElasticPhysics()); helIsRegisted = true; } else if (name == "HElastic" && !helIsRegisted) { - hadronPhys.push_back( new G4HadronHElasticPhysics(name)); + hadronPhys.push_back( new G4HadronHElasticPhysics()); helIsRegisted = true; } else if (name == "QElastic" && !helIsRegisted) { - hadronPhys.push_back( new G4HadronQElasticPhysics(name)); + hadronPhys.push_back( new G4HadronQElasticPhysics()); helIsRegisted = true; } else if (name == "binary" && !bicIsRegisted) { diff --git a/examples/extended/electromagnetic/TestEm7/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm7/src/PhysicsListMessenger.cc index cf51f5aab7..44d2602dbf 100644 --- a/examples/extended/electromagnetic/TestEm7/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm7/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.3 2006/06/29 16:58:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm7/src/PrimaryGeneratorAction.cc index 14f4d2b7de..ae9311aba5 100644 --- a/examples/extended/electromagnetic/TestEm7/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm7/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.2 2006/06/29 16:58:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm7/src/PrimaryGeneratorMessenger.cc index f8b9254597..2c7e1a9dda 100644 --- a/examples/extended/electromagnetic/TestEm7/src/PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm7/src/PrimaryGeneratorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.cc,v 1.3 2006/06/29 16:58:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/RunAction.cc b/examples/extended/electromagnetic/TestEm7/src/RunAction.cc index 8bd7c4b8a5..2516f3719c 100644 --- a/examples/extended/electromagnetic/TestEm7/src/RunAction.cc +++ b/examples/extended/electromagnetic/TestEm7/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.20 2007/06/12 14:01:13 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/StepMax.cc b/examples/extended/electromagnetic/TestEm7/src/StepMax.cc index c747d9c6c0..5f335286b4 100644 --- a/examples/extended/electromagnetic/TestEm7/src/StepMax.cc +++ b/examples/extended/electromagnetic/TestEm7/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.5 2006/06/29 16:58:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/StepMaxMessenger.cc b/examples/extended/electromagnetic/TestEm7/src/StepMaxMessenger.cc index 6ce8be345e..c2fa294827 100644 --- a/examples/extended/electromagnetic/TestEm7/src/StepMaxMessenger.cc +++ b/examples/extended/electromagnetic/TestEm7/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.3 2006/06/29 16:58:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm7/src/SteppingAction.cc index 1232f3015e..60dc336f45 100644 --- a/examples/extended/electromagnetic/TestEm7/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm7/src/SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.cc,v 1.11 2007/06/12 14:01:13 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm7/src/SteppingVerbose.cc index 4c3258a056..19f3017e2e 100644 --- a/examples/extended/electromagnetic/TestEm7/src/SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm7/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.3 2006/06/29 16:58:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm7/src/TrackingAction.cc b/examples/extended/electromagnetic/TestEm7/src/TrackingAction.cc index 6f8200dca8..3db2bae24b 100644 --- a/examples/extended/electromagnetic/TestEm7/src/TrackingAction.cc +++ b/examples/extended/electromagnetic/TestEm7/src/TrackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TrackingAction.cc,v 1.3 2006/11/22 17:58:11 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm8/History b/examples/extended/electromagnetic/TestEm8/History index e3267716dd..da64d77591 100644 --- a/examples/extended/electromagnetic/TestEm8/History +++ b/examples/extended/electromagnetic/TestEm8/History @@ -1,4 +1,4 @@ -$Id: History,v 1.22 2006/11/15 19:29:08 vnivanch Exp $ +$Id: History,v 1.29 2007/11/12 10:54:49 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,31 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +12-11-07 V.Ivant (testem8-V09-00-05) +- Fixed logic in SteppingAction + +02-10-07 V.Ivant (testem8-V09-00-04) +- Fixed memory leak in UI interface + +26-09-07 V.Ivant (testem8-V09-00-03) +- Remove used lines from PAI physics constructors, added "pai_brem" + constructor PhysListEmPAI in which AlongStep from bremsstrahlung + is allowed + +27-08-07 V.Ivant (testem8-V09-00-02) +- Recover head + +02-08-07 V.Ivant (testem8-V09-00-01) + Use components of Physics Lists from physics_list subdirectory + +27-08-07 V.Ivant (testem8-V09-00-00a) +- Fix PAI physics constructors: enegry loss processes should be + active post step + +27-07-07 V.Ivant (testem8-V09-00-00) +- Create VisManager only for interactive session, improve destructor + of Em8DetectorConstruction class + 15-11-06 V.Ivant (testem8-V08-01-01) - Put on the head version of Em8DetectorConstruction.cc and PhysListEmModelPai.cc, which provide non-zero results diff --git a/examples/extended/electromagnetic/TestEm8/TestEm8.cc b/examples/extended/electromagnetic/TestEm8/TestEm8.cc index 834860df08..bc685944d2 100644 --- a/examples/extended/electromagnetic/TestEm8/TestEm8.cc +++ b/examples/extended/electromagnetic/TestEm8/TestEm8.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: TestEm8.cc,v 1.7 2006/06/29 16:58:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: TestEm8.cc,v 1.8 2007/07/27 15:29:38 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -77,12 +77,7 @@ int main(int argc,char** argv) runManager->SetUserInitialization(new PhysicsList); #ifdef G4VIS_USE - - // visualization manager - - G4VisManager* visManager = new G4VisExecutive; - visManager->Initialize(); - + G4VisManager* visManager = 0; #endif // set user action classes @@ -102,30 +97,28 @@ int main(int argc,char** argv) runAction); runManager->SetUserAction(steppingAction); - //Initialize G4 kernel, physics tables may be here ???... - - // runManager->Initialize(); - - // get the pointer to the User Interface manager - G4UImanager* UI = G4UImanager::GetUIpointer(); if (argc==1) // Define UI terminal for interactive mode - { - G4UIsession * session = new G4UIterminal; - UI->ApplyCommand("/control/execute init.mac"); - session->SessionStart(); - delete session; - } + { +#ifdef G4VIS_USE + visManager = new G4VisExecutive; + visManager->Initialize(); +#endif + G4UIsession * session = new G4UIterminal; + UI->ApplyCommand("/control/execute init.mac"); + session->SessionStart(); + delete session; + } else // Batch mode - { - G4String command = "/control/execute "; - G4String fileName = argv[1]; - UI->ApplyCommand(command+fileName); - } + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } // job termination - + #ifdef G4VIS_USE delete visManager; #endif diff --git a/examples/extended/electromagnetic/TestEm8/TestEm8.in b/examples/extended/electromagnetic/TestEm8/TestEm8.in index 8d29d1a7e7..47d02f32f3 100644 --- a/examples/extended/electromagnetic/TestEm8/TestEm8.in +++ b/examples/extended/electromagnetic/TestEm8/TestEm8.in @@ -9,9 +9,10 @@ # # select EM PhysicsList # -#/testem/phys/addPhysics standard +#/testem/phys/addPhysics emstandard /testem/phys/addPhysics pai #/testem/phys/addPhysics pai_photon +#/testem/phys/addPhysics pai_brem # /testem/phys/setCuts 1 mm #/testem/stepMax 10 mm diff --git a/examples/extended/electromagnetic/TestEm8/TestEm8.out b/examples/extended/electromagnetic/TestEm8/TestEm8.out index cff5a47e62..70b3c916c0 100644 --- a/examples/extended/electromagnetic/TestEm8/TestEm8.out +++ b/examples/extended/electromagnetic/TestEm8/TestEm8.out @@ -1,62 +1,33 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 ************************************************************* -Visualization Manager instantiating... -Visualization Manager initialising... -Registering graphics systems... - -You have successfully registered the following graphics systems. -Current available graphics systems are: - ASCIITree (ATree) - DAWNFILE (DAWNFILE) - G4HepRep (HepRepXML) - G4HepRepFile (HepRepFile) - RayTracer (RayTracer) - VRML1FILE (VRML1FILE) - VRML2FILE (VRML2FILE) - -Registering model factories... - -You have successfully registered the following model factories. -Registered model factories: - generic - drawByCharge - drawByParticleID - drawByOriginVolume - drawByAttribute - -Registered filter factories: - chargeFilter - particleFilter - originVolumeFilter - attributeFilter - /run/verbose 2 #/tracking/verbose 2 # -# select EM PhysicsList +# select EM PhysicsList # -#/testem/phys/addPhysics standard -/testem/phys/addPhysics pai +#/testem/phys/addPhysics emstandard +/testem/phys/addPhysics pai PhysicsList::AddPhysicsList: PhysListEmModelPai is called -#/testem/phys/addPhysics pai_photon +#/testem/phys/addPhysics pai_photon +#/testem/phys/addPhysics pai_brem # -/testem/phys/setCuts 1 mm -#/testem/stepMax 10 mm +/testem/phys/setCuts 1 mm +#/testem/stepMax 10 mm # -# PLOT: energy deposit distribution in absorber +# PLOT: energy deposit distribution in absorber # /plots/setnbinEn 20 Nb of bins in Edep plot = 20 /plots/setEnlow 0.0 MeV Elow in the Edep plot = 0 -/plots/setEnhigh 0.060 MeV +/plots/setEnhigh 0.060 MeV Ehigh in the Edep plot = 0.06 /plots/sethistName g4.p11 hist file = g4.p11 @@ -80,7 +51,7 @@ PhysicsList::SetCuts:CutLength : 1 mm /gun/particle proton # #/gun/particle mu- -# +# /gun/energy 200000.00 MeV # #/gun/energy 200.0 MeV @@ -113,7 +84,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -126,7 +97,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -149,7 +120,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for GenericIon LateralDisplacementFlag= 0 Skin= 0 @@ -163,7 +134,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -171,7 +142,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -183,7 +154,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -200,7 +171,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -218,7 +189,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -231,7 +202,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 Region -- appears in world volume Root logical volume(s) : World @@ -274,9 +245,6 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Initial seed (index) = 0 Current couple of seeds = 9876, 54321 ---------------------------------------- -/vis/scene/notifyHandlers -WARNING: Scene "refresh" not found. - /vis/scene/list to see scenes. Start Run processing. ---> Begin of Event: 0 @@ -301,60 +269,56 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 1000 - User=9.37s Real=9.41s Sys=0.01s + User=7.65s Real=7.71s Sys=0s ================== run summary ===================== end of Run TotNbofEvents = 1000 - mean charged track length in absorber=23.5696 +- 0.221368 mm + mean charged track length in absorber=23.2235 +- 0.0925384 mm - mean energy deposit in absorber=0.0154838 +- 0.000291246 MeV + mean energy deposit in absorber=0.0156861 +- 0.000283479 MeV - mean number of steps in absorber (charged) =0.104 +- 0.0479081 + mean number of steps in absorber (charged) =0.094 +- 0.0535646 mean number of steps in absorber (neutral) =0 +- 0 - mean number of charged secondaries = 0.011 +- 0.00329833 + mean number of charged secondaries = 0.008 +- 0.00281709 mean number of neutral secondaries = 0 +- 0 - mean number of e-s =0.011 and e+s =0 + mean number of e-s =0.008 and e+s =0 -(number) transmission coeff=0.507 reflection coeff=0 +(number) transmission coeff=1 reflection coeff=0 energy deposit distribution -#entries=1000 #underflows=0 #overflows=11 +#entries=1000 #underflows=0 #overflows=5 bin nb Elow entries normalized 0 0 0 0 - 1 3 4 0.004 - 2 6 100 0.1 - 3 9 274 0.274 - 4 12 262 0.262 - 5 15 151 0.151 - 6 18 87 0.087 - 7 21 34 0.034 - 8 24 21 0.021 - 9 27 16 0.016 - 10 30 13 0.013 - 11 33 8 0.008 - 12 36 6 0.006 - 13 39 4 0.004 - 14 42 2 0.002 + 1 3 8 0.008 + 2 6 98 0.098 + 3 9 267 0.267 + 4 12 245 0.245 + 5 15 155 0.155 + 6 18 81 0.081 + 7 21 42 0.042 + 8 24 29 0.029 + 9 27 18 0.018 + 10 30 14 0.014 + 11 33 9 0.009 + 12 36 8 0.008 + 13 39 5 0.005 + 14 42 5 0.005 15 45 1 0.001 - 16 48 1 0.001 - 17 51 2 0.002 - 18 54 2 0.002 - 19 57 1 0.001 + 16 48 2 0.002 + 17 51 1 0.001 + 18 54 5 0.005 + 19 57 2 0.002 Emp = 0.009 width= 0.006 MeV -/vis/viewer/update -ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 718165562, 201856785 + Current couple of seeds = 520439100, 504834070 ---------------------------------------- # -Graphics systems deleted. -Visualization Manager deleting... UserDetectorConstruction deleted. UserPhysicsList deleted. UserRunAction deleted. diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8CalorHit.hh b/examples/extended/electromagnetic/TestEm8/include/Em8CalorHit.hh index ed8cd34263..408b09b669 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8CalorHit.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8CalorHit.hh @@ -25,7 +25,7 @@ // // // $Id: Em8CalorHit.hh,v 1.4 2006/06/29 16:58:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8CalorimeterSD.hh b/examples/extended/electromagnetic/TestEm8/include/Em8CalorimeterSD.hh index 9fc2f119af..572a3e40df 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8CalorimeterSD.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8CalorimeterSD.hh @@ -25,7 +25,7 @@ // // // $Id: Em8CalorimeterSD.hh,v 1.4 2006/06/29 16:59:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8DetectorConstruction.hh index 677d5e708a..7367d85937 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8DetectorConstruction.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: Em8DetectorConstruction.hh,v 1.8 2006/06/29 16:59:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: Em8DetectorConstruction.hh,v 1.9 2007/10/02 10:12:47 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -50,12 +50,10 @@ class Em8CalorimeterSD; class Em8DetectorConstruction : public G4VUserDetectorConstruction { - public: +public: - Em8DetectorConstruction(); - ~Em8DetectorConstruction(); - - public: + Em8DetectorConstruction(); + virtual ~Em8DetectorConstruction(); void SetAbsorberMaterial (G4String); void SetAbsorberThickness(G4double); @@ -71,22 +69,17 @@ class Em8DetectorConstruction : public G4VUserDetectorConstruction void SetElectronCut(G4double cut){fElectronCut = cut;}; void SetPositronCut(G4double cut){fPositronCut = cut;}; + G4VPhysicalVolume* Construct(); - // void SetMagField(G4double); + void UpdateGeometry(); - G4VPhysicalVolume* Construct(); - - void UpdateGeometry(); - - public: - void PrintCalorParameters(); G4Material* GetWorldMaterial() {return fWorldMaterial;}; G4double GetWorldSizeZ() {return fWorldSizeZ;}; G4double GetWorldSizeR() {return fWorldSizeR;}; - G4double GetAbsorberZ() {return fAbsorberZ;}; + G4double GetAbsorberZ() {return fAbsorberZ;}; G4double GetStartAbsZ() {return fStartAbsZ;}; G4double GetEndAbsZ() {return fEndAbsZ;}; @@ -98,9 +91,9 @@ class Em8DetectorConstruction : public G4VUserDetectorConstruction const G4VPhysicalVolume* GetAbsorber() {return fPhysicsAbsorber;}; G4LogicalVolume* GetLogicalAbsorber() {return fLogicAbsorber;}; - private: - - static const G4double fDelta; +private: + + G4double fDelta; G4bool fWorldChanged; G4double fAbsorberThickness; @@ -108,8 +101,6 @@ class Em8DetectorConstruction : public G4VUserDetectorConstruction G4Material* fWindowMat ; G4double fWindowThick ; - - G4double fAbsorberZ ; G4double fStartAbsZ , fEndAbsZ ; @@ -130,9 +121,9 @@ class Em8DetectorConstruction : public G4VUserDetectorConstruction G4double fElectronCut, fGammaCut, fPositronCut; - Em8DetectorMessenger* fDetectorMessenger; //pointer to the Messenger - Em8CalorimeterSD* fCalorimeterSD; //pointer to the sensitive detector - G4Region* fRegGasDet; + Em8DetectorMessenger* fDetectorMessenger; //pointer to the Messenger + Em8CalorimeterSD* fCalorimeterSD; //pointer to the sensitive detector + G4Region* fRegGasDet; private: diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8DetectorMessenger.hh index 6de05266f0..1d1262fb5b 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8DetectorMessenger.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: Em8DetectorMessenger.hh,v 1.5 2006/06/29 16:59:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: Em8DetectorMessenger.hh,v 1.6 2007/10/02 10:12:47 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -49,33 +49,33 @@ class G4UIcmdWithoutParameter; class Em8DetectorMessenger: public G4UImessenger { - public: - Em8DetectorMessenger(Em8DetectorConstruction* ); - ~Em8DetectorMessenger(); +public: + Em8DetectorMessenger(Em8DetectorConstruction* ); + virtual ~Em8DetectorMessenger(); - void SetNewValue(G4UIcommand*, G4String); + void SetNewValue(G4UIcommand*, G4String); - private: +private: - Em8DetectorConstruction* Em8Detector; + Em8DetectorConstruction* Em8Detector; - G4UIdirectory* Em8detDir; + G4UIdirectory* Em8detDir; - G4UIcmdWithAString* AbsMaterCmd; - G4UIcmdWithADoubleAndUnit* AbsThickCmd; - G4UIcmdWithADoubleAndUnit* AbsRadCmd; + G4UIcmdWithAString* AbsMaterCmd; + G4UIcmdWithADoubleAndUnit* AbsThickCmd; + G4UIcmdWithADoubleAndUnit* AbsRadCmd; - G4UIcmdWithADoubleAndUnit* AbsZposCmd; + G4UIcmdWithADoubleAndUnit* AbsZposCmd; - G4UIcmdWithAString* WorldMaterCmd; - G4UIcmdWithADoubleAndUnit* WorldZCmd; - G4UIcmdWithADoubleAndUnit* WorldRCmd; + G4UIcmdWithAString* WorldMaterCmd; + G4UIcmdWithADoubleAndUnit* WorldZCmd; + G4UIcmdWithADoubleAndUnit* WorldRCmd; - G4UIcmdWithADoubleAndUnit* ElectronCutCmd; - G4UIcmdWithADoubleAndUnit* PositronCutCmd; - G4UIcmdWithADoubleAndUnit* GammaCutCmd; + G4UIcmdWithADoubleAndUnit* ElectronCutCmd; + G4UIcmdWithADoubleAndUnit* PositronCutCmd; + G4UIcmdWithADoubleAndUnit* GammaCutCmd; - G4UIcmdWithoutParameter* UpdateCmd; + G4UIcmdWithoutParameter* UpdateCmd; }; diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8EventAction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8EventAction.hh index cb63f46c5e..911406d1dd 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8EventAction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: Em8EventAction.hh,v 1.4 2006/06/29 16:59:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8EventActionMessenger.hh index 98971de4b6..ec06d4bf08 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8EventActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: Em8EventActionMessenger.hh,v 1.4 2006/06/29 16:59:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorAction.hh index 2277c10107..c2065db9d6 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: Em8PrimaryGeneratorAction.hh,v 1.4 2006/06/29 16:59:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorMessenger.hh index f0521d2c55..71794a58c5 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: Em8PrimaryGeneratorMessenger.hh,v 1.4 2006/06/29 16:59:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8RunAction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8RunAction.hh index 2aec7e56e7..c5ce03bf72 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8RunAction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: Em8RunAction.hh,v 1.8 2006/06/29 16:59:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8RunMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8RunMessenger.hh index c2598ae55b..882e8364fe 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8RunMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8RunMessenger.hh @@ -26,7 +26,7 @@ // // $Id: Em8RunMessenger.hh,v 1.4 2006/06/29 16:59:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingAction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingAction.hh index facb7bbd1a..6dad20b5f2 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: Em8SteppingAction.hh,v 1.5 2006/06/29 16:59:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingVerbose.hh index 4698aa5e93..357dfc29ad 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: Em8SteppingVerbose.hh,v 1.4 2006/06/29 16:59:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm8/include/PhysListEmModel.hh b/examples/extended/electromagnetic/TestEm8/include/PhysListEmModel.hh index 76e56b2264..e0339bb035 100644 --- a/examples/extended/electromagnetic/TestEm8/include/PhysListEmModel.hh +++ b/examples/extended/electromagnetic/TestEm8/include/PhysListEmModel.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmModel.hh,v 1.2 2006/06/29 16:59:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm8/include/PhysListEmModelPai.hh b/examples/extended/electromagnetic/TestEm8/include/PhysListEmModelPai.hh index a83c6902d5..4c926db202 100644 --- a/examples/extended/electromagnetic/TestEm8/include/PhysListEmModelPai.hh +++ b/examples/extended/electromagnetic/TestEm8/include/PhysListEmModelPai.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmModelPai.hh,v 1.2 2006/06/29 16:59:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm8/include/PhysListEmPAI.hh b/examples/extended/electromagnetic/TestEm8/include/PhysListEmPAI.hh index b1d7f55183..41a72df46a 100644 --- a/examples/extended/electromagnetic/TestEm8/include/PhysListEmPAI.hh +++ b/examples/extended/electromagnetic/TestEm8/include/PhysListEmPAI.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPAI.hh,v 1.2 2006/06/29 16:59:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm8/include/PhysListEmPaiPhoton.hh b/examples/extended/electromagnetic/TestEm8/include/PhysListEmPaiPhoton.hh index c0bd25e725..14ad02d3ff 100644 --- a/examples/extended/electromagnetic/TestEm8/include/PhysListEmPaiPhoton.hh +++ b/examples/extended/electromagnetic/TestEm8/include/PhysListEmPaiPhoton.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPaiPhoton.hh,v 1.2 2006/06/29 16:59:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm8/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm8/include/PhysicsList.hh index e973419422..82bb011fba 100644 --- a/examples/extended/electromagnetic/TestEm8/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm8/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.2 2006/06/29 16:59:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/examples/extended/electromagnetic/TestEm8/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/PhysicsListMessenger.hh index cff101858a..dbc354c864 100644 --- a/examples/extended/electromagnetic/TestEm8/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/PhysicsListMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsListMessenger.hh,v 1.2 2006/06/29 16:59:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/StepMax.hh b/examples/extended/electromagnetic/TestEm8/include/StepMax.hh index 9ce99e5b2d..1ce68b4fad 100644 --- a/examples/extended/electromagnetic/TestEm8/include/StepMax.hh +++ b/examples/extended/electromagnetic/TestEm8/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.2 2006/06/29 16:59:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm8/include/StepMaxMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/StepMaxMessenger.hh index 803075324f..80ee407713 100644 --- a/examples/extended/electromagnetic/TestEm8/include/StepMaxMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.2 2006/06/29 16:59:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm8/include/TRTDetectorConstruction.hh b/examples/extended/electromagnetic/TestEm8/include/TRTDetectorConstruction.hh index 2f6a4aa903..b46b2d20f9 100644 --- a/examples/extended/electromagnetic/TestEm8/include/TRTDetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/TRTDetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: TRTDetectorConstruction.hh,v 1.4 2006/06/29 16:59:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/TRTMaterials.hh b/examples/extended/electromagnetic/TestEm8/include/TRTMaterials.hh index 61bf28adc1..ba187bcd8f 100644 --- a/examples/extended/electromagnetic/TestEm8/include/TRTMaterials.hh +++ b/examples/extended/electromagnetic/TestEm8/include/TRTMaterials.hh @@ -25,7 +25,7 @@ // // // $Id: TRTMaterials.hh,v 1.4 2006/06/29 17:00:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8CalorHit.cc b/examples/extended/electromagnetic/TestEm8/src/Em8CalorHit.cc index d383dc3bc7..61e8cda8ec 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8CalorHit.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8CalorHit.cc @@ -25,7 +25,7 @@ // // // $Id: Em8CalorHit.cc,v 1.5 2006/06/29 17:00:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8CalorimeterSD.cc b/examples/extended/electromagnetic/TestEm8/src/Em8CalorimeterSD.cc index ff91d5995e..6d586f8633 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8CalorimeterSD.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8CalorimeterSD.cc @@ -25,7 +25,7 @@ // // // $Id: Em8CalorimeterSD.cc,v 1.7 2006/06/29 17:00:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8DetectorConstruction.cc index 77f2149f72..64aec3a3bc 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8DetectorConstruction.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: Em8DetectorConstruction.cc,v 1.19 2006/11/15 19:29:08 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: Em8DetectorConstruction.cc,v 1.21 2007/10/02 10:12:47 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -58,13 +58,6 @@ #include "G4UnitsTable.hh" #include "G4ios.hh" - - -const G4double Em8DetectorConstruction::fDelta = 0.0001*mm; - - - - ///////////////////////////////////////////////////////////////////////////// // // @@ -77,14 +70,8 @@ fAbsorberMaterial(NULL),fSolidAbsorber(NULL),fLogicAbsorber(NULL), fPhysicsAbsorber(NULL),fDetectorMessenger(NULL), fCalorimeterSD(NULL),fRegGasDet(NULL) { - // default parameter values of the calorimeter + fDelta = 0.0001*mm; - // G4double inch = 2.54*cm ; - // G4double mil = inch/1000.0 ; - - // G4double delta = 0.0001*mm; - - // fAbsorberThickness = 85.*mm; fAbsorberThickness = 23.0*mm; fAbsorberRadius = 10.*cm; @@ -126,21 +113,18 @@ void Em8DetectorConstruction::DefineMaterials() { //This function illustrates the possible ways to define materials -G4String name, symbol ; //a=mass of a mole; -G4double a, z, density ; //z=mean number of protons; -// G4int iz, n; -G4int nel ; //iz=number of protons in an isotope; + G4String name, symbol ; //a=mass of a mole; + G4double a, z, density ; //z=mean number of protons; + + G4int nel ; //iz=number of protons in an isotope; // n=number of nucleons in an isotope; - G4int ncomponents; - // G4int natoms; -// G4double abundance; -G4double fractionmass; -//G4double temperature, pressure; + G4int ncomponents; + G4double fractionmass; -// -// define Elements -// + // + // define Elements + // a = 1.01*g/mole; G4Element* elH = new G4Element(name="Hydrogen",symbol="H" , z= 1., a); @@ -157,138 +141,17 @@ G4double fractionmass; a = 39.948*g/mole; G4Element* elAr = new G4Element(name="Argon", symbol="Ar", z=18., a); - // a = 131.29*g/mole; - // G4Element* elXe = new G4Element(name="Xenon", symbol="Xe", z=54., a); - - // a = 19.00*g/mole; - // G4Element* elF = new G4Element(name="Fluorine", symbol="F", z=9., a); + // + // define simple materials + // - -// -// define simple materials -// - - /* ****************************************************************** - - - -density = 1.390*g/cm3; -a = 39.95*g/mole; -G4Material* lAr = new G4Material(name="liquidArgon", z=18., a, density); - -density = 7.870*g/cm3; -a = 55.85*g/mole; -G4Material* Fe = new G4Material(name="Iron" , z=26., a, density); - -density = 8.960*g/cm3; -a = 63.55*g/mole; -G4Material* Cu = new G4Material(name="Copper" , z=29., a, density); - -density = 19.32*g/cm3; -a =196.97*g/mole; -G4Material* Au = new G4Material(name="Gold" , z=79., a, density); - -density = 11.35*g/cm3; -a = 207.19*g/mole; -G4Material* Pb = new G4Material(name="Lead" , z=82., a, density); - -// -// define a material from elements. case 1: chemical molecule -// - -density = 1.000*g/cm3; -G4Material* H2O = new G4Material(name="Water", density, ncomponents=2); -H2O->AddElement(elH, natoms=2); -H2O->AddElement(elO, natoms=1); - - // Kapton (polyimide) ??? since = Mylar C5H4O2 - - density = 1.39*g/cm3; - G4Material* Kapton = new G4Material(name="Kapton", density, nel=3); - Kapton->AddElement(elO,2); - Kapton->AddElement(elC,5); - Kapton->AddElement(elH,4); - - - // Carbon dioxide - - density = 1.977*mg/cm3; - G4Material* CO2 = new G4Material(name="CO2", density, nel=2, - kStateGas,273.15*kelvin,1.*atmosphere); - CO2->AddElement(elC,1); - CO2->AddElement(elO,2); - - - // TRT_CH2 - - density = 0.935*g/cm3; - G4Material* TRT_CH2 = new G4Material(name="TRT_CH2",density, nel=2); - TRT_CH2->AddElement(elC,1); - TRT_CH2->AddElement(elH,2); - - // Radiator - - density = 0.059*g/cm3; - G4Material* Radiator = new G4Material(name="Radiator",density, nel=2); - Radiator->AddElement(elC,1); - Radiator->AddElement(elH,2); - - // Carbon Fiber - - density = 0.145*g/cm3; - G4Material* CarbonFiber = new G4Material(name="CarbonFiber",density, nel=1); - CarbonFiber->AddElement(elC,1); - - density = 1.290*mg/cm3; // old air from elements - G4Material* air = new G4Material(name="air" , density, ncomponents=2); - Air->AddElement(elN, fractionmass=0.7); - Air->AddElement(elO, fractionmass=0.3); - - - density = 1.25053*mg/cm3 ; // STP - a = 14.01*g/mole ; // get atomic weight !!! - // a = 28.016*g/mole; - G4Material* N2 = new G4Material(name="Nitrogen", z= 7.,a,density) ; - - density = 1.25053*mg/cm3 ; // STP - G4Material* anotherN2 = new G4Material(name="anotherN2", density,ncomponents=2); - anotherN2->AddElement(elN, 1); - anotherN2->AddElement(elN, 1); - - - // liquid hydrogen for muon cooling target - - density = 0.071*g/cm3; - a = 1.01*g/mole; - G4Material* lH2 = new G4Material(name="liquidHydrigen", z=1., a, density); - - // Beryllium - - density = 1.848*g/cm3; - a = 9.01*g/mole; - G4Material* Be = new G4Material(name="Beryllium", z=4., a, density); - // Al for electrodes - - density = 2.700*g/cm3; - a = 26.98*g/mole; - G4Material* Al = new G4Material(name="Aluminium", z=13., a, density); - - - // Polypropelene - - G4Material* CH2 = new G4Material ("Polypropelene" , 0.91*g/cm3, 2); - CH2->AddElement(elH,2); - CH2->AddElement(elC,1); - -************************ */ // Aluminium - a = 26.98*g/mole; density = 2.7*g/cm3; G4Material* Al = new G4Material(name="Aluminium", z=13., a, density); if(Al); - // Mylar + // Mylar density = 1.39*g/cm3; G4Material* Mylar = new G4Material(name="Mylar", density, nel=3); Mylar->AddElement(elO,2); @@ -296,27 +159,18 @@ H2O->AddElement(elO, natoms=1); Mylar->AddElement(elH,4); // Silicon as detector material - density = 2.330*g/cm3; a = 28.09*g/mole; G4Material* Si = new G4Material(name="Silicon", z=14., a, density); if(Si); - // Krypton as detector gas, STP + // Krypton as detector gas, STP density = 3.700*mg/cm3 ; a = 83.80*g/mole ; G4Material* Kr = new G4Material(name="Kr",z=36., a, density ); - // Metane, STP - - // density = 0.7174*mg/cm3 ; - // G4Material* metane = new G4Material(name="CH4",density,nel=2) ; - // metane->AddElement(elC,1) ; - // metane->AddElement(elH,4) ; - // Dry air (average composition) - density = 1.7836*mg/cm3 ; // STP G4Material* Argon = new G4Material(name="Argon" , density, ncomponents=1); Argon->AddElement(elAr, 1); @@ -329,23 +183,20 @@ H2O->AddElement(elO, natoms=1); G4Material* Oxygen = new G4Material(name="O2" , density, ncomponents=1); Oxygen->AddElement(elO, 2); - density = 1.2928*mg/cm3 ; // STP G4Material* Air = new G4Material(name="Air" , density, ncomponents=3); Air->AddMaterial( Nitrogen, fractionmass = 0.7557 ) ; Air->AddMaterial( Oxygen, fractionmass = 0.2315 ) ; Air->AddMaterial( Argon, fractionmass = 0.0128 ) ; + /* ************** // 93% Kr + 7% CH4, STP - - // density = 3.491*mg/cm3 ; - // G4Material* Kr7CH4 = new G4Material(name="Kr7CH4" , density, - // ncomponents=2); - // Kr7CH4->AddMaterial( Kr, fractionmass = 0.986 ) ; - // Kr7CH4->AddMaterial( metane, fractionmass = 0.014 ) ; - - /* ************** + density = 3.491*mg/cm3 ; + G4Material* Kr7CH4 = new G4Material(name="Kr7CH4" , density, + ncomponents=2); + Kr7CH4->AddMaterial( Kr, fractionmass = 0.986 ) ; + Kr7CH4->AddMaterial( metane, fractionmass = 0.014 ) ; G4double TRT_Xe_density = 5.485*mg/cm3; G4Material* TRT_Xe = new G4Material(name="TRT_Xe", TRT_Xe_density, nel=1, @@ -377,36 +228,30 @@ H2O->AddElement(elO, natoms=1); *********** */ // Xenon as detector gas, STP - density = 5.858*mg/cm3 ; a = 131.29*g/mole ; G4Material* Xe = new G4Material(name="Xenon",z=54., a, density ); // Metane, STP - density = 0.7174*mg/cm3 ; G4Material* metane = new G4Material(name="CH4",density,nel=2) ; metane->AddElement(elC,1) ; metane->AddElement(elH,4) ; // C3H8,20 C, 2 atm - density = 3.758*mg/cm3 ; G4Material* C3H8 = new G4Material(name="C3H8",density,nel=2) ; C3H8->AddElement(elC,3) ; C3H8->AddElement(elH,8) ; // Propane, STP - density = 2.005*mg/cm3 ; G4Material* propane = new G4Material(name="propane",density,nel=2) ; propane->AddElement(elC,3) ; propane->AddElement(elH,8) ; // 87.5% Xe + 7.5% CH4 + 5% C3H8, 20 C, 1 atm - density = 4.9196*mg/cm3 ; - G4Material* XeCH4C3H8 = new G4Material(name="XeCH4C3H8" , density, ncomponents=3); XeCH4C3H8->AddMaterial( Xe, fractionmass = 0.971 ) ; @@ -414,37 +259,32 @@ H2O->AddElement(elO, natoms=1); XeCH4C3H8->AddMaterial( propane, fractionmass = 0.019 ) ; // 93% Ar + 7% CH4, STP - density = 1.709*mg/cm3 ; G4Material* Ar7CH4 = new G4Material(name="Ar7CH4", density, ncomponents=2); Ar7CH4->AddMaterial( Argon, fractionmass = 0.971 ) ; Ar7CH4->AddMaterial( metane, fractionmass = 0.029 ) ; // Carbon dioxide, STP - density = 1.977*mg/cm3; G4Material* CarbonDioxide = new G4Material(name="CO2", density, nel=2); CarbonDioxide->AddElement(elC,1); CarbonDioxide->AddElement(elO,2); // 80% Ar + 20% CO2, STP - -// density = 1.8223*mg/cm3 ; -// G4Material* Ar_80CO2_20 = new G4Material(name="ArCO2" , density, -// ncomponents=2); -// Ar_80CO2_20->AddMaterial( Argon, fractionmass = 0.783 ) ; -// Ar_80CO2_20->AddMaterial( CarbonDioxide, fractionmass = 0.217 ) ; + density = 1.8223*mg/cm3 ; + G4Material* Ar_80CO2_20 = new G4Material(name="ArCO2" , density, + ncomponents=2); + Ar_80CO2_20->AddMaterial( Argon, fractionmass = 0.783 ) ; + Ar_80CO2_20->AddMaterial( CarbonDioxide, fractionmass = 0.217 ) ; // 80% Xe + 20% CO2, STP - - // density = 5.0818*mg/cm3 ; - // G4Material* Xe20CO2 = new G4Material(name="Xe20CO2" , - // density, ncomponents=2); - // Xe20CO2->AddMaterial( Xe, fractionmass = 0.922 ) ; - // Xe20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.078 ) ; + density = 5.0818*mg/cm3 ; + G4Material* Xe20CO2 = new G4Material(name="Xe20CO2", density, + ncomponents=2); + Xe20CO2->AddMaterial( Xe, fractionmass = 0.922 ) ; + Xe20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.078 ) ; // 80% Kr + 20% CO2, STP - density = 3.601*mg/cm3 ; G4Material* Kr20CO2 = new G4Material(name="Kr20CO2" , density, ncomponents=2); @@ -482,11 +322,6 @@ G4VPhysicalVolume* Em8DetectorConstruction::ConstructCalorimeter() PrintCalorParameters(); // World - - // if(fSolidWorld) delete fSolidWorld ; - // if(fLogicWorld) delete fLogicWorld ; - // if(fPhysicsWorld) delete fPhysicsWorld ; - fSolidWorld = new G4Tubs("World", //its name 0.,fWorldSizeR,fWorldSizeZ/2.,0.,twopi) ;//its size @@ -506,18 +341,15 @@ G4VPhysicalVolume* Em8DetectorConstruction::ConstructCalorimeter() if (fAbsorberThickness > 0.) { - // if(fSolidAbsorber) delete fSolidAbsorber ; - // if(fLogicAbsorber) delete fLogicAbsorber ; - // if(fPhysicsAbsorber) delete fPhysicsAbsorber ; - fSolidAbsorber = new G4Tubs("Absorber", + fSolidAbsorber = new G4Tubs("Absorber", 0.,fAbsorberRadius,fAbsorberThickness/2.,0.,twopi); - fLogicAbsorber = new G4LogicalVolume(fSolidAbsorber, + fLogicAbsorber = new G4LogicalVolume(fSolidAbsorber, fAbsorberMaterial, "Absorber"); - fPhysicsAbsorber = new G4PVPlacement(0, + fPhysicsAbsorber = new G4PVPlacement(0, G4ThreeVector(0.,0.,fAbsorberZ), "Absorber", fLogicAbsorber, @@ -597,12 +429,14 @@ G4VPhysicalVolume* Em8DetectorConstruction::ConstructCalorimeter() void Em8DetectorConstruction::PrintCalorParameters() { G4cout << "\n The WORLD is made of " - << fWorldSizeZ/mm << "mm of " << fWorldMaterial->GetName() ; - G4cout << ", the transverse size (R) of the world is " << fWorldSizeR/mm << " mm. " << G4endl; + << fWorldSizeZ/mm << "mm of " << fWorldMaterial->GetName() ; + G4cout << ", the transverse size (R) of the world is " << fWorldSizeR/mm + << " mm. " << G4endl; G4cout << " The ABSORBER is made of " - << fAbsorberThickness/mm << "mm of " << fAbsorberMaterial->GetName() ; + << fAbsorberThickness/mm << "mm of " << fAbsorberMaterial->GetName() ; G4cout << ", the transverse size (R) is " << fAbsorberRadius/mm << " mm. " << G4endl; - G4cout << " Z position of the (middle of the) absorber " << fAbsorberZ/mm << " mm." << G4endl; + G4cout << " Z position of the (middle of the) absorber " + << fAbsorberZ/mm << " mm." << G4endl; G4cout << G4endl; } @@ -725,19 +559,3 @@ void Em8DetectorConstruction::UpdateGeometry() // //////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8DetectorMessenger.cc index 98ce46f018..b7d70b560e 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8DetectorMessenger.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: Em8DetectorMessenger.cc,v 1.7 2006/06/29 17:00:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: Em8DetectorMessenger.cc,v 1.8 2007/10/02 10:12:47 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -92,7 +92,6 @@ Em8DetectorMessenger::Em8DetectorMessenger(Em8DetectorConstruction * Em8Det) WorldRCmd->SetRange("WSizeR>0."); WorldRCmd->AvailableForStates(G4State_Idle); - ElectronCutCmd = new G4UIcmdWithADoubleAndUnit("/calor/setElectronCut",this); ElectronCutCmd->SetGuidance("Set electron cut in mm for vertex region"); ElectronCutCmd->SetParameterName("ElectronCut",false,false); @@ -100,7 +99,6 @@ Em8DetectorMessenger::Em8DetectorMessenger(Em8DetectorConstruction * Em8Det) ElectronCutCmd->SetRange("ElectronCut>0."); ElectronCutCmd->AvailableForStates(G4State_Idle); - PositronCutCmd = new G4UIcmdWithADoubleAndUnit("/calor/setPositronCut",this); PositronCutCmd->SetGuidance("Set positron cut in mm for vertex region"); PositronCutCmd->SetParameterName("PositronCut",false,false); @@ -108,14 +106,12 @@ Em8DetectorMessenger::Em8DetectorMessenger(Em8DetectorConstruction * Em8Det) PositronCutCmd->SetRange("PositronCut>0."); PositronCutCmd->AvailableForStates(G4State_Idle); - GammaCutCmd = new G4UIcmdWithADoubleAndUnit("/calor/setGammaCut",this); GammaCutCmd->SetGuidance("Set gamma cut in mm for vertex region"); GammaCutCmd->SetParameterName("GammaCut",false,false); GammaCutCmd->SetDefaultUnit("mm"); GammaCutCmd->SetRange("GammaCut>0."); GammaCutCmd->AvailableForStates(G4State_Idle); - UpdateCmd = new G4UIcmdWithoutParameter("/calor/update",this); UpdateCmd->SetGuidance("Update calorimeter geometry."); @@ -123,7 +119,6 @@ Em8DetectorMessenger::Em8DetectorMessenger(Em8DetectorConstruction * Em8Det) UpdateCmd->SetGuidance("if you changed geometrical value(s)."); UpdateCmd->AvailableForStates(G4State_Idle); - } ////////////////////////////////////////////////////////////////////////////// @@ -138,7 +133,9 @@ Em8DetectorMessenger::~Em8DetectorMessenger() delete WorldZCmd; delete WorldRCmd; delete UpdateCmd; - + delete GammaCutCmd; + delete PositronCutCmd; + delete ElectronCutCmd; delete Em8detDir; } diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8EventAction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8EventAction.cc index 771b9ac969..572db6f744 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8EventAction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8EventAction.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: Em8EventAction.cc,v 1.9 2006/06/29 17:00:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: Em8EventAction.cc,v 1.10 2007/11/12 10:54:49 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -222,6 +222,7 @@ void Em8EventAction::AddNeutral() void Em8EventAction::AddE() { NE += 1.; + Nch += 1.; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -229,6 +230,7 @@ void Em8EventAction::AddE() void Em8EventAction::AddP() { NP += 1.; + Nch += 1.; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8EventActionMessenger.cc index 563550c6de..990cb6271c 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8EventActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: Em8EventActionMessenger.cc,v 1.5 2006/06/29 17:00:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorAction.cc index 75e3531d08..ffd639cfe8 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: Em8PrimaryGeneratorAction.cc,v 1.7 2006/06/29 17:00:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorMessenger.cc index 057901d029..790bf36123 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: Em8PrimaryGeneratorMessenger.cc,v 1.5 2006/06/29 17:00:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8RunAction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8RunAction.cc index 6559b0d0ed..03a6dffb98 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8RunAction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8RunAction.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: Em8RunAction.cc,v 1.14 2006/06/29 17:00:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: Em8RunAction.cc,v 1.15 2007/11/12 10:54:49 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -275,8 +275,8 @@ void Em8RunAction::EndOfRunAction(const G4Run*) Transmitted /=TotNbofEvents ; Reflected /=TotNbofEvents ; - G4cout << " ================== run summary =====================" << G4endl; - G4int prec = G4cout.precision(6); + G4cout << " ================== run summary =====================" << G4endl; + G4int prec = G4cout.precision(6); G4cout << " end of Run TotNbofEvents = " << TotNbofEvents << G4endl ; G4cout << " mean charged track length in absorber=" << diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8RunMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8RunMessenger.cc index 7951e4f063..a946506979 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8RunMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8RunMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: Em8RunMessenger.cc,v 1.7 2006/06/29 17:00:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingAction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingAction.cc index 291f96dc23..ffe4d8f527 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingAction.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: Em8SteppingAction.cc,v 1.9 2006/06/29 17:00:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: Em8SteppingAction.cc,v 1.10 2007/11/12 10:54:49 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -33,18 +33,21 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... #include "Em8DetectorConstruction.hh" -#include "G4EnergyLossTables.hh" -#include "G4SteppingManager.hh" -#include "G4TrackVector.hh" +//#include "G4EnergyLossTables.hh" +//#include "G4SteppingManager.hh" +//#include "G4TrackVector.hh" #include "Em8SteppingAction.hh" #include "Em8PrimaryGeneratorAction.hh" #include "Em8EventAction.hh" #include "Em8RunAction.hh" #include "G4Event.hh" -#include "G4EventManager.hh" -#include "G4ios.hh" -#include -#include "G4UImanager.hh" +#include "G4Gamma.hh" +#include "G4Electron.hh" +#include "G4Positron.hh" +//#include "G4EventManager.hh" +//#include "G4ios.hh" +//#include +//#include "G4UImanager.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -64,142 +67,61 @@ Em8SteppingAction::~Em8SteppingAction() void Em8SteppingAction::UserSteppingAction(const G4Step* aStep) { + G4Track* track = aStep->GetTrack(); + G4int trackID = track->GetTrackID(); + G4int stepID = track->GetCurrentStepNumber(); + if(trackID == 1 && stepID == 1) + runaction->Fillvertexz(track->GetVertexPosition().z()); - G4double Theta,Thetaback,Ttrans,Tback,Tsec,Egamma,yend,zend,rend ; - // G4double Tkin, Edep, xend; - G4int evno = eventaction->GetEventno() ; + const G4ParticleDefinition* part = track->GetDynamicParticle()->GetDefinition(); + G4VPhysicalVolume* preVolume = aStep->GetPreStepPoint()->GetPhysicalVolume(); + G4VPhysicalVolume* postVolume = aStep->GetPostStepPoint()->GetPhysicalVolume(); + G4double ekin = track->GetKineticEnergy() ; - IDnow = evno+10000*(aStep->GetTrack()->GetTrackID())+ - 100000000*(aStep->GetTrack()->GetParentID()); - if(IDnow != IDold) - { - IDold=IDnow ; - if( - (((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> - GetParticleName()) == "e-") && - ((aStep->GetTrack()->GetTrackID() != 1) || - (aStep->GetTrack()->GetParentID() != 0)) ) - || - (((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> - GetParticleName()) == "e+") && - ((aStep->GetTrack()->GetTrackID() != 1) || - (aStep->GetTrack()->GetParentID() != 0)) ) - ) - runaction->Fillvertexz(aStep->GetTrack()->GetVertexPosition().x()); + // Secondary - first step + if(trackID != 1 && stepID == 1) { + if (part == G4Gamma::Gamma() ) { + eventaction->AddNeutral(); - if(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber") - { - if(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> - GetParticleName()) == "e-") && - ((aStep->GetTrack()->GetTrackID() != 1) || - (aStep->GetTrack()->GetParentID() != 0)) ) - { - eventaction->AddCharged() ; - eventaction->AddE() ; - Tsec = aStep->GetTrack()->GetKineticEnergy() ; // !!!!!!!!!!!! - Tsec += aStep->GetTotalEnergyDeposit() ; // !!!!!!!!!!!! - runaction->FillTsec(Tsec) ; - } - else - if(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> - GetParticleName()) == "e+") && - ((aStep->GetTrack()->GetTrackID() != 1) || - (aStep->GetTrack()->GetParentID() != 0)) ) - { - eventaction->AddCharged() ; - eventaction->AddP() ; - Tsec = aStep->GetTrack()->GetKineticEnergy() ; // !!!!!!!!!!!! - Tsec += aStep->GetTotalEnergyDeposit() ; // !!!!!!!!!!!! - runaction->FillTsec(Tsec) ; - } - else - if(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> - GetParticleName()) == "gamma") && - ((aStep->GetTrack()->GetTrackID() != 1) || - (aStep->GetTrack()->GetParentID() != 0)) ) - { - eventaction->AddNeutral() ; - } - } + } else if (part == G4Electron::Electron()) { + eventaction->AddE(); + runaction->FillTsec(ekin); + + } else if (part == G4Positron::Positron()) { + eventaction->AddP(); + runaction->FillTsec(ekin); + } } - if(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber") - { - if(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> - GetParticleName()) == "e-") - || - ((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> - GetParticleName()) == "e+")) - eventaction->CountStepsCharged() ; + // step inside absorber + if(preVolume == postVolume) { + if(preVolume->GetName() == "Absorber") { + if(part->GetPDGCharge() == 0.0) eventaction->CountStepsNeutral(); + else eventaction->CountStepsCharged(); + } + // exit of absorber + } else if (preVolume->GetName() == "Absorber") { - if ((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> - GetParticleName()) == "gamma") - eventaction->CountStepsNeutral() ; + // primary + if (trackID == 1) { + if (track->GetMomentumDirection().z()>0.) { + eventaction->SetTr(); + runaction->FillTh(track->GetMomentumDirection().theta()) ; + runaction->FillTt(ekin) ; + G4double xend= track->GetPosition().x() ; + G4double yend= track->GetPosition().y() ; + runaction->FillR(std::sqrt(xend*xend+yend*yend)); + } else { + eventaction->SetRef(); + runaction->FillThBack(track->GetMomentumDirection().theta() - 0.5*pi) ; + runaction->FillTb(ekin); + } + } + // transmitted gamma + if(track->GetMomentumDirection().z()>0. && part == G4Gamma::Gamma()) { + runaction->FillGammaSpectrum(ekin); + } } - - if ( - (((aStep->GetTrack()->GetTrackID() == 1) && - (aStep->GetTrack()->GetParentID()== 0)) || - (aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> - GetParticleName() == - Em8PrimaryGeneratorAction::GetPrimaryName())) - && - (aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber") - && - (aStep->GetTrack()->GetNextVolume()->GetName()=="World") && - (aStep->GetPostStepPoint()->GetProcessDefinedStep() - ->GetProcessName() == "Transportation") && - (aStep->GetTrack()->GetMomentumDirection().x()>0.) - ) - { - eventaction->SetTr(); - Theta = std::acos(aStep->GetTrack()->GetMomentumDirection().x()) ; - runaction->FillTh(Theta) ; - Ttrans = aStep->GetTrack()->GetKineticEnergy() ; - runaction->FillTt(Ttrans) ; - yend= aStep->GetTrack()->GetPosition().y() ; - zend= aStep->GetTrack()->GetPosition().z() ; - rend = std::sqrt(yend*yend+zend*zend) ; - runaction->FillR(rend); - } - - if ( - (((aStep->GetTrack()->GetTrackID() == 1) && - (aStep->GetTrack()->GetParentID()== 0)) || - (aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> - GetParticleName() == - Em8PrimaryGeneratorAction::GetPrimaryName())) - && - (aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber") && - (aStep->GetTrack()->GetNextVolume()->GetName()=="World") && - (aStep->GetPostStepPoint()->GetProcessDefinedStep() - ->GetProcessName() == "Transportation") && - (aStep->GetTrack()->GetMomentumDirection().z()<0.) - ) - { - eventaction->SetRef(); - Thetaback = std::acos(aStep->GetTrack()->GetMomentumDirection().x()) ; - Thetaback -= 0.5*pi ; - runaction->FillThBack(Thetaback) ; - Tback = aStep->GetTrack()->GetKineticEnergy() ; - runaction->FillTb(Tback) ; - } - - - if ( - ((aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber") && - (aStep->GetTrack()->GetNextVolume()->GetName()=="World") && - (aStep->GetPostStepPoint()->GetProcessDefinedStep() - ->GetProcessName() == "Transportation") && - (aStep->GetTrack()->GetMomentumDirection().x()>0.) && - (aStep->GetTrack()->GetDynamicParticle()->GetDefinition() - ->GetParticleName() == "gamma")) - ) - { - Egamma = aStep->GetTrack()->GetKineticEnergy() ; - runaction->FillGammaSpectrum(Egamma) ; - } - } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingVerbose.cc index c7f0dccdfa..f5f84ad7fe 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: Em8SteppingVerbose.cc,v 1.8 2006/06/29 17:00:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm8/src/PhysListEmModelPai.cc b/examples/extended/electromagnetic/TestEm8/src/PhysListEmModelPai.cc index 25815aca4c..e2c47d8979 100644 --- a/examples/extended/electromagnetic/TestEm8/src/PhysListEmModelPai.cc +++ b/examples/extended/electromagnetic/TestEm8/src/PhysListEmModelPai.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: PhysListEmModelPai.cc,v 1.4 2006/11/15 19:29:08 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysListEmModelPai.cc,v 1.5 2007/08/02 12:01:53 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -42,7 +42,6 @@ #include "G4eIonisation.hh" #include "G4PAIModel.hh" -#include "G4PAIPhotonModel.hh" #include "G4eBremsstrahlung.hh" #include "G4eplusAnnihilation.hh" @@ -96,14 +95,23 @@ void PhysListEmModelPai::ConstructProcess() pmanager->AddDiscreteProcess(new G4GammaConversion); } + else if (particleName == "e-") + { + pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); + + G4eIonisation* eion = new G4eIonisation(); + G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); + eion->AddEmModel(0,pai,pai,gas); + + pmanager->AddProcess(eion,-1, 2, 2); + pmanager->AddProcess(new G4eBremsstrahlung,-1,-1,3); + } else if (particleName == "e+") { pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); G4eIonisation* epion = new G4eIonisation(); - G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); - epion->AddEmModel(0,pai,pai,gas); pmanager->AddProcess(epion, -1, 2,2); @@ -116,61 +124,19 @@ void PhysListEmModelPai::ConstructProcess() pmanager->AddProcess(new G4MultipleScattering,-1, 1,1); G4MuIonisation* muion = new G4MuIonisation(); - G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); muion->AddEmModel(0,pai,pai,gas); - pmanager->AddProcess(muion, -1, 2,-2); + pmanager->AddProcess(muion, -1, 2, 2); pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1,3); - pmanager->AddProcess(new G4MuPairProduction, -1,-1,4); - + pmanager->AddProcess(new G4MuPairProduction, -1,-1,4); } else if (particleName == "GenericIon") { pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); pmanager->AddProcess(new G4ionIonisation, -1, 2,2); - - } - else if (particleName == "e-") - { - pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); - G4eIonisation* eion = new G4eIonisation(); - - G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); - - eion->AddEmModel(0,pai,pai,gas); - - pmanager->AddProcess(eion,-1, 2, 2); - - pmanager->AddProcess(new G4eBremsstrahlung,-1,1,3); - - } - else if ( particleName == "proton" ) - { - - pmanager->AddProcess(new G4MultipleScattering,-1,1,1); - - G4hIonisation* pion = new G4hIonisation(); - G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); - pion->AddEmModel(0,pai,pai,gas); - - pmanager->AddProcess(pion, -1,2,2); - } - else if ( particleName == "pi+" ) - { - - pmanager->AddProcess(new G4MultipleScattering,-1,1,1); - - G4hIonisation* pion = new G4hIonisation(); - - G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); - - pion->AddEmModel(0,pai,pai,gas); - - pmanager->AddProcess(pion, -1,2,2); - } - else if ( ( !particle->IsShortLived() ) && + } else if ( ( !particle->IsShortLived() ) && ( particle->GetPDGCharge() != 0.0 ) && ( particle->GetParticleName() != "chargedgeantino") ) { @@ -178,9 +144,7 @@ void PhysListEmModelPai::ConstructProcess() pmanager->AddProcess(new G4MultipleScattering,-1,1,1); G4hIonisation* hion = new G4hIonisation(); - G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); - hion->AddEmModel(0,pai,pai,gas); pmanager->AddProcess(hion, -1,2,2); diff --git a/examples/extended/electromagnetic/TestEm8/src/PhysListEmPAI.cc b/examples/extended/electromagnetic/TestEm8/src/PhysListEmPAI.cc index 95e913416d..cb78e824b7 100644 --- a/examples/extended/electromagnetic/TestEm8/src/PhysListEmPAI.cc +++ b/examples/extended/electromagnetic/TestEm8/src/PhysListEmPAI.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: PhysListEmPAI.cc,v 1.2 2006/06/29 17:00:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysListEmPAI.cc,v 1.3 2007/09/26 10:23:17 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -42,8 +42,6 @@ #include "G4eIonisation.hh" #include "G4PAIModel.hh" -#include "G4PAIPhotonModel.hh" -//#include "G4PAIwithPhotons.hh" #include "G4eBremsstrahlung.hh" #include "G4eplusAnnihilation.hh" @@ -99,23 +97,22 @@ void PhysListEmPAI::ConstructProcess() pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); G4eIonisation* eion = new G4eIonisation(); - - G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); - //G4PAIPhotonModel* pai = new G4PAIPhotonModel(particle,"PAIModel"); - // G4PAIwithPhotons* pai = new G4PAIwithPhotons(particle,"PAIwPhotons"); eion->AddEmModel(0,pai,pai,gas); pmanager->AddProcess(eion,-1, 2,2); - - pmanager->AddProcess(new G4eBremsstrahlung,-1,1,3); - + pmanager->AddProcess(new G4eBremsstrahlung,-1,3,3); } else if (particleName == "e+") { pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); - pmanager->AddProcess(new G4eIonisation, -1, 2,2); - pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,3); + + G4eIonisation* eion = new G4eIonisation(); + G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); + eion->AddEmModel(0,pai,pai,gas); + + pmanager->AddProcess(eion,-1, 2,2); + pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4); } else if( particleName == "mu+" || @@ -124,14 +121,12 @@ void PhysListEmPAI::ConstructProcess() pmanager->AddProcess(new G4MultipleScattering,-1, 1,1); G4MuIonisation* muion = new G4MuIonisation(); - G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); - // G4PAIwithPhotons* pai = new G4PAIwithPhotons(particle,"PAIwPhotons"); muion->AddEmModel(0,pai,pai,gas); - pmanager->AddProcess(muion, -1, 2,-2); - pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1,3); - pmanager->AddProcess(new G4MuPairProduction, -1,-1,4); + pmanager->AddProcess(muion, -1, 2, 2); + pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3); + pmanager->AddProcess(new G4MuPairProduction, -1, 3,4); } else if (particleName == "GenericIon") @@ -140,31 +135,15 @@ void PhysListEmPAI::ConstructProcess() pmanager->AddProcess(new G4ionIonisation, -1, 2,2); } - else if ( particleName == "proton" ) - { - - pmanager->AddProcess(new G4MultipleScattering,-1,1,1); - - G4hIonisation* pion = new G4hIonisation(); - G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); - //G4PAIPhotonModel* pai = new G4PAIPhotonModel(particle,"PAIModel"); - // G4PAIwithPhotons* pai = new G4PAIwithPhotons(particle,"PAIwPhotons"); - pion->AddEmModel(0,pai,pai,gas); - - pmanager->AddProcess(pion, -1,2,2); - } else if ( ( !particle->IsShortLived() ) && ( particle->GetPDGCharge() != 0.0 ) && ( particle->GetParticleName() != "chargedgeantino") ) { - pmanager->AddProcess(new G4MultipleScattering,-1,1,1); G4hIonisation* hion = new G4hIonisation(); - - // G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); - // G4PAIwithPhotons* pai = new G4PAIwithPhotons(particle,"PAIwPhotons"); - // hion->AddEmModel(0,pai,pai,gas); + G4PAIModel* pai = new G4PAIModel(particle,"PAIModel"); + hion->AddEmModel(0,pai,pai,gas); pmanager->AddProcess(hion, -1,2,2); } diff --git a/examples/extended/electromagnetic/TestEm8/src/PhysListEmPaiPhoton.cc b/examples/extended/electromagnetic/TestEm8/src/PhysListEmPaiPhoton.cc index 92978ee7d0..95d985f0a9 100644 --- a/examples/extended/electromagnetic/TestEm8/src/PhysListEmPaiPhoton.cc +++ b/examples/extended/electromagnetic/TestEm8/src/PhysListEmPaiPhoton.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: PhysListEmPaiPhoton.cc,v 1.3 2006/06/29 17:00:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysListEmPaiPhoton.cc,v 1.5 2007/09/26 10:23:17 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -41,7 +41,6 @@ #include "G4MultipleScattering.hh" #include "G4eIonisation.hh" -#include "G4PAIModel.hh" #include "G4PAIPhotonModel.hh" #include "G4eBremsstrahlung.hh" @@ -95,11 +94,28 @@ void PhysListEmPaiPhoton::ConstructProcess() pmanager->AddDiscreteProcess(new G4ComptonScattering); pmanager->AddDiscreteProcess(new G4GammaConversion); + } + else if (particleName == "e-") + { + pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); + + G4eIonisation* eion = new G4eIonisation(); + G4PAIPhotonModel* pai = new G4PAIPhotonModel(particle,"PAIModel"); + eion->AddEmModel(0,pai,pai,gas); + + pmanager->AddProcess(eion,-1, 2, 2); + pmanager->AddProcess(new G4eBremsstrahlung,-1,-1,3); + } else if (particleName == "e+") { pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); - pmanager->AddProcess(new G4eIonisation, -1, 2,2); + + G4eIonisation* eion = new G4eIonisation(); + G4PAIPhotonModel* pai = new G4PAIPhotonModel(particle,"PAIModel"); + eion->AddEmModel(0,pai,pai,gas); + + pmanager->AddProcess(eion, -1, 2,2); pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,3); pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4); @@ -109,12 +125,10 @@ void PhysListEmPaiPhoton::ConstructProcess() pmanager->AddProcess(new G4MultipleScattering,-1, 1,1); G4MuIonisation* muion = new G4MuIonisation(); - - G4PAIPhotonModel* pai = new G4PAIPhotonModel(particle,"PAIModel"); - + G4PAIPhotonModel* pai = new G4PAIPhotonModel(particle,"PAIModel"); muion->AddEmModel(0,pai,pai,gas); - pmanager->AddProcess(muion, -1, 2,-2); + pmanager->AddProcess(muion, -1, 2, 2); pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1,3); pmanager->AddProcess(new G4MuPairProduction, -1,-1,4); @@ -122,58 +136,15 @@ void PhysListEmPaiPhoton::ConstructProcess() else if (particleName == "GenericIon") { pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); - pmanager->AddProcess(new G4ionIonisation, -1, 2,2); - - } - else if (particleName == "e-") - { - pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); - - G4eIonisation* eion = new G4eIonisation(); - - - G4PAIPhotonModel* pai = new G4PAIPhotonModel(particle,"PAIModel"); - - eion->AddEmModel(0,pai,pai,gas); - - pmanager->AddProcess(eion,-1, 2, 2); - - pmanager->AddProcess(new G4eBremsstrahlung,-1,1,3); - - } - else if ( particleName == "proton" ) - { - - pmanager->AddProcess(new G4MultipleScattering,-1,1,1); - - G4hIonisation* pion = new G4hIonisation(); - G4PAIPhotonModel* pai = new G4PAIPhotonModel(particle,"PAIModel"); - pion->AddEmModel(0,pai,pai,gas); - - pmanager->AddProcess(pion, -1,2,2); - } - else if ( particleName == "pi+" ) - { - - pmanager->AddProcess(new G4MultipleScattering,-1,1,1); - - G4hIonisation* pion = new G4hIonisation(); - - G4PAIPhotonModel* pai = new G4PAIPhotonModel(particle,"PAIModel"); - - pion->AddEmModel(0,pai,pai,gas); - - pmanager->AddProcess(pion, -1,2,2); + pmanager->AddProcess(new G4ionIonisation, -1, 2,2); } else if ( ( !particle->IsShortLived() ) && ( particle->GetPDGCharge() != 0.0 ) && ( particle->GetParticleName() != "chargedgeantino") ) { - pmanager->AddProcess(new G4MultipleScattering,-1,1,1); G4hIonisation* hion = new G4hIonisation(); - G4PAIPhotonModel* pai = new G4PAIPhotonModel(particle,"PAIModel"); hion->AddEmModel(0,pai,pai,gas); diff --git a/examples/extended/electromagnetic/TestEm8/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm8/src/PhysicsList.cc index 308b982d70..96ef78ef48 100644 --- a/examples/extended/electromagnetic/TestEm8/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm8/src/PhysicsList.cc @@ -24,9 +24,8 @@ // ******************************************************************** // // - -// $Id: PhysicsList.cc,v 1.9 2006/12/13 15:42:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.cc,v 1.14 2007/09/26 10:23:17 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -35,13 +34,11 @@ #include "PhysicsList.hh" #include "PhysicsListMessenger.hh" -#include "PhysListParticles.hh" -#include "PhysListGeneral.hh" -#include "PhysListEmStandard.hh" +#include "G4EmStandardPhysics.hh" +#include "G4DecayPhysics.hh" #include "PhysListEmModelPai.hh" #include "PhysListEmPaiPhoton.hh" - #include "PhysListEmPAI.hh" #include "G4Gamma.hh" @@ -51,6 +48,12 @@ #include "G4UnitsTable.hh" #include "G4LossTableManager.hh" +#include "StepMax.hh" + +#include "G4ProcessManager.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... PhysicsList::PhysicsList() : G4VModularPhysicsList() @@ -67,15 +70,12 @@ PhysicsList::PhysicsList() : G4VModularPhysicsList() SetVerboseLevel(1); - // Particles - particleList = new PhysListParticles("particles"); - - // General Physics - generalPhysicsList = new PhysListGeneral("general"); + // Decay Physics is always defined + generalPhysicsList = new G4DecayPhysics(); // EM physics - emName = G4String("standard"); - emPhysicsList = new PhysListEmStandard(emName); + emName = G4String("emstandard"); + emPhysicsList = new G4EmStandardPhysics(); } @@ -87,13 +87,14 @@ PhysicsList::~PhysicsList() delete generalPhysicsList; delete emPhysicsList; for(size_t i=0; iConstructParticle(); + generalPhysicsList->ConstructParticle(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -101,8 +102,8 @@ void PhysicsList::ConstructParticle() void PhysicsList::ConstructProcess() { AddTransportation(); - generalPhysicsList->ConstructProcess(); emPhysicsList->ConstructProcess(); + generalPhysicsList->ConstructProcess(); for(size_t i=0; iConstructProcess(); AddStepMax(); } @@ -117,15 +118,7 @@ void PhysicsList::AddPhysicsList(const G4String& name) if (name == emName) return; - if (name == "standard") - { - emName = name; - delete emPhysicsList; - emPhysicsList = new PhysListEmStandard(name); - G4cout<<"PhysListEmStandard is called"<" @@ -149,14 +149,6 @@ void PhysicsList::AddPhysicsList(const G4String& name) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -#include "StepMax.hh" - -#include "G4ProcessManager.hh" -#include "G4ParticleTypes.hh" -#include "G4ParticleTable.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - void PhysicsList::AddStepMax() { // Step limitation seen as a process diff --git a/examples/extended/electromagnetic/TestEm8/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/PhysicsListMessenger.cc index d813dba599..68cac964dd 100644 --- a/examples/extended/electromagnetic/TestEm8/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/PhysicsListMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: PhysicsListMessenger.cc,v 1.2 2006/06/29 17:00:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/StepMax.cc b/examples/extended/electromagnetic/TestEm8/src/StepMax.cc index 9927e9b27f..b3d3fe8a23 100644 --- a/examples/extended/electromagnetic/TestEm8/src/StepMax.cc +++ b/examples/extended/electromagnetic/TestEm8/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.3 2006/06/29 17:00:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm8/src/StepMaxMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/StepMaxMessenger.cc index 7b3c0ee1ad..9a9a0d32a4 100644 --- a/examples/extended/electromagnetic/TestEm8/src/StepMaxMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.2 2006/06/29 17:00:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/GNUmakefile b/examples/extended/electromagnetic/TestEm9/GNUmakefile index 6010319551..f681fcfed4 100644 --- a/examples/extended/electromagnetic/TestEm9/GNUmakefile +++ b/examples/extended/electromagnetic/TestEm9/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.8 2006/10/26 15:50:35 maire Exp $ -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # -------------------------------------------------------------- # GNUmakefile for examples module with AIDA interface # -------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm9/History b/examples/extended/electromagnetic/TestEm9/History index 678776475a..7b9e0ad330 100644 --- a/examples/extended/electromagnetic/TestEm9/History +++ b/examples/extended/electromagnetic/TestEm9/History @@ -1,4 +1,4 @@ -$Id: History,v 1.43 2007/05/25 10:13:29 vnivanch Exp $ +$Id: History,v 1.44 2007/11/13 14:44:26 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,9 @@ track of all tags. ---------------------------------------------------------- +13-11-07 V.Ivant (testem9-V09-00-00) +- added PhysListEmStandardIG experimental PhysList + 25-05-07 V.Ivant (testem9-V08-03-03) - use standard names for histograms diff --git a/examples/extended/electromagnetic/TestEm9/TestEm9.cc b/examples/extended/electromagnetic/TestEm9/TestEm9.cc index e788ec95bd..a8872a7c5a 100644 --- a/examples/extended/electromagnetic/TestEm9/TestEm9.cc +++ b/examples/extended/electromagnetic/TestEm9/TestEm9.cc @@ -25,7 +25,7 @@ // // // $Id: TestEm9.cc,v 1.8 2006/11/17 17:45:05 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/TestEm9.in b/examples/extended/electromagnetic/TestEm9/TestEm9.in index 7bef90e758..3c8c6d67f2 100644 --- a/examples/extended/electromagnetic/TestEm9/TestEm9.in +++ b/examples/extended/electromagnetic/TestEm9/TestEm9.in @@ -1,5 +1,5 @@ # $Id: TestEm9.in,v 1.16 2007/05/17 15:23:04 vnivanch Exp $ -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # # Macro file for TestEm9 - Crystal Calorimeter # V.Ivanchenko diff --git a/examples/extended/electromagnetic/TestEm9/TestEm9.out b/examples/extended/electromagnetic/TestEm9/TestEm9.out index 209e29667c..1c2039efcc 100644 --- a/examples/extended/electromagnetic/TestEm9/TestEm9.out +++ b/examples/extended/electromagnetic/TestEm9/TestEm9.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -15,27 +15,27 @@ G4Material: Mean excitation energy is changed for G4_CESIUM_IODIDE Iold= 491.166 /run/verbose 1 #/tracking/verbose 1 # -# select EM PhysicsList +# select EM PhysicsList # -/testem/phys/addPhysics emstandard_opt1 +/testem/phys/addPhysics emstandard_opt1 PhysicsList::Set emstandard_opt1 EM physics # -/testem/phys/setCuts 0.3 mm +/testem/phys/setCuts 0.3 mm /testem/phys/VertexCuts 0.01 mm -/testem/phys/MuonCuts 10.0 mm -/testem/stepMax 100 mm +/testem/phys/MuonCuts 10.0 mm +/testem/stepMax 100 mm # -/testem/det/acceptance1 0.8271 0.02974 2.5 -/testem/det/acceptance9 0.9570 0.01286 2.5 +/testem/det/acceptance1 0.8271 0.02974 2.5 +/testem/det/acceptance9 0.9570 0.01286 2.5 /testem/det/acceptance25 0.9793 0.00884 2.5 # -#/process/eLoss/preciseRange true -#/process/eLoss/integral true +#/process/eLoss/preciseRange true +#/process/eLoss/integral true /run/initialize ***** Table : Nb of materials = 5 ***** - Material: G4_AIR density: 1.205 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 303.921 m + Material: G4_AIR density: 1.205 mg/cm3 RadL: 303.921 m Imean: 85.700 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: C (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ---> Isotope: C Z = 6 N = 12 A = 12.00 g/mole abundance: 98.93 % ---> Isotope: C Z = 6 N = 13 A = 13.00 g/mole abundance: 1.07 % ElmMassFraction: 0.01 % ElmAbundance 0.02 % @@ -51,24 +51,24 @@ PhysicsList::Set emstandard_opt1 EM physics ---> Isotope: Ar Z = 18 N = 38 A = 37.96 g/mole abundance: 0.06 % ---> Isotope: Ar Z = 18 N = 40 A = 39.96 g/mole abundance: 99.60 % ElmMassFraction: 1.28 % ElmAbundance 0.47 % - Material: G4_Al density: 2.699 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.896 cm + Material: G4_Al density: 2.699 g/cm3 RadL: 8.896 cm Imean: 166.000 eV ---> Element: Al (Al) Z = 13.0 N = 27.0 A = 26.98 g/mole ---> Isotope: Al Z = 13 N = 27 A = 26.98 g/mole abundance: 100.00 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_Si density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.366 cm + Material: G4_Si density: 2.330 g/cm3 RadL: 9.366 cm Imean: 173.000 eV ---> Element: Si (Si) Z = 14.0 N = 28.1 A = 28.09 g/mole ---> Isotope: Si Z = 14 N = 28 A = 27.98 g/mole abundance: 92.23 % ---> Isotope: Si Z = 14 N = 29 A = 28.98 g/mole abundance: 4.68 % ---> Isotope: Si Z = 14 N = 30 A = 29.97 g/mole abundance: 3.09 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_Fe density: 7.874 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.757 cm + Material: G4_Fe density: 7.874 g/cm3 RadL: 1.757 cm Imean: 286.000 eV ---> Element: Fe (Fe) Z = 26.0 N = 55.9 A = 55.85 g/mole ---> Isotope: Fe Z = 26 N = 54 A = 53.94 g/mole abundance: 5.84 % ---> Isotope: Fe Z = 26 N = 56 A = 55.93 g/mole abundance: 91.75 % ---> Isotope: Fe Z = 26 N = 57 A = 56.94 g/mole abundance: 2.12 % ---> Isotope: Fe Z = 26 N = 58 A = 57.93 g/mole abundance: 0.28 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_CESIUM_IODIDE density: 4.510 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.860 cm + Material: G4_CESIUM_IODIDE density: 4.510 g/cm3 RadL: 1.860 cm Imean: 553.100 eV ---> Element: I (I) Z = 53.0 N = 127.0 A = 126.90 g/mole ---> Isotope: I Z = 53 N = 127 A = 126.90 g/mole abundance: 100.00 % ElmMassFraction: 48.85 % ElmAbundance 50.00 % ---> Element: Cs (Cs) Z = 55.0 N = 133.0 A = 132.91 g/mole @@ -83,8 +83,8 @@ PhysicsList: world cuts are set cutG= 0.3 mm cutE= 0.3 mm Vertex cuts are set Muon cuts are set # -#/testem/histo/fileName e_pr.root -#/testem/histo/fileType root +#/testem/histo/fileName e_pr.root +#/testem/histo/fileType root /gun/particle e- /gun/energy 1 GeV /run/beamOn 100 @@ -112,7 +112,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.8, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.8, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -125,7 +125,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.8, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.8, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -148,7 +148,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for GenericIon LateralDisplacementFlag= 0 Skin= 0 @@ -162,7 +162,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -170,7 +170,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -182,7 +182,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -199,7 +199,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -217,7 +217,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -230,7 +230,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -298,33 +298,33 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=81.22s Real=81.31s Sys=0s + User=84.54s Real=84.56s Sys=0s RunAction: End of run actions are started HistoManager: End of run actions are started ================================================================= Number of events 100 -Average number of e- 1318 -Average number of gamma 699.4 -Average number of e+ 48.33 -Average number of steps 3975 -Edep 1x1 = 0.8349 +- 0.003051 res= 3.655 % -Edep 3x3 = 0.9574 +- 0.001213 res= 1.267 % -Edep 5x5 = 0.9795 +- 0.0007431 res= 0.7587 % +Average number of e- 1315 +Average number of gamma 697.1 +Average number of e+ 48.38 +Average number of steps 3966 +Edep 1x1 = 0.8299 +- 0.00282 res= 3.398 % +Edep 3x3 = 0.9584 +- 0.001213 res= 1.265 % +Edep 5x5 = 0.9797 +- 0.0007927 res= 0.8091 % =========== Mean values without trancating ===================== -Edep 1x1 = 0.8309 +- 0.003579 res= 4.307 % -Edep 3x3 = 0.9559 +- 0.001677 res= 1.754 % -Edep 5x5 = 0.978 +- 0.001364 res= 1.395 % +Edep 1x1 = 0.8291 +- 0.002911 res= 3.511 % +Edep 3x3 = 0.9576 +- 0.001329 res= 1.388 % +Edep 5x5 = 0.9783 +- 0.001096 res= 1.12 % ================================================================== <<<<>>>> 100 events for Crystal Calorimeter -Edep1x1: 0.8349 delEdep1x1= 0.007834 nrms= 2.634 -Erms1x1: 0.03051 delErms1x1= 0.0007728 nrms= 0.2599 -Edep3x3: 0.9574 delEdep3x3= 0.0004009 nrms= 0.3117 -Erms3x3: 0.01213 delErms3x3= -0.000728 nrms= -0.5661 -Edep5x5: 0.9795 delEdep5x5= 0.0001678 nrms= 0.1898 -Erms5x5: 0.007431 delErms5x5= -0.001409 nrms= -1.594 -<<<<>>>> IS NOT ACCEPTED +Edep1x1: 0.8299 delEdep1x1= 0.002762 nrms= 0.9287 +Erms1x1: 0.0282 delErms1x1= -0.001543 nrms= -0.5188 +Edep3x3: 0.9584 delEdep3x3= 0.001382 nrms= 1.075 +Erms3x3: 0.01213 delErms3x3= -0.000732 nrms= -0.5692 +Edep5x5: 0.9797 delEdep5x5= 0.0004336 nrms= 0.4905 +Erms5x5: 0.007927 delErms5x5= -0.0009134 nrms= -1.033 +<<<<>>>> IS ACCEPTED # G4 kernel has come to Quit state. diff --git a/examples/extended/electromagnetic/TestEm9/csi.mac b/examples/extended/electromagnetic/TestEm9/csi.mac index d9cdd8b7d2..6454dbc5a9 100644 --- a/examples/extended/electromagnetic/TestEm9/csi.mac +++ b/examples/extended/electromagnetic/TestEm9/csi.mac @@ -1,5 +1,5 @@ # $Id: csi.mac,v 1.4 2006/10/26 15:50:35 maire Exp $ -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # # Macro file for TestEm9 - Crystal Calorimeter # V.Ivanchenko diff --git a/examples/extended/electromagnetic/TestEm9/include/DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm9/include/DetectorConstruction.hh index 1c70d12ccf..7d337132da 100644 --- a/examples/extended/electromagnetic/TestEm9/include/DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm9/include/DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: DetectorConstruction.hh,v 1.5 2006/06/29 17:00:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm9/include/DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm9/include/DetectorMessenger.hh index 5278272bab..fb89ea3f95 100644 --- a/examples/extended/electromagnetic/TestEm9/include/DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm9/include/DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: DetectorMessenger.hh,v 1.4 2006/06/29 17:00:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm9/include/EmAcceptance.hh b/examples/extended/electromagnetic/TestEm9/include/EmAcceptance.hh index a25f2dc10b..2b39174026 100644 --- a/examples/extended/electromagnetic/TestEm9/include/EmAcceptance.hh +++ b/examples/extended/electromagnetic/TestEm9/include/EmAcceptance.hh @@ -25,7 +25,7 @@ // // // $Id: EmAcceptance.hh,v 1.2 2006/06/29 17:01:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm9/include/EventAction.hh b/examples/extended/electromagnetic/TestEm9/include/EventAction.hh index 5b93155881..8ee0b1ab11 100644 --- a/examples/extended/electromagnetic/TestEm9/include/EventAction.hh +++ b/examples/extended/electromagnetic/TestEm9/include/EventAction.hh @@ -27,7 +27,7 @@ #define EventAction_h 1 // $Id: EventAction.hh,v 1.3 2006/06/29 17:01:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm9/include/EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm9/include/EventActionMessenger.hh index bbd5b6ca10..c7451880aa 100644 --- a/examples/extended/electromagnetic/TestEm9/include/EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm9/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.3 2006/06/29 17:01:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/include/Histo.hh b/examples/extended/electromagnetic/TestEm9/include/Histo.hh index 2782a25573..c24d62f327 100644 --- a/examples/extended/electromagnetic/TestEm9/include/Histo.hh +++ b/examples/extended/electromagnetic/TestEm9/include/Histo.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: Histo.hh,v 1.5 2007/05/24 13:17:41 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef Histo_h #define Histo_h 1 diff --git a/examples/extended/electromagnetic/TestEm9/include/HistoManager.hh b/examples/extended/electromagnetic/TestEm9/include/HistoManager.hh index ab8f6a6dfd..38d0bd34b3 100644 --- a/examples/extended/electromagnetic/TestEm9/include/HistoManager.hh +++ b/examples/extended/electromagnetic/TestEm9/include/HistoManager.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HistoManager.hh,v 1.8 2007/04/24 14:20:04 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef HistoManager_h #define HistoManager_h 1 diff --git a/examples/extended/electromagnetic/TestEm9/include/HistoMessenger.hh b/examples/extended/electromagnetic/TestEm9/include/HistoMessenger.hh index 2513bc9c48..6a727005ba 100644 --- a/examples/extended/electromagnetic/TestEm9/include/HistoMessenger.hh +++ b/examples/extended/electromagnetic/TestEm9/include/HistoMessenger.hh @@ -26,7 +26,7 @@ // // $Id: HistoMessenger.hh,v 1.3 2006/06/29 17:01:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm9/include/PhysListEmLivermore.hh b/examples/extended/electromagnetic/TestEm9/include/PhysListEmLivermore.hh index 8bdd44257b..c246be3c43 100644 --- a/examples/extended/electromagnetic/TestEm9/include/PhysListEmLivermore.hh +++ b/examples/extended/electromagnetic/TestEm9/include/PhysListEmLivermore.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.hh,v 1.1 2006/11/17 17:45:57 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/include/PhysListEmPenelope.hh b/examples/extended/electromagnetic/TestEm9/include/PhysListEmPenelope.hh index 90900fdf7e..8d77ac0e8a 100644 --- a/examples/extended/electromagnetic/TestEm9/include/PhysListEmPenelope.hh +++ b/examples/extended/electromagnetic/TestEm9/include/PhysListEmPenelope.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.hh,v 1.1 2006/11/17 17:45:57 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/include/PhysListEmStandard.hh b/examples/extended/electromagnetic/TestEm9/include/PhysListEmStandard.hh index d3af8803db..6ec40be2fa 100644 --- a/examples/extended/electromagnetic/TestEm9/include/PhysListEmStandard.hh +++ b/examples/extended/electromagnetic/TestEm9/include/PhysListEmStandard.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.hh,v 1.3 2006/06/29 17:02:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/include/PhysListEmStandardIG.hh b/examples/extended/electromagnetic/TestEm9/include/PhysListEmStandardIG.hh new file mode 100644 index 0000000000..21e1f410e6 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm9/include/PhysListEmStandardIG.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * 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: PhysListEmStandardIG.hh,v 1.1 2007/11/13 14:44:26 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef PhysListEmStandardIG_h +#define PhysListEmStandardIG_h 1 + +#include "G4VPhysicsConstructor.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class PhysListEmStandardIG : public G4VPhysicsConstructor +{ +public: + PhysListEmStandardIG(const G4String& name = "standardIG"); + virtual ~PhysListEmStandardIG(); + +public: + // 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 + void ConstructProcess(); +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + + + + + + + + diff --git a/examples/extended/electromagnetic/TestEm9/include/PhysicsList.hh b/examples/extended/electromagnetic/TestEm9/include/PhysicsList.hh index fee1ad588d..47fdd54f00 100644 --- a/examples/extended/electromagnetic/TestEm9/include/PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm9/include/PhysicsList.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsList.hh,v 1.5 2006/11/17 17:03:26 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/examples/extended/electromagnetic/TestEm9/include/PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm9/include/PhysicsListMessenger.hh index 7753d7c9fe..6d036c3037 100644 --- a/examples/extended/electromagnetic/TestEm9/include/PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm9/include/PhysicsListMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsListMessenger.hh,v 1.4 2006/06/29 17:02:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm9/include/PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm9/include/PrimaryGeneratorAction.hh index 0b44b2187b..bfa387a104 100644 --- a/examples/extended/electromagnetic/TestEm9/include/PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm9/include/PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: PrimaryGeneratorAction.hh,v 1.3 2006/06/29 17:02:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm9/include/StepMax.hh b/examples/extended/electromagnetic/TestEm9/include/StepMax.hh index 0a38b1d597..7ef5b91f32 100644 --- a/examples/extended/electromagnetic/TestEm9/include/StepMax.hh +++ b/examples/extended/electromagnetic/TestEm9/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.3 2006/06/29 17:02:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/include/StepMaxMessenger.hh b/examples/extended/electromagnetic/TestEm9/include/StepMaxMessenger.hh index 9f17049d89..a64c084e32 100644 --- a/examples/extended/electromagnetic/TestEm9/include/StepMaxMessenger.hh +++ b/examples/extended/electromagnetic/TestEm9/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.3 2006/06/29 17:02:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/include/SteppingAction.hh b/examples/extended/electromagnetic/TestEm9/include/SteppingAction.hh index 0b56bdb7b8..b3f698f512 100644 --- a/examples/extended/electromagnetic/TestEm9/include/SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm9/include/SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: SteppingAction.hh,v 1.3 2006/06/29 17:02:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm9/src/DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm9/src/DetectorConstruction.cc index d962342b5b..3006f5c63f 100644 --- a/examples/extended/electromagnetic/TestEm9/src/DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm9/src/DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: DetectorConstruction.cc,v 1.9 2006/06/29 17:02:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm9/src/DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm9/src/DetectorMessenger.cc index c24e89953f..4d82a552c7 100644 --- a/examples/extended/electromagnetic/TestEm9/src/DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm9/src/DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: DetectorMessenger.cc,v 1.3 2006/06/29 17:03:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm9/src/EmAcceptance.cc b/examples/extended/electromagnetic/TestEm9/src/EmAcceptance.cc index 9c8aa6aa1b..1b9752f883 100644 --- a/examples/extended/electromagnetic/TestEm9/src/EmAcceptance.cc +++ b/examples/extended/electromagnetic/TestEm9/src/EmAcceptance.cc @@ -25,7 +25,7 @@ // // // $Id: EmAcceptance.cc,v 1.4 2006/06/29 17:03:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm9/src/EventAction.cc b/examples/extended/electromagnetic/TestEm9/src/EventAction.cc index 46cc7d0c76..dab3ac6a5b 100644 --- a/examples/extended/electromagnetic/TestEm9/src/EventAction.cc +++ b/examples/extended/electromagnetic/TestEm9/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.4 2006/06/29 17:03:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm9/src/EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm9/src/EventActionMessenger.cc index 5c22745bdc..5ac0c4f6d1 100644 --- a/examples/extended/electromagnetic/TestEm9/src/EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm9/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.3 2006/06/29 17:03:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/src/HistoMessenger.cc b/examples/extended/electromagnetic/TestEm9/src/HistoMessenger.cc index c1f7ce9184..f7238968f8 100644 --- a/examples/extended/electromagnetic/TestEm9/src/HistoMessenger.cc +++ b/examples/extended/electromagnetic/TestEm9/src/HistoMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: HistoMessenger.cc,v 1.6 2006/06/29 17:03:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/src/PhysListEmLivermore.cc b/examples/extended/electromagnetic/TestEm9/src/PhysListEmLivermore.cc index a2177f2256..d87b808c53 100644 --- a/examples/extended/electromagnetic/TestEm9/src/PhysListEmLivermore.cc +++ b/examples/extended/electromagnetic/TestEm9/src/PhysListEmLivermore.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.cc,v 1.2 2007/01/08 16:29:42 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/src/PhysListEmPenelope.cc b/examples/extended/electromagnetic/TestEm9/src/PhysListEmPenelope.cc index b3e3c81cf2..1eb7502892 100644 --- a/examples/extended/electromagnetic/TestEm9/src/PhysListEmPenelope.cc +++ b/examples/extended/electromagnetic/TestEm9/src/PhysListEmPenelope.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.cc,v 1.1 2006/11/17 17:45:57 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/src/PhysListEmStandard.cc b/examples/extended/electromagnetic/TestEm9/src/PhysListEmStandard.cc index fab9e412a5..882e981901 100644 --- a/examples/extended/electromagnetic/TestEm9/src/PhysListEmStandard.cc +++ b/examples/extended/electromagnetic/TestEm9/src/PhysListEmStandard.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmStandard.cc,v 1.8 2006/11/22 19:09:12 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/src/PhysListEmStandardIG.cc b/examples/extended/electromagnetic/TestEm9/src/PhysListEmStandardIG.cc new file mode 100644 index 0000000000..fbff84d9f3 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm9/src/PhysListEmStandardIG.cc @@ -0,0 +1,154 @@ +// +// ******************************************************************** +// * 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: PhysListEmStandardIG.cc,v 1.1 2007/11/13 14:44:26 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "PhysListEmStandardIG.hh" +#include "G4ParticleDefinition.hh" +#include "G4ProcessManager.hh" + +#include "G4ComptonScattering.hh" +#include "G4GammaConversion.hh" +#include "G4PhotoElectricEffect.hh" + +#include "G4MultipleScattering.hh" +#include "G4hMultipleScattering.hh" +#include "G4MuMultipleScattering.hh" + +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +#include "G4MuIonisation.hh" +#include "G4MuBremsstrahlung.hh" +#include "G4MuPairProduction.hh" + +#include "G4hIonisation.hh" +#include "G4ionGasIonisation.hh" +#include "G4CoulombScattering.hh" + +#include "G4EmProcessOptions.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PhysListEmStandardIG::PhysListEmStandardIG(const G4String& name) + : G4VPhysicsConstructor(name) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PhysListEmStandardIG::~PhysListEmStandardIG() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void PhysListEmStandardIG::ConstructProcess() +{ + G4double thetamin = 0.05; + + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + 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 G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4eIonisation, -1, 2,2); + pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + + } else if (particleName == "e+") { + //positron + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4eIonisation, -1, 2,2); + pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); + pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + + } else if (particleName == "mu+" || + particleName == "mu-" ) { + //muon + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4MuIonisation, -1, 2,2); + pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3); + pmanager->AddProcess(new G4MuPairProduction, -1, 4,4); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + + } else if (particleName == "alpha" || particleName == "He3") { + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4ionGasIonisation, -1, 2,2); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + // pmanager->AddDiscreteProcess(nucr); + + } else if (particleName == "GenericIon" ) { + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4ionGasIonisation, -1, 2,2); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + cs->SetBuildTableFlag(false); + pmanager->AddDiscreteProcess(cs); + + } else if ((!particle->IsShortLived()) && + (particle->GetPDGCharge() != 0.0) && + (particle->GetParticleName() != "chargedgeantino")) { + //all others charged particles except geantino + pmanager->AddProcess(new G4MuMultipleScattering(thetamin), -1, 1,1); + pmanager->AddProcess(new G4hIonisation, -1, 2,2); + G4CoulombScattering* cs = new G4CoulombScattering(); + cs->SetThetaMin(thetamin); + pmanager->AddDiscreteProcess(cs); + } + } + G4EmProcessOptions opt; + opt.SetSubCutoff(true); + opt.SetMinEnergy(0.1*keV); + opt.SetMaxEnergy(100.*GeV); + opt.SetDEDXBinning(360); + opt.SetLambdaBinning(360); + opt.SetLinearLossLimit(1.e-6); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/electromagnetic/TestEm9/src/PhysicsList.cc b/examples/extended/electromagnetic/TestEm9/src/PhysicsList.cc index c0e48d748e..3098c3eecc 100644 --- a/examples/extended/electromagnetic/TestEm9/src/PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm9/src/PhysicsList.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysicsList.cc,v 1.18 2007/05/16 13:21:07 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.cc,v 1.19 2007/11/13 14:44:26 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -45,6 +45,7 @@ #include "PhysicsListMessenger.hh" #include "PhysListEmStandard.hh" +#include "PhysListEmStandardIG.hh" #include "G4EmStandardPhysics.hh" #include "G4EmStandardPhysics_option1.hh" #include "G4EmStandardPhysics_option2.hh" @@ -178,6 +179,13 @@ void PhysicsList::AddPhysicsList(const G4String& name) if (verboseLevel > 0) G4cout << "PhysicsList::Set " << name << " EM physics" << G4endl; + } else if (name == "standardIG") { + emName = name; + delete emPhysicsList; + emPhysicsList = new PhysListEmStandardIG(); + if (verboseLevel > 0) + G4cout << "PhysicsList::Set StandardIG EM physics" << G4endl; + } else if (name == "livermore") { emName = name; delete emPhysicsList; diff --git a/examples/extended/electromagnetic/TestEm9/src/PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm9/src/PhysicsListMessenger.cc index 8162e08e19..bc87337a3c 100644 --- a/examples/extended/electromagnetic/TestEm9/src/PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm9/src/PhysicsListMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: PhysicsListMessenger.cc,v 1.3 2006/06/29 17:03:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/electromagnetic/TestEm9/src/PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm9/src/PrimaryGeneratorAction.cc index 1ecbdb3f64..8736e289ab 100644 --- a/examples/extended/electromagnetic/TestEm9/src/PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm9/src/PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: PrimaryGeneratorAction.cc,v 1.3 2006/06/29 17:03:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm9/src/StepMax.cc b/examples/extended/electromagnetic/TestEm9/src/StepMax.cc index 5a75831980..0149bceaf5 100644 --- a/examples/extended/electromagnetic/TestEm9/src/StepMax.cc +++ b/examples/extended/electromagnetic/TestEm9/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.3 2006/06/29 17:03:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/src/StepMaxMessenger.cc b/examples/extended/electromagnetic/TestEm9/src/StepMaxMessenger.cc index ee7ce91914..eaed4abee9 100644 --- a/examples/extended/electromagnetic/TestEm9/src/StepMaxMessenger.cc +++ b/examples/extended/electromagnetic/TestEm9/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.2 2006/06/29 17:03:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm9/src/SteppingAction.cc b/examples/extended/electromagnetic/TestEm9/src/SteppingAction.cc index e6ecb611f6..76e6aa0589 100644 --- a/examples/extended/electromagnetic/TestEm9/src/SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm9/src/SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: SteppingAction.cc,v 1.2 2006/06/29 17:03:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/eventgenerator/HepMC/HepMCEx01/hepmcEx01.cc b/examples/extended/eventgenerator/HepMC/HepMCEx01/hepmcEx01.cc index 86fbb097cf..da17548914 100644 --- a/examples/extended/eventgenerator/HepMC/HepMCEx01/hepmcEx01.cc +++ b/examples/extended/eventgenerator/HepMC/HepMCEx01/hepmcEx01.cc @@ -25,7 +25,7 @@ // // // $Id: hepmcEx01.cc,v 1.5 2006/07/05 11:06:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/HepMCEx01/include/ExN04RunAction.hh b/examples/extended/eventgenerator/HepMC/HepMCEx01/include/ExN04RunAction.hh index b7ea63b120..aa11771231 100644 --- a/examples/extended/eventgenerator/HepMC/HepMCEx01/include/ExN04RunAction.hh +++ b/examples/extended/eventgenerator/HepMC/HepMCEx01/include/ExN04RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN04RunAction.hh,v 1.3 2006/07/05 11:06:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/eventgenerator/HepMC/HepMCEx01/include/ExN04SteppingVerbose.hh b/examples/extended/eventgenerator/HepMC/HepMCEx01/include/ExN04SteppingVerbose.hh index 5f00c38a1b..fa47bf1722 100644 --- a/examples/extended/eventgenerator/HepMC/HepMCEx01/include/ExN04SteppingVerbose.hh +++ b/examples/extended/eventgenerator/HepMC/HepMCEx01/include/ExN04SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: ExN04SteppingVerbose.hh,v 1.2 2006/06/29 17:05:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/eventgenerator/HepMC/HepMCEx01/src/ExN04RunAction.cc b/examples/extended/eventgenerator/HepMC/HepMCEx01/src/ExN04RunAction.cc index 41426baff4..1dd4653101 100644 --- a/examples/extended/eventgenerator/HepMC/HepMCEx01/src/ExN04RunAction.cc +++ b/examples/extended/eventgenerator/HepMC/HepMCEx01/src/ExN04RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN04RunAction.cc,v 1.3 2006/07/05 11:06:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/eventgenerator/HepMC/HepMCEx01/src/ExN04SteppingVerbose.cc b/examples/extended/eventgenerator/HepMC/HepMCEx01/src/ExN04SteppingVerbose.cc index a2bd17a7d1..1dc206ff75 100644 --- a/examples/extended/eventgenerator/HepMC/HepMCEx01/src/ExN04SteppingVerbose.cc +++ b/examples/extended/eventgenerator/HepMC/HepMCEx01/src/ExN04SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: ExN04SteppingVerbose.cc,v 1.4 2006/06/29 17:06:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/eventgenerator/HepMC/HepMCEx02/hepmcEx02.cc b/examples/extended/eventgenerator/HepMC/HepMCEx02/hepmcEx02.cc index 4d9c03a7de..0f603ee4b4 100644 --- a/examples/extended/eventgenerator/HepMC/HepMCEx02/hepmcEx02.cc +++ b/examples/extended/eventgenerator/HepMC/HepMCEx02/hepmcEx02.cc @@ -25,7 +25,7 @@ // // // $Id: hepmcEx02.cc,v 1.5 2006/07/05 12:04:07 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/HepMCEx02/include/H02PhysicsList.hh b/examples/extended/eventgenerator/HepMC/HepMCEx02/include/H02PhysicsList.hh index fec61b7ab9..921a5bc4df 100644 --- a/examples/extended/eventgenerator/HepMC/HepMCEx02/include/H02PhysicsList.hh +++ b/examples/extended/eventgenerator/HepMC/HepMCEx02/include/H02PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: H02PhysicsList.hh,v 1.3 2006/07/05 12:04:12 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/eventgenerator/HepMC/HepMCEx02/src/H02PhysicsList.cc b/examples/extended/eventgenerator/HepMC/HepMCEx02/src/H02PhysicsList.cc index ac6953b807..10a5802d86 100644 --- a/examples/extended/eventgenerator/HepMC/HepMCEx02/src/H02PhysicsList.cc +++ b/examples/extended/eventgenerator/HepMC/HepMCEx02/src/H02PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: H02PhysicsList.cc,v 1.5 2006/07/05 12:04:13 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/include/DetectorConstruction.hh b/examples/extended/eventgenerator/HepMC/MCTruth/include/DetectorConstruction.hh index 56a933328e..0017ce80f8 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/include/DetectorConstruction.hh +++ b/examples/extended/eventgenerator/HepMC/MCTruth/include/DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: DetectorConstruction.hh,v 1.1 2006/11/22 14:51:27 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthConfig.hh b/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthConfig.hh index 434df60508..8f567c9cb0 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthConfig.hh +++ b/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthConfig.hh @@ -25,7 +25,7 @@ // // // $Id: MCTruthConfig.hh,v 1.1 2006/11/22 14:51:27 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthEventAction.hh b/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthEventAction.hh index 3fecaa0aec..d7d9fd294d 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthEventAction.hh +++ b/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthEventAction.hh @@ -25,7 +25,7 @@ // // // $Id: MCTruthEventAction.hh,v 1.1 2006/11/22 14:51:27 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthManager.hh b/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthManager.hh index df492e5f06..ac0c4b6eae 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthManager.hh +++ b/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthManager.hh @@ -25,7 +25,7 @@ // // // $Id: MCTruthManager.hh,v 1.1 2006/11/22 14:51:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthTrackInformation.hh b/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthTrackInformation.hh index bb9741c345..7c6dce6100 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthTrackInformation.hh +++ b/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthTrackInformation.hh @@ -25,7 +25,7 @@ // // // $Id: MCTruthTrackInformation.hh,v 1.1 2006/11/22 14:51:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthTrackingAction.hh b/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthTrackingAction.hh index 596f426389..bb28752460 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthTrackingAction.hh +++ b/examples/extended/eventgenerator/HepMC/MCTruth/include/MCTruthTrackingAction.hh @@ -25,7 +25,7 @@ // // // $Id: MCTruthTrackingAction.hh,v 1.1 2006/11/22 14:51:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/include/PhysicsList.hh b/examples/extended/eventgenerator/HepMC/MCTruth/include/PhysicsList.hh index 25f09d1396..48298d9845 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/include/PhysicsList.hh +++ b/examples/extended/eventgenerator/HepMC/MCTruth/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.1 2006/11/22 14:51:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/include/PrimaryGeneratorAction.hh b/examples/extended/eventgenerator/HepMC/MCTruth/include/PrimaryGeneratorAction.hh index 33afd73969..72f5de8c31 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/include/PrimaryGeneratorAction.hh +++ b/examples/extended/eventgenerator/HepMC/MCTruth/include/PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: PrimaryGeneratorAction.hh,v 1.1 2006/11/22 14:51:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/src/DetectorConstruction.cc b/examples/extended/eventgenerator/HepMC/MCTruth/src/DetectorConstruction.cc index cc5b9612c8..34d2125a93 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/src/DetectorConstruction.cc +++ b/examples/extended/eventgenerator/HepMC/MCTruth/src/DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: DetectorConstruction.cc,v 1.1 2006/11/22 14:51:29 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthConfig.cc b/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthConfig.cc index 8b739508d2..6ce7789e7f 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthConfig.cc +++ b/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthConfig.cc @@ -25,7 +25,7 @@ // // // $Id: MCTruthConfig.cc,v 1.1 2006/11/22 14:51:29 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthEventAction.cc b/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthEventAction.cc index bb6e2c28cd..b02ce4f384 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthEventAction.cc +++ b/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthEventAction.cc @@ -25,7 +25,7 @@ // // // $Id: MCTruthEventAction.cc,v 1.1 2006/11/22 14:51:29 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthManager.cc b/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthManager.cc index 906752d0d3..1b995a7633 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthManager.cc +++ b/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthManager.cc @@ -25,7 +25,7 @@ // // // $Id: MCTruthManager.cc,v 1.2 2006/12/13 15:42:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthTrackInformation.cc b/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthTrackInformation.cc index 6858747409..f400a25327 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthTrackInformation.cc +++ b/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthTrackInformation.cc @@ -25,7 +25,7 @@ // // // $Id: MCTruthTrackInformation.cc,v 1.1 2006/11/22 14:51:30 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthTrackingAction.cc b/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthTrackingAction.cc index de8c4be876..5b543d0aa6 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthTrackingAction.cc +++ b/examples/extended/eventgenerator/HepMC/MCTruth/src/MCTruthTrackingAction.cc @@ -25,7 +25,7 @@ // // // $Id: MCTruthTrackingAction.cc,v 1.1 2006/11/22 14:51:30 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/src/PhysicsList.cc b/examples/extended/eventgenerator/HepMC/MCTruth/src/PhysicsList.cc index 99a9aed6e0..9142375094 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/src/PhysicsList.cc +++ b/examples/extended/eventgenerator/HepMC/MCTruth/src/PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.cc,v 1.1 2006/11/22 14:51:30 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/HepMC/MCTruth/src/PrimaryGeneratorAction.cc b/examples/extended/eventgenerator/HepMC/MCTruth/src/PrimaryGeneratorAction.cc index cc0cfe9333..4aa89737b7 100644 --- a/examples/extended/eventgenerator/HepMC/MCTruth/src/PrimaryGeneratorAction.cc +++ b/examples/extended/eventgenerator/HepMC/MCTruth/src/PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: PrimaryGeneratorAction.cc,v 1.1 2006/11/22 14:51:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/eventgenerator/exgps/include/exGPSEventActionMessenger.hh b/examples/extended/eventgenerator/exgps/include/exGPSEventActionMessenger.hh index 15662b2f80..4c6c3cf256 100644 --- a/examples/extended/eventgenerator/exgps/include/exGPSEventActionMessenger.hh +++ b/examples/extended/eventgenerator/exgps/include/exGPSEventActionMessenger.hh @@ -31,7 +31,7 @@ // and all its terms. // // $Id: exGPSEventActionMessenger.hh,v 1.4 2006/06/29 17:14:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/eventgenerator/exgps/src/exGPSEventActionMessenger.cc b/examples/extended/eventgenerator/exgps/src/exGPSEventActionMessenger.cc index 24f49b305d..b3576a0854 100644 --- a/examples/extended/eventgenerator/exgps/src/exGPSEventActionMessenger.cc +++ b/examples/extended/eventgenerator/exgps/src/exGPSEventActionMessenger.cc @@ -31,7 +31,7 @@ // and all its terms. // // $Id: exGPSEventActionMessenger.cc,v 1.3 2006/06/29 17:14:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/exoticphysics/monopole/GNUmakefile b/examples/extended/exoticphysics/monopole/GNUmakefile new file mode 100644 index 0000000000..74ba986086 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/GNUmakefile @@ -0,0 +1,36 @@ +# $Id: GNUmakefile,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +# -------------------------------------------------------------- +# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. +# -------------------------------------------------------------- + +name := monopole +G4TARGET := $(name) +G4EXLIB := true + +ifndef G4INSTALL + G4INSTALL = ../../../.. +endif + +.PHONY: all +all: lib bin + +ifdef G4ANALYSIS_USE + CPPFLAGS += -DG4ANALYSIS_USE +endif + +include $(G4INSTALL)/config/architecture.gmk + +ifdef G4ANALYSIS_USE + # for the aida-config command see the README file + CPPFLAGS += `aida-config --include` + LOADLIBS += `aida-config --lib` +endif + +include $(G4INSTALL)/config/binmake.gmk + +visclean: + rm -f g4*.prim g4*.eps g4*.wrl + rm -f .DAWN_* + +histclean: + rm ${G4WORKDIR}/tmp/${G4SYSTEM}/${G4TARGET}/RunAction.o diff --git a/examples/extended/exoticphysics/monopole/History b/examples/extended/exoticphysics/monopole/History new file mode 100644 index 0000000000..706316e753 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/History @@ -0,0 +1,20 @@ +$Id: History,v 1.2 2007/08/16 12:57:59 vnivanch Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + monopol History file + -------------------- +This file should be used by the G4 example coordinator to briefly +summarize all major modifications introduced in the code and keep +track of all tags. + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +16 August 07: V.Ivant (monopole-V09-00-00) +- First release + diff --git a/examples/extended/exoticphysics/monopole/README b/examples/extended/exoticphysics/monopole/README new file mode 100644 index 0000000000..2715463bbe --- /dev/null +++ b/examples/extended/exoticphysics/monopole/README @@ -0,0 +1,141 @@ +$Id: README,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + monopole + -------- + V.Ivanchenko, M.Vladymyrov + CERN, Geneva, Switzerland + Lebedev Physical Institute, Moscow, Russia + + +This example is devoted to the energy deposited by classical magnetic +monopole. + + + + 1- GEOMETRY DEFINITION + + The geometry consists of a single block of a homogenous material, + placed in a world. + + Four parameters define the geometry : + - the material of the box + - the thickness of the box + - the tranverse dimension of the box + - the maximal step size in target + + The default is 10 cm of alumunium, step is limited by 5mm. + Equivalent UI commands are following: + /testex/det/setMat G4_Al + /testex/det/sizeX 10 cm + /testex/det/sizeYZ 5 cm + /testex/det/setStepSize 5 mm + + The default geometry is constructed in DetectorConstruction class, + but all of the above parameters can be changed interactively via + the commands defined in the DetectorMessenger class. After changing + material and/or dimentions one must update the detector construction: + /testex/det/update + + 2- PHYSICS LIST + + Physics Lists include standard QGSP physics and additional builder + for monopole physics. + + 3- AN EVENT : THE PRIMARY GENERATOR + + The primary kinematic consists of a single particle which hits the + block perpendicular to the input face. The type of the particle + and its energy are set in the PrimaryGeneratorAction class, and can + changed via the G4 build-in commands of ParticleGun class (see + the macros provided with this example). + The default is monopole 100 GeV + + In addition one can define randomly the impact point of the incident + particle. The corresponding interactive command is built in + PrimaryGeneratorMessenger class. + + A RUN is a set of events. + + + 4- VISUALIZATION + + The Visualization Manager is set in the main() for interactive session. + The initialisation of the drawing is done via the command + /control/execute vis.mac + + The detector has a default view which is a longitudinal view of the box. + + The tracks are drawn at the end of event, and erased at the end of run. + Optionaly one can choose to draw all particles, only the charged one, + or none. This command is defined in EventActionMessenger class. + + + 5- HOW TO START ? + + - compile and link to generate an executable + % cd monopole + % gmake + + - execute Test in 'batch' mode from macro files + % monopole monopole.in + + - execute Test in 'interactive mode' with visualization + % monopole + .... + Idle> type your commands + .... + Idle> exit + + + 6- HISTOGRAMS + + The result is five histograms: + - Monopole eneregy deposition in current material + - dedx for proton + - dedx for monopole + - range for proton in current material + - range for monopole in current material + + The histogram is saved in hbook (default monopole.hbook, but can be changed + using testex/run/HistoName and testex/run/HistoType comands) + Limit of bin size can be set with testex/run/binSize (default 5mm). Real size + is chosen as a minimal between this and step limit (see Geometry section) + + Note that, by default, histograms are disabled. To activate them, uncomment + G4ANALYSIS_USE in GNUmakefile. + + 7- Using histograms + ------------------- + + By default the histograms are not activated. To activate histograms + the environment variable G4ANALYSIS_USE should be defined. For instance + uncomment the flag G4ANALYSIS_USE in GNUmakefile. + + To use histograms any of implementations of AIDA interfaces should + be available (see http://aida.freehep.org). + + A package including AIDA and extended interfaces also using Python + is PI, available from: http://cern.ch/pi . + + Once installed PI or PI-Lite in a specified local area $MYPY, it is + required to add the installation path to $PATH, i.e. for example, + for release 1.2.1 of PI: + + setenv PATH ${PATH}:$MYPI/1.2.1/app/releases/PI/PI_1_2_1/rh73_gcc32/bin + + CERN users can use the PATH to the LCG area on AFS. + + Before compilation of the example it is optimal to clean up old files: + + gmake histclean + gmake + + Before running the example the command should be issued: + + eval `aida-config --runtime csh` + diff --git a/examples/extended/exoticphysics/monopole/include/DetectorConstruction.hh b/examples/extended/exoticphysics/monopole/include/DetectorConstruction.hh new file mode 100644 index 0000000000..8f35ab0347 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/include/DetectorConstruction.hh @@ -0,0 +1,100 @@ +// +// ******************************************************************** +// * 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/08/16 10:32:04 vnivanch 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" +#include "G4ThreeVector.hh" + +class G4LogicalVolume; +class G4Material; +class G4UniformMagField; +class DetectorMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class DetectorConstruction : public G4VUserDetectorConstruction +{ + public: + + DetectorConstruction(); + ~DetectorConstruction(); + + public: + + void SetSizeX (G4double); + void SetSizeYZ (G4double); + void SetMaterial (G4String); + void SetMagField (G4double); + + void SetMaxStepSize (G4double); + + G4VPhysicalVolume* Construct(); + void UpdateGeometry(); + + public: + + G4double GetWorldSizeX() {return worldSizeX;}; + G4double GetWorldSizeYZ() {return worldSizeYZ;}; + G4Material* GetWorldMaterial() {return worldMaterial;}; + G4double GetAbsorSizeX() {return absorSizeX;}; + G4double GetAbsorSizeYZ() {return absorSizeYZ;}; + G4double GetMaxStepSize() {return maxStepSize;}; + G4Material* GetAbsorMaterial() {return absorMaterial;}; + + void PrintParameters(); + + private: + + G4double worldSizeX; + G4double worldSizeYZ; + G4Material* worldMaterial; + G4double absorSizeX; + G4double absorSizeYZ; + G4double maxStepSize; + G4Material* absorMaterial; + G4UniformMagField* magField; + G4LogicalVolume* lAbsor; + + DetectorMessenger* detectorMessenger; + + private: + + void DefineMaterials(); + G4VPhysicalVolume* ConstructVolumes(); +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/exoticphysics/monopole/include/DetectorMessenger.hh b/examples/extended/exoticphysics/monopole/include/DetectorMessenger.hh new file mode 100644 index 0000000000..6813144ba7 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/include/DetectorMessenger.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef DetectorMessenger_h +#define DetectorMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class DetectorConstruction; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWith3VectorAndUnit; +class G4UIcmdWithoutParameter; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class DetectorMessenger: public G4UImessenger +{ + public: + + DetectorMessenger(DetectorConstruction* ); + ~DetectorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + + DetectorConstruction* Detector; + + G4UIdirectory* detDir; + G4UIcmdWithAString* MaterCmd; + G4UIcmdWithADoubleAndUnit* SizeXCmd; + G4UIcmdWithADoubleAndUnit* SizeYZCmd; + G4UIcmdWithADoubleAndUnit* StepSizeCmd; + G4UIcmdWithADoubleAndUnit* MagFieldCmd; + + G4UIcmdWithoutParameter* UpdateCmd; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/exoticphysics/monopole/include/EventAction.hh b/examples/extended/exoticphysics/monopole/include/EventAction.hh new file mode 100644 index 0000000000..561dc979d6 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/include/EventAction.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * 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: EventAction.hh,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef EventAction_h +#define EventAction_h 1 + +#include "G4UserEventAction.hh" +#include "globals.hh" + +class EventActionMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class EventAction : public G4UserEventAction +{ + public: + EventAction(); + ~EventAction(); + + public: + void BeginOfEventAction(const G4Event*); + void EndOfEventAction(const G4Event*); + + void SetDrawFlag(G4String val) {drawFlag = val;}; + void SetPrintModulo(G4int val) {printModulo = val;}; + + + private: + G4String drawFlag; + G4int printModulo; + EventActionMessenger* eventMessenger; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + + diff --git a/examples/extended/exoticphysics/monopole/include/EventActionMessenger.hh b/examples/extended/exoticphysics/monopole/include/EventActionMessenger.hh new file mode 100644 index 0000000000..0176e4fa53 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/include/EventActionMessenger.hh @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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: EventActionMessenger.hh,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef EventActionMessenger_h +#define EventActionMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class EventAction; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class EventActionMessenger: public G4UImessenger +{ + public: + EventActionMessenger(EventAction*); + ~EventActionMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + EventAction* eventAction; + G4UIdirectory* eventDir; + G4UIcmdWithAString* DrawCmd; + G4UIcmdWithAnInteger* PrintCmd; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif diff --git a/examples/extended/exoticphysics/monopole/include/G4Monopole.hh b/examples/extended/exoticphysics/monopole/include/G4Monopole.hh new file mode 100644 index 0000000000..2fd70ff773 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/include/G4Monopole.hh @@ -0,0 +1,85 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#ifndef G4Monopole_h +#define G4Monopole_h 1 + +//--------------------------------------------------------------------------- +// +//--------------------------------------------------------------------------- +// +// ClassName: G4Monopole +// +// Authors: 21.03.05 V.Ivanchenko +// +// Modified: +// +//---------------------------------------------------------------------------- +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "G4ParticleDefinition.hh" +#include "globals.hh" + +// ###################################################################### +// ### Monopole ### +// ###################################################################### + +class G4Monopole : public G4ParticleDefinition +{ +private: + static G4Monopole* theMonopole; + + G4Monopole( + const G4String& aName, G4double mass, + G4double width, G4double charge, + G4int iSpin, G4int iParity, + G4int iConjugation, G4int iIsospin, + G4int iIsospin3, G4int gParity, + const G4String& pType, G4int lepton, + G4int baryon, G4int encoding, + G4bool stable, G4double lifetime, + G4DecayTable *decaytable ); + +public: + + virtual ~G4Monopole(); + + static G4Monopole* MonopoleDefinition(G4double mass_ = 100.*GeV, + G4int magCharge_ = 1, + G4int elCharge_ = 0); + + static G4Monopole* Monopole(); + + static G4double MagneticCharge() {return magCharge;}; + +private: + + static G4double magCharge; +}; + +#endif diff --git a/examples/extended/exoticphysics/monopole/include/G4MonopolePhysics.hh b/examples/extended/exoticphysics/monopole/include/G4MonopolePhysics.hh new file mode 100644 index 0000000000..436e007a29 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/include/G4MonopolePhysics.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * 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: G4MonopolePhysics.hh,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef G4MonopolePhysics_h +#define G4MonopolePhysics_h 1 + +#include "G4VPhysicsConstructor.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class G4MonopolePhysics : public G4VPhysicsConstructor +{ +public: + G4MonopolePhysics(const G4String& name = "EM_monopole"); + virtual ~G4MonopolePhysics(); + + // This method is dummy for physics + virtual 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(); + +private: + + // hide assignment operator + G4MonopolePhysics & operator=(const G4MonopolePhysics &right); + G4MonopolePhysics(const G4MonopolePhysics&); + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/exoticphysics/monopole/include/PrimaryGeneratorAction.hh b/examples/extended/exoticphysics/monopole/include/PrimaryGeneratorAction.hh new file mode 100644 index 0000000000..93d37a76a2 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/include/PrimaryGeneratorAction.hh @@ -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: PrimaryGeneratorAction.hh,v 1.1 2007/08/16 10:32:04 vnivanch 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; +class PrimaryGeneratorMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction +{ + public: + PrimaryGeneratorAction(DetectorConstruction*); + ~PrimaryGeneratorAction(); + + public: + void SetRndmBeam(G4double val) {rndmBeam = val;} + void GeneratePrimaries(G4Event*); + + void ResetEbeamCumul() {EbeamCumul = 0.;} + G4double GetEbeamCumul() {return EbeamCumul;} + + G4ParticleGun* GetParticleGun() {return particleGun;} + + private: + G4ParticleGun* particleGun; + DetectorConstruction* detector; + G4double rndmBeam; + G4double EbeamCumul; + PrimaryGeneratorMessenger* gunMessenger; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + + diff --git a/examples/extended/exoticphysics/monopole/include/PrimaryGeneratorMessenger.hh b/examples/extended/exoticphysics/monopole/include/PrimaryGeneratorMessenger.hh new file mode 100644 index 0000000000..844a553569 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/include/PrimaryGeneratorMessenger.hh @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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: PrimaryGeneratorMessenger.hh,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef PrimaryGeneratorMessenger_h +#define PrimaryGeneratorMessenger_h 1 + +#include "G4UImessenger.hh" +#include "globals.hh" + +class PrimaryGeneratorAction; +class G4UIdirectory; +class G4UIcmdWithADoubleAndUnit; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class PrimaryGeneratorMessenger: public G4UImessenger +{ + public: + PrimaryGeneratorMessenger(PrimaryGeneratorAction*); + ~PrimaryGeneratorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + PrimaryGeneratorAction* Action; + G4UIdirectory* testexDir; + G4UIdirectory* gunDir; + G4UIcmdWithADoubleAndUnit* RndmCmd; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/exoticphysics/monopole/include/RunAction.hh b/examples/extended/exoticphysics/monopole/include/RunAction.hh new file mode 100644 index 0000000000..9fc50e5068 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/include/RunAction.hh @@ -0,0 +1,98 @@ +// +// ******************************************************************** +// * 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/08/16 10:32:04 vnivanch 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" +#include "QGSP.hh" + +class DetectorConstruction; +class RunActionMessenger; +class PrimaryGeneratorAction; +class G4Run; + +namespace AIDA { + class IAnalysisFactory; + class ITree; + class IHistogram1D; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class RunAction : public G4UserRunAction +{ +public: + RunAction(DetectorConstruction* ,PrimaryGeneratorAction*); + virtual ~RunAction(); + + void BeginOfRunAction(const G4Run*); + void EndOfRunAction(const G4Run*); + + G4double GetBinLength() {return binLength;}; + G4double GetOffsetX() {return offsetX;} + void SetBinSize(G4double size); + void FillHisto(G4int id, G4double x, G4double weight = 1.0); + + void SetVerbose(G4int verbose) {verboseLevel = verbose;} + void SetHistoName(G4String name) {fname = name;} + void SetHistoType(G4String type) {ftype = type;} + G4int GetVerbose() {return verboseLevel;} + + void AddProjRange (G4double x) {projRange += x; projRange2 += x*x;}; + +private: + void bookHisto(); + void saveHisto(); + + DetectorConstruction* detector; + PrimaryGeneratorAction* kinematic; + + RunActionMessenger* runActionMessenger; + + G4int verboseLevel; + + G4double binLength; + G4double offsetX; + G4double projRange, projRange2; + G4String ftype, fname; + + + AIDA::IAnalysisFactory* af; + AIDA::ITree* tree; + AIDA::IHistogram1D* histo[5]; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/exoticphysics/monopole/include/RunActionMessenger.hh b/examples/extended/exoticphysics/monopole/include/RunActionMessenger.hh new file mode 100644 index 0000000000..aa3ebe4832 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/include/RunActionMessenger.hh @@ -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: RunActionMessenger.hh,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef RunActionMessenger_h +#define RunActionMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class RunAction; +class G4UIdirectory; +class G4UIcmdWithADouble; +class G4UIcmdWithAnInteger; +class G4UIcmdWithAString; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class RunActionMessenger: public G4UImessenger +{ + public: + + RunActionMessenger(RunAction* ); + ~RunActionMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + + RunAction* runaction; + + G4UIdirectory* actDir; + G4UIcmdWithADouble* binSizeCmd; + G4UIcmdWithAnInteger* verboseCmd; + G4UIcmdWithAString* histoNameCmd; + G4UIcmdWithAString* histoTypeCmd; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/exoticphysics/monopole/include/SteppingAction.hh b/examples/extended/exoticphysics/monopole/include/SteppingAction.hh new file mode 100644 index 0000000000..80f0b0ae58 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/include/SteppingAction.hh @@ -0,0 +1,57 @@ +// +// ******************************************************************** +// * 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: SteppingAction.hh,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef SteppingAction_h +#define SteppingAction_h 1 + +#include "G4UserSteppingAction.hh" + +class DetectorConstruction; +class RunAction; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class SteppingAction : public G4UserSteppingAction +{ + public: + SteppingAction(DetectorConstruction*,RunAction*); + ~SteppingAction(); + + void UserSteppingAction(const G4Step*); + + private: + DetectorConstruction* detector; + RunAction* runAction; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif diff --git a/examples/extended/exoticphysics/monopole/include/TrackingAction.hh b/examples/extended/exoticphysics/monopole/include/TrackingAction.hh new file mode 100644 index 0000000000..55da9dfa12 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/include/TrackingAction.hh @@ -0,0 +1,56 @@ +// +// ******************************************************************** +// * 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: TrackingAction.hh,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef TrackingAction_h +#define TrackingAction_h 1 + +#include "G4UserTrackingAction.hh" +#include "globals.hh" + +class RunAction; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class TrackingAction : public G4UserTrackingAction { + + public: + TrackingAction(RunAction*); + ~TrackingAction() {}; + + void PostUserTrackingAction(const G4Track*); + + private: + RunAction* runAction; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif diff --git a/examples/extended/exoticphysics/monopole/monopole.cc b/examples/extended/exoticphysics/monopole/monopole.cc new file mode 100644 index 0000000000..68715a73da --- /dev/null +++ b/examples/extended/exoticphysics/monopole/monopole.cc @@ -0,0 +1,122 @@ +// +// ******************************************************************** +// * 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: monopole.cc,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4RunManager.hh" +#include "G4UImanager.hh" +#include "G4UIterminal.hh" +#include "G4UItcsh.hh" +#include "Randomize.hh" + +#include "DetectorConstruction.hh" +#include "G4MonopolePhysics.hh" +#include "QGSP.hh" +#include "PrimaryGeneratorAction.hh" + +#include "RunAction.hh" +#include "EventAction.hh" +#include "TrackingAction.hh" +#include "SteppingAction.hh" + +#ifdef G4VIS_USE +#include "G4VisExecutive.hh" +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +int main(int argc,char** argv) { + + //choose the Random engine + CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine); + + //Construct the default run manager + G4RunManager * runManager = new G4RunManager; + + //set mandatory initialization classes + DetectorConstruction* det; + + //ceate physicsList + QGSP* phys = new QGSP(); + G4MonopolePhysics * theMonopole = new G4MonopolePhysics; + phys->RegisterPhysics(theMonopole); + + PrimaryGeneratorAction* kin; + runManager->SetUserInitialization(det = new DetectorConstruction); + runManager->SetUserInitialization(phys); + runManager->SetUserAction(kin = new PrimaryGeneratorAction(det)); + +#ifdef G4VIS_USE + //visualization manager + G4VisManager* visManager = 0; +#endif + + //set user action classes + RunAction* run; + + runManager->SetUserAction(run = new RunAction(det, kin)); + runManager->SetUserAction(new EventAction); + runManager->SetUserAction(new TrackingAction(run)); + runManager->SetUserAction(new SteppingAction(det, run)); + + //get the pointer to the User Interface manager + G4UImanager* UI = G4UImanager::GetUIpointer(); + G4cout << "User actions are instantiated" << G4endl; + + if (argc == 1) // Define UI terminal for interactive mode + { + visManager = new G4VisExecutive(); + visManager->Initialize(); + G4UIsession* session = 0; +#ifdef G4UI_USE_TCSH + session = new G4UIterminal(new G4UItcsh); +#else + session = new G4UIterminal(); +#endif + session->SessionStart(); + delete session; + } + else // Batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + //job termination +#ifdef G4VIS_USE + delete visManager; +#endif + + delete runManager; + + return 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/exoticphysics/monopole/monopole.in b/examples/extended/exoticphysics/monopole/monopole.in new file mode 100644 index 0000000000..55572d290b --- /dev/null +++ b/examples/extended/exoticphysics/monopole/monopole.in @@ -0,0 +1,25 @@ +# 07.08.02 M Vladymyrov +# Macro file for "monopole.cc" +# (can be run in batch, without graphic) +# +# +/control/verbose 1 +/run/verbose 0 +/testex/run/verbose 1 +/tracking/verbose 0 +# +/testex/det/setMat G4_Si +/testex/det/setSizeX 10 cm +/testex/det/setSizeYZ 20 cm +/testex/det/setStepSize 0.2 mm + +/testex/run/binSize 0.2 mm +# +/run/initialize +# +/process/eLoss/verbose 0 +/testex/event/printModulo 10 +# +/gun/particle monopole +/gun/energy 100 GeV +/run/beamOn 100 diff --git a/examples/extended/exoticphysics/monopole/monopole.out b/examples/extended/exoticphysics/monopole/monopole.out new file mode 100644 index 0000000000..eee73c15fb --- /dev/null +++ b/examples/extended/exoticphysics/monopole/monopole.out @@ -0,0 +1,84 @@ + +************************************************************* + Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Copyright : Geant4 Collaboration + Reference : NIM A 506 (2003), 250-303 + WWW : http://cern.ch/geant4 +************************************************************* + + +<<< Geant4 Physics List engine packaging library: PACK 5.3 +<<< Geant4 Physics List simulation engine: QGSP 3.3 + + +***** Table : Nb of materials = 2 ***** + + Material: Air density: 1.290 kg/m3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % + ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % + + Material: Galactic density: 0.000 kg/m3 temperature: 2.73 K pressure: 0.00 atm RadLength: 204322175.595 pc + ---> Element: Galactic ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % + + +Monopole is created: m(GeV)= 100 Qel= 0 Qmag= 68.518 +User actions are instantiated +/run/verbose 0 +/testex/run/verbose 1 +/tracking/verbose 0 +/testex/det/setMat G4_Si +/testex/det/setSizeX 10 cm +/testex/det/setSizeYZ 20 cm +/testex/det/setStepSize 0.2 mm +/testex/run/binSize 0.2 mm +/run/initialize + +--------------------------------------------------------- +---> The Absorber is 10 cm of G4_Si + +--------------------------------------------------------- +### Adding Neutron tracking cut for neutron +### cut value is 10 microseconds +G4MonopolePhysics::ConstructProcess +/process/eLoss/verbose 0 +/testex/event/printModulo 10 +/gun/particle monopole +/gun/energy 100 GeV +/run/beamOn 100 + +G4UHadronElasticProcess for neutron PDGcode= 2112 Elow(MeV)= 19 Elowest(eV)= 0 +### Run 0 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 920957765, 580137259 +---------------------------------------- + +---> Begin of Event: 0 + +---> Begin of Event: 10 + +---> Begin of Event: 20 + +---> Begin of Event: 30 + +---> Begin of Event: 40 + +---> Begin of Event: 50 + +---> Begin of Event: 60 + +---> Begin of Event: 70 + +---> Begin of Event: 80 + +---> Begin of Event: 90 + + The run consists of 100 monopole of 100 GeV through 10 cm of G4_Si (density: 2.33 g/cm3 ) + + projected Range= 7.6273 cm rms= 221.61 um + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1960403491, 168857775 +---------------------------------------- diff --git a/examples/extended/exoticphysics/monopole/src/DetectorConstruction.cc b/examples/extended/exoticphysics/monopole/src/DetectorConstruction.cc new file mode 100644 index 0000000000..8c9e9e0056 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/src/DetectorConstruction.cc @@ -0,0 +1,241 @@ +// +// ******************************************************************** +// * 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/08/16 10:32:04 vnivanch 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 "G4Box.hh" +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4UniformMagField.hh" + +#include "G4GeometryManager.hh" +#include "G4UserLimits.hh" +#include "G4PhysicalVolumeStore.hh" +#include "G4LogicalVolumeStore.hh" +#include "G4SolidStore.hh" + +#include "G4UnitsTable.hh" +#include "G4NistManager.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +DetectorConstruction::DetectorConstruction() +{ + // default parameter values + absorSizeX = absorSizeYZ = 10 * cm; + worldSizeX = worldSizeYZ = 1.2 * absorSizeX; + maxStepSize = 5 * mm; + + worldMaterial = absorMaterial = 0; + magField = 0; + lAbsor = 0; + + DefineMaterials(); + SetMaterial("G4_Al"); + + // create commands for interactive definition of the detector + detectorMessenger = new DetectorMessenger(this); +} + + + +DetectorConstruction::~DetectorConstruction() +{delete detectorMessenger;} + + +G4VPhysicalVolume* DetectorConstruction::Construct() +{ return ConstructVolumes();} + + +void DetectorConstruction::DefineMaterials() +{ + /*********************** define Elements *********************/ + G4double z, a; + + 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); + + /*********************** define Materials **********************/ + G4double density, temperature, pressure; + G4int ncomponents; + G4double fractionmass; + + G4Material* Air = new G4Material("Air" , density = 1.290 * mg/cm3, ncomponents=2); + Air->AddElement(N, fractionmass = 0.7); + Air->AddElement(O, fractionmass = 0.3); + + density = universe_mean_density; //from PhysicalConstants.h + pressure = 3.e-18 * pascal; + temperature = 2.73 * kelvin; + + G4Material* vacuum = new G4Material("Galactic", z = 1, a = 1.008 * g/mole, density, + kStateGas, temperature, pressure); + + G4cout << *(G4Material::GetMaterialTable()) << G4endl; + + //default materials + worldMaterial = vacuum; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4VPhysicalVolume* DetectorConstruction::ConstructVolumes() +{ + G4GeometryManager::GetInstance()->OpenGeometry(); + G4PhysicalVolumeStore::GetInstance()->Clean(); + G4LogicalVolumeStore::GetInstance()->Clean(); + G4SolidStore::GetInstance()->Clean(); + + + + /**************************** World *****************************/ + G4Box * sWorld = new G4Box("world", //name + worldSizeX / 2, worldSizeYZ / 2, worldSizeYZ / 2); //dimensions + + G4LogicalVolume * lWorld = new G4LogicalVolume(sWorld, //shape + worldMaterial, //material + "world"); //name + + G4VPhysicalVolume * pWorld = new G4PVPlacement(0, //no rotation + G4ThreeVector(), //at (0,0,0) + lWorld, //logical volume + "world", //name + 0, //mother volume + false, //no boolean operation + 0); //copy number + + + /************************** Absorber ***************************/ + G4Box * sAbsor = new G4Box("Absorber", //name + absorSizeX / 2, absorSizeYZ / 2, absorSizeYZ / 2); //dimensions + + lAbsor = new G4LogicalVolume(sAbsor, //shape + absorMaterial, //material + "Absorber"); //name + + + new G4PVPlacement(0, //no rotation + G4ThreeVector(), //at (0,0,0) + lAbsor, //logical volume + "Absorber", //name + lWorld, //mother volume + false, //no boolean operation + 0); //copy number + lAbsor->SetUserLimits(new G4UserLimits(maxStepSize)); + + PrintParameters(); + + /************ always return the World volume *****************/ + return pWorld; +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void DetectorConstruction::PrintParameters() +{ + G4cout << "\n---------------------------------------------------------\n"; + G4cout << "---> The Absorber is " << G4BestUnit(absorSizeX, "Length") + << " of " << absorMaterial->GetName() << G4endl; + G4cout << "\n---------------------------------------------------------\n"; + +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void DetectorConstruction::SetSizeX(G4double value) +{ + absorSizeX = value; worldSizeX = 1.2 * absorSizeX; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void DetectorConstruction::SetSizeYZ(G4double value) +{ + absorSizeYZ = value; + worldSizeYZ = 1.2 * absorSizeYZ; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void DetectorConstruction::SetMaterial(G4String materialChoice) +{ + // search the material by its name + G4Material * pttoMaterial = G4NistManager::Instance()->FindOrBuildMaterial(materialChoice); + if (pttoMaterial) absorMaterial = pttoMaterial; + else G4cout << "Material does not exist in DB" << G4endl; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +#include "G4FieldManager.hh" +#include "G4TransportationManager.hh" + +void DetectorConstruction::SetMagField(G4double fieldValue) +{ + //apply a global uniform magnetic field along Z axis + G4FieldManager * fieldMgr = G4TransportationManager::GetTransportationManager()->GetFieldManager(); + + if (magField) delete magField; //delete the existing magn field + + if (fieldValue != 0.) // create a new one if non nul + { + magField = new G4UniformMagField(G4ThreeVector(0., 0., fieldValue)); + fieldMgr->SetDetectorField(magField); + fieldMgr->CreateChordFinder(magField); + } + else + { + magField = 0; + fieldMgr->SetDetectorField(magField); + } +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void DetectorConstruction::SetMaxStepSize(G4double step_) +{ + maxStepSize = step_; + if(lAbsor) lAbsor->SetUserLimits(new G4UserLimits(maxStepSize)); +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +#include "G4RunManager.hh" + +void DetectorConstruction::UpdateGeometry() +{ + G4RunManager::GetRunManager()->DefineWorldVolume(ConstructVolumes()); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/exoticphysics/monopole/src/DetectorMessenger.cc b/examples/extended/exoticphysics/monopole/src/DetectorMessenger.cc new file mode 100644 index 0000000000..9372a3db85 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/src/DetectorMessenger.cc @@ -0,0 +1,126 @@ +// +// ******************************************************************** +// * 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/08/16 10:32:04 vnivanch 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" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWith3VectorAndUnit.hh" +#include "G4UIcmdWithoutParameter.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +DetectorMessenger::DetectorMessenger(DetectorConstruction * Det) +:Detector(Det) +{ + detDir = new G4UIdirectory("/testex/det/"); + detDir->SetGuidance("detector construction commands"); + + MaterCmd = new G4UIcmdWithAString("/testex/det/setMat",this); + MaterCmd->SetGuidance("Select material of the box."); + MaterCmd->SetParameterName("choice",false); + MaterCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + SizeXCmd = new G4UIcmdWithADoubleAndUnit("/testex/det/setSizeX",this); + SizeXCmd->SetGuidance("Set sizeX of the absorber"); + SizeXCmd->SetParameterName("SizeX",false); + SizeXCmd->SetRange("SizeX>0."); + SizeXCmd->SetUnitCategory("Length"); + SizeXCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + SizeYZCmd = new G4UIcmdWithADoubleAndUnit("/testex/det/setSizeYZ",this); + SizeYZCmd->SetGuidance("Set sizeYZ of the absorber"); + SizeYZCmd->SetParameterName("SizeYZ",false); + SizeYZCmd->SetRange("SizeYZ>0."); + SizeYZCmd->SetUnitCategory("Length"); + SizeYZCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + StepSizeCmd = new G4UIcmdWithADoubleAndUnit("/testex/det/setStepSize",this); + StepSizeCmd->SetGuidance("Set maxStepSize in the absorber"); + StepSizeCmd->SetParameterName("StepSize",false); + StepSizeCmd->SetRange("StepSize>0."); + StepSizeCmd->SetUnitCategory("Length"); + StepSizeCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + + MagFieldCmd = new G4UIcmdWithADoubleAndUnit("/testex/det/setField",this); + MagFieldCmd->SetGuidance("Define magnetic field."); + MagFieldCmd->SetGuidance("Magnetic field will be in Z direction."); + MagFieldCmd->SetParameterName("Bz",false); + MagFieldCmd->SetUnitCategory("Magnetic flux density"); + MagFieldCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + UpdateCmd = new G4UIcmdWithoutParameter("/testex/det/update",this); + UpdateCmd->SetGuidance("Update calorimeter geometry."); + UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" "); + UpdateCmd->SetGuidance("if you changed geometrical value(s)."); + UpdateCmd->AvailableForStates(G4State_Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +DetectorMessenger::~DetectorMessenger() +{ + delete MaterCmd; + delete SizeXCmd; + delete SizeYZCmd; + delete StepSizeCmd; + delete MagFieldCmd; + delete UpdateCmd; + delete detDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if( command == MaterCmd ) + { Detector->SetMaterial(newValue);} + + if( command == SizeXCmd ) + { Detector->SetSizeX(SizeXCmd->GetNewDoubleValue(newValue));} + + if( command == SizeYZCmd ) + { Detector->SetSizeYZ(SizeYZCmd->GetNewDoubleValue(newValue));} + + if( command == MagFieldCmd ) + { Detector->SetMagField(MagFieldCmd->GetNewDoubleValue(newValue));} + + if( command == StepSizeCmd ) + { Detector->SetMaxStepSize(StepSizeCmd->GetNewDoubleValue(newValue));} + + if( command == UpdateCmd ) + { Detector->UpdateGeometry();} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/exoticphysics/monopole/src/EventAction.cc b/examples/extended/exoticphysics/monopole/src/EventAction.cc new file mode 100644 index 0000000000..63530169e7 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/src/EventAction.cc @@ -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: EventAction.cc,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "EventAction.hh" + +#include "EventActionMessenger.hh" + +#include "G4Event.hh" +#include "G4TrajectoryContainer.hh" +#include "G4Trajectory.hh" +#include "G4VVisManager.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +EventAction::EventAction(): drawFlag("none"), printModulo(10000), eventMessenger(0) +{ + eventMessenger = new EventActionMessenger(this); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +EventAction::~EventAction() +{ + delete eventMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void EventAction::BeginOfEventAction(const G4Event* evt) +{ + G4int evtNb = evt->GetEventID(); + + //printing survey + if (evtNb % printModulo == 0) + G4cout << "\n---> Begin of Event: " << evtNb << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void EventAction::EndOfEventAction(const G4Event* evt) +{ + if (G4VVisManager::GetConcreteInstance()) + { + G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); + G4int n_trajectories = 0; + if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); + for(G4int i=0; iGetTrajectoryContainer()))[i]); + if (drawFlag == "all") + trj->DrawTrajectory(1000); + else + if ((drawFlag == "charged") && (trj->GetCharge() != 0.)) + trj->DrawTrajectory(1000); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + diff --git a/examples/extended/exoticphysics/monopole/src/EventActionMessenger.cc b/examples/extended/exoticphysics/monopole/src/EventActionMessenger.cc new file mode 100644 index 0000000000..53c1ddbd56 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/src/EventActionMessenger.cc @@ -0,0 +1,81 @@ +// +// ******************************************************************** +// * 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: EventActionMessenger.cc,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "EventActionMessenger.hh" + +#include "EventAction.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +EventActionMessenger::EventActionMessenger(EventAction* EvAct):eventAction(EvAct) +{ + eventDir = new G4UIdirectory("/testex/event/"); + eventDir->SetGuidance("event control"); + + DrawCmd = new G4UIcmdWithAString("/testex/event/drawTracks",this); + DrawCmd->SetGuidance("Draw the tracks in the event"); + DrawCmd->SetGuidance(" Choice : none,charged, all"); + DrawCmd->SetParameterName("choice",true); + DrawCmd->SetDefaultValue("all"); + DrawCmd->SetCandidates("none charged all"); + DrawCmd->AvailableForStates(G4State_Idle); + + PrintCmd = new G4UIcmdWithAnInteger("/testex/event/printModulo",this); + PrintCmd->SetGuidance("Print events modulo n"); + PrintCmd->SetParameterName("EventNb",false); + PrintCmd->SetRange("EventNb>0"); + PrintCmd->AvailableForStates(G4State_Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +EventActionMessenger::~EventActionMessenger() +{ + delete DrawCmd; + delete PrintCmd; + delete eventDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void EventActionMessenger::SetNewValue(G4UIcommand* command, G4String newValue) +{ + if(command == DrawCmd) + {eventAction->SetDrawFlag(newValue);} + + if(command == PrintCmd) + {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/exoticphysics/monopole/src/G4Monopole.cc b/examples/extended/exoticphysics/monopole/src/G4Monopole.cc new file mode 100644 index 0000000000..cbc077baf5 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/src/G4Monopole.cc @@ -0,0 +1,112 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +//--------------------------------------------------------------------------- +// +// ClassName: G4Monopole +// +// Description: +// +// Authors: 21.03.05 V.Ivanchenko +// +// Modified: +// +//---------------------------------------------------------------------------- +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "G4Monopole.hh" +#include "G4ParticleTable.hh" + +// ###################################################################### +// ### Monopole ### +// ###################################################################### + +G4Monopole* G4Monopole::theMonopole = 0; +G4double G4Monopole::magCharge = 0.0; + +G4Monopole::G4Monopole( + const G4String& aName, G4double mass, + G4double width, G4double charge, + G4int iSpin, G4int iParity, + G4int iConjugation, G4int iIsospin, + G4int iIsospin3, G4int gParity, + const G4String& pType, G4int lepton, + G4int baryon, G4int encoding, + G4bool stable, G4double lifetime, + G4DecayTable *decaytable) + : G4ParticleDefinition( aName, mass, width, charge, iSpin, iParity, + iConjugation, iIsospin, iIsospin3, gParity, pType, + lepton, baryon, encoding, stable, lifetime, decaytable ) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4Monopole::~G4Monopole() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +// +// Arguments for constructor are as follows +// name mass width charge +// 2*spin parity C-conjugation +// 2*Isospin 2*Isospin3 G-parity +// type lepton number baryon number PDG encoding +// stable lifetime decay table +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4Monopole* G4Monopole::MonopoleDefinition(G4double mass, G4int mCharge, G4int eCharge) +{ + if(!theMonopole) { + magCharge = eplus * G4double(mCharge) / fine_structure_const * 0.5; + theMonopole = new G4Monopole( + "monopole", mass, 0.0*MeV, eplus*G4double(eCharge), + 0, 0, 0, + 0, 0, 0, + "boson", 0, 0, 0, + true, -1.0, 0); + + + G4cout << "Monopole is created: m(GeV)= " << theMonopole->GetPDGMass()/GeV + << " Qel= " << theMonopole->GetPDGCharge()/eplus + << " Qmag= " << magCharge/eplus + << G4endl; + } + return theMonopole; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +G4Monopole* G4Monopole::Monopole() +{ + if(!theMonopole) theMonopole = MonopoleDefinition(); + return theMonopole; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/exoticphysics/monopole/src/G4MonopolePhysics.cc b/examples/extended/exoticphysics/monopole/src/G4MonopolePhysics.cc new file mode 100644 index 0000000000..25bd349f5e --- /dev/null +++ b/examples/extended/exoticphysics/monopole/src/G4MonopolePhysics.cc @@ -0,0 +1,91 @@ +// +// ******************************************************************** +// * 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: G4MonopolePhysics.cc,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: G4MonopolePhysics +// +// Author: V.Ivanchenko 13.03.2005 +// +// Modified: +// +//---------------------------------------------------------------------------- +// +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4Monopole.hh" +#include "G4MonopolePhysics.hh" +#include "G4ParticleDefinition.hh" +#include "G4ProcessManager.hh" + +#include "G4StepLimiter.hh" +#include "G4Transportation.hh" +#include "G4MultipleScattering.hh" +#include "G4mplIonisation.hh" +#include "G4hhIonisation.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4MonopolePhysics::G4MonopolePhysics(const G4String& name): G4VPhysicsConstructor(name) +{} + +G4MonopolePhysics::~G4MonopolePhysics() +{} + +void G4MonopolePhysics::ConstructParticle() +{ + G4Monopole::MonopoleDefinition(); +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void G4MonopolePhysics::ConstructProcess() +{ + + // Add standard EM Processes for gamma + G4cout << "G4MonopolePhysics::ConstructProcess" << G4endl; + + G4Monopole* mpl = G4Monopole::MonopoleDefinition(); + + G4ProcessManager* pmanager = new G4ProcessManager(mpl); + mpl->SetProcessManager(pmanager); + + pmanager->AddProcess( new G4Transportation(), -1, 0, 0); + pmanager->AddProcess( new G4mplIonisation(mpl->MagneticCharge()), -1, 1, 1); + pmanager->AddProcess( new G4StepLimiter(), -1, -1, 3); + if(mpl->GetPDGCharge() != 0.0) { + pmanager->AddProcess(new G4hhIonisation(), -1, 2, 2); + } + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/exoticphysics/monopole/src/PrimaryGeneratorAction.cc b/examples/extended/exoticphysics/monopole/src/PrimaryGeneratorAction.cc new file mode 100644 index 0000000000..424f9fb219 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/src/PrimaryGeneratorAction.cc @@ -0,0 +1,93 @@ +// +// ******************************************************************** +// * 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/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "PrimaryGeneratorAction.hh" + +#include "DetectorConstruction.hh" +#include "PrimaryGeneratorMessenger.hh" + +#include "G4Event.hh" +#include "G4ParticleGun.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" +#include "Randomize.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PrimaryGeneratorAction::PrimaryGeneratorAction(DetectorConstruction* det) +:detector(det) +{ + particleGun = new G4ParticleGun(1); + G4ParticleDefinition* particle = G4ParticleTable::GetParticleTable()->FindParticle("monopole"); + particleGun->SetParticleDefinition(particle); + particleGun->SetParticleEnergy(100 * GeV); + particleGun->SetParticleMomentumDirection(G4ThreeVector(1., 0., 0.)); + + rndmBeam = 0.; + EbeamCumul = 0.; + + //create a messenger for this class + gunMessenger = new PrimaryGeneratorMessenger(this); +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +PrimaryGeneratorAction::~PrimaryGeneratorAction() +{ + delete particleGun; + delete gunMessenger; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) +{ + //this function is called at the begining of event + G4double x0 = -0.5*(detector->GetWorldSizeX()); + G4double y0 = 0.*cm, z0 = 0.*cm; + + //randomize the beam, if requested. + if (rndmBeam > 0.) + { + if (rndmBeam > detector->GetAbsorSizeYZ()) + rndmBeam = detector->GetAbsorSizeYZ(); + G4double rbeam = 0.5*rndmBeam; + y0 = (2*G4UniformRand()-1.)*rbeam; + z0 = (2*G4UniformRand()-1.)*rbeam; + } + particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0)); + particleGun->GeneratePrimaryVertex(anEvent); + + EbeamCumul += particleGun->GetParticleEnergy(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/exoticphysics/monopole/src/PrimaryGeneratorMessenger.cc b/examples/extended/exoticphysics/monopole/src/PrimaryGeneratorMessenger.cc new file mode 100644 index 0000000000..8bd35d984d --- /dev/null +++ b/examples/extended/exoticphysics/monopole/src/PrimaryGeneratorMessenger.cc @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * 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: PrimaryGeneratorMessenger.cc,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "PrimaryGeneratorMessenger.hh" + +#include "PrimaryGeneratorAction.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PrimaryGeneratorMessenger::PrimaryGeneratorMessenger(PrimaryGeneratorAction* Gun):Action(Gun) +{ + testexDir = new G4UIdirectory("/testex/"); + testexDir->SetGuidance(" detector control."); + + gunDir = new G4UIdirectory("/testex/gun/"); + gunDir->SetGuidance("gun control"); + + RndmCmd = new G4UIcmdWithADoubleAndUnit("/testex/gun/rndm", this); + RndmCmd->SetGuidance("random lateral extension on the beam"); + RndmCmd->SetParameterName("rBeam", false); + RndmCmd->SetRange("rBeam>=0."); + RndmCmd->SetUnitCategory("Length"); + RndmCmd->AvailableForStates(G4State_PreInit, G4State_Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PrimaryGeneratorMessenger::~PrimaryGeneratorMessenger() +{ + delete RndmCmd; + delete gunDir; + delete testexDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void PrimaryGeneratorMessenger::SetNewValue(G4UIcommand* command, G4String newValue) +{ + if (command == RndmCmd) + {Action->SetRndmBeam(RndmCmd->GetNewDoubleValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/exoticphysics/monopole/src/RunAction.cc b/examples/extended/exoticphysics/monopole/src/RunAction.cc new file mode 100644 index 0000000000..d1160c0187 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/src/RunAction.cc @@ -0,0 +1,249 @@ +// +// ******************************************************************** +// * 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/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "RunAction.hh" +#include "DetectorConstruction.hh" +#include "QGSP.hh" +#include "PrimaryGeneratorAction.hh" +#include "RunActionMessenger.hh" + +#include "G4Run.hh" +#include "G4RunManager.hh" +#include "G4UnitsTable.hh" +#include "G4ios.hh" + +#include "Randomize.hh" +#include "G4EmCalculator.hh" + +#ifdef G4ANALYSIS_USE +#include "AIDA/AIDA.h" +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +RunAction::RunAction(DetectorConstruction* det, PrimaryGeneratorAction* kin):detector(det), kinematic(kin), af(0), tree(0) +{ + verboseLevel = 0; + binLength = offsetX = 0.; + histo[0] = 0; + tree = 0; + af = 0; +#ifdef G4ANALYSIS_USE + // Creating the analysis factory + af = AIDA_createAnalysisFactory(); + ftype = "hbook"; + fname = "monopole"; +#endif + + // create commands for interactive definition of the detector + runActionMessenger = new RunActionMessenger(this); +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +RunAction::~RunAction() +{ +#ifdef G4ANALYSIS_USE + delete af; +#endif +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void RunAction::bookHisto() +{ + G4double length = detector->GetAbsorSizeX(); + if(!binLength) binLength = 5 * mm; + if(binLength > detector->GetMaxStepSize()) binLength = detector->GetMaxStepSize(); + G4int nbBins = (int)(0.5 + length / binLength); + offsetX = 0.5 * length; + +#ifdef G4ANALYSIS_USE + if(GetVerbose() > 0) G4cout << "\n----> Histogram Tree opened" << G4endl; + + // Create the tree factory + AIDA::ITreeFactory* tf = af->createTreeFactory(); + + // Create a tree mapped to an hbook file. + G4bool readOnly = false; + G4bool createNew = true; + //G4String ftype = "hbook"; + //G4String fname = "monopole"; + G4String fName = fname; + fName += "."; + fName += ftype; + G4String option = "--noErrors uncompress"; + tree = tf->create(fName,ftype, readOnly, createNew, option); + + // Create a histogram factory, whose histograms will be handled by the tree + AIDA::IHistogramFactory* hf = af->createHistogramFactory(*tree); + + // Create histograms + histo[0] = hf->createHistogram1D("1","Edep (MeV/mm) along absorber (mm)", nbBins, 0, length); + histo[1] = hf->createHistogram1D("2","DEDX (MeV/mm) of proton", 100, -3., 7.); + histo[2] = hf->createHistogram1D("3","DEDX (MeV/mm) of monopole", 100, -3., 7.); + histo[3] = hf->createHistogram1D("4","Range(mm) of proton", 100, -3., 7.); + histo[4] = hf->createHistogram1D("5","Range(mm) of monopole", 100, -3., 7.); + + delete tf; + delete hf; +#endif +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void RunAction::saveHisto() +{ +#ifdef G4ANALYSIS_USE + tree->commit(); // Writing the histograms to the file + tree->close(); // and closing the tree (and the file) + delete tree; + tree = 0; + if(GetVerbose() > 0) G4cout << "\n----> Histogram Tree saved" << G4endl; +#endif +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void RunAction::SetBinSize(G4double size) +{ + binLength = size; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void RunAction::FillHisto(G4int ih, G4double x, G4double weight) +{ +#ifdef G4ANALYSIS_USE + if(histo[ih]) histo[ih]->fill(x, weight); +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void RunAction::BeginOfRunAction(const G4Run* aRun) +{ + if(GetVerbose() > 0) G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; + + // save Rndm status + G4RunManager::GetRunManager()->SetRandomNumberStore(true); + CLHEP::HepRandom::showEngineStatus(); + + //initialize projected range, tallies, Ebeam, and book histograms + projRange = projRange2 = 0.; + kinematic->ResetEbeamCumul(); + bookHisto(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void RunAction::EndOfRunAction(const G4Run* aRun) +{ + G4int NbofEvents = aRun->GetNumberOfEvent(); + if (NbofEvents == 0) return; + + //run conditions + // + G4Material* material = detector->GetAbsorMaterial(); + G4double density = material->GetDensity(); + + G4String particle = kinematic->GetParticleGun()->GetParticleDefinition()->GetParticleName(); + G4double energy = kinematic->GetParticleGun()->GetParticleEnergy(); + + if(GetVerbose() > 0){ + G4cout << "\n The run consists of " << NbofEvents << " "<< particle << " of " + << G4BestUnit(energy,"Energy") << " through " + << G4BestUnit(detector->GetAbsorSizeX(),"Length") << " of " + << material->GetName() << " (density: " + << G4BestUnit(density,"Volumic Mass") << ")" << G4endl; + }; + + //compute projected range and straggling + + projRange /= NbofEvents; projRange2 /= NbofEvents; + G4double rms = projRange2 - projRange*projRange; + if (rms>0.) rms = std::sqrt(rms); else rms = 0.; + + if(GetVerbose() > 0){ + G4cout.precision(5); + G4cout << "\n projected Range= " << G4BestUnit(projRange, "Length") + << " rms= " << G4BestUnit(rms, "Length") + << G4endl; + }; + + G4double ekin[100], dedxproton[100], dedxmp[100]; + G4EmCalculator calc; + calc.SetVerbose(0); + G4int i; + for(i = 0; i < 100; i++) { + ekin[i] = std::pow(10., 0.1*G4double(i)) * keV; + dedxproton[i] = calc.ComputeElectronicDEDX(ekin[i], "proton", material->GetName()); + dedxmp[i] = calc.ComputeElectronicDEDX(ekin[i], "monopole", material->GetName()); + } + + if(GetVerbose() > 1){ + G4cout << "### Stopping Powers" << G4endl; + for(i=0; i<100; i++) { + G4cout << " E(MeV)= " << ekin[i] << " dedxp= " << dedxproton[i] + << " dedxmp= " << dedxmp[i] + << G4endl; + } + }; + +#ifdef G4ANALYSIS_USE + // normalize histogram + G4double fac = (mm/MeV) / (NbofEvents * binLength); + histo[0]->scale(fac); + + G4String matName = detector->GetAbsorMaterial()->GetName(); + if(GetVerbose() > 0){ + G4cout << "Range table for " << matName << G4endl; + }; + + + for(i=0; i<100; i++) { + G4double e = std::log10(ekin[i] / MeV) + 0.05; + histo[1]->fill(e, dedxproton[i]); + histo[2]->fill(e, dedxmp[i]); + histo[3]->fill(e, std::log10(calc.GetRange(ekin[i], "proton", matName) / mm)); + histo[4]->fill(e, std::log10(calc.GetRange(ekin[i], "monopole", matName) / mm)); + } + +#endif + + // save and clean histo + saveHisto(); + + // show Rndm status + CLHEP::HepRandom::showEngineStatus(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/exoticphysics/monopole/src/RunActionMessenger.cc b/examples/extended/exoticphysics/monopole/src/RunActionMessenger.cc new file mode 100644 index 0000000000..d17a7f2f86 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/src/RunActionMessenger.cc @@ -0,0 +1,98 @@ +// +// ******************************************************************** +// * 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: RunActionMessenger.cc,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "RunActionMessenger.hh" + +#include "RunAction.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithADouble.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithAString.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +RunActionMessenger::RunActionMessenger(RunAction * ra): runaction(ra) +{ + actDir = new G4UIdirectory("/testex/run/"); + actDir->SetGuidance("run commands"); + + binSizeCmd = new G4UIcmdWithADouble("/testex/run/binSize", this); + binSizeCmd->SetGuidance("Set bin size."); + binSizeCmd->SetParameterName("binSize", false); + binSizeCmd->AvailableForStates(G4State_PreInit, G4State_Idle); + + verboseCmd = new G4UIcmdWithAnInteger("/testex/run/verbose", this); + verboseCmd->SetGuidance("Set verbose level."); + verboseCmd->SetParameterName("verbose", false); + verboseCmd->AvailableForStates(G4State_PreInit, G4State_Idle); + + histoNameCmd = new G4UIcmdWithAString("/testex/run/HistoName", this); + histoNameCmd->SetGuidance("Set histo file name."); + histoNameCmd->SetParameterName("histoName", false); + histoNameCmd->AvailableForStates(G4State_PreInit, G4State_Idle); + + histoTypeCmd = new G4UIcmdWithAString("/testex/run/HistoType", this); + histoTypeCmd->SetGuidance("Set histo file type."); + histoTypeCmd->SetParameterName("histoType", false); + histoTypeCmd->AvailableForStates(G4State_PreInit, G4State_Idle); + +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +RunActionMessenger::~RunActionMessenger() +{ + delete binSizeCmd; + delete verboseCmd; + delete histoNameCmd; + delete histoTypeCmd; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void RunActionMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + + if( command == binSizeCmd ) + { runaction->SetBinSize(binSizeCmd->GetNewDoubleValue(newValue));} + + if( command == verboseCmd ) + { runaction->SetVerbose(verboseCmd->GetNewIntValue(newValue));} + + if( command == histoNameCmd ) + { runaction->SetHistoName(newValue);} + + if( command == histoTypeCmd ) + { runaction->SetHistoType(newValue);} + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/exoticphysics/monopole/src/SteppingAction.cc b/examples/extended/exoticphysics/monopole/src/SteppingAction.cc new file mode 100644 index 0000000000..8feece98b8 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/src/SteppingAction.cc @@ -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: SteppingAction.cc,v 1.2 2007/12/10 16:28:17 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "SteppingAction.hh" +#include "DetectorConstruction.hh" +#include "RunAction.hh" +#include "G4SteppingManager.hh" +#include "G4VProcess.hh" +#include "G4ParticleTypes.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +SteppingAction::SteppingAction(DetectorConstruction* det,RunAction* RuAct):detector(det), runAction(RuAct) +{} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +SteppingAction::~SteppingAction() +{} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void SteppingAction::UserSteppingAction(const G4Step* aStep) +{ + G4double edep = aStep->GetTotalEnergyDeposit(); + if (edep <= 0.) return; + + //Bragg curve + G4StepPoint* prePoint = aStep->GetPreStepPoint(); + G4StepPoint* postPoint = aStep->GetPostStepPoint(); + + G4double x = (prePoint->GetPosition().x() + postPoint->GetPosition().x()) * 0.5; + x += runAction->GetOffsetX(); + runAction->FillHisto(0, x/mm , edep); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/exoticphysics/monopole/src/TrackingAction.cc b/examples/extended/exoticphysics/monopole/src/TrackingAction.cc new file mode 100644 index 0000000000..97e50d56d0 --- /dev/null +++ b/examples/extended/exoticphysics/monopole/src/TrackingAction.cc @@ -0,0 +1,53 @@ +// +// ******************************************************************** +// * 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: TrackingAction.cc,v 1.1 2007/08/16 10:32:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "TrackingAction.hh" +#include "RunAction.hh" +#include "G4Track.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +TrackingAction::TrackingAction(RunAction* run): runAction(run) +{} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void TrackingAction::PostUserTrackingAction(const G4Track* aTrack) +{ + // extract Projected Range of primary particle + if (aTrack->GetTrackID() == 1) { + G4double x = aTrack->GetPosition().x() + runAction->GetOffsetX(); + runAction->AddProjRange(x); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/field/BlineTracer/include/G4BlineEquation.hh b/examples/extended/field/BlineTracer/include/G4BlineEquation.hh index efa43aad10..33fbdaf0df 100644 --- a/examples/extended/field/BlineTracer/include/G4BlineEquation.hh +++ b/examples/extended/field/BlineTracer/include/G4BlineEquation.hh @@ -25,7 +25,7 @@ // // // $Id: G4BlineEquation.hh,v 1.2 2006/06/29 17:14:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/examples/extended/field/BlineTracer/include/G4BlineEventAction.hh b/examples/extended/field/BlineTracer/include/G4BlineEventAction.hh index 988c4d8339..67e5111607 100644 --- a/examples/extended/field/BlineTracer/include/G4BlineEventAction.hh +++ b/examples/extended/field/BlineTracer/include/G4BlineEventAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4BlineEventAction.hh,v 1.2 2006/06/29 17:14:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/examples/extended/field/BlineTracer/include/G4BlinePrimaryGeneratorAction.hh b/examples/extended/field/BlineTracer/include/G4BlinePrimaryGeneratorAction.hh index daf7354db7..3dd867e909 100644 --- a/examples/extended/field/BlineTracer/include/G4BlinePrimaryGeneratorAction.hh +++ b/examples/extended/field/BlineTracer/include/G4BlinePrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4BlinePrimaryGeneratorAction.hh,v 1.2 2006/06/29 17:14:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/examples/extended/field/BlineTracer/include/G4BlineSteppingAction.hh b/examples/extended/field/BlineTracer/include/G4BlineSteppingAction.hh index 45acb9aba8..010f2f6e1b 100644 --- a/examples/extended/field/BlineTracer/include/G4BlineSteppingAction.hh +++ b/examples/extended/field/BlineTracer/include/G4BlineSteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4BlineSteppingAction.hh,v 1.2 2006/06/29 17:15:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/examples/extended/field/BlineTracer/include/G4BlineTracer.hh b/examples/extended/field/BlineTracer/include/G4BlineTracer.hh index 39c78c90b0..26be6870d4 100644 --- a/examples/extended/field/BlineTracer/include/G4BlineTracer.hh +++ b/examples/extended/field/BlineTracer/include/G4BlineTracer.hh @@ -25,7 +25,7 @@ // // // $Id: G4BlineTracer.hh,v 1.2 2006/06/29 17:15:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/examples/extended/field/BlineTracer/include/G4BlineTracerMessenger.hh b/examples/extended/field/BlineTracer/include/G4BlineTracerMessenger.hh index 00df149512..1b5b9fabac 100644 --- a/examples/extended/field/BlineTracer/include/G4BlineTracerMessenger.hh +++ b/examples/extended/field/BlineTracer/include/G4BlineTracerMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4BlineTracerMessenger.hh,v 1.2 2006/06/29 17:15:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/examples/extended/field/BlineTracer/src/G4BlineEquation.cc b/examples/extended/field/BlineTracer/src/G4BlineEquation.cc index df061a873d..627fb71c04 100644 --- a/examples/extended/field/BlineTracer/src/G4BlineEquation.cc +++ b/examples/extended/field/BlineTracer/src/G4BlineEquation.cc @@ -25,7 +25,7 @@ // // // $Id: G4BlineEquation.cc,v 1.2 2006/06/29 17:15:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/examples/extended/field/BlineTracer/src/G4BlineEventAction.cc b/examples/extended/field/BlineTracer/src/G4BlineEventAction.cc index eb9728a76c..a8cdac7745 100644 --- a/examples/extended/field/BlineTracer/src/G4BlineEventAction.cc +++ b/examples/extended/field/BlineTracer/src/G4BlineEventAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4BlineEventAction.cc,v 1.2 2006/06/29 17:15:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/examples/extended/field/BlineTracer/src/G4BlinePrimaryGeneratorAction.cc b/examples/extended/field/BlineTracer/src/G4BlinePrimaryGeneratorAction.cc index 1e05b21b30..41006dbae1 100644 --- a/examples/extended/field/BlineTracer/src/G4BlinePrimaryGeneratorAction.cc +++ b/examples/extended/field/BlineTracer/src/G4BlinePrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4BlinePrimaryGeneratorAction.cc,v 1.3 2006/06/29 17:15:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/examples/extended/field/BlineTracer/src/G4BlineSteppingAction.cc b/examples/extended/field/BlineTracer/src/G4BlineSteppingAction.cc index 4fdf62d556..a8c53fb280 100644 --- a/examples/extended/field/BlineTracer/src/G4BlineSteppingAction.cc +++ b/examples/extended/field/BlineTracer/src/G4BlineSteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4BlineSteppingAction.cc,v 1.2 2006/06/29 17:15:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/examples/extended/field/BlineTracer/src/G4BlineTracer.cc b/examples/extended/field/BlineTracer/src/G4BlineTracer.cc index ebf194dccf..a4d32e6de7 100644 --- a/examples/extended/field/BlineTracer/src/G4BlineTracer.cc +++ b/examples/extended/field/BlineTracer/src/G4BlineTracer.cc @@ -25,7 +25,7 @@ // // // $Id: G4BlineTracer.cc,v 1.3 2006/06/29 17:15:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/examples/extended/field/BlineTracer/src/G4BlineTracerMessenger.cc b/examples/extended/field/BlineTracer/src/G4BlineTracerMessenger.cc index 4d31638d8c..49e9cc1ebc 100644 --- a/examples/extended/field/BlineTracer/src/G4BlineTracerMessenger.cc +++ b/examples/extended/field/BlineTracer/src/G4BlineTracerMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4BlineTracerMessenger.cc,v 1.2 2006/06/29 17:15:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // diff --git a/examples/extended/field/History b/examples/extended/field/History index eca2830d1c..c03d279e8c 100644 --- a/examples/extended/field/History +++ b/examples/extended/field/History @@ -1,4 +1,4 @@ -$Id: History,v 1.4 2005/05/03 10:05:49 allison Exp $ +$Id: History,v 1.5 2007/10/30 03:36:15 gum Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,7 +15,16 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- -3rd May 2005 John Allison (examples-V07-00-03) +29th Oct 2007 Peter Gumplinger (fieldex-V09-00-00) +-------------------------------------------------- +- Add new field example field04 to exhibit the way + overlapping fields may be handled in Geant4. + Thanks to Tom Roberts and Muons Inc. + G4BEAMLINE release 1.12 + http://g4beamline.muonsinc.com + +3rd May 2005 John Allison (fieldex-V07-00-03) +------------------------------------------------ - Replaced vis manager with G4VisExecutive. Dec 3rd, 2004 Gabriele Cosmo (fieldex-V06-02-00) diff --git a/examples/extended/field/field01/field01.cc b/examples/extended/field/field01/field01.cc index 5b57329540..115f1a70fe 100644 --- a/examples/extended/field/field01/field01.cc +++ b/examples/extended/field/field01/field01.cc @@ -25,7 +25,7 @@ // // // $Id: field01.cc,v 1.8 2006/06/29 17:15:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/field/field01/field01.out b/examples/extended/field/field01/field01.out index 99fe248cc8..7d4185784d 100644 --- a/examples/extended/field/field01/field01.out +++ b/examples/extended/field/field01/field01.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,45 +9,45 @@ ***** Table : Nb of materials = 11 ***** - Material: Mylar density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 28.743 cm + Material: Mylar density: 1.390 g/cm3 RadL: 28.743 cm Imean: 75.075 eV ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 33.30 % ElmAbundance 18.18 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 62.49 % ElmAbundance 45.45 % ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 4.20 % ElmAbundance 36.36 % - Material: Polypropelene density: 910.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 49.214 cm + Material: Polypropelene density: 910.000 mg/cm3 RadL: 49.214 cm Imean: 56.713 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 14.40 % ElmAbundance 66.67 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 85.60 % ElmAbundance 33.33 % - Material: Kr density: 3.700 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 30.736 m + Material: Kr density: 3.700 mg/cm3 RadL: 30.736 m Imean: 352.800 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Kr ( ) Z = 36.0 N = 83.8 A = 83.80 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Argon density: 1.784 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 109.604 m + Material: Argon density: 1.784 mg/cm3 RadL: 109.604 m Imean: 187.200 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Argon (Ar) Z = 18.0 N = 39.9 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: N2 density: 1.251 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 303.846 m + Material: N2 density: 1.251 mg/cm3 RadL: 303.846 m Imean: 81.900 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: O2 density: 1.429 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 239.621 m + Material: O2 density: 1.429 mg/cm3 RadL: 239.621 m Imean: 95.200 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Air density: 0.000 mg/cm3 temperature: 273.15 K pressure: 0.00 atm RadLength: 28329272.015 km + Material: Air density: 0.000 mg/cm3 RadL: 28329272.015 km Imean: 85.623 eV temperature: 273.15 K pressure: 0.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 75.57 % ElmAbundance 78.48 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 23.15 % ElmAbundance 21.05 % ---> Element: Argon (Ar) Z = 18.0 N = 39.9 A = 39.95 g/mole ElmMassFraction: 1.28 % ElmAbundance 0.47 % - Material: Xenon density: 5.858 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.478 m + Material: Xenon density: 5.858 mg/cm3 RadL: 14.478 m Imean: 480.600 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Xenon ( ) Z = 54.0 N = 131.3 A = 131.29 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: CO2 density: 1.977 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 183.083 m + Material: CO2 density: 1.977 mg/cm3 RadL: 183.083 m Imean: 90.164 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 27.29 % ElmAbundance 33.33 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 72.71 % ElmAbundance 66.67 % - Material: Xe20CO2 density: 5.082 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 17.750 m + Material: Xe20CO2 density: 5.082 mg/cm3 RadL: 17.750 m Imean: 411.175 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Xenon ( ) Z = 54.0 N = 131.3 A = 131.29 g/mole ElmMassFraction: 92.20 % ElmAbundance 56.91 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 2.13 % ElmAbundance 14.36 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 5.67 % ElmAbundance 28.73 % - Material: Kr20CO2 density: 3.601 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 34.158 m + Material: Kr20CO2 density: 3.601 mg/cm3 RadL: 34.158 m Imean: 297.188 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Kr ( ) Z = 36.0 N = 83.8 A = 83.80 g/mole ElmMassFraction: 89.00 % ElmAbundance 58.62 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 3.00 % ElmAbundance 13.79 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 8.00 % ElmAbundance 27.59 % @@ -115,7 +115,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -128,7 +128,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -147,7 +147,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -159,7 +159,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -176,7 +176,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -194,7 +194,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -207,7 +207,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -239,7 +239,7 @@ Step# X Y Z Direction x dir y dir Run terminated. Run Summary Number of events processed : 1 - User=0.01s Real=0.03s Sys=0.01s + User=0s Real=0.02s Sys=0.01s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. ========= Table of registered couples ============================== @@ -305,7 +305,7 @@ Step# X Y Z Direction x dir y dir Run terminated. Run Summary Number of events processed : 1 - User=0s Real=0.01s Sys=0.01s + User=0.01s Real=0.01s Sys=0s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. ========= Table of registered couples ============================== @@ -338,7 +338,7 @@ Step# X Y Z Direction x dir y dir Run terminated. Run Summary Number of events processed : 1 - User=0.01s Real=0.01s Sys=0s + User=0s Real=0s Sys=0s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. ========= Table of registered couples ============================== @@ -371,7 +371,7 @@ Step# X Y Z Direction x dir y dir Run terminated. Run Summary Number of events processed : 1 - User=0s Real=0s Sys=0s + User=0.01s Real=0.01s Sys=0s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. G4ClassicalRK4 (default) is called The minimal step is equal to 0.1 mm diff --git a/examples/extended/field/field01/include/F01CalorHit.hh b/examples/extended/field/field01/include/F01CalorHit.hh index c88e50228b..a86877ce52 100644 --- a/examples/extended/field/field01/include/F01CalorHit.hh +++ b/examples/extended/field/field01/include/F01CalorHit.hh @@ -25,7 +25,7 @@ // // // $Id: F01CalorHit.hh,v 1.4 2006/06/29 17:15:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01CalorimeterSD.hh b/examples/extended/field/field01/include/F01CalorimeterSD.hh index f422a0bd0d..015d4f93a5 100644 --- a/examples/extended/field/field01/include/F01CalorimeterSD.hh +++ b/examples/extended/field/field01/include/F01CalorimeterSD.hh @@ -25,7 +25,7 @@ // // // $Id: F01CalorimeterSD.hh,v 1.4 2006/06/29 17:15:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01DetectorConstruction.hh b/examples/extended/field/field01/include/F01DetectorConstruction.hh index b8e3c5b26c..ff928a7308 100644 --- a/examples/extended/field/field01/include/F01DetectorConstruction.hh +++ b/examples/extended/field/field01/include/F01DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: F01DetectorConstruction.hh,v 1.7 2006/06/29 17:15:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01DetectorMessenger.hh b/examples/extended/field/field01/include/F01DetectorMessenger.hh index 56e7498fc2..01b7b5a6cd 100644 --- a/examples/extended/field/field01/include/F01DetectorMessenger.hh +++ b/examples/extended/field/field01/include/F01DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F01DetectorMessenger.hh,v 1.4 2006/06/29 17:15:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01EventAction.hh b/examples/extended/field/field01/include/F01EventAction.hh index 027ae14a49..a62f53ead3 100644 --- a/examples/extended/field/field01/include/F01EventAction.hh +++ b/examples/extended/field/field01/include/F01EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: F01EventAction.hh,v 1.5 2006/06/29 17:15:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01EventActionMessenger.hh b/examples/extended/field/field01/include/F01EventActionMessenger.hh index 01c973626a..f6b84b9b12 100644 --- a/examples/extended/field/field01/include/F01EventActionMessenger.hh +++ b/examples/extended/field/field01/include/F01EventActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F01EventActionMessenger.hh,v 1.3 2006/06/29 17:15:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01FieldMessenger.hh b/examples/extended/field/field01/include/F01FieldMessenger.hh index 9c31530447..f90cbf0dfb 100644 --- a/examples/extended/field/field01/include/F01FieldMessenger.hh +++ b/examples/extended/field/field01/include/F01FieldMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F01FieldMessenger.hh,v 1.7 2006/06/29 17:15:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01FieldSetup.hh b/examples/extended/field/field01/include/F01FieldSetup.hh index 91bd415377..547b66a1e0 100644 --- a/examples/extended/field/field01/include/F01FieldSetup.hh +++ b/examples/extended/field/field01/include/F01FieldSetup.hh @@ -25,7 +25,7 @@ // // // $Id: F01FieldSetup.hh,v 1.3 2006/06/29 17:15:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A class for control of the Magnetic Field of the detector. diff --git a/examples/extended/field/field01/include/F01PhysicsList.hh b/examples/extended/field/field01/include/F01PhysicsList.hh index db98088ec2..64e7d47007 100644 --- a/examples/extended/field/field01/include/F01PhysicsList.hh +++ b/examples/extended/field/field01/include/F01PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: F01PhysicsList.hh,v 1.5 2007/05/23 09:14:09 japost Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef F01PhysicsList_h diff --git a/examples/extended/field/field01/include/F01PhysicsListMessenger.hh b/examples/extended/field/field01/include/F01PhysicsListMessenger.hh index ca0fb2b8da..31dc73136a 100644 --- a/examples/extended/field/field01/include/F01PhysicsListMessenger.hh +++ b/examples/extended/field/field01/include/F01PhysicsListMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F01PhysicsListMessenger.hh,v 1.4 2006/06/29 17:15:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01PrimaryGeneratorAction.hh b/examples/extended/field/field01/include/F01PrimaryGeneratorAction.hh index cc181a175d..228eaf8eee 100644 --- a/examples/extended/field/field01/include/F01PrimaryGeneratorAction.hh +++ b/examples/extended/field/field01/include/F01PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: F01PrimaryGeneratorAction.hh,v 1.3 2006/06/29 17:15:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01PrimaryGeneratorMessenger.hh b/examples/extended/field/field01/include/F01PrimaryGeneratorMessenger.hh index 23e025b69e..e9d233d845 100644 --- a/examples/extended/field/field01/include/F01PrimaryGeneratorMessenger.hh +++ b/examples/extended/field/field01/include/F01PrimaryGeneratorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F01PrimaryGeneratorMessenger.hh,v 1.3 2006/06/29 17:16:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01RunAction.hh b/examples/extended/field/field01/include/F01RunAction.hh index 181ad1b8b0..bbdc803be7 100644 --- a/examples/extended/field/field01/include/F01RunAction.hh +++ b/examples/extended/field/field01/include/F01RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: F01RunAction.hh,v 1.6 2006/06/29 17:16:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01RunMessenger.hh b/examples/extended/field/field01/include/F01RunMessenger.hh index 54a8f19e98..41cc7bc193 100644 --- a/examples/extended/field/field01/include/F01RunMessenger.hh +++ b/examples/extended/field/field01/include/F01RunMessenger.hh @@ -26,7 +26,7 @@ // // $Id: F01RunMessenger.hh,v 1.4 2006/06/29 17:16:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01StepCut.hh b/examples/extended/field/field01/include/F01StepCut.hh index 5e854e9d33..dc2d5146b0 100644 --- a/examples/extended/field/field01/include/F01StepCut.hh +++ b/examples/extended/field/field01/include/F01StepCut.hh @@ -25,7 +25,7 @@ // // // $Id: F01StepCut.hh,v 1.5 2006/06/29 17:16:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01SteppingAction.hh b/examples/extended/field/field01/include/F01SteppingAction.hh index 10aede8d66..aced749968 100644 --- a/examples/extended/field/field01/include/F01SteppingAction.hh +++ b/examples/extended/field/field01/include/F01SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: F01SteppingAction.hh,v 1.4 2006/06/29 17:16:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/include/F01SteppingMessenger.hh b/examples/extended/field/field01/include/F01SteppingMessenger.hh index 28218a625e..0934e6e89b 100644 --- a/examples/extended/field/field01/include/F01SteppingMessenger.hh +++ b/examples/extended/field/field01/include/F01SteppingMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F01SteppingMessenger.hh,v 1.3 2006/06/29 17:16:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field01/include/F01SteppingVerbose.hh b/examples/extended/field/field01/include/F01SteppingVerbose.hh index c911ff6ac6..84bfb8fc01 100644 --- a/examples/extended/field/field01/include/F01SteppingVerbose.hh +++ b/examples/extended/field/field01/include/F01SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: F01SteppingVerbose.hh,v 1.4 2006/06/29 17:16:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/field/field01/src/F01CalorHit.cc b/examples/extended/field/field01/src/F01CalorHit.cc index 1c2c7805c9..4b0cbdd79d 100644 --- a/examples/extended/field/field01/src/F01CalorHit.cc +++ b/examples/extended/field/field01/src/F01CalorHit.cc @@ -25,7 +25,7 @@ // // // $Id: F01CalorHit.cc,v 1.4 2006/06/29 17:16:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01CalorimeterSD.cc b/examples/extended/field/field01/src/F01CalorimeterSD.cc index 2c3554c095..9a1139cbf5 100644 --- a/examples/extended/field/field01/src/F01CalorimeterSD.cc +++ b/examples/extended/field/field01/src/F01CalorimeterSD.cc @@ -25,7 +25,7 @@ // // // $Id: F01CalorimeterSD.cc,v 1.6 2006/06/29 17:16:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01DetectorConstruction.cc b/examples/extended/field/field01/src/F01DetectorConstruction.cc index ad8d45139e..5357992e0e 100644 --- a/examples/extended/field/field01/src/F01DetectorConstruction.cc +++ b/examples/extended/field/field01/src/F01DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: F01DetectorConstruction.cc,v 1.15 2006/06/29 17:16:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01DetectorMessenger.cc b/examples/extended/field/field01/src/F01DetectorMessenger.cc index 900ba650d2..85d6132467 100644 --- a/examples/extended/field/field01/src/F01DetectorMessenger.cc +++ b/examples/extended/field/field01/src/F01DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F01DetectorMessenger.cc,v 1.5 2006/06/29 17:16:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01EventAction.cc b/examples/extended/field/field01/src/F01EventAction.cc index bb28d2e763..cb2cd8f03d 100644 --- a/examples/extended/field/field01/src/F01EventAction.cc +++ b/examples/extended/field/field01/src/F01EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: F01EventAction.cc,v 1.6 2006/06/29 17:16:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01EventActionMessenger.cc b/examples/extended/field/field01/src/F01EventActionMessenger.cc index 5bdc391847..67d3d7877e 100644 --- a/examples/extended/field/field01/src/F01EventActionMessenger.cc +++ b/examples/extended/field/field01/src/F01EventActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F01EventActionMessenger.cc,v 1.4 2006/06/29 17:16:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01FieldMessenger.cc b/examples/extended/field/field01/src/F01FieldMessenger.cc index 1287c717ee..d3714518e3 100644 --- a/examples/extended/field/field01/src/F01FieldMessenger.cc +++ b/examples/extended/field/field01/src/F01FieldMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F01FieldMessenger.cc,v 1.8 2006/06/29 17:16:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01FieldSetup.cc b/examples/extended/field/field01/src/F01FieldSetup.cc index c69acd8708..94e9797925 100644 --- a/examples/extended/field/field01/src/F01FieldSetup.cc +++ b/examples/extended/field/field01/src/F01FieldSetup.cc @@ -25,7 +25,7 @@ // // // $Id: F01FieldSetup.cc,v 1.7 2006/06/29 17:16:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // User Field setup class implementation. // diff --git a/examples/extended/field/field01/src/F01PhysicsList.cc b/examples/extended/field/field01/src/F01PhysicsList.cc index f774b65487..89bcdc488e 100644 --- a/examples/extended/field/field01/src/F01PhysicsList.cc +++ b/examples/extended/field/field01/src/F01PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: F01PhysicsList.cc,v 1.12 2007/05/23 09:14:09 japost Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4Timer.hh" diff --git a/examples/extended/field/field01/src/F01PhysicsListMessenger.cc b/examples/extended/field/field01/src/F01PhysicsListMessenger.cc index 77eb550c50..40812582cd 100644 --- a/examples/extended/field/field01/src/F01PhysicsListMessenger.cc +++ b/examples/extended/field/field01/src/F01PhysicsListMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F01PhysicsListMessenger.cc,v 1.6 2006/06/29 17:16:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01PrimaryGeneratorAction.cc b/examples/extended/field/field01/src/F01PrimaryGeneratorAction.cc index 9b5f93a061..8c03217d24 100644 --- a/examples/extended/field/field01/src/F01PrimaryGeneratorAction.cc +++ b/examples/extended/field/field01/src/F01PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: F01PrimaryGeneratorAction.cc,v 1.8 2006/06/29 17:16:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01PrimaryGeneratorMessenger.cc b/examples/extended/field/field01/src/F01PrimaryGeneratorMessenger.cc index 527c4e2ecc..843da05bd9 100644 --- a/examples/extended/field/field01/src/F01PrimaryGeneratorMessenger.cc +++ b/examples/extended/field/field01/src/F01PrimaryGeneratorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F01PrimaryGeneratorMessenger.cc,v 1.5 2006/06/29 17:16:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01RunAction.cc b/examples/extended/field/field01/src/F01RunAction.cc index 1799d0a5e7..88725e5c73 100644 --- a/examples/extended/field/field01/src/F01RunAction.cc +++ b/examples/extended/field/field01/src/F01RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: F01RunAction.cc,v 1.10 2006/06/29 17:16:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01RunMessenger.cc b/examples/extended/field/field01/src/F01RunMessenger.cc index 022dd22359..81e5546ec2 100644 --- a/examples/extended/field/field01/src/F01RunMessenger.cc +++ b/examples/extended/field/field01/src/F01RunMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F01RunMessenger.cc,v 1.6 2006/06/29 17:16:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01StepCut.cc b/examples/extended/field/field01/src/F01StepCut.cc index d763d97f7a..179988bc12 100644 --- a/examples/extended/field/field01/src/F01StepCut.cc +++ b/examples/extended/field/field01/src/F01StepCut.cc @@ -25,7 +25,7 @@ // // // $Id: F01StepCut.cc,v 1.3 2006/06/29 17:16:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "F01StepCut.hh" diff --git a/examples/extended/field/field01/src/F01SteppingAction.cc b/examples/extended/field/field01/src/F01SteppingAction.cc index fd9f5a4a02..de75071dd7 100644 --- a/examples/extended/field/field01/src/F01SteppingAction.cc +++ b/examples/extended/field/field01/src/F01SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: F01SteppingAction.cc,v 1.7 2006/06/29 17:16:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field01/src/F01SteppingMessenger.cc b/examples/extended/field/field01/src/F01SteppingMessenger.cc index 2d35d5b8ef..0b041be694 100644 --- a/examples/extended/field/field01/src/F01SteppingMessenger.cc +++ b/examples/extended/field/field01/src/F01SteppingMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F01SteppingMessenger.cc,v 1.4 2006/06/29 17:16:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field01/src/F01SteppingVerbose.cc b/examples/extended/field/field01/src/F01SteppingVerbose.cc index 300cb69604..5876a52330 100644 --- a/examples/extended/field/field01/src/F01SteppingVerbose.cc +++ b/examples/extended/field/field01/src/F01SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: F01SteppingVerbose.cc,v 1.7 2006/06/29 17:17:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... diff --git a/examples/extended/field/field02/field02.cc b/examples/extended/field/field02/field02.cc index 3285299ae6..a0e3900363 100644 --- a/examples/extended/field/field02/field02.cc +++ b/examples/extended/field/field02/field02.cc @@ -25,7 +25,7 @@ // // // $Id: field02.cc,v 1.9 2006/06/29 17:17:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/field/field02/field02.out b/examples/extended/field/field02/field02.out index e5996f59d0..3df934f896 100644 --- a/examples/extended/field/field02/field02.out +++ b/examples/extended/field/field02/field02.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -11,45 +11,45 @@ The minimal step is equal to 0.01 mm ***** Table : Nb of materials = 11 ***** - Material: Mylar density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 28.743 cm + Material: Mylar density: 1.390 g/cm3 RadL: 28.743 cm Imean: 75.075 eV ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 33.30 % ElmAbundance 18.18 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 62.49 % ElmAbundance 45.45 % ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 4.20 % ElmAbundance 36.36 % - Material: Polypropelene density: 910.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 49.214 cm + Material: Polypropelene density: 910.000 mg/cm3 RadL: 49.214 cm Imean: 56.713 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 14.40 % ElmAbundance 66.67 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 85.60 % ElmAbundance 33.33 % - Material: Kr density: 3.700 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 30.736 m + Material: Kr density: 3.700 mg/cm3 RadL: 30.736 m Imean: 352.800 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Kr ( ) Z = 36.0 N = 83.8 A = 83.80 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Argon density: 1.784 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 109.604 m + Material: Argon density: 1.784 mg/cm3 RadL: 109.604 m Imean: 187.200 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Argon (Ar) Z = 18.0 N = 39.9 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: N2 density: 1.251 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 303.846 m + Material: N2 density: 1.251 mg/cm3 RadL: 303.846 m Imean: 81.900 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: O2 density: 1.429 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 239.621 m + Material: O2 density: 1.429 mg/cm3 RadL: 239.621 m Imean: 95.200 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Air density: 1.293 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 283.293 m + Material: Air density: 1.293 mg/cm3 RadL: 283.293 m Imean: 85.623 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 75.57 % ElmAbundance 78.48 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 23.15 % ElmAbundance 21.05 % ---> Element: Argon (Ar) Z = 18.0 N = 39.9 A = 39.95 g/mole ElmMassFraction: 1.28 % ElmAbundance 0.47 % - Material: Xenon density: 5.858 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.478 m + Material: Xenon density: 5.858 mg/cm3 RadL: 14.478 m Imean: 480.600 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Xenon ( ) Z = 54.0 N = 131.3 A = 131.29 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: CO2 density: 1.977 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 183.083 m + Material: CO2 density: 1.977 mg/cm3 RadL: 183.083 m Imean: 90.164 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 27.29 % ElmAbundance 33.33 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 72.71 % ElmAbundance 66.67 % - Material: Xe20CO2 density: 5.082 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 17.750 m + Material: Xe20CO2 density: 5.082 mg/cm3 RadL: 17.750 m Imean: 411.175 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Xenon ( ) Z = 54.0 N = 131.3 A = 131.29 g/mole ElmMassFraction: 92.20 % ElmAbundance 56.91 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 2.13 % ElmAbundance 14.36 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 5.67 % ElmAbundance 28.73 % - Material: Kr20CO2 density: 3.601 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 34.158 m + Material: Kr20CO2 density: 3.601 mg/cm3 RadL: 34.158 m Imean: 297.188 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Kr ( ) Z = 36.0 N = 83.8 A = 83.80 g/mole ElmMassFraction: 89.00 % ElmAbundance 58.62 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 3.00 % ElmAbundance 13.79 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 8.00 % ElmAbundance 27.59 % @@ -116,7 +116,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -129,7 +129,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -148,7 +148,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -160,7 +160,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -177,7 +177,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -195,7 +195,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -208,7 +208,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -8221,7 +8221,7 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Ne Run terminated. Run Summary Number of events processed : 100 - User=2.47s Real=3.83s Sys=1.24s + User=2.63s Real=4.53s Sys=1.88s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/extended/field/field02/include/F02CalorHit.hh b/examples/extended/field/field02/include/F02CalorHit.hh index 033dd35c5a..0805ef1b57 100644 --- a/examples/extended/field/field02/include/F02CalorHit.hh +++ b/examples/extended/field/field02/include/F02CalorHit.hh @@ -25,7 +25,7 @@ // // // $Id: F02CalorHit.hh,v 1.4 2006/06/29 17:17:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02CalorimeterSD.hh b/examples/extended/field/field02/include/F02CalorimeterSD.hh index 0b9cba80b4..ecf38a8e4d 100644 --- a/examples/extended/field/field02/include/F02CalorimeterSD.hh +++ b/examples/extended/field/field02/include/F02CalorimeterSD.hh @@ -25,7 +25,7 @@ // // // $Id: F02CalorimeterSD.hh,v 1.4 2006/06/29 17:17:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02DetectorConstruction.hh b/examples/extended/field/field02/include/F02DetectorConstruction.hh index 884d6540b8..1c417e9558 100644 --- a/examples/extended/field/field02/include/F02DetectorConstruction.hh +++ b/examples/extended/field/field02/include/F02DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: F02DetectorConstruction.hh,v 1.6 2006/06/29 17:17:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02DetectorMessenger.hh b/examples/extended/field/field02/include/F02DetectorMessenger.hh index 0b9887f906..73915ed699 100644 --- a/examples/extended/field/field02/include/F02DetectorMessenger.hh +++ b/examples/extended/field/field02/include/F02DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F02DetectorMessenger.hh,v 1.4 2006/06/29 17:17:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02ElectricFieldSetup.hh b/examples/extended/field/field02/include/F02ElectricFieldSetup.hh index 373a96a6c0..0e0b8683b3 100644 --- a/examples/extended/field/field02/include/F02ElectricFieldSetup.hh +++ b/examples/extended/field/field02/include/F02ElectricFieldSetup.hh @@ -25,7 +25,7 @@ // // // $Id: F02ElectricFieldSetup.hh,v 1.2 2006/06/29 17:17:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // A class for control of the Electric Field of the detector. // The field for this case is uniform. diff --git a/examples/extended/field/field02/include/F02EventAction.hh b/examples/extended/field/field02/include/F02EventAction.hh index 79b820769d..7edd321185 100644 --- a/examples/extended/field/field02/include/F02EventAction.hh +++ b/examples/extended/field/field02/include/F02EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: F02EventAction.hh,v 1.4 2006/06/29 17:17:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02EventActionMessenger.hh b/examples/extended/field/field02/include/F02EventActionMessenger.hh index 6c589b9bbc..e60a22317f 100644 --- a/examples/extended/field/field02/include/F02EventActionMessenger.hh +++ b/examples/extended/field/field02/include/F02EventActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F02EventActionMessenger.hh,v 1.3 2006/06/29 17:17:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02FieldMessenger.hh b/examples/extended/field/field02/include/F02FieldMessenger.hh index 5b57f0749f..4f273aba88 100644 --- a/examples/extended/field/field02/include/F02FieldMessenger.hh +++ b/examples/extended/field/field02/include/F02FieldMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F02FieldMessenger.hh,v 1.4 2006/06/29 17:17:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02PhysicsList.hh b/examples/extended/field/field02/include/F02PhysicsList.hh index 874bae94ee..fe4304548a 100644 --- a/examples/extended/field/field02/include/F02PhysicsList.hh +++ b/examples/extended/field/field02/include/F02PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: F02PhysicsList.hh,v 1.5 2007/05/23 13:40:14 tnikitin Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef F02PhysicsList_h diff --git a/examples/extended/field/field02/include/F02PhysicsListMessenger.hh b/examples/extended/field/field02/include/F02PhysicsListMessenger.hh index ebf278e297..39e73c4ebe 100644 --- a/examples/extended/field/field02/include/F02PhysicsListMessenger.hh +++ b/examples/extended/field/field02/include/F02PhysicsListMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F02PhysicsListMessenger.hh,v 1.4 2006/06/29 17:17:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02PrimaryGeneratorAction.hh b/examples/extended/field/field02/include/F02PrimaryGeneratorAction.hh index 632cb5ff43..78b9966b9f 100644 --- a/examples/extended/field/field02/include/F02PrimaryGeneratorAction.hh +++ b/examples/extended/field/field02/include/F02PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: F02PrimaryGeneratorAction.hh,v 1.4 2006/06/29 17:17:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02PrimaryGeneratorMessenger.hh b/examples/extended/field/field02/include/F02PrimaryGeneratorMessenger.hh index e1bdb9e2d4..f1b00700f3 100644 --- a/examples/extended/field/field02/include/F02PrimaryGeneratorMessenger.hh +++ b/examples/extended/field/field02/include/F02PrimaryGeneratorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F02PrimaryGeneratorMessenger.hh,v 1.3 2006/06/29 17:17:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02RunAction.hh b/examples/extended/field/field02/include/F02RunAction.hh index 2451aeb437..d57c3115b4 100644 --- a/examples/extended/field/field02/include/F02RunAction.hh +++ b/examples/extended/field/field02/include/F02RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: F02RunAction.hh,v 1.6 2006/06/29 17:17:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02RunMessenger.hh b/examples/extended/field/field02/include/F02RunMessenger.hh index 220cf1ac31..834122a9a4 100644 --- a/examples/extended/field/field02/include/F02RunMessenger.hh +++ b/examples/extended/field/field02/include/F02RunMessenger.hh @@ -26,7 +26,7 @@ // // $Id: F02RunMessenger.hh,v 1.4 2006/06/29 17:17:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02StepCut.hh b/examples/extended/field/field02/include/F02StepCut.hh index 82c697563b..dd4b5c1c23 100644 --- a/examples/extended/field/field02/include/F02StepCut.hh +++ b/examples/extended/field/field02/include/F02StepCut.hh @@ -25,7 +25,7 @@ // // // $Id: F02StepCut.hh,v 1.5 2006/06/29 17:17:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02SteppingAction.hh b/examples/extended/field/field02/include/F02SteppingAction.hh index 2279082e06..630e508e7b 100644 --- a/examples/extended/field/field02/include/F02SteppingAction.hh +++ b/examples/extended/field/field02/include/F02SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: F02SteppingAction.hh,v 1.5 2006/06/29 17:17:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/include/F02SteppingMessenger.hh b/examples/extended/field/field02/include/F02SteppingMessenger.hh index 567ba4dfc6..7f52482d06 100644 --- a/examples/extended/field/field02/include/F02SteppingMessenger.hh +++ b/examples/extended/field/field02/include/F02SteppingMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F02SteppingMessenger.hh,v 1.3 2006/06/29 17:17:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field02/include/F02SteppingVerbose.hh b/examples/extended/field/field02/include/F02SteppingVerbose.hh index 3aa4b8fa82..a0d9e30852 100644 --- a/examples/extended/field/field02/include/F02SteppingVerbose.hh +++ b/examples/extended/field/field02/include/F02SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: F02SteppingVerbose.hh,v 1.4 2006/06/29 17:17:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/field/field02/src/F02CalorHit.cc b/examples/extended/field/field02/src/F02CalorHit.cc index f5c2a61a2d..764f9479dc 100644 --- a/examples/extended/field/field02/src/F02CalorHit.cc +++ b/examples/extended/field/field02/src/F02CalorHit.cc @@ -25,7 +25,7 @@ // // // $Id: F02CalorHit.cc,v 1.4 2006/06/29 17:17:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02CalorimeterSD.cc b/examples/extended/field/field02/src/F02CalorimeterSD.cc index 7112c143d1..ea01b4ec57 100644 --- a/examples/extended/field/field02/src/F02CalorimeterSD.cc +++ b/examples/extended/field/field02/src/F02CalorimeterSD.cc @@ -25,7 +25,7 @@ // // // $Id: F02CalorimeterSD.cc,v 1.6 2006/06/29 17:17:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02DetectorConstruction.cc b/examples/extended/field/field02/src/F02DetectorConstruction.cc index 9191045c3d..d24e4d701f 100644 --- a/examples/extended/field/field02/src/F02DetectorConstruction.cc +++ b/examples/extended/field/field02/src/F02DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: F02DetectorConstruction.cc,v 1.12 2006/06/29 17:17:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02DetectorMessenger.cc b/examples/extended/field/field02/src/F02DetectorMessenger.cc index 1bca1b20b7..86c008b997 100644 --- a/examples/extended/field/field02/src/F02DetectorMessenger.cc +++ b/examples/extended/field/field02/src/F02DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F02DetectorMessenger.cc,v 1.5 2006/06/29 17:17:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02ElectricFieldSetup.cc b/examples/extended/field/field02/src/F02ElectricFieldSetup.cc index 04e43657d2..676063be8a 100644 --- a/examples/extended/field/field02/src/F02ElectricFieldSetup.cc +++ b/examples/extended/field/field02/src/F02ElectricFieldSetup.cc @@ -25,7 +25,7 @@ // // // $Id: F02ElectricFieldSetup.cc,v 1.2 2006/06/29 17:17:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // User Field class implementation. diff --git a/examples/extended/field/field02/src/F02EventAction.cc b/examples/extended/field/field02/src/F02EventAction.cc index e4c4ae6ed5..c03234d63a 100644 --- a/examples/extended/field/field02/src/F02EventAction.cc +++ b/examples/extended/field/field02/src/F02EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: F02EventAction.cc,v 1.6 2006/06/29 17:18:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02EventActionMessenger.cc b/examples/extended/field/field02/src/F02EventActionMessenger.cc index 0c3d591caa..3c53d6edf5 100644 --- a/examples/extended/field/field02/src/F02EventActionMessenger.cc +++ b/examples/extended/field/field02/src/F02EventActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F02EventActionMessenger.cc,v 1.5 2006/06/29 17:18:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02FieldMessenger.cc b/examples/extended/field/field02/src/F02FieldMessenger.cc index 68a8dae30e..628a794102 100644 --- a/examples/extended/field/field02/src/F02FieldMessenger.cc +++ b/examples/extended/field/field02/src/F02FieldMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F02FieldMessenger.cc,v 1.6 2006/06/29 17:18:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02PhysicsList.cc b/examples/extended/field/field02/src/F02PhysicsList.cc index 8d62d1d6db..c6bd062b8f 100644 --- a/examples/extended/field/field02/src/F02PhysicsList.cc +++ b/examples/extended/field/field02/src/F02PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: F02PhysicsList.cc,v 1.11 2007/05/23 13:40:28 tnikitin Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4Timer.hh" diff --git a/examples/extended/field/field02/src/F02PhysicsListMessenger.cc b/examples/extended/field/field02/src/F02PhysicsListMessenger.cc index 73230806bc..f1f7d75ac9 100644 --- a/examples/extended/field/field02/src/F02PhysicsListMessenger.cc +++ b/examples/extended/field/field02/src/F02PhysicsListMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F02PhysicsListMessenger.cc,v 1.6 2006/06/29 17:18:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02PrimaryGeneratorAction.cc b/examples/extended/field/field02/src/F02PrimaryGeneratorAction.cc index 68a8073b2c..51659f4acd 100644 --- a/examples/extended/field/field02/src/F02PrimaryGeneratorAction.cc +++ b/examples/extended/field/field02/src/F02PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: F02PrimaryGeneratorAction.cc,v 1.5 2006/06/29 17:18:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02PrimaryGeneratorMessenger.cc b/examples/extended/field/field02/src/F02PrimaryGeneratorMessenger.cc index 7c4bfc92be..0997f0cb41 100644 --- a/examples/extended/field/field02/src/F02PrimaryGeneratorMessenger.cc +++ b/examples/extended/field/field02/src/F02PrimaryGeneratorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F02PrimaryGeneratorMessenger.cc,v 1.5 2006/06/29 17:18:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02RunAction.cc b/examples/extended/field/field02/src/F02RunAction.cc index 94f61fab77..2b6d3f81da 100644 --- a/examples/extended/field/field02/src/F02RunAction.cc +++ b/examples/extended/field/field02/src/F02RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: F02RunAction.cc,v 1.8 2006/06/29 17:18:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02RunMessenger.cc b/examples/extended/field/field02/src/F02RunMessenger.cc index b120f1cef9..ea5fd44be6 100644 --- a/examples/extended/field/field02/src/F02RunMessenger.cc +++ b/examples/extended/field/field02/src/F02RunMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F02RunMessenger.cc,v 1.6 2006/06/29 17:18:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02StepCut.cc b/examples/extended/field/field02/src/F02StepCut.cc index 787e715545..74322ae4b3 100644 --- a/examples/extended/field/field02/src/F02StepCut.cc +++ b/examples/extended/field/field02/src/F02StepCut.cc @@ -25,7 +25,7 @@ // // // $Id: F02StepCut.cc,v 1.3 2006/06/29 17:18:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "F02StepCut.hh" diff --git a/examples/extended/field/field02/src/F02SteppingAction.cc b/examples/extended/field/field02/src/F02SteppingAction.cc index d5f1b8ac8c..e963d44988 100644 --- a/examples/extended/field/field02/src/F02SteppingAction.cc +++ b/examples/extended/field/field02/src/F02SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: F02SteppingAction.cc,v 1.6 2006/06/29 17:18:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field02/src/F02SteppingMessenger.cc b/examples/extended/field/field02/src/F02SteppingMessenger.cc index 66b07e0c21..ce3c3a8fcc 100644 --- a/examples/extended/field/field02/src/F02SteppingMessenger.cc +++ b/examples/extended/field/field02/src/F02SteppingMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F02SteppingMessenger.cc,v 1.4 2006/06/29 17:18:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field02/src/F02SteppingVerbose.cc b/examples/extended/field/field02/src/F02SteppingVerbose.cc index 1aad8ec36a..ff0b4fae3c 100644 --- a/examples/extended/field/field02/src/F02SteppingVerbose.cc +++ b/examples/extended/field/field02/src/F02SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: F02SteppingVerbose.cc,v 1.6 2006/06/29 17:18:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/field/field03/field03.cc b/examples/extended/field/field03/field03.cc index c4e3787ed7..aa92d0a54e 100644 --- a/examples/extended/field/field03/field03.cc +++ b/examples/extended/field/field03/field03.cc @@ -25,7 +25,7 @@ // // // $Id: field03.cc,v 1.8 2006/06/29 17:18:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/field/field03/field03.out b/examples/extended/field/field03/field03.out index 0407693c4b..0029f686ac 100644 --- a/examples/extended/field/field03/field03.out +++ b/examples/extended/field/field03/field03.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,45 +9,45 @@ ***** Table : Nb of materials = 11 ***** - Material: Mylar density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 28.743 cm + Material: Mylar density: 1.390 g/cm3 RadL: 28.743 cm Imean: 75.075 eV ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 33.30 % ElmAbundance 18.18 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 62.49 % ElmAbundance 45.45 % ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 4.20 % ElmAbundance 36.36 % - Material: Polypropelene density: 910.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 49.214 cm + Material: Polypropelene density: 910.000 mg/cm3 RadL: 49.214 cm Imean: 56.713 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 14.40 % ElmAbundance 66.67 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 85.60 % ElmAbundance 33.33 % - Material: Kr density: 3.700 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 30.736 m + Material: Kr density: 3.700 mg/cm3 RadL: 30.736 m Imean: 352.800 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Kr ( ) Z = 36.0 N = 83.8 A = 83.80 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Argon density: 1.784 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 109.604 m + Material: Argon density: 1.784 mg/cm3 RadL: 109.604 m Imean: 187.200 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Argon (Ar) Z = 18.0 N = 39.9 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: N2 density: 1.251 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 303.846 m + Material: N2 density: 1.251 mg/cm3 RadL: 303.846 m Imean: 81.900 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: O2 density: 1.429 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 239.621 m + Material: O2 density: 1.429 mg/cm3 RadL: 239.621 m Imean: 95.200 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Air density: 0.000 mg/cm3 temperature: 273.15 K pressure: 0.00 atm RadLength: 28329272.015 km + Material: Air density: 0.000 mg/cm3 RadL: 28329272.015 km Imean: 85.623 eV temperature: 273.15 K pressure: 0.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 75.57 % ElmAbundance 78.48 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 23.15 % ElmAbundance 21.05 % ---> Element: Argon (Ar) Z = 18.0 N = 39.9 A = 39.95 g/mole ElmMassFraction: 1.28 % ElmAbundance 0.47 % - Material: Xenon density: 5.858 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.478 m + Material: Xenon density: 5.858 mg/cm3 RadL: 14.478 m Imean: 480.600 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Xenon ( ) Z = 54.0 N = 131.3 A = 131.29 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: CO2 density: 1.977 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 183.083 m + Material: CO2 density: 1.977 mg/cm3 RadL: 183.083 m Imean: 90.164 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 27.29 % ElmAbundance 33.33 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 72.71 % ElmAbundance 66.67 % - Material: Xe20CO2 density: 5.082 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 17.750 m + Material: Xe20CO2 density: 5.082 mg/cm3 RadL: 17.750 m Imean: 411.175 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Xenon ( ) Z = 54.0 N = 131.3 A = 131.29 g/mole ElmMassFraction: 92.20 % ElmAbundance 56.91 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 2.13 % ElmAbundance 14.36 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 5.67 % ElmAbundance 28.73 % - Material: Kr20CO2 density: 3.601 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 34.158 m + Material: Kr20CO2 density: 3.601 mg/cm3 RadL: 34.158 m Imean: 297.188 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Kr ( ) Z = 36.0 N = 83.8 A = 83.80 g/mole ElmMassFraction: 89.00 % ElmAbundance 58.62 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 3.00 % ElmAbundance 13.79 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 8.00 % ElmAbundance 27.59 % @@ -121,7 +121,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -134,7 +134,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -153,7 +153,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -165,7 +165,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -182,7 +182,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -200,7 +200,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -213,7 +213,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -251,7 +251,7 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Run terminated. Run Summary Number of events processed : 1 - User=0.03s Real=0.06s Sys=0s + User=0.02s Real=0.02s Sys=0s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. ========= Table of registered couples ============================== @@ -276,7 +276,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=0.8s Real=0.8s Sys=0s + User=0.79s Real=0.79s Sys=0s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. Set field value to (0,0,1000) Gauss @@ -300,7 +300,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10 - User=0.12s Real=0.12s Sys=0s + User=0.11s Real=0.11s Sys=0s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/extended/field/field03/include/F03CalorHit.hh b/examples/extended/field/field03/include/F03CalorHit.hh index bb738756c3..fd89e26bcb 100644 --- a/examples/extended/field/field03/include/F03CalorHit.hh +++ b/examples/extended/field/field03/include/F03CalorHit.hh @@ -25,7 +25,7 @@ // // // $Id: F03CalorHit.hh,v 1.4 2006/06/29 17:18:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03CalorimeterSD.hh b/examples/extended/field/field03/include/F03CalorimeterSD.hh index 1854bc502d..45c21c03cc 100644 --- a/examples/extended/field/field03/include/F03CalorimeterSD.hh +++ b/examples/extended/field/field03/include/F03CalorimeterSD.hh @@ -25,7 +25,7 @@ // // // $Id: F03CalorimeterSD.hh,v 1.4 2006/06/29 17:18:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03DetectorConstruction.hh b/examples/extended/field/field03/include/F03DetectorConstruction.hh index 881c289747..2da2958265 100644 --- a/examples/extended/field/field03/include/F03DetectorConstruction.hh +++ b/examples/extended/field/field03/include/F03DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: F03DetectorConstruction.hh,v 1.6 2006/06/29 17:18:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03DetectorMessenger.hh b/examples/extended/field/field03/include/F03DetectorMessenger.hh index eb7e8b0b42..ef070c4cae 100644 --- a/examples/extended/field/field03/include/F03DetectorMessenger.hh +++ b/examples/extended/field/field03/include/F03DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F03DetectorMessenger.hh,v 1.4 2006/06/29 17:18:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03EventAction.hh b/examples/extended/field/field03/include/F03EventAction.hh index db10ed95d5..47df516c97 100644 --- a/examples/extended/field/field03/include/F03EventAction.hh +++ b/examples/extended/field/field03/include/F03EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: F03EventAction.hh,v 1.4 2006/06/29 17:18:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03EventActionMessenger.hh b/examples/extended/field/field03/include/F03EventActionMessenger.hh index 74dca43b72..78e39f69fc 100644 --- a/examples/extended/field/field03/include/F03EventActionMessenger.hh +++ b/examples/extended/field/field03/include/F03EventActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F03EventActionMessenger.hh,v 1.3 2006/06/29 17:18:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03FieldMessenger.hh b/examples/extended/field/field03/include/F03FieldMessenger.hh index edfb2aa7df..4b98bac776 100644 --- a/examples/extended/field/field03/include/F03FieldMessenger.hh +++ b/examples/extended/field/field03/include/F03FieldMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F03FieldMessenger.hh,v 1.4 2006/06/29 17:18:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03FieldSetup.hh b/examples/extended/field/field03/include/F03FieldSetup.hh index 44d9530ea5..5545e68682 100644 --- a/examples/extended/field/field03/include/F03FieldSetup.hh +++ b/examples/extended/field/field03/include/F03FieldSetup.hh @@ -25,7 +25,7 @@ // // // $Id: F03FieldSetup.hh,v 1.2 2006/06/29 17:18:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // A class for setting up the Magnetic Field of the setup, and // creating the necessary classes to control accuracy of propagation. diff --git a/examples/extended/field/field03/include/F03PhysicsList.hh b/examples/extended/field/field03/include/F03PhysicsList.hh index 1082b12857..87e6dfaf4c 100644 --- a/examples/extended/field/field03/include/F03PhysicsList.hh +++ b/examples/extended/field/field03/include/F03PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: F03PhysicsList.hh,v 1.6 2007/05/23 13:39:01 tnikitin Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef F03PhysicsList_h diff --git a/examples/extended/field/field03/include/F03PhysicsListMessenger.hh b/examples/extended/field/field03/include/F03PhysicsListMessenger.hh index 7e2421b1f3..4ad2d083d6 100644 --- a/examples/extended/field/field03/include/F03PhysicsListMessenger.hh +++ b/examples/extended/field/field03/include/F03PhysicsListMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F03PhysicsListMessenger.hh,v 1.4 2006/06/29 17:18:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03PrimaryGeneratorAction.hh b/examples/extended/field/field03/include/F03PrimaryGeneratorAction.hh index 79f4c9d295..d739a3c44d 100644 --- a/examples/extended/field/field03/include/F03PrimaryGeneratorAction.hh +++ b/examples/extended/field/field03/include/F03PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: F03PrimaryGeneratorAction.hh,v 1.4 2006/06/29 17:18:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03PrimaryGeneratorMessenger.hh b/examples/extended/field/field03/include/F03PrimaryGeneratorMessenger.hh index 9e0b3a7c71..c56cda334e 100644 --- a/examples/extended/field/field03/include/F03PrimaryGeneratorMessenger.hh +++ b/examples/extended/field/field03/include/F03PrimaryGeneratorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F03PrimaryGeneratorMessenger.hh,v 1.3 2006/06/29 17:19:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03RunAction.hh b/examples/extended/field/field03/include/F03RunAction.hh index 85eb94eb28..8fe8ff9485 100644 --- a/examples/extended/field/field03/include/F03RunAction.hh +++ b/examples/extended/field/field03/include/F03RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: F03RunAction.hh,v 1.6 2006/06/29 17:19:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03RunMessenger.hh b/examples/extended/field/field03/include/F03RunMessenger.hh index 6034d2eb7d..c049cffc4e 100644 --- a/examples/extended/field/field03/include/F03RunMessenger.hh +++ b/examples/extended/field/field03/include/F03RunMessenger.hh @@ -26,7 +26,7 @@ // // $Id: F03RunMessenger.hh,v 1.4 2006/06/29 17:19:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03StepCut.hh b/examples/extended/field/field03/include/F03StepCut.hh index 9f2f65ebc1..13607ef29e 100644 --- a/examples/extended/field/field03/include/F03StepCut.hh +++ b/examples/extended/field/field03/include/F03StepCut.hh @@ -25,7 +25,7 @@ // // // $Id: F03StepCut.hh,v 1.5 2006/06/29 17:19:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03SteppingAction.hh b/examples/extended/field/field03/include/F03SteppingAction.hh index c870e70be7..17623d1a18 100644 --- a/examples/extended/field/field03/include/F03SteppingAction.hh +++ b/examples/extended/field/field03/include/F03SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: F03SteppingAction.hh,v 1.5 2006/06/29 17:19:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/include/F03SteppingMessenger.hh b/examples/extended/field/field03/include/F03SteppingMessenger.hh index 8af9c2b9cc..370f868ccd 100644 --- a/examples/extended/field/field03/include/F03SteppingMessenger.hh +++ b/examples/extended/field/field03/include/F03SteppingMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: F03SteppingMessenger.hh,v 1.3 2006/06/29 17:19:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field03/include/F03SteppingVerbose.hh b/examples/extended/field/field03/include/F03SteppingVerbose.hh index 322f87ebbd..2fb4c1b7c2 100644 --- a/examples/extended/field/field03/include/F03SteppingVerbose.hh +++ b/examples/extended/field/field03/include/F03SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: F03SteppingVerbose.hh,v 1.4 2006/06/29 17:19:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/field/field03/src/F03CalorHit.cc b/examples/extended/field/field03/src/F03CalorHit.cc index 5014adb12e..d31881efdd 100644 --- a/examples/extended/field/field03/src/F03CalorHit.cc +++ b/examples/extended/field/field03/src/F03CalorHit.cc @@ -25,7 +25,7 @@ // // // $Id: F03CalorHit.cc,v 1.4 2006/06/29 17:19:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/src/F03CalorimeterSD.cc b/examples/extended/field/field03/src/F03CalorimeterSD.cc index e31671f5a7..4a8c1f9fe5 100644 --- a/examples/extended/field/field03/src/F03CalorimeterSD.cc +++ b/examples/extended/field/field03/src/F03CalorimeterSD.cc @@ -25,7 +25,7 @@ // // // $Id: F03CalorimeterSD.cc,v 1.6 2006/06/29 17:19:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/src/F03DetectorConstruction.cc b/examples/extended/field/field03/src/F03DetectorConstruction.cc index 6edf629656..9db23517cb 100644 --- a/examples/extended/field/field03/src/F03DetectorConstruction.cc +++ b/examples/extended/field/field03/src/F03DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: F03DetectorConstruction.cc,v 1.12 2006/06/29 17:19:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/src/F03DetectorMessenger.cc b/examples/extended/field/field03/src/F03DetectorMessenger.cc index d8476d1feb..ea46b4b970 100644 --- a/examples/extended/field/field03/src/F03DetectorMessenger.cc +++ b/examples/extended/field/field03/src/F03DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F03DetectorMessenger.cc,v 1.5 2006/06/29 17:19:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/src/F03EventAction.cc b/examples/extended/field/field03/src/F03EventAction.cc index 80eb6a38da..6e44de5ad6 100644 --- a/examples/extended/field/field03/src/F03EventAction.cc +++ b/examples/extended/field/field03/src/F03EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: F03EventAction.cc,v 1.6 2006/06/29 17:19:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/src/F03EventActionMessenger.cc b/examples/extended/field/field03/src/F03EventActionMessenger.cc index f01b6e137b..9f1eb300b4 100644 --- a/examples/extended/field/field03/src/F03EventActionMessenger.cc +++ b/examples/extended/field/field03/src/F03EventActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F03EventActionMessenger.cc,v 1.4 2006/06/29 17:19:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/src/F03FieldMessenger.cc b/examples/extended/field/field03/src/F03FieldMessenger.cc index 88bcb9360a..c579d0a8d2 100644 --- a/examples/extended/field/field03/src/F03FieldMessenger.cc +++ b/examples/extended/field/field03/src/F03FieldMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F03FieldMessenger.cc,v 1.7 2006/06/29 17:19:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/src/F03FieldSetup.cc b/examples/extended/field/field03/src/F03FieldSetup.cc index 43ca5a4fce..3c1acd8ddb 100644 --- a/examples/extended/field/field03/src/F03FieldSetup.cc +++ b/examples/extended/field/field03/src/F03FieldSetup.cc @@ -25,7 +25,7 @@ // // // $Id: F03FieldSetup.cc,v 1.5 2007/04/28 01:31:12 gum Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Field Setup class implementation. diff --git a/examples/extended/field/field03/src/F03PhysicsList.cc b/examples/extended/field/field03/src/F03PhysicsList.cc index 380b2b79ad..ba4b435b89 100644 --- a/examples/extended/field/field03/src/F03PhysicsList.cc +++ b/examples/extended/field/field03/src/F03PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: F03PhysicsList.cc,v 1.11 2007/05/23 13:39:16 tnikitin Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4Timer.hh" diff --git a/examples/extended/field/field03/src/F03PhysicsListMessenger.cc b/examples/extended/field/field03/src/F03PhysicsListMessenger.cc index aeec746e1a..a1ab884eff 100644 --- a/examples/extended/field/field03/src/F03PhysicsListMessenger.cc +++ b/examples/extended/field/field03/src/F03PhysicsListMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F03PhysicsListMessenger.cc,v 1.5 2006/06/29 17:19:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/src/F03PrimaryGeneratorAction.cc b/examples/extended/field/field03/src/F03PrimaryGeneratorAction.cc index 41efda25f8..2155df50da 100644 --- a/examples/extended/field/field03/src/F03PrimaryGeneratorAction.cc +++ b/examples/extended/field/field03/src/F03PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: F03PrimaryGeneratorAction.cc,v 1.6 2006/06/29 17:19:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/src/F03PrimaryGeneratorMessenger.cc b/examples/extended/field/field03/src/F03PrimaryGeneratorMessenger.cc index e78050e5e5..9b35108c07 100644 --- a/examples/extended/field/field03/src/F03PrimaryGeneratorMessenger.cc +++ b/examples/extended/field/field03/src/F03PrimaryGeneratorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F03PrimaryGeneratorMessenger.cc,v 1.5 2006/06/29 17:19:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/src/F03RunAction.cc b/examples/extended/field/field03/src/F03RunAction.cc index 61909b4578..f1329f1d68 100644 --- a/examples/extended/field/field03/src/F03RunAction.cc +++ b/examples/extended/field/field03/src/F03RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: F03RunAction.cc,v 1.9 2006/06/29 17:19:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "F03RunAction.hh" diff --git a/examples/extended/field/field03/src/F03RunMessenger.cc b/examples/extended/field/field03/src/F03RunMessenger.cc index 6c60bc7cb5..0e1e087805 100644 --- a/examples/extended/field/field03/src/F03RunMessenger.cc +++ b/examples/extended/field/field03/src/F03RunMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F03RunMessenger.cc,v 1.6 2006/06/29 17:19:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/src/F03StepCut.cc b/examples/extended/field/field03/src/F03StepCut.cc index cae724418e..5da7c15215 100644 --- a/examples/extended/field/field03/src/F03StepCut.cc +++ b/examples/extended/field/field03/src/F03StepCut.cc @@ -25,7 +25,7 @@ // // // $Id: F03StepCut.cc,v 1.3 2006/06/29 17:19:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "F03StepCut.hh" diff --git a/examples/extended/field/field03/src/F03SteppingAction.cc b/examples/extended/field/field03/src/F03SteppingAction.cc index 314740998a..397ffd678d 100644 --- a/examples/extended/field/field03/src/F03SteppingAction.cc +++ b/examples/extended/field/field03/src/F03SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: F03SteppingAction.cc,v 1.6 2006/06/29 17:19:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/field/field03/src/F03SteppingMessenger.cc b/examples/extended/field/field03/src/F03SteppingMessenger.cc index 7043149a34..c84f7e8119 100644 --- a/examples/extended/field/field03/src/F03SteppingMessenger.cc +++ b/examples/extended/field/field03/src/F03SteppingMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: F03SteppingMessenger.cc,v 1.5 2006/06/29 17:19:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field03/src/F03SteppingVerbose.cc b/examples/extended/field/field03/src/F03SteppingVerbose.cc index 5376b6593e..96160a2e8f 100644 --- a/examples/extended/field/field03/src/F03SteppingVerbose.cc +++ b/examples/extended/field/field03/src/F03SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: F03SteppingVerbose.cc,v 1.5 2006/06/29 17:19:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... diff --git a/examples/extended/field/field04/GNUmakefile b/examples/extended/field/field04/GNUmakefile new file mode 100644 index 0000000000..484bdcdb84 --- /dev/null +++ b/examples/extended/field/field04/GNUmakefile @@ -0,0 +1,19 @@ +# $Id: GNUmakefile,v 1.4 2007/10/30 00:26:06 gum Exp $ +# -------------------------------------------------------------- +# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. +# -------------------------------------------------------------- + +name := field04 +G4TARGET := $(name) +G4EXLIB := true + +ifndef G4INSTALL + G4INSTALL = ../../../.. +endif + +.PHONY: all +all: lib bin + +include $(G4INSTALL)/config/architecture.gmk + +include $(G4INSTALL)/config/binmake.gmk diff --git a/examples/extended/field/field04/History b/examples/extended/field/field04/History new file mode 100644 index 0000000000..67f0f08383 --- /dev/null +++ b/examples/extended/field/field04/History @@ -0,0 +1,24 @@ +// $Id: History,v 1.4 2007/11/02 09:51:25 gcosmo Exp $ +// ------------------------------------------------------------------ + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + field04 History file + -------------------- +This file should be used by the G4 example coordinator to briefly +summarize all major modifications introduced in the code and keep +track of all tags. + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +Nov 2nd, 2007 Gabriele Cosmo - fieldex04-V09-00-01 +----------------------------- +- Minor fixes for porting on Windows platform. + +Oct 29th, 2007 Peter Gumplinger - fieldex04-V09-00-00 +-------------------------------- +- First implementation. diff --git a/examples/extended/field/field04/README b/examples/extended/field/field04/README new file mode 100644 index 0000000000..f9d3eddea7 --- /dev/null +++ b/examples/extended/field/field04/README @@ -0,0 +1,421 @@ + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + + + field04 Example + --------------- + + This example shows how to define/use OVERLAPPING field elements + in Geant4. Fields might be either magnetic, electric or both. + + Credit goes to Tom Roberts and Muons Inc. since much of the code + and ideas were taken at liberty from the (GNU GPL) source of + G4BEAMLINE release 1.12. + + http://g4beamline.muonsinc.com + +************** +*Classes Used* +************** + + 1 - main() + + Note: + + // runManager->Initialize(); + + is commented out and must be executed with: /run/initialize + either in a macro or on the command line. Note: One can change + the geometry (see below) only BEFORE the initialization! + + Is is possible to assign the PhysicsList via an argument to + program submission: + + field04 -p QGSP_BERT + + and an initial random number seed with: + + field04 field04.in 12345 + + It is also possible to specify more than one macro file which are + then executed in succession: + + field04 field04.in field04.in 12345 + + (Note, in this case the initial random # must also be provided) + + (1) argc holds the number of arguments on the command line. Since + this MUST include at least the program name, argc value is >= 1! + (2) argv[0] is always the name of the program + argv[1] points to the first argument, and so on ... + (3) argv[argc-1] is assumed to be the intial random # seed + (4) the loop over macro files goes from optind = 1 to (argc-1) + + + 2- GEOMETRY DEFINITION + + The geometry consists of two solenoidal magnets: a "CaptureMgnt" + followed by a (bloe-colored "TransferMgnt". By definition, the + axis and center of the "CaptureMgnt" coincide with the "World". The + position of the "TransferMgnt" relative to the downstream end of the + "CaptureMgnt", as well as its axis angle, both may vary. A cylindrical + "Target" is positioned inside the "CaptureMgnt". Its axis can vary + from 0 to 180 deg, and hence also the direction of the incoming + proton beam wrt the "CaptureMgnt"'s axis. A "Degrader" is located + inside the "TransferMgnt", its default position being at the + upstream end of the "TransferMgnt". Finally, also a "TestPlane" is + located inside the "TransferMgnt", by default at its downstream end. + + + The "World" consists of a solid cylinder made of a given material. + (It is the responsibility of the user to make the world + large enough to contain the rest of the geometry!) + + Three parameters define the world : + - the material of the world, + - the world radius, + - the world length. + + Example (default values): + /field04/SetWorldMat G4_AIR + /field04/SetWorldR 5.0 m + /field04/SetWorldZ 50.0 m + + + The "Target" is a solid cylinder made of a given material. + + Five parameters define the target: + - the material of the target, + - the target radius, + - the target thickness, + - the target position inside the "CaptureMgnt", + - the target axis angle relative to that of the "CaptureMgnt". + + Example (default values): + /field04/SetTgtMat G4_W + /field04/SetTgtRad 0.4 cm + /field04/SetTgtThick 16.0 cm + /field04/SetTgtPos 0.0 cm + /field04/SetTgtAng 170 + + + The "Degrader" is a solid cylinder made of a given material. + + Four parameters define the degrader: + - the material of the degrader, + - the degrader radius, + - the degrader thickness, + - the degrader position relative to the "TransferMgnt" center. + + Example (default values): + /field04/SetDgrMat G4_Pb + /field04/SetDgrRad 30.0 cm + /field04/SetDgrThick 0.1 cm + #/field04/SetDgrPos -7.4 m + + + The "CaptureMgnt" is a solenoid (vacuum cylinder). It is either + a two-sided or a one-sided magnetic bottle with the B field + varying linearly from the center value B1 to the edge value B2. + The one-sided 'FocusSolenoid' has the open end at +z and focuses + on the z < 0 side. + + Four parameters define the "CaptureMgnt": + - the magnet radius, + - the magnet length, + - the weaker magnetic field at the center B1 + - the stronger magnetic field at the edge B2 + + Example (default values): + /field04/SetCaptureR 0.6 m + /field04/SetCaptureZ 4.0 m + /field04/SetCaptureB1 2.5 tesla + /field04/SetCaptureB2 5.0 tesla + + + The "TransferMgnt" is a solenoid (vacuum cylinder) with a + constant B-field. When the "TransferMgnt" follows immediately + the "CaptureMgnt", its relative position is at 0 cm. + + Four parameters define the "TransferMgnt": + - the magnet radius, + - the magnet length, + - the magnet field, + - the magnet relative position + (its upstream face wrt the downstream face of the "CaptureMgnt".) + + Example (default values): + /field04/SetTransferR 0.3 m + /field04/SetTransferZ 15.0 m + /field04/SetTransferB 5.0 tesla + /field04/SetTransferP 0.0 m + + The default geometry is constructed in DetectorConstruction class, + but all the parameters can be changed via the commands defined in + the DetectorMessenger class. + + + 3- MATERIAL DEFINITION + + Material definitions are done through the singleton class Materials + which keeps a pointer to the G4NistManager. It has a method + GetMaterial by name (G4String) which in turn invokes the + G4NistManager::FindOrBuildMaterial, and/or G4Material::GetMaterial + methods. It has also a method CreateMaterials which, for materials + absent from the NIST data base, shows how to create them using the + G4NistManager::ConstructNewMaterial method. + + + 4- AN EVENT: THE PRIMARY GENERATOR + + The primary kinematic consists of a single particle which hits the + target perpendicular to its upstream face. The type of the particle + and its energy are set in the PrimaryGeneratorAction class, and can + be changed via the G4 build-in commands of the ParticleGun class. + In addition, there is a rndmFlag, which once set allows the beam to + explore randomly the whole cross section of the target. The default + beam consists of 500 MeV protons, starting at the upstream face of + the target, directed along dx = dy = 0, dz = 1 wrt the target frame. + The default direction should NOT be changed! The arguments of the + x/y/zvertex commands are relative to the target center. + + Example: + /gun/random on + #/gun/xvertex 0 mm + #/gun/yvertex 0 mm + #/gun/zvertex -100 mm + + + 5- DETECTOR RESPONSE + + Information is extracted from the program via SteppingAction + at the TestPlane. + + + 6- PHYSICS + + The PhysicsList is adopted from examples/extended/hadronic/Hadr01. + It uses components which are distributed with Geant4 in + /geant4/physics_lists subdirectory. So, before compiling field04 + it is necessary to compile physics_lists. + + There are two std::vector PhysicsListVectors; + one for EM- and one for HadronPHysics and a user defined process + "StepMax". + + The choice of the physics is provided by the UI command: + + /exp/phys/addPhysics emstandard_opt1 + /exp/phys/addPhysics QGSP_BERT + + To see the list of available configurations one can use: + + /exp/phys/list + + The command: + + /exp/phys/addPhysics PHYSLIST + + allows to download a physics configuration defined by an + environment variable PHYSLIST. + + The cuts for electromagnetic phsyics can be established via: + + /exp/phys/allCuts 1 mm + /exp/phys/gammaCut 0.1 mm + /exp/phys/electronCut 0.2 mm + /exp/phys/positronCut 0.3 mm + + The cut for the StepMax process via: + + /exp/phys/stepMax + + The two PhysicsListVectors can be cleared via: + + /exp/phys/clearEMPhysics + /exp/phys/clearHadronPhysics + + and individual processes can be removed from the vectors via, + for example: + + /exp/phys/removeEMPhysics msc + /exp/phys/removeHadronPhysics gamma_nuc + + Furthermore, the following commands are also available, but + may only be used AFTER /run/initialize + + /process/inactivate msc + /process/activate msc + + The decay of pions can be assigned via (pi -> e nu, pi -> mu nu): + + /decay/pienu + /decay/pimunu + + The pienu assignment includes a small fraction of radiative decay: + e nu gamma (G4PionRadiativeDecayChannel). + + The standard/default muon decay chain is modified to be 98.6% + G4MuonDecayChannelWithSpin and 1.4% G4MuonRadiativeDecayChannelWithSpin + in ConstructParticle(). + + The pion decay process G4PolDecay inherits from G4Decay and implements + the virtual method - empty in the base class - DaughterPolarization + + The muon decay process is G4DecayWithSpin + + + 7- Overlapping Fields + + The GlobalField (a singleton) is instantiated in DetectorConstruction() + and assigned to the global field manager in updateField(): + + fFieldManager = GetGlobalFieldManager(); + fFieldManager->SetDetectorField(this); + + The GlobalField has a std::vector FieldList + + The field from each individual beamline element is given by a + ElementField object. Any number of overlapping ElementField + objects can be added to the global field. Any element that + represents an element with an EM field must add the appropriate + ElementField to the global GlobalField object. + + Of course, the GlobalField has the method GetFieldValue implemented. + + Before /run/initialize in the macro file or command, the update + field command must have been issued if any of the other following + field commands was employed: + + /field/update + + Other options are: + + /field/setStepperType 4 + /field/setMinStep 10 mm + /field/setDeltaChord 3.0 mm + /field/setDeltaOneStep 0.01 mm + /field/setDeltaIntersection 0.1 mm + /field/setEpsMin 2.5e-7 mm + /field/setEpsMax 0.05 mm + + Each field element has a rectilinear bounding box in global + coordinate space which is checked before a point is verified to + actually be inside the ElementField (isWithin and isOutside). + setGlobalPoint is called 8 times for the corners of the local + bounding box, after a local->global coordinate transform. + + The ElementField is the interface class used by GlobalField to + compute the field value at a given point[]. + + A beamline element, for example the SimpleSolenoid, will derive + from ElementField and implement the computation for the element. + + simpleSolenoid = new SimpleSolenoid(B, l, + logicTransferMgnt,TransferMgntCenter); + + Besides the magnetic field and the length of the simple solenoid, + the constructor needs the knowledge of the G4LogicalVolume for + the beamline element and where its center is located in the + 'World'. + + The ElementField has a G4AffineTransform "global2local" which + allows the quick computation of coordinate transformations. It can + only be determined by knowing the element's coordinate origin in + the global frame and after all of the geometry has been defined. + For this reason, the object is prepared in two stages, through the + constructor providing it with the coordinate center and a pointer + to the G4LogicalVolume. Later the construct() method is called to + calculate the global2local and the bounding box. This can be done + from the RunAction::BeginOfRunAction method, for only then are we + certain that the geometry has been completely built: + + FieldList* fields = GlobalField::getObject()->getFields(); + + if (fields) { + if (fields->size()>0) { + FieldList::iterator i; + for (i=fields->begin(); i!=fields->end(); ++i)(*i)->construct(); + } + } + + The ElementField constructor will also add the derived object into + GlobalField. Finally, its addFieldValue() will add the field value + for this element to field[]. + + + 8- User Action Classes + + RunActionMessenger: + + /rndm/save freq - to save rndm status in external files + 0 not saved + >0 saved on: beginOfRun.rndm + 1 saved on: endOfRun.rndm + 2 saved on: endOfEvent.rndm + /rndm/read random/run0evt8268.rndm + + RunAction: + BeginOfRunAction: Deal with random number storage, + initialization etc. Call the construct() method of + ElementFields in the FieldList of GlobalField object. + EndOfRunAction: random number storage/status printing. + + EventActionMessenger: + /event/setverbose + /event/drawTracks none/charged/all + /event/printModulo + + EventAction(RunAction* RA): + Customized BeginOfEvent printing (frequency: printModulo) + EndofEvent: condition depending drawing of trajectories, + saveEngingStatus and showEngineStatus according to flag + in RunAction + + TrackingAction: + PreUserTrackingAction: Instantiate UserTrackInformation + and set the application TrackStatus. + PostUserTrackingAction: Retreive UserTrackInformation + and decide to save random number status accordingly. + + SteppingActionMessenger: + + SteppingAction: + UserSteppingAction: Kill primary if/when outside Target + volume. Diagnostic/histogram filling for particles at a + TestPlane. Find decay position and when particle + FIRST reverses z-momentum component via using a + UserTrackInformation object. + + StackingAction: + Track only primaries, pi+ or mu+ + + UserTrackInformation: + Keep a application TrackStatus for the track: + undefined, left, right, reverse + + SteppingVerbose: + Only print track header and step information for + pi+ and mu+ + + Trajectory, TrajectoryPoint: + Example of application specific implementations + + 9- HOW TO START ? + + - compile and link to generate an executable + % cd $G4INSTALL/example/extended/field/field04 + % gmake + + - execute field04 in 'batch' mode from macro files e.g. + % $(G4INSTALL)/bin/$(G4SYSTEM)/field04 field04.in + + - execute field04 in 'interactive' mode with visualization e.g. + % $(G4INSTALL)/bin/$(G4SYSTEM)/field04 + .... + Idle> type your commands, for example: + Idle> control/execute field04.in + .... diff --git a/examples/extended/field/field04/field04.cc b/examples/extended/field/field04/field04.cc new file mode 100644 index 0000000000..ed19393903 --- /dev/null +++ b/examples/extended/field/field04/field04.cc @@ -0,0 +1,204 @@ +// +// ******************************************************************** +// * 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: field04.cc,v 1.7 2007/11/02 10:53:41 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// -------------------------------------------------------------- +// GEANT 4 - Example F04 +// +// -------------------------------------------------------------- +// Comments +// +// +// -------------------------------------------------------------- + +#ifndef WIN32 +#include +#endif + +#include "G4RunManager.hh" +#include "G4UImanager.hh" + +#include "G4UIterminal.hh" +#include "G4UItcsh.hh" + +#include "Randomize.hh" + +#include "F04PhysicsList.hh" +#include "F04DetectorConstruction.hh" +#include "F04PrimaryGeneratorAction.hh" + +#include "F04RunAction.hh" +#include "F04EventAction.hh" +#include "F04TrackingAction.hh" +#include "F04SteppingAction.hh" +#include "F04StackingAction.hh" +#include "F04SteppingVerbose.hh" + +#ifdef G4VIS_USE +#include "G4VisExecutive.hh" +#endif + +// argc holds the number of arguments (including the name) on the command line +// -> it is ONE when only the name is given !!! +// argv[0] is always the name of the program +// argv[1] points to the first argument, and so on + +int main(int argc,char** argv) +{ + G4bool useUItcsh = true; + + G4String physicsList = "QGSP_BERT"; + + G4int seed = 0; + if (argc > 2) seed = atoi(argv[argc-1]); + + CLHEP::HepRandom::setTheSeed(seed); + +#ifndef WIN32 + G4int c = 0; + while ((c=getopt(argc,argv,"p:t")) != -1) + { + switch (c) + { + case 'p': + physicsList = optarg; + G4cout << "Physics List used is " << physicsList << G4endl; + break; + case 't': // Don't use a tcsh-style command line interface + useUItcsh = false; + break; + case ':': /* -p without operand */ + fprintf(stderr, + "Option -%c requires an operand\n", optopt); + break; + case '?': + fprintf(stderr, + "Unrecognised option: -%c\n", optopt); + } + } +#endif + + // Choose the Random engine + + CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine); + + // My Verbose output class + + G4VSteppingVerbose::SetInstance(new F04SteppingVerbose); + + // Construct the default run manager + + G4RunManager * runManager = new G4RunManager; + + // Set mandatory initialization classes + + F04DetectorConstruction* detector = new F04DetectorConstruction(); + + runManager->SetUserInitialization(detector); + runManager->SetUserInitialization(new F04PhysicsList(physicsList)); + +#ifdef G4VIS_USE + + // visualization manager + + G4VisManager* visManager = new G4VisExecutive(); + visManager->Initialize(); + +#endif + + // Set mandatory user action class + + runManager->SetUserAction( new F04PrimaryGeneratorAction(detector) ); + + F04RunAction* runAction = new F04RunAction(); + F04EventAction* eventAction = new F04EventAction(runAction); + + runManager->SetUserAction(runAction); + runManager->SetUserAction(eventAction); + runManager->SetUserAction( new F04TrackingAction() ); + runManager->SetUserAction( new F04SteppingAction() ); + runManager->SetUserAction( new F04StackingAction() ); + + // Get the pointer to the User Interface manager + + G4UImanager * UI = G4UImanager::GetUIpointer(); + +#ifndef WIN32 + G4int optmax = argc; + if (argc > 2) { optmax = optmax-1; } + + if (optind < optmax) + { + G4String command = "/control/execute "; + for ( ; optind < optmax; optind++) + { + G4String macroFilename = argv[optind]; + UI->ApplyCommand(command+macroFilename); + } + } + else + { + // Define (G)UI terminal for interactive mode + G4UIsession * session = 0; + if (useUItcsh) + { + // G4UIterminal is a terminal with tcsh-like control. + session = new G4UIterminal(new G4UItcsh); + } + else + { + // G4UIterminal is a (dumb) terminal. + session = new G4UIterminal(); + } + session->SessionStart(); + delete session; + } +#else // Simple UI for Windows runs, no possibility of additional arguments + if (argc==1) // Define UI terminal for interactive mode + { + G4UIsession * session = new G4UIterminal; + session->SessionStart(); + delete session; + } + else // Batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } +#endif + // job termination + +#ifdef G4VIS_USE + delete visManager; +#endif + delete runManager; + + return 0; +} diff --git a/examples/extended/field/field04/field04.in b/examples/extended/field/field04/field04.in new file mode 100644 index 0000000000..aaf7385a89 --- /dev/null +++ b/examples/extended/field/field04/field04.in @@ -0,0 +1,69 @@ +# +# Macro file for the initialization phase of field04 +# +#/run/verbose 1 +/control/verbose 2 +#/event/verbose 1 +#/tracking/verbose 1 +# +/field04/SetWorldMat G4_AIR +/field04/SetWorldR 5.0 m +/field04/SetWorldZ 50.0 m +# +/field04/SetCaptureR 0.6 m +/field04/SetCaptureZ 4.0 m +/field04/SetCaptureB1 2.5 tesla +/field04/SetCaptureB2 5.0 tesla +# +/field04/SetTransferR 0.3 m +/field04/SetTransferZ 15.0 m +/field04/SetTransferB 5.0 tesla +/field04/SetTransferP 0.0 m +# +/field04/SetTgtMat G4_W +/field04/SetTgtRad 0.4 cm +/field04/SetTgtThick 16.0 cm +/field04/SetTgtPos 0.0 cm +/field04/SetTgtAng 170 +# +/field04/SetDgrMat G4_Pb +/field04/SetDgrRad 30.0 cm +/field04/SetDgrThick 0.1 cm +#/field04/SetDgrPos -7.4 m +# +#/exp/phys/addPhysics emstandard_opt1 +#/exp/phys/addPhysics QGSP_BERT +#/exp/phys/removeHadronPhysics gamma_nuc +/exp/phys/gammaCut 1.0 m +/exp/phys/stepMax 2.0 mm +/exp/phys/list +# +#/decay/pienu +#/decay/pimunu +# +/field/setStepperType 4 +/field/setMinStep 10 mm +/field/update +# +/run/initialize +# +#/process/inactivate msc +#/process/activate msc +# +#/field04/SetTgtMat G4_Pb +#/field04/SetCaptureR 0.6 m +#/field04/Update +# +/gun/particle proton +/gun/energy 500.0 MeV +#/gun/momentumAmp 1.09008 GeV +/gun/random on +# +#/control/execute vis.mac +# +#/rndm/save 2 +#/rndm/read random/run0evt8268.rndm +#/random/resetEngineFrom random/run0evt40.rndm +# +/run/beamOn 1000 +# diff --git a/examples/extended/field/field04/field04.out b/examples/extended/field/field04/field04.out new file mode 100644 index 0000000000..fa512e729d --- /dev/null +++ b/examples/extended/field/field04/field04.out @@ -0,0 +1,619 @@ + +************************************************************* + Geant4 version Name: global-V09-00-02 (14-December-2007) + Copyright : Geant4 Collaboration + Reference : NIM A 506 (2003), 250-303 + WWW : http://cern.ch/geant4 +************************************************************* + +G4ClassicalRK4 (default) is called +Accuracy Parameters: MinStep=0.01 DeltaChord=3 DeltaOneStep=0.01 + DeltaIntersection=0.1 EpsMin=2.5e-07 EpsMax=0.05 +F04PhysicsList::AddPhysicsList: +F04PhysicsList::AddPhysicsList: +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully registered the following graphics systems. +Current available graphics systems are: + ASCIITree (ATree) + DAWNFILE (DAWNFILE) + G4HepRep (HepRepXML) + G4HepRepFile (HepRepFile) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) + +Registering model factories... + +You have successfully registered the following model factories. +Registered model factories: + generic + drawByCharge + drawByParticleID + drawByOriginVolume + drawByAttribute + +Registered filter factories: + chargeFilter + particleFilter + originVolumeFilter + attributeFilter + +#/event/verbose 1 +#/tracking/verbose 1 +# +/field04/SetWorldMat G4_AIR +/field04/SetWorldR 5.0 m +/field04/SetWorldZ 50.0 m +# +/field04/SetCaptureR 0.6 m +/field04/SetCaptureZ 4.0 m +/field04/SetCaptureB1 2.5 tesla +/field04/SetCaptureB2 5.0 tesla +# +/field04/SetTransferR 0.3 m +/field04/SetTransferZ 15.0 m +/field04/SetTransferB 5.0 tesla +/field04/SetTransferP 0.0 m +# +/field04/SetTgtMat G4_W +/field04/SetTgtRad 0.4 cm +/field04/SetTgtThick 16.0 cm +/field04/SetTgtPos 0.0 cm +/field04/SetTgtAng 170 +# +/field04/SetDgrMat G4_Pb +/field04/SetDgrRad 30.0 cm +/field04/SetDgrThick 0.1 cm +#/field04/SetDgrPos -7.4 m +# +#/exp/phys/addPhysics emstandard_opt1 +#/exp/phys/addPhysics QGSP_BERT +#/exp/phys/removeHadronPhysics gamma_nuc +/exp/phys/gammaCut 1.0 m +/exp/phys/stepMax 2.0 mm +/exp/phys/list +### PhysicsLists available: FTFC FTFP FTFP_EMV LHEP LHEP_BERT LHEP_EMV + LHEP_PRECO_HP QBBC QBBCG QBEC QBBC_HP QBEC_HP + QGSC QGSC_EFLOW QGSC_EMV QGSP QGSP_BERT QGSP_BER_EMV + QGSP_BERT_HP QGSP_BERT_NQE QGSP_BERT_TRV + QGSP_BIC QGSP_BIC_HP QGSP_EMV QGSP_EMV_NQE + QGSC_EMX QGSP_NQE QGSP_QEL +# +#/decay/pienu +#/decay/pimunu +# +/field/setStepperType 4 +/field/setMinStep 10 mm +/field/update +G4ClassicalRK4 (default) is called +Accuracy Parameters: MinStep=10 DeltaChord=3 DeltaOneStep=0.01 + DeltaIntersection=0.1 EpsMin=2.5e-07 EpsMax=0.05 +# +/run/initialize +G4NistMaterialBuilder::FindOrBuildMaterial G4_Galactic +G4NistMaterialBuilder: BuildMaterial #286 +New material nComponents= 1 +G4NistElementBuilder: Build Element Z= 1 A= 1.00795 with natural isotope composition +G4Material: Mean excitation energy is changed for G4_Galactic Iold= 21.8eV; Inew= 21.8 eV; +G4NistMaterialBuilder::FindOrBuildMaterial G4_AIR +G4NistMaterialBuilder::FindOrBuildMaterial G4_BERYLLIUM_OXIDE +G4NistMaterialBuilder: BuildMaterial #115 +New material nComponents= 2 +G4NistElementBuilder: Build Element Z= 4 A= 9.01218 with natural isotope composition +G4Material: Mean excitation energy is changed for G4_BERYLLIUM_OXIDE Iold= 83.2231eV; Inew= 93.2 eV; +New material Scintillator is prepeared; nMaterials= 288 nComponents= 742 nCurrent= 2 +### NIST DataBase for Elements is used +G4NistMaterialBuilder: BuildMaterial Scintillator +G4NistMaterialBuilder: BuildMaterial #287 +New material nComponents= 2 + +The materials defined are: + + +***** Table : Nb of materials = 6 ***** + + Material: G4_AIR density: 1.205 mg/cm3 RadL: 303.921 m Imean: 85.700 eV temperature: 273.15 K pressure: 1.00 atm + ---> Element: C (C) Z = 6.0 N = 12.0 A = 12.01 g/mole + ---> Isotope: C Z = 6 N = 12 A = 12.00 g/mole abundance: 98.93 % + ---> Isotope: C Z = 6 N = 13 A = 13.00 g/mole abundance: 1.07 % ElmMassFraction: 0.01 % ElmAbundance 0.02 % + ---> Element: N (N) Z = 7.0 N = 14.0 A = 14.01 g/mole + ---> Isotope: N Z = 7 N = 14 A = 14.00 g/mole abundance: 99.63 % + ---> Isotope: N Z = 7 N = 15 A = 15.00 g/mole abundance: 0.37 % ElmMassFraction: 75.53 % ElmAbundance 78.44 % + ---> Element: O (O) Z = 8.0 N = 16.0 A = 16.00 g/mole + ---> Isotope: O Z = 8 N = 16 A = 15.99 g/mole abundance: 99.76 % + ---> Isotope: O Z = 8 N = 17 A = 17.00 g/mole abundance: 0.04 % + ---> Isotope: O Z = 8 N = 18 A = 18.00 g/mole abundance: 0.20 % ElmMassFraction: 23.18 % ElmAbundance 21.07 % + ---> Element: Ar (Ar) Z = 18.0 N = 40.0 A = 39.95 g/mole + ---> Isotope: Ar Z = 18 N = 36 A = 35.97 g/mole abundance: 0.34 % + ---> Isotope: Ar Z = 18 N = 38 A = 37.96 g/mole abundance: 0.06 % + ---> Isotope: Ar Z = 18 N = 40 A = 39.96 g/mole abundance: 99.60 % ElmMassFraction: 1.28 % ElmAbundance 0.47 % + + Material: G4_W density: 19.300 g/cm3 RadL: 3.504 mm Imean: 727.000 eV + ---> Element: W (W) Z = 74.0 N = 183.9 A = 183.84 g/mole + ---> Isotope: W Z = 74 N = 180 A = 179.95 g/mole abundance: 0.12 % + ---> Isotope: W Z = 74 N = 182 A = 181.95 g/mole abundance: 26.50 % + ---> Isotope: W Z = 74 N = 183 A = 182.95 g/mole abundance: 14.31 % + ---> Isotope: W Z = 74 N = 184 A = 183.95 g/mole abundance: 30.64 % + ---> Isotope: W Z = 74 N = 186 A = 185.95 g/mole abundance: 28.43 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % + + Material: G4_Pb density: 11.350 g/cm3 RadL: 5.613 mm Imean: 823.000 eV + ---> Element: Pb (Pb) Z = 82.0 N = 207.2 A = 207.22 g/mole + ---> Isotope: Pb Z = 82 N = 204 A = 203.97 g/mole abundance: 1.40 % + ---> Isotope: Pb Z = 82 N = 206 A = 205.97 g/mole abundance: 24.10 % + ---> Isotope: Pb Z = 82 N = 207 A = 206.98 g/mole abundance: 22.10 % + ---> Isotope: Pb Z = 82 N = 208 A = 207.98 g/mole abundance: 52.40 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % + + Material: G4_Galactic density: 0.000 mg/cm3 RadL: 204311173.221 pc Imean: 21.800 eV temperature: 2.73 K pressure: 0.00 atm + ---> Element: H (H) Z = 1.0 N = 1.0 A = 1.01 g/mole + ---> Isotope: H Z = 1 N = 1 A = 1.01 g/mole abundance: 99.99 % + ---> Isotope: H Z = 1 N = 2 A = 2.01 g/mole abundance: 0.01 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % + + Material: G4_BERYLLIUM_OXIDE density: 3.010 g/cm3 RadL: 13.722 cm Imean: 93.200 eV + ---> Element: Be (Be) Z = 4.0 N = 9.0 A = 9.01 g/mole + ---> Isotope: Be Z = 4 N = 9 A = 9.01 g/mole abundance: 100.00 % ElmMassFraction: 36.03 % ElmAbundance 50.00 % + ---> Element: O (O) Z = 8.0 N = 16.0 A = 16.00 g/mole + ---> Isotope: O Z = 8 N = 16 A = 15.99 g/mole abundance: 99.76 % + ---> Isotope: O Z = 8 N = 17 A = 17.00 g/mole abundance: 0.04 % + ---> Isotope: O Z = 8 N = 18 A = 18.00 g/mole abundance: 0.20 % ElmMassFraction: 63.97 % ElmAbundance 50.00 % + + Material: Scintillator density: 1.032 g/cm3 RadL: 42.544 cm Imean: 63.913 eV + ---> Element: C (C) Z = 6.0 N = 12.0 A = 12.01 g/mole + ---> Isotope: C Z = 6 N = 12 A = 12.00 g/mole abundance: 98.93 % + ---> Isotope: C Z = 6 N = 13 A = 13.00 g/mole abundance: 1.07 % ElmMassFraction: 91.47 % ElmAbundance 47.37 % + ---> Element: H (H) Z = 1.0 N = 1.0 A = 1.01 g/mole + ---> Isotope: H Z = 1 N = 1 A = 1.01 g/mole abundance: 99.99 % + ---> Isotope: H Z = 1 N = 2 A = 2.01 g/mole abundance: 0.01 % ElmMassFraction: 8.53 % ElmAbundance 52.63 % + + +G4NistMaterialBuilder::FindOrBuildMaterial G4_Galactic +G4NistMaterialBuilder::FindOrBuildMaterial G4_AIR +G4NistMaterialBuilder::FindOrBuildMaterial G4_Pb +G4NistMaterialBuilder::FindOrBuildMaterial G4_W +Angle: 30deg +Angle: 10deg +Angle: 170deg +F04ExtraPhysics:: Add Extra Physics Processes +Thank you for using G4BinaryCascade. +### Adding Neutron tracking cut for neutron +### cut value is 10 microseconds +=========================================================================================== + + Hadronic Processes for anti_neutron + hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 + + Hadronic Processes for anti_proton + hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 + + Hadronic Processes for kaon+ + hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 + + Hadronic Processes for kaon- + hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 + + Hadronic Processes for lambda + hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 + + Hadronic Processes for neutron + hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 + + Hadronic Processes for pi+ + hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 + + Hadronic Processes for pi- + hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 + + Hadronic Processes for proton + hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 +=========================================================================================== +F04PhysicsList::SetCuts:CutLength : 1 mm +# +#/process/inactivate msc +#/process/activate msc +# +#/field04/SetTgtMat G4_Pb +#/field04/SetCaptureR 0.6 m +#/field04/Update +# +/gun/particle proton +/gun/energy 500.0 MeV +#/gun/momentumAmp 1.09008 GeV +/gun/random on +# +#/control/execute vis.mac +# +#/rndm/save 2 +#/rndm/read random/run0evt8268.rndm +#/random/resetEngineFrom random/run0evt40.rndm +# +/run/beamOn 1000 +G4VRangeToEnergyConverter::ConvertCutToKineticEnergy for gamma +The cut in range [1000 (mm)] is too big for material idx=1 +The cut in energy is set1.79769e+305GeV +G4VRangeToEnergyConverter::ConvertCutToKineticEnergy for gamma +The cut in range [1000 (mm)] is too big for material idx=2 +The cut in energy is set1.79769e+305GeV + +phot: Total cross sections from Sandia parametrisation. + Sampling according PhotoElectric model + +compt: Total cross sections has a good parametrisation from 10 KeV to (100/Z) GeV + Sampling according Klein-Nishina model + tables are built for gamma + Lambda tables from 100 eV to 100 GeV in 90 bins. + +conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV for all Z; + sampling secondary e+e- according Bethe-Heitler model + tables are built for gamma + Lambda tables from 1.022 MeV to 100 GeV in 100 bins. + +msc: Model variant of multiple scattering for e- + Lambda tables from 100 eV to 100 TeV in 120 bins. + LateralDisplacementFlag= 1 Skin= 0 + Boundary/stepping algorithm is active with RangeFactor= 0.2 Step limit type 0 + +eIoni: tables are built for e- + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Delta cross sections and sampling from MollerBhabha model + Good description from 1 KeV to 100 GeV. + Step function: finalRange(mm)= 1, dRoverRange= 0.8, integral: 1, fluct: 1 + +eBrem: tables are built for e- + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Total cross sections and sampling from StandBrem model (based on the EEDL data library) + Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV. LPM flag 1 + +eIoni: tables are built for e+ + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Delta cross sections and sampling from MollerBhabha model + Good description from 1 KeV to 100 GeV. + Step function: finalRange(mm)= 1, dRoverRange= 0.8, integral: 1, fluct: 1 + +eBrem: tables are built for e+ + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Total cross sections and sampling from StandBrem model (based on the EEDL data library) + Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV. LPM flag 1 + +annihil: Sampling according eplus2gg model + tables are built for e+ + Lambda tables from 100 eV to 100 TeV in 120 bins. + +msc: Model variant of multiple scattering for proton + Lambda tables from 100 eV to 100 TeV in 120 bins. + LateralDisplacementFlag= 1 Skin= 0 + Boundary/stepping algorithm is active with RangeFactor= 0.2 Step limit type 0 + +hIoni: tables are built for proton + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Scaling relation is used from proton dE/dx and range. + Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV + Parametrisation from Bragg for protons below. + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 + +msc: Model variant of multiple scattering for GenericIon + LateralDisplacementFlag= 0 Skin= 0 + Boundary/stepping algorithm is active with RangeFactor= 0.2 Step limit type 1 + +ionIoni: tables are built for GenericIon + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Scaling relation is used from proton dE/dx and range. + Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV + Parametrisation from BraggIon for protons below. NuclearStopping 1 + + Stopping Power data for 8 ion/material pairs are used. + Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1, fluct: 1 + +hIoni: tables are built for anti_proton + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Scaling relation is used from proton dE/dx and range. + Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV + Parametrisation from Bragg for protons below. + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 + +msc: Model variant of multiple scattering for mu+ + Lambda tables from 100 eV to 100 TeV in 120 bins. + LateralDisplacementFlag= 1 Skin= 0 + Boundary/stepping algorithm is active with RangeFactor= 0.2 Step limit type 0 + +muIoni: tables are built for mu+ + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, + radiative corrections for E > 1 GeV + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 + +muBrems: tables are built for mu+ + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Parametrised model + +muPairProd: tables are built for mu+ + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Parametrised model + +muIoni: tables are built for mu- + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, + radiative corrections for E > 1 GeV + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 + +muBrems: tables are built for mu- + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Parametrised model + +muPairProd: tables are built for mu- + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Parametrised model + +G4UHadronElasticProcess for neutron PDGcode= 2112 Elow(MeV)= 19 Elowest(eV)= 0 + +hIoni: tables are built for pi+ + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Scaling relation is used from proton dE/dx and range. + Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV + Parametrisation from Bragg for protons below. + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 + +msc: Model variant of multiple scattering for pi- + Lambda tables from 100 eV to 100 TeV in 120 bins. + LateralDisplacementFlag= 1 Skin= 0 + Boundary/stepping algorithm is active with RangeFactor= 0.2 Step limit type 0 + +hIoni: tables are built for pi- + dE/dx and range tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from threshold to 100 TeV in 120 bins. + Scaling relation is used from proton dE/dx and range. + Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV + Parametrisation from Bragg for protons below. + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 + +========= Table of registered couples ============================== + +Index : 0 used in the geometry : Yes recalculation needed : No + Material : G4_AIR + Range cuts : gamma 1 m e- 1 mm e+ 1 mm + Energy thresholds : gamma 3.07332 keV e- 990 eV e+ 990 eV + Region(s) which use this couple : + DefaultRegionForTheWorld + +Index : 1 used in the geometry : Yes recalculation needed : No + Material : G4_Galactic + Range cuts : gamma 1 m e- 1 mm e+ 1 mm + Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV + Region(s) which use this couple : + DefaultRegionForTheWorld + +Index : 2 used in the geometry : Yes recalculation needed : No + Material : G4_W + Range cuts : gamma 1 m e- 1 mm e+ 1 mm + Energy thresholds : gamma 2.88022e+295 J e- 2.31122 MeV e+ 2.14666 MeV + Region(s) which use this couple : + DefaultRegionForTheWorld + +Index : 3 used in the geometry : Yes recalculation needed : No + Material : G4_Pb + Range cuts : gamma 1 m e- 1 mm e+ 1 mm + Energy thresholds : gamma 2.88022e+295 J e- 1.37814 MeV e+ 1.28002 MeV + Region(s) which use this couple : + DefaultRegionForTheWorld + +==================================================================== + +### Run 0 start. + +---> Begin of Event: 0 + +---> Begin of Event: 10 + +---> Begin of Event: 20 + +---> Begin of Event: 30 + +---> Begin of Event: 40 + +---> Begin of Event: 50 + +---> Begin of Event: 60 + +---> Begin of Event: 70 + +---> Begin of Event: 80 + +---> Begin of Event: 90 + +---> Begin of Event: 100 + +---> Begin of Event: 110 + +---> Begin of Event: 120 + +---> Begin of Event: 130 + +---> Begin of Event: 140 + +---> Begin of Event: 150 + +---> Begin of Event: 160 + +---> Begin of Event: 170 + +---> Begin of Event: 180 + +---> Begin of Event: 190 + +---> Begin of Event: 200 + +---> Begin of Event: 210 + +---> Begin of Event: 220 + +---> Begin of Event: 230 + +---> Begin of Event: 240 + +---> Begin of Event: 250 + +---> Begin of Event: 260 + +---> Begin of Event: 270 + +---> Begin of Event: 280 + +---> Begin of Event: 290 + +---> Begin of Event: 300 + +---> Begin of Event: 310 + +---> Begin of Event: 320 + +---> Begin of Event: 330 + +---> Begin of Event: 340 + +---> Begin of Event: 350 + +---> Begin of Event: 360 + +---> Begin of Event: 370 + +---> Begin of Event: 380 + +---> Begin of Event: 390 + +---> Begin of Event: 400 + +---> Begin of Event: 410 + +---> Begin of Event: 420 + +---> Begin of Event: 430 + +---> Begin of Event: 440 + +---> Begin of Event: 450 + +---> Begin of Event: 460 + +---> Begin of Event: 470 + +---> Begin of Event: 480 + +---> Begin of Event: 490 + +---> Begin of Event: 500 + +---> Begin of Event: 510 + +---> Begin of Event: 520 + +---> Begin of Event: 530 + +---> Begin of Event: 540 + +---> Begin of Event: 550 + +---> Begin of Event: 560 + +---> Begin of Event: 570 + +---> Begin of Event: 580 + +---> Begin of Event: 590 + +---> Begin of Event: 600 + +---> Begin of Event: 610 + +---> Begin of Event: 620 + +---> Begin of Event: 630 + +---> Begin of Event: 640 + +---> Begin of Event: 650 + +---> Begin of Event: 660 + +---> Begin of Event: 670 + +---> Begin of Event: 680 + +---> Begin of Event: 690 + +---> Begin of Event: 700 + +---> Begin of Event: 710 + +---> Begin of Event: 720 + +---> Begin of Event: 730 + +---> Begin of Event: 740 + +---> Begin of Event: 750 + +---> Begin of Event: 760 + +---> Begin of Event: 770 + +---> Begin of Event: 780 + +---> Begin of Event: 790 + +---> Begin of Event: 800 + +---> Begin of Event: 810 + +---> Begin of Event: 820 + +---> Begin of Event: 830 + +---> Begin of Event: 840 + +---> Begin of Event: 850 + +---> Begin of Event: 860 + +---> Begin of Event: 870 + +---> Begin of Event: 880 + +---> Begin of Event: 890 + +---> Begin of Event: 900 + +---> Begin of Event: 910 + +---> Begin of Event: 920 + +---> Begin of Event: 930 + +---> Begin of Event: 940 + +---> Begin of Event: 950 + +---> Begin of Event: 960 + +---> Begin of Event: 970 + +---> Begin of Event: 980 + +---> Begin of Event: 990 +# +Graphics systems deleted. +Visualization Manager deleting... diff --git a/examples/extended/field/field04/include/F04DetectorConstruction.hh b/examples/extended/field/field04/include/F04DetectorConstruction.hh new file mode 100644 index 0000000000..b931e1688c --- /dev/null +++ b/examples/extended/field/field04/include/F04DetectorConstruction.hh @@ -0,0 +1,195 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04DetectorConstruction_h +#define F04DetectorConstruction_h 1 + +#include "globals.hh" +#include "G4ios.hh" + +#include "G4RotationMatrix.hh" + +class G4Tubs; + +class G4LogicalVolume; +class G4VPhysicalVolume; + +class F04Materials; +class G4Material; + +class F04SimpleSolenoid; +class F04FocusSolenoid; + +class F04DetectorMessenger; + +#include "G4VUserDetectorConstruction.hh" + +class F04DetectorConstruction : public G4VUserDetectorConstruction +{ + public: + + F04DetectorConstruction(); + ~F04DetectorConstruction(); + + G4VPhysicalVolume* Construct(); + G4VPhysicalVolume* ConstructDetector(); + + void UpdateGeometry(); + + // stringToRotationMatrix() converts a string "X90,Y45" into a + // G4RotationMatrix. + // This is an active rotation, in that the object is first rotated + // around the parent's X axis by 90 degrees, then the object is + // further rotated around the parent's Y axis by 45 degrees. + // The return value points to a G4RotationMatrix on the heap, so + // it is persistent. Angles are in degrees, can have decimals, + // and can be negative. Axes are X, Y, Z. + + static G4RotationMatrix stringToRotationMatrix(G4String rotation); + + public: + + void SetWorldMaterial(G4String); + void SetWorldSizeZ(G4double); + void SetWorldSizeR(G4double); + + void SetCaptureMgntRadius(G4double); + void SetCaptureMgntLength(G4double); + void SetCaptureMgntB1(G4double); + void SetCaptureMgntB2(G4double); + + void SetTransferMgntRadius(G4double); + void SetTransferMgntLength(G4double); + void SetTransferMgntB(G4double); + void SetTransferMgntPos(G4double); + + void SetTargetMaterial (G4String); + void SetTargetThickness(G4double); + void SetTargetRadius(G4double); + void SetTargetPos(G4double); + void SetTargetAngle(G4int); + + void SetDegraderMaterial (G4String); + void SetDegraderThickness(G4double); + void SetDegraderRadius(G4double); + void SetDegraderPos(G4double); + + public: + + G4Material* GetWorldMaterial() {return WorldMaterial;}; + G4double GetWorldSizeZ() {return WorldSizeZ;}; + G4double GetWorldSizeR() {return WorldSizeR;}; + + G4double GetCaptureMgntRadius() {return CaptureMgntRadius;}; + G4double GetCaptureMgntLength() {return CaptureMgntLength;}; + G4double GetCaptureMgntB1() {return CaptureMgntB1;}; + G4double GetCaptureMgntB2() {return CaptureMgntB2;}; + + G4double GetTransferMgntRadius() {return TransferMgntRadius;}; + G4double GetTransferMgntLength() {return TransferMgntLength;}; + G4double GetTransferMgntB() {return TransferMgntB;}; + G4double GetTransferMgntPos() {return TransferMgntPos;}; + + G4Material* GetTargetMaterial() {return TargetMaterial;}; + G4double GetTargetRadius() {return TargetRadius;}; + G4double GetTargetThickness() {return TargetThickness;}; + G4double GetTargetPos() {return TargetPos;}; + G4int GetTargetAngle() {return TargetAngle;}; + + G4Material* GetDegraderMaterial() {return DegraderMaterial;}; + G4double GetDegraderRadius() {return DegraderRadius;}; + G4double GetDegraderThickness() {return DegraderThickness;}; + G4double GetDegraderPos() {return DegraderPos;}; + + private: + + F04Materials* materials; + + G4Material* Vacuum; + + G4Tubs* solidWorld; + G4LogicalVolume* logicWorld; + G4VPhysicalVolume* physiWorld; + + G4Tubs* solidTarget; + G4LogicalVolume* logicTarget; + G4VPhysicalVolume* physiTarget; + + G4Tubs* solidDegrader; + G4LogicalVolume* logicDegrader; + G4VPhysicalVolume* physiDegrader; + + G4Tubs* solidCaptureMgnt; + G4LogicalVolume* logicCaptureMgnt; + G4VPhysicalVolume* physiCaptureMgnt; + + G4Tubs* solidTransferMgnt; + G4LogicalVolume* logicTransferMgnt; + G4VPhysicalVolume* physiTransferMgnt; + + G4Material* WorldMaterial; + G4double WorldSizeR; + G4double WorldSizeZ; + + G4double CaptureMgntLength; + G4double CaptureMgntRadius; + G4double CaptureMgntB1; + G4double CaptureMgntB2; + + G4double TransferMgntLength; + G4double TransferMgntRadius; + G4double TransferMgntB; + G4double TransferMgntPos; + + G4Material* TargetMaterial; + G4double TargetThickness; + G4double TargetRadius; + G4double TargetPos; + G4int TargetAngle; + + G4Material* DegraderMaterial; + G4double DegraderThickness; + G4double DegraderRadius; + G4double DegraderPos; + + F04FocusSolenoid* focusSolenoid; + F04SimpleSolenoid* simpleSolenoid; + + private: + + void DefineMaterials(); + + F04DetectorMessenger* detectorMessenger; // pointer to the Messenger + +}; + +#endif diff --git a/examples/extended/field/field04/include/F04DetectorMessenger.hh b/examples/extended/field/field04/include/F04DetectorMessenger.hh new file mode 100644 index 0000000000..1e6e6b8cb0 --- /dev/null +++ b/examples/extended/field/field04/include/F04DetectorMessenger.hh @@ -0,0 +1,93 @@ +// +// ******************************************************************** +// * 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: F04DetectorMessenger.hh,v 1.1 2007/10/30 02:01:47 gum Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04DetectorMessenger_h +#define F04DetectorMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +#include "F04DetectorConstruction.hh" + +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithoutParameter; + +class F04DetectorMessenger : public G4UImessenger +{ + public: + + F04DetectorMessenger(F04DetectorConstruction* ); + ~F04DetectorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + + F04DetectorConstruction* Detector; + + G4UIdirectory* detDir; + + G4UIcmdWithAString* WorldMaterCmd; + G4UIcmdWithADoubleAndUnit* WorldRCmd; + G4UIcmdWithADoubleAndUnit* WorldZCmd; + + G4UIcmdWithADoubleAndUnit* CaptureRCmd; + G4UIcmdWithADoubleAndUnit* CaptureZCmd; + G4UIcmdWithADoubleAndUnit* CaptureB1Cmd; + G4UIcmdWithADoubleAndUnit* CaptureB2Cmd; + + G4UIcmdWithADoubleAndUnit* TransferRCmd; + G4UIcmdWithADoubleAndUnit* TransferZCmd; + G4UIcmdWithADoubleAndUnit* TransferBCmd; + G4UIcmdWithADoubleAndUnit* TransferPCmd; + + G4UIcmdWithAString* TgtMaterCmd; + G4UIcmdWithADoubleAndUnit* TgtRadCmd; + G4UIcmdWithADoubleAndUnit* TgtThickCmd; + G4UIcmdWithADoubleAndUnit* TgtPosCmd; + G4UIcmdWithAnInteger* TgtAngCmd; + + G4UIcmdWithAString* DgrMaterCmd; + G4UIcmdWithADoubleAndUnit* DgrRadCmd; + G4UIcmdWithADoubleAndUnit* DgrThickCmd; + G4UIcmdWithADoubleAndUnit* DgrPosCmd; + + G4UIcmdWithoutParameter* UpdateCmd; + +}; + +#endif diff --git a/examples/extended/field/field04/include/F04ElementField.hh b/examples/extended/field/field04/include/F04ElementField.hh new file mode 100644 index 0000000000..02adfbbf0a --- /dev/null +++ b/examples/extended/field/field04/include/F04ElementField.hh @@ -0,0 +1,159 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04ElementField_h +#define F04ElementField_h 1 + +#include "globals.hh" + +#include "G4Navigator.hh" +#include "G4TransportationManager.hh" + +#include "G4UserLimits.hh" +#include "G4VisAttributes.hh" + +// class F04ElementField - interface for the EM field of one element + +// This is the interface class used by GlobalField to compute the field +// value at a given point[]. + +// An element that represents an element with an EM field will +// derive a class from this one and implement the computation for the +// element. The construct() function will add the derived object into +// GlobalField. + +class F04ElementField +{ + + private: + + F04ElementField& operator=(const F04ElementField&); + + public: + + /// Constructor. + F04ElementField(const G4ThreeVector, G4LogicalVolume*); + + /// the actual implementation constructs the F04ElementField + void construct(); + + /// Destructor. + virtual ~F04ElementField() { if (aNavigator) delete aNavigator; } + + /// setMaxStep(G4double) sets the max. step size + void setMaxStep(G4double s) + { + maxStep = s; + userLimits->SetMaxAllowedStep(maxStep); + lvolume->SetUserLimits(userLimits); + } + + /// getMaxStep() returns the max. step size + G4double getMaxStep() { return maxStep; } + + /// setColor(G4String) sets the color + void setColor(G4String c) + { + color = c; + lvolume->SetVisAttributes(getVisAttribute(color)); + } + + /// getColor() returns the color + G4String getColor() { return color; } + + /// getVisAttribute() returns the appropriate G4VisAttributes. + static G4VisAttributes* getVisAttribute(G4String color); + + /// setGlobalPoint() ensures that the point is within the global + /// bounding box of this ElementField's global coordinates. + /// Normally called 8 times for the corners of the local bounding + /// box, after a local->global coordinate transform. + /// If never called, the global bounding box is infinite. + /// BEWARE: if called only once, the bounding box is just a point. + void setGlobalPoint(const G4double point[4]) + { + if(minX == -DBL_MAX || minX > point[0]) minX = point[0]; + if(minY == -DBL_MAX || minY > point[1]) minY = point[1]; + if(minZ == -DBL_MAX || minZ > point[2]) minZ = point[2]; + if(maxX == DBL_MAX || maxX < point[0]) maxX = point[0]; + if(maxY == DBL_MAX || maxY < point[1]) maxY = point[1]; + if(maxZ == DBL_MAX || maxZ < point[2]) maxZ = point[2]; + } + + /// isInBoundingBox() returns true if the point is within the + /// global bounding box - global coordinates. + bool isInBoundingBox(const G4double point[4]) const + { + if(point[2] < minZ || point[2] > maxZ) return false; + if(point[0] < minX || point[0] > maxX) return false; + if(point[1] < minY || point[1] > maxY) return false; + return true; + } + + /// addFieldValue() will add the field value for this element to field[]. + /// Implementations must be sure to verify that point[] is within + /// the field region, and do nothing if not. + /// point[] is in global coordinates and geant4 units; x,y,z,t. + /// field[] is in geant4 units; Bx,By,Bz,Ex,Ey,Ez. + /// For efficiency, the caller may (but need not) call + /// isInBoundingBox(point), and only call this function if that + /// returns true. + virtual void + addFieldValue(const G4double point[4], G4double field[6]) const = 0; + + virtual G4double getLength() = 0; + virtual G4double getWidth() = 0; + virtual G4double getHeight() = 0; + + protected: + + G4LogicalVolume* lvolume; + + G4AffineTransform global2local; + +// F04ElementField(const F04ElementField&); + + private: + + static G4Navigator* aNavigator; + + G4String color; + + G4ThreeVector center; + G4double minX, minY, minZ, maxX, maxY,maxZ; + + G4double maxStep; + G4UserLimits* userLimits; + +}; + +#endif diff --git a/examples/extended/field/field04/include/F04EventAction.hh b/examples/extended/field/field04/include/F04EventAction.hh new file mode 100644 index 0000000000..32a48d364a --- /dev/null +++ b/examples/extended/field/field04/include/F04EventAction.hh @@ -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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04EventAction_h +#define F04EventAction_h 1 + +#include "globals.hh" +#include "G4UserEventAction.hh" + +class F04RunAction; +class F04EventActionMessenger; + +class F04EventAction : public G4UserEventAction +{ + public: + + F04EventAction(F04RunAction* RA); + ~F04EventAction(); + + public: + + void BeginOfEventAction(const G4Event*); + void EndOfEventAction(const G4Event*); + + G4int GetEventNo(); + void SetEventVerbose(G4int); + + void SetDrawFlag(G4String val) { drawFlag = val; }; + void SetPrintModulo(G4int val) { printModulo = val; }; + + private: + + F04RunAction* runaction; + F04EventActionMessenger* eventMessenger; + + G4int verboselevel; + G4int printModulo; + + G4String drawFlag; + +}; + +#endif diff --git a/examples/extended/field/field04/include/F04EventActionMessenger.hh b/examples/extended/field/field04/include/F04EventActionMessenger.hh new file mode 100644 index 0000000000..f89d1eb488 --- /dev/null +++ b/examples/extended/field/field04/include/F04EventActionMessenger.hh @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04EventActionMessenger_h +#define F04EventActionMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class F04EventAction; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; + +class F04EventActionMessenger: public G4UImessenger +{ + public: + + F04EventActionMessenger(F04EventAction*); + ~F04EventActionMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + + F04EventAction* eventAction; + + G4UIcmdWithAnInteger* setVerboseCmd; + G4UIcmdWithAString* DrawCmd; + G4UIcmdWithAnInteger* PrintCmd; +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAStopAndKillBelowEnergyLimitPolicy.icc b/examples/extended/field/field04/include/F04ExtraPhysics.hh similarity index 77% rename from source/processes/electromagnetic/lowenergy/include/G4DNAStopAndKillBelowEnergyLimitPolicy.icc rename to examples/extended/field/field04/include/F04ExtraPhysics.hh index 91ca0a6ee9..c1d07be78e 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAStopAndKillBelowEnergyLimitPolicy.icc +++ b/examples/extended/field/field04/include/F04ExtraPhysics.hh @@ -24,16 +24,28 @@ // ******************************************************************** // // -// $Id: G4DNAStopAndKillBelowEnergyLimitPolicy.icc,v 1.2 2006/06/29 19:35:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// // -#ifdef G4DNASTOPANDKILLBELOWENERGYLIMITPOLICY_HH - #include "G4Electron.hh" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - template - G4bool G4DNAStopAndKillBelowEnergyLimitPolicy :: KillIncomingParticle(G4double k) const - { - return (k < EnergyLimitsPolicy::lowEnergyLimit); - } -#endif /* G4DNASTOPANDKILLBELOWENERGYLIMITPOLICY_HH */ +#ifndef F04ExtraPhysics_h +#define F04ExtraPhysics_h 1 + +#include "globals.hh" + +#include "G4VPhysicsConstructor.hh" + +class F04ExtraPhysics : public G4VPhysicsConstructor +{ +public: + + F04ExtraPhysics(); + virtual ~F04ExtraPhysics(); + + virtual void ConstructParticle(); + virtual void ConstructProcess(); + +}; +#endif diff --git a/examples/extended/field/field04/include/F04FieldMessenger.hh b/examples/extended/field/field04/include/F04FieldMessenger.hh new file mode 100644 index 0000000000..7e09d06399 --- /dev/null +++ b/examples/extended/field/field04/include/F04FieldMessenger.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04FieldMessenger_h +#define F04FieldMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class F04GlobalField; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithoutParameter; + +class F04FieldMessenger: public G4UImessenger +{ + public: + F04FieldMessenger(F04GlobalField* ); + ~F04FieldMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + void SetNewValue(G4UIcommand*, G4int); + + private: + + F04GlobalField* fGlobalField; + + G4UIdirectory* detDir; + + G4UIcmdWithAnInteger* fStepperCMD; + G4UIcmdWithADoubleAndUnit* fMinStepCMD; + G4UIcmdWithADoubleAndUnit* fDeltaChordCMD; + G4UIcmdWithADoubleAndUnit* fDeltaOneStepCMD; + G4UIcmdWithADoubleAndUnit* fDeltaIntersectionCMD; + G4UIcmdWithADoubleAndUnit* fEpsMinCMD; + G4UIcmdWithADoubleAndUnit* fEpsMaxCMD; + G4UIcmdWithoutParameter* fUpdateCMD; + +}; + +#endif + diff --git a/examples/extended/field/field04/include/F04FocusSolenoid.hh b/examples/extended/field/field04/include/F04FocusSolenoid.hh new file mode 100644 index 0000000000..b7c11644cd --- /dev/null +++ b/examples/extended/field/field04/include/F04FocusSolenoid.hh @@ -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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04FocusSolenoid_h +#define F04FocusSolenoid_h 1 + +#include "G4LogicalVolume.hh" + +#include "F04SimpleSolenoid.hh" + +// F04FocusSolenoid implements a solenoid magnet with an increased +// cylindrical magnetic field in +/- z-direction (or half focusing) + +class F04FocusSolenoid : public F04SimpleSolenoid +{ + public: + + /// Default constructor. + F04FocusSolenoid(G4double, G4double, G4double, + G4LogicalVolume*, G4ThreeVector); + + /// Destructor. + virtual ~F04FocusSolenoid() {} + + /// Set F04FocusSolenoid to only half-focusing (default negative z) + void SetHalf(G4bool h) { Half = h; } + + /// addFieldValue() adds the field for this solenoid into field[]. + /// point[] is in global coordinates. + void addFieldValue(const G4double point[4], G4double field[6]) const; + + private: + + G4bool Half; + + G4double B1; + G4double B2; + +}; + +#endif diff --git a/examples/extended/field/field04/include/F04GlobalField.hh b/examples/extended/field/field04/include/F04GlobalField.hh new file mode 100644 index 0000000000..745303ed07 --- /dev/null +++ b/examples/extended/field/field04/include/F04GlobalField.hh @@ -0,0 +1,176 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04GlobalField_h +#define F04GlobalField_h 1 + +#include + +#include "G4FieldManager.hh" +#include "G4PropagatorInField.hh" +#include "G4MagIntegratorStepper.hh" +#include "G4ChordFinder.hh" + +#include "G4MagneticField.hh" +#include "G4ElectroMagneticField.hh" + +#include "G4Mag_EqRhs.hh" +#include "G4Mag_SpinEqRhs.hh" + +#include "G4EqMagElectricField.hh" +#include "G4EqEMFieldWithSpin.hh" + +#include "F04FieldMessenger.hh" +#include "F04ElementField.hh" + +// F04GlobalField - handles the global ElectroMagnetic field +// +// There is a single G04GlobalField object. +// +// The field from each individual beamline element is given by a +// ElementField object. Any number of overlapping ElementField +// objects can be added to the global field. Any element that +// represents an element with an EM field must add the appropriate +// ElementField to the global GlobalField object. + +typedef std::vector FieldList; + +class F04GlobalField : public G4ElectroMagneticField { +//class F04GlobalField : public G4MagneticField { + +private: + + F04GlobalField(); + F04GlobalField(const F04GlobalField&); + + ~F04GlobalField(); + + F04GlobalField& operator=(const F04GlobalField&); + + void setupArray(); + +public: + + /// getObject() returns the single F04GlobalField object. + /// It is constructed, if necessary. + static F04GlobalField* getObject(); + + /// GetFieldValue() returns the field value at a given point[]. + /// field is really field[6]: Bx,By,Bz,Ex,Ey,Ez. + /// point[] is in global coordinates: x,y,z,t. + void GetFieldValue(const G4double* point, G4double* field) const; + + /// DoesFieldChangeEnergy() returns true. + G4bool DoesFieldChangeEnergy() const { return true; } + + /// addElementField() adds the ElementField object for a single + /// element to the global field. + void addElementField(F04ElementField* f) { if (fields) fields->push_back(f); } + + /// clear() removes all ElementField-s from the global object, + /// and destroys them. Used before the geometry is completely + /// re-created. + void clear(); + + /// updates all field tracking objects and clear() + void updateField(); + + /// Set the Stepper types + void SetStepperType( G4int i ) { fStepperType = i; } + + /// Set the Stepper + void SetStepper(); + + /// Set the minimum step length + void SetMinStep(G4double s) { minStep = s; } + + /// Set the delta chord length + void SetDeltaChord(G4double s) { deltaChord = s; } + + /// Set the delta one step length + void SetDeltaOneStep(G4double s) { deltaOneStep = s; } + + /// Set the delta intersection length + void SetDeltaIntersection(G4double s) { deltaIntersection = s; } + + /// Set the minimum eps length + void SetEpsMin(G4double s) { epsMin = s; } + + /// Set the maximum eps length + void SetEpsMax(G4double s) { epsMax = s; } + + /// Return the list of Element Fields + FieldList* getFields() { return fields; } + +protected: + + /// Get the global field manager + G4FieldManager* GetGlobalFieldManager(); + +private: + + static F04GlobalField* object; + + G4int nfp; + G4bool first; + + FieldList* fields; + + const F04ElementField **fp; + +private: + + G4int fStepperType; + + G4double minStep; + G4double deltaChord; + G4double deltaOneStep; + G4double deltaIntersection; + G4double epsMin; + G4double epsMax; + +// G4Mag_EqRhs* fEquation; +// G4Mag_SpinEqRhs* fEquation; + +// G4EqMagElectricField* fEquation; + G4EqEMFieldWithSpin* fEquation; + + G4FieldManager* fFieldManager; + G4PropagatorInField* fFieldPropagator; + G4MagIntegratorStepper* fStepper; + G4ChordFinder* fChordFinder; + + F04FieldMessenger* fFieldMessenger; + +}; + +#endif diff --git a/examples/extended/field/field04/include/F04Materials.hh b/examples/extended/field/field04/include/F04Materials.hh new file mode 100644 index 0000000000..48ec874d29 --- /dev/null +++ b/examples/extended/field/field04/include/F04Materials.hh @@ -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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04Materials_h +#define F04Materials_h 1 + +#include "globals.hh" +#include "G4Material.hh" +#include "G4NistManager.hh" + +class F04Materials +{ + public: + + ~F04Materials(); + + static F04Materials* GetInstance(); + + G4Material* GetMaterial(G4String); + + private: + + F04Materials(); + + void CreateMaterials(); + + private: + + static F04Materials* instance; + + G4NistManager* nistMan; + + G4Material* Vacuum; + G4Material* Air; + G4Material* Sci; + G4Material* BeO; + +}; + +#endif /*F04Materials_h*/ diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAElectronElasticEmfietzoglou.cc b/examples/extended/field/field04/include/F04OpticalPhysics.hh similarity index 76% rename from source/processes/electromagnetic/lowenergy/src/G4DNAElectronElasticEmfietzoglou.cc rename to examples/extended/field/field04/include/F04OpticalPhysics.hh index be1da47e73..28596e3552 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAElectronElasticEmfietzoglou.cc +++ b/examples/extended/field/field04/include/F04OpticalPhysics.hh @@ -24,12 +24,28 @@ // ******************************************************************** // // -// $Id: G4DNAElectronElasticEmfietzoglou.cc,v 1.3 2006/06/29 19:39:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// +// -#include "G4DNAElectronElasticEmfietzoglou.hh" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -const G4double G4DNAEmfietzoglouEnergyLimitsPolicy::lowEnergyLimit(200*eV); -const G4bool G4DNAEmfietzoglouEnergyLimitsPolicy::zeroBelowLowEnergyLimit(true); -const G4double G4DNAEmfietzoglouEnergyLimitsPolicy::highEnergyLimit(10*keV); -const G4bool G4DNAEmfietzoglouEnergyLimitsPolicy::zeroAboveHighEnergyLimit(true); +#ifndef F04OpticalPhysics_h +#define F04OpticalPhysics_h 1 + +#include "globals.hh" + +#include "G4VPhysicsConstructor.hh" + +class F04OpticalPhysics : public G4VPhysicsConstructor +{ +public: + + F04OpticalPhysics(); + virtual ~F04OpticalPhysics(); + + virtual void ConstructParticle(); + virtual void ConstructProcess(); + +}; +#endif diff --git a/examples/extended/field/field04/include/F04PhysicsList.hh b/examples/extended/field/field04/include/F04PhysicsList.hh new file mode 100644 index 0000000000..6fc6368052 --- /dev/null +++ b/examples/extended/field/field04/include/F04PhysicsList.hh @@ -0,0 +1,102 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04PhysicsList_h +#define F04PhysicsList_h 1 + +#include "globals.hh" +#include "G4VModularPhysicsList.hh" + +class G4VPhysicsConstructor; +class F04PhysicsListMessenger; + +class F04StepMax; + +class F04PhysicsList: public G4VModularPhysicsList +{ +public: + + F04PhysicsList(G4String); + virtual ~F04PhysicsList(); + + void ConstructParticle(); + + void SetCuts(); + void SetCutForGamma(G4double); + void SetCutForElectron(G4double); + void SetCutForPositron(G4double); + + void SetStepMax(G4double); + F04StepMax* GetStepMaxProcess(); + void AddStepMax(); + + /// Add physics to the Physics List + void AddPhysicsList(const G4String& name); + + /// Remove specific EM physics from EM physics list. + void RemoveFromEMPhysicsList(const G4String&); + + /// Remove specific Hadron physics from Hadron physics list. + void RemoveFromHadronPhysicsList(const G4String&); + + /// Make sure that the EM physics list is empty. + void ClearEMPhysics(); + + /// Make sure that the hadron physics list is empty. + void ClearHadronPhysics(); + + void ConstructProcess(); + void List(); + +private: + + typedef std::vector PhysicsListVector; + + void SetStandardList(G4bool flagHP = false, G4bool glauber = false); + + G4double fCutForGamma; + G4double fCutForElectron; + G4double fCutForPositron; + + G4VPhysicsConstructor* fParticleList; + + PhysicsListVector* fEMPhysics; + PhysicsListVector* fHadronPhysics; + + G4double MaxChargedStep; + F04StepMax* stepMaxProcess; + + F04PhysicsListMessenger* fMessenger; + + G4bool fDump; +}; +#endif diff --git a/examples/extended/field/field04/include/F04PhysicsListMessenger.hh b/examples/extended/field/field04/include/F04PhysicsListMessenger.hh new file mode 100644 index 0000000000..d7194148b8 --- /dev/null +++ b/examples/extended/field/field04/include/F04PhysicsListMessenger.hh @@ -0,0 +1,94 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04PhysicsListMessenger_h +#define F04PhysicsListMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" + +#include "G4DecayTable.hh" +#include "G4VDecayChannel.hh" + +class F04PhysicsList; + +class G4UIdirectory; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithAString; +class G4UIcmdWithoutParameter; + +/// Provide control of the physics list and cut parameters + +class F04PhysicsListMessenger : public G4UImessenger +{ +public: + + F04PhysicsListMessenger(F04PhysicsList* ); + virtual ~F04PhysicsListMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + +private: + + F04PhysicsList* fPhysicsList; + + G4UIdirectory* fDirectory; + G4UIdirectory* fDecayDirectory; + + G4UIcmdWithADoubleAndUnit* fGammaCutCMD; + G4UIcmdWithADoubleAndUnit* fElectCutCMD; + G4UIcmdWithADoubleAndUnit* fPosCutCMD; + G4UIcmdWithADoubleAndUnit* fAllCutCMD; + G4UIcmdWithADoubleAndUnit* fStepMaxCMD; + + G4UIcmdWithAString* fAddPhysicsCMD; + G4UIcmdWithAString* fRemoveEMPhysicsCMD; + G4UIcmdWithAString* fRemoveHadronPhysicsCMD; + G4UIcmdWithoutParameter* fClearEMPhysicsCMD; + G4UIcmdWithoutParameter* fClearHadronPhysicsCMD; + + G4UIcmdWithoutParameter* fListCMD; + + G4UIcmdWithoutParameter* fPienuCMD; + G4UIcmdWithoutParameter* fPimunuCMD; + + G4ParticleTable* particleTable; + G4ParticleDefinition* particleDef; + + G4DecayTable* table; + G4VDecayChannel* mode; + +}; +#endif diff --git a/examples/extended/field/field04/include/F04PrimaryGeneratorAction.hh b/examples/extended/field/field04/include/F04PrimaryGeneratorAction.hh new file mode 100644 index 0000000000..1aaab46d14 --- /dev/null +++ b/examples/extended/field/field04/include/F04PrimaryGeneratorAction.hh @@ -0,0 +1,85 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04PrimaryGeneratorAction_h +#define F04PrimaryGeneratorAction_h 1 + +#include "globals.hh" +#include "G4VUserPrimaryGeneratorAction.hh" + +#include "G4Navigator.hh" +#include "G4TransportationManager.hh" + +class G4ParticleGun; +class G4Event; + +class F04DetectorConstruction; +class F04PrimaryGeneratorMessenger; + +class F04PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction +{ + public: + + F04PrimaryGeneratorAction(F04DetectorConstruction*); + ~F04PrimaryGeneratorAction(); + + public: + + void GeneratePrimaries(G4Event*); + + void SetRndmFlag(G4String val) { rndmFlag = val;} + + void Setxvertex(G4double x) ; + void Setyvertex(G4double y) ; + void Setzvertex(G4double z) ; + + private: + + F04DetectorConstruction* Detector; // pointer to the geometry + + G4ParticleGun* particleGun; // pointer a to G4 service class + + F04PrimaryGeneratorMessenger* gunMessenger; // messenger of this class + + G4String rndmFlag; // flag for random impact point + + static G4bool first; + + G4AffineTransform global2local; + + G4double xvertex, yvertex, zvertex; + + G4bool vertexdefined; + +}; + +#endif diff --git a/examples/extended/field/field04/include/F04PrimaryGeneratorMessenger.hh b/examples/extended/field/field04/include/F04PrimaryGeneratorMessenger.hh new file mode 100644 index 0000000000..88decac439 --- /dev/null +++ b/examples/extended/field/field04/include/F04PrimaryGeneratorMessenger.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04PrimaryGeneratorMessenger_h +#define F04PrimaryGeneratorMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class G4UIcmdWithAString; +class G4UIcmdWithADoubleAndUnit; + +class F04PrimaryGeneratorAction; + +class F04PrimaryGeneratorMessenger : public G4UImessenger +{ + public: + + F04PrimaryGeneratorMessenger(F04PrimaryGeneratorAction*); + ~F04PrimaryGeneratorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + + F04PrimaryGeneratorAction* Action; + + G4UIcmdWithAString* RndmCmd; + G4UIcmdWithADoubleAndUnit* setxvertexCmd; + G4UIcmdWithADoubleAndUnit* setyvertexCmd; + G4UIcmdWithADoubleAndUnit* setzvertexCmd; +}; + +#endif diff --git a/examples/extended/field/field04/include/F04RunAction.hh b/examples/extended/field/field04/include/F04RunAction.hh new file mode 100644 index 0000000000..ebbdd7b449 --- /dev/null +++ b/examples/extended/field/field04/include/F04RunAction.hh @@ -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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04RunAction_h +#define F04RunAction_h 1 + +#include "globals.hh" + +#include "G4UserRunAction.hh" + +class F04RunActionMessenger; +class G4Run; + +class F04RunAction : public G4UserRunAction +{ + public: + + F04RunAction(); + ~F04RunAction(); + + public: + + void BeginOfRunAction(const G4Run*); + void EndOfRunAction(const G4Run*); + + void SetRndmFreq(G4int val) {saveRndm = val;} + G4int GetRndmFreq() {return saveRndm;} + + private: + + F04RunActionMessenger* runMessenger; + + G4int saveRndm; +}; + +#endif diff --git a/examples/extended/field/field04/include/F04RunActionMessenger.hh b/examples/extended/field/field04/include/F04RunActionMessenger.hh new file mode 100644 index 0000000000..2180a71311 --- /dev/null +++ b/examples/extended/field/field04/include/F04RunActionMessenger.hh @@ -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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04RunActionMessenger_h +#define F04RunActionMessenger_h 1 + +#include "globals.hh" + +#include "G4UImessenger.hh" + +class F04RunAction; + +class G4UIdirectory; +class G4UIcmdWithAnInteger; +class G4UIcmdWithAString; + +class F04RunActionMessenger : public G4UImessenger +{ + public: + + F04RunActionMessenger(F04RunAction* ); + ~F04RunActionMessenger(); + + void SetNewValue(G4UIcommand* ,G4String ); + + private: + + F04RunAction* runAction; + + G4UIdirectory* RndmDir; + G4UIcmdWithAnInteger* RndmSaveCmd; + G4UIcmdWithAString* RndmReadCmd; + +}; + +#endif diff --git a/examples/extended/field/field04/include/F04SimpleSolenoid.hh b/examples/extended/field/field04/include/F04SimpleSolenoid.hh new file mode 100644 index 0000000000..618a85a615 --- /dev/null +++ b/examples/extended/field/field04/include/F04SimpleSolenoid.hh @@ -0,0 +1,91 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04SimpleSolenoid_h +#define F04SimpleSolenoid_h 1 + +#include "G4LogicalVolume.hh" +#include "G4Tubs.hh" + +#include "F04ElementField.hh" +#include "F04GlobalField.hh" + +// F04SimpleSolenoid implements a solenoid magnet with a constant +// cylindrical magnetic field in z-direction + +class F04SimpleSolenoid : public F04ElementField +{ + public: + + /// Default constructor. + F04SimpleSolenoid(G4double, G4double, G4LogicalVolume*, G4ThreeVector); + + /// Destructor. + virtual ~F04SimpleSolenoid() {} + + /// getLength() returns the length of the solenoid + virtual G4double getLength() { return fieldLength; } + + /// getWidth() returns the solenoid diameter + virtual G4double getWidth() { return fieldRadius*2.0; } + + /// getHeight() returns the solenoid diameter + virtual G4double getHeight() { return fieldRadius*2.0; } + + /// setFringeZ(G4double) sets the solenoid fringe field z-length + void setFringeZ(G4double z) { fringeZ = z; } + + /// getFringeZ() returns the solenoid fringe field z-length + G4double getFringeZ() { return fringeZ; } + + /// isOutside() returns true when outside the solenoid + G4bool isOutside(G4ThreeVector& local) const; + + /// isWithin() returns true when inside the solenoid + G4bool isWithin(G4ThreeVector& local) const; + + /// addFieldValue() adds the field for this solenoid into field[]. + /// point[] is in global coordinates. + void addFieldValue(const G4double point[4], G4double field[6]) const; + + private: + + G4double Bfield; + + G4double fringeZ; + + G4double fieldRadius; + G4double fieldLength; + +}; + +#endif diff --git a/examples/extended/field/field04/include/F04StackingAction.hh b/examples/extended/field/field04/include/F04StackingAction.hh new file mode 100644 index 0000000000..f59ea08860 --- /dev/null +++ b/examples/extended/field/field04/include/F04StackingAction.hh @@ -0,0 +1,54 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04StackingAction_h +#define F04StackingAction_h 1 + +#include "G4UserStackingAction.hh" + +class F04StackingAction : public G4UserStackingAction +{ + public: + F04StackingAction(); + ~F04StackingAction(); + + public: + virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* aTrack); + virtual void NewStage(); + virtual void PrepareNewEvent(); + + private: + +}; + +#endif + diff --git a/examples/extended/field/field04/include/F04StepMax.hh b/examples/extended/field/field04/include/F04StepMax.hh new file mode 100644 index 0000000000..afdbcd5456 --- /dev/null +++ b/examples/extended/field/field04/include/F04StepMax.hh @@ -0,0 +1,78 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04StepMax_h +#define F04StepMax_h 1 + +#include "globals.hh" + +#include "G4Step.hh" +#include "G4VDiscreteProcess.hh" +#include "G4ParticleDefinition.hh" + +class F04StepMax : public G4VDiscreteProcess +{ + public: + + F04StepMax(const G4String& processName = "UserStepMax"); + F04StepMax(F04StepMax &); + + ~F04StepMax(); + + G4bool IsApplicable(const G4ParticleDefinition&); + + void SetStepMax(G4double); + + G4double GetStepMax() {return MaxChargedStep;}; + + G4double PostStepGetPhysicalInteractionLength(const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition); + + G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&); + + protected: + + G4double GetMeanFreePath(const G4Track&, G4double, G4ForceCondition*); + + private: + + // hide assignment operator as private + F04StepMax & operator=(const F04StepMax &right); + F04StepMax(const F04StepMax&); + + private: + G4double MaxChargedStep; + +}; + +#endif diff --git a/examples/extended/field/field04/include/F04SteppingAction.hh b/examples/extended/field/field04/include/F04SteppingAction.hh new file mode 100644 index 0000000000..105d0f455c --- /dev/null +++ b/examples/extended/field/field04/include/F04SteppingAction.hh @@ -0,0 +1,57 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04SteppingAction_h +#define F04SteppingAction_h 1 + +#include "G4UserSteppingAction.hh" + +class F04SteppingActionMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F04SteppingAction : public G4UserSteppingAction +{ + public: + + F04SteppingAction(); + ~F04SteppingAction(); + + void UserSteppingAction(const G4Step*); + + private: + + F04SteppingActionMessenger* steppingMessenger; + +}; + +#endif diff --git a/examples/extended/field/field04/include/F04SteppingActionMessenger.hh b/examples/extended/field/field04/include/F04SteppingActionMessenger.hh new file mode 100644 index 0000000000..8c6a9f425b --- /dev/null +++ b/examples/extended/field/field04/include/F04SteppingActionMessenger.hh @@ -0,0 +1,58 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04SteppingActionMessenger_h +#define F04SteppingActionMessenger_h 1 + +#include "G4UImessenger.hh" + +class F04SteppingAction; +class G4UIdirectory; + +class F04SteppingActionMessenger: public G4UImessenger +{ + public: + + F04SteppingActionMessenger(F04SteppingAction* ); + ~F04SteppingActionMessenger(); + + void SetNewValue(G4UIcommand* ,G4String ); + + private: + + F04SteppingAction* steppingAction; + + G4UIdirectory* steppingDir; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAElectronElasticBrenner.cc b/examples/extended/field/field04/include/F04SteppingVerbose.hh similarity index 77% rename from source/processes/electromagnetic/lowenergy/src/G4DNAElectronElasticBrenner.cc rename to examples/extended/field/field04/include/F04SteppingVerbose.hh index 7870f54f0e..fd710cf2a3 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAElectronElasticBrenner.cc +++ b/examples/extended/field/field04/include/F04SteppingVerbose.hh @@ -24,12 +24,26 @@ // ******************************************************************** // // -// $Id: G4DNAElectronElasticBrenner.cc,v 1.4 2006/06/29 19:39:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// +// -#include "G4DNAElectronElasticBrenner.hh" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -const G4double G4DNABrennerEnergyLimitsPolicy::lowEnergyLimit(7.5*eV); -const G4bool G4DNABrennerEnergyLimitsPolicy::zeroBelowLowEnergyLimit(false); -const G4double G4DNABrennerEnergyLimitsPolicy::highEnergyLimit(200*eV); -const G4bool G4DNABrennerEnergyLimitsPolicy::zeroAboveHighEnergyLimit(true); +#ifndef F04SteppingVerbose_h +#define F04SteppingVerbose_h 1 + +#include "G4SteppingVerbose.hh" + +class F04SteppingVerbose : public G4SteppingVerbose +{ + public: + + F04SteppingVerbose(); + ~F04SteppingVerbose(); + + void StepInfo(); + void TrackingStarted(); +}; + +#endif diff --git a/examples/extended/field/field04/include/F04TrackingAction.hh b/examples/extended/field/field04/include/F04TrackingAction.hh new file mode 100644 index 0000000000..8d150eb135 --- /dev/null +++ b/examples/extended/field/field04/include/F04TrackingAction.hh @@ -0,0 +1,50 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04TrackingAction_h +#define F04TrackingAction_h 1 + +#include "G4UserTrackingAction.hh" + +class F04TrackingAction : public G4UserTrackingAction { + + public: + + F04TrackingAction() { }; + ~F04TrackingAction() { }; + + void PreUserTrackingAction(const G4Track*); + void PostUserTrackingAction(const G4Track*); + +}; + +#endif diff --git a/examples/extended/field/field04/include/F04Trajectory.hh b/examples/extended/field/field04/include/F04Trajectory.hh new file mode 100644 index 0000000000..c463823d34 --- /dev/null +++ b/examples/extended/field/field04/include/F04Trajectory.hh @@ -0,0 +1,130 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04Trajectory_h +#define F04Trajectory_h 1 + +#include +#include + +#include "globals.hh" + +#include "G4ios.hh" +#include "G4Step.hh" +#include "G4Track.hh" +#include "G4Allocator.hh" +#include "G4VTrajectory.hh" +#include "G4ParticleDefinition.hh" +#include "G4TrajectoryPoint.hh" + +typedef std::vector TrajectoryPointContainer; + +class F04Trajectory : public G4VTrajectory +{ + +//-------- + public: // without description +//-------- + +// Constructor/Destructor + + F04Trajectory(); + F04Trajectory(const G4Track* aTrack); + F04Trajectory(F04Trajectory &); + virtual ~F04Trajectory(); + +// Operators + + inline void* operator new(size_t); + inline void operator delete(void*); + inline int operator == (const F04Trajectory& right) const + { return (this==&right); } + +// Get/Set functions + + inline G4int GetTrackID() const { return fTrackID; } + inline G4int GetParentID() const { return fParentID; } + inline G4String GetParticleName() const { return ParticleName; } + inline G4double GetCharge() const { return PDGCharge; } + inline G4int GetPDGEncoding() const { return PDGEncoding; } + inline G4ThreeVector GetInitialMomentum() const { return initialMomentum; } + +// Other member functions + + virtual void ShowTrajectory(std::ostream& os=G4cout) const; + virtual void DrawTrajectory(G4int i_mode=0) const; + virtual void AppendStep(const G4Step* aStep); + virtual void MergeTrajectory(G4VTrajectory* secondTrajectory); + + G4ParticleDefinition* GetParticleDefinition(); + + virtual int GetPointEntries() const + { return fpPointsContainer->size(); } + virtual G4VTrajectoryPoint* GetPoint(G4int i) const + { return (*fpPointsContainer)[i]; } + + virtual const std::map* GetAttDefs() const; + virtual std::vector* CreateAttValues() const; + +//--------- + private: +//--------- + +// Member data + + TrajectoryPointContainer* fpPointsContainer; + + G4int fTrackID; + G4int fParentID; + G4double PDGCharge; + G4int PDGEncoding; + G4String ParticleName; + G4ThreeVector initialMomentum; + +}; + +#if defined G4TRACKING_ALLOC_EXPORT + extern G4DLLEXPORT G4Allocator aTrajectoryAllocator; +#else + extern G4DLLIMPORT G4Allocator aTrajectoryAllocator; +#endif + +inline void* F04Trajectory::operator new(size_t) { + void* aTrajectory = (void*) aTrajectoryAllocator.MallocSingle(); + return aTrajectory; +} + +inline void F04Trajectory::operator delete(void* aTrajectory) { + aTrajectoryAllocator.FreeSingle((F04Trajectory*)aTrajectory); +} + +#endif diff --git a/examples/extended/field/field04/include/F04TrajectoryPoint.hh b/examples/extended/field/field04/include/F04TrajectoryPoint.hh new file mode 100644 index 0000000000..01d77ad445 --- /dev/null +++ b/examples/extended/field/field04/include/F04TrajectoryPoint.hh @@ -0,0 +1,112 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04TrajectoryPoint_h +#define F04TrajectoryPoint_h 1 + +#include "globals.hh" + +#include "G4Allocator.hh" +#include "G4ThreeVector.hh" +#include "G4TrajectoryPoint.hh" + +#include "G4StepStatus.hh" + +class G4Track; +class G4Step; +class G4VProcess; + +class F04TrajectoryPoint : public G4TrajectoryPoint { + +//-------- + public: // without description +//-------- + +// Constructor/Destructor + + F04TrajectoryPoint(); + F04TrajectoryPoint(const G4Track* aTrack); + F04TrajectoryPoint(const G4Step* aStep); + F04TrajectoryPoint(const F04TrajectoryPoint &right); + virtual ~F04TrajectoryPoint(); + +// Operators + + inline void *operator new(size_t); + inline void operator delete(void *aTrajectoryPoint); + inline int operator==(const F04TrajectoryPoint& right) const + { return (this==&right); }; + +// Get/Set functions + + inline G4double GetTime() const { return fTime; }; + inline const G4ThreeVector GetMomentum() const { return fMomentum; }; + inline G4StepStatus GetStepStatus() const { return fStepStatus; }; + inline G4String GetVolumeName() const { return fVolumeName; }; + +// Get method for HEPRep style attributes + + virtual const std::map* GetAttDefs() const; + virtual std::vector* CreateAttValues() const; + +//--------- + private: +//--------- + +// Member data + + G4double fTime; + G4ThreeVector fMomentum; + G4StepStatus fStepStatus; + G4String fVolumeName; + +}; + +#if defined G4TRACKING_ALLOC_EXPORT + extern G4DLLEXPORT G4Allocator aTrajPointAllocator; +#else + extern G4DLLIMPORT G4Allocator aTrajPointAllocator; +#endif + +inline void* F04TrajectoryPoint::operator new(size_t) +{ + void *aTrajectoryPoint = (void *) aTrajPointAllocator.MallocSingle(); + return aTrajectoryPoint; +} + +inline void F04TrajectoryPoint::operator delete(void *aTrajectoryPoint) +{ + aTrajPointAllocator.FreeSingle( + (F04TrajectoryPoint *) aTrajectoryPoint); +} + +#endif diff --git a/examples/extended/field/field04/include/F04UserTrackInformation.hh b/examples/extended/field/field04/include/F04UserTrackInformation.hh new file mode 100644 index 0000000000..5660a304c6 --- /dev/null +++ b/examples/extended/field/field04/include/F04UserTrackInformation.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F04UserTrackInformation_h +#define F04UserTrackInformation_h 1 + +#include "G4VUserTrackInformation.hh" + +enum TrackStatus { undefined, left, right, reverse }; + +/*TrackStatus: + undefined: + left: track is going -z + right: track is going +z + reverse: track has reversed direction from left to right +*/ + +class F04UserTrackInformation : public G4VUserTrackInformation +{ + + public: + + F04UserTrackInformation(); + ~F04UserTrackInformation(); + + void SetTrackStatusFlag(TrackStatus s){ status = s; } + TrackStatus GetTrackStatusFlag()const { return status; } + + void Print() const { } + + private: + + TrackStatus status; + +}; + +#endif diff --git a/examples/extended/field/field04/random/currentEvent.rndm b/examples/extended/field/field04/random/currentEvent.rndm new file mode 100644 index 0000000000..e79c87984d --- /dev/null +++ b/examples/extended/field/field04/random/currentEvent.rndm @@ -0,0 +1,5 @@ +Uvec +1878463799 +0 +923333317 +1413602166 diff --git a/examples/extended/field/field04/src/F04DetectorConstruction.cc b/examples/extended/field/field04/src/F04DetectorConstruction.cc new file mode 100644 index 0000000000..2c0bb41bc2 --- /dev/null +++ b/examples/extended/field/field04/src/F04DetectorConstruction.cc @@ -0,0 +1,505 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "G4ios.hh" +#include "globals.hh" + +#include "F04DetectorConstruction.hh" +#include "F04DetectorMessenger.hh" + +#include "F04GlobalField.hh" + +#include "G4Tubs.hh" +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" + +#include "G4Material.hh" +#include "G4NistManager.hh" + +#include "G4FieldManager.hh" +#include "G4UniformMagField.hh" +#include "G4TransportationManager.hh" + +#include "G4GeometryManager.hh" + +#include "G4SolidStore.hh" +#include "G4RegionStore.hh" +#include "G4LogicalVolumeStore.hh" +#include "G4PhysicalVolumeStore.hh" + +#include "G4RunManager.hh" + +#include "F04DetectorConstruction.hh" +#include "F04DetectorMessenger.hh" +#include "F04Materials.hh" + +#include "G4RotationMatrix.hh" + +#include "F04SimpleSolenoid.hh" +#include "F04FocusSolenoid.hh" + +F04DetectorConstruction::F04DetectorConstruction() + : solidWorld(0), logicWorld(0), physiWorld(0), + solidTarget(0), logicTarget(0), physiTarget(0), + solidDegrader(0),logicDegrader(0), physiDegrader(0), + solidCaptureMgnt(0), logicCaptureMgnt(0), physiCaptureMgnt(0), + solidTransferMgnt(0), logicTransferMgnt(0), physiTransferMgnt(0), + WorldMaterial(0), TargetMaterial(0), DegraderMaterial(0), + focusSolenoid(0), simpleSolenoid(0) +{ + WorldSizeZ = 50.*m; + WorldSizeR = 5.*m; + + TargetRadius = 0.4*cm; + TargetThickness = 16.0*cm; + + SetTargetAngle(170); + + DegraderRadius = 30.0*cm; + DegraderThickness = 0.1*cm; + + CaptureMgntRadius = 0.6*m; + CaptureMgntLength = 4.0*m; + + SetCaptureMgntB1(2.5*tesla); + SetCaptureMgntB2(5.0*tesla); + + TransferMgntRadius = 0.3*m; + TransferMgntLength = 15.0*m; + + SetTransferMgntB(5.0*tesla); + + DegraderPos = -TransferMgntLength/2. + DegraderThickness/2.; + + // ensure the global field is initialized + (void)F04GlobalField::getObject(); + + detectorMessenger = new F04DetectorMessenger(this); +} + +F04DetectorConstruction::~F04DetectorConstruction() +{ + delete detectorMessenger; +} + +G4VPhysicalVolume* F04DetectorConstruction::Construct() +{ + materials = F04Materials::GetInstance(); + + DefineMaterials(); + + return ConstructDetector(); +} + +void F04DetectorConstruction::DefineMaterials() +{ + //define materials for the experiment + + Vacuum = materials->GetMaterial("G4_Galactic"); + + WorldMaterial = materials->GetMaterial("G4_AIR"); + DegraderMaterial = materials->GetMaterial("G4_Pb"); + TargetMaterial = materials->GetMaterial("G4_W"); +} + +G4VPhysicalVolume* F04DetectorConstruction::ConstructDetector() +{ + solidWorld = new G4Tubs("World", + 0.,GetWorldSizeR(),GetWorldSizeZ()/2.,0.,twopi); + + logicWorld = new G4LogicalVolume(solidWorld, + GetWorldMaterial(), + "World"); + + physiWorld = new G4PVPlacement(0, + G4ThreeVector(), + "World", + logicWorld, + 0, + false, + 0); + + // Capture Magnet + + solidCaptureMgnt = new G4Tubs("CaptureMgnt", + 0.,GetCaptureMgntRadius(), + GetCaptureMgntLength()/2.,0.,twopi); + + logicCaptureMgnt = new G4LogicalVolume(solidCaptureMgnt, + Vacuum, + "CaptureMgnt"); + + G4ThreeVector CaptureMgntCenter = G4ThreeVector(); + + physiCaptureMgnt = new G4PVPlacement(0, + CaptureMgntCenter, + "CaptureMgnt", + logicCaptureMgnt, + physiWorld, + false, + 0); + + // Transfer Magnet + + solidTransferMgnt = new G4Tubs("TransferMgnt", + 0.,GetTransferMgntRadius(), + GetTransferMgntLength()/2.,0.,twopi); + + logicTransferMgnt = new G4LogicalVolume(solidTransferMgnt, + Vacuum, + "TransferMgnt"); + + G4double z = GetCaptureMgntLength()/2. + GetTransferMgntLength()/2. + + GetTransferMgntPos(); + G4double x = GetTransferMgntPos()/2.; + + G4ThreeVector TransferMgntCenter = G4ThreeVector(x,0.,z); + + G4RotationMatrix* g4rot = new G4RotationMatrix(); + *g4rot = stringToRotationMatrix("Y30,X10"); + *g4rot = g4rot->inverse(); + if (*g4rot == G4RotationMatrix()) g4rot = NULL; + + physiTransferMgnt = new G4PVPlacement(g4rot, + TransferMgntCenter, + "TransferMgnt", + logicTransferMgnt, + physiWorld, + false, + 0); + + // Test Plane + + G4Tubs* solidTestPlane = new G4Tubs("TestPlane", + 0.,GetTransferMgntRadius(), + 1.*mm,0.,twopi); + + G4LogicalVolume* logicTestPlane = new G4LogicalVolume(solidTestPlane, + Vacuum, + "TestPlane"); + + + z = GetTransferMgntLength()/2. - 1.*mm; + + G4ThreeVector TestPlaneCenter = G4ThreeVector(0.,0.,z); + + new G4PVPlacement(0, + TestPlaneCenter, + "TestPlane", + logicTestPlane, + physiTransferMgnt, + false, + 0); + + // Target + + if (GetTargetThickness() > 0.) + { + solidTarget = new G4Tubs("Target", + 0.,GetTargetRadius(), + GetTargetThickness()/2.,0.,twopi); + + logicTarget = new G4LogicalVolume(solidTarget, + GetTargetMaterial(), + "Target"); + + G4int i = GetTargetAngle(); + + char c[4]; + sprintf(c,"%d",i); + G4String Angle = c; + Angle = Angle.strip(G4String::both,' '); + Angle = "Y" + Angle; + + g4rot = new G4RotationMatrix(); + *g4rot = stringToRotationMatrix(Angle); + *g4rot = g4rot->inverse(); + if (*g4rot == G4RotationMatrix()) g4rot = NULL; + + G4ThreeVector TargetCenter(0.,0.,GetTargetPos()); + + physiTarget = new G4PVPlacement(g4rot, + TargetCenter, + "Target", + logicTarget, + physiCaptureMgnt, + false, + 0); + } + + // Degrader + + if (GetDegraderThickness() > 0.) + { + solidDegrader = new G4Tubs("Degrader", + 0., GetDegraderRadius(), + GetDegraderThickness()/2., 0.,twopi); + + logicDegrader = new G4LogicalVolume(solidDegrader, + GetDegraderMaterial(), + "Degrader"); + + G4ThreeVector DegraderCenter = G4ThreeVector(0.,0.,GetDegraderPos()); + + physiDegrader = new G4PVPlacement(0, + DegraderCenter, + "Degrader", + logicDegrader, + physiTransferMgnt, + false, + 0); + } + + G4double l = 0.0; + G4double B1 = GetCaptureMgntB1(); + G4double B2 = GetCaptureMgntB2(); + + if (focusSolenoid) delete focusSolenoid; + focusSolenoid = new F04FocusSolenoid(B1, B2, l, + logicCaptureMgnt,CaptureMgntCenter); + focusSolenoid -> SetHalf(true); + + l = 0.0; + G4double B = GetTransferMgntB(); + + if (simpleSolenoid) delete simpleSolenoid; + simpleSolenoid = new F04SimpleSolenoid(B, l, + logicTransferMgnt,TransferMgntCenter); + + simpleSolenoid->setColor("1,0,1"); + simpleSolenoid->setColor("0,1,1"); + simpleSolenoid->setMaxStep(1.5*mm); + simpleSolenoid->setMaxStep(2.5*mm); + + return physiWorld; +} + +void F04DetectorConstruction::SetWorldMaterial(const G4String materialChoice) +{ + G4Material* pttoMaterial = + G4NistManager::Instance()->FindOrBuildMaterial(materialChoice); + + if (pttoMaterial != WorldMaterial) { + if ( pttoMaterial ) { + WorldMaterial = pttoMaterial; + } else { + G4cout << "\n--> WARNING from SetWorldMaterial : " + << materialChoice << " not found" << G4endl; + } + } +} + +void F04DetectorConstruction::SetTargetMaterial(const G4String materialChoice) +{ + G4Material* pttoMaterial = + G4NistManager::Instance()->FindOrBuildMaterial(materialChoice); + + if (pttoMaterial != TargetMaterial) { + if ( pttoMaterial ) { + TargetMaterial = pttoMaterial; + } else { + G4cout << "\n--> WARNING from SetTargetMaterial : " + << materialChoice << " not found" << G4endl; + } + } +} + +void F04DetectorConstruction::SetDegraderMaterial(const G4String materialChoice) + +{ + G4Material* pttoMaterial = + G4NistManager::Instance()->FindOrBuildMaterial(materialChoice); + + if (pttoMaterial != DegraderMaterial) { + if ( pttoMaterial ) { + DegraderMaterial = pttoMaterial; + } else { + G4cout << "\n--> WARNING from SetDegraderMaterial : " + << materialChoice << " not found" << G4endl; + } + } +} + +void F04DetectorConstruction::SetWorldSizeZ(G4double val) +{ + WorldSizeZ = val; +} + +void F04DetectorConstruction::SetWorldSizeR(G4double val) +{ + WorldSizeR = val; +} + +void F04DetectorConstruction::SetCaptureMgntRadius(G4double val) +{ + CaptureMgntRadius = val; +} + +void F04DetectorConstruction::SetCaptureMgntLength(G4double val) +{ + CaptureMgntLength = val; +} + +void F04DetectorConstruction::SetCaptureMgntB1(G4double val) +{ + CaptureMgntB1 = val; +} + +void F04DetectorConstruction::SetCaptureMgntB2(G4double val) +{ + CaptureMgntB2 = val; +} + +void F04DetectorConstruction::SetTransferMgntRadius(G4double val) +{ + TransferMgntRadius = val; +} + +void F04DetectorConstruction::SetTransferMgntLength(G4double val) +{ + TransferMgntLength = val; +} + +void F04DetectorConstruction::SetTransferMgntB(G4double val) +{ + TransferMgntB = val; +} + +void F04DetectorConstruction::SetTransferMgntPos(G4double val) +{ + TransferMgntPos = val; +} + +void F04DetectorConstruction::SetTargetRadius(G4double val) +{ + TargetRadius = val; +} + +void F04DetectorConstruction::SetTargetThickness(G4double val) +{ + TargetThickness = val; +} + +void F04DetectorConstruction::SetTargetPos(G4double val) +{ + TargetPos = val; +} + +void F04DetectorConstruction::SetTargetAngle(G4int val) +{ + TargetAngle = val; +} + +void F04DetectorConstruction::SetDegraderRadius(G4double val) +{ + DegraderRadius = val; +} + +void F04DetectorConstruction::SetDegraderThickness(G4double val) +{ + DegraderThickness = val; +} + +void F04DetectorConstruction::SetDegraderPos(G4double val) +{ + DegraderPos = val; +} + +void F04DetectorConstruction::UpdateGeometry() +{ + if (!physiWorld) return; + + // clean-up previous geometry + G4GeometryManager::GetInstance()->OpenGeometry(); + + G4PhysicalVolumeStore::GetInstance()->Clean(); + G4LogicalVolumeStore::GetInstance()->Clean(); + G4SolidStore::GetInstance()->Clean(); + + //define new one + G4RunManager::GetRunManager()->DefineWorldVolume(ConstructDetector()); + + G4RunManager::GetRunManager()->GeometryHasBeenModified(); + G4RunManager::GetRunManager()->PhysicsHasBeenModified(); + + G4RegionStore::GetInstance()->UpdateMaterialList(physiWorld); + +} + +G4RotationMatrix + F04DetectorConstruction::stringToRotationMatrix(G4String rotation) +{ + // We apply successive rotations OF THE OBJECT around the FIXED + // axes of the parent's local coordinates; rotations are applied + // left-to-right (rotation="r1,r2,r3" => r1 then r2 then r3). + + G4RotationMatrix rot; + + unsigned int place = 0; + + while (place < rotation.size()) { + + G4double angle; + char* p; + + angle = strtod(rotation.substr(place+1).c_str(),&p) * deg; + G4cout << "Angle: " << angle/deg << "deg " << G4endl; + + if (!p || (*p != ',' && *p != '\0')) { + G4cerr << "Invalid rotation specification: " << + rotation.c_str() << G4endl; + return rot; + } + + G4RotationMatrix thisRotation; + + switch(rotation.substr(place,1).c_str()[0]) { + case 'X': case 'x': + thisRotation = G4RotationMatrix(CLHEP::HepRotationX(angle)); + break; + case 'Y': case 'y': + thisRotation = G4RotationMatrix(CLHEP::HepRotationY(angle)); + break; + case 'Z': case 'z': + thisRotation = G4RotationMatrix(CLHEP::HepRotationZ(angle)); + break; + default: + G4cerr << " Invalid rotation specification: " + << rotation << G4endl; + return rot; + } + + rot = thisRotation * rot; + place = rotation.find(',',place); + if (place > rotation.size()) break; + ++place; + } + + return rot; + +} diff --git a/examples/extended/field/field04/src/F04DetectorMessenger.cc b/examples/extended/field/field04/src/F04DetectorMessenger.cc new file mode 100644 index 0000000000..38202a0519 --- /dev/null +++ b/examples/extended/field/field04/src/F04DetectorMessenger.cc @@ -0,0 +1,285 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "F04DetectorMessenger.hh" + +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithoutParameter.hh" + +F04DetectorMessenger::F04DetectorMessenger(F04DetectorConstruction * Det) + : Detector(Det) +{ + detDir = new G4UIdirectory("/field04/"); + detDir->SetGuidance(" field04 Simulation "); + + WorldMaterCmd = new G4UIcmdWithAString("/field04/SetWorldMat",this); + WorldMaterCmd->SetGuidance("Select Material of the World"); + WorldMaterCmd->SetParameterName("wchoice",true); + WorldMaterCmd->SetDefaultValue("Air"); + WorldMaterCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + WorldRCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetWorldR",this); + WorldRCmd->SetGuidance("Set Radius of the World"); + WorldRCmd->SetParameterName("WSizeR",false,false); + WorldRCmd->SetDefaultUnit("cm"); + WorldRCmd->SetRange("WSizeR>0."); + WorldRCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + WorldZCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetWorldZ",this); + WorldZCmd->SetGuidance("Set Length of the World"); + WorldZCmd->SetParameterName("WSizeZ",false,false); + WorldZCmd->SetDefaultUnit("cm"); + WorldZCmd->SetRange("WSizeZ>0."); + WorldZCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + CaptureRCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetCaptureR",this); + CaptureRCmd->SetGuidance("Set Radius of the Capture Magnet"); + CaptureRCmd->SetParameterName("CSizeR",false,false); + CaptureRCmd->SetDefaultUnit("cm"); + CaptureRCmd->SetRange("CSizeR>0."); + CaptureRCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + CaptureZCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetCaptureZ",this); + CaptureZCmd->SetGuidance("Set Length of the Capture Magnet"); + CaptureZCmd->SetParameterName("CSizeZ",false,false); + CaptureZCmd->SetDefaultUnit("cm"); + CaptureZCmd->SetRange("CSizeZ>0."); + CaptureZCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + CaptureB1Cmd = new G4UIcmdWithADoubleAndUnit("/field04/SetCaptureB1",this); + CaptureB1Cmd->SetGuidance("Set B1 of the Capture Magnet"); + CaptureB1Cmd->SetParameterName("CSizeB1",false,false); + CaptureB1Cmd->SetDefaultUnit("tesla"); + CaptureB1Cmd->SetRange("CSizeB1>0."); + CaptureB1Cmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + CaptureB2Cmd = new G4UIcmdWithADoubleAndUnit("/field04/SetCaptureB2",this); + CaptureB2Cmd->SetGuidance("Set B2 of the Capture Magnet"); + CaptureB2Cmd->SetParameterName("CSizeB2",false,false); + CaptureB2Cmd->SetDefaultUnit("tesla"); + CaptureB2Cmd->SetRange("CSizeB2>0."); + CaptureB2Cmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + TransferRCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetTransferR",this); + TransferRCmd->SetGuidance("Set Radius of the Transfer Magnet"); + TransferRCmd->SetParameterName("TSizeR",false,false); + TransferRCmd->SetDefaultUnit("cm"); + TransferRCmd->SetRange("TSizeR>0."); + TransferRCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + TransferZCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetTransferZ",this); + TransferZCmd->SetGuidance("Set Length of the Transfer Magnet"); + TransferZCmd->SetParameterName("TSizeZ",false,false); + TransferZCmd->SetDefaultUnit("cm"); + TransferZCmd->SetRange("TSizeZ>0."); + TransferZCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + TransferBCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetTransferB",this); + TransferBCmd->SetGuidance("Set B of the Transfer Magnet"); + TransferBCmd->SetParameterName("TSizeB",false,false); + TransferBCmd->SetDefaultUnit("tesla"); + TransferBCmd->SetRange("TSizeB>0."); + TransferBCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + TransferPCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetTransferP",this); + TransferPCmd->SetGuidance("Set Z pos of the T-Mgnt from end of C-Mgnt"); + TransferPCmd->SetParameterName("TSizeP",false,false); + TransferPCmd->SetDefaultUnit("cm"); + TransferPCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + TgtMaterCmd = new G4UIcmdWithAString("/field04/SetTgtMat",this); + TgtMaterCmd->SetGuidance("Select Material of the Target"); + TgtMaterCmd->SetParameterName("tchoice",true); + TgtMaterCmd->SetDefaultValue("Tungsten"); + TgtMaterCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + TgtRadCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetTgtRad",this); + TgtRadCmd->SetGuidance("Set Radius of the Target"); + TgtRadCmd->SetParameterName("TgtSizeR",false,false); + TgtRadCmd->SetDefaultUnit("cm"); + TgtRadCmd->SetRange("TgtSizeR>0."); + TgtRadCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + TgtThickCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetTgtThick",this); + TgtThickCmd->SetGuidance("Set Thickness of the Target"); + TgtThickCmd->SetParameterName("TgtSizeZ",false,false); + TgtThickCmd->SetDefaultUnit("cm"); + TgtThickCmd->SetRange("TgtSizeZ>0."); + TgtThickCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + TgtPosCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetTgtPos",this); + TgtPosCmd->SetGuidance("Set Z pos of the tgt relative to C-Mgnt centre"); + TgtPosCmd->SetParameterName("TgtSizeP",false,false); + TgtPosCmd->SetDefaultUnit("cm"); + TgtPosCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + TgtAngCmd = new G4UIcmdWithAnInteger("/field04/SetTgtAng",this); + TgtAngCmd->SetGuidance("Set the angle [in deg] of the Tgt relative to C-Mgnt centre"); + TgtAngCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + DgrMaterCmd = new G4UIcmdWithAString("/field04/SetDgrMat",this); + DgrMaterCmd->SetGuidance("Select Material of the Degrader"); + DgrMaterCmd->SetParameterName("dchoice",true); + DgrMaterCmd->SetDefaultValue("Lead"); + DgrMaterCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + DgrRadCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetDgrRad",this); + DgrRadCmd->SetGuidance("Set Radius of the Degrader"); + DgrRadCmd->SetParameterName("DrgSizeR",false,false); + DgrRadCmd->SetDefaultUnit("cm"); + DgrRadCmd->SetRange("DrgSizeR>0."); + DgrRadCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + DgrThickCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetDgrThick",this); + DgrThickCmd->SetGuidance("Set Thickness of the Degrader"); + DgrThickCmd->SetParameterName("DgrSizeZ",false,false); + DgrThickCmd->SetDefaultUnit("cm"); + DgrThickCmd->SetRange("DgrSizeZ>0."); + DgrThickCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + DgrPosCmd = new G4UIcmdWithADoubleAndUnit("/field04/SetDgrPos",this); + DgrPosCmd->SetGuidance("Set Z pos of the Dgr relative to T-Mgnt centre"); + DgrPosCmd->SetParameterName("DgrSizeP",false,false); + DgrPosCmd->SetDefaultUnit("cm"); + DgrPosCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + UpdateCmd = new G4UIcmdWithoutParameter("/field04/Update",this); + UpdateCmd->SetGuidance("Update field04 geometry"); + UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" "); + UpdateCmd->SetGuidance("if you changed geometrical value(s)."); + UpdateCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + +} + +F04DetectorMessenger::~F04DetectorMessenger() +{ + delete detDir; + + delete WorldMaterCmd; + delete WorldRCmd; + delete WorldZCmd; + + delete CaptureRCmd; + delete CaptureZCmd; + delete CaptureB1Cmd; + delete CaptureB2Cmd; + + delete TransferRCmd; + delete TransferZCmd; + delete TransferBCmd; + delete TransferPCmd; + + delete TgtMaterCmd; + delete TgtRadCmd; + delete TgtThickCmd; + delete TgtPosCmd; + delete TgtAngCmd; + + delete DgrMaterCmd; + delete DgrRadCmd; + delete DgrThickCmd; + delete DgrPosCmd; + + delete UpdateCmd; +} + +void F04DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if( command == WorldMaterCmd ) + { Detector->SetWorldMaterial(newValue);} + + if( command == TgtMaterCmd ) + { Detector->SetTargetMaterial(newValue);} + + if( command == DgrMaterCmd ) + { Detector->SetDegraderMaterial(newValue);} + + if( command == WorldRCmd ) + { Detector->SetWorldSizeR(WorldRCmd->GetNewDoubleValue(newValue));} + + if( command == WorldZCmd ) + { Detector->SetWorldSizeZ(WorldZCmd->GetNewDoubleValue(newValue));} + + if( command == CaptureRCmd ) + { Detector->SetCaptureMgntRadius(CaptureRCmd->GetNewDoubleValue(newValue));} + + if( command == CaptureZCmd ) + { Detector->SetCaptureMgntLength(CaptureZCmd->GetNewDoubleValue(newValue));} + + if( command == CaptureB1Cmd ) + { Detector->SetCaptureMgntB1(CaptureB1Cmd->GetNewDoubleValue(newValue));} + + if( command == CaptureB2Cmd ) + { Detector->SetCaptureMgntB2(CaptureB2Cmd->GetNewDoubleValue(newValue));} + + if( command == TransferRCmd ) + { Detector->SetTransferMgntRadius(TransferRCmd->GetNewDoubleValue(newValue));} + + if( command == TransferZCmd ) + { Detector->SetTransferMgntLength(TransferZCmd->GetNewDoubleValue(newValue));} + + if( command == TransferBCmd ) + { Detector->SetTransferMgntB(TransferBCmd->GetNewDoubleValue(newValue));} + + if( command == TransferPCmd ) + { Detector->SetTransferMgntPos(TransferPCmd->GetNewDoubleValue(newValue));} + + if( command == TgtRadCmd ) + { Detector->SetTargetRadius(TgtRadCmd->GetNewDoubleValue(newValue));} + + if( command == TgtThickCmd ) + { Detector->SetTargetThickness(TgtThickCmd->GetNewDoubleValue(newValue));} + + if( command == TgtPosCmd ) + { Detector->SetTargetPos(TgtPosCmd->GetNewDoubleValue(newValue));} + + if( command == TgtAngCmd ) + { Detector->SetTargetAngle(TgtAngCmd->GetNewIntValue(newValue));} + + if( command == DgrRadCmd ) + { Detector->SetDegraderRadius(DgrRadCmd->GetNewDoubleValue(newValue));} + + if( command == DgrThickCmd ) + { Detector->SetDegraderThickness(DgrThickCmd->GetNewDoubleValue(newValue));} + + if( command == DgrPosCmd ) + { Detector->SetDegraderPos(DgrPosCmd->GetNewDoubleValue(newValue));} + + if( command == WorldZCmd ) + { Detector->SetWorldSizeZ(WorldZCmd->GetNewDoubleValue(newValue));} + + if( command == WorldRCmd ) + { Detector->SetWorldSizeR(WorldRCmd->GetNewDoubleValue(newValue));} + + if( command == UpdateCmd ) + { Detector->UpdateGeometry(); } + +} diff --git a/examples/extended/field/field04/src/F04ElementField.cc b/examples/extended/field/field04/src/F04ElementField.cc new file mode 100644 index 0000000000..0830045814 --- /dev/null +++ b/examples/extended/field/field04/src/F04ElementField.cc @@ -0,0 +1,138 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "G4GeometryManager.hh" + +#include "F04ElementField.hh" + +#include "F04GlobalField.hh" + +G4Navigator* F04ElementField::aNavigator; + +F04ElementField::F04ElementField(G4ThreeVector c, G4LogicalVolume* lv) +{ + center = c; + + minX = minY = minZ = -DBL_MAX; + maxX = maxY = maxZ = DBL_MAX; + + F04GlobalField::getObject()->addElementField(this); + + color = "1,1,1"; + + userLimits = new G4UserLimits(); + + lvolume = lv; + lvolume->SetVisAttributes(getVisAttribute(color)); + + maxStep = 1*mm; + + userLimits->SetMaxAllowedStep(maxStep); + + userLimits->SetUserMaxTrackLength(500.*m); + userLimits->SetUserMaxTime(10*ms); + userLimits->SetUserMinEkine(0.1*MeV); +// userLimits->SetUserMinRange(1*mm); + + lvolume->SetUserLimits(userLimits); +} + +void F04ElementField::construct() +{ + G4Navigator* theNavigator = + G4TransportationManager::GetTransportationManager()-> + GetNavigatorForTracking(); + + if (!aNavigator) { + aNavigator = new G4Navigator(); + if ( theNavigator->GetWorldVolume() ) + aNavigator->SetWorldVolume(theNavigator->GetWorldVolume()); + } + + G4GeometryManager* geomManager = G4GeometryManager::GetInstance(); + + if (!geomManager->IsGeometryClosed()) { + geomManager->OpenGeometry(); + geomManager->CloseGeometry(true); + } + + aNavigator->LocateGlobalPointAndSetup(center,0,false); + + G4TouchableHistoryHandle fTouchable = aNavigator-> + CreateTouchableHistoryHandle(); + + G4int depth = fTouchable->GetHistoryDepth(); + for (G4int i = 0; iGetVolume()->GetLogicalVolume() == lvolume)break; + fTouchable->MoveUpHistory(); + } + + // set global2local transform + global2local = fTouchable->GetHistory()->GetTopTransform(); + + // set global bounding box + G4double local[4], global[4]; + + G4ThreeVector globalPosition; + local[3] = 0.0; + for (int i=0; i<2; ++i) { + local[0] = (i==0 ? -1.0 : 1.0) * getWidth(); + for (int j=0; j<2; ++j) { + local[1] = (j==0 ? -1.0 : 1.0) * getHeight(); + for (int k=0; k<2; ++k) { + local[2] = (k==0 ? -1.0 : 1.0) * getLength()/2.; + G4ThreeVector localPosition(local[0],local[1],local[2]); + globalPosition = + global2local.Inverse().TransformPoint(localPosition); + global[0] = globalPosition.x(); + global[1] = globalPosition.y(); + global[2] = globalPosition.z(); + setGlobalPoint(global); + } + } + } +} + +G4VisAttributes* F04ElementField::getVisAttribute(G4String color) +{ + G4VisAttributes* p = NULL; + if(color.size() > 0 && + (isdigit(color.c_str()[0]) || color.c_str()[0] == '.')) { + G4double red=0.0, green=0.0, blue=0.0; + if (sscanf(color.c_str(),"%lf,%lf,%lf",&red,&green,&blue) == 3) { + p = new G4VisAttributes(true,G4Color(red,green,blue)); + } else { + G4cout << " Invalid color " << color << G4endl; + } + } + + if (!p) p = new G4VisAttributes(G4VisAttributes::Invisible); + p->SetDaughtersInvisible(false); + + return p; +} diff --git a/examples/extended/field/field04/src/F04EventAction.cc b/examples/extended/field/field04/src/F04EventAction.cc new file mode 100644 index 0000000000..0c3a0cbe72 --- /dev/null +++ b/examples/extended/field/field04/src/F04EventAction.cc @@ -0,0 +1,107 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "F04EventAction.hh" + +#include "F04RunAction.hh" + +#include "F04EventActionMessenger.hh" + +#include "G4Event.hh" +#include "G4EventManager.hh" +#include "G4Trajectory.hh" +#include "G4TrajectoryContainer.hh" +#include "G4VVisManager.hh" +#include "Randomize.hh" + +F04EventAction::F04EventAction(F04RunAction* RA) + : runaction(RA), verboselevel(0), + printModulo(10), drawFlag("all") +{ + eventMessenger = new F04EventActionMessenger(this); +} + +F04EventAction::~F04EventAction() +{ + delete eventMessenger; +} + +void F04EventAction::BeginOfEventAction(const G4Event* evt) +{ + G4int evtNb = evt->GetEventID(); + if (evtNb%printModulo == 0) + G4cout << "\n---> Begin of Event: " << evtNb << G4endl; + + if(verboselevel>0) + G4cout << "<<< Event " << evtNb << " started." << G4endl; +} + +void F04EventAction::EndOfEventAction(const G4Event* evt) +{ + G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); + + if(pVVisManager) + { + G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); + + G4int n_trajectories = 0; + + if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); + for(G4int i=0; iGetTrajectoryContainer()))[i]); + if (drawFlag == "all") trj->DrawTrajectory(50); + else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) + trj->DrawTrajectory(50); + } + } + + if (verboselevel>0) + G4cout << "<<< Event " << evt->GetEventID() << " ended." << G4endl; + + if (runaction->GetRndmFreq() == 2) + { + CLHEP::HepRandom::saveEngineStatus("endOfEvent.rndm"); + G4int evtNb = evt->GetEventID(); + if (evtNb%printModulo == 0) + { + G4cout << "\n---> End of Event: " << evtNb << G4endl; + CLHEP::HepRandom::showEngineStatus(); + } + } +} + +G4int F04EventAction::GetEventNo() +{ + G4int evno = fpEventManager->GetConstCurrentEvent()->GetEventID(); + return evno ; +} + +void F04EventAction::SetEventVerbose(G4int level) +{ + verboselevel = level ; +} diff --git a/examples/extended/field/field04/src/F04EventActionMessenger.cc b/examples/extended/field/field04/src/F04EventActionMessenger.cc new file mode 100644 index 0000000000..15155a269f --- /dev/null +++ b/examples/extended/field/field04/src/F04EventActionMessenger.cc @@ -0,0 +1,78 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "globals.hh" + +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +#include "F04EventAction.hh" +#include "F04EventActionMessenger.hh" + +F04EventActionMessenger::F04EventActionMessenger(F04EventAction* EvAct) + :eventAction(EvAct) +{ + setVerboseCmd = new G4UIcmdWithAnInteger("/event/setverbose",this); + setVerboseCmd->SetGuidance("Set verbose level ." ); + setVerboseCmd->SetParameterName("level",true); + setVerboseCmd->SetDefaultValue(0); + + DrawCmd = new G4UIcmdWithAString("/event/drawTracks",this); + DrawCmd->SetGuidance("Draw the tracks in the event"); + DrawCmd->SetGuidance(" Choice : none,charged, all"); + DrawCmd->SetParameterName("choice",true); + DrawCmd->SetDefaultValue("all"); + DrawCmd->SetCandidates("none charged all"); + DrawCmd->AvailableForStates(G4State_Idle); + + PrintCmd = new G4UIcmdWithAnInteger("/event/printModulo",this); + PrintCmd->SetGuidance("Print events modulo n"); + PrintCmd->SetParameterName("EventNb",false); + PrintCmd->SetRange("EventNb>0"); + PrintCmd->AvailableForStates(G4State_Idle); +} + +F04EventActionMessenger::~F04EventActionMessenger() +{ + delete setVerboseCmd; + delete DrawCmd; + delete PrintCmd; +} + +void F04EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if(command == setVerboseCmd) + {eventAction->SetEventVerbose(setVerboseCmd->GetNewIntValue(newValue));} + + if(command == DrawCmd) + {eventAction->SetDrawFlag(newValue);} + + if(command == PrintCmd) + {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} +} diff --git a/examples/extended/field/field04/src/F04ExtraPhysics.cc b/examples/extended/field/field04/src/F04ExtraPhysics.cc new file mode 100644 index 0000000000..687a929214 --- /dev/null +++ b/examples/extended/field/field04/src/F04ExtraPhysics.cc @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "globals.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" +#include "G4ProcessManager.hh" + +#include "G4UserSpecialCuts.hh" +#include "G4StepLimiter.hh" + +#include "F04ExtraPhysics.hh" + +F04ExtraPhysics::F04ExtraPhysics() + : G4VPhysicsConstructor("Extra") { } + +F04ExtraPhysics::~F04ExtraPhysics() { } + +void F04ExtraPhysics::ConstructParticle() { } + +void F04ExtraPhysics::ConstructProcess() +{ + G4cout << "F04ExtraPhysics:: Add Extra Physics Processes" + << G4endl; + + theParticleIterator->reset(); + + while ((*theParticleIterator)()) { + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + G4String particleName = particle->GetParticleName(); + G4double charge = particle->GetPDGCharge(); + + if (!pmanager) { + std::ostringstream o; + o << "Particle " << particleName << "without a Process Manager"; + G4Exception("F04ExtraPhysics::ConstructProcess()","", + FatalException,o.str().c_str()); + } + + if (charge != 0.0) { + // All charged particles should have a step limiter + // to make sure that the steps do not get too long. + pmanager->AddDiscreteProcess(new G4StepLimiter()); + pmanager->AddDiscreteProcess(new G4UserSpecialCuts()); + } else if (particleName == "neutron") { + // time cuts for ONLY neutrons: + pmanager->AddDiscreteProcess(new G4UserSpecialCuts()); + } else { + // Energy cuts for all other neutral particles + pmanager->AddDiscreteProcess(new G4UserSpecialCuts()); + } + } +} diff --git a/examples/extended/field/field04/src/F04FieldMessenger.cc b/examples/extended/field/field04/src/F04FieldMessenger.cc new file mode 100644 index 0000000000..d693c19b63 --- /dev/null +++ b/examples/extended/field/field04/src/F04FieldMessenger.cc @@ -0,0 +1,147 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "F04FieldMessenger.hh" + +#include "F04GlobalField.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithoutParameter.hh" + +////////////////////////////////////////////////////////////////////////////// + +F04FieldMessenger::F04FieldMessenger(F04GlobalField* pEMfield) + : fGlobalField(pEMfield) +{ + detDir = new G4UIdirectory("/field/"); + detDir->SetGuidance(" Field tracking control "); + + fStepperCMD = new G4UIcmdWithAnInteger("/field/setStepperType",this); + fStepperCMD->SetGuidance("Select stepper type for field"); + fStepperCMD->SetParameterName("choice",true); + fStepperCMD->SetDefaultValue(4); + fStepperCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fUpdateCMD = new G4UIcmdWithoutParameter("/field/update",this); + fUpdateCMD->SetGuidance("Update Field"); + fUpdateCMD->SetGuidance("This command MUST be applied before \"beamOn\" "); + fUpdateCMD->SetGuidance("if you changed field settings."); + fUpdateCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fMinStepCMD = new G4UIcmdWithADoubleAndUnit("/field/setMinStep",this); + fMinStepCMD->SetGuidance("Define minimal step"); + fMinStepCMD->SetParameterName("min step",false,false); + fMinStepCMD->SetDefaultUnit("mm"); + fMinStepCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fDeltaChordCMD = new G4UIcmdWithADoubleAndUnit("/field/setDeltaChord",this); + fDeltaChordCMD->SetGuidance("Define delta chord"); + fDeltaChordCMD->SetParameterName("delta chord",false,false); + fDeltaChordCMD->SetDefaultUnit("mm"); + fDeltaChordCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fDeltaOneStepCMD = + new G4UIcmdWithADoubleAndUnit("/field/setDeltaOneStep",this); + fDeltaOneStepCMD->SetGuidance("Define delta one step"); + fDeltaOneStepCMD->SetParameterName("delta one step",false,false); + fDeltaOneStepCMD->SetDefaultUnit("mm"); + fDeltaOneStepCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fDeltaIntersectionCMD = + new G4UIcmdWithADoubleAndUnit("/field/setDeltaIntersection",this); + fDeltaIntersectionCMD->SetGuidance("Define delta intersection"); + fDeltaIntersectionCMD->SetParameterName("delta intersection",false,false); + fDeltaIntersectionCMD->SetDefaultUnit("mm"); + fDeltaIntersectionCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fEpsMinCMD = new G4UIcmdWithADoubleAndUnit("/field/setEpsMin",this); + fEpsMinCMD->SetGuidance("Define eps min"); + fEpsMinCMD->SetParameterName("eps min",false,false); + fEpsMinCMD->SetDefaultUnit("mm"); + fEpsMinCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fEpsMaxCMD = new G4UIcmdWithADoubleAndUnit("/field/setEpsMax",this); + fEpsMaxCMD->SetGuidance("Define eps max"); + fEpsMaxCMD->SetParameterName("eps max",false,false); + fEpsMaxCMD->SetDefaultUnit("mm"); + fEpsMaxCMD->AvailableForStates(G4State_PreInit,G4State_Idle); +} + +F04FieldMessenger::~F04FieldMessenger() +{ + delete detDir; + + delete fStepperCMD; + delete fMinStepCMD; + delete fDeltaChordCMD; + delete fDeltaOneStepCMD; + delete fDeltaIntersectionCMD; + delete fEpsMinCMD; + delete fEpsMaxCMD; + delete fUpdateCMD; +} + +void F04FieldMessenger::SetNewValue( G4UIcommand* command, G4String newValue) +{ + if( command == fStepperCMD ) + { + fGlobalField->SetStepperType(fStepperCMD->GetNewIntValue(newValue)); + } + if( command == fUpdateCMD ) + { + fGlobalField->updateField(); + } + if( command == fMinStepCMD ) + { + fGlobalField->SetMinStep(fMinStepCMD->GetNewDoubleValue(newValue)); + } + if( command == fDeltaChordCMD ) + { + fGlobalField->SetDeltaChord(fDeltaChordCMD->GetNewDoubleValue(newValue)); + } + if( command == fDeltaOneStepCMD ) + { + fGlobalField-> + SetDeltaOneStep(fDeltaOneStepCMD->GetNewDoubleValue(newValue)); + } + if( command == fDeltaIntersectionCMD ) + { + fGlobalField-> + SetDeltaIntersection(fDeltaIntersectionCMD->GetNewDoubleValue(newValue)); + } + if( command == fEpsMinCMD ) + { + fGlobalField->SetEpsMin(fEpsMinCMD->GetNewDoubleValue(newValue)); + } + if( command == fEpsMaxCMD ) + { + fGlobalField->SetEpsMax(fEpsMaxCMD->GetNewDoubleValue(newValue)); + } +} diff --git a/examples/extended/field/field04/src/F04FocusSolenoid.cc b/examples/extended/field/field04/src/F04FocusSolenoid.cc new file mode 100644 index 0000000000..34111e1cbd --- /dev/null +++ b/examples/extended/field/field04/src/F04FocusSolenoid.cc @@ -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. * +// ******************************************************************** +// +// +// + +#include "globals.hh" + +#include "G4GeometryManager.hh" + +#include "F04GlobalField.hh" + +#include "F04FocusSolenoid.hh" +#include "F04SimpleSolenoid.hh" + +F04FocusSolenoid::F04FocusSolenoid(G4double Ba, G4double Bb, G4double fz, + G4LogicalVolume* lv, + G4ThreeVector c) : F04SimpleSolenoid(B1, fz, lv, c) + +{ + B1 = Ba; + B2 = Bb; + Half = false; +} + +void F04FocusSolenoid::addFieldValue(const G4double point[4], + G4double field[6]) const +{ + G4ThreeVector global(point[0],point[1],point[2]); + + G4ThreeVector local = global2local.TransformPoint(global); + + if (isOutside(local)) return; + + G4double length = ((F04SimpleSolenoid*)this)->getLength(); + + G4double Bz = (B2-B1) * std::abs(local.z())/(length/2.) + B1; + + if (Half) { if (local.z() >= 0.) Bz = B1; } + + G4ThreeVector B(0.0,0.0,Bz); + + B = global2local.Inverse().TransformAxis(B); + + field[0] += B[0]; + field[1] += B[1]; + field[2] += B[2]; +} diff --git a/examples/extended/field/field04/src/F04GlobalField.cc b/examples/extended/field/field04/src/F04GlobalField.cc new file mode 100644 index 0000000000..908e88cc28 --- /dev/null +++ b/examples/extended/field/field04/src/F04GlobalField.cc @@ -0,0 +1,246 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include + +#include "Randomize.hh" +#include "G4TransportationManager.hh" + +#include "G4ExplicitEuler.hh" +#include "G4ImplicitEuler.hh" +#include "G4SimpleRunge.hh" +#include "G4SimpleHeum.hh" +#include "G4ClassicalRK4.hh" +#include "G4CashKarpRKF45.hh" + +#include "F04GlobalField.hh" + +F04GlobalField* F04GlobalField::object = 0; + +F04GlobalField::F04GlobalField() : G4ElectroMagneticField(), + minStep(0.01*mm), deltaChord(3.0*mm), + deltaOneStep(0.01*mm), deltaIntersection(0.1*mm), + epsMin(2.5e-7*mm), epsMax(0.05*mm), + fEquation(0), fFieldManager(0), + fFieldPropagator(0), fStepper(0), fChordFinder(0) +//F04GlobalField::F04GlobalField() : G4MagneticField(), +// minStep(0.01*mm), deltaChord(3.0*mm), +// deltaOneStep(0.01*mm), deltaIntersection(0.1*mm), +// epsMin(2.5e-7*mm), epsMax(0.05*mm), +// fEquation(0), fFieldManager(0), +// fFieldPropagator(0), fStepper(0), fChordFinder(0) +{ + fFieldMessenger = new F04FieldMessenger(this); + + fields = new FieldList(); + + fStepperType = 4 ; // ClassicalRK4 is default stepper + + // set object + + object = this; + + updateField(); +} + +F04GlobalField::~F04GlobalField() +{ + clear(); + + delete fFieldMessenger; + + if (fEquation) delete fEquation; + if (fFieldManager) delete fFieldManager; + if (fFieldPropagator) delete fFieldPropagator; + if (fStepper) delete fStepper; + if (fChordFinder) delete fChordFinder; +} + +void F04GlobalField::updateField() +{ + first = true; + + nfp = 0; + fp = 0; + + clear(); + + // Construct equ. of motion of particles through B fields +// fEquation = new G4Mag_EqRhs(this); + // Construct equ. of motion of particles through e.m. fields +// fEquation = new G4EqMagElectricField(this); + // Construct equ. of motion of particles including spin through B fields +// fEquation = new G4Mag_SpinEqRhs(this); + // Construct equ. of motion of particles including spin through e.m. fields + fEquation = new G4EqEMFieldWithSpin(this); + + // Get transportation, field, and propagator managers + G4TransportationManager* fTransportManager = + G4TransportationManager::GetTransportationManager(); + + fFieldManager = GetGlobalFieldManager(); + + fFieldPropagator = fTransportManager->GetPropagatorInField(); + + // Need to SetFieldChangesEnergy to account for a time varying electric + // field (r.f. fields) + fFieldManager->SetFieldChangesEnergy(true); + + // Set the field + fFieldManager->SetDetectorField(this); + + // Choose a stepper for integration of the equation of motion + SetStepper(); + + // Create a cord finder providing the (global field, min step length, + // a pointer to the stepper) + fChordFinder = new G4ChordFinder((G4MagneticField*)this,minStep,fStepper); + + // Set accuracy parameters + fChordFinder->SetDeltaChord( deltaChord ); + + fFieldManager->SetAccuraciesWithDeltaOneStep(deltaOneStep); + + fFieldManager->SetDeltaIntersection(deltaIntersection); + + fFieldPropagator->SetMinimumEpsilonStep(epsMin); + fFieldPropagator->SetMaximumEpsilonStep(epsMax); + + G4cout << "Accuracy Parameters:" << + " MinStep=" << minStep << + " DeltaChord=" << deltaChord << + " DeltaOneStep=" << deltaOneStep << G4endl; + G4cout << " " << + " DeltaIntersection=" << deltaIntersection << + " EpsMin=" << epsMin << + " EpsMax=" << epsMax << G4endl; + + fFieldManager->SetChordFinder(fChordFinder); + +} + +F04GlobalField* F04GlobalField::getObject() +{ + if (!object) new F04GlobalField(); + return object; +} + +void F04GlobalField::SetStepper() +{ + if(fStepper) delete fStepper; + + switch ( fStepperType ) + { + case 0: +// fStepper = new G4ExplicitEuler( fEquation, 8 ); // no spin tracking + fStepper = new G4ExplicitEuler( fEquation, 12 ); // with spin tracking + G4cout << "G4ExplicitEuler is called" << G4endl; + break; + case 1: +// fStepper = new G4ImplicitEuler( fEquation, 8 ); // no spin tracking + fStepper = new G4ImplicitEuler( fEquation, 12 ); // with spin tracking + G4cout << "G4ImplicitEuler is called" << G4endl; + break; + case 2: +// fStepper = new G4SimpleRunge( fEquation, 8 ); // no spin tracking + fStepper = new G4SimpleRunge( fEquation, 12 ); // with spin tracking + G4cout << "G4SimpleRunge is called" << G4endl; + break; + case 3: +// fStepper = new G4SimpleHeum( fEquation, 8 ); // no spin tracking + fStepper = new G4SimpleHeum( fEquation, 12 ); // with spin tracking + G4cout << "G4SimpleHeum is called" << G4endl; + break; + case 4: +// fStepper = new G4ClassicalRK4( fEquation, 8 ); // no spin tracking + fStepper = new G4ClassicalRK4( fEquation, 12 ); // with spin tracking + G4cout << "G4ClassicalRK4 (default) is called" << G4endl; + break; + case 5: +// fStepper = new G4CashKarpRKF45( fEquation, 8 ); // no spin tracking + fStepper = new G4CashKarpRKF45( fEquation, 12 ); // with spin tracking + G4cout << "G4CashKarpRKF45 is called" << G4endl; + break; + default: fStepper = 0; + } +} + +G4FieldManager* F04GlobalField::GetGlobalFieldManager() +{ + return G4TransportationManager::GetTransportationManager() + ->GetFieldManager(); +} + +void F04GlobalField::GetFieldValue(const G4double* point, G4double* field) const +{ + // NOTE: this routine dominates the CPU time for tracking. + // Using the simple array fp[] instead of fields[] + // directly sped it up + + field[0] = field[1] = field[2] = field[3] = field[4] = field[5] = 0.0; + + // protect against Geant4 bug that calls us with point[] NaN. + if(point[0] != point[0]) return; + + // (can't use nfp or fp, as they may change) + if (first) ((F04GlobalField*)this)->setupArray(); // (cast away const) + + for (int i=0; iisInBoundingBox(point)) { + p->addFieldValue(point,field); + } + } + +} + +void F04GlobalField::clear() +{ + if (fields) { + if (fields->size()>0) { + FieldList::iterator i; + for (i=fields->begin(); i!=fields->end(); ++i) delete *i; + fields->clear(); + } + } + + if (fp) delete[] fp; + + first = true; + + nfp = 0; + fp = NULL; +} + +void F04GlobalField::setupArray() +{ + first = false; + nfp = fields->size(); + fp = new const F04ElementField* [nfp+1]; // add 1 so it's never 0 + for (int i=0; iSetVerbose(2); + + CreateMaterials(); +} + +F04Materials::~F04Materials() +{ + delete Vacuum; + delete Air; + delete Sci; + delete BeO; +} + +F04Materials* F04Materials::instance = 0; + +F04Materials* F04Materials::GetInstance() +{ + if (instance == 0) + { + instance = new F04Materials(); + } + return instance; +} + +G4Material* F04Materials::GetMaterial(const G4String material) +{ + G4Material* mat = nistMan->FindOrBuildMaterial(material); + + if (!mat) mat = G4Material::GetMaterial(material); + if (!mat) {G4cout << material << "Not Found, Please Retry"<< G4endl;} + + return mat; +} + +void F04Materials::CreateMaterials() +{ + G4double density; + std::vector natoms; + std::vector fractionMass; + std::vector elements; + + // Materials Definitions + // ===================== + + // Define Vacuum + + Vacuum = nistMan->FindOrBuildMaterial("G4_Galactic"); + + // Define Air + + Air = nistMan->FindOrBuildMaterial("G4_AIR"); + + // Define BeO + + BeO = nistMan->FindOrBuildMaterial("G4_BERYLLIUM_OXIDE"); + + // Define Scintillator + + elements.push_back("C"); natoms.push_back(9); + elements.push_back("H"); natoms.push_back(10); + + // density = 1.032*g/cm3; + // ==> when using ConstructNewMaterial give the density in g/cm3 + // ==> but do NOT multiply by the unit!!! + + density = 1.032; + + Sci = nistMan-> + ConstructNewMaterial("Scintillator", elements, natoms, density); + + elements.clear(); + natoms.clear(); + + G4cout << G4endl << "The materials defined are: " << G4endl << G4endl; + + G4cout << *(G4Material::GetMaterialTable()) << G4endl; +} diff --git a/examples/extended/field/field04/src/F04OpticalPhysics.cc b/examples/extended/field/field04/src/F04OpticalPhysics.cc new file mode 100644 index 0000000000..9c35fe9c33 --- /dev/null +++ b/examples/extended/field/field04/src/F04OpticalPhysics.cc @@ -0,0 +1,124 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "globals.hh" + +#include "G4Scintillation.hh" +#include "G4Cerenkov.hh" + +#include "G4OpAbsorption.hh" +#include "G4OpRayleigh.hh" +#include "G4OpBoundaryProcess.hh" +#include "G4OpWLS.hh" + +#include "F04OpticalPhysics.hh" + +F04OpticalPhysics::F04OpticalPhysics() + : G4VPhysicsConstructor("Optical") { } + +F04OpticalPhysics::~F04OpticalPhysics() { } + +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" + +#include "G4OpticalPhoton.hh" + +void F04OpticalPhysics::ConstructParticle() +{ + G4OpticalPhoton::OpticalPhotonDefinition(); +} + +#include "G4ProcessManager.hh" + +void F04OpticalPhysics::ConstructProcess() +{ + G4cout << "F04OpticalPhysics:: Add Optical Physics Processes" + << G4endl; + + G4Scintillation* theScintProcess = new G4Scintillation(); + G4Cerenkov* theCerenkovProcess= new G4Cerenkov(); + + G4OpAbsorption* theAbsorptionProcess= new G4OpAbsorption(); + G4OpRayleigh* theRayleighScattering = new G4OpRayleigh(); + G4OpBoundaryProcess* theBoundaryProcess = new G4OpBoundaryProcess(); + G4OpWLS* theWLSProcess=new G4OpWLS(); + + G4ProcessManager* pManager = + G4OpticalPhoton::OpticalPhoton()->GetProcessManager(); + + if (!pManager) { + std::ostringstream o; + o << "Optical Photon without a Process Manager"; + G4Exception("F04OpticalPhysics::ConstructProcess()","", + FatalException,o.str().c_str()); + } + + + pManager->AddDiscreteProcess(theAbsorptionProcess); + pManager->AddDiscreteProcess(theRayleighScattering); + + theBoundaryProcess->SetModel(unified); +// theBoundaryProcess->SetModel(glisur); + + pManager->AddDiscreteProcess(theBoundaryProcess); + + theWLSProcess->UseTimeProfile("delta"); +// theWLSProcess->UseTimeProfile("exponential"); + + pManager->AddDiscreteProcess(theWLSProcess); + + theScintProcess->SetScintillationYieldFactor(1.); + theScintProcess->SetScintillationExcitationRatio(0.0); + theScintProcess->SetTrackSecondariesFirst(true); + + theParticleIterator->reset(); + + while( (*theParticleIterator)() ){ + + G4ParticleDefinition* particle = theParticleIterator->value(); + G4String particleName = particle->GetParticleName(); + + pManager = particle->GetProcessManager(); + if (!pManager) { + std::ostringstream o; + o << "Particle " << particleName << "without a Process Manager"; + G4Exception("F04OpticalPhysics::ConstructProcess()","", + FatalException,o.str().c_str()); + } + + if(theCerenkovProcess->IsApplicable(*particle)){ + pManager->AddContinuousProcess(theCerenkovProcess); + } + if(theScintProcess->IsApplicable(*particle)){ + pManager->AddProcess(theScintProcess); + pManager->SetProcessOrderingToLast(theScintProcess,idxAtRest); + pManager->SetProcessOrderingToLast(theScintProcess,idxPostStep); + } + + } +} diff --git a/examples/extended/field/field04/src/F04PhysicsList.cc b/examples/extended/field/field04/src/F04PhysicsList.cc new file mode 100644 index 0000000000..fdb104c931 --- /dev/null +++ b/examples/extended/field/field04/src/F04PhysicsList.cc @@ -0,0 +1,629 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "F04PhysicsList.hh" +#include "F04PhysicsListMessenger.hh" + +#include "F04ExtraPhysics.hh" +//#include "F04OpticalPhysics.hh" + +#include "G4DecayPhysics.hh" + +#include "G4EmStandardPhysics_option1.hh" +#include "G4EmStandardPhysics_option2.hh" +#include "G4EmStandardPhysics.hh" + +#include "G4EmExtraPhysics.hh" +#include "G4EmProcessOptions.hh" + +#include "G4HadronElasticPhysics.hh" +#include "G4HadronQElasticPhysics.hh" +#include "G4HadronHElasticPhysics.hh" +#include "G4NeutronTrackingCut.hh" +#include "G4QStoppingPhysics.hh" +#include "G4LHEPStoppingPhysics.hh" +#include "G4IonBinaryCascadePhysics.hh" +#include "G4IonPhysics.hh" + +#include "HadronPhysicsFTFP.hh" +#include "HadronPhysicsFTFC.hh" + +#include "HadronPhysicsLHEP.hh" +#include "HadronPhysicsLHEP_BERT.hh" +#include "HadronPhysicsLHEP_EMV.hh" +#include "HadronPhysicsLHEP_PRECO_HP.hh" + +#include "HadronPhysicsQGSC.hh" +#include "HadronPhysicsQGSC_EFLOW.hh" + +#include "HadronPhysicsQGSP.hh" +#include "HadronPhysicsQGSP_BERT.hh" +#include "HadronPhysicsQGSP_BERT_HP.hh" +#include "HadronPhysicsQGSP_BERT_TRV.hh" +#include "HadronPhysicsQGSP_BIC.hh" +#include "HadronPhysicsQGSP_BIC_HP.hh" + +#include "G4HadronInelasticQBBC.hh" +#include "G4HadronInelasticQLHEP.hh" + +#include "G4IonPhysics.hh" + +#include "G4HadronProcessStore.hh" + +#include "G4LossTableManager.hh" + +#include "G4ProcessManager.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" + +#include "G4Gamma.hh" +#include "G4Electron.hh" +#include "G4Positron.hh" + +#include "F04StepMax.hh" + +#include "G4ProcessTable.hh" + +#include "G4PionDecayMakeSpin.hh" +#include "G4DecayWithSpin.hh" + +#include "G4DecayTable.hh" +#include "G4MuonDecayChannelWithSpin.hh" +#include "G4MuonRadiativeDecayChannelWithSpin.hh" + +F04PhysicsList::F04PhysicsList(G4String physicsList) : G4VModularPhysicsList() +{ + G4LossTableManager::Instance(); + + defaultCutValue = 1.*mm; + fCutForGamma = defaultCutValue; + fCutForElectron = defaultCutValue; + fCutForPositron = defaultCutValue; + fDump = false; + + fMessenger = new F04PhysicsListMessenger(this); + + fEMPhysics = new PhysicsListVector(); + fHadronPhysics = new PhysicsListVector(); + + // Particles + fParticleList = new G4DecayPhysics("decays"); + + // EM physics + AddPhysicsList("emstandard_opt1"); + + // Set the default hadronic physics. + AddPhysicsList(physicsList); + + stepMaxProcess = new F04StepMax(); +} + +F04PhysicsList::~F04PhysicsList() +{ + delete fMessenger; + delete fParticleList; + + ClearEMPhysics(); + ClearHadronPhysics(); + + delete fEMPhysics; + delete fHadronPhysics; + + delete stepMaxProcess; +} + +void F04PhysicsList::ClearEMPhysics() +{ + for (PhysicsListVector::iterator p = fEMPhysics->begin(); + p != fEMPhysics->end(); ++p) { + delete (*p); + } + fEMPhysics->clear(); +} + +void F04PhysicsList::ClearHadronPhysics() +{ + for (PhysicsListVector::iterator p = fHadronPhysics->begin(); + p != fHadronPhysics->end(); ++p) { + delete (*p); + } + fHadronPhysics->clear(); +} + +void F04PhysicsList::ConstructParticle() +{ + fParticleList->ConstructParticle(); + + G4DecayTable* MuonPlusDecayTable = new G4DecayTable(); + MuonPlusDecayTable -> Insert(new + G4MuonDecayChannelWithSpin("mu+",0.986)); + MuonPlusDecayTable -> Insert(new + G4MuonRadiativeDecayChannelWithSpin("mu+",0.014)); + G4MuonPlus::MuonPlusDefinition() -> SetDecayTable(MuonPlusDecayTable); + + G4DecayTable* MuonMinusDecayTable = new G4DecayTable(); + MuonMinusDecayTable -> Insert(new + G4MuonDecayChannelWithSpin("mu-",0.986)); + MuonMinusDecayTable -> Insert(new + G4MuonRadiativeDecayChannelWithSpin("mu-",0.014)); + G4MuonMinus::MuonMinusDefinition() -> SetDecayTable(MuonMinusDecayTable); + +} + +void F04PhysicsList::ConstructProcess() +{ + AddTransportation(); + + for (PhysicsListVector::iterator p = fEMPhysics->begin(); + p != fEMPhysics->end(); ++p) { + (*p)->ConstructProcess(); + } + + fParticleList->ConstructProcess(); + + G4DecayWithSpin* decayWithSpin = new G4DecayWithSpin(); + + G4ProcessTable* processTable = G4ProcessTable::GetProcessTable(); + + G4VProcess* decay; + decay = processTable->FindProcess("Decay",G4MuonPlus::MuonPlus()); + + G4ProcessManager* fManager; + fManager = G4MuonPlus::MuonPlus()->GetProcessManager(); + + if (fManager) { + if (decay) fManager->RemoveProcess(decay); + fManager->AddProcess(decayWithSpin); + // set ordering for PostStepDoIt and AtRestDoIt + fManager ->SetProcessOrdering(decayWithSpin, idxPostStep); + fManager ->SetProcessOrdering(decayWithSpin, idxAtRest); + } + + decay = processTable->FindProcess("Decay",G4MuonMinus::MuonMinus()); + + fManager = G4MuonMinus::MuonMinus()->GetProcessManager(); + + if (fManager) { + if (decay) fManager->RemoveProcess(decay); + fManager->AddProcess(decayWithSpin); + // set ordering for PostStepDoIt and AtRestDoIt + fManager ->SetProcessOrdering(decayWithSpin, idxPostStep); + fManager ->SetProcessOrdering(decayWithSpin, idxAtRest); + } + + G4PionDecayMakeSpin* poldecay = new G4PionDecayMakeSpin(); + + decay = processTable->FindProcess("Decay",G4PionPlus::PionPlus()); + + fManager = G4PionPlus::PionPlus()->GetProcessManager(); + + if (fManager) { + if (decay) fManager->RemoveProcess(decay); + fManager->AddProcess(poldecay); + // set ordering for PostStepDoIt and AtRestDoIt + fManager ->SetProcessOrdering(poldecay, idxPostStep); + fManager ->SetProcessOrdering(poldecay, idxAtRest); + } + + decay = processTable->FindProcess("Decay",G4PionMinus::PionMinus()); + + fManager = G4PionMinus::PionMinus()->GetProcessManager(); + + if (fManager) { + if (decay) fManager->RemoveProcess(decay); + fManager->AddProcess(poldecay); + // set ordering for PostStepDoIt and AtRestDoIt + fManager ->SetProcessOrdering(poldecay, idxPostStep); + fManager ->SetProcessOrdering(poldecay, idxAtRest); + } + + for (PhysicsListVector::iterator p = fHadronPhysics->begin(); + p != fHadronPhysics->end();++p) { + (*p)->ConstructProcess(); + } + + AddStepMax(); + + if (fDump) G4HadronProcessStore::Instance()->Dump(1); +} + +void F04PhysicsList::RemoveFromEMPhysicsList(const G4String& name) +{ + G4bool success = false; + for (PhysicsListVector::iterator p = fEMPhysics->begin(); + p != fEMPhysics->end(); ++p) { + G4VPhysicsConstructor* e = (*p); + if (e->GetPhysicsName() == name) { + fEMPhysics->erase(p); + success = true; + break; + } + } + if (!success) { + std::ostringstream message; + message << "PhysicsList::RemoveFromEMPhysicsList "<< name << "not found"; + G4Exception(message.str().c_str()); + } +} + +void F04PhysicsList::RemoveFromHadronPhysicsList(const G4String& name) +{ + G4bool success = false; + for (PhysicsListVector::iterator p = fHadronPhysics->begin(); + p != fHadronPhysics->end(); ++p) { + G4VPhysicsConstructor* e = (*p); + if (e->GetPhysicsName() == name) { + fHadronPhysics->erase(p); + success = true; + break; + } + } + if (!success) { + G4String message("F04PhysicsList::RemoveFromHadronPhysicsList \""); + message += name; + message += " not found \""; + G4Exception(message); + } +} + +void F04PhysicsList::AddPhysicsList(const G4String& name) +{ + if (verboseLevel>0) { + G4cout << "F04PhysicsList::AddPhysicsList: <" << name + << ">" << G4endl; + } + + if (name == "emstandard_opt1") { + + ClearEMPhysics(); + fEMPhysics->push_back(new G4EmStandardPhysics_option1()); + fEMPhysics->push_back(new F04ExtraPhysics()); +// fEMPhysics->push_back(new F04OpticalPhysics()); + + } else if (name == "emstandard_opt2") { + + ClearEMPhysics(); + fEMPhysics->push_back(new G4EmStandardPhysics_option2()); + fEMPhysics->push_back(new F04ExtraPhysics()); +// fEMPhysics->push_back(new F04OpticalPhysics()); + + } else if (name == "FTFC") { + + SetStandardList(false, false); + fHadronPhysics->push_back(new HadronPhysicsFTFC("hadron",true)); + + } else if (name == "FTFP") { + + SetStandardList(false, false); + fHadronPhysics->push_back(new HadronPhysicsFTFP("hadron",true)); + + } else if (name == "FTFP_EMV") { + + AddPhysicsList("emstandard_opt1"); + AddPhysicsList("FTFP"); + + } else if (name == "LHEP") { + + ClearHadronPhysics(); + fHadronPhysics->push_back(new G4EmExtraPhysics("gamma_nuc")); + fHadronPhysics->push_back(new G4HadronElasticPhysics("LElastic", + verboseLevel, + false)); + fHadronPhysics->push_back(new HadronPhysicsLHEP("hadron")); + fHadronPhysics->push_back(new G4IonPhysics("ion")); + fDump = true; + + } else if (name == "LHEP_BERT") { + + ClearHadronPhysics(); + fHadronPhysics->push_back(new G4EmExtraPhysics("gamma_nuc")); + fHadronPhysics->push_back(new G4HadronElasticPhysics("LElastic", + verboseLevel, + false)); + fHadronPhysics->push_back(new HadronPhysicsLHEP_BERT("hadron")); + fHadronPhysics->push_back(new G4QStoppingPhysics("stopping", + verboseLevel)); + fHadronPhysics->push_back(new G4IonPhysics("ion")); + fDump = true; + + } else if (name == "LHEP_EMV") { + + ClearHadronPhysics(); + AddPhysicsList("emstandard_opt1"); + fHadronPhysics->push_back(new G4EmExtraPhysics("gamma_nuc")); + fHadronPhysics->push_back(new G4HadronElasticPhysics("LElastic", + verboseLevel, + false)); + fHadronPhysics->push_back(new HadronPhysicsLHEP_EMV("hadron")); + fHadronPhysics->push_back(new G4QStoppingPhysics("stopping", + verboseLevel)); + fHadronPhysics->push_back(new G4IonPhysics("ion")); + fDump = true; + + } else if (name == "LHEP_PRECO_HP") { + + ClearHadronPhysics(); + fHadronPhysics->push_back(new G4EmExtraPhysics("gamma_nuc")); + fHadronPhysics->push_back(new G4HadronElasticPhysics("LElastic", + verboseLevel, + false)); + fHadronPhysics->push_back(new HadronPhysicsLHEP_PRECO_HP("hadron")); + fHadronPhysics->push_back(new G4QStoppingPhysics("stopping", + verboseLevel)); + fHadronPhysics->push_back(new G4IonPhysics("ion")); + fDump = true; + + } else if (name == "QBBC") { + + SetStandardList(false,true); + fHadronPhysics->push_back(new G4HadronInelasticQBBC("QBBC", + verboseLevel, + false,false, + false,false,true)); + + } else if (name == "QBBCG") { + + SetStandardList(false, false); + fHadronPhysics->push_back(new G4HadronInelasticQBBC("QBBC", + verboseLevel, + false,false, + false,false,false)); + + } else if (name == "QBEC") { + + SetStandardList(false,true); + fHadronPhysics->push_back(new G4HadronInelasticQBBC("QBBC", + verboseLevel, + false,true, + false,false,true)); + + } else if (name == "QBBC_HP") { + + SetStandardList(true,true); + fHadronPhysics->push_back(new G4HadronInelasticQBBC("QBBC", + verboseLevel, + false,false, + false,true,true)); + + } else if (name == "QBEC_HP") { + + SetStandardList(true,true); + fHadronPhysics->push_back(new G4HadronInelasticQBBC("QBBC", + verboseLevel, + false,true, + false,true,true)); + + } else if (name == "QGSC") { + + ClearHadronPhysics(); + fHadronPhysics->push_back(new G4EmExtraPhysics("gamma_nuc")); + fHadronPhysics->push_back(new G4HadronQElasticPhysics("QElastic", + verboseLevel)); + fHadronPhysics->push_back(new HadronPhysicsQGSC("hadron",true)); + fHadronPhysics->push_back(new G4QStoppingPhysics("stopping", + verboseLevel,false)); + fHadronPhysics->push_back(new G4IonPhysics("ion")); + fHadronPhysics->push_back(new G4NeutronTrackingCut()); + fDump = true; + + } else if (name == "QGSC_EFLOW") { + + ClearHadronPhysics(); + fHadronPhysics->push_back(new G4EmExtraPhysics("gamma_nuc")); + fHadronPhysics->push_back(new G4HadronQElasticPhysics("QElastic", + verboseLevel)); + fHadronPhysics->push_back(new HadronPhysicsQGSC_EFLOW("hadron",true)); + fHadronPhysics->push_back(new G4QStoppingPhysics("stopping", + verboseLevel,false)); + fHadronPhysics->push_back(new G4IonPhysics("ion")); + fHadronPhysics->push_back(new G4NeutronTrackingCut()); + fDump = true; + + } else if (name == "QGSC_EMV") { + + AddPhysicsList("emstandard_opt1"); + AddPhysicsList("QGSC"); + + } else if (name == "QGSP") { + + SetStandardList(false, false); + fHadronPhysics->push_back(new HadronPhysicsQGSP("hadron",true)); + + } else if (name == "QGSP_BERT") { + + SetStandardList(false, false); + fHadronPhysics->push_back(new HadronPhysicsQGSP_BERT("hadron",true)); + + } else if (name == "QGSP_BERT_EMV") { + + AddPhysicsList("emstandard_opt1"); + AddPhysicsList("QGSP_BERT"); + + } else if (name == "QGSP_BERT_HP") { + + SetStandardList(true, false); + fHadronPhysics->push_back(new HadronPhysicsQGSP_BERT_HP("hadron",true)); + + } else if (name == "QGSP_BERT_NQE") { + + SetStandardList(false, false); + fHadronPhysics->push_back(new HadronPhysicsQGSP_BERT("hadron",false)); + + } else if (name == "QGSP_BERT_TRV") { + + SetStandardList(false, false); + fHadronPhysics->push_back(new HadronPhysicsQGSP_BERT_TRV("hadron",true)); + + } else if (name == "QGSP_BIC") { + + SetStandardList(false, false); + fHadronPhysics->push_back(new HadronPhysicsQGSP_BIC("hadron",true)); + + } else if (name == "QGSP_BIC_HP") { + + SetStandardList(true, false); + fHadronPhysics->push_back(new HadronPhysicsQGSP_BIC_HP("hadron",true)); + + } else if (name == "QGSP_EMV") { + + AddPhysicsList("emstandard_opt1"); + AddPhysicsList("QGSP"); + + } else if (name == "QGSP_EMV_NQE") { + + AddPhysicsList("emstandard_opt1"); + AddPhysicsList("QGSP_NQE"); + + } else if (name == "QGSP_EMX") { + + AddPhysicsList("emstandard_opt2"); + AddPhysicsList("QGSP"); + + } else if (name == "QGSP_NQE") { + + SetStandardList(false, false); + fHadronPhysics->push_back(new HadronPhysicsQGSP("hadron",false)); + + } else if (name == "QGSP_QEL") { + + ClearHadronPhysics(); + fHadronPhysics->push_back(new G4EmExtraPhysics("gamma_nuc")); + fHadronPhysics->push_back(new G4HadronQElasticPhysics("QElastic", + verboseLevel)); + fHadronPhysics->push_back(new HadronPhysicsQGSP("hadron",true)); + fHadronPhysics->push_back(new G4QStoppingPhysics("stopping", + verboseLevel)); + fHadronPhysics->push_back(new G4IonPhysics("ion")); + fHadronPhysics->push_back(new G4NeutronTrackingCut()); + fDump = true; + + } else { + + G4cout << "F04PhysicsList::AddPhysicsList: <" << name << ">" + << " is not defined" << G4endl; + } +} + +void F04PhysicsList::SetStandardList(G4bool flagHP, G4bool glauber) +{ + ClearHadronPhysics(); + + fHadronPhysics->push_back(new G4EmExtraPhysics("gamma_nuc")); + fHadronPhysics->push_back(new G4HadronElasticPhysics("elastic", + verboseLevel, + flagHP,glauber)); + fHadronPhysics->push_back(new G4QStoppingPhysics("stopping", + verboseLevel)); + fHadronPhysics->push_back(new G4IonBinaryCascadePhysics("binary_ion")); + fHadronPhysics->push_back(new G4NeutronTrackingCut()); + + fDump = true; +} + +void F04PhysicsList::SetCuts() +{ + if (verboseLevel >0) { + G4cout << "F04PhysicsList::SetCuts:"; + G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") + << G4endl; + } + + // 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(fCutForGamma, "gamma"); + SetCutValue(fCutForElectron, "e-"); + SetCutValue(fCutForPositron, "e+"); + + if (verboseLevel>0) DumpCutValuesTable(); +} + +void F04PhysicsList::SetCutForGamma(G4double cut) +{ + fCutForGamma = cut; + SetParticleCuts(fCutForGamma, G4Gamma::Gamma()); +} + +void F04PhysicsList::SetCutForElectron(G4double cut) +{ + fCutForElectron = cut; + SetParticleCuts(fCutForElectron, G4Electron::Electron()); +} + +void F04PhysicsList::SetCutForPositron(G4double cut) +{ + fCutForPositron = cut; + SetParticleCuts(fCutForPositron, G4Positron::Positron()); +} + +void F04PhysicsList::List() +{ + G4cout << "### PhysicsLists available: FTFC FTFP FTFP_EMV" + << " LHEP LHEP_BERT LHEP_EMV" + << G4endl; + G4cout << " LHEP_PRECO_HP QBBC QBBCG" + << " QBEC QBBC_HP QBEC_HP" + << G4endl; + G4cout << " QGSC QGSC_EFLOW QGSC_EMV" + << " QGSP QGSP_BERT QGSP_BER_EMV" + << G4endl; + G4cout << " QGSP_BERT_HP QGSP_BERT_NQE" + << " QGSP_BERT_TRV" + << G4endl; + G4cout << " QGSP_BIC QGSP_BIC_HP QGSP_EMV" + << " QGSP_EMV_NQE" + << G4endl; + G4cout << " QGSC_EMX QGSP_NQE QGSP_QEL" + << G4endl; +} + +void F04PhysicsList::SetStepMax(G4double step) +{ + MaxChargedStep = step ; + stepMaxProcess->SetStepMax(MaxChargedStep); +} + +F04StepMax* F04PhysicsList::GetStepMaxProcess() +{ + return stepMaxProcess; +} + +void F04PhysicsList::AddStepMax() +{ + // Step limitation seen as a process + + theParticleIterator->reset(); + while ((*theParticleIterator)()){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + + if (stepMaxProcess->IsApplicable(*particle) && !particle->IsShortLived()) + { + if (pmanager) pmanager ->AddDiscreteProcess(stepMaxProcess); + } + } +} diff --git a/examples/extended/field/field04/src/F04PhysicsListMessenger.cc b/examples/extended/field/field04/src/F04PhysicsListMessenger.cc new file mode 100644 index 0000000000..3c02669f1f --- /dev/null +++ b/examples/extended/field/field04/src/F04PhysicsListMessenger.cc @@ -0,0 +1,224 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "globals.hh" + +#include "F04PhysicsListMessenger.hh" +#include "F04PhysicsList.hh" + +#include +#include +#include +#include + +#include "G4PhaseSpaceDecayChannel.hh" +#include "G4PionRadiativeDecayChannel.hh" + +F04PhysicsListMessenger::F04PhysicsListMessenger(F04PhysicsList* pPhys) + : fPhysicsList(pPhys) +{ + fDirectory = new G4UIdirectory("/exp/phys/"); + fDirectory->SetGuidance("Control the physics lists"); + + fGammaCutCMD = new G4UIcmdWithADoubleAndUnit("/exp/phys/gammaCut",this); + fGammaCutCMD->SetGuidance("Set gamma cut"); + fGammaCutCMD->SetParameterName("Gcut",false); + fGammaCutCMD->SetUnitCategory("Length"); + fGammaCutCMD->SetRange("Gcut>0.0"); + fGammaCutCMD->SetDefaultUnit("mm"); + fGammaCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fElectCutCMD = new G4UIcmdWithADoubleAndUnit("/exp/phys/electronCut", + this); + fElectCutCMD->SetGuidance("Set electron cut"); + fElectCutCMD->SetParameterName("Ecut",false); + fElectCutCMD->SetUnitCategory("Length"); + fElectCutCMD->SetRange("Ecut>0.0"); + fElectCutCMD->SetDefaultUnit("mm"); + fElectCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fPosCutCMD = new G4UIcmdWithADoubleAndUnit("/exp/phys/positronCut", + this); + fPosCutCMD->SetGuidance("Set positron cut"); + fPosCutCMD->SetParameterName("Pcut",false); + fPosCutCMD->SetUnitCategory("Length"); + fPosCutCMD->SetRange("Pcut>0.0"); + fPosCutCMD->SetDefaultUnit("mm"); + fPosCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fAllCutCMD = new G4UIcmdWithADoubleAndUnit("/exp/phys/allCuts",this); + fAllCutCMD->SetGuidance("Set cut for all"); + fAllCutCMD->SetParameterName("cut",false); + fAllCutCMD->SetUnitCategory("Length"); + fAllCutCMD->SetRange("cut>0.0"); + fAllCutCMD->SetDefaultUnit("mm"); + fAllCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fStepMaxCMD = new G4UIcmdWithADoubleAndUnit("/exp/phys/stepMax",this); + fStepMaxCMD->SetGuidance("Set max. step length in the detector"); + fStepMaxCMD->SetParameterName("mxStep",false); + fStepMaxCMD->SetUnitCategory("Length"); + fStepMaxCMD->SetRange("mxStep>0.0"); + fStepMaxCMD->SetDefaultUnit("mm"); + fStepMaxCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fAddPhysicsCMD = new G4UIcmdWithAString("/exp/phys/addPhysics",this); + fAddPhysicsCMD->SetGuidance("Add to modular physics list"); + fAddPhysicsCMD->SetParameterName("PList",false); + fAddPhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fClearEMPhysicsCMD = new G4UIcmdWithoutParameter("/exp/phys/clearEMPhysics",this); + fClearEMPhysicsCMD->SetGuidance("Clear the EM physics list"); + fClearEMPhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fClearHadronPhysicsCMD = new G4UIcmdWithoutParameter("/exp/phys/clearHadronPhysics",this); + fClearHadronPhysicsCMD->SetGuidance("Clear the Hadron physics list"); + fClearHadronPhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fRemoveEMPhysicsCMD = new G4UIcmdWithAString("/exp/phys/removeEMPhysics",this); + fRemoveEMPhysicsCMD->SetGuidance("Remove a physics process from EM Physics List"); + fRemoveEMPhysicsCMD->SetParameterName("PList",false); + fRemoveEMPhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fRemoveHadronPhysicsCMD = new G4UIcmdWithAString("/exp/phys/removeHadronPhysics",this); + fRemoveHadronPhysicsCMD->SetGuidance("Remove a physics process from Hadron Physics List"); + fRemoveHadronPhysicsCMD->SetParameterName("PList",false); + fRemoveHadronPhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fListCMD = new G4UIcmdWithoutParameter("/exp/phys/list",this); + fListCMD->SetGuidance("Available Physics Lists"); + fListCMD->AvailableForStates(G4State_PreInit,G4State_Idle); + + fDecayDirectory = new G4UIdirectory("/decay/"); + fDecayDirectory->SetGuidance("Decay chain control commands."); + + fPienuCMD = new G4UIcmdWithoutParameter("/decay/pienu", this); + fPienuCMD->SetGuidance("Sets the pi+ to decay into e+, nu"); + + fPimunuCMD = new G4UIcmdWithoutParameter("/decay/pimunu", this); + fPimunuCMD->SetGuidance("Sets the pi+ to decay into mu+, nu"); + +} + +F04PhysicsListMessenger::~F04PhysicsListMessenger() +{ + delete fGammaCutCMD; + delete fElectCutCMD; + delete fPosCutCMD; + delete fAllCutCMD; + + delete fAddPhysicsCMD; + delete fClearEMPhysicsCMD; + delete fClearHadronPhysicsCMD; + delete fRemoveEMPhysicsCMD; + delete fRemoveHadronPhysicsCMD; + + delete fListCMD; + + delete fPienuCMD; + delete fPimunuCMD; +} + +void F04PhysicsListMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) +{ + + if (command == fPienuCMD) { + particleTable = G4ParticleTable::GetParticleTable(); + particleDef = particleTable->FindParticle("pi+"); + mode = new G4PhaseSpaceDecayChannel("pi+",0.999983,2,"e+","nu_e"); + table=new G4DecayTable(); + table->Insert(mode); + mode = new G4PionRadiativeDecayChannel("pi+",0.000017); + table->Insert(mode); + particleDef->SetDecayTable(table); + } + + if (command == fPimunuCMD) { + particleTable = G4ParticleTable::GetParticleTable(); + particleDef = particleTable->FindParticle("pi+"); + mode = new G4PhaseSpaceDecayChannel("pi+",1.000,2,"mu+","nu_mu"); + table=new G4DecayTable(); + table->Insert(mode); + particleDef->SetDecayTable(table); + } + + if (command == fGammaCutCMD) { + fPhysicsList->SetCutForGamma(fGammaCutCMD + ->GetNewDoubleValue(newValue)); + } + else if (command == fElectCutCMD) { + fPhysicsList->SetCutForElectron(fElectCutCMD + ->GetNewDoubleValue(newValue)); + } + else if (command == fPosCutCMD) { + fPhysicsList->SetCutForPositron(fPosCutCMD + ->GetNewDoubleValue(newValue)); + } + else if (command == fAllCutCMD) { + G4double cut = fAllCutCMD->GetNewDoubleValue(newValue); + fPhysicsList->SetCutForGamma(cut); + fPhysicsList->SetCutForElectron(cut); + fPhysicsList->SetCutForPositron(cut); + } + else if (command == fStepMaxCMD) { + fPhysicsList->SetStepMax(fStepMaxCMD + ->GetNewDoubleValue(newValue)); + } + else if (command == fAddPhysicsCMD) { + G4String name = newValue; + if (name == "PHYSLIST") { + char* path = getenv(name); + if (path) name = G4String(path); + else { + G4cout << "### F04PhysicsListMessenger WARNING: " + << " environment variable PHYSLIST is not defined" + << G4endl; + return; + } + } + fPhysicsList->AddPhysicsList(name); + } + else if (command == fClearEMPhysicsCMD) { + fPhysicsList->ClearEMPhysics(); + } + else if (command == fClearHadronPhysicsCMD) { + fPhysicsList->ClearHadronPhysics(); + } + else if (command == fRemoveEMPhysicsCMD) { + G4String name = newValue; + fPhysicsList->RemoveFromEMPhysicsList(name); + } + else if (command == fRemoveHadronPhysicsCMD) { + G4String name = newValue; + fPhysicsList->RemoveFromHadronPhysicsList(name); + } + else if (command == fListCMD) { + fPhysicsList->List(); + } +} diff --git a/examples/extended/field/field04/src/F04PrimaryGeneratorAction.cc b/examples/extended/field/field04/src/F04PrimaryGeneratorAction.cc new file mode 100644 index 0000000000..0baf9f0ab0 --- /dev/null +++ b/examples/extended/field/field04/src/F04PrimaryGeneratorAction.cc @@ -0,0 +1,166 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "G4ios.hh" +#include "G4Event.hh" +#include "G4ParticleGun.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" + +#include "G4GeometryManager.hh" + +#include "Randomize.hh" + +#include "F04PrimaryGeneratorAction.hh" + +#include "F04DetectorConstruction.hh" +#include "F04PrimaryGeneratorMessenger.hh" + +G4bool F04PrimaryGeneratorAction::first = false; + +F04PrimaryGeneratorAction::F04PrimaryGeneratorAction(F04DetectorConstruction* DC) + : Detector(DC), rndmFlag("off"), + xvertex(0.), yvertex(0.), zvertex(0.), + vertexdefined(false) +{ + G4int n_particle = 1; + particleGun = new G4ParticleGun(n_particle); + + gunMessenger = new F04PrimaryGeneratorMessenger(this); + + G4String particleName; + G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); + + particleGun->SetParticleDefinition(particleTable-> + FindParticle(particleName="proton")); + particleGun->SetParticleEnergy(500.*MeV); + particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.)); + + zvertex = -0.5*(Detector->GetTargetThickness()); + particleGun->SetParticlePosition(G4ThreeVector(xvertex,yvertex,zvertex)); + +} + +F04PrimaryGeneratorAction::~F04PrimaryGeneratorAction() +{ + delete particleGun; + delete gunMessenger; +} + +void F04PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) +{ + + if (!first) { + + first = true; + + G4Navigator* theNavigator = + G4TransportationManager::GetTransportationManager()-> + GetNavigatorForTracking(); + G4Navigator* aNavigator = new G4Navigator(); + if ( theNavigator->GetWorldVolume() ) + aNavigator->SetWorldVolume(theNavigator->GetWorldVolume()); + + G4GeometryManager* geomManager = G4GeometryManager::GetInstance(); + + if (!geomManager->IsGeometryClosed()) { + geomManager->OpenGeometry(); + geomManager->CloseGeometry(true); + } + + G4ThreeVector center(0.,0.,0.); + aNavigator->LocateGlobalPointAndSetup(center,0,false); + + G4TouchableHistoryHandle fTouchable = aNavigator-> + CreateTouchableHistoryHandle(); + + // set global2local transform + global2local = fTouchable->GetHistory()->GetTopTransform(); + + G4ThreeVector direction(0.0,0.0,1.0); + direction = global2local.Inverse().TransformAxis(direction); + + particleGun->SetParticleMomentumDirection(direction); + } + + G4double x0,y0,z0 ; + + if(vertexdefined) + { + x0 = xvertex ; + y0 = yvertex ; + z0 = zvertex ; + } + else + { + x0 = 0. ; + y0 = 0. ; + z0 = -0.5*(Detector->GetTargetThickness()); + } + + G4double r0,phi0 ; + + if (rndmFlag == "on") + { + r0 = (Detector->GetTargetRadius())*std::sqrt(G4UniformRand()); + phi0 = twopi*G4UniformRand(); + x0 = r0*std::cos(phi0); + y0 = r0*std::sin(phi0); + } + + G4ThreeVector localPosition(x0,y0,z0); + G4ThreeVector globalPosition = + global2local.Inverse().TransformPoint(localPosition); + + particleGun->SetParticlePosition(globalPosition); + particleGun->GeneratePrimaryVertex(anEvent); +} + +void F04PrimaryGeneratorAction::Setxvertex(G4double x) +{ + vertexdefined = true ; + xvertex = x ; + G4cout << " X coordinate of the primary vertex = " << xvertex/mm << + " mm." << G4endl; +} + +void F04PrimaryGeneratorAction::Setyvertex(G4double y) +{ + vertexdefined = true ; + yvertex = y ; + G4cout << " Y coordinate of the primary vertex = " << yvertex/mm << + " mm." << G4endl; +} + +void F04PrimaryGeneratorAction::Setzvertex(G4double z) +{ + vertexdefined = true ; + zvertex = z ; + G4cout << " Z coordinate of the primary vertex = " << zvertex/mm << + " mm." << G4endl; +} diff --git a/examples/extended/field/field04/src/F04PrimaryGeneratorMessenger.cc b/examples/extended/field/field04/src/F04PrimaryGeneratorMessenger.cc new file mode 100644 index 0000000000..61d19e2be2 --- /dev/null +++ b/examples/extended/field/field04/src/F04PrimaryGeneratorMessenger.cc @@ -0,0 +1,81 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +#include "F04PrimaryGeneratorAction.hh" +#include "F04PrimaryGeneratorMessenger.hh" + +F04PrimaryGeneratorMessenger::F04PrimaryGeneratorMessenger(F04PrimaryGeneratorAction* Gun) + : Action(Gun) +{ + RndmCmd = new G4UIcmdWithAString("/gun/random",this); + RndmCmd->SetGuidance("Shoot randomly the incident particle."); + RndmCmd->SetGuidance(" Choice : on, off(default)"); + RndmCmd->SetParameterName("choice",true); + RndmCmd->SetDefaultValue("off"); + RndmCmd->SetCandidates("on off"); + RndmCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + setxvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/xvertex",this); + setxvertexCmd->SetGuidance(" Set x coord. of the primary vertex."); + setxvertexCmd->SetParameterName("xv",true); + setxvertexCmd->SetDefaultValue(0.0*mm) ; + + setyvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/yvertex",this); + setyvertexCmd->SetGuidance(" Set y coord. of the primary vertex."); + setyvertexCmd->SetParameterName("yv",true); + setyvertexCmd->SetDefaultValue(0.0*mm) ; + + setzvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/zvertex",this); + setzvertexCmd->SetGuidance(" Set z coord. of the primary vertex."); + setzvertexCmd->SetParameterName("zv",true); + setzvertexCmd->SetDefaultValue(0.0*mm) ; + +} + +F04PrimaryGeneratorMessenger::~F04PrimaryGeneratorMessenger() +{ + delete RndmCmd; + delete setxvertexCmd; + delete setyvertexCmd; + delete setzvertexCmd; +} + +void F04PrimaryGeneratorMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if( command == RndmCmd ) + { Action->SetRndmFlag(newValue);} + if( command == setxvertexCmd) + { Action->Setxvertex(setxvertexCmd->GetNewDoubleValue(newValue));} + if( command == setyvertexCmd) + { Action->Setyvertex(setyvertexCmd->GetNewDoubleValue(newValue));} + if( command == setzvertexCmd) + { Action->Setzvertex(setzvertexCmd->GetNewDoubleValue(newValue));} +} diff --git a/examples/extended/field/field04/src/F04RunAction.cc b/examples/extended/field/field04/src/F04RunAction.cc new file mode 100644 index 0000000000..4bf91e6725 --- /dev/null +++ b/examples/extended/field/field04/src/F04RunAction.cc @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "F04RunAction.hh" +#include "F04RunActionMessenger.hh" + +#include "G4Run.hh" +#include "G4RunManager.hh" + +#include "Randomize.hh" + +#include "F04GlobalField.hh" + +F04RunAction::F04RunAction() + : saveRndm(0) +{ + runMessenger = new F04RunActionMessenger(this); +} + +F04RunAction::~F04RunAction() +{ + delete runMessenger; +} + +void F04RunAction::BeginOfRunAction(const G4Run* aRun) +{ + G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; + + G4RunManager::GetRunManager()->SetRandomNumberStore(true); + G4RunManager::GetRunManager()->SetRandomNumberStoreDir("random/"); + + if (saveRndm > 0) + { + CLHEP::HepRandom::showEngineStatus(); + CLHEP::HepRandom::saveEngineStatus("BeginOfRun.rndm"); + } + + FieldList* fields = F04GlobalField::getObject()->getFields(); + + if (fields) { + if (fields->size()>0) { + FieldList::iterator i; + for (i=fields->begin(); i!=fields->end(); ++i)(*i)->construct(); + } + } +} + +void F04RunAction::EndOfRunAction(const G4Run*) +{ + if (saveRndm == 1) + { + CLHEP::HepRandom::showEngineStatus(); + CLHEP::HepRandom::saveEngineStatus("endOfRun.rndm"); + } +} diff --git a/examples/extended/field/field04/src/F04RunActionMessenger.cc b/examples/extended/field/field04/src/F04RunActionMessenger.cc new file mode 100644 index 0000000000..f96ac6b7f3 --- /dev/null +++ b/examples/extended/field/field04/src/F04RunActionMessenger.cc @@ -0,0 +1,77 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "globals.hh" +#include "Randomize.hh" + +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithAString.hh" + +#include "F04RunAction.hh" +#include "F04RunActionMessenger.hh" + +F04RunActionMessenger::F04RunActionMessenger(F04RunAction* RA) + : runAction (RA) +{ + RndmDir = new G4UIdirectory("/rndm/"); + RndmDir->SetGuidance("Rndm status control."); + + RndmSaveCmd = new G4UIcmdWithAnInteger("/rndm/save",this); + RndmSaveCmd->SetGuidance("set frequency to save rndm status on external files."); + RndmSaveCmd->SetGuidance("freq = 0 not saved"); + RndmSaveCmd->SetGuidance("freq > 0 saved on: beginOfRun.rndm"); + RndmSaveCmd->SetGuidance("freq = 1 saved on: endOfRun.rndm"); + RndmSaveCmd->SetGuidance("freq = 2 saved on: endOfEvent.rndm"); + RndmSaveCmd->SetParameterName("frequency",false); + RndmSaveCmd->SetRange("frequency>=0 && frequency<=2"); + RndmSaveCmd->AvailableForStates(G4State_PreInit,G4State_Idle); + + RndmReadCmd = new G4UIcmdWithAString("/rndm/read",this); + RndmReadCmd->SetGuidance("get rndm status from an external file."); + RndmReadCmd->SetParameterName("fileName",true); + RndmReadCmd->SetDefaultValue ("beginOfRun.rndm"); + RndmReadCmd->AvailableForStates(G4State_PreInit,G4State_Idle); +} + +F04RunActionMessenger::~F04RunActionMessenger() +{ + delete RndmDir; delete RndmSaveCmd; delete RndmReadCmd; +} + +void F04RunActionMessenger::SetNewValue(G4UIcommand* command,G4String newValues) +{ + if (command == RndmSaveCmd) + runAction->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValues)); + + if (command == RndmReadCmd) + { G4cout << "\n---> rndm status restored from file: " << newValues << G4endl; + CLHEP::HepRandom::restoreEngineStatus(newValues); + CLHEP::HepRandom::showEngineStatus(); + } +} diff --git a/examples/extended/field/field04/src/F04SimpleSolenoid.cc b/examples/extended/field/field04/src/F04SimpleSolenoid.cc new file mode 100644 index 0000000000..cf250abb0e --- /dev/null +++ b/examples/extended/field/field04/src/F04SimpleSolenoid.cc @@ -0,0 +1,81 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "globals.hh" + +#include "G4GeometryManager.hh" + +#include "F04GlobalField.hh" + +#include "F04SimpleSolenoid.hh" + +F04SimpleSolenoid::F04SimpleSolenoid(G4double Bz, G4double fz, + G4LogicalVolume* lv, + G4ThreeVector c) : F04ElementField(c,lv) +{ + Bfield = Bz; + fringeZ = fz; + + fieldLength = 2.*((G4Tubs*)lvolume->GetSolid())->GetZHalfLength()+fringeZ; + fieldRadius = ((G4Tubs*)lvolume->GetSolid())->GetOuterRadius(); +} + +void F04SimpleSolenoid::addFieldValue(const G4double point[4], + G4double field[6]) const +{ + G4ThreeVector global(point[0],point[1],point[2]); + G4ThreeVector local; + + local = global2local.TransformPoint(global); + + if (isOutside(local)) return; + + G4ThreeVector B(0.0,0.0,Bfield); + + B = global2local.Inverse().TransformAxis(B); + + field[0] += B[0]; + field[1] += B[1]; + field[2] += B[2]; +} + +G4bool F04SimpleSolenoid::isOutside(G4ThreeVector& local) const +{ +// EInside inside = tubs->Inside(local); +// return (inside == kOutside); + G4double r = std::sqrt(local.x()*local.x()+local.y()*local.y()); + return (r > fieldRadius || std::fabs(local.z()) > fieldLength/2.0); +} + +G4bool F04SimpleSolenoid::isWithin(G4ThreeVector& local) const +{ +// EInside inside = tubs->Inside(local); +// return (inside == kInside); + G4double r = std::sqrt(local.x()*local.x()+local.y()*local.y()); + return (r < fieldRadius && std::fabs(local.z()) < fieldLength/2.0); +} diff --git a/examples/extended/field/field04/src/F04StackingAction.cc b/examples/extended/field/field04/src/F04StackingAction.cc new file mode 100644 index 0000000000..e834dc5aeb --- /dev/null +++ b/examples/extended/field/field04/src/F04StackingAction.cc @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "F04StackingAction.hh" + +#include "G4RunManager.hh" + +#include "G4Track.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleDefinition.hh" + +F04StackingAction::F04StackingAction() { } + +F04StackingAction::~F04StackingAction() { } + +G4ClassificationOfNewTrack + F04StackingAction::ClassifyNewTrack(const G4Track * aTrack) +{ + G4ParticleDefinition* particleType = aTrack->GetDefinition(); + const G4String name = particleType->GetParticleName(); + + // keep primary particle + if (aTrack->GetParentID() == 0) return fUrgent; + + if (particleType != G4Proton::ProtonDefinition() && + particleType != G4Neutron::NeutronDefinition() && + particleType != G4KaonPlus::KaonPlusDefinition() && + particleType != G4PionPlus::PionPlusDefinition() && + particleType != G4MuonPlus::MuonPlusDefinition() && + particleType != G4Positron::PositronDefinition()) return fKill; + + if (name != "pi+" && name != "mu+") return fKill; + +// if (name == "mu+") G4RunManager::GetRunManager()->rndmSaveThisEvent(); + + return fUrgent; +} + +void F04StackingAction::NewStage() { } + +void F04StackingAction::PrepareNewEvent() { } diff --git a/examples/extended/field/field04/src/F04StepMax.cc b/examples/extended/field/field04/src/F04StepMax.cc new file mode 100644 index 0000000000..324b75c65d --- /dev/null +++ b/examples/extended/field/field04/src/F04StepMax.cc @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "G4Track.hh" +#include "G4VParticleChange.hh" + +#include "F04StepMax.hh" + +F04StepMax::F04StepMax(const G4String& aName) + : G4VDiscreteProcess(aName), MaxChargedStep(DBL_MAX) +{ + if (verboseLevel>0) { + G4cout << GetProcessName() << " is created "<< G4endl; + } +} + +F04StepMax::~F04StepMax() { } + +F04StepMax::F04StepMax(F04StepMax& right) : G4VDiscreteProcess(right) { } + +G4bool F04StepMax::IsApplicable(const G4ParticleDefinition& particle) +{ + return (particle.GetPDGCharge() != 0.); +} + +void F04StepMax::SetStepMax(G4double step) { MaxChargedStep = step ; } + +G4double F04StepMax::PostStepGetPhysicalInteractionLength( + const G4Track&, + G4double, + G4ForceCondition* condition) +{ + // condition is set to "Not Forced" + *condition = NotForced; + + G4double ProposedStep = DBL_MAX; + + if ( MaxChargedStep > 0.) ProposedStep = MaxChargedStep ; + + return ProposedStep; +} + +G4VParticleChange* F04StepMax::PostStepDoIt(const G4Track& aTrack, + const G4Step& ) +{ + // do nothing + aParticleChange.Initialize(aTrack); + return &aParticleChange; +} + +G4double F04StepMax::GetMeanFreePath(const G4Track&,G4double,G4ForceCondition*) +{ + return 0.; +} diff --git a/examples/extended/field/field04/src/F04SteppingAction.cc b/examples/extended/field/field04/src/F04SteppingAction.cc new file mode 100644 index 0000000000..33c01d7df5 --- /dev/null +++ b/examples/extended/field/field04/src/F04SteppingAction.cc @@ -0,0 +1,117 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "G4Track.hh" + +#include "F04SteppingAction.hh" +#include "G4SteppingManager.hh" +#include "F04SteppingActionMessenger.hh" + +#include "G4ParticleTypes.hh" + +#include "F04UserTrackInformation.hh" + +F04SteppingAction::F04SteppingAction() +{ + steppingMessenger = new F04SteppingActionMessenger(this); +} + +F04SteppingAction::~F04SteppingAction() +{ + delete steppingMessenger ; +} + +void F04SteppingAction::UserSteppingAction(const G4Step* theStep) +{ + G4Track* theTrack = theStep->GetTrack(); + + if (theTrack->GetParentID()==0) { + //This is a primary track + G4String theVolumeName = theStep->GetPreStepPoint()-> + GetPhysicalVolume()->GetName(); + if (theVolumeName != "Target") { + theTrack->SetTrackStatus(fStopAndKill); + return; + } + } + +// G4ParticleDefinition* particleType = theTrack->GetDefinition(); + + // check if it is entering the test volume + G4StepPoint* thePrePoint = theStep->GetPreStepPoint(); + G4VPhysicalVolume* thePrePV = thePrePoint->GetPhysicalVolume(); + G4String thePrePVname = thePrePV->GetName(); + + G4String thePostPVname = " "; + G4StepPoint* thePostPoint = theStep->GetPostStepPoint(); + + if (thePostPoint) { + G4VPhysicalVolume* thePostPV = thePostPoint->GetPhysicalVolume(); + if (thePostPV) thePostPVname = thePostPV->GetName(); + } + + if (thePrePVname != "TestPlane" && + thePostPVname == "TestPlane") { + +// G4double x = theTrack->GetPosition().x(); +// G4double y = theTrack->GetPosition().y(); + + G4ThreeVector theMomentumDirection = theTrack-> + GetDynamicParticle()->GetMomentumDirection(); +// G4double theTotalMomentum = theTrack->GetDynamicParticle()-> +// GetTotalMomentum(); + + // then kill the track + theTrack->SetTrackStatus(fStopAndKill); + return; + + } + +// G4double z = theTrack->GetPosition().z(); + + F04UserTrackInformation* trackInformation = + (F04UserTrackInformation*)theTrack->GetUserInformation(); + + if (trackInformation->GetTrackStatusFlag() != reverse) { + if (thePrePVname != "Target" ) { + if ( theTrack-> GetMomentumDirection().z()>0.0 && + theTrack->GetVertexMomentumDirection().z()<0.0 ) + { + trackInformation->SetTrackStatusFlag(reverse); + } + } + } + + // check if it is alive + if (theTrack->GetTrackStatus() == fAlive) { return; } + + if (thePostPoint->GetProcessDefinedStep() != 0) { + if (thePostPoint->GetProcessDefinedStep()->GetProcessName() != "Decay") return; + } + +} diff --git a/examples/extended/field/field04/src/F04SteppingActionMessenger.cc b/examples/extended/field/field04/src/F04SteppingActionMessenger.cc new file mode 100644 index 0000000000..710c303625 --- /dev/null +++ b/examples/extended/field/field04/src/F04SteppingActionMessenger.cc @@ -0,0 +1,46 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "G4UIdirectory.hh" +#include "F04SteppingAction.hh" + +#include "F04SteppingActionMessenger.hh" + +F04SteppingActionMessenger::F04SteppingActionMessenger(F04SteppingAction* SA) + : steppingAction (SA) +{ + steppingDir = new G4UIdirectory("/stepping/"); + steppingDir->SetGuidance("stepping control"); +} + +F04SteppingActionMessenger::~F04SteppingActionMessenger() +{ + delete steppingDir; +} + +void F04SteppingActionMessenger::SetNewValue(G4UIcommand*, G4String) { } diff --git a/examples/extended/field/field04/src/F04SteppingVerbose.cc b/examples/extended/field/field04/src/F04SteppingVerbose.cc new file mode 100644 index 0000000000..55a6e7a81c --- /dev/null +++ b/examples/extended/field/field04/src/F04SteppingVerbose.cc @@ -0,0 +1,200 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "G4UnitsTable.hh" + +#include "F04SteppingVerbose.hh" + +F04SteppingVerbose::F04SteppingVerbose() +{ + G4VSteppingVerbose::SetSilent(1); +} + +F04SteppingVerbose::~F04SteppingVerbose() +{} + +void F04SteppingVerbose::StepInfo() +{ + CopyState(); + + G4int prec = G4cout.precision(8); + + if (fTrack->GetDefinition()->GetParticleName() == "proton") return; +// if (fTrack->GetDefinition()->GetParticleName() == "pi+") return; +// if (fTrack->GetDefinition()->GetParticleName() == "mu+") return; + if (fTrack->GetDefinition()->GetParticleName() == "e+") return; + + if( verboseLevel >= 1 ){ + if( verboseLevel >= 4 ) VerboseTrack(); + if( verboseLevel >= 3 ){ + G4cout << G4endl; + G4cout << std::setw( 5) << "#Step#" << " " + << std::setw(10) << "X" << " " + << std::setw(10) << "Y" << " " + << std::setw(10) << "Z" << " " + << std::setw(10) << "KineE" << " " + << std::setw(10) << "dEStep" << " " + << std::setw(10) << "StepLeng" + << std::setw(10) << "TrakLeng" + << std::setw(10) << "NextVolu" + << std::setw(10) << "Process" + << std::setw(10) << "Dir_x" << " " + << std::setw(10) << "Dir_y" << " " + << std::setw(10) << "Dir_z" << " " + << G4endl; + } + + G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << std::setw(10) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << std::setw(10) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << std::setw(10) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << std::setw(10) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << std::setw(10) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << std::setw(10) << G4BestUnit(fStep->GetStepLength(),"Length") + << std::setw(10) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + + if( fTrack->GetNextVolume() != 0 ) { + G4cout << std::setw(10) << fTrack->GetVolume()->GetName(); + } else { + G4cout << std::setw(10) << "OutOfWorld"; + } + + if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != 0){ + G4cout << " " + << std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() + ->GetProcessName(); + } else { + G4cout << " UserLimit"; + } + +// G4cout << std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().x(),"Length") +// << std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().y(),"Length") +// << std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().z(),"Length"); + + G4cout << G4endl; + + if( verboseLevel == 2 ){ + G4int tN2ndariesTot = fN2ndariesAtRestDoIt + + fN2ndariesAlongStepDoIt + + fN2ndariesPostStepDoIt; + if(tN2ndariesTot>0){ + G4cout << " :----- List of 2ndaries - " + << "#SpawnInStep=" << std::setw(3) << tN2ndariesTot + << "(Rest=" << std::setw(2) << fN2ndariesAtRestDoIt + << ",Along=" << std::setw(2) << fN2ndariesAlongStepDoIt + << ",Post=" << std::setw(2) << fN2ndariesPostStepDoIt + << "), " + << "#SpawnTotal=" << std::setw(3) << (*fSecondary).size() + << " ---------------" + << G4endl; + + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; + lp1<(*fSecondary).size(); lp1++){ + G4cout << " : " + << std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length") + << std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length") + << std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length") + << std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy") + << std::setw(10) + << (*fSecondary)[lp1]->GetDefinition()->GetParticleName(); + G4cout << G4endl; + } + + G4cout << " :-----------------------------" + << "----------------------------------" + << "-- EndOf2ndaries Info ---------------" + << G4endl; + } + } + + } + G4cout.precision(prec); +} + +void F04SteppingVerbose::TrackingStarted() +{ + CopyState(); + + G4int prec = G4cout.precision(3); + + if (fTrack->GetDefinition()->GetParticleName() == "proton") return; +// if (fTrack->GetDefinition()->GetParticleName() == "pi+") return; +// if (fTrack->GetDefinition()->GetParticleName() == "mu+") return; + if (fTrack->GetDefinition()->GetParticleName() == "e+") return; + + G4cout << G4endl; + G4cout << "*******************************************************" + << "**************************************************" + << G4endl; + G4cout << "* G4Track Information: " + << " Particle = " << fTrack->GetDefinition()->GetParticleName() + << "," + << " Track ID = " << fTrack->GetTrackID() + << "," + << " Parent ID = " << fTrack->GetParentID() + << G4endl; + G4cout << "*******************************************************" + << "**************************************************" + << G4endl; + G4cout << G4endl; + + if( verboseLevel > 0 ){ + + G4cout << std::setw( 5) << "Step#" << " " + << std::setw( 6) << "X" << " " + << std::setw( 6) << "Y" << " " + << std::setw( 6) << "Z" << " " + << std::setw( 9) << "KineE" << " " + << std::setw( 9) << "dEStep" << " " + << std::setw(10) << "StepLeng" + << std::setw(10) << "TrakLeng" + << std::setw(10) << "Volume" << " " + << std::setw(10) << "Process" << G4endl; + + G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") + << std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + + if(fTrack->GetNextVolume()){ + G4cout << std::setw(10) << fTrack->GetVolume()->GetName(); + } else { + G4cout << std::setw(10) << "OutOfWorld"; + } + G4cout << " initStep" << G4endl; + } + G4cout.precision(prec); +} diff --git a/examples/extended/field/field04/src/F04TrackingAction.cc b/examples/extended/field/field04/src/F04TrackingAction.cc new file mode 100644 index 0000000000..a718cc3c2a --- /dev/null +++ b/examples/extended/field/field04/src/F04TrackingAction.cc @@ -0,0 +1,68 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "globals.hh" +#include "G4RunManager.hh" + +//#include "F04Trajectory.hh" + +#include "F04UserTrackInformation.hh" + +#include "G4Track.hh" +#include "G4ParticleTypes.hh" +#include "G4TrackingManager.hh" + +#include "F04TrackingAction.hh" + +void F04TrackingAction::PreUserTrackingAction(const G4Track* aTrack) +{ + F04UserTrackInformation* trackInformation = new F04UserTrackInformation(); + + fpTrackingManager->SetUserTrackInformation(trackInformation); + + if (aTrack->GetMomentumDirection().z()>0.0) { + trackInformation->SetTrackStatusFlag(right); + } else { + trackInformation->SetTrackStatusFlag(left); + } + +} + +void F04TrackingAction::PostUserTrackingAction(const G4Track* aTrack){ + + F04UserTrackInformation* + trackInformation = (F04UserTrackInformation*)aTrack->GetUserInformation(); + + if ( aTrack->GetDefinition()==G4MuonPlus::MuonPlusDefinition() || + aTrack->GetDefinition()==G4PionPlus::PionPlusDefinition() ) { + if (trackInformation->GetTrackStatusFlag() == reverse) { +// G4RunManager::GetRunManager()->rndmSaveThisEvent(); + } + } + +} diff --git a/examples/extended/field/field04/src/F04Trajectory.cc b/examples/extended/field/field04/src/F04Trajectory.cc new file mode 100644 index 0000000000..5625003478 --- /dev/null +++ b/examples/extended/field/field04/src/F04Trajectory.cc @@ -0,0 +1,202 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "G4AttDef.hh" +#include "G4AttValue.hh" +#include "G4AttDefStore.hh" + +#include "G4UIcommand.hh" +#include "G4UnitsTable.hh" + +#include "F04Trajectory.hh" +#include "F04TrajectoryPoint.hh" +#include "G4ParticleTable.hh" + +//#define G4ATTDEBUG +#ifdef G4ATTDEBUG +#include "G4AttCheck.hh" +#endif + +G4Allocator aTrajectoryAllocator; + +F04Trajectory::F04Trajectory() + : fpPointsContainer(0), fTrackID(0), fParentID(0), + PDGCharge(0.0), PDGEncoding(0), ParticleName(""), + initialMomentum(G4ThreeVector()) {;} + +F04Trajectory::F04Trajectory(const G4Track* aTrack) +{ + G4ParticleDefinition * fpParticleDefinition = aTrack->GetDefinition(); + ParticleName = fpParticleDefinition->GetParticleName(); + PDGCharge = fpParticleDefinition->GetPDGCharge(); + PDGEncoding = fpParticleDefinition->GetPDGEncoding(); + fTrackID = aTrack->GetTrackID(); + fParentID = aTrack->GetParentID(); + initialMomentum = aTrack->GetMomentum(); + fpPointsContainer = new TrajectoryPointContainer(); + // Following is for the first trajectory point + fpPointsContainer->push_back(new F04TrajectoryPoint(aTrack)); +} + +F04Trajectory::F04Trajectory(F04Trajectory & right) : G4VTrajectory() +{ + ParticleName = right.ParticleName; + PDGCharge = right.PDGCharge; + PDGEncoding = right.PDGEncoding; + fTrackID = right.fTrackID; + fParentID = right.fParentID; + initialMomentum = right.initialMomentum; + fpPointsContainer = new TrajectoryPointContainer(); + + for(size_t i=0;isize();++i) { + F04TrajectoryPoint* rightPoint + = (F04TrajectoryPoint*)((*(right.fpPointsContainer))[i]); + fpPointsContainer->push_back(new F04TrajectoryPoint(*rightPoint)); + } +} + +F04Trajectory::~F04Trajectory() +{ + for(size_t i=0;isize();++i){ + delete (*fpPointsContainer)[i]; + } + fpPointsContainer->clear(); + + delete fpPointsContainer; +} + +void F04Trajectory::ShowTrajectory(std::ostream& os) const +{ + // Invoke the default implementation in G4VTrajectory... + G4VTrajectory::ShowTrajectory(os); + // ... or override with your own code here. +} + +void F04Trajectory::DrawTrajectory(G4int i_mode) const +{ + // Invoke the default implementation in G4VTrajectory... + G4VTrajectory::DrawTrajectory(i_mode); + // ... or override with your own code here. +} + +void F04Trajectory::AppendStep(const G4Step* aStep) +{ + fpPointsContainer->push_back(new F04TrajectoryPoint(aStep)); +} + +G4ParticleDefinition* F04Trajectory::GetParticleDefinition() +{ + return (G4ParticleTable::GetParticleTable()->FindParticle(ParticleName)); +} + +void F04Trajectory::MergeTrajectory(G4VTrajectory* secondTrajectory) +{ + if(!secondTrajectory) return; + + F04Trajectory* second = (F04Trajectory*)secondTrajectory; + G4int ent = second->GetPointEntries(); + // initial point of the second trajectory should not be merged + for(G4int i=1; ipush_back((*(second->fpPointsContainer))[i]); + } + delete (*second->fpPointsContainer)[0]; + second->fpPointsContainer->clear(); +} + +const std::map* F04Trajectory::GetAttDefs() const +{ + G4bool isNew; + std::map* store + = G4AttDefStore::GetInstance("Trajectory",isNew); + + if (isNew) { + + G4String ID("ID"); + (*store)[ID] = G4AttDef(ID,"Track ID","Bookkeeping","","G4int"); + + G4String PID("PID"); + (*store)[PID] = G4AttDef(PID,"Parent ID","Bookkeeping","","G4int"); + + G4String PN("PN"); + (*store)[PN] = G4AttDef(PN,"Particle Name","Physics","","G4String"); + + G4String Ch("Ch"); + (*store)[Ch] = G4AttDef(Ch,"Charge","Physics","e+","G4double"); + + G4String PDG("PDG"); + (*store)[PDG] = G4AttDef(PDG,"PDG Encoding","Physics","","G4int"); + + G4String IMom("IMom"); + (*store)[IMom] = G4AttDef(IMom, + "Momentum of track at start of trajectory", + "Physics","G4BestUnit","G4ThreeVector"); + + G4String IMag("IMag"); + (*store)[IMag] = G4AttDef(IMag, + "Magnitude of momentum of track at start of trajectory", + "Physics","G4BestUnit","G4double"); + + G4String NTP("NTP"); + (*store)[NTP] = G4AttDef(NTP,"No. of points","Bookkeeping","","G4int"); + + } + return store; +} + +std::vector* F04Trajectory::CreateAttValues() const +{ + std::vector* values = new std::vector; + + values->push_back + (G4AttValue("ID",G4UIcommand::ConvertToString(fTrackID),"")); + + values->push_back + (G4AttValue("PID",G4UIcommand::ConvertToString(fParentID),"")); + + values->push_back(G4AttValue("PN",ParticleName,"")); + + values->push_back + (G4AttValue("Ch",G4UIcommand::ConvertToString(PDGCharge),"")); + + values->push_back + (G4AttValue("PDG",G4UIcommand::ConvertToString(PDGEncoding),"")); + + values->push_back + (G4AttValue("IMom",G4BestUnit(initialMomentum,"Energy"),"")); + + values->push_back + (G4AttValue("IMag",G4BestUnit(initialMomentum.mag(),"Energy"),"")); + + values->push_back + (G4AttValue("NTP",G4UIcommand::ConvertToString(GetPointEntries()),"")); + +#ifdef G4ATTDEBUG + G4cout << G4AttCheck(values,GetAttDefs()); +#endif + return values; +} diff --git a/examples/extended/field/field04/src/F04TrajectoryPoint.cc b/examples/extended/field/field04/src/F04TrajectoryPoint.cc new file mode 100644 index 0000000000..68f9a850e5 --- /dev/null +++ b/examples/extended/field/field04/src/F04TrajectoryPoint.cc @@ -0,0 +1,135 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "F04TrajectoryPoint.hh" + +#include "G4Step.hh" +#include "G4Track.hh" +#include "G4VProcess.hh" +#include "G4StepStatus.hh" + +#include "G4AttDef.hh" +#include "G4AttValue.hh" +#include "G4AttDefStore.hh" + +#include "G4UnitsTable.hh" + +//#define G4ATTDEBUG +#ifdef G4ATTDEBUG +#include "G4AttCheck.hh" +#endif + +G4Allocator aTrajPointAllocator; + +F04TrajectoryPoint::F04TrajectoryPoint() + : fTime(0.), fMomentum(0.,0.,0.), + fStepStatus(fUndefined), fVolumeName("") { } + +F04TrajectoryPoint::F04TrajectoryPoint(const G4Step* aStep) + : G4TrajectoryPoint(aStep->GetPostStepPoint()->GetPosition()) +{ + fTime = aStep->GetPostStepPoint()->GetGlobalTime(); + fMomentum = aStep->GetPostStepPoint()->GetMomentum(); + fStepStatus = aStep->GetPostStepPoint()->GetStepStatus(); + if (aStep->GetPostStepPoint()->GetPhysicalVolume()) + { + fVolumeName = aStep->GetPostStepPoint()-> + GetPhysicalVolume()->GetName(); + } else { + fVolumeName = " "; + } +} + +F04TrajectoryPoint::F04TrajectoryPoint(const G4Track* aTrack) + : G4TrajectoryPoint(aTrack->GetPosition()) +{ + fTime = aTrack->GetGlobalTime(); + fMomentum = aTrack->GetMomentum(); + fStepStatus = fUndefined; + fVolumeName = aTrack->GetVolume()->GetName(); +} + +F04TrajectoryPoint::F04TrajectoryPoint(const F04TrajectoryPoint &right) + : G4TrajectoryPoint(right) +{ + fTime = right.fTime; + fMomentum = right.fMomentum; + fStepStatus = right.fStepStatus; + fVolumeName = right.fVolumeName; +} + +F04TrajectoryPoint::~F04TrajectoryPoint() { } + +const std::map* F04TrajectoryPoint::GetAttDefs() const +{ + G4bool isNew; + std::map* store + = G4AttDefStore::GetInstance("TrajectoryPoint",isNew); + if (isNew) { + G4String Pos("Pos"); + (*store)[Pos] = + G4AttDef(Pos, "Position", "Physics","G4BestUnit","G4ThreeVector"); + + G4String Time("Time"); + (*store)[Time] = + G4AttDef(Time, "Time", "Physics","G4BestUnit","G4double"); + + G4String Momentum("Momentum"); + (*store)[Momentum] = + G4AttDef(Momentum, "Momentum", "Physics","G4BestUnit","G4ThreeVector"); + + G4String StepStatus("StepStatus"); + (*store)[StepStatus] = + G4AttDef(StepStatus, "StepStatus", "Physics", "", "G4StepStatus"); + + G4String VolumeName("VolumeName"); + (*store)[VolumeName] = + G4AttDef(VolumeName, "VolumeName", "Physics", "", "G4String"); + + } + return store; +} + +std::vector* F04TrajectoryPoint::CreateAttValues() const +{ + std::vector* values = new std::vector; + + values->push_back(G4AttValue("Time",G4BestUnit(fTime,"Time"),"")); + + values->push_back(G4AttValue("Momentum",G4BestUnit(fMomentum,"Momentum"),"")); + + values->push_back(G4AttValue("StepStatus",fStepStatus,"")); + + values->push_back(G4AttValue("VolumeName",fVolumeName,"")); + +#ifdef G4ATTDEBUG + G4cout << G4AttCheck(values,GetAttDefs()); +#endif + + return values; +} diff --git a/examples/extended/field/field04/src/F04UserTrackInformation.cc b/examples/extended/field/field04/src/F04UserTrackInformation.cc new file mode 100644 index 0000000000..b9d61f055e --- /dev/null +++ b/examples/extended/field/field04/src/F04UserTrackInformation.cc @@ -0,0 +1,34 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "F04UserTrackInformation.hh" + +F04UserTrackInformation::F04UserTrackInformation() + : status(undefined) { } + +F04UserTrackInformation::~F04UserTrackInformation() { } diff --git a/examples/extended/field/field04/vis.mac b/examples/extended/field/field04/vis.mac new file mode 100644 index 0000000000..f3bdd5c3fb --- /dev/null +++ b/examples/extended/field/field04/vis.mac @@ -0,0 +1,42 @@ +# +# Create a scene handler/viewer for a specific graphics system +# The compound command "/vis/open " +# is equivalent to the following set of commands: +# +# /vis/sceneHandler/create +# /vis/viewer/create +# +# Create a scene handler and a viewer for the OGLIXm driver +# +/vis/open OGLSXm +# +#/vis/viewer/set/style surface +/vis/viewer/set/style wireframe +# +# Set direction from target to camera. +/vis/viewer/set/viewpointVector 1 1.5 1.1 +/vis/viewer/set/viewpointThetaPhi 110 140 +/vis/viewer/zoom 1.4 +# +# The compound command "/vis/drawVolume" +# is equivalent to the following set of commands: +# +# /vis/scene/create +# /vis/scene/add/volume +# /vis/sceneHandler/attach +# Create an empty scene and add the detector geometry to it +/vis/drawVolume +# +# Store particle trajectories for visualization +# (if too many tracks cause core dump => storeTrajectory 0) +/tracking/storeTrajectory 2 +# +# Add trajectories to the current scene +/vis/scene/add/trajectories smooth +# +# Requests viewer to accumulate hits, tracks, etc. at end of event. +# detector remains or is redrawn. +/vis/scene/endOfEventAction refresh +#/vis/scene/endOfEventAction accumulate +# +#/event/drawTracks charged diff --git a/examples/extended/g3tog4/clGeometry/clGeometry.cc b/examples/extended/g3tog4/clGeometry/clGeometry.cc index ab7ed4f26e..3d5614f315 100644 --- a/examples/extended/g3tog4/clGeometry/clGeometry.cc +++ b/examples/extended/g3tog4/clGeometry/clGeometry.cc @@ -25,7 +25,7 @@ // // // $Id: clGeometry.cc,v 1.7 2006/06/29 17:20:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/clGeometry/clGeometry.out b/examples/extended/g3tog4/clGeometry/clGeometry.out index c362f80d67..eb1e24998e 100644 --- a/examples/extended/g3tog4/clGeometry/clGeometry.out +++ b/examples/extended/g3tog4/clGeometry/clGeometry.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -94,8 +94,8 @@ G3toG4PhysicsList::SetCuts:CutLength : 2 mm /control/execute /afs/cern.ch/sw/geant4/stt/dev1/src/geant4/tests/test601/test601.in /run/verbose 2 /process/eLoss/verbose 1 -/gun/position 0. -1.5 0. mm -/gun/direction 0. 1. 0. +/gun/position 0. -1.5 0. mm +/gun/direction 0. 1. 0. /gun/energy 1 GeV /gun/particle mu- /run/beamOn 1 @@ -123,7 +123,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -136,7 +136,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -159,7 +159,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -167,7 +167,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -179,7 +179,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -196,7 +196,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -214,7 +214,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -227,7 +227,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 Region -- appears in world volume Root logical volume(s) : HALL @@ -250,12 +250,12 @@ Start closing geometry. G4GeometryManager::ReportVoxelStats -- Voxel Statistics Total memory consumed for geometry optimisation: 3 kByte - Total CPU time elapsed for geometry optimisation: 0.01 seconds + Total CPU time elapsed for geometry optimisation: 0 seconds Voxelisation: top CPU users: Percent Total CPU System CPU Memory Volume ------- ---------- ---------- -------- ---------- - 100.00 0.01 0.00 0k HALL + 0.00 0.00 0.00 0k HALL 0.00 0.00 0.00 2k TUB1 0.00 0.00 0.00 0k TUB2 0.00 0.00 0.00 0k BXD1_2_ENV @@ -267,7 +267,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics Percent Memory Heads Nodes Pointers Total CPU Volume ------- -------- ------ ------ -------- ---------- ---------- 60.02 2k 1 60 60 0.00 TUB1 - 11.92 0k 2 8 18 0.01 HALL + 11.92 0k 2 8 18 0.00 HALL 6.39 0k 1 5 5 0.00 TUB2 5.42 0k 1 4 4 0.00 BXD1_2_ENV 5.42 0k 1 4 4 0.00 BXD1_3_ENV @@ -300,7 +300,7 @@ WARNING: G4VisManager::IsValidView(): Attempt to draw when no graphics system Run terminated. Run Summary Number of events processed : 1 - User=0s Real=0.07000000000000001s Sys=0s + User=0.01s Real=0.04s Sys=0s /gun/particle mu+ /run/beamOn 1 @@ -339,7 +339,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Run terminated. Run Summary Number of events processed : 1 - User=0s Real=0.01s Sys=0.01s + User=0s Real=0s Sys=0s /gun/particle e- /run/beamOn 1 @@ -417,9 +417,9 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Run terminated. Run Summary Number of events processed : 1 - User=0s Real=0s Sys=0s -/gun/position 0. 1.5 0. mm -/gun/direction 1. 0. 0. + User=0s Real=0.01s Sys=0.01s +/gun/position 0. 1.5 0. mm +/gun/direction 1. 0. 0. /gun/energy 1 GeV /gun/particle mu- /run/beamOn 1 diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4DetectorConstruction.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4DetectorConstruction.hh index 5b88e95e70..4331deb36c 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4DetectorConstruction.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4DetectorConstruction.hh,v 1.4 2006/06/29 17:20:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G3toG4DetectorConstruction_h #define G3toG4DetectorConstruction_h 1 diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4EventAction.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4EventAction.hh index b52775608d..fe4237c7cb 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4EventAction.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4EventAction.hh,v 1.3 2006/06/29 17:20:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4EventActionMessenger.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4EventActionMessenger.hh index dd43e866b0..204530a610 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4EventActionMessenger.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4EventActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4EventActionMessenger.hh,v 1.3 2006/06/29 17:20:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4PhysicsList.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4PhysicsList.hh index 0e769bffcf..957abc0955 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4PhysicsList.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4PhysicsList.hh,v 1.3 2006/06/29 17:20:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4PrimaryGeneratorAction.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4PrimaryGeneratorAction.hh index 37c6fd0d98..36b999c546 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4PrimaryGeneratorAction.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4PrimaryGeneratorAction.hh,v 1.3 2006/06/29 17:20:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G3toG4PrimaryGeneratorAction_h diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4RunAction.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4RunAction.hh index 5830f68085..09ffbe2604 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4RunAction.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4RunAction.hh,v 1.3 2006/06/29 17:20:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G3toG4RunAction_h diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4DetectorConstruction.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4DetectorConstruction.cc index 1ec6382db9..0acc06c380 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4DetectorConstruction.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4DetectorConstruction.cc,v 1.5 2006/06/29 17:20:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //-------------------------------------------------------------------------- // G3toG4DetectorConstruction. Most the work is Done in diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4EventAction.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4EventAction.cc index 5779d5282b..fdc4150f81 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4EventAction.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4EventAction.cc,v 1.5 2006/06/29 17:20:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4EventActionMessenger.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4EventActionMessenger.cc index b0e8318525..c48df91855 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4EventActionMessenger.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4EventActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4EventActionMessenger.cc,v 1.4 2006/06/29 17:20:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4PhysicsList.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4PhysicsList.cc index 74d7ae8bab..67edd17acb 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4PhysicsList.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4PhysicsList.cc,v 1.5 2006/06/29 17:20:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4PrimaryGeneratorAction.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4PrimaryGeneratorAction.cc index 8d3124dcce..c108f586f7 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4PrimaryGeneratorAction.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4PrimaryGeneratorAction.cc,v 1.5 2006/06/29 17:20:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4RunAction.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4RunAction.cc index eec312f827..862d6a4413 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4RunAction.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4RunAction.cc,v 1.4 2006/06/29 17:20:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4ios.hh" diff --git a/examples/extended/g3tog4/cltog4/cltog4.cc b/examples/extended/g3tog4/cltog4/cltog4.cc index da8d253d46..3be8e74a43 100644 --- a/examples/extended/g3tog4/cltog4/cltog4.cc +++ b/examples/extended/g3tog4/cltog4/cltog4.cc @@ -25,7 +25,7 @@ // // // $Id: cltog4.cc,v 1.6 2006/06/29 17:20:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // #include "G4ios.hh" diff --git a/examples/extended/g3tog4/cltog4/cltog4.out b/examples/extended/g3tog4/cltog4/cltog4.out index 65f71a3817..8837d192d4 100644 --- a/examples/extended/g3tog4/cltog4/cltog4.out +++ b/examples/extended/g3tog4/cltog4/cltog4.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -62,8 +62,8 @@ G3toG4PhysicsList::SetCuts:CutLength : 2 mm /control/verbose 1 /tracking/verbose 1 /run/initialize -/gun/position 0. -1.5 0. -/gun/direction 0. 1. 0. +/gun/position 0. -1.5 0. +/gun/direction 0. 1. 0. /gun/energy 1 GeV /gun/particle chargedgeantino /run/beamOn 10 @@ -91,7 +91,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -104,7 +104,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -127,7 +127,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -135,7 +135,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -147,7 +147,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -164,7 +164,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -182,7 +182,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -195,7 +195,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -303,5 +303,5 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Run terminated. Run Summary Number of events processed : 10 - User=0.01s Real=0.03s Sys=0.01s + User=0.02s Real=0.02s Sys=0s G4 kernel has come to Quit state. diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4DetectorConstruction.hh b/examples/extended/g3tog4/cltog4/include/G3toG4DetectorConstruction.hh index cea1bcc4eb..3d07431cea 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4DetectorConstruction.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4DetectorConstruction.hh,v 1.3 2006/06/29 17:20:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G3toG4DetectorConstruction_h #define G3toG4DetectorConstruction_h 1 diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4EventAction.hh b/examples/extended/g3tog4/cltog4/include/G3toG4EventAction.hh index ec4932cdfd..e23a05e5ba 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4EventAction.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4EventAction.hh,v 1.3 2006/06/29 17:20:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4EventActionMessenger.hh b/examples/extended/g3tog4/cltog4/include/G3toG4EventActionMessenger.hh index 6c77692706..672fe430f3 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4EventActionMessenger.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4EventActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4EventActionMessenger.hh,v 1.3 2006/06/29 17:20:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4PhysicsList.hh b/examples/extended/g3tog4/cltog4/include/G3toG4PhysicsList.hh index 1cc144d3e9..f53982576b 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4PhysicsList.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4PhysicsList.hh,v 1.3 2006/06/29 17:20:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4PrimaryGeneratorAction.hh b/examples/extended/g3tog4/cltog4/include/G3toG4PrimaryGeneratorAction.hh index 4a0ef41d23..eba1a905a8 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4PrimaryGeneratorAction.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4PrimaryGeneratorAction.hh,v 1.3 2006/06/29 17:20:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G3toG4PrimaryGeneratorAction_h diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4RunAction.hh b/examples/extended/g3tog4/cltog4/include/G3toG4RunAction.hh index a31cc86e1a..cfc75f6284 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4RunAction.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4RunAction.hh,v 1.3 2006/06/29 17:20:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G3toG4RunAction_h diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4DetectorConstruction.cc b/examples/extended/g3tog4/cltog4/src/G3toG4DetectorConstruction.cc index a2a4171909..be9144f0b8 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4DetectorConstruction.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4DetectorConstruction.cc,v 1.5 2006/06/29 17:20:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //-------------------------------------------------------------------------- // G3toG4DetectorConstruction. Most the work is Done in diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4EventAction.cc b/examples/extended/g3tog4/cltog4/src/G3toG4EventAction.cc index 775ce760ad..fdb9b3ad02 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4EventAction.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4EventAction.cc,v 1.6 2006/06/29 17:20:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4EventActionMessenger.cc b/examples/extended/g3tog4/cltog4/src/G3toG4EventActionMessenger.cc index f3b0e29134..f43f1916a0 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4EventActionMessenger.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4EventActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4EventActionMessenger.cc,v 1.4 2006/06/29 17:20:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4PhysicsList.cc b/examples/extended/g3tog4/cltog4/src/G3toG4PhysicsList.cc index a583128602..d980da69c9 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4PhysicsList.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4PhysicsList.cc,v 1.5 2006/06/29 17:21:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4PrimaryGeneratorAction.cc b/examples/extended/g3tog4/cltog4/src/G3toG4PrimaryGeneratorAction.cc index 676f64a8df..6e466e46bf 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4PrimaryGeneratorAction.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4PrimaryGeneratorAction.cc,v 1.5 2006/06/29 17:21:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4RunAction.cc b/examples/extended/g3tog4/cltog4/src/G3toG4RunAction.cc index c672e9ba99..22ad844e91 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4RunAction.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4RunAction.cc,v 1.4 2006/06/29 17:21:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4ios.hh" diff --git a/examples/extended/gdml/GNUmakefile b/examples/extended/gdml/GNUmakefile index 930f923b6d..a3cdf72929 100644 --- a/examples/extended/gdml/GNUmakefile +++ b/examples/extended/gdml/GNUmakefile @@ -1,11 +1,9 @@ -# $Id: GNUmakefile,v 1.6 2006/07/24 15:32:13 witoldp Exp $ +# $Id: GNUmakefile,v 1.10 2007/12/05 08:25:56 gcosmo Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. -# Author: Radovan Chytracek -# Date: 04/12/2004. # -------------------------------------------------------------- -name := g4_gdml_read_write +name := load_gdml G4TARGET := $(name) G4EXLIB := true @@ -13,33 +11,11 @@ ifndef G4INSTALL G4INSTALL = ../../.. endif -CPPFLAGS += \ - -I$(GDML_INC) \ - -I$(XERCESCROOT)/include - -EXTRALIBS += \ - -L$(GDML_LIB) \ - -lG4Evaluator \ - -lG4Processor \ - -lG4Subscribers \ - -lG4Writer \ - -lSaxana \ - -lProcesses \ - -lWriter \ - -L$(XERCESCROOT)/lib -lxerces-c - .PHONY: all all: lib bin ifndef XERCESCROOT @echo XERCESCROOT not defined! endif -ifndef GDML_INC - @echo GDML_INC not defined! -endif -ifndef GDML_LIB - @echo GDML_LIB not defined! -endif - include $(G4INSTALL)/config/binmake.gmk diff --git a/examples/extended/gdml/History b/examples/extended/gdml/History index d0e6f6e7ad..f8adfd3a23 100644 --- a/examples/extended/gdml/History +++ b/examples/extended/gdml/History @@ -1,4 +1,4 @@ -$Id: History,v 1.9 2006/12/01 16:57:09 gcosmo Exp $ +$Id: History,v 1.12 2007/12/11 13:09:39 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,18 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +December 11th, 2007 G.Cosmo - exgdml-V09-00-02 +- Protected usage of G4UItcsh in main(). + +December 5th, 2007 Z.Torzsok - exgdml-V09-00-01 +- Corrected call to parser in main. +- Use OGLX instead of OGLXm. +- Fixed gun position. + +November 19th, 2007 Z.Torzsok - exgdml-V09-00-00 +- Updated to co-work with built-in GDML plugin module GDML-3. +- Showing loading of modular GDML files. + December 1st, 2006 W.Pokorski - exgdml-V08-01-00 - Set schema location to LCG release area in test.gdml. - Updated README and GNUmakefile. diff --git a/examples/extended/gdml/README b/examples/extended/gdml/README index c8a808e835..2cc5d90c8f 100644 --- a/examples/extended/gdml/README +++ b/examples/extended/gdml/README @@ -1,4 +1,4 @@ -$Id: README,v 1.9 2006/07/24 15:32:13 witoldp Exp $ +$Id: README,v 1.10 2007/11/20 08:34:16 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,46 +14,29 @@ Geometry Description Markup Language). The GDML files can be then used to interchange geometries between different applications and users. -The detector construction consists of a call to GDMLProcessor which parses the -GDML file (test.gdml) and returns the pointer to the world volume. The user -can also write his/her own GDML file and use it as the primary input format for -his/her Geant4 application. +The detector construction consists of a call to GDMLProcessor which parses a +GDML file and returns the pointer to the world volume. The user can also write +her/his own GDML file and use it as the primary input format for her/his Geant4 +application. -Once the Geant4 geometry is loaded in the memory, the G4GDMLWriter class is -instantiated (in the 'main') to demonstrate the exporting of the GDML file. -The call to DumpGeometryInfo method causes the GDML writer to scan the Geant4 -geometry tree and write it out in the form of a GDML file. +More than one simple GDML files are provided: +- axes.gdml, showing loading and orientation of Cartesian axes; +- diamond.gdml, a simple diamond structure made of tessellated solids; +- modular.gdml, the combination of the two GDML files above loaded as + separate modules in the same setup. HOW TO BUILD THE EXAMPLE ? -- Install the GDML package with the Geant4 binding as well as Xerces. - See: http://cern.ch/gdml. +- You need to have built the persistency/gdml plugin module by having + set G4LIB_BUILD_GDML variable in your environment. + It is also required you specify the path where the XercesC XML parser + package is installed in your system, through the variable XERCESCROOT. -- Set the environment variable GDML_INC to point to the directory where - GDML includes are installed and GDML_LIB to point to the directory - where GDML libraries are installed. - Set XERCESCROOT to point to place where Xerces is installed. - You can also edit the GNUmakefile provided with the example and - customise it for your specific setup. - -- Compile and link to generate an executable: +- Compile and link to generate the executable: % gmake - Note 1: GDML requires that all the Geant4 header files are copied to - one directory. You can use the Geant4 Configure script for coping - the Geant4 header files. - Note 2: new version of GDML (after GDML_2_5_0) have one additional - library called G4Evaluator. If you are compiling with older version - of GDML, you should remove that library from the makefile. -- You may need to customise the location of the GDML schema file which is - specified at the top of test.gdml file (the geometry file). By default - the schema will be loaded from the web server of LCG release area, however, - you can load your own copy of the schema by specifying the path, like: - xsi:noNamespaceSchemaLocation="/home/me/MYGDML/src/GDMLSchema/gdml.xsd" - - Execute the application: - % g4_gdml_read_write - Note: if you are using dynamic libraries, you should add $GDML_LIB - and $XERCESCROOT/lib paths to the LD_LIBRARY_PATH directory (or - equivalent on your system). - + % load_gdml [GDML-file].gdml + Note: if you are using dynamic libraries, you should add and + $XERCESCROOT/lib paths to the LD_LIBRARY_PATH directory (or + equivalent on your system). diff --git a/examples/extended/gdml/axes.gdml b/examples/extended/gdml/axes.gdml new file mode 100644 index 0000000000..45d72a1432 --- /dev/null +++ b/examples/extended/gdml/axes.gdml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/extended/gdml/diamond.gdml b/examples/extended/gdml/diamond.gdml new file mode 100644 index 0000000000..22300b57a8 --- /dev/null +++ b/examples/extended/gdml/diamond.gdml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/extended/gdml/include/DetectorConstruction.hh b/examples/extended/gdml/include/DetectorConstruction.hh new file mode 100644 index 0000000000..cf03c39ab8 --- /dev/null +++ b/examples/extended/gdml/include/DetectorConstruction.hh @@ -0,0 +1,53 @@ +// +// ******************************************************************** +// * 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.2 2007/11/20 09:42:57 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// + +#ifndef _DETECTORCONSTRUCTION_H_ +#define _DETECTORCONSTRUCTION_H_ + +#include "G4VUserDetectorConstruction.hh" + +class DetectorConstruction : public G4VUserDetectorConstruction { +private: + G4VPhysicalVolume *World; +public: + + DetectorConstruction(G4VPhysicalVolume *setWorld = 0) { + + World = setWorld; + } + + G4VPhysicalVolume *Construct() { + + return World; + } +}; + +#endif diff --git a/examples/extended/gdml/include/g4rwPhysicsList.hh b/examples/extended/gdml/include/PhysicsList.hh similarity index 81% rename from examples/extended/gdml/include/g4rwPhysicsList.hh rename to examples/extended/gdml/include/PhysicsList.hh index d02437a715..c1c14d0b98 100644 --- a/examples/extended/gdml/include/g4rwPhysicsList.hh +++ b/examples/extended/gdml/include/PhysicsList.hh @@ -23,27 +23,27 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -*- C++ -*- -// $Id: g4rwPhysicsList.hh,v 1.3 2006/06/29 17:21:43 gunter Exp $ +// +// $Id: PhysicsList.hh,v 1.2 2007/11/20 09:42:57 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// -#ifndef gogdmlPhysicsList_h -#define gogdmlPhysicsList_h 1 +#ifndef _PHYSICSLIST_H_ +#define _PHYSICSLIST_H_ #include "G4VUserPhysicsList.hh" +#include "G4ParticleTypes.hh" #include "globals.hh" -class gogdmlPhysicsList: public G4VUserPhysicsList -{ - public: - gogdmlPhysicsList(); - ~gogdmlPhysicsList(); - - protected: - // Construct particle and physics process - void ConstructParticle(); - void ConstructProcess(); - void SetCuts(); - +class PhysicsList: public G4VUserPhysicsList { +public: + PhysicsList(); + ~PhysicsList(); +protected: + void ConstructParticle(); + void ConstructProcess(); + void SetCuts(); }; #endif diff --git a/examples/extended/gdml/include/PrimaryGeneratorAction.hh b/examples/extended/gdml/include/PrimaryGeneratorAction.hh new file mode 100644 index 0000000000..0e532b6b63 --- /dev/null +++ b/examples/extended/gdml/include/PrimaryGeneratorAction.hh @@ -0,0 +1,58 @@ +// +// ******************************************************************** +// * 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.2 2007/11/20 09:42:57 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// + +#ifndef _PRIMARYGENERATORACTION_H_ +#define _PRIMARYGENERATORACTION_H_ + +#include "G4VUserPrimaryGeneratorAction.hh" + +#include "G4Event.hh" +#include "G4ParticleGun.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" +#include "globals.hh" + +//class G4ParticleGun; +//class G4Event; + +class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { +public: + PrimaryGeneratorAction(); + ~PrimaryGeneratorAction(); + + void GeneratePrimaries(G4Event* anEvent); +private: + G4ParticleGun* particleGun; +}; + +#endif + + diff --git a/examples/extended/gdml/load_gdml.cc b/examples/extended/gdml/load_gdml.cc new file mode 100644 index 0000000000..5fa92bce7b --- /dev/null +++ b/examples/extended/gdml/load_gdml.cc @@ -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: load_gdml.cc,v 1.6 2007/12/11 13:13:25 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// -------------------------------------------------------------- +// GEANT 4 - load_gdml +// +// -------------------------------------------------------------- + +#include "G4RunManager.hh" +#include "G4UImanager.hh" +#include "G4UIsession.hh" +#include "G4UIterminal.hh" +#include "G4UItcsh.hh" +#include "G4TransportationManager.hh" +#include "G4VisExecutive.hh" + +#include "PrimaryGeneratorAction.hh" +#include "DetectorConstruction.hh" +#include "PhysicsList.hh" + +#include "G4GDMLParser.hh" + +int main(int argc, char **argv) { + + if (argc<2) { + + G4cout << "Usage: load_gdml " << G4endl; + return 0; + } + + G4GDMLParser parser; + + parser.Read(argv[1]); + + G4RunManager* runManager = new G4RunManager; + G4VisManager* visManager = new G4VisExecutive; + + runManager->SetUserInitialization(new DetectorConstruction(parser.GetWorldVolume())); + runManager->SetUserInitialization(new PhysicsList); + runManager->SetUserAction(new PrimaryGeneratorAction); + + runManager->Initialize(); + visManager->Initialize(); + + G4UImanager* UI = G4UImanager::GetUIpointer(); + + G4UIsession * session = 0; +#ifdef G4UI_USE_TCSH + session = new G4UIterminal(new G4UItcsh); +#else + session = new G4UIterminal(); +#endif + + UI->ApplyCommand("/control/execute vis.mac"); + + session->SessionStart(); + + delete visManager; + delete runManager; + + return 0; +} diff --git a/examples/extended/gdml/loop.gdml b/examples/extended/gdml/loop.gdml new file mode 100644 index 0000000000..eba45586f3 --- /dev/null +++ b/examples/extended/gdml/loop.gdml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/extended/gdml/modular.gdml b/examples/extended/gdml/modular.gdml new file mode 100644 index 0000000000..f7a0af365d --- /dev/null +++ b/examples/extended/gdml/modular.gdml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/extended/gdml/scale.gdml b/examples/extended/gdml/scale.gdml new file mode 100644 index 0000000000..844e87fdbd --- /dev/null +++ b/examples/extended/gdml/scale.gdml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/extended/gdml/src/PhysicsList.cc b/examples/extended/gdml/src/PhysicsList.cc new file mode 100644 index 0000000000..69c4743795 --- /dev/null +++ b/examples/extended/gdml/src/PhysicsList.cc @@ -0,0 +1,57 @@ +// +// ******************************************************************** +// * 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: PhysicsList.cc,v 1.2 2007/11/20 09:42:57 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// + +#include "PhysicsList.hh" + +PhysicsList::PhysicsList() { +} + +PhysicsList::~PhysicsList() { +} + +void PhysicsList::ConstructParticle() { + + G4Geantino::GeantinoDefinition(); +} + +void PhysicsList::ConstructProcess() { + + AddTransportation(); +} + +void PhysicsList::SetCuts() { + + G4int temp = GetVerboseLevel(); + SetVerboseLevel(0); + SetCutsWithDefault(); + SetVerboseLevel(temp); +} + diff --git a/examples/extended/gdml/src/g4rwPrimaryGeneratorAction.cc b/examples/extended/gdml/src/PrimaryGeneratorAction.cc similarity index 70% rename from examples/extended/gdml/src/g4rwPrimaryGeneratorAction.cc rename to examples/extended/gdml/src/PrimaryGeneratorAction.cc index fc52c8ea06..fd2cf8c832 100644 --- a/examples/extended/gdml/src/g4rwPrimaryGeneratorAction.cc +++ b/examples/extended/gdml/src/PrimaryGeneratorAction.cc @@ -24,49 +24,46 @@ // ******************************************************************** // // -// $Id: g4rwPrimaryGeneratorAction.cc,v 1.4 2006/06/29 17:21:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PrimaryGeneratorAction.cc,v 1.4 2007/12/05 08:41:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// // -#include "g4rwPrimaryGeneratorAction.hh" +#include "PrimaryGeneratorAction.hh" -#include "G4Event.hh" -#include "G4ParticleGun.hh" -#include "G4UImanager.hh" -#include "globals.hh" +PrimaryGeneratorAction::PrimaryGeneratorAction() { -gogdmlPrimaryGeneratorAction::gogdmlPrimaryGeneratorAction() -{ G4int n_particle = 1; particleGun = new G4ParticleGun(n_particle); - G4UImanager* UI = G4UImanager::GetUIpointer(); - UI->ApplyCommand("/gun/particle geantino"); - UI->ApplyCommand("/gun/position 0.0 0.0 0.0 cm"); + G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); + G4String particleName; + particleGun->SetParticleDefinition(particleTable->FindParticle(particleName="geantino")); + particleGun->SetParticleEnergy(1.0*GeV); + particleGun->SetParticlePosition(G4ThreeVector(-2.0*m, 0.1, 0.1)); } -gogdmlPrimaryGeneratorAction::~gogdmlPrimaryGeneratorAction() +PrimaryGeneratorAction::~PrimaryGeneratorAction() { delete particleGun; } -void gogdmlPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) +void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { - G4UImanager* UI = G4UImanager::GetUIpointer(); G4int i = anEvent->GetEventID() % 3; + G4ThreeVector v(1.0,0.0,0.0); switch(i) { case 0: - UI->ApplyCommand("/gun/direction 0.2 0.0 1.0"); break; case 1: - UI->ApplyCommand("/gun/direction 0.0 0.3 1.0"); + v.setY(0.1); break; case 2: - UI->ApplyCommand("/gun/direction 0.1 0.0 1.0"); + v.setZ(0.1); break; } - + particleGun->SetParticleMomentumDirection(v); particleGun->GeneratePrimaryVertex(anEvent); } diff --git a/examples/extended/gdml/test.gdml b/examples/extended/gdml/test.gdml deleted file mode 100644 index 9d2e5a2768..0000000000 --- a/examples/extended/gdml/test.gdml +++ /dev/null @@ -1,1390 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/extended/gdml/vis.mac b/examples/extended/gdml/vis.mac index b191a89ef7..1af54e32cb 100644 --- a/examples/extended/gdml/vis.mac +++ b/examples/extended/gdml/vis.mac @@ -12,5 +12,5 @@ /vis/viewer/zoom 1.4 /vis/viewer/flush -# (if you prefer refreshing each event, comment out next line) -/vis/scene/endOfEventAction accumulate +# (if you prefer not refreshing each event, uncomment next line) +# /vis/scene/endOfEventAction accumulate diff --git a/examples/extended/geometry/olap/include/G4GeoNav.hh b/examples/extended/geometry/olap/include/G4GeoNav.hh index fbdc4b40cc..b53443dad8 100644 --- a/examples/extended/geometry/olap/include/G4GeoNav.hh +++ b/examples/extended/geometry/olap/include/G4GeoNav.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeoNav.hh,v 1.4 2006/06/29 17:21:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/OlapDetConstr.hh b/examples/extended/geometry/olap/include/OlapDetConstr.hh index ecf13351dd..ddc9144024 100644 --- a/examples/extended/geometry/olap/include/OlapDetConstr.hh +++ b/examples/extended/geometry/olap/include/OlapDetConstr.hh @@ -25,7 +25,7 @@ // // // $Id: OlapDetConstr.hh,v 1.2 2006/06/29 17:22:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/OlapEventAction.hh b/examples/extended/geometry/olap/include/OlapEventAction.hh index 4c81ca1a2c..c4176e0ff3 100644 --- a/examples/extended/geometry/olap/include/OlapEventAction.hh +++ b/examples/extended/geometry/olap/include/OlapEventAction.hh @@ -25,7 +25,7 @@ // // // $Id: OlapEventAction.hh,v 1.3 2006/06/29 17:22:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/OlapGenerator.hh b/examples/extended/geometry/olap/include/OlapGenerator.hh index c89db286d5..33d3fcbb6d 100644 --- a/examples/extended/geometry/olap/include/OlapGenerator.hh +++ b/examples/extended/geometry/olap/include/OlapGenerator.hh @@ -25,7 +25,7 @@ // // // $Id: OlapGenerator.hh,v 1.3 2006/06/29 17:22:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/OlapLogManager.hh b/examples/extended/geometry/olap/include/OlapLogManager.hh index 7e46af8c0e..28412418cf 100644 --- a/examples/extended/geometry/olap/include/OlapLogManager.hh +++ b/examples/extended/geometry/olap/include/OlapLogManager.hh @@ -25,7 +25,7 @@ // // // $Id: OlapLogManager.hh,v 1.2 2006/06/29 17:22:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/OlapManager.hh b/examples/extended/geometry/olap/include/OlapManager.hh index db3014d3ba..c327c028f8 100644 --- a/examples/extended/geometry/olap/include/OlapManager.hh +++ b/examples/extended/geometry/olap/include/OlapManager.hh @@ -25,7 +25,7 @@ // // // $Id: OlapManager.hh,v 1.4 2006/06/29 17:22:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/OlapManagerMessenger.hh b/examples/extended/geometry/olap/include/OlapManagerMessenger.hh index 734cd83492..45ad099e46 100644 --- a/examples/extended/geometry/olap/include/OlapManagerMessenger.hh +++ b/examples/extended/geometry/olap/include/OlapManagerMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: OlapManagerMessenger.hh,v 1.2 2006/06/29 17:22:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/OlapNotify.hh b/examples/extended/geometry/olap/include/OlapNotify.hh index 1a3c529567..fd9f91b759 100644 --- a/examples/extended/geometry/olap/include/OlapNotify.hh +++ b/examples/extended/geometry/olap/include/OlapNotify.hh @@ -25,7 +25,7 @@ // // // $Id: OlapNotify.hh,v 1.3 2006/06/29 17:22:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/OlapPhysicsList.hh b/examples/extended/geometry/olap/include/OlapPhysicsList.hh index 37a7825bc7..078ba3da62 100644 --- a/examples/extended/geometry/olap/include/OlapPhysicsList.hh +++ b/examples/extended/geometry/olap/include/OlapPhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: OlapPhysicsList.hh,v 1.2 2006/06/29 17:22:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/OlapRunAction.hh b/examples/extended/geometry/olap/include/OlapRunAction.hh index 256c678cf1..b216ee4d36 100644 --- a/examples/extended/geometry/olap/include/OlapRunAction.hh +++ b/examples/extended/geometry/olap/include/OlapRunAction.hh @@ -25,7 +25,7 @@ // // // $Id: OlapRunAction.hh,v 1.3 2006/06/29 17:22:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/OlapSteppingAction.hh b/examples/extended/geometry/olap/include/OlapSteppingAction.hh index 7d6a0379d7..3e6ee217da 100644 --- a/examples/extended/geometry/olap/include/OlapSteppingAction.hh +++ b/examples/extended/geometry/olap/include/OlapSteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: OlapSteppingAction.hh,v 1.3 2006/06/29 17:22:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/RandomDetector.hh b/examples/extended/geometry/olap/include/RandomDetector.hh index 008796e0ac..dd0a663832 100644 --- a/examples/extended/geometry/olap/include/RandomDetector.hh +++ b/examples/extended/geometry/olap/include/RandomDetector.hh @@ -25,7 +25,7 @@ // // // $Id: RandomDetector.hh,v 1.2 2006/06/29 17:22:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/SolidAnalyser.hh b/examples/extended/geometry/olap/include/SolidAnalyser.hh index 2e16480b77..c58b553216 100644 --- a/examples/extended/geometry/olap/include/SolidAnalyser.hh +++ b/examples/extended/geometry/olap/include/SolidAnalyser.hh @@ -25,7 +25,7 @@ // // // $Id: SolidAnalyser.hh,v 1.3 2006/06/29 17:22:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/include/tree.hh b/examples/extended/geometry/olap/include/tree.hh index bafc9c575f..a8b3604d2a 100644 --- a/examples/extended/geometry/olap/include/tree.hh +++ b/examples/extended/geometry/olap/include/tree.hh @@ -25,7 +25,7 @@ // // // $Id: tree.hh,v 1.4 2006/06/29 17:22:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/olapex.cc b/examples/extended/geometry/olap/olapex.cc index ade0f51d6e..a1de0b68e3 100644 --- a/examples/extended/geometry/olap/olapex.cc +++ b/examples/extended/geometry/olap/olapex.cc @@ -25,7 +25,7 @@ // // // $Id: olapex.cc,v 1.3 2006/06/29 17:21:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/G4GeoNav.cc b/examples/extended/geometry/olap/src/G4GeoNav.cc index d97dd9c74b..2737cf82d2 100644 --- a/examples/extended/geometry/olap/src/G4GeoNav.cc +++ b/examples/extended/geometry/olap/src/G4GeoNav.cc @@ -25,7 +25,7 @@ // // // $Id: G4GeoNav.cc,v 1.3 2006/06/29 17:22:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/OlapDetConstr.cc b/examples/extended/geometry/olap/src/OlapDetConstr.cc index 11e1d2d00e..9c1147fd95 100644 --- a/examples/extended/geometry/olap/src/OlapDetConstr.cc +++ b/examples/extended/geometry/olap/src/OlapDetConstr.cc @@ -25,7 +25,7 @@ // // // $Id: OlapDetConstr.cc,v 1.4 2006/06/29 17:22:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/OlapEventAction.cc b/examples/extended/geometry/olap/src/OlapEventAction.cc index ba3de979a6..3cdb4fdc36 100644 --- a/examples/extended/geometry/olap/src/OlapEventAction.cc +++ b/examples/extended/geometry/olap/src/OlapEventAction.cc @@ -25,7 +25,7 @@ // // // $Id: OlapEventAction.cc,v 1.5 2006/06/29 17:22:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/OlapGenerator.cc b/examples/extended/geometry/olap/src/OlapGenerator.cc index ac5917c287..971acf1666 100644 --- a/examples/extended/geometry/olap/src/OlapGenerator.cc +++ b/examples/extended/geometry/olap/src/OlapGenerator.cc @@ -25,7 +25,7 @@ // // // $Id: OlapGenerator.cc,v 1.4 2006/06/29 17:22:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/OlapLogManager.cc b/examples/extended/geometry/olap/src/OlapLogManager.cc index f7b1460da3..63eff5f780 100644 --- a/examples/extended/geometry/olap/src/OlapLogManager.cc +++ b/examples/extended/geometry/olap/src/OlapLogManager.cc @@ -25,7 +25,7 @@ // // // $Id: OlapLogManager.cc,v 1.3 2006/06/29 17:22:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/OlapManager.cc b/examples/extended/geometry/olap/src/OlapManager.cc index 4fefdc4aad..d3d48d6f5a 100644 --- a/examples/extended/geometry/olap/src/OlapManager.cc +++ b/examples/extended/geometry/olap/src/OlapManager.cc @@ -25,7 +25,7 @@ // // // $Id: OlapManager.cc,v 1.3 2006/06/29 17:23:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/OlapManagerMessenger.cc b/examples/extended/geometry/olap/src/OlapManagerMessenger.cc index f2f7681617..a69114d329 100644 --- a/examples/extended/geometry/olap/src/OlapManagerMessenger.cc +++ b/examples/extended/geometry/olap/src/OlapManagerMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: OlapManagerMessenger.cc,v 1.3 2006/06/29 17:23:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/OlapNotify.cc b/examples/extended/geometry/olap/src/OlapNotify.cc index 30c2517c18..770f78fddf 100644 --- a/examples/extended/geometry/olap/src/OlapNotify.cc +++ b/examples/extended/geometry/olap/src/OlapNotify.cc @@ -25,7 +25,7 @@ // // // $Id: OlapNotify.cc,v 1.2 2006/06/29 17:23:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/OlapPhysicsList.cc b/examples/extended/geometry/olap/src/OlapPhysicsList.cc index 724aa00879..c4c0153f9e 100644 --- a/examples/extended/geometry/olap/src/OlapPhysicsList.cc +++ b/examples/extended/geometry/olap/src/OlapPhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: OlapPhysicsList.cc,v 1.2 2006/06/29 17:23:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/OlapRunAction.cc b/examples/extended/geometry/olap/src/OlapRunAction.cc index 6afeefa2fc..dbfe7f0dba 100644 --- a/examples/extended/geometry/olap/src/OlapRunAction.cc +++ b/examples/extended/geometry/olap/src/OlapRunAction.cc @@ -25,7 +25,7 @@ // // // $Id: OlapRunAction.cc,v 1.5 2006/06/29 17:23:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/OlapSteppingAction.cc b/examples/extended/geometry/olap/src/OlapSteppingAction.cc index ea033b5046..6715a9095d 100644 --- a/examples/extended/geometry/olap/src/OlapSteppingAction.cc +++ b/examples/extended/geometry/olap/src/OlapSteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: OlapSteppingAction.cc,v 1.3 2006/06/29 17:23:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/RandomDetector.cc b/examples/extended/geometry/olap/src/RandomDetector.cc index f5f53a703f..df9fc3cf4e 100644 --- a/examples/extended/geometry/olap/src/RandomDetector.cc +++ b/examples/extended/geometry/olap/src/RandomDetector.cc @@ -25,7 +25,7 @@ // // // $Id: RandomDetector.cc,v 1.5 2006/06/29 17:23:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/geometry/olap/src/SolidAnalyser.cc b/examples/extended/geometry/olap/src/SolidAnalyser.cc index 5ef54d7129..8ee0b98c2c 100644 --- a/examples/extended/geometry/olap/src/SolidAnalyser.cc +++ b/examples/extended/geometry/olap/src/SolidAnalyser.cc @@ -25,7 +25,7 @@ // // // $Id: SolidAnalyser.cc,v 1.6 2006/06/29 17:23:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/hadronic/Hadr01/GNUmakefile b/examples/extended/hadronic/Hadr01/GNUmakefile index 50d6a16d78..dd62b48a32 100644 --- a/examples/extended/hadronic/Hadr01/GNUmakefile +++ b/examples/extended/hadronic/Hadr01/GNUmakefile @@ -1,5 +1,5 @@ # $Id: GNUmakefile,v 1.7 2006/10/31 15:05:33 vnivanch Exp $ -# GEANT4 tag $Name: geant4-09-00 $ +# GEANT4 tag $Name: geant4-09-01 $ # -------------------------------------------------------------- # GNUmakefile for examples module with AIDA interface # -------------------------------------------------------------- diff --git a/examples/extended/hadronic/Hadr01/History b/examples/extended/hadronic/Hadr01/History index 605bfc1ff7..b9b73e8bc2 100644 --- a/examples/extended/hadronic/Hadr01/History +++ b/examples/extended/hadronic/Hadr01/History @@ -1,4 +1,4 @@ -$Id: History,v 1.19 2007/06/01 16:07:31 vnivanch Exp $ +$Id: History,v 1.23 2007/12/12 12:00:23 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,19 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +12-12-07 V.Ivant (exhadr01-V09-00-03) +- remove experimental PhysLists: QGS_BIC, QGSP_CASC + +07-12-07 V.Ivant (exhadr01-V09-00-02) +- If type of histograms "root" then added "h" in front of histograms id + +16-11-07 V.Ivant (exhadr01-V09-00-01) +- Added QGSC_BERT PhysList + +14-11-07 V.Ivant (exhadr01-V09-00-00) +- Physics List updated according to recent changes in hadronics and + physics_lists packages + 01-06-07 V.Ivant (exhadr01-V08-03-03) - Physics List updated according to recent changes in hadronics and physics_lists packages diff --git a/examples/extended/hadronic/Hadr01/hadr01.cc b/examples/extended/hadronic/Hadr01/hadr01.cc index 0278dd3bef..a417eb20bf 100644 --- a/examples/extended/hadronic/Hadr01/hadr01.cc +++ b/examples/extended/hadronic/Hadr01/hadr01.cc @@ -25,7 +25,7 @@ // // // $Id: hadr01.cc,v 1.9 2006/11/24 16:48:57 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------- // GEANT4 hadr01 diff --git a/examples/extended/hadronic/Hadr01/hadr01.out b/examples/extended/hadronic/Hadr01/hadr01.out index ddf945614b..f4e7a2e848 100644 --- a/examples/extended/hadronic/Hadr01/hadr01.out +++ b/examples/extended/hadronic/Hadr01/hadr01.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,14 +9,14 @@ /run/verbose 1 /tracking/verbose 0 # -/testhadr/TargetMat G4_Al -/testhadr/TargetRadius 1 cm -/testhadr/TargetLength 10 cm -/testhadr/NumberDivZ 100 -/testhadr/PrintModulo 10 +/testhadr/TargetMat G4_Al +/testhadr/TargetRadius 1 cm +/testhadr/TargetLength 10 cm +/testhadr/NumberDivZ 100 +/testhadr/PrintModulo 10 # -/testhadr/CutsAll 1 mm -/testhadr/Physics QBBC +/testhadr/CutsAll 1 mm +/testhadr/Physics QBBC PhysicsList::AddPhysicsList: ### HadronInelasticQBBC # @@ -25,11 +25,11 @@ PhysicsList::AddPhysicsList: ***** Table : Nb of materials = 2 ***** - Material: G4_Al density: 2.699 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.896 cm + Material: G4_Al density: 2.699 g/cm3 RadL: 8.896 cm Imean: 166.000 eV ---> Element: Al (Al) Z = 13.0 N = 27.0 A = 26.98 g/mole ---> Isotope: Al Z = 13 N = 27 A = 26.98 g/mole abundance: 100.00 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 204311173.221 pc + Material: G4_Galactic density: 0.000 mg/cm3 RadL: 204311173.221 pc Imean: 21.800 eV temperature: 2.73 K pressure: 0.00 atm ---> Element: H (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ---> Isotope: H Z = 1 N = 1 A = 1.01 g/mole abundance: 99.99 % ---> Isotope: H Z = 1 N = 2 A = 2.01 g/mole abundance: 0.01 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % @@ -44,56 +44,50 @@ Thank you for using G4BinaryCascade. Hadronic Processes for anti_neutron hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 -hInelastic Models: FTF Emin(GeV)= 3.5 Emax(GeV)= 100000 - CHIPS Emin(GeV)= 0 Emax(GeV)= 4 +hInelastic Models: FTF Emin(GeV)= 6 Emax(GeV)= 100000 + CHIPS Emin(GeV)= 0 Emax(GeV)= 9 Hadronic Processes for anti_proton hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 -hInelastic Models: FTF Emin(GeV)= 3.5 Emax(GeV)= 100000 - CHIPS Emin(GeV)= 0 Emax(GeV)= 4 +hInelastic Models: FTF Emin(GeV)= 6 Emax(GeV)= 100000 + CHIPS Emin(GeV)= 0 Emax(GeV)= 9 Hadronic Processes for kaon+ hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 -hInelastic Models: QGS Emin(GeV)= 11.5 Emax(GeV)= 100000 - FTF Emin(GeV)= 3.5 Emax(GeV)= 12 - Bertini Emin(GeV)= 0 Emax(GeV)= 4 +hInelastic Models: FTF Emin(GeV)= 6 Emax(GeV)= 100000 + Bertini Emin(GeV)= 0 Emax(GeV)= 9 Hadronic Processes for kaon- hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 -hInelastic Models: QGS Emin(GeV)= 11.5 Emax(GeV)= 100000 - FTF Emin(GeV)= 3.5 Emax(GeV)= 12 - Bertini Emin(GeV)= 0 Emax(GeV)= 4 +hInelastic Models: FTF Emin(GeV)= 6 Emax(GeV)= 100000 + Bertini Emin(GeV)= 0 Emax(GeV)= 9 Hadronic Processes for lambda hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 -hInelastic Models: FTF Emin(GeV)= 3.5 Emax(GeV)= 100000 - Bertini Emin(GeV)= 0 Emax(GeV)= 4 +hInelastic Models: FTF Emin(GeV)= 6 Emax(GeV)= 100000 + Bertini Emin(GeV)= 0 Emax(GeV)= 9 Hadronic Processes for neutron hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 -hInelastic Models: QGS Emin(GeV)= 11.5 Emax(GeV)= 100000 - FTF Emin(GeV)= 3.5 Emax(GeV)= 12 - Binary Emin(GeV)= 0 Emax(GeV)= 4 +hInelastic Models: QGS Emin(GeV)= 6 Emax(GeV)= 100000 + Binary Emin(GeV)= 0 Emax(GeV)= 9 nCapture Models: LCapture Emin(GeV)= 0 Emax(GeV)= 1.79769e+305 nFission Models: LFission Emin(GeV)= 0 Emax(GeV)= 1.79769e+305 Hadronic Processes for pi+ hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 -hInelastic Models: QGS Emin(GeV)= 11.5 Emax(GeV)= 100000 - FTF Emin(GeV)= 3.5 Emax(GeV)= 12 - Bertini Emin(GeV)= 0 Emax(GeV)= 4 +hInelastic Models: QGS Emin(GeV)= 6 Emax(GeV)= 100000 + Bertini Emin(GeV)= 0 Emax(GeV)= 9 Hadronic Processes for pi- hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 -hInelastic Models: QGS Emin(GeV)= 11.5 Emax(GeV)= 100000 - FTF Emin(GeV)= 3.5 Emax(GeV)= 12 - Bertini Emin(GeV)= 0 Emax(GeV)= 4 +hInelastic Models: QGS Emin(GeV)= 6 Emax(GeV)= 100000 + Bertini Emin(GeV)= 0 Emax(GeV)= 9 Hadronic Processes for proton hElastic Models: elastic Emin(GeV)= 0 Emax(GeV)= 100000 -hInelastic Models: QGS Emin(GeV)= 11.5 Emax(GeV)= 100000 - FTF Emin(GeV)= 3.5 Emax(GeV)= 12 - Binary Emin(GeV)= 0 Emax(GeV)= 4 +hInelastic Models: QGS Emin(GeV)= 6 Emax(GeV)= 100000 + Binary Emin(GeV)= 0 Emax(GeV)= 9 =========================================================================================== PhysicsList::SetCuts:CutLength : 1 mm # @@ -136,33 +130,33 @@ EventAction: Event # 90 started Run terminated. Run Summary Number of events processed : 100 - User=13.4s Real=14.4s Sys=0.63s + User=14.89s Real=15.68s Sys=0.65s RunAction: End of run actions are started HistoManager: End of run actions are started ======================================================== Beam particle proton Beam Energy(MeV) 3000 Number of events 100 -Average energy deposit (MeV) 56.84 RMS(MeV) 39.72 -Average number of steps 258.6 -Average number of gamma 1.94 -Average number of e- 3.97 +Average energy deposit (MeV) 64.25 RMS(MeV) 59.87 +Average number of steps 293.3 +Average number of gamma 2.55 +Average number of e- 4.88 Average number of e+ 0.05 -Average number of neutrons 0.76 -Average number of protons 0.8 +Average number of neutrons 0.84 +Average number of protons 0.94 Average number of antiprotons 0 -Average number of pi+ & pi- 0.27 -Average number of pi0 0.13 -Average number of kaons 0 +Average number of pi+ & pi- 0.34 +Average number of pi0 0.21 +Average number of kaons 0.01 Average number of muons 0 -Average number of deuterons+tritons 0.03 -Average number of He3+alpha 0.13 -Average number of ions 0.36 -Average number of forward neutrons 0.13 -Average number of reflected neutrons 0.03 -Average number of leaked neutrons 0.59 -Average number of proton leak 0.38 -Average number of pion leak 0.26 +Average number of deuterons+tritons 0.05 +Average number of He3+alpha 0.12 +Average number of ions 0.49 +Average number of forward neutrons 0.11 +Average number of reflected neutrons 0.02 +Average number of leaked neutrons 0.7 +Average number of proton leak 0.48 +Average number of pion leak 0.29 ======================================================== # diff --git a/examples/extended/hadronic/Hadr01/include/CheckVolumeSD.hh b/examples/extended/hadronic/Hadr01/include/CheckVolumeSD.hh index 45c5c190f5..30d5465d55 100755 --- a/examples/extended/hadronic/Hadr01/include/CheckVolumeSD.hh +++ b/examples/extended/hadronic/Hadr01/include/CheckVolumeSD.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: CheckVolumeSD.hh,v 1.3 2006/06/29 17:23:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/include/DetectorConstruction.hh b/examples/extended/hadronic/Hadr01/include/DetectorConstruction.hh index b6d45cd418..fc998a6445 100644 --- a/examples/extended/hadronic/Hadr01/include/DetectorConstruction.hh +++ b/examples/extended/hadronic/Hadr01/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.4 2006/06/29 17:23:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/include/DetectorMessenger.hh b/examples/extended/hadronic/Hadr01/include/DetectorMessenger.hh index 7e3cf7c3a2..1288a26dfb 100644 --- a/examples/extended/hadronic/Hadr01/include/DetectorMessenger.hh +++ b/examples/extended/hadronic/Hadr01/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.7 2007/05/16 11:43:30 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/include/EventAction.hh b/examples/extended/hadronic/Hadr01/include/EventAction.hh index fe18e6c7e7..347d022e42 100755 --- a/examples/extended/hadronic/Hadr01/include/EventAction.hh +++ b/examples/extended/hadronic/Hadr01/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.3 2006/06/29 17:23:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/include/EventActionMessenger.hh b/examples/extended/hadronic/Hadr01/include/EventActionMessenger.hh index 99b0e73fe5..f962c72cf4 100644 --- a/examples/extended/hadronic/Hadr01/include/EventActionMessenger.hh +++ b/examples/extended/hadronic/Hadr01/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.3 2006/06/29 17:23:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/include/Histo.hh b/examples/extended/hadronic/Hadr01/include/Histo.hh index ff71efcab6..8a2f72e3f3 100644 --- a/examples/extended/hadronic/Hadr01/include/Histo.hh +++ b/examples/extended/hadronic/Hadr01/include/Histo.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: Histo.hh,v 1.6 2007/05/24 13:52:31 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef Histo_h #define Histo_h 1 diff --git a/examples/extended/hadronic/Hadr01/include/HistoManager.hh b/examples/extended/hadronic/Hadr01/include/HistoManager.hh index db597630f0..c4721e3c77 100644 --- a/examples/extended/hadronic/Hadr01/include/HistoManager.hh +++ b/examples/extended/hadronic/Hadr01/include/HistoManager.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HistoManager.hh,v 1.8 2007/05/16 11:43:30 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/examples/extended/hadronic/Hadr01/include/HistoMessenger.hh b/examples/extended/hadronic/Hadr01/include/HistoMessenger.hh index 0d3e403bbb..01898e7707 100644 --- a/examples/extended/hadronic/Hadr01/include/HistoMessenger.hh +++ b/examples/extended/hadronic/Hadr01/include/HistoMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HistoMessenger.hh,v 1.5 2006/11/15 14:58:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/include/PhysicsList.hh b/examples/extended/hadronic/Hadr01/include/PhysicsList.hh index 0958944305..4ecf34f811 100755 --- a/examples/extended/hadronic/Hadr01/include/PhysicsList.hh +++ b/examples/extended/hadronic/Hadr01/include/PhysicsList.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: PhysicsList.hh,v 1.5 2006/08/28 13:54:13 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.hh,v 1.6 2007/11/14 18:59:08 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // @@ -70,7 +70,13 @@ public: private: - void SetStandardList(G4bool flagHP = false, G4bool glauber = false); + void SetBuilderList0(G4bool flagHP = false); + void SetBuilderList1(G4bool flagHP = false); + void SetBuilderList2(G4bool flagHP = false); + void SetBuilderList3(G4bool flagHP = false); + void SetBuilderList4(G4bool flagHP = false); + void SetBuilderList5(G4bool flagHP = false); + void SetBuilderList6(G4bool flagHP = false); G4double cutForGamma; G4double cutForElectron; diff --git a/examples/extended/hadronic/Hadr01/include/PhysicsListMessenger.hh b/examples/extended/hadronic/Hadr01/include/PhysicsListMessenger.hh index 6cf37f247d..4855cc8035 100755 --- a/examples/extended/hadronic/Hadr01/include/PhysicsListMessenger.hh +++ b/examples/extended/hadronic/Hadr01/include/PhysicsListMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsListMessenger.hh,v 1.3 2006/06/29 17:23:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/hadronic/Hadr01/include/PrimaryGeneratorAction.hh b/examples/extended/hadronic/Hadr01/include/PrimaryGeneratorAction.hh index 93a29f77bc..66c1c4ab10 100644 --- a/examples/extended/hadronic/Hadr01/include/PrimaryGeneratorAction.hh +++ b/examples/extended/hadronic/Hadr01/include/PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: PrimaryGeneratorAction.hh,v 1.3 2006/06/29 17:23:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/hadronic/Hadr01/include/StackingAction.hh b/examples/extended/hadronic/Hadr01/include/StackingAction.hh index 172f48d138..309e79d921 100644 --- a/examples/extended/hadronic/Hadr01/include/StackingAction.hh +++ b/examples/extended/hadronic/Hadr01/include/StackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingAction.hh,v 1.3 2006/06/29 17:23:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/include/StackingMessenger.hh b/examples/extended/hadronic/Hadr01/include/StackingMessenger.hh index 1d5711bcb2..b11b383ea4 100644 --- a/examples/extended/hadronic/Hadr01/include/StackingMessenger.hh +++ b/examples/extended/hadronic/Hadr01/include/StackingMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingMessenger.hh,v 1.3 2006/06/29 17:23:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/hadronic/Hadr01/include/TargetSD.hh b/examples/extended/hadronic/Hadr01/include/TargetSD.hh index b5a657008e..8419346175 100755 --- a/examples/extended/hadronic/Hadr01/include/TargetSD.hh +++ b/examples/extended/hadronic/Hadr01/include/TargetSD.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TargetSD.hh,v 1.4 2006/06/29 17:24:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/p_pb.in b/examples/extended/hadronic/Hadr01/p_pb.in index c999f0e1ec..0a7bcdadaa 100644 --- a/examples/extended/hadronic/Hadr01/p_pb.in +++ b/examples/extended/hadronic/Hadr01/p_pb.in @@ -17,7 +17,7 @@ # /run/initialize #/process/eLoss/MscStepLimit 0.2 false -/testhadr/HistoName p_pb_20GeV +#/testhadr/HistoName p_pb_20GeV /testhadr/MaxEdep 10 GeV # /gun/particle proton diff --git a/examples/extended/hadronic/Hadr01/run.csh b/examples/extended/hadronic/Hadr01/run.csh index 3e9ec7b0ef..3799ac996d 100644 --- a/examples/extended/hadronic/Hadr01/run.csh +++ b/examples/extended/hadronic/Hadr01/run.csh @@ -1,6 +1,6 @@ #/bin/csh -setenv HISTODIR 20070516 +setenv HISTODIR 20071127 mkdir -p $HISTODIR setenv PHYSLIST LHEP @@ -27,5 +27,11 @@ $G4MY/hadr01 p_pb.in >& $HISTODIR/$PHYSLIST.out setenv PHYSLIST QBBC $G4MY/hadr01 p_pb.in >& $HISTODIR/$PHYSLIST.out +setenv PHYSLIST QBBC_HEL +$G4MY/hadr01 p_pb.in >& $HISTODIR/$PHYSLIST.out + +setenv PHYSLIST QBBC_DEL +$G4MY/hadr01 p_pb.in >& $HISTODIR/$PHYSLIST.out + echo "Done!" # diff --git a/examples/extended/hadronic/Hadr01/src/CheckVolumeSD.cc b/examples/extended/hadronic/Hadr01/src/CheckVolumeSD.cc index 3ea70e55ff..0a8ed4b48b 100755 --- a/examples/extended/hadronic/Hadr01/src/CheckVolumeSD.cc +++ b/examples/extended/hadronic/Hadr01/src/CheckVolumeSD.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: CheckVolumeSD.cc,v 1.3 2006/06/29 17:24:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/src/DetectorConstruction.cc b/examples/extended/hadronic/Hadr01/src/DetectorConstruction.cc index 6d0f0a0ae9..81bdc37805 100644 --- a/examples/extended/hadronic/Hadr01/src/DetectorConstruction.cc +++ b/examples/extended/hadronic/Hadr01/src/DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.cc,v 1.6 2006/10/04 09:56:03 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/src/DetectorMessenger.cc b/examples/extended/hadronic/Hadr01/src/DetectorMessenger.cc index f72bfec86d..d03c35a613 100644 --- a/examples/extended/hadronic/Hadr01/src/DetectorMessenger.cc +++ b/examples/extended/hadronic/Hadr01/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.7 2007/05/16 11:43:30 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/src/EventAction.cc b/examples/extended/hadronic/Hadr01/src/EventAction.cc index cecdd375eb..8512b95d74 100755 --- a/examples/extended/hadronic/Hadr01/src/EventAction.cc +++ b/examples/extended/hadronic/Hadr01/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.4 2007/05/16 11:43:30 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/src/EventActionMessenger.cc b/examples/extended/hadronic/Hadr01/src/EventActionMessenger.cc index ab4304ca42..c2e546dab2 100644 --- a/examples/extended/hadronic/Hadr01/src/EventActionMessenger.cc +++ b/examples/extended/hadronic/Hadr01/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.3 2006/06/29 17:24:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/src/Histo.cc b/examples/extended/hadronic/Hadr01/src/Histo.cc index 749b13dba5..12f5a44a1a 100644 --- a/examples/extended/hadronic/Hadr01/src/Histo.cc +++ b/examples/extended/hadronic/Hadr01/src/Histo.cc @@ -116,7 +116,10 @@ void Histo::book() if(verbose>0) G4cout<<" I am in book: histogram "<< i << " id= " << ids[i] <createHistogram1D(ids[i], tittles[i], bins[i], xmin[i], xmax[i]); + G4String idd; + if(histType == "root") idd = "h" + ids[i]; + else idd = ids[i]; + histo[i] = hf->createHistogram1D(idd, tittles[i], bins[i], xmin[i], xmax[i]); } else { histo[i] = 0; } diff --git a/examples/extended/hadronic/Hadr01/src/HistoManager.cc b/examples/extended/hadronic/Hadr01/src/HistoManager.cc index b20c3d55e0..39fbb6d505 100644 --- a/examples/extended/hadronic/Hadr01/src/HistoManager.cc +++ b/examples/extended/hadronic/Hadr01/src/HistoManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HistoManager.cc,v 1.14 2007/05/24 13:52:31 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/examples/extended/hadronic/Hadr01/src/HistoMessenger.cc b/examples/extended/hadronic/Hadr01/src/HistoMessenger.cc index d547382ed7..96071d1b43 100644 --- a/examples/extended/hadronic/Hadr01/src/HistoMessenger.cc +++ b/examples/extended/hadronic/Hadr01/src/HistoMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: HistoMessenger.cc,v 1.5 2006/06/29 17:24:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/src/PhysicsList.cc b/examples/extended/hadronic/Hadr01/src/PhysicsList.cc index 9a98c09396..55ce422184 100755 --- a/examples/extended/hadronic/Hadr01/src/PhysicsList.cc +++ b/examples/extended/hadronic/Hadr01/src/PhysicsList.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: PhysicsList.cc,v 1.21 2007/06/01 16:07:31 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.cc,v 1.24 2007/12/12 12:00:24 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // @@ -48,6 +48,7 @@ #include "G4EmStandardPhysics_option1.hh" #include "G4EmStandardPhysics.hh" #include "G4HadronElasticPhysics.hh" +#include "G4HadronDElasticPhysics.hh" #include "G4HadronQElasticPhysics.hh" #include "G4HadronHElasticPhysics.hh" #include "G4NeutronTrackingCut.hh" @@ -58,19 +59,20 @@ #include "G4EmExtraPhysics.hh" #include "G4EmProcessOptions.hh" -#include "HadronPhysicsFTFP.hh" #include "HadronPhysicsFTFC.hh" +#include "HadronPhysicsFTFP.hh" +#include "HadronPhysicsFTFP_BERT.hh" #include "HadronPhysicsLHEP.hh" #include "HadronPhysicsLHEP_BERT.hh" #include "HadronPhysicsLHEP_EMV.hh" #include "HadronPhysicsLHEP_PRECO_HP.hh" #include "G4HadronInelasticQBBC.hh" #include "HadronPhysicsQGSC.hh" +#include "HadronPhysicsQGSC_BERT.hh" #include "HadronPhysicsQGSC_EFLOW.hh" #include "HadronPhysicsQGSP.hh" #include "HadronPhysicsQGSP_BERT.hh" #include "HadronPhysicsQGSP_BERT_HP.hh" -#include "HadronPhysicsQGSP_BERT_TRV.hh" #include "HadronPhysicsQGSP_BIC.hh" #include "HadronPhysicsQGSP_BIC_HP.hh" @@ -159,123 +161,107 @@ void PhysicsList::AddPhysicsList(const G4String& name) } else if (name == "FTFC") { + SetBuilderList1(); hadronPhys.push_back( new HadronPhysicsFTFC("hadron",true)); - SetStandardList(false, false); dump = true; } else if (name == "FTFP") { + SetBuilderList1(); hadronPhys.push_back( new HadronPhysicsFTFP("hadron",true)); - SetStandardList(false, false); + dump = true; + + } else if (name == "FTFP_BERT") { + + SetBuilderList1(); + hadronPhys.push_back( new HadronPhysicsFTFP_BERT("hadron",true)); dump = true; } else if (name == "FTFP_EMV") { AddPhysicsList("emstandard_opt1"); AddPhysicsList("FTFP"); - dump = true; } else if (name == "LHEP") { - hadronPhys.push_back( new G4EmExtraPhysics("gamma_nuc")); - hadronPhys.push_back( new G4HadronElasticPhysics("LElastic", - verboseLevel,false)); + SetBuilderList2(); hadronPhys.push_back( new HadronPhysicsLHEP("hadron")); - hadronPhys.push_back( new G4IonPhysics("ion")); + dump = true; } else if (name == "LHEP_BERT") { - hadronPhys.push_back( new G4EmExtraPhysics("gamma_nuc")); - hadronPhys.push_back( new G4HadronElasticPhysics("LElastic", - verboseLevel,false)); + SetBuilderList3(); hadronPhys.push_back( new HadronPhysicsLHEP_BERT("hadron")); - hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel)); - hadronPhys.push_back( new G4IonPhysics("ion")); + dump = true; } else if (name == "LHEP_EMV") { AddPhysicsList("emstandard_opt1"); - hadronPhys.push_back( new G4EmExtraPhysics("gamma_nuc")); - hadronPhys.push_back( new G4HadronElasticPhysics("LElastic", - verboseLevel,false)); + SetBuilderList3(); hadronPhys.push_back( new HadronPhysicsLHEP_EMV("hadron")); - hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel)); - hadronPhys.push_back( new G4IonPhysics("ion")); + dump = true; } else if (name == "LHEP_PRECO_HP") { - hadronPhys.push_back( new G4EmExtraPhysics("gamma_nuc")); - hadronPhys.push_back( new G4HadronElasticPhysics("LElastic", - verboseLevel,false)); + SetBuilderList3(true); hadronPhys.push_back( new HadronPhysicsLHEP_PRECO_HP("hadron")); - hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel)); - hadronPhys.push_back( new G4IonPhysics("ion")); + dump = true; } else if (name == "QBBC") { - SetStandardList(false,true); + SetBuilderList0(); hadronPhys.push_back( new G4HadronInelasticQBBC("QBBC",verboseLevel, false,false,false,false,true)); - } else if (name == "QBBCG") { + } else if (name == "QBBC_DEL") { - SetStandardList(false, false); + SetBuilderList5(); hadronPhys.push_back( new G4HadronInelasticQBBC("QBBC",verboseLevel, - false,false,false,false,false)); + false,false,false,false,true)); - } else if (name == "QBEC") { + } else if (name == "QBBC_HEL") { - SetStandardList(false,true); + SetBuilderList6(); hadronPhys.push_back( new G4HadronInelasticQBBC("QBBC",verboseLevel, - false,true,false,false,true)); + false,false,false,false,true)); } else if (name == "QBBC_HP") { - SetStandardList(true,true); + SetBuilderList0(true); hadronPhys.push_back( new G4HadronInelasticQBBC("QBBC",verboseLevel, false,false,false,true,true)); - - } else if (name == "QBEC_HP") { - - SetStandardList(true,true); - hadronPhys.push_back( new G4HadronInelasticQBBC("QBBC",verboseLevel, - false,true,false,true,true)); - } else if (name == "QGSC") { - hadronPhys.push_back( new G4EmExtraPhysics("gamma_nuc")); - hadronPhys.push_back( new G4HadronQElasticPhysics("QElastic",verboseLevel)); + SetBuilderList4(); hadronPhys.push_back( new HadronPhysicsQGSC("hadron",true)); - hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel,false)); - hadronPhys.push_back( new G4IonPhysics("ion")); - hadronPhys.push_back( new G4NeutronTrackingCut()); + dump = true; + + } else if (name == "QGSC_BERT") { + + SetBuilderList4(); + hadronPhys.push_back( new HadronPhysicsQGSC_BERT("hadron",true)); dump = true; } else if (name == "QGSC_EFLOW") { - hadronPhys.push_back( new G4EmExtraPhysics("gamma_nuc")); - hadronPhys.push_back( new G4HadronQElasticPhysics("QElastic",verboseLevel)); + SetBuilderList4(); hadronPhys.push_back( new HadronPhysicsQGSC_EFLOW("hadron",true)); - hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel,false)); - hadronPhys.push_back( new G4IonPhysics("ion")); - hadronPhys.push_back( new G4NeutronTrackingCut()); dump = true; } else if (name == "QGSC_EMV") { AddPhysicsList("emstandard_opt1"); AddPhysicsList("QGSC"); - dump = true; } else if (name == "QGSP") { - SetStandardList(false, false); + SetBuilderList1(); hadronPhys.push_back( new HadronPhysicsQGSP("hadron",true)); dump = true; } else if (name == "QGSP_BERT") { - SetStandardList(false, false); + SetBuilderList1(); hadronPhys.push_back( new HadronPhysicsQGSP_BERT("hadron",true)); dump = true; @@ -283,50 +269,39 @@ void PhysicsList::AddPhysicsList(const G4String& name) AddPhysicsList("emstandard_opt1"); AddPhysicsList("QGSP_BERT"); - dump = true; } else if (name == "QGSP_BERT_HP") { - SetStandardList(true, false); + SetBuilderList1(true); hadronPhys.push_back( new HadronPhysicsQGSP_BERT_HP("hadron",true)); - dump = true; - - } else if (name == "QGSP_BERT_NQE") { - - SetStandardList(false, false); - hadronPhys.push_back( new HadronPhysicsQGSP_BERT("hadron",false)); - dump = true; - - } else if (name == "QGSP_BERT_TRV") { - - SetStandardList(false, false); - hadronPhys.push_back( new HadronPhysicsQGSP_BERT_TRV("hadron",true)); - dump = true; } else if (name == "QGSP_BIC") { - SetStandardList(false, false); + SetBuilderList0(); hadronPhys.push_back( new HadronPhysicsQGSP_BIC("hadron",true)); dump = true; } else if (name == "QGSP_BIC_HP") { - SetStandardList(true, false); + SetBuilderList0(true); hadronPhys.push_back( new HadronPhysicsQGSP_BIC_HP("hadron",true)); dump = true; + } else if (name == "QGSP_DIF") { + + SetBuilderList1(); + HadronPhysicsQGSP * hp = new HadronPhysicsQGSP("hadron"); + hp->SetQuasiElastic(true); + hp->SetProjectileDiffraction(true); + hadronPhys.push_back(hp); + dump = true; + } else if (name == "QGSP_EMV") { AddPhysicsList("emstandard_opt1"); AddPhysicsList("QGSP"); dump = true; - } else if (name == "QGSP_EMV_NQE") { - - AddPhysicsList("emstandard_opt1"); - AddPhysicsList("QGSP_NQE"); - dump = true; - } else if (name == "QGSP_EMX") { AddPhysicsList("emstandard_opt2"); @@ -335,19 +310,14 @@ void PhysicsList::AddPhysicsList(const G4String& name) } else if (name == "QGSP_NQE") { - SetStandardList(false, false); + SetBuilderList1(); hadronPhys.push_back( new HadronPhysicsQGSP("hadron",false)); dump = true; } else if (name == "QGSP_QEL") { - hadronPhys.push_back( new G4EmExtraPhysics("gamma_nuc")); - hadronPhys.push_back( new G4HadronQElasticPhysics("QElastic", - verboseLevel)); + SetBuilderList4(); hadronPhys.push_back( new HadronPhysicsQGSP("hadron",true)); - hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel)); - hadronPhys.push_back( new G4IonPhysics("ion")); - hadronPhys.push_back( new G4NeutronTrackingCut()); dump = true; } else { @@ -360,14 +330,80 @@ void PhysicsList::AddPhysicsList(const G4String& name) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -void PhysicsList::SetStandardList(G4bool flagHP, G4bool glauber) +void PhysicsList::SetBuilderList0(G4bool flagHP) { - hadronPhys.push_back( new G4EmExtraPhysics("gamma_nuc")); + hadronPhys.push_back( new G4EmExtraPhysics("extra EM")); hadronPhys.push_back( new G4HadronElasticPhysics("elastic",verboseLevel, - flagHP,glauber)); + flagHP)); hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel)); - hadronPhys.push_back( new G4IonBinaryCascadePhysics("binary_ion")); - hadronPhys.push_back( new G4NeutronTrackingCut()); + hadronPhys.push_back( new G4IonBinaryCascadePhysics("ionBIC")); + hadronPhys.push_back( new G4NeutronTrackingCut("Neutron tracking cut")); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +void PhysicsList::SetBuilderList1(G4bool flagHP) +{ + hadronPhys.push_back( new G4EmExtraPhysics("extra EM")); + hadronPhys.push_back( new G4HadronElasticPhysics("elastic",verboseLevel, + flagHP)); + hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel)); + hadronPhys.push_back( new G4IonPhysics("ion")); + hadronPhys.push_back( new G4NeutronTrackingCut("Neutron tracking cut")); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +void PhysicsList::SetBuilderList2(G4bool flagHP) +{ + hadronPhys.push_back( new G4EmExtraPhysics("extra EM")); + hadronPhys.push_back( new G4HadronElasticPhysics("LElastic",verboseLevel, + flagHP)); + hadronPhys.push_back( new G4IonPhysics("ion")); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +void PhysicsList::SetBuilderList3(G4bool flagHP) +{ + hadronPhys.push_back( new G4EmExtraPhysics("extra EM")); + hadronPhys.push_back( new G4HadronElasticPhysics("LElastic",verboseLevel, + flagHP)); + hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel)); + hadronPhys.push_back( new G4IonPhysics("ion")); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +void PhysicsList::SetBuilderList4(G4bool) +{ + hadronPhys.push_back( new G4EmExtraPhysics("extra EM")); + hadronPhys.push_back( new G4HadronQElasticPhysics("elastic",verboseLevel)); + hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel)); + hadronPhys.push_back( new G4IonPhysics("ion")); + hadronPhys.push_back( new G4NeutronTrackingCut("Neutron tracking cut")); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +void PhysicsList::SetBuilderList5(G4bool flagHP) +{ + hadronPhys.push_back( new G4EmExtraPhysics("extra EM")); + hadronPhys.push_back( new G4HadronDElasticPhysics(verboseLevel,flagHP)); + hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel)); + hadronPhys.push_back( new G4IonBinaryCascadePhysics("ionBIC")); + hadronPhys.push_back( new G4NeutronTrackingCut("Neutron tracking cut")); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +void PhysicsList::SetBuilderList6(G4bool flagHP) +{ + hadronPhys.push_back( new G4EmExtraPhysics("extra EM")); + hadronPhys.push_back( new G4HadronHElasticPhysics(verboseLevel,flagHP)); + hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel)); + hadronPhys.push_back( new G4IonBinaryCascadePhysics("ionBIC")); + hadronPhys.push_back( new G4NeutronTrackingCut("Neutron tracking cut")); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... @@ -415,17 +451,15 @@ void PhysicsList::SetCutForPositron(G4double cut) void PhysicsList::List() { - G4cout << "### PhysicsLists available: FTFC FTFP FTFP_EMV LHEP LHEP_BERT LHEP_EMV" + G4cout << "### PhysicsLists available: FTFC FTFP FTFP_BERT FTFP_EMV LHEP LHEP_BERT LHEP_EMV " << G4endl; - G4cout << " LHEP_PRECO_HP QBBC QBBCG QBEC QBBC_HP QBEC_HP" + G4cout << " LHEP_PRECO_HP QBBC QBBC_DEL QBBC_HEL QBBC_HP QGSC " << G4endl; - G4cout << " QGSC QGSC_EFLOW QGSC_EMV QGSP QGSP_BERT QGSP_BER_EMV" + G4cout << " QGSC_BERT QGSC_EFLOW QGSC_EMV QGSP QGSP_BERT QGSP_BER_EMV " << G4endl; - G4cout << " QGSP_BERT_HP QGSP_BERT_NQE QGSP_BERT_TRV" + G4cout << " QGSP_BERT_HP QGSP_BIC QGSP_BIC_HP QGSP_DIF " << G4endl; - G4cout << " QGSP_BIC QGSP_BIC_HP QGSP_EMV QGSP_EMV_NQE" - << G4endl; - G4cout << " QGSC_EMX QGSP_NQE QGSP_QEL" + G4cout << " QGSP_EMV QGSP_EMX QGSP_NQE QGSP_QEL " << G4endl; } diff --git a/examples/extended/hadronic/Hadr01/src/PhysicsListMessenger.cc b/examples/extended/hadronic/Hadr01/src/PhysicsListMessenger.cc index 97be260326..49df579f24 100755 --- a/examples/extended/hadronic/Hadr01/src/PhysicsListMessenger.cc +++ b/examples/extended/hadronic/Hadr01/src/PhysicsListMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: PhysicsListMessenger.cc,v 1.4 2006/08/11 14:38:11 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/hadronic/Hadr01/src/PrimaryGeneratorAction.cc b/examples/extended/hadronic/Hadr01/src/PrimaryGeneratorAction.cc index 2a7fc70716..08a35c63df 100644 --- a/examples/extended/hadronic/Hadr01/src/PrimaryGeneratorAction.cc +++ b/examples/extended/hadronic/Hadr01/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.4 2006/11/15 14:58:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/src/StackingAction.cc b/examples/extended/hadronic/Hadr01/src/StackingAction.cc index 872cbceca4..e0f9b106f2 100644 --- a/examples/extended/hadronic/Hadr01/src/StackingAction.cc +++ b/examples/extended/hadronic/Hadr01/src/StackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingAction.cc,v 1.5 2006/10/04 09:56:03 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/src/StackingMessenger.cc b/examples/extended/hadronic/Hadr01/src/StackingMessenger.cc index c46d79d273..de53ef55aa 100644 --- a/examples/extended/hadronic/Hadr01/src/StackingMessenger.cc +++ b/examples/extended/hadronic/Hadr01/src/StackingMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingMessenger.cc,v 1.3 2006/06/29 17:24:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/hadronic/Hadr01/src/TargetSD.cc b/examples/extended/hadronic/Hadr01/src/TargetSD.cc index 9b46f0fdbc..f2a70a8671 100644 --- a/examples/extended/hadronic/Hadr01/src/TargetSD.cc +++ b/examples/extended/hadronic/Hadr01/src/TargetSD.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: TargetSD.cc,v 1.4 2006/06/29 17:24:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///////////////////////////////////////////////////////////////////////// // diff --git a/examples/extended/medical/DICOM/14196616.dat b/examples/extended/medical/DICOM/14196616.dat deleted file mode 100644 index ee09432814..0000000000 --- a/examples/extended/medical/DICOM/14196616.dat +++ /dev/null @@ -1,4 +0,0 @@ -Rows,columns(#): 512 512 -PixelSpacing_X,Y(mm): 0.976562 0.976562 -SliceThickness(mm): 3.000000 -SliceLocation(mm): -24.000000 diff --git a/examples/extended/medical/DICOM/14196616.g4 b/examples/extended/medical/DICOM/14196616.g4 deleted file mode 100644 index 59150411ba..0000000000 Binary files a/examples/extended/medical/DICOM/14196616.g4 and /dev/null differ diff --git a/examples/extended/medical/DICOM/14196616.g4dcm b/examples/extended/medical/DICOM/14196616.g4dcm new file mode 100644 index 0000000000..c1a2b2ba61 --- /dev/null +++ b/examples/extended/medical/DICOM/14196616.g4dcm @@ -0,0 +1,8464 @@ +10 +0 Air +1 LungInhale +2 LungExhale +3 AdiposeTissue +4 Breast +5 Water +6 Muscle +7 Liver +8 TrabecularBone +9 DenseBone +256 256 1 +-250 250 +-250 250 +-25.5 -22.5 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 2 3 3 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 4 3 3 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 3 4 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 6 6 6 6 6 6 6 6 5 5 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 5 6 6 6 6 6 6 6 6 5 5 6 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 6 5 6 6 5 6 6 6 6 6 6 6 6 5 4 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 6 6 6 6 6 6 6 6 5 6 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 6 5 6 6 6 6 6 5 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 6 6 6 6 6 5 6 6 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 6 6 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 6 6 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 7 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 6 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 7 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 4 4 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 5 5 6 5 6 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 6 6 5 5 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 6 5 5 5 6 6 5 6 5 5 6 6 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 6 5 6 5 6 5 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 6 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 4 4 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 6 6 6 5 6 6 5 6 5 5 6 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 6 6 6 6 6 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 3 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 5 6 6 5 6 6 5 5 6 6 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 5 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 6 6 6 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 6 5 5 5 5 5 6 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 5 6 6 5 5 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 5 6 6 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 6 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 6 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 5 6 5 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 5 6 5 5 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 6 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 5 3 3 2 3 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 2 2 1 2 2 2 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 2 1 0 0 0 0 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 2 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 3 1 0 0 0 0 0 0 0 0 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 2 2 2 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 3 1 0 0 0 0 0 0 0 0 0 0 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 2 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 2 1 1 1 1 1 2 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 2 0 0 0 0 0 0 0 1 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 2 1 1 1 1 2 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 1 1 1 1 1 1 1 2 1 2 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 2 2 1 1 2 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 6 5 5 5 5 5 5 5 5 5 5 4 2 1 1 1 1 2 1 1 2 1 2 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 2 1 1 2 2 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 3 1 1 1 1 1 1 2 2 1 2 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 2 2 1 2 1 2 1 2 1 1 1 1 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 1 1 2 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 3 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 1 1 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 4 2 1 1 1 1 2 1 1 1 2 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 4 5 5 5 5 5 2 1 1 2 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 4 5 5 5 5 5 3 2 1 1 1 1 1 1 1 2 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 2 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 0 0 0 0 0 0 1 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 4 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 2 2 2 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 2 2 2 3 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 4 1 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 2 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 4 2 0 0 0 0 0 0 0 1 2 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 4 2 2 2 2 2 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 3 2 1 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 6 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 5 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 5 6 6 6 6 6 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 3 4 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 4 5 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 4 3 4 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 4 3 3 3 3 3 3 3 4 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 4 4 4 6 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 4 6 8 9 8 8 8 5 4 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 6 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 4 8 8 8 9 9 8 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 4 8 8 9 8 8 8 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 6 8 8 8 9 8 6 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 4 6 8 9 9 8 8 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 9 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 7 8 8 8 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 4 5 8 9 9 9 8 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 6 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 8 8 8 8 8 7 6 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 7 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 6 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 6 6 6 6 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 6 6 6 6 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 7 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 5 6 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 4 5 5 6 6 6 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 3 5 5 6 6 6 6 6 6 5 6 5 5 5 5 6 6 6 5 5 6 5 5 5 5 6 6 6 5 6 5 5 5 5 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 6 5 5 5 5 5 6 5 5 6 6 5 5 6 6 6 6 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 2 3 4 5 5 5 5 5 6 5 6 6 5 5 6 6 6 6 6 6 5 6 6 6 6 6 5 6 6 6 6 5 6 6 6 5 6 6 5 6 6 6 6 5 5 6 6 6 6 6 6 6 5 6 6 6 6 6 5 6 6 5 5 5 5 4 3 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 3 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 2 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 2 3 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 3 2 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 3 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 5 6 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 2 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 5 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 6 6 3 2 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 5 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 5 2 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 2 2 6 6 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 7 6 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 2 5 6 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 6 8 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 7 8 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 7 6 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 8 6 5 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 6 8 8 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 5 7 8 6 5 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 6 8 8 6 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 4 6 8 8 6 5 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 6 6 8 7 6 3 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 3 6 6 8 8 6 6 5 3 2 2 2 2 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 3 5 6 8 8 8 6 5 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 5 6 6 6 8 8 8 7 6 6 6 6 6 6 5 5 5 5 5 4 4 5 5 5 6 6 6 6 6 6 8 8 8 8 6 6 5 4 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00301 0.0100333 0.00301 0.00702333 0 0.00702333 0.00602 +0.00501667 0.0110367 0.00301 0.00501667 0.00200667 0.00802667 0.00602 0.00501667 +0.00100333 0.0130433 0.00401333 0.00200667 0.00602 0.00702333 0.00401333 0.0110367 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0 0.00702333 0.00501667 0.00401333 0.00602 0 +0.00602 0.00301 0.00702333 0.00301 0.00702333 0 0.00602 0 +0.00401333 0.00903 0 0.00602 0.00301 0.00501667 0.00401333 0.00301 +0.00100333 0.00501667 0.00200667 0.00501667 0 0.00602 0.00200667 0.00702333 +0 0.00802667 0 0.0140467 0.00200667 0.00702333 0.0110367 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00802667 0.00702333 0.00301 0.00200667 0.00301 +0.00401333 0.0100333 0 0.00702333 0.00301 0.00200667 0.0100333 0 +0.00602 0.00501667 0 0.00702333 0.00200667 0 0.00401333 0 +0.00501667 0.00702333 0.00200667 0.00501667 0.00200667 0.00100333 0.00200667 0.00501667 +0 0.00200667 0.00301 0.00501667 0 0.00602 0.00200667 0.00401333 +0.00200667 0.00401333 0 0.0100333 0.00200667 0.00200667 0.00802667 0.00100333 +0.00501667 0.00401333 0.00903 0.00602 0.00802667 0.00802667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.01204 0 +0.0100333 0.00802667 0 0.00301 0.00602 0.00200667 0.00200667 0.00100333 +0.00200667 0.00802667 0 0.00501667 0.00200667 0 0.0100333 0 +0 0.00702333 0 0.00501667 0.00301 0 0.00200667 0 +0.00200667 0.00501667 0.00301 0.00301 0 0 0.00401333 0.00903 +0 0.00200667 0.00301 0.00501667 0 0.00401333 0.00501667 0 +0.00200667 0.00301 0.00301 0.00501667 0.00401333 0.00200667 0.00501667 0.00200667 +0.00501667 0.00401333 0.00602 0.00802667 0.00401333 0.00501667 0.00802667 0.00702333 +0.00602 0.00903 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0.0100333 0.00200667 0.0100333 0.00100333 +0.00200667 0.00903 0 0 0.00702333 0.00301 0 0.00401333 +0.00100333 0.00802667 0 0.00200667 0.00200667 0 0.00802667 0 +0 0.00903 0.00100333 0.00100333 0.00602 0 0 0 +0.00200667 0.00401333 0.00602 0.00301 0.00301 0 0.00200667 0.00802667 +0 0.00501667 0 0.00401333 0.00100333 0 0.00501667 0 +0.00301 0 0.00501667 0.00501667 0.00100333 0.00200667 0 0.00501667 +0.00401333 0.00200667 0.00602 0.00301 0.00401333 0.00401333 0.00602 0.00200667 +0 0.00702333 0.00301 0.0130433 0.0110367 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0.00903 0 0.00401333 0.00301 0.00200667 0.0100333 0.00401333 0.00501667 +0 0.00602 0.00100333 0 0.00702333 0.00401333 0 0.00401333 +0 0.00501667 0 0.00301 0.00200667 0 0.00802667 0.00401333 +0 0.00301 0.00903 0 0.00802667 0.00401333 0 0.00301 +0.00200667 0.00501667 0.00903 0 0.00602 0 0.00501667 0.00802667 +0 0.00301 0 0.00301 0.00501667 0 0.00602 0 +0.00301 0.00100333 0.00100333 0.00501667 0 0 0 0.00301 +0.00200667 0 0.0100333 0 0.00501667 0.00401333 0.00401333 0 +0.00301 0.00100333 0.00501667 0.01204 0.00200667 0 0.00401333 0.0130433 +0.00802667 0.00401333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00401333 0.00200667 0.00200667 +0.00802667 0 0.00301 0.00401333 0.00200667 0.00301 0.00802667 0.00401333 +0 0.00401333 0 0 0.00602 0 0 0.00301 +0 0.00903 0 0.00401333 0.00100333 0 0.00501667 0.00301 +0 0.00100333 0.00702333 0 0.00602 0.00401333 0 0 +0.00401333 0.00401333 0.00702333 0 0.00602 0 0.00301 0.00501667 +0.00301 0 0 0.00301 0.00802667 0 0.00301 0.00200667 +0 0.00602 0.00100333 0.00501667 0 0 0.00200667 0.00702333 +0.00100333 0.00100333 0.00702333 0 0.00401333 0.00301 0 0 +0.00200667 0.00401333 0.00602 0.0100333 0 0 0.00401333 0.01204 +0.00200667 0.0110367 0.00200667 0.0100333 0.00802667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00903 0.00100333 0.00401333 0.00200667 0.00200667 0.00501667 0.00100333 +0.00602 0 0.00100333 0.00200667 0.00501667 0 0.01204 0 +0 0.00702333 0 0 0.0110367 0.00200667 0.00301 0.00200667 +0 0.00903 0 0 0.00301 0.00301 0.00301 0.00501667 +0 0.00200667 0.00401333 0.00100333 0.00702333 0.00401333 0 0 +0.00501667 0.00602 0.00501667 0.00200667 0.00301 0 0.00200667 0.00501667 +0.00200667 0.00100333 0.00200667 0 0.00802667 0 0.00401333 0.00100333 +0.00200667 0.00301 0.00401333 0.00501667 0 0 0.00100333 0.00501667 +0.00200667 0.00501667 0.00301 0.00301 0.00301 0.00501667 0 0.00301 +0.00100333 0.00401333 0.00401333 0.00802667 0 0 0.00401333 0.00602 +0.00401333 0.00802667 0.00200667 0.00903 0.00301 0.00501667 0.00802667 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00401333 +0.00301 0.00401333 0.00200667 0.00501667 0.00100333 0.00501667 0.00301 0.00301 +0.00401333 0.00100333 0 0.00401333 0.00401333 0.00100333 0.00501667 0.00401333 +0 0.00602 0 0 0.00802667 0.00200667 0.00100333 0 +0.00200667 0.00903 0.00100333 0 0.00301 0.00100333 0.00200667 0.00200667 +0 0.00301 0 0.00100333 0.00602 0.00602 0 0 +0.00301 0.00702333 0.00100333 0.00401333 0.00501667 0 0.00200667 0.00100333 +0.00200667 0.00100333 0.00100333 0.00100333 0.00702333 0 0.00401333 0 +0.00301 0.00100333 0.00501667 0.00100333 0 0.00301 0 0.00802667 +0 0.00602 0.00200667 0.00401333 0.00301 0.00100333 0.00100333 0.00200667 +0.00401333 0.00301 0.00501667 0.00401333 0 0 0.00602 0.00301 +0.00501667 0.00301 0.00200667 0.00602 0.00301 0.00301 0.00401333 0.00702333 +0.00200667 0.0110367 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00602 0.00401333 0.00501667 0.00702333 +0 0.00602 0.00100333 0.00702333 0 0.00301 0 0.00200667 +0.00602 0 0 0.00100333 0.00602 0.00501667 0 0.00702333 +0 0.00401333 0 0 0.00301 0.00301 0.00401333 0.00200667 +0 0.00401333 0.00602 0 0.00200667 0.00301 0 0.00100333 +0.00100333 0.00100333 0 0 0.00401333 0.00301 0 0 +0.00501667 0.00602 0 0.00401333 0.00501667 0 0.00301 0 +0.00100333 0.00301 0 0 0.00401333 0 0.00401333 0 +0.00100333 0.00301 0.00200667 0 0 0.00301 0 0.00802667 +0 0.00602 0.00100333 0.00602 0.00301 0 0.00100333 0.00401333 +0.00100333 0.00802667 0.00200667 0.00602 0 0.00200667 0.00602 0 +0.00301 0.00301 0.00401333 0.00301 0.00100333 0.00100333 0 0.00501667 +0.00301 0.00501667 0.00401333 0.00903 0.00501667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00100333 0.00401333 0.00200667 0.00401333 0.00301 0.00602 +0.00200667 0 0.00401333 0.00200667 0.00401333 0 0 0.00301 +0.00501667 0.00301 0 0 0.00702333 0.00903 0 0.00301 +0 0.00602 0 0.00200667 0 0.00301 0.00401333 0.00200667 +0 0.00401333 0.00802667 0 0.00301 0.00301 0 0 +0.00401333 0 0 0 0.00802667 0.00200667 0 0 +0.00301 0.00401333 0 0.00301 0.00702333 0 0 0.00100333 +0.00301 0 0.00200667 0.00100333 0.00301 0 0.00301 0 +0 0.00501667 0 0 0 0.00100333 0.00100333 0.00702333 +0 0.00401333 0.00100333 0.00702333 0 0.00200667 0.00100333 0.00301 +0.00100333 0.00602 0 0.00501667 0 0.00301 0.00301 0.00501667 +0 0.00401333 0.00401333 0 0.00100333 0.00100333 0.00501667 0.00301 +0.00200667 0 0.00501667 0.00702333 0.00401333 0.00501667 0.00903 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0.00501667 0.00301 0.00401333 0.00200667 0.00501667 0.00100333 0.00501667 0.00401333 +0.00200667 0.00100333 0.00100333 0.00200667 0.00401333 0.00401333 0.00301 0.00100333 +0.00501667 0.00501667 0 0 0.00401333 0.00802667 0 0 +0.00602 0.00301 0 0.00602 0 0.00401333 0 0.00602 +0 0.00100333 0.00401333 0 0 0.00602 0.00200667 0 +0.00702333 0 0.00301 0 0.00802667 0.00301 0 0 +0.00602 0.00100333 0.00100333 0.00200667 0.00802667 0 0.00100333 0 +0.00301 0 0.00501667 0.00401333 0.00100333 0.00100333 0 0.00100333 +0 0.00401333 0 0.00200667 0.00100333 0 0.00401333 0.00200667 +0.00200667 0.00301 0.00401333 0.00401333 0 0.00100333 0.00200667 0.00200667 +0.00301 0.00401333 0 0.00100333 0.00401333 0.00501667 0.00100333 0.00501667 +0 0.00702333 0.00702333 0 0.00100333 0.00200667 0.00401333 0.00100333 +0.00301 0 0.00702333 0.00200667 0 0.00602 0.0100333 0.00100333 +0.00401333 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0.00903 0.00501667 +0.00200667 0.00100333 0.00401333 0 0.00200667 0.00200667 0.00401333 0.00602 +0 0.00200667 0.00301 0.00501667 0.00100333 0 0.00301 0.00501667 +0 0.00100333 0.00200667 0 0 0.0100333 0.00401333 0 +0 0.00200667 0.00200667 0.00501667 0 0 0 0.00602 +0 0.00501667 0.00200667 0.00100333 0 0.00301 0.00100333 0 +0.00501667 0 0.00401333 0 0.00301 0.00501667 0 0.00100333 +0.00602 0 0.00301 0.00200667 0.00401333 0 0 0 +0.00401333 0 0.00401333 0.00501667 0 0.00301 0.00100333 0.00100333 +0 0.00602 0 0.00200667 0.00200667 0 0.00702333 0 +0.00501667 0.00200667 0.00301 0.00301 0 0.00401333 0 0.00401333 +0 0.00602 0 0 0.00501667 0.00301 0 0.00602 +0 0.00602 0.00200667 0.00200667 0.00100333 0.00501667 0.00100333 0 +0.00702333 0 0.00401333 0.00200667 0 0.00802667 0.00301 0.00200667 +0.00401333 0.00501667 0.00802667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00702333 0.00501667 0 0.00200667 0.00903 +0 0.00100333 0.00301 0 0.00200667 0 0.00501667 0.00602 +0.00100333 0 0.00702333 0.00401333 0.00301 0.00100333 0.00100333 0.00802667 +0 0.00100333 0.00401333 0 0 0.00702333 0.00301 0.00100333 +0 0 0.00702333 0 0 0.00301 0 0.00602 +0.00100333 0.00200667 0 0.00401333 0 0.00200667 0 0.00100333 +0.00501667 0 0.00200667 0.00200667 0 0.00501667 0 0.00100333 +0.00501667 0.00100333 0.00200667 0.00602 0 0.00602 0 0 +0.00501667 0 0.00401333 0.00501667 0 0.00200667 0.00401333 0 +0 0.00903 0 0 0 0.00100333 0 0 +0.00301 0.00100333 0.00301 0 0 0.00301 0 0.00301 +0 0.00501667 0 0.00301 0.00301 0 0 0.00301 +0.00602 0 0.00301 0.00100333 0 0.00200667 0.00200667 0.00100333 +0.00802667 0 0.00200667 0 0.00200667 0.00501667 0.00401333 0 +0.00401333 0.00401333 0.00802667 0.00200667 0.0100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0 0.00501667 0.00602 0 0 0.00802667 +0.00301 0 0.00501667 0 0.00200667 0.00100333 0.00702333 0.00301 +0 0 0.00401333 0.00100333 0.00903 0 0 0.00903 +0 0.00100333 0.00200667 0.00200667 0 0.00401333 0 0.00903 +0 0 0.0140467 0 0 0.00200667 0 0.00501667 +0.00501667 0.00301 0 0.00602 0.00200667 0.00401333 0 0 +0.00501667 0 0 0 0 0 0 0.00200667 +0.00401333 0.00501667 0.00100333 0.00401333 0 0.00401333 0 0 +0.00501667 0 0.00401333 0.00100333 0.00200667 0.00100333 0.00301 0 +0 0.00702333 0.00100333 0 0.00401333 0 0.00100333 0.00401333 +0.00401333 0.00100333 0.00200667 0 0 0.00301 0 0.00200667 +0.00100333 0.00301 0 0.00301 0.00401333 0 0 0.00802667 +0.00200667 0 0.00501667 0.00501667 0 0.00301 0.00501667 0 +0.00903 0 0.00501667 0.00100333 0.00501667 0.00301 0.00602 0 +0.00200667 0.00602 0 0.00802667 0.00802667 0 0.00702333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00702333 +0.00401333 0.00702333 0 0.00401333 0.00602 0.00301 0 0.00200667 +0.00200667 0.00501667 0.00501667 0 0.00100333 0.00100333 0.00401333 0.00802667 +0 0 0.00301 0 0.00401333 0.00401333 0 0.00501667 +0 0.00501667 0 0.00200667 0.00200667 0 0 0.00501667 +0.00602 0 0.0100333 0 0.00200667 0.00100333 0 0.00100333 +0.00903 0 0 0.00702333 0 0.00100333 0 0 +0.00401333 0 0 0 0.00200667 0 0 0.00301 +0 0.00401333 0.00301 0.00200667 0.00100333 0.00100333 0 0 +0.00501667 0.00100333 0 0.00100333 0.00100333 0.00100333 0.00301 0 +0 0.00401333 0.00401333 0 0.00501667 0 0.00401333 0.00401333 +0.00200667 0.00602 0 0.00200667 0.00501667 0 0.00301 0 +0 0 0.00200667 0 0.00401333 0.00100333 0 0.00602 +0 0.00100333 0.00200667 0.00702333 0 0.00602 0.00200667 0.00501667 +0.00401333 0 0.00301 0.00301 0.00301 0.00602 0.00200667 0 +0.00200667 0.00401333 0 0.0100333 0 0 0.00501667 0.00602 +0.00501667 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0 +0.00802667 0.00401333 0.00301 0.00100333 0.00401333 0.00301 0.00100333 0.00100333 +0.00602 0 0.00501667 0 0.00301 0 0 0.00903 +0 0.00301 0.00401333 0.00401333 0 0.00602 0 0.00301 +0.00100333 0.00200667 0.00401333 0 0.0100333 0 0.00100333 0 +0.00802667 0.00200667 0.00301 0 0 0.00301 0 0 +0.0100333 0 0.00200667 0.00401333 0.00200667 0 0.00100333 0 +0 0.00401333 0 0.00301 0 0 0.00301 0.00200667 +0.00301 0.00301 0.00200667 0.00200667 0 0 0 0 +0.00401333 0.00401333 0 0.00100333 0.00301 0.00200667 0 0 +0 0.00200667 0.00602 0 0.00100333 0 0.00200667 0.00501667 +0.00200667 0.00200667 0 0.00501667 0.00301 0 0.00401333 0 +0.00200667 0.00401333 0 0.00602 0 0 0 0.00501667 +0 0.00200667 0.00100333 0.00200667 0 0.0110367 0 0.00200667 +0.00401333 0 0.00301 0.00702333 0.00301 0.00702333 0 0.00100333 +0.00200667 0.00200667 0.00602 0.00602 0 0 0.00602 0.00501667 +0.00301 0.00301 0.00602 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00802667 0.00401333 0 0 +0.00602 0.00401333 0 0.00401333 0.00301 0.00100333 0.00401333 0.00401333 +0.00301 0 0.00903 0.00100333 0.00100333 0.00401333 0 0.00401333 +0 0.00301 0 0.00200667 0.00100333 0.00401333 0.00100333 0.00200667 +0 0.00401333 0 0.00501667 0.00200667 0 0 0 +0.00200667 0.00602 0.00501667 0 0.00401333 0.00301 0 0.00100333 +0.00501667 0 0.00100333 0 0.00702333 0 0 0.00100333 +0 0.00501667 0 0.00100333 0 0 0.00501667 0 +0.00301 0.00501667 0.00401333 0.00401333 0 0 0.00200667 0 +0.00702333 0.00401333 0 0 0.00501667 0.00100333 0.00100333 0 +0 0.00401333 0.00702333 0 0 0 0.00200667 0.00200667 +0.00301 0 0 0.00501667 0 0 0.00200667 0 +0.00401333 0.00200667 0.00100333 0.00802667 0 0 0.00200667 0.00200667 +0.00100333 0 0.00100333 0 0.00100333 0.00602 0.00200667 0 +0.00301 0 0.00401333 0.00802667 0.00301 0.00200667 0 0 +0 0.00301 0.00903 0 0 0.00100333 0.00501667 0.00501667 +0.00200667 0.00301 0.00401333 0.00501667 0.00602 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00100333 0.00802667 0.0110367 0 0 +0 0.00903 0 0.00401333 0.00401333 0.00501667 0 0.00301 +0.00301 0.00401333 0.00100333 0.00100333 0 0 0.00301 0 +0 0.00401333 0 0.00602 0 0.00100333 0 0.00501667 +0 0.00301 0 0.00200667 0.00602 0 0 0.00200667 +0 0.00301 0.00602 0 0.00100333 0.00100333 0 0.00200667 +0.00100333 0.00501667 0 0 0.00401333 0 0.00301 0 +0 0.00200667 0.00401333 0.00100333 0.00100333 0 0.00301 0 +0 0.00501667 0.00301 0.00100333 0.00100333 0 0.00602 0 +0.00301 0.00401333 0 0 0.00401333 0.00301 0 0.00100333 +0 0.00702333 0.00301 0 0.00100333 0 0.00401333 0.00200667 +0.00501667 0 0.00200667 0.00301 0 0.00100333 0 0 +0.00200667 0 0.00100333 0.00602 0 0 0.00702333 0 +0.00200667 0 0 0.00301 0 0.00301 0.00100333 0 +0 0 0.00602 0.0100333 0 0.00301 0.00100333 0.00501667 +0 0.0130433 0 0.00100333 0 0.00401333 0.00501667 0.00200667 +0 0.00100333 0.00903 0 0.00501667 0.00602 0.00301 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00702333 0.00301 0.00100333 0.00501667 0.00401333 0.0110367 0.00301 0 +0 0.00802667 0.00100333 0 0.00100333 0.00702333 0.00100333 0.00100333 +0.00301 0.00200667 0.00200667 0.00200667 0.00200667 0 0.00401333 0 +0 0.00301 0 0.00802667 0 0.00501667 0 0.00301 +0.00301 0 0.00200667 0 0.00602 0.00401333 0 0.00100333 +0 0.00501667 0.00200667 0 0.00100333 0.00100333 0.00200667 0.00100333 +0 0.00602 0.00401333 0 0.00401333 0 0.00200667 0 +0.00100333 0.00401333 0.00100333 0 0 0 0 0 +0.00200667 0.00501667 0.00200667 0 0.00301 0 0.00301 0 +0.00301 0.00602 0 0.00200667 0.00100333 0.00602 0 0.00301 +0 0.00501667 0 0 0.00100333 0 0.00501667 0.00301 +0.00200667 0 0.00802667 0 0 0.00401333 0 0.00301 +0.00200667 0 0.00301 0.00401333 0 0 0.00602 0 +0.00903 0 0.00200667 0.00200667 0 0.00802667 0.00100333 0 +0 0.00100333 0.00301 0.00301 0 0.00200667 0.00301 0 +0 0.0100333 0 0.00501667 0 0.00602 0.00100333 0.00602 +0 0.00501667 0.00802667 0.00501667 0.00401333 0 0.00802667 0 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0.00401333 0.00802667 0 0.00501667 0 0.00501667 0.0110367 0 +0 0 0.00602 0 0.00301 0.00200667 0.00702333 0 +0.00200667 0.00200667 0.00401333 0 0.00501667 0 0.00100333 0.00200667 +0 0.00100333 0 0.00501667 0.00501667 0 0 0 +0.00903 0 0.00401333 0 0 0.00903 0 0 +0 0.00802667 0 0 0 0 0.00401333 0 +0.00200667 0 0.00802667 0 0 0 0.00401333 0 +0 0.00501667 0 0 0.00100333 0.00100333 0 0 +0.00301 0.00501667 0 0.00100333 0.00301 0.00200667 0 0 +0.00100333 0.00401333 0 0.00501667 0 0.00100333 0 0.00200667 +0.00200667 0.00401333 0 0.00301 0 0 0.00301 0.00200667 +0.00200667 0 0.00903 0 0 0.00602 0 0.00200667 +0.00100333 0 0.0100333 0 0 0 0.00401333 0 +0.00602 0 0.00100333 0 0 0.00802667 0.00301 0 +0.00301 0.00401333 0 0.00100333 0.00301 0.00301 0 0 +0.00602 0.00200667 0.00200667 0.00100333 0.00401333 0.00301 0 0.00802667 +0 0.00702333 0.00401333 0.00401333 0.00200667 0.00100333 0.00100333 0.00501667 +0.00903 0.00602 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00702333 0.00602 0 +0.00702333 0.00301 0.00401333 0 0.00401333 0 0.00702333 0.00200667 +0 0 0.00401333 0.00100333 0 0.00200667 0.00200667 0.00401333 +0 0.00501667 0.00301 0 0.00301 0.00200667 0 0.00301 +0 0.00301 0 0.00602 0.00100333 0.00100333 0 0.00200667 +0.00501667 0 0 0.00501667 0 0.00200667 0.00501667 0 +0.00200667 0.00401333 0 0.00401333 0 0.00301 0 0 +0.00301 0 0.00602 0.00100333 0 0.00100333 0 0 +0.00200667 0.00501667 0 0 0.00401333 0 0 0 +0 0.00501667 0 0.00401333 0.00301 0.00401333 0 0 +0.00301 0.00401333 0 0.00602 0 0 0.00100333 0 +0.00501667 0.00200667 0 0.00200667 0 0.00501667 0.00100333 0.00100333 +0 0.00301 0.00100333 0 0.00401333 0.00501667 0 0 +0.00301 0.00100333 0.00802667 0 0 0 0.00301 0 +0.00602 0 0 0.00100333 0.00501667 0.00602 0 0 +0.00602 0 0 0.00301 0.00702333 0 0 0.00401333 +0 0.00602 0.00401333 0 0.00702333 0 0.00301 0.00501667 +0 0.00301 0.00200667 0.00200667 0.00200667 0.00200667 0.00301 0 +0.01204 0.00200667 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00702333 0.00802667 0.00301 0.00401333 +0 0.00702333 0.00200667 0.00301 0 0.00602 0.00301 0.00602 +0.00602 0 0 0.00100333 0 0.00401333 0 0.00100333 +0 0.00401333 0.00501667 0 0 0.00200667 0.00501667 0 +0 0.00100333 0 0 0.00100333 0.00301 0.00100333 0 +0.00702333 0 0 0.00301 0.00100333 0 0.00100333 0.00200667 +0 0.00401333 0 0.00100333 0.00100333 0 0.00200667 0 +0.00501667 0 0.00301 0 0.00301 0 0.00100333 0 +0.00802667 0.00301 0 0 0.00301 0 0.00301 0 +0 0.00401333 0 0.00100333 0 0.00401333 0 0 +0.00702333 0 0.00401333 0.00301 0 0 0 0.00501667 +0.00501667 0 0 0 0 0.00802667 0 0.00100333 +0.00401333 0.00501667 0 0.00501667 0 0.00501667 0 0.00401333 +0.00301 0 0.00602 0 0 0.00100333 0.00301 0 +0.00401333 0 0 0.00301 0.00501667 0 0 0.00100333 +0.00903 0 0.00702333 0 0.00401333 0 0 0.00501667 +0 0.00200667 0.00200667 0 0.00802667 0 0.00802667 0.00301 +0.00200667 0 0.00702333 0 0.00702333 0 0.00100333 0.00301 +0.00702333 0 0 0.00501667 0.00602 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00702333 0 0.00301 0.00602 0.00200667 0.00401333 +0.00100333 0.00200667 0.00301 0.00301 0.00200667 0.00100333 0.00301 0.00200667 +0.00100333 0.00501667 0 0.00100333 0 0.00200667 0 0.00702333 +0.00100333 0 0.00501667 0.00401333 0 0 0.00501667 0 +0 0 0.00100333 0 0.00401333 0.00301 0 0 +0.0100333 0 0 0.00200667 0.00301 0 0 0.00100333 +0.00401333 0.00200667 0 0 0.00401333 0 0.00200667 0 +0.00200667 0.00200667 0.00401333 0.00100333 0 0.00802667 0 0 +0.00501667 0.00301 0 0.00100333 0.00301 0 0 0.00301 +0 0 0 0 0.00602 0.00401333 0 0 +0.00100333 0.00100333 0.00602 0 0 0 0 0.00602 +0.00200667 0 0.00100333 0 0.00100333 0.00903 0 0.00301 +0.00501667 0 0 0.00200667 0 0 0 0.00602 +0.00200667 0 0.0110367 0 0 0 0.0110367 0 +0 0 0 0.00602 0 0 0.00100333 0.00200667 +0.00100333 0 0.00501667 0 0.00401333 0 0 0.00100333 +0.00501667 0 0.00401333 0 0.00100333 0 0.00903 0.00200667 +0 0 0.00702333 0.00301 0.00501667 0 0.00401333 0.00301 +0.00501667 0 0.00702333 0.00100333 0.0100333 0.00100333 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00702333 0 0.00501667 0 0.00401333 0 +0.00501667 0.00301 0.00401333 0 0.00702333 0 0.00401333 0 +0 0.00702333 0.00200667 0.00100333 0.00100333 0 0.00501667 0.00200667 +0.00301 0 0.00401333 0.00602 0 0.00100333 0.00200667 0.00100333 +0.00100333 0 0.00401333 0 0 0.00702333 0.00200667 0 +0.00802667 0.00401333 0 0 0.00100333 0.00100333 0 0 +0.00301 0.00200667 0 0 0.00100333 0.00100333 0 0.00200667 +0.00100333 0 0.00602 0 0.00200667 0 0.00200667 0 +0 0.00501667 0 0.00501667 0.00100333 0 0 0.00200667 +0 0 0.00301 0 0.00702333 0.00100333 0 0 +0 0.00602 0.00200667 0 0.00301 0 0 0.00903 +0.00200667 0 0 0.00501667 0 0.0110367 0 0.0110367 +0.00100333 0 0.00200667 0 0.00501667 0 0.00501667 0 +0.00100333 0 0.00702333 0 0 0 0.00702333 0 +0.00301 0.00401333 0 0.00602 0 0 0.00100333 0.00301 +0 0.00100333 0.00501667 0 0 0.00401333 0 0 +0.00903 0 0 0.00301 0.00200667 0.00401333 0 0.00200667 +0 0.00401333 0.00100333 0.00602 0.00100333 0.00100333 0.00501667 0 +0 0 0.00802667 0.00401333 0.00702333 0 0.00802667 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00100333 0.00301 0.00200667 0.00501667 0.00100333 0 0 0.00702333 +0.00200667 0.00301 0.00200667 0.00401333 0.00602 0.00100333 0 0 +0 0.00301 0.00501667 0.00301 0 0 0 0.00100333 +0.00100333 0 0 0.00501667 0.00401333 0 0.00501667 0.00200667 +0 0 0.00702333 0 0 0.00401333 0.00501667 0 +0 0.00602 0 0 0 0.00401333 0.00200667 0 +0.00301 0.00200667 0 0.00501667 0 0.00200667 0 0.00301 +0.00501667 0.00100333 0.00200667 0 0.00802667 0 0.00200667 0.00200667 +0 0 0.00200667 0.00100333 0.00200667 0.00100333 0 0 +0.00301 0 0.00200667 0 0.00401333 0.00401333 0.00200667 0 +0 0.00903 0 0.00200667 0.00200667 0 0 0.00200667 +0.00200667 0.00301 0 0.00802667 0.00100333 0 0 0.00802667 +0 0 0.00200667 0 0.00301 0 0.00100333 0 +0.00100333 0 0.00100333 0.00301 0 0.00702333 0 0 +0.00702333 0.00501667 0 0.00301 0 0 0.00802667 0 +0 0.00100333 0 0 0.00401333 0.00702333 0 0 +0.01204 0 0.00100333 0.00100333 0.00702333 0 0 0 +0.00401333 0 0.00301 0.00802667 0 0.00802667 0 0 +0.00501667 0 0.00301 0.00501667 0.00401333 0 0.00802667 0.00501667 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.01204 +0.00602 0 0 0.00602 0.00301 0.00200667 0 0.00903 +0 0.00200667 0.00501667 0 0.00401333 0.00401333 0 0 +0.00301 0.00100333 0.00501667 0 0.00401333 0.00301 0 0.00501667 +0 0.00100333 0 0 0.00802667 0 0.00301 0.00100333 +0.00200667 0 0.00501667 0 0 0 0.00401333 0 +0.00702333 0 0.00501667 0 0 0.00100333 0.00301 0 +0.00301 0 0 0.00702333 0 0 0 0.00401333 +0.00100333 0.00401333 0 0 0.00602 0 0 0.00802667 +0 0 0.00401333 0.00301 0 0.00501667 0 0 +0 0.00200667 0.00501667 0 0.00200667 0.00401333 0 0 +0 0.00903 0 0.00501667 0 0 0.00200667 0 +0.00100333 0.00200667 0 0.00802667 0 0 0.00301 0.00200667 +0.00200667 0 0 0.00100333 0 0.01204 0 0 +0.00301 0 0.00200667 0.00301 0 0.00200667 0 0 +0.00702333 0 0 0.00200667 0 0.00501667 0.00802667 0 +0 0.00301 0 0 0.00702333 0 0 0.00702333 +0.00702333 0 0 0.00802667 0 0 0.00100333 0.00602 +0 0 0.00602 0 0.00501667 0.00200667 0 0.00602 +0.00802667 0 0.00903 0.00100333 0.00501667 0 0.00401333 0.00301 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0 0.00602 +0.00802667 0.00501667 0 0 0.00602 0.00200667 0 0.00100333 +0.00401333 0 0.00401333 0 0.00200667 0.00501667 0.00100333 0.00100333 +0 0 0.0100333 0 0 0.00602 0 0 +0.00301 0 0 0 0.00602 0.00200667 0 0 +0.00702333 0 0.00903 0 0 0.00100333 0 0 +0.00702333 0 0.00802667 0 0 0.00401333 0.00100333 0 +0.00100333 0 0 0.00401333 0.00401333 0 0 0.00401333 +0.00100333 0.00401333 0 0.00200667 0.00301 0 0 0.00802667 +0 0 0.00200667 0.00602 0 0.00401333 0 0 +0 0 0.00501667 0.00200667 0.00301 0.00200667 0 0.00200667 +0 0.00100333 0.00401333 0 0.00100333 0 0.00401333 0 +0 0 0.00501667 0.00301 0 0.00200667 0 0.00301 +0 0 0.00401333 0 0.00301 0.0100333 0 0.00100333 +0.00501667 0.00301 0 0.00100333 0.00200667 0 0 0.00301 +0.00903 0 0 0.00100333 0 0.00602 0.00100333 0 +0.00200667 0 0.00301 0 0.00903 0 0 0.00401333 +0.00702333 0 0 0.00802667 0 0 0.00200667 0.00702333 +0 0.00200667 0 0 0.00401333 0.00301 0 0.00702333 +0.00200667 0 0.0100333 0 0 0.00702333 0.00602 0.00401333 +0 0 0.00602 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0100333 0 0 0.00301 +0.00702333 0.00301 0.00802667 0 0.00401333 0.00301 0.00301 0 +0.00301 0.00200667 0 0.00200667 0 0.00301 0.00702333 0 +0.00100333 0 0.00100333 0.0110367 0 0.00301 0.00301 0 +0.00602 0 0 0.00100333 0 0.00702333 0 0.00200667 +0.00401333 0 0.00702333 0 0 0 0 0.00301 +0.00200667 0 0.00301 0.00301 0 0.00401333 0 0.00401333 +0 0 0.00200667 0 0.00903 0 0 0.00401333 +0 0.00401333 0 0.00200667 0.00100333 0 0 0.00301 +0 0 0.00200667 0 0.00301 0.00200667 0 0 +0 0 0.00200667 0.00602 0.00200667 0 0 0.00100333 +0.00301 0 0.0110367 0 0 0.00501667 0.00200667 0 +0 0 0.00802667 0 0.00100333 0.00301 0 0 +0 0.00301 0 0 0.00903 0.00100333 0 0 +0.00602 0.00200667 0 0 0.00301 0 0 0.00301 +0.00602 0 0 0 0.00602 0.00401333 0 0.00100333 +0 0 0.00501667 0 0.00301 0 0.00401333 0 +0.00501667 0 0 0.00602 0 0 0.00301 0.00200667 +0 0.00200667 0.00301 0 0.00501667 0 0 0.00903 +0 0.00301 0.00702333 0 0 0.00802667 0.00401333 0 +0.00200667 0.00100333 0.00301 0.00602 0.00501667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00602 0.00401333 0.00501667 0.00602 0 0 +0.00501667 0.00200667 0.00401333 0.00200667 0 0.00702333 0.00301 0 +0.00100333 0.0100333 0 0.00501667 0 0.00301 0.0110367 0 +0.00301 0 0 0.00903 0 0 0 0 +0.00301 0.00200667 0 0.00200667 0 0.0100333 0 0 +0 0 0.00702333 0 0 0 0 0.00802667 +0 0.00301 0.00200667 0.00501667 0 0.00100333 0.00301 0 +0.00401333 0 0.00301 0 0.00301 0.00301 0 0.00200667 +0 0.00100333 0 0.00401333 0 0.00401333 0 0 +0 0 0 0 0.00501667 0.00401333 0 0.00200667 +0 0 0.00100333 0.00702333 0 0 0.00301 0 +0.00401333 0 0.00602 0 0 0.00501667 0.00401333 0 +0.00100333 0 0.00702333 0.00100333 0.00301 0.00200667 0 0 +0 0.00602 0 0 0.00702333 0 0 0 +0.00100333 0.00501667 0 0.00401333 0 0 0.00100333 0 +0.00501667 0 0 0.00602 0.00100333 0.00301 0 0 +0.00100333 0 0.00301 0 0 0.00401333 0.00301 0 +0.00602 0 0.00401333 0.00200667 0 0 0.00903 0 +0 0.00301 0.00200667 0.00301 0.00401333 0 0.00802667 0 +0.00501667 0.00301 0.00100333 0.00301 0.00301 0.00501667 0 0.00200667 +0.00200667 0 0.00802667 0 0.00802667 0.00200667 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00802667 0.00301 0.00602 0.00200667 0.00401333 0.00501667 0 +0 0.00602 0.00401333 0.00200667 0 0.00301 0.00501667 0.00501667 +0 0.00602 0.00100333 0.00301 0 0.00200667 0.00301 0.00702333 +0 0 0 0.00602 0.00802667 0 0 0.00401333 +0.00100333 0.00301 0 0.00200667 0 0.00100333 0.00401333 0.00301 +0 0 0.00702333 0 0.00301 0 0 0.00702333 +0 0.00200667 0 0.00602 0.00100333 0.00501667 0 0 +0.00401333 0 0 0 0.00401333 0.00200667 0 0.00200667 +0.00200667 0.00100333 0 0.00602 0 0 0 0.00100333 +0 0.00702333 0 0 0.00602 0.00602 0 0.00100333 +0 0 0 0.00802667 0 0.00602 0 0 +0.00401333 0.00100333 0.00100333 0.00100333 0 0.00401333 0.00200667 0 +0 0.00501667 0.00200667 0.00501667 0.00100333 0 0.00301 0 +0 0.00702333 0 0 0 0.00401333 0 0 +0.00200667 0.00301 0 0 0.00200667 0 0.00501667 0 +0.00200667 0.00200667 0 0.00702333 0 0.00100333 0 0 +0.00200667 0 0 0 0.00401333 0.00301 0 0.00501667 +0 0.00100333 0.00401333 0.00100333 0 0.00301 0 0 +0.00301 0 0.00401333 0.00100333 0.00501667 0 0.00301 0 +0.00301 0.00200667 0.00301 0 0 0.00702333 0 0.00200667 +0 0.00602 0.00200667 0.00501667 0.00301 0.00301 0.00401333 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00702333 0.00401333 0 0.00602 0.00401333 0 0.00301 0.00100333 +0.00200667 0 0.00903 0.00100333 0.00301 0 0 0.00702333 +0 0.00200667 0.00401333 0.00401333 0 0 0.00301 0.00301 +0.00301 0.00200667 0 0 0.00802667 0.00501667 0 0 +0.00401333 0.00200667 0.00301 0 0.00301 0 0.00702333 0.00301 +0 0 0.00301 0 0.00903 0 0 0 +0.00100333 0 0 0.00301 0.00200667 0 0.00200667 0 +0.00100333 0.00401333 0 0.00100333 0 0.00401333 0 0.00200667 +0.00200667 0.00401333 0 0.00401333 0 0.00100333 0 0 +0.00100333 0.00702333 0.00100333 0 0.00602 0.00301 0 0 +0.00301 0 0 0.00501667 0 0.00301 0.00100333 0.00401333 +0 0 0 0.00301 0 0.00401333 0 0 +0 0.00501667 0 0.0110367 0 0 0.00301 0 +0 0.00602 0 0.00401333 0 0.00301 0.00100333 0 +0 0.00200667 0 0 0.00301 0 0.00702333 0 +0.00301 0.00301 0 0.00200667 0.00200667 0 0 0.00401333 +0.00301 0 0 0.00100333 0.00802667 0 0 0.00200667 +0.00301 0.00100333 0 0.00401333 0 0.00401333 0 0.00301 +0.00401333 0 0.00501667 0.00100333 0.00802667 0 0 0.00903 +0 0.00401333 0 0.00501667 0 0.00301 0 0.00100333 +0.00200667 0.00100333 0.00401333 0.00401333 0.00200667 0.00100333 0.00802667 0.00301 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00802667 0.00602 0.00501667 0 0.00401333 0.00501667 0 0.00401333 +0 0.00401333 0 0.00401333 0.00200667 0.00100333 0 0.00602 +0.00903 0 0 0.00702333 0.00301 0 0.00401333 0 +0.00301 0.00401333 0 0 0 0.0100333 0.00401333 0 +0 0 0.00702333 0 0 0 0.00100333 0.00401333 +0.00100333 0 0 0 0.00903 0 0.00301 0 +0.00100333 0 0.00100333 0.00100333 0.00501667 0 0.00501667 0.00100333 +0 0.00501667 0 0.00401333 0 0.0110367 0 0 +0.00100333 0.00702333 0 0 0 0.00501667 0.00100333 0 +0.00702333 0.00301 0 0.00200667 0 0.00702333 0 0 +0.00401333 0 0.00200667 0.00200667 0.00301 0 0.00200667 0.00602 +0.00200667 0 0 0.00301 0 0.00702333 0 0 +0 0.00200667 0.00200667 0.00903 0 0 0.00702333 0 +0 0.00301 0 0.00100333 0 0 0.00301 0.00401333 +0 0.00200667 0.00100333 0.00100333 0.00100333 0 0 0 +0.00200667 0 0 0.00501667 0 0 0.00200667 0 +0.00301 0 0.00401333 0.00401333 0 0.00200667 0.00200667 0 +0.00602 0 0.00802667 0 0 0 0 0.00100333 +0.00200667 0.00301 0.00401333 0.00200667 0 0 0.00100333 0.0100333 +0 0.00301 0 0.00301 0 0.00301 0.00401333 0 +0 0.00802667 0 0.00200667 0.00401333 0.00301 0.00301 0 +0.00602 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00501667 +0.00602 0.00200667 0.00602 0 0.00200667 0.00200667 0.00501667 0 +0 0.00301 0 0.00301 0 0.0100333 0 0.00100333 +0.00100333 0.00602 0 0.00401333 0.00903 0 0 0.00100333 +0 0.0100333 0.00100333 0 0 0.00301 0.00401333 0 +0 0 0.00200667 0.00501667 0 0.00802667 0 0.00100333 +0.00401333 0.00301 0 0 0.00401333 0.00501667 0 0.00100333 +0 0 0 0.00702333 0 0 0.00100333 0.00200667 +0 0 0.00501667 0 0 0.00602 0.00702333 0 +0 0.00702333 0 0.00200667 0.00100333 0.00200667 0.00301 0 +0.00100333 0.00200667 0 0.00401333 0 0.00903 0 0.00301 +0.00200667 0 0.00100333 0 0.00100333 0.00301 0 0.00501667 +0 0 0 0.00501667 0 0.00602 0.00100333 0 +0.00301 0.00100333 0.00802667 0 0.00100333 0 0.00702333 0 +0.00100333 0.00100333 0.00301 0 0 0.00100333 0.00100333 0.00401333 +0 0.00301 0.00401333 0 0.00100333 0.00100333 0 0.00702333 +0 0 0.00301 0.00702333 0 0.00401333 0.00100333 0 +0.00501667 0 0.00702333 0 0 0.00100333 0.00401333 0 +0.00401333 0 0.00200667 0 0.00200667 0.00100333 0.00200667 0 +0.00802667 0 0.00200667 0 0 0.00100333 0.0110367 0 +0 0.00602 0 0.00501667 0 0.00301 0 0.00301 +0 0.00501667 0.00200667 0.00501667 0 0.00301 0.00401333 0.00401333 +0.00501667 0.00702333 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00200667 0.00100333 +0.00702333 0.00401333 0 0.00100333 0.00602 0.00200667 0.00301 0.00602 +0.00100333 0.00200667 0 0.00200667 0 0.00401333 0.00200667 0 +0 0.00401333 0.00401333 0 0.00401333 0.00401333 0 0 +0 0.00100333 0.00501667 0.00100333 0 0.00602 0.00100333 0.00301 +0 0.00100333 0 0.00401333 0 0 0.00802667 0 +0.00802667 0 0 0 0 0.00702333 0.00100333 0 +0 0.00401333 0 0.00501667 0 0.00301 0.00301 0 +0.00301 0 0.00301 0.00401333 0 0 0.00702333 0 +0 0.00100333 0 0 0 0.00200667 0 0 +0 0.00301 0.00100333 0.00401333 0 0.00903 0 0.00301 +0.00401333 0 0 0 0.00100333 0.00501667 0 0.00602 +0.00401333 0 0.00100333 0 0.00100333 0.00100333 0.00100333 0 +0.00401333 0 0.00702333 0 0.00401333 0 0.00501667 0 +0.00100333 0 0.00501667 0 0 0.00301 0.00200667 0.00100333 +0 0.00802667 0.00301 0 0 0.00200667 0.00702333 0.00401333 +0 0.00200667 0.00301 0.00301 0.00200667 0.00100333 0 0 +0.00200667 0 0.00602 0 0.00702333 0 0.00401333 0 +0.00200667 0 0.00200667 0.00301 0 0.00702333 0 0.00200667 +0.00501667 0 0 0 0.00702333 0.00100333 0.00200667 0 +0.00401333 0.00200667 0.00200667 0 0 0 0.00200667 0.00200667 +0.00200667 0.00401333 0.00301 0.00100333 0 0.00602 0.00100333 0.00200667 +0.00802667 0 0 0.0110367 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00301 0.00903 0.00100333 0.00100333 +0 0.00501667 0.00501667 0.00401333 0.00100333 0.00200667 0.00501667 0.00100333 +0.00200667 0 0.00301 0 0.00602 0 0.0100333 0 +0 0 0.00501667 0 0.00100333 0.00100333 0.0100333 0 +0.00301 0 0.00501667 0.00501667 0 0.00501667 0.00501667 0 +0.00100333 0.00200667 0 0.00200667 0 0 0.00903 0 +0.00200667 0.00501667 0 0 0 0.00100333 0.00702333 0 +0 0 0.00401333 0 0.00100333 0.00602 0 0 +0 0.00602 0 0.00802667 0.00100333 0 0.00301 0.00301 +0.00100333 0.00301 0 0.00200667 0 0.00602 0 0.00100333 +0 0 0.00301 0.00602 0 0.00702333 0 0.00401333 +0 0.00200667 0 0 0.00401333 0.00301 0 0.00802667 +0.00200667 0 0.00401333 0 0.00702333 0 0.00802667 0 +0.00301 0 0.00702333 0 0.00100333 0 0.00501667 0.00200667 +0 0.00200667 0 0 0.00301 0 0.00200667 0.00200667 +0 0.00301 0.00401333 0 0 0.00100333 0.00501667 0 +0 0.00301 0.00501667 0 0.00401333 0 0 0 +0.00100333 0.00301 0 0.00200667 0.00200667 0.00301 0.00200667 0 +0.00100333 0 0.00802667 0 0 0.00802667 0 0.00401333 +0 0 0 0.00200667 0 0.00501667 0 0.00200667 +0.00401333 0.00401333 0 0 0.00100333 0 0 0.00200667 +0.00301 0.00401333 0.00401333 0 0.00602 0.00401333 0 0.00903 +0 0 0.00501667 0.00903 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0110367 0.00200667 0.00802667 0 0.00200667 +0.00100333 0.00100333 0.00301 0.00301 0.00200667 0.00301 0 0.00501667 +0.00301 0.00100333 0 0 0.00301 0 0 0.00602 +0.00200667 0.00401333 0 0.00100333 0 0 0.01505 0 +0 0.00100333 0 0.00401333 0 0 0.00802667 0 +0.00100333 0 0.00602 0 0 0 0.00100333 0.00301 +0 0.00602 0 0 0 0 0.00401333 0.00702333 +0 0 0.00802667 0 0.00100333 0.00200667 0.00200667 0.00301 +0 0.00100333 0 0.0100333 0 0 0.00301 0.00100333 +0.00100333 0.00401333 0 0 0.00200667 0.00602 0.00200667 0.00200667 +0.00100333 0 0.00200667 0.00602 0 0.00301 0.00301 0 +0.00602 0 0.00200667 0.00200667 0.00200667 0.00802667 0 0.00702333 +0 0.00301 0 0 0 0.00100333 0.00602 0 +0.00501667 0.00100333 0 0.00401333 0 0.0100333 0 0.00301 +0.00200667 0 0 0 0 0 0.00802667 0 +0.00501667 0 0.00200667 0 0.00100333 0.00602 0.00100333 0 +0 0.00100333 0.00501667 0.00301 0.00200667 0 0 0 +0 0.00501667 0.00100333 0.00200667 0 0.00602 0 0 +0.00501667 0.00501667 0.00301 0 0.00301 0.00401333 0.00200667 0 +0 0.00200667 0 0.00100333 0 0.00301 0.00301 0 +0.00100333 0.00100333 0 0 0.00501667 0 0 0.00200667 +0.00200667 0.00401333 0 0.00200667 0.00401333 0 0.00301 0.00501667 +0 0.00301 0.00301 0.00802667 0.00602 0.00702333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00401333 0.00602 0.00301 0 0.00802667 0 +0.00200667 0.00100333 0.00301 0.00100333 0 0.0100333 0 0 +0.0100333 0.00100333 0.00301 0 0 0.00200667 0.00301 0.00100333 +0.00100333 0 0.00301 0.00100333 0.00100333 0 0.00602 0.0100333 +0 0 0 0.00301 0 0 0.00100333 0.00501667 +0.00301 0 0.00301 0.00602 0 0 0 0.00501667 +0 0.00401333 0 0.00401333 0 0 0.00100333 0.00501667 +0 0 0.00501667 0 0.00100333 0.00301 0.00301 0.00301 +0 0 0.00401333 0.00903 0 0.00100333 0.00702333 0 +0.00200667 0.00100333 0.00401333 0 0.00301 0.00200667 0.00301 0.00301 +0.00200667 0 0 0.00200667 0 0.00100333 0.00501667 0 +0.00501667 0 0 0.00602 0 0.00702333 0 0 +0.00501667 0 0.00401333 0 0 0.00702333 0 0.00301 +0.00401333 0.00200667 0.00100333 0.00200667 0 0.00903 0 0.00200667 +0.00301 0 0 0.00200667 0 0 0.0110367 0 +0.00100333 0 0.00200667 0.00200667 0.00301 0.00100333 0.00100333 0 +0 0.00602 0 0.00301 0 0 0 0.00702333 +0 0.00501667 0.00301 0 0 0.00802667 0 0 +0.00903 0.00301 0 0.00200667 0.00100333 0 0.00401333 0 +0.00200667 0.00301 0.00100333 0 0.00200667 0.00100333 0.00100333 0 +0.00200667 0 0 0.00301 0.00100333 0 0 0.00100333 +0.00200667 0.00401333 0 0.00301 0 0.00301 0.00200667 0 +0 0.00301 0.00802667 0.00903 0.00401333 0.00200667 0.0110367 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00602 0.00702333 0.00301 0.00200667 0.00200667 0.00100333 +0.00401333 0 0.00501667 0.00501667 0 0.00401333 0.00401333 0 +0 0.00602 0.00200667 0 0.00100333 0 0 0.00100333 +0 0.00301 0.00301 0 0.00602 0 0 0 +0.00401333 0 0.00100333 0.00301 0 0.00401333 0 0.00702333 +0.00501667 0 0 0 0.00100333 0.00501667 0 0 +0.00702333 0 0 0.00602 0.00200667 0 0.00100333 0 +0 0.00200667 0.00401333 0.00100333 0 0.00702333 0.00100333 0.00401333 +0.00100333 0 0.00501667 0.00903 0 0 0.00501667 0.00100333 +0 0.00100333 0.00802667 0 0.00301 0.00301 0.00200667 0 +0.00702333 0 0 0 0.00501667 0 0.00401333 0.00200667 +0 0 0 0.00401333 0 0.00501667 0 0 +0.00702333 0 0.00301 0 0 0.00301 0.00100333 0.00702333 +0 0.00301 0.00200667 0 0.00501667 0.00200667 0.00602 0 +0.00301 0 0.00100333 0 0.00200667 0 0.00100333 0.00501667 +0 0 0.00100333 0 0.00401333 0.00100333 0.00200667 0 +0.00200667 0.00301 0 0 0.00301 0 0 0.00100333 +0 0.00501667 0.00100333 0 0.00501667 0.00200667 0 0 +0.00702333 0.00100333 0 0.00501667 0 0.00501667 0 0 +0.00702333 0.00100333 0.00200667 0 0 0.00200667 0.00602 0 +0 0 0 0.00100333 0.00100333 0.00200667 0.00301 0 +0.00802667 0.00602 0 0 0.00501667 0.00602 0 0 +0.00200667 0.00401333 0.00903 0.00501667 0 0.01204 0.00501667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00501667 0 0 0.00401333 0.00702333 0.00401333 0.00100333 0.00100333 +0 0.00301 0 0.00702333 0 0.00301 0.00301 0.00100333 +0 0.00401333 0.00501667 0.00301 0 0.00301 0 0.00200667 +0 0.00602 0.00401333 0.00301 0 0.00100333 0 0.00100333 +0.00301 0 0.00301 0.00401333 0 0 0 0 +0.01204 0.00200667 0 0 0 0.00903 0 0 +0.00401333 0 0 0 0.00903 0.00301 0 0.00301 +0 0.00702333 0.00301 0 0 0.00401333 0.00100333 0.00802667 +0 0 0.00100333 0.00802667 0.00100333 0 0.00401333 0.00200667 +0.00100333 0 0.00802667 0 0.00301 0.00401333 0 0 +0.00702333 0.00200667 0 0 0.00802667 0 0 0.00702333 +0 0 0.00200667 0 0.00401333 0 0 0 +0.00501667 0 0.00200667 0.00100333 0 0 0.00200667 0.00903 +0 0 0.00501667 0 0.00301 0 0.00602 0 +0.00501667 0 0.00200667 0 0.00602 0.00200667 0.00200667 0 +0 0.00200667 0.00702333 0 0.00903 0 0 0.00100333 +0.00200667 0.00100333 0.00301 0 0 0.00702333 0 0 +0.00301 0.00501667 0 0 0.00602 0.00100333 0 0.00401333 +0.00200667 0.00200667 0.00100333 0.00200667 0.00200667 0 0 0.00100333 +0.00802667 0.00401333 0 0 0 0.00702333 0.00100333 0 +0.00200667 0.00100333 0 0.00100333 0 0.00200667 0 0.00602 +0.00602 0 0 0 0.00602 0 0 0.00301 +0.00200667 0.00903 0.00802667 0 0.00401333 0.00702333 0 0.00200667 +0.0140467 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00702333 +0.00702333 0 0 0 0.00702333 0.00301 0.00602 0.00301 +0.00301 0 0 0 0.00702333 0 0.00602 0.00301 +0.00301 0 0 0.00301 0.00301 0 0 0.00100333 +0.00200667 0 0.00501667 0.0100333 0 0.00200667 0 0.00200667 +0 0.00501667 0 0.00401333 0.00200667 0 0.00100333 0 +0 0.0110367 0 0 0 0.00100333 0.00501667 0 +0.00100333 0.00501667 0 0 0.00501667 0.00602 0 0 +0 0.00200667 0.00702333 0 0 0 0 0.00903 +0 0.00200667 0 0.00100333 0.00401333 0.00501667 0 0 +0.00100333 0 0.00301 0 0 0.00401333 0.00301 0 +0 0.00401333 0 0 0.00200667 0.00702333 0 0.00602 +0.00100333 0 0.00200667 0 0.00702333 0 0 0.00301 +0.00501667 0 0.00301 0.00100333 0.00100333 0 0.00602 0.00301 +0 0 0.00200667 0 0.00100333 0 0.00200667 0.00100333 +0 0 0.00200667 0 0.00602 0 0.00401333 0 +0.00100333 0.00200667 0.00401333 0 0.00602 0 0.00100333 0 +0.00100333 0 0.00401333 0 0.00401333 0.00301 0 0.00401333 +0.00100333 0 0 0.00100333 0.00602 0 0 0.00200667 +0.00602 0 0.00200667 0.00501667 0 0 0 0.00802667 +0.00602 0 0 0.00401333 0.00301 0.00301 0 0 +0.00301 0.00100333 0.00200667 0.00401333 0 0.00100333 0.00100333 0.00702333 +0.00401333 0 0 0 0.00802667 0 0 0.00100333 +0.00501667 0.00702333 0 0 0.00903 0 0 0.00602 +0.00702333 0.00501667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00802667 0.00702333 +0.00802667 0.00501667 0 0 0 0.00602 0.00200667 0.00501667 +0.00100333 0.00903 0 0 0.00100333 0.00100333 0.00200667 0.00602 +0.00501667 0.00501667 0 0 0 0 0.00100333 0 +0.00602 0 0 0.00200667 0.00602 0 0 0.00100333 +0 0.00301 0 0.00100333 0.00100333 0.00200667 0 0.00501667 +0 0.00702333 0.00301 0 0.00100333 0.00602 0 0.00100333 +0 0.00501667 0.00301 0 0 0.00200667 0.00903 0 +0 0 0.00200667 0.00200667 0.00802667 0 0 0.00200667 +0.00200667 0.00702333 0 0 0.00301 0.00802667 0 0.00301 +0 0 0 0.00602 0 0.00602 0.00401333 0 +0 0.00200667 0 0 0.00401333 0.00501667 0 0.00100333 +0.00100333 0 0 0.00100333 0.00802667 0 0 0.00401333 +0.00100333 0 0 0.00702333 0 0 0.00602 0 +0.00200667 0 0.00602 0 0 0 0.00200667 0 +0 0 0 0 0.00501667 0 0.00301 0 +0.00200667 0 0.00301 0.00200667 0.00200667 0.00401333 0 0 +0 0.00401333 0.00100333 0 0.00301 0 0 0.00301 +0.00401333 0 0.00200667 0.00301 0.00602 0 0 0.00702333 +0.00200667 0 0.00301 0 0 0 0.00401333 0.00602 +0.00501667 0 0 0.00100333 0 0 0 0.00200667 +0.00100333 0.00200667 0 0.00200667 0 0 0.00100333 0.00501667 +0 0.00100333 0 0.00702333 0 0 0.00200667 0 +0.00301 0.00100333 0 0.00401333 0.00301 0 0.00401333 0.00602 +0 0.00602 0.00602 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0.00200667 0 0.00301 +0.00702333 0.00702333 0.00200667 0 0 0 0.00501667 0 +0 0.00802667 0.00301 0 0.00100333 0 0.00200667 0.00200667 +0 0.00602 0.00301 0.00501667 0 0 0.00602 0 +0.00100333 0.00100333 0.00200667 0 0.00802667 0.00200667 0 0 +0.00200667 0 0.00802667 0 0 0.00100333 0 0 +0.00602 0 0.00602 0.00301 0 0.00802667 0.00301 0 +0 0.00200667 0.00301 0.00200667 0 0 0.00401333 0.00200667 +0.00200667 0.00301 0 0.00401333 0.00501667 0 0 0 +0.00200667 0.00802667 0 0 0 0.0110367 0 0.00802667 +0 0.00301 0 0.00602 0 0.00100333 0.00602 0 +0.00100333 0.00401333 0 0 0.00301 0 0 0.00501667 +0 0 0 0.00401333 0.00602 0 0 0 +0.00602 0 0.00100333 0.00100333 0.00501667 0 0.00401333 0 +0.00301 0 0.00903 0 0 0.00602 0.00200667 0 +0.00602 0 0.00200667 0 0.00401333 0 0.00501667 0 +0.00401333 0 0.00200667 0.00200667 0 0.00501667 0.00301 0 +0 0.00501667 0.00200667 0 0.00100333 0 0.00301 0 +0.00200667 0.00401333 0 0.00301 0.00401333 0 0.00802667 0 +0.00501667 0 0.00501667 0 0.00301 0.00301 0.00200667 0.00100333 +0.00301 0.00301 0 0 0.00301 0.00200667 0.00200667 0 +0.00602 0.00100333 0 0.00401333 0 0 0.00702333 0 +0.00200667 0.00501667 0 0.00100333 0 0 0.00200667 0 +0.00602 0.00200667 0.00200667 0.00200667 0.00401333 0.00602 0 0.00200667 +0.00501667 0.00702333 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00802667 0.00702333 0 0.00200667 +0.00401333 0.00200667 0.00602 0.00602 0 0.00802667 0 0.00200667 +0 0 0.0110367 0 0.00200667 0 0.00100333 0.00200667 +0.00100333 0 0.00501667 0.00602 0.00100333 0.00401333 0 0 +0 0 0.00301 0 0.00100333 0.00802667 0 0 +0.00301 0 0.00401333 0.00200667 0 0.00200667 0.00200667 0 +0.00501667 0 0.00301 0.00602 0 0 0.00802667 0 +0 0 0.00802667 0 0.00200667 0 0.00100333 0 +0.00602 0.00702333 0 0 0.00200667 0.00602 0.00501667 0 +0 0.0100333 0.00501667 0 0 0.0100333 0 0.00501667 +0 0 0 0.00501667 0.00100333 0 0.00301 0.00100333 +0 0.0110367 0 0.00301 0 0.00301 0.00301 0.00702333 +0 0.00401333 0 0.00401333 0.00501667 0 0 0 +0.00702333 0 0.00100333 0.00501667 0.00501667 0.00200667 0 0.00200667 +0.00200667 0 0.00401333 0 0 0.00602 0 0 +0.00702333 0 0 0.00401333 0 0.00100333 0 0.00401333 +0 0 0.00200667 0 0.00301 0.00200667 0.00401333 0 +0 0.00401333 0.00200667 0 0 0.00200667 0 0.00401333 +0.00301 0.00401333 0 0.00903 0 0 0.00903 0 +0.00702333 0.00301 0 0 0.00802667 0 0 0.00602 +0.00401333 0 0 0.00100333 0.00501667 0 0.00100333 0 +0.00200667 0 0.00301 0 0.00100333 0.00702333 0.00100333 0 +0.00200667 0.00401333 0 0 0 0.00200667 0.00200667 0.00100333 +0.00301 0.00401333 0.00602 0.00200667 0.00401333 0 0 0.00702333 +0.00702333 0.00200667 0 0 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00501667 0.00401333 0.00602 0.00401333 0 +0.00702333 0.00301 0 0.00401333 0 0.00401333 0.00100333 0.00903 +0 0.00200667 0.00200667 0.00100333 0.00401333 0.00301 0 0.00100333 +0.00200667 0 0 0.00802667 0.00501667 0 0.00301 0 +0 0.00100333 0 0 0.00401333 0 0.00301 0.00501667 +0.00100333 0 0.00200667 0 0 0 0.00501667 0 +0 0.00702333 0 0.00200667 0 0.00200667 0.00200667 0.00602 +0 0.00200667 0 0.00200667 0.00401333 0 0.00100333 0 +0.00301 0.00802667 0 0.00100333 0 0.00200667 0.00702333 0 +0 0 0.0110367 0 0 0.00401333 0.00401333 0 +0.00802667 0 0 0 0.0100333 0 0.00100333 0 +0.00200667 0.00702333 0 0.00602 0 0.00100333 0.00200667 0.00401333 +0 0.00200667 0 0.00100333 0.00301 0.00501667 0 0.00100333 +0.00301 0 0.00100333 0.00702333 0 0 0 0 +0 0.00200667 0 0 0 0.00602 0 0 +0.00702333 0 0 0.00702333 0 0.00602 0 0 +0 0.00200667 0 0 0.00501667 0 0.00501667 0 +0 0.0110367 0.00100333 0 0 0.00100333 0.00100333 0.00100333 +0 0.00802667 0 0.00802667 0 0 0.00401333 0.00200667 +0.00401333 0.00100333 0 0.00100333 0.00301 0 0.00802667 0 +0.0110367 0 0 0.00903 0.00100333 0 0.00200667 0 +0.00100333 0 0.00401333 0 0.00501667 0 0 0.00100333 +0.00602 0 0 0 0.00401333 0 0 0.00200667 +0.00501667 0.00301 0 0.00401333 0 0.00200667 0.00702333 0.00401333 +0.00200667 0.00100333 0 0.00100333 0.00903 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00702333 0.00200667 0.00200667 0.00301 0.00802667 0 +0 0.00903 0.00301 0.00501667 0 0 0.00401333 0 +0.00301 0.00100333 0 0.00501667 0.00401333 0.00301 0 0 +0 0.00200667 0 0.00401333 0.00401333 0.00301 0.00301 0 +0.00401333 0 0 0 0.00200667 0 0.00401333 0.00100333 +0.00802667 0 0.00301 0 0.00100333 0.00200667 0 0.00501667 +0 0 0.00802667 0.00301 0 0.00200667 0.00100333 0.00100333 +0 0.00100333 0.00100333 0.00100333 0.0100333 0 0 0 +0 0.00401333 0 0 0.00100333 0 0.00401333 0 +0.00501667 0 0.00401333 0.00903 0 0 0.00602 0.00200667 +0.00602 0 0.00100333 0 0.00602 0 0.00401333 0 +0 0.00501667 0 0.00501667 0.00100333 0 0.00301 0 +0.00301 0 0 0.00200667 0.00501667 0 0 0.00301 +0 0 0.00100333 0.00200667 0.00100333 0.00301 0 0.00501667 +0 0.00501667 0 0.00100333 0.00200667 0.00301 0 0 +0.00802667 0 0 0.00401333 0.00100333 0.00501667 0 0 +0.00602 0 0 0.00702333 0 0 0.00501667 0 +0 0.00301 0.00301 0 0 0.00802667 0 0 +0.00401333 0.00401333 0 0.00100333 0 0 0.00501667 0.00301 +0.00200667 0.00200667 0 0.00200667 0.00100333 0 0.00802667 0 +0.00702333 0 0 0.0100333 0 0.00802667 0 0 +0 0.00100333 0.00401333 0.00301 0 0 0.00702333 0 +0.00702333 0 0 0.00501667 0 0 0.00702333 0.00100333 +0 0.00401333 0 0 0.00702333 0 0.00501667 0.00100333 +0 0 0.00301 0.00401333 0.00802667 0.00100333 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0.00702333 0 0 0.00100333 0.00501667 0.00401333 +0 0.00200667 0.00802667 0 0.00401333 0.00100333 0 0.00501667 +0.00100333 0 0 0.00301 0.00401333 0.00903 0.00602 0 +0 0 0 0 0.00401333 0.00200667 0.00401333 0.00100333 +0 0.00802667 0 0 0 0 0.00401333 0.00100333 +0.00501667 0 0.00200667 0.00100333 0 0.00401333 0.00100333 0 +0.00602 0 0 0.00802667 0.00200667 0 0.00200667 0 +0 0.00702333 0.00200667 0 0.00802667 0.00200667 0 0 +0 0.00200667 0.00702333 0 0.00401333 0 0.00100333 0 +0.00200667 0 0.00100333 0.00802667 0.00501667 0 0.00200667 0.00501667 +0 0.00100333 0 0.00200667 0.00401333 0 0.00602 0 +0 0.00401333 0 0.00301 0.00301 0 0 0.00702333 +0 0.00401333 0 0 0.00903 0 0 0 +0 0.00401333 0.00100333 0.00401333 0.00100333 0 0.00100333 0.00401333 +0 0.00401333 0 0.00200667 0.00200667 0.00301 0 0 +0.00401333 0.00401333 0.00301 0 0.00602 0.00301 0 0.00200667 +0.00200667 0 0.00401333 0.00602 0 0 0.00401333 0 +0 0.00100333 0.00200667 0 0.00200667 0.00301 0.00200667 0.00100333 +0.00100333 0.00501667 0 0.00100333 0.00301 0 0.00401333 0.00301 +0 0.00301 0 0.00702333 0 0.00301 0 0.00100333 +0.00602 0 0 0 0 0.00501667 0 0.00501667 +0 0.00501667 0.00802667 0 0 0 0.00702333 0 +0.00100333 0 0.00501667 0.00200667 0 0 0.00501667 0 +0.00301 0 0 0.00100333 0.00802667 0 0.00602 0 +0.00100333 0 0.00401333 0.00401333 0 0.00702333 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0.00401333 0.00702333 0 0 0.00702333 0.00602 +0 0 0.00501667 0.00501667 0 0.00401333 0.00200667 0 +0.00200667 0 0.00200667 0 0 0.00401333 0.01204 0.00401333 +0 0.00401333 0 0 0 0 0.00501667 0.00401333 +0 0.00200667 0.0100333 0 0 0.00501667 0 0.00802667 +0 0.00401333 0 0 0.00301 0 0.00100333 0.00100333 +0.00100333 0 0 0.00301 0 0.0110367 0.00501667 0 +0 0.00401333 0.00501667 0 0.00100333 0.00702333 0 0.00100333 +0 0.00200667 0.00301 0 0 0.00602 0.00200667 0 +0 0 0 0.00200667 0.00702333 0 0.00301 0.00401333 +0 0 0.00401333 0.00602 0 0.00301 0 0.00301 +0 0.00301 0.00301 0.00100333 0.00501667 0 0 0.0110367 +0 0.00501667 0 0 0.00602 0.00100333 0 0 +0.00100333 0.00401333 0 0.00702333 0.00301 0 0.00702333 0 +0.00301 0 0 0 0.00100333 0.00602 0 0 +0.00301 0.00301 0 0 0.00100333 0.00301 0 0.00401333 +0 0.00501667 0.00602 0 0 0 0.00501667 0 +0.00200667 0.00200667 0 0.00200667 0 0.00602 0 0.00200667 +0 0.00602 0 0.00501667 0.00301 0 0 0.00602 +0 0 0.00401333 0.00200667 0.00200667 0 0.00100333 0.00602 +0 0 0 0 0.00301 0.00100333 0.00401333 0 +0 0.01204 0 0 0 0.00301 0.00301 0 +0 0.00100333 0.00100333 0.00100333 0 0.00602 0.00301 0 +0.00401333 0.00200667 0 0.00301 0 0 0.00301 0 +0.00200667 0.00602 0 0 0.00301 0.00702333 0.00401333 0.00702333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.0130433 0.00501667 0 0.00301 0.00802667 0 0 0.0100333 +0.0100333 0 0 0.0100333 0.00602 0 0 0.00200667 +0.00100333 0 0.00200667 0 0 0 0 0.0100333 +0.00200667 0.00100333 0.00401333 0 0 0 0 0 +0.00501667 0 0.00602 0.00602 0 0.00100333 0 0.00702333 +0 0.00200667 0.00100333 0 0 0.00501667 0 0 +0.00200667 0.00200667 0 0 0.00100333 0.00301 0.00702333 0.00702333 +0 0 0.00702333 0 0 0.00301 0.00301 0 +0.00100333 0 0.00301 0 0 0.00100333 0 0.00301 +0 0.00301 0 0 0.00602 0 0 0.00702333 +0 0 0.00702333 0.0100333 0 0 0 0.00100333 +0 0 0.00802667 0.00100333 0.00501667 0 0.00100333 0.00200667 +0.00200667 0.00501667 0.00200667 0 0.00401333 0 0.00501667 0 +0.00401333 0.00100333 0 0.00301 0.00401333 0.00100333 0.00401333 0 +0.00301 0 0.00200667 0 0.00301 0.00401333 0 0 +0.00200667 0.00702333 0 0.00602 0 0.00602 0 0.00200667 +0 0.00702333 0.00100333 0 0 0.00401333 0 0 +0 0.00401333 0.00100333 0 0.00401333 0.00501667 0 0 +0 0.00903 0.00200667 0.00200667 0.00100333 0 0.00401333 0.00100333 +0 0.00903 0 0.00100333 0.00301 0 0.00702333 0 +0.00301 0 0.00301 0.00401333 0.00100333 0.00200667 0 0 +0.00903 0.00501667 0 0 0 0.00602 0.00401333 0 +0.00501667 0.00301 0.00301 0 0.00401333 0.00602 0.00301 0.00401333 +0.00200667 0 0 0.00301 0 0 0 0.00301 +0.00301 0 0 0.00903 0.00802667 0 0.00501667 0 +0.00903 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0.0100333 0.00903 0 0 0.01204 0 0 +0.00501667 0.00702333 0 0 0.00100333 0.0110367 0.00200667 0 +0.00200667 0.00200667 0.00100333 0 0 0.00200667 0 0.00501667 +0.00401333 0.00200667 0.00301 0 0.00200667 0 0.00401333 0 +0 0.00100333 0.00802667 0 0 0.00501667 0 0.00200667 +0 0.00100333 0.0100333 0 0 0.00702333 0.00200667 0.00200667 +0 0 0.00602 0 0 0.00301 0.00100333 0 +0.00903 0 0 0.00501667 0 0 0.00200667 0 +0 0.00301 0.00100333 0.00200667 0 0 0 0.00200667 +0.00100333 0.00702333 0 0 0.00501667 0 0.00501667 0 +0.0100333 0 0.00401333 0.0110367 0 0.00301 0 0 +0.00100333 0.00602 0 0.00702333 0 0.00301 0.00200667 0 +0.00702333 0 0.00401333 0 0 0.00200667 0.00501667 0 +0.00301 0.00100333 0 0.00100333 0.00100333 0.00702333 0 0.00602 +0 0.00100333 0 0 0.00501667 0.00301 0 0.00602 +0 0.00200667 0.00200667 0 0 0.0110367 0.00401333 0 +0 0.00501667 0 0 0.00501667 0.00702333 0 0 +0.00100333 0.00702333 0.00200667 0 0.00100333 0.00301 0 0 +0.01204 0.00200667 0.00401333 0 0.00301 0.00100333 0 0 +0 0.00903 0 0.00401333 0.00802667 0 0.00702333 0.00100333 +0 0 0.00602 0 0.00401333 0 0.00301 0.00100333 +0.00301 0 0 0 0.00100333 0.00602 0 0.00301 +0 0 0 0 0.00802667 0.00602 0.00100333 0.00301 +0 0.00401333 0 0 0 0 0.00200667 0.00602 +0 0.00401333 0.00903 0 0.00301 0.00301 0 0.00301 +0.0110367 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00401333 0.00401333 +0.00602 0 0.00903 0.00501667 0 0 0.00702333 0 +0.00200667 0.00200667 0.00200667 0 0 0 0.00702333 0.00401333 +0.00702333 0 0 0.00501667 0 0 0.00100333 0 +0 0.00702333 0.00301 0.00100333 0.00200667 0 0 0.00100333 +0 0.00100333 0.00200667 0.00401333 0 0.00200667 0 0.00200667 +0 0 0 0.0100333 0 0 0.00401333 0.00501667 +0 0 0.00702333 0 0 0.00602 0.00401333 0 +0.00802667 0.00401333 0 0.00301 0 0 0.00501667 0.00301 +0 0.00401333 0.00301 0.00100333 0.00100333 0.00401333 0 0 +0.00401333 0.00301 0 0 0.00702333 0 0.00602 0 +0.00401333 0 0 0.0110367 0.00100333 0 0 0 +0 0.00903 0 0.00301 0 0.00602 0.00301 0 +0 0 0.00501667 0 0 0.00501667 0.00100333 0 +0.00100333 0 0 0.00301 0 0.00301 0 0.00602 +0 0 0 0 0.00702333 0 0.00200667 0.00100333 +0.00200667 0.00301 0.00501667 0 0 0.0110367 0 0 +0.00401333 0 0.00200667 0 0.00903 0 0 0.00100333 +0.00301 0.00802667 0 0 0 0.00301 0 0 +0.00702333 0.00100333 0 0 0.00903 0 0 0 +0.00301 0.00301 0.00301 0 0.00100333 0 0.00301 0.00100333 +0 0 0.00501667 0.00100333 0 0 0 0.00301 +0 0.00802667 0 0 0 0.00702333 0 0 +0 0 0 0.00602 0.00802667 0 0 0 +0.00401333 0.00301 0 0.00200667 0 0.00301 0.00100333 0.00301 +0.00100333 0.00301 0.00100333 0.00301 0.00100333 0 0.00401333 0.0110367 +0.00100333 0.00903 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0110367 0 +0.00301 0.00200667 0 0.01505 0.00501667 0.00100333 0 0.00100333 +0.00100333 0.00200667 0.00501667 0.00301 0 0 0.00301 0.00301 +0.00100333 0.00602 0 0.00401333 0.00401333 0.00301 0 0 +0 0 0.0100333 0 0.00100333 0.00100333 0.00301 0 +0 0.00301 0.00702333 0.00200667 0 0 0.00501667 0.00301 +0 0.00401333 0 0.00401333 0.00301 0.00100333 0 0.0100333 +0 0 0 0.00501667 0 0.00100333 0.00301 0 +0 0.00501667 0 0.00200667 0.00200667 0.00200667 0 0.00903 +0 0 0.00501667 0 0.00100333 0.00702333 0 0.00301 +0.00501667 0 0.00401333 0.00602 0 0.00301 0 0.00200667 +0 0.00602 0 0.00100333 0.0140467 0 0.00100333 0 +0 0.00702333 0 0 0.00200667 0.00200667 0.0110367 0 +0 0.00200667 0 0.00200667 0 0 0.00501667 0 +0 0.00200667 0 0.00100333 0 0 0.00501667 0.00100333 +0.00200667 0 0 0.00401333 0 0 0.00401333 0 +0.00100333 0 0.00602 0 0.00702333 0.00602 0 0.00602 +0 0.00200667 0.00401333 0 0.00401333 0 0.00301 0 +0.00401333 0 0 0 0 0.00602 0 0.00501667 +0 0 0.00602 0 0.00301 0 0 0.00602 +0.00702333 0 0 0.00501667 0 0 0 0.00401333 +0.00100333 0 0.00903 0 0 0 0.00702333 0 +0.00501667 0.00301 0 0.00401333 0 0.00903 0 0 +0.00200667 0 0.00501667 0.00802667 0 0 0 0 +0.00501667 0.00401333 0.00301 0 0.00401333 0 0.00702333 0 +0.00301 0.00401333 0 0.00501667 0 0.00200667 0.00702333 0 +0.00702333 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00501667 0.00301 0.00200667 +0 0.00501667 0 0.00200667 0.00903 0.00501667 0.00501667 0 +0 0 0.00200667 0.00200667 0.00401333 0.00100333 0.00100333 0 +0.00301 0 0 0.00200667 0 0 0.00702333 0 +0 0 0.00802667 0.00401333 0 0.00301 0 0.00501667 +0 0 0.01204 0.00401333 0 0 0 0.00903 +0 0 0.00100333 0 0 0.00401333 0.00100333 0 +0.0110367 0.00100333 0 0.00301 0.00301 0 0.00702333 0 +0.00602 0 0 0 0.00602 0.00702333 0 0 +0 0.00301 0 0 0.00200667 0.00903 0 0.00401333 +0.00200667 0 0.00401333 0.00401333 0 0.00401333 0 0.00501667 +0 0 0.00501667 0 0.00401333 0 0 0 +0 0.00401333 0 0 0 0.00100333 0.00501667 0 +0 0 0 0.00401333 0 0 0.00301 0 +0 0 0 0.00200667 0 0 0.00602 0.00200667 +0 0 0 0 0.00301 0.00100333 0.00401333 0 +0.00401333 0.00301 0.00200667 0 0.01204 0 0 0.00602 +0 0.00301 0.00401333 0 0.00100333 0.00501667 0.00200667 0 +0 0.00200667 0 0.00401333 0.00200667 0.00602 0 0 +0.00401333 0 0.00501667 0 0 0.00200667 0 0.00903 +0 0.00200667 0.00702333 0.00301 0 0 0.00200667 0.00602 +0 0.00200667 0.00200667 0 0.00501667 0 0 0 +0.00501667 0 0.00301 0 0.00301 0.00802667 0 0 +0 0.00100333 0.00802667 0 0 0 0 0.00702333 +0.00401333 0.00602 0 0.00602 0.00200667 0.00301 0.00200667 0 +0.00602 0 0.00301 0.00100333 0 0.00301 0.00100333 0.00802667 +0.00401333 0 0.00401333 0.00702333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00501667 0 0.00602 0.00501667 +0 0 0.00401333 0 0.00501667 0.00301 0.00702333 0.00200667 +0 0.00301 0 0 0.00301 0.00200667 0.0100333 0 +0 0 0.00100333 0 0.00802667 0 0 0.00602 +0 0 0.00401333 0.00301 0.00401333 0.00602 0 0.00602 +0.00200667 0 0 0.00602 0.00903 0 0 0 +0.01204 0.00100333 0.00100333 0 0 0 0.00602 0.00301 +0.00301 0.00401333 0.00100333 0.00100333 0 0 0 0.00602 +0 0 0 0 0.00401333 0.00602 0 0 +0.00501667 0 0.00602 0 0.00802667 0.00200667 0 0.00100333 +0.00602 0 0.00100333 0.00501667 0 0.00100333 0 0.00100333 +0 0 0.00501667 0.00301 0 0.00501667 0 0 +0 0.00200667 0 0.00200667 0 0 0.00100333 0.00200667 +0.00301 0 0 0.00301 0.00100333 0.00100333 0.00401333 0 +0 0 0 0 0 0.00200667 0.00301 0 +0 0 0.00602 0 0.00200667 0.00501667 0 0 +0.00100333 0.00501667 0 0 0.00602 0 0 0 +0.00200667 0 0.00401333 0 0.00301 0.00200667 0 0 +0 0 0.00301 0.00200667 0.00602 0.00100333 0 0 +0.00401333 0 0.00200667 0 0 0.00200667 0 0.00200667 +0 0.00100333 0.0100333 0 0.00200667 0 0.00100333 0.00903 +0 0 0 0.00301 0 0 0 0.00602 +0 0.00100333 0 0.00602 0.00401333 0 0 0.00200667 +0.00301 0.00200667 0.00100333 0 0.00301 0.00100333 0.00200667 0.00401333 +0 0 0 0.0110367 0 0 0.0100333 0 +0 0 0.00301 0.00100333 0.00702333 0.00200667 0.00602 0.00200667 +0.00100333 0 0.00401333 0.00602 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00802667 0.00100333 0.00301 0.00100333 0.00401333 +0 0.00602 0.00301 0.00301 0 0.00100333 0.00100333 0.00903 +0.00200667 0.00100333 0 0 0.00200667 0 0.00200667 0.0110367 +0.00200667 0.00501667 0 0 0 0.00401333 0.00200667 0.00301 +0.00501667 0 0 0 0 0.00702333 0.00501667 0.00200667 +0 0.00200667 0 0 0.00301 0.00401333 0.0100333 0 +0.00200667 0.00401333 0 0.00602 0 0 0.00301 0 +0.00200667 0.0100333 0 0 0.00501667 0 0.00200667 0 +0.00903 0 0.00100333 0 0.00100333 0.00100333 0 0 +0.00501667 0.00200667 0 0 0.00401333 0.00200667 0 0.00401333 +0 0 0 0.00100333 0 0 0 0.00100333 +0 0 0.00401333 0.00501667 0 0 0.00100333 0 +0 0 0 0.00100333 0.00200667 0 0 0.00903 +0 0 0 0 0 0.00301 0.00702333 0 +0 0.00200667 0.00100333 0 0 0.00602 0 0.00401333 +0 0 0.00301 0 0 0 0 0 +0 0.00200667 0 0 0.00301 0 0.00200667 0.00100333 +0.00200667 0 0.00702333 0 0.00301 0 0 0 +0.00301 0 0.00501667 0 0.00301 0.00100333 0.00401333 0.00100333 +0 0 0.00602 0 0 0 0 0 +0.00100333 0.00501667 0 0.00100333 0.00200667 0.00200667 0.00200667 0.00903 +0 0 0.00100333 0 0.00100333 0 0 0.00802667 +0 0.00200667 0 0.00702333 0.00100333 0 0 0.00301 +0.00702333 0 0 0.00301 0 0 0.00602 0.00200667 +0.00401333 0 0.00301 0 0 0.00802667 0 0 +0 0.00301 0.00501667 0.00301 0 0.00702333 0.00301 0 +0 0.00602 0.00100333 0.00802667 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00501667 0.00401333 0.00200667 0.00301 +0.00401333 0 0.00200667 0.00301 0.00501667 0.00100333 0 0.00301 +0.00301 0.00301 0.00301 0.00100333 0 0 0 0.00200667 +0.00401333 0.00602 0.00602 0 0.00100333 0 0 0 +0.00702333 0.00501667 0 0.00301 0 0 0.00903 0.00401333 +0.00301 0 0 0.00100333 0 0.00200667 0.00903 0 +0.00100333 0.00501667 0 0.00200667 0.00200667 0 0 0 +0.00100333 0.00200667 0 0.00200667 0 0.00100333 0 0.00702333 +0.00100333 0 0 0 0.00602 0 0.00100333 0 +0.00401333 0.00301 0 0 0.00401333 0.00200667 0 0 +0.00903 0 0 0.00200667 0.00100333 0 0 0 +0 0 0 0.00802667 0 0 0.00702333 0 +0 0 0.00301 0.00100333 0 0.00401333 0 0.00200667 +0.00602 0 0.00100333 0 0 0.00501667 0 0 +0.00602 0 0.00200667 0 0 0 0.00401333 0.00401333 +0 0 0.00401333 0 0 0.00903 0 0 +0.00602 0 0.00401333 0 0 0 0.00501667 0 +0.00100333 0 0.00903 0 0.00200667 0 0 0.00100333 +0.00301 0 0 0.00301 0.00301 0.00301 0 0 +0 0.0100333 0 0.00200667 0 0.00401333 0 0 +0.0130433 0 0 0.00602 0 0.00200667 0.00602 0.00501667 +0 0 0.00301 0.00401333 0 0.00301 0.00602 0 +0.00200667 0.00501667 0.00100333 0.00602 0 0 0.00501667 0.00903 +0 0 0.00401333 0 0 0.00501667 0.00802667 0 +0.00100333 0 0.00200667 0.00200667 0.00301 0.00200667 0 0.00100333 +0 0.0110367 0.00200667 0 0.00200667 0.00200667 0.00100333 0.00100333 +0.00602 0 0.00903 0.00401333 0.00100333 0.00802667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0100333 0.00301 0 0.00100333 0.00200667 0.00501667 +0.00301 0.00802667 0 0 0 0.00401333 0.00100333 0 +0 0 0.00702333 0.00501667 0 0.00301 0 0 +0.00602 0.00200667 0.00301 0 0 0.00301 0 0.00100333 +0 0.00200667 0.00301 0.00100333 0.00401333 0 0 0.00702333 +0.00401333 0.00602 0 0 0 0.00200667 0 0.00501667 +0 0.00702333 0.00401333 0 0.00100333 0 0.00100333 0 +0 0.00702333 0 0 0.00100333 0 0.00301 0.00702333 +0.00100333 0 0.00100333 0 0.00200667 0.00401333 0 0.00602 +0.00301 0 0 0.00301 0.00401333 0 0 0 +0.00802667 0 0 0 0 0.00200667 0 0.00100333 +0 0 0 0.00200667 0 0.00401333 0 0 +0 0 0.00100333 0.00301 0 0 0 0 +0.00602 0 0 0 0 0.00401333 0 0 +0.00200667 0.00301 0.00501667 0 0 0 0.00702333 0 +0.00401333 0 0 0.00200667 0 0.00501667 0 0 +0.00100333 0 0.00100333 0 0 0 0.00301 0 +0 0 0.00702333 0 0.00200667 0 0.00702333 0.00301 +0 0.00100333 0 0.01204 0 0.00200667 0.00100333 0 +0 0.00802667 0.00301 0 0 0.00401333 0 0 +0.0100333 0 0 0.00903 0 0.00401333 0.00200667 0.00301 +0 0.00301 0.00903 0 0 0.00903 0 0 +0.00301 0.00501667 0.00401333 0 0 0.00301 0.00903 0 +0.00100333 0.00401333 0.00200667 0 0.00301 0.0110367 0.00301 0 +0 0 0.00200667 0.00100333 0 0.00702333 0.00100333 0 +0.01204 0 0 0 0.00200667 0.00602 0.00100333 0.00401333 +0.00200667 0.00602 0.00200667 0 0.00501667 0.00301 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00802667 0.00702333 0.01204 0.00903 0 0 0 +0.00802667 0 0.00301 0.00401333 0.00100333 0 0.00100333 0 +0.00100333 0 0 0 0.00602 0 0.00702333 0 +0 0.00702333 0.00401333 0 0.00401333 0 0.00501667 0 +0 0 0.00401333 0 0.00100333 0.00301 0 0 +0.00702333 0.00401333 0 0.00401333 0 0.00200667 0.00100333 0.00100333 +0.00401333 0 0.00100333 0.00401333 0 0.00100333 0 0.00501667 +0 0.00501667 0 0.00602 0 0 0.00903 0 +0.00802667 0 0.00501667 0 0.00100333 0.00301 0 0 +0.00602 0 0 0 0 0.00301 0 0.00100333 +0.00401333 0 0 0.00200667 0 0.0100333 0 0 +0 0 0 0.00301 0 0.00301 0 0 +0.00200667 0 0 0.00501667 0 0.00501667 0 0.00200667 +0 0 0.00100333 0 0 0 0 0 +0 0.00401333 0 0 0 0 0.00802667 0 +0.00301 0.00301 0 0 0 0 0 0.00301 +0.00100333 0 0 0 0.00100333 0 0.00401333 0 +0 0 0.00200667 0.00301 0 0 0 0.00602 +0 0 0.00100333 0.00401333 0.00100333 0.00501667 0 0 +0.00401333 0.00401333 0 0 0.00100333 0.00602 0 0.00301 +0 0 0.00200667 0.0100333 0 0.00301 0.00401333 0 +0 0.00301 0.00401333 0 0.00200667 0.00100333 0 0 +0.0100333 0.00401333 0 0 0 0.00301 0.00301 0.00200667 +0.00200667 0 0 0.00301 0.0130433 0.00200667 0 0.00100333 +0 0 0.0100333 0 0 0.00602 0 0.0100333 +0 0 0.00200667 0.00200667 0.00501667 0.00100333 0 0.00602 +0.00602 0 0 0.00802667 0.00401333 0.00501667 0.00802667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.00100333 0.00501667 0.00401333 0.0100333 0.00802667 0 0.00100333 +0 0.00401333 0.00100333 0 0 0.00501667 0.00602 0.00200667 +0 0.00100333 0.00301 0.00200667 0 0 0.00301 0.00401333 +0 0 0.00702333 0 0.00301 0.00200667 0 0 +0.00200667 0 0 0.00200667 0.00200667 0 0.00802667 0 +0 0.00301 0.00702333 0.00301 0 0 0.00200667 0 +0.00702333 0 0 0 0 0.00401333 0 0 +0 0.00702333 0 0.00301 0 0 0 0.00401333 +0.00301 0.00100333 0 0.00200667 0.00501667 0 0.00100333 0 +0.0100333 0 0.00200667 0 0 0.00602 0 0 +0.00501667 0 0 0.0110367 0 0.00200667 0.00200667 0 +0.00301 0 0 0 0.00501667 0.00100333 0 0 +0 0 0 0 0 0.00100333 0 0.00602 +0 0 0.00903 0 0 0 0.00301 0 +0 0 0 0.00301 0.00100333 0 0 0 +0.00100333 0.00200667 0 0 0 0 0 0.00802667 +0.00501667 0 0 0.00401333 0 0.00501667 0.00200667 0 +0 0.00100333 0 0.00200667 0 0 0 0.00702333 +0 0.00401333 0 0.00401333 0.00401333 0.00100333 0 0.00602 +0 0.00200667 0 0 0 0 0.00100333 0.00602 +0 0 0 0 0.00602 0.00200667 0.00301 0 +0.00501667 0.00301 0 0 0.00401333 0.00200667 0.00200667 0 +0.0140467 0 0 0.00602 0 0.00802667 0.00301 0 +0 0 0.00301 0.00602 0.00100333 0 0 0.00602 +0.00301 0.00602 0.00301 0 0.00200667 0.00200667 0.00903 0 +0 0.00501667 0 0 0 0 0.00602 0.00802667 +0 0 0.00501667 0.00702333 0.00602 0.00602 0.00301 0.00501667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.0100333 0 0.00200667 0.00401333 0.00903 0.0100333 0.00200667 +0.00200667 0 0 0.00401333 0.00802667 0 0.00100333 0.00200667 +0.00702333 0 0 0 0.00602 0 0 0 +0.00401333 0.00501667 0 0 0.00100333 0.00200667 0.00200667 0 +0.00501667 0 0 0 0 0.00100333 0.00200667 0.00401333 +0 0 0.00200667 0.00702333 0.00200667 0.00401333 0 0.00602 +0 0.00200667 0 0.00501667 0 0 0.00401333 0 +0 0.00301 0.00200667 0.00301 0 0 0 0 +0 0.00702333 0 0 0.00602 0 0 0 +0 0.00401333 0 0.00501667 0 0 0.00301 0 +0.00903 0 0 0 0 0.00802667 0 0 +0.00501667 0 0 0 0.00200667 0.00100333 0 0 +0 0.00200667 0 0 0.00401333 0 0 0.00702333 +0 0 0.00401333 0.00301 0 0 0.00501667 0 +0.00100333 0 0 0.00602 0 0.00301 0 0 +0.00401333 0 0 0 0 0 0 0.00401333 +0 0 0.00301 0 0 0.00501667 0 0 +0.00501667 0 0.00100333 0 0 0.00200667 0 0.00501667 +0 0.00702333 0 0.00702333 0 0.00200667 0 0.00200667 +0 0.00401333 0.00401333 0 0 0.00100333 0.00301 0.00602 +0 0 0 0.01204 0.00501667 0 0 0 +0.00501667 0.00100333 0 0.0100333 0 0 0.00100333 0.00903 +0 0 0 0.00702333 0.00100333 0.00301 0 0.00200667 +0 0 0.0100333 0 0 0 0.00401333 0.00100333 +0 0 0 0 0.00802667 0.0130433 0 0 +0.00602 0 0 0.00702333 0.00200667 0 0.00702333 0 +0 0.00501667 0.0100333 0.0110367 0.00100333 0 0.00301 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0100333 +0 0.00200667 0.00802667 0 0.00200667 0.00200667 0.00100333 0.00802667 +0.00903 0.00501667 0 0 0.00200667 0.00301 0 0 +0 0.00602 0.00100333 0 0 0.00401333 0.00100333 0 +0 0.00702333 0.00501667 0 0.00602 0 0.00100333 0 +0.00200667 0.00602 0.00200667 0.00100333 0 0 0.00200667 0 +0.00100333 0 0.00501667 0 0.00200667 0.01204 0 0 +0.00301 0.00200667 0 0 0.00200667 0.00100333 0 0.00702333 +0 0.00100333 0.00200667 0 0 0 0.00301 0 +0.00501667 0.00401333 0 0 0.00802667 0 0 0 +0 0.00501667 0 0.00501667 0.00401333 0 0 0 +0.00401333 0 0.00501667 0 0 0.00100333 0 0 +0 0 0 0 0 0.00602 0.00702333 0 +0 0 0 0 0 0.00301 0 0 +0 0 0.00200667 0 0 0 0 0 +0 0 0.00200667 0 0 0 0 0.00602 +0 0 0 0 0 0 0.00301 0 +0 0.00401333 0 0 0.00100333 0.00100333 0 0 +0 0.00100333 0.00200667 0 0 0 0.00702333 0 +0.00100333 0 0.00301 0.00100333 0 0.00501667 0.00602 0 +0 0.00702333 0.00200667 0 0 0.00100333 0.0100333 0 +0 0 0.00200667 0.00501667 0 0 0.00602 0.00602 +0 0 0 0 0.00301 0.00401333 0.00702333 0 +0 0 0.00602 0.00401333 0 0.00200667 0.00802667 0 +0.00602 0.00903 0 0 0.00401333 0 0 0 +0.00602 0.00200667 0.00702333 0.00100333 0.00903 0 0 0.00602 +0 0.00301 0.00602 0 0.00100333 0.00401333 0 0 +0.00702333 0.00903 0.0100333 0 0 0 0 0.00602 +0.0110367 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00702333 +0.00200667 0 0.00401333 0.00702333 0 0.00401333 0.00401333 0 +0 0.00702333 0.00903 0 0.00200667 0 0.00100333 0.00501667 +0 0.00301 0.00100333 0 0.00100333 0 0.00401333 0.00301 +0 0 0.00301 0.00401333 0.00301 0.00301 0.00200667 0 +0 0.00200667 0.00200667 0.0100333 0.00501667 0 0 0.00100333 +0.00200667 0 0.00301 0 0 0.0100333 0 0.00602 +0 0.00200667 0.00401333 0 0 0 0 0 +0.0100333 0 0.00702333 0 0 0 0.00702333 0 +0.00200667 0.00802667 0 0 0 0.00200667 0 0 +0 0 0 0 0.00602 0 0 0 +0.00200667 0 0.00100333 0.00100333 0 0 0 0 +0 0 0 0.00100333 0 0 0.00301 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0 0.00100333 0 0 0 +0 0 0.00100333 0 0 0 0.00200667 0 +0 0 0.00200667 0 0.00702333 0 0 0 +0 0.00501667 0 0 0.00100333 0 0 0 +0 0.00200667 0 0.00501667 0 0 0.0100333 0 +0.00301 0 0 0 0 0.00200667 0.00501667 0 +0 0.00903 0 0 0 0.00602 0 0 +0 0.00100333 0.00702333 0.00100333 0 0 0.00401333 0.00200667 +0 0 0 0.00200667 0.01204 0 0.0100333 0 +0.00200667 0.00100333 0.00602 0.00100333 0.00200667 0.00903 0 0 +0.0110367 0 0 0.00200667 0.00401333 0 0.00200667 0.00702333 +0.00702333 0 0 0.00401333 0 0 0.00802667 0 +0.00602 0 0 0.00100333 0.00802667 0.00301 0 0.00602 +0.00501667 0.00903 0.00200667 0 0 0 0.00301 0.00200667 +0 0.00602 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00200667 +0.00702333 0 0 0 0.00802667 0.00401333 0.00200667 0.00602 +0 0 0.00602 0.00602 0 0.0110367 0 0 +0.00100333 0 0.00602 0.00100333 0.00200667 0 0 0.00802667 +0.00100333 0 0.00200667 0 0.00401333 0.00401333 0 0.00903 +0.00401333 0 0 0.00200667 0.00501667 0.00501667 0 0 +0.00602 0 0.00702333 0.00100333 0 0 0 0.00200667 +0.00602 0 0.00401333 0.00200667 0 0.00200667 0.00401333 0 +0.00602 0 0.00602 0.00501667 0 0 0.00702333 0 +0.00200667 0.00401333 0.00401333 0 0.00501667 0 0.00200667 0 +0 0.00602 0 0 0 0 0 0.00702333 +0 0 0 0 0.00501667 0 0 0 +0 0 0.00100333 0 0 0 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0 +0 0.00100333 0 0 0 0 0 0 +0.00100333 0 0 0 0.00301 0 0 0 +0 0 0 0 0.00200667 0 0.00702333 0 +0.00200667 0 0 0.00100333 0 0 0.00501667 0 +0.00501667 0 0.00903 0 0 0.00602 0 0 +0.00802667 0 0.00401333 0 0 0 0.00401333 0.00301 +0 0 0 0.0110367 0 0 0.00200667 0 +0.00903 0.00401333 0 0.00702333 0.00501667 0 0 0.00602 +0 0 0.00200667 0.00501667 0.00100333 0.00301 0 0.00200667 +0.00200667 0 0 0 0.00301 0.00200667 0.00100333 0.00100333 +0 0 0.00702333 0.00401333 0.00301 0.00200667 0.00301 0.00100333 +0.00100333 0.00501667 0 0.00100333 0.00401333 0.00100333 0.00501667 0.00501667 +0 0.00702333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00401333 0.00200667 +0.00301 0.00802667 0.00100333 0 0.00100333 0 0.00301 0 +0.00501667 0 0 0.00501667 0 0 0.0100333 0.00501667 +0.00100333 0 0 0.00301 0 0.00100333 0 0.00401333 +0.00501667 0 0 0.00100333 0 0.00501667 0.00301 0 +0.0110367 0.00200667 0 0 0.00200667 0 0 0 +0 0.00200667 0.00200667 0.00200667 0.00401333 0.00602 0 0 +0 0 0 0.00401333 0 0.00401333 0 0.00401333 +0 0 0 0.0100333 0 0 0 0.00100333 +0 0 0.00401333 0.00100333 0 0 0.00100333 0.00100333 +0 0 0 0.00702333 0 0 0 0 +0.00401333 0 0 0 0.00200667 0 0 0.00702333 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0 0 0 0 0 0.00200667 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0.00301 0 0 0.00301 0.00100333 +0 0 0.00501667 0 0 0 0.00401333 0 +0 0 0.00702333 0.00401333 0 0 0.00100333 0.00301 +0.00802667 0 0.00401333 0 0.00501667 0.00100333 0 0.00301 +0 0.00401333 0.00301 0.00100333 0 0.00200667 0 0.00501667 +0.0100333 0 0.00301 0 0.00200667 0 0.00602 0.00200667 +0 0 0.00802667 0.00100333 0 0 0 0.00501667 +0 0 0 0.0110367 0.00200667 0.00401333 0 0 +0.00401333 0.00200667 0.00200667 0.00401333 0.00200667 0 0 0.00301 +0.00602 0 0 0.00401333 0 0.00702333 0 0.00200667 +0.00401333 0 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00501667 0.00501667 0.00401333 +0.00100333 0 0.00802667 0.00501667 0 0.00602 0 0.00200667 +0.00100333 0.00100333 0.00100333 0.00100333 0 0 0 0 +0.00702333 0.00401333 0 0 0.00301 0.00501667 0 0 +0.00802667 0.00401333 0 0 0 0 0.00200667 0.00100333 +0 0.00802667 0.00200667 0.00100333 0.0100333 0.00401333 0 0 +0 0.00401333 0 0 0.00301 0.00100333 0 0.00100333 +0 0.00200667 0 0 0.00100333 0.0110367 0 0.00100333 +0.00200667 0 0.00501667 0 0 0 0.00100333 0.00100333 +0 0 0 0 0.00301 0 0 0 +0.00200667 0 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00802667 0 0 0 0.00100333 0 +0.00501667 0 0.0110367 0.00702333 0 0 0.00501667 0.00401333 +0 0 0 0.00200667 0.00501667 0 0 0.00602 +0 0.00501667 0 0 0.00301 0.00100333 0.00401333 0.00501667 +0 0.00802667 0 0.00200667 0 0.00602 0.00100333 0.00301 +0 0.00401333 0.00301 0 0 0.00301 0.00100333 0 +0 0.00301 0.00501667 0.00501667 0 0.00702333 0 0 +0.00301 0 0.00301 0.00602 0.00100333 0 0.00602 0 +0 0 0.00602 0.00301 0.00802667 0.00401333 0.00200667 0.00100333 +0.00401333 0 0.00602 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0110367 0.00802667 0.00501667 0 +0.00100333 0.00301 0 0.00602 0 0.00100333 0.00401333 0.00100333 +0.00401333 0.00100333 0 0.00401333 0.00702333 0 0 0 +0 0.00501667 0 0.00200667 0 0 0.00802667 0 +0.00301 0.00100333 0.00200667 0 0 0.00401333 0 0.00602 +0 0 0.00702333 0 0 0.0100333 0.00100333 0.00200667 +0.00200667 0 0 0 0.00200667 0.00401333 0.00401333 0 +0 0 0.00100333 0 0.00100333 0.00200667 0 0.00802667 +0 0 0.00200667 0.00702333 0 0.00802667 0 0 +0 0 0.00200667 0.00301 0 0 0.00401333 0 +0 0 0.00200667 0 0 0.00100333 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0 0 0 0.00602 0 0 +0 0 0.00501667 0.01204 0 0.00100333 0.00602 0 +0 0 0 0.0130433 0 0 0.00200667 0 +0.00702333 0 0.00200667 0 0.00602 0.00200667 0 0.00301 +0.00401333 0.00501667 0 0 0.00200667 0.00100333 0 0.00501667 +0 0.00301 0 0 0 0.00200667 0 0 +0 0.00702333 0 0 0.00602 0 0 0 +0.00401333 0.00401333 0 0.00401333 0 0.00200667 0 0 +0 0.00401333 0.00903 0.00501667 0.00301 0.00200667 0.00200667 0.00100333 +0 0.00401333 0.00802667 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00602 0.00501667 0.01204 0.0100333 +0.00301 0.00100333 0 0 0.00702333 0 0.00501667 0.00100333 +0 0.00702333 0 0 0.00301 0.00200667 0 0.00200667 +0 0 0.00301 0.00501667 0.00602 0.00100333 0.00100333 0 +0 0.00501667 0.00702333 0 0 0.00401333 0 0 +0.0130433 0 0 0.00301 0 0 0.00802667 0.00501667 +0 0.00401333 0.00301 0 0.00301 0 0.00401333 0 +0 0.00301 0.00100333 0 0 0.00501667 0 0.00301 +0.00501667 0 0 0 0 0 0.00401333 0 +0 0 0 0.00802667 0 0 0 0.00702333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0 0 +0 0.00401333 0 0.00200667 0 0 0 0.00100333 +0 0 0 0.00200667 0 0.00401333 0.00200667 0 +0 0 0.00802667 0.00702333 0 0 0.00301 0.00903 +0.00602 0 0 0 0.00301 0 0 0.01204 +0 0.00200667 0 0 0.00501667 0 0.00401333 0.00200667 +0 0.00200667 0 0.00200667 0 0.00501667 0 0.00100333 +0.00702333 0 0.00301 0.00100333 0.00301 0 0 0.00903 +0 0 0 0 0.00200667 0.00301 0 0.00301 +0.00200667 0 0.00702333 0.00301 0.00200667 0 0.00200667 0.00100333 +0 0.00301 0 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00602 0.00401333 0.00100333 0.00200667 0.00301 +0.00602 0.0100333 0.00501667 0 0 0.00100333 0 0.00702333 +0.00200667 0.00401333 0.00702333 0 0 0 0 0.00200667 +0.00301 0 0 0 0 0.00100333 0.00301 0.00702333 +0 0 0 0.00602 0 0.00401333 0.00200667 0 +0 0.00802667 0 0 0.00702333 0 0.00100333 0.00200667 +0 0 0.00602 0 0.00602 0.00100333 0 0.0100333 +0 0.00501667 0 0.00702333 0 0 0 0 +0 0.00501667 0.00301 0 0.00100333 0 0.00401333 0 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00301 +0 0 0 0 0 0 0.00100333 0 +0 0.00100333 0.0100333 0.00301 0 0 0.00903 0 +0.00401333 0 0 0.00702333 0 0.00602 0 0 +0.00100333 0.00802667 0 0.00802667 0 0 0 0 +0.00501667 0.00200667 0.00401333 0.00100333 0 0 0 0.0100333 +0 0 0.00401333 0.00602 0 0 0.00602 0.00301 +0 0 0.00802667 0.00100333 0.00401333 0 0.00200667 0.00200667 +0.00200667 0.00702333 0.00301 0 0 0 0 0 +0 0.00602 0.00702333 0 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00802667 0.00802667 0 0.00401333 +0.00100333 0.00200667 0.01204 0 0 0 0 0 +0.00200667 0.00501667 0.00802667 0.00501667 0 0.00100333 0 0 +0 0 0 0.00301 0 0.00100333 0 0.00100333 +0.00100333 0 0.00200667 0 0 0 0.00401333 0 +0 0 0.00903 0 0 0.00401333 0 0 +0.00501667 0.00200667 0 0 0 0.00301 0 0.00501667 +0.00501667 0 0 0 0.00100333 0.00702333 0 0 +0 0 0 0 0 0.00401333 0.00301 0 +0 0.00401333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00903 0 0 0 0 0.00301 0.00100333 +0.00602 0 0.00702333 0.00200667 0 0.00501667 0 0.00301 +0.00100333 0.00401333 0 0 0.00200667 0 0.00802667 0.00301 +0.00702333 0.00200667 0 0 0 0 0.00903 0 +0.00100333 0.00903 0.00401333 0 0 0.00802667 0 0.00602 +0 0.00301 0.0110367 0 0.00200667 0.00200667 0 0.00301 +0 0.00802667 0 0 0.00200667 0.00401333 0.00401333 0 +0.00200667 0 0 0 0.00903 0.00702333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00702333 0.00200667 0 0.00802667 0.00602 0.00501667 +0.00401333 0.00200667 0 0.0100333 0.00401333 0.00802667 0 0 +0 0 0.00501667 0.00501667 0.00903 0.00602 0 0.00200667 +0 0.00401333 0 0 0 0 0.00401333 0.00301 +0 0.00401333 0 0.00602 0 0 0.00501667 0 +0.00100333 0 0 0.00401333 0.00200667 0.0100333 0.00100333 0 +0 0.00200667 0 0 0 0.00401333 0.00401333 0 +0.00100333 0 0 0.00100333 0 0.00903 0 0.00301 +0.00200667 0.00301 0 0 0 0 0.00200667 0 +0 0 0.00100333 0 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00702333 0 0 +0.00602 0 0.00301 0 0 0 0.01204 0 +0.00200667 0 0.00602 0 0 0.00301 0 0 +0 0.00602 0 0.00401333 0.00501667 0 0.00401333 0 +0.00301 0 0 0 0.00602 0.00100333 0.00200667 0.00501667 +0 0.0100333 0 0 0 0 0.00301 0 +0 0.0110367 0 0.00100333 0.00301 0 0.00200667 0.00602 +0.00100333 0 0 0.00702333 0.00200667 0 0 0 +0 0 0.00301 0.00501667 0.00602 0.00602 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00401333 0.00602 0.00702333 0 0.00602 0.00200667 +0 0.00602 0.00401333 0 0 0.00501667 0.00903 0.00401333 +0 0 0 0 0.00301 0.00100333 0.00802667 0 +0.00200667 0 0.00100333 0 0 0 0 0.00501667 +0.00401333 0 0 0.00602 0.00401333 0.00200667 0.00401333 0 +0 0.00200667 0 0 0 0.00802667 0.00301 0.00602 +0.00100333 0 0 0 0.00301 0 0.00301 0.00501667 +0 0.00100333 0 0.00501667 0 0.00100333 0.00501667 0.00301 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.02107 0.0702333 0.127423 0.191637 0.25284 0.318057 0.371233 +0.422403 0.465547 0.46956 0.50267 0.506683 0.495647 0.501667 0.495647 +0.473573 0.440463 0.419393 0.378257 0.33712 0.283943 0.227757 0.190633 +0.136453 0.09331 0.05418 0.0100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0 0.00100333 +0 0 0.00100333 0 0.00100333 0 0.00602 0 +0.00301 0 0 0 0.00301 0 0 0.00200667 +0.00903 0 0 0 0 0 0.00501667 0 +0 0 0 0.00802667 0 0.00401333 0.00501667 0.00501667 +0.0100333 0 0 0 0 0.00301 0.00301 0 +0.00501667 0 0 0.00100333 0.00401333 0.00501667 0.00200667 0 +0 0 0.01204 0.00501667 0 0.00301 0 0.00100333 +0.00602 0.00200667 0 0.00903 0.00401333 0.00501667 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.00200667 0.00602 0 0.00100333 0.00602 +0.00702333 0 0.00301 0.00802667 0.00100333 0 0.00200667 0.00301 +0.00702333 0.00200667 0 0 0 0.00301 0.00100333 0 +0 0.00200667 0.00802667 0 0 0.00100333 0 0 +0.00100333 0.00702333 0 0 0 0.00100333 0.00602 0.00401333 +0 0 0.00401333 0 0 0 0.00401333 0 +0.00301 0.00200667 0.00301 0 0 0 0.00200667 0.00903 +0 0 0 0.00100333 0 0 0 0.00401333 +0 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0190633 0.0943133 0.205683 0.342137 0.507687 0.64708 +0.815808 0.94212 0.977152 1.01339 1.03151 1.04782 1.05144 1.04963 +1.05386 1.0593 1.05809 1.05024 1.0593 1.05144 1.05386 1.06111 +1.05567 1.05326 1.05567 1.05386 1.05567 1.04842 1.03936 1.03332 +1.01641 0.998292 0.968092 0.924604 0.835128 0.681856 0.539793 0.402337 +0.250833 0.146487 0.0551833 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0 0 0 0 0.00100333 0 0.00401333 0.00501667 +0.00100333 0 0 0 0.00702333 0 0.00401333 0 +0 0.00301 0.00702333 0.00301 0.00100333 0.00802667 0 0.00903 +0 0 0 0.00602 0.00100333 0 0.00602 0.00301 +0 0 0.00200667 0.00501667 0.00702333 0 0 0 +0.00401333 0.00802667 0.00100333 0 0 0 0 0.00200667 +0.00602 0 0.00903 0.00602 0.00501667 0.00501667 0.0100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0 0 0 0.0100333 0.00401333 0.00200667 +0.00100333 0.00702333 0 0 0.00501667 0.00301 0 0.00301 +0.00301 0.00702333 0.00100333 0 0 0 0.0110367 0 +0 0.00100333 0 0.00903 0.00200667 0 0.00401333 0 +0 0 0.0100333 0 0 0 0.00501667 0.00903 +0 0 0.0100333 0 0.00200667 0.00401333 0 0.00100333 +0 0.00301 0 0.00702333 0.00401333 0 0 0 +0.00401333 0 0.00200667 0.00301 0 0 0 0 +0 0 0.00301 0 0 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.02709 0.12642 0.287957 +0.491633 0.714056 0.93004 0.991648 1.03453 1.04842 1.06654 1.05446 +1.05567 1.05628 1.05144 1.05024 1.05628 1.05386 1.05084 1.04903 +1.04903 1.04903 1.05024 1.05084 1.04782 1.04661 1.04722 1.04842 +1.04601 1.05084 1.05024 1.0442 1.04601 1.05265 1.04903 1.04299 +1.05386 1.05265 1.05144 1.06292 1.05567 1.06473 1.05809 1.0599 +1.04238 1.0146 0.9693 0.8274 0.620032 0.432437 0.23779 0.09632 +0.00802667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00903 0 +0.00602 0 0 0 0.00301 0 0.00802667 0.00200667 +0 0 0 0 0.00501667 0 0.00100333 0 +0.01505 0.00401333 0 0.00903 0 0.00602 0.00200667 0 +0 0 0.00301 0 0 0.0110367 0.00301 0 +0.00401333 0.00301 0.00903 0.00200667 0 0 0 0.00100333 +0.00602 0 0 0 0.00301 0.00200667 0.00100333 0.00602 +0.00802667 0 0.00602 0.00401333 0 0 0.00100333 0.00702333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.00200667 0.00200667 0 0 0 0 0.01204 +0.00702333 0.00702333 0.00301 0 0 0 0 0.00200667 +0 0.00401333 0.00702333 0.00301 0 0 0 0.0100333 +0.00100333 0 0.00301 0 0.00903 0.00501667 0 0.00100333 +0.00200667 0 0 0.00903 0 0 0 0 +0.00501667 0 0.00301 0.00501667 0.00401333 0 0.00501667 0 +0.00401333 0 0.00100333 0 0 0.00501667 0.00100333 0.00200667 +0 0 0.00100333 0.00200667 0 0 0 0.00200667 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0431433 0.19264 0.420397 0.670264 0.928228 1.01218 1.03816 +1.06534 1.0605 1.05386 1.05265 1.05265 1.04963 1.04782 1.05265 +1.04118 1.03997 1.0442 1.0448 1.04178 1.04359 1.0448 1.04299 +1.03816 1.04238 1.04118 1.04118 1.03574 1.03997 1.03695 1.03453 +1.03634 1.03876 1.03997 1.03997 1.03755 1.04903 1.03876 1.04118 +1.0442 1.0442 1.04178 1.04359 1.04722 1.04299 1.0442 1.04842 +1.04963 1.05386 1.05446 1.06111 1.06534 1.05326 1.04057 0.989232 +0.880208 0.58695 0.353173 0.151503 0.0250833 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0 0.00100333 +0 0 0 0 0 0.00301 0 0.00802667 +0 0 0.00100333 0 0.00301 0 0.00501667 0 +0 0 0 0.00501667 0 0 0.00501667 0.0100333 +0.00501667 0 0.00903 0.00100333 0 0.00702333 0 0 +0 0.00401333 0.00301 0 0.00501667 0.00200667 0.00501667 0 +0 0.00702333 0.00200667 0.00301 0 0 0 0.00903 +0 0.00100333 0 0.00401333 0 0 0.00100333 0.0100333 +0 0.00501667 0.00401333 0 0.00100333 0.00401333 0.00301 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.0130433 0.00903 0 0.00100333 0 0.00100333 0 0 +0 0.00501667 0.0100333 0.00401333 0.00501667 0.00501667 0 0 +0 0 0 0.00802667 0.00702333 0.00100333 0 0 +0.00200667 0.00301 0.00401333 0.00200667 0 0.00301 0.00301 0.00100333 +0.00903 0.00301 0 0 0.00702333 0.00100333 0.00200667 0 +0 0.00702333 0 0 0 0 0.00501667 0 +0 0 0 0 0.00200667 0.00100333 0 0.00301 +0 0 0 0.00602 0 0 0 0 +0 0 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.131437 0.372237 +0.6664 0.943932 1.0303 1.06111 1.05809 1.0605 1.05567 1.04661 +1.0448 1.0448 1.04782 1.04178 1.0442 1.04299 1.03876 1.04359 +1.04057 1.03574 1.03453 1.03876 1.03453 1.03091 1.03816 1.0291 +1.04057 1.0303 1.03212 1.02789 1.03574 1.0303 1.02728 1.03091 +1.0303 1.03272 1.02608 1.03332 1.03393 1.03514 1.02789 1.03755 +1.03151 1.03997 1.03876 1.03755 1.03876 1.03332 1.03936 1.03695 +1.04359 1.04299 1.04057 1.0454 1.05265 1.04299 1.05567 1.05748 +1.06171 1.06111 1.05326 1.01158 0.920136 0.620032 0.315047 0.1204 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0 0 0.00100333 +0 0.00401333 0 0.00200667 0.00903 0 0.00903 0.00200667 +0 0 0 0 0.00200667 0 0.00200667 0 +0.0100333 0 0.00200667 0 0.00501667 0 0 0 +0.00501667 0.00200667 0 0 0 0 0.00602 0 +0.00100333 0 0.0100333 0 0 0.00100333 0.00702333 0.00100333 +0 0.00301 0 0.00401333 0.00301 0.00602 0 0.00301 +0.00702333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00802667 0.0100333 0.00903 0.00100333 0.00100333 0.00200667 0 +0 0 0.00200667 0.00802667 0 0.00200667 0.0110367 0 +0 0 0 0 0 0.01204 0.00100333 0.00301 +0 0 0.00301 0.00100333 0 0 0.00100333 0 +0.00702333 0.00401333 0.00903 0 0 0.00100333 0.00100333 0.00602 +0 0 0.00501667 0.00602 0.00401333 0.00200667 0 0.00702333 +0.00401333 0 0.00301 0 0.00702333 0.00200667 0 0.00702333 +0 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.164547 0.471567 0.824824 1.00192 1.05446 +1.05507 1.0593 1.04903 1.05144 1.04782 1.03936 1.04782 1.04722 +1.04057 1.03816 1.0442 1.04118 1.03514 1.03332 1.03151 1.03514 +1.03695 1.0297 1.03151 1.03453 1.02789 1.03091 1.03212 1.02487 +1.0303 1.02849 1.02487 1.02487 1.02064 1.02487 1.02426 1.02124 +1.02245 1.01943 1.02487 1.02789 1.02789 1.03212 1.02608 1.0291 +1.02849 1.03212 1.03574 1.02728 1.03212 1.03393 1.03393 1.03453 +1.03695 1.03755 1.04057 1.03453 1.03755 1.04057 1.03634 1.04722 +1.04238 1.05024 1.05446 1.04963 1.0605 1.05446 1.05144 0.995272 +0.791336 0.440463 0.154513 0.00903 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00501667 0 0 0.00702333 0 +0 0.00602 0 0.01204 0 0 0 0 +0.00702333 0 0.00501667 0 0 0.00602 0 0.0110367 +0.00301 0 0.00200667 0.00100333 0 0.00501667 0 0 +0.00602 0 0 0 0 0.00602 0 0 +0.00200667 0.00200667 0 0 0 0.00602 0.0110367 0 +0 0.00100333 0.00301 0.00602 0 0 0.00100333 0.00401333 +0.00903 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.01204 +0.00100333 0 0 0.00301 0.00602 0.00401333 0.00100333 0.00501667 +0 0 0 0 0.00200667 0.00602 0.00401333 0.00200667 +0 0 0.00702333 0 0.00100333 0 0.0110367 0 +0.00903 0 0.00702333 0.00301 0 0.00200667 0 0 +0 0 0.0110367 0.00702333 0 0 0 0.00200667 +0 0 0 0 0.00401333 0 0 0.00100333 +0 0.00200667 0 0 0.00200667 0.00200667 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.1204 0.440463 0.838992 1.00916 1.06232 1.05688 1.0599 1.05326 +1.04299 1.04178 1.03876 1.04299 1.04299 1.03816 1.0297 1.03453 +1.03634 1.03816 1.02547 1.03876 1.03514 1.0303 1.03453 1.02487 +1.02306 1.03272 1.02668 1.03272 1.02668 1.02789 1.02487 1.02849 +1.02185 1.02124 1.0152 1.02608 1.02064 1.03212 1.06232 1.075 +1.07535 1.0593 1.03332 1.02426 1.02124 1.02245 1.02185 1.02789 +1.02487 1.03272 1.02849 1.02608 1.03634 1.02668 1.02849 1.03091 +1.03997 1.02668 1.0303 1.03755 1.02789 1.03574 1.0303 1.03816 +1.03332 1.03936 1.04178 1.04057 1.04782 1.0442 1.05144 1.05748 +1.05265 1.05446 1.014 0.837704 0.440463 0.134447 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0 0 0.00301 0.00100333 +0.00200667 0 0 0.00903 0 0 0.00200667 0.00702333 +0 0 0.00301 0 0 0.00200667 0.01806 0.00301 +0 0.00401333 0 0.00301 0.00100333 0.00301 0 0.00802667 +0 0 0.00200667 0.00100333 0 0.00401333 0 0 +0 0 0.00200667 0 0.00802667 0.00802667 0 0 +0 0.00501667 0.00301 0 0.00301 0.00200667 0.00702333 0.00903 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00602 0.00100333 +0.00903 0.00802667 0 0 0 0 0.00401333 0 +0.00702333 0 0 0 0.00200667 0 0.00301 0.00702333 +0.00301 0 0 0 0 0 0.00100333 0.00301 +0 0.00501667 0.00401333 0.00301 0 0 0.00903 0.00301 +0 0 0 0 0.00200667 0.00200667 0.00501667 0.00602 +0.00100333 0.00401333 0 0 0 0.00702333 0 0.00200667 +0.00100333 0.00301 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0341133 0.271903 0.683144 +0.994668 1.05084 1.06352 1.04722 1.05386 1.04661 1.0448 1.03997 +1.03997 1.03755 1.03453 1.03574 1.03574 1.03936 1.02547 1.03151 +1.03151 1.03695 1.02124 1.0297 1.02426 1.02789 1.02426 1.03151 +1.02306 1.02366 1.02668 1.02426 1.0297 1.02608 1.02306 1.02547 +1.01702 1.02064 1.01943 1.03514 1.0981 1.1317 1.14835 1.145 +1.14625 1.1415 1.12855 1.09215 1.02487 1.01762 1.02245 1.02728 +1.02004 1.02547 1.02849 1.02426 1.02426 1.02426 1.03151 1.02789 +1.02668 1.02547 1.0291 1.03151 1.02668 1.03212 1.02789 1.03574 +1.0291 1.03876 1.03212 1.03332 1.03997 1.03695 1.03997 1.04178 +1.04903 1.04963 1.05869 1.05567 1.0605 0.998896 0.75012 0.317053 +0.0501667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00501667 0 0 0 0 +0 0.00401333 0.00301 0 0 0 0.00702333 0 +0.00100333 0 0.00100333 0 0.00401333 0.0160533 0.00702333 0 +0 0 0 0.00301 0 0 0.00401333 0 +0 0 0.00301 0 0.00602 0 0 0.00301 +0 0.00702333 0.00802667 0.00501667 0.00301 0 0 0.00501667 +0 0 0 0.00501667 0.0100333 0.00802667 0.00401333 0 +0.00301 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0100333 0.00702333 +0 0.00702333 0.00401333 0.00301 0.00501667 0.00301 0.00301 0.00401333 +0 0.00602 0.00200667 0 0 0.00100333 0 0 +0.00802667 0.00401333 0.00301 0.00200667 0.00100333 0.00100333 0 0 +0 0 0 0.00903 0.00401333 0 0 0.00602 +0.00903 0.00802667 0 0 0 0.00401333 0 0.00100333 +0.00702333 0 0.00802667 0 0 0.00702333 0.00802667 0.00200667 +0 0 0.00401333 0.00301 0 0 0.00100333 0 +0.00200667 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.08428 0.431433 0.902104 1.03332 1.05446 +1.0593 1.05144 1.04661 1.0448 1.03876 1.03876 1.03634 1.03393 +1.03574 1.03997 1.0297 1.0291 1.03151 1.03212 1.02487 1.02245 +1.02487 1.03272 1.02728 1.02487 1.02608 1.02185 1.02547 1.02728 +1.02728 1.02426 1.02004 1.02185 1.02849 1.01943 1.02124 1.02245 +1.0152 1.01218 1.05869 1.12645 1.1443 1.14465 1.15504 1.14395 +1.14667 1.1429 1.14709 1.14709 1.1142 1.04601 1.01702 1.02366 +1.02366 1.01279 1.0303 1.02185 1.02245 1.02124 1.03453 1.02064 +1.02306 1.02245 1.02608 1.02608 1.02849 1.02426 1.03212 1.02245 +1.0297 1.03453 1.02668 1.0303 1.03936 1.03453 1.03574 1.03453 +1.03816 1.03876 1.04359 1.04601 1.05265 1.05628 1.06413 1.04057 +0.943932 0.510697 0.137457 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.0110367 0 0 0 0 0.00200667 0 0 +0 0 0.00702333 0 0.00200667 0.0100333 0 0 +0.00200667 0 0.00602 0 0.00100333 0 0 0 +0 0.00401333 0 0 0 0 0 0 +0.0110367 0.00702333 0.00301 0.00301 0 0 0 0 +0.00200667 0.0100333 0.0140467 0.0110367 0 0 0 0 +0 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00301 +0.00903 0 0.00200667 0.00401333 0 0.00702333 0 0.00501667 +0.00501667 0 0.00401333 0.00301 0 0 0 0.00200667 +0 0.00200667 0.00301 0 0 0 0 0.00200667 +0.00702333 0 0 0 0.00501667 0 0.00200667 0.00301 +0 0 0.00802667 0.00200667 0 0 0.00401333 0 +0.00100333 0.00100333 0 0.00301 0 0 0.00602 0.00301 +0.00100333 0 0.00501667 0.00301 0.00702333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.113377 0.5117 0.96326 1.04661 1.06473 1.05628 1.04782 +1.04782 1.04057 1.04359 1.03212 1.03514 1.03151 1.03634 1.02366 +1.03393 1.03514 1.02306 1.02547 1.0291 1.02789 1.02789 1.02064 +1.02668 1.02608 1.02547 1.02306 1.02306 1.02004 1.02124 1.02306 +1.02547 1.02426 1.01883 1.02064 1.02366 1.01943 1.01883 1.01762 +1.0152 1.04299 1.12785 1.15002 1.14255 1.1429 1.13905 1.14751 +1.13905 1.1408 1.1436 1.145 1.14835 1.11735 1.03272 1.0152 +1.02245 1.01883 1.02547 1.02306 1.01883 1.02487 1.02849 1.02426 +1.01762 1.02366 1.02487 1.03272 1.01762 1.02426 1.02728 1.02185 +1.02668 1.0291 1.0303 1.02608 1.0303 1.0303 1.02608 1.02789 +1.03695 1.03212 1.03212 1.03876 1.04359 1.04359 1.04722 1.05024 +1.05628 1.05809 0.997084 0.649656 0.205683 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0.00200667 +0 0 0 0 0 0.00401333 0.00501667 0 +0.00401333 0 0 0.00401333 0 0.00100333 0 0.00100333 +0 0.00401333 0 0 0 0 0.00200667 0 +0 0 0 0.00200667 0 0 0.00602 0.00903 +0.00903 0 0 0 0 0 0.00702333 0.00602 +0.00200667 0.00501667 0.00602 0 0 0 0.00301 0 +0.00602 0 0.00903 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00903 0 +0 0.00401333 0.00200667 0 0.00802667 0 0.00501667 0.00200667 +0.00602 0.00301 0.00200667 0 0.00100333 0.00301 0.00100333 0 +0.00100333 0.00200667 0.00903 0.00702333 0 0.00702333 0.00401333 0 +0 0 0 0 0.00301 0 0 0 +0 0.00301 0 0.00301 0 0 0 0.00602 +0 0 0.00401333 0.00100333 0.00200667 0 0 0.0100333 +0.00903 0 0 0 0 0.00702333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.12341 +0.549827 0.985004 1.0593 1.05748 1.05024 1.03755 1.04782 1.03574 +1.03514 1.03393 1.03876 1.03091 1.03091 1.0291 1.02728 1.0303 +1.02728 1.02547 1.02728 1.02366 1.02245 1.02366 1.02185 1.02366 +1.01762 1.02306 1.02366 1.02608 1.02306 1.02306 1.02306 1.02185 +1.02608 1.01822 1.02306 1.01641 1.02185 1.02245 1.02004 1.01158 +1.02306 1.1114 1.14876 1.14542 1.13975 1.14325 1.1394 1.1443 +1.14465 1.1408 1.13625 1.145 1.14542 1.1429 1.096 1.01339 +1.02728 1.01883 1.01943 1.01702 1.02124 1.02064 1.02124 1.02064 +1.02668 1.02306 1.01762 1.02487 1.02064 1.02487 1.01883 1.02426 +1.02728 1.02608 1.02608 1.02487 1.02366 1.02487 1.03272 1.02306 +1.03272 1.02608 1.03393 1.03332 1.03272 1.03997 1.03514 1.04057 +1.04238 1.05084 1.0599 1.06292 1.02245 0.725648 0.239797 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00903 0 0 +0 0 0.0140467 0 0.00301 0.00702333 0 0 +0 0.00602 0.00100333 0.00200667 0.00200667 0 0 0 +0.00200667 0 0.00100333 0 0.00100333 0.00401333 0.00802667 0.00301 +0 0 0 0 0.00301 0.00301 0 0.00501667 +0.0100333 0.00602 0 0 0 0.00702333 0 0.00401333 +0.00100333 0.00903 0.0100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00903 0 0.00602 +0 0.00100333 0.00100333 0.00301 0 0.00501667 0 0 +0.00301 0 0.00200667 0.00802667 0.00100333 0 0 0 +0 0 0 0.00401333 0.00200667 0 0 0.01204 +0.00200667 0 0.00100333 0 0 0.00301 0 0.00100333 +0.00100333 0.00301 0.00401333 0 0.00702333 0 0 0 +0 0 0 0.00200667 0.00301 0.00702333 0 0 +0.00200667 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0903 0.506683 0.97836 +1.05748 1.05446 1.05205 1.04842 1.0448 1.03695 1.03695 1.03574 +1.03332 1.02608 1.03634 1.0297 1.02608 1.02728 1.02608 1.02306 +1.02789 1.02668 1.02124 1.02306 1.02728 1.01581 1.02426 1.02245 +1.02064 1.01762 1.02004 1.02185 1.02064 1.01883 1.01762 1.0152 +1.02064 1.02124 1.02124 1.02124 1.01762 1.01943 1.014 1.0146 +1.05386 1.1401 1.14667 1.14395 1.1401 1.138 1.13625 1.1401 +1.14255 1.13975 1.13555 1.1408 1.1443 1.14584 1.13065 1.03514 +1.02245 1.0152 1.01702 1.01943 1.02185 1.02004 1.02185 1.0146 +1.02547 1.01883 1.01822 1.02064 1.02306 1.02306 1.02306 1.02849 +1.02124 1.02608 1.02608 1.02608 1.02245 1.02366 1.02366 1.02608 +1.02668 1.03332 1.02608 1.03212 1.02789 1.03453 1.03212 1.03755 +1.03695 1.0442 1.04601 1.04782 1.05809 1.05688 1.02728 0.7308 +0.21371 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00903 0 0.00602 0.00100333 0.00301 0 0 0 +0.00401333 0.00301 0.00501667 0.00200667 0.00301 0 0.00301 0 +0 0.00802667 0.00301 0.00301 0 0.00200667 0.00301 0 +0 0 0 0.00100333 0.00501667 0.0100333 0.00501667 0.00301 +0 0 0.00200667 0.00200667 0 0.00200667 0.00602 0.00602 +0.00100333 0 0 0.00401333 0.00200667 0 0.00903 0.00602 +0.00602 0.00200667 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00401333 0.00602 0.01204 0.00501667 +0.00602 0 0 0 0 0.00301 0.00200667 0 +0 0.00401333 0.00100333 0.00100333 0.00501667 0.00702333 0.00301 0 +0.00602 0 0 0 0 0.00401333 0.00602 0 +0.00401333 0 0 0 0.00200667 0.00401333 0.00200667 0 +0 0 0.00501667 0 0.00702333 0.00100333 0.00200667 0 +0 0 0.00301 0 0 0.00401333 0 0 +0 0.00301 0.00401333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0341133 0.396317 0.96024 1.05688 1.05326 +1.05386 1.04299 1.03755 1.03816 1.03272 1.0303 1.02245 1.03816 +1.02366 1.02728 1.0297 1.02728 1.02426 1.02547 1.02366 1.01943 +1.02487 1.02064 1.02366 1.02306 1.02185 1.02366 1.02849 1.02306 +1.01218 1.02124 1.01883 1.02366 1.01883 1.02668 1.02547 1.01762 +1.01641 1.02366 1.01581 1.01339 1.01641 1.01822 1.0146 1.01762 +1.09705 1.14542 1.1387 1.13905 1.13695 1.1394 1.14185 1.1352 +1.1366 1.13625 1.13835 1.1359 1.1387 1.14542 1.1415 1.0744 +1.014 1.02004 1.02245 1.01641 1.02366 1.01883 1.02245 1.02185 +1.02426 1.01702 1.01822 1.02185 1.02064 1.02245 1.02366 1.02306 +1.01762 1.02064 1.01943 1.02064 1.02366 1.02426 1.02185 1.02185 +1.02849 1.02366 1.02185 1.03091 1.02789 1.02849 1.0303 1.03393 +1.0297 1.03212 1.03816 1.03695 1.04178 1.04963 1.05748 1.06775 +1.01037 0.623896 0.13846 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.00200667 0 0 0 0 +0.00200667 0 0 0 0.00100333 0.00301 0 0 +0.00702333 0.00200667 0 0 0.00401333 0.00401333 0 0.00200667 +0.00802667 0.00301 0 0.00200667 0.00602 0 0 0 +0 0.00100333 0 0 0.00802667 0.00401333 0.00602 0.00602 +0 0.00401333 0.00401333 0 0.00602 0.00903 0.00401333 0 +0 0.00501667 0.00401333 0.00501667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0110367 0.00301 0 0.00702333 +0.00903 0.00501667 0.00501667 0.00702333 0.00200667 0 0.00501667 0.00501667 +0 0 0.00301 0.00200667 0.00100333 0 0.00401333 0.00602 +0.00702333 0.01204 0 0 0.00501667 0 0.00401333 0.0110367 +0.00100333 0.00702333 0.00200667 0 0 0 0.00501667 0.00702333 +0.00501667 0.00602 0 0 0 0.00501667 0 0.0100333 +0 0 0 0.00501667 0 0 0 0 +0.00602 0 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.244813 0.841568 1.04601 1.06352 1.05265 1.05386 +1.04057 1.03997 1.0303 1.0297 1.03453 1.03453 1.02426 1.02849 +1.02547 1.02366 1.02366 1.0297 1.02728 1.02487 1.02366 1.01822 +1.02547 1.02306 1.01883 1.02849 1.02185 1.02426 1.01581 1.02668 +1.02426 1.02185 1.01822 1.01943 1.01943 1.02426 1.01943 1.01883 +1.014 1.02004 1.02306 1.01943 1.01822 1.01581 1.01581 1.01218 +1.11385 1.14625 1.1401 1.1415 1.1387 1.1366 1.14185 1.1331 +1.1373 1.1401 1.13485 1.13625 1.13835 1.14115 1.14667 1.09705 +1.01037 1.01098 1.01702 1.02004 1.01641 1.02064 1.02064 1.02064 +1.02306 1.0146 1.02306 1.01581 1.01581 1.02185 1.01822 1.02366 +1.014 1.02124 1.01883 1.01822 1.02426 1.02306 1.01641 1.02426 +1.01943 1.01702 1.03272 1.02366 1.02487 1.02728 1.03332 1.02245 +1.02487 1.03212 1.02849 1.03695 1.03695 1.0454 1.04903 1.05084 +1.05567 1.05809 0.976548 0.46053 0.0491633 0 0 0 +0 0 0 0 0 0 0.00401333 0 +0 0 0 0 0 0 0 0 +0.00501667 0 0 0.00903 0.00200667 0 0 0.00602 +0.01204 0 0 0.01806 0.00301 0 0 0.00602 +0.00100333 0 0.00200667 0.00401333 0 0 0.00200667 0 +0 0 0.00100333 0.00401333 0.00501667 0.00401333 0.00401333 0 +0.00100333 0 0 0.00501667 0.00602 0 0 0.00301 +0.00501667 0 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00401333 0.00501667 0 +0.00200667 0.00702333 0.00100333 0.00301 0.00501667 0 0 0.00401333 +0.0100333 0 0 0 0 0.00200667 0 0 +0 0.00401333 0.0110367 0 0 0.00200667 0.00100333 0 +0.00100333 0.00501667 0 0.00802667 0.00301 0.00100333 0 0.00200667 +0 0 0.00100333 0.00301 0 0.00301 0 0 +0.00301 0 0.00200667 0 0 0 0 0 +0 0 0 0.00200667 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0.0852833 0.581933 1.01822 1.06171 1.05446 1.05326 1.03393 1.04118 +1.03755 1.03574 1.03453 1.02547 1.02728 1.02668 1.02789 1.02849 +1.02185 1.02547 1.02487 1.01641 1.01943 1.0297 1.01822 1.02004 +1.01581 1.02306 1.01641 1.01762 1.02245 1.02426 1.01762 1.02487 +1.01883 1.01762 1.02245 1.01641 1.02306 1.01702 1.02185 1.02185 +1.01702 1.02004 1.01702 1.01883 1.01702 1.0146 1.01641 1.01641 +1.11945 1.14255 1.13975 1.13975 1.1373 1.13485 1.138 1.13835 +1.138 1.13905 1.13905 1.13835 1.13975 1.14255 1.14395 1.1037 +1.0152 1.00916 1.01822 1.01702 1.01822 1.02185 1.01702 1.01883 +1.02064 1.02306 1.01883 1.02064 1.01822 1.02366 1.01702 1.01822 +1.02004 1.02306 1.02487 1.02124 1.02426 1.01762 1.02185 1.02608 +1.02185 1.02547 1.02245 1.02185 1.02124 1.02608 1.02487 1.01702 +1.03332 1.0303 1.02306 1.02728 1.03514 1.03816 1.03272 1.04057 +1.04903 1.04601 1.0605 1.05144 0.867328 0.2709 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00401333 0.00702333 0.00301 +0 0 0 0.00602 0 0 0 0.0130433 +0 0 0.0160533 0.00401333 0 0 0 0 +0 0.00602 0.00100333 0 0 0.00802667 0 0 +0.00401333 0.00100333 0.00301 0.00501667 0 0 0 0 +0 0 0.00802667 0.00501667 0 0.00602 0.00401333 0 +0 0 0 0.00200667 0.00802667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00301 0.00802667 0.00100333 0 0 +0 0 0.00301 0.00200667 0.00301 0.00200667 0 0 +0 0.00702333 0.00802667 0 0 0 0.00602 0 +0 0 0 0.00602 0.00401333 0 0 0.00501667 +0 0.00100333 0.00702333 0 0.0110367 0.00301 0.00301 0 +0.00702333 0.00401333 0.00100333 0 0 0.00301 0.00200667 0 +0.00401333 0.00200667 0 0 0.00301 0 0 0 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.29498 +0.929436 1.05265 1.05748 1.05567 1.03997 1.03997 1.0303 1.0303 +1.03634 1.02004 1.0291 1.0303 1.02547 1.02185 1.02608 1.02426 +1.01581 1.02004 1.0291 1.01943 1.02004 1.01883 1.01581 1.0291 +1.01883 1.01702 1.02487 1.01943 1.01581 1.02366 1.01581 1.02004 +1.01762 1.02064 1.01883 1.01641 1.0146 1.014 1.01883 1.01702 +1.01581 1.02366 1.01641 1.01822 1.02366 1.02245 1.01822 1.0146 +1.11105 1.13905 1.14115 1.138 1.1408 1.14045 1.13695 1.1401 +1.13695 1.1422 1.13415 1.13905 1.13765 1.1422 1.1436 1.0932 +1.01702 1.01218 1.01762 1.01943 1.01822 1.01702 1.02185 1.02124 +1.02064 1.02245 1.01641 1.01883 1.02124 1.01279 1.02064 1.02004 +1.02185 1.01641 1.02306 1.01702 1.01883 1.02185 1.02306 1.01943 +1.02306 1.02366 1.02124 1.02064 1.02004 1.02426 1.014 1.0297 +1.02487 1.02608 1.02487 1.02668 1.03453 1.02547 1.02608 1.03816 +1.03936 1.03816 1.04903 1.05386 1.05446 1.02789 0.616168 0.0953167 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00501667 0 0 0.0100333 0 +0 0.0100333 0.00100333 0 0.00100333 0 0.00100333 0.00602 +0.00602 0 0.00200667 0 0.0130433 0 0 0.00501667 +0.00401333 0.00301 0.00200667 0.00301 0 0.00401333 0.00401333 0 +0 0.00200667 0 0 0.00401333 0 0 0 +0 0 0.00702333 0.00602 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0100333 0.00301 0.00602 0.00200667 0.00401333 +0.00602 0.00301 0.00100333 0.00200667 0.00401333 0 0.00200667 0 +0.00501667 0 0.00301 0.00401333 0.00200667 0.00200667 0.00401333 0.00301 +0.00301 0 0 0 0.00200667 0.00602 0 0 +0.00802667 0 0 0.00301 0.00100333 0.00802667 0 0.00401333 +0 0 0.00702333 0.00602 0 0 0 0 +0 0 0.00100333 0 0 0.00602 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0682267 0.584943 1.0291 +1.06654 1.04903 1.04299 1.03997 1.04359 1.03332 1.0303 1.0291 +1.03332 1.03634 1.02245 1.01883 1.0291 1.02124 1.02849 1.02426 +1.01883 1.02004 1.02728 1.01883 1.01762 1.01702 1.01702 1.02306 +1.02064 1.01581 1.01883 1.01581 1.02245 1.02004 1.02668 1.01762 +1.0146 1.01943 1.01943 1.01883 1.02306 1.02306 1.02124 1.01762 +1.02064 1.01943 1.02124 1.01883 1.01822 1.01702 1.0146 1.0146 +1.09565 1.14625 1.1436 1.1359 1.14045 1.1394 1.1387 1.13555 +1.138 1.138 1.1359 1.13975 1.1415 1.1422 1.1429 1.07077 +1.00856 1.0152 1.0152 1.01641 1.02245 1.0152 1.01883 1.01279 +1.02004 1.02608 1.02124 1.02245 1.02306 1.01762 1.02849 1.02004 +1.02608 1.01641 1.01762 1.02004 1.01883 1.01762 1.02547 1.02185 +1.02306 1.02185 1.02608 1.01883 1.01762 1.02426 1.02004 1.02789 +1.0152 1.01943 1.02487 1.02426 1.02728 1.02608 1.0297 1.0303 +1.03393 1.03212 1.0454 1.04238 1.04359 1.05748 1.05869 0.941516 +0.333107 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0.00401333 0 0 +0.00100333 0.00301 0.00602 0.00301 0 0.00501667 0.00903 0 +0.00301 0 0 0 0 0.00301 0.00802667 0 +0 0.00401333 0 0.00301 0 0 0.00100333 0.00200667 +0 0 0.00301 0 0 0.00702333 0 0 +0 0.00401333 0.00602 0.00602 0.00301 0.00301 0.00100333 0 +0.00501667 0 0.00200667 0.00602 0.00802667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0 0.00200667 0.00100333 0 +0.00401333 0.00100333 0.00100333 0 0.00200667 0.0100333 0.0100333 0.00200667 +0 0.00100333 0 0 0.00401333 0 0 0.00401333 +0.00301 0.00301 0.00401333 0 0 0 0.00602 0 +0 0 0 0.00200667 0 0 0.00602 0.00100333 +0 0 0 0.00501667 0 0.00301 0.00501667 0 +0 0.00802667 0 0.00501667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.212707 0.871192 1.06111 1.05628 +1.05205 1.04963 1.03514 1.03332 1.02849 1.03212 1.02789 1.03151 +1.02668 1.02245 1.02728 1.02547 1.02185 1.02366 1.01702 1.02426 +1.02245 1.01641 1.02245 1.02426 1.02668 1.02245 1.02426 1.02064 +1.02306 1.01883 1.02487 1.0152 1.01943 1.01339 1.02004 1.02426 +1.01641 1.02004 1.02366 1.01339 1.02004 1.02064 1.0152 1.01581 +1.02426 1.02124 1.0152 1.02426 1.02064 1.02004 1.01822 1.01098 +1.05507 1.138 1.1429 1.13975 1.14045 1.1359 1.1366 1.1331 +1.14115 1.138 1.13555 1.13905 1.1436 1.14255 1.13065 1.02608 +1.0146 1.01641 1.01943 1.01641 1.02366 1.014 1.01702 1.01702 +1.02185 1.02245 1.01762 1.01822 1.01883 1.0146 1.0152 1.0146 +1.01581 1.01883 1.02185 1.02185 1.02004 1.02547 1.02185 1.02245 +1.01702 1.02124 1.02608 1.02185 1.01822 1.02789 1.0297 1.01883 +1.0146 1.02245 1.02608 1.02426 1.02064 1.02064 1.02426 1.0291 +1.0303 1.03091 1.03091 1.03332 1.04118 1.04601 1.05084 1.05809 +1.02849 0.58695 0.0712367 0 0 0 0 0 +0 0 0 0 0 0.00200667 0 0 +0 0 0.00501667 0 0 0.00802667 0 0 +0 0 0 0 0.0100333 0.00200667 0 0.00903 +0.00200667 0.00100333 0.00200667 0.00200667 0 0 0.00903 0.00301 +0.00100333 0.00802667 0.00200667 0.00702333 0.00602 0 0 0.00200667 +0.01505 0.00501667 0 0 0 0 0.00200667 0.00602 +0 0.00702333 0.01204 0.00903 0.00602 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0.00200667 0.00301 0.00200667 0.00200667 0 +0 0 0.00100333 0 0 0 0.00200667 0.00903 +0.00702333 0 0.00100333 0 0 0.00501667 0.00100333 0 +0 0.00301 0.00501667 0.0130433 0.00200667 0 0 0 +0 0 0 0 0 0 0.00301 0.00401333 +0.00702333 0.00501667 0 0 0 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.396317 1.0001 1.05265 1.05386 1.0448 +1.03755 1.03514 1.03634 1.03936 1.02789 1.0303 1.02789 1.02547 +1.02426 1.02547 1.02064 1.02547 1.02306 1.02608 1.01581 1.01943 +1.01641 1.02124 1.01581 1.01037 1.0291 1.0146 1.02185 1.02306 +1.02064 1.01943 1.0152 1.02245 1.0146 1.01943 1.01762 1.02789 +1.0146 1.02004 1.02849 1.01762 1.0146 1.01339 1.02366 1.02426 +1.02004 1.01883 1.01037 1.0146 1.01822 1.02245 1.01158 1.01279 +1.02124 1.1114 1.14325 1.14465 1.1408 1.1394 1.138 1.13205 +1.13905 1.13485 1.145 1.14115 1.14185 1.14667 1.0911 1.01218 +1.01037 1.02124 1.02366 1.01702 1.01339 1.02668 1.014 1.02185 +1.02668 1.01339 1.01641 1.01641 1.01762 1.02064 1.02064 1.02064 +1.01581 1.02004 1.01279 1.02064 1.02668 1.01641 1.02185 1.02185 +1.0152 1.02487 1.02004 1.02245 1.0152 1.02547 1.014 1.01943 +1.01702 1.02245 1.01762 1.02185 1.03151 1.02426 1.02608 1.02306 +1.0291 1.02789 1.0297 1.03695 1.03574 1.04178 1.03755 1.04661 +1.05748 1.05507 0.87248 0.20167 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0 0.00602 0.00200667 0 0.00501667 +0 0 0 0 0 0.00401333 0 0 +0 0.00100333 0 0 0 0.00602 0 0 +0.00602 0 0 0 0 0 0 0.00602 +0 0 0 0 0.00501667 0.00301 0.00200667 0.00100333 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0160533 0.00903 0.00200667 0.00301 0.00602 0.01204 +0.00602 0 0.00301 0.00501667 0 0 0 0.00100333 +0.00401333 0.00100333 0.00200667 0.00602 0.00301 0 0 0 +0.00301 0.00200667 0.00401333 0 0.00200667 0.00501667 0.00501667 0.00702333 +0 0.00100333 0.00100333 0.00200667 0 0 0 0 +0.00200667 0.00100333 0 0.00301 0 0 0.00501667 0.00501667 +0.00200667 0.00401333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0411367 0.569893 1.03332 1.05748 1.05446 1.03936 1.03695 +1.04118 1.02728 1.02547 1.02426 1.0291 1.02064 1.02124 1.02426 +1.02306 1.02487 1.02366 1.02004 1.02185 1.02547 1.01822 1.02306 +1.02366 1.02366 1.0146 1.02064 1.02004 1.01702 1.01702 1.02064 +1.01822 1.02547 1.01641 1.02064 1.01943 1.02124 1.01581 1.02185 +1.01581 1.02004 1.01883 1.02124 1.02004 1.014 1.02608 1.01883 +1.01762 1.01581 1.01762 1.0152 1.02064 1.01822 1.02064 1.01641 +1.014 1.04359 1.12715 1.14584 1.1429 1.145 1.13975 1.13905 +1.1415 1.1345 1.14465 1.14255 1.13485 1.1163 1.0297 1.01098 +1.01218 1.01218 1.01822 1.02185 1.01702 1.02124 1.01641 1.01702 +1.01822 1.01641 1.02004 1.02426 1.02306 1.01943 1.0146 1.02064 +1.01581 1.01822 1.0146 1.02487 1.01822 1.02124 1.02245 1.0152 +1.01702 1.01822 1.0146 1.01822 1.01822 1.01641 1.02124 1.02366 +1.01581 1.02185 1.02487 1.02728 1.02547 1.01943 1.01943 1.0303 +1.02668 1.02245 1.0297 1.02668 1.03393 1.02849 1.03453 1.04238 +1.04661 1.05205 1.05809 0.982588 0.34314 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0.0110367 0.00501667 0 0 0 +0 0 0 0 0.00702333 0.00602 0.00100333 0 +0.0100333 0 0.00702333 0.00401333 0.00802667 0.00301 0.00200667 0.00301 +0 0 0.00200667 0 0.01204 0.00702333 0.0110367 0.00200667 +0 0 0.00100333 0 0 0 0.00602 0 +0.00602 0.00301 0 0 0.00401333 0.0110367 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0 0 0 +0.00602 0.00200667 0 0.00200667 0.00802667 0 0 0.00401333 +0.00100333 0.00301 0 0 0.00501667 0.00802667 0.00501667 0 +0 0 0 0.00702333 0.00100333 0 0 0.00501667 +0.00401333 0 0 0.00401333 0.00301 0 0 0 +0 0.00602 0.00802667 0.00501667 0.00501667 0.00802667 0 0.00401333 +0 0.00501667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.0953167 0.748832 1.0593 1.05688 1.04601 1.03755 1.04118 1.02849 +1.03091 1.02789 1.02728 1.02064 1.02426 1.02185 1.02547 1.02124 +1.02064 1.02245 1.02547 1.02245 1.0303 1.01822 1.02728 1.02245 +1.02547 1.01822 1.01339 1.02004 1.01943 1.0152 1.02547 1.01702 +1.02306 1.02185 1.02185 1.01641 1.02306 1.02004 1.02124 1.02306 +1.02185 1.01641 1.01581 1.01762 1.01702 1.01943 1.02245 1.01158 +1.01883 1.02487 1.02185 1.00916 1.01702 1.0146 1.01883 1.01339 +1.01822 1.01581 1.05326 1.1226 1.13835 1.14542 1.1422 1.13975 +1.1401 1.14584 1.14625 1.1408 1.10825 1.03091 1.02245 1.01037 +1.02004 1.01339 1.01883 1.0146 1.01702 1.0152 1.01822 1.014 +1.01762 1.02426 1.02245 1.01702 1.02064 1.01702 1.01702 1.0152 +1.02608 1.01641 1.01641 1.02366 1.02426 1.02306 1.01822 1.02668 +1.02004 1.02185 1.01702 1.0291 1.0146 1.02366 1.02426 1.01943 +1.02004 1.02366 1.01822 1.02547 1.02124 1.01822 1.02547 1.03091 +1.01943 1.02849 1.02064 1.02004 1.02366 1.03332 1.02849 1.03574 +1.04299 1.03997 1.05084 1.05205 1.0152 0.491633 0.0140467 0 +0 0 0 0 0 0 0 0.00200667 +0 0 0 0.00100333 0 0 0 0 +0 0 0.00702333 0.00200667 0.00802667 0 0.00702333 0.0110367 +0.00702333 0.00301 0.00301 0 0.00100333 0.00602 0 0 +0 0 0.00100333 0 0 0 0 0 +0.00100333 0 0 0 0.00702333 0.0110367 0 0.00702333 +0.00100333 0 0 0.00702333 0.00903 0.00100333 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0.00401333 0.00702333 0 0.00200667 0.00702333 0 +0 0.00301 0 0 0.00100333 0 0 0 +0 0.00100333 0 0 0 0 0.00301 0.00602 +0 0 0 0 0.00602 0 0 0 +0 0.0100333 0 0 0 0.00501667 0 0.00602 +0 0 0.00100333 0 0 0 0.00501667 0.00301 +0 0 0.00802667 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0.13244 +0.851872 1.0593 1.05326 1.05084 1.04299 1.03393 1.02728 1.02728 +1.02668 1.02789 1.03272 1.02245 1.02426 1.02547 1.0297 1.02366 +1.01822 1.01943 1.02366 1.02124 1.02426 1.02245 1.01702 1.02064 +1.02004 1.0303 1.01762 1.01883 1.01762 1.01279 1.01943 1.02064 +1.01943 1.02487 1.01279 1.01702 1.02306 1.02245 1.0152 1.02426 +1.02064 1.02426 1.02124 1.01218 1.02366 1.02366 1.01098 1.02124 +1.02004 1.0146 1.01943 1.01641 1.01943 1.01943 1.01943 1.0152 +1.01702 1.01279 1.01943 1.02426 1.0939 1.13065 1.138 1.13485 +1.14325 1.1366 1.12225 1.0785 1.02004 1.00977 1.0146 1.00735 +1.0152 1.02004 1.01702 1.01822 1.02487 1.02185 1.02185 1.01279 +1.01762 1.01883 1.02245 1.01702 1.02245 1.02366 1.02245 1.0146 +1.02366 1.02245 1.01581 1.01702 1.02185 1.01822 1.0152 1.00856 +1.01822 1.0146 1.02245 1.01822 1.02004 1.02245 1.02124 1.01581 +1.02487 1.02245 1.02426 1.01702 1.02124 1.02366 1.02124 1.02426 +1.02789 1.02306 1.02185 1.02728 1.02789 1.02849 1.02487 1.03453 +1.03272 1.03997 1.03755 1.04963 1.05809 1.04238 0.593973 0.0351167 +0 0 0 0 0 0 0 0 +0.00702333 0 0 0 0 0 0.00200667 0 +0.00301 0.00802667 0.00200667 0 0.00301 0 0.00401333 0 +0.00100333 0.00200667 0 0.00802667 0.0110367 0 0 0 +0 0.01204 0.00200667 0.00602 0 0.00100333 0.00401333 0 +0 0 0.00200667 0.00903 0.00301 0 0.00100333 0.00100333 +0.00100333 0 0.00100333 0.00200667 0.00200667 0.00200667 0.0130433 0 +0 0 0 0 0 0 0 0 +0 0.00903 0.00301 0 0.01204 0 0 0.00200667 +0.00501667 0.00903 0 0 0 0.00100333 0.00401333 0.0100333 +0.00301 0.00501667 0.00702333 0 0 0 0 0.00301 +0.00602 0 0 0 0 0.00301 0.00200667 0.00100333 +0.00401333 0 0.00100333 0.00301 0.00100333 0 0.00501667 0 +0.00100333 0 0 0 0 0 0 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.170567 0.91112 +1.05748 1.05386 1.0454 1.03816 1.03755 1.03212 1.02487 1.02547 +1.02245 1.02426 1.02245 1.02487 1.02004 1.0152 1.02306 1.02306 +1.02366 1.0152 1.02366 1.01762 1.02668 1.01943 1.01943 1.02124 +1.01641 1.02668 1.02728 1.01822 1.01883 1.01883 1.01641 1.01943 +1.01822 1.02306 1.01943 1.01822 1.02547 1.014 1.0146 1.01641 +1.01581 1.02426 1.02426 1.01943 1.01279 1.01943 1.02185 1.0146 +1.02849 1.01641 1.02245 1.02185 1.01218 1.02004 1.01581 1.01702 +1.02245 1.01641 1.01581 1.00312 1.0146 1.02789 1.05628 1.06594 +1.06352 1.03755 1.02185 1.01581 1.01158 1.0146 1.02064 1.02185 +1.01822 1.01762 1.01883 1.01098 1.01218 1.01762 1.02064 1.01702 +1.01943 1.01883 1.01762 1.01822 1.02306 1.02124 1.01883 1.01339 +1.01581 1.01822 1.0146 1.01822 1.02004 1.02245 1.014 1.01943 +1.02245 1.02004 1.01581 1.01883 1.02306 1.01943 1.0146 1.02426 +1.01762 1.02306 1.02185 1.02004 1.02004 1.02004 1.02487 1.02306 +1.0146 1.01339 1.02366 1.02185 1.02426 1.02547 1.02728 1.03634 +1.03212 1.02608 1.03332 1.0442 1.04963 1.06292 1.05567 0.696024 +0.0551833 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00301 0 0 +0.00802667 0.00200667 0 0.00301 0.00401333 0 0 0 +0 0 0 0.00301 0 0 0 0 +0.00301 0 0 0.00100333 0.00301 0 0 0 +0 0.00501667 0.00401333 0 0 0.00501667 0.00802667 0.00200667 +0.00200667 0.00501667 0.00501667 0.00501667 0.00100333 0.00702333 0.00301 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00100333 0.00301 0 0.00401333 0.00301 0 +0 0 0.00802667 0 0 0 0.00100333 0 +0 0 0.00301 0.00802667 0 0.00401333 0.00200667 0 +0 0.00200667 0.00200667 0.00200667 0 0.00401333 0 0.00602 +0.00501667 0 0 0 0.00100333 0 0 0.00301 +0.00200667 0.00100333 0 0 0 0 0 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.199663 0.937892 1.06352 +1.04661 1.0442 1.0448 1.03514 1.03514 1.02668 1.02728 1.02366 +1.02306 1.01883 1.02004 1.02306 1.02245 1.01581 1.02185 1.02366 +1.02245 1.02245 1.02124 1.01279 1.00856 1.00373 1.00494 0.997084 +1.00373 1.01581 1.01883 1.02064 1.0146 1.02185 1.01762 1.02064 +1.0152 1.02426 1.02185 1.02124 1.01822 1.02124 1.01762 1.01702 +1.02064 1.01641 1.02124 1.02185 1.02306 1.01581 1.02668 1.0146 +1.02789 1.01762 1.02004 1.01883 1.0152 1.01581 1.02306 1.02004 +1.01822 1.01822 1.02064 1.01762 1.01822 1.00735 1.01158 1.01339 +1.0152 1.01158 1.01037 1.02004 1.01218 1.01702 1.01218 1.01943 +1.01581 1.01641 1.02064 1.01702 1.02004 1.02245 1.02124 1.01702 +1.02426 1.02064 1.0152 1.01762 1.01762 1.01098 1.01581 1.01762 +1.02306 1.02185 1.02366 1.02004 1.01943 1.01762 1.0152 1.02245 +1.02366 1.0146 1.01762 1.0152 1.01822 1.01822 1.02426 1.02124 +1.02245 1.01581 1.01702 1.0152 1.02306 1.02245 1.02608 1.01641 +1.00916 1.02366 1.01943 1.02849 1.02608 1.02547 1.02668 1.01702 +1.02245 1.02789 1.03393 1.03634 1.04178 1.04661 1.04782 1.04842 +0.738528 0.06923 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00602 +0 0 0 0.00401333 0 0 0.00501667 0 +0 0 0.00501667 0 0 0.00200667 0.00401333 0.00100333 +0.00301 0.00100333 0.00301 0.00501667 0 0 0 0 +0.00602 0 0 0.00501667 0.00401333 0.00501667 0 0 +0 0.00200667 0 0 0.00100333 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0.0110367 0.00401333 0 0.00501667 0 0.00401333 0.00301 +0 0 0 0.00401333 0 0 0 0.00301 +0.00401333 0 0 0.00401333 0.00401333 0 0.00200667 0.00200667 +0.00100333 0.00200667 0 0 0 0 0.00100333 0 +0.00200667 0.0160533 0.0100333 0 0 0.00100333 0.00301 0 +0 0 0.00301 0 0.00100333 0 0 0 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0.18361 0.944536 1.0599 1.05265 +1.04722 1.03574 1.0297 1.03393 1.02728 1.02789 1.02668 1.0291 +1.02366 1.02245 1.02004 1.02547 1.01762 1.01822 1.02124 1.0152 +1.02004 1.01581 0.9995 0.986816 0.995272 0.985608 0.995876 0.986816 +0.994064 0.989836 1.014 1.01822 1.00916 1.01218 1.01702 1.02064 +1.014 1.0146 1.02124 1.02547 1.02426 1.01641 1.0152 1.01581 +1.02426 1.01762 1.02064 1.01641 1.02185 1.01218 1.02185 1.01702 +1.02366 1.02064 1.02064 1.01702 1.014 1.01339 1.01822 1.01641 +1.01641 1.02185 1.02185 1.01279 1.01702 1.00675 1.01883 1.01581 +1.01098 1.01702 1.0146 1.02366 1.02124 1.0146 1.014 1.01943 +1.01641 1.0146 1.02245 1.01702 1.0152 1.01883 1.02004 1.01822 +1.02487 1.0152 1.02004 1.01581 1.02728 1.02366 1.01762 1.01702 +1.01581 1.02366 1.0152 1.0146 1.01883 1.01762 1.02064 1.02849 +1.01943 1.01581 1.02306 1.01641 1.02185 1.01822 0.992856 0.995272 +0.988024 0.99346 0.992856 1.0001 1.00977 1.01822 1.01943 1.01702 +1.0152 1.02366 1.02185 1.01943 1.02547 1.02185 1.01702 1.02426 +1.02547 1.02487 1.03332 1.02728 1.03453 1.03332 1.04299 1.04903 +1.06292 0.75656 0.0581933 0 0 0 0 0 +0 0.00401333 0 0 0 0 0 0 +0.00100333 0.00100333 0.00602 0.00301 0.00100333 0 0 0.00200667 +0.00401333 0 0 0 0.00501667 0.00903 0 0 +0.00501667 0.00100333 0 0 0 0.00100333 0.00401333 0 +0.00100333 0 0.00200667 0 0 0 0 0.00602 +0.00100333 0.00200667 0 0.00501667 0.00301 0.00702333 0.00702333 0.00702333 +0 0 0 0 0 0 0 0 +0.00802667 0.00602 0.0110367 0.00301 0 0.00602 0.00200667 0.00401333 +0 0.00100333 0.00100333 0.00200667 0.01204 0.00200667 0 0 +0 0.00200667 0 0.00401333 0.00200667 0.00702333 0.00401333 0.00401333 +0.00501667 0.00602 0.00802667 0.00200667 0 0 0.00702333 0 +0 0 0.0100333 0.00100333 0 0 0.00401333 0 +0.00200667 0 0 0 0 0 0.00301 0 +0 0.00401333 0.00602 0 0 0 0 0 +0 0 0 0.16555 0.929436 1.0593 1.05144 1.0448 +1.04661 1.03514 1.02004 1.02366 1.03453 1.02608 1.02124 1.02124 +1.02185 1.01822 1.02426 1.02185 1.02306 1.02306 1.02487 1.01762 +1.01098 0.99346 1.00131 0.99044 0.99648 0.995876 0.99346 0.99044 +0.99044 0.995876 0.99346 1.00192 1.02306 1.02487 1.02608 1.01822 +1.02487 1.01339 1.0146 1.02366 1.02124 1.02064 1.01762 1.02849 +1.02366 1.02004 1.02487 1.0146 1.0152 1.01098 1.02004 1.01883 +1.0146 1.02306 1.014 1.02004 1.01943 1.01098 1.01883 1.02306 +1.01581 1.01702 1.0146 1.01339 1.0146 1.01339 1.02306 1.01702 +1.01218 1.0146 1.01883 1.0146 1.0152 1.01822 1.01883 1.00856 +1.0152 1.02728 1.02064 1.01581 1.01641 1.02728 1.01943 1.0146 +1.01943 1.0146 1.01883 1.02366 1.01762 1.01702 1.02306 1.02547 +1.02004 1.02124 1.0146 1.02608 1.0152 1.01581 1.02245 1.02668 +1.01943 1.01702 1.02487 1.0152 1.00312 0.983796 0.986212 0.995272 +0.991648 0.998896 0.985004 0.989836 0.997084 0.991044 1.01037 1.01762 +1.02124 1.01762 1.0152 1.02124 1.02004 1.02306 1.01883 1.02789 +1.01822 1.03332 1.02789 1.02426 1.03393 1.03514 1.03816 1.04963 +1.05144 1.04722 0.75012 0.0551833 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0 0 0 0.00100333 0.00100333 0.00401333 +0 0.00100333 0.00702333 0.00401333 0.00100333 0 0 0.00702333 +0 0 0 0.00200667 0.00301 0 0 0.00200667 +0.00100333 0.00301 0 0 0 0 0.00200667 0.00301 +0.00602 0.00501667 0.00301 0.00501667 0.00602 0.00200667 0.00100333 0.00200667 +0 0 0 0 0 0 0 0 +0.00501667 0 0.00200667 0.00802667 0.00802667 0 0.00100333 0.00602 +0.00401333 0 0 0 0 0.00401333 0.00501667 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0.00301 0.00501667 0.00903 0 0 0.00100333 +0 0.00200667 0 0.00301 0.00401333 0.00602 0.00802667 0.00501667 +0.00702333 0.00802667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.101337 0.895664 1.05688 1.04722 1.04299 1.02547 +1.03514 1.03634 1.0297 1.02064 1.01762 1.02185 1.02426 1.02366 +1.02004 1.02306 1.02124 1.01641 1.02849 1.01702 1.02064 1.01218 +0.99346 0.983796 1.0001 0.992856 0.992856 0.988024 0.99346 0.997688 +0.988024 0.991044 0.994668 0.989232 1.01218 1.02366 1.02124 1.01339 +1.01641 1.02487 1.014 1.01158 1.02124 1.01762 1.01581 1.0146 +1.02124 1.02004 1.02124 1.01943 1.01943 1.0152 1.02064 1.01581 +1.0152 1.01822 1.01641 1.01883 1.02245 1.02426 1.0146 1.01822 +1.01943 1.014 1.01883 1.01883 1.01943 1.014 1.01158 1.02124 +1.02004 1.01339 1.01762 1.01702 1.02366 1.01883 1.02004 1.0146 +1.02306 1.02547 1.01702 1.02124 1.01702 1.01883 1.01702 1.01943 +1.02064 1.01822 1.01943 1.0152 1.02064 1.01822 1.02547 1.02124 +1.02185 1.01339 1.01762 1.01641 1.01641 1.02426 1.02608 1.01339 +1.01762 1.01883 1.02124 0.995876 0.991044 0.992856 0.998896 0.995876 +0.994668 0.997688 0.995272 0.998896 0.98742 0.988024 0.995876 1.01098 +1.02124 1.02487 1.01822 1.02185 1.01943 1.0146 1.01822 1.02608 +1.02668 1.02487 1.01943 1.02728 1.02608 1.03755 1.03755 1.0442 +1.03997 1.05326 1.05144 0.665112 0.02709 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00602 0.00301 0.00702333 0.0140467 0 0.00903 0.00200667 +0.00401333 0 0 0 0 0.00301 0.00602 0 +0 0 0.00200667 0.00501667 0.00401333 0.00501667 0.00100333 0.00702333 +0 0 0 0.00903 0.00802667 0 0.00802667 0.00602 +0.00602 0 0.00903 0.00401333 0.00301 0 0.00100333 0.00301 +0 0 0 0 0 0 0 0 +0.00401333 0.00602 0 0 0.00401333 0.00501667 0 0 +0.00802667 0.00602 0 0 0.00100333 0.00602 0.00200667 0.00401333 +0.00903 0.00200667 0 0.00702333 0 0 0 0 +0 0 0 0 0 0.00903 0 0.00200667 +0 0.00501667 0.00401333 0 0 0 0 0.00401333 +0.00100333 0.00200667 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0461533 0.787472 1.06654 1.05567 1.0454 1.03393 1.03212 +1.0297 1.02849 1.02728 1.02547 1.02064 1.02366 1.02004 1.02306 +1.02185 1.01641 1.01641 1.02004 1.02608 1.01943 1.02366 0.994064 +0.992856 0.98742 0.992252 0.997084 0.989836 0.994064 0.98742 0.995272 +0.99044 0.989836 0.985004 0.991648 0.995272 1.01702 1.02547 1.02124 +1.01943 1.02245 1.02064 1.01279 1.01702 1.02004 1.02185 1.01943 +1.01762 1.02426 1.02124 1.01641 1.02185 1.01883 1.02487 1.01702 +1.01943 1.01641 1.01883 1.01822 1.01943 1.0146 1.02245 1.01581 +1.01641 1.02487 1.02245 1.01098 1.0152 1.01762 1.01762 1.01641 +1.02124 1.01339 1.01762 1.01218 1.01581 1.00494 1.00131 1.00433 +1.0152 1.01158 1.00312 1.01158 1.0146 1.01822 1.02245 1.0146 +1.01279 1.02004 1.02064 1.0146 1.01762 1.02245 1.02728 1.0152 +1.01037 1.01822 1.02547 1.00977 1.01943 1.02124 1.0146 1.01158 +1.02245 1.02064 1.00192 0.98742 0.98742 0.99044 0.994064 0.995272 +0.992252 0.995876 0.989836 0.992856 0.991044 0.991648 0.99044 0.99346 +1.0146 1.01581 1.01943 1.02306 1.01702 1.02426 1.01943 1.02668 +1.01279 1.02547 1.02366 1.02487 1.02668 1.02849 1.02306 1.03514 +1.04118 1.04118 1.05265 1.04903 0.561867 0.00401333 0 0 +0 0 0 0 0 0 0 0.00501667 +0 0 0 0 0 0 0.00401333 0 +0.00100333 0.00200667 0 0 0.00301 0.00100333 0.00100333 0.00401333 +0 0.00501667 0.00301 0.00602 0.00100333 0 0.00702333 0 +0 0.00200667 0.00802667 0 0 0.00301 0 0 +0 0.00401333 0 0 0 0 0.00301 0.00702333 +0.00602 0 0 0 0 0 0 0.00702333 +0.00401333 0.00100333 0 0.00100333 0 0.00200667 0.00602 0 +0 0.00401333 0.00802667 0.00301 0 0 0 0 +0 0.00602 0.00100333 0 0 0.00501667 0.00100333 0.00401333 +0 0 0 0 0.00401333 0.00301 0.00602 0.00100333 +0.00100333 0 0 0.00903 0.00602 0 0 0 +0 0.0110367 0 0 0.00802667 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.585947 1.05144 1.05386 1.04601 1.04661 1.03453 1.02608 +1.01822 1.03212 1.02487 1.02668 1.01943 1.02004 1.01702 1.02245 +1.02366 1.02728 1.02004 1.0152 1.02185 1.02064 1.01158 0.989232 +0.989232 0.988024 0.992252 0.988628 0.995272 0.992252 0.9844 0.997084 +0.992252 0.995876 0.991044 0.989232 0.991648 1.00554 1.01641 1.01702 +1.01883 1.01702 1.02064 1.02366 1.01339 1.0146 1.02185 1.01641 +1.01581 1.01218 1.02245 1.01279 1.02064 1.01641 1.01943 1.02608 +1.014 1.0152 1.01943 1.01279 1.00916 1.01098 1.0146 1.02245 +1.02064 1.01702 1.0146 1.01762 1.01822 1.02366 1.01702 1.01822 +1.01822 1.02185 1.02608 1.014 1.02728 1.01581 1.02185 1.02245 +1.01883 0.9995 0.998896 0.9995 1.01037 1.0146 1.02366 1.01702 +1.02547 1.02124 1.02426 1.02185 1.01943 1.02547 1.02487 1.01822 +1.01641 1.02245 1.014 1.01702 1.02064 1.01702 1.01822 1.01702 +1.02064 1.01883 0.988024 0.995272 0.994064 0.995272 0.986816 0.997084 +0.99346 0.991648 0.997084 0.994064 0.986816 0.986816 0.991044 0.991648 +1.00614 1.01943 1.02547 1.0146 1.02245 1.0152 1.02064 1.0152 +1.03091 1.01943 1.02124 1.01762 1.02668 1.01762 1.02728 1.03272 +1.03393 1.0291 1.04178 1.05144 1.03332 0.41839 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00702333 0.00501667 +0 0 0 0.0130433 0.00200667 0.00802667 0 0 +0 0 0 0 0 0.00301 0 0 +0.00200667 0.00200667 0 0 0.00100333 0.00602 0.00301 0.00401333 +0.00301 0.00301 0.00401333 0.00200667 0.00200667 0.00602 0.00501667 0.00100333 +0.00903 0 0 0 0 0 0 0 +0.00401333 0.0110367 0.00401333 0.00100333 0.00301 0 0 0.00200667 +0 0 0 0.00200667 0.00702333 0.00301 0.00100333 0 +0 0.00100333 0.0100333 0.0130433 0 0.00401333 0.00301 0 +0.00401333 0.00100333 0 0 0 0 0 0 +0 0.00802667 0.00100333 0 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.404343 1.03091 1.05326 1.04842 1.03755 1.03393 1.03574 1.03453 +1.02064 1.02245 1.02245 1.02426 1.02608 1.02185 1.02245 1.01702 +1.0146 1.01943 1.02608 1.01702 1.0146 1.0146 1.00796 0.995876 +0.991648 0.989836 0.99346 0.98742 0.988628 0.9995 0.988628 0.99346 +0.992252 0.989836 0.985608 0.995876 0.99346 0.998292 1.02124 1.0297 +1.02668 1.0146 1.01883 1.02849 1.01702 1.01641 1.02064 1.02789 +1.01943 1.01943 1.01581 1.02064 1.02306 1.01158 1.00614 1.02306 +1.01158 1.01158 1.02064 1.0152 1.02306 1.02366 1.01641 1.02245 +1.02366 1.01762 1.02245 1.02064 1.02124 1.0146 1.02124 1.01943 +1.02004 1.02426 1.02426 1.01581 1.02185 1.02306 1.02426 1.01641 +1.01581 1.01822 1.02608 1.014 1.02004 1.0146 1.02004 1.0146 +1.01943 1.00614 1.0152 1.01641 1.01762 1.01943 1.02185 1.014 +1.02306 1.02064 1.01943 1.02245 1.02245 1.02366 1.01883 1.02849 +1.02426 0.9995 0.989836 0.99648 0.988024 0.99346 0.99346 0.99044 +0.983192 1.00252 0.995876 0.983796 0.991648 1.00071 0.991648 0.995876 +0.995272 1.01702 1.02064 1.02306 1.01883 1.02124 1.01762 1.02366 +1.02124 1.02185 1.02366 1.01822 1.02306 1.02064 1.03091 1.0297 +1.02547 1.03936 1.04118 1.04903 1.06292 1.00312 0.260867 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00401333 0 0.00702333 0.00301 0 +0 0.00401333 0.00802667 0 0.00200667 0 0 0.0140467 +0.00802667 0.00200667 0 0.00200667 0.01204 0.00200667 0 0.00401333 +0 0.00602 0.00200667 0.00200667 0.00702333 0.0100333 0.00200667 0 +0 0 0 0 0.00602 0.00602 0.01204 0.00802667 +0.00602 0 0 0 0 0 0 0.0100333 +0 0 0.00401333 0.00602 0.00100333 0 0 0.00200667 +0.00903 0.00100333 0 0 0 0.00501667 0.00401333 0.00501667 +0.00200667 0 0 0 0.00602 0 0 0.00501667 +0.00100333 0 0.00501667 0.00501667 0.00501667 0 0 0.00301 +0 0 0.00100333 0 0 0.00501667 0.00200667 0 +0 0 0.00602 0 0.00903 0.00200667 0 0 +0 0 0 0 0 0 0 0.20167 +0.989836 1.06111 1.04903 1.03755 1.03332 1.0297 1.02306 1.0303 +1.02185 1.02547 1.0152 1.02185 1.01943 1.01218 1.02185 1.0146 +1.02004 1.01279 1.014 1.02004 1.0146 1.0152 1.00312 0.988628 +0.995876 0.991044 0.986212 0.998896 0.991044 0.994668 0.988024 0.998896 +0.991648 0.989232 0.989232 0.991648 0.992856 1.00252 1.02124 1.02185 +1.02849 1.02124 1.0146 1.02487 1.01943 1.01702 1.01762 1.0146 +1.01581 1.01943 1.02185 1.01158 1.02064 1.01158 1.0152 1.02426 +1.02064 1.01581 1.01943 1.01822 1.01883 1.02366 1.02185 1.0146 +1.02064 1.01339 1.02426 1.02426 1.01762 1.0152 1.02366 1.01581 +1.01883 1.01943 1.0146 1.02124 1.02004 1.02608 1.01762 1.02004 +1.01581 1.01702 1.01943 1.01943 1.02064 1.0291 1.01702 1.01822 +1.01581 1.00916 1.01581 1.02004 1.01943 1.02608 1.0146 1.0146 +1.02185 1.01641 1.02547 1.02064 1.01702 1.0146 1.02124 1.02426 +1.02124 0.998292 0.991648 0.989836 0.995272 1.00131 0.983796 0.986212 +0.992856 0.997688 0.982588 0.99044 1.00071 0.985608 0.997084 0.994668 +0.995272 1.01218 1.01762 1.01037 1.0146 1.01702 1.02426 1.01641 +1.02064 1.01883 1.02004 1.02064 1.02306 1.02849 1.02124 1.01581 +1.02668 1.03816 1.02789 1.04903 1.04178 1.05628 0.94212 0.127423 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0 0.00802667 0 0 0 +0.00903 0.00200667 0 0 0 0.00401333 0.00100333 0.00200667 +0.00100333 0.00100333 0.00100333 0.00501667 0 0 0.00501667 0.0100333 +0.00702333 0 0 0.0110367 0.00401333 0 0 0 +0 0 0.00602 0.00602 0.00301 0.00602 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0 0 0 0.00602 0.00702333 0.00802667 0 +0 0.00802667 0.00200667 0 0.00200667 0 0 0 +0 0.00802667 0.00401333 0 0 0.00401333 0.00602 0 +0 0 0 0.00301 0.00200667 0.00100333 0.00100333 0 +0 0.00301 0.00802667 0.0110367 0.00100333 0.00301 0.00301 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0471567 0.855736 +1.05688 1.05386 1.04661 1.03272 1.03212 1.0297 1.02789 1.02849 +1.02185 1.01883 1.01641 1.0152 1.01702 1.01702 1.02487 1.02004 +1.02004 1.02668 1.01943 1.02185 1.0297 1.0146 1.00071 0.989836 +0.99044 0.997084 0.989836 0.991044 0.988024 0.991648 0.998292 0.997084 +0.992252 0.9995 0.994668 0.994064 0.992252 0.995876 1.01218 1.02124 +1.02064 1.01943 1.02547 1.01641 1.01822 1.02306 1.01822 1.02306 +1.02245 1.0291 1.00252 1.00916 1.00796 1.01641 1.02366 1.02366 +1.02306 1.0291 1.01339 1.02185 1.02366 1.00916 1.00856 1.01581 +1.02487 1.014 1.01822 1.02185 1.02306 1.01822 1.01762 1.02487 +1.01883 1.02004 1.02306 1.02064 1.01702 1.02547 1.01883 1.0152 +1.0146 1.02426 1.01702 1.01822 1.01581 1.02185 1.02004 1.0152 +1.02245 1.01037 1.01883 1.01158 1.0146 1.02487 1.0152 1.02004 +1.02487 1.02426 1.02608 1.02124 1.0152 1.02064 1.01702 1.02004 +1.02064 0.99648 0.992856 0.988024 0.988024 0.988024 0.991648 0.995876 +0.994668 0.988024 0.995876 1.0001 0.9844 0.994668 0.991648 0.983192 +0.99044 0.997688 1.01581 1.02064 1.02124 1.01702 1.02185 1.0152 +1.01822 1.02306 1.02185 1.02064 1.02124 1.02124 1.02004 1.02789 +1.03574 1.03453 1.03574 1.03514 1.0448 1.05386 1.06232 0.6986 +0.0190633 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0 0 0 0 0.00602 0 0.00200667 0.00100333 +0.00200667 0 0 0 0 0.00100333 0 0 +0 0.00301 0.00501667 0 0 0 0.00100333 0.00301 +0.00301 0.00903 0.00501667 0.00501667 0.00401333 0.00301 0 0 +0 0 0 0 0 0 0 0.00501667 +0.00401333 0.00401333 0 0 0 0 0 0.00401333 +0 0 0.00501667 0.00903 0 0.00602 0.00501667 0.00100333 +0 0 0 0.00401333 0.00200667 0.00301 0 0.0130433 +0.00602 0 0 0 0.00501667 0.00602 0 0 +0.00602 0 0 0.00702333 0.00100333 0 0.00401333 0 +0.00200667 0.00401333 0 0.00100333 0 0 0 0 +0 0 0 0 0 0 0.512703 1.04661 +1.04782 1.03816 1.03816 1.03091 1.02366 1.03453 1.02487 1.02245 +1.02547 1.02608 1.02608 1.0291 1.02004 1.01279 1.01822 1.02124 +1.01641 1.02064 1.02728 1.0146 1.01822 1.02849 1.00433 0.991044 +0.99648 0.991648 0.989232 0.986212 0.99648 0.994064 0.99648 0.986212 +0.986212 0.992252 0.992856 0.992252 0.989232 0.988024 1.02124 1.01762 +1.02004 1.01943 1.02426 1.0146 1.014 1.01822 1.01883 1.02004 +1.014 1.02124 1.02547 1.02306 1.02124 1.02185 1.01098 1.02306 +1.02004 1.02124 1.02668 1.01883 1.0146 1.02366 1.02064 1.02004 +1.02245 1.01339 1.02245 1.02064 1.0152 1.01279 1.02366 1.02004 +1.01883 1.01883 1.01581 1.01822 1.01098 1.01762 1.02004 1.01702 +1.02426 1.02366 1.0152 1.02366 1.01943 1.02004 1.01581 1.01218 +1.02245 1.02306 1.01943 1.02306 1.01702 1.00312 1.00916 1.02306 +1.03272 1.01883 1.014 1.01943 1.02124 1.02245 1.01581 1.02789 +1.01943 0.9995 0.988628 0.992252 0.986816 0.989232 0.991648 0.989836 +0.985608 0.992856 0.99648 0.989836 0.998292 0.99346 0.989836 0.994668 +0.989836 1.00614 1.01822 1.01702 1.02306 1.01641 1.01641 1.02004 +1.02849 1.02245 1.02124 1.02426 1.01037 1.02124 1.02608 1.0303 +1.02487 1.02245 1.0303 1.0291 1.03997 1.04238 1.05205 1.04238 +0.432437 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0 0.00401333 +0.00100333 0.00501667 0.00401333 0.0100333 0.00200667 0.00200667 0.00602 0 +0 0 0.00301 0.0100333 0 0 0.00301 0.00100333 +0 0 0 0 0 0 0.00702333 0.00200667 +0.00301 0.00301 0 0 0 0 0 0 +0.00702333 0.0140467 0 0 0 0 0.00903 0.00100333 +0.00100333 0.00903 0.0140467 0.00702333 0.00903 0.00903 0.00802667 0.00401333 +0.00501667 0.00401333 0 0 0.00401333 0 0 0.00200667 +0.00401333 0 0.00100333 0.00100333 0.00100333 0 0 0 +0.00702333 0.00903 0.00702333 0 0 0.00100333 0.0100333 0.00602 +0 0 0 0 0.00501667 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.215717 1.00494 1.0599 +1.0442 1.03332 1.03151 1.0297 1.02366 1.02547 1.02789 1.02547 +1.02306 1.02245 1.01581 1.01641 1.02728 1.02185 1.01098 1.01883 +1.0152 1.02064 1.01218 1.02487 1.02004 1.02185 1.01098 0.992856 +0.992252 0.997084 0.99346 0.994668 0.989232 0.991044 0.995876 0.998292 +0.988024 0.98742 0.991648 0.988628 0.99346 1.00433 1.01822 1.0291 +1.01883 1.02064 1.01641 1.02064 1.0146 1.01641 1.02064 1.01279 +1.01883 1.01822 1.01641 1.02185 1.02245 1.01883 1.01098 1.01581 +1.014 1.0146 1.02004 1.02004 1.0146 1.01762 1.02185 1.02124 +1.02185 1.02366 1.0146 1.01581 1.01641 1.02306 1.02668 1.0146 +1.01883 1.02547 1.02547 1.01943 1.02608 1.01702 1.02608 1.01883 +1.01279 1.02185 1.01822 1.0291 1.02366 1.0146 1.03816 1.02426 +1.02426 1.01581 1.01943 1.02064 1.02004 1.02004 1.00796 1.00494 +1.01581 1.02064 1.01641 1.02728 1.0152 1.02185 1.02004 1.03091 +1.02426 1.01098 0.986212 1.00312 1.0001 0.998896 0.99044 0.992252 +0.98742 0.995876 0.99346 0.997084 0.99044 0.989836 0.983192 0.983796 +0.992856 1.01641 1.01883 1.0291 1.01339 1.01702 1.0291 1.01943 +1.02004 1.02004 1.01158 1.01279 1.01762 1.02487 1.01762 1.02245 +1.02004 1.02064 1.02366 1.02245 1.0303 1.03695 1.04601 1.05386 +0.980172 0.17458 0 0 0 0 0 0 +0 0 0 0.00301 0 0 0.00501667 0 +0.00301 0 0.0110367 0.00903 0.0100333 0.00401333 0 0 +0.00301 0.00200667 0.00200667 0 0 0 0 0 +0.00501667 0.00501667 0 0.00602 0.00802667 0.00802667 0.00100333 0.00401333 +0.00100333 0 0.00200667 0 0 0 0.00602 0.0140467 +0.0100333 0.00100333 0 0 0 0 0.00301 0.00501667 +0.00802667 0 0 0.00602 0.00501667 0 0.00100333 0 +0 0 0.00200667 0.00501667 0.00702333 0.00802667 0.00301 0 +0 0.00401333 0 0.00100333 0.00100333 0.00501667 0.00100333 0.00401333 +0 0.00100333 0.0100333 0.0110367 0 0 0 0 +0.00401333 0 0 0 0 0 0 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0301 0.799064 1.05869 1.04661 +1.04299 1.03332 1.02789 1.0297 1.02849 1.02245 1.0146 1.01883 +1.01822 1.02064 1.02306 1.01339 1.02426 1.02185 1.01762 1.01883 +1.01581 1.02608 1.01943 1.0152 1.02426 1.01581 1.01279 0.986816 +0.989232 0.985004 0.98742 0.998292 0.988628 0.991648 0.995876 0.998896 +0.99346 0.991044 0.992856 0.985004 0.99044 1.01762 1.0152 1.02245 +1.02608 1.02728 1.02185 1.02004 1.01339 1.00614 1.00252 1.01762 +1.01943 1.01218 1.01641 1.02366 1.01702 1.02004 1.02245 1.02547 +1.02487 1.01581 1.02124 1.02245 1.01762 1.02487 1.02789 1.01702 +1.02004 1.014 1.02306 1.02004 1.03091 1.02185 1.02185 1.01339 +1.014 1.01702 1.014 1.01581 1.02245 1.01822 1.02547 1.01581 +1.01702 1.014 1.01762 1.02547 1.01822 1.02064 1.02245 1.02004 +1.014 1.00977 1.01883 1.014 1.01581 1.02124 1.02608 1.0146 +1.00796 1.00373 1.02849 1.02426 1.0146 1.02004 1.02185 1.01883 +1.01883 1.01037 0.9844 0.995876 0.985608 0.983192 0.992856 0.995876 +0.988628 0.99346 0.991044 0.989836 0.989836 0.985608 0.991648 0.995272 +0.997084 1.02124 1.02547 1.01218 1.02185 1.02064 1.02004 1.014 +1.02124 1.01581 1.01883 1.01883 1.02245 1.02124 1.0152 1.02064 +1.02789 1.02487 1.02366 1.02366 1.03876 1.04057 1.0448 1.05024 +1.0605 0.751408 0.0160533 0 0 0 0 0 +0 0 0.00401333 0 0 0.00301 0 0 +0 0.00301 0.00100333 0 0 0 0 0 +0 0.00200667 0 0 0 0.00100333 0.0100333 0.01505 +0.00200667 0 0.00200667 0 0 0 0 0 +0 0.00100333 0 0 0.00301 0.0100333 0.00301 0 +0 0 0 0 0 0 0.00602 0 +0 0.00301 0.00100333 0 0 0.00501667 0.00200667 0.00401333 +0.00802667 0 0.00301 0.00401333 0 0 0.00602 0.00401333 +0 0 0.00602 0 0 0 0 0 +0.00200667 0.00100333 0 0.00100333 0.00903 0.00501667 0 0 +0 0.00802667 0.00401333 0.00100333 0.00702333 0 0 0 +0 0 0 0 0.00200667 0.00100333 0 0 +0 0 0 0 0.413373 1.04359 1.04782 1.04963 +1.04178 1.03574 1.02668 1.0303 1.03151 1.02426 1.02245 1.02185 +1.02245 1.01702 1.01883 1.01762 1.01279 1.02124 1.02004 1.01702 +1.02245 1.0152 1.02064 1.01822 1.01762 1.02004 1.02668 1.00433 +0.989836 0.99346 0.98138 0.988628 0.99044 0.988628 0.989232 0.99044 +0.992252 0.992856 0.991648 0.985608 0.998896 1.01943 1.01822 1.01883 +1.01943 1.01822 1.02366 1.01218 1.00131 1.01581 1.02185 1.02004 +1.02064 1.01762 1.02064 1.02124 1.02064 1.02245 1.02668 1.0146 +1.01702 1.01762 1.02366 1.01218 1.01762 1.02608 1.02064 1.02064 +1.02064 1.01822 1.02547 1.02306 1.014 1.0001 0.982588 0.9693 +0.973528 0.967488 0.968092 0.978964 1.00675 1.0146 1.02064 1.02245 +1.01641 1.01822 1.02124 1.01762 1.0146 1.014 1.0152 1.02064 +1.01158 1.01098 1.02426 1.02306 1.02668 1.02064 1.02306 1.02366 +1.0152 1.00977 1.00494 1.00554 1.01702 1.02487 1.02064 1.02004 +1.02426 1.0152 0.997688 0.994668 0.988024 0.992856 0.988024 0.99346 +0.989836 0.992252 0.995272 0.997084 0.989232 0.991044 0.997688 0.9995 +1.01641 1.02245 1.02185 1.02487 1.01943 1.0152 1.02064 1.02185 +1.02004 1.02004 1.01822 1.014 1.0152 1.02366 1.02124 1.03091 +1.02004 1.02547 1.02728 1.02547 1.02426 1.02366 1.03151 1.04359 +1.05265 1.03634 0.383273 0 0 0 0 0 +0 0 0 0 0 0 0 0.0110367 +0.00100333 0.00802667 0.00301 0 0 0.00301 0 0 +0.0100333 0.00100333 0 0.00802667 0.0160533 0.0170567 0.00903 0 +0 0.00501667 0.00602 0.00702333 0.00200667 0.00200667 0 0 +0.00200667 0 0.00100333 0.00401333 0.00802667 0 0 0 +0 0 0 0 0 0 0.00200667 0.00100333 +0.00200667 0 0 0 0.00401333 0.00301 0.00602 0.00501667 +0.00100333 0.00401333 0 0 0 0 0 0 +0.00501667 0.00301 0 0.00401333 0.00903 0.00903 0.00802667 0 +0 0 0 0 0.00100333 0.00702333 0.00702333 0.00100333 +0 0 0.00602 0.00200667 0 0.00501667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0923067 0.947556 1.06292 1.04722 1.03453 +1.0297 1.02487 1.02728 1.01943 1.02426 1.02306 1.01822 1.02185 +1.02124 1.02366 1.01943 1.02185 1.01943 1.01822 1.0152 1.01218 +1.01702 1.02124 1.01822 1.02245 1.01943 1.02004 1.02185 1.014 +1.00192 1.00131 0.99648 0.989836 0.988024 0.992252 0.992856 0.991044 +0.98742 0.992856 0.989836 0.997688 1.01279 1.02306 1.02547 1.02245 +1.02124 1.02124 1.01581 1.00796 1.01822 1.014 1.014 1.0146 +1.02245 1.02426 1.02668 1.0146 1.01702 1.02124 1.014 1.02064 +1.02124 1.02245 1.02608 1.01883 1.02487 1.02487 1.01822 1.01641 +1.02245 1.01883 1.02487 1.00856 0.969904 0.968092 0.959636 0.968092 +0.957824 0.965072 0.962052 0.959032 0.977152 0.983192 1.01641 1.014 +1.02004 1.02426 1.01822 1.01822 1.02306 1.02245 1.02426 1.02064 +1.02608 1.02064 1.01943 1.02426 1.0152 1.014 1.01883 1.01822 +1.0297 1.03272 1.01883 0.99346 1.01762 1.02124 1.01218 1.02608 +1.02487 1.01641 1.0146 0.995272 0.991044 0.995272 0.989836 0.99044 +0.982588 0.991044 0.989836 0.992252 0.986212 0.992252 0.994064 1.00614 +1.01762 1.01037 1.02004 1.02064 1.0146 1.01943 1.01339 1.01822 +1.01702 1.014 1.014 1.02426 1.02608 1.02789 1.02245 1.01822 +1.01943 1.02306 1.02789 1.01158 1.03453 1.03151 1.03634 1.03695 +1.0454 1.05205 0.945744 0.0973233 0 0 0 0 +0 0 0 0 0.00100333 0.00401333 0 0 +0 0.00100333 0 0 0 0 0.00501667 0.00802667 +0.00100333 0 0.00501667 0.00200667 0 0 0 0 +0 0.00100333 0 0 0 0.00602 0.00702333 0.00501667 +0 0.00802667 0.0110367 0.00602 0.00301 0 0 0.00100333 +0.00301 0.0110367 0.00301 0 0 0 0.00501667 0.00802667 +0.00903 0.00802667 0.00200667 0 0 0.00100333 0 0 +0.00802667 0 0.00200667 0.00301 0.00200667 0 0.00501667 0.00301 +0 0 0 0 0 0 0.00100333 0.00602 +0.00401333 0.00501667 0.00602 0.00200667 0.00100333 0 0.00200667 0.00903 +0.00602 0.00501667 0.00200667 0 0 0 0 0 +0 0.00301 0 0 0 0 0 0 +0 0 0 0.53879 1.05386 1.04661 1.0448 1.03574 +1.03212 1.02728 1.02608 1.02728 1.02064 1.02306 1.02245 1.02004 +1.02185 1.02366 1.02185 1.01822 1.02064 1.01702 1.02547 1.0146 +1.02306 1.02306 1.01702 1.01943 1.02124 1.01762 1.01883 1.02064 +1.01702 0.997084 0.992252 0.997688 0.991648 0.99044 0.989232 0.988628 +0.99346 0.991648 0.998292 1.0146 1.02124 1.01702 1.01822 1.02547 +1.01581 1.01037 1.00977 1.01943 1.02728 1.03091 1.03212 1.0152 +1.01883 1.01702 1.0152 1.01883 1.02245 1.02064 1.01641 1.02608 +1.02487 1.01098 1.01762 1.01339 1.01581 1.02306 1.02064 1.02668 +1.01943 1.02245 1.00312 0.9693 0.962656 0.965676 0.968696 0.9693 +0.962656 0.9693 0.958428 0.966884 0.971716 0.962656 0.991044 1.01883 +1.02668 1.0297 1.01762 1.02547 1.01943 1.01339 1.02306 1.01641 +1.01822 1.01762 1.02124 1.01158 1.014 1.01641 1.02487 1.02366 +1.01943 1.01943 1.01702 1.01883 1.00494 1.00977 1.01641 1.02124 +1.01158 1.02426 1.01822 1.00977 0.995272 0.997084 0.991648 0.998292 +0.991044 0.997084 0.98742 0.998292 0.989232 0.988024 0.998292 1.01641 +1.00735 1.02366 1.02306 1.01762 1.02004 1.01279 1.01581 1.02547 +1.02366 1.01762 1.01822 1.02245 1.02064 1.0152 1.01883 1.02004 +1.02245 1.02004 1.02124 1.02426 1.03091 1.03634 1.03393 1.03332 +1.04299 1.05144 1.05688 0.53578 0 0 0 0 +0 0 0 0 0 0 0.00802667 0 +0.01204 0 0 0 0 0.00301 0.00200667 0 +0 0 0.00301 0 0 0.00301 0.00501667 0 +0 0 0 0.00802667 0.00602 0.00301 0 0 +0.00301 0.00100333 0 0 0 0 0 0.00301 +0.00702333 0.00100333 0.00501667 0 0 0 0.00401333 0 +0 0 0.00802667 0.00702333 0.00702333 0.00200667 0.00100333 0 +0 0.00702333 0.00602 0 0.00501667 0.00501667 0 0.00702333 +0.00702333 0.00602 0.00100333 0.00401333 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00501667 0.00100333 0.01505 0.00301 +0 0 0 0 0 0 0 0 +0 0 0.146487 0.980172 1.0605 1.04359 1.03695 1.03212 +1.03212 1.02789 1.02245 1.02487 1.02124 1.0146 1.02547 1.02245 +1.0146 1.01822 1.02245 1.0146 1.02004 1.02245 1.02064 1.02306 +1.014 1.02547 1.01883 1.01702 1.01218 1.01883 1.01279 1.02124 +1.01943 1.01943 1.00494 1.00071 0.99648 0.991648 0.99346 0.989232 +1.00494 1.00675 1.01158 1.02366 1.02245 1.01883 1.02064 1.0152 +1.00433 1.00554 1.02185 1.01581 1.01702 1.02245 1.02487 1.02004 +1.01943 1.02064 1.01641 1.01762 1.01883 1.01581 1.01762 1.01037 +1.01641 1.02608 1.02064 1.01762 1.01641 1.02124 1.01641 1.01158 +1.01822 1.02124 0.971112 0.959636 0.966884 0.961448 0.968696 0.959032 +0.96628 0.963864 0.959636 0.972924 0.963864 0.971112 0.959636 1.00373 +1.01943 1.02487 1.02124 1.01762 1.01822 1.02064 1.01702 1.01158 +1.01762 1.02064 1.02245 1.014 1.01883 1.014 1.01339 1.03272 +1.01943 1.02306 1.02547 1.02728 1.01762 1.00373 0.995272 1.01883 +1.02487 1.02185 1.02245 1.02004 1.0146 0.998292 0.988024 0.986212 +0.985608 0.983192 0.989232 0.991648 0.998292 1.00856 1.02426 1.02547 +1.02547 1.02366 1.01702 1.01702 1.01762 1.01943 1.02004 1.02608 +1.01279 1.01339 1.01762 1.02306 1.02004 1.01339 1.01702 1.01943 +1.02064 1.01943 1.01943 1.01641 1.02124 1.02064 1.02306 1.03091 +1.03936 1.0454 1.05869 0.989836 0.143477 0 0 0 +0 0 0 0 0 0.00602 0 0.00301 +0 0 0 0.00200667 0.00301 0.00200667 0.00301 0 +0.00200667 0.00301 0 0 0 0.00100333 0 0.00100333 +0.00401333 0 0.00301 0 0 0 0 0.00602 +0.00200667 0 0 0 0.00100333 0 0.00200667 0.00301 +0.00301 0.00602 0.00602 0 0 0.00100333 0.00301 0.00802667 +0.00100333 0 0 0 0 0 0 0.00501667 +0.00802667 0 0.00200667 0 0 0 0 0 +0 0.00501667 0.00301 0.00100333 0 0.00501667 0.00100333 0 +0.00200667 0.00301 0.00200667 0.00802667 0.00802667 0.0100333 0 0.00301 +0 0.00702333 0.0100333 0 0 0 0 0.01204 +0.00501667 0.00200667 0 0 0 0 0 0 +0 0 0.58093 1.05084 1.04963 1.04118 1.02608 1.0291 +1.02245 1.02789 1.02487 1.02728 1.02306 1.02306 1.0152 1.02668 +1.02064 1.01883 1.01641 1.01641 1.01822 1.01218 1.02306 1.02306 +1.01943 1.01702 1.02426 1.02245 1.01943 1.01822 1.01943 1.02064 +1.02306 1.0146 1.02487 1.02004 1.01218 1.00796 1.00735 1.00675 +1.02306 1.02849 1.02547 1.02004 1.02608 1.02487 1.02004 0.997084 +1.00796 1.01943 1.014 1.02124 1.02124 1.02124 1.02064 1.02064 +1.01943 1.0146 1.02124 1.02426 1.01822 1.02004 1.02487 1.02608 +1.01822 1.01581 1.01702 1.01883 1.02004 1.01641 1.02366 1.01943 +1.02789 0.99346 0.961448 0.9693 0.968696 0.962052 0.961448 0.964468 +0.963864 0.963864 0.971112 0.969904 0.957824 0.970508 0.959032 0.96628 +1.00494 1.02849 1.01883 1.01641 1.01883 1.02306 1.014 1.01339 +1.01822 1.02064 1.02306 1.01581 1.02366 1.0146 1.01883 1.00735 +1.02245 1.02426 1.02849 1.02004 1.01822 1.02608 1.00856 0.98742 +1.0146 1.02124 1.01762 1.02547 1.02608 1.0152 1.00856 1.00131 +1.00071 1.00614 1.00373 1.01581 1.01822 1.01943 1.02185 1.02789 +1.02245 1.02366 1.02426 1.01883 1.02245 1.02004 1.01581 1.01641 +1.02185 1.01943 1.02608 1.02306 1.01702 1.02185 1.02668 1.02124 +1.01581 1.01822 1.01822 1.02426 1.01762 1.02487 1.02547 1.02849 +1.03574 1.04842 1.05024 1.0599 0.59297 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0.00401333 0.00602 0.00802667 0.00401333 0 0 +0 0.00100333 0 0 0.00100333 0 0 0.00401333 +0 0 0 0 0.00100333 0.00401333 0.00100333 0 +0 0 0.00100333 0.00401333 0.00200667 0.00702333 0.0110367 0.00702333 +0.00702333 0.00401333 0.00200667 0 0 0.00100333 0.00100333 0 +0 0.00903 0.00501667 0.00501667 0.00301 0 0 0 +0 0 0.00401333 0.00903 0.00702333 0.00200667 0 0.00802667 +0.00200667 0 0.00301 0.00501667 0 0.00301 0.00602 0.00802667 +0 0 0 0 0 0.00301 0.00903 0.00200667 +0.00501667 0.00401333 0 0.00602 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0.152507 0.997688 1.05446 1.03997 1.03936 1.03151 1.02728 +1.0291 1.02608 1.01883 1.02366 1.01822 1.01702 1.01098 1.02064 +1.01279 1.02426 1.01581 1.02004 1.01762 1.02306 1.01702 1.02064 +1.01762 1.02185 1.02245 1.02306 1.02547 1.0146 1.0146 1.01822 +1.01702 1.01702 1.02185 1.02004 1.02608 1.02306 1.02185 1.02306 +1.0146 1.01218 1.02124 1.0152 1.02789 1.0146 0.994064 1.01581 +1.02547 1.01641 1.01822 1.0146 1.01702 1.01581 1.01883 1.02306 +1.02426 1.01702 1.02366 1.02426 1.02124 1.01037 1.01883 1.02064 +1.01279 1.01702 1.01943 1.02064 1.02064 1.02306 1.02608 1.02306 +1.0152 0.968696 0.965676 0.965676 0.962656 0.976548 0.965676 0.96628 +0.965676 0.96628 0.977152 0.96024 0.968092 0.962052 0.964468 0.958428 +0.992856 1.02668 1.01822 1.02366 1.01037 1.02849 1.01641 1.01641 +1.01883 1.02487 1.01641 1.02124 1.01762 1.01762 1.01641 1.02185 +1.0146 1.01943 1.01883 1.01943 1.02547 1.02487 1.02064 1.00433 +0.99346 1.02185 1.02426 1.02245 1.0303 1.01883 1.02426 1.02185 +1.02608 1.02064 1.01641 1.02124 1.02064 1.01762 1.01822 1.0152 +1.02004 1.01158 1.0146 1.02124 1.02366 1.014 1.02064 1.02245 +1.01943 1.02668 1.01822 1.0152 1.01702 1.02124 1.01641 1.01822 +1.01702 1.0297 1.02124 1.02366 1.02547 1.03272 1.02366 1.02245 +1.03151 1.03272 1.04359 1.05628 0.99346 0.149497 0 0 +0 0 0 0 0 0.00301 0 0 +0 0 0 0 0.00100333 0 0 0 +0 0 0 0 0 0 0.00501667 0.00602 +0.00301 0.00501667 0.00100333 0 0.00301 0 0 0 +0 0.00100333 0.00301 0 0.00301 0.00602 0.00501667 0 +0.00100333 0.00100333 0.00301 0 0 0.0100333 0.00401333 0 +0 0 0 0 0.00301 0.00401333 0.00501667 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0 0.00301 0.00200667 0 0 +0.00200667 0 0.00100333 0 0 0 0 0 +0 0 0 0 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0.56889 1.05748 1.05326 1.04299 1.03574 1.03816 1.03212 +1.02185 1.02426 1.02426 1.03332 1.01218 1.02789 1.01883 1.01822 +1.01822 1.01822 1.01641 1.0146 1.01037 1.01581 1.0146 1.02124 +1.02064 1.014 1.02064 1.01702 1.01883 1.02487 1.01641 1.01279 +1.02245 1.01641 1.02306 1.02547 1.02124 1.02064 1.02608 1.02064 +1.02306 1.01702 1.02004 1.02004 1.01158 0.99044 1.00916 1.01822 +1.01943 1.01883 1.01641 1.02608 1.02306 1.02245 1.02789 1.01822 +1.01339 1.02849 1.02064 1.01279 1.02004 1.02306 1.01762 1.0146 +1.02004 1.02124 1.02004 1.02185 1.02064 1.02426 1.02487 1.02849 +1.0146 0.963864 0.973528 0.964468 0.971112 0.964468 0.970508 0.970508 +0.96024 0.971112 0.973528 0.968696 0.973528 0.963864 0.969904 0.969904 +0.986816 1.02849 1.02064 1.02306 1.01822 1.02064 1.01762 1.00614 +1.01943 1.01943 1.014 1.01581 1.01641 1.02306 1.02004 1.02064 +1.01702 1.01822 1.0146 1.02124 1.01883 1.01641 1.02245 1.02004 +1.01279 0.994064 1.01339 1.01702 1.01098 1.0146 1.01822 1.01762 +1.014 1.01883 1.02004 1.0152 1.01279 1.02366 1.02185 1.01702 +1.02608 1.02728 1.02124 1.01883 1.01883 1.01702 1.01883 1.02245 +1.01762 1.014 1.014 1.0152 1.02426 1.02366 1.01883 1.02124 +1.02185 1.01822 1.02185 1.02366 1.02124 1.02245 1.01822 1.0303 +1.03393 1.03816 1.0448 1.04722 1.05507 0.56889 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0 0 0 0 0 0 +0.00200667 0.00903 0.00602 0.00501667 0.00602 0.00602 0.0130433 0 +0.00401333 0.00100333 0.00501667 0 0.00501667 0.00301 0.00401333 0.00802667 +0.00702333 0.00501667 0.00100333 0.00802667 0.0110367 0.00702333 0.00301 0.00301 +0 0 0.00702333 0 0 0.00602 0.00702333 0.0110367 +0.00200667 0.00301 0.00100333 0 0 0 0 0.00501667 +0.00401333 0 0.00702333 0.00702333 0.00702333 0.0100333 0.00401333 0.00100333 +0 0.00501667 0.00702333 0 0 0.00100333 0.00200667 0 +0.00401333 0.00903 0.00903 0.00903 0.00100333 0 0.00401333 0 +0 0 0 0 0 0 0.00501667 0 +0.00702333 0.00301 0 0 0 0 0 0 +0.119397 0.97836 1.05386 1.04963 1.0297 1.02487 1.02608 1.02487 +1.02608 1.01883 1.01279 1.02306 1.01883 1.01883 1.01943 1.02124 +1.02547 1.02668 1.02245 1.02306 1.02366 1.02366 1.01762 1.01762 +1.02245 1.01883 1.02004 1.02004 1.01641 1.02668 1.02608 1.014 +1.01339 1.00494 1.01339 1.01098 1.02064 1.02608 1.02004 1.02547 +1.02004 1.0152 1.02608 1.02124 0.9995 1.0152 1.02789 1.01883 +1.03272 1.02608 1.02306 1.02185 1.01822 1.0146 1.02487 1.02064 +1.0146 1.01883 1.01883 1.02306 1.01822 1.02366 1.0146 1.01883 +1.01762 1.02064 1.02124 1.02487 1.02245 1.01883 1.01702 1.02728 +1.00856 0.96628 0.971716 0.9693 0.9693 0.965072 0.9693 0.96628 +0.97232 0.967488 0.971716 0.967488 0.96628 0.962052 0.959032 0.969904 +0.975944 1.0146 1.02124 1.02004 1.02064 1.02185 1.02668 1.02064 +1.02306 1.01702 1.01581 1.02185 1.02547 1.01883 1.02426 1.01218 +1.01822 1.01883 1.02487 1.02124 1.00977 1.01762 1.03091 1.02185 +1.02789 1.00977 1.00373 1.0152 1.0146 1.02668 1.02124 1.02064 +1.02608 1.01883 1.01641 1.02064 1.02789 1.02789 1.01279 1.02547 +1.01581 1.01762 1.0152 1.02124 1.02185 1.00675 1.02426 1.02306 +1.01279 1.01883 1.02004 1.02789 1.01943 1.01218 1.01762 1.01702 +1.01218 1.01762 1.02004 1.01098 1.02004 1.01883 1.02004 1.02728 +1.03272 1.03091 1.04118 1.04842 1.05446 0.971716 0.104347 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0.00100333 0.00702333 0.00301 +0.00401333 0 0 0 0.00200667 0.00401333 0.00200667 0 +0 0.00100333 0 0.00501667 0.00100333 0.00301 0.00301 0.00301 +0.00301 0.00602 0.00802667 0.00602 0.00100333 0 0 0 +0 0.00100333 0 0 0 0.00200667 0.00702333 0.00602 +0.00602 0.00802667 0.00602 0.00702333 0.00702333 0 0 0 +0.00702333 0.00702333 0 0 0 0 0.00401333 0.00301 +0 0 0 0.00501667 0.00301 0.00301 0.00702333 0.00802667 +0.00100333 0.00401333 0 0 0.00903 0.00501667 0 0.00501667 +0.0100333 0.00602 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.47257 1.04963 1.04359 1.03936 1.03574 1.0303 1.02245 1.0152 +1.02487 1.02547 1.02064 1.02668 1.01702 1.01641 1.02004 1.02004 +1.0146 1.0146 1.01822 1.014 1.02185 1.02306 1.0152 1.01339 +1.02608 1.02306 1.01883 1.014 1.014 1.02245 1.02849 1.03272 +1.02426 1.02487 1.02366 1.02064 1.02004 1.01339 1.01279 1.01702 +1.02426 1.02426 1.01943 0.989232 1.00312 1.02245 1.02728 1.01822 +1.02064 1.0303 1.01943 1.01943 1.01581 1.02185 1.02426 1.02849 +1.04782 1.05446 1.03272 1.05205 1.04238 1.03936 1.01943 1.0152 +1.02366 1.01581 1.02487 1.01822 1.02789 1.01822 1.02487 1.03212 +1.0146 0.962656 0.960844 0.967488 0.961448 0.971112 0.956616 0.964468 +0.968696 0.966884 0.969904 0.968696 0.972924 0.96326 0.959636 0.967488 +0.977152 1.02849 1.01762 1.01218 1.02426 1.01581 1.02608 1.01702 +1.01943 1.0152 1.02064 1.01641 1.01641 1.01339 1.03151 1.02064 +1.02064 1.01762 1.01762 1.02124 1.02124 1.02004 1.02245 1.02004 +1.01822 1.01883 1.00554 1.01279 1.0291 1.02245 1.02487 1.02608 +1.02426 1.01762 1.01822 1.0152 1.01943 1.02608 1.02064 1.02124 +1.00856 1.01943 1.02004 1.02124 1.01339 1.02547 1.02426 1.014 +1.01943 1.01158 1.01883 1.01339 1.01883 1.01883 1.02306 1.02245 +1.02668 1.01581 1.02064 1.01641 1.02064 1.02426 1.02124 1.02245 +1.02789 1.03393 1.03997 1.03936 1.0454 1.05446 0.468557 0 +0 0 0 0 0 0 0.00401333 0 +0.00100333 0.0110367 0.00100333 0.00100333 0.0100333 0 0.00200667 0 +0 0 0.00100333 0.00602 0.00903 0.00301 0 0 +0 0.00100333 0.00401333 0 0 0 0.00200667 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0 0 0 0 0 +0.00100333 0.00401333 0.00401333 0 0 0.00200667 0 0 +0 0 0.00501667 0.00100333 0 0.00200667 0 0.00401333 +0.00903 0.00501667 0 0 0 0 0 0 +0 0 0.00501667 0 0 0.00301 0.00100333 0 +0 0.00100333 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0 0.0491633 +0.925208 1.05386 1.04057 1.03514 1.03634 1.03453 1.02547 1.02306 +1.02004 1.01943 1.0152 1.02426 1.02426 1.0152 1.02124 1.01702 +1.02426 1.02185 1.01218 1.014 1.00916 1.01702 1.01943 1.01762 +1.01762 1.02004 1.01883 1.01762 1.01943 1.01762 1.0146 1.02185 +1.02124 1.01822 1.01883 1.01581 1.02004 1.02185 1.01883 1.02124 +1.01762 1.03272 1.00494 0.994668 1.01218 1.01581 1.00977 1.02124 +1.01762 1.02004 1.02426 1.01641 1.02245 1.02728 1.03876 1.03574 +1.04782 1.04359 1.0442 1.04661 1.05688 1.04299 1.05205 1.03091 +1.01883 1.02004 1.02426 1.02608 1.01883 1.02124 1.02306 1.02185 +1.0146 0.977756 0.961448 0.966884 0.964468 0.978964 0.960844 0.971716 +0.96628 0.969904 0.964468 0.968092 0.965676 0.968092 0.9693 0.969904 +0.994064 1.01943 1.02306 1.01943 1.01279 1.01098 1.02728 1.02306 +1.01641 1.01943 1.02245 1.01762 1.0146 1.00856 1.00554 1.00856 +1.02124 1.01218 1.0146 1.01822 1.02849 1.01641 1.014 1.01762 +1.01279 1.01822 1.02124 1.00675 1.0146 1.01822 1.01822 1.02004 +1.01883 1.02185 1.01822 1.02064 1.01822 1.02124 1.0146 1.02306 +1.02608 1.02124 1.01702 1.02547 1.02849 1.02245 1.01762 1.01218 +1.02306 1.0146 1.01339 1.00494 1.02124 1.02245 1.014 1.01581 +1.00916 1.0146 1.02426 1.03332 1.02245 1.02306 1.02487 1.02608 +1.0303 1.03272 1.03151 1.03997 1.04782 1.06232 0.928228 0.04816 +0 0 0 0 0 0 0 0 +0 0.00200667 0 0.00501667 0 0.00903 0.00501667 0 +0 0 0.00401333 0 0 0 0 0 +0 0 0 0.00100333 0.00501667 0.00702333 0 0 +0.00602 0.0100333 0.00602 0 0 0.00501667 0.00702333 0.00802667 +0.0100333 0.01204 0.00301 0.00401333 0 0.00903 0.00602 0 +0 0.00200667 0.00501667 0.00702333 0.00501667 0.00200667 0.00100333 0.00200667 +0 0 0 0 0 0 0 0.00200667 +0 0.00301 0.00903 0.00903 0 0 0.00301 0.00100333 +0.00200667 0.00301 0 0.00301 0 0 0.00501667 0.00802667 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.296987 +1.04299 1.05446 1.04057 1.0291 1.02668 1.02547 1.03212 1.02487 +1.03212 1.02487 1.02668 1.02245 1.0152 1.02245 1.01702 1.02245 +1.02004 1.01702 1.02306 1.02728 1.01762 1.02004 1.02608 1.01883 +1.01581 1.01883 1.02608 1.01883 1.02004 1.0146 1.01883 1.01883 +1.02064 1.02004 1.02366 1.02306 1.01883 1.0146 1.01762 1.02064 +1.01702 1.00856 0.994064 1.02004 1.02668 1.03272 1.03151 1.01581 +1.02064 1.02245 1.02547 1.0146 1.02789 1.0448 1.04238 1.04601 +1.04722 1.04782 1.04057 1.03876 1.04601 1.04057 1.05386 1.03514 +1.02608 1.01883 1.01943 1.01641 1.02306 1.01702 1.01279 1.02064 +1.02487 0.986816 0.968092 0.962656 0.962052 0.974736 0.9693 0.965072 +0.962052 0.964468 0.96326 0.962656 0.965676 0.965072 0.959636 0.974132 +1.00796 1.02064 1.02668 1.02306 1.0146 1.02004 1.02366 1.01641 +1.02245 1.00916 1.01158 1.02245 1.03816 1.03936 1.0442 1.04118 +1.02366 1.01218 1.0152 1.02064 1.0297 1.02547 1.02547 1.02004 +1.0152 1.0297 1.02185 1.02547 1.00856 1.00856 1.02185 1.01641 +1.02185 1.02668 1.02124 1.02185 1.02426 1.02245 1.02064 1.01702 +1.01641 1.01339 1.02306 1.02124 1.01098 1.01339 1.0146 1.02004 +1.02004 1.01581 1.01218 1.02004 1.0303 1.01943 1.02366 1.01702 +1.01822 1.02306 1.02185 1.01702 1.01581 1.02004 1.0152 1.02004 +1.02426 1.0303 1.03272 1.03514 1.04722 1.05205 1.03695 0.284947 +0 0 0 0 0 0 0.00100333 0 +0.00702333 0.00100333 0 0 0 0 0 0 +0.00602 0.0110367 0.00501667 0.00301 0.00602 0.00802667 0.00501667 0.00602 +0.00602 0.00501667 0.00501667 0.00903 0.00802667 0 0.00301 0.00301 +0 0 0 0 0 0.00301 0 0 +0 0 0.00200667 0.00602 0 0.00602 0.00401333 0.00401333 +0 0 0 0 0.00602 0.00602 0.00401333 0.00100333 +0.00301 0.00301 0.00200667 0 0 0 0 0 +0.00200667 0.00702333 0.00301 0.00401333 0.00802667 0.00602 0.00100333 0.00200667 +0.00401333 0 0 0 0.00401333 0 0 0 +0.00602 0.0130433 0.00802667 0 0 0 0 0 +0 0 0 0 0 0 0 0.699888 +1.0593 1.04601 1.03816 1.03574 1.02789 1.02245 1.02306 1.02366 +1.02366 1.02124 1.01883 1.02366 1.01822 1.01762 1.02064 1.01641 +1.0152 1.02004 1.01762 1.01883 1.02366 1.0146 1.00916 1.01822 +1.02608 1.01641 1.02124 1.02064 1.02849 1.02245 1.0303 1.02487 +1.01943 1.01883 1.0146 1.01883 1.02004 1.01037 1.02245 1.02487 +1.01883 0.98742 1.00916 1.01822 1.01822 1.01098 1.00735 1.014 +1.01581 1.01702 1.01762 1.02426 1.05084 1.04842 1.04299 1.03876 +1.05628 1.04903 1.0454 1.0448 1.0454 1.04722 1.05265 1.05567 +1.04601 1.02366 1.02366 1.01883 1.03272 1.01883 1.02426 1.02245 +1.02426 1.01218 0.972924 0.96628 0.970508 0.961448 0.962656 0.968696 +0.964468 0.96628 0.959636 0.968696 0.971112 0.965072 0.96024 0.991044 +1.01581 1.02668 1.02728 1.01581 1.01943 1.02366 1.01641 1.01822 +1.01641 1.03514 1.0448 1.04963 1.04963 1.0454 1.04842 1.03453 +1.03755 1.03332 1.02245 1.01641 1.01641 1.02185 1.02366 1.02306 +1.02547 1.02366 1.02064 1.02064 1.00614 1.00856 1.01762 1.01762 +1.02487 1.02306 1.014 1.0146 1.01037 1.01702 1.01339 1.01762 +1.02004 1.01641 1.01581 1.0146 1.01581 1.02004 1.02306 1.02124 +1.0146 1.01822 1.01883 1.0297 1.0146 1.01641 1.01339 1.02487 +1.01762 1.02426 1.01218 1.02185 1.02064 1.01822 1.02064 1.01702 +1.02668 1.03091 1.0297 1.03393 1.04178 1.0442 1.05446 0.677992 +0 0 0 0 0 0 0 0.00702333 +0 0 0 0.00301 0 0 0.00301 0.0160533 +0.00602 0.00501667 0 0.00401333 0.00100333 0 0 0.00301 +0 0 0 0 0 0 0 0 +0.00301 0 0 0 0 0 0 0 +0 0.00100333 0.00301 0.00602 0.00100333 0.00100333 0.00100333 0.00301 +0.00301 0.00301 0 0 0 0 0.00301 0.00501667 +0.00301 0.0110367 0.00903 0.00301 0.00802667 0.00802667 0 0 +0 0 0 0 0.00501667 0.00602 0.00501667 0.00301 +0 0.00702333 0.0100333 0.00602 0 0.00100333 0.00802667 0.00200667 +0.00200667 0 0.00401333 0.00100333 0.00602 0.00401333 0 0 +0 0 0 0 0 0 0.0983267 0.978964 +1.05628 1.04299 1.03634 1.0297 1.03695 1.02306 1.01943 1.014 +1.02366 1.01339 1.02366 1.02366 1.02124 1.01702 1.02245 1.02426 +1.02608 1.01822 1.00856 1.0146 1.02185 1.02124 1.02668 1.01762 +1.0152 1.02004 1.01641 1.01581 1.01762 1.01641 1.02064 1.02487 +1.01702 1.01581 1.02487 1.01762 1.01943 1.02185 1.01943 1.01822 +0.99648 1.01279 1.0291 1.02064 1.01641 1.02789 1.02245 1.02608 +1.02004 1.01279 1.01702 1.0303 1.05024 1.05084 1.04238 1.04238 +1.03876 1.04359 1.04782 1.04299 1.04661 1.04299 1.04178 1.0448 +1.05205 1.03393 1.02849 1.02245 1.01581 1.01702 1.01581 1.02366 +1.0152 1.02185 0.981984 0.970508 0.959032 0.96326 0.96628 0.971112 +0.962052 0.962052 0.962656 0.966884 0.960844 0.9693 0.975944 1.02064 +1.02547 1.02728 1.0146 1.02004 1.02245 1.02004 1.02004 1.01762 +1.03514 1.04782 1.04842 1.04782 1.0448 1.0448 1.04842 1.0442 +1.04782 1.04963 1.03876 1.02245 1.00614 1.01883 1.02245 1.02668 +1.02064 1.01279 1.01883 1.01883 1.02849 1.01762 1.01762 1.02547 +1.02668 1.02366 1.02064 1.02185 1.02124 1.02789 1.02124 1.02426 +1.02124 1.014 1.02366 1.02366 1.02185 1.02245 1.01883 1.02064 +1.02547 1.01218 1.01037 1.01702 1.01037 1.01581 1.01822 1.01702 +1.01641 1.01702 1.02306 1.01762 1.02185 1.02366 1.02789 1.02789 +1.02608 1.02004 1.02547 1.02668 1.03393 1.03936 1.05326 0.976548 +0.09331 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0.0110367 0.00802667 0 +0 0 0.00200667 0 0 0.00301 0.00602 0 +0 0.00501667 0 0 0.00501667 0.00100333 0 0.00301 +0 0 0.00501667 0.00702333 0.00200667 0.00100333 0.00100333 0.00200667 +0.00401333 0.00702333 0.00702333 0 0.00200667 0 0 0.00401333 +0.00301 0.00702333 0.00401333 0.00501667 0 0 0.00100333 0 +0.00200667 0.00100333 0 0 0 0 0.00100333 0 +0 0.00501667 0 0 0 0.00301 0.00200667 0 +0 0 0 0.00301 0.00903 0.00100333 0.00100333 0.00100333 +0.00200667 0 0 0.00200667 0.00100333 0 0 0 +0 0 0 0 0 0 0.345147 1.04661 +1.0448 1.04299 1.04178 1.03332 1.03272 1.0297 1.03091 1.02245 +1.01822 1.02668 1.01098 1.02004 1.0152 1.01762 1.01339 1.0146 +1.01702 1.01883 1.02185 1.01339 1.0146 1.01943 1.0146 1.01943 +1.01883 1.01098 1.01883 1.02366 1.01883 1.00977 1.01943 1.01762 +1.01279 1.01762 1.01762 1.03453 1.02124 1.02004 1.02185 1.01098 +0.99044 1.02306 1.02004 1.02306 1.01883 1.0146 1.01822 1.0291 +1.02185 1.01702 1.014 1.04238 1.04601 1.04299 1.04963 1.05084 +1.05628 1.05205 1.04661 1.0442 1.04359 1.0454 1.05205 1.05024 +1.04359 1.04782 1.01581 1.01581 1.02245 1.02185 1.02487 1.01943 +1.02124 1.01581 1.01641 0.978964 0.96628 0.968092 0.962052 0.967488 +0.966884 0.970508 0.969904 0.9693 0.963864 0.975944 1.01279 1.02426 +1.01641 1.02426 1.02608 1.0297 1.0152 1.0146 1.01883 1.03393 +1.04903 1.04178 1.04782 1.04299 1.04661 1.04238 1.04359 1.04722 +1.05144 1.04057 1.05688 1.03816 1.01762 1.01218 1.02487 1.01883 +1.01218 1.01702 1.01702 1.02366 1.02487 1.02487 1.0146 1.0146 +1.02547 1.02306 1.0146 1.01037 1.02124 1.01943 1.01822 1.01822 +1.02245 1.02547 1.01641 1.01702 1.01702 1.014 1.01943 1.02426 +1.01037 1.01702 1.02004 1.01339 1.00977 1.02124 1.02245 1.01822 +1.02245 1.01762 1.01581 1.02004 1.01641 1.02004 1.01581 1.01883 +1.02185 1.02426 1.02547 1.02728 1.03332 1.03755 1.0442 1.04057 +0.356183 0 0 0 0 0 0 0.00301 +0 0 0 0 0.00100333 0 0 0 +0 0.00301 0 0 0 0 0 0.00200667 +0.00501667 0 0.00401333 0 0 0 0.00501667 0 +0 0 0 0 0 0.00301 0 0.00100333 +0.00301 0 0 0.00301 0.00602 0.00301 0.00301 0.00100333 +0 0.00100333 0 0 0.00301 0 0 0 +0 0 0.00100333 0 0.00100333 0.00401333 0 0 +0 0 0.00200667 0.00200667 0 0 0 0 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.697312 1.0605 +1.05205 1.03695 1.02728 1.03212 1.0297 1.02124 1.02426 1.02426 +1.02306 1.01581 1.02064 1.02064 1.02245 1.01883 1.02064 1.02306 +1.02004 1.02064 1.02004 1.01943 1.02185 1.01762 1.02547 1.01581 +1.02306 1.02306 1.01098 1.01641 1.02547 1.0152 1.02064 1.02185 +1.02608 1.02245 1.014 1.02426 1.02426 1.02849 1.01822 0.994668 +1.01218 1.02306 1.01218 1.0152 1.02064 1.02608 1.01702 1.01702 +1.02426 1.02185 1.02487 1.04238 1.04238 1.04661 1.03936 1.04299 +1.04118 1.04057 1.03453 1.03514 1.04359 1.03574 1.04299 1.04601 +1.04842 1.0442 1.01822 1.01822 1.0146 1.02668 1.02064 1.02124 +1.01822 1.02124 1.02547 1.02366 0.997688 0.980172 0.967488 0.96326 +0.973528 0.972924 0.965072 0.959636 0.976548 1.01762 1.02004 1.02306 +1.02306 1.014 1.01581 1.02547 1.02306 1.02004 1.02185 1.04359 +1.04903 1.05205 1.03574 1.04661 1.04842 1.03634 1.04661 1.04178 +1.04118 1.05024 1.04118 1.03514 1.04782 1.02124 1.02487 1.02185 +1.02547 1.03272 1.02004 1.02245 1.02004 1.02064 1.0152 1.00614 +1.02185 1.0146 1.02004 1.01641 1.02185 1.02547 1.02366 1.02245 +1.01581 1.0146 1.02185 1.01883 1.02487 1.02306 1.02487 1.014 +1.01279 1.01581 1.01822 1.01822 1.02185 1.02608 1.02124 1.02064 +1.01943 1.014 1.02124 1.02426 1.01943 1.02064 1.01641 1.01883 +1.02668 1.02185 1.02789 1.03272 1.04238 1.04299 1.05265 1.06352 +0.714056 0 0 0 0 0 0 0 +0 0 0.00301 0.00702333 0.00903 0.00702333 0.00100333 0.00401333 +0.00702333 0 0.00301 0.00200667 0 0.00200667 0 0.00200667 +0 0 0 0 0.00100333 0.00100333 0 0 +0 0 0 0.00903 0.00301 0.00100333 0.01204 0.00802667 +0.00200667 0.00301 0.00602 0.00802667 0 0.00200667 0 0 +0 0 0 0 0 0 0.00200667 0 +0 0 0 0.00100333 0 0 0 0 +0 0 0 0 0.00501667 0.00702333 0 0 +0 0 0.00200667 0 0.0130433 0.00301 0 0 +0.00401333 0.00100333 0 0.00200667 0 0.00200667 0.00401333 0 +0 0 0 0 0 0.06622 0.956012 1.05507 +1.03876 1.0291 1.0291 1.02487 1.02668 1.02608 1.02124 1.01943 +1.01883 1.02366 1.0146 1.01581 1.01762 1.01822 1.02306 1.02245 +1.01822 1.02064 1.02789 1.02306 1.0146 1.01581 1.01883 1.02004 +1.02064 1.02487 1.02547 1.014 1.02245 1.02064 1.02124 1.01762 +1.01641 1.01822 1.01943 1.02366 1.02789 1.02487 1.01037 1.01037 +1.02426 1.01822 1.02608 1.01702 1.02004 1.01883 1.02306 1.02728 +1.02487 1.02366 1.0297 1.04178 1.04903 1.05265 1.04118 1.0448 +1.05265 1.05507 1.05144 1.05024 1.05507 1.05024 1.03936 1.05205 +1.0454 1.04359 1.0146 1.02366 1.01037 1.01762 1.01943 1.02547 +1.01883 1.02547 1.02124 1.01943 1.02004 1.01218 0.994064 0.985608 +0.991648 0.97836 0.991648 1.01098 1.02728 1.02668 1.01581 1.01762 +1.02849 1.03151 1.02064 1.0303 1.02064 1.02306 1.02668 1.0442 +1.05205 1.0442 1.03574 1.03393 1.05205 1.05326 1.04178 1.0442 +1.05144 1.04178 1.0291 1.05265 1.0442 1.01702 1.0146 1.01702 +1.02728 1.02064 1.01702 1.02064 1.02004 1.01762 1.02366 1.00373 +1.00433 1.02245 1.01581 1.01641 1.01279 1.02547 1.01158 1.01641 +1.02064 1.02004 1.01943 1.02124 1.02789 1.01339 1.01098 1.01037 +1.02185 1.02366 1.0146 1.01762 1.02124 1.0146 1.01883 1.0146 +1.01702 1.01822 1.02487 1.02487 1.02366 1.0152 1.0152 1.01581 +1.01822 1.02547 1.02366 1.02789 1.0303 1.03453 1.04118 1.05446 +0.967488 0.0792633 0 0 0 0.00200667 0 0 +0.00903 0.00702333 0 0.00401333 0 0 0.00200667 0.00802667 +0 0.00100333 0 0.00200667 0.00401333 0 0.00401333 0.00501667 +0.00200667 0 0 0.00903 0.00903 0.00501667 0.01505 0.0110367 +0.00802667 0.00501667 0.00702333 0.00401333 0.00602 0.00903 0.00100333 0 +0.00200667 0 0 0.00301 0 0 0 0.00200667 +0.00200667 0 0 0.00501667 0.00802667 0.00702333 0.00401333 0.00401333 +0.00602 0.00401333 0 0 0 0 0.00100333 0 +0 0 0 0 0 0 0 0.00602 +0.00903 0.0100333 0.00301 0 0 0 0.0130433 0.00602 +0.00200667 0.00501667 0.00401333 0 0 0 0 0 +0 0 0 0 0 0.24682 1.03816 1.04601 +1.0454 1.03574 1.02487 1.02124 1.01822 1.02064 1.02487 1.02789 +1.02728 1.02487 1.0303 1.02185 1.01883 1.0146 1.0146 1.02608 +1.02547 1.01762 1.02064 1.0146 1.01822 1.02426 1.01883 1.01943 +1.0146 1.02064 1.02124 1.02124 1.02306 1.01943 1.01581 1.02064 +1.01883 1.01702 1.01702 1.02124 1.02124 1.0146 0.986212 1.02185 +1.02185 1.02185 1.0152 1.02124 1.01883 1.0152 1.02366 1.01762 +1.01641 1.0146 1.01762 1.0448 1.03755 1.04299 1.04601 1.04299 +1.04963 1.04842 1.04722 1.05748 1.04359 1.05446 1.04661 1.04722 +1.05386 1.04057 1.02608 1.02306 1.03212 1.01943 1.02426 1.02849 +1.03332 1.014 1.00916 1.02608 1.0291 1.02668 1.02728 1.02426 +1.01762 1.01279 1.01762 1.02064 1.02366 1.02004 1.0291 1.02004 +1.02547 1.03151 1.01037 1.02608 1.01037 1.01641 1.03453 1.05507 +1.04359 1.0454 1.05024 1.03997 1.03816 1.0442 1.04842 1.05144 +1.03936 1.03755 1.04359 1.04601 1.04299 1.03755 1.01581 1.01641 +1.02668 1.01641 1.01943 1.01158 1.01279 1.02487 1.02185 1.01581 +0.994064 1.02306 1.02004 1.02547 1.0146 1.01581 1.02306 1.00916 +1.02064 1.02426 1.02004 1.01279 1.02064 1.02487 1.01702 1.01641 +1.02426 1.01581 1.02064 1.014 1.01581 1.01702 1.01641 1.01641 +1.01641 1.01822 1.01883 1.02366 1.01158 1.02245 1.02185 1.02004 +1.02185 1.01641 1.02608 1.02185 1.02849 1.03212 1.0442 1.05144 +1.03514 0.280933 0 0 0 0 0 0 +0 0 0.00401333 0 0 0 0 0 +0 0 0.00501667 0.00100333 0 0.00100333 0 0 +0 0.00301 0.00401333 0 0 0.00200667 0 0 +0.00702333 0.00702333 0.00702333 0.00301 0 0 0 0 +0 0.00100333 0.00802667 0.0130433 0.00802667 0.0100333 0.00301 0.00200667 +0.00702333 0.00401333 0 0 0 0.00100333 0.00100333 0.00501667 +0.00401333 0.00903 0.00903 0 0.00301 0.00301 0.00301 0.00802667 +0.00702333 0.00903 0.00501667 0.00501667 0.00602 0.00301 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00602 0.00802667 0 0 0 +0 0 0 0 0 0.500663 1.05809 1.0454 +1.03936 1.03332 1.03151 1.02064 1.02608 1.02306 1.01822 1.01581 +1.01641 1.01943 1.01641 1.01943 1.014 1.01339 1.01581 1.01037 +1.0146 1.01641 1.00916 1.01883 1.01822 1.02366 1.01822 1.0146 +1.0146 1.01641 1.01581 1.01581 1.02004 1.01943 1.014 1.01822 +1.0146 1.02245 1.01581 1.01641 1.02668 0.9995 1.00252 1.03212 +1.02487 1.01943 1.02608 1.03332 1.02547 1.01581 1.01883 1.01641 +1.02547 1.02608 1.01943 1.04842 1.05386 1.03816 1.04359 1.04722 +1.04178 1.04238 1.04299 1.04178 1.04118 1.0442 1.03755 1.04178 +1.04963 1.04601 1.02366 1.01702 1.02185 1.02366 1.02004 1.01822 +1.02185 1.02426 1.02185 1.01641 1.02004 1.01581 1.02366 1.02668 +1.01702 1.02849 1.02789 1.02789 1.02728 1.01943 1.02064 1.02366 +1.014 1.01098 1.02064 1.02789 1.02306 1.02004 1.04178 1.03816 +1.03997 1.04359 1.04178 1.04359 1.03876 1.0442 1.0454 1.04057 +1.03332 1.05084 1.05024 1.03634 1.0454 1.03332 1.02426 1.02728 +1.02185 1.02004 1.02124 1.01702 1.02487 1.01762 1.0146 1.01822 +1.00373 1.01098 1.02124 1.02185 1.01822 1.02245 1.01883 1.02245 +1.02366 1.0146 1.01339 1.02728 1.01943 1.02245 1.01762 1.02004 +1.02004 1.02124 1.0152 1.02185 1.02004 1.0146 1.02124 1.01762 +1.01702 1.01822 1.0146 1.02245 1.02426 1.02306 1.01641 1.02306 +1.02185 1.02789 1.02849 1.02245 1.0297 1.03332 1.03695 1.04722 +1.05628 0.527753 0 0 0 0 0 0 +0.00401333 0.00802667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0.00401333 0.00602 0 0 0.0100333 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0.00501667 0.00401333 0 0 0.00802667 0 0 0 +0 0.00501667 0.00702333 0.00702333 0 0 0 0 +0.00200667 0.00501667 0.00501667 0.0140467 0.00602 0 0 0 +0.00100333 0 0 0.00100333 0.00401333 0.00100333 0 0.00200667 +0.00301 0.00602 0.00401333 0.00501667 0.00401333 0.00401333 0.00903 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.7952 1.06292 1.04299 +1.03997 1.03453 1.03091 1.03272 1.02124 1.02004 1.02306 1.01883 +1.02547 1.02185 1.01943 1.02064 1.02124 1.014 1.0146 1.02245 +1.02124 1.0297 1.02608 1.0146 1.01883 1.02004 1.01883 1.01218 +1.01943 1.02608 1.02124 1.014 1.01762 1.02004 1.02124 1.02064 +1.02185 1.01641 1.02245 1.02366 1.01943 0.994064 1.01702 1.02064 +1.02487 1.01641 1.01822 1.01762 1.02124 1.02789 1.01883 1.01762 +1.02245 1.02004 1.0146 1.03212 1.04118 1.05265 1.04842 1.04601 +1.04299 1.04238 1.0442 1.0454 1.04299 1.05628 1.04661 1.04842 +1.04722 1.02728 1.01218 1.02064 1.02547 1.02004 1.014 1.014 +1.02366 1.02245 1.0291 1.01218 1.02306 1.02789 1.02426 1.0303 +1.02004 1.01581 1.01762 1.01702 1.01641 1.02487 1.02064 1.01883 +1.02849 1.02487 1.01762 1.02547 1.02245 1.01943 1.03695 1.03876 +1.04963 1.04359 1.04722 1.05628 1.04722 1.05205 1.03997 1.04661 +1.05386 1.04722 1.04722 1.05205 1.05507 1.02245 1.01581 1.0146 +1.01581 1.02487 1.0303 1.01339 1.0291 1.02004 1.02124 1.01702 +1.0297 1.00312 1.01943 1.01641 1.0152 1.03212 1.01943 1.014 +1.01822 1.014 1.02366 1.02547 1.01339 1.014 1.01822 1.02245 +1.02547 1.01218 1.02306 1.02668 1.02306 1.0152 1.01581 1.0146 +1.01883 1.01581 1.01943 1.02124 1.01702 1.01641 1.01822 1.01943 +1.02547 1.02306 1.02366 1.02789 1.02728 1.03634 1.04057 1.0448 +1.06111 0.805504 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00602 0.00100333 0.00602 +0.00501667 0 0.00100333 0.00903 0.00301 0.00602 0.00501667 0.00200667 +0 0 0.00100333 0.00301 0 0.00401333 0.00702333 0.00301 +0.00301 0 0 0 0.00301 0.00702333 0.00702333 0.00501667 +0 0 0.00301 0.0110367 0 0.00501667 0.00903 0.00501667 +0 0 0 0 0 0.00401333 0.00200667 0 +0 0.00100333 0 0 0.00301 0.00903 0.00903 0.00903 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00903 +0.00401333 0 0 0.00200667 0 0 0 0 +0 0 0 0 0.06321 0.959032 1.05869 1.0442 +1.03453 1.0297 1.02608 1.02306 1.02608 1.0291 1.01702 1.01641 +1.02426 1.02728 1.01702 1.01702 1.02426 1.02245 1.01641 1.01883 +1.01762 1.01218 1.0152 1.0152 1.02306 1.02064 1.01822 1.02124 +1.0146 1.02124 1.02366 1.02306 1.02306 1.02004 1.01702 1.02185 +1.02245 1.01883 1.01943 1.014 0.9995 0.9995 1.02728 1.01641 +1.01339 1.01762 1.01822 1.01762 1.02185 1.02849 1.01883 1.01581 +1.01581 1.00916 1.02064 1.0291 1.03695 1.04238 1.04118 1.04842 +1.04238 1.04661 1.04782 1.04118 1.04782 1.04842 1.05386 1.04903 +1.05326 1.02306 1.01883 1.014 1.0152 1.0146 1.02306 1.01762 +1.0291 1.01762 1.03151 1.02487 1.01279 1.0146 1.02366 1.01702 +1.01883 1.02064 1.0146 1.02608 1.01702 1.02064 1.02668 1.01762 +1.02004 1.02426 1.01883 1.02185 1.01581 1.02547 1.04661 1.05567 +1.05507 1.04359 1.0442 1.0448 1.04661 1.03936 1.04299 1.04782 +1.03816 1.04118 1.05084 1.05809 1.04903 1.03816 1.02004 1.0152 +1.02366 1.02306 1.02306 1.02185 1.02185 1.01702 1.02064 1.02004 +1.02064 0.9995 0.99648 1.02306 1.01762 1.02185 1.01218 1.01943 +1.02185 1.02426 1.02728 1.01943 1.02004 1.02608 1.02185 1.02064 +1.02366 1.01883 1.0146 1.01098 1.02064 1.01762 1.02306 1.01581 +1.02064 1.01762 1.01762 1.01943 1.02004 1.02004 1.02004 1.01762 +1.02064 1.01822 1.02124 1.02547 1.02487 1.03453 1.04057 1.0448 +1.04963 0.96628 0.0772567 0 0 0 0 0 +0 0 0 0.00100333 0 0 0 0 +0 0.00602 0.00401333 0 0 0.00301 0.00501667 0.00200667 +0.00100333 0.00802667 0.00702333 0.00702333 0.00602 0 0 0 +0 0 0.00301 0.00401333 0.00301 0 0 0 +0.00200667 0.00200667 0.00301 0 0.00200667 0 0 0 +0.00501667 0 0 0 0.00301 0 0 0.00200667 +0 0 0 0 0 0 0 0 +0.00200667 0.00200667 0 0 0 0 0.00602 0.00501667 +0 0 0.00100333 0 0.00100333 0.00100333 0 0 +0 0 0 0 0 0.00401333 0 0 +0 0 0 0 0.18963 1.02608 1.05265 1.03816 +1.03514 1.02728 1.02547 1.02849 1.02547 1.02547 1.02426 1.02064 +1.01279 1.01762 1.02124 1.02426 1.01762 1.02064 1.01762 1.01883 +1.02426 1.0152 1.01762 1.02064 1.01822 1.02366 1.02547 1.02487 +1.02366 1.01762 1.02004 1.01943 1.0152 1.02124 1.02064 1.02366 +1.02004 1.02124 1.02608 1.02608 0.998292 1.02789 1.0291 1.02064 +1.02366 1.01943 1.02366 1.0146 1.02426 1.02366 1.02306 1.02668 +1.02185 1.02245 1.02124 1.02426 1.03574 1.05628 1.05024 1.04661 +1.04359 1.05326 1.0442 1.05326 1.03936 1.04903 1.04601 1.0448 +1.04299 1.02124 1.02306 1.02185 1.02245 1.02366 1.0146 1.02124 +1.01641 1.01943 1.01702 1.02185 1.02728 1.01702 1.02124 1.01702 +1.02185 1.014 1.02306 1.02849 1.0146 1.0146 1.02245 1.02487 +1.0152 1.02849 1.02849 1.02547 1.01218 1.02426 1.02004 1.04057 +1.04238 1.05205 1.04722 1.04842 1.04722 1.03997 1.04782 1.0448 +1.05265 1.04782 1.04118 1.04963 1.04118 1.01581 1.0146 1.02849 +1.02608 1.01762 1.014 1.01702 1.01339 1.01339 1.02124 1.02487 +1.02728 1.01943 1.00554 1.02789 1.01762 1.01943 1.01822 1.02004 +1.01218 1.01581 1.01641 1.01883 1.02306 1.02124 1.02124 1.01883 +1.01702 1.02124 1.02306 1.02366 1.01943 1.02185 1.02004 1.02547 +1.02547 1.01943 1.02728 1.02487 1.03091 1.01158 1.01339 1.01641 +1.02366 1.02426 1.02124 1.02668 1.03574 1.03514 1.03332 1.03876 +1.05205 1.02668 0.196653 0 0 0 0 0 +0 0 0.0100333 0.00702333 0.00401333 0 0 0 +0.01204 0.01204 0 0.0130433 0.0130433 0.00602 0.00200667 0.00200667 +0.00501667 0.00702333 0 0 0 0 0 0 +0 0.00401333 0.00100333 0 0 0.00100333 0.00802667 0.00702333 +0 0.00301 0.00501667 0.0100333 0 0.00301 0.00200667 0 +0 0.00401333 0.00200667 0.00200667 0 0.00301 0.00301 0.00401333 +0.00200667 0.00100333 0 0 0 0 0 0 +0 0 0.00501667 0.00401333 0.00200667 0 0 0 +0.00702333 0.00401333 0.00100333 0.00301 0.00401333 0.00501667 0.0130433 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.341133 1.04601 1.04782 1.04178 +1.03151 1.03091 1.0303 1.02487 1.01158 1.014 1.02004 1.01641 +1.02185 1.01822 1.01822 1.01581 1.02064 1.01943 1.01702 1.01702 +1.02124 1.03151 1.02004 1.01943 1.02306 1.02245 1.02366 1.01762 +1.02004 1.0152 1.03272 1.01883 1.01641 1.02004 1.01822 1.01883 +1.02064 1.01218 1.01581 1.00856 0.99346 1.02185 1.02789 1.02245 +1.02004 1.03091 1.01943 1.03514 1.01822 1.02124 1.0152 1.02306 +1.0146 1.03453 1.01822 1.02245 1.02487 1.02366 1.05265 1.03876 +1.04842 1.04238 1.05567 1.03151 1.05507 1.03816 1.0448 1.02789 +1.0152 1.01641 1.02004 1.01943 1.02245 1.02668 1.0146 1.01943 +1.02306 1.01943 1.02064 1.01339 1.02124 1.01641 1.01702 1.02547 +1.01822 1.02487 1.02306 1.02668 1.01883 1.01943 1.01943 1.01762 +1.0152 1.02728 1.01037 1.02366 1.01883 1.02004 1.00796 1.03453 +1.04359 1.04842 1.04963 1.04299 1.04118 1.05024 1.03997 1.03695 +1.04661 1.04118 1.05446 1.04903 1.03514 1.01943 1.03151 1.02547 +1.02124 1.01098 1.02185 1.02426 1.01943 1.02426 1.02185 1.01279 +1.0146 1.02366 1.00071 1.00916 1.01762 1.00675 1.02366 1.0303 +1.02668 1.02064 1.01702 1.02547 1.01641 1.01641 1.02366 1.02004 +1.01762 1.02366 1.02004 1.02185 1.02306 1.02185 1.02306 1.01822 +1.01641 1.01822 1.02185 1.02306 1.01702 1.02547 1.02366 1.02004 +1.02004 1.02185 1.02547 1.02124 1.02245 1.01883 1.02487 1.03393 +1.04842 1.04903 0.36722 0 0 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0 0 0 0 0 0 0 0.00100333 +0.00100333 0 0 0 0.00200667 0.00200667 0.00200667 0.00200667 +0.00602 0.00100333 0 0 0.00702333 0.00602 0 0 +0 0.00301 0 0 0.00301 0.00100333 0 0 +0.00200667 0 0 0 0 0 0 0 +0.00401333 0.00401333 0.00100333 0 0 0 0.00200667 0.00401333 +0.00501667 0.00903 0.00702333 0.00903 0.00702333 0.0100333 0.00100333 0.00301 +0 0 0 0.00100333 0 0 0 0.0110367 +0 0 0 0 0 0 0 0 +0 0 0 0 0.507687 1.0593 1.04782 1.03332 +1.03634 1.02547 1.02487 1.0297 1.02608 1.02185 1.02728 1.02366 +1.02306 1.02004 1.02608 1.02426 1.01762 1.02004 1.02185 1.02487 +1.02004 1.0146 1.01943 1.02064 1.02547 1.02245 1.0146 1.01641 +1.02245 1.0146 1.0146 1.02487 1.02004 1.01883 1.0146 1.02004 +1.01581 1.02426 1.02728 0.98742 1.00675 1.02426 1.01883 1.01762 +1.0152 1.02426 1.01641 1.01339 1.02366 1.02004 1.0303 1.01641 +1.02668 1.0146 1.01641 1.0146 1.02004 1.02185 1.02004 1.04299 +1.04299 1.04842 1.05567 1.05265 1.0448 1.04238 1.02124 1.01218 +1.02124 1.02245 1.01762 1.02608 1.02608 1.02608 1.01822 1.01339 +1.02306 1.01702 1.02245 1.02547 1.02004 1.02487 1.02064 1.0152 +1.02064 1.02064 1.02124 1.01943 1.02064 1.02728 1.0146 1.01641 +1.03816 1.0297 1.02306 1.0146 1.02426 1.02487 1.02306 1.02366 +1.04238 1.04057 1.04299 1.04601 1.05205 1.04601 1.0442 1.03936 +1.04118 1.04782 1.05024 1.04057 1.02064 1.01943 1.0152 1.01339 +1.01762 1.02728 1.02124 1.01943 1.01339 1.02849 1.0291 1.02064 +1.01702 1.0146 1.014 1.00252 1.0146 1.01762 1.02608 1.01943 +1.02124 1.02547 1.02668 1.02728 1.02064 1.02004 1.0146 1.01641 +1.02366 1.02426 1.01581 1.01943 1.01581 1.02004 1.0152 1.02245 +1.01339 1.02306 1.02004 1.01943 1.01158 1.01883 1.014 1.02487 +1.02426 1.02245 1.02124 1.02668 1.02306 1.03151 1.03332 1.04359 +1.05205 1.05869 0.558857 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0.00401333 0.00602 +0.00200667 0 0 0.00602 0.00100333 0 0 0.00401333 +0.00903 0 0 0 0 0 0.00301 0.00301 +0 0.00200667 0.00401333 0.00602 0.00501667 0.00301 0.00602 0.00301 +0 0 0.00501667 0.00903 0 0 0.00200667 0 +0 0 0 0 0.00301 0.00301 0.00501667 0 +0.00301 0.00401333 0.00401333 0 0 0 0 0 +0.00602 0.00301 0 0 0 0 0 0 +0 0 0 0 0.670264 1.06171 1.05265 1.03755 +1.03091 1.03574 1.0303 1.02849 1.02608 1.01883 1.02124 1.01641 +1.01883 1.01883 1.02004 1.01943 1.02245 1.02124 1.02245 1.01641 +1.0291 1.0152 1.01883 1.02124 1.02487 1.0146 1.02487 1.01943 +1.02487 1.02849 1.02064 1.014 1.01762 1.014 1.01822 1.02547 +1.02789 1.02849 1.01883 0.9844 1.02366 1.0303 1.02668 1.02728 +1.0303 1.02487 1.01581 1.01581 1.014 1.01037 1.014 1.01883 +1.0146 1.02366 1.02064 1.01762 1.0146 1.01943 1.02668 1.01218 +1.02366 1.02849 1.02608 1.02849 1.02789 1.03393 1.02124 1.014 +1.01581 1.0291 1.02185 1.0146 1.02547 1.02245 1.01883 1.01943 +1.0146 1.02547 1.00675 1.00312 1.00796 1.02366 1.02728 1.02306 +1.02668 1.02004 1.02306 1.02185 1.01641 1.01641 1.01762 1.02487 +1.02185 1.00796 1.01581 1.01641 1.02366 1.02547 1.02245 1.00796 +1.02004 1.03936 1.04722 1.0442 1.04842 1.05265 1.05024 1.05507 +1.04661 1.04601 1.03816 1.03151 1.01943 1.03876 1.01641 1.01822 +1.02789 1.0297 1.02366 1.02789 1.02245 1.01641 1.01943 1.02547 +1.03212 1.02185 1.03393 1.01098 1.02124 1.02306 1.01279 1.02185 +1.0152 1.01762 1.00977 1.02547 1.02064 1.01822 1.0146 1.02306 +1.01098 1.01883 1.0146 1.01822 1.01581 1.01883 1.02064 1.0146 +1.0146 1.01641 1.02064 1.02185 1.02245 1.014 1.0146 1.0146 +1.01218 1.0152 1.01822 1.01883 1.02789 1.03272 1.03695 1.04118 +1.04238 1.05628 0.75012 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00100333 0.0100333 +0 0 0 0 0.00200667 0 0 0 +0 0 0 0.00301 0.00200667 0.00702333 0.00702333 0 +0 0 0.00602 0 0 0 0.00301 0 +0 0.00100333 0.00702333 0.00903 0.00401333 0.00702333 0.00301 0 +0 0.00100333 0 0 0 0 0 0 +0.00100333 0.00100333 0 0.00100333 0.00903 0.00602 0 0 +0.00100333 0 0 0 0 0.00200667 0.00200667 0.00401333 +0 0.00401333 0.00401333 0.00501667 0.00903 0.00903 0.00401333 0 +0 0 0.00401333 0.00200667 0 0 0 0 +0 0 0 0.00200667 0.864752 1.05024 1.0442 1.03876 +1.0297 1.02185 1.02306 1.02245 1.02366 1.01943 1.02366 1.01702 +1.02547 1.01762 1.02004 1.02245 1.02124 1.02124 1.01702 1.01822 +1.01762 1.03272 1.03212 1.01641 1.0152 1.02789 1.01762 1.02245 +1.01279 1.01762 1.0303 1.02245 1.02608 1.02306 1.02849 1.02849 +1.03091 1.01762 1.00675 0.997084 1.02366 1.02426 1.01581 1.02004 +1.02185 1.01883 1.02789 1.02004 1.02849 1.0297 1.02185 1.0303 +1.02547 1.03151 1.02789 1.02608 1.01943 1.02668 1.01702 1.02849 +1.02426 1.014 1.02064 1.01762 1.01943 1.0152 1.02306 1.02366 +1.02487 1.014 1.0152 1.01702 1.02124 1.02547 1.01279 1.02185 +1.0152 1.01943 1.01339 1.014 1.01641 1.02064 1.02245 1.02064 +1.02547 1.02306 1.02306 1.02064 1.02547 1.03272 1.03634 1.01339 +1.01883 1.02124 1.02185 1.02789 1.02185 1.02064 1.02426 1.00796 +1.01339 1.0146 1.02608 1.04299 1.04842 1.04842 1.04963 1.04963 +1.04118 1.03876 1.01581 1.02306 1.02306 1.00675 1.02306 1.02245 +1.01762 1.02124 1.02185 1.01218 1.01339 1.01943 1.01822 1.01641 +1.01581 1.01943 1.02789 1.02004 1.02004 1.02004 1.01702 1.02426 +1.01762 1.01702 1.02306 1.01762 1.01702 1.02004 1.01943 1.02004 +1.01641 1.01822 1.01702 1.02547 1.02064 1.02366 1.02245 1.02668 +1.02004 1.01702 1.02306 1.02547 1.00916 1.0146 1.02245 1.0146 +1.01883 1.02064 1.02366 1.02668 1.02728 1.02547 1.0303 1.03272 +1.04118 1.04963 0.920136 0.0290967 0 0 0 0 +0 0 0 0.00501667 0 0 0.00702333 0 +0.00200667 0.00602 0.00903 0.00301 0.00200667 0.00401333 0.00401333 0.00100333 +0.00802667 0.0160533 0.0130433 0.00602 0.00100333 0 0 0.00200667 +0.00501667 0.00903 0.00301 0.00100333 0.00301 0.00100333 0 0.00200667 +0.00702333 0.00401333 0.00200667 0.00501667 0.00200667 0.00200667 0 0.00301 +0.00301 0.00200667 0 0.00200667 0.00501667 0.00401333 0.00301 0.00301 +0.00200667 0 0 0 0 0 0.00401333 0 +0 0.00200667 0.00401333 0.00401333 0.00602 0 0 0.00602 +0.0110367 0 0 0 0 0.00200667 0.00401333 0.00702333 +0.00602 0.00200667 0 0.00100333 0.00401333 0 0 0 +0 0 0 0.0411367 0.942724 1.05567 1.04057 1.03393 +1.03574 1.02547 1.02306 1.01762 1.02064 1.02487 1.02306 1.02426 +1.02306 1.01822 1.01822 1.01702 1.02245 1.02124 1.02064 1.02306 +1.01702 1.01762 1.02004 1.02547 1.01641 1.01943 1.02366 1.02004 +1.02306 1.02004 1.02426 1.02426 1.0291 1.01822 1.0152 1.02004 +1.01762 1.02124 0.989232 1.00856 1.02185 1.02185 1.01641 1.01702 +1.02185 1.01762 1.01822 1.01037 1.02366 1.02849 1.02728 1.01581 +1.01762 1.01581 1.02487 1.01943 1.0291 1.02487 1.02547 1.02124 +1.02487 1.0291 1.01943 1.01883 1.02426 1.01581 1.01943 1.03393 +1.02366 1.0152 1.01279 1.03212 1.02306 1.02185 1.02547 1.0146 +1.02185 1.01218 1.014 1.01943 1.01218 1.01641 1.02366 1.01218 +1.02366 1.01762 1.01762 1.01641 1.0146 1.01279 1.01883 1.02185 +1.01943 1.02064 1.02245 1.01702 1.02185 1.01641 1.02064 1.02547 +1.01641 1.02487 1.02426 1.02426 1.0291 1.03695 1.02306 1.02185 +1.02608 1.02004 1.01641 1.01762 1.014 1.0303 1.03151 1.0146 +1.014 1.03514 1.01822 1.0291 1.02245 1.01883 1.0152 1.02124 +1.02487 1.02064 1.01943 1.01158 1.0152 1.01883 1.02487 1.014 +1.02366 1.01883 1.01641 1.02789 1.02185 1.01641 1.03212 1.01883 +1.02728 1.01943 1.01762 1.02608 1.01943 1.01822 1.01339 1.014 +1.02306 1.01762 1.01098 1.01581 1.01702 1.01822 1.02728 1.02004 +1.02789 1.02185 1.02608 1.02426 1.0303 1.02487 1.02426 1.03272 +1.03997 1.05144 0.974132 0.0802667 0 0 0 0 +0 0 0 0 0 0.00401333 0 0 +0 0 0 0 0 0 0 0.00301 +0.00200667 0 0.00100333 0 0.00200667 0 0 0.00501667 +0.00903 0 0 0 0 0 0.00401333 0 +0 0 0 0 0.00401333 0.00100333 0 0 +0.00200667 0.00401333 0.00100333 0 0 0 0 0 +0 0.00501667 0.00401333 0 0 0 0.00602 0.00501667 +0.00401333 0.00100333 0 0 0 0.00200667 0 0 +0 0.01505 0.0160533 0.00301 0 0 0.00100333 0.00100333 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0.0983267 0.989836 1.04601 1.04057 1.03634 +1.0291 1.0297 1.03151 1.02124 1.02608 1.02366 1.01641 1.01702 +1.01822 1.01943 1.02004 1.02608 1.02124 1.0146 1.02004 1.01641 +1.02487 1.02366 1.02185 1.02487 1.03695 1.0297 1.02547 1.02306 +1.02245 1.02487 1.02185 1.01218 1.01883 1.02366 1.02426 1.02245 +1.02245 1.02124 0.986816 1.01883 1.02789 1.0291 1.02487 1.02245 +1.02668 1.02849 1.02306 1.03393 1.02547 1.02728 1.02789 1.03272 +1.04661 1.03816 1.02789 1.03332 1.02728 1.02306 1.01762 1.02789 +1.01581 1.02124 1.02426 1.02608 1.01339 1.02124 1.01581 1.02366 +1.03332 1.02245 1.02004 1.014 1.02547 1.0152 1.01883 1.01762 +1.02728 1.01339 1.01762 1.02608 1.01098 1.02789 1.02487 1.02487 +1.02789 1.02306 1.01702 1.01702 1.02487 1.01702 1.02366 1.02608 +1.01943 1.0152 1.02366 1.02366 1.02426 1.02245 1.02004 1.02124 +1.02004 1.01762 1.02245 1.02366 1.02245 1.01702 1.02366 1.03393 +1.02668 1.02608 1.01883 1.02124 1.03151 1.01822 1.01641 1.02004 +1.02366 1.01822 1.02245 1.02728 1.01641 1.02668 1.01943 1.01883 +1.01883 1.01822 1.02366 1.02608 1.02245 1.01581 1.0152 1.01641 +1.02547 1.01762 1.02366 1.01762 1.01943 1.02668 1.02849 1.01883 +1.0146 1.02366 1.02668 1.01883 1.01762 1.01702 1.01762 1.0152 +1.0146 1.01883 1.02608 1.02185 1.02124 1.0146 1.01641 1.01883 +1.0146 1.01762 1.02366 1.02547 1.02426 1.0303 1.03393 1.03936 +1.03876 1.05084 1.01098 0.154513 0 0 0 0 +0 0 0 0.00200667 0.00200667 0 0 0.00702333 +0 0 0 0.00200667 0.00802667 0.00501667 0.00200667 0 +0 0 0 0 0 0 0.00401333 0.00100333 +0 0 0 0.00501667 0.00501667 0.00100333 0.00200667 0 +0.00301 0.00100333 0 0.00602 0.00802667 0.01204 0.0130433 0.00301 +0 0 0 0.00401333 0.00702333 0.00100333 0.00200667 0.00301 +0.00702333 0.00200667 0 0.00702333 0.00802667 0.00100333 0 0 +0.00100333 0.00200667 0.00200667 0.00401333 0 0 0 0 +0 0 0 0.0110367 0.0130433 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.15953 1.01943 1.05205 1.03634 1.03634 +1.03212 1.02608 1.02245 1.02124 1.01943 1.02004 1.02004 1.02306 +1.02004 1.02185 1.02547 1.02728 1.02185 1.02185 1.02728 1.02426 +1.02306 1.0291 1.03091 1.0303 1.03091 1.02487 1.03151 1.02789 +1.02245 1.02245 1.02306 1.0291 1.02306 1.02185 1.02124 1.02728 +1.01762 1.01158 1.00252 1.02245 1.01943 1.02185 1.02185 1.02849 +1.0297 1.02004 1.02064 1.02185 1.02426 1.02668 1.03091 1.04359 +1.0297 1.03212 1.03936 1.03514 1.03151 1.02245 1.02487 1.02608 +1.01581 1.02849 1.02124 1.02004 1.01098 1.02426 1.02487 1.00614 +1.0146 1.02185 1.02306 1.02668 1.01943 1.0146 1.01641 1.02245 +1.02487 1.01762 1.02487 1.0152 1.02306 1.01762 1.00614 1.01641 +1.01883 1.00977 1.02728 1.02366 1.01762 1.01339 1.01702 1.01762 +1.02004 1.01641 1.00856 1.02064 1.0152 1.02004 1.02487 1.02547 +1.01339 1.02849 1.02185 1.02245 1.02306 1.03332 1.01641 1.02306 +1.02064 1.01581 1.02426 1.02366 1.02306 1.0291 1.0303 1.02487 +1.01762 1.01883 1.02487 1.02245 1.02487 1.01883 1.02185 1.0303 +1.02849 1.02366 1.02366 1.01641 1.01037 1.01883 1.02185 1.02547 +1.02728 1.0291 1.02728 1.02245 1.02124 1.02185 1.02366 1.01641 +1.02789 1.02426 1.02306 1.03151 1.02366 1.02426 1.01943 1.02668 +1.01822 1.02245 1.02789 1.02366 1.0146 1.01641 1.01581 1.01702 +1.02064 1.01943 1.01822 1.02004 1.02306 1.02487 1.0297 1.03272 +1.0442 1.05265 1.03393 0.24983 0 0 0 0 +0 0 0 0 0 0 0.00802667 0 +0 0.00200667 0.00602 0.00903 0 0.00100333 0 0 +0 0.00501667 0.00802667 0.0100333 0.00903 0.00702333 0 0 +0 0 0.00200667 0 0 0.00100333 0 0.00100333 +0 0.00100333 0.01204 0.00903 0 0 0 0.00401333 +0.00602 0 0 0 0 0 0.00100333 0 +0 0.00100333 0 0 0 0 0.00903 0.00501667 +0 0 0 0.00100333 0.00100333 0.00501667 0.00501667 0.00100333 +0.00702333 0.00301 0 0 0 0.0110367 0.00903 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0.23478 1.03816 1.05386 1.03876 1.03151 +1.0291 1.02547 1.02487 1.02306 1.02245 1.01943 1.014 1.0152 +1.02306 1.01037 1.01822 1.02366 1.02064 1.02487 1.02608 1.02124 +1.02849 1.02849 1.03332 1.02366 1.02608 1.02789 1.0303 1.03393 +1.0297 1.02789 1.02608 1.02547 1.01883 1.00856 1.01641 1.02789 +1.03091 1.02064 1.00856 1.02547 1.01822 1.02487 1.02064 1.01822 +1.01943 1.02487 1.02547 1.03212 1.03514 1.03212 1.03755 1.04057 +1.04601 1.03272 1.03695 1.03272 1.03212 1.03514 1.0303 1.02728 +1.03272 1.02547 1.02487 1.01702 1.01581 1.01943 1.02426 1.02366 +1.01822 1.01883 1.02185 1.0291 1.0152 1.01762 1.0291 1.01581 +1.014 1.01641 1.01762 1.03514 1.02728 1.0146 1.02366 1.01762 +1.01943 1.00916 1.01822 1.02185 1.03091 1.02064 1.02004 1.02064 +1.02426 1.02064 1.02124 1.03151 1.02064 1.02064 1.02004 1.02668 +1.01883 1.02608 1.0152 1.02366 1.01702 1.01158 1.01822 1.01339 +1.02608 1.02728 1.0291 1.02849 1.02426 1.01822 1.02245 1.02789 +1.02728 1.02668 1.01943 1.02366 1.02366 1.02245 1.02245 1.02185 +1.01702 1.02185 1.02849 1.01883 1.02124 1.014 1.0303 1.02789 +1.02789 1.02185 1.0152 1.01641 1.02064 1.0297 1.02064 1.03332 +1.02668 1.02366 1.0291 1.02185 1.03514 1.03091 1.01762 1.02608 +1.02668 1.02668 1.02185 1.0146 1.02366 1.02547 1.02668 1.02366 +1.02185 1.02185 1.02547 1.03151 1.0291 1.0303 1.0303 1.03695 +1.03936 1.04661 1.0448 0.341133 0 0 0 0 +0 0 0 0.00401333 0.00401333 0 0 0 +0.00501667 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00802667 0.00401333 0 0 0 0.00100333 0.00100333 0 +0 0.00100333 0 0 0 0 0 0 +0 0.01204 0.00903 0.00301 0 0 0 0 +0 0.00501667 0.00200667 0.00501667 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00100333 0.00301 0 0 0 0 0 +0 0 0 0.302003 1.0454 1.0442 1.03514 1.0291 +1.03514 1.02728 1.02728 1.02426 1.02124 1.02245 1.02487 1.01702 +1.01702 1.02245 1.01641 1.0152 1.02004 1.01943 1.0291 1.03876 +1.02728 1.03212 1.02366 1.01098 0.995876 1.00796 1.03212 1.0442 +1.03272 1.0291 1.01702 1.02004 1.02849 1.02185 1.02547 1.02185 +1.02487 1.00131 1.01158 1.02245 1.02124 1.01762 1.02306 1.02366 +1.01702 1.02306 1.0291 1.03212 1.03997 1.04601 1.014 0.965676 +0.920136 0.913696 0.966884 1.02064 1.04661 1.03816 1.02366 1.02185 +1.0291 1.02064 1.02487 1.02366 1.02547 1.02124 1.02789 1.02245 +1.01883 1.0146 1.02124 1.01762 1.02366 1.0152 1.02124 1.02306 +1.02004 1.0146 1.02608 1.01581 1.02366 1.02849 1.01641 1.01098 +1.0152 1.02608 1.01762 1.03574 1.01943 1.02064 1.01822 1.01762 +1.01883 1.01641 1.02849 1.03151 1.01037 1.01702 1.0297 1.01822 +1.01822 1.01883 1.01762 1.02426 1.02608 1.02487 1.01822 1.02789 +1.03272 1.02245 1.03393 1.03393 1.03091 1.03151 1.02849 1.02608 +1.02728 1.02789 1.03212 1.02185 1.02185 1.03091 1.01762 1.0152 +1.01702 1.0297 1.02426 1.02064 1.02245 1.02124 1.01822 1.01218 +1.02245 1.02306 1.01943 1.02366 1.03332 1.0291 1.0297 1.03151 +1.02306 1.02728 1.02245 1.02668 1.0297 1.01822 1.03151 1.02608 +1.01822 1.02064 1.02245 1.01822 1.02124 1.02124 1.02668 1.01943 +1.02245 1.02426 1.01581 1.01883 1.01702 1.01641 1.02245 1.02668 +1.03151 1.04601 1.05265 0.449493 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00501667 +0.00200667 0 0 0.00200667 0.00100333 0 0.00702333 0.00802667 +0.00200667 0.00501667 0.00100333 0 0.00401333 0.00802667 0.0100333 0.00200667 +0 0 0 0.00200667 0.00501667 0.00401333 0.00301 0.00702333 +0.00602 0 0 0.00602 0.00200667 0 0 0.00100333 +0 0 0 0.0110367 0.0100333 0.00802667 0.00501667 0.00200667 +0 0 0.00200667 0.00702333 0.00602 0.00602 0.00802667 0.00200667 +0 0.00100333 0 0 0 0.00401333 0.00401333 0.00702333 +0.00401333 0.00602 0.00903 0.00702333 0.00200667 0 0 0 +0.00301 0 0 0 0 0 0 0 +0 0 0 0.37625 1.05446 1.05024 1.03695 1.02668 +1.02668 1.02789 1.02185 1.02245 1.02306 1.02185 1.01339 1.0152 +1.02185 1.02426 1.02366 1.02487 1.02245 1.02789 1.03393 1.0291 +0.968092 0.734664 0.570897 0.512703 0.476583 0.50267 0.61488 0.87248 +1.01641 1.03393 1.03514 1.02366 1.02668 1.02728 1.02004 1.02064 +1.02306 0.997084 1.01883 1.02426 1.0297 1.01822 1.02185 1.02668 +1.02789 1.03634 1.04118 1.04238 1.00494 0.694736 0.351167 0.18662 +0.14749 0.157523 0.19264 0.371233 0.699888 1.00977 1.04057 1.03332 +1.03634 1.0291 1.0291 1.014 1.01762 1.02366 1.01581 1.02124 +1.02426 1.02608 1.01762 1.01702 1.02004 1.01641 1.014 1.01883 +1.02004 1.01883 1.0001 1.02004 1.01581 1.02426 1.01822 1.01218 +1.02004 1.01218 1.0152 1.0146 1.01822 1.01641 1.01943 1.01581 +1.02487 1.02004 1.02306 1.02245 1.02245 1.02728 1.014 1.02306 +1.01822 1.02245 1.02306 1.0152 1.01702 1.0291 1.02366 1.02306 +1.02849 1.02849 1.02668 1.03876 1.03634 1.03755 1.03453 1.03936 +1.03212 1.03816 1.02124 1.02849 1.02547 1.02849 1.02124 1.02245 +1.02124 1.01883 1.01641 1.01943 1.01279 1.01218 1.01943 1.02547 +1.02124 1.02124 1.02124 1.01702 1.02185 1.02849 1.02789 1.03151 +1.04118 1.02728 1.02124 1.02426 1.03634 1.03453 1.02426 1.03151 +1.02487 1.02185 1.02366 1.02185 1.01218 1.01581 1.01339 1.02124 +1.02366 1.02487 1.0291 1.02245 1.02789 1.0303 1.02728 1.03755 +1.04238 1.04238 1.05265 0.52675 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00200667 0.00100333 0.00301 0.0100333 0.00903 0.00602 0 0 +0.00301 0.00702333 0.00100333 0 0 0 0.00200667 0 +0 0.00602 0.00802667 0.00401333 0 0.00200667 0.00802667 0.00702333 +0.00100333 0 0 0 0 0 0 0.00602 +0.00200667 0 0 0 0 0 0 0 +0.00100333 0 0.00501667 0 0 0 0 0 +0 0 0 0.00301 0.00100333 0.00301 0.00501667 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0.42742 1.05507 1.04661 1.04299 1.03212 +1.0291 1.02668 1.02487 1.01943 1.02547 1.02608 1.02608 1.01762 +1.02064 1.02245 1.02608 1.02668 1.03514 1.03332 1.02306 0.845432 +0.506683 0.432437 0.441467 0.456517 0.447487 0.446483 0.432437 0.470563 +0.629048 0.974132 1.03574 1.0303 1.02608 1.02668 1.02849 1.03212 +1.02547 0.977756 1.02064 1.02547 1.02608 1.01943 1.02064 1.03272 +1.0303 1.03151 1.03453 0.943328 0.366217 0.131437 0.116387 0.11739 +0.1204 0.12642 0.113377 0.124413 0.13846 0.37926 0.957824 1.04118 +1.03332 1.02547 1.02366 1.02366 1.02064 1.0146 1.02849 1.014 +1.03212 1.01822 1.02004 1.03091 1.02245 1.01098 1.01641 1.02306 +1.0152 1.02608 1.02728 1.02124 1.01279 1.01883 1.02124 1.02668 +1.02064 1.02245 1.01883 1.02064 1.01883 1.01641 1.0297 1.0152 +1.01762 1.01762 1.01641 1.01943 1.01762 1.0146 1.02547 1.02245 +1.01883 1.01339 1.02789 1.01581 1.03212 1.01339 1.0291 1.04178 +1.03574 1.04359 1.04178 1.04118 1.04178 1.02245 1.03091 1.04118 +1.04299 1.04661 1.0448 1.03151 1.02426 1.03151 1.02668 1.01762 +1.01943 1.02064 1.0297 1.01762 1.01702 1.02004 1.02366 1.02366 +1.01641 1.01822 1.02547 1.02608 1.03212 1.03212 1.0152 0.942724 +0.742392 0.626472 0.593973 0.663824 0.796488 0.956616 1.01822 1.03272 +1.0291 1.02728 1.02668 1.02185 1.01762 1.01339 1.02185 1.01883 +1.0146 1.01339 1.0146 1.02004 1.02366 1.0303 1.02849 1.03755 +1.03936 1.04722 1.05567 0.613592 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00401333 0.00301 0 +0 0 0 0 0 0 0 0.00200667 +0.00401333 0 0 0 0.00200667 0.00401333 0.00200667 0 +0 0 0.00501667 0.00501667 0.00903 0.00401333 0 0 +0.00100333 0.00200667 0.00200667 0 0 0 0 0 +0 0 0.00200667 0.00100333 0 0 0.00301 0.00200667 +0 0 0 0 0.00100333 0.00301 0 0 +0 0 0.00100333 0 0 0 0.00200667 0.00501667 +0 0 0.00301 0 0 0 0 0 +0 0 0 0.483607 1.05386 1.04238 1.03212 1.0291 +1.0297 1.02366 1.02426 1.01702 1.02004 1.02366 1.02004 1.02185 +1.02849 1.02124 1.01943 1.0152 1.02487 1.02608 0.822248 0.477587 +0.450497 0.44247 0.45752 0.46053 0.4515 0.46655 0.45752 0.452503 +0.452503 0.552837 0.976548 1.03876 1.0297 1.02004 1.01943 1.014 +1.02306 0.983796 1.02366 1.02849 1.02185 1.02004 1.02547 1.02608 +1.03816 1.03393 0.956616 0.293977 0.116387 0.13846 0.148493 0.13545 +0.125417 0.110367 0.130433 0.137457 0.128427 0.11438 0.31605 0.965676 +1.03695 1.03393 1.03272 1.01822 1.02245 1.01883 1.02124 1.02608 +1.014 1.01641 1.02608 1.02366 1.02185 1.00796 1.02185 1.02004 +1.01883 1.02789 1.02306 1.01581 1.01762 1.01943 1.0297 1.02245 +1.02185 1.01762 1.00856 1.01762 1.02124 1.02306 1.0297 1.02004 +1.02004 1.03332 1.02487 1.02487 1.02608 1.01581 1.0152 1.02064 +1.02426 1.02668 1.02608 1.02426 1.02306 1.03574 1.03876 1.03332 +1.03453 1.0297 0.934268 0.602 0.399327 0.31605 0.335113 0.483607 +0.765576 1.00252 1.03936 1.03574 1.0303 1.02789 1.02608 1.01822 +1.01762 1.01883 1.02064 1.02366 1.01883 1.0152 1.02306 1.0152 +1.02426 1.02426 1.03151 1.0303 1.03514 0.967488 0.650944 0.48461 +0.443473 0.435447 0.43946 0.440463 0.432437 0.491633 0.71792 0.985608 +1.03151 1.02487 1.02487 1.02728 1.02245 1.01762 1.02306 1.01702 +1.01822 1.01581 1.02004 1.02306 1.02245 1.0297 1.02306 1.02789 +1.03393 1.0448 1.05628 0.693448 0 0 0 0 +0 0 0 0 0 0.00301 0 0.00602 +0 0 0 0 0 0 0.00802667 0.00903 +0.00301 0.00401333 0 0 0 0 0.00301 0.00100333 +0 0 0 0.00301 0 0 0.00200667 0.00401333 +0 0 0 0 0 0 0.00200667 0 +0 0 0.00301 0.00100333 0 0 0 0.00401333 +0.00200667 0 0 0 0.00200667 0.00100333 0 0 +0 0 0 0 0.00100333 0.00200667 0.00501667 0.00501667 +0 0 0 0 0.00401333 0.00903 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0.534777 1.06111 1.0448 1.03997 1.03393 +1.02547 1.02426 1.02487 1.02185 1.02306 1.01943 1.01581 1.01702 +1.02547 1.02426 1.0297 1.03574 1.0297 0.929436 0.50267 0.441467 +0.452503 0.456517 0.452503 0.46053 0.476583 0.47859 0.476583 0.479593 +0.46053 0.447487 0.593973 1.014 1.03574 1.03453 1.02608 1.02487 +1.0146 0.994064 1.03091 1.02366 1.02426 1.02124 1.03212 1.03876 +1.04238 1.01822 0.441467 0.11137 0.139463 0.149497 0.1505 0.151503 +0.146487 0.13846 0.137457 0.148493 0.130433 0.130433 0.112373 0.461533 +1.02064 1.03876 1.03574 1.03695 1.02366 1.02124 1.02487 1.03151 +1.01822 1.02004 1.01883 1.01641 1.02124 1.0291 1.01339 1.02608 +1.01702 1.02004 1.03574 1.01943 1.02728 1.02004 1.00856 1.01822 +1.02064 1.02004 1.02668 1.02004 1.01702 1.00554 1.02004 1.01762 +1.01641 1.0291 1.02245 1.02306 1.02306 1.01581 1.02547 1.02789 +1.02547 1.02004 1.02789 1.01641 1.0291 1.0291 1.0297 1.03212 +0.983192 0.528757 0.197657 0.12341 0.121403 0.122407 0.11137 0.11438 +0.113377 0.29197 0.810656 1.0454 1.03816 1.04118 1.03453 1.02547 +1.02849 1.02124 1.02547 1.02608 1.02366 1.01702 1.02245 1.02668 +1.02064 1.03151 1.02728 1.03453 0.947556 0.527753 0.4515 0.44849 +0.453507 0.468557 0.465547 0.452503 0.438457 0.447487 0.441467 0.578923 +0.978964 1.03151 1.02668 1.0152 1.01822 1.02004 1.02487 1.02185 +1.02245 1.02306 1.02608 1.02245 1.02064 1.01702 1.02366 1.03332 +1.03514 1.03634 1.05144 0.763 0 0 0 0 +0 0 0 0.00200667 0.00401333 0 0 0 +0 0.00903 0.00602 0 0 0 0 0 +0 0 0 0.00401333 0.01204 0.0100333 0.00301 0 +0 0.00501667 0.00401333 0.00301 0.00401333 0.00301 0 0 +0 0 0 0.00100333 0.00100333 0 0 0.00401333 +0.00401333 0 0 0 0 0 0 0 +0 0.00802667 0.00903 0.00501667 0.00200667 0 0 0.00401333 +0 0 0 0.00200667 0 0 0 0.00100333 +0.00702333 0.00200667 0.00401333 0.00401333 0 0 0 0.00501667 +0 0 0 0 0 0 0 0 +0 0 0 0.570897 1.0605 1.04842 1.03755 1.02849 +1.02849 1.02608 1.02668 1.03272 1.02004 1.02426 1.0303 1.01641 +1.02185 1.01943 1.01883 1.02728 1.01581 0.630336 0.459527 0.456517 +0.459527 0.46053 0.459527 0.480597 0.471567 0.470563 0.464543 0.46956 +0.45752 0.461533 0.459527 0.871192 1.03997 1.03695 1.0303 1.02487 +1.01581 1.00796 1.02185 1.02728 1.02004 1.01943 1.0297 1.03514 +1.04963 0.845432 0.151503 0.106353 0.13846 0.164547 0.164547 0.148493 +0.16555 0.1505 0.15652 0.139463 0.133443 0.146487 0.13545 0.173577 +0.87892 1.0442 1.03393 1.02306 1.0291 1.02668 1.02789 1.02426 +1.02004 1.02487 1.02547 1.01762 1.02185 1.02064 1.02306 1.01822 +1.02124 1.03151 1.02245 1.02426 1.02306 1.0146 1.0297 1.01641 +1.00554 1.02426 1.01762 1.01943 1.0152 1.02668 1.01883 1.03091 +1.02789 1.02185 1.0291 1.01339 1.02124 1.02064 1.02004 1.02124 +1.02668 1.02668 1.01943 1.03393 1.03634 1.03212 1.03393 0.981984 +0.390297 0.12341 0.124413 0.148493 0.128427 0.1505 0.14448 0.133443 +0.124413 0.119397 0.172573 0.712768 1.03574 1.03695 1.02789 1.02245 +1.02608 1.02668 1.02789 1.0152 1.02547 1.01943 1.02124 1.02728 +1.02306 1.02668 1.03453 0.988628 0.534777 0.444477 0.44247 0.46655 +0.47558 0.48461 0.471567 0.45752 0.462537 0.470563 0.456517 0.44849 +0.641928 1.01641 1.03272 1.02728 1.02366 1.02185 1.02366 1.01943 +1.02124 1.03091 1.01883 1.0146 1.0146 1.02366 1.03332 1.03272 +1.03816 1.04661 1.06111 0.819672 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0 0.0130433 0.00501667 0 0 0 +0 0 0.00200667 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00200667 0.00602 0.00802667 0.0110367 0 0 0.00301 0 +0 0 0.00602 0.00702333 0.00602 0.00401333 0 0 +0 0 0 0 0.00301 0.00501667 0.00401333 0 +0.00100333 0.00702333 0.00702333 0.00200667 0.00401333 0.00200667 0.00200667 0 +0.00100333 0.00702333 0.00301 0.00100333 0.00301 0.00602 0 0 +0.0110367 0.00100333 0 0 0 0 0 0 +0 0 0 0.582937 1.04842 1.03936 1.03332 1.03936 +1.03091 1.01943 1.01762 1.01822 1.0297 1.02124 1.01943 1.02789 +1.02245 1.02004 1.01762 1.0291 0.958428 0.479593 0.444477 0.446483 +0.450497 0.464543 0.47257 0.467553 0.483607 0.470563 0.482603 0.474577 +0.446483 0.449493 0.45752 0.625184 1.02185 1.03453 1.02849 1.01883 +1.0146 1.00856 1.02608 1.02789 1.0152 1.02547 1.02668 1.03453 +1.03212 0.492637 0.112373 0.133443 0.154513 0.149497 0.16555 0.170567 +0.15953 0.166553 0.161537 0.145483 0.161537 0.139463 0.13846 0.121403 +0.52976 1.04299 1.03514 1.03151 1.01943 1.02245 1.02789 1.01762 +1.02426 1.02668 1.01822 1.01822 1.01641 1.02004 1.02064 1.02789 +1.01098 1.02608 1.02728 1.02426 1.02306 1.02366 1.014 1.01279 +1.01762 1.02064 1.0303 1.0152 1.02426 1.02004 1.0152 1.01762 +1.01822 1.02064 1.01883 1.02185 1.01641 1.0303 1.014 1.02487 +1.02124 1.01822 1.02245 1.02668 1.02487 1.04057 1.02185 0.500663 +0.121403 0.134447 0.14448 0.142473 0.155517 0.155517 0.167557 0.163543 +0.146487 0.13244 0.125417 0.197657 0.87892 1.04722 1.03574 1.02849 +1.01581 1.0297 1.02426 1.02124 1.03212 1.0146 1.01641 1.03514 +1.03091 1.03212 1.02426 0.753984 0.44849 0.46655 0.447487 0.482603 +0.486617 0.471567 0.46655 0.48762 0.46655 0.45752 0.465547 0.446483 +0.464543 0.85316 1.0297 1.02487 1.02245 1.02608 1.02004 1.02064 +1.02306 1.01702 1.01822 1.02124 1.02608 1.02849 1.02608 1.0297 +1.03997 1.04359 1.05507 0.863464 0.00501667 0 0 0 +0 0 0 0.00100333 0.00702333 0.00401333 0.00501667 0.00301 +0 0 0 0 0 0.00100333 0.00602 0.00301 +0.00501667 0.00602 0 0 0 0.00100333 0.00301 0 +0 0 0 0 0 0.00501667 0.00401333 0.00100333 +0.00602 0.00200667 0 0 0 0 0.00200667 0.00401333 +0.00401333 0.00401333 0 0 0 0 0 0.00301 +0.00200667 0.00401333 0.00602 0.00100333 0 0 0.00100333 0.00501667 +0.00301 0 0 0 0 0 0.00100333 0 +0.00100333 0 0.00100333 0 0 0 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0 0.62132 1.06352 1.04661 1.03332 1.02487 +1.02426 1.02789 1.02306 1.02245 1.01762 1.02124 1.02245 1.02245 +1.02306 1.02366 1.0297 1.02789 0.826112 0.44247 0.459527 0.455513 +0.46956 0.46655 0.480597 0.47859 0.477587 0.456517 0.485613 0.480597 +0.473573 0.462537 0.447487 0.524743 0.995272 1.03272 1.03876 1.02547 +1.01822 1.0152 1.03332 1.02789 1.02608 1.02185 1.03212 1.03332 +1.01037 0.31003 0.125417 0.137457 0.140467 0.158527 0.16254 0.154513 +0.15351 0.14749 0.15652 0.15652 0.166553 0.149497 0.122407 0.116387 +0.351167 1.0291 1.04178 1.03514 1.02608 1.01883 1.01883 1.01883 +1.01339 1.02306 1.01822 1.02366 1.02245 1.02487 1.02245 1.02728 +1.03091 1.01943 1.01762 1.0146 1.02245 1.01762 1.02185 1.03151 +1.02306 1.02306 1.02608 1.02185 1.02426 1.02245 1.00071 1.01641 +1.03755 1.01943 1.0146 1.03091 1.01641 1.01702 1.02004 1.02124 +1.02245 1.02547 1.03212 1.02728 1.04299 1.03876 0.828688 0.16555 +0.09933 0.119397 0.146487 0.14749 0.164547 0.13846 0.158527 0.154513 +0.15652 0.143477 0.14749 0.116387 0.383273 1.01037 1.03151 1.04722 +1.03212 1.02064 1.02426 1.02064 1.01279 1.02004 1.02849 1.02306 +1.0291 1.02849 0.995272 0.52073 0.4515 0.459527 0.464543 0.480597 +0.482603 0.467553 0.471567 0.482603 0.480597 0.488623 0.45451 0.447487 +0.43043 0.5719 1.01581 1.02426 1.02185 1.02306 1.02124 1.01883 +1.02064 1.02185 1.014 1.02064 1.02487 1.02306 1.02849 1.03091 +1.03634 1.03936 1.04842 0.86604 0.00501667 0 0 0 +0 0 0 0.00100333 0 0.00100333 0 0 +0.00100333 0.00401333 0 0.00100333 0.00802667 0.0100333 0.0100333 0.00802667 +0.00501667 0.00301 0 0 0.00200667 0 0 0 +0.00200667 0 0.00401333 0.0110367 0.00602 0 0 0 +0 0 0.00200667 0.00200667 0 0 0 0.00100333 +0 0 0 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0.0110367 0.0130433 0.01204 0.00802667 0 0 +0 0 0 0.00301 0.00903 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.618744 1.05205 1.0442 1.04178 1.03514 +1.03816 1.02547 1.02487 1.01943 1.02306 1.01822 1.02124 1.01641 +1.02245 1.02245 1.02487 1.02849 0.765576 0.44548 0.437453 0.45451 +0.474577 0.477587 0.47558 0.46655 0.48461 0.476583 0.473573 0.482603 +0.485613 0.46354 0.44247 0.489627 0.974736 1.02728 1.02366 1.03151 +1.01641 1.01943 1.03091 1.02728 1.02668 1.02789 1.0303 1.03212 +1.00373 0.26488 0.121403 0.14448 0.16555 0.164547 0.154513 0.15351 +0.154513 0.17458 0.17157 0.15953 0.142473 0.14147 0.14147 0.119397 +0.29197 1.01218 1.01883 1.02728 1.02668 1.02849 1.02245 1.01218 +1.02366 1.02185 1.02668 1.02426 1.02004 1.02004 1.03393 1.014 +1.01883 1.01037 1.01339 1.02487 1.01943 1.02124 1.0152 0.986212 +1.01641 1.0297 1.02185 1.02487 1.0291 1.01943 1.02728 1.01641 +1.00977 1.02124 1.0146 1.01822 1.01822 1.02064 1.02245 1.02185 +1.03091 1.01943 1.01762 1.03997 1.03212 1.03997 0.46655 0.101337 +0.11739 0.11739 0.130433 0.14448 0.146487 0.172573 0.157523 0.15652 +0.15953 0.154513 0.13545 0.128427 0.148493 0.887936 1.04057 1.02789 +1.02366 1.02124 1.0291 1.0291 1.02426 1.02185 1.02547 1.02849 +1.02789 1.02849 0.939704 0.456517 0.450497 0.465547 0.468557 0.473573 +0.47558 0.483607 0.48461 0.47558 0.48461 0.47558 0.461533 0.456517 +0.46354 0.49063 0.973528 1.02487 1.02608 1.02185 1.02124 1.02124 +1.02245 1.02426 1.03332 1.03091 1.02366 1.02728 1.02366 1.02487 +1.03272 1.03634 1.05628 0.881496 0.0130433 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0 0 0 0 0.00100333 0 0 0 +0 0.00100333 0.00602 0.00100333 0.00100333 0.00602 0.00702333 0.00401333 +0.00602 0.00401333 0.00602 0.00200667 0.00401333 0.0100333 0.00802667 0.00501667 +0.00702333 0 0 0 0 0 0 0 +0 0.00401333 0.00501667 0.00200667 0 0 0.00401333 0.00802667 +0.00501667 0 0 0.00100333 0.00501667 0.00301 0.00200667 0 +0 0 0 0 0 0 0.00702333 0.00903 +0.00702333 0.00401333 0.00200667 0.00100333 0 0.00301 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0 0.639352 1.06473 1.04903 1.03695 1.02426 +1.02245 1.02064 1.01762 1.01883 1.02608 1.02547 1.02306 1.02487 +1.02185 1.02426 1.02608 1.0291 0.765576 0.440463 0.443473 0.464543 +0.465547 0.470563 0.471567 0.48461 0.47558 0.46655 0.477587 0.476583 +0.462537 0.473573 0.473573 0.510697 0.972924 1.02185 1.02668 1.03453 +1.00735 1.01279 1.01822 1.0291 1.02849 1.0303 1.02728 1.02728 +1.01158 0.299997 0.116387 0.140467 0.158527 0.154513 0.17458 0.157523 +0.16254 0.158527 0.16254 0.16254 0.148493 0.15953 0.142473 0.119397 +0.305013 1.02185 1.0303 1.02728 1.0297 1.01158 1.02064 1.02487 +1.01762 1.02306 1.02668 1.02426 1.02124 1.01218 1.0291 1.00916 +1.01641 1.02547 1.03272 1.00977 1.00977 1.03272 0.92702 0.25585 +0.964468 1.02426 1.02487 1.0152 1.01702 1.02728 1.02487 1.01037 +1.00735 1.02004 1.02366 1.02789 1.02004 1.02547 1.02124 1.01822 +1.014 1.03755 1.02728 1.02547 1.04057 0.991044 0.236787 0.104347 +0.124413 0.148493 0.148493 0.139463 0.146487 0.170567 0.164547 0.163543 +0.151503 0.140467 0.14448 0.13545 0.113377 0.638064 1.03212 1.02306 +1.03574 1.01943 1.02728 1.03091 1.02306 1.00856 1.01943 1.0297 +1.02185 1.03151 0.860888 0.435447 0.45752 0.486617 0.4816 0.476583 +0.485613 0.477587 0.48762 0.471567 0.485613 0.474577 0.455513 0.459527 +0.444477 0.45752 0.942724 1.03091 1.02245 1.02245 1.01762 1.02306 +1.01762 1.01702 1.02004 1.02487 1.02124 1.01943 1.02185 1.03393 +1.03816 1.0442 1.05265 0.881496 0.0100333 0 0 0 +0 0 0 0 0.00301 0 0 0 +0 0.00501667 0.00602 0 0 0 0 0 +0 0 0 0.00401333 0.00401333 0.00200667 0 0 +0 0 0 0 0.00100333 0 0 0 +0 0 0.00401333 0 0 0.00602 0 0 +0 0 0 0 0.00301 0.00602 0 0 +0 0.00401333 0.00702333 0.00100333 0 0 0.00200667 0.00602 +0 0 0 0 0 0 0 0 +0 0.00200667 0 0 0 0 0.00200667 0.00200667 +0.00702333 0.00602 0 0 0 0 0 0 +0 0 0 0.61488 1.05748 1.03936 1.03574 1.03393 +1.0291 1.02789 1.03212 1.02849 1.01581 1.02064 1.02789 1.02245 +1.02547 1.02306 1.01762 1.02064 0.87892 0.46053 0.447487 0.467553 +0.46354 0.471567 0.476583 0.47859 0.471567 0.474577 0.47257 0.482603 +0.476583 0.4515 0.455513 0.530763 1.00252 1.03332 1.02849 1.01822 +1.02124 1.00916 1.02124 1.02245 1.02789 1.03453 1.02789 1.03634 +1.02306 0.402337 0.130433 0.15652 0.151503 0.15351 0.1505 0.169563 +0.163543 0.1505 0.160533 0.155517 0.166553 0.124413 0.124413 0.130433 +0.461533 1.02608 1.04601 1.01762 1.02306 1.0297 1.02064 1.0152 +1.01943 1.02366 1.02426 1.01279 1.03574 1.02608 1.01943 1.02064 +1.02668 1.01762 1.01883 1.02004 1.0146 1.03151 1.00131 0.908544 +1.02849 1.02004 1.02064 1.02728 1.01339 1.03212 1.01762 1.02789 +1.02789 1.0146 1.0152 1.01883 1.00796 1.02668 1.01943 1.0303 +1.01702 1.01822 1.02426 1.03634 1.04118 0.957824 0.191637 0.106353 +0.140467 0.137457 0.143477 0.15351 0.155517 0.14448 0.149497 0.148493 +0.155517 0.14448 0.11739 0.118393 0.11438 0.51471 1.04238 1.0291 +1.03695 1.02789 1.03091 1.02306 1.01943 1.01943 1.01943 1.02668 +1.03212 1.04238 0.87892 0.456517 0.458523 0.464543 0.441467 0.45752 +0.486617 0.47859 0.479593 0.477587 0.482603 0.468557 0.455513 0.462537 +0.450497 0.46354 0.94212 1.02426 1.02608 1.01762 1.02245 1.02306 +1.01943 1.02245 1.01883 1.02547 1.0146 1.02185 1.02608 1.03816 +1.03876 1.04299 1.05326 0.851872 0.00301 0 0 0 +0 0 0 0 0 0.00301 0.00100333 0 +0.00200667 0.00100333 0 0 0 0 0.00401333 0 +0.00100333 0 0 0 0 0.00100333 0.00401333 0.00401333 +0.00401333 0.00301 0.00301 0 0.00200667 0.00301 0 0 +0 0 0 0 0 0 0.00401333 0.0110367 +0.00401333 0 0.00301 0 0 0 0 0.00301 +0.0100333 0.00100333 0 0 0.00200667 0.00501667 0 0 +0.00301 0.0100333 0.0100333 0.00903 0.00401333 0.00401333 0.00401333 0 +0 0 0 0 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.602 1.05567 1.04842 1.03997 1.03151 +1.0303 1.02366 1.02185 1.02306 1.02487 1.02004 1.01822 1.01581 +1.02547 1.02789 1.03393 1.02789 0.96628 0.49063 0.449493 0.46655 +0.46655 0.459527 0.476583 0.470563 0.473573 0.480597 0.480597 0.48461 +0.47257 0.452503 0.434443 0.663824 1.02608 1.02366 1.0291 1.02728 +1.02185 1.01218 1.01943 1.02185 1.01943 1.02487 1.03151 1.04118 +1.0442 0.684432 0.131437 0.13244 0.139463 0.14749 0.146487 0.142473 +0.160533 0.172573 0.146487 0.1505 0.164547 0.14749 0.12943 0.119397 +0.75012 1.04178 1.03816 1.02728 1.02728 1.02547 1.014 1.02668 +1.01641 1.02608 1.00977 1.03212 1.02426 1.02306 1.02124 1.01883 +1.01762 1.02366 1.014 1.02064 1.0297 1.02487 1.02245 1.0297 +1.01158 1.02004 1.01581 1.02185 1.03695 1.02426 1.00856 1.0152 +1.03091 1.02366 1.01943 1.0152 1.0146 1.01339 1.02245 1.0152 +1.02608 1.02306 1.03574 1.0442 1.04118 0.976548 0.20167 0.09933 +0.12341 0.131437 0.142473 0.139463 0.14749 0.14749 0.15652 0.152507 +0.14147 0.137457 0.149497 0.13545 0.127423 0.512703 1.03393 1.02547 +1.0297 1.03393 1.02547 1.02064 1.02306 1.0152 1.01883 1.02245 +1.03755 1.02547 0.934872 0.456517 0.456517 0.47257 0.45752 0.471567 +0.470563 0.480597 0.483607 0.477587 0.47257 0.461533 0.461533 0.44548 +0.431433 0.486617 0.971716 1.0297 1.01883 1.02547 1.02185 1.02245 +1.02728 1.01943 1.02185 1.01883 1.02426 1.03212 1.02728 1.03091 +1.04118 1.04359 1.05326 0.858312 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00602 +0.00100333 0 0.00501667 0.01204 0.01204 0.00802667 0.00200667 0.00702333 +0 0 0 0.01204 0.0140467 0.00301 0 0 +0 0 0.00501667 0.00100333 0 0 0 0 +0.00100333 0 0.00200667 0 0 0 0 0 +0 0 0 0.00401333 0.00401333 0.00301 0.00100333 0 +0 0 0.00200667 0.00301 0 0 0.00301 0.00702333 +0.00301 0 0 0 0 0 0 0.00401333 +0.00200667 0.00802667 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.58394 1.05809 1.04238 1.03212 1.03332 +1.0297 1.0291 1.01762 1.01641 1.02185 1.0291 1.02245 1.02789 +1.02185 1.02064 1.02487 1.02789 1.01943 0.687008 0.444477 0.452503 +0.458523 0.46956 0.465547 0.473573 0.46956 0.464543 0.45752 0.467553 +0.46354 0.456517 0.465547 0.934268 1.03816 1.0297 1.02185 1.02426 +1.014 1.01702 1.01822 1.0291 1.0297 1.02547 1.02789 1.02547 +1.03574 0.983192 0.27993 0.1204 0.122407 0.14147 0.145483 0.16856 +0.179597 0.175583 0.160533 0.148493 0.127423 0.12642 0.12642 0.30702 +1.00977 1.04299 1.03151 1.03393 1.02366 1.02185 1.03091 1.02004 +1.01581 1.01098 1.03212 1.02668 1.0146 1.01822 1.01943 1.01702 +1.01702 1.00433 1.01581 1.0152 1.03212 1.03091 1.01943 1.01762 +1.02004 1.02004 1.0291 1.02004 1.02728 1.01943 1.01279 1.02728 +1.01702 1.01762 1.0297 1.02124 1.01158 1.01339 1.02728 1.02668 +1.02608 1.02849 1.01883 1.03514 1.03393 1.00071 0.25284 0.140467 +0.131437 0.151503 0.16555 0.14448 0.13545 0.146487 0.14448 0.14147 +0.145483 0.152507 0.136453 0.121403 0.110367 0.612304 1.03453 1.0291 +1.03816 1.02547 1.02728 1.01822 1.02426 1.00494 1.02366 1.02306 +1.02608 1.0291 0.988024 0.52675 0.473573 0.470563 0.465547 0.465547 +0.483607 0.473573 0.476583 0.47558 0.49063 0.464543 0.452503 0.444477 +0.440463 0.591967 1.01218 1.03332 1.03272 1.03332 1.03151 1.02245 +1.01641 1.02426 1.01883 1.02668 1.02185 1.01822 1.02366 1.0297 +1.03212 1.03936 1.05809 0.826112 0 0 0 0 +0 0 0 0 0 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0.01204 0.0200667 0.0110367 0.00200667 0 0.00200667 0.00301 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00200667 +0.00200667 0 0 0 0.00100333 0.00401333 0 0 +0 0.00100333 0.00401333 0.00702333 0.00200667 0.00200667 0.00401333 0.00602 +0.00200667 0 0 0.00200667 0 0 0 0.00100333 +0.00301 0.00200667 0 0 0 0 0 0 +0 0 0 0.548823 1.05748 1.0454 1.03997 1.03272 +1.02366 1.02487 1.02366 1.02547 1.01943 1.02064 1.02668 1.01943 +1.02064 1.02547 1.02849 1.03453 1.03332 0.9693 0.50869 0.43043 +0.444477 0.459527 0.462537 0.46053 0.461533 0.462537 0.47257 0.476583 +0.464543 0.45451 0.701176 1.02728 1.02849 1.02124 1.0291 1.02185 +1.01943 1.014 1.0291 1.02487 1.02487 1.01762 1.01943 1.03091 +1.03332 1.04178 0.787472 0.17759 0.106353 0.134447 0.133443 0.139463 +0.14749 0.157523 0.136453 0.137457 0.143477 0.119397 0.184613 0.849296 +1.04238 1.0291 1.03272 1.02124 1.03272 1.02849 1.02004 1.01822 +1.01762 1.01339 1.0152 1.01762 1.01943 1.0303 1.02004 1.02426 +1.01641 1.01822 1.02728 1.014 1.01822 1.01702 1.02306 1.02608 +1.0291 1.02124 1.03151 1.01641 1.02064 1.014 1.02004 1.02366 +1.01822 1.01279 1.02789 1.02004 1.02608 1.02547 1.01822 1.02608 +1.02547 1.02608 1.02245 1.02608 1.03514 1.03574 0.453507 0.112373 +0.118393 0.143477 0.15953 0.148493 0.14147 0.14749 0.142473 0.14749 +0.133443 0.143477 0.122407 0.113377 0.1505 0.86604 1.03393 1.03393 +1.03453 1.02124 1.01581 1.02608 1.02849 1.00312 1.0146 1.02547 +1.03151 1.02728 1.02728 0.690872 0.453507 0.452503 0.489627 0.473573 +0.46053 0.464543 0.468557 0.476583 0.47859 0.47257 0.46053 0.447487 +0.449493 0.8274 1.0291 1.02789 1.0146 1.01641 1.01883 1.01943 +1.02124 1.02547 1.01883 1.01943 1.02124 1.02426 1.0303 1.03393 +1.04178 1.04661 1.05024 0.770728 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0 0.00100333 0.00602 0.00702333 +0 0 0 0 0 0 0 0 +0 0 0 0.00501667 0.00401333 0.00802667 0.00602 0.00702333 +0.00301 0 0 0 0 0 0.00200667 0.00100333 +0.00200667 0.00301 0 0.00100333 0.00501667 0.00200667 0 0 +0 0.00200667 0.00602 0 0 0 0 0 +0 0 0 0.00200667 0.00702333 0.00903 0.00401333 0.00200667 +0.00200667 0.00702333 0.00702333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.527753 1.05809 1.04601 1.03755 1.0297 +1.02849 1.0297 1.02547 1.01943 1.01943 1.02728 1.02426 1.01641 +1.01822 1.02004 1.01762 1.02728 1.02608 1.0297 0.929436 0.518723 +0.435447 0.43645 0.43645 0.461533 0.464543 0.462537 0.465547 0.461533 +0.45752 0.648368 1.00735 1.03695 1.03453 1.02849 1.0291 1.02547 +1.02064 1.00977 1.02004 1.02004 1.01883 1.02064 1.02668 1.02668 +1.03574 1.03755 1.02547 0.683144 0.18662 0.115383 0.121403 0.1204 +0.136453 0.134447 0.12943 0.130433 0.11739 0.200667 0.755272 1.04178 +1.04238 1.03997 1.0297 1.02849 1.0152 1.01883 1.01158 1.02426 +1.03514 1.01702 1.0146 1.0146 1.02124 1.02185 1.01702 1.01762 +1.02849 1.02547 1.01339 1.02245 1.00977 1.02668 1.01581 1.02366 +1.02547 1.02608 1.02487 1.01822 1.02245 1.01581 1.00735 1.0291 +1.01822 1.02245 1.02185 1.02064 1.014 1.02547 1.01158 1.0303 +1.02426 1.02668 1.02064 1.02547 1.0297 1.04842 0.844144 0.152507 +0.112373 0.136453 0.139463 0.140467 0.14749 0.143477 0.148493 0.137457 +0.149497 0.130433 0.112373 0.0973233 0.3612 1.01218 1.04238 1.03091 +1.0291 1.01641 1.01037 1.03272 1.02728 0.997688 1.02668 1.02789 +1.02789 1.02789 1.03091 0.962052 0.518723 0.456517 0.4515 0.458523 +0.462537 0.468557 0.46956 0.479593 0.485613 0.458523 0.456517 0.440463 +0.593973 1.00554 1.03212 1.01822 1.014 1.0297 1.02124 1.01098 +1.02185 1.01883 1.02426 1.02728 1.02789 1.03091 1.03393 1.03514 +1.03393 1.03574 1.05446 0.726936 0 0 0 0 +0 0 0 0 0 0.00401333 0 0 +0.00301 0 0 0 0.00200667 0 0 0 +0 0.00501667 0 0 0 0 0 0.00200667 +0.00200667 0.00301 0.00401333 0.00301 0.00100333 0.00200667 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.0110367 0.0100333 0.00200667 0 0 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0.477587 1.0593 1.04782 1.03876 1.03393 +1.02668 1.02547 1.02608 1.02245 1.02004 1.02608 1.02366 1.01943 +1.01702 1.02608 1.02185 1.02245 1.02426 1.0297 1.03634 0.956012 +0.620032 0.461533 0.437453 0.437453 0.450497 0.44849 0.455513 0.509693 +0.792624 1.01158 1.02789 1.03151 1.03574 1.02487 1.0291 1.02185 +1.01702 1.01883 1.02306 1.02547 1.02185 1.02185 1.02849 1.02245 +1.02728 1.03514 1.04178 1.03453 0.864752 0.378257 0.161537 0.11137 +0.11438 0.106353 0.104347 0.17458 0.417387 0.912408 1.04963 1.03755 +1.03514 1.02728 1.02487 1.02004 1.02124 1.01883 1.02728 1.00916 +1.02004 1.02547 1.02668 1.01581 1.01158 1.02064 1.02245 1.03272 +1.02366 1.01822 1.01641 1.02124 1.02245 1.01943 1.01822 1.01581 +1.01158 1.01883 1.02487 1.0146 1.01943 1.02789 1.03151 1.02245 +1.02306 1.01339 1.01158 1.02426 1.02185 1.02426 1.02608 1.01762 +1.01822 1.01762 1.02789 1.02668 1.03151 1.03755 1.03574 0.471567 +0.112373 0.131437 0.122407 0.119397 0.131437 0.133443 0.15652 0.13846 +0.134447 0.10535 0.10234 0.188627 0.876344 1.04842 1.02306 1.01943 +1.02366 1.03332 1.02728 1.02004 1.02245 0.98742 1.0291 1.02728 +1.02608 1.02366 1.02789 1.02849 0.868616 0.461533 0.456517 0.471567 +0.455513 0.45451 0.461533 0.459527 0.473573 0.459527 0.458523 0.548823 +0.96024 1.02849 1.02789 1.02245 1.02064 1.01702 1.02185 1.02426 +1.02185 1.02487 1.01762 1.02668 1.03151 1.02728 1.0291 1.02426 +1.03574 1.05205 1.05748 0.65352 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0.00802667 0.00301 0 0.00200667 0.00501667 0 +0 0 0.00401333 0.00802667 0.00501667 0 0.00200667 0.00501667 +0 0.00100333 0.00401333 0.00501667 0.00301 0 0.00100333 0 +0 0 0 0 0 0 0.00401333 0.00702333 +0.00301 0 0 0.00100333 0 0 0 0 +0 0 0.00301 0 0.00401333 0.0100333 0.01204 0.00602 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.01204 0.0100333 0.0160533 +0.0100333 0 0 0 0 0 0 0 +0 0 0 0.42441 1.04601 1.04238 1.04057 1.03755 +1.03393 1.02789 1.02064 1.02608 1.02426 1.01883 1.0152 1.01883 +1.01581 1.01702 1.02004 1.01279 1.02306 1.02426 1.02728 1.03151 +1.02185 0.9391 0.770728 0.64064 0.59899 0.638064 0.787472 0.98138 +1.03151 1.03453 1.03091 1.02487 1.01581 1.02426 1.02547 1.02608 +1.02547 1.01762 1.01641 1.02366 1.0303 1.02426 1.02668 1.02366 +1.02306 1.02849 1.02245 1.03453 1.03574 1.0146 0.925208 0.677992 +0.545813 0.552837 0.681856 0.937288 1.03332 1.04782 1.03936 1.02668 +1.02185 1.0146 1.02306 1.02245 1.02245 1.01581 1.02004 1.02366 +1.02306 1.01641 1.01702 1.02728 1.02245 1.00614 1.02245 1.02728 +1.02789 1.02245 1.02849 1.01581 1.01883 1.01822 1.01762 1.01762 +1.02487 1.01641 1.01339 1.02366 1.01158 1.01943 1.0152 1.01581 +1.02185 1.02366 1.02728 1.02426 1.02185 1.01822 1.01762 1.01943 +1.02789 1.02124 1.01943 1.02789 1.0303 1.03876 1.05205 0.994668 +0.420397 0.13244 0.113377 0.137457 0.136453 0.143477 0.13545 0.11739 +0.125417 0.12642 0.187623 0.707616 1.02426 1.03453 1.0291 1.02789 +1.03091 1.0291 1.03332 1.02547 1.02366 0.989232 1.01641 1.02426 +1.02849 1.02547 1.02547 1.03755 1.03151 0.924604 0.537787 0.465547 +0.468557 0.446483 0.428423 0.43344 0.44849 0.482603 0.681856 0.96628 +1.02366 1.01762 1.01943 1.0297 1.02789 1.02245 1.03091 1.01702 +1.01279 1.02064 1.02185 1.02547 1.02306 1.01641 1.02547 1.03634 +1.03997 1.04661 1.05748 0.58093 0 0 0 0 +0 0 0 0 0 0 0.00501667 0 +0.00100333 0 0 0.00100333 0.00301 0 0 0 +0 0 0 0 0 0.00200667 0.00301 0.00301 +0.00702333 0.00501667 0.00100333 0 0 0 0 0 +0.00100333 0 0 0 0 0 0 0 +0 0.00200667 0.00200667 0 0 0 0.00301 0.00401333 +0.00100333 0 0 0 0 0 0 0 +0 0.00602 0.0100333 0.00903 0.00702333 0.00602 0 0 +0 0 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.378257 1.05326 1.04661 1.03876 1.03453 +1.03091 1.02426 1.01581 1.02366 1.02185 1.02306 1.01883 1.02668 +1.02547 1.02245 1.01581 1.02004 1.01883 1.0152 1.02306 1.03091 +1.0297 1.02728 1.0297 1.03212 1.02668 1.02849 1.02789 1.02789 +1.02487 1.03453 1.02849 1.02789 1.01762 1.0152 1.01098 1.01822 +1.01822 1.01641 1.01581 1.01641 1.02306 1.02064 1.02185 1.01822 +1.02366 1.03151 1.03091 1.03151 1.03755 1.04118 1.04359 1.03936 +1.04178 1.04661 1.05205 1.0454 1.03393 1.03514 1.03272 1.01762 +1.02547 1.0297 1.02849 1.0152 1.02608 1.01762 1.0152 1.01641 +1.02124 1.01822 1.02366 1.01279 1.02487 1.02306 1.02306 1.01098 +1.01641 1.02245 1.01702 1.01098 1.02245 1.02124 1.01883 1.02124 +1.00614 1.01702 1.02426 1.02124 1.01641 1.03151 1.03393 1.01279 +1.00856 1.01218 1.02487 1.02064 1.02728 1.02064 1.01702 1.02789 +1.01581 1.02306 1.02608 1.02306 1.02306 1.02849 1.03212 1.05265 +0.997688 0.540797 0.203677 0.127423 0.12943 0.113377 0.10836 0.0903 +0.140467 0.3311 0.809368 1.0297 1.03453 1.03695 1.03212 1.03272 +1.02728 1.01158 1.02608 1.02426 1.0146 0.99648 1.01581 1.03272 +1.0291 1.02728 1.02547 1.02849 1.03212 1.02789 1.00131 0.84028 +0.617456 0.506683 0.52374 0.581933 0.728224 0.943328 1.02789 1.03212 +1.0297 1.02608 1.02668 1.01339 1.0146 1.01218 1.01702 1.01581 +1.02849 1.02608 1.02608 1.02245 1.02004 1.0297 1.0291 1.03393 +1.04057 1.0454 1.05084 0.494643 0 0 0 0 +0 0 0 0.00301 0 0 0 0 +0 0 0 0 0.00301 0 0.00301 0.00602 +0.00401333 0.00100333 0.00200667 0.00301 0.00100333 0 0 0 +0 0 0 0 0 0 0 0.00702333 +0.00602 0.00301 0 0 0 0 0.00100333 0.00200667 +0.00301 0 0 0.00100333 0.00501667 0.00301 0 0 +0 0.00200667 0.00501667 0.00501667 0.00100333 0.00401333 0.0140467 0.00602 +0 0 0 0 0.00100333 0 0.00100333 0.00301 +0.00100333 0 0 0 0.00200667 0 0 0 +0 0 0 0.00200667 0.00301 0 0 0 +0 0 0 0.301 1.04722 1.04722 1.02789 1.02245 +1.02426 1.02366 1.02366 1.02064 1.02245 1.01702 1.0152 1.01943 +1.02245 1.02366 1.02306 1.02185 1.02426 1.02487 1.02547 1.01762 +1.02547 1.02789 1.0303 1.02306 1.02487 1.02728 1.0303 1.02849 +1.02608 1.02547 1.02426 1.02668 1.02185 1.03212 1.02608 1.02547 +1.02547 1.01943 1.02185 1.02064 1.01883 1.02064 1.03453 1.0291 +1.03514 1.02366 1.01943 1.02064 1.02728 1.01943 1.0303 1.03634 +1.04118 1.03514 1.03695 1.0297 1.02487 1.03091 1.02608 1.0297 +1.0297 1.0291 1.02185 1.03151 1.02185 1.01641 1.02064 1.02306 +1.01943 1.03393 1.01822 1.00977 1.02245 1.01158 1.02004 1.01822 +1.02064 1.0146 1.02789 1.02306 1.00916 1.02245 1.01581 1.01943 +1.02124 1.01883 1.00916 1.02426 1.02124 1.01218 1.01641 1.02366 +1.02608 1.01822 1.01581 1.01702 1.01762 1.02426 1.02426 1.02185 +1.01822 1.02426 1.01702 1.03332 1.02185 1.03091 1.03634 1.03393 +1.0448 1.03936 0.945744 0.581933 0.393307 0.329093 0.34314 0.471567 +0.744968 0.998292 1.03755 1.04118 1.0303 1.03272 1.02487 1.01943 +1.01943 1.02426 1.02124 1.02487 1.00433 1.00856 1.02849 1.02487 +1.02185 1.01762 1.02668 1.03332 1.02728 1.02426 1.04118 1.02789 +1.02668 1.01158 1.01218 1.02124 1.02366 1.02245 1.02608 1.02426 +1.02728 1.0152 1.0152 1.0152 1.02608 1.02547 1.02547 1.02728 +1.02728 1.0146 1.0146 1.02185 1.01822 1.02124 1.02487 1.03272 +1.03574 1.04661 1.05688 0.416383 0 0 0 0 +0 0 0 0 0.00200667 0.00602 0.00100333 0.00100333 +0 0 0 0 0 0 0.00100333 0 +0.00401333 0.00602 0.0100333 0.00501667 0.00100333 0 0 0 +0.00200667 0.00602 0.00702333 0.00802667 0.00702333 0.00702333 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00602 0.0100333 0.00903 0.00200667 0 0.00200667 0.00301 0.00702333 +0.00602 0.00401333 0.00602 0.00602 0 0 0 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0.250833 1.04359 1.0448 1.04903 1.03816 +1.02426 1.02547 1.02245 1.02306 1.01883 1.02487 1.02426 1.0152 +1.01339 1.01581 1.02245 1.0297 1.02728 1.01641 1.01581 1.01762 +1.02245 1.02185 1.02306 1.03212 1.03091 1.02306 1.02426 1.02306 +1.02306 1.02185 1.02789 1.02366 1.0146 1.01762 1.0146 1.01943 +1.02366 1.0146 1.014 1.02306 1.02668 1.02728 1.01822 1.02185 +1.0297 1.01883 1.0291 1.02366 1.02306 1.02608 1.02668 1.02426 +1.014 1.02185 1.02849 1.02306 1.03634 1.02608 1.01581 1.02487 +1.02608 1.02668 1.01943 1.03091 1.01762 1.0303 1.02789 1.02064 +1.02789 1.01822 1.00554 1.02124 1.02608 1.02608 1.01581 1.03091 +1.02004 1.01762 1.02124 1.01641 1.0303 1.01641 1.0152 1.01702 +1.01702 1.02366 1.01762 1.02004 1.02124 1.01218 1.0152 1.01581 +1.02487 1.01883 1.01218 1.0303 1.01218 1.0303 1.01943 1.0146 +1.0146 1.01641 1.02668 1.02185 1.02426 1.01943 1.02487 1.02426 +1.03151 1.03453 1.04118 1.0448 1.02124 1.0146 1.0303 1.03091 +1.04178 1.04118 1.03634 1.02426 1.02064 1.02124 1.01822 1.02064 +1.01702 1.02004 1.0146 1.01943 1.00554 1.01702 1.02245 1.01883 +1.02064 1.02124 1.02004 1.01943 1.0303 1.02124 1.02547 1.03332 +1.03151 1.03091 1.02306 1.02004 1.02306 1.02245 1.01581 1.01339 +1.01581 1.0152 1.01641 1.02124 1.02668 1.01158 1.01822 1.01762 +1.01641 1.02245 1.02004 1.01943 1.02426 1.0291 1.0291 1.0297 +1.03634 1.04963 1.04299 0.303007 0 0 0 0 +0.00401333 0.00301 0 0 0 0 0 0.00100333 +0.00401333 0.00200667 0.00200667 0.00401333 0 0 0 0 +0.00200667 0.00200667 0 0.00301 0.00301 0.00702333 0.00802667 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00602 0.00702333 0.00501667 0.00301 +0 0 0.00401333 0.00401333 0 0 0 0.00200667 +0 0 0 0.00100333 0.00301 0.00602 0.00401333 0 +0 0 0.00401333 0.00702333 0.00802667 0.0140467 0.0100333 0.00501667 +0.00602 0 0 0 0 0 0 0 +0 0 0 0.178593 1.01883 1.05084 1.0442 1.03936 +1.03453 1.03393 1.01762 1.01822 1.01883 1.01822 1.02849 1.02245 +1.02728 1.02668 1.01339 1.014 1.02306 1.02547 1.02064 1.02849 +1.02668 1.02245 1.02728 1.02547 1.02366 1.02185 1.02426 1.02789 +1.02487 1.01883 1.02124 1.014 1.01883 1.02064 1.02487 1.03272 +1.02547 1.02064 1.01822 1.0152 1.014 1.02306 1.02185 1.01641 +1.01822 1.02185 1.02245 1.0303 1.02306 1.0291 1.02306 1.02547 +1.02608 1.03574 1.02487 1.03091 1.03453 1.02064 1.02306 1.02245 +1.01883 1.01339 1.01822 1.01762 1.01762 1.01883 1.02064 1.0146 +1.014 1.01581 1.02064 1.01702 1.01098 1.0152 1.02004 1.00614 +1.01762 1.0152 1.0146 1.02366 1.0303 1.02004 1.01822 1.01943 +1.01641 1.0146 1.0152 1.02245 1.02004 1.014 1.01702 1.01883 +1.01943 1.0291 1.01762 1.01339 1.00916 1.00856 1.0146 1.02004 +1.01762 1.01943 1.02124 1.01702 1.02668 1.02366 1.01822 1.01158 +1.02306 1.02789 1.03514 1.0297 1.04238 1.03212 1.03574 1.03393 +1.02124 1.02185 1.01762 1.0297 1.02728 1.02547 1.01702 1.01943 +1.02306 1.02366 1.0303 1.02245 0.9844 1.01943 1.01702 1.02185 +1.02306 1.01943 1.02366 1.02547 1.02064 1.02728 1.02426 1.02547 +1.02064 1.02306 1.0303 1.02728 1.02668 1.02849 1.02789 1.02185 +1.02124 1.02185 1.03212 1.02426 1.01702 1.02245 1.02426 1.0152 +1.0146 1.0146 1.02064 1.02547 1.02366 1.02306 1.02124 1.03332 +1.04118 1.04359 1.0291 0.223743 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00702333 0.01505 0.00501667 +0 0 0.00301 0.00301 0.00301 0 0 0 +0.00702333 0.00802667 0.00301 0.00501667 0.00802667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00602 +0.00401333 0.00301 0.00100333 0 0.00401333 0.00401333 0 0 +0 0 0.00100333 0.00401333 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.130433 1.00373 1.04299 1.03876 1.03514 +1.03393 1.02366 1.02728 1.02366 1.01883 1.02004 1.01641 1.01581 +1.02064 1.01762 1.03091 1.02124 1.00856 1.01218 1.02185 1.02004 +1.02185 1.01581 1.0146 1.01339 1.01158 1.02849 1.02849 1.01943 +1.01702 1.02366 1.02487 1.0146 1.0146 1.02426 1.0146 1.01279 +1.00916 1.02728 1.01883 1.01943 1.0146 1.014 1.01279 1.01218 +1.0152 1.02789 1.02487 1.03151 1.02185 1.0291 1.03272 1.03151 +1.01098 1.02004 1.02426 1.02064 1.01762 1.01581 1.01581 1.02124 +1.02185 1.0152 1.01702 1.014 1.02124 1.02366 1.01279 1.02124 +1.01158 1.02306 1.02245 1.02849 1.02849 1.02245 1.01339 1.0152 +1.01641 1.01943 1.02185 1.0146 1.01339 1.02608 1.01883 1.01943 +1.01943 1.02004 1.02426 1.014 1.01943 1.02306 1.0146 1.02487 +1.0303 1.02547 1.0146 1.01702 1.02547 1.01702 1.02487 1.02728 +1.01279 1.02064 1.02487 1.02668 1.02487 1.0291 1.02124 1.03755 +1.02849 1.0291 1.02728 1.03816 1.02547 1.03393 1.02849 1.03453 +1.03091 1.02245 1.03514 1.02004 1.0303 1.03091 1.02245 1.02728 +1.03514 1.02608 1.02306 1.02245 0.997688 1.0303 1.02608 1.02728 +1.02124 1.01822 1.01641 1.01702 1.01762 1.014 1.01218 1.02185 +1.02426 1.014 1.01883 1.02064 1.02245 1.02547 1.02004 1.01943 +1.02185 1.02608 1.02245 1.02124 1.0146 1.01339 1.02064 1.01943 +1.01822 1.02608 1.02245 1.02245 1.02245 1.02608 1.03574 1.04057 +1.04118 1.05326 1.01037 0.140467 0 0 0 0 +0 0 0 0 0 0 0.00301 0 +0.00100333 0.00401333 0.00401333 0.00301 0.00401333 0 0 0 +0 0 0 0 0 0.00100333 0.00501667 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00200667 0.00301 0.00100333 0 0 0 +0 0 0 0 0.00200667 0.00501667 0.0140467 0.01806 +0.01505 0.0130433 0.00301 0 0 0 0.00200667 0.00200667 +0.00200667 0.00200667 0 0.00602 0.00602 0.00100333 0.00301 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0.06321 0.964468 1.05265 1.04178 1.03272 +1.02728 1.02547 1.02547 1.02789 1.02185 1.01943 1.02004 1.02004 +1.02185 1.02185 1.02004 1.0146 1.02426 1.02366 1.01883 1.01581 +1.02849 1.02487 1.02668 1.03272 1.02487 1.014 1.02668 1.02668 +1.02366 1.02366 1.01883 1.02306 1.02185 1.0291 1.02728 1.02185 +1.02064 1.02185 1.01822 1.01822 1.02124 1.0297 1.02487 1.02366 +1.0291 1.02366 1.01339 1.02426 1.02004 1.01702 1.02608 1.02728 +1.02366 1.01883 1.02547 1.02124 1.02547 1.01762 1.03755 1.03876 +1.04359 1.04238 1.04722 1.02547 1.02487 1.01762 1.0152 1.01279 +1.02426 1.0146 1.02849 1.01943 1.01641 1.02306 1.014 1.014 +1.02064 1.01339 1.01883 1.02608 1.02245 1.01158 1.00856 1.02608 +1.03212 1.02366 1.02426 1.02064 1.01641 1.02245 1.0303 1.01883 +1.01883 1.02728 1.02124 1.01943 1.01158 1.02185 1.01702 1.00977 +1.01218 1.02064 1.01762 1.02426 1.01762 1.01943 1.02124 1.01762 +1.014 1.02426 1.02306 1.02306 1.01822 1.01702 1.0297 1.02245 +1.02064 1.02547 1.02185 1.01702 1.02426 1.03212 1.02245 1.01883 +1.02064 1.01762 1.02306 1.0001 0.997084 1.01581 1.01943 1.0146 +1.0303 1.02547 1.02668 1.01762 1.02547 1.02487 1.02789 1.02064 +1.02245 1.02366 1.01702 1.02004 1.02608 1.02245 1.01641 1.01762 +1.02366 1.02245 1.02064 1.01943 1.01943 1.02124 1.01581 1.01339 +1.02547 1.01762 1.01822 1.02366 1.03091 1.03514 1.03634 1.03091 +1.04238 1.04903 0.962656 0.06923 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00301 0.00401333 0.00200667 0.00100333 0 +0 0.00401333 0.00401333 0.00301 0.00501667 0.00301 0 0 +0 0 0 0 0 0.00401333 0.00702333 0.00301 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0 0.00200667 0.00200667 +0.00200667 0.00200667 0 0 0 0 0 0 +0 0.00200667 0.00301 0.00501667 0.00602 0.00702333 0 0 +0.00200667 0 0 0 0 0 0 0 +0.00100333 0.00501667 0 0 0 0 0 0 +0 0 0 0.0260867 0.926416 1.06111 1.03997 1.03453 +1.03212 1.02789 1.02185 1.02789 1.02245 1.02608 1.01943 1.02668 +1.01581 1.01279 1.02185 1.02064 1.02487 1.01943 1.02064 1.01943 +1.02366 1.02306 1.02124 1.01037 1.014 1.01943 1.0152 1.01702 +1.014 1.02426 1.02064 1.02789 1.01943 1.02245 1.02306 1.02849 +1.02004 1.02185 1.0297 1.00977 1.02487 1.02366 1.0297 1.0152 +1.01279 1.02124 1.02124 1.02064 1.02185 1.02487 1.02789 1.01822 +1.02185 1.01641 1.01037 1.01581 1.02124 1.04057 1.05628 1.0599 +1.05507 1.05386 1.05205 1.0454 1.04299 1.03393 1.014 1.02366 +1.02185 1.02064 1.01702 1.00796 1.01218 1.01702 1.02487 1.02487 +1.02728 1.02124 1.02728 1.0146 1.02185 1.014 1.01339 1.01581 +1.02668 1.02426 1.0146 1.01581 1.01279 1.00856 1.01822 1.02185 +1.01883 1.0152 1.01943 1.03091 1.02668 1.02004 1.01762 1.01883 +1.02728 1.01762 1.02306 1.00977 1.02245 1.01883 1.02547 1.03091 +1.03091 1.02849 1.02426 1.02306 1.02185 1.0297 1.03393 1.0297 +1.02608 1.02306 1.02487 1.02728 1.01762 1.01641 1.01641 1.02004 +1.03151 1.02728 1.02608 0.992856 1.02185 1.01702 1.02728 1.01762 +1.02668 1.01762 1.02004 1.02064 1.01762 1.01943 1.02185 1.0297 +1.02306 1.01581 1.0152 1.01641 1.01641 1.02426 1.01822 1.01641 +1.01762 1.01581 1.02366 1.02064 1.02668 1.02608 1.0297 1.02426 +1.02789 1.02668 1.02366 1.02306 1.02426 1.02608 1.02728 1.03151 +1.04601 1.05688 0.895664 0.0110367 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00903 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00501667 0 0 0 0.00401333 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00301 +0.00401333 0.00301 0.00200667 0.00301 0.00301 0.00301 0 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0.78876 1.05265 1.0442 1.03755 +1.03151 1.0291 1.02245 1.014 1.02245 1.01581 1.0152 1.02245 +1.02668 1.01883 1.02728 1.01762 1.01218 1.0146 1.01762 1.01883 +1.01702 1.0146 1.01098 1.02004 1.03151 1.01581 1.02004 1.0291 +1.01641 1.0146 1.01943 1.0152 1.00856 1.01037 1.02064 1.01339 +1.0303 1.03393 1.03151 0.998896 1.01762 1.01641 1.02487 1.02547 +1.02426 1.02306 1.02064 1.01641 1.02064 1.02487 1.01702 1.0146 +1.02004 1.0146 1.02306 1.02849 1.04782 1.0605 1.04782 1.0454 +1.0454 1.05205 1.04842 1.04842 1.05024 1.05386 1.03936 1.01641 +1.02245 1.02185 1.01037 1.0152 1.02124 1.01641 1.0297 1.01581 +1.02306 1.02547 1.00796 1.01883 1.01339 1.01279 1.02064 1.02487 +1.01037 1.01098 1.02124 1.0303 1.02608 1.02185 1.02185 1.02426 +1.01279 1.0152 1.02789 1.02366 1.02728 1.01339 1.02426 1.02124 +1.02668 1.0442 1.04601 1.05628 1.0599 1.04238 1.04057 1.02608 +1.02245 1.01943 1.01702 1.02004 1.02426 1.01943 1.02064 1.01883 +1.0291 1.02608 1.02849 1.02124 1.03212 1.02426 1.0152 1.0303 +1.02668 1.01943 1.01762 0.988024 1.02728 1.02487 1.02547 1.02426 +1.02245 1.01098 1.02366 1.01943 1.02245 1.01883 1.02004 1.01581 +1.0146 1.0146 1.02004 1.02004 1.02064 1.01581 1.01339 1.02064 +1.01883 1.02185 1.02366 1.02608 1.01943 1.01581 1.02366 1.02366 +1.02245 1.02004 1.01883 1.02487 1.02487 1.01822 1.02789 1.03876 +1.0442 1.05567 0.71792 0 0 0 0 0 +0 0 0 0 0.00501667 0.0100333 0.0100333 0.00200667 +0 0 0 0 0 0 0 0.00903 +0.00301 0.00501667 0 0 0 0 0 0 +0 0 0 0.00200667 0 0 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00702333 0.00802667 0.0110367 0.0100333 0.00501667 0.00301 0.00200667 +0 0 0.00301 0 0 0.00301 0.00602 0.00501667 +0 0.00200667 0 0.00100333 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.618744 1.06292 1.05265 1.04238 +1.03272 1.0303 1.0291 1.03212 1.02366 1.02004 1.01702 1.01702 +1.02245 1.01883 1.0152 1.01762 1.02124 1.014 1.02004 1.01943 +1.01883 1.0146 1.01883 1.01581 1.01218 1.02064 1.02668 1.02124 +1.01883 1.01702 1.02245 1.02124 1.02064 1.01883 1.02124 1.02064 +1.02124 1.01581 1.01883 0.998896 1.01218 1.02064 1.02366 1.01581 +1.014 1.02185 1.02306 1.01943 1.01883 1.02124 1.014 1.02426 +1.014 1.01883 1.01581 1.03695 1.06534 1.04903 1.05869 1.05326 +1.05446 1.05507 1.04722 1.05024 1.05144 1.05265 1.05386 1.0303 +1.01883 1.01762 1.02366 1.01822 1.02124 1.01822 1.01943 1.01702 +1.02004 1.01339 1.01822 1.01581 1.01883 1.02426 1.02306 1.01762 +1.02185 1.014 1.02064 1.02245 1.02547 1.0297 1.0146 1.00735 +1.02487 1.01279 1.0146 1.01762 1.01762 1.02849 1.01581 1.03332 +1.05205 1.0593 1.05748 1.05809 1.05024 1.05326 1.05205 1.05809 +1.03574 1.01762 1.02849 1.0291 1.02608 1.02487 1.02366 1.02064 +1.01762 1.02185 1.014 1.0291 1.02547 1.01883 1.02608 1.02487 +1.01581 1.01641 0.998896 0.991044 1.02426 1.02547 1.02366 1.00916 +1.02547 1.01218 1.0291 1.02789 1.02366 1.01762 1.0146 1.02849 +1.02245 1.01702 1.01581 1.02608 1.02245 1.02668 1.02487 1.02547 +1.01702 1.02064 1.01943 1.0146 1.02547 1.02185 1.02004 1.02124 +1.02064 1.02245 1.02124 1.02064 1.02668 1.03393 1.04057 1.03755 +1.04359 1.05446 0.527753 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00301 0.00301 0.00401333 0 0 +0.00100333 0.00301 0.00200667 0.00301 0.00401333 0.00301 0.00100333 0 +0 0 0 0.00100333 0.00401333 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0.00200667 0.00100333 0 0 0.00100333 0.00100333 0 0 +0 0 0.00100333 0 0.00100333 0 0 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0.462537 1.05507 1.04118 1.03514 +1.03393 1.02306 1.02185 1.02728 1.02124 1.02306 1.02366 1.02004 +1.01641 1.01279 1.01762 1.02185 1.02064 1.02608 1.0291 1.02366 +1.01883 1.02366 1.01883 1.02608 1.01762 1.0146 1.01943 1.01883 +1.01339 1.02487 1.02668 1.02608 1.01943 1.02064 1.0291 1.01641 +1.01883 1.01883 1.02547 1.01762 0.989232 1.02487 1.02608 1.02366 +1.0297 1.02185 1.01883 1.02064 1.02668 1.02849 1.01158 1.01037 +1.01279 1.02426 1.03514 1.04661 1.03695 1.04118 1.0448 1.05688 +1.05024 1.04661 1.05205 1.05326 1.05628 1.05386 1.05567 1.0454 +1.02728 1.02487 1.01218 1.02608 1.02306 1.02547 1.03332 1.02728 +1.01218 1.02426 1.01641 1.0146 1.02668 1.0146 1.02306 1.02245 +1.0146 1.02366 1.02728 1.01581 1.02185 1.01641 1.02426 1.0303 +1.02004 1.02487 1.02487 1.02608 1.00554 1.01762 1.02789 1.04722 +1.05386 1.0448 1.04903 1.05084 1.0454 1.05024 1.04299 1.05628 +1.06594 1.04601 1.02004 1.01641 1.014 1.01702 1.01339 1.02366 +1.02426 1.02366 1.02547 1.02728 1.02185 1.02306 1.0297 1.02547 +1.01218 1.02064 0.969904 1.014 1.02004 1.02064 1.014 1.01581 +1.02366 1.01641 1.00312 1.02185 1.01098 1.01883 1.014 1.02124 +1.02245 1.0303 1.0146 1.01762 1.01883 1.01702 1.01883 1.02245 +1.01581 1.0152 1.02608 1.02547 1.01641 1.01279 1.01218 1.01762 +1.02124 1.02306 1.01762 1.02306 1.02668 1.02789 1.03151 1.0442 +1.05024 1.04178 0.342137 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00602 0.00501667 0.00602 0.00200667 0.00301 +0.00200667 0.00301 0.00602 0.00301 0.00200667 0 0 0.00401333 +0.00501667 0.00301 0.00501667 0.00200667 0.00100333 0.00501667 0.00602 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00200667 0.00200667 +0.00100333 0 0 0 0 0 0 0 +0 0 0.00602 0.00802667 0.00501667 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00602 0.00100333 0 0 0 0 +0 0 0 0 0.308023 1.04903 1.05326 1.04057 +1.03091 1.03634 1.03151 1.01943 1.02004 1.0146 1.02004 1.02668 +1.02185 1.02245 1.02608 1.01943 1.01702 1.014 1.014 1.00856 +1.0146 1.02185 1.01822 1.00916 1.0146 1.01762 1.00977 1.01762 +1.02366 1.014 1.01762 1.014 1.0152 1.01883 1.02004 1.02426 +1.02245 1.01762 1.01762 1.02185 0.978964 1.00554 1.01581 1.01702 +1.02668 1.01822 1.02124 1.02487 1.00856 1.01641 1.02426 1.02004 +1.02728 1.01702 1.05084 1.06413 1.04722 1.05326 1.05748 1.0454 +1.05567 1.04057 1.04782 1.06171 1.05688 1.05628 1.0599 1.04782 +1.04118 1.014 1.02306 1.02366 1.02608 1.01339 1.02004 1.01158 +1.02789 1.00916 1.01822 1.01702 1.02849 1.02306 1.02185 1.02487 +1.01339 1.01762 1.0146 1.01339 1.02547 1.02487 1.0146 1.01279 +1.01037 1.01158 1.00977 1.01822 1.02426 1.02124 1.04782 1.0599 +1.06352 1.05024 1.06352 1.0448 1.04903 1.05507 1.05748 1.05326 +1.04963 1.05748 1.02547 1.01037 1.01762 1.01943 1.02849 1.02064 +1.01641 1.02487 1.01883 1.02245 1.02004 1.02185 1.01883 1.02487 +1.02849 1.01037 0.989836 1.01581 1.02366 1.02306 1.02608 1.02668 +1.02064 1.02487 1.01581 1.01822 1.02366 1.02789 1.01943 1.01641 +1.0146 1.02064 1.02004 1.0146 1.0146 1.01822 1.01641 1.01218 +1.01883 1.02185 1.0146 1.02306 1.02426 1.02064 1.02366 1.02849 +1.02728 1.03091 1.03272 1.02789 1.02849 1.02728 1.03514 1.03755 +1.04661 1.02668 0.190633 0 0 0 0 0 +0 0 0 0 0 0 0 0.00301 +0.00602 0.00200667 0 0 0 0 0 0 +0 0 0 0 0.00401333 0.0110367 0.00501667 0.00100333 +0.00501667 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0.00501667 0.00200667 0.00401333 0.00702333 0.00602 +0 0 0 0.00401333 0.00501667 0.01204 0.0110367 0.00100333 +0 0.00200667 0 0 0 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0.161537 1.014 1.05024 1.03695 +1.03151 1.02426 1.02366 1.02185 1.02547 1.02426 1.0152 1.0146 +1.01581 1.0152 1.01822 1.02064 1.01883 1.01702 1.01943 1.02245 +1.01822 1.02064 1.0291 1.03151 1.01883 1.02004 1.01339 1.01641 +1.01158 1.01702 1.01822 1.02004 1.02366 1.02487 1.02004 1.01641 +1.014 1.0146 1.02004 1.02366 1.00796 0.991648 1.0291 1.02608 +1.01943 1.03151 1.02185 1.02668 1.0303 1.02789 1.02124 1.03332 +1.02728 1.03453 1.05386 1.03876 1.05809 1.05265 1.0599 1.05688 +1.04359 1.05446 1.05265 1.04782 1.05386 1.05628 1.0442 1.05567 +1.05084 1.0303 1.01883 1.02366 1.02547 1.02306 1.01762 1.0146 +1.02487 1.02306 1.02849 1.03151 1.00433 1.02064 1.01883 1.02789 +1.02547 1.01762 1.02306 1.01822 1.01943 1.02426 1.02064 1.0291 +1.02426 1.02306 1.02185 1.02728 1.02124 1.04238 1.05326 1.05809 +1.05446 1.04601 1.04118 1.06232 1.06232 1.04963 1.05869 1.05024 +1.0442 1.04722 1.05628 1.01762 1.02064 1.03453 1.02426 1.02547 +1.02124 1.014 1.0152 1.014 1.01279 1.01279 1.02064 1.01581 +1.01581 0.985004 1.01158 1.01641 1.01218 1.02004 1.02245 1.03272 +1.02306 1.0146 1.00554 1.01762 1.01822 1.00614 1.014 1.01641 +1.02366 1.01822 1.01581 1.02366 1.02426 1.02366 1.014 1.01822 +1.02064 1.02426 1.01943 1.01279 1.014 1.01098 1.02124 1.01581 +1.01581 1.01339 1.014 1.01581 1.02064 1.02849 1.03332 1.04359 +1.05265 0.964468 0.0742467 0 0 0 0 0 +0 0.00301 0.00602 0 0 0.00100333 0 0 +0.00401333 0.00200667 0.00200667 0.00903 0.00401333 0 0 0.00401333 +0.0140467 0.0130433 0.00802667 0 0 0 0 0.00100333 +0 0 0 0.00301 0.00200667 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00802667 0.00301 0 0 +0.00100333 0.00401333 0.00501667 0.00501667 0.00702333 0.00802667 0.00702333 0.0100333 +0.00802667 0.00301 0.00100333 0.00401333 0.00100333 0 0.00602 0 +0 0 0 0.00401333 0.0110367 0.0110367 0.01204 0.00903 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0581933 0.952388 1.04601 1.04299 +1.03816 1.03453 1.03332 1.02668 1.02728 1.01943 1.02004 1.02728 +1.0152 1.00856 1.01702 1.01218 1.02728 1.02668 1.02608 1.01883 +1.02124 1.01883 1.01339 1.0152 1.01339 1.02245 1.0152 1.03272 +1.01581 1.02306 1.01943 1.01702 1.02124 1.02306 1.01762 1.0146 +1.02366 1.02789 1.0152 1.02124 1.01822 0.975944 1.01339 1.02789 +1.02487 1.02064 1.02004 1.02306 1.01943 1.01943 1.01037 1.00614 +1.01883 1.02547 1.05265 1.05688 1.05688 1.04722 1.04903 1.04903 +1.04842 1.05507 1.0593 1.0593 1.04722 1.03936 1.05326 1.0593 +1.0605 1.0152 1.0152 1.02064 1.02124 1.02426 1.02245 1.03091 +1.02426 1.0152 1.03332 1.0152 1.02306 1.03151 1.02185 1.0291 +1.03212 1.01822 1.02064 1.03574 1.0291 1.02306 1.02426 1.02185 +1.02306 1.01702 1.01218 1.02668 1.014 1.03574 1.05326 1.05386 +1.06594 1.04842 1.06473 1.05205 1.03514 1.05386 1.04057 1.04238 +1.06171 1.05688 1.04963 1.03212 1.01883 1.01641 1.01158 1.02728 +1.02366 1.02004 1.02185 1.02608 1.02728 1.02668 1.02245 1.02064 +1.01158 0.99648 1.02487 1.02547 1.02789 1.0152 1.01762 1.01098 +1.00554 1.01702 1.02728 1.02245 1.0303 1.0291 1.02487 1.02245 +1.0297 1.02366 1.01943 1.0291 1.02064 1.02004 1.02366 1.01762 +1.02487 1.01943 1.02306 1.02426 1.01943 1.01943 1.02185 1.02124 +1.0146 1.02668 1.03514 1.03151 1.03514 1.04057 1.04359 1.05386 +1.05809 0.809368 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0.00200667 0.00301 0.00200667 0.00100333 0 +0 0 0 0 0.00100333 0.00200667 0 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00602 0.00903 0.0100333 0.00200667 0 0.00100333 0.00200667 +0 0.00100333 0 0 0 0 0 0 +0 0.00100333 0.00100333 0 0 0 0 0 +0 0.00100333 0 0 0 0 0.00301 0.00401333 +0 0 0 0 0 0.792624 1.06171 1.04722 +1.03332 1.02547 1.0297 1.02426 1.02245 1.02366 1.02306 1.0146 +1.01218 1.02185 1.02547 1.02064 1.02124 1.01279 1.0152 1.02547 +1.01883 1.014 1.01702 1.02608 1.02064 1.01641 1.01883 1.02728 +1.02608 1.01702 1.02547 1.02124 1.01943 1.01702 1.01641 1.02608 +1.01037 1.0146 1.02487 1.02245 1.00977 1.00433 0.998292 1.02064 +1.01702 1.02547 1.01339 1.0146 1.02064 1.01943 1.01641 1.01762 +1.02064 1.03514 1.06111 1.05265 1.05446 1.0593 1.05628 1.05446 +1.05446 1.05446 1.0448 1.05024 1.0454 1.05748 1.05567 1.05084 +1.04722 1.02789 1.0146 1.00856 1.014 1.02124 1.02668 1.02004 +1.02728 1.03212 1.01581 1.0303 1.03212 1.01641 1.00554 1.01641 +1.01883 1.01641 1.02426 1.01822 1.01943 1.01702 1.0303 1.01641 +1.02004 1.02366 1.0297 1.00614 1.01641 1.05446 1.0442 1.05446 +1.04661 1.04359 1.04722 1.04722 1.05386 1.03997 1.04963 1.04903 +1.0448 1.05084 1.05265 1.0454 1.00856 1.02789 1.02185 1.01702 +1.01641 1.01943 1.02547 1.01218 1.0146 1.02124 1.02366 1.02487 +0.992856 1.00735 1.01822 1.01702 1.01339 1.0146 1.02608 1.02608 +1.03332 1.03212 1.01822 1.02668 1.00796 1.0146 1.01641 1.01581 +1.01581 1.0146 1.014 1.0146 1.01098 1.00856 1.00796 1.01339 +1.01158 1.01702 1.01581 1.01822 1.02004 1.02124 1.02064 1.01822 +1.02306 1.02124 1.02124 1.02366 1.02668 1.03091 1.03212 1.04359 +1.05567 0.527753 0 0 0 0 0 0 +0 0 0.00602 0.00401333 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0 0 0 0 0.00100333 0.00100333 0 +0 0 0 0 0 0.00100333 0.00501667 0.00501667 +0.0100333 0.00903 0.00602 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.52675 1.05386 1.04722 +1.03574 1.0297 1.02849 1.02426 1.03091 1.02608 1.02547 1.01762 +1.02124 1.02124 1.01702 1.0146 1.02064 1.02366 1.01822 1.01641 +1.0146 1.01883 1.01883 1.01581 1.02366 1.01883 1.01762 1.01279 +1.01822 1.02366 1.01641 1.01702 1.02064 1.02547 1.02608 1.02487 +1.03393 1.03272 1.02004 1.02306 1.02124 1.01762 1.00192 1.02366 +1.02245 1.02004 1.01943 1.02124 1.02185 1.01762 1.02728 1.02245 +1.02124 1.03393 1.0448 1.04661 1.05386 1.0448 1.05024 1.04661 +1.04359 1.05024 1.0442 1.0442 1.05688 1.04722 1.03151 1.04601 +1.0448 1.0291 1.01702 1.02366 1.01883 1.01943 1.01702 1.00856 +1.02426 1.03332 1.01581 1.01098 1.00433 1.01943 1.00373 1.02668 +1.01822 1.01641 1.02124 1.01943 1.02306 1.02124 1.01822 1.02064 +1.014 1.01822 1.02366 1.02366 1.02789 1.05265 1.05507 1.04359 +1.0454 1.05567 1.04782 1.0605 1.04842 1.05446 1.04661 1.04842 +1.04963 1.05144 1.05386 1.03332 1.01218 1.02245 1.02306 1.014 +1.01098 1.01339 1.02245 1.02004 1.01762 1.01883 1.01702 1.01883 +0.99648 1.02004 1.02004 1.0291 1.0297 1.03272 1.02668 1.02789 +1.01822 1.01279 1.01702 1.014 1.01037 1.02668 1.02668 1.01762 +1.02064 1.02064 1.01883 1.01883 1.02245 1.02728 1.02306 1.02366 +1.0152 1.01822 1.02004 1.02185 1.02124 1.01762 1.02064 1.01822 +1.02185 1.01943 1.02245 1.02668 1.01822 1.0303 1.0442 1.05205 +1.0454 0.29498 0 0 0 0 0 0 +0 0 0 0.00200667 0 0.00100333 0.00301 0.00903 +0.0100333 0 0 0 0.00501667 0.00501667 0.00802667 0.00501667 +0 0 0.00301 0.00501667 0 0 0 0 +0.00100333 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00602 0.00802667 0.00802667 0.00602 +0.00100333 0.00200667 0.00301 0 0.00200667 0 0 0.00100333 +0 0.00301 0.00301 0.00301 0.00501667 0.00401333 0.00401333 0.00702333 +0 0 0 0.00301 0.00702333 0.00602 0.00501667 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.290967 1.04057 1.05507 +1.03695 1.03272 1.03332 1.03212 1.02849 1.02185 1.02849 1.02547 +1.02849 1.02064 1.0152 1.01702 1.01702 1.01943 1.014 1.0146 +1.01943 1.02124 1.01943 1.02366 1.01943 1.02306 1.01883 1.02487 +1.01883 1.014 1.01883 1.02366 1.02245 1.01943 1.01702 1.0152 +1.01641 1.0146 1.02608 1.02426 1.02185 1.02668 1.01339 0.995876 +1.02547 1.02366 1.03151 1.03091 1.01158 1.014 1.02245 1.01943 +1.02185 1.02668 1.05688 1.05869 1.04601 1.05628 1.04722 1.0442 +1.05567 1.05507 1.05144 1.05084 1.05265 1.05386 1.05809 1.0605 +1.04782 1.02547 1.02245 1.02487 1.02185 1.01581 1.03272 1.01641 +1.02064 1.01158 1.01339 0.995272 0.97534 0.957824 0.971716 0.96628 +0.975944 1.00373 1.01702 1.02245 1.0146 1.02185 1.0303 1.02064 +1.01822 1.02608 1.02487 1.02668 1.01339 1.05084 1.0593 1.06171 +1.05205 1.04842 1.05205 1.04722 1.05205 1.05265 1.06352 1.05084 +1.04299 1.0454 1.05869 1.04118 1.01037 1.01883 1.01762 1.01943 +1.01762 1.03151 1.02366 1.02245 1.02849 1.03332 1.03091 0.997084 +1.00856 1.03151 1.01581 1.01702 1.01218 1.01158 1.014 1.01822 +1.02124 1.01158 1.01762 1.02185 1.0152 1.01158 1.00675 1.0146 +1.01098 1.01943 1.01098 1.01339 1.0146 1.02366 1.01883 1.0152 +1.02245 1.02487 1.0291 1.0146 1.01943 1.02366 1.02124 1.01702 +1.014 1.01883 1.02064 1.03514 1.04238 1.03816 1.04782 1.05809 +0.988628 0.10535 0 0 0 0 0 0 +0.0100333 0 0 0 0 0 0 0 +0 0.00802667 0.00501667 0.00200667 0.00100333 0.00200667 0.00602 0.00401333 +0.00501667 0 0 0 0 0.00301 0 0.00100333 +0.00100333 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00501667 0.00401333 0.00301 0.01204 0.00301 0 0 +0.00301 0 0 0 0 0.10535 0.9844 1.04661 +1.04238 1.03272 1.02185 1.01822 1.01883 1.01702 1.02487 1.02004 +1.01883 1.02185 1.02426 1.02185 1.02185 1.01822 1.01279 1.0303 +1.01702 1.02004 1.01762 1.02306 1.0291 1.02064 1.02608 1.01702 +1.01702 1.0146 1.01641 1.02426 1.01822 1.01822 1.02668 1.01822 +1.0146 1.01641 1.02306 1.02185 1.02608 1.02366 1.0303 1.00977 +1.02245 1.02668 1.01883 1.01702 1.0146 1.03332 1.02306 1.02487 +1.01883 1.00675 1.03997 1.05205 1.06232 1.05567 1.05265 1.05507 +1.04842 1.04963 1.05084 1.05265 1.05567 1.06171 1.075 1.05869 +1.03997 1.01822 1.01581 1.01098 1.02728 1.0297 1.02004 1.02004 +1.01702 0.980172 0.955408 0.960844 0.964468 0.96628 0.965072 0.967488 +0.962656 0.957824 0.978964 1.0152 1.02728 1.02426 1.01581 1.0291 +1.02124 1.02185 1.02306 1.02608 1.01581 1.05326 1.05084 1.04842 +1.05567 1.04903 1.04963 1.05144 1.04963 1.04782 1.04782 1.05386 +1.05567 1.04903 1.0454 1.03634 1.01339 1.01883 1.01822 1.02426 +1.02426 1.02547 1.01339 1.02064 1.02245 1.02547 1.00977 0.998292 +1.03151 1.02849 1.02185 1.02426 1.01822 1.0146 1.02185 1.01702 +1.0146 1.03091 1.03151 1.01883 1.01943 1.0297 1.02306 1.02124 +1.02185 1.02426 1.01822 1.02306 1.02668 1.0152 1.02849 1.02728 +1.0146 1.00554 1.02185 1.01641 1.01883 1.02124 1.01702 1.02064 +1.02004 1.03393 1.02668 1.02426 1.03091 1.04359 1.0454 1.05265 +0.802928 0.00100333 0 0 0 0 0 0 +0 0 0 0.00100333 0 0 0 0.00200667 +0 0 0.00200667 0 0 0 0 0 +0 0 0 0 0 0.00200667 0.00602 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00802667 0.00501667 0.00602 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0.00301 +0 0 0 0.00602 0.00401333 0.00401333 0.00301 0.00501667 +0.00301 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0 0.78876 1.05869 +1.04782 1.03453 1.02728 1.02789 1.02849 1.02728 1.02124 1.02004 +1.02366 1.02124 1.02306 1.02728 1.01762 1.01581 1.02547 1.02245 +1.01822 1.0152 1.0146 1.00856 1.01581 1.01641 1.0152 1.01702 +1.01822 1.01883 1.02064 1.02004 1.01762 1.02487 1.0146 1.01762 +1.01762 1.02124 1.01883 1.01279 1.014 1.01641 1.01822 1.0152 +1.01702 1.01762 1.0291 1.01641 1.02728 1.01883 1.01339 1.01218 +1.02004 1.02668 1.01822 1.03936 1.0442 1.03816 1.05386 1.05265 +1.06292 1.05326 1.06111 1.05265 1.04903 1.04722 1.04057 1.03634 +1.02426 1.0146 1.02426 1.0303 1.02789 1.01883 1.0291 1.01943 +0.98742 0.971112 0.968092 0.962052 0.96326 0.971716 0.96326 0.971112 +0.95722 0.962052 0.966884 0.979568 1.01883 1.03332 1.02366 1.01943 +1.03151 1.02185 1.00916 1.02547 1.02426 1.04178 1.0605 1.06111 +1.05205 1.0593 1.05386 1.05386 1.05507 1.05084 1.05688 1.0593 +1.05265 1.04903 1.0599 1.01943 1.02245 1.02426 1.01641 1.02185 +1.03151 1.02849 1.0303 1.02426 1.02004 1.014 0.979568 1.01581 +1.02064 1.02426 1.01943 1.02185 1.02004 1.01098 1.02064 1.0152 +1.01943 1.00916 1.01822 1.01822 1.01702 1.01883 1.01218 1.01943 +1.02064 1.02004 1.01218 1.01822 1.02064 1.02487 1.0146 1.01702 +1.01762 1.02064 1.02124 1.01641 1.01822 1.01883 1.02547 1.02245 +1.02487 1.02245 1.0303 1.03574 1.04299 1.04359 1.05024 1.0599 +0.46354 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0 0 0 +0 0.00501667 0.00602 0.00401333 0.00602 0 0 0 +0.00802667 0.01204 0.01204 0.00501667 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00301 0.00702333 0.00301 0.00401333 0.00702333 0.00602 0.00100333 +0 0 0 0.00200667 0.00702333 0 0 0 +0 0 0 0 0 0 0.00100333 0.00200667 +0 0 0.00100333 0 0 0 0 0 +0 0.00501667 0 0 0 0 0.432437 1.05265 +1.04722 1.03816 1.0297 1.02064 1.02124 1.02004 1.02124 1.02487 +1.02124 1.01158 1.014 1.014 1.01641 1.01822 1.0146 1.01641 +1.01702 1.02245 1.0303 1.02849 1.02426 1.02366 1.02487 1.02185 +1.01822 1.02668 1.02185 1.02004 1.01943 1.01641 1.01339 1.02306 +1.03272 1.02668 1.03151 1.02245 1.02306 1.01762 1.01943 1.02004 +1.01158 1.01158 1.02426 1.02245 1.02124 1.01279 1.02004 1.02487 +1.02789 1.02064 1.02849 1.04722 1.05869 1.05688 1.05567 1.04722 +1.02668 1.04238 1.05265 1.0593 1.0593 1.06232 1.06534 1.0291 +1.02245 1.01822 1.02728 1.02608 1.02124 1.02004 1.02306 0.998896 +0.965072 0.963864 0.971112 0.96628 0.968696 0.965072 0.969904 0.971112 +0.974132 0.960844 0.968696 0.96326 0.97836 1.0146 1.02608 1.01822 +1.01037 1.02426 1.01822 1.02426 1.02306 1.02547 1.0448 1.05386 +1.04359 1.0448 1.04842 1.05869 1.05205 1.05024 1.04601 1.05024 +1.05688 1.03997 1.03876 1.02487 1.02849 1.01339 1.02728 1.01339 +1.00856 1.01098 1.01279 1.03272 1.02487 0.97534 0.995876 1.01883 +1.03212 1.02487 1.0001 1.00796 1.01943 1.01822 1.01883 1.01702 +1.01581 1.02185 1.02547 1.00554 1.01279 1.01641 1.02004 1.01762 +1.02487 1.02426 1.02004 1.01279 1.01279 1.02004 1.02366 1.02185 +1.0152 1.02608 1.03151 1.02728 1.02245 1.02426 1.02366 1.02306 +1.01641 1.01702 1.01762 1.02245 1.02849 1.03997 1.05144 1.01037 +0.173577 0 0 0 0 0 0 0 +0 0.00200667 0.00903 0.00702333 0.00501667 0 0 0 +0.00501667 0.00401333 0 0 0 0 0 0 +0 0 0 0.00100333 0.00401333 0.00903 0.00501667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00200667 0.00100333 0.00401333 0.00401333 0 0 0 +0 0.00301 0.00200667 0.00501667 0.00501667 0.00501667 0.00602 0 +0 0 0 0 0 0 0.137457 0.99346 +1.05084 1.03936 1.0291 1.02608 1.02728 1.02124 1.02487 1.02728 +1.02487 1.02608 1.02306 1.01762 1.02245 1.02366 1.02064 1.02849 +1.02547 1.01581 1.01943 1.01641 1.0152 1.01822 1.0146 1.01762 +1.02366 1.01883 1.01279 1.02487 1.01158 1.01702 1.01702 1.01943 +1.01641 1.01279 1.01641 1.01158 1.02185 1.0146 1.02185 1.02426 +1.02306 1.01098 1.02124 1.01702 1.0146 1.02668 1.02487 1.01641 +1.00916 1.01279 1.01339 1.00856 1.02064 1.0442 1.05628 1.04661 +1.05507 1.05326 1.05567 1.0599 1.05326 1.03212 1.02728 1.00796 +1.01702 1.02728 1.02487 1.02426 1.02426 1.0303 1.02064 0.97836 +0.97534 0.972924 0.971716 0.96024 0.969904 0.969904 0.967488 0.970508 +0.971716 0.977756 0.965072 0.97534 0.979568 1.00856 1.02366 1.0146 +1.0152 1.0152 1.02608 1.01762 1.02487 1.02064 1.04903 1.05869 +1.06171 1.05144 1.05205 1.05446 1.05326 1.05386 1.05144 1.05326 +1.05386 1.04782 1.02245 1.01218 1.01822 1.0297 1.01339 1.02366 +1.02789 1.02185 1.0146 1.01883 1.00071 0.994064 1.0291 1.02426 +1.00856 1.02789 1.03574 1.03332 1.01943 1.02245 1.01702 1.02004 +1.02004 1.01702 1.01943 1.0303 1.02306 1.02245 1.02366 1.02004 +1.02245 1.01702 1.02185 1.01883 1.02366 1.02185 1.01762 1.02245 +1.01943 1.01339 1.01702 1.01822 1.01218 1.02004 1.01943 1.02728 +1.02728 1.02728 1.0297 1.03453 1.04238 1.04782 1.05688 0.860888 +0.0170567 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00401333 0 0 +0 0.00401333 0.00602 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00401333 +0.00903 0.0130433 0.00802667 0.00401333 0 0 0 0 +0.00602 0.00200667 0.00401333 0.00301 0.00602 0 0.00100333 0.00401333 +0.00200667 0.00401333 0 0 0 0.00401333 0.00301 0.00200667 +0.00100333 0 0 0 0.00802667 0 0 0 +0 0 0 0 0 0 0 0.741104 +1.05688 1.04842 1.04057 1.02849 1.02426 1.02185 1.02789 1.02124 +1.02185 1.02245 1.02124 1.01883 1.01279 1.01098 1.01098 1.01822 +1.0146 1.0146 1.02124 1.02064 1.01218 1.02487 1.02004 1.02366 +1.01702 1.01158 1.01762 1.02064 1.01883 1.02366 1.0146 1.01762 +1.02487 1.01641 1.02185 1.01037 1.01762 1.02547 1.01641 1.0291 +1.02064 1.0146 0.989232 1.01279 1.02306 1.01702 1.02004 1.02426 +1.02124 1.01762 1.01822 1.01641 1.02366 1.01581 1.02487 1.03151 +1.04842 1.04299 1.03151 1.0303 1.0146 1.02064 1.02728 1.02366 +1.02064 1.0297 1.03332 1.02547 1.0146 1.02547 1.0001 0.96024 +0.959636 0.966884 0.972924 0.968696 0.97232 0.971112 0.968696 0.972924 +0.971716 0.970508 0.966884 0.96326 0.970508 0.98138 1.02245 1.03212 +1.01339 1.02004 1.01641 1.01339 1.02245 1.00977 1.00252 1.02668 +1.0442 1.06171 1.05084 1.0454 1.05144 1.04782 1.04722 1.05446 +1.04842 1.03272 1.01702 1.02728 1.02004 1.01762 1.02366 1.01218 +1.01702 1.02728 1.03393 1.02124 0.986816 1.00977 1.02185 1.014 +1.02004 1.00675 1.02306 1.02668 1.02124 1.02185 1.02124 1.01883 +1.01702 1.0152 1.02306 1.01883 1.01943 1.01641 1.01702 1.02608 +1.02487 1.00916 1.0146 1.01762 1.01702 1.01943 1.02124 1.02547 +1.02124 1.01822 1.0152 1.02245 1.01943 1.01883 1.02185 1.02426 +1.02728 1.02849 1.03151 1.0297 1.03634 1.04842 1.04661 0.450497 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00100333 +0.00301 0.00802667 0.00501667 0.00501667 0.00602 0.0160533 0.0140467 0.00802667 +0.00401333 0 0 0 0 0 0 0.00100333 +0.00903 0.00602 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0.00100333 0.00501667 0.00100333 0.00501667 0.00802667 0.0130433 0.01505 0.0110367 +0.00501667 0.00501667 0.00702333 0.00200667 0.00100333 0 0 0 +0 0 0 0.00100333 0 0 0 0 +0.00301 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.335113 +1.04057 1.0442 1.03514 1.03212 1.02487 1.01762 1.0297 1.02426 +1.02245 1.01883 1.0152 1.02245 1.02245 1.02547 1.01822 1.00916 +1.0152 1.01702 1.01339 1.014 1.02608 1.02245 1.01822 1.01702 +1.01581 1.01883 1.02064 1.01822 1.02547 1.02547 1.01822 1.01883 +1.02366 1.01762 1.02124 1.02849 1.0303 1.02004 1.01098 1.0291 +1.02668 1.01822 1.00735 1.00735 1.0291 1.01581 1.0297 1.02547 +1.01883 1.01641 1.02487 1.02004 1.02728 1.03151 1.02124 1.02124 +1.02004 1.02849 1.02547 1.01943 1.01883 1.01581 1.02124 1.01943 +1.01158 1.0146 1.01098 1.0291 1.02487 1.02004 0.974736 0.968696 +0.968092 0.980776 0.972924 0.988024 0.970508 0.962052 0.969904 0.964468 +0.957824 0.964468 0.962656 0.96024 0.969904 0.971112 1.01883 1.02789 +1.02487 1.0291 1.01762 1.0291 1.02004 1.02124 1.02124 1.01279 +1.0303 1.04118 1.05326 1.05144 1.05326 1.05024 1.05869 1.03393 +1.01279 1.014 1.0146 1.01883 1.02789 1.02245 1.02004 1.02426 +1.02004 1.01943 1.02004 0.9995 1.0146 1.02849 1.03634 1.01822 +1.01702 1.01581 1.00856 1.01883 1.02366 1.01943 1.02124 1.02366 +1.02366 1.01641 1.00675 1.00796 1.00977 1.01158 1.0152 1.01339 +1.01037 1.01581 1.01822 1.02487 1.02608 1.02124 1.01279 1.0146 +1.02608 1.02245 1.02124 1.01822 1.02185 1.01943 1.02608 1.02668 +1.02306 1.02728 1.0291 1.03695 1.03695 1.04722 0.980172 0.121403 +0 0 0 0 0 0 0 0 +0 0.00602 0.00200667 0 0.00200667 0.00100333 0 0.00401333 +0.00301 0.00301 0.00301 0.00501667 0 0 0 0 +0 0 0 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0.00401333 0.00702333 0.00401333 +0 0 0 0 0 0.00100333 0 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0612033 +0.932456 1.05507 1.0454 1.03876 1.0291 1.02064 1.02306 1.0152 +1.0152 1.02728 1.02245 1.01098 1.01702 1.02306 1.01822 1.02487 +1.02185 1.00977 1.01702 1.02004 1.01098 1.01158 1.01581 1.02124 +1.0146 1.01822 1.00916 1.02306 1.02004 1.01279 1.02547 1.01702 +1.02366 1.01702 1.0152 1.02064 1.0152 1.01581 1.01822 1.02728 +1.02487 1.01702 1.02306 1.00675 0.994668 1.02487 1.02668 1.02306 +1.01883 1.01641 1.0146 1.02004 1.01581 1.00916 1.01279 1.0297 +1.02487 1.0297 1.02064 1.02547 1.01279 1.01641 1.01822 1.02789 +1.0146 1.02306 1.02728 1.02789 1.02608 1.01943 0.973528 0.971716 +0.966884 0.965072 0.965072 0.956012 0.962656 0.96024 0.971716 0.962656 +0.96628 0.970508 0.969904 0.96628 0.967488 0.97534 1.01581 1.02849 +1.02064 1.0291 1.03574 1.01883 1.03453 1.02064 1.02245 1.02487 +1.02124 1.00977 1.03574 1.02849 1.02185 1.0152 1.02608 1.03091 +1.03514 1.01641 1.02668 1.0152 1.01822 1.01943 1.00494 1.02487 +1.014 1.02245 0.994064 1.01098 1.02668 1.0152 1.01943 1.01883 +1.00916 1.01279 1.02064 1.02245 1.02185 1.01822 1.0146 1.02547 +1.01581 1.0146 1.02064 1.02064 1.02366 1.02366 1.02124 1.02306 +1.02124 1.01762 1.01702 1.01641 1.01098 1.01762 1.01218 1.01037 +1.01339 1.01641 1.02124 1.01581 1.01762 1.02004 1.02728 1.01943 +1.02366 1.02426 1.03151 1.03574 1.05326 1.05748 0.676704 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0.00401333 0.00100333 +0 0 0 0 0 0 0 0.00100333 +0.00401333 0 0 0 0 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00200667 0 0 0.00100333 0 +0 0 0 0 0 0 0 0 +0.00702333 0.0110367 0.00401333 0.00100333 0.00301 0 0 0 +0 0 0 0.00702333 0 0 0 0 +0 0 0 0 0 0 0 0 +0.50869 1.05446 1.04903 1.04057 1.03876 1.03212 1.02789 1.02547 +1.02426 1.02064 1.0152 1.02366 1.02366 1.01702 1.01702 1.0146 +1.02245 1.02789 1.02487 1.01822 1.02426 1.03332 1.02728 1.01883 +1.01943 1.02004 1.02668 1.01641 1.01762 1.02185 1.0152 1.01581 +1.0146 1.02185 1.02306 1.02245 1.02547 1.01943 1.01822 1.01762 +1.01581 1.02004 1.0303 1.0152 1.00192 1.00614 1.01883 1.01762 +1.02004 1.02124 1.02608 1.02366 1.00916 1.02547 1.0146 1.01762 +1.01762 1.01641 1.01762 1.03272 1.01037 1.01822 1.02064 1.02064 +1.02306 1.01279 1.01822 1.01218 1.01158 1.03393 0.975944 0.965072 +0.966884 0.962052 0.96628 0.967488 0.966884 0.964468 0.96024 0.967488 +0.969904 0.971716 0.964468 0.96628 0.957824 0.968696 1.02064 1.03091 +1.02487 1.02004 1.0146 1.02306 1.02064 1.02306 1.02547 1.02366 +1.01883 1.02426 1.00796 1.01218 1.01943 1.02728 1.01158 1.0152 +1.01339 1.02728 1.02366 1.01037 1.02426 1.01883 1.01943 1.01883 +1.0291 1.00554 1.00252 1.01641 1.01943 1.01098 1.01098 1.01702 +1.02124 1.02004 1.01581 1.0152 1.02547 1.01822 1.0146 1.02608 +1.014 1.02426 1.03151 1.02245 1.02004 1.01883 1.01943 1.01581 +1.0146 1.01581 1.02124 1.02306 1.0291 1.02547 1.01943 1.02185 +1.02124 1.01822 1.02547 1.02185 1.02185 1.01943 1.01943 1.02245 +1.0303 1.0291 1.03755 1.04178 1.05748 1.03936 0.280933 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0 0.00100333 +0.00401333 0.00401333 0.00501667 0.00200667 0 0 0 0 +0 0 0 0.00100333 0.00200667 0.00501667 0.00802667 0.00702333 +0.00802667 0.00602 0.00602 0 0 0.00501667 0 0 +0 0 0 0 0 0 0 0 +0.142473 0.98742 1.05386 1.04238 1.03332 1.03091 1.02366 1.03272 +1.02668 1.02547 1.02728 1.01762 1.01762 1.02064 1.02185 1.02306 +1.02668 1.01883 1.01943 1.02004 1.02487 1.01943 1.01279 1.00977 +1.02004 1.02064 1.01943 1.01883 1.02004 1.0146 1.01702 1.01822 +1.02608 1.02426 1.01762 1.01702 1.02185 1.01762 1.02004 1.01581 +1.01339 1.0303 1.02426 1.02426 1.02426 0.997688 0.998896 1.0146 +1.01641 1.01883 1.00977 1.02366 1.0303 1.02064 1.01762 1.01822 +1.01762 1.01762 1.01702 1.0146 1.02366 1.02306 1.02245 1.02306 +1.02789 1.01943 1.02245 1.01822 1.03453 1.01822 0.976548 0.981984 +0.97232 0.96628 0.96628 0.972924 0.963864 0.967488 0.974132 0.98138 +0.969904 0.962052 0.9693 0.965072 0.960844 0.971716 1.01883 1.02185 +1.01762 1.01702 1.02789 1.02185 1.01943 1.02124 1.02426 1.01339 +1.02185 1.03393 1.02185 1.02004 1.01943 1.01883 1.014 1.01641 +1.02004 1.02245 1.03091 1.03393 1.014 1.02064 1.02608 1.02366 +1.00494 0.9995 1.01218 1.01581 1.01822 1.02668 1.0291 1.02426 +1.0146 1.01883 1.01943 1.01098 1.0146 1.0146 1.0146 1.02245 +1.02004 1.01883 1.01279 1.02185 1.0146 1.01218 1.02004 1.01702 +1.0152 1.0146 1.02004 1.00675 1.02064 1.01943 1.02728 1.02608 +1.02064 1.02124 1.02849 1.02728 1.02064 1.02547 1.03212 1.02366 +1.0297 1.03755 1.03936 1.04299 1.06111 0.826112 0.0230767 0 +0 0 0 0 0 0 0 0 +0.00501667 0.00200667 0 0 0 0 0 0 +0 0 0.00100333 0.00501667 0.00200667 0 0.00301 0 +0 0.00100333 0.00401333 0 0 0.00702333 0 0.00200667 +0.00602 0.00401333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00501667 0.00301 +0.00501667 0.00200667 0 0.00100333 0.00200667 0 0 0 +0 0 0 0 0 0 0.00501667 0.00501667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.61488 1.05507 1.04963 1.03393 1.0297 1.02185 1.02064 +1.01098 1.01702 1.0146 1.014 1.02426 1.01943 1.02245 1.02487 +1.01883 1.00916 1.00796 1.01762 1.02004 1.01218 1.01883 1.02004 +1.02185 1.0152 1.02487 1.01098 1.0146 1.01822 1.01762 1.0146 +1.0146 1.00675 0.979568 0.997084 1.00071 1.0001 0.994668 0.997084 +1.00131 1.01339 1.01641 1.02366 1.02004 1.02306 1.00312 1.00312 +1.02124 1.01943 1.02004 1.02124 1.02185 1.02306 1.02245 1.0297 +1.02426 1.01098 1.01037 1.014 1.01339 1.03332 1.02547 1.02185 +1.02124 1.02185 1.01037 1.02426 1.0297 1.02789 0.995876 0.967488 +0.965072 0.96628 0.957824 0.976548 0.976548 0.976548 0.966884 0.965676 +0.968696 0.963864 0.96628 0.964468 0.97232 0.9844 1.02789 1.01883 +1.02426 1.02124 1.01702 1.01279 1.02124 1.014 1.02124 1.01883 +1.01702 1.00554 1.014 1.01762 1.01641 1.02849 1.01037 1.00796 +1.01641 1.01883 1.02789 1.03332 1.02064 1.00735 1.02547 1.00916 +1.01339 1.02849 1.02004 1.02728 1.0303 1.02185 1.01702 1.02426 +1.02426 1.01702 1.02789 1.02185 1.0146 1.01883 1.01762 1.02366 +1.02185 1.03212 1.02245 1.02004 1.02547 1.02245 1.01762 1.03453 +1.02728 1.01822 1.01762 1.01762 1.01943 1.01822 1.00554 1.0146 +1.02185 1.01218 1.01218 1.0152 1.014 1.01943 1.01943 1.02547 +1.03151 1.03332 1.04299 1.05265 1.0442 0.351167 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0.0110367 0.00602 +0.0100333 0.00301 0 0.00802667 0.00602 0.00301 0.00100333 0.00301 +0.00501667 0.00200667 0.00401333 0.00501667 0.00100333 0 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0 0.00702333 0.00501667 0 +0 0 0 0 0 0 0 0 +0 0.00702333 0.00401333 0.00401333 0.00200667 0 0.00200667 0.00401333 +0.00401333 0.00501667 0.00501667 0.00602 0.00501667 0 0.00501667 0.00301 +0 0 0 0 0 0 0 0 +0 0.196653 0.9995 1.04601 1.03755 1.03514 1.02487 1.03091 +1.02185 1.02487 1.02124 1.01943 1.02185 1.0146 1.0146 1.0146 +1.01883 1.01581 1.01762 1.01641 1.014 1.01702 1.02487 1.02547 +1.0152 1.02004 1.01822 1.0152 1.02366 1.01943 1.02004 1.01581 +0.994064 1.00071 1.01218 1.0146 1.014 1.00614 1.00977 1.01037 +1.01279 1.01037 1.0152 1.01641 1.01641 1.02064 1.0146 0.998896 +0.995272 1.02668 1.02064 1.02728 1.014 1.02789 1.01943 1.02366 +1.01279 1.01581 1.01702 1.02004 1.02185 1.01339 1.02306 1.02547 +1.02185 1.02608 1.01883 1.02185 1.01883 1.02185 1.01762 0.982588 +0.96628 0.971716 0.968092 0.968092 0.966884 0.958428 0.959636 0.971112 +0.97836 0.97534 0.9693 0.975944 0.977756 1.01339 1.02426 1.02849 +1.0303 1.01581 1.01762 1.02547 1.0297 1.014 1.01641 1.0146 +1.03151 1.01883 1.02849 1.0291 1.02004 1.014 1.02366 1.02668 +1.01762 1.0152 1.0146 1.01641 1.02185 1.02728 1.0152 1.00735 +0.9995 1.02124 1.01641 1.0152 1.01339 1.01762 1.00614 1.01339 +1.0001 0.998896 0.99648 1.0146 1.02124 1.01943 1.0146 1.01943 +1.01883 1.0146 1.01822 1.02004 1.02124 1.02608 1.02004 1.01943 +1.02728 1.02245 1.02124 1.02245 1.014 1.02124 1.01762 1.0146 +1.014 1.01641 1.01581 1.02366 1.01883 1.01822 1.02849 1.02668 +1.03212 1.03574 1.0454 1.05024 0.884072 0.0471567 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0 0 0 0 0.00301 +0 0.00301 0.00100333 0 0.0100333 0.0110367 0.00903 0.00100333 +0.00100333 0.00602 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0 0 0 +0.00401333 0.00401333 0 0 0.00100333 0.00602 0.0100333 0.01204 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.668976 1.05869 1.04782 1.03936 1.03634 1.03393 +1.0303 1.03876 1.0297 1.02547 1.02245 1.01943 1.02668 1.01883 +1.01762 1.01037 1.0146 1.0146 1.01702 1.02306 1.01641 1.02004 +1.01883 1.01279 1.02426 1.02064 1.01943 1.02306 1.01279 0.997688 +1.00494 1.01762 1.01943 1.01641 1.02306 1.02245 1.02064 1.02004 +1.02366 1.01218 0.998292 1.01279 1.02245 1.01762 1.02306 1.02487 +1.00494 0.988628 1.02366 1.02306 1.02789 1.02004 1.02064 1.0152 +1.01581 1.02426 1.02064 1.02426 1.02426 1.02426 1.01702 1.0152 +1.01702 1.01883 1.01822 1.03453 1.02366 1.02366 1.01339 0.977152 +0.954804 0.96024 0.970508 0.971716 0.960844 0.9693 0.968092 0.969904 +0.970508 0.962052 0.961448 0.966884 0.976548 1.02789 1.02366 1.0152 +1.0146 1.01641 1.02064 1.01822 1.01279 1.01762 1.03091 1.02547 +1.00856 1.01339 1.00252 1.02547 1.01762 1.02064 1.0152 1.01822 +1.02668 1.01037 1.01762 1.02245 1.01158 1.0152 1.01279 1.02849 +1.01943 1.02064 1.01943 1.0146 1.00796 1.01098 1.02608 1.02668 +1.02124 1.0291 1.01702 1.01158 0.998896 1.0146 1.02366 1.02124 +1.01762 1.02487 1.03151 1.02426 1.01581 1.02245 1.01218 1.01883 +1.01822 1.02608 1.01702 1.02185 1.02064 1.01702 1.01822 1.02849 +1.02728 1.02668 1.02789 1.02849 1.0303 1.02547 1.0291 1.02849 +1.04057 1.04178 1.05446 1.03936 0.372237 0 0 0 +0 0 0 0 0.00401333 0.00602 0.00100333 0.00200667 +0.00100333 0 0.00401333 0 0 0 0 0 +0 0.00301 0 0 0 0 0 0 +0 0 0 0.00301 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00401333 0.00100333 0 0.00301 0.00200667 0 +0 0 0 0.00200667 0.00100333 0 0 0 +0 0 0 0 0 0 0 0.00301 +0.00501667 0 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.181603 0.997084 1.05869 1.0448 1.03695 1.02849 +1.02185 1.01943 1.02366 1.02366 1.01943 1.02487 1.02306 1.02547 +1.01702 1.0152 1.01762 1.01641 1.02124 1.01641 1.01279 1.01098 +1.01339 1.01702 1.0146 1.01762 1.02064 1.01822 0.997084 1.00494 +1.00977 1.00856 1.01702 1.00796 1.01218 1.01702 1.01158 1.01702 +1.00977 1.01037 1.01339 1.01762 1.01762 1.02608 1.01883 1.0146 +1.01943 1.00312 0.98138 1.00916 1.01339 1.02245 1.01641 1.0152 +1.01943 1.02004 1.02608 1.01762 1.02306 1.01279 1.02185 1.02547 +1.02306 1.01581 1.0152 1.02004 1.014 1.01702 1.02789 1.02245 +0.985608 0.965676 0.961448 0.961448 0.9693 0.974132 0.967488 0.954804 +0.968092 0.974132 0.958428 0.982588 1.02245 1.03453 1.01943 1.02124 +1.02124 1.03151 1.02426 1.02064 1.02426 1.02004 1.01279 1.01581 +1.0146 1.03876 1.0297 1.01581 1.02426 1.01762 1.02064 1.03272 +1.02608 1.02064 1.01822 1.02547 1.02064 1.02185 1.02426 1.02487 +1.02668 1.01822 1.01702 1.02064 1.02366 1.02004 1.014 1.0146 +1.01279 1.01822 1.00796 1.0146 1.01218 1.00916 1.0146 1.02547 +1.01822 1.0146 1.01158 1.01702 1.01762 1.01339 1.01702 1.02064 +1.01822 1.02004 1.02185 1.01641 1.00916 1.01641 1.0152 1.01581 +1.01218 1.02306 1.02004 1.01581 1.02487 1.02245 1.03091 1.03574 +1.03755 1.0454 1.05265 0.869904 0.04214 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00301 0.00301 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00802667 0.00602 0.00802667 0.0110367 0.00301 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00602 0.00802667 0.00702333 0.00301 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.0100333 0.00301 0 0 0 0 0 +0 0 0 0.593973 1.05084 1.04238 1.03876 1.03332 +1.03272 1.02668 1.02366 1.02185 1.02547 1.02608 1.02064 1.0146 +1.02124 1.0297 1.02366 1.01581 1.02064 1.02547 1.02366 1.01883 +1.0146 1.01883 1.01581 1.02366 1.01822 1.00856 0.988628 1.01943 +1.01641 1.01702 1.00796 1.00614 1.01702 1.02004 1.01822 1.0152 +1.01822 1.01822 1.02547 1.01762 1.01943 1.02547 1.02789 1.02366 +1.02728 1.02245 1.02124 0.992856 1.00494 1.02064 1.03212 1.01339 +1.01279 1.03091 1.01822 1.02064 1.02547 1.02608 1.01943 1.00735 +1.02064 1.02004 1.03272 1.02547 1.03091 1.01762 1.01037 1.02064 +1.01037 0.994668 0.974736 0.967488 0.968696 0.970508 0.971716 0.964468 +0.974736 0.97232 0.995272 1.01339 1.01581 1.02366 1.01883 1.01702 +1.014 1.01822 1.00916 1.02124 1.02487 1.02547 1.02124 1.01641 +1.02426 1.00735 1.01762 1.01822 1.01158 1.01702 1.02004 1.02306 +1.01702 1.02306 1.01641 1.00675 1.03816 1.01641 1.01339 1.01702 +1.01943 1.01822 1.00252 1.014 1.0146 1.01883 1.02608 1.01098 +1.01702 1.01641 1.01218 1.01702 1.01098 1.02064 1.00131 1.0146 +1.01822 1.0146 1.01702 1.02004 1.02185 1.01158 1.01822 1.01098 +1.00916 1.01762 1.02064 1.02608 1.0146 1.0146 1.02366 1.02789 +1.01641 1.02004 1.02728 1.02426 1.02728 1.02789 1.03091 1.03936 +1.04661 1.05265 1.03393 0.3311 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00602 +0.0110367 0.00602 0.00501667 0.00401333 0.00602 0.00301 0 0.00301 +0.00100333 0.00200667 0 0 0 0 0 0.00301 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0.00200667 0.00401333 +0.00501667 0.00401333 0.00100333 0.00200667 0.00501667 0.00602 0 0 +0 0 0 0 0 0 0.00501667 0.00702333 +0.00301 0.00200667 0.00501667 0.00401333 0.00501667 0.00501667 0 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0.125417 0.965072 1.05809 1.04782 1.03816 +1.03151 1.02245 1.02789 1.02366 1.01762 1.01702 1.02245 1.02366 +1.01822 1.01641 1.01943 1.02124 1.02124 1.02064 1.00916 1.00916 +1.02547 1.01158 1.01883 1.01702 1.01218 0.988628 0.994668 1.00494 +1.00192 0.995876 0.997688 1.06534 1.19352 1.21024 1.09915 1.014 +1.01702 1.01098 1.0152 1.01702 1.0146 1.01581 1.0152 1.01822 +1.0152 1.02608 1.02547 1.01943 0.989232 0.97836 1.00675 1.0291 +1.02728 1.02185 1.02547 1.02366 1.01702 1.03091 1.02064 1.02426 +1.01702 1.01943 1.01098 1.01339 1.02245 1.03151 1.0297 1.02004 +1.02849 1.02789 1.00796 0.992856 0.974736 0.974132 0.971716 0.971112 +0.992252 0.998292 1.01943 1.02487 1.02245 1.02064 1.01762 1.02849 +1.02245 1.02306 1.02849 1.02245 1.0146 1.02547 1.03332 1.02789 +1.02608 1.01581 1.01943 1.02306 1.02004 1.02004 1.02185 1.0303 +1.02185 1.014 1.00735 1.01641 1.01339 1.0152 1.02668 1.01822 +1.02789 1.0303 1.01279 1.01279 1.02124 1.02004 1.00977 1.00977 +1.00614 1.00433 1.00977 1.01098 1.01822 1.01822 1.01098 1.00916 +1.01762 1.02789 1.01822 1.01943 1.01218 1.01641 1.02306 1.01641 +1.01943 1.01158 1.01702 1.01822 1.02064 1.01883 1.01702 1.02789 +1.02124 1.02185 1.02064 1.01702 1.02124 1.03151 1.03212 1.03755 +1.04057 1.05326 0.796488 0.0250833 0 0 0 0 +0 0 0 0 0 0.00401333 0 0 +0 0.00602 0.00802667 0.00602 0.00903 0.00401333 0 0 +0 0 0.00301 0.00602 0 0 0 0 +0 0 0.00200667 0.00602 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.00100333 0 0.00602 0.00602 0.00702333 0.00200667 0.00301 +0.00702333 0 0.00200667 0.00200667 0 0 0 0 +0 0 0 0 0.00200667 0.00100333 0.00100333 0 +0.00100333 0.00401333 0.00301 0.00301 0 0 0 0 +0 0 0 0 0.00100333 0 0 0 +0 0 0 0 0.464543 1.0448 1.03997 1.03514 +1.03272 1.02728 1.03091 1.02064 1.01822 1.02547 1.02124 1.02064 +1.0152 1.02004 1.01702 1.01218 1.0152 1.01158 1.01339 1.01762 +1.01339 1.0146 1.01098 1.00856 1.01339 0.986816 1.01158 1.00675 +1.01158 0.992856 1.04782 1.35286 1.49632 1.4959 1.41685 1.11385 +1.00735 1.00252 1.01339 1.02064 1.01339 1.014 1.0146 1.02306 +1.01702 1.02668 1.02728 1.01822 1.01762 0.991044 0.980776 1.00554 +1.0291 1.02849 1.02487 1.02064 1.02849 1.01883 1.0152 1.0146 +1.02487 1.02668 1.02608 1.01218 1.02366 1.01218 1.02306 1.01702 +1.02185 1.02366 1.02124 1.0297 1.01943 1.00796 1.01943 1.02004 +1.014 1.02426 1.02668 1.02004 1.01158 1.01943 1.03332 1.02608 +1.0152 1.01218 1.02124 1.01822 1.02004 1.01339 1.0146 1.01581 +1.01883 1.02245 1.02728 1.02064 1.02849 1.02789 1.01943 1.00856 +1.00614 1.01822 1.02487 1.01279 1.01641 1.01339 1.02366 1.02064 +1.01037 1.0146 1.02366 1.01641 1.02245 1.00856 1.01762 1.08725 +1.1296 1.08375 1.00494 1.0001 1.00131 1.01641 1.01641 1.01279 +1.00856 1.0146 1.00856 1.01158 1.01641 1.01762 1.02004 1.02668 +1.02306 1.01762 1.01762 1.01883 1.01822 1.0152 1.01641 1.01339 +1.01702 1.02426 1.03514 1.03453 1.03151 1.03332 1.0448 1.0442 +1.05144 1.02245 0.26488 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00802667 0 +0 0 0.00301 0 0.00200667 0.0100333 0.00301 0.00401333 +0 0 0 0 0 0.00301 0 0.00200667 +0 0 0 0 0 0.00401333 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0 0 0 0 0 0.00401333 0.00702333 0.00802667 +0.01204 0.00903 0.00802667 0.0110367 0.00501667 0.00200667 0 0 +0.00200667 0.00100333 0 0 0 0 0 0 +0 0.00301 0 0 0 0 0 0 +0 0 0 0 0.0531767 0.860888 1.05326 1.04601 +1.03936 1.03393 1.02608 1.02668 1.02547 1.02668 1.01581 1.02124 +1.02124 1.02728 1.01943 1.01037 1.01943 1.02064 1.02064 1.02426 +1.02245 1.01762 1.01641 1.01883 1.01762 0.983796 1.01339 1.01762 +1.0146 1.00131 1.16633 1.48293 1.49255 1.50468 1.50845 1.28469 +0.9995 1.00735 1.01822 1.01762 1.01581 1.01037 1.02064 1.01339 +1.01762 1.00735 1.02004 1.02487 1.02245 1.02426 1.0146 0.98742 +1.00192 1.01581 1.01339 1.00796 1.01943 1.01702 1.00977 1.01883 +1.01279 1.02426 1.02487 1.02124 1.02124 1.02668 1.01581 1.01822 +1.0291 1.014 1.014 1.02366 1.02366 1.02849 1.0291 1.02124 +1.02185 1.01943 1.01762 1.0297 1.0291 1.01762 1.02185 1.01158 +1.02487 1.02366 1.02185 1.01943 1.01218 1.00916 1.01641 1.0152 +1.01762 1.014 1.01943 1.01762 1.00916 1.01158 1.00675 1.00977 +1.01581 1.00675 1.02366 1.01218 1.014 1.02547 1.01702 1.01279 +1.01641 1.00856 1.0146 1.01279 1.01279 1.0146 1.17846 1.42689 +1.47792 1.42647 1.1634 0.992856 1.00312 1.00554 1.00675 1.00554 +1.00675 1.01641 1.01581 1.02306 1.01037 1.01641 1.01279 1.01098 +1.02004 1.01762 1.01339 1.0146 1.02245 1.01762 1.01762 1.02004 +1.0152 1.02185 1.02004 1.03212 1.02789 1.03212 1.03634 1.04661 +1.05628 0.67284 0.00501667 0 0 0 0 0 +0 0 0 0 0.00501667 0 0.00602 0.0110367 +0.00100333 0 0 0 0 0 0 0 +0.00702333 0.0100333 0.0100333 0.00702333 0.00401333 0.00301 0.00602 0.0100333 +0.00501667 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0 0 0 0 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.269897 1.01279 1.0454 +1.03695 1.03453 1.03393 1.03151 1.02608 1.02608 1.02547 1.02426 +1.01883 1.00735 1.01581 1.0152 1.02426 1.02004 1.02245 1.01702 +1.0152 1.02124 1.01822 1.01641 1.02064 0.98742 1.02245 1.0152 +1.02185 1.00252 1.18348 1.49464 1.49966 1.49423 1.49381 1.30017 +0.99648 1.00071 1.00312 1.00796 1.01581 1.0152 1.01098 1.00977 +1.02004 1.02668 1.01943 1.0146 1.02366 1.0146 1.0146 1.02547 +1.0146 0.998292 1.0146 1.0146 1.02547 1.01943 1.02124 1.02728 +1.02608 1.0146 1.01943 1.01762 1.02789 1.01943 1.02728 1.01883 +1.02004 1.01702 1.03212 1.02004 1.02366 1.0146 1.02728 1.03212 +1.01883 1.014 1.01883 1.02004 1.00856 1.02245 1.02245 1.02306 +1.02366 1.02124 1.02849 1.02547 1.02547 1.02004 1.02306 1.02064 +1.01943 1.02004 1.0152 1.01641 1.0152 1.01098 1.02004 1.014 +1.01762 1.01943 1.02789 1.02124 1.02366 1.02124 1.01279 1.02668 +1.01158 1.02608 1.01158 1.00494 1.0001 1.04601 1.40974 1.49004 +1.49339 1.50175 1.39636 1.04842 1.00071 1.00796 1.02124 1.014 +1.01339 1.0146 1.01762 1.0146 1.01218 1.0146 1.01641 1.02306 +1.01339 1.01822 1.01822 1.01762 1.0152 1.02426 1.02064 1.02366 +1.02004 1.02306 1.02124 1.0303 1.03272 1.03332 1.04722 1.04842 +0.976548 0.158527 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00702333 +0.0110367 0.0140467 0.00802667 0.00602 0.0100333 0.00401333 0.00602 0 +0 0 0 0 0 0 0 0 +0.00702333 0.01505 0.0110367 0.00602 0.00802667 0.00602 0.00903 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0 0 0 0 0.00401333 +0.00301 0.00301 0 0 0.00100333 0.00200667 0.00401333 0.00301 +0.00501667 0.00802667 0.00802667 0.00200667 0.00200667 0.00301 0.00301 0 +0.00200667 0.00200667 0 0 0 0 0 0.00301 +0.00401333 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0 0.578923 1.04601 +1.0442 1.03272 1.0297 1.02426 1.02608 1.02306 1.0291 1.02789 +1.02306 1.02547 1.02487 1.02487 1.02124 1.01702 1.0152 1.01883 +1.02004 1.01943 1.01641 1.01581 1.02064 0.98742 1.0152 1.0152 +1.01218 0.9995 1.08935 1.41685 1.51179 1.49883 1.45826 1.1443 +0.9844 1.00071 1.00675 1.01762 1.0146 1.01943 1.02064 1.02245 +1.01581 1.01218 1.01702 1.01762 1.02245 1.0146 1.01822 1.02245 +1.0152 1.01702 1.01883 1.00554 1.01098 1.02668 1.02245 1.02245 +1.01822 1.02608 1.02487 1.02849 1.01702 1.02245 1.02366 1.01641 +1.02124 1.02124 1.02306 1.02608 1.02487 1.02849 1.01883 1.02004 +1.0291 1.02608 1.02004 1.01581 1.01822 1.01158 1.02185 1.0303 +1.02124 1.01702 1.0152 1.01702 1.02064 1.02426 1.02306 1.0146 +1.01279 1.00796 1.00433 1.01822 1.02728 1.02064 1.02306 1.01158 +1.01641 1.01098 1.01702 1.01943 1.02185 1.01641 1.01883 1.01218 +1.01037 1.00494 1.01218 1.01158 1.00916 1.08935 1.45617 1.49799 +1.48963 1.49046 1.44362 1.07815 1.00856 1.01218 1.01641 1.01339 +1.00554 1.02426 1.02004 1.02487 1.0146 1.01822 1.01339 1.02608 +1.02608 1.014 1.0146 1.02185 1.02185 1.02306 1.01581 1.02789 +1.02366 1.0303 1.02849 1.04057 1.0454 1.05024 1.05024 1.04359 +0.495647 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0.00602 0.00602 0.0110367 0.00301 0 +0 0 0.00200667 0.00100333 0.00100333 0 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0.00903 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0892967 0.903392 +1.05869 1.05628 1.0448 1.03816 1.03695 1.03332 1.02487 1.01581 +1.01702 1.01883 1.02789 1.02245 1.01702 1.01762 1.02306 1.01702 +1.01762 1.01883 1.0152 1.02366 1.02547 0.991648 1.00675 1.014 +1.01702 1.01279 1.01883 1.1128 1.27633 1.29807 1.14709 1.01822 +1.0146 1.01641 1.01098 1.00614 1.01218 1.014 1.00916 1.01098 +1.02245 1.01883 1.00373 1.01822 1.02004 1.01279 1.02306 1.0146 +1.02245 1.01098 1.02668 1.01581 1.0303 1.014 1.01581 1.02668 +1.03212 1.02064 1.02185 1.01581 1.01641 1.02185 1.02064 1.02004 +1.01279 1.01581 1.02064 1.02306 1.01883 1.02004 1.01702 1.01581 +1.02608 1.01883 1.02306 1.01943 1.02789 1.02245 1.02064 1.01339 +1.0146 1.0152 1.02124 1.02245 1.02487 1.0146 1.0146 1.00916 +1.00252 1.00916 1.02426 1.01762 1.02185 1.01822 1.01641 1.0152 +1.01822 1.01158 1.01158 1.01822 1.01339 1.01641 1.00735 1.00373 +1.01339 1.00735 1.00675 1.00675 0.994064 1.02366 1.35119 1.50845 +1.49966 1.50217 1.33948 1.02547 0.992252 1.00675 1.01098 1.01641 +1.01158 1.02064 1.01098 1.02004 1.02124 1.01822 1.02608 1.01943 +1.01822 1.02306 1.01037 1.01762 1.01943 1.02668 1.02064 1.01943 +1.02185 1.0297 1.03212 1.03212 1.03574 1.04842 1.05507 0.850584 +0.0581933 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0.00702333 0.0170567 0.01806 +0.0170567 0.0130433 0.0130433 0.00301 0.00401333 0 0.00200667 0 +0 0.00301 0.00702333 0.00903 0 0.00802667 0.0130433 0.0130433 +0.00702333 0.00401333 0.00401333 0.00602 0.00702333 0.00702333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00501667 0 0 0 0 +0 0 0 0.00100333 0.00200667 0.00301 0 0 +0 0 0 0 0 0 0 0.278927 +1.00373 1.0448 1.03876 1.02487 1.02426 1.0297 1.02668 1.03212 +1.02064 1.02245 1.02366 1.02185 1.0146 1.02306 1.02306 1.00916 +1.02245 1.01883 1.01581 1.02185 1.01641 1.00856 0.99044 1.02004 +1.02124 1.014 1.01098 1.0146 1.02004 1.02124 1.01158 1.01098 +1.01279 1.00433 1.00433 1.01943 1.01098 1.00977 1.00614 1.01943 +1.01158 1.0146 1.02064 1.02487 1.01943 1.02487 1.02185 1.02064 +1.02124 1.02608 1.02124 1.02789 1.02245 1.02185 1.02124 1.00977 +1.00433 0.991044 1.0001 1.0146 1.02124 1.02245 1.02064 1.02668 +1.02728 1.02728 1.02185 1.0152 1.02306 1.01581 1.02608 1.02245 +1.01158 1.02004 1.0146 1.02124 1.01702 1.01943 1.02849 1.01883 +1.01822 1.02064 1.01098 1.0001 1.00252 1.00373 1.00675 1.00735 +1.0152 1.0152 1.01339 1.02185 1.02547 1.0146 1.01279 1.02124 +1.02849 1.01339 1.01339 1.00916 1.014 1.02124 1.02608 1.02004 +1.00796 1.01702 1.02366 1.00916 1.00131 0.995876 1.09775 1.31899 +1.3972 1.3056 1.1009 1.01762 1.014 1.01641 1.02124 1.0152 +1.0146 1.02004 1.01883 1.01883 1.00916 1.01883 1.01943 1.02004 +1.02124 1.02849 1.02668 1.02245 1.02185 1.02487 1.0291 1.02366 +1.02306 1.03151 1.03695 1.03695 1.04238 1.05265 1.00494 0.24381 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0 0.00100333 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0 0 0 0.00100333 0.00501667 0 0 0 +0 0 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00401333 0 0 0.00100333 0.00100333 +0.00702333 0.00401333 0 0.00200667 0.00200667 0.00200667 0 0.00301 +0 0 0.00501667 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.49364 1.03876 1.04299 1.03393 1.03574 1.03332 1.03272 1.02608 +1.02487 1.02668 1.0303 1.02185 1.02185 1.02245 1.02245 1.02789 +1.02547 1.02306 1.02004 1.01158 1.0152 1.014 0.998292 1.00373 +1.01702 1.01943 1.02004 1.02064 1.0297 1.02366 1.02124 1.00916 +1.01943 1.01218 1.01098 1.00977 1.0152 1.02487 1.01883 1.01883 +1.01943 1.02245 1.02064 1.01098 1.0146 1.02004 1.0152 1.02124 +1.014 1.02366 1.0152 1.01339 1.00856 1.01339 1.01883 1.01098 +1.02064 1.02004 1.00856 1.00494 1.00675 1.01339 1.01037 1.01883 +1.01883 1.01218 1.0152 1.01702 1.01581 1.02608 1.02306 1.02004 +1.02366 1.01943 1.02124 1.01581 1.01822 1.0291 1.02185 1.01883 +1.00675 1.00735 1.00675 1.00735 1.01158 1.01218 1.00796 1.01339 +1.02064 1.01883 1.01822 1.0146 1.01581 1.02487 1.02366 1.02789 +1.02306 1.02608 1.02064 1.01702 1.0146 1.00977 1.01762 1.01883 +1.01279 1.01037 1.01702 1.02366 1.01702 1.01158 0.997688 1.03272 +1.05567 1.02849 1.01883 1.0152 1.01702 1.014 1.02124 1.01822 +1.02668 1.02426 1.02004 1.02185 1.014 1.02789 1.02185 1.01883 +1.01883 1.0146 1.02185 1.02004 1.02306 1.02789 1.02849 1.03695 +1.03151 1.03393 1.03695 1.04057 1.04299 1.03936 0.486617 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0 0.00802667 0 0.00200667 +0 0 0.00100333 0.00100333 0.00401333 0.00100333 0.00401333 0.00802667 +0.00702333 0.00100333 0 0 0 0.00301 0.00100333 0.00802667 +0.00802667 0.00903 0 0 0.01204 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00501667 0.00200667 0.00501667 0.00200667 0.00100333 0.00301 0.0100333 0.0110367 +0.00501667 0.00501667 0.00903 0.01505 0.0110367 0 0 0.00301 +0.00200667 0 0 0 0 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0.03311 0.716632 1.04842 1.04359 1.0448 1.03816 1.02849 1.0297 +1.02668 1.0303 1.03272 1.02185 1.01581 1.0146 1.02366 1.02426 +1.02306 1.03212 1.01822 1.02064 1.02306 1.01702 1.01943 0.988628 +1.00977 1.02728 1.02004 1.02004 1.01098 1.01822 1.01883 1.0152 +1.0146 1.01218 1.01581 1.02064 1.01943 1.02185 1.02004 1.02487 +1.02004 1.02245 1.02124 1.02004 1.01822 1.01641 1.02245 1.02064 +1.01883 1.02004 1.02064 1.02366 1.0146 1.0152 1.014 1.02487 +1.02064 1.01822 1.02064 1.01339 1.00796 1.01581 1.0146 1.0001 +1.00373 1.01581 1.00856 1.02064 1.01339 1.00856 1.00916 1.00856 +1.00614 1.00554 1.00494 1.01943 1.0152 1.01037 1.01339 1.01339 +1.00977 1.01702 1.01098 1.01218 1.01762 1.02124 1.02245 1.01641 +1.01762 1.01581 1.01943 1.02185 1.00735 1.02306 1.02004 1.02124 +1.02608 1.0146 1.01218 1.01943 1.02245 1.01822 1.00977 1.02366 +1.0152 1.01339 1.00735 1.01279 1.01158 1.00252 1.00554 1.00494 +1.01581 1.02004 1.01883 1.0146 1.02547 1.02728 1.01822 1.02245 +1.01943 1.01943 1.02608 1.02668 1.02849 1.01883 1.01702 1.02366 +1.02487 1.02728 1.02064 1.02366 1.02668 1.02064 1.02306 1.0303 +1.05084 1.04963 1.05144 1.05084 1.05748 0.73724 0.0381267 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0.00401333 0.00200667 0.00301 0.00401333 0.00200667 0 +0 0.00100333 0.0100333 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00501667 0.00301 0 0 +0 0.00401333 0.00200667 0.00401333 0.0110367 0.00702333 0.00200667 0.00301 +0 0 0 0 0.00200667 0 0 0 +0 0 0 0 0 0 0.00602 0.00903 +0.00602 0.00100333 0 0.00301 0.00903 0 0 0 +0 0 0 0 0 0 0 0 +0 0.116387 0.912408 1.05446 1.04359 1.03453 1.03514 1.03634 +1.03574 1.03574 1.02789 1.02366 1.02487 1.02547 1.02426 1.02547 +1.01702 1.01339 1.0152 1.02306 1.0152 1.0152 1.0152 0.9995 +0.998292 1.00192 1.01218 1.02366 1.01883 1.0152 1.0146 1.014 +1.01581 1.01702 1.01943 1.01702 1.02547 1.02849 1.02728 1.01339 +1.02245 1.02004 1.01943 1.01822 1.02185 1.01702 1.01762 1.02064 +1.02245 1.01098 1.02064 1.01581 1.02426 1.02728 1.01822 1.01943 +1.01702 1.01581 1.01883 1.01158 1.02306 1.02245 1.01883 1.02064 +1.02306 1.01098 1.01702 1.0152 1.01581 1.01883 1.02426 1.01218 +1.02245 1.02366 1.02547 1.02004 1.00675 1.01581 1.01883 1.01943 +1.01883 1.01702 1.01822 1.02004 1.01581 1.01883 1.02245 1.02547 +1.02124 1.02789 1.01641 1.0152 1.0152 1.02064 1.00916 1.00916 +1.02124 1.02366 1.01581 1.01702 1.02245 1.00856 1.02366 1.00916 +1.01158 1.02004 1.0146 1.01339 1.02366 1.01762 1.01883 1.01339 +1.02426 1.01702 1.02426 1.00977 1.01702 1.01339 1.014 1.01218 +1.01581 1.01943 1.0152 1.01098 1.02064 1.01762 1.01822 1.02064 +1.02185 1.01762 1.02124 1.01943 1.0291 1.03332 1.0291 1.02487 +1.03151 1.03634 1.04601 1.05567 0.886648 0.106353 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00301 0 0.00200667 0 0 0 0 0 +0.00602 0 0 0 0 0 0.00200667 0 +0.00100333 0 0 0 0.00100333 0 0 0 +0 0 0 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0 0.00401333 0.00200667 0.00200667 0 0 0 +0.00100333 0.00301 0 0 0 0 0 0 +0 0.00401333 0.00401333 0.00401333 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0.00802667 0.00301 0 0 0.00702333 0 0 0 +0 0 0.20769 0.961448 1.04963 1.04178 1.03936 1.03393 +1.03212 1.02004 1.02064 1.02185 1.02487 1.01943 1.02426 1.02064 +1.0152 1.02306 1.02668 1.01883 1.02124 1.02547 1.02426 1.03332 +1.02185 1.01883 1.01762 1.01218 1.01037 1.00977 1.01098 1.01158 +1.0146 1.02004 1.0146 1.01883 1.02185 1.01883 1.00856 1.02124 +1.01641 1.00675 1.00977 1.02608 1.02245 1.00856 1.01702 1.01098 +1.01279 1.01581 1.00735 1.01762 1.02004 1.02668 1.0146 1.01702 +1.02124 1.01641 1.01943 1.02185 1.02004 1.014 1.01883 1.01883 +1.0152 1.00433 1.00494 1.0152 1.0291 1.06111 1.07885 1.06534 +1.05144 1.01822 1.00977 1.01037 1.01943 1.02728 1.00916 1.01762 +1.01702 1.03091 1.01883 1.02306 1.02124 1.01822 1.01822 1.02245 +1.01762 1.02487 1.01943 1.01702 1.01702 1.01218 1.01098 1.01641 +1.01581 1.02124 1.01339 1.02306 1.0297 1.02124 1.0303 1.03755 +1.02306 1.02185 1.02366 1.014 1.01279 1.00916 1.02064 1.0146 +1.02185 1.01822 1.01641 1.01702 1.014 1.02426 1.02185 1.02004 +1.01702 1.0146 1.01883 1.02245 1.02366 1.02426 1.01822 1.02608 +1.02547 1.02245 1.0303 1.02547 1.02789 1.03453 1.03695 1.04118 +1.04601 1.0448 1.05507 0.957824 0.205683 0 0 0 +0 0.00100333 0 0 0 0 0 0 +0 0 0 0 0.00100333 0 0.00301 0 +0 0.00301 0.00702333 0.00903 0 0.00401333 0 0.00301 +0.00200667 0.00100333 0.00301 0 0 0.00100333 0.00602 0.00501667 +0.00501667 0.01204 0.0110367 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.0100333 0.00702333 +0 0.00200667 0 0 0 0.00100333 0 0.00100333 +0.00100333 0 0 0 0.00401333 0.00401333 0 0 +0.00100333 0 0 0.00301 0 0 0 0 +0 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.27391 0.98742 1.04842 1.03091 1.02728 +1.0297 1.03695 1.03695 1.02849 1.02366 1.03212 1.02608 1.02124 +1.02245 1.02426 1.01218 1.02124 1.02124 1.02366 1.03091 1.01581 +1.01883 1.02185 1.01279 1.0146 1.01702 1.01883 1.01158 1.02366 +1.0291 1.0146 1.01279 1.01762 1.01641 1.01822 1.01943 1.02306 +1.02185 1.0291 1.02306 1.01943 1.00433 1.02366 1.02124 1.014 +1.01581 1.0297 1.02004 1.02064 1.01822 1.01339 1.02185 1.02306 +1.01641 1.02608 1.02185 1.014 1.014 1.02366 1.01702 1.01762 +1.0146 1.02487 1.04782 1.0918 1.12435 1.138 1.13415 1.1359 +1.1387 1.11245 1.07535 1.01702 1.01822 1.01218 1.01762 1.014 +1.00614 1.00796 1.01581 1.014 1.01641 1.01279 1.00131 1.01581 +1.0146 1.01822 1.02426 1.01883 1.02064 1.01822 1.02124 1.01037 +1.02185 1.02004 1.02245 1.01762 1.02245 1.014 1.01943 1.02306 +1.01943 1.01762 1.02245 1.02185 1.01702 1.014 1.00977 1.01279 +1.02004 1.02185 1.02668 1.01339 1.0152 1.01581 1.02608 1.02185 +1.02426 1.01762 1.01762 1.02064 1.014 1.01702 1.02245 1.01702 +1.02849 1.02487 1.02245 1.02064 1.03091 1.03514 1.03634 1.04118 +1.04842 1.0593 0.974736 0.271903 0 0 0 0 +0 0 0 0 0 0.00301 0 0 +0.00100333 0 0 0 0 0 0.00200667 0 +0 0 0 0 0.00100333 0 0 0 +0 0.00602 0.00602 0.00501667 0.00200667 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0 0.00501667 0.00301 0.0160533 0.00903 0.00301 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0.32809 0.995272 1.05084 1.03997 +1.04359 1.04178 1.03816 1.02849 1.02728 1.03091 1.01883 1.02366 +1.02849 1.02185 1.01943 1.01762 1.02789 1.01641 1.01883 1.01218 +1.02004 1.01822 1.01641 1.01822 1.02185 1.01762 1.02487 1.0146 +1.01883 1.0152 1.02124 1.01339 1.01641 1.03151 1.02185 1.02004 +1.01702 1.02064 1.01762 1.01339 1.01943 1.02668 1.02789 1.02064 +1.01883 1.01279 1.02245 1.01762 1.02245 1.0146 1.02426 1.01762 +1.01279 1.02064 1.0146 1.02064 1.01098 1.02185 1.0146 1.0152 +1.014 1.06956 1.1275 1.1429 1.13695 1.1408 1.13835 1.1373 +1.138 1.14115 1.1331 1.10125 1.02426 1.01339 1.02366 1.0146 +1.02245 1.02064 1.01218 1.0152 1.01098 1.0152 1.01339 1.01279 +1.02547 1.02245 1.0146 1.02426 1.01641 1.01822 1.02306 1.02124 +1.0146 1.0297 1.02185 1.00977 1.0146 1.0146 1.01641 1.02004 +1.0152 1.0146 1.01762 1.0146 1.01098 1.02487 1.01339 1.00977 +1.01641 1.01279 1.01581 1.01702 1.02064 1.02668 1.01339 1.0291 +1.02728 1.02728 1.02064 1.02366 1.02849 1.01883 1.01943 1.02064 +1.02426 1.02306 1.02849 1.03574 1.03091 1.03997 1.04238 1.04722 +1.05446 0.988024 0.317053 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.0100333 0.00903 0.00301 0 0 0 0.00301 +0.00501667 0.00401333 0.00802667 0.00401333 0.00100333 0.00401333 0.00602 0.00100333 +0 0 0 0 0 0 0 0 +0 0.00702333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0 0 0 0 0 0.00301 0 0 +0 0 0 0 0.00401333 0.00100333 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.0130433 0 0 0 0 0 +0 0 0 0 0.00301 0 0 0 +0 0 0 0 0 0.32508 0.989836 1.05507 +1.03997 1.03574 1.03755 1.0297 1.03755 1.02728 1.02426 1.02728 +1.02366 1.02185 1.01822 1.02064 1.02004 1.02849 1.02185 1.02366 +1.02185 1.0146 1.01943 1.02668 1.0303 1.014 1.01581 1.02426 +1.0146 1.01098 1.01581 1.02185 1.02426 1.01641 1.02245 1.02728 +1.01037 1.01943 1.02124 1.014 1.03212 1.0146 1.0152 1.01702 +1.02728 1.02487 1.02004 1.02124 1.0152 1.00796 1.0152 1.01158 +1.02124 1.0146 1.02124 1.01702 1.01098 1.01702 1.01339 1.01279 +1.04661 1.12435 1.1366 1.1394 1.14325 1.1366 1.13485 1.13765 +1.1366 1.1359 1.1394 1.13695 1.11035 1.01822 1.00796 1.01883 +1.0152 1.01762 1.01822 1.00735 1.02064 1.0303 1.0146 1.02004 +1.02064 1.01702 1.014 1.01339 1.014 1.02426 1.01943 1.02124 +1.01641 1.01641 1.02426 1.02185 1.02487 1.02789 1.02306 1.01943 +1.0146 1.02245 1.01218 1.02185 1.01581 1.01339 1.01822 1.0146 +1.02547 1.02004 1.02245 1.02366 1.02124 1.01822 1.014 1.01762 +1.02185 1.02064 1.02064 1.02426 1.02668 1.02668 1.03151 1.02547 +1.03151 1.03393 1.03453 1.03816 1.03936 1.0442 1.0448 1.05446 +0.979568 0.293977 0 0 0 0 0 0 +0 0 0 0 0 0 0.00501667 0 +0 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0.00301 +0.0160533 0.0100333 0.00602 0.00301 0 0 0 0.00100333 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00200667 0 0 0 0.00501667 +0.00903 0.00200667 0.00200667 0 0 0.00200667 0.00401333 0.00301 +0 0 0.00602 0.00301 0.00802667 0.00802667 0.00100333 0 +0.00602 0.00602 0 0 0 0 0 0 +0.00100333 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0 0.284947 0.970508 +1.05567 1.04601 1.04178 1.0448 1.03393 1.02668 1.01702 1.02668 +1.02306 1.02306 1.02124 1.02547 1.02487 1.02245 1.01822 1.02668 +1.02245 1.02124 1.02004 1.0297 1.02728 1.02185 1.02245 1.02668 +1.02366 1.02728 1.02306 1.014 1.01762 1.01037 1.00916 1.01279 +1.02849 1.02789 1.01822 1.01883 1.03332 1.02306 1.02185 1.01883 +1.014 1.02789 1.01641 1.02547 1.02789 1.02004 1.01762 1.0146 +1.01641 1.02004 1.01339 1.01702 1.01822 1.00977 1.0146 1.02668 +1.11735 1.14325 1.13485 1.1387 1.13485 1.1296 1.138 1.1359 +1.13695 1.1324 1.14115 1.1429 1.1394 1.0757 0.997084 1.00554 +1.01218 1.00977 1.02245 1.01943 1.02366 1.02426 1.02185 1.0152 +1.01641 1.02608 1.01883 1.02004 1.02668 1.01702 1.01581 1.02004 +1.01822 1.02124 1.0303 1.02064 1.0152 1.01702 1.014 1.01883 +1.02366 1.02366 1.01218 1.01581 1.01762 1.01822 1.01581 1.02004 +1.02004 1.01641 1.02306 1.02004 1.02245 1.02306 1.01279 1.02608 +1.02064 1.02064 1.0146 1.02668 1.02426 1.01883 1.02487 1.0291 +1.03151 1.03212 1.03151 1.03876 1.04238 1.05024 1.05567 0.95722 +0.280933 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00602 +0 0 0.00100333 0 0 0 0.00401333 0 +0 0.0100333 0.00903 0 0 0 0 0 +0 0.00100333 0.00301 0.00401333 0.00200667 0 0.00100333 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00702333 0.00401333 0 0 0 0 0 +0 0 0 0 0.00100333 0 0 0 +0.00200667 0 0 0 0 0 0 0.00301 +0 0 0 0 0 0 0.00401333 0 +0 0 0 0 0 0 0.00401333 0 +0 0 0 0 0 0 0 0.205683 +0.886648 1.05084 1.04178 1.03634 1.0297 1.03272 1.03755 1.02728 +1.03091 1.02728 1.02728 1.02426 1.02366 1.02668 1.03091 1.02064 +1.0146 1.01822 1.01883 1.02124 1.00977 1.01339 1.02124 1.01581 +1.0146 1.02064 1.01218 1.01883 1.02124 1.02608 1.02608 1.01641 +1.0146 1.01641 1.01702 1.01943 1.01762 1.01339 1.02004 1.02064 +1.01581 1.0146 1.01762 1.00494 1.01037 1.02185 1.02789 1.0146 +1.01581 1.00916 1.01762 1.01158 1.01581 1.01339 0.997688 1.06473 +1.1324 1.14185 1.1366 1.1331 1.1275 1.1338 1.13555 1.13345 +1.1366 1.1331 1.1338 1.14185 1.1415 1.12015 1.02849 1.00071 +1.00735 1.01098 1.00735 1.00494 1.01943 1.01641 1.014 1.01762 +1.02185 1.014 1.02245 1.02426 1.02124 1.02306 1.02789 1.0146 +1.01762 1.02064 1.00675 1.0146 1.02668 1.02245 1.01098 1.01158 +1.01702 1.02668 1.01943 1.01037 1.01762 1.02426 1.01943 1.02064 +1.02668 1.02366 1.02004 1.0291 1.02487 1.02306 1.02789 1.02668 +1.01883 1.02245 1.02245 1.01339 1.02789 1.02004 1.02547 1.02728 +1.03272 1.04118 1.03876 1.05144 1.04903 1.05205 0.905968 0.205683 +0 0 0 0 0 0 0 0 +0 0.00501667 0.00401333 0 0.01505 0.00501667 0 0.00100333 +0.0110367 0.00802667 0.00401333 0.00702333 0.0110367 0.00200667 0 0.00602 +0.00301 0 0.00200667 0.0100333 0.00602 0.00903 0.00802667 0.00100333 +0 0 0 0 0.00301 0.00401333 0 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0 0 0 0 0 +0.00100333 0 0 0.00501667 0 0 0.00200667 0.00200667 +0 0.00401333 0 0 0.00200667 0.00602 0.00200667 0 +0 0.00301 0.00200667 0 0 0.00200667 0 0 +0.00602 0.00301 0 0 0 0.00501667 0 0 +0 0 0.00200667 0 0 0 0 0 +0.119397 0.747544 1.04118 1.04359 1.03997 1.04359 1.04238 1.03514 +1.03816 1.03634 1.03151 1.03695 1.02789 1.02124 1.0146 1.0303 +1.0303 1.02668 1.02185 1.02608 1.02487 1.02306 1.02547 1.01339 +1.02426 1.02608 1.02004 1.02185 1.02547 1.01762 1.01883 1.02306 +1.02547 1.02245 1.02849 1.01641 1.01581 1.01943 1.02245 1.014 +1.02064 1.02124 1.0291 1.02185 1.02487 1.01943 1.014 1.01822 +1.01822 1.01702 1.01581 1.02185 1.0146 1.02004 1.01339 1.10755 +1.14325 1.145 1.1366 1.13485 1.1352 1.13485 1.13485 1.13205 +1.138 1.1394 1.1345 1.1366 1.1352 1.1366 1.05869 1.01762 +1.01762 1.01218 1.01883 1.00735 1.02124 1.01098 1.0152 1.0146 +1.0146 1.01158 1.02004 1.02004 1.02004 1.02185 1.01943 1.01702 +1.01641 1.02245 1.01762 1.02004 1.02004 1.01883 1.02245 1.01279 +1.01218 1.02064 1.02728 1.02487 1.0152 1.02547 1.00977 1.02124 +1.0152 1.02124 1.014 1.01641 1.02547 1.02064 1.01883 1.02306 +1.02668 1.02426 1.0303 1.02306 1.02306 1.0303 1.02849 1.03151 +1.03634 1.03755 1.04722 1.0593 1.06292 0.80164 0.13545 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0 0 0 0 0 0.00200667 0.00100333 0 +0 0.00200667 0 0 0.00200667 0.00301 0.00401333 0.00301 +0.00301 0 0 0 0 0 0.00100333 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00401333 0.00702333 0.00602 +0 0.00100333 0.00802667 0 0.00401333 0 0 0 +0.00401333 0.00602 0 0.00100333 0.00100333 0 0 0.00802667 +0.00301 0 0 0 0.00100333 0 0 0.00100333 +0 0 0 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0321067 0.49966 1.01158 1.04842 1.04782 1.04842 1.0442 +1.04238 1.03091 1.03091 1.02487 1.02668 1.03151 1.03574 1.02366 +1.02547 1.03151 1.02547 1.02185 1.02849 1.0152 1.02306 1.01883 +1.01943 1.01762 1.01581 1.02547 1.02547 1.02124 1.02426 1.0297 +1.01098 1.02124 1.01943 1.02608 1.02608 1.02366 1.01641 1.02245 +1.02245 1.02124 1.01158 1.0146 1.01883 1.01943 1.00856 1.01218 +1.01822 1.02064 1.014 1.0152 1.00916 1.01037 1.01641 1.12155 +1.1373 1.14185 1.13555 1.13415 1.13345 1.1387 1.1324 1.131 +1.13625 1.14045 1.13695 1.1324 1.13485 1.14542 1.08235 1.01037 +1.01702 1.02064 1.01943 1.0152 1.02668 1.02245 1.01822 1.02487 +1.01702 1.01702 1.01218 1.01641 1.02004 1.02064 1.014 1.0146 +1.01822 1.01943 1.0297 1.02124 1.01641 1.02728 1.02728 1.01943 +1.02004 1.01702 1.01822 1.02668 1.01883 1.0152 1.02547 1.01158 +1.01581 1.02366 1.01581 1.02064 1.01883 1.02306 1.02728 1.01641 +1.01943 1.02366 1.03514 1.03634 1.03212 1.0297 1.03997 1.03695 +1.05084 1.0448 1.04782 1.02547 0.59297 0.06622 0 0 +0 0 0 0 0 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0.00602 0 0 0 0 0 0 0 +0 0 0.00401333 0.00301 0 0.00200667 0.00602 0.00702333 +0.01204 0.00501667 0.00602 0 0 0.00301 0.00501667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0 0 0 +0 0 0.00301 0.00100333 0 0 0.00100333 0 +0.00200667 0 0 0 0 0 0.00602 0.00501667 +0.00702333 0 0 0 0 0 0 0 +0 0 0 0.266887 0.880208 1.05205 1.05205 1.0448 +1.03453 1.03816 1.03816 1.04238 1.03272 1.03151 1.03755 1.02124 +1.02668 1.0303 1.01883 1.02789 1.03091 1.01822 1.01943 1.02426 +1.02608 1.02306 1.02849 1.03272 1.02004 1.01762 1.01702 1.01762 +1.02306 1.01339 1.01641 1.01883 1.02789 1.01822 1.01641 1.01883 +1.02789 1.02064 1.02487 1.01581 1.02064 1.01822 1.02608 1.02124 +1.014 1.01037 1.02245 1.02426 1.014 1.01098 1.01702 1.12715 +1.13835 1.13275 1.14045 1.1373 1.13835 1.1338 1.1338 1.1352 +1.13415 1.13625 1.13695 1.1422 1.14542 1.14918 1.0939 1.00977 +1.00373 1.01037 1.01883 1.0146 1.01279 1.0146 1.01702 1.02124 +1.01702 1.02487 1.02245 1.01581 1.02004 1.01581 1.0146 1.02426 +1.01883 1.02487 1.0146 1.01641 1.02306 1.02547 1.02245 1.01822 +1.03272 1.01037 1.01822 1.01943 1.02245 1.01702 1.02306 1.02245 +1.02728 1.02306 1.01943 1.02728 1.02487 1.02245 1.03453 1.03151 +1.02064 1.02245 1.02789 1.02789 1.03816 1.03212 1.04661 1.04722 +1.05688 1.05446 0.959636 0.377253 0.00702333 0 0 0 +0 0 0 0 0 0 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00903 0.00501667 0.00100333 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0.00802667 0.00802667 0.00501667 0.00301 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00401333 0.00200667 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0.00702333 0.00802667 0 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0762533 0.5418 0.992252 1.05144 +1.04601 1.04359 1.04057 1.03755 1.0291 1.03816 1.02789 1.02426 +1.03755 1.03332 1.03876 1.02668 1.02124 1.02728 1.02245 1.02004 +1.02124 1.02245 1.02064 1.02668 1.02366 1.02728 1.02064 1.01943 +1.02789 1.01883 1.01883 1.02608 1.01339 1.02306 1.02064 1.01762 +1.02004 1.0152 1.01822 1.0146 1.02004 1.01883 1.01943 1.0291 +1.02728 1.02366 1.01822 1.01581 1.01037 1.00554 1.01702 1.12015 +1.14255 1.14255 1.13345 1.12785 1.13275 1.13835 1.1408 1.13765 +1.138 1.1359 1.1338 1.13345 1.1366 1.13695 1.08235 1.00977 +1.01098 1.0146 1.01581 1.0146 1.02124 1.01581 1.02426 1.02306 +1.02487 1.02366 1.02064 1.02064 1.03393 1.02849 1.02124 1.02245 +1.0303 1.02185 1.01822 1.0297 1.02245 1.01641 1.02728 1.02004 +1.03514 1.02245 1.02185 1.02728 1.02306 1.02185 1.03091 1.01822 +1.02004 1.03514 1.02124 1.02849 1.02185 1.02245 1.02185 1.03393 +1.0291 1.03151 1.03574 1.03514 1.04057 1.04903 1.04903 1.05265 +1.03453 0.742392 0.157523 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.01204 +0 0 0.00802667 0.00602 0 0 0.00501667 0.00602 +0.00501667 0.00301 0 0 0 0 0 0.00702333 +0.00301 0 0 0 0.00401333 0.00100333 0.00702333 0.00702333 +0.00301 0.00100333 0 0.00602 0.00602 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00501667 0 0.00100333 0.00100333 0 +0 0 0 0.00200667 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0.00200667 0 0 0 0.00200667 0 0 0 +0 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0.214713 0.753984 +1.0303 1.05869 1.0448 1.04601 1.04601 1.0454 1.04118 1.04299 +1.03453 1.0291 1.02487 1.02306 1.02185 1.01822 1.0291 1.0297 +1.02849 1.02306 1.02608 1.02185 1.02004 1.02668 1.02487 1.02487 +1.01702 1.01822 1.0303 1.0297 1.01581 1.01702 1.01581 1.01702 +1.02004 1.0303 1.02487 1.02728 1.02668 1.02064 1.01943 1.01762 +1.014 1.01883 1.00977 1.01279 1.01822 1.0152 1.01641 1.10405 +1.14185 1.14115 1.13765 1.1394 1.1394 1.13485 1.13555 1.1366 +1.1324 1.14045 1.1338 1.13625 1.1408 1.1415 1.07138 1.01037 +1.01822 1.02185 1.02185 1.01883 1.03212 1.02487 1.0146 1.02245 +1.01581 1.02426 1.02064 1.02306 1.0146 1.0146 1.02306 1.02608 +1.02064 1.0152 1.01762 1.02185 1.02064 1.01762 1.02004 1.02004 +1.02306 1.02547 1.02366 1.02366 1.02064 1.02245 1.02366 1.03514 +1.02728 1.02366 1.02185 1.02789 1.02849 1.03212 1.02789 1.0291 +1.04238 1.04118 1.04118 1.05446 1.05024 1.05748 1.05688 0.95118 +0.383273 0.0321067 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00301 0 0 0 0 0 0 +0 0 0.00501667 0.00301 0.00501667 0.00301 0 0 +0 0.00401333 0 0 0 0 0 0 +0.00100333 0 0.00100333 0 0.00501667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0 0 0 0 0.00501667 0 +0 0 0.00200667 0 0 0.00602 0.00401333 0 +0 0 0 0 0.00100333 0 0 0.00200667 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0130433 +0.292973 0.796488 1.02547 1.0605 1.05386 1.03634 1.03634 1.03272 +1.0297 1.03212 1.03212 1.03695 1.03574 1.0303 1.0303 1.03151 +1.02668 1.0297 1.02849 1.02547 1.03695 1.02789 1.02366 1.02426 +1.02608 1.02185 1.02064 1.0152 1.02185 1.02366 1.02608 1.0297 +1.02366 1.02185 1.01822 1.02185 1.02789 1.02004 1.0146 1.02185 +1.02366 1.01883 1.01943 1.02728 1.01943 1.0152 1.01581 1.07379 +1.1422 1.14325 1.14045 1.13765 1.13625 1.13905 1.13975 1.1359 +1.1373 1.13835 1.1408 1.14465 1.1429 1.12505 1.02608 1.01822 +1.00796 1.02245 1.02004 1.01883 1.02547 1.0152 1.02245 1.02426 +1.02608 1.02185 1.02064 1.02608 1.01943 1.02366 1.02064 1.02668 +1.02366 1.03212 1.02366 1.03091 1.02789 1.02306 1.02668 1.01702 +1.02185 1.02547 1.02547 1.02366 1.01943 1.02124 1.02004 1.0291 +1.0291 1.03695 1.03393 1.03453 1.0297 1.0448 1.03332 1.03212 +1.04118 1.0454 1.04782 1.04782 1.05748 0.991044 0.569893 0.103343 +0 0 0 0 0 0 0 0 +0 0.00100333 0 0.00200667 0 0 0 0 +0 0.00301 0.00501667 0.00401333 0 0.00501667 0 0 +0 0 0 0 0 0 0 0 +0.00301 0 0.00301 0 0.00301 0.00602 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00602 0.00702333 0 0 0 0 0 +0 0 0 0 0.00401333 0.00100333 0 0 +0.00401333 0.01505 0.00602 0 0.00401333 0 0 0 +0 0 0.01204 0.00401333 0 0 0.00602 0 +0 0 0 0 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0 0.01505 0.27692 0.725648 1.00494 1.04722 1.04842 1.04722 +1.04842 1.04118 1.04601 1.03332 1.03695 1.0297 1.03876 1.0297 +1.03212 1.03453 1.03091 1.02728 1.0297 1.02366 1.02426 1.02426 +1.0303 1.0291 1.02487 1.0303 1.02728 1.0297 1.02487 1.02426 +1.02004 1.02426 1.02789 1.02124 1.02306 1.02728 1.03212 1.02608 +1.02124 1.02124 1.02426 1.02487 1.02245 1.02004 1.01581 1.02608 +1.12155 1.14115 1.145 1.13975 1.1443 1.1352 1.138 1.13975 +1.1422 1.14185 1.1436 1.1394 1.1436 1.08445 1.01037 1.02185 +1.02004 1.02487 1.02124 1.01943 1.02245 1.02487 1.01943 1.01943 +1.02245 1.02668 1.02426 1.02487 1.02547 1.02728 1.02547 1.01883 +1.02004 1.01581 1.03332 1.02064 1.02004 1.0291 1.03091 1.02668 +1.01943 1.02487 1.0297 1.02547 1.02608 1.02728 1.02487 1.0297 +1.02185 1.02668 1.03453 1.0442 1.03695 1.04178 1.03514 1.05144 +1.05386 1.0599 1.06292 0.998292 0.62776 0.175583 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00602 0 0 0 0 0.00200667 +0 0 0 0 0 0 0.00200667 0 +0 0 0.00200667 0 0 0 0 0 +0 0 0 0.00903 0.00301 0 0 0.00301 +0 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00501667 0.00301 +0 0 0 0 0 0 0 0 +0.00501667 0.00903 0.00602 0 0 0 0 0.00100333 +0 0 0 0 0 0 0 0.00301 +0 0 0 0 0 0 0 0 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.17458 0.528757 0.93608 1.03936 +1.05144 1.05446 1.04722 1.04903 1.04118 1.03936 1.04178 1.03272 +1.03272 1.03151 1.03574 1.03091 1.03695 1.03151 1.02789 1.0303 +1.0297 1.0291 1.02849 1.02426 1.02426 1.0303 1.0146 1.02789 +1.02789 1.03332 1.02728 1.0291 1.02668 1.02245 1.02004 1.02064 +1.02426 1.02789 1.0291 1.01158 1.02124 1.02306 1.02487 1.02124 +1.0599 1.13065 1.14667 1.14325 1.14185 1.14045 1.14751 1.14185 +1.1422 1.1401 1.14835 1.14918 1.1093 1.02789 1.02608 1.0303 +1.02789 1.02245 1.02426 1.02004 1.02668 1.03272 1.0303 1.02789 +1.03151 1.02004 1.02185 1.02668 1.02849 1.02245 1.02849 1.02608 +1.02306 1.03091 1.0291 1.02004 1.02366 1.02366 1.02245 1.03755 +1.02547 1.03453 1.03393 1.02547 1.03332 1.02728 1.03393 1.03574 +1.02608 1.03816 1.03695 1.04299 1.04903 1.05688 1.04782 1.05688 +1.05024 0.962052 0.588957 0.181603 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00401333 0 0 0 +0 0 0 0 0.00301 0.00200667 0 0 +0 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0.00401333 0.00100333 0.00702333 +0.00602 0.00301 0.00702333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00802667 0 0 0 0.00200667 0.00903 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0581933 0.296987 +0.6342 0.96024 1.04238 1.04842 1.04963 1.05205 1.0454 1.03936 +1.03755 1.03574 1.04178 1.03695 1.03816 1.0297 1.03091 1.0303 +1.03272 1.0291 1.03453 1.02789 1.02608 1.03453 1.03876 1.03393 +1.03755 1.03393 1.03091 1.02849 1.02426 1.03091 1.0303 1.03393 +1.03272 1.03091 1.02789 1.02728 1.0291 1.03091 1.0303 1.02608 +1.02245 1.07077 1.12855 1.15378 1.1415 1.1429 1.15295 1.14395 +1.1443 1.14793 1.14395 1.11315 1.04178 1.02245 1.0303 1.02728 +1.03091 1.02668 1.0291 1.03151 1.02547 1.0291 1.03332 1.02728 +1.02426 1.0291 1.02849 1.0297 1.02547 1.03151 1.03151 1.03514 +1.02547 1.0291 1.03091 1.03151 1.02306 1.03272 1.03634 1.03151 +1.03151 1.02547 1.03634 1.03212 1.03816 1.03876 1.04903 1.04722 +1.03695 1.04118 1.04782 1.05084 1.05386 1.0599 1.00977 0.845432 +0.43043 0.11137 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0 +0 0 0 0 0 0 0.00100333 0 +0.00501667 0.00301 0 0 0 0 0.00100333 0 +0 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0.00301 0 0 0 0 0 0 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00802667 0.00802667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0652167 0.244813 0.542803 0.850584 0.992856 1.03514 1.04178 +1.05748 1.05809 1.05326 1.04238 1.04057 1.0454 1.04238 1.04299 +1.03634 1.04178 1.03453 1.03936 1.03695 1.03936 1.03514 1.02608 +1.03332 1.03091 1.02487 1.03936 1.03755 1.03332 1.03695 1.03876 +1.02608 1.03755 1.03574 1.03634 1.03574 1.03272 1.03212 1.0297 +1.02547 1.03453 1.0599 1.1044 1.1289 1.14045 1.1496 1.15211 +1.145 1.12295 1.08655 1.04118 1.02668 1.03574 1.03695 1.03755 +1.03272 1.03453 1.03453 1.03514 1.03393 1.04057 1.04118 1.03151 +1.02487 1.0303 1.03755 1.03332 1.03212 1.03272 1.0303 1.0291 +1.03574 1.03876 1.04238 1.03272 1.03634 1.03453 1.03393 1.03816 +1.04238 1.04238 1.03695 1.04238 1.03816 1.03393 1.05024 1.04963 +1.05265 1.05688 1.04903 1.014 0.867328 0.522737 0.20167 0.0170567 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00903 0 0.00301 0.00301 0 0 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00401333 0.124413 0.302003 0.53879 +0.818384 0.957824 1.0152 1.03755 1.05024 1.05326 1.05144 1.05446 +1.05144 1.04782 1.03876 1.04359 1.04238 1.03876 1.03514 1.03453 +1.0442 1.04359 1.04963 1.03997 1.03816 1.04903 1.03514 1.04238 +1.03514 1.04118 1.04601 1.0442 1.0454 1.03695 1.04601 1.03816 +1.03936 1.03936 1.03936 1.04359 1.06171 1.07675 1.08305 1.08025 +1.06775 1.05084 1.04722 1.03997 1.03634 1.03091 1.03936 1.03695 +1.03876 1.03816 1.04057 1.03936 1.03816 1.03997 1.04057 1.04118 +1.0448 1.04601 1.03695 1.0454 1.0442 1.04118 1.03876 1.03816 +1.04057 1.03695 1.04782 1.03936 1.03634 1.04842 1.0454 1.04178 +1.04118 1.04963 1.0442 1.05688 1.0593 1.04903 1.03151 0.995876 +0.929436 0.681856 0.410363 0.181603 0.0260867 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.05418 0.161537 0.29498 0.461533 0.62776 0.799064 0.914984 +0.96024 0.998896 1.02124 1.02789 1.03936 1.03755 1.03997 1.04903 +1.04057 1.05084 1.0442 1.04238 1.03876 1.04903 1.04782 1.04359 +1.04782 1.05024 1.04782 1.04178 1.04963 1.04661 1.0448 1.0448 +1.05567 1.04299 1.04963 1.04722 1.05144 1.04903 1.04178 1.04661 +1.0454 1.04722 1.04118 1.05326 1.05144 1.04299 1.05326 1.04601 +1.05688 1.05024 1.04238 1.04299 1.04359 1.05084 1.04359 1.05326 +1.04842 1.05628 1.05084 1.03936 1.05205 1.05024 1.05024 1.05688 +1.04782 1.04238 1.04842 1.05205 1.04178 1.03453 1.03272 1.01762 +1.00071 0.97534 0.913696 0.778456 0.617456 0.45451 0.296987 0.130433 +0.0341133 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.04515 0.05117 0.04816 0.05117 0.0531767 0.05117 0.0602 +0.06321 0.0622067 0.0642133 0.0672233 0.0682267 0.06622 0.0732433 0.0903 +0.10836 0.0973233 0.08428 0.0882933 0.113377 0.119397 0.106353 0.103343 +0.112373 0.109363 0.13244 0.118393 0.09933 0.115383 0.118393 0.113377 +0.12341 0.118393 0.118393 0.1204 0.136453 0.14448 0.122407 0.13846 +0.139463 0.130433 0.14147 0.139463 0.134447 0.133443 0.122407 0.143477 +0.118393 0.13846 0.13545 0.10836 0.1204 0.11739 0.125417 0.11438 +0.12943 0.15351 0.140467 0.152507 0.136453 0.115383 0.10535 0.110367 +0.0882933 0.09331 0.10535 0.101337 0.109363 0.112373 0.127423 0.16555 +0.211703 0.248827 0.32207 0.375247 0.402337 0.45752 0.470563 0.495647 +0.49665 0.530763 0.5418 0.569893 0.56889 0.603288 0.591967 0.609728 +0.629048 0.636776 0.665112 0.670264 0.681856 0.675416 0.71148 0.703752 +0.707616 0.70504 0.729512 0.721784 0.741104 0.715344 0.739816 0.770728 +0.770728 0.760424 0.78232 0.777168 0.786184 0.78876 0.78876 0.792624 +0.80164 0.770728 0.781032 0.784896 0.759136 0.773304 0.760424 0.76944 +0.768152 0.77588 0.746256 0.742392 0.74368 0.732088 0.712768 0.696024 +0.650944 0.609728 0.57491 0.51471 0.443473 0.37324 0.32809 0.27692 +0.215717 0.154513 0.0832767 0.0551833 0.0301 0.02408 0.02709 0.0280933 +0.0200667 0.02408 0.0250833 0.0260867 0.0220733 0.01505 0.02709 0.0351167 +0.0381267 0.0381267 0.0280933 0.0301 0.0160533 0.01806 0.0220733 0.0160533 +0.0160533 0.01204 0.0170567 0.02107 0.0140467 0.00903 0.00802667 0.01806 +0.0190633 0.0190633 0.00802667 0 0 0 0 0.00401333 +0.0110367 0 0.0100333 0.00802667 0 0.00401333 0 0 +0.00602 0 0 0.00401333 0.00200667 0 0 0 +0 0 0 0 0 0.00501667 0.00903 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.12341 0.173577 0.173577 0.17458 0.175583 0.173577 0.17458 +0.170567 0.178593 0.172573 0.1806 0.1806 0.18662 0.17759 0.181603 +0.179597 0.17458 0.17759 0.182607 0.185617 0.17759 0.179597 0.178593 +0.175583 0.17458 0.166553 0.166553 0.16555 0.167557 0.16254 0.172573 +0.172573 0.163543 0.17157 0.15652 0.16856 0.166553 0.15351 0.15953 +0.149497 0.136453 0.14448 0.154513 0.148493 0.158527 0.16254 0.15953 +0.148493 0.14448 0.13846 0.1505 0.130433 0.152507 0.14749 0.143477 +0.145483 0.15652 0.140467 0.149497 0.145483 0.130433 0.13846 0.133443 +0.125417 0.13545 0.12341 0.113377 0.109363 0.11137 0.115383 0.113377 +0.106353 0.0973233 0.11137 0.101337 0.0923067 0.09933 0.09331 0.0822733 +0.0892967 0.101337 0.0913033 0.09632 0.09632 0.0983267 0.0913033 0.10836 +0.103343 0.0973233 0.11438 0.103343 0.101337 0.110367 0.101337 0.113377 +0.09933 0.104347 0.0983267 0.110367 0.11739 0.101337 0.103343 0.116387 +0.107357 0.116387 0.103343 0.10836 0.12341 0.109363 0.119397 0.113377 +0.115383 0.103343 0.118393 0.122407 0.112373 0.12341 0.11739 0.122407 +0.1204 0.11739 0.0983267 0.110367 0.100333 0.113377 0.121403 0.10836 +0.110367 0.115383 0.115383 0.103343 0.107357 0.106353 0.101337 0.104347 +0.103343 0.12642 0.12341 0.116387 0.127423 0.134447 0.139463 0.134447 +0.14147 0.131437 0.136453 0.15953 0.15351 0.139463 0.14749 0.14749 +0.161537 0.178593 0.17157 0.175583 0.16254 0.14448 0.157523 0.178593 +0.167557 0.178593 0.191637 0.175583 0.173577 0.16555 0.15351 0.16856 +0.16856 0.16856 0.172573 0.163543 0.142473 0.151503 0.146487 0.14448 +0.1505 0.14749 0.137457 0.143477 0.14448 0.1505 0.142473 0.12642 +0.142473 0.134447 0.1204 0.11739 0.122407 0.11438 0.09632 0.09632 +0.0973233 0.0923067 0.100333 0.0953167 0.0862867 0.0913033 0.0471567 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.106353 0.14448 0.14448 0.145483 0.148493 0.151503 +0.157523 0.151503 0.157523 0.148493 0.145483 0.15351 0.152507 0.158527 +0.146487 0.151503 0.151503 0.155517 0.14749 0.146487 0.13846 0.137457 +0.140467 0.133443 0.13846 0.146487 0.146487 0.13545 0.140467 0.137457 +0.13846 0.136453 0.143477 0.154513 0.154513 0.136453 0.146487 0.140467 +0.13846 0.140467 0.143477 0.151503 0.152507 0.14448 0.14749 0.13846 +0.14147 0.142473 0.143477 0.133443 0.134447 0.13545 0.139463 0.127423 +0.142473 0.140467 0.13244 0.145483 0.12642 0.125417 0.140467 0.133443 +0.12341 0.124413 0.127423 0.124413 0.12943 0.122407 0.127423 0.124413 +0.115383 0.113377 0.110367 0.110367 0.112373 0.0913033 0.109363 0.11137 +0.121403 0.110367 0.11137 0.09933 0.0943133 0.10234 0.107357 0.09632 +0.103343 0.0973233 0.106353 0.110367 0.103343 0.0943133 0.100333 0.106353 +0.101337 0.104347 0.0973233 0.10234 0.09331 0.106353 0.104347 0.104347 +0.101337 0.11137 0.09933 0.09632 0.10535 0.103343 0.10234 0.09933 +0.119397 0.109363 0.110367 0.106353 0.1204 0.110367 0.104347 0.09933 +0.10535 0.101337 0.103343 0.10535 0.09933 0.103343 0.09632 0.100333 +0.104347 0.106353 0.103343 0.107357 0.0983267 0.101337 0.101337 0.10535 +0.112373 0.103343 0.119397 0.118393 0.11438 0.11739 0.12943 0.12642 +0.128427 0.12642 0.119397 0.12943 0.127423 0.140467 0.1505 0.13846 +0.134447 0.131437 0.146487 0.148493 0.1505 0.13846 0.145483 0.137457 +0.15351 0.152507 0.151503 0.154513 0.15351 0.1505 0.15351 0.151503 +0.16254 0.157523 0.148493 0.15351 0.155517 0.14448 0.152507 0.164547 +0.152507 0.152507 0.15652 0.145483 0.14749 0.146487 0.167557 0.167557 +0.145483 0.15953 0.167557 0.164547 0.1505 0.167557 0.187623 0.16856 +0.16856 0.17458 0.17458 0.1806 0.17157 0.13244 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0943133 0.139463 0.14749 0.140467 0.148493 +0.143477 0.137457 0.145483 0.14448 0.14448 0.146487 0.148493 0.142473 +0.152507 0.148493 0.1505 0.143477 0.130433 0.13244 0.145483 0.14448 +0.134447 0.14147 0.133443 0.130433 0.13545 0.139463 0.13545 0.131437 +0.136453 0.14448 0.14448 0.12943 0.125417 0.136453 0.13244 0.139463 +0.137457 0.1505 0.1505 0.14749 0.149497 0.151503 0.14448 0.15652 +0.13244 0.137457 0.131437 0.14147 0.146487 0.145483 0.152507 0.145483 +0.134447 0.13846 0.131437 0.12341 0.137457 0.13846 0.133443 0.122407 +0.13244 0.136453 0.139463 0.11739 0.137457 0.13244 0.134447 0.127423 +0.118393 0.1204 0.12642 0.121403 0.113377 0.125417 0.13545 0.122407 +0.122407 0.10836 0.110367 0.12341 0.11739 0.125417 0.121403 0.116387 +0.113377 0.119397 0.1204 0.1204 0.12341 0.115383 0.10234 0.116387 +0.121403 0.116387 0.118393 0.103343 0.119397 0.130433 0.112373 0.121403 +0.119397 0.127423 0.127423 0.124413 0.12943 0.1204 0.11739 0.118393 +0.127423 0.12642 0.12642 0.12943 0.119397 0.127423 0.11438 0.10836 +0.124413 0.12341 0.112373 0.10836 0.109363 0.125417 0.11739 0.10836 +0.115383 0.116387 0.12341 0.113377 0.122407 0.110367 0.118393 0.124413 +0.127423 0.118393 0.128427 0.12642 0.133443 0.121403 0.136453 0.130433 +0.13846 0.1505 0.13244 0.14448 0.130433 0.140467 0.149497 0.15652 +0.158527 0.14448 0.139463 0.142473 0.146487 0.142473 0.1505 0.1505 +0.133443 0.151503 0.14448 0.139463 0.1505 0.14749 0.152507 0.151503 +0.136453 0.148493 0.148493 0.15953 0.146487 0.142473 0.13846 0.149497 +0.15351 0.151503 0.151503 0.152507 0.151503 0.145483 0.137457 0.14448 +0.14147 0.139463 0.137457 0.151503 0.158527 0.139463 0.139463 0.160533 +0.15652 0.161537 0.152507 0.164547 0.119397 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.146487 0.137457 0.137457 0.13846 +0.13244 0.148493 0.140467 0.139463 0.151503 0.14749 0.13846 0.146487 +0.148493 0.13846 0.131437 0.13244 0.14749 0.15953 0.151503 0.14448 +0.13244 0.145483 0.140467 0.14749 0.1505 0.124413 0.127423 0.14147 +0.133443 0.134447 0.122407 0.128427 0.139463 0.134447 0.131437 0.139463 +0.14147 0.139463 0.14147 0.137457 0.136453 0.13244 0.14147 0.136453 +0.139463 0.14147 0.145483 0.149497 0.15351 0.1505 0.136453 0.145483 +0.142473 0.14147 0.140467 0.14448 0.145483 0.13846 0.134447 0.131437 +0.137457 0.131437 0.131437 0.128427 0.13846 0.139463 0.125417 0.133443 +0.130433 0.12642 0.133443 0.1204 0.136453 0.121403 0.122407 0.12943 +0.116387 0.12341 0.124413 0.137457 0.116387 0.131437 0.130433 0.127423 +0.12341 0.134447 0.122407 0.12341 0.133443 0.122407 0.122407 0.13545 +0.110367 0.12341 0.133443 0.134447 0.11739 0.131437 0.13846 0.127423 +0.134447 0.13846 0.131437 0.137457 0.130433 0.13545 0.12341 0.12642 +0.12943 0.136453 0.125417 0.134447 0.13244 0.124413 0.127423 0.12943 +0.121403 0.130433 0.125417 0.121403 0.127423 0.1204 0.1204 0.127423 +0.125417 0.125417 0.131437 0.118393 0.13244 0.139463 0.128427 0.143477 +0.136453 0.133443 0.131437 0.146487 0.140467 0.128427 0.14147 0.134447 +0.136453 0.145483 0.14749 0.149497 0.143477 0.146487 0.137457 0.142473 +0.142473 0.14448 0.148493 0.140467 0.143477 0.139463 0.142473 0.155517 +0.140467 0.14749 0.140467 0.14448 0.137457 0.139463 0.137457 0.137457 +0.155517 0.14749 0.134447 0.13846 0.14147 0.157523 0.14749 0.14147 +0.143477 0.148493 0.151503 0.145483 0.149497 0.1505 0.151503 0.15652 +0.1505 0.14448 0.145483 0.137457 0.140467 0.149497 0.14147 0.14749 +0.1505 0.15953 0.155517 0.10836 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0130433 0.14749 0.155517 0.1505 +0.155517 0.146487 0.149497 0.143477 0.139463 0.137457 0.142473 0.146487 +0.134447 0.139463 0.1505 0.151503 0.14749 0.140467 0.136453 0.13846 +0.15351 0.151503 0.142473 0.142473 0.13846 0.14448 0.15652 0.146487 +0.148493 0.133443 0.149497 0.140467 0.133443 0.13846 0.142473 0.136453 +0.13846 0.14448 0.12642 0.12943 0.142473 0.145483 0.143477 0.15652 +0.145483 0.143477 0.1505 0.148493 0.149497 0.14749 0.14749 0.140467 +0.136453 0.14448 0.143477 0.142473 0.134447 0.142473 0.139463 0.13846 +0.146487 0.133443 0.14749 0.142473 0.134447 0.130433 0.146487 0.136453 +0.143477 0.131437 0.13545 0.131437 0.128427 0.133443 0.130433 0.133443 +0.136453 0.127423 0.13244 0.140467 0.125417 0.131437 0.131437 0.131437 +0.12943 0.12642 0.14147 0.13244 0.136453 0.134447 0.128427 0.125417 +0.128427 0.128427 0.13545 0.13244 0.1204 0.133443 0.13545 0.139463 +0.134447 0.131437 0.139463 0.134447 0.12943 0.13846 0.14147 0.119397 +0.149497 0.14147 0.130433 0.149497 0.12943 0.127423 0.127423 0.142473 +0.127423 0.130433 0.137457 0.140467 0.12943 0.131437 0.130433 0.139463 +0.133443 0.130433 0.14147 0.13846 0.143477 0.13846 0.139463 0.13244 +0.134447 0.145483 0.142473 0.130433 0.140467 0.133443 0.125417 0.146487 +0.160533 0.146487 0.143477 0.14448 0.128427 0.145483 0.137457 0.149497 +0.13846 0.133443 0.151503 0.140467 0.136453 0.151503 0.13545 0.146487 +0.137457 0.133443 0.139463 0.14448 0.155517 0.14448 0.14448 0.146487 +0.14749 0.15351 0.157523 0.151503 0.143477 0.14147 0.14448 0.14749 +0.145483 0.14448 0.151503 0.145483 0.152507 0.148493 0.146487 0.145483 +0.151503 0.154513 0.15652 0.15351 0.145483 0.149497 0.146487 0.140467 +0.145483 0.152507 0.16856 0.0200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.02107 0.146487 0.157523 +0.155517 0.167557 0.1505 0.158527 0.151503 0.155517 0.16856 0.163543 +0.15953 0.166553 0.14749 0.152507 0.167557 0.17458 0.173577 0.172573 +0.161537 0.152507 0.15652 0.170567 0.164547 0.157523 0.16254 0.170567 +0.16856 0.17157 0.15652 0.155517 0.166553 0.15953 0.161537 0.151503 +0.161537 0.169563 0.16254 0.16254 0.175583 0.173577 0.16856 0.173577 +0.15351 0.161537 0.169563 0.175583 0.161537 0.146487 0.155517 0.167557 +0.155517 0.16555 0.160533 0.161537 0.160533 0.166553 0.158527 0.146487 +0.155517 0.16555 0.155517 0.15953 0.158527 0.164547 0.158527 0.151503 +0.164547 0.14749 0.15652 0.16555 0.14749 0.166553 0.15652 0.142473 +0.157523 0.15953 0.148493 0.158527 0.170567 0.15351 0.152507 0.15351 +0.163543 0.15351 0.16555 0.161537 0.154513 0.161537 0.161537 0.161537 +0.170567 0.16856 0.163543 0.161537 0.16254 0.167557 0.163543 0.169563 +0.15953 0.170567 0.17157 0.15953 0.158527 0.16856 0.14448 0.160533 +0.179597 0.16254 0.166553 0.163543 0.14749 0.151503 0.161537 0.161537 +0.157523 0.160533 0.173577 0.16856 0.158527 0.158527 0.16254 0.178593 +0.158527 0.170567 0.155517 0.16856 0.16555 0.17157 0.163543 0.170567 +0.16254 0.164547 0.16254 0.16856 0.170567 0.164547 0.15351 0.146487 +0.16254 0.17458 0.16555 0.15953 0.17458 0.152507 0.158527 0.15652 +0.16254 0.166553 0.157523 0.154513 0.142473 0.154513 0.16254 0.15953 +0.16555 0.15652 0.149497 0.1505 0.160533 0.160533 0.15953 0.140467 +0.152507 0.152507 0.151503 0.1505 0.145483 0.170567 0.154513 0.154513 +0.151503 0.14749 0.151503 0.154513 0.148493 0.148493 0.154513 0.154513 +0.151503 0.148493 0.145483 0.148493 0.149497 0.155517 0.16555 0.160533 +0.160533 0.155517 0.0230767 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0190633 0.0822733 +0.08127 0.06321 0.0712367 0.0682267 0.0682267 0.0732433 0.0772567 0.06923 +0.0792633 0.0652167 0.07224 0.0762533 0.0822733 0.07224 0.0682267 0.0441467 +0.0602 0.06622 0.07525 0.07224 0.0652167 0.0702333 0.0672233 0.0652167 +0.06923 0.0642133 0.06622 0.05719 0.0551833 0.06622 0.0531767 0.0591967 +0.0622067 0.06321 0.05719 0.0581933 0.06923 0.0591967 0.0461533 0.0471567 +0.0581933 0.0672233 0.05117 0.0461533 0.0441467 0.0491633 0.0401333 0.0581933 +0.0531767 0.0531767 0.0461533 0.0401333 0.0602 0.04515 0.0441467 0.04214 +0.0531767 0.05418 0.0381267 0.0401333 0.05719 0.04515 0.0351167 0.0431433 +0.0371233 0.03612 0.04816 0.03913 0.0471567 0.0471567 0.0431433 0.0260867 +0.0521733 0.05418 0.0301 0.03612 0.04515 0.0351167 0.0381267 0.04816 +0.0501667 0.04816 0.0461533 0.0521733 0.0461533 0.0531767 0.05418 0.0371233 +0.05719 0.0461533 0.04816 0.0471567 0.06622 0.0471567 0.05418 0.0531767 +0.0491633 0.0561867 0.0602 0.0551833 0.0581933 0.0591967 0.0441467 0.05117 +0.0612033 0.0612033 0.0551833 0.05719 0.05418 0.05117 0.05117 0.0501667 +0.05719 0.0561867 0.06622 0.0591967 0.0642133 0.0682267 0.06321 0.0672233 +0.0702333 0.0732433 0.06923 0.0802667 0.07224 0.0802667 0.07525 0.0903 +0.08428 0.08729 0.0822733 0.0852833 0.0882933 0.10234 0.104347 0.10535 +0.0802667 0.09331 0.10836 0.109363 0.11438 0.11137 0.11438 0.121403 +0.10234 0.10535 0.119397 0.124413 0.124413 0.116387 0.12341 0.110367 +0.12943 0.13846 0.131437 0.130433 0.137457 0.140467 0.145483 0.14147 +0.14147 0.137457 0.1505 0.143477 0.13244 0.142473 0.152507 0.14749 +0.151503 0.157523 0.158527 0.154513 0.16856 0.164547 0.166553 0.157523 +0.151503 0.163543 0.170567 0.169563 0.15953 0.154513 0.163543 0.167557 +0.172573 0.0290967 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.0311033 0.0321067 0.0280933 0.0260867 0.0311033 0.02709 0.0371233 0.0371233 +0.0351167 0.0301 0.0411367 0.03311 0.0321067 0.0160533 0.0250833 0.0351167 +0.04214 0.03913 0.04214 0.0401333 0.03612 0.0301 0.0401333 0.0351167 +0.0250833 0.02709 0.03311 0.0220733 0.0290967 0.03311 0.03913 0.0371233 +0.02709 0.0190633 0.03913 0.0381267 0.0411367 0.02709 0.0321067 0.0280933 +0.0301 0.0250833 0.0260867 0.03311 0.0301 0.0341133 0.0290967 0.0401333 +0.02408 0.02709 0.02709 0.0351167 0.03311 0.0220733 0.01806 0.02709 +0.03913 0.0260867 0.0230767 0.0301 0.0301 0.0190633 0.0200667 0.0260867 +0.0301 0.0260867 0.0341133 0.0280933 0.02709 0.04214 0.02107 0.0321067 +0.02709 0.0280933 0.0280933 0.03913 0.0200667 0.0220733 0.02107 0.0351167 +0.0280933 0.02408 0.0200667 0.02709 0.0230767 0.03311 0.02408 0.0431433 +0.0200667 0.0260867 0.02408 0.0260867 0.01806 0.02709 0.0250833 0.0280933 +0.0220733 0.0230767 0.03913 0.0190633 0.0250833 0.0260867 0.01806 0.0311033 +0.02709 0.0371233 0.0160533 0.01505 0.0311033 0.0311033 0.0321067 0.01204 +0.02709 0.01806 0.0290967 0.0250833 0.0260867 0.03311 0.0321067 0.0230767 +0.03612 0.0301 0.02408 0.0250833 0.0280933 0.0371233 0.0311033 0.0110367 +0.03311 0.0311033 0.02408 0.0290967 0.02408 0.0200667 0.04214 0.0461533 +0.0401333 0.0250833 0.0220733 0.0230767 0.0260867 0.0250833 0.0290967 0.0381267 +0.0381267 0.01806 0.03311 0.0290967 0.04214 0.0341133 0.03612 0.0461533 +0.0311033 0.0351167 0.04214 0.0290967 0.0401333 0.03913 0.0301 0.03311 +0.0441467 0.04816 0.02709 0.04816 0.04816 0.03311 0.04816 0.04816 +0.0521733 0.0491633 0.04515 0.04816 0.0401333 0.0521733 0.0521733 0.0622067 +0.0591967 0.0411367 0.0461533 0.0602 0.0581933 0.05719 0.0581933 0.07224 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0170567 0.0250833 0.0341133 0.0250833 0.0341133 0.02408 0.02408 +0.0321067 0.0280933 0.0230767 0.0321067 0.0190633 0.02107 0.0301 0.03913 +0.0311033 0.0371233 0.0250833 0.0290967 0.0290967 0.0290967 0.0351167 0.02107 +0.0260867 0.0301 0.02709 0.0411367 0.02408 0.0260867 0.0260867 0.02709 +0.0431433 0.05418 0.0401333 0.0260867 0.0250833 0.0230767 0.0220733 0.0321067 +0.0351167 0.0200667 0.0280933 0.03311 0.0280933 0.0311033 0.0301 0.0321067 +0.0321067 0.0280933 0.0230767 0.02408 0.0311033 0.02408 0.0311033 0.0341133 +0.03612 0.0200667 0.02709 0.0311033 0.02709 0.0200667 0.0321067 0.0381267 +0.02709 0.0290967 0.0230767 0.0290967 0.0371233 0.0110367 0.02408 0.02709 +0.0341133 0.0260867 0.0260867 0.0311033 0.0260867 0.0290967 0.0301 0.0321067 +0.02107 0.03913 0.0311033 0.0160533 0.0290967 0.0200667 0.0230767 0.03612 +0.0220733 0.0321067 0.02709 0.03311 0.0220733 0.0250833 0.0341133 0.0220733 +0.0301 0.0321067 0.0321067 0.0321067 0.03311 0.0260867 0.0301 0.02107 +0.0290967 0.0311033 0.02408 0.01806 0.0341133 0.02408 0.0381267 0.0190633 +0.03612 0.02107 0.0351167 0.03311 0.0220733 0.0341133 0.0220733 0.02408 +0.03311 0.0280933 0.02408 0.0321067 0.0341133 0.0200667 0.0371233 0.0260867 +0.0341133 0.02408 0.0301 0.02709 0.0280933 0.0170567 0.0311033 0.0250833 +0.0371233 0.0321067 0.0301 0.0371233 0.0220733 0.0290967 0.0290967 0.0220733 +0.0401333 0.0381267 0.0190633 0.0371233 0.0190633 0.0321067 0.03913 0.04214 +0.0401333 0.03612 0.0371233 0.0401333 0.0200667 0.0220733 0.0431433 0.0260867 +0.0160533 0.0371233 0.0311033 0.03311 0.0290967 0.0280933 0.0220733 0.03311 +0.02709 0.04214 0.0280933 0.03913 0.0381267 0.0290967 0.02709 0.0411367 +0.0401333 0.0371233 0.0381267 0.0230767 0.0280933 0.04515 0.0351167 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0200667 0.00602 0.0250833 0.0371233 0.0250833 0.0321067 +0.02107 0.0220733 0.0290967 0.0250833 0.0280933 0.0351167 0.04515 0.0311033 +0.03913 0.0301 0.02709 0.0230767 0.0311033 0.0341133 0.02408 0.0230767 +0.03612 0.0351167 0.0230767 0.0200667 0.0230767 0.0441467 0.0381267 0.0431433 +0.0371233 0.0341133 0.0280933 0.0290967 0.0321067 0.02107 0.03612 0.0220733 +0.03913 0.0170567 0.0381267 0.0351167 0.0491633 0.0381267 0.0260867 0.0351167 +0.0301 0.02107 0.02709 0.0311033 0.0321067 0.0351167 0.0290967 0.0341133 +0.0301 0.0260867 0.0260867 0.03311 0.0220733 0.03612 0.04816 0.03612 +0.0230767 0.0311033 0.0200667 0.0321067 0.0301 0.0311033 0.0321067 0.0321067 +0.0260867 0.0250833 0.0290967 0.03311 0.0351167 0.0351167 0.0280933 0.0260867 +0.0290967 0.03311 0.0301 0.0371233 0.0280933 0.0250833 0.0290967 0.0220733 +0.0321067 0.0341133 0.0341133 0.0280933 0.0220733 0.02709 0.0351167 0.0290967 +0.0311033 0.0280933 0.0260867 0.0260867 0.0301 0.03913 0.02709 0.0411367 +0.03612 0.0311033 0.0260867 0.0341133 0.03311 0.02107 0.0260867 0.0411367 +0.0290967 0.0260867 0.0401333 0.0200667 0.0250833 0.0301 0.0260867 0.02107 +0.0260867 0.0351167 0.0280933 0.0200667 0.0321067 0.0260867 0.02107 0.0301 +0.0301 0.02107 0.0381267 0.0290967 0.0260867 0.0371233 0.0341133 0.0260867 +0.02107 0.0311033 0.02709 0.0351167 0.03612 0.03612 0.03311 0.0290967 +0.0280933 0.0311033 0.02107 0.0230767 0.03311 0.0250833 0.0200667 0.02408 +0.0351167 0.0311033 0.03913 0.03913 0.0351167 0.03612 0.0280933 0.0371233 +0.0351167 0.03612 0.0290967 0.0260867 0.03612 0.0301 0.0301 0.0190633 +0.02107 0.0341133 0.0351167 0.0341133 0.0311033 0.0371233 0.0290967 0.02408 +0.0371233 0.0290967 0.0321067 0.03311 0.0321067 0.0371233 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0301 0.02709 0.0250833 0.0170567 0.0200667 +0.0170567 0.0301 0.02709 0.0351167 0.0341133 0.0381267 0.02107 0.0160533 +0.0321067 0.0250833 0.01806 0.0371233 0.03913 0.0260867 0.02709 0.02709 +0.0371233 0.0230767 0.0260867 0.0381267 0.0371233 0.0431433 0.0290967 0.03311 +0.03311 0.0260867 0.02408 0.0311033 0.02709 0.0280933 0.03311 0.03612 +0.0260867 0.04214 0.03913 0.0411367 0.0280933 0.02107 0.02709 0.0341133 +0.0260867 0.02408 0.0301 0.0411367 0.03612 0.0290967 0.0311033 0.0260867 +0.0260867 0.0260867 0.03311 0.0441467 0.03612 0.0371233 0.0301 0.0301 +0.0250833 0.0160533 0.0321067 0.0260867 0.0381267 0.0371233 0.02408 0.0250833 +0.0250833 0.04214 0.0311033 0.0250833 0.03913 0.0220733 0.03311 0.0250833 +0.03311 0.0290967 0.0351167 0.0351167 0.0230767 0.0351167 0.0321067 0.0230767 +0.0381267 0.0371233 0.03311 0.02709 0.0170567 0.0351167 0.0311033 0.03311 +0.0301 0.0250833 0.03913 0.0280933 0.03311 0.0351167 0.04214 0.02107 +0.03612 0.0371233 0.02107 0.0341133 0.02709 0.0290967 0.02408 0.0401333 +0.0351167 0.0250833 0.0321067 0.0341133 0.0321067 0.01806 0.03913 0.03311 +0.0230767 0.02709 0.04515 0.0311033 0.0220733 0.0311033 0.0351167 0.0311033 +0.03913 0.0230767 0.0220733 0.03612 0.0301 0.0351167 0.02408 0.0401333 +0.0280933 0.0290967 0.0371233 0.0341133 0.0301 0.0381267 0.0290967 0.0290967 +0.03913 0.04214 0.0411367 0.0250833 0.02408 0.0301 0.03311 0.02408 +0.02408 0.0280933 0.0280933 0.0471567 0.0411367 0.03612 0.0381267 0.0220733 +0.0371233 0.0280933 0.0301 0.0290967 0.0311033 0.0381267 0.02709 0.0321067 +0.0230767 0.0321067 0.0280933 0.03311 0.0321067 0.0341133 0.0381267 0.0301 +0.03612 0.0321067 0.0290967 0.0381267 0.03913 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0280933 0.0110367 0.01505 0.0230767 +0.0280933 0.02408 0.0311033 0.0280933 0.0250833 0.01505 0.02408 0.0311033 +0.0321067 0.0311033 0.0351167 0.03612 0.02709 0.0301 0.0290967 0.0280933 +0.03612 0.02107 0.03612 0.0411367 0.0321067 0.0230767 0.0280933 0.0351167 +0.0341133 0.0301 0.02709 0.02709 0.0321067 0.03311 0.0431433 0.03612 +0.0230767 0.0290967 0.0311033 0.03311 0.0301 0.0230767 0.0321067 0.0290967 +0.0260867 0.0311033 0.0441467 0.0290967 0.0160533 0.0200667 0.03612 0.02408 +0.0321067 0.0371233 0.0381267 0.02408 0.03612 0.0341133 0.0301 0.0301 +0.02107 0.0260867 0.0351167 0.0250833 0.03612 0.0290967 0.0311033 0.0250833 +0.0351167 0.0351167 0.02408 0.0401333 0.0351167 0.0260867 0.0321067 0.0280933 +0.0250833 0.02709 0.0341133 0.0280933 0.0280933 0.0411367 0.0311033 0.02709 +0.0471567 0.0230767 0.0290967 0.0381267 0.0381267 0.0220733 0.0321067 0.0220733 +0.0290967 0.0441467 0.02709 0.0200667 0.03311 0.04816 0.02709 0.0230767 +0.0290967 0.04214 0.0280933 0.0280933 0.02709 0.03311 0.0200667 0.0220733 +0.03311 0.03612 0.02408 0.0371233 0.0321067 0.03612 0.0280933 0.0200667 +0.0341133 0.0280933 0.0341133 0.04214 0.0250833 0.0250833 0.0230767 0.0431433 +0.03612 0.0200667 0.0280933 0.0250833 0.0280933 0.0321067 0.0351167 0.0311033 +0.02408 0.0351167 0.0381267 0.0250833 0.0381267 0.0351167 0.03311 0.0250833 +0.0301 0.03913 0.0311033 0.04816 0.0170567 0.02107 0.0280933 0.0311033 +0.0280933 0.0200667 0.0301 0.0311033 0.0311033 0.04515 0.0351167 0.0321067 +0.0301 0.03913 0.03612 0.02709 0.0220733 0.03913 0.0371233 0.0461533 +0.0401333 0.0301 0.02709 0.0341133 0.02709 0.0290967 0.02408 0.02709 +0.0301 0.0351167 0.03913 0.0401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0642133 0.0160533 0.00501667 +0.0140467 0.0190633 0.0200667 0.0190633 0.0200667 0.0290967 0.0341133 0.0301 +0.0290967 0.0311033 0.03913 0.0301 0.0290967 0.0190633 0.03612 0.0260867 +0.0280933 0.0381267 0.03913 0.0301 0.02408 0.0311033 0.04214 0.03612 +0.0230767 0.0230767 0.0321067 0.03311 0.0371233 0.03913 0.0321067 0.02107 +0.03311 0.0401333 0.0351167 0.0290967 0.0321067 0.03612 0.0301 0.0260867 +0.0311033 0.0301 0.0371233 0.02408 0.0311033 0.03913 0.0250833 0.03612 +0.0311033 0.0371233 0.0290967 0.0381267 0.0411367 0.02107 0.02107 0.03311 +0.0220733 0.04214 0.0531767 0.0220733 0.0290967 0.0311033 0.0321067 0.0290967 +0.0200667 0.03612 0.0371233 0.0301 0.02408 0.0381267 0.02709 0.0280933 +0.0260867 0.03612 0.0290967 0.0381267 0.0301 0.0250833 0.0351167 0.0321067 +0.0321067 0.0321067 0.0140467 0.04214 0.03311 0.0301 0.02107 0.0301 +0.0301 0.0471567 0.0220733 0.0260867 0.0351167 0.0321067 0.0290967 0.0311033 +0.02408 0.0341133 0.03913 0.0381267 0.03311 0.0351167 0.01806 0.0321067 +0.01806 0.0501667 0.0301 0.0290967 0.0290967 0.03612 0.0411367 0.0321067 +0.0301 0.0230767 0.0290967 0.0351167 0.0351167 0.0401333 0.02107 0.0290967 +0.0341133 0.0290967 0.0290967 0.0260867 0.03913 0.0230767 0.0471567 0.0260867 +0.03612 0.0311033 0.0260867 0.0301 0.0321067 0.0250833 0.05117 0.0301 +0.02408 0.0321067 0.02107 0.0441467 0.03913 0.0461533 0.0250833 0.0290967 +0.02408 0.0290967 0.0301 0.0301 0.0280933 0.0290967 0.0301 0.0260867 +0.03913 0.0471567 0.04214 0.0371233 0.02709 0.01806 0.0280933 0.0321067 +0.03311 0.0280933 0.0341133 0.03311 0.03913 0.02709 0.0311033 0.0311033 +0.0190633 0.0260867 0.0351167 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.04214 0.12341 0.0311033 +0.0160533 0.01204 0.0230767 0.0160533 0.0130433 0.0250833 0.0260867 0.0290967 +0.0280933 0.0411367 0.0260867 0.0190633 0.0230767 0.0311033 0.0230767 0.0351167 +0.0411367 0.0411367 0.0301 0.0301 0.03612 0.0371233 0.0351167 0.0220733 +0.0260867 0.0220733 0.0371233 0.0381267 0.0301 0.0341133 0.0250833 0.0260867 +0.03311 0.0371233 0.0190633 0.0381267 0.0381267 0.0230767 0.0290967 0.04214 +0.0321067 0.0321067 0.03311 0.0290967 0.02107 0.03612 0.0381267 0.0311033 +0.0311033 0.0371233 0.0280933 0.03311 0.0250833 0.0260867 0.02709 0.0411367 +0.0190633 0.0321067 0.0301 0.0290967 0.02408 0.0311033 0.0381267 0.0371233 +0.0321067 0.0301 0.0381267 0.0311033 0.0280933 0.0250833 0.0301 0.0301 +0.02709 0.0311033 0.0250833 0.03913 0.0321067 0.0351167 0.0341133 0.03913 +0.0280933 0.0311033 0.0250833 0.0381267 0.02408 0.0341133 0.03612 0.0110367 +0.0401333 0.0321067 0.03612 0.0301 0.02709 0.0260867 0.03612 0.0411367 +0.0301 0.02709 0.03311 0.0321067 0.04515 0.0250833 0.0280933 0.0260867 +0.03612 0.0401333 0.0260867 0.0290967 0.0290967 0.0401333 0.0250833 0.04214 +0.04214 0.0250833 0.03311 0.0250833 0.0140467 0.03612 0.0381267 0.0321067 +0.0341133 0.0260867 0.0301 0.0230767 0.0351167 0.0290967 0.0431433 0.0341133 +0.0260867 0.0301 0.02709 0.0311033 0.0321067 0.0280933 0.03612 0.03612 +0.0381267 0.0371233 0.0341133 0.03311 0.0230767 0.0471567 0.05117 0.0260867 +0.03612 0.03311 0.0190633 0.0321067 0.0290967 0.02709 0.03612 0.02709 +0.0321067 0.0220733 0.0311033 0.03311 0.0401333 0.0401333 0.03311 0.03612 +0.0290967 0.0321067 0.02709 0.02408 0.02709 0.03311 0.0170567 0.0220733 +0.0301 0.0160533 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.03311 +0.0581933 0.03913 0.0250833 0.0130433 0.0190633 0.01806 0.02709 0.0170567 +0.0170567 0.0130433 0.0170567 0.0160533 0.0311033 0.0230767 0.0371233 0.02709 +0.0311033 0.0290967 0.0280933 0.0321067 0.0301 0.0351167 0.02709 0.0341133 +0.0220733 0.0351167 0.0401333 0.02709 0.0321067 0.0260867 0.0371233 0.0250833 +0.03913 0.03913 0.0260867 0.0351167 0.0160533 0.0290967 0.0351167 0.0290967 +0.0290967 0.0321067 0.0351167 0.0200667 0.03612 0.0401333 0.0311033 0.02107 +0.0311033 0.0321067 0.0311033 0.0260867 0.0341133 0.0250833 0.0381267 0.03612 +0.03311 0.0441467 0.0260867 0.0341133 0.0220733 0.0301 0.0431433 0.0290967 +0.0280933 0.03311 0.03612 0.03311 0.0280933 0.0321067 0.03311 0.03612 +0.0260867 0.0311033 0.0351167 0.03311 0.0301 0.04214 0.03311 0.0290967 +0.0311033 0.03311 0.0311033 0.0401333 0.0230767 0.03311 0.0321067 0.02709 +0.0381267 0.0280933 0.0371233 0.0321067 0.0230767 0.04515 0.0280933 0.03311 +0.03612 0.04515 0.0250833 0.0341133 0.03913 0.0250833 0.03311 0.02709 +0.0401333 0.0381267 0.0230767 0.02408 0.0290967 0.0250833 0.0321067 0.02709 +0.0290967 0.0351167 0.0431433 0.0230767 0.0290967 0.0250833 0.0220733 0.0301 +0.0341133 0.0301 0.0341133 0.0311033 0.0290967 0.0311033 0.02408 0.0321067 +0.0431433 0.0341133 0.0220733 0.03612 0.0260867 0.0371233 0.0321067 0.0371233 +0.0311033 0.03311 0.02709 0.03612 0.0260867 0.0290967 0.0491633 0.0290967 +0.0290967 0.0311033 0.0471567 0.02709 0.0351167 0.0250833 0.0321067 0.03311 +0.03311 0.03311 0.0321067 0.0250833 0.0301 0.0381267 0.02709 0.0260867 +0.0371233 0.0351167 0.02107 0.0230767 0.0190633 0.01806 0.0311033 0.03913 +0.0351167 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0381267 0.0531767 0.0441467 0.0260867 0.0200667 0.0140467 0.02107 +0.0280933 0.0230767 0.0250833 0.0371233 0.0321067 0.02709 0.0301 0.0170567 +0.0301 0.0301 0.0341133 0.0190633 0.0260867 0.0301 0.0220733 0.02408 +0.0441467 0.03311 0.0351167 0.02709 0.0220733 0.03913 0.0301 0.0381267 +0.0321067 0.02709 0.0250833 0.0301 0.0441467 0.03913 0.03612 0.0290967 +0.0290967 0.0321067 0.02709 0.0341133 0.0401333 0.0301 0.0401333 0.0190633 +0.0321067 0.0301 0.0311033 0.0260867 0.03913 0.0230767 0.0351167 0.0311033 +0.0381267 0.02709 0.0311033 0.0230767 0.03913 0.0311033 0.0301 0.0441467 +0.0230767 0.0341133 0.0371233 0.0321067 0.02709 0.0290967 0.03612 0.03913 +0.02408 0.03913 0.0230767 0.0381267 0.03311 0.03612 0.02107 0.02709 +0.0351167 0.0311033 0.03913 0.0301 0.0381267 0.0250833 0.0280933 0.04816 +0.0220733 0.03612 0.0260867 0.02709 0.0401333 0.0381267 0.02709 0.02709 +0.0381267 0.0311033 0.0321067 0.0371233 0.0311033 0.02709 0.03612 0.0311033 +0.0290967 0.0321067 0.02408 0.03913 0.0250833 0.0371233 0.02709 0.0381267 +0.01806 0.0381267 0.0491633 0.0250833 0.04214 0.0200667 0.0290967 0.0280933 +0.0381267 0.0321067 0.03612 0.0351167 0.0301 0.0341133 0.0190633 0.02709 +0.0351167 0.0280933 0.03612 0.0381267 0.0311033 0.0230767 0.0301 0.0371233 +0.03913 0.03311 0.0290967 0.0321067 0.0220733 0.0341133 0.0411367 0.03612 +0.0401333 0.0250833 0.0260867 0.0371233 0.0341133 0.0250833 0.0230767 0.02709 +0.02709 0.01505 0.0321067 0.03612 0.0200667 0.02709 0.02107 0.0311033 +0.0190633 0.0311033 0.0351167 0.0280933 0.02408 0.03913 0.0551833 0.0561867 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00702333 0.0501667 0.0501667 0.0311033 0.0230767 0.0160533 +0.0190633 0.0200667 0.0321067 0.0381267 0.0290967 0.02709 0.0260867 0.03311 +0.02709 0.0230767 0.01806 0.0250833 0.0280933 0.0311033 0.0311033 0.03311 +0.0321067 0.0341133 0.0280933 0.0250833 0.0351167 0.0371233 0.02408 0.0200667 +0.02709 0.0301 0.0311033 0.0431433 0.0351167 0.0311033 0.02408 0.02408 +0.0280933 0.0371233 0.0290967 0.0401333 0.0351167 0.0290967 0.0341133 0.03311 +0.0311033 0.0280933 0.0351167 0.0280933 0.0280933 0.0311033 0.0371233 0.02709 +0.0351167 0.02709 0.0280933 0.0311033 0.04515 0.0260867 0.0351167 0.0401333 +0.0341133 0.0381267 0.0280933 0.0290967 0.0290967 0.04214 0.0371233 0.02709 +0.0381267 0.0290967 0.0381267 0.03311 0.0280933 0.0260867 0.02408 0.0411367 +0.03311 0.0371233 0.02709 0.0351167 0.03612 0.0301 0.0321067 0.0280933 +0.0321067 0.0311033 0.0311033 0.0301 0.0381267 0.0250833 0.0401333 0.02709 +0.0301 0.03311 0.0381267 0.02709 0.0280933 0.0401333 0.0381267 0.03612 +0.0311033 0.03311 0.0190633 0.0431433 0.0441467 0.0301 0.0250833 0.0301 +0.0301 0.0220733 0.03913 0.0321067 0.0371233 0.0311033 0.03311 0.0381267 +0.02107 0.0301 0.0311033 0.0301 0.03612 0.03311 0.0301 0.0290967 +0.0381267 0.0260867 0.02709 0.0401333 0.0381267 0.0321067 0.0200667 0.02709 +0.03612 0.03612 0.0321067 0.0381267 0.0290967 0.0321067 0.0250833 0.0371233 +0.0461533 0.0280933 0.02408 0.03612 0.0230767 0.0381267 0.0401333 0.0160533 +0.0301 0.02709 0.0170567 0.0250833 0.0371233 0.0321067 0.0311033 0.0321067 +0.01505 0.0220733 0.0200667 0.0381267 0.0591967 0.0862867 0.05418 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0321067 0.0531767 0.0311033 +0.0280933 0.0290967 0.0290967 0.02709 0.0341133 0.0220733 0.0260867 0.0290967 +0.02107 0.0250833 0.0311033 0.0200667 0.0341133 0.0311033 0.0260867 0.0321067 +0.0260867 0.0140467 0.0290967 0.0321067 0.03311 0.0230767 0.03311 0.0341133 +0.0381267 0.0321067 0.0290967 0.0381267 0.0401333 0.02408 0.0321067 0.02709 +0.0381267 0.02709 0.0381267 0.03311 0.0301 0.03311 0.0280933 0.0351167 +0.0301 0.0301 0.03913 0.0280933 0.03913 0.0301 0.02709 0.02709 +0.03612 0.0290967 0.0290967 0.0371233 0.0290967 0.0301 0.03311 0.0301 +0.0290967 0.0290967 0.0311033 0.02709 0.0290967 0.03612 0.0351167 0.0280933 +0.03311 0.0290967 0.0441467 0.0280933 0.02709 0.03612 0.03311 0.0351167 +0.0280933 0.0321067 0.0381267 0.03311 0.0260867 0.0411367 0.0311033 0.0311033 +0.0321067 0.0290967 0.03612 0.03612 0.0381267 0.0301 0.0371233 0.0311033 +0.0341133 0.0321067 0.0381267 0.0280933 0.02107 0.0351167 0.0371233 0.02408 +0.0321067 0.0341133 0.0190633 0.02709 0.0381267 0.0381267 0.0371233 0.0290967 +0.0260867 0.0311033 0.0371233 0.0351167 0.03311 0.0321067 0.03612 0.0260867 +0.0230767 0.0260867 0.0401333 0.03311 0.0280933 0.0351167 0.0411367 0.0230767 +0.0311033 0.0321067 0.0280933 0.0341133 0.0250833 0.0401333 0.03612 0.0230767 +0.0301 0.0381267 0.03311 0.03612 0.0260867 0.0341133 0.0341133 0.02408 +0.0230767 0.03913 0.0280933 0.0280933 0.0250833 0.0100333 0.03311 0.0411367 +0.03311 0.0250833 0.0250833 0.02709 0.0250833 0.0250833 0.0290967 0.0311033 +0.0301 0.01806 0.05117 0.0591967 0.0712367 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.02709 +0.0612033 0.0461533 0.02107 0.0190633 0.0200667 0.00501667 0.02107 0.02408 +0.0290967 0.02709 0.0220733 0.0260867 0.03612 0.0301 0.0250833 0.0260867 +0.0311033 0.0321067 0.0230767 0.02408 0.0260867 0.03311 0.0321067 0.0321067 +0.0301 0.0170567 0.0290967 0.0280933 0.0290967 0.0351167 0.0341133 0.0290967 +0.03612 0.0260867 0.0431433 0.01806 0.0280933 0.0250833 0.03612 0.0351167 +0.0301 0.0220733 0.0290967 0.0401333 0.0301 0.0341133 0.0301 0.0341133 +0.0321067 0.0301 0.0341133 0.0341133 0.0321067 0.03311 0.0371233 0.0290967 +0.0301 0.0290967 0.0381267 0.0250833 0.0381267 0.0260867 0.0371233 0.02709 +0.0301 0.0311033 0.0321067 0.0381267 0.0290967 0.0321067 0.03612 0.0341133 +0.0290967 0.0381267 0.0321067 0.03311 0.0411367 0.0401333 0.02709 0.0321067 +0.03612 0.0280933 0.0321067 0.0321067 0.0280933 0.0311033 0.0341133 0.0301 +0.0321067 0.03913 0.02709 0.03311 0.0301 0.0381267 0.03311 0.0351167 +0.0411367 0.02408 0.0401333 0.0341133 0.02709 0.03311 0.03612 0.03311 +0.0311033 0.0250833 0.03612 0.0341133 0.0311033 0.03612 0.02709 0.0311033 +0.0431433 0.0280933 0.0311033 0.0290967 0.04214 0.0341133 0.0301 0.0371233 +0.03612 0.0290967 0.0230767 0.0341133 0.0280933 0.03913 0.03311 0.0280933 +0.0341133 0.0351167 0.0250833 0.0341133 0.0371233 0.0260867 0.0341133 0.0321067 +0.02709 0.0301 0.0321067 0.0321067 0.0371233 0.0321067 0.01806 0.0230767 +0.0351167 0.03612 0.02408 0.0160533 0.0290967 0.0230767 0.0220733 0.03612 +0.0712367 0.0622067 0.0471567 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0301 0.00802667 0 +0 0.02408 0.06321 0.04214 0.0190633 0.0230767 0.0260867 0.0260867 +0.0160533 0.02408 0.02408 0.02709 0.03612 0.0260867 0.02107 0.0311033 +0.02709 0.02709 0.0290967 0.0381267 0.0290967 0.0401333 0.03612 0.0301 +0.03612 0.0280933 0.0280933 0.0301 0.02709 0.0321067 0.0260867 0.0290967 +0.03612 0.0250833 0.0311033 0.02408 0.0381267 0.03311 0.0290967 0.0311033 +0.0290967 0.0290967 0.0411367 0.0280933 0.02408 0.0371233 0.0290967 0.0280933 +0.03612 0.0411367 0.03913 0.0341133 0.04214 0.0290967 0.02709 0.0401333 +0.0321067 0.02709 0.0311033 0.0200667 0.0371233 0.0381267 0.0351167 0.0381267 +0.02408 0.0321067 0.0290967 0.0290967 0.0381267 0.0301 0.03311 0.0250833 +0.03311 0.04816 0.0230767 0.0311033 0.0321067 0.0321067 0.0351167 0.02709 +0.0351167 0.0290967 0.03612 0.0351167 0.0280933 0.0401333 0.03913 0.0220733 +0.0311033 0.0341133 0.0230767 0.0371233 0.0321067 0.0290967 0.02709 0.0311033 +0.03913 0.0230767 0.03913 0.02709 0.0321067 0.02709 0.0351167 0.0381267 +0.0341133 0.03311 0.0190633 0.0351167 0.0230767 0.04214 0.0441467 0.0260867 +0.0321067 0.0311033 0.0290967 0.0260867 0.0351167 0.03612 0.0280933 0.0341133 +0.03311 0.02709 0.0290967 0.03311 0.0260867 0.0401333 0.0301 0.0371233 +0.0250833 0.0311033 0.0290967 0.0311033 0.0280933 0.02709 0.0280933 0.0260867 +0.0321067 0.0290967 0.0250833 0.03612 0.0351167 0.0311033 0.0250833 0.0200667 +0.01204 0.0301 0.01806 0.0170567 0.0301 0.0491633 0.0612033 0.0622067 +0.03311 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.29799 0.215717 +0.04515 0 0 0 0.04816 0.0672233 0.0401333 0.0160533 +0.0230767 0.0110367 0.02107 0.02107 0.0140467 0.0250833 0.0311033 0.0250833 +0.0190633 0.03311 0.0381267 0.0280933 0.0401333 0.0230767 0.0301 0.0311033 +0.0301 0.0321067 0.0280933 0.02408 0.0401333 0.0341133 0.0321067 0.03612 +0.01806 0.02408 0.03311 0.0351167 0.03612 0.0301 0.02709 0.03913 +0.0341133 0.0250833 0.0250833 0.0290967 0.0311033 0.0341133 0.0280933 0.0321067 +0.0471567 0.0371233 0.0341133 0.0280933 0.02408 0.0190633 0.0401333 0.0371233 +0.0341133 0.0301 0.0351167 0.0371233 0.0280933 0.0341133 0.0321067 0.0250833 +0.0371233 0.03612 0.0301 0.0311033 0.0401333 0.02709 0.0301 0.0351167 +0.0260867 0.0531767 0.0190633 0.03913 0.0371233 0.03913 0.0301 0.0301 +0.0351167 0.0290967 0.0381267 0.0321067 0.0280933 0.0371233 0.03311 0.0401333 +0.0351167 0.03311 0.0220733 0.0381267 0.0351167 0.0351167 0.0321067 0.0321067 +0.0311033 0.0411367 0.0301 0.0341133 0.0280933 0.0311033 0.0260867 0.0341133 +0.0301 0.03913 0.02709 0.0351167 0.03311 0.0431433 0.0260867 0.03311 +0.0200667 0.0341133 0.0260867 0.0260867 0.0341133 0.03913 0.02408 0.0260867 +0.0381267 0.0280933 0.0301 0.04214 0.02408 0.0280933 0.0230767 0.0431433 +0.0230767 0.0250833 0.03913 0.02107 0.0401333 0.02709 0.0311033 0.0190633 +0.0280933 0.0341133 0.0301 0.03612 0.03311 0.0301 0.0280933 0.0290967 +0.02107 0.0260867 0.0381267 0.0521733 0.0642133 0.0602 0.0130433 0 +0.0220733 0.0100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.178593 +0.729512 0.16856 0 0 0 0.03913 0.266887 0.217723 +0.0903 0.03311 0.0250833 0.01204 0.0230767 0.0170567 0.0220733 0.02408 +0.0250833 0.0351167 0.02408 0.0301 0.02709 0.0250833 0.0230767 0.0290967 +0.0230767 0.0280933 0.0311033 0.0441467 0.0311033 0.0341133 0.0220733 0.0170567 +0.0230767 0.02709 0.02408 0.0501667 0.0280933 0.0321067 0.02408 0.03612 +0.03311 0.0280933 0.0250833 0.0371233 0.03311 0.0321067 0.0311033 0.0401333 +0.0341133 0.0280933 0.0290967 0.0160533 0.0301 0.0341133 0.0371233 0.02408 +0.03612 0.0250833 0.0341133 0.0250833 0.0280933 0.03913 0.0301 0.03913 +0.04214 0.0311033 0.0290967 0.0401333 0.0341133 0.0321067 0.0371233 0.03311 +0.0280933 0.03311 0.0311033 0.0321067 0.0311033 0.0290967 0.02408 0.03612 +0.05418 0.02709 0.0351167 0.0311033 0.0351167 0.0290967 0.03913 0.0341133 +0.0160533 0.03913 0.03311 0.0311033 0.0311033 0.0311033 0.0311033 0.03311 +0.0220733 0.0371233 0.0290967 0.0461533 0.0230767 0.0321067 0.02709 0.03311 +0.02709 0.03612 0.0280933 0.0250833 0.0351167 0.0321067 0.0301 0.0321067 +0.0321067 0.0260867 0.0411367 0.0280933 0.03913 0.02709 0.0351167 0.0351167 +0.0260867 0.0351167 0.03311 0.0301 0.0230767 0.04515 0.0200667 0.0371233 +0.0321067 0.0200667 0.0321067 0.0200667 0.03612 0.0301 0.02408 0.02408 +0.0301 0.0371233 0.02107 0.0250833 0.02709 0.02107 0.01806 0.0290967 +0.0401333 0.0852833 0.0612033 0.03612 0 0 0 0.0672233 +0.0100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.29799 0.77588 0.65996 0.248827 0.03311 0 0.0371233 0.197657 +0.320063 0.277923 0.14147 0.04214 0.0220733 0.01204 0.02107 0.0200667 +0.0220733 0.02709 0.02709 0.0250833 0.0200667 0.0290967 0.0260867 0.0250833 +0.02709 0.0190633 0.0351167 0.0341133 0.0290967 0.0301 0.0301 0.0311033 +0.0200667 0.0381267 0.04214 0.0381267 0.0250833 0.02408 0.03311 0.0381267 +0.0290967 0.0260867 0.0381267 0.03612 0.03612 0.0311033 0.0471567 0.0250833 +0.03612 0.02408 0.0341133 0.0321067 0.0381267 0.0311033 0.0260867 0.0260867 +0.04214 0.0381267 0.0280933 0.0301 0.0200667 0.03612 0.0341133 0.0290967 +0.0381267 0.03311 0.0441467 0.0311033 0.0280933 0.0351167 0.0351167 0.03612 +0.02709 0.0411367 0.0290967 0.03612 0.03311 0.0311033 0.0311033 0.03311 +0.0341133 0.02709 0.03311 0.03913 0.03311 0.0381267 0.0371233 0.0260867 +0.0230767 0.0381267 0.0351167 0.0341133 0.02709 0.03913 0.0250833 0.0371233 +0.0381267 0.0341133 0.0351167 0.0311033 0.03612 0.03913 0.0250833 0.0290967 +0.03913 0.0301 0.0290967 0.0230767 0.0371233 0.0371233 0.0341133 0.0250833 +0.0301 0.0220733 0.0311033 0.0250833 0.03612 0.0301 0.0301 0.0351167 +0.0280933 0.03311 0.0311033 0.02709 0.0220733 0.0311033 0.0311033 0.0190633 +0.02408 0.04214 0.0230767 0.0250833 0.0220733 0.03311 0.0301 0.0260867 +0.0200667 0.0220733 0.0290967 0.0130433 0.01806 0.0260867 0.07826 0.176587 +0.30401 0.22575 0.00501667 0 0.02408 0.13545 0.23177 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.635488 1.1009 0.931248 0.407353 0.122407 0.0200667 +0.0471567 0.12341 0.265883 0.32508 0.22274 0.0983267 0.0351167 0.02408 +0.01806 0.02709 0.0110367 0.0230767 0.01505 0.03311 0.0170567 0.0170567 +0.0250833 0.0401333 0.0230767 0.02408 0.02709 0.0290967 0.0301 0.03311 +0.0321067 0.03311 0.0260867 0.0301 0.02107 0.0260867 0.0321067 0.02408 +0.02107 0.0290967 0.02408 0.03913 0.0280933 0.0431433 0.0260867 0.02408 +0.03311 0.0321067 0.0290967 0.02709 0.03913 0.02709 0.0381267 0.0280933 +0.0411367 0.0280933 0.0351167 0.0351167 0.0321067 0.03612 0.0321067 0.0230767 +0.03311 0.03612 0.03913 0.0230767 0.0321067 0.0321067 0.0381267 0.0311033 +0.0280933 0.0431433 0.0280933 0.0250833 0.0341133 0.0301 0.0321067 0.03311 +0.0280933 0.0351167 0.0321067 0.0311033 0.0290967 0.03612 0.03612 0.02107 +0.0311033 0.03311 0.0311033 0.0311033 0.0341133 0.0280933 0.03311 0.02709 +0.0301 0.0381267 0.03612 0.0250833 0.03612 0.0351167 0.0351167 0.0280933 +0.0311033 0.0351167 0.0301 0.0260867 0.03311 0.0321067 0.0311033 0.0260867 +0.0321067 0.0280933 0.02709 0.0280933 0.0321067 0.0301 0.03311 0.0341133 +0.03612 0.0351167 0.0351167 0.0260867 0.0301 0.0200667 0.0301 0.0280933 +0.0230767 0.0371233 0.0290967 0.0321067 0.02408 0.02408 0.0311033 0.02408 +0.0220733 0.02408 0.0200667 0.0411367 0.12642 0.265883 0.345147 0.257857 +0.0953167 0.02709 0.0612033 0.266887 0.703752 0.419393 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.18662 0.931248 1.0981 1.04601 0.675416 +0.271903 0.06622 0.03311 0.0732433 0.205683 0.326083 0.312037 0.17458 +0.06923 0.0230767 0.01806 0.0170567 0.0250833 0.01505 0.0190633 0.02709 +0.0220733 0.0311033 0.0301 0.02709 0.0290967 0.0301 0.03612 0.03913 +0.0250833 0.0311033 0.0290967 0.0260867 0.0351167 0.0280933 0.0321067 0.0371233 +0.0311033 0.0321067 0.0260867 0.0341133 0.0301 0.0321067 0.0280933 0.0301 +0.0280933 0.0341133 0.03311 0.0341133 0.0260867 0.0170567 0.02408 0.0301 +0.02408 0.0290967 0.0290967 0.0321067 0.0311033 0.0311033 0.0351167 0.0321067 +0.03612 0.0371233 0.0301 0.0280933 0.03612 0.0301 0.0311033 0.03913 +0.0311033 0.03612 0.0351167 0.0260867 0.0280933 0.04214 0.0351167 0.0280933 +0.0351167 0.0341133 0.0351167 0.0290967 0.0311033 0.0321067 0.03612 0.0230767 +0.03913 0.0441467 0.0260867 0.03311 0.03311 0.0311033 0.0351167 0.0321067 +0.0280933 0.0301 0.03311 0.0260867 0.03311 0.0371233 0.0321067 0.02709 +0.0290967 0.0290967 0.0341133 0.02709 0.0311033 0.0311033 0.03311 0.0260867 +0.0200667 0.0260867 0.03311 0.0280933 0.0401333 0.0220733 0.0321067 0.0351167 +0.03311 0.0260867 0.0401333 0.0200667 0.0290967 0.0311033 0.02709 0.0301 +0.02107 0.02709 0.0290967 0.0341133 0.02107 0.0301 0.0260867 0.0220733 +0.0321067 0.0862867 0.203677 0.317053 0.298993 0.18361 0.0702333 0.0491633 +0.176587 0.48461 0.971112 0.94514 0.311033 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.22575 0.626472 1.03755 +1.0953 0.971112 0.533773 0.20769 0.0531767 0.0471567 0.133443 0.265883 +0.32809 0.277923 0.13846 0.0551833 0.02408 0.01505 0.0170567 0.01505 +0.02709 0.03311 0.0190633 0.0220733 0.0321067 0.0230767 0.0341133 0.0280933 +0.0280933 0.02408 0.0280933 0.0290967 0.0351167 0.0311033 0.0280933 0.03913 +0.03913 0.0260867 0.0311033 0.0401333 0.0280933 0.0280933 0.03311 0.0260867 +0.0301 0.0341133 0.0371233 0.0220733 0.0371233 0.03311 0.0290967 0.0321067 +0.03311 0.0341133 0.0260867 0.0441467 0.03612 0.02709 0.0371233 0.0351167 +0.0341133 0.0371233 0.0220733 0.0301 0.03913 0.02107 0.0301 0.0341133 +0.0280933 0.0351167 0.0230767 0.0301 0.0341133 0.0301 0.0401333 0.0280933 +0.03612 0.0280933 0.0471567 0.03311 0.02709 0.0321067 0.0381267 0.0311033 +0.0401333 0.03913 0.0280933 0.0301 0.0280933 0.0311033 0.0311033 0.0341133 +0.0280933 0.0351167 0.0290967 0.03311 0.0311033 0.0381267 0.0280933 0.0311033 +0.0321067 0.02107 0.03913 0.0280933 0.02408 0.0371233 0.03311 0.0301 +0.02709 0.0290967 0.0311033 0.0341133 0.0381267 0.02709 0.02408 0.0351167 +0.02107 0.0250833 0.03913 0.0321067 0.0200667 0.0230767 0.01806 0.0311033 +0.0140467 0.01806 0.0200667 0.0260867 0.0160533 0.02709 0.0802667 0.178593 +0.29799 0.32809 0.214713 0.09933 0.0612033 0.1204 0.380263 0.80164 +1.0813 1.0939 0.561867 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.11137 +0.386283 0.819672 1.06836 1.0799 0.924 0.477587 0.185617 0.0602 +0.0521733 0.14448 0.27993 0.32207 0.236787 0.106353 0.0401333 0.0220733 +0.0341133 0.02107 0.01204 0.0190633 0.0260867 0.0311033 0.0250833 0.0301 +0.0260867 0.0250833 0.0220733 0.0290967 0.0290967 0.0220733 0.0321067 0.0301 +0.02408 0.0290967 0.03311 0.0301 0.0280933 0.0280933 0.0341133 0.0220733 +0.0371233 0.0401333 0.02107 0.0341133 0.0351167 0.01806 0.03311 0.0250833 +0.0301 0.0341133 0.02709 0.0351167 0.03311 0.0260867 0.0401333 0.0290967 +0.0401333 0.0321067 0.02709 0.03913 0.0290967 0.0260867 0.0341133 0.03612 +0.0321067 0.0301 0.02107 0.03612 0.0260867 0.03311 0.0321067 0.0280933 +0.0341133 0.0230767 0.0411367 0.0290967 0.0341133 0.0230767 0.0311033 0.0321067 +0.03311 0.03913 0.0311033 0.0290967 0.0341133 0.0301 0.0341133 0.0351167 +0.0301 0.0280933 0.0351167 0.0230767 0.0311033 0.0431433 0.0280933 0.0280933 +0.0401333 0.0200667 0.0441467 0.0301 0.0230767 0.0351167 0.0301 0.0301 +0.0311033 0.0290967 0.0290967 0.0321067 0.0341133 0.02709 0.01204 0.03612 +0.02107 0.0290967 0.0220733 0.0371233 0.0301 0.0190633 0.0170567 0.02408 +0.02107 0.0110367 0.0321067 0.0642133 0.151503 0.278927 0.342137 0.248827 +0.127423 0.0742467 0.1204 0.31605 0.701176 1.02547 1.082 0.96628 +0.485613 0.0943133 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0561867 0.17759 0.458523 0.90468 1.08235 1.07885 0.916272 +0.471567 0.19866 0.0682267 0.07224 0.167557 0.272907 0.33411 0.25886 +0.12341 0.03913 0.01806 0.0280933 0.01806 0.0290967 0.0230767 0.02709 +0.01505 0.0170567 0.0290967 0.0290967 0.0280933 0.03311 0.02709 0.0280933 +0.0290967 0.02408 0.0280933 0.03612 0.02709 0.0260867 0.0301 0.0290967 +0.0381267 0.0311033 0.0230767 0.0371233 0.0260867 0.0290967 0.0381267 0.0260867 +0.0351167 0.02408 0.0321067 0.0371233 0.0290967 0.0321067 0.0321067 0.02408 +0.0311033 0.03612 0.03311 0.0301 0.03913 0.0220733 0.0371233 0.03913 +0.0260867 0.0260867 0.0311033 0.0351167 0.0321067 0.03612 0.0280933 0.0301 +0.0341133 0.03311 0.0301 0.0301 0.0311033 0.02107 0.03612 0.0341133 +0.02709 0.03612 0.0311033 0.03311 0.0321067 0.0301 0.0260867 0.0371233 +0.0341133 0.02408 0.0351167 0.02408 0.0230767 0.0301 0.0321067 0.0341133 +0.0260867 0.0190633 0.0321067 0.0341133 0.0230767 0.0301 0.0230767 0.03311 +0.02408 0.03311 0.0260867 0.0280933 0.0290967 0.03612 0.02107 0.0280933 +0.0250833 0.0260867 0.0170567 0.02709 0.0280933 0.0200667 0.0160533 0.0351167 +0.07525 0.14147 0.269897 0.32508 0.26488 0.15351 0.0822733 0.13545 +0.320063 0.69216 1.01339 1.0841 0.983796 0.584943 0.251837 0.0280933 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0100333 0.04515 0.0852833 0.205683 0.4816 0.925812 +1.0813 1.0883 0.947556 0.53578 0.239797 0.0903 0.0943133 0.17157 +0.298993 0.32207 0.2107 0.0892967 0.0371233 0.0260867 0.0110367 0.0140467 +0.02408 0.0200667 0.0341133 0.0260867 0.0280933 0.0290967 0.03311 0.0260867 +0.0160533 0.03311 0.0280933 0.0311033 0.0280933 0.0301 0.0260867 0.03311 +0.0321067 0.0250833 0.0260867 0.0431433 0.0250833 0.0260867 0.0351167 0.0351167 +0.02709 0.0260867 0.03311 0.0311033 0.0301 0.0381267 0.0220733 0.0260867 +0.0351167 0.0311033 0.0280933 0.03612 0.0341133 0.0290967 0.0301 0.0341133 +0.0230767 0.0341133 0.0290967 0.0280933 0.03612 0.0260867 0.0290967 0.0351167 +0.02408 0.0321067 0.0290967 0.0311033 0.0351167 0.0311033 0.0341133 0.0301 +0.0260867 0.0311033 0.0321067 0.02709 0.0290967 0.0311033 0.0250833 0.0321067 +0.0230767 0.0321067 0.0301 0.0321067 0.0220733 0.01806 0.03913 0.03612 +0.0301 0.0260867 0.0220733 0.03311 0.0381267 0.0341133 0.0190633 0.0250833 +0.0321067 0.02408 0.0301 0.0301 0.0301 0.0160533 0.0220733 0.03311 +0.0200667 0.02709 0.0130433 0.0220733 0.0311033 0.07224 0.17157 0.28294 +0.32508 0.253843 0.14147 0.0943133 0.17157 0.399327 0.744968 1.03212 +1.08235 0.983192 0.616168 0.30702 0.122407 0.0190633 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0130433 0.0381267 0.0672233 0.08127 +0.202673 0.455513 0.84672 1.06654 1.1002 1.014 0.684432 0.348157 +0.15652 0.140467 0.227757 0.31304 0.29799 0.103343 0.0290967 0.0411367 +0.0351167 0.0200667 0.0220733 0.0200667 0.0200667 0.0301 0.0341133 0.0190633 +0.0260867 0.02709 0.0220733 0.02709 0.02408 0.0260867 0.0311033 0.0250833 +0.03913 0.0140467 0.0280933 0.03311 0.02709 0.0200667 0.0260867 0.0341133 +0.0250833 0.0260867 0.0321067 0.0371233 0.0280933 0.02408 0.0301 0.0290967 +0.0341133 0.0280933 0.0301 0.0260867 0.02408 0.0371233 0.02709 0.0220733 +0.0321067 0.0301 0.01806 0.0321067 0.03311 0.02107 0.0311033 0.03311 +0.0230767 0.03612 0.0280933 0.0290967 0.0260867 0.02709 0.0280933 0.0190633 +0.0321067 0.04214 0.03311 0.0290967 0.0311033 0.0411367 0.03311 0.0311033 +0.03311 0.0351167 0.03311 0.0250833 0.02709 0.0230767 0.0260867 0.0381267 +0.0371233 0.0250833 0.02408 0.0260867 0.0280933 0.03311 0.0220733 0.0250833 +0.03311 0.02408 0.0200667 0.0290967 0.02709 0.0220733 0.02408 0.0200667 +0.0200667 0.04214 0.06923 0.16856 0.290967 0.317053 0.236787 0.1505 +0.122407 0.23779 0.50267 0.881496 1.07017 1.08725 0.96024 0.578923 +0.29799 0.12943 0.06622 0.01806 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00802667 0.03612 0.0471567 +0.0561867 0.0612033 0.0672233 0.16254 0.378257 0.744968 1.02668 1.1114 +1.08375 0.928228 0.528757 0.28595 0.196653 0.08428 0 0.0140467 +0.0381267 0.06321 0.05719 0.0301 0.0280933 0.0220733 0.02107 0.0250833 +0.01204 0.0260867 0.0351167 0.02709 0.0250833 0.02709 0.0260867 0.0260867 +0.0341133 0.0160533 0.0250833 0.03913 0.0230767 0.0301 0.0230767 0.0411367 +0.0230767 0.02408 0.0381267 0.0341133 0.02709 0.0311033 0.0260867 0.0321067 +0.03612 0.0311033 0.0321067 0.0341133 0.0280933 0.02709 0.0311033 0.01806 +0.0371233 0.02709 0.02408 0.0371233 0.0230767 0.0321067 0.0341133 0.0230767 +0.0280933 0.0260867 0.0280933 0.0311033 0.0311033 0.0311033 0.0401333 0.0230767 +0.0301 0.0341133 0.0290967 0.0250833 0.0290967 0.0371233 0.02408 0.0290967 +0.0301 0.0290967 0.0371233 0.02408 0.02408 0.0250833 0.0290967 0.0220733 +0.0301 0.0321067 0.02709 0.0301 0.0250833 0.02107 0.0290967 0.01806 +0.0260867 0.0230767 0.0220733 0.02408 0.0311033 0.0321067 0.0531767 0.0551833 +0.0321067 0.04214 0.20769 0.250833 0.17458 0.203677 0.38829 0.706328 +1.01279 1.0988 1.07077 0.876344 0.4816 0.239797 0.103343 0.0702333 +0.0531767 0.0311033 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0100333 +0.0471567 0.0521733 0.0622067 0.06622 0.0531767 0.05418 0.10836 0.265883 +0.55384 0.949368 1.09355 1.1191 1.06232 0.842856 0.48762 0.22575 +0.0772567 0.0230767 0.01204 0.0290967 0.0501667 0.0581933 0.0531767 0.0441467 +0.0250833 0.02709 0.0200667 0.0220733 0.0250833 0.02107 0.02408 0.0220733 +0.0280933 0.01204 0.03612 0.0351167 0.0170567 0.0260867 0.02408 0.0341133 +0.0290967 0.0230767 0.0321067 0.0280933 0.0220733 0.0290967 0.0321067 0.0190633 +0.03612 0.0230767 0.02107 0.04515 0.0220733 0.03311 0.0220733 0.03311 +0.0321067 0.0341133 0.03311 0.0260867 0.02709 0.0290967 0.0381267 0.0260867 +0.0301 0.0311033 0.0220733 0.0381267 0.0220733 0.0190633 0.0301 0.0371233 +0.0260867 0.0321067 0.0290967 0.0290967 0.0260867 0.0250833 0.0280933 0.0260867 +0.0301 0.02107 0.0321067 0.0200667 0.0190633 0.0190633 0.0341133 0.0230767 +0.0280933 0.02107 0.0290967 0.0190633 0.0250833 0.01505 0.0200667 0.02107 +0.0230767 0.0321067 0.05418 0.0622067 0.0461533 0.0441467 0.0250833 0.00100333 +0.03913 0.15351 0.354177 0.661248 0.980776 1.0974 1.10335 1.0146 +0.702464 0.375247 0.169563 0.08428 0.0612033 0.0642133 0.05719 0.0401333 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0170567 0.0602 0.0531767 0.0732433 0.07224 0.05719 0.0471567 +0.04515 0.0551833 0.14749 0.356183 0.658672 0.994064 1.1093 1.1191 +1.07258 0.899528 0.534777 0.293977 0.130433 0.0491633 0.02709 0.04515 +0.0652167 0.06622 0.0501667 0.0280933 0.0351167 0.0260867 0.0230767 0.0170567 +0.0220733 0.0110367 0.0301 0.02709 0.0190633 0.0190633 0.0260867 0.0200667 +0.0220733 0.0190633 0.0280933 0.0230767 0.02408 0.0280933 0.02709 0.02709 +0.0260867 0.02709 0.02408 0.0341133 0.0230767 0.02709 0.0200667 0.0280933 +0.02408 0.0290967 0.02709 0.0200667 0.02709 0.02408 0.0301 0.0260867 +0.0190633 0.0301 0.0220733 0.0290967 0.0351167 0.01505 0.0290967 0.0341133 +0.0190633 0.01806 0.0220733 0.0301 0.02709 0.0200667 0.0290967 0.0290967 +0.0321067 0.01505 0.02709 0.02107 0.02107 0.0170567 0.02408 0.0160533 +0.0170567 0.02408 0.0220733 0.0301 0.0411367 0.0371233 0.0672233 0.0852833 +0.0712367 0.0411367 0.02709 0.03311 0.0702333 0.200667 0.41538 0.707616 +0.997688 1.09915 1.1121 1.06352 0.849296 0.477587 0.21973 0.0943133 +0.04816 0.0602 0.0612033 0.0672233 0.05117 0.0531767 0.0100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0290967 0.0732433 0.05418 0.0622067 0.0832767 +0.0702333 0.0642133 0.04515 0.03612 0.0140467 0.0672233 0.169563 0.387287 +0.70504 0.979568 1.09565 1.12785 1.1009 1.00977 0.765576 0.476583 +0.2709 0.142473 0.0682267 0.0591967 0.0521733 0.0652167 0.0561867 0.04214 +0.0341133 0.0230767 0.02709 0.0160533 0.0160533 0.01204 0.0260867 0.01806 +0.0250833 0.0301 0.0130433 0.0290967 0.0250833 0.0170567 0.0341133 0.0250833 +0.0140467 0.0200667 0.02408 0.0220733 0.0280933 0.0170567 0.0260867 0.0230767 +0.0130433 0.0260867 0.0311033 0.0130433 0.0290967 0.0301 0.02107 0.0260867 +0.0250833 0.0250833 0.02709 0.0170567 0.02709 0.0280933 0.0220733 0.0220733 +0.02107 0.01505 0.0230767 0.02709 0.0230767 0.01204 0.0230767 0.0321067 +0.0170567 0.0170567 0.0200667 0.0220733 0.01204 0.01806 0.01204 0.0290967 +0.0401333 0.04214 0.05418 0.0672233 0.0602 0.06321 0.0622067 0.10234 +0.184613 0.35217 0.587953 0.90468 1.06111 1.11665 1.1205 1.05326 +0.86604 0.513707 0.242807 0.101337 0.0471567 0.0301 0.0521733 0.0652167 +0.07525 0.06622 0.0591967 0.0682267 0.02107 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0301 0.0802667 0.0702333 +0.0742467 0.0772567 0.07826 0.0712367 0.0612033 0.0531767 0.0301 0.0230767 +0.03311 0.0591967 0.161537 0.324077 0.52976 0.854448 1.02608 1.1107 +1.1219 1.1023 1.01339 0.826112 0.5719 0.3913 0.2408 0.149497 +0.0943133 0.07224 0.0913033 0.07224 0.0581933 0.0491633 0.0341133 0.0200667 +0.02107 0.01505 0.0140467 0.0200667 0.00903 0.0200667 0.0280933 0.01505 +0.02408 0.0140467 0.0230767 0.02408 0.0230767 0.0160533 0.02107 0.0220733 +0.0190633 0.0280933 0.0220733 0.02107 0.0250833 0.0230767 0.01505 0.0200667 +0.0190633 0.0170567 0.0200667 0.0170567 0.0250833 0.0170567 0.0160533 0.0301 +0.0170567 0.02107 0.0130433 0.0290967 0.0200667 0.0170567 0.0110367 0.0200667 +0.0230767 0.02107 0.0290967 0.04816 0.0591967 0.07525 0.0682267 0.0792633 +0.0973233 0.11137 0.172573 0.287957 0.455513 0.681856 0.946952 1.075 +1.11735 1.12715 1.08935 0.976548 0.706328 0.43043 0.229763 0.100333 +0.0321067 0.0260867 0.0341133 0.0471567 0.06923 0.0832767 0.0712367 0.0672233 +0.0652167 0.0822733 0.0301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00702333 +0.0551833 0.0712367 0.07826 0.0892967 0.0882933 0.0772567 0.0612033 0.0602 +0.0411367 0.0381267 0.0401333 0.0301 0.0301 0.06923 0.10836 0.19866 +0.3311 0.55685 0.800352 0.988024 1.0869 1.11805 1.11805 1.09425 +1.02487 0.924 0.694736 0.516717 0.389293 0.287957 0.2107 0.15953 +0.13545 0.0973233 0.0802667 0.0591967 0.0491633 0.03612 0.0381267 0.0260867 +0.01806 0.0130433 0.0170567 0.0140467 0.0220733 0.02107 0.0170567 0.0220733 +0.02107 0.0220733 0.00602 0.0190633 0.0230767 0.0100333 0.0110367 0.0230767 +0.0130433 0.02107 0.01806 0.0140467 0.0160533 0.0260867 0.0160533 0.0200667 +0.02408 0.0341133 0.0220733 0.0401333 0.0521733 0.0652167 0.07826 0.0913033 +0.10836 0.127423 0.17759 0.238793 0.320063 0.429427 0.567887 0.778456 +0.966884 1.05809 1.1002 1.1205 1.11175 1.07017 0.952992 0.714056 +0.47257 0.290967 0.155517 0.07826 0.0461533 0.0250833 0.0280933 0.03913 +0.05418 0.06622 0.0742467 0.0862867 0.06622 0.07826 0.0732433 0.0602 +0.00702333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0100333 0.0321067 0.0882933 0.08428 0.0822733 0.0882933 0.0892967 +0.0772567 0.0772567 0.0581933 0.0381267 0.0441467 0.04515 0.0441467 0.05117 +0.0612033 0.0652167 0.06923 0.0983267 0.155517 0.250833 0.37625 0.55685 +0.752696 0.954804 1.0442 1.09775 1.12365 1.1219 1.1065 1.07745 +1.01762 0.945744 0.822248 0.684432 0.581933 0.498657 0.419393 0.341133 +0.289963 0.233777 0.196653 0.16555 0.146487 0.121403 0.106353 0.0943133 +0.0802667 0.0802667 0.0732433 0.0702333 0.0792633 0.0672233 0.0742467 0.0802667 +0.08428 0.0913033 0.103343 0.1204 0.140467 0.15953 0.187623 0.227757 +0.27692 0.317053 0.365213 0.440463 0.524743 0.58996 0.733376 0.868616 +0.973528 1.03453 1.08935 1.11525 1.1247 1.1163 1.0876 1.02547 +0.93004 0.6986 0.50267 0.34314 0.226753 0.127423 0.0862867 0.0652167 +0.0551833 0.03913 0.0411367 0.0321067 0.0431433 0.0501667 0.0642133 0.0682267 +0.08729 0.0822733 0.0762533 0.0742467 0.0832767 0.0341133 0.01204 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0341133 0.0581933 0.0903 0.0923067 +0.101337 0.0852833 0.0862867 0.0792633 0.0672233 0.0591967 0.0531767 0.04816 +0.05117 0.05418 0.0652167 0.06321 0.06923 0.0702333 0.0682267 0.0612033 +0.0672233 0.0862867 0.11438 0.184613 0.2709 0.357187 0.476583 0.597987 +0.774592 0.933664 1.00433 1.04782 1.0841 1.10405 1.11385 1.1205 +1.1184 1.1121 1.1072 1.09705 1.0897 1.07815 1.06956 1.05144 +1.03453 1.02426 1.0152 1.00916 1.00614 0.9995 1.00312 1.01037 +1.02245 1.04118 1.04963 1.06715 1.075 1.0848 1.09285 1.10755 +1.11315 1.11875 1.11805 1.1163 1.10475 1.0806 1.04299 0.979568 +0.925208 0.734664 0.57491 0.450497 0.32207 0.230767 0.158527 0.11137 +0.0892967 0.0712367 0.0712367 0.0591967 0.0602 0.0591967 0.0531767 0.0581933 +0.0441467 0.05117 0.05418 0.0622067 0.0732433 0.0852833 0.0913033 0.0822733 +0.0832767 0.0822733 0.0581933 0.04515 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.01204 0.03311 +0.100333 0.0953167 0.103343 0.101337 0.08428 0.0892967 0.08428 0.07224 +0.0591967 0.06622 0.0591967 0.05719 0.06622 0.0762533 0.0762533 0.07224 +0.0802667 0.0712367 0.0702333 0.07525 0.05719 0.0672233 0.0642133 0.0642133 +0.06622 0.08428 0.10535 0.113377 0.15652 0.19866 0.25284 0.315047 +0.366217 0.425413 0.476583 0.545813 0.600997 0.641928 0.71792 0.751408 +0.786184 0.8274 0.863464 0.868616 0.875056 0.8596 0.860888 0.842856 +0.832552 0.799064 0.768152 0.734664 0.661248 0.599993 0.527753 0.473573 +0.405347 0.357187 0.296987 0.239797 0.197657 0.15351 0.122407 0.0882933 +0.0802667 0.06622 0.0581933 0.0642133 0.0622067 0.06622 0.07826 0.06622 +0.0802667 0.0712367 0.0822733 0.0622067 0.0591967 0.0591967 0.05117 0.0602 +0.06622 0.07525 0.09331 0.0923067 0.09632 0.0892967 0.0892967 0.0903 +0.0311033 0.01204 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0.0431433 0.101337 0.106353 0.107357 0.103343 0.09632 +0.08729 0.0862867 0.06923 0.0672233 0.06622 0.0762533 0.0672233 0.06923 +0.08729 0.0882933 0.0822733 0.0882933 0.08127 0.0792633 0.0772567 0.07525 +0.0732433 0.0702333 0.0732433 0.06321 0.0762533 0.06622 0.06622 0.0602 +0.0702333 0.0642133 0.0561867 0.0622067 0.0652167 0.0602 0.07224 0.07525 +0.0672233 0.0732433 0.0742467 0.07224 0.0702333 0.07826 0.0772567 0.06923 +0.0742467 0.07224 0.0682267 0.0682267 0.0712367 0.0591967 0.06321 0.0672233 +0.0622067 0.0702333 0.07826 0.0652167 0.0702333 0.06622 0.0642133 0.0672233 +0.07525 0.07525 0.0772567 0.0772567 0.07826 0.07525 0.0903 0.0742467 +0.07224 0.0712367 0.07525 0.06622 0.06321 0.0732433 0.0772567 0.09331 +0.0943133 0.09632 0.110367 0.10234 0.10234 0.0290967 0.00702333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0110367 0.0441467 0.11438 0.10836 +0.109363 0.103343 0.0973233 0.0832767 0.0892967 0.0772567 0.06622 0.0702333 +0.0822733 0.0762533 0.0802667 0.08729 0.0903 0.0852833 0.0903 0.0913033 +0.0792633 0.0822733 0.0802667 0.08428 0.0822733 0.07826 0.0862867 0.0832767 +0.0862867 0.0792633 0.07826 0.07525 0.0832767 0.0772567 0.0822733 0.0742467 +0.0682267 0.0792633 0.0672233 0.0702333 0.0762533 0.0772567 0.0702333 0.0732433 +0.0802667 0.07525 0.08127 0.0732433 0.0903 0.0772567 0.08428 0.0882933 +0.0762533 0.0792633 0.08428 0.0732433 0.08127 0.0732433 0.0892967 0.0882933 +0.0953167 0.0852833 0.0983267 0.08428 0.0862867 0.0852833 0.08428 0.0792633 +0.06923 0.0672233 0.0772567 0.0832767 0.0862867 0.09933 0.09933 0.10535 +0.106353 0.10234 0.0401333 0.00802667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0100333 +0.0491633 0.08127 0.112373 0.10234 0.104347 0.08729 0.0882933 0.0822733 +0.07826 0.07826 0.07826 0.0903 0.08127 0.0903 0.0923067 0.09632 +0.0923067 0.0943133 0.0903 0.0973233 0.0862867 0.0852833 0.0832767 0.0882933 +0.0852833 0.0852833 0.0822733 0.0862867 0.0913033 0.0882933 0.0882933 0.0903 +0.0822733 0.09632 0.0732433 0.0852833 0.0882933 0.0882933 0.0802667 0.0903 +0.0892967 0.0852833 0.0913033 0.0852833 0.0923067 0.07826 0.0832767 0.0852833 +0.08127 0.07826 0.0943133 0.0953167 0.09632 0.0903 0.09933 0.09933 +0.0923067 0.0913033 0.0913033 0.0792633 0.0822733 0.0822733 0.0862867 0.0822733 +0.0742467 0.0822733 0.100333 0.101337 0.119397 0.11438 0.07826 0.0441467 +0.00802667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.04816 0.0431433 0.11137 0.116387 0.101337 +0.0903 0.09331 0.0903 0.0802667 0.0792633 0.08729 0.08729 0.0852833 +0.0953167 0.0973233 0.0973233 0.10535 0.0953167 0.0953167 0.100333 0.0923067 +0.0913033 0.0923067 0.0903 0.0903 0.0923067 0.0953167 0.0973233 0.08729 +0.100333 0.09632 0.0892967 0.0923067 0.10234 0.0923067 0.0953167 0.09331 +0.0903 0.0882933 0.0892967 0.0953167 0.0892967 0.0802667 0.0913033 0.0903 +0.103343 0.0913033 0.09331 0.10836 0.09331 0.0923067 0.09331 0.09632 +0.08729 0.09933 0.0832767 0.07525 0.0852833 0.0802667 0.09933 0.10234 +0.0983267 0.10535 0.122407 0.04214 0.0501667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.04515 +0.03913 0.0832767 0.10836 0.09632 0.0903 0.08729 0.0832767 0.0832767 +0.0903 0.08729 0.0903 0.103343 0.0923067 0.0983267 0.100333 0.104347 +0.0923067 0.0973233 0.0983267 0.09331 0.09933 0.09632 0.09933 0.0943133 +0.0983267 0.09632 0.100333 0.09331 0.100333 0.0973233 0.10234 0.09331 +0.0913033 0.0882933 0.0903 0.0983267 0.09331 0.103343 0.101337 0.100333 +0.10234 0.09933 0.0953167 0.100333 0.0943133 0.08729 0.0953167 0.0913033 +0.0852833 0.0973233 0.0882933 0.09331 0.09632 0.0973233 0.0792633 0.0491633 +0.0411367 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.04214 0.0431433 0.06321 0.100333 +0.107357 0.0943133 0.100333 0.100333 0.0943133 0.0983267 0.10836 0.10234 +0.09632 0.107357 0.110367 0.0953167 0.112373 0.0983267 0.100333 0.0983267 +0.0882933 0.100333 0.0953167 0.0892967 0.0943133 0.100333 0.0973233 0.0913033 +0.0953167 0.0953167 0.10836 0.101337 0.104347 0.10234 0.10234 0.104347 +0.0882933 0.0983267 0.09933 0.0953167 0.0973233 0.09331 0.0983267 0.0953167 +0.104347 0.0712367 0.03913 0.0401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0431433 0.0441467 0.0431433 0.0401333 0.1204 0.112373 +0.116387 0.116387 0.118393 0.106353 0.124413 0.10535 0.115383 0.115383 +0.100333 0.107357 0.107357 0.0913033 0.104347 0.110367 0.107357 0.106353 +0.107357 0.110367 0.116387 0.107357 0.11739 0.112373 0.112373 0.119397 +0.109363 0.109363 0.04515 0.0401333 0.0431433 0.04515 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 \ No newline at end of file diff --git a/examples/extended/medical/DICOM/14196633.dat b/examples/extended/medical/DICOM/14196633.dat deleted file mode 100644 index b9d455a009..0000000000 --- a/examples/extended/medical/DICOM/14196633.dat +++ /dev/null @@ -1,4 +0,0 @@ -Rows,columns(#): 512 512 -PixelSpacing_X,Y(mm): 0.976562 0.976562 -SliceThickness(mm): 3.000000 -SliceLocation(mm): -27.000000 diff --git a/examples/extended/medical/DICOM/14196633.g4 b/examples/extended/medical/DICOM/14196633.g4 deleted file mode 100644 index 7482722e25..0000000000 Binary files a/examples/extended/medical/DICOM/14196633.g4 and /dev/null differ diff --git a/examples/extended/medical/DICOM/14196633.g4dcm b/examples/extended/medical/DICOM/14196633.g4dcm new file mode 100644 index 0000000000..18dc995fe4 --- /dev/null +++ b/examples/extended/medical/DICOM/14196633.g4dcm @@ -0,0 +1,8464 @@ +10 +0 Air +1 LungInhale +2 LungExhale +3 AdiposeTissue +4 Breast +5 Water +6 Muscle +7 Liver +8 TrabecularBone +9 DenseBone +256 256 1 +-250 250 +-250 250 +-28.5 -25.5 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 2 3 4 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 3 3 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 3 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 5 6 6 6 6 6 6 6 6 6 6 5 5 5 6 6 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 6 6 6 6 6 6 6 5 4 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 6 6 6 6 6 6 6 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 6 6 6 6 6 6 5 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 5 6 6 6 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 6 6 6 6 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 6 6 6 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 6 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 7 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 4 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 4 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 6 6 6 6 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 5 5 6 6 5 6 6 6 6 6 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 6 6 6 5 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 6 6 6 6 5 6 6 6 6 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 5 6 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 6 6 6 5 5 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 3 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 5 5 6 5 6 6 5 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 6 6 5 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 5 6 5 5 6 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 6 6 6 5 5 6 5 5 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 6 6 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 6 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 5 6 6 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 5 5 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 5 3 2 2 3 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 2 2 1 2 2 2 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 6 4 2 1 0 0 0 0 1 2 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 2 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 3 1 0 0 0 0 0 0 0 0 1 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 2 2 2 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 1 0 0 0 0 0 0 0 0 0 0 1 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 2 1 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 2 1 1 1 1 1 1 2 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 2 0 0 0 0 0 0 0 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 2 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 1 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 2 1 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 1 1 1 1 1 1 1 1 2 2 2 1 1 1 2 5 5 5 5 5 4 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 2 1 2 1 1 2 1 2 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 4 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 3 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 3 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 3 5 5 5 5 5 5 5 5 5 5 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 2 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 3 1 1 1 1 2 2 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 1 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 4 2 1 1 1 1 1 1 1 2 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 2 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 2 1 1 1 1 1 1 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 4 5 5 5 5 5 3 2 1 1 1 1 1 1 1 1 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 2 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 0 0 0 0 0 0 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 2 2 2 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 2 2 2 2 3 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 2 2 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 4 2 0 0 0 0 0 0 0 1 2 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 4 2 2 2 2 2 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 3 2 1 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 5 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 6 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 6 6 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 4 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 4 4 6 8 8 6 5 5 4 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 3 4 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 4 6 8 8 9 8 7 4 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 6 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 4 8 8 9 9 9 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 4 4 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 4 4 8 8 9 9 8 8 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 6 8 8 9 9 8 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 4 6 8 9 8 8 8 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 6 8 8 8 9 8 6 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 8 8 8 8 5 4 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 8 9 9 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 6 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 6 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 6 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 6 6 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 5 6 6 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 7 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 6 6 6 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 4 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 8 8 8 8 8 8 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 6 5 6 6 6 6 6 5 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 3 5 5 6 6 6 5 6 6 6 6 6 6 5 5 5 6 6 5 6 6 5 5 5 6 5 6 5 6 5 5 5 5 6 6 6 6 6 6 6 6 5 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 5 5 6 5 6 6 5 6 6 6 6 6 5 6 6 6 6 5 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 3 3 5 5 5 5 5 6 6 6 6 6 6 6 6 5 6 6 6 6 6 6 6 6 5 5 6 6 5 6 6 6 6 6 6 6 6 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 3 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 2 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 3 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 3 2 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 2 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 5 6 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 6 2 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 5 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 6 6 3 2 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 5 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 4 2 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 2 2 6 6 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 2 5 6 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 6 8 6 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 6 7 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 8 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 8 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 8 6 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 6 8 8 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 5 6 8 6 4 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 6 8 8 6 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 4 6 7 8 6 5 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 6 6 8 8 6 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 3 6 6 8 8 6 6 5 3 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 3 5 6 7 8 8 6 5 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 2 3 4 6 6 6 8 8 8 7 6 6 6 6 6 5 5 5 5 4 4 4 5 4 5 5 6 6 6 6 6 6 8 8 8 8 6 6 6 4 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0.00401333 0.00301 0.00301 0.0100333 0.00301 0.00802667 +0 0.00501667 0.00602 0.00903 0 0.00802667 0.00100333 0.0100333 +0.00702333 0.00501667 0.00100333 0.00100333 0.00401333 0.0110367 0.00200667 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0.00903 0.00501667 0 0.00200667 0.00401333 0.00802667 +0.00401333 0.00301 0.00301 0.00200667 0.00100333 0.00602 0.00401333 0.00602 +0 0.00401333 0.00200667 0.0100333 0 0.00602 0 0.00702333 +0.00802667 0.00501667 0 0 0.00401333 0.00501667 0.00301 0.00401333 +0.00802667 0 0.00702333 0.00602 0.00100333 0.00702333 0.00602 0.00802667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.00100333 0.00802667 0.00401333 0 0.00602 +0.00200667 0 0.00301 0.00802667 0.00100333 0.00100333 0 0.0130433 +0.00301 0.00602 0.00301 0 0 0.00401333 0.00602 0.00301 +0.00200667 0 0.00501667 0.00802667 0 0.00100333 0.00301 0.00200667 +0.00602 0.00702333 0 0 0.00903 0 0.00702333 0.00301 +0.00602 0.00100333 0.0100333 0.00200667 0 0.00501667 0.00401333 0.00401333 +0.00602 0.00401333 0.00702333 0.00501667 0.00903 0.00903 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00903 0.00200667 +0.00802667 0 0.00401333 0.00100333 0.00301 0.00903 0 0.00100333 +0.00702333 0.00200667 0.00301 0.00702333 0.00602 0 0.00200667 0.00802667 +0.00100333 0.00501667 0.00301 0 0.00100333 0.00501667 0.00301 0.00401333 +0 0 0.00602 0.00501667 0 0 0.00802667 0.00200667 +0.00903 0.00401333 0 0 0.0100333 0 0.00903 0.00100333 +0.00301 0 0.00903 0.00301 0.00100333 0.00301 0.00401333 0.00301 +0.00401333 0.00301 0.00602 0.00602 0.00301 0.00401333 0.00200667 0.00702333 +0.00903 0.00903 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.01204 0.00602 0.00200667 0.00200667 0.00501667 +0.00401333 0.00301 0 0.00401333 0 0.00903 0.00100333 0 +0.00401333 0.00702333 0 0.00200667 0.00903 0 0.00301 0.00200667 +0.00200667 0.00200667 0.00501667 0 0.00100333 0.00301 0 0.00401333 +0.00301 0 0.00301 0.00501667 0.00100333 0 0.00501667 0.00301 +0.00501667 0.00200667 0 0 0.00903 0 0.00602 0.00301 +0.00301 0.00200667 0.00401333 0 0.00200667 0.00200667 0.00401333 0 +0.00401333 0 0.00903 0.00401333 0.00301 0 0.00200667 0.00903 +0.00602 0.00602 0.00301 0.00903 0.00602 0.00501667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0.00100333 0.00702333 0.00100333 0.00802667 0.00100333 0.00401333 0.00200667 0.00702333 +0.00100333 0.00602 0.00100333 0 0.00401333 0.00301 0.00903 0 +0.00200667 0.00602 0 0.00200667 0.00501667 0 0.00200667 0.00301 +0.00301 0.00301 0.00602 0 0.00501667 0.00602 0 0.00301 +0.00301 0 0.00100333 0.00602 0.00401333 0 0 0.00702333 +0.00401333 0.00602 0 0.00401333 0.00401333 0 0.00401333 0.00602 +0 0.00200667 0.00501667 0 0.00100333 0 0.00301 0 +0.00301 0 0.0100333 0.00100333 0.00401333 0 0.00301 0.00501667 +0.00301 0.00301 0.00501667 0.00401333 0.00501667 0.00501667 0.00802667 0.00401333 +0.0110367 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.0110367 0.00200667 0.00200667 +0 0.00100333 0.00802667 0.00602 0.00401333 0.00200667 0.00401333 0.00401333 +0.00401333 0 0.00301 0 0.00301 0 0.00903 0 +0 0.00802667 0.00100333 0 0.00602 0 0.00401333 0.00401333 +0 0.00301 0.00602 0 0.00401333 0.00501667 0 0.00301 +0.00301 0.00301 0 0.00401333 0.00602 0.00100333 0 0.00903 +0.00501667 0.00602 0 0.00401333 0 0.00200667 0 0.00802667 +0 0.00301 0.00401333 0.00200667 0.00301 0 0.00301 0 +0.00401333 0 0.00802667 0 0.00100333 0 0.00602 0.00200667 +0.00301 0.00200667 0.00301 0.00100333 0.00301 0.00501667 0.00401333 0.00301 +0.00702333 0.00702333 0.00501667 0.00903 0.0130433 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00802667 0.00602 0.00200667 0 0.0130433 0.00200667 0.00401333 +0 0 0.00802667 0.00501667 0.00100333 0 0.00702333 0 +0.00702333 0 0.00401333 0.00301 0 0.00200667 0.00802667 0.00100333 +0 0.00802667 0.00200667 0 0.00501667 0 0.00301 0.00501667 +0.00301 0.00301 0.00501667 0 0.00401333 0.00301 0 0.00200667 +0.00702333 0.00200667 0 0.00301 0.00401333 0.00401333 0 0.00602 +0.00702333 0.00100333 0 0.00401333 0 0.00301 0.00200667 0.00401333 +0.00200667 0.00602 0.00200667 0.00200667 0.00200667 0.00100333 0.00602 0 +0.00702333 0.00200667 0.00401333 0.00200667 0 0 0.00903 0 +0.00301 0.00401333 0 0.00301 0.00301 0.00200667 0.00301 0.00100333 +0.0100333 0.00301 0 0.00401333 0.00903 0.00100333 0.00903 0.00301 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0.00501667 +0 0.00501667 0.00301 0.00501667 0 0.00501667 0.00702333 0.00301 +0 0 0.00501667 0.00702333 0 0 0 0.00702333 +0.00401333 0 0.00401333 0.00301 0 0.00200667 0.00301 0.00100333 +0 0.00401333 0.00602 0 0.00100333 0 0.00401333 0.00100333 +0.00401333 0 0.00200667 0 0.00401333 0.00602 0 0 +0.00401333 0.00301 0 0.00200667 0 0.00802667 0 0 +0.0110367 0 0.00200667 0.00200667 0 0.00200667 0.00301 0 +0.00301 0.00301 0.00100333 0.00100333 0.00200667 0.00301 0.00401333 0 +0.00702333 0.00501667 0.00100333 0.00100333 0 0.00501667 0.00802667 0.00200667 +0 0.00702333 0 0.00702333 0 0.00200667 0.00301 0.00100333 +0.0110367 0 0.00200667 0.00501667 0.00301 0 0.00802667 0.00903 +0.00100333 0.00903 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00602 0.00200667 0.00401333 +0.00100333 0.00501667 0.00100333 0.00802667 0 0 0.00602 0.00501667 +0.00401333 0 0.00200667 0.00802667 0.00200667 0.00401333 0 0.00501667 +0.00602 0 0.00200667 0.00401333 0.00200667 0.00401333 0 0.00200667 +0.00100333 0 0.00802667 0.00200667 0 0 0.00301 0 +0.00602 0 0 0.00401333 0.00401333 0.00702333 0 0 +0.00301 0.00401333 0 0.00401333 0 0.00802667 0 0 +0.00903 0 0.00401333 0 0.00301 0.00301 0.00301 0 +0.00602 0.00100333 0.00401333 0 0.00100333 0.00200667 0.00200667 0 +0.00802667 0.00501667 0 0 0 0.00301 0.00401333 0.00602 +0 0.00602 0.00401333 0.00401333 0 0.00501667 0.00301 0.00200667 +0.00200667 0 0.00200667 0.00401333 0.00100333 0.00200667 0.00301 0.00702333 +0 0.00702333 0.00802667 0.00401333 0.00702333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0.00802667 0.00702333 0 0.00501667 0.00100333 0.00702333 +0 0 0.00702333 0.00200667 0.00200667 0 0.00401333 0.00802667 +0 0 0 0.00100333 0.00702333 0.00702333 0 0 +0.0110367 0 0 0.00301 0.00200667 0.00100333 0 0.00100333 +0.00100333 0 0.00903 0.00100333 0 0 0.00401333 0 +0.00200667 0 0 0.00301 0.00200667 0.00602 0 0 +0.00501667 0.00401333 0.00200667 0.00200667 0 0.00602 0.00100333 0 +0.00602 0 0.00702333 0 0 0.00602 0 0 +0.00501667 0.00100333 0.00401333 0 0.00200667 0 0.00200667 0 +0.00501667 0.00501667 0 0 0.00802667 0.00100333 0.00200667 0.00501667 +0 0.00501667 0.00401333 0.00200667 0 0.00702333 0 0.00301 +0.00200667 0 0.00401333 0 0 0.00401333 0.00301 0.00301 +0.00100333 0.00903 0.00301 0 0.00501667 0.00802667 0.00903 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00301 +0 0.00200667 0.00602 0.00702333 0.00100333 0.00100333 0 0.00301 +0.00702333 0 0.00401333 0.00602 0.00301 0 0.00100333 0.0100333 +0.00100333 0.00401333 0 0.00200667 0 0.0100333 0 0 +0.00802667 0.00200667 0 0.00200667 0.00200667 0 0.00602 0 +0.00301 0 0.00903 0.00100333 0 0 0.00200667 0.00301 +0 0 0.00602 0.00301 0 0.00802667 0.00100333 0 +0.00401333 0.00301 0.00301 0 0 0.00301 0.00401333 0 +0.00702333 0 0.00401333 0.00301 0 0.00501667 0 0 +0.00802667 0.00200667 0.00401333 0 0.00200667 0.00100333 0 0 +0.00100333 0.00802667 0 0 0.00702333 0 0.00200667 0.00200667 +0 0.00401333 0.00301 0.00200667 0.00200667 0.00401333 0.00301 0.00301 +0.00200667 0 0.00501667 0.00200667 0.00100333 0.00401333 0.00802667 0 +0.00301 0.00401333 0.00200667 0.00100333 0.00200667 0.00401333 0.00702333 0.00100333 +0.00802667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00501667 0.00602 0.00301 +0 0.00200667 0.00200667 0.00802667 0 0.00100333 0.00100333 0 +0.00301 0.00501667 0 0.00702333 0.0100333 0 0 0.00802667 +0.00301 0.00100333 0 0 0 0.0100333 0.00401333 0 +0.00100333 0.00401333 0 0.00401333 0 0 0.00602 0 +0.00200667 0.00100333 0.00802667 0.00301 0 0 0.00401333 0 +0 0 0.00401333 0.00200667 0 0.00501667 0.00200667 0 +0 0.00702333 0.00602 0 0.00301 0 0.00602 0 +0.00100333 0 0.00100333 0.00401333 0 0.00301 0.00100333 0 +0.00301 0.00401333 0 0.00200667 0 0.00301 0.00100333 0 +0.00401333 0.0100333 0 0 0.00602 0 0.00100333 0.00401333 +0.00200667 0.00200667 0.00602 0 0.00501667 0 0.00602 0.00501667 +0 0 0.00100333 0.00401333 0.00100333 0.00702333 0.00501667 0 +0.00200667 0.00301 0.00200667 0 0.00301 0.0100333 0.00100333 0.00200667 +0.00602 0.00100333 0.00802667 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00802667 0 0.00301 0.00602 0.00501667 +0.00401333 0 0 0.00802667 0.00301 0 0.00200667 0.00100333 +0.00401333 0.00602 0 0.00200667 0.01204 0 0.00301 0.00200667 +0.00702333 0.00200667 0 0.00100333 0 0 0.00602 0 +0 0.00301 0 0.00602 0 0 0.00200667 0.00200667 +0 0 0.00602 0.00602 0 0 0.00802667 0 +0 0 0.00301 0.00401333 0.00200667 0.00401333 0 0.00200667 +0 0.00903 0.00100333 0 0.00301 0 0.00802667 0.00501667 +0 0 0.00200667 0.00501667 0.00200667 0.00301 0.00200667 0.00100333 +0.00200667 0.00200667 0 0.00301 0 0.00401333 0.00602 0 +0.00802667 0.00602 0 0 0.00301 0 0 0.00401333 +0 0.00301 0.00100333 0 0.00702333 0 0.0130433 0 +0 0.00301 0 0.00501667 0 0.00903 0.00602 0 +0 0.00401333 0 0 0.00903 0.00301 0.00100333 0.00200667 +0.00301 0.00602 0.00501667 0.00602 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0.00200667 0.00702333 0.00100333 0.00301 0.00501667 0 +0.00602 0 0 0.00100333 0.00401333 0.00301 0 0.00401333 +0.00301 0.00200667 0 0.00702333 0.00301 0 0.00200667 0 +0.00301 0.00200667 0 0.00100333 0 0.00200667 0 0.00501667 +0 0.00100333 0 0.00501667 0.00100333 0 0.00100333 0.00401333 +0 0.00401333 0.00501667 0.00301 0 0.00200667 0.00602 0 +0 0.00702333 0 0.00100333 0.00200667 0.00200667 0 0 +0 0.00802667 0 0 0 0.00100333 0.00301 0 +0.00200667 0 0 0.00501667 0.00100333 0.00200667 0.00200667 0.00200667 +0 0.00501667 0 0.00301 0 0.00401333 0.00602 0 +0.00602 0.00501667 0 0 0.00200667 0 0.00100333 0.00401333 +0 0.00602 0 0.00301 0 0 0.0110367 0 +0.00100333 0.00100333 0.00401333 0 0.00401333 0.00702333 0.00602 0 +0 0.00401333 0 0.00200667 0.00802667 0 0.00100333 0.00200667 +0.00602 0 0 0.00802667 0.00100333 0 0.00702333 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0.00100333 0.00702333 0.00200667 0.00200667 0.00100333 0.00802667 0.00301 0 +0.00401333 0 0.00401333 0.00100333 0.00301 0.00200667 0.00100333 0.00401333 +0 0.00100333 0 0.00802667 0.00100333 0 0.00501667 0 +0.00100333 0.00401333 0 0 0.00200667 0.00401333 0 0.00702333 +0 0.00501667 0 0.0100333 0 0 0.00401333 0.00200667 +0 0.00100333 0.00200667 0.00401333 0 0.00200667 0.00401333 0 +0 0.00401333 0.00301 0 0.00401333 0.00301 0 0 +0.00602 0 0 0.00401333 0 0.00301 0.00702333 0.00301 +0.00100333 0 0 0.00301 0.00200667 0 0.00100333 0.00200667 +0 0.00401333 0 0 0.00100333 0.00401333 0 0 +0.00501667 0.00301 0 0 0 0.00301 0.00301 0.00602 +0 0.00702333 0 0.00401333 0 0 0.00401333 0 +0.00501667 0 0.00401333 0.00200667 0 0.0110367 0.00200667 0 +0.00100333 0.00301 0 0.00401333 0.00501667 0.00602 0 0.00602 +0.00802667 0 0.00401333 0.00602 0 0.00301 0.00903 0.00401333 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00602 0.00401333 0.00401333 +0 0.00802667 0.00903 0.00100333 0 0.00501667 0.00301 0.00200667 +0.00200667 0.00301 0.00301 0.00501667 0.00100333 0.00301 0 0.00602 +0 0.00100333 0 0.00501667 0.00100333 0 0.00100333 0.00200667 +0.00501667 0.00702333 0 0.00100333 0 0.00301 0 0.00802667 +0 0.00802667 0 0.00602 0.00200667 0 0.00401333 0 +0.00100333 0 0.00602 0.00100333 0 0 0.00602 0 +0 0 0.00501667 0 0.00200667 0 0 0 +0.00200667 0.00100333 0 0.00200667 0 0.00100333 0.00401333 0.00200667 +0 0 0 0 0.00702333 0 0.00100333 0.00100333 +0 0.00501667 0 0 0.00200667 0.00401333 0 0 +0.00100333 0.00100333 0.00100333 0 0 0.00301 0.00501667 0.00301 +0 0.00903 0 0.00401333 0 0.00200667 0 0 +0.00200667 0 0 0.00301 0 0.00903 0.00200667 0 +0.00200667 0 0 0.00401333 0.00702333 0 0 0.00903 +0.00100333 0 0.00200667 0.00501667 0 0.00301 0.0110367 0 +0.00501667 0.00702333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00200667 0.00802667 0 +0.00401333 0.00301 0.00501667 0.00401333 0 0.00100333 0.00501667 0.00301 +0 0.00501667 0.00100333 0.00501667 0 0.00401333 0 0.00301 +0 0.00301 0 0.00702333 0.00100333 0.00100333 0.00301 0.00100333 +0 0.00301 0.00100333 0 0.00200667 0 0.00100333 0.00602 +0 0.00602 0 0 0.00702333 0 0.00100333 0 +0.00100333 0.00301 0 0.00401333 0 0.00200667 0.00301 0 +0 0 0.00501667 0.00301 0 0 0.00200667 0 +0 0.00401333 0 0.00100333 0 0.00401333 0 0.00200667 +0.00401333 0.00100333 0 0 0.00702333 0 0.00301 0 +0 0.00401333 0 0 0.00702333 0 0.00200667 0.00200667 +0 0.00602 0 0 0 0.00401333 0.00501667 0 +0.00401333 0.00401333 0 0.00401333 0 0.00301 0 0.00602 +0.00301 0.00200667 0 0.00501667 0 0.00401333 0 0 +0.00501667 0 0 0.00301 0.00702333 0 0.00602 0.00401333 +0.00501667 0 0.00602 0 0 0.00602 0.00501667 0 +0.00802667 0.00100333 0 0.0100333 0.00903 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0.00200667 0.00501667 0.00100333 0.00702333 0 +0.00200667 0.00200667 0.00301 0.00501667 0 0.00501667 0 0.00401333 +0.00100333 0 0.00401333 0.00301 0.00100333 0 0.00401333 0 +0 0.00200667 0 0.00200667 0.00100333 0 0.00602 0.00100333 +0 0 0.00702333 0 0 0 0 0.00200667 +0 0.00602 0 0 0.00501667 0.00100333 0 0.00100333 +0 0.00602 0 0.00802667 0 0 0.00301 0.00301 +0 0 0.00301 0.00501667 0 0.00100333 0.00702333 0 +0.00401333 0.00100333 0.00100333 0 0 0.00702333 0 0 +0.00401333 0.00301 0 0.00501667 0.00200667 0 0.00501667 0.00100333 +0 0 0 0.00100333 0.00401333 0 0.00200667 0.00301 +0 0.00401333 0 0 0 0 0.00501667 0 +0.00602 0 0.00401333 0 0.00200667 0.00301 0 0.00702333 +0.00200667 0.00301 0 0.00903 0 0.00301 0.00401333 0 +0.00301 0 0.00200667 0.00301 0.00401333 0.00100333 0.00301 0.00200667 +0.00802667 0 0.00702333 0 0.00401333 0.00301 0.00100333 0.00100333 +0.00401333 0 0.00100333 0.01505 0 0.00401333 0.00501667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.0110367 0.00501667 0.00200667 0 0.0100333 0 0.00702333 0.00602 +0 0.00602 0.00702333 0.00100333 0.00100333 0.0110367 0 0 +0.00702333 0 0.00802667 0.00301 0.00401333 0 0 0.00401333 +0 0 0 0 0 0.00100333 0.00802667 0.00301 +0 0 0.00200667 0.00301 0 0 0.00100333 0 +0 0.00602 0.00100333 0 0 0.00702333 0 0.00200667 +0 0.00301 0 0.0100333 0 0 0.00200667 0.00200667 +0 0 0 0.00200667 0 0.00200667 0.00401333 0 +0 0 0.00401333 0.00100333 0 0.00200667 0 0 +0.0100333 0.00401333 0 0.00903 0 0 0.00702333 0.00100333 +0 0.00100333 0 0.00602 0 0.00301 0.00401333 0.00200667 +0 0.00401333 0 0 0.00200667 0 0 0 +0.00501667 0 0.00301 0 0.00301 0.00100333 0 0.00802667 +0 0.00301 0 0.0130433 0 0 0.00301 0 +0.00100333 0 0.00100333 0.00602 0 0.00702333 0 0.00401333 +0.00602 0 0.00903 0 0.00200667 0.00301 0.00401333 0.00301 +0 0.00100333 0.00702333 0.00501667 0.00200667 0.00301 0.00200667 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00903 0.00301 0.00702333 0 0.00301 0.00200667 0.00200667 0.00501667 +0 0 0.00401333 0.00802667 0 0.00903 0.00501667 0 +0.00501667 0 0.00301 0.00301 0.00501667 0 0 0.00200667 +0 0 0 0.00100333 0 0 0.00802667 0.00702333 +0 0.00100333 0 0.00301 0 0 0 0 +0 0.00501667 0.00401333 0 0 0.0110367 0.00100333 0 +0.00301 0 0.00200667 0.00802667 0 0.00100333 0.00301 0.00100333 +0.00301 0 0 0 0 0 0.00100333 0.00401333 +0 0.00100333 0 0.00602 0 0 0 0 +0.00903 0 0 0.00602 0 0 0.00702333 0 +0 0 0 0.00501667 0 0 0.0100333 0.00100333 +0 0 0 0 0.00301 0.00301 0 0 +0.00702333 0 0.00100333 0.00100333 0.00200667 0 0 0.00602 +0 0 0 0.00501667 0 0.00802667 0.00100333 0.00702333 +0 0 0 0.00802667 0 0.00401333 0.00100333 0.00301 +0 0 0.00802667 0 0 0.00301 0.00602 0.00200667 +0.00100333 0.00401333 0.00401333 0.00401333 0.00100333 0 0.00301 0.00501667 +0 0.00501667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00602 0.00301 0 +0.00702333 0 0.00702333 0.00401333 0 0.00100333 0.00401333 0.00602 +0.00200667 0 0 0.00903 0 0 0.01204 0 +0 0.00100333 0.00301 0.00301 0.00401333 0 0 0.00100333 +0.00401333 0 0 0.00501667 0 0.00200667 0.00501667 0.00702333 +0 0 0 0.00200667 0.00100333 0 0.00200667 0 +0 0.00401333 0.00100333 0.00602 0 0.00501667 0.00200667 0 +0.00301 0 0.00501667 0.00702333 0 0.00301 0 0.00100333 +0.00602 0 0 0 0.00401333 0.00100333 0 0.00100333 +0 0 0 0.00602 0 0 0 0 +0.00301 0.00200667 0 0 0.00301 0 0.00501667 0.00100333 +0 0.00702333 0 0.00401333 0.00100333 0 0.00802667 0.00100333 +0 0 0 0.00100333 0.00501667 0.00401333 0 0.00501667 +0.00100333 0 0 0.00301 0.00100333 0 0.00401333 0 +0.00100333 0.00100333 0.00200667 0.00100333 0 0.00301 0.00401333 0 +0 0 0 0.00200667 0 0.00401333 0.00401333 0 +0.00903 0 0.00702333 0 0 0 0.00602 0 +0.00702333 0.00100333 0.00602 0.00200667 0.00100333 0 0.00702333 0.00501667 +0 0.0140467 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00401333 0.00301 0.00301 0.00501667 +0.00401333 0 0.00401333 0.00401333 0.00100333 0.00301 0 0.00702333 +0.00501667 0 0 0.00301 0.00100333 0.00301 0.00702333 0.00200667 +0 0.00100333 0.00200667 0.00100333 0.00301 0.00100333 0.00501667 0 +0.00602 0 0 0 0 0 0.00702333 0.00100333 +0.00200667 0 0.00501667 0 0.00702333 0 0.00301 0 +0.00401333 0 0.00200667 0.00301 0.00100333 0.00100333 0.00200667 0 +0.00200667 0 0.00301 0.00501667 0 0 0 0.00301 +0.00702333 0 0.00200667 0 0.00200667 0.00501667 0 0 +0 0 0 0.00702333 0 0 0.00501667 0 +0.00100333 0.00200667 0 0 0.00602 0 0.00100333 0.00702333 +0 0.00903 0 0.00100333 0.00301 0 0.00903 0.00200667 +0 0 0.00200667 0.00200667 0 0 0 0.00602 +0.00100333 0.00200667 0 0.00903 0 0 0.00100333 0.00301 +0 0.00200667 0 0 0.00501667 0.00100333 0.00200667 0 +0 0.00401333 0 0.00401333 0.00100333 0.00802667 0 0.00200667 +0.00301 0 0.00100333 0 0.00301 0.00301 0.00100333 0.00200667 +0.00702333 0 0.00501667 0.00401333 0 0.00100333 0.00602 0.00100333 +0 0.0110367 0 0.00301 0.00702333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0110367 0 0.00301 0.00501667 0.00100333 0.00200667 +0 0.00401333 0 0.00903 0.00200667 0.00100333 0.00200667 0 +0.00802667 0 0 0.00200667 0.00200667 0.00200667 0.00802667 0.00702333 +0 0 0 0 0.00501667 0 0.00802667 0 +0.00301 0 0.00602 0 0.00200667 0 0.00200667 0.00401333 +0.00200667 0 0.00903 0 0.00100333 0.00200667 0 0 +0.00301 0 0.00200667 0 0.00301 0 0.00301 0 +0.00200667 0 0.00602 0.00401333 0.00200667 0 0 0.00401333 +0.00501667 0 0 0.00301 0 0.00802667 0 0.00401333 +0 0 0.00200667 0.00602 0 0 0.00401333 0 +0.00100333 0.00301 0 0 0.00602 0 0 0.00200667 +0 0.00501667 0 0.00200667 0.00100333 0 0.0100333 0 +0 0 0.00702333 0 0 0 0 0.00200667 +0 0 0 0.00702333 0.00100333 0 0.00602 0.00100333 +0 0 0.00100333 0.00301 0.00602 0 0 0 +0.00100333 0.00401333 0 0 0.00602 0.00501667 0 0.00301 +0 0.00100333 0.00301 0 0 0.00301 0 0.00702333 +0.00200667 0 0.00802667 0.00602 0 0.00301 0.00501667 0 +0.00602 0.00301 0.00200667 0.00200667 0.00401333 0.00903 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00100333 0.00501667 0.00501667 0 0.00702333 0 0.00602 +0 0.00200667 0.00301 0.00401333 0.00501667 0 0.00401333 0 +0.00501667 0.00702333 0 0 0.00401333 0 0.00100333 0.00602 +0.00100333 0.00200667 0 0 0.00802667 0 0.00401333 0 +0.00301 0 0.00702333 0 0 0.00401333 0 0.00802667 +0 0 0.00602 0 0 0.00501667 0 0 +0.00200667 0 0.00401333 0 0.00401333 0.00301 0.00501667 0 +0 0 0.00401333 0.00401333 0.00401333 0 0.00301 0.00401333 +0.00401333 0 0 0.00200667 0 0.00301 0 0.00602 +0 0.00401333 0.00401333 0.00301 0.00100333 0 0.00401333 0.00100333 +0 0.00100333 0 0 0.00301 0 0.00301 0 +0.00501667 0.00100333 0 0.00100333 0 0.00100333 0.00903 0 +0.00200667 0 0.00903 0 0 0.00100333 0.00100333 0 +0.00501667 0 0.00200667 0.00702333 0 0 0.00200667 0 +0.00602 0 0.00702333 0.00200667 0.00200667 0 0.00100333 0 +0.00200667 0.00301 0 0.00100333 0.00802667 0.00401333 0 0 +0 0 0.00501667 0 0 0 0 0.00702333 +0 0 0.01204 0 0.00200667 0 0.00702333 0 +0 0.00702333 0.00200667 0 0.0100333 0.00401333 0.00401333 0.00702333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00702333 0.0100333 0.00200667 0.00501667 0.00100333 0.00100333 0 0.00301 +0.00301 0 0.00401333 0 0.00501667 0.00301 0.00200667 0 +0.00602 0.00602 0 0 0 0.00200667 0.00200667 0.00401333 +0.00100333 0.00501667 0.00301 0 0.00401333 0 0 0 +0.00602 0 0.00401333 0.00100333 0 0 0.00301 0.00301 +0.00301 0 0.00301 0.00501667 0 0.00100333 0 0.00301 +0.00100333 0 0.00200667 0 0 0.00702333 0 0.00401333 +0 0 0.00602 0.00200667 0.00501667 0 0.00301 0.00401333 +0 0.00100333 0.00100333 0 0.00200667 0 0.00501667 0.00301 +0 0 0.00100333 0 0.00401333 0 0.00100333 0.00301 +0.00100333 0 0.00301 0 0 0 0.00401333 0 +0.00301 0.00301 0 0 0.00100333 0.00501667 0.00602 0 +0 0 0.00802667 0 0 0 0.00401333 0 +0.00501667 0.00100333 0 0.00702333 0 0 0 0 +0 0 0.00802667 0 0.00200667 0 0.00200667 0 +0.00301 0 0 0.00100333 0.00802667 0 0 0 +0.00802667 0 0.00401333 0 0 0.00501667 0.00100333 0 +0.00100333 0.00200667 0.00501667 0 0.00301 0.00100333 0.00200667 0 +0.00301 0.00401333 0 0.00602 0.00501667 0.00301 0.00200667 0.00200667 +0.00903 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00602 0 +0 0.00100333 0.00501667 0.00501667 0.00200667 0 0.00100333 0 +0.00802667 0 0 0.00200667 0 0.00602 0.00301 0 +0.00200667 0.00501667 0.00602 0 0 0 0.00602 0 +0 0.0100333 0 0 0 0.00702333 0 0.00100333 +0.00200667 0.00401333 0 0 0.00501667 0 0 0.00200667 +0.00401333 0 0.00200667 0 0.00702333 0 0 0.00200667 +0 0 0.00401333 0 0 0.00802667 0 0.00401333 +0 0 0.00501667 0 0.00401333 0 0.00200667 0.00301 +0.00100333 0 0.00301 0 0.00301 0 0.00401333 0.00501667 +0 0.00200667 0 0 0.00401333 0 0 0.00200667 +0.00301 0 0.00200667 0.00100333 0.00200667 0 0.00301 0 +0.00501667 0.00301 0 0 0.00100333 0.00802667 0.00100333 0 +0 0 0.00401333 0 0 0.00100333 0.00501667 0 +0.00200667 0.00301 0 0.00602 0 0 0.00301 0.00100333 +0 0.00301 0 0.00200667 0.00100333 0 0.00301 0 +0.00501667 0 0.00501667 0 0.00602 0 0 0.00501667 +0.00702333 0 0.00602 0 0 0 0.00301 0.00100333 +0.00501667 0 0.00602 0.00401333 0 0 0.00702333 0 +0.00401333 0.00501667 0.00602 0.00802667 0 0 0 0.00903 +0.00301 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00702333 0.00501667 0.00401333 +0.00602 0 0 0.00702333 0.00602 0.00100333 0.00200667 0 +0.00200667 0.00602 0 0.00602 0.00100333 0 0.00401333 0.00301 +0 0.00301 0.00702333 0 0 0.00200667 0.00301 0.00200667 +0 0.00501667 0.00501667 0 0 0.00602 0.00100333 0 +0.00602 0.00401333 0 0 0.00301 0.00401333 0 0.00501667 +0 0.00200667 0.00200667 0 0.0100333 0 0 0.00903 +0 0 0.00100333 0.00200667 0 0.00100333 0.00602 0.00100333 +0 0 0 0.00200667 0.00401333 0 0.00100333 0 +0.00100333 0 0 0.00200667 0 0 0 0.00903 +0 0.00401333 0 0.00401333 0 0.00200667 0 0.00100333 +0.00301 0 0.00301 0 0.00301 0 0 0 +0.0110367 0.00200667 0 0 0 0.00702333 0.00100333 0 +0.00301 0.00301 0 0.00100333 0 0 0.00602 0 +0.00401333 0.00401333 0 0.00401333 0 0 0.00301 0 +0 0.00501667 0 0 0.00301 0 0.00100333 0.00100333 +0 0.00501667 0.00100333 0 0.00301 0 0.00200667 0.00602 +0.00100333 0 0 0.00100333 0.00100333 0 0 0.00602 +0.00100333 0 0.00301 0.00401333 0 0.00802667 0.00200667 0 +0.00702333 0.00602 0.00501667 0 0 0 0.00602 0.00501667 +0.00100333 0.00200667 0.00200667 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00802667 0.00200667 0.0100333 +0.00301 0 0 0.00401333 0.00401333 0.00903 0.00200667 0 +0.00301 0.00200667 0.00401333 0 0.00802667 0 0.00200667 0.00100333 +0 0.00100333 0 0.00802667 0 0 0.00501667 0.00100333 +0 0.00100333 0.00802667 0.00301 0 0 0.00702333 0 +0 0.00501667 0.00200667 0.00100333 0.00401333 0.00200667 0 0 +0.00100333 0.00200667 0.00401333 0 0 0.00602 0 0.00200667 +0.00602 0 0.00200667 0 0.00501667 0 0.00401333 0.00100333 +0 0.00401333 0 0.00200667 0.00100333 0 0 0 +0.00301 0.00501667 0 0.00501667 0 0 0 0.00501667 +0 0.00200667 0 0.00401333 0 0.00501667 0 0 +0.00301 0 0.00200667 0 0.00401333 0 0 0 +0.0130433 0 0 0.00100333 0 0.00702333 0 0 +0.00200667 0.00802667 0 0 0.00401333 0 0.00200667 0 +0.00301 0.00200667 0 0.00100333 0 0 0.00702333 0 +0.00100333 0.00100333 0.00401333 0 0.00301 0 0 0.00401333 +0 0.00903 0 0.00200667 0 0.00702333 0 0.00401333 +0 0 0.00501667 0 0.00200667 0 0.00702333 0.00501667 +0 0.00200667 0.00501667 0 0.00100333 0.00802667 0.00100333 0 +0.00702333 0.00602 0 0.00100333 0 0 0.00301 0.00401333 +0.00200667 0.00501667 0.00200667 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.01204 0 0.00200667 0.00301 0.00200667 +0.00903 0 0 0.00401333 0 0.00501667 0.0100333 0 +0.00301 0.00100333 0.00501667 0 0 0.00501667 0 0 +0.00301 0 0 0.00301 0.00301 0.00100333 0 0.00401333 +0.00100333 0.00200667 0 0.00501667 0 0 0.00301 0 +0 0 0.00301 0.00100333 0.00501667 0.00501667 0 0 +0.00401333 0 0 0.00401333 0 0.00802667 0 0 +0.0100333 0 0.00200667 0 0.00602 0 0 0.00401333 +0 0.00200667 0 0.00401333 0 0.00100333 0.00401333 0 +0.00200667 0.00200667 0.00200667 0.00301 0 0.00100333 0.00301 0 +0.00401333 0 0.00100333 0 0 0.00401333 0.00200667 0 +0.00301 0.00200667 0.00100333 0.00200667 0 0 0 0 +0.00903 0.00401333 0 0.00401333 0.00301 0.00301 0 0.00301 +0 0.00602 0 0 0 0 0 0 +0.01204 0 0.00100333 0.00602 0 0.00200667 0.00200667 0.00100333 +0 0.00301 0.00200667 0 0.00100333 0 0.00100333 0 +0 0.00501667 0.00100333 0 0 0.00401333 0.00301 0.00602 +0 0 0.00200667 0 0.00100333 0.00301 0.00100333 0.00301 +0 0.00602 0.00301 0 0.00100333 0.00401333 0 0 +0.00702333 0.00602 0 0.00301 0.00301 0 0.00200667 0.00401333 +0.00200667 0.00401333 0 0 0.0110367 0.0100333 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0100333 0 0.00301 0.0100333 0.00200667 0 0.00301 +0 0.0140467 0 0.00100333 0.00200667 0 0.00903 0 +0 0 0.00903 0 0 0 0.00301 0 +0.00200667 0 0.00200667 0 0.00501667 0 0.00602 0 +0 0.00301 0.00301 0.00100333 0.00100333 0 0.00200667 0 +0.00100333 0 0.00100333 0.00200667 0.00301 0.00301 0.00200667 0 +0 0.00100333 0.00200667 0.00200667 0.00301 0 0.00100333 0 +0.00702333 0.00301 0.00100333 0 0.00702333 0 0.00702333 0 +0.00100333 0.00100333 0 0.00501667 0 0 0.00401333 0 +0.00501667 0.00100333 0.00200667 0.00401333 0.00200667 0 0.00301 0 +0.00301 0 0.00200667 0.00100333 0 0.00401333 0.00200667 0 +0 0.00301 0 0.00501667 0.00100333 0.00200667 0.00200667 0 +0.00501667 0.00501667 0 0.00100333 0.00200667 0 0 0.00100333 +0.00100333 0 0 0 0.00100333 0.00401333 0 0 +0.0110367 0 0 0.00200667 0 0.00100333 0.00501667 0 +0 0.00200667 0 0 0 0.00401333 0 0.00100333 +0 0.00200667 0 0.00100333 0 0.00802667 0.00301 0.00401333 +0 0.00602 0 0.00602 0.00100333 0.00100333 0 0 +0.00602 0.00200667 0 0 0 0.00602 0.00100333 0 +0.00602 0.00200667 0.00200667 0 0.00200667 0 0.00602 0.00301 +0 0.00301 0 0.00702333 0.0130433 0.00602 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0.00602 0.00401333 0 0.00301 0.00602 0.00100333 0 +0 0.00702333 0.00401333 0.00200667 0 0 0.00501667 0.00802667 +0 0 0.00200667 0.0100333 0.00200667 0 0.00802667 0 +0.00100333 0.00100333 0 0.00200667 0.00200667 0 0.00401333 0 +0.00401333 0 0.00602 0 0.00100333 0 0.00200667 0 +0.00401333 0 0 0.00100333 0.00702333 0.00100333 0.00301 0 +0 0.00200667 0.00200667 0 0.00200667 0 0.00401333 0 +0 0.0110367 0 0 0.00501667 0 0.00200667 0 +0 0.00200667 0 0.00501667 0 0.00301 0.00401333 0 +0.00501667 0 0.00100333 0.00301 0.00602 0 0 0.00802667 +0 0 0.00401333 0 0 0.00200667 0.00100333 0 +0 0.00501667 0 0.00200667 0 0.00301 0.00401333 0 +0.01204 0 0.00802667 0 0 0.00301 0.00100333 0.00200667 +0 0.00501667 0 0 0.00501667 0 0 0.00200667 +0.00602 0 0 0 0 0.00200667 0.00501667 0 +0 0.00100333 0.00100333 0 0 0.00200667 0.00200667 0 +0.00301 0.00100333 0 0 0 0.0110367 0 0 +0 0.00100333 0 0.00702333 0 0 0.00301 0 +0.00702333 0.00100333 0 0.00200667 0.00802667 0.00100333 0 0 +0.00200667 0.00602 0 0 0 0.00501667 0.00401333 0.00200667 +0 0 0.00100333 0.0110367 0.00501667 0 0.00501667 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00602 +0.00301 0 0.00802667 0 0.00200667 0.00100333 0.00200667 0.00301 +0.00100333 0.00501667 0 0.00702333 0.00100333 0 0 0.00501667 +0.00100333 0 0 0.00301 0.00903 0 0 0.00602 +0 0 0.00301 0 0.00200667 0.00401333 0.00200667 0 +0.00200667 0.00501667 0 0.00200667 0 0 0.00200667 0 +0.00301 0.00200667 0 0 0.0100333 0 0.00100333 0 +0.00100333 0 0 0 0 0.00200667 0.00301 0 +0 0.00501667 0.00100333 0 0.00602 0 0.00100333 0.00401333 +0 0 0.00501667 0 0 0.00501667 0.00401333 0 +0.00301 0.00100333 0 0 0.00602 0.00200667 0 0.00702333 +0 0.00100333 0.00602 0 0.00100333 0 0 0 +0.00501667 0.00301 0 0 0 0.00301 0.00200667 0 +0.00802667 0 0.00802667 0 0 0.00802667 0 0 +0.00100333 0.00501667 0 0 0.00903 0 0.00100333 0.00602 +0.00100333 0 0 0.00401333 0 0.00501667 0.00200667 0 +0.00301 0 0 0.00100333 0.00200667 0.00200667 0.00301 0 +0.00301 0.00100333 0.00602 0 0.00301 0.00501667 0 0.00501667 +0 0 0.00802667 0 0 0 0.00602 0.00903 +0 0.00301 0 0 0.00702333 0.00200667 0 0.00301 +0.00602 0.00200667 0 0 0.00100333 0.00802667 0 0.00401333 +0 0.00100333 0.00401333 0.01204 0.00100333 0.00100333 0.00702333 0.00301 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00903 0 +0.00301 0.00401333 0 0 0.00100333 0.00200667 0.00702333 0 +0.00602 0.00702333 0 0.00401333 0.00401333 0 0.00200667 0 +0.00100333 0.00301 0 0 0.00501667 0 0 0.00301 +0.00501667 0 0 0.00802667 0.00200667 0.00200667 0.00200667 0 +0 0.00702333 0 0.00301 0.00100333 0 0.00501667 0 +0 0.00501667 0 0 0.00802667 0.00200667 0 0.00200667 +0 0.00100333 0.00100333 0 0 0 0.00200667 0 +0 0.00200667 0 0.00702333 0.00602 0 0.00200667 0.00301 +0 0 0.00401333 0 0 0.00501667 0 0 +0.00200667 0.00401333 0 0 0.00501667 0.00301 0 0.00602 +0 0.00100333 0.00401333 0 0.00200667 0 0.00100333 0 +0.00602 0.00100333 0 0 0.00301 0 0.00100333 0 +0.00802667 0 0.00401333 0 0.00200667 0.00301 0.00100333 0 +0 0.00501667 0 0.00301 0.00100333 0 0.00200667 0.00200667 +0 0.00200667 0 0.00100333 0 0.0100333 0 0.00100333 +0 0 0 0.00401333 0.00100333 0.00301 0.00100333 0 +0.00100333 0.00602 0 0.00100333 0 0.00401333 0.00100333 0 +0 0.00501667 0 0 0 0.00301 0.00602 0.00100333 +0 0 0 0.00100333 0.00200667 0.00100333 0.00301 0.00301 +0 0.00100333 0 0.00301 0 0.00802667 0 0.00100333 +0 0.00301 0.0110367 0.00100333 0.00301 0.00200667 0.00301 0 +0.00401333 0.0100333 0.00802667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00802667 0.00301 +0 0.00401333 0.00602 0 0 0 0.00501667 0.00100333 +0 0.00702333 0 0 0.00401333 0.00100333 0 0.00501667 +0.00501667 0.00401333 0 0.00100333 0 0.00301 0 0.00301 +0.00501667 0.00401333 0 0 0.00401333 0 0 0.00100333 +0 0 0.00802667 0 0.00301 0 0.00100333 0 +0 0.00100333 0 0.00301 0 0.00401333 0.00200667 0.00200667 +0.00200667 0 0 0.00100333 0 0.00301 0 0.00401333 +0 0.00100333 0 0.00401333 0.00802667 0 0.00100333 0 +0.00301 0 0.00602 0.00200667 0 0 0.00100333 0 +0 0.00702333 0.00100333 0 0.00702333 0 0.00100333 0.00702333 +0 0.00401333 0 0.00301 0 0.00200667 0 0 +0.00602 0.00100333 0.00200667 0 0.00301 0 0 0.00702333 +0.00602 0 0.00200667 0 0.00903 0 0.00501667 0 +0 0.00802667 0 0.00802667 0 0.00200667 0.00200667 0.00100333 +0.00401333 0 0 0 0.00200667 0.0100333 0 0.00200667 +0.00301 0 0.00200667 0.00200667 0.00401333 0.00200667 0 0.00200667 +0 0.00802667 0 0.00301 0 0.00903 0 0 +0.00301 0 0 0 0.00100333 0.00301 0.00501667 0 +0 0.00200667 0 0.00301 0.00100333 0.00200667 0.00602 0 +0.00401333 0.00200667 0 0.00401333 0.00100333 0.00200667 0 0 +0.00702333 0.00702333 0.00200667 0.00200667 0.00903 0 0 0.00301 +0.00301 0.00702333 0.00401333 0.00802667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00501667 0.00301 0.00401333 0.00702333 +0.00200667 0 0.00100333 0.00602 0.00200667 0 0.00200667 0.00200667 +0 0.00301 0.00100333 0.00501667 0 0.00200667 0 0 +0.00602 0 0.00200667 0 0 0.00702333 0 0 +0.00200667 0.00401333 0.00200667 0 0 0 0.00702333 0 +0.00200667 0 0.00702333 0 0.00401333 0 0.00501667 0 +0 0 0.00501667 0.00100333 0 0.00301 0.00602 0 +0.00802667 0 0 0.00903 0 0 0.00501667 0 +0.00301 0.00200667 0 0 0.00401333 0.00301 0.00200667 0 +0.00401333 0 0.00100333 0.00501667 0 0 0.0100333 0 +0 0.00802667 0 0 0.00301 0 0.0110367 0 +0.00501667 0.00200667 0 0.00200667 0 0.00903 0 0.00200667 +0.00200667 0.00401333 0 0.00702333 0 0 0 0.00802667 +0.00200667 0 0.00301 0 0.0130433 0 0.00501667 0.00602 +0 0.00602 0 0.00602 0 0 0.00200667 0.00200667 +0 0.00301 0 0 0.00802667 0.00301 0.00200667 0 +0.00501667 0 0.00401333 0.00401333 0 0 0.00100333 0.00100333 +0 0.00802667 0.00200667 0 0.00301 0 0.00100333 0 +0.00501667 0 0.00301 0 0.00602 0 0.00200667 0 +0 0.00401333 0 0.00200667 0 0.00602 0 0 +0.00401333 0 0 0.0100333 0 0.00301 0 0.00401333 +0.00602 0.00301 0 0.00802667 0.00702333 0 0.00200667 0.00602 +0 0.00501667 0.00401333 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00702333 0.00301 0.00401333 0.00401333 0.00401333 +0.00501667 0 0 0 0.00602 0.00301 0 0.00100333 +0 0.00200667 0 0.00702333 0 0.00100333 0.00401333 0 +0 0.00401333 0 0 0 0.00401333 0.00100333 0.00200667 +0 0.00401333 0.00100333 0.00100333 0 0.00200667 0.00100333 0.00200667 +0 0 0.00401333 0.00301 0 0 0.00200667 0.00100333 +0 0 0.00501667 0 0 0 0.00501667 0 +0 0.00702333 0 0.00200667 0.00100333 0 0.00100333 0.00200667 +0.00200667 0 0.00401333 0 0.00100333 0.00200667 0.00100333 0.00100333 +0 0.00301 0 0.00401333 0 0 0.0130433 0 +0 0.00602 0.00100333 0.00301 0.00200667 0 0.00802667 0 +0.00301 0.00401333 0 0 0.00100333 0.00802667 0 0.00200667 +0 0.00200667 0 0.00602 0 0.00200667 0.00100333 0.00501667 +0.00100333 0.00200667 0.00200667 0 0.00802667 0 0.00401333 0.00501667 +0 0.00702333 0.00301 0 0.00301 0 0.00301 0 +0 0.00501667 0 0 0.0100333 0.00100333 0.00301 0.00200667 +0.00200667 0 0.00401333 0.00501667 0 0 0.00401333 0 +0 0.00903 0.00501667 0 0.00501667 0 0.00401333 0 +0.0100333 0 0.00200667 0.00100333 0 0 0.00401333 0 +0.00501667 0.00602 0 0 0.00602 0.00301 0 0.00301 +0.00100333 0 0.00100333 0.00200667 0 0 0.00200667 0.00100333 +0.00301 0 0.00401333 0.00702333 0 0 0.00401333 0.00301 +0.00301 0.00501667 0.00100333 0 0.00200667 0.00602 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.00501667 0.00401333 0.00301 0 0.00200667 +0.00100333 0.00401333 0 0.00200667 0 0.00501667 0.00301 0 +0 0 0 0.00903 0 0.00501667 0.00301 0 +0.00100333 0.00301 0 0.00100333 0 0.00501667 0 0.00501667 +0 0 0 0.00401333 0 0.00401333 0 0.00100333 +0 0.00401333 0.00401333 0 0 0 0 0.00301 +0.00200667 0.00100333 0 0.00301 0.00200667 0 0.00501667 0.00401333 +0 0.00702333 0 0 0.00301 0 0.00802667 0 +0.00501667 0 0.00301 0.00200667 0 0.00200667 0 0.00702333 +0 0.00301 0.00100333 0.00200667 0.00200667 0 0.0130433 0 +0 0.00702333 0 0.00702333 0.00100333 0 0.00401333 0.00501667 +0.00100333 0.00401333 0.00200667 0 0.00401333 0.00100333 0.00200667 0.00301 +0 0.00301 0.00401333 0.00301 0.00200667 0 0.00200667 0.00401333 +0.00301 0 0.00100333 0 0.00501667 0 0 0.00100333 +0 0.00903 0 0 0.00501667 0.00301 0.00100333 0 +0.00200667 0.00401333 0 0 0.00702333 0.00301 0 0.00200667 +0.00100333 0 0.0100333 0 0 0 0.00501667 0 +0.00200667 0.01204 0 0 0 0 0.00401333 0.00401333 +0 0 0.00702333 0 0.00200667 0.00301 0 0 +0.00802667 0 0 0.00602 0.00100333 0 0 0.00401333 +0 0.00401333 0 0.00100333 0.00100333 0 0.00702333 0.00301 +0 0.00602 0.00501667 0 0 0 0.00903 0.00401333 +0 0.00602 0 0.00301 0.00200667 0.00903 0.00702333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0.00301 0 0.00702333 0.00200667 0.00301 0.00200667 +0.00100333 0.00100333 0.00501667 0.00100333 0 0.00100333 0.00200667 0.00200667 +0 0 0 0.00100333 0.00401333 0.00200667 0.00702333 0 +0 0.00501667 0.00100333 0 0 0.00200667 0.00200667 0.00301 +0.00401333 0 0 0.00100333 0.00200667 0 0 0.00301 +0.00100333 0 0.00602 0.00100333 0 0 0 0.00200667 +0 0.00702333 0 0.00200667 0.00301 0 0.00301 0.00501667 +0 0.00401333 0.00301 0.00100333 0 0 0.00100333 0.00501667 +0.00100333 0 0 0.00802667 0 0 0.00301 0.00301 +0.00200667 0.00200667 0.00200667 0 0.00200667 0 0.00702333 0 +0.00301 0 0.00200667 0.00702333 0 0.00301 0 0.00200667 +0 0.00401333 0 0 0.00501667 0 0.00602 0 +0 0 0.00602 0 0.00602 0 0.00401333 0 +0.00802667 0 0.00100333 0 0.00100333 0.00702333 0 0.00100333 +0.00200667 0.00802667 0 0 0.00802667 0.00200667 0 0.00200667 +0.00200667 0.00200667 0 0 0.00200667 0.00602 0.00602 0 +0 0 0.00602 0.00200667 0 0.00200667 0.00100333 0 +0.00301 0.00802667 0 0 0 0.00200667 0.00301 0.00100333 +0.00100333 0 0 0.00100333 0.00100333 0.00301 0 0.00200667 +0 0.00501667 0 0.00802667 0 0.00301 0.00200667 0 +0.00401333 0 0 0.00702333 0 0.00602 0.00200667 0 +0.00702333 0.00200667 0 0 0 0.00401333 0.00501667 0.00602 +0 0 0 0.00501667 0.00702333 0.00301 0.00200667 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00200667 0.00802667 0.00602 0 0.00200667 0.00200667 0.00100333 0.00903 +0 0.00501667 0 0.00200667 0 0.00100333 0 0.00702333 +0 0 0 0.00100333 0 0.00301 0.00100333 0.00100333 +0 0.00100333 0.00100333 0.00100333 0.00100333 0 0 0.00200667 +0.00401333 0.00401333 0 0 0.00200667 0.00401333 0 0.00100333 +0 0.00401333 0 0.00501667 0 0.00301 0.00100333 0 +0 0.00802667 0 0.00200667 0.00301 0 0.00100333 0.00301 +0.00100333 0.00200667 0.00100333 0.00200667 0 0.00602 0 0.00100333 +0.00401333 0.00301 0 0.00401333 0 0 0.00100333 0 +0 0 0.00301 0 0 0.00301 0 0 +0.00100333 0 0 0.00401333 0 0.00401333 0 0 +0.00401333 0 0 0 0 0 0.00401333 0 +0.00100333 0 0.00602 0 0.00301 0 0.00401333 0 +0.00702333 0 0.00100333 0 0 0.00903 0 0.00100333 +0.00301 0.00301 0 0.00200667 0.00301 0.00602 0 0.00401333 +0 0.00100333 0 0.00301 0 0.00100333 0.00602 0 +0.00301 0.00200667 0.00200667 0 0.00401333 0 0 0.00100333 +0.00200667 0.00301 0 0 0.00100333 0.00401333 0.00301 0 +0 0 0 0.00501667 0 0.00200667 0.00200667 0 +0.00100333 0.00301 0.00200667 0 0.00100333 0.00301 0 0 +0.00401333 0 0.00200667 0.00200667 0 0.00802667 0 0.00301 +0.00401333 0 0 0.00501667 0.00501667 0 0.00501667 0.00200667 +0 0.00903 0 0.00602 0.00100333 0 0.00602 0.00602 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0.00301 0.00501667 0 0.00501667 0 0.00903 0 0.00401333 +0.00501667 0.00100333 0.00100333 0.00200667 0 0.00100333 0 0.00702333 +0 0 0.00100333 0 0 0 0.00702333 0.00100333 +0.00200667 0.00602 0 0.00100333 0.00200667 0 0 0 +0.00501667 0 0 0.00501667 0 0.00602 0 0.00100333 +0.00100333 0 0.00602 0 0.00401333 0.00100333 0 0.00501667 +0 0.00702333 0 0.00802667 0 0 0.00100333 0.00200667 +0 0.00301 0.00100333 0.00602 0 0.00401333 0.00501667 0 +0.00602 0.00200667 0.00401333 0 0 0.00100333 0.00401333 0 +0 0.00200667 0 0 0.00200667 0.00100333 0 0.00200667 +0 0.00501667 0 0 0 0.00602 0 0 +0.00702333 0 0 0 0.00301 0 0 0.00100333 +0 0.00100333 0 0.00401333 0 0.00401333 0.00301 0 +0.00200667 0 0 0 0.00100333 0.00501667 0 0 +0.00301 0 0 0.00200667 0.00100333 0.00200667 0 0.00501667 +0.00200667 0 0.00301 0.00401333 0 0.00501667 0.00200667 0 +0.00501667 0 0.00301 0 0.00602 0 0 0.00802667 +0 0 0 0 0.00602 0.00100333 0.00200667 0 +0.00301 0 0 0.00401333 0 0.00501667 0 0 +0.00401333 0.00301 0 0.00100333 0 0.00501667 0 0 +0 0.00100333 0.00100333 0.00100333 0.00401333 0 0.00501667 0.00200667 +0 0 0 0.00802667 0.00401333 0 0.00401333 0.00200667 +0.00401333 0 0.00501667 0.00301 0 0 0.0110367 0.00401333 +0 0.01204 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00100333 +0.00802667 0 0.00702333 0.00501667 0 0 0.00903 0 +0.00501667 0.00501667 0 0.00200667 0.00501667 0 0 0 +0.00802667 0 0 0.00401333 0.00100333 0 0.00401333 0.00100333 +0 0.0100333 0 0 0.00501667 0 0.00100333 0.00301 +0 0.00903 0 0.00301 0 0.00301 0 0 +0.00301 0.00301 0 0.00301 0.00301 0 0.00401333 0.00100333 +0 0.00501667 0.00100333 0.00401333 0.00200667 0 0 0.00200667 +0.00200667 0.00200667 0 0.00200667 0 0 0.00602 0.00100333 +0 0.00401333 0.00501667 0 0 0.00100333 0.00401333 0.00100333 +0 0.00100333 0 0 0.00401333 0 0.00602 0 +0 0.00200667 0.00401333 0 0 0.00501667 0 0.00401333 +0 0.00501667 0 0.00301 0.00301 0 0 0.00301 +0 0.00802667 0 0 0 0.00501667 0 0 +0 0.00401333 0 0 0.00401333 0 0 0.00301 +0 0 0.00100333 0 0.00501667 0 0 0.00602 +0 0 0.00200667 0.00200667 0 0.00602 0 0.00100333 +0.00200667 0.00100333 0.00301 0 0.00100333 0 0.00401333 0.00802667 +0 0 0.00301 0 0.00802667 0 0.00200667 0 +0.00200667 0 0.00301 0 0.00401333 0.00200667 0 0.00702333 +0.00301 0.00501667 0 0 0.00200667 0 0 0 +0.00301 0.00602 0 0.00301 0 0.00903 0 0 +0 0.00200667 0.00301 0.00802667 0 0 0.00702333 0 +0 0.00301 0.00903 0.00501667 0 0.00100333 0.00501667 0 +0.00501667 0.00903 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00401333 0.00702333 0 +0.00602 0.00200667 0 0.00602 0.00301 0 0 0.00200667 +0.00200667 0.00602 0.00501667 0 0.00100333 0.00301 0.00401333 0.00301 +0 0.00401333 0 0 0 0 0.00501667 0 +0.00100333 0.00301 0.00100333 0 0 0.00602 0 0 +0.00602 0.00501667 0 0 0 0.00301 0.00401333 0.00100333 +0 0 0.00200667 0 0.00301 0 0.00301 0.00100333 +0 0.00401333 0.00301 0.00100333 0.00100333 0.00401333 0 0 +0.00702333 0.00301 0.00501667 0 0.00200667 0 0.00100333 0.00501667 +0 0.00401333 0.00802667 0 0 0.00100333 0 0.00702333 +0 0.00301 0 0 0.00100333 0.00501667 0.00100333 0 +0 0.00100333 0.00501667 0 0.00200667 0.00401333 0 0.00602 +0 0.00301 0 0 0.00401333 0 0.00501667 0 +0 0 0.00602 0 0.00200667 0 0.00602 0 +0 0.00200667 0 0.00200667 0 0.00401333 0 0.0100333 +0 0 0.00702333 0 0.00501667 0 0.00401333 0 +0.00501667 0 0 0.00702333 0.00200667 0.00200667 0 0.00602 +0 0.00702333 0 0 0.00301 0 0.00602 0.00100333 +0 0 0.00301 0 0.00903 0.00100333 0 0.00200667 +0 0.00602 0 0 0.00301 0 0.00702333 0.00100333 +0.00903 0 0.00401333 0 0.00200667 0 0 0.00200667 +0.00602 0 0 0.00301 0 0.00401333 0 0.00602 +0 0.00602 0.00702333 0.00200667 0 0 0.00802667 0 +0 0.01806 0 0 0 0.00802667 0 0.00301 +0.00200667 0.00802667 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00602 0.0110367 0 0.00401333 +0 0.00602 0.00401333 0.00100333 0.00401333 0.00401333 0.00301 0.00100333 +0 0.00200667 0.00702333 0.00200667 0 0.00301 0.00100333 0.00501667 +0.00100333 0 0.00100333 0 0 0 0.00200667 0.00100333 +0 0.00401333 0.00301 0 0.00100333 0 0 0 +0 0.00602 0 0.00200667 0 0.00401333 0 0.00200667 +0.00401333 0 0.00602 0 0 0 0.00301 0 +0 0.00301 0.00301 0 0.00200667 0.00301 0.00401333 0 +0.00401333 0 0.00802667 0 0.00301 0.00100333 0 0.00602 +0 0.00100333 0.00802667 0 0 0.00401333 0 0.00501667 +0 0.00501667 0 0.00301 0.00301 0.00301 0 0 +0 0.00401333 0.00301 0 0.00501667 0 0.00100333 0.00301 +0.00100333 0.00200667 0.00100333 0 0.00100333 0 0.00602 0 +0.00100333 0 0.00602 0.00802667 0 0.00200667 0 0 +0 0.00200667 0 0.00702333 0 0.00100333 0 0.00802667 +0 0 0.00501667 0 0 0 0.00301 0.00100333 +0.00401333 0 0 0.0100333 0 0 0 0.00903 +0 0.00100333 0.00200667 0 0 0.00501667 0.00501667 0 +0 0.00100333 0 0 0.00802667 0.00200667 0 0 +0.00301 0.00200667 0 0.00401333 0 0.00602 0.00501667 0 +0 0 0.00401333 0 0 0 0.00100333 0.00501667 +0.00200667 0 0.00200667 0 0.00602 0 0.00200667 0.00200667 +0 0.0100333 0 0 0 0.0100333 0.00100333 0 +0.0100333 0 0 0 0 0.00501667 0.00301 0.00100333 +0.00401333 0.00401333 0.00200667 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00903 0 0.00501667 0.00903 0.00501667 +0 0 0.00602 0.00401333 0.00602 0 0.00401333 0.00501667 +0 0 0.00802667 0.00401333 0 0.00301 0 0.00501667 +0 0.00200667 0.00100333 0.00301 0.00200667 0 0 0.00100333 +0 0.00200667 0.00401333 0 0 0.00903 0 0 +0 0.00501667 0 0.00401333 0 0.00200667 0.00100333 0.00200667 +0 0.00200667 0.00100333 0 0.00602 0 0 0 +0.00301 0.00100333 0.00100333 0.00602 0 0.00501667 0.00903 0 +0.00702333 0 0.00100333 0.00602 0 0 0.00301 0 +0.00200667 0.00401333 0 0.00301 0 0.00100333 0 0.00401333 +0 0.00301 0 0.00100333 0.00702333 0.00100333 0 0 +0.00100333 0.00301 0 0.00200667 0.00501667 0 0.00200667 0.00301 +0 0.00200667 0 0.00100333 0.00100333 0 0 0.00100333 +0 0 0.00602 0.00401333 0 0.00301 0 0.00301 +0 0 0.00501667 0.00100333 0 0 0.00200667 0.00501667 +0 0.00301 0.00100333 0 0.00401333 0 0.00200667 0 +0.00200667 0 0.00401333 0.00401333 0.00100333 0 0.00200667 0.00602 +0 0 0.00602 0 0 0.0100333 0 0 +0 0 0.00200667 0.00200667 0.00401333 0.00501667 0 0.00100333 +0 0.00501667 0 0.00602 0 0.00602 0.00200667 0 +0.00301 0.00100333 0.00501667 0 0 0.00100333 0.00100333 0.00702333 +0 0 0 0 0.00602 0 0 0 +0.00401333 0.00100333 0.00100333 0 0.00702333 0.00702333 0.00100333 0.00200667 +0 0.00301 0 0 0 0.00602 0.00200667 0.00301 +0.00602 0 0 0.00501667 0.00802667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00602 0.00301 0.00200667 0 0.00602 0.00602 +0.00401333 0 0 0 0 0.00401333 0.00602 0.00301 +0.00702333 0 0 0.00602 0 0.00100333 0 0.00100333 +0 0 0.00501667 0.00200667 0.00903 0 0 0 +0 0 0.00301 0 0 0.00802667 0 0 +0.00702333 0.00301 0 0.00200667 0 0 0.00100333 0.00301 +0.00100333 0 0 0.00401333 0.00100333 0.00100333 0.00301 0 +0 0.00501667 0 0.00802667 0 0 0.00501667 0 +0.00401333 0 0 0.00702333 0.00301 0 0.00401333 0 +0.00401333 0.00100333 0 0.00100333 0 0.00301 0 0 +0.00602 0.00200667 0.00100333 0 0.00602 0.00301 0 0 +0 0.00100333 0.00602 0 0.00200667 0 0 0.00301 +0 0.00501667 0 0.00401333 0.00100333 0 0 0.00301 +0.00100333 0 0.00200667 0.00100333 0.00301 0.00301 0 0 +0 0 0.00401333 0.00200667 0.00100333 0 0 0.00301 +0 0.00702333 0.00100333 0 0.00602 0 0.00200667 0 +0 0.00200667 0.00100333 0.00301 0 0 0.00501667 0.00200667 +0 0.00100333 0.00401333 0 0.00301 0.00702333 0 0 +0 0 0.00401333 0 0.00602 0 0 0.00100333 +0.00100333 0.00602 0.00301 0 0.00100333 0.00401333 0.00200667 0 +0.00301 0.00100333 0.00401333 0 0.00301 0.00200667 0.00200667 0.00301 +0 0 0 0.0130433 0.00200667 0 0 0 +0 0.00602 0 0.00401333 0.00401333 0 0 0 +0.00401333 0.00301 0 0 0.00602 0.00702333 0.00301 0.00200667 +0 0 0.00802667 0.0100333 0.00200667 0.00501667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00200667 0.0110367 0 0 0.00802667 +0.00602 0.00200667 0.00200667 0.00200667 0.00401333 0 0.00100333 0.00501667 +0.00602 0 0 0.00100333 0.00301 0 0 0 +0.00100333 0 0.00301 0 0.00903 0.00200667 0 0 +0 0 0.00100333 0.00401333 0 0.00501667 0.00100333 0.00100333 +0 0.00200667 0.00702333 0 0 0.00200667 0.00100333 0 +0.00802667 0 0 0.00301 0.00200667 0 0.00301 0.00401333 +0 0.00100333 0.00501667 0.00401333 0 0.00200667 0.00100333 0 +0.00501667 0.00200667 0 0.00301 0 0 0 0.00100333 +0.00501667 0 0.00100333 0 0 0 0.00501667 0 +0.00301 0.00100333 0 0.00100333 0 0.00702333 0 0.00602 +0 0 0.00301 0.00602 0 0 0.00200667 0.00100333 +0 0.00401333 0 0.00702333 0.00200667 0 0 0 +0 0.00100333 0.00401333 0.00100333 0 0.00501667 0 0.00301 +0 0.00602 0 0.0100333 0 0 0.00200667 0 +0.00200667 0.00602 0 0.00301 0.00100333 0 0.00401333 0 +0.00100333 0.00200667 0 0 0 0.00100333 0.00301 0 +0 0.00501667 0 0.00401333 0.00200667 0.00401333 0 0.00301 +0 0 0.00501667 0.00401333 0 0 0 0.00301 +0 0.00802667 0 0 0.00802667 0.00301 0 0.00301 +0.00301 0 0.00401333 0 0.00903 0 0.00100333 0.00100333 +0 0 0.01204 0.00200667 0 0 0 0 +0.00401333 0.00602 0 0.00100333 0 0.00200667 0 0 +0.00401333 0.00100333 0 0.00200667 0.00602 0.00501667 0 0 +0 0.00802667 0.00903 0.00200667 0.00100333 0.00501667 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0100333 0.00501667 0 0.00100333 0.00602 0 0 +0.00802667 0.00802667 0 0 0.00200667 0.00100333 0.00301 0 +0.00301 0.00401333 0.00200667 0 0.00602 0 0 0 +0.00100333 0.00200667 0 0 0 0.00100333 0.00401333 0 +0 0.00702333 0.00301 0.00100333 0 0 0 0 +0.00200667 0 0 0.0110367 0 0.00501667 0 0 +0.00903 0 0 0 0.00702333 0 0.00903 0.00100333 +0 0 0.00100333 0.00401333 0 0.00200667 0.00702333 0 +0.00401333 0.00301 0 0.00401333 0 0 0.00501667 0 +0.00200667 0 0.00401333 0 0.00100333 0 0 0.00501667 +0 0.00501667 0 0.00301 0 0.00401333 0 0.00702333 +0 0 0 0.00200667 0.00501667 0 0 0.00200667 +0.00602 0.00200667 0 0.00903 0 0.00301 0 0 +0 0.00301 0.00100333 0.00401333 0.00401333 0 0 0.00802667 +0 0.00301 0 0.00903 0 0 0.00200667 0 +0.00702333 0 0 0.0110367 0 0 0.00100333 0 +0.00602 0 0.00200667 0.00200667 0 0 0.00200667 0.00100333 +0 0.00401333 0 0.00401333 0.00602 0 0.00501667 0 +0 0.00200667 0.00702333 0 0.00100333 0 0.00301 0.00401333 +0 0.00702333 0 0 0.00802667 0 0 0.0110367 +0 0 0.00602 0 0.00501667 0 0.00200667 0 +0 0 0.00702333 0 0.00100333 0 0 0.00100333 +0.00702333 0.00401333 0 0 0.00301 0.00501667 0.00100333 0.00200667 +0.00100333 0 0.00200667 0 0.00100333 0.00401333 0 0.00602 +0.00401333 0.0100333 0 0.00100333 0.00501667 0.00401333 0.00802667 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.00301 0.00602 0.00200667 0.00200667 0.00401333 0.00301 0 +0.00200667 0.00301 0.00802667 0.00100333 0 0 0.00100333 0.00702333 +0.00301 0.00200667 0.00301 0 0.00100333 0.00501667 0.00100333 0 +0.00501667 0.00100333 0.00602 0 0.00401333 0.00200667 0.00301 0 +0.00100333 0 0.00301 0.00501667 0 0 0.00200667 0 +0.00501667 0.00301 0 0.00200667 0.00903 0.00200667 0.00301 0 +0 0.00401333 0.00100333 0 0.00401333 0 0.00401333 0.00301 +0 0.00501667 0 0.00501667 0 0.00401333 0 0 +0 0.00301 0.00100333 0.00501667 0.00100333 0 0.00301 0.00100333 +0 0 0.00802667 0 0 0.00702333 0 0.00602 +0 0.00100333 0 0.00702333 0 0 0 0.0100333 +0 0 0.00301 0 0.00401333 0.00401333 0 0 +0.0100333 0 0 0.00301 0.00401333 0.00401333 0 0 +0.00200667 0 0.00301 0.00200667 0.00401333 0 0 0.00702333 +0 0.00100333 0.00100333 0.00501667 0 0 0 0.00501667 +0.00100333 0 0 0.00903 0.00100333 0 0.00100333 0 +0.00100333 0.00602 0.00301 0 0 0.00301 0 0 +0 0 0.00100333 0.00401333 0 0.00802667 0 0 +0.00200667 0 0.00401333 0 0 0.00301 0.00501667 0 +0.00301 0.00301 0 0.00903 0 0 0.00903 0.00301 +0 0 0 0 0.00301 0.00100333 0 0.00602 +0 0.00501667 0 0 0 0 0.00100333 0.00903 +0.00200667 0 0 0.00301 0.00100333 0.00200667 0.00501667 0 +0 0 0.00301 0 0.00702333 0 0.00501667 0.00200667 +0.00301 0.00602 0 0.00501667 0.00200667 0.00903 0.00301 0 +0.00602 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0110367 +0.00401333 0.00501667 0.00100333 0.00401333 0 0.00702333 0 0 +0 0.00200667 0.00301 0.00903 0 0.00401333 0 0.00301 +0.00602 0.00301 0 0.00301 0 0.00501667 0.00100333 0.00501667 +0 0.00200667 0.00100333 0 0 0 0.00501667 0 +0.00501667 0 0 0.00200667 0.00702333 0.00100333 0 0 +0 0.00702333 0 0 0.00301 0.00501667 0.00200667 0 +0.00602 0 0.00301 0.00200667 0 0 0 0.00702333 +0 0.00501667 0.00301 0 0 0.00200667 0.00200667 0 +0 0.00100333 0.00100333 0.00501667 0.00301 0 0.00100333 0.00200667 +0 0 0.00301 0 0 0.00401333 0 0 +0.00301 0 0.00200667 0.00200667 0.00200667 0 0.00100333 0.00802667 +0 0 0.00401333 0 0.00301 0.00200667 0.00401333 0 +0.00501667 0.00100333 0 0 0.00903 0 0.00602 0 +0.00301 0.00301 0 0.00903 0 0.00200667 0 0.00702333 +0 0.00301 0.00401333 0 0 0.00602 0 0 +0.00401333 0 0 0.00702333 0 0 0 0.00100333 +0.00200667 0.00501667 0 0 0.00100333 0 0.00200667 0 +0 0.00401333 0 0.00401333 0 0.00602 0 0 +0.00200667 0 0.00401333 0 0 0.00602 0 0.00100333 +0.00301 0.00200667 0.00301 0 0 0.00501667 0.00501667 0.00200667 +0 0 0 0.00100333 0 0 0.00401333 0 +0.00100333 0.00200667 0 0 0.00802667 0 0.00501667 0.00100333 +0.00100333 0 0 0.00100333 0.00301 0 0.00200667 0.00100333 +0 0.00401333 0 0.00100333 0.00301 0 0.00100333 0.00200667 +0.00401333 0.00501667 0.00501667 0 0.00903 0.00200667 0 0.00100333 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00702333 0 +0.00903 0.00602 0 0.00501667 0 0.00100333 0.0100333 0.00100333 +0 0 0 0.00602 0.00301 0 0.00100333 0.00200667 +0.00301 0.00501667 0.00301 0 0.00100333 0 0 0.00903 +0 0 0.00301 0.00100333 0 0.00501667 0 0.00301 +0.00200667 0 0.00100333 0 0.00501667 0.00602 0.00100333 0 +0 0.00401333 0.00301 0 0.00200667 0 0.0140467 0 +0.00200667 0.00301 0.00200667 0 0.00100333 0 0.00100333 0 +0 0.00301 0 0.00200667 0.00401333 0 0 0.00200667 +0 0.00401333 0 0.00501667 0.0100333 0 0 0.00702333 +0 0.00401333 0.00501667 0 0.00100333 0 0 0.00200667 +0 0.00200667 0.00401333 0 0.00301 0 0.00501667 0.00301 +0 0.00100333 0 0 0 0.00301 0 0.00602 +0 0.00501667 0 0 0.00200667 0 0.00401333 0 +0 0.00602 0 0.0140467 0 0 0 0.00100333 +0 0.00501667 0.00401333 0 0.00100333 0.00501667 0 0 +0.00301 0 0 0.00100333 0 0 0.00301 0.00401333 +0 0 0 0.00602 0 0 0.00602 0.00401333 +0 0.00903 0.00100333 0 0 0.00602 0 0 +0.00602 0 0.00602 0 0.00602 0 0 0.00602 +0 0.00301 0 0 0.00602 0 0 0.00401333 +0 0 0.00602 0 0 0.01204 0 0 +0 0.00501667 0 0.00602 0.00501667 0 0 0.00602 +0 0 0 0.00401333 0.00401333 0 0 0 +0.00200667 0.00100333 0 0.00401333 0 0.00200667 0.00802667 0 +0.00802667 0 0.00100333 0.00200667 0.00903 0 0 0.00301 +0.00501667 0.00903 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00501667 0.00501667 +0 0.00702333 0.00401333 0 0.00401333 0 0.00602 0.00602 +0.00100333 0.00100333 0 0.00200667 0.00200667 0.00401333 0 0.00401333 +0 0.00501667 0.00702333 0.00200667 0.00200667 0 0 0.00200667 +0.00401333 0 0 0.00401333 0 0 0.00301 0.00100333 +0 0.00401333 0 0.00200667 0 0.00401333 0.00301 0.00401333 +0 0.00100333 0 0.00501667 0 0 0 0.00602 +0 0.00401333 0.00100333 0.00501667 0 0 0.00100333 0.00501667 +0 0.00200667 0 0.00301 0.00401333 0.00200667 0 0 +0 0.00401333 0 0 0.00100333 0.00602 0 0.00602 +0 0 0.00802667 0.00602 0.00301 0 0 0.00200667 +0 0.00903 0.00501667 0 0 0 0 0.00100333 +0.00501667 0 0.00301 0 0 0 0.00100333 0.00702333 +0 0.00301 0.00200667 0.00200667 0 0 0 0.00200667 +0 0.00401333 0 0.00903 0 0.00100333 0 0 +0.00301 0.00100333 0 0.00501667 0 0 0.00301 0.00100333 +0.00200667 0 0 0 0.00200667 0.00200667 0.00903 0 +0 0 0 0 0 0.00401333 0 0 +0 0.00903 0 0.00200667 0.00200667 0 0 0 +0.00100333 0 0.00602 0 0.00100333 0 0.0100333 0.00903 +0 0.00200667 0 0.00702333 0.00501667 0 0 0.0100333 +0 0.00100333 0 0 0.00802667 0 0 0.00301 +0 0.00501667 0 0.0110367 0 0 0 0.00200667 +0 0.00702333 0.00100333 0.00602 0 0 0 0 +0.00200667 0 0.00200667 0 0.00100333 0.0110367 0 0 +0.00301 0.00501667 0.00200667 0.00802667 0 0 0.00100333 0.00903 +0.00401333 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00401333 0.00602 0 +0.00100333 0 0.00702333 0.00401333 0.00401333 0 0.00401333 0.00200667 +0.00501667 0 0.00301 0 0.00301 0.00200667 0.00200667 0 +0.00401333 0 0.00200667 0.00802667 0 0.00200667 0 0 +0.00401333 0.00200667 0 0.00200667 0.00501667 0 0 0.00501667 +0.00602 0 0.00602 0.00301 0 0.00401333 0.00301 0.00100333 +0 0.00501667 0 0 0.00301 0.00100333 0.00100333 0.00501667 +0 0.00200667 0 0.0100333 0 0 0 0.00100333 +0.00100333 0.00401333 0 0 0 0.0140467 0 0.00602 +0 0.00401333 0 0 0.00501667 0 0 0.00200667 +0.00301 0 0.00301 0.00301 0.00802667 0 0 0.00301 +0 0.00401333 0.00602 0 0 0 0 0.00100333 +0.00200667 0 0 0 0 0 0 0.00602 +0 0 0.00301 0 0.00100333 0 0 0.00301 +0 0.00200667 0 0.00401333 0 0.00401333 0 0.00401333 +0.00903 0 0 0.00501667 0 0 0.00301 0.00100333 +0.00301 0 0.00100333 0 0.00903 0.00401333 0.00501667 0.00100333 +0 0.00100333 0 0 0.00100333 0.00100333 0 0.00200667 +0.00401333 0.00602 0 0.00100333 0 0 0.00200667 0 +0 0 0.00702333 0 0 0.00100333 0.0100333 0.00200667 +0 0.00501667 0 0.0110367 0 0.00100333 0 0.00501667 +0 0.00100333 0 0.00301 0.00100333 0.00401333 0 0.00501667 +0 0.00301 0.00200667 0.00301 0 0 0.00501667 0.00401333 +0.00100333 0.00702333 0 0 0.00301 0 0 0.00501667 +0.00200667 0 0.00401333 0.00301 0.00702333 0 0 0.00802667 +0.00702333 0.00401333 0.00200667 0 0 0.00301 0.00602 0 +0.00200667 0 0.00602 0.0110367 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00100333 0.00401333 0.00802667 +0 0.00100333 0 0.00301 0.00501667 0.00200667 0 0 +0.00301 0.00401333 0.00200667 0.00100333 0 0.00602 0.00401333 0 +0 0 0 0.00602 0 0.00200667 0.00501667 0 +0 0.00100333 0.00903 0 0.00501667 0.00602 0 0.00100333 +0.00200667 0.00301 0 0.00903 0 0 0 0.00702333 +0 0.00501667 0.00100333 0 0 0 0 0.00401333 +0 0.00200667 0 0 0.00301 0 0.00401333 0 +0.00501667 0 0.00200667 0 0 0.0100333 0.00301 0.00301 +0 0.00401333 0 0 0.00802667 0 0 0.00401333 +0.00301 0 0 0.00301 0.00903 0 0.00100333 0.00100333 +0 0 0.00401333 0 0 0.00301 0 0.00100333 +0 0 0 0 0.00200667 0 0 0 +0.00100333 0 0.00501667 0.00301 0.00301 0 0.00100333 0 +0.00401333 0 0 0 0 0 0 0.00200667 +0.00802667 0 0 0.0110367 0 0 0 0 +0.00100333 0 0 0 0.00702333 0 0.00100333 0.00802667 +0 0 0 0 0.00100333 0 0.00602 0 +0.00401333 0.00200667 0 0 0.00200667 0 0 0 +0.00100333 0 0.00200667 0.00401333 0 0 0.01505 0 +0 0.00501667 0.00401333 0 0.00100333 0.00100333 0 0.00602 +0 0.00401333 0 0.00702333 0 0.00802667 0 0.00200667 +0 0.00501667 0 0.00401333 0 0.00501667 0.00301 0.00200667 +0.00200667 0 0 0.00301 0.00200667 0 0.00301 0 +0.00501667 0.00301 0.00100333 0.00100333 0.00401333 0 0.00401333 0.00602 +0.00501667 0 0 0.00100333 0 0.00702333 0.00301 0 +0.00501667 0 0.00802667 0.00702333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00401333 0.0130433 0.00301 0.00602 0 +0.00501667 0.00200667 0.00301 0.00301 0 0.00802667 0.00200667 0 +0 0 0.00602 0 0.00301 0 0.00200667 0.00501667 +0.00200667 0 0.00100333 0 0.00200667 0 0.00100333 0.00301 +0 0 0.00200667 0.00702333 0 0.00401333 0 0 +0.00301 0.00702333 0 0.00401333 0.00802667 0 0.00200667 0 +0 0.00602 0.00401333 0.00100333 0 0.00100333 0.00100333 0 +0 0.00200667 0.00100333 0.00401333 0 0 0.00200667 0.0100333 +0 0.00200667 0 0.00702333 0 0 0.00401333 0.00401333 +0.00501667 0 0.00100333 0.00100333 0 0.00903 0 0.00100333 +0 0.00401333 0 0 0.00903 0 0 0.00200667 +0 0 0.00602 0 0 0 0 0.00100333 +0 0.00301 0 0 0.0110367 0 0.00301 0 +0.00200667 0 0.00301 0 0.00100333 0.00100333 0 0 +0.00301 0.00100333 0.00200667 0.00200667 0.00301 0 0.00602 0 +0.00602 0.00301 0 0.00903 0 0 0.00100333 0 +0.00100333 0 0 0 0.00200667 0 0.00602 0.00602 +0 0 0.00702333 0 0.00200667 0.00401333 0.00100333 0 +0.00602 0 0.00301 0 0.00200667 0 0 0.00401333 +0 0.00100333 0.00401333 0 0 0.00401333 0.00501667 0.00100333 +0 0 0.00602 0.00200667 0.00100333 0 0.00501667 0.00301 +0 0.00200667 0 0 0.00301 0.00301 0 0.00100333 +0.00200667 0.00501667 0 0.0100333 0 0.00100333 0.00100333 0.00100333 +0.00100333 0 0.00100333 0.00200667 0.00100333 0.00301 0.00100333 0.00301 +0 0.00501667 0 0.00501667 0 0.00100333 0.00301 0.00501667 +0 0 0 0.0110367 0 0.0100333 0.00100333 0.00100333 +0 0.00602 0.00100333 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00200667 0.00301 0.00301 0.00401333 0.00702333 +0.00100333 0.00602 0 0.00501667 0.00100333 0 0.00702333 0.00702333 +0 0 0 0.00200667 0.00100333 0.00301 0 0.00802667 +0.00200667 0.00100333 0.00401333 0 0 0 0 0.00301 +0.00802667 0 0 0.00301 0 0.0100333 0 0 +0 0.00602 0.00100333 0 0.00802667 0.00100333 0 0 +0.00301 0.00501667 0 0.00200667 0.0110367 0 0 0.00903 +0 0 0.00401333 0.00401333 0 0 0.00401333 0.00401333 +0.00702333 0 0 0.00100333 0.00301 0 0 0.00401333 +0.00401333 0.00200667 0.00301 0 0.00301 0.00401333 0 0 +0 0.00100333 0.00200667 0 0 0 0 0 +0.00200667 0 0.00100333 0.00100333 0 0 0 0.00200667 +0 0.00301 0 0 0.00802667 0 0 0.00602 +0 0 0.00200667 0 0.00100333 0.00100333 0 0 +0 0.00100333 0 0 0.00401333 0 0 0.00301 +0.00100333 0 0 0.00301 0 0.00100333 0 0 +0 0 0.00100333 0 0 0.00903 0.00903 0 +0 0.00200667 0.00401333 0 0.00401333 0.00200667 0.00401333 0 +0.00401333 0.00100333 0.00301 0 0.00200667 0 0.00200667 0.00602 +0 0.00602 0.00602 0 0 0.00903 0 0.00903 +0 0 0.00401333 0 0.00200667 0 0.00301 0.00401333 +0 0.00401333 0 0.00301 0.00602 0.00301 0 0.00702333 +0.00401333 0 0.00100333 0.00501667 0 0.00401333 0.00602 0 +0 0 0.00200667 0 0.00401333 0.00100333 0.00401333 0 +0.00501667 0 0 0.00401333 0 0 0.00501667 0 +0 0 0.0130433 0.00200667 0.00501667 0 0 0.00401333 +0.00702333 0 0 0 0.00200667 0.0100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00301 0.00501667 0.00501667 0.00200667 0 0.00702333 +0.00100333 0.00200667 0.00501667 0 0.00200667 0.00301 0.00100333 0.00401333 +0.00200667 0 0.00501667 0 0 0 0.00200667 0 +0.00802667 0.00301 0 0.00401333 0.00702333 0 0 0 +0.00200667 0.00200667 0 0.00301 0 0.00401333 0.00501667 0.00200667 +0 0 0.00200667 0.00100333 0 0.00401333 0.00401333 0 +0 0.00401333 0.00702333 0 0.00100333 0.00802667 0 0.00200667 +0.00100333 0 0 0.00301 0.00501667 0 0 0.00501667 +0.00602 0 0.00100333 0.00200667 0.00100333 0.00301 0 0.00200667 +0.00602 0 0 0.00401333 0 0 0 0.00100333 +0 0 0 0 0 0 0.00501667 0 +0.00200667 0.00401333 0 0 0 0.00602 0 0.00100333 +0.00301 0 0.00501667 0.00100333 0 0.00401333 0 0.00602 +0 0.00301 0.00200667 0.00200667 0 0.00200667 0 0 +0 0.00301 0 0 0 0 0 0.00100333 +0 0.00301 0.00602 0 0 0 0.00401333 0 +0 0 0 0 0 0.00301 0.00802667 0 +0 0.00401333 0 0 0 0.00301 0 0.00702333 +0 0.00602 0.00401333 0 0.00100333 0.00100333 0.00401333 0.00301 +0 0.00802667 0 0 0.00301 0.00200667 0.00200667 0.00602 +0 0 0.00602 0 0.00301 0 0.00200667 0.00401333 +0 0 0.00200667 0.00100333 0.00802667 0 0.00301 0.00100333 +0.00401333 0 0.0100333 0 0 0.00702333 0 0 +0 0.00301 0.00602 0.00301 0.00200667 0.00301 0 0.00702333 +0 0.00301 0 0.00401333 0 0.00200667 0.00401333 0.00200667 +0 0.00100333 0.00401333 0 0.00301 0 0.00401333 0.00602 +0.00200667 0 0.00602 0 0.00501667 0.00702333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0.00100333 0.00100333 0 0.00200667 0.00200667 0 +0.00401333 0.00200667 0 0.00702333 0.00200667 0.00200667 0 0 +0.00301 0.00100333 0.00301 0.00702333 0 0 0 0.00401333 +0 0.00301 0.00702333 0 0 0.00903 0 0.00301 +0.00301 0 0 0 0 0 0.00802667 0.00200667 +0 0.00602 0 0 0.00200667 0 0.00401333 0 +0.00401333 0 0.00501667 0.00200667 0 0 0 0.00100333 +0.00602 0 0 0.00200667 0 0.00401333 0 0.00100333 +0.00200667 0 0.00200667 0.00200667 0 0.00401333 0.00200667 0 +0 0.00501667 0 0 0.00602 0 0 0.00200667 +0 0 0.00100333 0.00100333 0 0 0.00501667 0 +0.00501667 0.00100333 0.00200667 0 0.00100333 0.00200667 0 0 +0.00200667 0 0 0.00301 0 0.00602 0 0.00301 +0 0.00501667 0 0 0 0.00100333 0 0 +0 0.00301 0 0 0.00802667 0 0 0 +0 0.00501667 0 0.00100333 0 0.00100333 0.00200667 0 +0.00100333 0 0 0.00602 0.00301 0 0 0 +0.00501667 0 0 0 0.00100333 0 0.00501667 0.00100333 +0 0.01204 0 0 0.00401333 0 0.00501667 0.00602 +0 0.00100333 0 0.00602 0.00100333 0 0.00501667 0 +0 0 0.00501667 0 0.00501667 0 0.00401333 0.00100333 +0.00100333 0.00200667 0 0 0.00401333 0.00301 0 0 +0.00200667 0.00401333 0.00100333 0 0.00802667 0.00401333 0 0 +0.00401333 0.00702333 0.00200667 0 0 0 0.00100333 0.00702333 +0.00301 0 0.00401333 0 0.00602 0 0.00100333 0 +0.00100333 0.00501667 0.00401333 0 0.00301 0.00200667 0.00301 0.00100333 +0 0.00200667 0.00200667 0 0.00802667 0.00501667 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0140467 0 0.00301 0.00301 0 0.00501667 0.00401333 +0 0.00200667 0.00401333 0 0.00301 0.00501667 0.00200667 0 +0.00200667 0.00401333 0 0 0.00903 0 0 0 +0.00501667 0 0.00501667 0.00301 0 0 0.00602 0 +0.00702333 0.00903 0 0 0 0 0.00100333 0.01204 +0 0 0.00702333 0 0.00301 0 0.00301 0 +0 0 0 0.00200667 0 0.00401333 0 0 +0.00802667 0 0 0 0 0.00903 0 0 +0.00100333 0.00602 0 0.00301 0 0.00200667 0.00200667 0.00401333 +0 0 0.00401333 0 0.00501667 0 0 0 +0 0 0.00301 0.00200667 0.00200667 0.00200667 0 0 +0.00200667 0.00100333 0.00702333 0 0 0 0 0.00702333 +0 0 0 0 0 0.00501667 0 0 +0 0.00200667 0 0 0.00401333 0 0 0 +0 0 0 0 0.00802667 0 0 0.00100333 +0 0 0 0.0100333 0 0.00100333 0 0 +0 0.00100333 0 0.00602 0 0 0 0 +0 0 0 0 0.00100333 0 0 0.00200667 +0 0.00602 0 0.0110367 0 0.00401333 0.00301 0 +0 0 0 0.00401333 0 0 0.00100333 0 +0 0.00200667 0 0.00200667 0.00602 0 0.00903 0.00100333 +0 0 0.00200667 0.00301 0.0110367 0 0 0 +0.00702333 0 0 0 0.00200667 0 0 0.00602 +0.0100333 0.00301 0 0 0.00602 0.00100333 0.00602 0 +0 0.00100333 0 0.00200667 0 0 0 0.00802667 +0.00401333 0 0 0 0.00200667 0 0.00200667 0.00501667 +0.00301 0.00100333 0.00301 0.00200667 0.00602 0.00401333 0.00702333 0.00802667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0 0.0130433 0.00100333 0 0.00200667 0 0.00903 +0.00903 0 0.00200667 0 0.00100333 0 0.00100333 0.00602 +0.00401333 0 0 0.00100333 0.00200667 0.00200667 0 0 +0.00702333 0 0 0.00501667 0.00702333 0 0.00301 0 +0 0.00501667 0.00401333 0.00301 0.00501667 0 0 0.00301 +0.00602 0 0.00501667 0.00602 0 0.00802667 0 0 +0.00401333 0 0.00301 0.00100333 0.00301 0 0 0.00401333 +0 0.00200667 0.00501667 0 0 0.00200667 0 0.00200667 +0 0.00802667 0.00501667 0.00301 0 0 0.0100333 0 +0 0 0.00100333 0 0 0 0.0100333 0 +0 0 0 0.00802667 0 0.00602 0 0 +0 0.00401333 0.00301 0.00100333 0 0 0 0.00401333 +0 0 0 0 0 0.00702333 0 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0.00401333 0.00100333 0 0.00301 0 +0.00100333 0 0 0.00401333 0 0 0 0 +0 0 0.00501667 0.00200667 0 0 0.00100333 0 +0 0.00200667 0.00100333 0 0 0 0 0 +0.00200667 0.00903 0 0 0 0.00100333 0.00100333 0.00301 +0 0 0.00200667 0 0 0 0.00802667 0 +0.00401333 0 0 0.00200667 0.00301 0 0 0 +0 0.00401333 0.00802667 0.00301 0.00602 0 0.00100333 0.00501667 +0.00301 0 0 0.00401333 0.00200667 0 0 0.00602 +0.00401333 0 0 0 0.01204 0.00100333 0.00200667 0 +0.00501667 0 0.00301 0.00401333 0 0.00301 0.00301 0.00100333 +0 0 0.00100333 0.00401333 0.00501667 0.00200667 0.00100333 0.00200667 +0 0.01204 0 0.00602 0.00301 0 0.00401333 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0.00200667 0.00100333 0 0.00903 0.00401333 0.00401333 0.00301 0 +0.00301 0 0.00301 0.00501667 0.00100333 0.00100333 0 0.00100333 +0.00401333 0.00100333 0 0 0.00602 0.00501667 0.00100333 0 +0.00301 0.00401333 0.00100333 0 0.00100333 0.00100333 0.00702333 0 +0.00100333 0 0 0 0 0.00602 0.00100333 0 +0.00401333 0 0.00501667 0 0.00100333 0.00802667 0.00501667 0 +0.00602 0 0 0.00301 0 0.00501667 0 0 +0.00301 0.00401333 0.00501667 0 0 0.00200667 0 0 +0 0 0.0130433 0.00301 0 0 0.00200667 0.00702333 +0 0 0 0.00100333 0 0 0.00401333 0.00301 +0 0.00200667 0 0.00401333 0.00100333 0 0 0 +0 0 0.00100333 0.00100333 0 0 0.00401333 0 +0 0 0 0 0 0 0.0100333 0 +0.00602 0 0.00301 0 0 0 0 0.00301 +0 0 0 0.00100333 0 0 0 0 +0 0 0 0 0.00100333 0 0 0 +0 0 0.00501667 0 0 0 0 0 +0.00100333 0 0.00401333 0.00100333 0 0 0 0 +0.0100333 0.00301 0 0.00100333 0 0.00100333 0.00100333 0.00100333 +0 0 0.00602 0.00802667 0 0 0.00903 0 +0.00802667 0 0 0.00401333 0 0 0.00100333 0.00501667 +0.00401333 0 0.00903 0 0 0 0 0.00702333 +0 0 0.00602 0.00602 0.00100333 0 0 0.0110367 +0 0.00100333 0.00401333 0.00702333 0.00301 0 0 0.00501667 +0 0.00602 0.00401333 0 0 0 0 0.00301 +0.00200667 0.00100333 0.00100333 0.00702333 0 0 0.00602 0 +0 0 0.00200667 0.00401333 0 0.00702333 0.00200667 0.00602 +0.00903 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00200667 +0.00602 0.00401333 0.00200667 0 0.00301 0.00401333 0.00602 0.00200667 +0 0 0 0 0.00602 0.00501667 0.00100333 0 +0.00100333 0.00100333 0 0 0.00501667 0.00802667 0.00301 0.00100333 +0 0.0100333 0 0 0 0.00501667 0.00602 0.00100333 +0 0.00702333 0 0 0 0.00301 0 0.00100333 +0 0.00100333 0.00602 0.00200667 0 0.00903 0.00301 0 +0.00602 0 0 0 0 0.00301 0.00501667 0 +0 0.00702333 0.00301 0 0.00301 0 0 0.00100333 +0 0 0.00802667 0 0.00401333 0.00401333 0 0.00501667 +0 0 0 0.00100333 0 0 0.00401333 0.00100333 +0 0.00100333 0 0 0 0 0.00301 0 +0 0.00200667 0 0 0 0 0.00100333 0 +0 0 0 0 0 0 0.00301 0 +0.00100333 0.00100333 0 0 0 0.00301 0 0 +0 0 0 0.00401333 0 0 0 0 +0 0.00401333 0 0.00100333 0 0 0 0 +0.00200667 0 0 0.00200667 0 0 0 0 +0 0 0.00100333 0.00301 0 0.00602 0 0 +0.00501667 0.00100333 0 0.00301 0 0 0 0.00301 +0.00702333 0 0.00903 0.00200667 0 0 0.00401333 0 +0.00301 0 0.00401333 0 0 0.00401333 0.00401333 0.00501667 +0 0 0.00602 0 0.00602 0 0 0.00802667 +0 0.00401333 0.00301 0 0 0.00100333 0.00200667 0.00501667 +0.00401333 0 0 0.00200667 0 0 0.00301 0 +0.00602 0.00602 0 0 0 0.00100333 0.00702333 0.00702333 +0 0 0.00903 0 0 0.00903 0 0 +0.00100333 0 0.00702333 0 0.0100333 0.00501667 0 0.00602 +0 0.00501667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00602 0.00401333 +0.00100333 0.00401333 0.00401333 0.00200667 0 0.00200667 0.00100333 0.00301 +0.00501667 0.00401333 0 0 0 0.00301 0.00602 0 +0 0.00401333 0 0.00100333 0 0.00802667 0.00702333 0.00100333 +0 0.00200667 0.00100333 0.00401333 0.00100333 0 0.00100333 0.00602 +0.00200667 0.00100333 0.00602 0 0 0 0.00602 0.00301 +0 0 0.00401333 0.00501667 0 0.00100333 0.00401333 0 +0 0 0.00602 0 0 0.00200667 0.00602 0.00100333 +0 0 0.00401333 0 0 0.00100333 0 0.0100333 +0 0 0.00401333 0 0 0.01204 0 0.00802667 +0 0 0 0 0.00702333 0 0.00301 0 +0 0 0.00301 0 0 0 0.00200667 0 +0 0 0 0 0 0.00100333 0 0 +0 0 0 0 0 0 0.00200667 0 +0 0.00100333 0 0 0 0 0 0 +0 0 0 0.00100333 0 0 0.00100333 0 +0 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0 0.00401333 0 +0 0.00100333 0 0.00602 0 0.00401333 0 0 +0 0 0 0.00200667 0.00602 0 0.00100333 0.00903 +0.00301 0 0 0.00401333 0 0.00100333 0.00200667 0 +0.00200667 0.00301 0 0 0 0 0.00602 0 +0.00501667 0 0 0 0.00301 0.00100333 0.00200667 0.00602 +0.00501667 0 0 0 0 0.00100333 0.00802667 0 +0.00401333 0 0 0.00702333 0 0.00501667 0 0.00100333 +0.00802667 0 0 0 0.0100333 0.00501667 0.00802667 0 +0 0 0 0 0.00702333 0 0 0.00100333 +0.00301 0.00602 0.00401333 0.00802667 0.00301 0 0 0.00301 +0.00301 0.00602 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0110367 0.00802667 +0 0 0.00100333 0.00602 0 0.00200667 0.00501667 0 +0 0.00200667 0.00501667 0 0 0.00301 0.00501667 0.00401333 +0 0 0.00501667 0 0 0 0.00702333 0.00602 +0 0.00401333 0.00301 0 0 0.00301 0 0.00301 +0.00200667 0 0.0100333 0.00100333 0.00100333 0 0 0.00301 +0.00200667 0 0.00200667 0.00301 0 0 0.00602 0 +0.00100333 0 0.00301 0.00100333 0 0 0 0.00100333 +0.00200667 0 0 0.00100333 0.00602 0.00100333 0 0 +0 0 0 0.00100333 0 0.00401333 0.00100333 0 +0.01204 0 0 0 0.00903 0 0.00100333 0 +0 0 0.00501667 0 0 0 0.00602 0 +0 0 0 0.00100333 0 0 0 0.00702333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00301 0 0 +0 0 0 0 0 0.00301 0 0.00602 +0 0 0 0 0 0 0.00702333 0 +0 0 0.00301 0.01204 0 0.00602 0 0 +0.00401333 0 0 0.00301 0 0.0100333 0 0 +0.00301 0 0.00301 0 0.00401333 0.00200667 0.00200667 0.00200667 +0.00100333 0 0 0.00100333 0.00501667 0 0.00501667 0 +0.00100333 0.00100333 0 0.00702333 0 0 0 0.00100333 +0 0 0.00100333 0.00802667 0.00501667 0.00200667 0 0 +0 0.00301 0 0.00501667 0 0 0.00200667 0 +0.00903 0.00501667 0.00401333 0.00602 0 0 0.00401333 0.00501667 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00501667 0.00802667 +0.00702333 0.00100333 0 0.00200667 0.00501667 0 0 0.00602 +0.00100333 0.00100333 0 0.00401333 0 0 0 0.00602 +0.00501667 0 0.00301 0.00401333 0.00100333 0 0 0.00401333 +0.00100333 0 0.01204 0 0 0.00100333 0 0 +0.00401333 0 0.00100333 0.00501667 0.00200667 0.00100333 0 0.00100333 +0.00401333 0 0 0.00903 0 0 0.00100333 0 +0.00100333 0.00100333 0 0.00501667 0 0 0 0.00200667 +0.01204 0 0.00501667 0 0 0 0.00301 0.00200667 +0 0.00602 0 0 0 0 0.00401333 0 +0.00200667 0 0 0 0 0 0 0 +0.00702333 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0 0 0 0.00100333 0 0 +0.00301 0 0.00501667 0 0 0.00702333 0 0.00200667 +0.00200667 0 0.00301 0 0 0.00401333 0 0.00401333 +0 0 0.00200667 0 0.00301 0.00401333 0 0.00301 +0 0.00301 0 0.00301 0 0.00301 0.00301 0.00200667 +0.00501667 0 0.00200667 0.00301 0 0 0.00200667 0 +0 0.00401333 0.00501667 0.00401333 0 0 0.00301 0 +0 0.00903 0.00301 0 0.00602 0.00301 0.00401333 0.00100333 +0.00501667 0.00301 0.00401333 0 0.00401333 0.00200667 0.00501667 0 +0.00301 0.00401333 0.0110367 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00702333 0.00501667 0 0.00200667 +0.01204 0.00501667 0 0 0.00401333 0.0100333 0 0 +0 0 0.00602 0 0 0 0.00100333 0 +0.00100333 0.00702333 0 0.00100333 0.00501667 0 0.00301 0.00501667 +0.00200667 0.00100333 0 0.0100333 0 0 0.00100333 0.00200667 +0 0 0.00200667 0.00501667 0.00301 0.00100333 0 0.00100333 +0.00401333 0.00301 0 0 0.00702333 0 0 0.00100333 +0 0 0 0.00501667 0 0 0 0 +0.00702333 0.00702333 0 0 0 0.00100333 0 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0 0 0 +0 0 0 0 0.00301 0 0 0 +0.00301 0 0.00501667 0 0 0 0 0 +0.00100333 0 0.00602 0 0.00602 0 0 0.00200667 +0 0 0.00702333 0 0.00702333 0.00602 0 0 +0.00100333 0.00200667 0 0.00100333 0.00401333 0 0 0.00602 +0.00200667 0 0.00200667 0.00200667 0 0.0100333 0 0.00702333 +0 0 0.00602 0 0 0 0 0.00401333 +0 0.00200667 0.00501667 0 0.00301 0.00501667 0 0 +0.00702333 0.00301 0 0.00802667 0.00802667 0.00602 0 0 +0.0110367 0 0 0.00501667 0 0.00100333 0 0 +0.0100333 0.00200667 0.00602 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00702333 0.00401333 0.00200667 0 +0 0.00602 0.00903 0.00100333 0 0 0.00401333 0.00200667 +0 0.00200667 0 0.00903 0.00401333 0 0 0 +0 0.00702333 0.00200667 0 0 0.00602 0 0.00301 +0.00602 0.00401333 0 0.00100333 0.00802667 0 0 0 +0.00301 0 0 0 0.00602 0.00401333 0.00301 0 +0 0 0.00200667 0 0.00401333 0.00501667 0 0 +0.00301 0 0 0 0 0.00100333 0.00200667 0 +0.00301 0.00401333 0.00602 0 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00401333 0 0 0.00100333 0 0 +0 0 0 0.00501667 0.00100333 0 0.00602 0 +0 0 0 0.00100333 0.00100333 0 0 0.00200667 +0.00100333 0 0 0.00702333 0 0.00200667 0.00501667 0.00401333 +0 0 0.00802667 0 0.00501667 0.00401333 0 0 +0.00301 0 0.00602 0 0 0 0.00802667 0 +0 0.00802667 0 0.00602 0.00200667 0 0 0 +0.00602 0 0.00200667 0.00802667 0.00100333 0 0 0.0140467 +0 0 0 0 0.00602 0 0 0.01204 +0.00301 0.00200667 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00301 0.00702333 0 0 +0.00301 0.00802667 0.00401333 0.00501667 0.00200667 0.00200667 0 0 +0.0100333 0 0 0 0.00301 0.00200667 0 0 +0 0 0.00602 0 0 0.00501667 0 0.00401333 +0.00100333 0.00401333 0.00200667 0 0 0.0100333 0.00501667 0 +0 0.00200667 0 0 0.00200667 0 0.00501667 0.00301 +0.00401333 0 0 0.00200667 0 0 0.00501667 0.00301 +0 0 0.00903 0.00401333 0 0 0.00100333 0 +0 0 0.00401333 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0 0.00401333 0 0.00301 0 0 +0.00301 0 0.0130433 0 0 0 0.00200667 0.00100333 +0 0 0 0.00200667 0 0.00802667 0.0100333 0 +0 0.0100333 0.00602 0 0.00401333 0.00100333 0.00100333 0.00200667 +0 0.00100333 0.00602 0.00301 0.00100333 0.00100333 0 0 +0.00702333 0 0 0.00200667 0 0.00501667 0.00301 0.00301 +0 0 0.00802667 0.00200667 0 0 0.00702333 0.00200667 +0 0 0.00200667 0.00501667 0 0.00100333 0.00702333 0.00702333 +0 0 0 0.00401333 0.0100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0 0.00200667 0.00501667 0.00301 +0 0 0.00501667 0.00802667 0.00501667 0 0.00301 0.00100333 +0.00301 0.00802667 0.00200667 0 0.00301 0.00501667 0 0 +0.00301 0 0 0.00702333 0 0 0 0 +0 0.00602 0 0.00602 0.00200667 0 0.00602 0.00602 +0.00301 0 0.00602 0 0 0.00401333 0.00501667 0 +0.00301 0 0 0.00702333 0.00301 0 0.00200667 0.00100333 +0.00501667 0 0 0.0110367 0.00702333 0 0.00301 0 +0.00200667 0 0 0 0.00501667 0 0 0.00100333 +0 0 0 0 0 0 0.00802667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00501667 0 0 0 0 +0 0.00200667 0 0 0 0 0.00200667 0 +0 0.00702333 0.00200667 0 0 0.00301 0.00200667 0 +0.0100333 0.00401333 0 0.00501667 0 0 0.00602 0 +0.00401333 0.00602 0 0 0.00200667 0 0 0.00501667 +0 0.0100333 0 0 0.00301 0 0 0 +0 0.00802667 0.00100333 0 0.00301 0 0 0 +0 0.00702333 0 0 0 0.00200667 0.00702333 0.00100333 +0 0.00602 0 0 0 0.00802667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.01204 0.00802667 0 0 0 0 +0.00702333 0.00301 0.00100333 0.00301 0 0.00702333 0 0 +0 0.00200667 0.00602 0 0 0.00100333 0.00501667 0.00100333 +0 0.00501667 0 0 0.00602 0.00200667 0 0 +0 0 0.00401333 0 0.00401333 0.00200667 0.00100333 0 +0.00903 0 0.00100333 0.00702333 0 0 0 0.00301 +0 0.00501667 0 0 0 0.00301 0 0.00501667 +0.00100333 0 0 0 0.00501667 0.00501667 0.01204 0 +0 0.00100333 0 0 0 0 0 0.00702333 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0.00200667 0 0 0 0 +0.00401333 0 0.00100333 0 0 0.00200667 0.00200667 0 +0.00200667 0.00100333 0 0 0.00301 0.00903 0 0 +0.01204 0 0.00501667 0.00200667 0 0.00702333 0.00301 0 +0 0.00100333 0 0.00702333 0.00702333 0.00602 0 0 +0.0100333 0 0 0 0.00401333 0.00301 0 0.00200667 +0.00401333 0 0.00200667 0.00301 0 0.00301 0 0 +0.00903 0.00100333 0 0.00802667 0.00200667 0.00200667 0.00401333 0 +0.00501667 0 0 0.00200667 0.00602 0.00802667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00903 0.00903 0.00100333 0 0.00200667 +0 0 0.00100333 0 0.00501667 0.00100333 0.00501667 0.00100333 +0.00200667 0.00301 0 0.00602 0 0 0 0 +0.00100333 0 0.00100333 0.00200667 0 0 0.00301 0.00301 +0 0 0.00301 0 0.00702333 0 0.00301 0 +0.00602 0.00702333 0.00401333 0 0 0.00501667 0.00602 0 +0 0 0.00200667 0.00301 0 0 0 0 +0.00802667 0.00401333 0 0 0 0.00401333 0 0.00301 +0 0.00301 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0280933 0.0862867 0.145483 0.208693 0.278927 0.341133 0.41237 +0.44849 0.48762 0.521733 0.524743 0.539793 0.536783 0.534777 0.53277 +0.512703 0.491633 0.444477 0.422403 0.37324 0.317053 0.26488 0.2107 +0.161537 0.119397 0.0702333 0.0301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00301 0 0 0 0 0.00301 0.00301 0 +0.00401333 0 0 0.01204 0 0.00100333 0.00200667 0.00602 +0 0 0.00501667 0 0.00602 0.00301 0 0 +0.00100333 0 0.00702333 0.00802667 0 0 0 0.0110367 +0 0 0 0 0.00602 0 0.00702333 0 +0 0.00501667 0.00602 0 0 0 0 0.0130433 +0.00200667 0.00301 0 0 0 0.00802667 0.00602 0.00401333 +0 0 0.00602 0.00100333 0.00401333 0.00301 0.0100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.01204 0.00200667 0 0.00802667 0.00602 0.00501667 0.00301 +0.00501667 0 0 0.00100333 0 0.00301 0 0 +0 0 0.00501667 0.00501667 0.00401333 0 0 0 +0 0.00100333 0 0 0 0 0 0 +0.00100333 0 0 0 0.00200667 0.00702333 0 0.00200667 +0 0.00702333 0.00602 0.00501667 0 0 0.00200667 0.00802667 +0.00200667 0 0.00200667 0.00702333 0.00200667 0.00401333 0 0 +0 0.0130433 0.00702333 0 0.00100333 0 0.00802667 0 +0 0 0 0 0.00702333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0290967 0.11739 0.22274 0.374243 0.527753 0.693448 +0.844144 0.944536 0.99648 1.01822 1.03393 1.04963 1.04903 1.05567 +1.05809 1.05567 1.05446 1.05748 1.05507 1.05326 1.05628 1.05386 +1.05688 1.0593 1.05386 1.05748 1.05386 1.05567 1.04601 1.03695 +1.02487 1.01339 0.978964 0.943328 0.867328 0.723072 0.563873 0.435447 +0.286953 0.163543 0.0652167 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00301 0 0 0.00200667 0 +0 0 0.00802667 0.00100333 0 0.00501667 0 0 +0 0.00602 0 0.00903 0.00100333 0 0 0.01204 +0 0 0 0.00301 0 0 0.00100333 0 +0.00200667 0.00200667 0.00200667 0.00802667 0 0 0 0 +0.00301 0.00301 0.00702333 0 0.00200667 0 0.0110367 0 +0 0 0 0 0.01204 0.00501667 0 0 +0 0.00501667 0.00301 0.00200667 0.00702333 0.0100333 0.00501667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00602 0.00301 0.00100333 0.00100333 0 0.00401333 +0.00200667 0.00602 0 0.00100333 0.00200667 0.00501667 0.00401333 0.00200667 +0 0 0 0.00501667 0.00301 0.00301 0 0.00200667 +0.00100333 0 0 0.00301 0 0.00200667 0.00702333 0 +0 0 0 0.00501667 0 0 0.00401333 0.00100333 +0 0 0.00200667 0.00401333 0.00702333 0.00301 0 0 +0.00501667 0 0.00301 0.00401333 0.00702333 0.00501667 0 0 +0 0 0.0100333 0.00100333 0 0 0 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0341133 0.143477 0.317053 +0.52374 0.752696 0.94212 1.01098 1.03816 1.05567 1.0593 1.0599 +1.05326 1.04842 1.05567 1.04963 1.05446 1.04782 1.05688 1.05144 +1.05144 1.05024 1.04601 1.05446 1.04299 1.04782 1.0454 1.04842 +1.04359 1.04903 1.0454 1.05144 1.0454 1.04903 1.0454 1.0442 +1.05507 1.05144 1.05205 1.05869 1.06292 1.05628 1.06171 1.0593 +1.0448 1.02487 0.972924 0.87248 0.65996 0.46053 0.260867 0.11438 +0.0130433 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00702333 0.00401333 0 0 0.00301 0 0 +0 0 0.00702333 0.00100333 0 0 0.00100333 0 +0 0 0.00401333 0 0 0.00200667 0 0 +0.0110367 0.00401333 0 0 0 0 0.00200667 0.00501667 +0.00802667 0.00903 0.00200667 0 0 0 0 0 +0.00802667 0 0.00200667 0.00802667 0 0 0 0 +0.00200667 0.00301 0.00100333 0.00602 0.00602 0.00100333 0.00200667 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00501667 0.00702333 0.00501667 0.00100333 0 0.00602 0.00301 0.00401333 +0.00401333 0 0 0 0 0.00100333 0.00602 0.00602 +0.00501667 0 0 0 0.00802667 0.00100333 0.00301 0.00100333 +0.00702333 0.00501667 0 0 0 0 0 0.00802667 +0.00200667 0 0 0 0.00602 0 0.00200667 0.00100333 +0.00301 0.00200667 0 0 0 0.00802667 0 0 +0.00200667 0 0 0.00602 0 0.01204 0.00301 0 +0.00301 0 0 0.0100333 0 0 0 0 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0591967 0.20769 0.450497 0.71792 0.943932 1.014 1.04903 +1.06111 1.05809 1.0599 1.05567 1.05205 1.04963 1.05084 1.0454 +1.05024 1.04238 1.04057 1.03936 1.04661 1.0454 1.03997 1.03695 +1.04359 1.04359 1.03332 1.04057 1.03695 1.03634 1.03393 1.03755 +1.03634 1.03695 1.03997 1.04057 1.03212 1.03997 1.03876 1.04178 +1.04299 1.03695 1.04178 1.05144 1.03816 1.04238 1.04963 1.04963 +1.04903 1.05446 1.05688 1.05869 1.06594 1.06171 1.03695 0.9995 +0.89824 0.62776 0.383273 0.166553 0.0381267 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00100333 0.00401333 +0.00301 0 0 0.00200667 0 0.00100333 0 0.00501667 +0 0.00200667 0 0 0 0 0.00802667 0 +0.00100333 0.00100333 0 0.00602 0.00301 0.00100333 0 0.00401333 +0.00401333 0 0 0.00602 0 0.00100333 0.00401333 0.00602 +0.00200667 0.00100333 0 0 0 0.00100333 0.00501667 0.00501667 +0 0 0.00903 0 0.00501667 0.00200667 0.00200667 0.00501667 +0 0.00200667 0.00401333 0.00401333 0.00200667 0.00802667 0.00301 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0 0.00501667 0.00903 0.00802667 0.00100333 0.00802667 0 +0.00200667 0.00802667 0 0.00401333 0 0 0 0.00200667 +0 0.00602 0 0.00200667 0 0.00602 0 0 +0 0.00602 0.00401333 0.00702333 0.00401333 0 0 0 +0.00602 0 0 0 0.00401333 0 0.00100333 0 +0.0110367 0.00602 0 0 0 0.00301 0.00501667 0 +0 0 0 0 0 0.00200667 0.00501667 0 +0.00301 0 0 0 0 0 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00702333 0.146487 0.389293 +0.707616 0.962656 1.02849 1.0605 1.06534 1.05265 1.05205 1.04722 +1.05024 1.04722 1.04661 1.04178 1.0442 1.0442 1.04359 1.04057 +1.03514 1.03816 1.03816 1.03272 1.03514 1.03936 1.03634 1.03574 +1.0291 1.04178 1.03151 1.03212 1.03272 1.02245 1.0291 1.02547 +1.02668 1.02728 1.03212 1.03212 1.03393 1.0303 1.03876 1.03634 +1.03393 1.03332 1.03936 1.04178 1.03695 1.03393 1.03755 1.04299 +1.0448 1.03755 1.04722 1.04359 1.05265 1.04359 1.04782 1.05748 +1.06292 1.06232 1.05144 1.02426 0.937288 0.644504 0.357187 0.12341 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0 0.00501667 0 +0 0 0 0 0 0.0110367 0 0 +0 0 0 0.00200667 0.00401333 0.00301 0 0.00602 +0.00301 0.00602 0.00702333 0 0 0 0.00903 0 +0 0 0 0 0.00100333 0.00702333 0 0 +0.00100333 0.00200667 0 0 0.00100333 0.00802667 0 0.00100333 +0.00702333 0.00702333 0.00301 0.00200667 0.00100333 0.00100333 0 0 +0 0 0 0.00301 0.00602 0 0 0 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0130433 +0.00602 0.00100333 0 0.00100333 0.00100333 0.00602 0.00401333 0.00802667 +0.00200667 0.00200667 0.00802667 0.00100333 0.00200667 0.00200667 0 0 +0.00501667 0 0 0 0.00200667 0 0.00301 0.00200667 +0.00100333 0 0.00200667 0.00200667 0 0.00602 0 0 +0.00200667 0.00802667 0 0 0 0.00602 0 0.00200667 +0 0.00200667 0.00702333 0 0 0.00200667 0 0.00702333 +0.00401333 0 0 0.00401333 0 0.00100333 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0110367 0.18361 0.49665 0.863464 1.01037 1.05446 +1.06654 1.05628 1.04963 1.04601 1.05144 1.04299 1.04359 1.03695 +1.03755 1.03876 1.04238 1.03393 1.03936 1.03393 1.03514 1.03453 +1.03091 1.03151 1.03091 1.02849 1.03755 1.0297 1.02668 1.03393 +1.02185 1.03332 1.02185 1.0303 1.02487 1.01339 1.02064 1.02426 +1.01822 1.02124 1.02306 1.02608 1.02608 1.02668 1.03091 1.03091 +1.03151 1.02849 1.03212 1.03332 1.03091 1.03574 1.03634 1.03514 +1.03876 1.03212 1.03816 1.03816 1.03695 1.03936 1.03936 1.0448 +1.04601 1.0442 1.05446 1.05446 1.05869 1.05748 1.04601 1.00131 +0.835128 0.467553 0.181603 0.0160533 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0 0 0 0 0.00200667 0.00501667 0 0.00100333 +0 0 0 0.00200667 0.00401333 0 0 0.00702333 +0.00100333 0.00200667 0 0 0 0 0 0 +0 0 0.00401333 0.00301 0.00200667 0 0 0.00301 +0 0.00200667 0 0.00200667 0.00501667 0.00802667 0.00200667 0.00702333 +0 0.00501667 0 0.00100333 0.00100333 0.00200667 0 0 +0 0.00100333 0.0100333 0.00401333 0 0 0 0.00501667 +0.00903 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00702333 0.00903 0 0 0.00100333 0 0.00100333 0.00100333 +0.00401333 0 0.00301 0.00401333 0.00401333 0 0.00401333 0.00501667 +0 0.00301 0 0 0.00100333 0 0 0 +0 0.00401333 0.00602 0.00100333 0.00301 0.00301 0 0 +0 0.0110367 0.0130433 0.00301 0 0 0.00301 0 +0 0.00301 0.00802667 0.00702333 0 0 0 0.00401333 +0.00301 0 0 0 0.00200667 0 0 0.00802667 +0.00602 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.145483 0.453507 0.8596 1.01883 1.05809 1.05748 1.05567 1.05567 +1.05024 1.04782 1.03876 1.03514 1.03755 1.03574 1.0442 1.03514 +1.0291 1.03936 1.0303 1.0291 1.03514 1.02849 1.03272 1.02728 +1.0297 1.02426 1.02789 1.02306 1.03151 1.02366 1.02668 1.02728 +1.02668 1.02728 1.0146 1.02004 1.02004 1.03453 1.06654 1.08165 +1.0806 1.06775 1.03393 1.01762 1.01762 1.0291 1.02185 1.02728 +1.02245 1.02608 1.0303 1.02789 1.02849 1.02728 1.0291 1.03393 +1.03272 1.03272 1.0291 1.03816 1.03091 1.03393 1.03091 1.03816 +1.03816 1.03634 1.04299 1.04782 1.04178 1.03936 1.05326 1.05688 +1.05869 1.05869 1.01822 0.858312 0.456517 0.14749 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00501667 0 +0 0 0 0.00200667 0 0 0.00301 0 +0 0 0.0100333 0.00602 0 0 0 0.00100333 +0.00100333 0 0 0.00100333 0 0 0 0.00100333 +0.00301 0.00903 0.00200667 0 0 0.00301 0 0.00401333 +0.00501667 0 0 0 0.0100333 0.00100333 0 0 +0 0 0.00100333 0 0.00301 0 0 0 +0.00702333 0.00501667 0 0 0 0.00200667 0.0140467 0.00903 +0.00702333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0110367 0.00602 +0.00200667 0.00401333 0.00602 0.00501667 0.00100333 0.00200667 0.00200667 0.00501667 +0.00401333 0.00200667 0 0 0 0.00401333 0 0 +0 0 0.00602 0.00401333 0 0.00401333 0 0.00200667 +0.00100333 0 0 0 0 0.00602 0.00501667 0.00100333 +0 0 0.00401333 0.0110367 0.00802667 0 0.00702333 0.00200667 +0 0 0 0.00903 0.00802667 0.00401333 0 0 +0 0.00903 0 0 0 0 0 0 +0.00903 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0431433 0.299997 0.714056 +0.995876 1.05326 1.06292 1.05446 1.05144 1.03816 1.03695 1.04359 +1.03997 1.04178 1.03755 1.03816 1.03997 1.02245 1.03816 1.03091 +1.03091 1.02668 1.02487 1.02789 1.02668 1.03393 1.02789 1.03091 +1.03272 1.02306 1.02245 1.02306 1.02608 1.02487 1.02004 1.02547 +1.02185 1.02124 1.01943 1.0454 1.10475 1.13135 1.145 1.14918 +1.1496 1.14395 1.131 1.09215 1.03574 1.02004 1.01883 1.02306 +1.02306 1.0297 1.02185 1.0297 1.02426 1.02245 1.02849 1.02245 +1.02728 1.02608 1.02245 1.03695 1.02487 1.03393 1.02668 1.03514 +1.03151 1.03997 1.03453 1.03634 1.03574 1.04057 1.04299 1.04661 +1.0448 1.05024 1.05205 1.05748 1.05628 1.00554 0.78232 0.339127 +0.06622 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0.0110367 0 0 0 0.00802667 0 +0 0.00100333 0.00702333 0.00401333 0.00200667 0.00501667 0 0.00301 +0.00602 0 0 0 0.0100333 0.00200667 0.00401333 0.00200667 +0 0 0.00100333 0.00301 0.00702333 0.00301 0.00501667 0 +0 0 0 0.00401333 0 0.00301 0 0.00501667 +0 0.00501667 0.00501667 0.00802667 0.00802667 0.00702333 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00401333 0.00501667 +0.00200667 0.00401333 0.00401333 0.00200667 0.00200667 0 0 0 +0.00602 0.00602 0.00602 0.00301 0 0 0.00401333 0 +0.00401333 0 0 0.00200667 0.00100333 0 0 0 +0 0.00301 0 0.00702333 0 0 0.00501667 0 +0.00401333 0.00802667 0 0 0.00501667 0.00802667 0.00200667 0 +0 0 0.00200667 0 0 0 0 0.00501667 +0 0 0.00602 0 0 0 0 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.09933 0.446483 0.916272 1.03936 1.06594 +1.05326 1.04782 1.04782 1.0448 1.04057 1.03574 1.03514 1.04238 +1.03393 1.03091 1.03332 1.03212 1.02728 1.03091 1.0297 1.03212 +1.02849 1.02306 1.02004 1.02487 1.01943 1.03091 1.0146 1.02426 +1.02789 1.01943 1.02124 1.02004 1.02306 1.02608 1.01581 1.02306 +1.01581 1.01822 1.07258 1.13275 1.14751 1.14395 1.14667 1.1443 +1.1436 1.1496 1.14667 1.145 1.1254 1.05507 1.0146 1.01581 +1.01883 1.02366 1.02185 1.0297 1.01762 1.02487 1.02185 1.0303 +1.02789 1.02547 1.02185 1.02728 1.0291 1.0297 1.02426 1.02789 +1.02426 1.04299 1.02668 1.0291 1.03151 1.03272 1.03755 1.03634 +1.03876 1.03936 1.04057 1.04661 1.05386 1.05446 1.06232 1.0448 +0.953596 0.52374 0.154513 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0 0 0 +0.00501667 0.00602 0.00501667 0 0.00100333 0.00100333 0.00401333 0 +0 0.00100333 0.00401333 0 0 0 0.00401333 0.00802667 +0.00401333 0 0 0.0140467 0.0100333 0 0.00200667 0 +0 0.00301 0 0.0110367 0.00702333 0 0 0 +0 0 0.00401333 0.00301 0.00100333 0 0.00301 0.00501667 +0.00702333 0.00200667 0.00301 0.00100333 0 0 0.00200667 0.00200667 +0 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0 +0.00200667 0 0.00100333 0 0.00200667 0.00200667 0 0.00200667 +0 0.00301 0.00501667 0.00301 0.01204 0 0 0.00702333 +0 0 0.00100333 0 0.00702333 0.00602 0.00100333 0 +0 0.00200667 0.00301 0 0.0140467 0 0 0 +0 0.00702333 0.0100333 0.00100333 0 0 0.00602 0 +0.00100333 0 0.00200667 0 0 0.00200667 0.00501667 0 +0 0.00301 0.00401333 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.136453 0.528757 0.965072 1.05446 1.06111 1.05507 1.03997 +1.04782 1.03816 1.03876 1.04299 1.03574 1.02547 1.03212 1.03876 +1.03514 1.02849 1.02789 1.02547 1.02185 1.02608 1.02366 1.02487 +1.02426 1.02608 1.02306 1.02064 1.02366 1.03091 1.02487 1.01702 +1.02728 1.01641 1.02728 1.02064 1.01581 1.02185 1.01279 1.01762 +1.0146 1.05326 1.13275 1.14465 1.14584 1.1443 1.1394 1.1401 +1.14542 1.1408 1.1422 1.1436 1.15002 1.1254 1.03453 1.02064 +1.02064 1.01883 1.02245 1.02789 1.01943 1.02185 1.02185 1.02608 +1.01943 1.01822 1.02668 1.02366 1.02547 1.02849 1.02306 1.02245 +1.0291 1.02668 1.02487 1.0291 1.02547 1.03332 1.0291 1.02789 +1.03634 1.02668 1.03876 1.03816 1.04238 1.03634 1.04601 1.05748 +1.05567 1.0593 1.00856 0.677992 0.23478 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00702333 0 0 0.00100333 0 +0 0 0.00301 0 0 0.00501667 0 0 +0 0.0190633 0 0.00301 0 0.00301 0.00602 0 +0 0.00401333 0.00501667 0.0100333 0 0 0 0 +0.00200667 0 0.0100333 0.00802667 0 0 0 0 +0 0 0.00301 0.00100333 0 0 0.00100333 0 +0.00100333 0.00100333 0 0 0.00501667 0.00200667 0.00100333 0 +0.00200667 0.00401333 0.00903 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.01204 0.00301 0.00301 +0.00401333 0.00100333 0.00501667 0.00602 0 0.00100333 0.00501667 0.00301 +0.00301 0 0 0 0.00100333 0.0130433 0.00301 0 +0.00802667 0.00903 0.00401333 0 0 0 0.0140467 0.01204 +0 0 0.0110367 0 0 0 0.00301 0 +0 0 0 0.01204 0.00301 0 0.00702333 0.00501667 +0 0.00301 0 0.00200667 0 0 0 0.00401333 +0 0 0 0 0.0100333 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.131437 +0.564877 0.989232 1.05869 1.05265 1.05205 1.04903 1.0442 1.03997 +1.03634 1.03332 1.0297 1.03695 1.03272 1.02789 1.02668 1.02547 +1.03272 1.02849 1.03212 1.02426 1.02608 1.02064 1.02668 1.02366 +1.01883 1.02608 1.02487 1.01702 1.02245 1.02185 1.02185 1.01762 +1.02426 1.02728 1.02004 1.02124 1.01943 1.0146 1.02426 1.01279 +1.02426 1.11875 1.14709 1.14325 1.14751 1.1415 1.1401 1.1422 +1.14115 1.13905 1.14465 1.1415 1.14395 1.1436 1.0981 1.014 +1.02004 1.02124 1.02004 1.02306 1.01762 1.02547 1.02547 1.02306 +1.01822 1.02366 1.02366 1.02668 1.02306 1.02728 1.02124 1.02185 +1.02789 1.02487 1.02185 1.0297 1.02547 1.02064 1.02547 1.0303 +1.03755 1.02064 1.03695 1.03574 1.03574 1.0303 1.0448 1.03393 +1.04782 1.05265 1.05628 1.06654 1.0297 0.768152 0.26187 0.00301 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0.00200667 0 +0.00100333 0 0 0 0.00501667 0 0 0.00501667 +0 0.0110367 0.00200667 0 0 0.00301 0 0 +0.00100333 0.00903 0.00401333 0.00200667 0 0 0 0.00301 +0.00301 0.00100333 0.00802667 0 0 0.00301 0 0.00200667 +0.00100333 0 0.00200667 0 0 0.00100333 0.00702333 0.00100333 +0.00702333 0.00100333 0.00200667 0 0 0.00200667 0 0.00702333 +0.00200667 0.00702333 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00401333 0.00903 0.00401333 +0 0.00200667 0.00100333 0.00100333 0.00903 0 0 0 +0 0.00501667 0.00602 0.00100333 0 0 0.00702333 0.00702333 +0 0 0.00702333 0.00802667 0 0 0 0.00301 +0.0100333 0 0 0.00802667 0.00200667 0.00702333 0 0.00802667 +0 0 0.00301 0 0.00401333 0 0 0.00903 +0.00100333 0.00200667 0 0 0 0.00802667 0.00501667 0 +0.00100333 0 0 0 0 0.00702333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0943133 0.525747 0.985004 +1.05748 1.06413 1.05144 1.0454 1.04057 1.04057 1.04118 1.0303 +1.0303 1.03091 1.02426 1.02668 1.02608 1.02849 1.03151 1.02547 +1.02426 1.02306 1.02487 1.02728 1.02426 1.02245 1.02608 1.02064 +1.01762 1.02064 1.02124 1.02245 1.02306 1.02547 1.02185 1.01943 +1.02185 1.02064 1.01702 1.02487 1.01822 1.01641 1.01883 1.00856 +1.0744 1.14325 1.1394 1.14255 1.1387 1.13905 1.1387 1.1394 +1.13625 1.1373 1.14115 1.1401 1.14465 1.14625 1.13555 1.0442 +1.01279 1.01883 1.01822 1.02306 1.01883 1.02608 1.02185 1.02004 +1.01762 1.02547 1.01581 1.01822 1.02124 1.01581 1.02487 1.02245 +1.02668 1.01641 1.02426 1.0303 1.02124 1.01883 1.03453 1.02789 +1.03393 1.02487 1.02487 1.03151 1.02487 1.02849 1.03332 1.03272 +1.04601 1.04057 1.03876 1.05024 1.05326 1.0605 1.0297 0.763 +0.22876 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0 0.00301 0 0.00200667 +0.00100333 0.00602 0 0.00200667 0.00401333 0 0 0.00401333 +0.00702333 0 0 0 0 0 0 0.00802667 +0.00100333 0 0 0 0.00401333 0 0 0 +0.00100333 0.00602 0.00602 0.00100333 0 0 0 0.00602 +0 0 0 0 0.00301 0.00401333 0 0 +0.0110367 0.00401333 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00903 0 0 0.00301 +0.00100333 0 0.00200667 0 0.00200667 0.00100333 0 0 +0 0.00100333 0 0.00301 0 0 0 0.00401333 +0.00702333 0.00100333 0 0.00301 0.00200667 0 0.00200667 0.00100333 +0.00200667 0.00501667 0.00100333 0 0 0.00602 0 0.00100333 +0.00903 0 0 0 0.00401333 0.00501667 0 0.00100333 +0 0.00301 0.00802667 0 0 0 0.00200667 0.00200667 +0 0.00100333 0 0 0 0 0.00401333 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0.0411367 0.419393 0.959032 1.05688 1.05567 +1.04842 1.04842 1.0448 1.03332 1.03393 1.0303 1.03091 1.03453 +1.02728 1.02789 1.02728 1.02547 1.01641 1.02124 1.03091 1.02668 +1.01702 1.02487 1.02245 1.02185 1.01943 1.02185 1.02185 1.01943 +1.02004 1.01943 1.02004 1.01883 1.01581 1.01883 1.02004 1.02426 +1.01883 1.01581 1.01641 1.01822 1.01641 1.02306 1.014 1.00735 +1.10125 1.14325 1.1408 1.13695 1.13555 1.14185 1.13555 1.13905 +1.1338 1.14045 1.1345 1.13905 1.1408 1.14325 1.14115 1.07955 +1.01822 1.0146 1.01702 1.02064 1.02004 1.0146 1.02004 1.01883 +1.02245 1.02064 1.0146 1.02004 1.02124 1.02124 1.02245 1.02004 +1.02064 1.02124 1.02426 1.02366 1.02124 1.0303 1.02487 1.01943 +1.02064 1.01641 1.02487 1.0291 1.0291 1.02547 1.03393 1.03393 +1.03332 1.03272 1.03332 1.03997 1.0442 1.04178 1.05809 1.06171 +1.01702 0.662536 0.14749 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0 0.00602 0 0 0 0.00200667 0 +0.00501667 0 0 0.00100333 0 0.00401333 0 0.00100333 +0.00200667 0 0.00903 0 0 0 0.00702333 0 +0 0 0 0 0 0 0 0.00602 +0.00301 0 0 0 0.00200667 0.00301 0.00702333 0 +0.00100333 0.00501667 0 0.00301 0 0 0.00401333 0.01204 +0 0 0 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0100333 0.00501667 0 0.00200667 +0.00200667 0 0.00401333 0 0.00301 0.00401333 0.00200667 0.00200667 +0 0.00401333 0.00301 0.00501667 0 0 0 0 +0.00100333 0.00200667 0 0 0.00602 0.00602 0 0.00100333 +0 0 0.00602 0.00702333 0 0.00401333 0 0 +0 0 0 0.00602 0 0 0.00602 0 +0.00301 0 0.00100333 0.0100333 0 0 0 0 +0 0 0 0 0.00200667 0 0 0 +0 0 0.00301 0 0 0 0 0 +0 0 0.253843 0.871192 1.04782 1.0605 1.05446 1.04782 +1.04178 1.03634 1.03272 1.03634 1.03816 1.03574 1.02426 1.02124 +1.02668 1.02245 1.02789 1.03091 1.02185 1.014 1.02426 1.02426 +1.02064 1.01943 1.02245 1.02547 1.02004 1.01702 1.02064 1.01883 +1.01883 1.01702 1.01883 1.01943 1.02185 1.02245 1.02185 1.02185 +1.02487 1.01641 1.0146 1.01641 1.01822 1.01641 1.01822 1.0152 +1.12155 1.1443 1.14325 1.13905 1.1352 1.1408 1.13765 1.1387 +1.13485 1.1373 1.13695 1.1373 1.1387 1.1443 1.14325 1.09635 +1.01641 1.01641 1.01822 1.02426 1.0146 1.01883 1.01822 1.02245 +1.01883 1.0152 1.01702 1.02366 1.02185 1.01702 1.01762 1.02849 +1.01943 1.02185 1.02547 1.02064 1.02185 1.01883 1.02366 1.01883 +1.02789 1.02728 1.02245 1.0291 1.02487 1.02668 1.03212 1.02426 +1.02849 1.03212 1.02608 1.03332 1.03393 1.04661 1.05446 1.04178 +1.05507 1.05748 0.981984 0.495647 0.0642133 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0 0 0 0 0 0 +0.00100333 0 0 0.00100333 0.00602 0 0 0.00100333 +0.00401333 0.00100333 0 0 0.00200667 0.00501667 0.00501667 0 +0.00100333 0.00401333 0.00100333 0 0 0.0100333 0.0100333 0 +0.00100333 0 0 0 0.00200667 0.00301 0 0.00100333 +0.00501667 0 0.00301 0.00200667 0 0.00501667 0.00501667 0 +0 0 0.00602 0.0130433 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0.00903 0.0110367 0.00100333 +0.00301 0.00602 0 0.00200667 0 0 0 0 +0 0 0.00301 0.00501667 0.00200667 0 0 0 +0.00301 0.00301 0 0.00100333 0 0 0.00301 0 +0 0 0 0 0.00903 0.00602 0.00702333 0.00501667 +0 0 0 0 0 0 0 0.00100333 +0 0.00501667 0.00401333 0 0.00200667 0.00301 0.00401333 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.08127 0.617456 1.0146 1.06413 1.05386 1.0448 1.04299 1.03936 +1.03514 1.03816 1.02608 1.03151 1.03151 1.0303 1.02789 1.02366 +1.01883 1.02185 1.02789 1.0291 1.0291 1.02004 1.02366 1.02306 +1.01883 1.01762 1.01943 1.02124 1.01762 1.02064 1.02124 1.02064 +1.02004 1.02487 1.01641 1.02487 1.01702 1.02064 1.01037 1.02004 +1.02547 1.01762 1.02124 1.01702 1.02124 1.01218 1.01037 1.01883 +1.12295 1.14542 1.13695 1.13975 1.1387 1.1394 1.13975 1.138 +1.13625 1.13345 1.1408 1.1373 1.13415 1.1436 1.145 1.10685 +1.01339 1.01943 1.01943 1.01641 1.014 1.02064 1.01279 1.02366 +1.01883 1.01218 1.02245 1.02366 1.01883 1.01883 1.02306 1.02004 +1.02185 1.01641 1.02849 1.02426 1.01702 1.02185 1.01883 1.02728 +1.01883 1.02245 1.02124 1.0291 1.02004 1.02608 1.02547 1.02426 +1.02608 1.02306 1.02547 1.02668 1.03272 1.04118 1.03393 1.03755 +1.05084 1.04963 1.05809 1.05265 0.916272 0.293977 0.00301 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0 0.00100333 0.00301 0 0 0.00100333 0 +0 0 0 0.00401333 0 0 0 0 +0 0.00301 0 0 0.00401333 0 0 0 +0.00401333 0.00602 0 0 0 0 0.00401333 0.00301 +0 0 0.00301 0.00100333 0.00301 0 0.00401333 0.00501667 +0.00200667 0.0110367 0.00802667 0.00100333 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0100333 0.00903 0 0.00200667 0.00501667 +0.00702333 0 0 0 0.00602 0 0 0 +0 0 0 0 0.0100333 0 0 0 +0 0.00100333 0.00702333 0.00200667 0.0100333 0.00200667 0.00200667 0.00301 +0.00401333 0 0 0.00301 0 0 0.00401333 0 +0.00702333 0.00602 0 0 0 0 0 0.00501667 +0 0.00301 0 0.00602 0 0 0.00100333 0 +0.00301 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0.330097 +0.93608 1.05386 1.0599 1.03876 1.0442 1.04359 1.03634 1.03332 +1.0291 1.03272 1.01943 1.02366 1.03514 1.02487 1.02789 1.02849 +1.02366 1.01943 1.02004 1.02004 1.01883 1.02728 1.02668 1.01762 +1.02064 1.0152 1.02124 1.02004 1.01641 1.01702 1.01943 1.01581 +1.01762 1.02124 1.01641 1.01883 1.01822 1.02064 1.02004 1.01702 +1.01943 1.02366 1.01037 1.01943 1.01218 1.01641 1.0152 1.01279 +1.11805 1.14835 1.1429 1.1401 1.14045 1.13765 1.13695 1.13555 +1.1352 1.1401 1.14115 1.13765 1.14255 1.13975 1.14625 1.0974 +1.01158 1.01279 1.02185 1.01943 1.0146 1.02366 1.01883 1.01943 +1.02728 1.0146 1.02185 1.01641 1.02004 1.02064 1.01943 1.02124 +1.01943 1.02185 1.01762 1.02306 1.01762 1.01641 1.02185 1.02849 +1.01218 1.02185 1.02426 1.01883 1.02124 1.02124 1.02064 1.02608 +1.01641 1.02426 1.02004 1.02728 1.0297 1.02789 1.03151 1.03755 +1.0442 1.04057 1.04842 1.05265 1.05809 1.02185 0.650944 0.116387 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0.01204 0.0110367 0 0.00100333 0 0.00903 0 +0.00100333 0.00501667 0.00501667 0.00200667 0 0.00401333 0 0 +0.00200667 0.00100333 0 0.00702333 0.00301 0.00702333 0 0.00501667 +0.00602 0.00100333 0 0 0.00200667 0.00200667 0.00301 0.00200667 +0 0 0 0.00100333 0.00100333 0.0100333 0.00903 0 +0.00200667 0 0 0.00200667 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00100333 0.0100333 0 0 +0.00200667 0.0110367 0.00802667 0.00200667 0 0.00100333 0.00602 0.00100333 +0 0.00100333 0 0 0 0.0110367 0.00301 0.00200667 +0 0 0 0 0 0 0.00200667 0 +0.00802667 0.00401333 0 0.00200667 0.00301 0 0.00401333 0 +0 0.00802667 0.0100333 0.00100333 0 0 0 0 +0 0 0.00301 0.00702333 0.00802667 0.00301 0.00200667 0 +0 0 0.00802667 0 0 0 0 0 +0 0 0 0 0 0.0742467 0.59297 1.02547 +1.06232 1.05084 1.05084 1.04057 1.03091 1.03332 1.0291 1.03151 +1.02608 1.03091 1.02306 1.0297 1.02728 1.01762 1.02064 1.02245 +1.02789 1.01702 1.01943 1.02547 1.01943 1.02064 1.0303 1.0152 +1.02124 1.01822 1.02245 1.0146 1.02789 1.02306 1.0146 1.02306 +1.02306 1.01883 1.01762 1.01581 1.02124 1.02185 1.01762 1.0152 +1.02426 1.01822 1.0152 1.01702 1.0152 1.01822 1.01641 1.014 +1.0995 1.14185 1.1429 1.1429 1.1408 1.13625 1.1345 1.1352 +1.138 1.138 1.138 1.14185 1.1415 1.145 1.1429 1.0771 +1.0152 1.02004 1.01098 1.02124 1.01883 1.01641 1.014 1.01883 +1.01762 1.014 1.0146 1.01822 1.01762 1.02728 1.00856 1.01822 +1.02245 1.01822 1.014 1.02547 1.01581 1.0146 1.02789 1.0146 +1.0146 1.02185 1.02306 1.0152 1.02547 1.01702 1.01762 1.0303 +1.02547 1.02064 1.02004 1.02728 1.02849 1.02185 1.03393 1.03091 +1.03151 1.03332 1.03574 1.04238 1.0448 1.05265 1.06413 0.95118 +0.357187 0.00702333 0 0 0 0 0 0 +0 0 0.00301 0 0 0 0 0 +0.00200667 0.00903 0 0 0 0.00301 0 0 +0.00501667 0 0 0 0 0.00301 0.00602 0 +0 0.00301 0.00702333 0.00903 0 0 0.00401333 0.00301 +0 0 0 0 0.00200667 0.00501667 0.00501667 0 +0 0.00200667 0 0.00903 0.00200667 0.00200667 0 0 +0 0.00702333 0.00602 0.00301 0.00602 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00200667 +0 0 0.00802667 0.0100333 0.00702333 0 0.00100333 0.00401333 +0.00100333 0 0 0 0 0.00200667 0.00802667 0.00200667 +0.00401333 0.00702333 0.00200667 0 0.00401333 0 0 0 +0 0.00802667 0.00702333 0 0.00702333 0.00301 0 0.00702333 +0 0 0 0.0100333 0.00401333 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.229763 0.89824 1.06232 1.06352 +1.04661 1.03936 1.03755 1.03695 1.03393 1.02849 1.03151 1.02366 +1.02306 1.02547 1.02245 1.01943 1.02547 1.02064 1.02849 1.01339 +1.02306 1.01702 1.0146 1.01943 1.01883 1.02366 1.014 1.02245 +1.02064 1.02004 1.02306 1.01762 1.01883 1.01702 1.014 1.02245 +1.01883 1.02004 1.02245 1.02547 1.01641 1.01581 1.02668 1.00916 +1.01943 1.01702 1.02547 1.01641 1.02608 1.01339 1.01037 1.01279 +1.06292 1.14045 1.14625 1.1366 1.14185 1.1373 1.1401 1.14115 +1.1338 1.13765 1.13905 1.1373 1.1401 1.14542 1.13415 1.04178 +1.00856 1.01279 1.01822 1.02185 1.01581 1.01822 1.01037 1.01943 +1.02306 1.02064 1.01641 1.02004 1.02366 1.02185 1.01641 1.02426 +1.01943 1.01943 1.01883 1.02185 1.0152 1.02668 1.01822 1.01641 +1.01581 1.01762 1.0297 1.02124 1.01581 1.02004 1.01702 1.02728 +1.01339 1.02124 1.02728 1.02306 1.02064 1.02547 1.02728 1.02366 +1.02547 1.02849 1.03574 1.03151 1.03997 1.04903 1.05809 1.05748 +1.03212 0.636776 0.0802667 0 0 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0 0 0 0 0 0 0 0.0130433 +0 0 0.00702333 0 0 0.00301 0 0.00903 +0.00602 0.00100333 0.00501667 0 0 0 0 0 +0 0.00301 0.00802667 0.00401333 0 0.00100333 0 0 +0.00301 0.00501667 0.00802667 0 0.00802667 0 0.00200667 0.0130433 +0.0100333 0 0.00200667 0.00200667 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0130433 0.0130433 0.00602 0 0 0 +0.00200667 0 0 0.00200667 0.00401333 0.00200667 0 0.00301 +0.00702333 0.00802667 0.00301 0.00100333 0 0 0 0.00702333 +0 0 0.00602 0.00602 0 0 0 0 +0 0 0 0 0.00401333 0.00100333 0.00200667 0.00501667 +0.00200667 0.00200667 0.00301 0 0 0.00401333 0 0 +0.00100333 0 0 0 0.00401333 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00702333 0.414377 0.998292 1.05748 1.05386 1.04601 +1.03997 1.03514 1.03332 1.0303 1.03453 1.02668 1.02487 1.02547 +1.02487 1.02426 1.01822 1.01822 1.02004 1.01762 1.01822 1.02306 +1.01883 1.02426 1.01943 1.01339 1.02124 1.02306 1.01822 1.01883 +1.01702 1.02064 1.01641 1.02487 1.02245 1.01883 1.01883 1.02668 +1.01883 1.01943 1.02185 1.01883 1.01581 1.02004 1.02547 1.0146 +1.0146 1.02185 1.02185 1.0146 1.01762 1.0146 1.01581 1.00916 +1.02064 1.1121 1.14465 1.1443 1.14115 1.13835 1.1415 1.1359 +1.1296 1.1401 1.1394 1.1373 1.14185 1.14542 1.09705 1.00856 +1.0146 1.01158 1.0146 1.0291 1.01641 1.02245 1.01943 1.01762 +1.02064 1.02487 1.01279 1.02064 1.01943 1.01883 1.0146 1.02185 +1.02124 1.01822 1.01943 1.0146 1.01641 1.02728 1.0152 1.02306 +1.01581 1.02124 1.02668 1.01762 1.02124 1.02004 1.01883 1.02306 +1.02064 1.02728 1.02728 1.01762 1.02487 1.02547 1.01943 1.01762 +1.02366 1.02608 1.03151 1.03151 1.03453 1.03332 1.04601 1.04842 +1.05567 1.05446 0.87892 0.229763 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00602 0.00401333 0 +0 0.00301 0.00100333 0 0.00200667 0.00702333 0 0 +0 0 0 0 0 0.00401333 0 0 +0 0.00903 0 0.00100333 0.00301 0.00401333 0.00200667 0.00100333 +0.00100333 0.00301 0.00100333 0.00702333 0.00401333 0.00200667 0.00401333 0.00301 +0 0 0 0 0.00301 0.00602 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00702333 0.00100333 0.00702333 0.00802667 0 0.00401333 +0.00100333 0.00702333 0.00301 0 0.00200667 0.00602 0.00301 0.00200667 +0 0 0.00501667 0.00401333 0.00501667 0 0 0 +0.00401333 0.00602 0 0.00501667 0.0100333 0.01204 0.00200667 0 +0 0.00401333 0 0 0 0.00501667 0.00100333 0.0110367 +0.00401333 0 0 0 0.00200667 0 0.00401333 0 +0 0.00501667 0.00200667 0 0 0 0.00602 0 +0 0 0 0 0 0 0 0 +0 0.0371233 0.600997 1.04118 1.0599 1.04842 1.03816 1.04178 +1.03634 1.02849 1.02306 1.02366 1.0303 1.02245 1.02608 1.01822 +1.02426 1.03574 1.02185 1.02366 1.01883 1.01883 1.02245 1.02245 +1.01702 1.01702 1.0297 1.01883 1.01339 1.0297 1.02004 1.02245 +1.0146 1.01883 1.01822 1.01279 1.02487 1.01822 1.0146 1.01581 +1.02366 1.01581 1.01943 1.01641 1.01641 1.0146 1.02366 1.01762 +1.01218 1.01702 1.01883 1.02306 1.00977 1.00916 1.02064 1.01339 +1.01641 1.0442 1.12505 1.14542 1.14667 1.1373 1.14185 1.1408 +1.13905 1.14045 1.13905 1.14255 1.14625 1.1142 1.01883 1.01098 +1.02004 1.01883 1.01158 1.02306 1.02185 1.01822 1.02426 1.01822 +1.02064 1.02004 1.01581 1.01762 1.01822 1.02004 1.02426 1.02064 +1.02064 1.01822 1.01339 1.01883 1.02789 1.0152 1.02185 1.02004 +1.01943 1.02668 1.01702 1.02185 1.01762 1.02124 1.02487 1.02064 +1.02487 1.02306 1.01641 1.01702 1.0291 1.02064 1.02487 1.02245 +1.02547 1.02728 1.0291 1.03091 1.0297 1.03514 1.03634 1.04299 +1.04178 1.05144 1.06232 0.992856 0.369227 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0.00602 0 0.00802667 0 0 0.00200667 +0 0 0 0 0.00802667 0.00301 0 0.00100333 +0 0 0 0 0.00602 0 0 0.00602 +0 0 0 0.00200667 0.00702333 0 0 0 +0.0110367 0.00903 0 0.00200667 0.00100333 0.00401333 0 0 +0 0 0 0.00301 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00702333 0.00501667 0.00200667 0.00903 0.00602 0 +0 0 0 0.00100333 0 0 0.00100333 0.00301 +0.00702333 0 0 0.00200667 0 0 0.00301 0.00401333 +0 0 0 0.00100333 0 0 0.00702333 0 +0 0 0 0.00401333 0 0 0 0.00100333 +0.01505 0.00702333 0 0 0 0.00301 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.09933 0.770728 1.05507 1.05326 1.04963 1.0454 1.03634 1.03332 +1.03272 1.03091 1.02487 1.02849 1.02426 1.01762 1.02366 1.02245 +1.0152 1.02064 1.02366 1.02668 1.01762 1.02366 1.01702 1.02245 +1.01943 1.01339 1.0146 1.02245 1.0146 1.01641 1.01883 1.02064 +1.01822 1.01822 1.01158 1.01943 1.01943 1.02487 1.02366 1.00856 +1.01883 1.02004 1.02004 1.01641 1.01641 1.02366 1.02366 1.02487 +1.02306 1.02426 1.02124 1.02306 1.02124 1.02487 1.014 1.01279 +1.01339 1.0152 1.05809 1.1247 1.14255 1.14045 1.13905 1.14465 +1.1422 1.14185 1.1436 1.15086 1.1142 1.03332 1.00856 1.01883 +1.014 1.02064 1.01822 1.01943 1.0146 1.01822 1.02004 1.01762 +1.0146 1.01279 1.02064 1.02366 1.0152 1.01822 1.02185 1.02064 +1.02124 1.014 1.01822 1.01702 1.01339 1.01822 1.01702 1.01098 +1.02245 1.02668 1.0146 1.02366 1.01581 1.02366 1.0152 1.01641 +1.02245 1.01883 1.02426 1.02487 1.01943 1.01883 1.02064 1.02608 +1.02245 1.02608 1.02064 1.03151 1.02426 1.03091 1.0297 1.03393 +1.03695 1.04299 1.0448 1.05507 1.02185 0.506683 0.01806 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0 0 0 0 0 0 +0 0 0.00301 0.0140467 0.00501667 0 0 0 +0.00602 0.00200667 0.00301 0 0.00200667 0 0.00200667 0 +0.00702333 0 0.00903 0.0100333 0 0 0 0.0130433 +0.00401333 0 0.00100333 0.00702333 0 0 0 0.00401333 +0.00702333 0.00301 0.0110367 0.00200667 0.00100333 0.00100333 0.00301 0 +0 0 0 0 0 0 0 0 +0 0.00802667 0.00501667 0.00501667 0 0 0.0100333 0.0110367 +0.01204 0.00702333 0.00100333 0 0 0.00100333 0 0.00100333 +0 0.00602 0.00501667 0 0.00301 0.00702333 0 0.00401333 +0.0100333 0 0 0 0.0100333 0.00401333 0 0.00602 +0 0.00200667 0 0 0.00401333 0.00401333 0.00100333 0 +0 0.00602 0.00200667 0.00501667 0 0 0.00501667 0 +0 0 0 0 0 0 0.00200667 0 +0 0 0 0 0 0 0 0.151503 +0.863464 1.05628 1.05688 1.04661 1.03755 1.03936 1.03091 1.03212 +1.02728 1.02668 1.02487 1.02728 1.02547 1.01943 1.02487 1.02487 +1.02487 1.02004 1.01762 1.02426 1.02004 1.02245 1.01822 1.02185 +1.02608 1.01218 1.0152 1.0152 1.01883 1.01822 1.02728 1.01581 +1.02245 1.02064 1.02426 1.02004 1.02366 1.02366 1.02064 1.02064 +1.02004 1.01943 1.0152 1.01883 1.01581 1.01943 1.01762 1.02004 +1.01883 1.02064 1.01581 1.01883 1.0152 1.02426 1.01218 1.02366 +1.02004 1.01339 1.01641 1.03272 1.09075 1.1254 1.1394 1.13905 +1.14395 1.13485 1.1261 1.0834 1.03332 1.00977 1.0152 1.01762 +1.0146 1.02306 1.0152 1.01822 1.02366 1.02064 1.014 1.02245 +1.01581 1.01883 1.02487 1.02004 1.02366 1.02366 1.02185 1.01581 +1.01339 1.01702 1.02366 1.01339 1.02064 1.02306 1.01702 1.02547 +1.02426 1.01702 1.01943 1.0152 1.01943 1.01943 1.01762 1.02849 +1.02185 1.01581 1.0291 1.01943 1.02185 1.0146 1.01822 1.01581 +1.02124 1.02004 1.02185 1.02064 1.02366 1.02668 1.02789 1.02547 +1.03151 1.03755 1.03755 1.05024 1.05446 1.04359 0.629048 0.0441467 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0 0 0 +0.00301 0.00501667 0.00702333 0.00702333 0 0 0.0100333 0.00602 +0 0 0 0.00401333 0.00100333 0.00100333 0.00501667 0.00501667 +0 0 0.00301 0 0 0.00702333 0.0140467 0.00401333 +0 0.00100333 0.00602 0 0 0.00301 0.0110367 0.00501667 +0.00501667 0.00501667 0 0 0.00100333 0.00702333 0.0100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00602 0.00602 0 0 0 +0.00100333 0.00200667 0.00401333 0 0.00200667 0.00301 0.00802667 0 +0 0 0 0.00100333 0 0.00100333 0.00802667 0 +0 0.00802667 0.00301 0 0 0 0.00903 0.00100333 +0 0 0.00100333 0 0 0.00200667 0 0 +0 0 0 0.00903 0.00301 0 0.00401333 0.00501667 +0 0.00602 0 0 0 0 0 0 +0 0 0 0 0 0 0.1806 0.927624 +1.06232 1.05386 1.0454 1.03997 1.03876 1.03332 1.02789 1.03151 +1.02426 1.02064 1.02245 1.02547 1.01883 1.01702 1.02487 1.01883 +1.02366 1.02245 1.01883 1.02547 1.02789 1.01883 1.02366 1.01762 +1.02668 1.02185 1.02185 1.02849 1.0146 1.01641 1.0146 1.01822 +1.01641 1.01581 1.01641 1.01581 1.01702 1.02608 1.02124 1.0152 +1.02185 1.02064 1.02064 1.01279 1.02426 1.01943 1.01279 1.02245 +1.02185 1.02004 1.0146 1.02064 1.02366 1.014 1.02547 1.01581 +1.02608 1.014 1.02124 1.01641 1.00916 1.02668 1.05084 1.06654 +1.0599 1.04601 1.01822 1.0146 1.01037 1.0146 1.01641 1.01822 +1.01641 1.01702 1.01762 1.02185 1.02185 1.01641 1.01339 1.01883 +1.01762 1.01641 1.01883 1.01279 1.02185 1.02064 1.01822 1.01581 +1.01822 1.02124 1.014 1.01702 1.02728 1.02426 1.01581 1.02064 +1.0146 1.01581 1.01822 1.01762 1.02124 1.01943 1.01883 1.02124 +1.02185 1.02185 1.02366 1.0152 1.01943 1.01339 1.02185 1.02487 +1.02245 1.02366 1.02668 1.01943 1.02789 1.02426 1.02789 1.02547 +1.0297 1.03574 1.03514 1.0442 1.05024 1.05144 1.05386 0.735952 +0.0612033 0 0 0 0 0 0 0 +0 0 0 0.00401333 0 0.00301 0 0 +0 0.0100333 0.00100333 0 0 0 0.01204 0 +0 0.00301 0.0130433 0.00501667 0 0 0 0 +0 0.00200667 0 0.00501667 0.00501667 0.00100333 0 0 +0 0.00301 0 0.00602 0.00702333 0.00802667 0 0 +0.00301 0 0 0.00401333 0.00602 0.00501667 0 0 +0 0 0 0 0 0 0 0 +0 0.0100333 0.00702333 0 0 0.00401333 0.00501667 0 +0 0 0 0.00200667 0 0 0.00100333 0.01204 +0 0 0 0.00602 0.00100333 0 0 0.00401333 +0.00401333 0.00401333 0.00702333 0.00401333 0.00602 0.00200667 0 0.00702333 +0.00903 0 0.00100333 0.00301 0 0 0.0100333 0.00100333 +0.00200667 0.00200667 0 0 0.00200667 0 0 0 +0 0 0.00200667 0 0 0 0 0 +0 0 0 0 0 0.196653 0.944536 1.06292 +1.04722 1.04722 1.03997 1.0297 1.02426 1.02789 1.02608 1.02306 +1.0303 1.02306 1.01883 1.02124 1.01762 1.0152 1.02366 1.02366 +1.02064 1.02608 1.01943 1.00856 1.0146 1.00131 1.00192 1.00614 +1.00131 1.02426 1.02547 1.0146 1.02487 1.01822 1.01762 1.01339 +1.02124 1.00977 1.02064 1.01943 1.01702 1.02004 1.01822 1.01037 +1.01641 1.01943 1.01883 1.0146 1.01943 1.01581 1.02487 1.02004 +1.0146 1.01702 1.02004 1.01581 1.02004 1.01581 1.014 1.01883 +1.02366 1.01339 1.01762 1.02124 1.01218 1.00856 1.00916 1.014 +1.00916 1.01339 1.01339 1.01883 1.00735 1.01702 1.01702 1.01822 +1.0152 1.02306 1.01883 1.02306 1.01158 1.02185 1.01702 1.01822 +1.01822 1.0146 1.02124 1.02306 1.02185 1.0146 1.02668 1.01158 +1.02004 1.01641 1.01762 1.0152 1.01822 1.01762 1.01762 1.02004 +1.02124 1.02547 1.01822 1.02124 1.02004 1.01822 1.01883 1.01943 +1.01158 1.02185 1.01279 1.01641 1.02004 1.01943 1.02124 1.01822 +1.02487 1.02004 1.02366 1.02366 1.02789 1.02487 1.01702 1.02366 +1.03272 1.03393 1.03091 1.03876 1.03816 1.04782 1.05809 1.05748 +0.78232 0.0913033 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00903 +0.00802667 0 0.00301 0 0.00301 0.0130433 0 0 +0.0110367 0.00802667 0 0 0 0 0.00501667 0 +0 0 0.00200667 0 0 0 0 0 +0.00602 0.00401333 0.00301 0.00200667 0 0 0 0.00100333 +0.00100333 0 0.00100333 0 0.00100333 0 0.00501667 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00200667 0 0.00100333 0.00401333 +0.00501667 0.00200667 0 0.00200667 0.00802667 0.00401333 0 0 +0.00602 0.00301 0.00100333 0.00100333 0.00602 0 0 0 +0 0 0.00702333 0 0 0.00301 0.00501667 0.00301 +0.0140467 0.00602 0 0 0 0.00200667 0 0.00200667 +0 0.00200667 0.00100333 0 0.00301 0.00200667 0 0 +0 0 0 0 0.00200667 0 0 0 +0 0 0 0 0.203677 0.946348 1.05748 1.05024 +1.0454 1.03574 1.03514 1.03393 1.03091 1.0303 1.02004 1.02728 +1.01943 1.02608 1.02608 1.02426 1.02064 1.01822 1.02124 1.02004 +1.02426 1.00856 1.00192 0.989232 0.989232 0.988024 0.997084 0.98742 +0.986816 0.988024 1.01279 1.02124 1.02245 1.02064 1.02366 1.02487 +1.02064 1.02004 1.02245 1.01641 1.01943 1.02426 1.02245 1.02064 +1.01883 1.02064 1.01943 1.01943 1.01641 1.02366 1.02366 1.01883 +1.0146 1.02245 1.0152 1.01339 1.02487 1.02487 1.0146 1.01702 +1.02064 1.01037 1.0146 1.01581 1.01581 1.01883 1.01762 1.0146 +1.0146 1.00977 1.014 1.02124 1.01762 1.0146 1.02064 1.02004 +1.01943 1.02306 1.01218 1.02124 1.02426 1.02245 1.02064 1.02366 +1.02306 1.01943 1.02547 1.02426 1.02004 1.0146 1.02306 1.0146 +1.01702 1.0152 1.01218 1.01037 1.02668 1.02487 1.01883 1.02547 +1.01702 1.01098 1.02849 1.02728 1.02487 1.00433 1.00433 0.994064 +0.989836 0.991044 0.994064 0.997084 1.00252 1.01339 1.02124 1.01883 +1.02366 1.01943 1.02064 1.02366 1.03151 1.014 1.02547 1.03151 +1.03272 1.02366 1.02547 1.03514 1.03514 1.03272 1.05205 1.0454 +1.05326 0.784896 0.0742467 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0 0 0 0 0 0.00702333 +0 0 0.00401333 0 0.00602 0.0100333 0 0 +0.0100333 0.00802667 0 0 0 0.00301 0.00200667 0.01204 +0.00200667 0 0.00100333 0 0 0 0 0.00301 +0 0.00501667 0.00200667 0.00401333 0.00301 0.00301 0.00501667 0.00401333 +0 0 0 0 0 0 0 0 +0 0.00903 0.00501667 0.00100333 0.00301 0.00100333 0 0 +0.00100333 0.00100333 0 0 0 0 0 0 +0 0.00200667 0.00401333 0 0.00100333 0.00301 0.00501667 0 +0 0 0 0.00501667 0 0 0.00100333 0 +0 0.00602 0.01204 0.00501667 0.00301 0 0 0 +0 0 0.00602 0 0 0 0 0 +0.00602 0 0 0 0 0 0 0 +0 0 0 0.170567 0.944536 1.0605 1.05265 1.04299 +1.03091 1.02728 1.03091 1.02366 1.02245 1.03091 1.02728 1.01883 +1.02426 1.0146 1.02064 1.01883 1.02185 1.02306 1.02245 1.01581 +1.00796 0.994668 0.991648 0.995876 0.99346 0.994064 0.994064 0.986816 +0.985608 0.99044 0.988024 1.00131 1.01822 1.01641 1.02124 1.02185 +1.01943 1.02245 1.02426 1.02306 1.01762 1.01762 1.01762 1.01641 +1.0152 1.02124 1.0146 1.01339 1.02185 1.00856 1.02124 1.02366 +1.01943 1.0146 1.02004 1.02426 1.01822 1.02668 1.02185 1.0146 +1.01581 1.01339 1.01158 1.01943 1.01883 1.01943 1.02004 1.01158 +1.00977 1.01702 1.02124 1.02426 1.01339 1.01218 1.014 1.014 +1.02487 1.01702 1.014 1.014 1.02245 1.02004 1.01641 1.0152 +1.01702 1.02004 1.0146 1.02306 1.01218 1.01762 1.02124 1.02426 +1.0152 1.02124 1.01883 1.0152 1.01339 1.01762 1.02426 1.02668 +1.014 1.02245 1.02366 1.01339 0.994668 0.986816 0.995272 0.991648 +0.988628 0.992252 0.99648 0.99044 0.998896 0.994064 1.01098 1.01883 +1.02124 1.01822 1.02547 1.02728 1.0146 1.02004 1.02426 1.01943 +1.0146 1.02426 1.02789 1.02789 1.02668 1.0303 1.03876 1.03936 +1.05084 1.05628 0.765576 0.0672233 0 0 0 0 +0 0 0 0 0 0.0100333 0.00501667 0.00602 +0.00602 0 0 0 0.00100333 0.00802667 0.00200667 0 +0 0.00200667 0.00100333 0.00301 0 0 0 0.00401333 +0 0 0 0 0.00100333 0.00100333 0.00401333 0 +0 0 0 0 0 0.00301 0.0100333 0.00100333 +0.00501667 0.00401333 0.00501667 0.00602 0 0.00501667 0 0.00602 +0 0 0 0 0 0 0 0 +0.0100333 0.00100333 0.00602 0.00501667 0 0.00501667 0.00501667 0 +0 0 0 0.00100333 0.00200667 0.00501667 0.00702333 0 +0.00401333 0.00200667 0 0.00301 0 0.00401333 0.00200667 0.0140467 +0 0 0.00802667 0.00401333 0.00100333 0 0 0.0100333 +0.00903 0 0 0 0.00200667 0.00301 0 0.00100333 +0.00200667 0 0 0 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.100333 0.907256 1.06171 1.05446 1.03876 1.03876 +1.03816 1.0297 1.02426 1.02306 1.01883 1.02306 1.02185 1.0291 +1.02245 1.0303 1.02124 1.02064 1.02004 1.02064 1.02306 1.01641 +0.992856 0.992856 0.989836 0.98742 1.00071 0.992856 0.991648 1.00192 +0.992252 0.998896 0.998292 0.986212 1.01098 1.01943 1.01883 1.01943 +1.02004 1.01702 1.01883 1.01762 1.02487 1.01762 1.02366 1.01822 +1.01883 1.01762 1.02366 1.01339 1.01822 1.01702 1.01581 1.02064 +1.02185 1.02185 1.0146 1.01943 1.01883 1.00977 1.01702 1.01702 +1.01822 1.02124 1.0146 1.01037 1.01339 1.01762 1.02004 1.02004 +1.01641 1.02185 1.01279 1.01822 1.02306 1.01339 1.014 1.00916 +1.02608 1.01762 1.0146 1.01279 1.01762 1.02064 1.01822 1.01098 +1.01822 1.02004 1.0146 1.02124 1.01822 1.01822 1.02366 1.02124 +1.02185 1.01762 1.01702 1.02608 1.01883 1.02004 1.02789 1.01339 +1.01883 1.02004 1.01822 0.985004 0.988628 1.00192 0.99044 0.991648 +0.98742 0.994064 0.992252 0.991044 0.988628 0.991648 0.99648 1.00856 +1.02849 1.02245 1.02426 1.01822 1.01762 1.0146 1.02245 1.01883 +1.02185 1.02547 1.01943 1.02306 1.02668 1.03514 1.03755 1.03936 +1.0442 1.05446 1.05567 0.710192 0.03913 0 0 0 +0 0 0 0 0.00100333 0 0 0.00100333 +0 0 0.00200667 0.00702333 0.00200667 0 0 0 +0.00100333 0.00401333 0 0 0 0.00100333 0.00602 0 +0 0 0 0 0.00200667 0.00100333 0 0 +0 0 0.00200667 0.0110367 0.00602 0 0 0 +0 0.00200667 0 0 0.00100333 0.00401333 0.0100333 0.0100333 +0 0 0 0 0 0 0 0 +0.00501667 0.00100333 0 0.00401333 0.00602 0.00401333 0.00702333 0.00802667 +0.00401333 0 0 0 0 0 0.00100333 0.00401333 +0 0 0.00301 0 0 0 0.00100333 0 +0.00200667 0.00802667 0 0 0.00702333 0.00200667 0 0 +0.00301 0.00702333 0 0.00200667 0.0110367 0 0.00100333 0 +0 0.00401333 0.00100333 0 0 0 0.00301 0 +0 0 0 0 0 0 0 0 +0 0.05719 0.772016 1.05567 1.05265 1.04238 1.03816 1.03212 +1.03514 1.03151 1.03272 1.03091 1.02124 1.02064 1.02004 1.02004 +1.02728 1.02306 1.02064 1.02547 1.0152 1.02487 1.01279 0.994064 +0.997688 0.988024 0.995272 0.989232 0.982588 0.995272 0.985608 0.9844 +0.991648 0.994668 0.99044 0.985004 0.995272 1.01339 1.01822 1.0146 +1.02064 1.02487 1.01883 1.01883 1.02306 1.02124 1.02366 1.02426 +1.02124 1.01762 1.02668 1.01037 1.02789 1.02608 1.0146 1.01822 +1.02245 1.02185 1.014 1.0152 1.01581 1.01037 1.0152 1.02124 +1.0152 1.02547 1.01641 1.01822 1.01037 1.02185 1.01641 1.0146 +1.01279 1.02728 1.01822 1.01098 1.00796 0.9995 0.998292 1.00494 +1.00977 1.01158 1.01581 1.01762 1.02004 1.02064 1.01943 1.01702 +1.02064 1.02487 1.01943 1.01943 1.01581 1.02245 1.01883 1.01158 +1.014 1.02064 1.02064 1.01822 1.02064 1.02124 1.0152 1.02426 +1.01581 1.01883 0.998292 0.991044 0.988628 0.985004 0.988024 0.989232 +0.994668 0.99044 0.9995 0.988628 0.99044 0.991648 0.992252 0.995272 +1.01581 1.01762 1.01702 1.02185 1.01339 1.02124 1.02004 1.0297 +1.02668 1.02426 1.02547 1.02426 1.03212 1.0303 1.0291 1.03393 +1.03634 1.04842 1.04722 1.05265 0.58996 0.00903 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0 0 +0.00100333 0 0 0.00301 0.00100333 0 0 0 +0.00100333 0 0.00802667 0.0160533 0.00501667 0.00200667 0.00501667 0.00100333 +0.00802667 0.00702333 0.00301 0 0 0.00200667 0 0.00903 +0.00802667 0.00501667 0.00100333 0.00802667 0.00501667 0.00401333 0.00200667 0.00602 +0.00702333 0 0 0 0 0 0 0.00301 +0 0.00501667 0.00602 0 0 0.00401333 0 0.00401333 +0.00802667 0.0130433 0.0110367 0.00401333 0.00501667 0 0 0 +0.00702333 0 0.00401333 0.00301 0 0.00100333 0.00501667 0.00301 +0 0 0 0 0.00200667 0.00401333 0.00501667 0 +0 0.00802667 0.0100333 0.00301 0 0.00200667 0.00401333 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0.607152 1.05869 1.05446 1.03876 1.03936 1.02849 1.03695 +1.02608 1.02547 1.02487 1.02004 1.02426 1.02426 1.02064 1.01702 +1.02064 1.02608 1.02004 1.0146 1.02185 1.02306 1.00735 0.989836 +0.985004 0.995272 0.995876 0.991044 0.992252 0.991044 1.0001 0.989836 +0.986212 0.989836 0.994064 0.9844 0.992252 1.01158 1.0291 1.02185 +1.0152 1.01339 1.01641 1.01883 1.01702 1.01339 1.01702 1.01702 +1.01762 1.02245 1.02306 1.01702 1.01218 1.02728 1.02004 1.01098 +1.02426 1.01581 1.014 1.00977 1.01158 1.02245 1.0152 1.02124 +1.02728 1.01883 1.014 1.01822 1.02124 1.02245 1.02245 1.02064 +1.01279 1.02004 1.01218 1.01641 1.02547 1.02064 1.02124 1.01822 +1.02185 1.0146 1.00252 1.00373 1.00614 1.02004 1.01883 1.02306 +1.02789 1.02185 1.02728 1.01218 1.02426 1.01762 1.01641 1.01279 +1.01883 1.01943 1.01822 1.01581 1.01822 1.02004 1.01943 1.02487 +1.01581 1.0146 0.985004 0.992856 1.00192 0.989836 0.99648 0.992856 +0.988628 0.991648 0.994064 0.994668 0.986816 0.985608 0.99044 0.99346 +0.998896 1.01943 1.0146 1.02245 1.01581 1.02728 1.02487 1.02547 +1.02245 1.02849 1.02245 1.02004 1.02789 1.01883 1.0291 1.02668 +1.03151 1.03695 1.05144 1.05628 1.03695 0.447487 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0.00702333 +0.00100333 0.00602 0.00501667 0 0.00100333 0.00401333 0 0.00802667 +0 0.00200667 0.00401333 0 0.00501667 0.0100333 0.00301 0.00401333 +0 0 0 0 0 0.00301 0.00802667 0 +0.00100333 0 0 0 0 0 0 0.00602 +0.00100333 0 0.00200667 0.00401333 0 0.00301 0.00200667 0 +0.00301 0 0.00602 0.00802667 0 0.00100333 0.00301 0 +0 0 0 0 0.00301 0 0 0 +0 0 0.00501667 0 0 0 0.00301 0 +0 0 0.00200667 0.00802667 0.00401333 0.00501667 0 0.00501667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.411367 1.03816 1.05326 1.04722 1.03393 1.02547 1.02426 1.02849 +1.02728 1.02245 1.02728 1.01883 1.01641 1.02124 1.02124 1.02004 +1.01098 1.01762 1.01883 1.02245 1.02245 1.01822 1.00131 0.991648 +0.991648 0.989232 0.997084 0.997084 0.991648 0.986212 0.995876 0.99346 +0.980776 0.991044 0.994668 0.992252 0.991648 0.991648 1.01702 1.02668 +1.02245 1.02426 1.01279 1.01581 1.02064 1.0152 1.02124 1.02608 +1.02004 1.02306 1.02245 1.02306 1.0146 1.01762 1.01641 1.01098 +1.00977 1.01218 1.01883 1.01581 1.02487 1.02064 1.01581 1.02306 +1.02487 1.0152 1.02306 1.02487 1.01641 1.01822 1.01943 1.01822 +1.02124 1.02185 1.0146 1.02426 1.02366 1.02124 1.01702 1.02185 +1.01943 1.01339 1.02547 1.0146 1.02306 1.02306 1.01943 1.02004 +1.01037 1.02185 1.02789 1.02366 1.02124 1.01279 1.02064 1.01943 +1.01943 1.02487 1.02245 1.02366 1.02124 1.02004 1.02064 1.0152 +1.01883 1.00796 0.986816 0.995876 0.991044 0.989836 0.991648 0.9844 +0.997688 0.997688 0.991044 0.99346 0.986212 0.99648 0.99648 0.985608 +0.991648 1.014 1.01822 1.01762 1.01702 1.0146 1.02004 1.01762 +1.02004 1.0146 1.01098 1.02185 1.02306 1.02487 1.03091 1.02426 +1.02608 1.03936 1.03272 1.0448 1.05628 1.00977 0.289963 0 +0 0 0 0 0 0 0 0 +0 0.00301 0 0 0 0 0.00903 0.0100333 +0.00702333 0.00401333 0.00501667 0.00401333 0 0.00802667 0.0100333 0 +0.00602 0.00100333 0 0.00702333 0.00401333 0 0.00602 0.00301 +0 0 0 0.00301 0 0.00100333 0 0 +0 0.00200667 0.00802667 0.00501667 0.00301 0.00802667 0 0.00100333 +0.00602 0 0 0 0 0 0 0.0110367 +0.00802667 0 0 0 0 0 0.00200667 0 +0 0 0 0 0.00602 0.00401333 0.00100333 0.00602 +0 0.00200667 0 0 0 0 0 0 +0.00401333 0 0 0.01204 0.00200667 0 0 0 +0 0 0 0 0 0.00301 0.00401333 0.00301 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.214713 +0.98742 1.05688 1.05084 1.04782 1.03876 1.02789 1.01943 1.02004 +1.02487 1.02487 1.02668 1.02245 1.02366 1.01641 1.0146 1.02608 +1.02306 1.01641 1.02245 1.02004 1.01702 1.0152 0.995876 0.989232 +0.986816 0.991044 0.991648 0.983192 0.992856 0.998292 0.992856 0.994668 +0.99648 0.994668 0.989232 0.997084 0.99346 0.997084 1.01702 1.01883 +1.0146 1.02547 1.02064 1.02608 1.02366 1.01883 1.014 1.02064 +1.014 1.01037 1.02004 1.01883 1.014 1.01218 1.0146 1.01641 +1.0152 1.0152 1.02004 1.0146 1.0152 1.01883 1.02185 1.01339 +1.0146 1.01581 1.014 1.01822 1.01943 1.01581 1.0146 1.02668 +1.01822 1.01641 1.0146 1.02487 1.02185 1.014 1.01581 1.0297 +1.01098 1.014 1.0146 1.02728 1.01762 1.02306 1.01762 1.02064 +1.01339 1.00494 1.00856 1.02366 1.01822 1.01883 1.0297 1.0152 +1.02185 1.01641 1.02366 1.01037 1.02124 1.01762 1.02366 1.02004 +1.02306 1.00131 0.991648 0.992252 0.992856 0.985004 0.995272 0.992252 +0.994064 0.997084 0.994064 0.995876 0.983192 0.989836 0.994668 0.99648 +0.992856 1.01702 1.02245 1.02547 1.01822 1.02124 1.01762 1.01943 +1.02124 1.01641 1.02064 1.02185 1.02487 1.02185 1.02547 1.02185 +1.03574 1.03393 1.0442 1.04238 1.04963 1.05628 0.947556 0.133443 +0 0 0 0 0 0 0 0 +0 0.00602 0 0 0 0 0 0 +0 0.00702333 0 0 0.00602 0.00100333 0 0.00702333 +0 0 0.0110367 0.00200667 0 0 0.00200667 0 +0 0 0.00602 0.00501667 0.00301 0 0 0 +0.00301 0.00602 0.00602 0 0.00602 0 0 0.00602 +0 0 0 0 0 0 0 0.00100333 +0.00602 0.00903 0.00702333 0 0.00301 0.00200667 0 0 +0.00200667 0.00301 0.00702333 0.00100333 0 0.00100333 0 0 +0.00501667 0 0 0 0 0.00501667 0.00100333 0 +0.00100333 0.00301 0 0 0 0.00401333 0.00401333 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0.00301 0.00903 0.00200667 0 0 0 +0 0 0 0 0 0 0.04816 0.867328 +1.0599 1.04722 1.03997 1.03453 1.03816 1.03272 1.03634 1.02306 +1.01822 1.02306 1.02668 1.02426 1.01641 1.02245 1.0146 1.02124 +1.01883 1.02366 1.0152 1.01943 1.02789 1.02306 1.00373 0.992856 +0.99648 0.998292 0.998896 0.99044 0.988024 0.985608 0.992856 0.99044 +0.992252 1.00131 0.985608 0.991648 0.99044 0.99346 1.01943 1.01581 +1.02245 1.02668 1.02426 1.01762 1.0146 1.02185 1.02185 1.01943 +1.02366 1.01883 1.01098 1.00252 1.014 1.02366 1.02306 1.02668 +1.02185 1.02849 1.01943 1.02004 1.0146 1.01943 1.02306 1.01702 +1.0152 1.02245 1.02487 1.01702 1.01037 1.02004 1.02185 1.02245 +1.01339 1.01762 1.02547 1.01883 1.01702 1.014 1.01883 1.02245 +1.01218 1.02124 1.01762 1.02064 1.01339 1.02004 1.01218 1.0152 +1.02064 1.0152 1.0146 1.00554 1.01037 1.01822 1.02487 1.02124 +1.00916 1.01641 1.02124 1.02185 1.02306 1.0146 1.01822 1.01581 +1.02124 0.99648 0.991648 0.99346 0.992252 0.99044 0.995876 0.992856 +0.992856 0.99346 0.992252 0.989836 0.994668 0.994668 0.994064 0.992252 +0.991648 1.00856 1.02004 1.00916 1.02426 1.01339 1.02306 1.0146 +1.02064 1.02124 1.02306 1.0291 1.01883 1.02245 1.02426 1.01943 +1.02366 1.02547 1.03091 1.03453 1.03997 1.04661 1.05567 0.7308 +0.0230767 0 0 0 0 0 0 0 +0 0 0 0.00100333 0.00301 0 0 0.00100333 +0 0 0 0.00200667 0.00100333 0.00602 0.00802667 0 +0 0.00903 0.00100333 0 0.00802667 0.00301 0 0.00100333 +0.00301 0.00401333 0 0.00100333 0 0 0 0.00802667 +0.00602 0.00301 0 0.00501667 0 0 0.00200667 0 +0.00301 0 0 0 0 0 0 0.00702333 +0.00100333 0.00200667 0.00200667 0.00602 0 0.00301 0.00702333 0 +0 0 0 0.00702333 0.00802667 0.00401333 0.00501667 0.00702333 +0.00200667 0.0130433 0.00802667 0.00200667 0.00100333 0 0 0 +0 0.00401333 0.0100333 0 0 0 0 0.00301 +0.0110367 0 0 0.00401333 0.00602 0 0.00903 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.536783 1.04963 +1.05024 1.04299 1.03393 1.0303 1.03212 1.02426 1.02487 1.03091 +1.02004 1.01581 1.01581 1.02064 1.01822 1.02064 1.02064 1.01762 +1.01641 1.02245 1.01822 1.014 1.0146 1.02245 1.0001 0.992252 +0.988024 0.991648 0.994064 0.991044 0.997084 1.00131 0.995272 1.0001 +0.986816 0.994064 0.992856 0.991044 0.991648 0.997084 1.01943 1.01641 +1.02245 1.02185 1.02124 1.02547 1.01279 1.02366 1.02124 1.01702 +1.01762 1.02064 1.01702 1.0146 1.01581 1.02487 1.0146 1.014 +1.01279 1.02064 1.01883 1.01702 1.01762 1.01581 1.014 1.0152 +1.0146 1.0146 1.014 1.01339 1.01943 1.02789 1.02306 1.02789 +1.02004 1.02547 1.01641 1.02245 1.02185 1.01279 1.01762 1.02366 +1.01037 1.02668 1.02245 1.01822 1.02789 1.02728 1.01702 1.02124 +1.02004 1.01943 1.02306 1.01581 1.01762 1.00735 1.00312 1.01762 +1.02064 1.01702 1.01339 1.02124 1.0146 1.01339 1.02004 1.02245 +1.0146 1.00735 0.991648 0.986212 0.992252 0.99044 0.99648 0.995272 +0.99044 0.985608 0.988024 0.992252 0.991648 0.9995 0.99346 0.994064 +0.992856 1.01037 1.01339 1.02064 1.01702 1.01822 1.00916 1.02004 +1.02487 1.01822 1.02426 1.02185 1.01762 1.02487 1.02366 1.03212 +1.02728 1.0291 1.02728 1.03151 1.03332 1.05084 1.05628 1.04601 +0.456517 0 0 0 0 0 0 0 +0 0.00401333 0 0 0 0 0 0 +0 0.00702333 0 0 0.00100333 0.00702333 0 0 +0.00401333 0 0 0 0 0 0.00401333 0 +0 0.00401333 0.00100333 0 0 0.00401333 0.0110367 0 +0 0 0.00100333 0 0 0.00100333 0 0.0100333 +0.0100333 0.00602 0 0 0 0 0.00100333 0.00200667 +0.00602 0 0.00301 0.00301 0.00100333 0 0 0.00802667 +0.00501667 0.00702333 0 0 0 0.00301 0 0 +0 0 0 0 0 0.00401333 0.0100333 0.00702333 +0 0 0 0.00501667 0.00602 0 0 0 +0 0.00501667 0.00100333 0 0.00501667 0.00401333 0 0.00301 +0.00702333 0 0.00100333 0 0 0.00200667 0 0 +0 0 0 0 0 0.23478 1.01037 1.05869 +1.05144 1.03574 1.04057 1.03272 1.02789 1.03091 1.02004 1.02426 +1.02608 1.02487 1.01943 1.02004 1.02004 1.02306 1.02366 1.0152 +1.02004 1.01943 1.01762 1.02306 1.0146 1.02426 1.00735 0.991044 +0.992252 0.994668 0.9995 0.992856 0.991648 0.992856 0.99346 0.99044 +0.998292 0.992856 0.994668 0.992856 0.994668 0.998896 1.01581 1.01943 +1.01641 1.01822 1.02004 1.01098 1.01581 1.01762 1.00312 1.02306 +1.01943 1.02366 1.01943 1.01883 1.0146 1.02366 1.01943 1.01641 +1.01218 1.01702 1.01339 1.02004 1.02306 1.01943 1.02487 1.02547 +1.02547 1.02547 1.02185 1.01158 1.02245 1.01279 1.01943 1.0146 +1.02487 1.02608 1.01883 1.02245 1.02547 1.02124 1.02306 1.01581 +1.02547 1.01762 1.01762 1.02124 1.02245 1.02064 1.01883 1.01702 +1.014 1.02245 1.01702 1.01883 1.02366 1.01218 1.00977 0.99346 +1.01037 1.02306 1.02185 1.02789 1.01702 1.01883 1.02849 1.01762 +1.02608 1.00494 0.992856 0.997688 0.991044 0.994064 0.995876 0.99346 +0.99044 0.994064 0.995272 0.99044 0.994064 0.988024 0.989836 0.99044 +0.989836 1.0146 1.02366 1.01641 1.02004 1.02245 1.02608 1.02487 +1.02306 1.01943 1.0146 1.02064 1.01581 1.01762 1.01762 1.02366 +1.01641 1.01702 1.03212 1.0291 1.03574 1.03816 1.0442 1.04903 +0.988628 0.199663 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00301 0 +0.00200667 0 0.00301 0.0100333 0.01505 0 0 0 +0 0 0 0 0 0.00301 0 0.00602 +0.00200667 0 0 0 0.00401333 0.00301 0 0 +0 0 0 0 0 0.00401333 0.0110367 0.00200667 +0 0.00100333 0 0 0 0 0.00501667 0.00100333 +0 0.00501667 0.00200667 0 0.00501667 0.00301 0.00301 0 +0.00501667 0.00301 0.00702333 0.00501667 0 0 0 0 +0.00802667 0.00903 0.00200667 0.00401333 0.00100333 0 0 0 +0.00501667 0.00802667 0.00702333 0.00200667 0 0.00200667 0.00301 0.00903 +0.00401333 0 0 0 0 0.00301 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0311033 0.80808 1.0593 1.05567 +1.04178 1.03091 1.02728 1.02849 1.02849 1.02728 1.02185 1.02064 +1.01943 1.01822 1.02728 1.01702 1.0146 1.014 1.02004 1.01702 +1.02124 1.01883 1.01641 1.02426 1.01581 1.0146 1.014 0.99648 +0.991648 0.994064 0.994668 0.991648 0.986212 0.997688 0.989232 0.986816 +0.992856 0.992856 0.994064 0.991044 0.99346 1.01762 1.01641 1.02487 +1.02064 1.01158 1.01702 1.0152 1.01883 1.00554 1.00494 1.02426 +1.01581 1.01702 1.02245 1.02245 1.01822 1.01581 1.02245 1.02668 +1.02245 1.02789 1.0152 1.02124 1.01943 1.02064 1.02306 1.02064 +1.014 1.0146 1.02064 1.02366 1.03634 1.02668 1.02306 1.00796 +1.0152 1.00614 1.01822 1.01279 1.02426 1.01883 1.0152 1.01581 +1.01762 1.02004 1.02245 1.02004 1.01883 1.01581 1.02306 1.01822 +1.02064 1.02185 1.0152 1.02124 1.01581 1.02064 1.02366 1.014 +0.998896 1.0001 1.02668 1.02366 1.02426 1.02426 1.0146 1.01883 +1.02547 1.01037 0.989836 0.985004 0.98742 0.995876 0.992856 0.982588 +0.992856 0.992856 0.988628 0.991648 0.989232 0.991044 0.991648 1.00252 +0.9995 1.02789 1.0146 1.01581 1.01943 1.02728 1.01762 1.0152 +1.02064 1.0146 1.01702 1.02185 1.01762 1.02366 1.02064 1.02789 +1.02608 1.02789 1.02728 1.02185 1.0297 1.03332 1.03936 1.05386 +1.06352 0.787472 0.02408 0 0 0 0 0 +0 0 0 0 0.00301 0 0 0.00401333 +0 0.00802667 0.00702333 0.00602 0 0 0 0 +0.00501667 0.00602 0.00401333 0.00802667 0.00802667 0.0100333 0.00903 0 +0 0 0.00702333 0.00903 0.00301 0.00200667 0 0.00100333 +0 0.00401333 0.00301 0.00702333 0.0110367 0.00401333 0 0 +0.00100333 0.00200667 0 0 0 0 0.00802667 0.00702333 +0.00301 0 0.00200667 0.00802667 0.00301 0.00401333 0.00100333 0 +0 0 0 0 0 0 0 0.00200667 +0 0 0 0.00401333 0.00401333 0.00802667 0.00200667 0 +0 0 0 0.00200667 0.00602 0.00301 0 0 +0 0.00702333 0.00401333 0 0 0 0 0.00401333 +0 0.00200667 0 0 0 0 0.00100333 0 +0 0 0 0 0.410363 1.04299 1.05084 1.03936 +1.04299 1.0303 1.02487 1.02547 1.02728 1.02547 1.02487 1.02366 +1.01702 1.01702 1.02004 1.02366 1.01883 1.0146 1.01822 1.02124 +1.02306 1.01822 1.02245 1.02426 1.0297 1.0297 1.01339 1.00252 +0.988628 0.991648 0.995876 0.98742 0.989836 0.994064 0.992856 0.992856 +0.989232 0.986816 0.998292 0.992856 1.00494 1.02064 1.01218 1.02004 +1.02668 1.02608 1.02306 1.01339 1.00554 1.00916 1.01822 1.00856 +1.02004 1.01037 1.02487 1.01581 1.02426 1.01702 1.02245 1.02245 +1.01943 1.01883 1.01883 1.02306 1.01702 1.01581 1.02366 1.02487 +1.02306 1.01883 1.02124 1.02306 1.0152 1.00071 0.983192 0.960844 +0.970508 0.966884 0.969904 0.976548 1.0001 1.02185 1.01822 1.02608 +1.0152 1.02124 1.02124 1.0146 1.02064 1.014 1.0303 1.02124 +1.02124 1.02366 1.02728 1.02366 1.01883 1.02668 1.02547 1.02789 +1.02547 1.02004 1.00433 1.01339 1.02366 1.01762 1.02608 1.0291 +1.01943 1.0146 1.00192 0.99346 0.99044 0.995876 0.99044 0.99044 +0.989232 0.99346 0.997688 0.988628 0.988628 0.985004 0.994668 0.9995 +0.994668 1.02064 1.01581 1.02366 1.0152 1.02185 1.01762 1.01883 +1.0146 1.01883 1.02789 1.0152 1.01943 1.02064 1.02185 1.01883 +1.02487 1.01883 1.02306 1.02426 1.02789 1.03574 1.03755 1.04661 +1.05326 1.0454 0.402337 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0 +0.00501667 0.00301 0 0 0 0 0 0.01204 +0.00100333 0 0.00301 0.00903 0 0 0 0 +0 0.00401333 0 0 0 0 0 0 +0.00802667 0.00702333 0.00602 0.00301 0.00200667 0 0 0 +0.00401333 0.00802667 0 0 0 0 0 0.00501667 +0.00602 0.00200667 0 0 0 0.00100333 0.00501667 0.00702333 +0.00802667 0.00401333 0 0 0.00802667 0.00301 0 0 +0.00401333 0 0 0 0 0 0.00702333 0.00401333 +0.00401333 0 0.00301 0.00100333 0.00501667 0.0110367 0.00802667 0.00401333 +0 0 0.00702333 0.00802667 0.00100333 0.00100333 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0.0913033 0.949368 1.05567 1.04118 1.03332 +1.0303 1.03272 1.02608 1.02487 1.02124 1.02064 1.02668 1.01943 +1.01943 1.0146 1.02064 1.02849 1.02306 1.02245 1.01641 1.01702 +1.02789 1.01641 1.00916 1.01581 1.01581 1.02064 1.02789 1.01641 +1.00675 0.9844 0.99044 0.99346 0.986212 0.99044 0.994064 0.992252 +0.997084 0.988628 0.988628 0.997688 1.0152 1.02185 1.01943 1.01702 +1.0146 1.02004 1.01218 1.0146 1.01339 1.02245 1.02487 1.02245 +1.02064 1.01943 1.01762 1.02245 1.01943 1.01218 1.02124 1.01943 +1.02245 1.01641 1.01581 1.02124 1.01883 1.01581 1.01943 1.01883 +1.02306 1.01339 1.02004 1.00856 0.972924 0.967488 0.962656 0.96326 +0.963864 0.966884 0.968092 0.965072 0.963864 0.992856 1.014 1.02185 +1.01822 1.02366 1.02426 1.0146 1.02124 1.0152 1.02366 1.0146 +1.02064 1.01581 1.01822 1.01762 1.01702 1.01702 1.02366 1.014 +1.01702 1.02245 1.0152 0.997688 1.00071 1.01883 1.01943 1.01702 +1.01339 1.01943 1.01822 0.988628 0.99346 0.995272 0.992252 0.99044 +0.998896 0.991648 0.992856 0.994064 0.997688 1.0001 0.994668 1.00071 +1.02306 1.02789 1.02004 1.01702 1.01641 1.02185 1.02185 1.01339 +1.02185 1.0291 1.02245 1.01822 1.01822 1.02185 1.02306 1.02306 +1.02306 1.02064 1.02245 1.02306 1.02426 1.03393 1.03272 1.04359 +1.04178 1.05265 0.949368 0.103343 0 0 0 0 +0 0 0 0 0.00301 0 0 0 +0 0 0 0.00100333 0.00200667 0.0100333 0.00602 0 +0 0.00702333 0 0 0 0 0.00602 0.00802667 +0.00401333 0 0.00200667 0.00401333 0.00903 0.00501667 0.00903 0.0200667 +0.00301 0 0 0 0 0 0 0.00501667 +0.00501667 0 0 0 0 0 0.00301 0 +0 0.00602 0.0100333 0.00702333 0 0.00301 0.00200667 0 +0.00401333 0.00301 0.00301 0.00200667 0 0.00100333 0.00200667 0.00802667 +0.00802667 0.00903 0.0140467 0.01204 0.00401333 0.00200667 0 0.00200667 +0.00301 0 0 0.00301 0 0 0 0.00301 +0.00903 0.00100333 0 0 0 0 0 0 +0 0.00200667 0 0.00501667 0 0 0 0 +0 0 0 0.55083 1.04842 1.05084 1.03695 1.03332 +1.03212 1.03212 1.02245 1.02185 1.02668 1.01943 1.01702 1.01641 +1.02608 1.01762 1.01641 1.01702 1.014 1.02366 1.01581 1.01883 +1.0152 1.02426 1.01943 1.02004 1.01641 1.01581 1.01702 1.02124 +1.0152 1.00554 0.992252 0.991044 0.997084 0.994064 0.99044 0.991648 +0.988024 0.995876 0.99346 1.00675 1.02185 1.01822 1.02789 1.02306 +1.02124 1.00433 1.00916 1.02789 1.01762 1.02124 1.01339 1.01218 +1.02124 1.01762 1.02487 1.01943 1.02487 1.02064 1.02064 1.02004 +1.02124 1.01641 1.01218 1.01883 1.02426 1.01098 1.02426 1.01883 +1.0297 1.01822 1.00312 0.968092 0.966884 0.956012 0.961448 0.963864 +0.965072 0.961448 0.965072 0.966884 0.965676 0.969904 0.98138 1.01943 +1.02728 1.02124 1.02004 1.01641 1.02547 1.02366 1.02124 1.02547 +1.02245 1.03272 1.01581 1.01641 1.01943 1.01822 1.01762 1.02245 +1.01339 1.02608 1.01762 1.02064 1.00312 1.00977 1.01822 1.01581 +1.01943 1.02245 1.01339 1.01762 0.995272 0.99044 0.988024 0.997688 +0.992252 0.986816 0.989232 0.986816 0.9995 0.985004 0.983796 1.01581 +1.02004 1.01581 1.01339 1.01581 1.01641 1.01581 1.01762 1.01883 +1.0152 1.01641 1.0152 1.01762 1.02426 1.01943 1.01943 1.02306 +1.01943 1.01339 1.02245 1.02124 1.02366 1.03091 1.02366 1.03212 +1.0442 1.05144 1.05144 0.55083 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00501667 0 0 0 0 0.00401333 +0.00301 0 0 0.00802667 0.00501667 0.00602 0 0 +0 0 0 0 0 0.00401333 0.00100333 0 +0 0 0 0 0 0.00401333 0.0110367 0.00301 +0.00100333 0.00100333 0.00301 0 0 0 0 0.00301 +0 0 0 0 0.00100333 0 0 0 +0 0 0.00100333 0 0 0 0.00301 0 +0 0 0 0 0 0 0.00501667 0 +0 0 0 0 0.00301 0.00200667 0.00301 0 +0 0.00702333 0.00903 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.154513 0.983192 1.05628 1.04722 1.03816 1.03212 +1.02487 1.02487 1.03634 1.02306 1.01943 1.02366 1.01943 1.01883 +1.01822 1.02547 1.02124 1.01822 1.01822 1.01339 1.01581 1.01883 +1.01702 1.01943 1.02245 1.02487 1.01943 1.01581 1.01641 1.01762 +1.03091 1.02245 1.00796 0.998292 0.992252 0.994668 0.992856 0.98742 +0.991648 1.00735 1.03272 1.0146 1.02124 1.02064 1.02608 1.0152 +1.00735 1.01279 1.0146 1.01158 1.01702 1.01822 1.02245 1.02245 +1.02306 1.014 1.014 1.00796 1.02124 1.02185 1.0146 1.02487 +1.02366 1.02547 1.01883 1.01883 1.014 1.02064 1.02487 1.02245 +1.02245 1.01218 0.971112 0.962656 0.963864 0.952388 0.966884 0.96628 +0.97232 0.968696 0.971112 0.964468 0.966884 0.96326 0.966884 0.981984 +1.0146 1.02064 1.0152 1.02124 1.02004 1.0146 1.01702 1.014 +1.01822 1.01641 1.01581 1.01883 1.01098 1.01098 1.01641 1.02064 +1.02004 1.02245 1.02306 1.02004 1.02849 1.00675 0.998896 1.014 +1.02728 1.02426 1.0291 1.0146 1.0152 0.997084 0.989836 0.983192 +0.985004 0.994668 0.99648 0.992252 0.997084 1.00131 1.02306 1.02185 +1.02306 1.01702 1.02426 1.02185 1.02487 1.02064 1.02547 1.01218 +1.0152 1.02306 1.0152 1.01641 1.02185 1.02064 1.01581 1.01702 +1.01158 1.01762 1.03212 1.02366 1.02124 1.02789 1.02849 1.03393 +1.04057 1.03997 1.0605 0.997084 0.15953 0 0 0 +0 0 0 0 0 0 0.00100333 0.00100333 +0 0 0 0 0.00100333 0.00903 0.0100333 0 +0 0 0.00903 0 0 0 0.00200667 0.00301 +0.00602 0.00602 0.00802667 0.00301 0.00100333 0 0 0 +0.00602 0 0.00401333 0.00702333 0.00602 0.00802667 0 0 +0 0 0.00100333 0 0 0.0100333 0.00702333 0.00501667 +0.00401333 0.00301 0 0 0.00100333 0.00100333 0 0 +0 0.00100333 0 0 0 0 0 0 +0.00200667 0.00100333 0 0 0 0 0.00301 0.00401333 +0 0 0.00702333 0 0.00100333 0.00501667 0.00401333 0.0130433 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.593973 1.0605 1.0448 1.03453 1.03816 1.03212 +1.0291 1.02306 1.02124 1.02366 1.02245 1.01943 1.01762 1.02185 +1.01641 1.01762 1.02004 1.01762 1.01762 1.02124 1.01581 1.02306 +1.01943 1.01702 1.01641 1.0152 1.01822 1.01943 1.0303 1.02004 +1.00916 1.02487 1.01037 1.01702 1.0152 1.00675 1.0146 1.01762 +1.01762 1.01883 1.01581 1.02789 1.0146 1.02004 1.01218 0.998292 +1.01702 1.02245 1.02366 1.02064 1.02668 1.02306 1.02245 1.01943 +1.02306 1.02608 1.02728 1.01883 1.01822 1.02547 1.014 1.01279 +1.02124 1.01883 1.02124 1.02366 1.01641 1.02064 1.01883 1.02728 +1.01822 0.9844 0.964468 0.971112 0.963864 0.968696 0.968092 0.972924 +0.965072 0.9693 0.967488 0.959636 0.973528 0.969904 0.971716 0.967488 +1.01702 1.02245 1.01581 1.02728 1.02185 1.01581 1.02608 1.01279 +1.02185 1.02547 1.01218 1.02306 1.01581 1.01883 1.02608 1.02306 +1.014 1.02064 1.00614 1.02487 1.0146 1.01943 1.00252 0.995876 +1.0146 1.01641 1.0146 1.02608 1.02426 1.02185 1.00796 0.997084 +1.00614 1.0001 0.99648 1.00796 1.01943 1.01702 1.02124 1.01883 +1.02487 1.02668 1.01943 1.014 1.01037 1.02245 1.02064 1.01158 +1.02185 1.01943 1.01702 1.01158 1.02245 1.0146 1.00916 1.02064 +1.02366 1.02124 1.0152 1.01702 1.01883 1.02728 1.02608 1.0291 +1.03634 1.03876 1.05024 1.05446 0.630336 0 0 0 +0 0 0 0 0 0.00702333 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00401333 0 0 0.00200667 +0 0 0 0 0 0.00401333 0.00602 0.00903 +0.00401333 0.00702333 0.00301 0 0.00702333 0 0.00100333 0.00301 +0.00501667 0.00702333 0.00903 0 0 0.00903 0.00501667 0.00200667 +0.00100333 0.00200667 0.00200667 0.00200667 0.00602 0.00802667 0.0140467 0.00903 +0.00903 0.00702333 0.00602 0.00301 0.00200667 0 0 0 +0 0.00100333 0.00602 0.00702333 0.00401333 0.00100333 0 0.00100333 +0.00903 0 0 0.00501667 0 0 0 0 +0.00100333 0.0140467 0.00903 0.00100333 0.00602 0.00401333 0 0.0100333 +0.0100333 0 0 0 0 0 0 0 +0 0.16555 0.99648 1.05688 1.04903 1.04359 1.03393 1.03091 +1.03332 1.02487 1.02668 1.02306 1.02366 1.02366 1.01762 1.01943 +1.02004 1.01702 1.01702 1.0152 1.0152 1.0146 1.02366 1.02426 +1.02064 1.02426 1.02124 1.01822 1.02608 1.01943 1.02245 1.02547 +1.02064 1.02124 1.02789 1.02004 1.02608 1.01702 1.02306 1.02668 +1.02004 1.02185 1.02004 1.02366 1.02608 1.00977 0.985004 1.00735 +1.02547 1.02064 1.01943 1.02124 1.0146 1.0146 1.01581 1.02064 +1.014 1.02426 1.0146 1.02004 1.0146 1.02426 1.02245 1.01158 +1.02789 1.01581 1.0146 1.02487 1.03091 1.01822 1.02366 1.02849 +1.02306 0.977756 0.966884 0.965676 0.971716 0.965676 0.961448 0.971112 +0.971112 0.968696 0.965072 0.962052 0.962052 0.960844 0.954804 0.955408 +0.994064 1.02124 1.02849 1.01158 1.01943 1.02608 1.0146 1.02306 +1.02668 1.01581 1.01641 1.01883 1.02064 1.0146 1.01943 1.02064 +1.01943 1.02064 1.02185 1.02728 1.02668 1.02487 1.02789 1.00614 +0.992856 1.01279 1.02608 1.02608 1.02487 1.01702 1.02185 1.02789 +1.02789 1.02185 1.01641 1.02547 1.02366 1.01218 1.02728 1.01641 +1.02064 1.0152 1.0152 1.01762 1.02487 1.02366 1.01943 1.01581 +1.01098 1.01641 1.02245 1.02245 1.01641 1.02064 1.02306 1.02366 +1.01943 1.01339 1.0291 1.02306 1.02668 1.02185 1.02306 1.02728 +1.03332 1.04057 1.04601 1.06111 0.994064 0.172573 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0.00602 0.00100333 0.00200667 0.00100333 +0.00301 0.00401333 0 0 0 0 0 0 +0 0 0 0 0.00401333 0.00200667 0 0 +0 0 0 0.00200667 0 0.00200667 0.00200667 0.00200667 +0.00401333 0.00301 0.00200667 0 0 0 0.00301 0.00702333 +0 0 0.00100333 0 0 0 0 0 +0 0 0.00200667 0.00100333 0 0 0.00200667 0 +0 0 0 0.00301 0.00602 0.00401333 0.00301 0 +0 0.00802667 0.00100333 0 0.00301 0 0 0 +0 0 0 0.00501667 0 0 0 0 +0 0.00100333 0 0 0 0 0 0 +0 0.569893 1.05748 1.0442 1.03695 1.03151 1.03212 1.02426 +1.02124 1.0297 1.02789 1.02366 1.01762 1.02124 1.02306 1.01883 +1.02124 1.01581 1.01641 1.02064 1.02064 1.01641 1.02185 1.02185 +1.01883 1.01158 1.01822 1.01098 1.01098 1.01279 1.01762 1.0146 +1.01822 1.01641 1.01762 1.01822 1.02306 1.02366 1.02426 1.02366 +1.02004 1.02245 1.01943 1.02306 1.02185 0.989232 1.01218 1.02124 +1.02306 1.014 1.02245 1.02245 1.02849 1.0152 1.02004 1.01762 +1.02306 1.02487 1.02728 1.01279 1.014 1.02124 1.01943 1.01883 +1.0146 1.02366 1.01158 1.02547 1.01822 1.01158 1.01822 1.02004 +1.0152 0.962656 0.968696 0.965072 0.964468 0.966884 0.97232 0.971112 +0.961448 0.960844 0.96628 0.962656 0.9693 0.965676 0.970508 0.9693 +0.9844 1.03634 1.02608 1.01037 1.02306 1.01702 1.01641 1.02426 +1.02487 1.01702 1.01943 1.02366 1.02124 1.01762 1.01218 1.02245 +1.01641 1.02245 1.014 1.02245 1.02004 1.02608 1.02185 1.02487 +1.01641 0.994064 1.02487 1.014 1.01702 1.01822 1.02185 1.02064 +1.02547 1.01762 1.01218 1.01641 1.02064 1.02366 1.01943 1.0146 +1.0146 1.02426 1.01822 1.01822 1.02124 1.02306 1.02004 1.02185 +1.01822 1.02728 1.02366 1.00856 1.02185 1.02185 1.01822 1.02004 +1.0146 1.0146 1.02004 1.02245 1.02608 1.02426 1.02306 1.0297 +1.03574 1.03574 1.03876 1.05024 1.05446 0.584943 0 0 +0 0 0 0 0 0 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0.00301 0.00100333 0 0.00903 0.00602 0.00200667 +0 0.00200667 0.00401333 0.00301 0 0.00100333 0.00100333 0 +0 0.00301 0 0.00100333 0.00200667 0 0.00401333 0.00301 +0.00100333 0.00401333 0.00401333 0 0 0.0110367 0.00501667 0.00501667 +0.01204 0.0100333 0.00301 0.00301 0.00100333 0.00100333 0.00602 0.00301 +0 0 0 0.00100333 0.00602 0 0 0.00401333 +0.00100333 0 0 0 0 0 0.00100333 0 +0 0 0.00702333 0 0 0 0.00100333 0.00301 +0.00301 0.00501667 0 0.00401333 0.00301 0.00501667 0.00401333 0.00100333 +0 0 0 0 0 0 0 0 +0.12642 0.985608 1.05205 1.0454 1.03453 1.03151 1.02245 1.02789 +1.02004 1.01641 1.0146 1.01883 1.01279 1.01218 1.01943 1.01762 +1.02064 1.02185 1.02064 1.01218 1.02426 1.01943 1.0152 1.01641 +1.02426 1.02426 1.02426 1.02306 1.02668 1.014 1.02064 1.02124 +1.01943 1.02789 1.02487 1.02487 1.02064 1.01762 1.02306 1.01158 +1.02064 1.02185 1.02185 1.0146 0.994064 1.01158 1.02849 1.01702 +1.02366 1.02306 1.02306 1.01943 1.01943 1.02064 1.01339 1.02004 +1.01943 1.02245 1.02004 1.01762 1.02124 1.01581 1.01339 1.02487 +1.02064 1.02306 1.03091 1.02004 1.0303 1.02608 1.02668 1.02547 +1.00252 0.97836 0.964468 0.979568 0.965676 0.975944 0.960844 0.955408 +0.965072 0.968696 0.973528 0.969904 0.9693 0.963864 0.962052 0.96326 +0.97232 1.02487 1.01883 1.01822 1.02245 1.02487 1.01279 1.02426 +1.02064 1.0146 1.01641 1.02426 1.01339 1.02426 1.02245 1.02185 +1.01702 1.02608 1.02366 1.01943 1.02245 1.02487 1.02185 1.0291 +1.02245 1.00554 1.00494 1.01641 1.02366 1.01883 1.02789 1.01762 +1.0152 1.01943 1.01158 1.01943 1.02064 1.01098 1.01218 1.01762 +1.02487 1.0146 1.02547 1.02306 1.00916 1.01339 1.01822 1.01641 +1.01883 1.02366 1.02547 1.01762 1.02366 1.01883 1.01822 1.02064 +1.01641 1.02004 1.02185 1.01822 1.02245 1.02004 1.02245 1.0303 +1.03272 1.03453 1.03272 1.04782 1.05265 0.994064 0.124413 0 +0 0 0 0 0 0 0 0.00100333 +0.00501667 0.00100333 0.00802667 0.00802667 0.00702333 0.00501667 0.00602 0 +0.00200667 0 0 0 0.00301 0 0 0 +0.00702333 0.00501667 0 0 0.00200667 0.00100333 0.00100333 0.00301 +0.00100333 0 0 0 0.00200667 0.00401333 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0.00401333 0.00602 0.00301 0.00100333 0.00200667 0.00602 +0.00702333 0.00401333 0.00501667 0.00401333 0 0.0130433 0 0 +0.00301 0.00301 0 0 0 0 0 0 +0 0 0 0.0100333 0.0110367 0.00903 0.00200667 0.00100333 +0.00702333 0 0 0 0.00200667 0.00802667 0 0 +0 0 0 0 0 0 0 0 +0.47859 1.05567 1.05326 1.03936 1.03151 1.03151 1.03091 1.02306 +1.02547 1.02547 1.02064 1.01883 1.02064 1.02124 1.01822 1.0146 +1.01762 1.014 1.01581 1.0146 1.01037 1.02004 1.01702 1.01943 +1.02064 1.0146 1.02245 1.01762 1.00977 1.0152 1.02245 1.01762 +1.014 1.01702 1.01037 1.02487 1.01762 1.02366 1.02124 1.02366 +1.02004 1.02366 1.02366 0.995272 1.00675 1.01883 1.02064 1.02245 +1.02366 1.02004 1.01641 1.01883 1.0146 1.01943 1.02064 1.03574 +1.03997 1.0454 1.05386 1.04057 1.05084 1.02608 1.0152 1.01218 +1.01702 1.03212 1.03091 1.03151 1.02124 1.02487 1.01581 1.01641 +1.00735 0.966884 0.965072 0.968696 0.967488 0.965072 0.971716 0.97534 +0.967488 0.9693 0.969904 0.971112 0.971716 0.970508 0.964468 0.959032 +0.981984 1.01702 1.02064 1.02185 1.02124 1.02185 1.02306 1.01702 +1.01218 1.01641 1.01883 1.01883 1.02426 1.02728 1.01339 1.0146 +1.01822 1.02245 1.014 1.01822 1.01943 1.0146 1.02487 1.01702 +1.01822 1.02426 1.00735 1.00131 1.01762 1.02064 1.02004 1.014 +1.0146 1.01279 1.02245 1.01943 1.02789 1.01762 1.02608 1.02487 +1.02185 1.02366 1.01822 1.01279 1.02366 1.02245 1.02004 1.02124 +1.01702 1.0152 1.01883 1.01702 1.01943 1.02185 1.01339 1.01822 +1.02487 1.02245 1.02608 1.02004 1.01702 1.02185 1.01702 1.01883 +1.02849 1.02668 1.04057 1.04057 1.05205 1.05386 0.48461 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0 0 0 +0 0 0.00401333 0.00802667 0 0 0 0.00401333 +0 0 0 0.00602 0.00702333 0 0 0.00100333 +0.00100333 0.00301 0.00301 0.00802667 0 0 0 0 +0.00200667 0.00100333 0.00200667 0 0 0.00501667 0 0.00100333 +0.00301 0 0 0.00200667 0.00501667 0.00200667 0 0 +0 0 0 0 0.00301 0 0.0100333 0.00702333 +0 0.00100333 0.00602 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0491633 +0.926416 1.05507 1.04178 1.04057 1.03393 1.02608 1.02124 1.02426 +1.01641 1.02004 1.02487 1.03212 1.02245 1.01702 1.02185 1.01762 +1.01943 1.02064 1.02668 1.0303 1.02245 1.01822 1.01883 1.02426 +1.02245 1.014 1.01943 1.02124 1.02306 1.0146 1.01883 1.02487 +1.01762 1.01822 1.02064 1.01943 1.0152 1.01762 1.02366 1.01822 +1.02547 1.01943 0.9995 1.00131 1.02306 1.02668 1.01702 1.02004 +1.01822 1.02366 1.01702 1.01943 1.02487 1.02306 1.04057 1.04057 +1.05024 1.03574 1.0454 1.04661 1.04903 1.05326 1.0442 1.03091 +1.0146 1.01943 1.01822 1.02124 1.01822 1.014 1.02124 1.02728 +1.01822 0.968696 0.9693 0.957824 0.962656 0.96628 0.97232 0.9693 +0.961448 0.96326 0.96628 0.968696 0.966884 0.970508 0.96326 0.967488 +0.991044 1.014 1.02608 1.01762 1.02124 1.01158 1.02306 1.01883 +1.01943 1.01883 1.02064 1.014 1.0146 1.01158 1.00554 1.01822 +1.01943 1.02124 1.02185 1.02185 1.02487 1.02004 1.02426 1.01581 +1.0291 1.0152 1.01702 1.00554 1.0146 1.01158 1.01641 1.01702 +1.02608 1.02608 1.01762 1.02004 1.02064 1.02064 1.01943 1.01158 +1.0297 1.01883 1.0152 1.02306 1.02004 1.01943 1.02064 1.01762 +1.02547 1.01883 1.01279 1.01218 1.01702 1.01822 1.01641 1.02124 +1.01581 1.01279 1.0152 1.01279 1.02064 1.02064 1.02487 1.03091 +1.0303 1.0303 1.03151 1.03091 1.0442 1.0599 0.93004 0.0531767 +0 0 0 0 0 0 0 0 +0.00501667 0.00200667 0 0 0 0 0 0.0100333 +0.00602 0.00903 0 0 0 0.00301 0.00702333 0.00401333 +0.00100333 0.00501667 0.00802667 0.00100333 0 0 0 0 +0 0.00100333 0 0 0 0 0.00301 0.00602 +0.00602 0.00602 0.00702333 0.00903 0 0 0 0 +0 0 0 0 0 0.00200667 0.00602 0.00501667 +0.00301 0 0.00100333 0.00100333 0 0 0 0.00602 +0.00602 0.00200667 0 0 0.00903 0.00802667 0.00401333 0 +0.00200667 0.00602 0.00100333 0.00100333 0.00702333 0.0110367 0.00100333 0 +0.00401333 0.00200667 0 0 0.00200667 0 0 0 +0 0 0 0 0 0 0 0.29197 +1.03634 1.04359 1.03634 1.0291 1.02426 1.02789 1.02547 1.02185 +1.02668 1.02728 1.01218 1.0152 1.01943 1.02366 1.02004 1.0291 +1.02366 1.01702 1.02124 1.02366 1.01037 1.02487 1.01822 1.01822 +1.02366 1.02124 1.01762 1.01641 1.0297 1.02789 1.02366 1.02547 +1.02124 1.0146 1.02245 1.01158 1.0146 1.02185 1.02185 1.02245 +1.02306 1.01883 0.981984 1.02064 1.02366 1.02124 1.02004 1.02426 +1.02487 1.01702 1.01279 1.01037 1.02668 1.04842 1.04601 1.04782 +1.05024 1.0454 1.04722 1.04238 1.04722 1.04963 1.04661 1.04782 +1.03091 1.01641 1.02124 1.01339 1.02064 1.0146 1.01702 1.02547 +1.02849 0.98138 0.95722 0.962052 0.962052 0.956012 0.965676 0.967488 +0.973528 0.962656 0.96024 0.971112 0.9693 0.964468 0.968092 0.976548 +1.01098 1.02306 1.01822 1.02064 1.02185 1.00675 1.01762 1.02306 +1.01641 1.01279 1.01762 1.0297 1.04057 1.04963 1.04238 1.03514 +1.02728 1.01218 1.01883 1.02124 1.01822 1.00856 1.02366 1.0291 +1.00916 1.02124 1.02064 1.03091 1.01279 1.01702 1.02728 1.02004 +1.02306 1.02245 1.02728 1.02306 1.02426 1.01702 1.01581 1.02004 +1.02124 1.02124 1.02426 1.0146 1.01943 1.02668 1.02547 1.02789 +1.01158 1.01339 1.02185 1.02306 1.02547 1.01883 1.01883 1.01702 +1.02064 1.02487 1.02366 1.01581 1.02306 1.02004 1.02124 1.02306 +1.01943 1.02728 1.02366 1.03574 1.04963 1.05326 1.03755 0.312037 +0 0 0 0 0 0 0 0.00301 +0 0 0 0 0 0.00200667 0.0100333 0.0110367 +0.00301 0 0.00602 0.00401333 0.00501667 0.00602 0.00903 0 +0.00501667 0.00702333 0 0 0.00200667 0.00100333 0.00100333 0.00501667 +0.00501667 0 0 0.00200667 0.00501667 0.00401333 0.00903 0.00702333 +0.00501667 0.00501667 0.00501667 0.00501667 0 0.00702333 0.00401333 0.00301 +0 0 0.00200667 0.00200667 0 0 0 0.00602 +0 0.00100333 0.00200667 0 0 0 0 0 +0 0.00401333 0.00501667 0.00200667 0 0 0.00401333 0 +0 0 0.00100333 0 0 0 0.00401333 0.00401333 +0.00501667 0.00301 0 0.00602 0.00200667 0.00401333 0.00602 0 +0 0 0 0 0 0 0 0.714056 +1.06715 1.05265 1.04601 1.03091 1.0303 1.02547 1.0152 1.01943 +1.01702 1.02487 1.02004 1.01943 1.02124 1.01702 1.02064 1.01943 +1.01883 1.01641 1.01822 1.02185 1.02245 1.01943 1.01581 1.02124 +1.02426 1.02668 1.02004 1.01581 1.01581 1.01822 1.02124 1.02245 +1.02004 1.02426 1.01339 1.02064 1.01641 1.00796 1.01279 1.01218 +1.01279 0.985608 1.01279 1.02064 1.02668 1.01339 1.02185 1.01943 +1.02245 1.0146 1.02366 1.02789 1.04359 1.04842 1.04601 1.0442 +1.04118 1.03936 1.04118 1.03997 1.0448 1.05265 1.04661 1.04661 +1.04238 1.02487 1.01581 1.01098 1.01943 1.02004 1.01581 1.01702 +1.02668 1.00373 0.96326 0.971716 0.965676 0.961448 0.967488 0.972924 +0.963864 0.966884 0.96024 0.960844 0.967488 0.961448 0.963864 0.974132 +1.02064 1.02547 1.02004 1.01762 1.01762 1.02608 1.02366 1.01581 +1.01581 1.03151 1.04299 1.0454 1.04178 1.04963 1.05144 1.05326 +1.05205 1.03936 1.01581 1.01218 1.02306 1.02366 1.02608 1.02064 +1.02185 1.02004 1.03091 1.02064 1.02366 1.01158 1.02064 1.0152 +1.02064 1.02487 1.02004 1.0146 1.02426 1.02064 1.02064 1.01339 +1.01702 1.0152 1.01762 1.01762 1.02789 1.01883 1.01218 1.00675 +1.01037 1.01641 1.01762 1.02124 1.01158 1.00916 1.01279 1.01702 +1.0146 1.01762 1.01581 1.0146 1.01883 1.01641 1.02064 1.02426 +1.02366 1.02728 1.03091 1.04299 1.03695 1.04359 1.05084 0.689584 +0 0 0 0 0.00401333 0 0 0 +0 0.00401333 0.00200667 0 0 0.00200667 0 0 +0 0 0 0 0.00200667 0.00501667 0 0.00401333 +0.00100333 0 0 0.00501667 0 0 0.00100333 0 +0.00301 0 0 0.00903 0.00802667 0.00802667 0.00401333 0 +0 0 0 0 0.00100333 0 0 0 +0.00100333 0.00301 0.00200667 0 0.00602 0.00702333 0 0 +0.00602 0.0100333 0.00501667 0.00602 0.00200667 0 0 0 +0 0 0 0.00100333 0.00401333 0.00401333 0.00301 0.00100333 +0 0 0.00301 0.00401333 0.00401333 0.00100333 0 0 +0 0.00401333 0 0 0.00200667 0 0 0.00100333 +0 0 0 0 0 0 0.0953167 0.977152 +1.05628 1.0454 1.03755 1.03876 1.03091 1.0297 1.0297 1.01822 +1.02366 1.01581 1.02306 1.01762 1.01943 1.01037 1.01883 1.0152 +1.02004 1.014 1.02004 1.01641 1.02306 1.02185 1.02245 1.01883 +1.02004 1.01883 1.01339 1.0152 1.01279 1.02004 1.01943 1.02245 +1.01822 1.01339 1.02547 1.02124 1.02245 1.02608 1.02487 1.0146 +0.989836 1.00554 1.01883 1.02849 1.02004 1.02366 1.00916 1.02849 +1.02064 1.0146 1.02245 1.03332 1.04903 1.04299 1.03936 1.05265 +1.03936 1.04299 1.05024 1.04359 1.03574 1.05084 1.04842 1.0454 +1.04359 1.0442 1.02245 1.01641 1.0152 1.02789 1.02245 1.02185 +1.02306 1.02547 0.99346 0.971716 0.97534 0.961448 0.965676 0.9693 +0.959032 0.965072 0.968696 0.962052 0.972924 0.97232 0.978964 1.0152 +1.03393 1.02668 1.01762 1.02426 1.02426 1.01943 1.0152 1.01943 +1.03936 1.04903 1.04601 1.04722 1.03695 1.0454 1.03876 1.04661 +1.04601 1.0599 1.04118 1.02608 1.02185 1.02124 1.01158 1.01218 +1.01943 1.02004 1.01218 1.02306 1.02668 1.01822 1.01218 1.02608 +1.02487 1.01581 1.01339 1.01762 1.02426 1.00614 1.00675 1.01702 +1.02124 1.02366 1.02849 1.0291 1.02426 1.02064 1.01822 1.02185 +1.0146 1.02004 1.02124 1.0146 1.0146 1.01883 1.02789 1.01702 +1.02366 1.02004 1.0297 1.02426 1.02245 1.02124 1.02668 1.02306 +1.02366 1.01883 1.02849 1.02789 1.0303 1.04118 1.05869 0.978964 +0.10836 0 0 0 0 0 0 0.00301 +0 0.00301 0.00301 0.00301 0.00501667 0.00702333 0 0.00100333 +0.00702333 0 0 0.00702333 0.00100333 0 0 0 +0 0.00100333 0 0 0.00200667 0.00401333 0 0 +0 0 0.00602 0 0 0 0.00100333 0 +0 0.00501667 0.00301 0.00903 0.00903 0.0130433 0.01505 0.00802667 +0.00301 0.00501667 0.00100333 0 0 0 0 0 +0 0 0 0 0 0.00501667 0.00702333 0 +0.00401333 0 0 0 0 0 0 0.00200667 +0 0 0 0 0 0 0 0.00401333 +0.00301 0.00200667 0.00802667 0 0 0.00501667 0 0 +0 0 0 0 0 0 0.36421 1.04661 +1.0454 1.03997 1.03755 1.03514 1.03634 1.02728 1.02064 1.01943 +1.02728 1.02185 1.01943 1.0146 1.02366 1.01641 1.01943 1.01883 +1.02426 1.02185 1.0152 1.01762 1.01943 1.01943 1.02245 1.01581 +1.02185 1.01762 1.02306 1.02124 1.02306 1.02004 1.02245 1.02004 +1.02547 1.02245 1.02426 1.02426 1.0146 1.02064 1.0291 1.01702 +0.997688 1.02608 1.02306 1.01943 1.0297 1.02245 1.02185 1.0152 +1.0152 1.01762 1.02004 1.03876 1.04842 1.04118 1.04057 1.04299 +1.04178 1.0442 1.04601 1.05688 1.04601 1.04178 1.04722 1.04842 +1.05205 1.04359 1.00856 1.02185 1.02185 1.02004 1.03393 1.02064 +1.02064 1.01943 1.0297 0.982588 0.962052 0.96326 0.970508 0.96628 +0.968092 0.965676 0.9693 0.960844 0.970508 0.974736 1.00131 1.02487 +1.0297 1.02064 1.01883 1.02245 1.02245 1.01641 1.02004 1.03695 +1.04178 1.04238 1.04661 1.0442 1.04178 1.04601 1.03876 1.05265 +1.05748 1.04299 1.05265 1.04601 1.02185 1.01883 1.02064 1.02728 +1.02004 1.0146 1.0152 1.01762 1.01641 1.014 1.01702 1.02728 +1.0152 1.02004 1.02849 1.02487 1.01822 1.014 1.02849 1.02668 +1.01883 1.01883 1.01762 1.01339 1.02004 1.01822 1.02306 1.01641 +1.01822 1.02547 1.01762 1.01883 1.01822 1.02547 1.014 1.01702 +1.02124 1.02064 1.01037 1.0152 1.014 1.02608 1.02487 1.02547 +1.02547 1.02668 1.0297 1.03332 1.03755 1.03997 1.04963 1.04963 +0.371233 0 0 0 0 0 0 0 +0 0.00100333 0 0.00100333 0.00200667 0 0.00200667 0.00501667 +0 0.00200667 0.00200667 0 0 0.00200667 0 0.00100333 +0.00501667 0 0.00100333 0 0 0 0 0 +0.00301 0.00702333 0.00200667 0.00301 0.00200667 0 0 0.00602 +0.00200667 0.00200667 0.00200667 0.00401333 0.00301 0 0 0.00501667 +0.00301 0.00301 0.00200667 0.00501667 0 0 0.00200667 0.00100333 +0.00301 0 0 0 0.00301 0 0.00200667 0 +0 0.00200667 0.00401333 0.00301 0.00200667 0.00301 0 0.00100333 +0.0110367 0.0100333 0.00401333 0 0 0.00200667 0.00401333 0 +0 0 0 0.00802667 0 0 0 0 +0 0 0 0 0 0 0.690872 1.06111 +1.05144 1.03695 1.03212 1.02487 1.02728 1.0297 1.02608 1.02426 +1.01581 1.01883 1.01822 1.01762 1.02004 1.00916 1.0146 1.0146 +1.02426 1.02124 1.01279 1.014 1.0146 1.01581 1.01581 1.0146 +1.01883 1.01883 1.01762 1.01762 1.01158 1.01339 1.02426 1.0146 +1.01822 1.02728 1.02185 1.02064 1.01822 1.02366 1.0146 0.995876 +1.01762 1.02306 1.02124 1.01098 1.0146 1.02728 1.02789 1.01883 +1.01943 1.02306 1.02004 1.0442 1.05144 1.04903 1.05024 1.04601 +1.05205 1.05144 1.0448 1.04842 1.03695 1.05144 1.04601 1.05024 +1.04963 1.04359 1.01822 1.01641 1.02547 1.00735 1.01822 1.03091 +1.01822 1.02366 1.0303 1.02487 0.983796 0.977756 0.961448 0.972924 +0.971112 0.966884 0.965072 0.962656 0.978964 1.0146 1.01641 1.03272 +1.01883 1.02487 1.01762 1.02245 1.0291 1.02849 1.02849 1.04299 +1.05748 1.0454 1.05446 1.04903 1.04299 1.04238 1.04238 1.04178 +1.03393 1.04238 1.03997 1.04722 1.03876 1.02124 1.01883 1.02064 +1.01702 1.02789 1.0146 1.02306 1.02185 1.02728 1.01943 1.00252 +1.0146 1.02185 1.02124 1.014 1.02608 1.02487 1.01702 1.0146 +1.01822 1.02306 1.02547 1.01641 1.02608 1.02004 1.01702 1.02185 +1.01339 1.01883 1.02366 1.0146 1.0146 1.00977 1.01702 1.01762 +1.01158 1.01158 1.02487 1.02064 1.01581 1.01822 1.01702 1.01702 +1.02547 1.01883 1.02487 1.03212 1.0297 1.03936 1.04963 1.05386 +0.728224 0 0 0 0 0 0 0 +0.00702333 0 0 0 0.00903 0.00200667 0 0 +0.00200667 0.00200667 0 0.00200667 0 0.00100333 0 0.00802667 +0 0.00401333 0 0 0 0.00903 0.0100333 0.0100333 +0.00401333 0 0 0 0 0.00602 0.00200667 0 +0 0.00602 0.00301 0.00702333 0.00802667 0.00401333 0.00100333 0 +0.00200667 0.00301 0.00602 0.00200667 0 0.00200667 0 0.00802667 +0.00802667 0.0110367 0.01204 0.00301 0 0 0.00200667 0.00602 +0.00200667 0 0.00100333 0.00501667 0.00200667 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.06923 0.96326 1.04661 +1.0442 1.03695 1.0291 1.02849 1.02366 1.02306 1.02487 1.02366 +1.02668 1.02487 1.01762 1.01822 1.02245 1.02849 1.01883 1.01943 +1.01943 1.02124 1.02064 1.02185 1.02426 1.02487 1.02064 1.02064 +1.01943 1.01641 1.02064 1.0303 1.01883 1.01037 1.0146 1.01883 +1.01883 1.01218 1.02064 1.02245 1.01762 1.02547 1.0001 1.01037 +1.01822 1.02185 1.02185 1.02185 1.02487 1.02004 1.01943 1.03332 +1.02124 1.02487 1.03393 1.04601 1.03695 1.03091 1.04903 1.0448 +1.0454 1.0442 1.04299 1.04057 1.04359 1.0442 1.04903 1.05205 +1.05386 1.05024 1.03514 1.02185 1.0303 1.02849 1.01581 1.02306 +1.02185 1.02366 1.02487 1.02185 1.01883 1.01883 0.988628 0.977152 +0.983192 0.989836 0.991044 1.01158 1.01702 1.02124 1.02306 1.01702 +1.0146 1.02124 1.02185 1.0291 1.01762 1.01702 1.01762 1.04782 +1.04118 1.04118 1.03816 1.04238 1.05024 1.05446 1.04661 1.04903 +1.0605 1.05084 1.04842 1.04359 1.04782 1.02426 1.02366 1.01218 +1.01883 1.02547 1.02849 1.0291 1.01762 1.01702 1.0303 1.00373 +1.00916 1.01702 1.0146 1.01943 1.02064 1.02124 1.01943 1.02004 +1.0152 1.0152 1.02426 1.01581 1.01037 1.02004 1.0152 1.01943 +1.02306 1.01883 1.02124 1.02668 1.02426 1.02306 1.02487 1.02306 +1.02245 1.01702 1.01641 1.01702 1.02064 1.02547 1.02487 1.02366 +1.0152 1.01762 1.02245 1.02608 1.02849 1.03936 1.0448 1.05326 +0.974736 0.09331 0 0 0 0 0 0 +0 0 0.00100333 0.00100333 0 0 0 0.00401333 +0 0 0 0 0.00100333 0.00401333 0.00200667 0 +0 0 0 0 0.0100333 0.00702333 0.00200667 0 +0 0 0 0.00401333 0 0 0 0 +0.00200667 0 0.00301 0.00200667 0 0 0.00200667 0 +0 0.00401333 0.00200667 0.00602 0.00501667 0.00200667 0.00301 0 +0 0.00100333 0.00200667 0.00401333 0.00501667 0.00200667 0 0 +0.00702333 0.00602 0 0 0.00200667 0.00301 0 0 +0 0.00200667 0.00501667 0 0.00200667 0.00501667 0.00602 0 +0.00602 0.00802667 0 0 0 0 0 0 +0 0 0 0 0 0.248827 1.03755 1.05326 +1.04118 1.0303 1.03574 1.02487 1.02366 1.02789 1.01883 1.01762 +1.01822 1.02366 1.02306 1.01883 1.01883 1.01883 1.01883 1.01158 +1.01641 1.02306 1.02185 1.01762 1.01762 1.0152 1.01943 1.01822 +1.01641 1.01883 1.01883 1.01943 1.03453 1.02426 1.02306 1.02185 +1.02426 1.02668 1.014 1.02547 1.02245 1.01581 0.983796 1.01883 +1.01822 1.02064 1.02124 1.02064 1.02004 1.02306 1.0152 1.01822 +1.01641 1.02366 1.02064 1.0448 1.05326 1.05205 1.04601 1.04782 +1.04238 1.05446 1.04782 1.05688 1.05688 1.04661 1.0448 1.04661 +1.05024 1.04057 1.02064 1.02185 1.0146 1.0152 1.02064 1.01218 +1.01762 1.02426 1.01581 1.02064 1.01883 1.01641 1.02728 1.02245 +1.02064 1.0146 1.02064 1.02487 1.01883 1.02608 1.02004 1.0152 +1.01762 1.01762 1.02004 1.02064 1.02366 1.02366 1.04359 1.04601 +1.04661 1.04238 1.04178 1.04057 1.04359 1.03816 1.04782 1.0442 +1.03212 1.04903 1.03393 1.0454 1.04299 1.02426 1.0152 1.02185 +1.02789 1.02306 1.02124 1.01702 1.02124 1.01822 1.02064 1.01883 +0.99648 1.01037 1.01883 1.02124 1.01279 1.02306 1.01641 1.01883 +1.02185 1.02245 1.01581 1.01822 1.02306 1.02789 1.01883 1.01883 +1.02245 1.01822 1.01883 1.00675 1.01098 1.02366 1.01158 1.01581 +1.01943 1.02426 1.02547 1.01762 1.01702 1.01702 1.02185 1.01581 +1.02124 1.02668 1.0303 1.0291 1.02849 1.04057 1.03936 1.05205 +1.04299 0.281937 0 0 0 0.00200667 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00301 0.00903 0.00401333 0.00702333 0 0 0 0 +0 0 0 0.00602 0.00100333 0 0 0 +0.00501667 0.00501667 0.00602 0 0 0 0.00802667 0.00802667 +0.00501667 0.00301 0 0.00100333 0.00401333 0 0 0.00200667 +0 0 0 0 0.00301 0.00702333 0.00301 0 +0 0 0 0 0 0 0.00301 0.00301 +0.00401333 0.00100333 0.00501667 0.00602 0.00100333 0.00301 0.00702333 0.00501667 +0 0 0.00401333 0.00702333 0 0 0.00200667 0.00200667 +0 0 0.00100333 0.00200667 0 0 0 0 +0 0 0 0 0 0.49966 1.0605 1.04842 +1.03997 1.03574 1.02487 1.02728 1.02547 1.0152 1.02185 1.01943 +1.02064 1.02366 1.02004 1.01702 1.01581 1.0146 1.02366 1.02426 +1.01943 1.01037 1.01702 1.0146 1.02185 1.01641 1.02306 1.02426 +1.01641 1.02547 1.02245 1.01762 1.01279 1.01279 1.02124 1.02064 +1.02004 1.02004 1.0146 1.02185 1.02306 1.00071 1.00494 1.02185 +1.03332 1.02426 1.01702 1.02004 1.02004 1.01279 1.02487 1.01943 +1.02004 1.01822 1.01883 1.04057 1.05446 1.04963 1.05446 1.05628 +1.05265 1.0448 1.05386 1.05144 1.04963 1.04359 1.04601 1.04299 +1.05205 1.03876 1.01822 1.02547 1.02426 1.01702 1.01762 1.014 +1.02426 1.02366 1.01581 1.02728 1.02849 1.02245 1.02728 1.02789 +1.01762 1.02728 1.02608 1.01641 1.02245 1.02064 1.02185 1.02849 +1.02608 1.0146 1.02668 1.014 1.01883 1.02608 1.03212 1.05205 +1.04238 1.04178 1.04299 1.03755 1.05688 1.0454 1.03453 1.03212 +1.05507 1.04661 1.04903 1.04782 1.05386 1.03332 1.01762 1.0297 +1.01762 1.01943 1.02064 1.01762 1.02124 1.02728 1.02789 1.02124 +1.00192 1.00916 1.0297 1.02124 1.02064 1.01762 1.01581 1.01339 +1.01762 1.01702 1.02185 1.02487 1.02004 1.02487 1.01762 1.02004 +1.014 1.0146 1.01762 1.02608 1.01883 1.01822 1.01641 1.01822 +1.02124 1.01037 1.01641 1.01641 1.01702 1.01581 1.02245 1.02064 +1.02306 1.02004 1.02004 1.02124 1.02608 1.03997 1.04178 1.04782 +1.05567 0.54782 0 0 0 0 0 0 +0 0 0.00200667 0.00100333 0 0 0.00802667 0.00802667 +0 0.00200667 0.0100333 0 0.00100333 0.0100333 0.00301 0.00903 +0.00602 0.00802667 0.00802667 0.00401333 0 0.00100333 0.00200667 0 +0 0 0 0 0 0.00602 0.00301 0 +0 0.00200667 0.00501667 0.00702333 0.00301 0.00100333 0 0 +0 0.00100333 0 0 0 0 0.00100333 0.00602 +0.00501667 0.0110367 0.00200667 0 0 0 0 0 +0 0 0 0.00301 0.00100333 0.00602 0 0.00200667 +0 0.00501667 0.00200667 0 0.00401333 0.00301 0 0.00702333 +0.00802667 0.00401333 0 0 0.00100333 0 0 0 +0 0 0 0 0 0.781032 1.05507 1.0448 +1.03634 1.03091 1.03212 1.0303 1.02366 1.02004 1.01641 1.00916 +1.01218 1.01581 1.014 1.01279 1.01822 1.01943 1.01339 1.02487 +1.02487 1.02608 1.02124 1.01943 1.01822 1.02668 1.02185 1.01883 +1.01037 1.01822 1.01279 1.02306 1.02306 1.02004 1.01279 1.01641 +1.02608 1.02547 1.02064 1.01581 1.01279 0.992252 1.02245 1.02366 +1.02185 1.02547 1.02306 1.02487 1.02487 1.014 1.0152 1.01883 +1.01762 1.02124 1.02306 1.0448 1.04722 1.03816 1.03574 1.0442 +1.03936 1.03634 1.04782 1.04238 1.04238 1.04299 1.04299 1.03695 +1.05446 1.03997 1.01218 1.02064 1.02789 1.02064 1.02185 1.02245 +1.0146 1.01641 1.0146 1.01218 1.01762 1.01702 1.02124 1.01641 +1.01883 1.0152 1.02366 1.02245 1.0152 1.0303 1.01641 1.02487 +1.02185 1.02004 1.02185 1.01339 1.02064 1.02426 1.05265 1.03634 +1.03936 1.0454 1.04359 1.0454 1.0442 1.04178 1.03212 1.04601 +1.04118 1.03876 1.05084 1.04299 1.04359 1.03272 1.02366 1.02366 +1.0146 1.01762 1.01822 1.02245 1.01581 1.00796 1.00856 1.02426 +1.02366 1.00494 1.01641 1.02366 1.02124 1.01822 1.02185 1.0152 +1.02426 1.02668 1.02306 1.02124 1.0146 1.01581 1.01943 1.01883 +1.02849 1.0152 1.02366 1.01883 1.00856 1.01762 1.01279 1.01883 +1.01641 1.02245 1.02245 1.02487 1.0152 1.02124 1.02306 1.01581 +1.01822 1.02004 1.02849 1.03151 1.03332 1.03151 1.03936 1.04963 +1.0593 0.838992 0 0 0 0 0 0 +0 0.00602 0 0 0 0.00200667 0.00301 0 +0.00200667 0 0 0.00602 0.00401333 0 0 0 +0 0.00100333 0 0 0.00401333 0 0 0.00702333 +0.00702333 0.00501667 0.00100333 0.00401333 0.00200667 0.00100333 0.00200667 0 +0.00802667 0.00602 0 0 0.0100333 0.00602 0.00602 0.00301 +0.00501667 0.00602 0.00602 0.00100333 0.00200667 0.00100333 0 0.00100333 +0.00501667 0 0 0.00501667 0.00401333 0.00200667 0.00200667 0 +0 0 0.00100333 0 0 0 0.00501667 0.00301 +0.00301 0.00100333 0.00200667 0.00602 0.00401333 0 0 0 +0 0.00401333 0.00602 0.00501667 0 0 0 0 +0 0 0 0 0.0672233 0.965676 1.05446 1.03936 +1.0297 1.03514 1.03212 1.02426 1.02547 1.02366 1.02306 1.02487 +1.02004 1.02728 1.02487 1.01702 1.02245 1.01943 1.01762 1.01279 +1.02668 1.03091 1.01581 1.01702 1.01098 1.01762 1.02366 1.01883 +1.01883 1.014 1.01339 1.01702 1.01762 1.02306 1.0297 1.0152 +1.01218 1.01822 1.03091 1.02728 1.00071 1.00373 1.03091 1.0297 +1.02487 1.02004 1.02124 1.01883 1.02245 1.02064 1.01339 1.02608 +1.01762 1.01641 1.02124 1.02245 1.04601 1.04782 1.04903 1.04782 +1.04178 1.04178 1.03816 1.04057 1.04963 1.04238 1.04722 1.03816 +1.03695 1.01943 1.01098 1.01822 1.02004 1.02668 1.02608 1.02245 +1.01943 1.0152 1.01943 1.01883 1.02608 1.014 1.02245 1.0303 +1.01762 1.01943 1.01822 1.01762 1.01943 1.01883 1.02245 1.02185 +1.02608 1.01943 1.0297 1.02366 1.02064 1.02185 1.03876 1.04782 +1.05024 1.05386 1.04722 1.0454 1.0442 1.03936 1.04963 1.0442 +1.0454 1.03755 1.04661 1.0448 1.05205 1.04057 1.02306 1.02849 +1.02849 1.01883 1.02004 1.02547 1.02668 1.02124 1.02849 1.02547 +1.01641 0.998896 1.01098 1.02668 1.02064 1.0146 1.01943 1.01702 +1.01702 1.01702 1.01158 1.0152 1.01339 1.02728 1.02064 1.01943 +1.0146 1.02185 1.01943 1.0146 1.01702 1.02547 1.01943 1.01581 +1.02608 1.02245 1.01822 1.02064 1.01581 1.02306 1.01883 1.01822 +1.02728 1.02306 1.02547 1.0303 1.02668 1.0291 1.03393 1.04299 +1.04963 0.967488 0.0742467 0 0 0 0 0 +0 0 0 0 0.00401333 0 0 0 +0 0 0.00602 0 0 0 0 0.00401333 +0.00702333 0 0.00100333 0 0 0 0.00100333 0.00200667 +0.00200667 0 0 0.00301 0.00903 0.00401333 0.00602 0.00401333 +0 0 0 0.00100333 0.00200667 0.00401333 0.00501667 0 +0 0 0.00401333 0.00802667 0.0100333 0.00100333 0 0 +0 0.00702333 0.00802667 0 0 0.00200667 0.00200667 0.00401333 +0 0 0 0.00501667 0.00301 0.00401333 0 0 +0.00200667 0 0 0 0.00702333 0.01204 0.00401333 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0.179597 1.02185 1.05265 1.03876 +1.02245 1.02487 1.02789 1.02124 1.03091 1.02608 1.02426 1.02668 +1.01883 1.02608 1.03453 1.02004 1.0146 1.01702 1.01943 1.02426 +1.02487 1.01702 1.014 1.01943 1.02185 1.02124 1.01762 1.02789 +1.02728 1.02124 1.02306 1.01158 1.02185 1.02608 1.01581 1.02306 +1.01762 1.02608 1.01702 1.00796 0.985608 1.01702 1.0146 1.02124 +1.02306 1.0146 1.0146 1.02185 1.02366 1.01943 1.02366 1.02245 +1.01943 1.0146 1.01339 1.02608 1.03695 1.0454 1.04963 1.03936 +1.04782 1.0448 1.04118 1.04178 1.04963 1.04963 1.04601 1.0442 +1.02426 1.01158 1.01822 1.02124 1.01581 1.01218 1.01641 1.01943 +1.02547 1.01702 1.01581 1.01641 1.0146 1.01883 1.02004 1.014 +1.01943 1.01581 1.0152 1.02004 1.02608 1.0152 1.02245 1.02064 +1.02728 1.02547 1.02306 1.02849 1.01641 1.02185 1.0146 1.05144 +1.04299 1.03816 1.04359 1.04842 1.04601 1.04359 1.05567 1.04601 +1.05507 1.04782 1.05144 1.05326 1.0454 1.02789 1.02789 1.01641 +1.01279 1.01822 1.01943 1.02124 1.02245 1.02608 1.01158 1.0291 +1.02306 1.01883 0.99648 1.01641 1.01822 1.0146 1.01883 1.02185 +1.02306 1.02064 1.01762 1.02185 1.01762 1.0146 1.00796 1.00916 +1.01762 1.01037 1.01581 1.0146 1.01702 1.0152 1.01581 1.02426 +1.014 1.01581 1.01943 1.02185 1.02366 1.01218 1.01883 1.01158 +1.01883 1.02306 1.02608 1.01641 1.02366 1.0297 1.03091 1.03755 +1.04963 1.0297 0.221737 0 0 0 0 0 +0 0 0.00100333 0.00501667 0 0 0 0 +0 0.00100333 0 0 0 0.00200667 0.00802667 0.00200667 +0 0.00100333 0 0 0 0.00501667 0.00602 0 +0 0.00301 0.00501667 0.00401333 0 0 0 0 +0 0.00602 0.00702333 0.0100333 0.00401333 0.00401333 0.00501667 0.00401333 +0.00401333 0.00401333 0 0.00100333 0.00100333 0.00200667 0.00903 0.00501667 +0.00702333 0 0 0.0100333 0.00802667 0 0.00100333 0 +0.00301 0.00401333 0 0 0 0 0.00301 0 +0 0 0.00301 0 0 0 0 0.00301 +0 0 0 0 0.00702333 0.00501667 0 0 +0 0 0 0 0.327087 1.04963 1.04661 1.0442 +1.03514 1.03634 1.02789 1.02245 1.01822 1.02366 1.02366 1.02064 +1.0152 1.02124 1.01581 1.01581 1.02245 1.01762 1.0146 1.01641 +1.01218 1.02668 1.02306 1.01762 1.0146 1.02245 1.0152 1.01339 +1.02426 1.01822 1.02487 1.01762 1.00977 1.01339 1.01822 1.02487 +1.01762 1.0152 1.02668 1.0152 1.00373 1.02064 1.02306 1.0152 +1.02245 1.03272 1.02608 1.0146 1.0146 1.02124 1.02124 1.02064 +1.01158 1.02849 1.01822 1.00796 1.01339 1.03816 1.03936 1.05869 +1.05205 1.05084 1.05386 1.05024 1.03997 1.0454 1.05084 1.04299 +1.02185 1.03453 1.02306 1.03151 1.02728 1.01822 1.01581 1.02064 +1.02064 1.01822 1.02728 1.02004 1.02004 1.02064 1.02064 1.02064 +1.02366 1.01883 1.01581 1.01943 1.0291 1.03332 1.02004 1.02185 +1.02185 1.0146 1.02668 1.02547 1.02547 1.02366 1.01581 1.03695 +1.05084 1.04057 1.0454 1.04661 1.04057 1.0454 1.05024 1.0442 +1.0448 1.04842 1.04299 1.04903 1.04299 1.02728 1.01883 1.014 +1.0152 1.01822 1.01218 1.01822 1.02366 1.0146 1.00977 1.02306 +1.01883 1.02004 1.00675 1.01762 1.02487 1.01581 1.02728 1.01883 +1.014 1.02124 1.01943 1.02245 1.02004 1.02547 1.03212 1.0146 +1.02426 1.02306 1.02306 1.01943 1.01822 1.0146 1.02245 1.01641 +1.02064 1.0152 1.01822 1.01702 1.01641 1.02245 1.02064 1.01822 +1.02426 1.02487 1.02124 1.02728 1.03634 1.03453 1.0297 1.03936 +1.04963 1.05205 0.381267 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0.00100333 +0 0 0 0.00200667 0.00702333 0.00200667 0 0 +0.00100333 0.00200667 0.00401333 0.00903 0.00802667 0 0 0.00602 +0.00702333 0.00602 0.00200667 0 0 0.00401333 0.00702333 0.00702333 +0.00602 0.00100333 0 0 0 0 0 0.00401333 +0.00401333 0 0 0 0 0 0 0 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0.00100333 0.00200667 0 0 0 +0.00100333 0.00602 0.00401333 0.00100333 0 0.00100333 0.00602 0.00200667 +0.00903 0.0100333 0.00100333 0 0 0 0 0 +0 0 0 0 0.506683 1.0599 1.05205 1.03574 +1.03151 1.0297 1.0297 1.02487 1.02668 1.02004 1.02124 1.02185 +1.02426 1.02124 1.01158 1.0146 1.02064 1.01762 1.01762 1.01641 +1.0146 1.01641 1.01822 1.02608 1.01702 1.02064 1.01762 1.02426 +1.02245 1.01339 1.02366 1.02064 1.02668 1.02064 1.02124 1.02426 +1.02789 1.01822 1.02185 0.985004 1.0152 1.03393 1.02306 1.02487 +1.00796 1.01037 1.02185 1.0146 1.00675 1.01279 1.02728 1.02366 +1.02487 1.01762 1.02245 1.02366 1.02306 1.0146 1.04057 1.03876 +1.05748 1.05144 1.04782 1.05326 1.05205 1.04661 1.0303 1.01943 +1.0146 1.014 1.01762 1.02426 1.02124 1.02366 1.02124 1.01822 +1.01037 1.02245 1.01762 1.01218 1.01098 1.01339 1.00735 1.01641 +1.02004 1.01702 1.02185 1.0146 1.02547 1.02004 1.02064 1.01822 +1.01581 1.02124 1.0303 1.01279 1.02064 1.01641 1.02185 1.00856 +1.0454 1.05024 1.04299 1.04963 1.04118 1.03997 1.03876 1.03695 +1.04842 1.04661 1.04782 1.03876 1.02547 1.02064 1.02306 1.02064 +1.0297 1.0291 1.0303 1.01581 1.02547 1.02668 1.01702 1.02004 +1.02728 1.01279 1.01279 1.00554 1.02004 1.0146 1.02728 1.02004 +1.01822 1.01883 1.01883 1.02547 1.03151 1.01702 1.01641 1.02306 +1.02547 1.01822 1.0146 1.02426 1.014 1.01762 1.02185 1.01822 +1.02487 1.01339 1.014 1.02306 1.02124 1.02245 1.02245 1.02306 +1.01702 1.02064 1.02366 1.02487 1.02185 1.02306 1.0291 1.03936 +1.05024 1.0605 0.567887 0 0 0 0 0 +0 0 0 0.00100333 0 0.00301 0 0 +0 0.00301 0.00802667 0.00301 0 0 0 0.00401333 +0.00903 0.00702333 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0 0.00200667 0.00301 0.00903 0.00100333 0 0.00100333 0.00200667 +0 0.0100333 0.0130433 0.0130433 0.00501667 0 0 0 +0.00200667 0.00200667 0.00200667 0.00401333 0.00401333 0.00100333 0.00200667 0.01204 +0.00501667 0 0 0.0100333 0.00602 0.00301 0.00802667 0.00501667 +0.00401333 0 0.00301 0.00100333 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.674128 1.05326 1.04601 1.03574 +1.03091 1.0291 1.02608 1.01641 1.02004 1.02245 1.02245 1.01822 +1.01762 1.01641 1.02487 1.01822 1.02245 1.02185 1.02306 1.02547 +1.0297 1.02306 1.02306 1.02366 1.02668 1.01943 1.02487 1.02064 +1.01641 1.01762 1.01762 1.01581 1.02185 1.02004 1.02245 1.0146 +1.01702 1.02245 1.02124 0.974736 1.01943 1.01762 1.02547 1.02306 +1.02426 1.02306 1.0303 1.03393 1.01943 1.02366 1.0152 1.01883 +1.02366 1.02124 1.01762 1.02547 1.01218 1.014 1.01641 1.01339 +1.01339 1.02849 1.03514 1.03272 1.02306 1.01943 1.01641 1.0152 +1.02426 1.01943 1.01762 1.01702 1.02487 1.00796 1.01641 1.02064 +1.02124 1.01339 1.0152 1.02124 1.014 1.01098 1.03212 1.00735 +1.02124 1.03212 1.01702 1.02306 1.01279 1.02245 1.02064 1.02185 +1.01943 1.02849 1.01883 1.01339 1.02366 1.01883 1.02547 1.014 +1.02366 1.04601 1.03936 1.04842 1.04782 1.0442 1.05205 1.05869 +1.04963 1.05205 1.03091 1.02608 1.01943 1.00977 1.014 1.01883 +1.02306 1.01581 1.01822 1.01641 1.03091 1.00977 1.02004 1.01641 +1.01702 1.04118 1.02789 1.00614 1.01279 1.01943 1.02004 1.01098 +1.02124 1.02004 1.01822 1.02004 1.01822 1.014 1.0146 1.02608 +1.02064 1.02728 1.02064 1.01279 1.01641 1.02547 1.02004 1.02789 +1.02185 1.01762 1.01943 1.01822 1.01822 1.02245 1.01943 1.0152 +1.01883 1.02366 1.01943 1.02004 1.02487 1.02306 1.03272 1.04178 +1.0442 1.05446 0.753984 0 0 0 0 0 +0.00100333 0 0 0 0.00100333 0 0 0.00501667 +0.00702333 0.00802667 0.00602 0.00301 0.00401333 0.00401333 0.00100333 0.00401333 +0 0 0.00802667 0.00802667 0 0 0.00301 0.00200667 +0 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0 0 0 0 0.00301 0.00401333 0 0 +0 0 0 0 0.00200667 0.00501667 0.00200667 0 +0.00100333 0.00802667 0.00200667 0 0 0 0 0 +0 0.00301 0.00501667 0.00602 0.00602 0.00401333 0.00702333 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0.857024 1.05628 1.04299 1.03151 +1.02608 1.0303 1.02789 1.03151 1.01943 1.01279 1.02124 1.02185 +1.02064 1.02306 1.01641 1.01822 1.02004 1.02064 1.02185 1.02004 +1.01581 1.014 1.01702 1.02185 1.01641 1.0146 1.0152 1.02185 +1.02366 1.02668 1.02487 1.02004 1.02124 1.01943 1.01943 1.02185 +1.01641 1.01883 1.00131 0.997084 1.02306 1.02789 1.02185 1.02004 +1.02849 1.02366 1.02124 1.01702 1.03091 1.02124 1.02064 1.02366 +1.0303 1.02124 1.03212 1.02004 1.02608 1.01762 1.014 1.02245 +1.0152 1.02728 1.01641 1.02245 1.02789 1.01339 1.01943 1.01822 +1.02124 1.02487 1.02306 1.01943 1.02849 1.02064 1.00735 1.02608 +1.02306 1.02185 1.01762 1.0146 1.01641 1.02608 1.0152 1.0152 +1.01218 1.02124 1.01943 1.01702 1.02185 1.02668 1.01943 1.02608 +1.01581 1.02124 1.02004 1.01943 1.02185 1.02366 1.02426 1.014 +1.00977 1.02366 1.03393 1.03453 1.03816 1.05628 1.05024 1.04782 +1.04903 1.03997 1.03091 1.02668 1.02064 1.02426 1.02789 1.02366 +1.02547 1.03332 1.02245 1.01943 1.01339 1.02366 1.02064 1.014 +1.02306 1.02124 1.02124 1.01762 1.02366 1.02668 1.01883 1.01581 +1.03212 1.02306 1.02487 1.02366 1.0146 1.0146 1.02185 1.02728 +1.00977 1.01943 1.02124 1.02668 1.02608 1.01943 1.02728 1.02004 +1.01702 1.0152 1.01641 1.01762 1.01943 1.00856 1.02064 1.01702 +1.02728 1.02366 1.02245 1.02487 1.0291 1.03212 1.03574 1.03514 +1.04057 1.04722 0.929436 0.03311 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0 0.00301 0.00501667 0.00702333 0 +0 0.00401333 0 0 0 0 0 0.00100333 +0.00200667 0.00200667 0 0.00200667 0.00602 0.00401333 0.00301 0.00602 +0.00602 0.00501667 0.00501667 0.00401333 0 0 0 0.00200667 +0.00100333 0 0 0 0 0.00301 0.0140467 0.00903 +0 0.00301 0.00602 0.00602 0.00200667 0.00200667 0.00602 0.00501667 +0 0 0 0 0 0 0.00200667 0 +0 0.00301 0 0.00401333 0 0 0 0.00501667 +0.0140467 0.0140467 0 0 0 0 0 0 +0 0 0 0.0491633 0.948764 1.05386 1.04057 1.03574 +1.0291 1.02245 1.02668 1.02185 1.02306 1.02245 1.0152 1.01581 +1.0146 1.014 1.02426 1.02487 1.01883 1.01883 1.02185 1.02608 +1.02245 1.02306 1.0303 1.02064 1.02004 1.02668 1.02547 1.02366 +1.02426 1.02245 1.02185 1.01943 1.02185 1.01943 1.02004 1.02306 +1.03514 1.02306 0.988628 1.0146 1.02547 1.0152 1.02366 1.02185 +1.02185 1.02004 1.01581 1.02306 1.02306 1.02245 1.02789 1.02245 +1.02185 1.02487 1.03332 1.03574 1.0448 1.03393 1.02064 1.02728 +1.0291 1.0152 1.03212 1.01581 1.01943 1.02728 1.01883 1.02124 +1.01883 1.01702 1.02668 1.02004 1.02124 1.02124 1.01641 1.01762 +1.01702 1.01641 1.01943 1.01883 1.01641 1.00977 1.0303 1.02547 +1.00614 1.01098 1.0146 1.02668 1.02064 1.02668 1.02426 1.02608 +1.01098 1.00916 1.01943 1.02487 1.02487 1.02608 1.02789 1.02668 +1.02306 1.01943 1.01702 1.01943 1.02366 1.02547 1.02547 1.02849 +1.01822 1.02124 1.01581 1.0146 1.01883 1.01641 1.02789 1.01883 +1.01702 1.01943 1.01822 1.02064 1.02245 1.02728 1.01641 1.03272 +1.02306 1.02306 1.02668 1.0152 1.00856 1.02547 1.0146 1.02668 +1.01158 1.0291 1.02426 1.01279 1.0152 1.02064 1.01762 1.01702 +1.02004 1.0297 1.014 1.01883 1.01702 1.02185 1.0146 1.01218 +1.0146 1.02306 1.02124 1.02185 1.01641 1.0291 1.0152 1.01943 +1.01822 1.01943 1.01943 1.02185 1.02728 1.0291 1.02608 1.03151 +1.0442 1.05205 0.978964 0.0923067 0 0 0 0 +0 0 0.00602 0 0 0.00301 0 0.00702333 +0 0 0 0.00702333 0 0 0 0.00200667 +0.00602 0 0 0 0 0 0.00401333 0 +0 0 0.00200667 0.00200667 0.00200667 0.00501667 0.00401333 0 +0 0 0 0.00301 0.00602 0.00501667 0.00401333 0.00301 +0 0.00100333 0.00100333 0 0 0 0 0 +0.00401333 0.00200667 0 0 0 0 0 0.00200667 +0.00602 0.00903 0.00301 0 0.0100333 0.0110367 0.00301 0.00602 +0.00501667 0 0 0 0.00501667 0 0 0 +0 0 0.00200667 0.00301 0 0 0 0 +0 0 0 0.09933 0.991044 1.05265 1.03936 1.03151 +1.03091 1.02668 1.02245 1.02728 1.02245 1.02124 1.02366 1.01943 +1.02064 1.02004 1.01762 1.02185 1.02185 1.02306 1.02728 1.03151 +1.03212 1.0303 1.0291 1.0297 1.02366 1.02789 1.02849 1.02426 +1.02185 1.02306 1.02306 1.02668 1.02789 1.02426 1.02426 1.01641 +1.01883 1.02064 0.98138 1.01098 1.0303 1.01943 1.02306 1.014 +1.02185 1.01943 1.01762 1.02849 1.01762 1.02547 1.02547 1.03453 +1.02366 1.02306 1.02547 1.0291 1.02245 1.01943 1.01943 1.02306 +1.01762 1.02366 1.01641 1.02185 1.01943 1.01883 1.02004 1.02185 +1.02668 1.02245 1.02306 1.02608 1.01883 1.02064 1.02547 1.02849 +1.00856 1.01037 1.02185 1.0152 1.02366 1.01822 1.00916 1.03272 +1.02487 1.01822 1.02366 1.02124 1.02366 1.02306 1.02608 1.02064 +1.0146 1.03151 1.02306 1.02366 1.02366 1.02366 1.01098 1.0152 +1.02245 1.01762 1.02487 1.01641 1.02306 1.02426 1.02487 1.01641 +1.01762 1.02064 1.03091 1.0291 1.0152 1.03091 1.014 1.01279 +1.02124 1.02004 1.02728 1.01702 1.02306 1.02064 1.02124 1.02668 +1.02306 1.02004 1.03091 1.0146 1.01581 1.02366 1.01641 1.01762 +1.01883 1.02487 1.01883 1.02366 1.02306 1.0152 1.02789 1.02366 +1.02608 1.02547 1.02245 1.02426 1.01641 1.01641 1.014 1.02487 +1.02124 1.02366 1.01943 1.01822 1.02789 1.02004 1.02306 1.01641 +1.01822 1.02185 1.0146 1.02366 1.01702 1.02487 1.0297 1.0448 +1.0454 1.05386 1.01883 0.172573 0 0 0 0 +0 0 0 0 0.00501667 0.00802667 0.00802667 0 +0 0.0110367 0.00802667 0 0 0 0 0 +0 0 0 0 0.00602 0.00702333 0.00301 0.00200667 +0.00100333 0.00301 0.00100333 0.00100333 0 0 0 0 +0 0.00602 0.00802667 0.00401333 0 0 0 0.00100333 +0.00301 0.00301 0.00100333 0.00100333 0 0 0 0 +0 0 0.00401333 0.00200667 0 0 0 0 +0 0.00100333 0 0.00602 0 0 0 0 +0 0.00100333 0 0 0 0.00501667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.15652 1.01943 1.05084 1.04661 1.03876 +1.03151 1.0297 1.02426 1.01702 1.02004 1.02245 1.01822 1.01641 +1.01943 1.01279 1.01762 1.02245 1.02366 1.02487 1.02185 1.02124 +1.02185 1.0297 1.02487 1.01702 1.0291 1.01883 1.02547 1.02185 +1.0291 1.02487 1.01822 1.02124 1.01581 1.02124 1.0146 1.01762 +1.02547 1.01762 1.00735 1.02487 1.02004 1.02849 1.03151 1.03212 +1.02004 1.02487 1.03091 1.02487 1.03574 1.02728 1.03453 1.03695 +1.04722 1.03997 1.03272 1.04178 1.02849 1.02608 1.03634 1.03272 +1.02245 1.02789 1.01581 1.0146 1.02004 1.0146 1.02426 1.02124 +1.01279 1.01279 1.02547 1.02668 1.01641 1.02366 1.01098 1.01702 +1.02245 1.01943 1.01822 1.01822 1.02789 1.01641 1.01822 1.01581 +1.02547 1.02668 1.01702 1.01581 1.0146 1.02004 1.014 1.02004 +1.02306 1.02185 1.02064 1.02789 1.01822 1.00796 1.02608 1.01581 +1.01883 1.01702 1.02064 1.0291 1.02608 1.02608 1.02789 1.02789 +1.02245 1.03332 1.02245 1.02004 1.02366 1.02004 1.01943 1.02849 +1.01762 1.02245 1.02487 1.01641 1.01641 1.02487 1.02064 1.0152 +1.02547 1.02366 1.01822 1.02487 1.02306 1.02608 1.02668 1.02608 +1.02487 1.02306 1.02668 1.02668 1.03634 1.02728 1.02426 1.03091 +1.01581 1.02064 1.02124 1.02124 1.02728 1.02124 1.0303 1.02728 +1.0152 1.01158 1.0146 1.02426 1.01822 1.02366 1.01339 1.01762 +1.02306 1.01943 1.02306 1.02849 1.02668 1.0297 1.03997 1.03091 +1.03514 1.0454 1.03393 0.245817 0 0 0 0 +0 0 0.00802667 0 0 0 0 0.00301 +0.00200667 0 0 0.00100333 0 0 0 0 +0.00200667 0 0.00602 0.00301 0 0 0 0 +0 0 0 0 0.00401333 0.00100333 0.00602 0.0100333 +0.00200667 0 0 0.00401333 0.00301 0.00200667 0 0 +0 0 0 0 0.00301 0.00100333 0.00301 0 +0 0 0 0 0 0.00401333 0.00100333 0 +0 0 0 0 0 0.00301 0.00301 0 +0 0.00501667 0.00200667 0 0 0 0.00301 0.00702333 +0 0 0 0 0.00301 0 0 0 +0 0 0 0.220733 1.03514 1.04722 1.03755 1.03574 +1.02728 1.01943 1.02366 1.02426 1.02064 1.01822 1.01883 1.0152 +1.01943 1.01641 1.01339 1.0152 1.01218 1.01943 1.02185 1.02789 +1.02547 1.02668 1.03574 1.03634 1.0291 1.03393 1.03574 1.02608 +1.02185 1.02245 1.02064 1.02185 1.01943 1.02426 1.03574 1.01762 +1.02185 1.00494 0.99648 1.01943 1.02245 1.01883 1.02306 1.01581 +1.02728 1.02245 1.02185 1.02426 1.03332 1.03816 1.03695 1.04238 +1.04238 1.0448 1.04299 1.04178 1.03936 1.02789 1.02487 1.02668 +1.02185 1.02124 1.02306 1.01762 1.01883 1.01822 1.02608 1.01883 +1.02728 1.0146 1.0152 1.0146 1.02487 1.03332 1.01641 1.02306 +1.02547 1.02185 1.01581 1.0152 1.02306 1.02789 1.02668 1.01943 +1.02668 1.02366 1.02366 1.01883 1.03091 1.02547 1.01762 1.02849 +1.02426 1.02306 1.02487 1.01883 1.03212 1.03151 1.02487 1.02306 +1.0297 1.02245 1.02366 1.02004 1.02426 1.01883 1.02245 1.01702 +1.01581 1.01822 1.01943 1.0152 1.02366 1.02185 1.02728 1.02487 +1.02487 1.0303 1.0297 1.02004 1.02245 1.0146 1.01702 1.01822 +1.0146 1.02185 1.01883 1.0152 1.01702 1.02185 1.0146 1.02064 +1.02728 1.02608 1.02306 1.02306 1.02004 1.02487 1.02306 1.0297 +1.02426 1.03272 1.02306 1.0291 1.02668 1.02608 1.0297 1.01883 +1.02487 1.02728 1.02306 1.02064 1.02064 1.02124 1.01762 1.03091 +1.02185 1.02668 1.02124 1.01822 1.02487 1.02789 1.02124 1.0303 +1.0448 1.05326 1.0442 0.348157 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0100333 0.01204 +0.00401333 0 0 0 0 0.00301 0.00100333 0 +0 0 0 0 0.00401333 0.00401333 0.00100333 0 +0.00100333 0.00802667 0.0110367 0.00200667 0.00602 0.00100333 0.00100333 0.00602 +0.00802667 0.00301 0 0.00200667 0 0.00200667 0.00200667 0.00501667 +0.00903 0.00802667 0.00501667 0 0 0 0 0.00100333 +0 0.00602 0.00200667 0.00501667 0.00501667 0.00100333 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.305013 1.04661 1.04842 1.03393 1.03272 +1.03332 1.02668 1.01883 1.02487 1.01822 1.0291 1.01883 1.02004 +1.02608 1.01762 1.02547 1.02668 1.02487 1.02668 1.02366 1.03332 +1.03272 1.03091 1.00554 1.0001 0.991044 0.995272 1.02608 1.02487 +1.02849 1.02849 1.02789 1.02185 1.02668 1.02608 1.02728 1.02124 +1.02185 1.00252 1.00856 1.02306 1.02124 1.02487 1.014 1.02245 +1.02426 1.03816 1.0303 1.03151 1.03332 1.04601 1.01098 0.95118 +0.884072 0.867328 0.95118 1.00796 1.0442 1.04601 1.0291 1.03151 +1.02245 1.03816 1.0297 1.01943 1.02728 1.02004 1.01762 1.01581 +1.02124 1.02426 1.02124 1.0146 1.0152 1.01702 1.02668 1.01702 +1.01581 1.02547 1.02245 1.02124 1.01158 1.01762 1.01279 1.01762 +1.02064 1.03574 1.02849 1.01762 1.01641 1.02064 1.02185 1.02064 +1.0297 1.02124 1.01098 1.0152 1.02185 1.0146 1.02004 1.00554 +1.02185 1.02608 1.02608 1.02124 1.01762 1.01883 1.02608 1.02789 +1.02426 1.0297 1.02608 1.03151 1.03936 1.03876 1.03453 1.03453 +1.03393 1.02668 1.02487 1.01943 1.02366 1.02124 1.01943 1.02668 +1.02004 1.02064 1.02789 1.02366 1.01883 1.01581 1.02004 1.01822 +1.0146 1.02004 1.01098 1.02487 1.02366 1.03151 1.03151 1.02789 +1.03393 1.02668 1.02064 1.03634 1.0291 1.03091 1.02668 1.02426 +1.02608 1.02426 1.01943 1.02366 1.02547 1.01218 1.01158 1.01641 +1.014 1.01279 1.01822 1.02487 1.02124 1.02306 1.0291 1.03272 +1.03574 1.03634 1.05144 0.46655 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00100333 0 0 +0 0 0 0.00100333 0 0 0 0 +0 0 0.00200667 0.00200667 0 0 0 0 +0 0 0 0 0 0.00301 0.00401333 0 +0.00100333 0.00602 0.00301 0 0 0 0 0 +0 0.00100333 0.00200667 0.00100333 0 0.00501667 0.00501667 0.00501667 +0.00301 0 0 0 0 0 0 0 +0 0.00100333 0 0.00602 0.00702333 0 0 0 +0.00702333 0.00200667 0 0 0 0 0 0 +0 0 0 0.365213 1.05507 1.05628 1.03936 1.03212 +1.0303 1.02547 1.01883 1.02487 1.02124 1.01943 1.01581 1.01581 +1.02849 1.01581 1.02608 1.02849 1.02608 1.03212 1.02849 1.02789 +0.96024 0.706328 0.551833 0.488623 0.47257 0.494643 0.588957 0.850584 +1.00856 1.03695 1.0303 1.02668 1.02608 1.03151 1.02668 1.02064 +1.02728 0.982588 1.01218 1.03393 1.02245 1.01641 1.02004 1.02366 +1.02849 1.0291 1.03997 1.04782 0.99346 0.635488 0.315047 0.182607 +0.136453 0.14147 0.182607 0.320063 0.662536 1.00554 1.04782 1.02668 +1.03393 1.03272 1.03816 1.02789 1.01822 1.02426 1.03091 1.0152 +1.02124 1.04057 1.01943 1.01943 1.02004 1.01762 1.01883 1.02487 +1.02004 1.01702 1.02245 1.01218 1.0146 1.01339 1.02245 1.0152 +1.00796 1.02185 1.02487 1.02004 1.02064 1.01098 1.02849 1.0146 +1.01702 1.02728 1.03514 1.02366 1.02426 1.02366 1.01762 1.02306 +1.02004 1.02064 1.01822 1.02124 1.02547 1.02426 1.03212 1.02728 +1.02849 1.02668 1.03393 1.04178 1.03634 1.03695 1.03997 1.04057 +1.03212 1.0291 1.02487 1.0297 1.02487 1.03151 1.03151 1.02366 +1.0297 1.02306 1.02004 1.02668 1.02064 1.01641 1.03151 1.0303 +1.01641 1.02245 1.02185 1.02668 1.03272 1.02849 1.03272 1.03876 +1.03695 1.02668 1.02124 1.02124 1.02547 1.03574 1.03574 1.02608 +1.02004 1.02668 1.02728 1.01762 1.02306 1.02004 1.02064 1.01943 +1.02064 1.02487 1.0297 1.02306 1.0291 1.02728 1.02185 1.03151 +1.03816 1.05144 1.0599 0.554843 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00702333 0.00100333 0 0 0 0 +0.00802667 0.00702333 0 0 0 0.00301 0.00100333 0.00903 +0.0130433 0.00903 0.00401333 0.00100333 0 0.00602 0.00501667 0.00301 +0 0 0 0 0.00501667 0.00200667 0.00501667 0.00200667 +0 0 0.00100333 0.00903 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00602 0.0100333 0.0130433 0.00903 0.00200667 0.00501667 +0.00702333 0.00401333 0 0 0 0.00903 0.0130433 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0.441467 1.05144 1.04359 1.03514 1.02728 +1.02668 1.03151 1.02547 1.02306 1.02245 1.02728 1.02668 1.02366 +1.0291 1.02426 1.01883 1.02547 1.02728 1.03151 1.01581 0.810656 +0.492637 0.434443 0.441467 0.447487 0.455513 0.450497 0.450497 0.458523 +0.604576 0.962052 1.01762 1.02245 1.02064 1.02547 1.02124 1.0303 +1.02728 0.982588 1.02306 1.02789 1.02185 1.03212 1.02366 1.02608 +1.03332 1.0297 1.03936 0.945744 0.342137 0.125417 0.09632 0.115383 +0.124413 0.142473 0.10836 0.125417 0.127423 0.339127 0.937288 1.05628 +1.02426 1.0297 1.0303 1.03091 1.02064 1.02608 1.0303 1.02185 +1.01883 1.01218 1.01822 1.01339 1.01762 1.01822 1.0146 1.03091 +1.02124 1.01641 1.02547 1.01943 1.02426 1.01762 1.02668 1.02849 +1.01943 1.01339 1.014 1.02487 1.01943 1.02306 1.02608 1.00554 +1.02185 1.02004 1.02426 1.02426 1.02124 1.02306 1.02124 1.01943 +1.02487 1.0152 1.0146 1.02668 1.0291 1.02064 1.02426 1.03514 +1.03332 1.03393 1.04601 1.03755 1.02668 1.01279 1.01943 1.04057 +1.04359 1.0454 1.03634 1.03091 1.03514 1.02124 1.02426 1.02185 +1.02245 1.02426 1.0152 1.01641 1.02124 1.01702 1.02064 1.02064 +1.01822 1.03272 1.02608 1.02668 1.03091 1.03091 1.01279 0.927624 +0.71792 0.58996 0.573907 0.587953 0.779744 0.94816 1.01883 1.0303 +1.0291 1.02547 1.01702 1.01702 1.02004 1.02245 1.02426 1.02185 +1.02064 1.02608 1.02547 1.02185 1.02547 1.02608 1.03091 1.0303 +1.03816 1.04178 1.05326 0.612304 0 0 0 0 +0 0 0 0 0 0.00702333 0.00702333 0.00903 +0 0 0 0 0 0.00501667 0.0110367 0.00401333 +0 0 0.00301 0.00802667 0.00802667 0.0100333 0.00903 0.00401333 +0.00401333 0 0 0 0 0 0 0 +0 0 0.00100333 0.00200667 0 0 0 0 +0.00501667 0.00301 0 0 0 0.00100333 0.00200667 0.00301 +0 0 0 0 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00602 0.00903 0 0 0 0.00301 +0.00602 0.00100333 0 0 0 0 0 0 +0 0 0 0.488623 1.05688 1.04661 1.03272 1.03332 +1.03212 1.02728 1.02608 1.02064 1.02064 1.02849 1.02064 1.01641 +1.02064 1.02426 1.02668 1.03151 1.03393 1.02789 0.7952 0.450497 +0.4515 0.45451 0.46354 0.462537 0.476583 0.46956 0.459527 0.441467 +0.453507 0.55384 0.969904 1.03393 1.02306 1.0297 1.0152 1.01581 +1.02366 1.00554 1.02487 1.01822 1.01943 1.0303 1.02728 1.02668 +1.03151 1.04238 0.940308 0.26488 0.118393 0.14749 0.133443 0.128427 +0.152507 0.140467 0.13846 0.14147 0.12341 0.10535 0.284947 0.946348 +1.04722 1.03151 1.0297 1.02668 1.0297 1.02608 1.01581 1.02124 +1.03997 1.01702 1.01702 1.01098 1.01822 1.02306 1.02064 1.0146 +1.0303 1.02306 1.01822 1.01822 1.02728 1.01581 1.01883 1.02004 +1.01822 1.0152 1.01037 1.02245 1.02124 1.01762 1.01641 1.0303 +1.02426 1.02306 1.02487 1.0291 1.01037 1.0152 1.01762 1.0291 +1.02064 1.02547 1.02608 1.02124 1.02185 1.03393 1.02487 1.02608 +1.04057 1.03272 0.90468 0.546817 0.371233 0.28595 0.302003 0.413373 +0.694736 0.985608 1.04299 1.03212 1.02064 1.03272 1.02245 1.01883 +1.02487 1.01943 1.02487 1.02608 1.02668 1.01098 1.01943 1.0152 +1.02306 1.02849 1.02849 1.03393 1.03272 0.9542 0.622608 0.467553 +0.446483 0.452503 0.45451 0.450497 0.455513 0.470563 0.6664 0.98138 +1.0297 1.0303 1.02124 1.02124 1.02064 1.02004 1.0146 1.02426 +1.01943 1.01581 1.01581 1.02728 1.02366 1.02124 1.02426 1.03151 +1.03695 1.04359 1.05326 0.70504 0 0 0 0 +0 0 0 0 0.00301 0 0 0 +0.00501667 0 0.00100333 0.00903 0.00301 0 0 0 +0 0.00702333 0 0 0.00200667 0.00200667 0.00100333 0 +0 0.00401333 0.00903 0.00401333 0 0 0.00301 0.00401333 +0.00100333 0.00602 0.00702333 0.00501667 0.00100333 0 0 0 +0 0.00200667 0.00401333 0.00602 0.00401333 0.00702333 0.00100333 0 +0.00301 0.00802667 0.00602 0 0 0 0.00200667 0 +0 0 0.00100333 0.00501667 0.00702333 0 0 0 +0 0 0.00301 0 0 0 0 0 +0 0 0.00100333 0.00100333 0 0 0 0 +0 0 0 0.510697 1.05507 1.0448 1.03695 1.0297 +1.03332 1.02668 1.02668 1.02245 1.02124 1.02245 1.02849 1.02547 +1.01581 1.01702 1.01279 1.01762 1.02547 0.930644 0.491633 0.447487 +0.45752 0.45451 0.461533 0.485613 0.468557 0.464543 0.45752 0.477587 +0.47558 0.447487 0.58996 1.01641 1.03997 1.03151 1.02608 1.02366 +1.02487 0.99648 1.03091 1.03091 1.02064 1.02245 1.03151 1.03453 +1.03755 1.01641 0.413373 0.115383 0.116387 0.134447 0.148493 0.152507 +0.1505 0.18361 0.173577 0.15351 0.151503 0.121403 0.11137 0.41538 +1.01279 1.04299 1.03393 1.01943 1.02547 1.02547 1.02668 1.0291 +1.01822 1.02426 1.02004 1.01098 1.01822 1.02849 1.01158 1.02185 +1.0152 1.0146 1.03272 1.0291 1.02608 1.03091 1.02487 1.0146 +1.01822 1.0303 1.0152 1.01037 1.01762 1.02547 1.01581 1.01702 +1.01702 1.01943 1.01883 1.02366 1.01641 1.01883 1.02124 1.01822 +1.02064 1.01762 1.02306 1.02426 1.02245 1.02306 1.03393 1.04178 +0.980172 0.485613 0.184613 0.121403 0.112373 0.106353 0.09933 0.110367 +0.1204 0.290967 0.770728 1.03997 1.04299 1.02124 1.0303 1.0291 +1.02124 1.02547 1.03574 1.01762 1.0152 1.01883 1.02849 1.02789 +1.01762 1.02789 1.02849 1.0297 0.943328 0.534777 0.455513 0.456517 +0.45752 0.465547 0.46354 0.441467 0.447487 0.446483 0.440463 0.55986 +0.967488 1.0291 1.0297 1.02789 1.02185 1.01822 1.02306 1.014 +1.02366 1.02608 1.02547 1.01641 1.01581 1.02487 1.03332 1.03574 +1.03574 1.04722 1.0599 0.774592 0 0 0 0 +0 0 0.00200667 0 0 0 0 0 +0 0.00200667 0 0 0 0 0 0.00100333 +0 0.00501667 0.00602 0.00301 0.00100333 0 0 0 +0.00602 0.00100333 0 0 0 0.00301 0 0 +0.00301 0.00301 0 0.00301 0.00301 0 0 0 +0 0 0 0 0 0.00301 0.00301 0 +0 0 0 0.00401333 0.00802667 0.00200667 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.58394 1.06111 1.0442 1.03272 1.03332 +1.03091 1.02789 1.02789 1.03151 1.02185 1.02064 1.01641 1.01762 +1.02306 1.02608 1.02487 1.03091 1.00916 0.604576 0.447487 0.45752 +0.464543 0.46354 0.458523 0.479593 0.47859 0.492637 0.480597 0.471567 +0.474577 0.468557 0.453507 0.850584 1.03997 1.03272 1.0146 1.02487 +1.02124 1.00494 1.0291 1.02608 1.01943 1.02366 1.02487 1.03936 +1.05024 0.80164 0.131437 0.12642 0.142473 0.13846 0.166553 0.154513 +0.16555 0.188627 0.16856 0.151503 0.143477 0.130433 0.12943 0.191637 +0.848008 1.03574 1.03332 1.03091 1.01762 1.01641 1.02608 1.02004 +1.02185 1.02366 1.01762 1.02728 1.02004 1.01822 1.02124 1.02487 +1.01158 1.01943 1.02487 1.02426 1.02487 1.02306 1.02245 1.02668 +1.02366 1.02004 1.02245 1.01702 1.02004 1.02185 1.02004 1.03514 +1.02789 1.01158 1.01581 1.02426 1.03574 1.01702 1.01581 1.02185 +1.02245 1.03091 1.02064 1.03091 1.02064 1.03997 1.0442 0.967488 +0.37324 0.11739 0.10836 0.11137 0.12341 0.13545 0.14749 0.17157 +0.157523 0.11739 0.151503 0.661248 1.03634 1.04118 1.02728 1.0297 +1.01641 1.02426 1.0303 1.02547 1.03212 1.02124 1.02668 1.01883 +1.02306 1.03212 1.04118 0.979568 0.545813 0.449493 0.46655 0.473573 +0.464543 0.456517 0.440463 0.480597 0.464543 0.4515 0.44247 0.449493 +0.607152 1.00494 1.0291 1.02487 1.01702 1.02547 1.02426 1.02124 +1.02608 1.02185 1.02245 1.02245 1.02668 1.02306 1.02728 1.02728 +1.03936 1.04359 1.04963 0.8274 0 0 0 0 +0 0 0 0 0.00301 0.00200667 0 0 +0 0 0 0 0.00401333 0.00301 0.00200667 0.00100333 +0.00401333 0.00200667 0 0 0 0.00100333 0.00100333 0.00301 +0.00200667 0 0 0.00301 0.00301 0.00501667 0.00802667 0 +0 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00401333 0.00401333 0.00501667 0.00401333 0.00200667 0.00401333 0.01204 0.0100333 +0.00903 0.00602 0.00501667 0.00501667 0.00200667 0.00903 0.00802667 0 +0 0 0 0 0 0 0.00702333 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0.58996 1.06232 1.04963 1.03936 1.0303 +1.02366 1.02426 1.02426 1.01943 1.01822 1.01822 1.02064 1.02064 +1.02426 1.02004 1.03151 1.0303 0.946348 0.47558 0.44247 0.468557 +0.456517 0.453507 0.458523 0.465547 0.46956 0.498657 0.4816 0.485613 +0.477587 0.46053 0.449493 0.581933 1.01702 1.03332 1.02306 1.03453 +1.01702 1.00252 1.02728 1.02728 1.02306 1.02547 1.02608 1.03755 +1.03695 0.464543 0.104347 0.127423 0.140467 0.139463 0.155517 0.161537 +0.158527 0.154513 0.149497 0.15652 0.146487 0.1505 0.139463 0.160533 +0.497653 1.02547 1.03514 1.03151 1.02608 1.02668 1.02004 1.0146 +1.0291 1.02366 1.02487 1.02245 1.02728 1.01158 1.02849 1.02547 +1.00916 1.02124 1.00675 1.02366 1.0291 1.01581 1.02245 1.02487 +1.01279 1.02366 1.02608 1.02426 1.02366 1.0297 1.01641 1.0146 +1.03453 1.01822 1.0152 1.0152 1.02487 1.014 1.01883 1.02064 +1.02728 1.02064 1.01702 1.02668 1.03151 1.04782 1.02426 0.456517 +0.110367 0.1204 0.133443 0.13545 0.14448 0.148493 0.16856 0.185617 +0.18662 0.18361 0.122407 0.170567 0.813232 1.03755 1.04299 1.02849 +1.02547 1.02728 1.02004 1.014 1.0303 1.02487 1.02185 1.01943 +1.0297 1.02608 1.03695 0.71792 0.467553 0.441467 0.453507 0.449493 +0.476583 0.468557 0.470563 0.477587 0.46655 0.467553 0.45752 0.452503 +0.447487 0.82096 1.03091 1.02728 1.02547 1.02426 1.01702 1.01762 +1.02185 1.02185 1.02668 1.02426 1.02547 1.02426 1.02849 1.03151 +1.03514 1.04178 1.04963 0.871192 0.00501667 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00301 0.0110367 0.00903 0.00802667 0.00602 0 +0.00100333 0 0 0.00401333 0.00200667 0.00200667 0 0 +0.00501667 0.00903 0.00702333 0.00501667 0.00100333 0 0 0.00301 +0.00702333 0.00301 0 0 0 0 0 0 +0.00501667 0.00200667 0.00501667 0.00802667 0.0100333 0.00200667 0 0 +0 0.00200667 0.00401333 0.00200667 0.00401333 0 0 0 +0 0 0.00301 0.00100333 0.00200667 0 0 0.00501667 +0.00401333 0 0 0 0.00100333 0 0 0 +0.0110367 0.00501667 0 0 0 0 0 0 +0 0 0 0.609728 1.05205 1.04299 1.03816 1.0303 +1.0291 1.02608 1.01702 1.02426 1.02124 1.02245 1.02064 1.02306 +1.02728 1.01883 1.02668 1.03695 0.829976 0.441467 0.44849 0.467553 +0.4816 0.480597 0.483607 0.46655 0.464543 0.48762 0.476583 0.482603 +0.470563 0.468557 0.450497 0.49063 0.977756 1.03755 1.03272 1.02849 +1.00977 1.01339 1.01943 1.02608 1.02366 1.02547 1.02245 1.03393 +1.01218 0.301 0.131437 0.125417 0.145483 0.154513 0.151503 0.157523 +0.15953 0.163543 0.15953 0.155517 0.155517 0.146487 0.140467 0.12943 +0.327087 1.014 1.02728 1.0303 1.02245 1.03514 1.02668 1.02185 +1.02245 1.01943 1.01822 1.01822 1.03212 1.02487 1.01581 1.02306 +1.01883 1.01822 1.02728 1.02608 1.02487 1.00977 1.02547 1.01762 +1.02849 1.02366 1.02245 1.0297 1.03151 1.02366 1.02426 1.02185 +1.01279 1.02728 1.01822 1.01279 1.01581 1.0297 1.03574 1.01641 +1.03212 1.02124 1.01702 1.02789 1.04359 1.0454 0.796488 0.137457 +0.10234 0.11438 0.140467 0.14448 0.163543 0.16555 0.149497 0.175583 +0.188627 0.187623 0.13545 0.110367 0.339127 1.01279 1.03393 1.03151 +1.02668 1.02547 1.03453 1.02668 1.014 1.01702 1.01762 1.02547 +1.02789 1.0297 0.991648 0.522737 0.44548 0.446483 0.467553 0.468557 +0.473573 0.46053 0.46956 0.467553 0.476583 0.462537 0.45451 0.461533 +0.449493 0.569893 1.00735 1.02306 1.02185 1.02064 1.02185 1.02306 +1.02064 1.02608 1.02185 1.01822 1.02547 1.0303 1.02245 1.0297 +1.03332 1.03514 1.05748 0.893088 0.01204 0 0 0 +0 0 0 0 0 0 0.00100333 0.00200667 +0 0.00802667 0.00602 0 0 0 0 0.00401333 +0.00401333 0.00200667 0 0 0 0 0.00301 0.00301 +0 0 0 0 0.00401333 0.00602 0.00702333 0.00702333 +0.00200667 0.00501667 0.0110367 0.00802667 0 0.00602 0.00501667 0.00301 +0 0 0 0 0 0 0.00200667 0 +0 0 0 0 0 0.00301 0.00802667 0.00501667 +0.00401333 0.00401333 0.00401333 0.00401333 0.00301 0.00401333 0.00401333 0.00100333 +0 0.00200667 0.00301 0 0 0 0.00301 0 +0 0.00401333 0.00200667 0.00100333 0 0 0 0 +0 0 0 0.625184 1.0599 1.04722 1.03695 1.03212 +1.02487 1.02245 1.02185 1.02064 1.01943 1.02124 1.02004 1.02004 +1.02366 1.02185 1.03514 1.02668 0.742392 0.4515 0.46354 0.458523 +0.47558 0.473573 0.47257 0.47859 0.483607 0.479593 0.48762 0.480597 +0.476583 0.455513 0.446483 0.474577 0.965072 1.03272 1.02366 1.02608 +1.01762 1.014 1.03091 1.02185 1.02789 1.03272 1.02668 1.02668 +0.997084 0.23177 0.124413 0.160533 0.148493 0.146487 0.158527 0.17157 +0.163543 0.164547 0.151503 0.16555 0.163543 0.142473 0.12642 0.13244 +0.268893 1.01158 1.03695 1.03212 1.02124 1.02306 1.02608 1.01883 +1.02004 1.02608 1.014 1.01762 1.02004 1.0152 1.02366 1.02064 +1.01581 1.03091 1.01822 1.02487 1.02185 1.00796 1.02306 0.968696 +1.0152 1.03332 1.02306 1.03332 1.0152 1.02668 1.01762 1.02487 +1.01883 1.02306 1.02789 1.02004 1.01702 1.02124 1.02547 1.02668 +1.02064 1.02487 1.03876 1.0297 1.03816 1.02124 0.408357 0.0983267 +0.11137 0.121403 0.151503 0.155517 0.142473 0.157523 0.15652 0.166553 +0.16254 0.157523 0.146487 0.116387 0.157523 0.848008 1.04178 1.03393 +1.0297 1.02185 1.0291 1.02547 1.02124 1.01883 1.02064 1.02608 +1.03332 1.03091 0.925812 0.443473 0.44247 0.46956 0.47859 0.4816 +0.46956 0.464543 0.46956 0.479593 0.465547 0.468557 0.465547 0.45451 +0.44849 0.470563 0.969904 1.03816 1.02366 1.02366 1.02064 1.01762 +1.01762 1.01641 1.0146 1.02789 1.02426 1.02426 1.02306 1.02487 +1.03695 1.0442 1.05748 0.890512 0.0140467 0 0 0 +0 0 0 0 0.00301 0.00100333 0.00301 0.00903 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0.00401333 0.00301 0 0 0.00301 +0.00501667 0.00702333 0.00903 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0 0 0.00100333 0.00501667 +0.00100333 0.00100333 0.00100333 0 0 0 0 0.00200667 +0.00200667 0.00301 0 0 0 0 0.00200667 0.00301 +0.00301 0.00401333 0.00100333 0.00903 0.00802667 0 0 0 +0 0 0 0 0 0.00401333 0.00301 0 +0 0 0 0.617456 1.05748 1.04601 1.03212 1.03453 +1.03393 1.02426 1.02366 1.02487 1.01883 1.01822 1.02185 1.02064 +1.02608 1.03332 1.02849 1.0291 0.763 0.449493 0.446483 0.465547 +0.467553 0.4816 0.471567 0.46956 0.47257 0.468557 0.464543 0.48461 +0.467553 0.46354 0.444477 0.47859 0.968092 1.03574 1.04057 1.02547 +1.00916 1.02004 1.03332 1.02306 1.02124 1.02124 1.03514 1.04359 +1.00192 0.27692 0.13846 0.173577 0.157523 0.140467 0.16555 0.164547 +0.172573 0.16555 0.15953 0.157523 0.15652 0.137457 0.140467 0.119397 +0.302003 1.02124 1.04057 1.0146 1.01762 1.02608 1.01702 1.02608 +1.02608 1.01581 1.02728 1.02728 1.02306 1.0297 1.01581 1.01641 +1.02608 1.02789 1.02668 1.01158 1.01822 1.0303 0.875056 0.242807 +0.986816 1.02306 1.02668 1.0152 1.03212 1.02728 1.01581 1.0146 +1.01762 1.01943 1.01641 1.01943 1.03091 1.02487 1.01339 1.0152 +1.02728 1.02366 1.02608 1.02849 1.03876 0.994064 0.24682 0.109363 +0.121403 0.130433 0.145483 0.142473 0.149497 0.15953 0.158527 0.149497 +0.15953 0.155517 0.134447 0.110367 0.10234 0.599993 1.03997 1.02426 +1.02547 1.02547 1.02064 1.02728 1.02668 1.01702 1.02608 1.0297 +1.03816 1.03151 0.8274 0.468557 0.456517 0.45752 0.465547 0.46956 +0.48762 0.473573 0.462537 0.477587 0.47257 0.464543 0.467553 0.459527 +0.446483 0.4515 0.939704 1.02728 1.02426 1.0303 1.02245 1.02668 +1.014 1.01581 1.02064 1.01822 1.02245 1.01822 1.02728 1.03634 +1.03936 1.04178 1.04722 0.873768 0.00702333 0 0 0 +0 0 0 0.00802667 0.00903 0.00501667 0 0 +0 0 0.00301 0.00100333 0.00100333 0.00401333 0.00100333 0 +0 0.00100333 0.00401333 0.00200667 0 0.00100333 0.00501667 0.00100333 +0.00301 0 0.00501667 0.0100333 0.00602 0 0.00100333 0 +0 0 0 0 0 0.00100333 0 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0 0 0 +0 0.00200667 0.00200667 0.00602 0.00200667 0 0 0 +0 0 0 0.00802667 0.00802667 0.00501667 0.00200667 0 +0.00501667 0.0100333 0 0 0 0 0 0 +0 0 0 0.60844 1.04963 1.03876 1.03574 1.0303 +1.0291 1.02849 1.0291 1.02668 1.02004 1.02366 1.02245 1.02426 +1.01943 1.01581 1.02004 1.02728 0.841568 0.4515 0.46956 0.456517 +0.461533 0.461533 0.476583 0.482603 0.47257 0.47859 0.47257 0.474577 +0.459527 0.477587 0.452503 0.518723 1.00131 1.02608 1.03091 1.02306 +1.01702 1.01218 1.02789 1.02245 1.0303 1.03151 1.0303 1.03936 +1.02124 0.404343 0.181603 0.17157 0.13846 0.149497 0.166553 0.163543 +0.15953 0.164547 0.160533 0.158527 0.14749 0.142473 0.12642 0.107357 +0.414377 1.03997 1.0291 1.0297 1.02245 1.02366 1.02487 1.02366 +1.02064 1.02004 1.014 1.0303 1.01037 1.01641 1.02245 1.0146 +1.01702 1.03151 1.0297 1.01702 1.00675 1.0291 1.0146 0.940912 +1.03212 1.01822 1.01943 1.01641 1.02245 1.02245 1.01883 1.01098 +1.02306 1.02547 1.03151 1.01339 1.01702 1.02366 1.01943 1.02306 +1.02426 1.02306 1.02547 1.03514 1.04238 0.962052 0.169563 0.11137 +0.14147 0.145483 0.15953 0.148493 0.15953 0.13846 0.13545 0.16254 +0.15953 0.15351 0.139463 0.10836 0.11438 0.500663 1.04178 1.03091 +1.02789 1.02245 1.02608 1.02185 1.02064 1.01822 1.02064 1.02245 +1.02608 1.03755 0.845432 0.444477 0.453507 0.470563 0.471567 0.46655 +0.47257 0.483607 0.486617 0.465547 0.465547 0.465547 0.46956 0.45752 +0.44548 0.468557 0.936684 1.03212 1.02668 1.01641 1.02185 1.01762 +1.02185 1.02547 1.02245 1.01883 1.01883 1.0291 1.03453 1.03091 +1.0303 1.04601 1.05326 0.871192 0.00501667 0 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0.00501667 0.00802667 0.00301 0.00200667 0 0 0.00301 +0.00200667 0.00401333 0 0.00602 0.00802667 0.00301 0 0 +0 0 0 0 0 0.00301 0.00401333 0 +0 0 0.00401333 0 0 0 0 0.00100333 +0.00301 0 0.00100333 0.00501667 0.00702333 0.00401333 0.00200667 0.00100333 +0 0 0 0.00301 0 0 0 0 +0 0 0 0 0 0.00200667 0.00401333 0.00903 +0.00100333 0 0 0 0 0.00301 0.00602 0.0110367 +0.00602 0.00100333 0.00401333 0 0 0 0 0 +0 0 0 0.602 1.05869 1.04359 1.03393 1.03212 +1.02487 1.02426 1.02185 1.01943 1.0291 1.02426 1.02245 1.01883 +1.01641 1.02789 1.02426 1.03272 0.963864 0.492637 0.440463 0.452503 +0.47558 0.47257 0.476583 0.477587 0.4816 0.477587 0.46956 0.473573 +0.470563 0.443473 0.420397 0.635488 1.02668 1.03272 1.02245 1.02064 +1.01581 1.01943 1.02064 1.02064 1.02064 1.02487 1.03695 1.0297 +1.03695 0.675416 0.161537 0.166553 0.140467 0.143477 0.14749 0.155517 +0.15351 0.160533 0.151503 0.15953 0.158527 0.146487 0.130433 0.12642 +0.712768 1.04299 1.0291 1.02366 1.0291 1.02547 1.0303 1.01279 +1.02366 1.02789 1.01158 1.01943 1.02124 1.0297 1.02426 1.02789 +1.01943 1.00916 1.01098 1.02728 1.02547 1.02185 1.03151 1.02487 +1.0303 1.02064 1.00856 1.01943 1.01762 1.01641 1.02064 1.0146 +1.02487 1.02487 1.0152 1.01641 1.01943 1.01943 1.02487 1.02004 +1.02124 1.02487 1.02668 1.0291 1.03574 0.965072 0.19264 0.109363 +0.124413 0.136453 0.139463 0.157523 0.15953 0.1505 0.16254 0.158527 +0.142473 0.139463 0.121403 0.124413 0.11438 0.49063 1.03151 1.0291 +1.02306 1.02849 1.0297 1.02728 1.02849 1.014 1.01943 1.03091 +1.03212 1.03755 0.926416 0.46053 0.46354 0.450497 0.467553 0.4816 +0.4816 0.473573 0.47859 0.470563 0.46354 0.47859 0.480597 0.44849 +0.45451 0.4816 0.95722 1.02306 1.02668 1.02064 1.01943 1.02064 +1.01702 1.01279 1.02366 1.02789 1.02789 1.02306 1.02426 1.02789 +1.03755 1.0442 1.05265 0.864752 0.00501667 0 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0.00301 0 0.00501667 0 0 0.00100333 0.00200667 +0.00702333 0.00200667 0.00100333 0 0 0 0.00100333 0 +0 0.00301 0.00401333 0 0 0 0 0 +0.00501667 0.00200667 0 0 0 0.00301 0 0 +0 0 0 0 0 0 0.00100333 0.00100333 +0.00100333 0.00200667 0.00100333 0 0 0.00702333 0.00501667 0 +0 0.00100333 0 0 0 0 0.00602 0.00301 +0 0.00401333 0.00702333 0.00602 0 0 0 0 +0 0 0 0 0.00100333 0 0 0 +0 0 0 0.588957 1.0593 1.04903 1.04299 1.0303 +1.02547 1.02547 1.02124 1.01822 1.01943 1.01822 1.02426 1.02728 +1.02124 1.02547 1.02789 1.02608 1.01822 0.67928 0.449493 0.45451 +0.46053 0.452503 0.461533 0.47558 0.470563 0.471567 0.473573 0.476583 +0.467553 0.426417 0.384277 0.89824 1.03453 1.0303 1.03272 1.01762 +1.02426 1.01702 1.02547 1.02004 1.02245 1.02547 1.02487 1.0303 +1.03453 0.978964 0.268893 0.10535 0.127423 0.14448 0.154513 0.158527 +0.170567 0.179597 0.155517 0.14448 0.131437 0.128427 0.1204 0.29498 +0.998292 1.03997 1.03634 1.02185 1.02124 1.02124 1.02004 1.02245 +1.02668 1.01762 1.02668 1.01279 1.01943 1.02064 1.02064 1.02064 +1.0146 1.01702 1.02064 1.02426 1.02668 1.02366 1.01943 1.0291 +1.0146 1.01158 1.02789 1.03936 1.01883 1.02728 1.02366 1.02366 +1.01279 1.01641 1.02426 1.01822 1.01581 1.02728 1.02789 1.02004 +1.02547 1.01762 1.02849 1.03574 1.04118 0.994064 0.24983 0.100333 +0.127423 0.133443 0.140467 0.161537 0.14448 0.155517 0.155517 0.145483 +0.136453 0.133443 0.143477 0.113377 0.118393 0.579927 1.03212 1.03695 +1.02185 1.02547 1.02668 1.02487 1.02849 1.01158 1.0146 1.03453 +1.02547 1.03332 0.992252 0.504677 0.46053 0.47257 0.46354 0.465547 +0.468557 0.468557 0.47859 0.486617 0.47257 0.47859 0.453507 0.446483 +0.42742 0.567887 1.00614 1.03936 1.03574 1.01702 1.01883 1.01943 +1.02668 1.03272 1.02185 1.02426 1.01943 1.02487 1.02608 1.03091 +1.03212 1.03997 1.05205 0.824824 0 0 0 0 +0 0.00100333 0.01505 0.0100333 0 0 0.00702333 0.00200667 +0 0 0 0 0.00100333 0.00702333 0.00903 0.00200667 +0 0 0 0 0.00301 0.00903 0.00501667 0.00401333 +0 0 0.00200667 0 0 0 0 0 +0 0.00100333 0.00401333 0 0 0 0.00702333 0.0110367 +0.00802667 0.00200667 0 0 0.00100333 0.00401333 0.00501667 0.00200667 +0 0 0 0 0 0 0.00100333 0.00602 +0.00401333 0 0 0 0 0 0 0 +0.00100333 0 0 0 0.00100333 0.00401333 0.00802667 0.00301 +0 0 0 0 0 0 0 0 +0 0 0 0.546817 1.05688 1.04903 1.04178 1.03453 +1.0303 1.02789 1.0297 1.02728 1.02185 1.02668 1.01702 1.02064 +1.02245 1.02789 1.02789 1.02306 1.0297 0.968092 0.519727 0.44548 +0.440463 0.453507 0.456517 0.461533 0.46053 0.458523 0.46655 0.461533 +0.458523 0.455513 0.668976 1.02064 1.0303 1.02547 1.01883 1.02124 +1.01641 1.01279 1.0291 1.03212 1.0297 1.02547 1.02547 1.03212 +1.03272 1.03876 0.759136 0.167557 0.103343 0.128427 0.14147 0.137457 +0.151503 0.143477 0.127423 0.124413 0.142473 0.11137 0.172573 0.831264 +1.04118 1.03514 1.02668 1.02668 1.03151 1.02426 1.01822 1.02064 +1.02245 1.01883 1.01641 1.02668 1.02004 1.01822 1.0152 1.02245 +1.03091 1.01762 1.01641 1.02124 1.01279 1.01883 1.01943 1.01883 +1.01581 1.02185 1.02668 1.0152 1.03151 1.00977 1.00614 1.02185 +1.02849 1.01702 1.01883 1.03151 1.01702 1.0146 1.02124 1.02185 +1.01943 1.03091 1.02487 1.03212 1.03634 1.02728 0.45752 0.109363 +0.124413 0.139463 0.14448 0.143477 0.139463 0.148493 0.14147 0.14147 +0.13545 0.131437 0.122407 0.112373 0.140467 0.85316 1.03876 1.03332 +1.03393 1.0297 1.0291 1.01279 1.01822 1.00433 1.02064 1.02245 +1.0297 1.03453 1.02789 0.693448 0.459527 0.4515 0.461533 0.458523 +0.47558 0.470563 0.470563 0.486617 0.467553 0.46354 0.453507 0.455513 +0.44849 0.82096 1.02124 1.02124 1.01581 1.01702 1.02306 1.02547 +1.02547 1.02185 1.02185 1.01883 1.02547 1.0291 1.02547 1.03091 +1.03695 1.04782 1.0605 0.793912 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00401333 0.00903 0.00702333 0 0 0 +0 0.00501667 0.00200667 0.00501667 0.00200667 0.00100333 0 0 +0 0.00401333 0 0 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.00401333 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00903 0.00501667 0 0 0 0 0 +0 0 0 0.00301 0 0 0 0.00301 +0.0100333 0.0110367 0.00903 0 0 0 0 0 +0 0 0 0.509693 1.05144 1.04601 1.03634 1.03272 +1.0303 1.02124 1.01762 1.02124 1.02728 1.01822 1.0297 1.02124 +1.0152 1.01762 1.01218 1.02124 1.01702 1.02185 0.914984 0.528757 +0.443473 0.450497 0.440463 0.459527 0.47257 0.462537 0.447487 0.458523 +0.46655 0.625184 0.9995 1.03091 1.02789 1.02426 1.0291 1.01943 +1.00796 1.02245 1.01762 1.02124 1.03393 1.03091 1.02728 1.03997 +1.0297 1.03997 1.03091 0.690872 0.190633 0.118393 0.118393 0.121403 +0.133443 0.14147 0.131437 0.130433 0.10535 0.17759 0.729512 1.0442 +1.03816 1.02366 1.02487 1.02185 1.02004 1.01822 1.02668 1.00916 +1.02366 1.02547 1.01943 1.02306 1.02728 1.01581 1.02487 1.02487 +1.01279 1.00977 1.02124 1.01158 1.02849 1.00796 1.0146 1.03212 +1.01702 1.014 1.02245 1.02306 1.0146 1.02547 1.02487 1.00977 +1.02124 1.02608 1.02728 1.01822 1.01581 1.01762 1.0152 1.01883 +1.0291 1.02668 1.02668 1.02366 1.0297 1.05386 0.831264 0.137457 +0.103343 0.113377 0.134447 0.14147 0.146487 0.14448 0.140467 0.137457 +0.143477 0.127423 0.125417 0.106353 0.335113 1.02185 1.03393 1.03695 +1.0297 1.02366 1.02789 1.02366 1.03091 0.998896 1.02185 1.02668 +1.02245 1.0297 1.03514 0.956012 0.49364 0.450497 0.455513 0.473573 +0.46053 0.45752 0.474577 0.453507 0.461533 0.464543 0.446483 0.43344 +0.579927 0.99648 1.0291 1.02426 1.02064 1.02064 1.02426 1.02547 +1.02728 1.01702 1.01581 1.02487 1.01883 1.0152 1.02185 1.03695 +1.04299 1.04299 1.05446 0.734664 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0 0 0 0.00802667 0.00702333 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0.00200667 0 0 0 0.00301 0.00301 +0.00501667 0.00100333 0 0 0 0.00301 0.00602 0.00401333 +0 0.00200667 0.00301 0.00501667 0.00602 0.00501667 0.00702333 0.00200667 +0 0 0 0.00802667 0.00802667 0.00602 0.00301 0.00100333 +0.00100333 0.00903 0.0130433 0.00301 0.00602 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.49063 1.06232 1.04903 1.03393 1.03151 +1.0291 1.02789 1.02487 1.02366 1.02306 1.02124 1.02064 1.0303 +1.02306 1.02366 1.01822 1.01943 1.02426 1.03453 1.02789 0.944536 +0.607152 0.46655 0.4515 0.432437 0.435447 0.446483 0.45451 0.501667 +0.73724 1.00554 1.0297 1.03332 1.02849 1.02064 1.0297 1.02789 +1.01943 1.00494 1.01883 1.02245 1.02366 1.02728 1.02426 1.02064 +1.02728 1.03272 1.03514 1.02789 0.851872 0.362203 0.163543 0.11739 +0.103343 0.1204 0.12341 0.149497 0.395313 0.909832 1.03997 1.04299 +1.02728 1.03151 1.03091 1.02366 1.01762 1.0303 1.02064 1.02849 +1.02547 1.02426 1.02547 1.01822 1.02849 1.01279 1.01883 1.0146 +1.02185 1.01762 1.0146 1.02849 1.01883 1.02245 1.03695 1.02306 +1.01339 1.02366 1.01098 1.00916 1.01279 1.01279 1.01822 1.0297 +1.0152 1.00735 1.02668 1.01339 1.01762 1.02608 1.02849 1.01702 +1.01762 1.03151 1.02849 1.02487 1.03151 1.03936 1.02608 0.46956 +0.11438 0.11739 0.13545 0.12943 0.1505 0.15351 0.142473 0.142473 +0.12341 0.121403 0.112373 0.164547 0.855736 1.03332 1.03755 1.03272 +1.02849 1.01943 1.02004 1.02004 1.02064 0.994064 1.01762 1.02426 +1.02004 1.02668 1.03393 1.02849 0.858312 0.46655 0.449493 0.467553 +0.462537 0.458523 0.455513 0.459527 0.46655 0.447487 0.447487 0.540797 +0.956012 1.03151 1.03091 1.02728 1.02668 1.02064 1.02064 1.02004 +1.02608 1.02245 1.02306 1.01762 1.02064 1.0297 1.0297 1.03151 +1.03332 1.04782 1.0593 0.671552 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00401333 0.00401333 0.00100333 0.00301 0 0 +0 0 0 0 0.00501667 0.00401333 0.00100333 0 +0 0.00401333 0 0 0 0.00100333 0.00301 0.00200667 +0.00401333 0 0 0 0 0 0 0 +0 0 0.00602 0.00100333 0 0 0 0 +0.00602 0.00602 0.00401333 0.00100333 0 0.00501667 0.00100333 0.00301 +0.00802667 0.00802667 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00702333 +0 0 0 0 0 0 0 0 +0 0 0 0.416383 1.04661 1.04601 1.03212 1.03151 +1.0297 1.02185 1.02366 1.02547 1.01822 1.02004 1.02185 1.02306 +1.01218 1.02245 1.02366 1.01702 1.02185 1.02668 1.02004 1.02849 +1.01702 0.938496 0.744968 0.652232 0.616168 0.665112 0.817096 0.977152 +1.03272 1.03332 1.03332 1.02608 1.03151 1.02185 1.02608 1.01822 +1.02668 1.01822 1.01702 1.02004 1.01822 1.02728 1.02245 1.02124 +1.02487 1.02366 1.03151 1.03272 1.03997 1.014 0.895664 0.644504 +0.545813 0.534777 0.658672 0.932456 1.0152 1.03816 1.04359 1.03151 +1.02608 1.02668 1.02668 1.02245 1.02426 1.02608 1.0146 1.014 +1.0146 1.02124 1.02487 1.02608 1.02124 1.03091 1.02064 1.01218 +1.01822 1.02366 1.02608 1.01702 1.01762 1.01762 1.0152 1.02608 +1.02185 1.01581 1.02728 1.02185 1.02124 1.01702 1.01883 1.01158 +1.0146 1.02004 1.01641 1.02668 1.02668 1.02366 1.02245 1.02366 +1.01339 1.02185 1.02668 1.02668 1.03634 1.03151 1.03634 0.988024 +0.386283 0.121403 0.11137 0.1204 0.125417 0.12943 0.116387 0.122407 +0.12943 0.106353 0.173577 0.68572 1.04178 1.03514 1.02366 1.02547 +1.02004 1.02366 1.0291 1.0297 1.01641 0.991648 1.02064 1.01581 +1.02487 1.02366 1.03332 1.03151 1.04057 0.896952 0.51471 0.470563 +0.468557 0.456517 0.450497 0.441467 0.437453 0.473573 0.643216 0.96628 +1.01943 1.02487 1.02004 1.01702 1.02487 1.02426 1.01702 1.01762 +1.01581 1.02124 1.02608 1.02306 1.02608 1.02728 1.03091 1.03332 +1.03816 1.04782 1.05809 0.581933 0 0 0 0 +0 0 0 0 0 0.00702333 0 0.00401333 +0.00501667 0.00301 0 0 0 0 0 0.00401333 +0.00401333 0.00602 0.00301 0 0 0 0.00501667 0.00702333 +0.00200667 0 0 0.00301 0.00903 0.00602 0.00602 0 +0 0 0 0 0 0 0.00301 0.00200667 +0 0 0 0 0.00401333 0.0100333 0.00702333 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0.00903 0 0 0 0 +0 0 0 0.00301 0 0 0 0 +0 0 0.00301 0.00501667 0 0 0 0 +0 0 0 0.365213 1.04903 1.05024 1.04238 1.03755 +1.03091 1.02849 1.02789 1.02487 1.01883 1.01883 1.02064 1.02064 +1.02487 1.02064 1.01883 1.02245 1.02004 1.03151 1.02849 1.0291 +1.02728 1.02668 1.03755 1.02789 1.02366 1.02668 1.03091 1.03514 +1.02668 1.02306 1.02789 1.0152 1.02608 1.01702 1.01883 1.0297 +1.02064 1.02245 1.02366 1.02245 1.02426 1.01762 1.01822 1.02185 +1.02185 1.03091 1.03091 1.03151 1.0454 1.03936 1.03574 1.04963 +1.04118 1.03634 1.03695 1.04238 1.04238 1.03212 1.03212 1.02849 +1.0291 1.0297 1.01943 1.02789 1.02004 1.01098 1.0146 1.02245 +1.02668 1.02306 1.02306 1.02306 1.02426 1.01762 1.00614 1.02728 +1.01279 1.02306 1.02366 1.02608 1.02004 1.01279 1.01883 1.01279 +1.01883 1.02064 1.02849 1.02789 1.01822 1.02245 1.01762 1.02789 +1.02547 1.02366 1.02064 1.01822 1.02426 1.02668 1.01943 1.02366 +1.01822 1.01702 1.02668 1.02366 1.04299 1.02487 1.03514 1.05144 +0.997084 0.540797 0.182607 0.113377 0.09933 0.112373 0.134447 0.1204 +0.128427 0.305013 0.799064 1.02728 1.03393 1.0297 1.02245 1.02728 +1.02245 1.02064 1.01581 1.02245 1.02728 0.9995 1.02547 1.02668 +1.02426 1.02004 1.0303 1.02849 1.03151 1.03755 1.00192 0.84028 +0.600997 0.504677 0.500663 0.552837 0.693448 0.931248 1.02124 1.03272 +1.02668 1.0297 1.02426 1.0291 1.02668 1.02366 1.02245 1.01883 +1.01762 1.02366 1.02124 1.01883 1.02789 1.0303 1.03574 1.0297 +1.04238 1.04601 1.05567 0.50267 0 0 0 0 +0 0 0 0 0.00100333 0 0.00301 0.00100333 +0 0 0 0 0 0.0130433 0.0140467 0.00903 +0.00702333 0.00100333 0 0.00802667 0.00903 0.00301 0 0 +0.00602 0.00903 0.00501667 0 0 0 0 0 +0.00602 0.00802667 0 0 0 0 0 0.00301 +0.00301 0.00702333 0.00702333 0.00401333 0 0 0 0 +0 0.00100333 0 0 0 0.00501667 0.00401333 0 +0 0 0 0 0 0.0110367 0.01806 0.00802667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.299997 1.04661 1.04359 1.03393 1.03212 +1.0297 1.02426 1.02004 1.0146 1.02124 1.02004 1.01943 1.02064 +1.01581 1.02124 1.02426 1.02547 1.02064 1.02185 1.01943 1.02668 +1.02668 1.03332 1.02487 1.0291 1.02426 1.03272 1.02426 1.02487 +1.02849 1.02366 1.03091 1.02668 1.03212 1.00856 1.02064 1.02668 +1.02124 1.02245 1.02245 1.02064 1.0297 1.01943 1.01581 1.02668 +1.02487 1.02306 1.02487 1.02728 1.01943 1.03755 1.03212 1.03876 +1.03212 1.02668 1.0303 1.03695 1.03997 1.0303 1.02849 1.02728 +1.02668 1.02789 1.0297 1.0297 1.02064 1.0146 1.03151 1.01822 +1.0152 1.02547 1.01702 1.01218 1.01883 1.01883 1.03091 1.02547 +1.01822 1.01339 1.02728 1.0291 1.02487 0.998896 1.01702 1.02185 +1.0152 1.02004 1.01822 1.01762 1.02547 1.01883 1.01641 1.02789 +1.01762 1.02547 1.02124 1.02185 1.01943 1.02124 1.02728 1.01883 +1.02668 1.01702 1.02064 1.02245 1.02366 1.02547 1.03695 1.03453 +1.0448 1.0297 0.928832 0.584943 0.39732 0.309027 0.336117 0.459527 +0.742392 0.989836 1.03997 1.03936 1.0291 1.02366 1.01762 1.03332 +1.03393 1.02426 1.02728 1.01822 1.00916 1.00373 1.02064 1.01883 +1.0297 1.02487 1.01822 1.02849 1.03332 1.03272 1.03272 1.02668 +1.01339 1.00735 1.0001 1.01883 1.03091 1.02426 1.0297 1.02547 +1.02366 1.02124 1.01883 1.00977 1.01702 1.0146 1.02185 1.02728 +1.02185 1.02306 1.02789 1.02487 1.01702 1.02124 1.02487 1.02849 +1.03332 1.03695 1.05024 0.417387 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00301 0 0 0 0 0 +0 0 0 0 0 0.00301 0 0 +0 0 0.00200667 0.00401333 0.00602 0.00702333 0.00301 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0 0 0.00100333 0.00401333 0.00301 0 0 0.00301 +0.00501667 0.00200667 0.00100333 0.00501667 0.00200667 0 0 0.00200667 +0.00802667 0.00602 0 0 0.00401333 0.00702333 0 0.00200667 +0.00100333 0 0 0.00200667 0.00200667 0 0 0 +0 0 0 0.24381 1.03332 1.0448 1.04299 1.03393 +1.02064 1.01943 1.02547 1.01822 1.01822 1.02124 1.02366 1.01762 +1.01762 1.02426 1.02124 1.01822 1.02547 1.02366 1.02124 1.02004 +1.02608 1.01943 1.0297 1.02668 1.02728 1.02547 1.02849 1.02789 +1.02366 1.02366 1.02789 1.02487 1.0152 1.02185 1.02728 1.01218 +1.01641 1.00735 1.0146 1.02004 1.02547 1.02487 1.02547 1.02004 +1.02366 1.03212 1.02608 1.02245 1.0291 1.01822 1.02306 1.0303 +1.03091 1.02728 1.03151 1.02547 1.02426 1.01822 1.02668 1.03332 +1.02245 1.014 1.02608 1.0146 1.0146 1.02185 1.0146 1.02668 +1.01822 1.02004 1.02306 1.014 1.00977 1.01883 1.0146 1.02064 +1.02245 1.02124 1.02668 1.01581 1.01339 1.02245 1.01218 1.02124 +1.02608 1.014 1.01158 1.01641 1.0297 1.0146 1.01641 1.01581 +1.02245 1.01883 1.02728 1.02728 1.00856 1.01158 1.01943 1.02124 +1.02366 1.02004 1.02004 1.0152 1.02849 1.03816 1.02728 1.02668 +1.03634 1.03755 1.0454 1.03393 1.02366 1.01641 1.02124 1.03997 +1.03514 1.03514 1.03091 1.0297 1.02185 1.02064 1.01762 1.01943 +1.02185 1.01158 1.02608 1.02608 1.00614 1.00735 1.02487 1.02124 +1.0146 1.0146 1.01883 1.01158 1.02366 1.01641 1.01943 1.03393 +1.03212 1.04057 1.0297 1.02306 1.02004 1.02185 1.03091 1.02185 +1.01581 1.0146 1.01158 1.02064 1.02547 1.02487 1.01581 1.02124 +1.01702 1.01943 1.02728 1.02124 1.02306 1.02668 1.02789 1.03212 +1.03936 1.04842 1.04359 0.321067 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0.00200667 0.0100333 0.0130433 0.00602 0 0 0 +0 0.00903 0.00501667 0.00200667 0 0 0.00702333 0.00903 +0.0100333 0.00200667 0 0 0 0 0 0 +0 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.0100333 0.00802667 0 +0 0.00401333 0.00802667 0.00501667 0.00100333 0.00100333 0 0 +0 0 0.00301 0.00401333 0.00301 0.00301 0.00802667 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0.1806 1.02849 1.05205 1.04359 1.03272 +1.03091 1.0297 1.02608 1.02849 1.02789 1.02064 1.02124 1.02608 +1.02789 1.02608 1.02849 1.02185 1.02124 1.02004 1.01581 1.014 +1.02124 1.01641 1.02245 1.01762 1.02245 1.02245 1.02608 1.02789 +1.02547 1.02668 1.0146 1.01339 1.02004 1.01883 1.00675 1.02004 +1.01943 1.02004 1.02185 1.03151 1.02789 1.02608 1.02487 1.02728 +1.02306 1.02608 1.0146 1.01339 1.03393 1.0291 1.02668 1.02487 +1.02004 1.02124 1.02366 1.02306 1.0291 1.02306 1.02668 1.01702 +1.03393 1.02668 1.01702 1.014 1.01702 1.01943 1.02547 1.02245 +1.01641 1.02064 1.02366 1.01641 1.00977 1.01279 1.0146 1.02487 +1.01581 1.02789 1.02064 1.00554 1.02004 1.02547 1.01641 1.01098 +1.01098 1.02064 1.01098 1.0152 1.00856 1.01702 1.0146 1.01037 +1.014 1.02608 1.01098 1.0146 1.02547 1.0146 1.01037 1.02124 +1.01098 1.01581 1.02789 1.02064 1.01822 1.01581 1.02849 1.02849 +1.02849 1.02064 1.03151 1.03332 1.03816 1.03514 1.03574 1.03212 +1.03514 1.03393 1.0291 1.02124 1.02487 1.02245 1.02306 1.02487 +1.02487 1.0146 1.02789 1.02426 0.988628 1.014 1.02004 1.03272 +1.02608 1.03272 1.02426 1.02245 1.02064 1.02668 1.0297 1.03514 +1.02245 1.02849 1.0297 1.03634 1.03393 1.02608 1.01943 1.01641 +1.02366 1.02668 1.02426 1.01943 1.01581 1.02004 1.02004 1.01218 +1.01581 1.02547 1.02668 1.02547 1.02608 1.02426 1.03272 1.03272 +1.04661 1.04963 1.0303 0.22876 0 0 0 0 +0 0 0 0 0 0.00200667 0.00903 0.00702333 +0.00100333 0 0 0 0 0.0110367 0.0220733 0.0250833 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00501667 0.00301 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.00501667 0.00602 0.00602 0.00602 0.00903 +0.00702333 0.00100333 0.00100333 0.00100333 0 0 0.00100333 0.00602 +0.00401333 0.00200667 0 0 0 0.00301 0.00200667 0 +0 0.00602 0.00602 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.127423 1.00433 1.05205 1.04118 1.03816 +1.03936 1.03272 1.02608 1.02124 1.02185 1.02124 1.01581 1.01702 +1.02124 1.01641 1.01279 1.0146 1.02245 1.02426 1.01641 1.01702 +1.02849 1.02064 1.02064 1.02185 1.01883 1.02366 1.02547 1.01883 +1.02004 1.02185 1.01883 1.02366 1.01883 1.0146 1.01641 1.01581 +1.01218 1.01822 1.014 1.01641 1.02426 1.01339 1.01339 1.02124 +1.02728 1.02245 1.02789 1.03332 1.0297 1.01883 1.02487 1.02004 +1.02487 1.03332 1.01883 1.01702 1.01339 1.0291 1.02245 1.02245 +1.02728 1.01762 1.0146 1.01762 1.02004 1.02668 1.02064 1.02547 +1.02547 1.01702 1.01943 1.02185 1.02366 1.01581 1.02004 1.02185 +1.0152 1.00675 1.02064 1.02608 1.01762 1.01943 1.01641 1.02064 +1.02728 1.01822 1.01641 1.0152 1.02124 1.0303 1.02789 1.02849 +1.0291 1.01822 1.0297 1.0146 1.02306 1.02124 1.01943 1.01218 +1.0146 1.01581 1.0146 1.02124 1.02245 1.02004 1.02366 1.02608 +1.02185 1.04057 1.03997 1.03332 1.0291 1.02608 1.02728 1.02849 +1.02668 1.01822 1.02124 1.02245 1.02306 1.02426 1.02789 1.02245 +1.02487 1.02426 1.0303 1.00977 0.997084 1.02185 1.0146 1.01822 +1.0152 1.02004 1.03574 1.02668 1.02728 1.0297 1.02487 1.02185 +1.02426 1.02426 1.01822 1.02547 1.01943 1.0303 1.02004 1.02124 +1.01762 1.01943 1.0152 1.02426 1.02547 1.02366 1.01702 1.03151 +1.02728 1.02185 1.02124 1.02366 1.01943 1.02849 1.02849 1.03332 +1.03997 1.04903 1.00675 0.143477 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0.00802667 0.00602 0 0 0 0 +0 0.00200667 0.00501667 0.00702333 0.00702333 0 0 0.00200667 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0 0.00100333 0 0 +0 0 0 0 0 0 0 0.00602 +0.00802667 0.00301 0 0 0 0.00301 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0672233 0.965072 1.05265 1.0442 1.03393 +1.02668 1.02064 1.02185 1.02004 1.02487 1.02426 1.02004 1.02789 +1.02547 1.02185 1.02124 1.02124 1.01822 1.02245 1.02849 1.02004 +1.00977 1.01762 1.02306 1.01762 1.02608 1.01822 1.01037 1.02124 +1.02849 1.02064 1.02185 1.02608 1.02728 1.0146 1.02366 1.0291 +1.01581 1.02728 1.02004 1.01581 1.01098 1.02426 1.02306 1.01822 +1.01158 1.02124 1.01883 1.01158 1.02547 1.02849 1.02366 1.02426 +1.02004 1.02668 1.02185 1.02245 1.02608 1.02487 1.03091 1.02849 +1.03634 1.03876 1.04238 1.03514 1.02487 1.02306 1.02366 1.00977 +1.02668 1.02124 1.00554 1.02004 1.0297 1.02789 1.02789 1.01037 +1.01943 1.02306 1.0291 1.02547 1.0297 1.01641 1.01581 1.02728 +1.01822 1.02487 1.02306 1.02608 1.01762 1.02004 1.02789 1.01641 +1.01883 1.01279 1.01098 1.02668 1.02547 1.01641 1.01762 1.01702 +1.02245 1.01762 1.02064 1.02426 1.03091 1.02004 1.03634 1.03272 +1.02306 1.03997 1.01883 1.01641 1.02004 1.01762 1.01702 1.02547 +1.02608 1.02124 1.02366 1.02789 1.0297 1.02124 1.02124 1.01762 +1.03091 1.02004 1.02004 1.0001 1.00252 1.0291 1.02245 1.02124 +1.01883 1.01883 1.014 1.02004 1.0152 1.01098 1.01943 1.02306 +1.01883 1.01822 1.01822 1.01339 1.01218 1.01883 1.02547 1.02185 +1.02366 1.01943 1.02004 1.02185 1.02245 1.02366 1.02789 1.02124 +1.01762 1.01883 1.02306 1.02426 1.02849 1.03212 1.02728 1.03151 +1.03997 1.05446 0.976548 0.0762533 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00702333 0.01204 0.00401333 0 0 0 0 0 +0 0 0 0 0.00301 0.00401333 0.00802667 0.0110367 +0.00802667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00401333 0.00100333 0 +0 0 0.00100333 0 0 0.00301 0.00401333 0.00301 +0 0 0.00100333 0 0.00100333 0.00501667 0 0 +0 0 0 0.00200667 0.00802667 0.00200667 0 0 +0.00100333 0.00100333 0 0 0 0 0 0 +0 0 0 0.02709 0.916272 1.05024 1.03816 1.02547 +1.02185 1.02064 1.02245 1.02004 1.01339 1.01822 1.01943 1.02124 +1.02245 1.01943 1.02004 1.02064 1.02004 1.01581 1.01702 1.02185 +1.02547 1.02487 1.01762 1.02608 1.02366 1.02487 1.02547 1.02608 +1.02487 1.01822 1.01822 1.01822 1.0146 1.0146 1.0146 1.01581 +1.0146 1.02487 1.02366 1.00735 1.01641 1.02064 1.03151 1.01883 +1.01218 1.01702 1.02064 1.02608 1.01218 1.01581 1.02366 1.01762 +1.01822 1.01822 1.01641 1.01883 1.02185 1.02487 1.04601 1.05265 +1.05748 1.04118 1.05024 1.05024 1.05326 1.0291 1.01279 1.01641 +1.02185 1.01339 1.01822 1.02124 1.01581 1.01702 1.01822 1.02487 +1.02124 1.01883 1.0146 1.02487 1.01943 1.02426 1.01702 1.02487 +1.02849 1.00373 1.01702 1.02728 1.02608 1.01339 1.01883 1.02728 +1.0152 1.02185 1.01098 1.01943 1.0297 1.02004 1.02004 1.02185 +1.03151 1.03514 1.02547 1.02487 1.02487 1.0152 1.02004 1.00735 +1.01943 1.02668 1.02728 1.02064 1.02004 1.02789 1.02668 1.02426 +1.02185 1.03332 1.01822 1.02426 1.02124 1.02668 1.02124 1.02004 +1.02668 1.02306 1.0291 0.989836 1.014 1.01883 1.01702 1.01822 +1.02185 1.01762 1.02185 1.02124 1.0146 1.02366 1.01218 1.0146 +1.01943 1.01762 1.01762 1.02124 1.0297 1.0303 1.02487 1.02124 +1.03091 1.01883 1.02728 1.01883 1.01822 1.02185 1.02789 1.02124 +1.02004 1.01762 1.02366 1.02306 1.02487 1.02487 1.0291 1.0291 +1.0454 1.05567 0.884072 0.0170567 0 0 0 0 +0.00100333 0 0.00100333 0 0 0.00301 0.00501667 0.00200667 +0 0 0 0 0.00301 0.00802667 0.00200667 0 +0 0 0.00200667 0.00301 0 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.00301 0 0 0 0 0 0 +0.00200667 0 0 0.00401333 0.00301 0.00100333 0 0 +0.00301 0.00200667 0.00301 0.00401333 0.00301 0 0 0.00100333 +0 0 0 0 0 0.00301 0.00401333 0.00602 +0.00301 0 0 0 0.00501667 0 0 0 +0 0 0 0 0.784896 1.05869 1.04903 1.0454 +1.04178 1.03453 1.02124 1.02245 1.0291 1.0291 1.02185 1.0152 +1.01822 1.02124 1.01883 1.01762 1.02124 1.01943 1.01822 1.02668 +1.01883 1.01218 1.01702 1.02064 1.02124 1.01581 1.014 1.02547 +1.02124 1.02366 1.02728 1.02547 1.02306 1.01943 1.02608 1.02547 +1.02728 1.0303 1.02245 1.00856 1.03453 1.01702 1.00675 1.01098 +1.02789 1.01943 1.02185 1.02487 1.01943 1.02064 1.014 1.02547 +1.02124 1.01822 1.0303 1.02426 1.05386 1.06715 1.0593 1.0593 +1.05628 1.05326 1.05386 1.05869 1.05386 1.05265 1.0448 1.01339 +1.02004 1.01762 1.01158 1.01883 1.02426 1.02608 1.02728 1.01339 +1.01218 1.02547 1.02004 1.01158 1.01339 1.02789 1.01883 1.02064 +1.00916 1.01581 1.0146 1.01822 1.01762 1.01822 1.01641 1.01641 +1.02728 1.01158 1.01702 1.02306 1.0152 1.02668 1.02245 1.02245 +1.02547 1.04661 1.04118 1.05507 1.05205 1.04842 1.04299 1.0297 +1.02185 1.01762 1.02245 1.03453 1.03151 1.02728 1.02245 1.02185 +1.02366 1.02608 1.02426 1.02124 1.02608 1.02064 1.02306 1.02124 +1.02547 1.02426 1.02185 0.980172 1.02608 1.02245 1.01702 1.01641 +1.03272 1.01943 1.02849 1.02426 1.02366 1.01822 1.02064 1.02366 +1.02185 1.02366 1.01218 1.01641 1.01641 1.01641 1.0152 1.01702 +1.00916 1.01218 1.0152 1.02004 1.02064 1.00977 1.0146 1.02124 +1.02245 1.0152 1.02306 1.0146 1.02245 1.02487 1.03695 1.04178 +1.04057 1.05205 0.725648 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0 0 0 0 0.00301 0.00100333 0.00200667 0 +0.00702333 0.00401333 0 0 0 0 0 0.0100333 +0.0110367 0.00702333 0.00501667 0.00501667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0 0 0 0 0 +0 0 0 0.00100333 0 0 0 0 +0.00401333 0.00702333 0.00401333 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.623896 1.06171 1.04359 1.03695 +1.0303 1.03212 1.03393 1.03091 1.02426 1.02185 1.02306 1.01762 +1.01822 1.02245 1.02245 1.01883 1.0152 1.02064 1.02728 1.01702 +1.02366 1.02004 1.02366 1.02366 1.01158 1.02245 1.02124 1.01279 +1.02245 1.02245 1.02426 1.02789 1.03272 1.03755 1.0303 1.02366 +1.02185 1.02366 1.0303 1.00554 1.0001 1.02366 1.02608 1.02487 +1.02366 1.02185 1.02306 1.02064 1.02426 1.01641 1.02064 1.01702 +1.01883 1.00554 1.02004 1.04601 1.06594 1.05205 1.05748 1.05024 +1.0448 1.04782 1.04903 1.05205 1.05084 1.05265 1.05567 1.0291 +1.01339 1.0152 1.02185 1.01581 1.0152 1.02124 1.02004 1.01762 +1.0291 1.0146 1.0146 1.02064 1.01098 1.02547 1.0146 1.02366 +1.02366 1.02547 1.0146 1.02547 1.01641 1.02004 1.014 1.01822 +1.02668 1.0146 1.02608 1.02245 1.01641 1.01762 1.01218 1.02487 +1.0442 1.05205 1.0605 1.05205 1.04963 1.06111 1.05265 1.05446 +1.04118 1.0146 1.02728 1.02487 1.01822 1.01943 1.01641 1.01822 +1.02004 1.01883 1.01641 1.02185 1.014 1.02064 1.01581 1.01822 +1.0146 1.01822 0.995272 0.99346 1.02547 1.02608 1.02185 1.0152 +1.02245 1.0146 1.01641 1.01581 1.0152 1.02608 1.02426 1.02064 +1.0146 1.01581 1.01943 1.03091 1.02487 1.01762 1.02306 1.02064 +1.03151 1.02124 1.02004 1.02004 1.01943 1.02004 1.02366 1.02245 +1.02185 1.01883 1.02004 1.02789 1.0291 1.02789 1.0303 1.03997 +1.04903 1.05688 0.537787 0 0 0 0 0 +0 0 0 0 0 0 0 0.0110367 +0.00602 0.00401333 0.00200667 0.00100333 0.00100333 0 0 0 +0 0 0.00200667 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0.00401333 +0.00802667 0.00401333 0.00100333 0.00200667 0.00903 0.0110367 0.00401333 0 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00602 0.00200667 0 0 0 0.00301 0 +0 0 0 0 0.450497 1.04782 1.04601 1.03876 +1.03634 1.0297 1.02849 1.02608 1.02245 1.01943 1.02366 1.02306 +1.02004 1.02487 1.02004 1.02426 1.02487 1.02064 1.02064 1.02064 +1.01943 1.01943 1.02366 1.0146 1.01702 1.01581 1.02064 1.01883 +1.01822 1.014 1.02004 1.02547 1.01339 1.01702 1.01037 1.00614 +1.01339 1.01883 1.02366 1.01339 0.991648 1.02728 1.01158 1.02245 +1.02668 1.03091 1.02306 1.02185 1.02004 1.01641 1.01702 1.02487 +1.01762 1.0146 1.03816 1.05265 1.04601 1.06292 1.05144 1.05567 +1.05265 1.05265 1.05446 1.05265 1.05446 1.05748 1.04661 1.04842 +1.02426 1.02426 1.01339 1.03574 1.01158 1.014 1.0146 1.02185 +1.01762 1.03212 1.0152 1.01822 1.02426 1.01943 1.01158 1.014 +1.02245 1.0152 1.02366 1.02245 1.01581 1.01702 1.02547 1.02668 +1.00916 1.02004 1.01581 1.02668 1.01883 1.02608 1.02608 1.05567 +1.06111 1.05446 1.05024 1.05628 1.0454 1.04661 1.05446 1.05326 +1.04782 1.03574 1.02004 1.01279 1.014 1.01883 1.02487 1.02185 +1.03091 1.02004 1.02124 1.0152 1.01822 1.02728 1.01702 1.01883 +1.01581 1.02547 0.977152 1.01581 1.01943 1.01822 1.02547 1.02487 +1.02366 1.01883 1.01098 1.01762 1.02004 1.02185 1.01702 1.01339 +1.02728 1.02608 1.02728 1.02608 1.02004 1.01943 1.01581 1.01762 +1.01218 1.014 1.01943 1.01037 1.01822 1.02245 1.02306 1.01883 +1.02064 1.01943 1.02306 1.02245 1.02185 1.0297 1.03936 1.04057 +1.0454 1.04722 0.37023 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0 0 0 0 0 0 0.00100333 +0.00200667 0 0 0 0 0 0.00301 0.00602 +0.00401333 0 0 0.00100333 0.00802667 0.00903 0.0110367 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00301 0.00401333 0.00602 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00501667 0.00501667 0.00802667 0.00401333 0.00702333 0.00802667 +0.00501667 0.00401333 0.00602 0.00501667 0.0100333 0.0110367 0.00802667 0.00802667 +0.00602 0 0 0 0 0 0 0 +0 0 0 0 0.312037 1.04903 1.05205 1.03997 +1.03574 1.0297 1.0297 1.02366 1.02124 1.02547 1.01943 1.02185 +1.02487 1.02487 1.014 1.01822 1.02124 1.02245 1.02426 1.01702 +1.01822 1.0146 1.02004 1.02306 1.02185 1.02245 1.02245 1.02245 +1.03695 1.02185 1.01581 1.0152 1.02306 1.0152 1.0146 1.01762 +1.01218 1.01279 1.0146 1.01641 0.974736 1.01279 1.02487 1.01883 +1.01279 1.01702 1.02124 1.02366 1.0146 1.02426 1.0152 1.00675 +1.01822 1.02366 1.05205 1.04722 1.04782 1.05265 1.04842 1.05084 +1.05809 1.05024 1.05386 1.05688 1.05567 1.05688 1.05144 1.05567 +1.03272 1.02487 1.0291 1.00977 1.02185 1.02487 1.02004 1.01822 +1.01883 1.02245 1.01581 1.02245 1.02124 1.00977 1.01158 1.02728 +1.02185 1.03514 1.02124 1.02004 1.02306 1.01883 1.01883 1.02124 +1.02004 1.02487 1.01641 1.02124 1.014 1.0303 1.05024 1.05024 +1.04782 1.04782 1.05628 1.04178 1.05084 1.0599 1.05084 1.05205 +1.05144 1.05326 1.0442 1.02064 1.02849 1.01822 1.02124 1.02366 +1.01943 1.02124 1.02668 1.02426 1.02245 1.03091 1.01943 1.02426 +1.02245 1.01098 0.983796 1.02185 1.02668 1.0152 1.02064 1.02426 +1.02306 1.02245 1.02004 1.01702 1.01943 1.02426 1.01883 1.0152 +1.01581 1.02004 1.02064 1.02306 1.02728 1.02547 1.02366 1.01762 +1.02185 1.0291 1.0297 1.0303 1.03393 1.0146 1.02185 1.01943 +1.02547 1.02547 1.03393 1.02789 1.03272 1.03634 1.03695 1.04722 +1.05446 1.02668 0.202673 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00702333 0.0100333 0.00301 0.00602 0.00602 +0.00602 0.00903 0.00401333 0 0.00301 0 0 0 +0 0.00702333 0.01204 0.00702333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0.00401333 0.00200667 0 0 0 0 +0 0 0 0 0.00200667 0.00501667 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.16555 1.0146 1.05205 1.03997 +1.03212 1.03212 1.02789 1.02608 1.02124 1.01702 1.0146 1.01581 +1.0146 1.01762 1.00735 1.01641 1.01581 1.01702 1.01943 1.01339 +1.01702 1.014 1.02064 1.0152 1.01641 1.014 1.01641 1.00916 +1.00916 1.02245 1.01943 1.01158 1.02185 1.01279 1.01702 1.03574 +1.02547 1.02789 1.03212 1.01883 0.9995 0.998292 1.02185 1.0152 +1.0291 1.0291 1.02849 1.0291 1.0291 1.02608 1.02789 1.02124 +1.02306 1.03997 1.04963 1.05386 1.06292 1.05205 1.05869 1.04722 +1.0448 1.05326 1.05024 1.05326 1.05084 1.05205 1.04661 1.04903 +1.04903 1.02366 1.01762 1.0146 1.02366 1.01339 1.02064 1.02487 +1.01943 1.01641 1.0146 1.02547 1.01943 1.02426 1.01943 1.02728 +1.0152 1.01883 1.01702 1.02124 1.02849 1.02849 1.02306 1.02064 +1.01762 1.02306 1.01762 1.0291 1.01339 1.03816 1.05567 1.06654 +1.05507 1.04963 1.05628 1.06111 1.05144 1.05869 1.05507 1.04903 +1.04238 1.04238 1.04299 1.0146 1.01581 1.02185 1.01762 1.01883 +1.01822 1.02728 1.0291 1.02185 1.02004 1.02366 1.02849 1.02245 +1.02004 0.991648 1.00675 1.02426 1.0146 1.02004 1.014 1.01641 +1.014 1.02004 1.02366 1.02245 1.01762 1.01702 1.02789 1.01762 +1.01943 1.01218 1.00494 1.02004 1.0152 1.01218 1.01883 1.02245 +1.01641 1.02064 1.02004 1.01581 1.02245 1.02064 1.01883 1.01883 +1.01581 1.01218 1.01158 1.02004 1.02366 1.02547 1.03091 1.03755 +1.04963 0.968696 0.07224 0 0 0 0 0 +0 0 0 0 0 0.0110367 0.00602 0.00501667 +0.00501667 0.00401333 0.00702333 0 0 0.00100333 0 0 +0 0 0.00301 0.00401333 0 0 0.00702333 0.00501667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00200667 0 0 0 0 0 0 +0.00501667 0.00501667 0.00602 0.00501667 0 0 0 0 +0 0.00100333 0.00501667 0 0 0 0 0 +0.00301 0.00100333 0.00100333 0 0 0 0 0 +0 0 0 0 0.05418 0.956616 1.05628 1.04178 +1.03332 1.03272 1.0297 1.02608 1.02608 1.02366 1.02306 1.02306 +1.02366 1.02487 1.02306 1.02366 1.02185 1.0152 1.02245 1.02004 +1.02306 1.02064 1.02245 1.02487 1.02426 1.02064 1.02608 1.02728 +1.02124 1.01641 1.02487 1.02487 1.01883 1.02124 1.02789 1.02306 +1.02608 1.02004 1.02064 1.02547 1.02185 0.988024 1.01218 1.02306 +1.01883 1.01822 1.0297 1.0146 1.01883 1.01641 1.01581 1.01943 +1.01641 1.02245 1.04842 1.04903 1.04842 1.04722 1.04601 1.04903 +1.05688 1.04842 1.05567 1.04722 1.04118 1.04842 1.0599 1.06111 +1.05084 1.02124 1.01702 1.0146 1.00977 1.02668 1.02487 1.01641 +1.02124 1.02185 1.01702 1.01641 1.02487 1.02849 1.01098 1.01641 +1.014 1.0146 1.02185 1.0303 1.02185 1.02306 1.02185 1.03091 +1.02185 1.01581 1.01822 1.01098 1.02306 1.04118 1.05024 1.05024 +1.05628 1.04782 1.03936 1.04903 1.05386 1.04842 1.04842 1.05265 +1.04963 1.05507 1.05205 1.03936 1.00916 1.01943 1.01641 1.02004 +1.02004 1.01702 1.02064 1.02426 1.02487 1.02668 1.01883 1.03332 +1.01822 0.998292 1.02608 1.0303 1.0297 1.02789 1.01581 1.01279 +1.01883 1.02124 1.01702 1.02426 1.014 1.0146 1.02004 1.03091 +1.01702 1.02185 1.0146 1.02004 1.0146 1.02124 1.02064 1.0146 +1.01098 1.01702 1.01883 1.01883 1.02426 1.02306 1.01762 1.02124 +1.02789 1.02849 1.02668 1.02306 1.0291 1.03091 1.03514 1.04661 +1.05205 0.810656 0 0 0 0 0 0 +0.00301 0 0.00100333 0.0130433 0.0110367 0.00501667 0 0 +0.00100333 0 0.00200667 0.00200667 0 0 0.00401333 0.00301 +0 0.00401333 0.00200667 0 0 0 0 0 +0 0 0.00100333 0 0 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00200667 0 0 0 +0 0 0 0 0.00301 0.00200667 0 0.00100333 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.792624 1.05809 1.0448 +1.0303 1.03332 1.02245 1.02185 1.02185 1.02306 1.02306 1.02185 +1.02487 1.01943 1.01762 1.0146 1.01822 1.01641 1.01641 1.02064 +1.02487 1.01943 1.02185 1.01762 1.01339 1.02064 1.02487 1.01098 +1.01762 1.0146 1.02306 1.02608 1.02426 1.01762 1.014 1.01581 +1.01037 1.02004 1.02245 1.02426 1.01702 0.998292 1.00675 1.02306 +1.02487 1.01883 1.0152 1.02124 1.02245 1.01037 1.02064 1.03091 +1.02849 1.03634 1.05869 1.05628 1.05567 1.04722 1.0442 1.05205 +1.05507 1.04661 1.04057 1.04238 1.04722 1.0454 1.05628 1.05024 +1.05144 1.02124 1.02789 1.02728 1.02366 1.02245 1.0303 1.02245 +1.01762 1.01762 1.02124 1.01702 1.0152 1.01883 1.0303 1.02849 +1.02306 1.02789 1.02185 1.01702 1.02004 1.01762 1.02245 1.01762 +1.01702 1.02668 1.02185 1.02124 1.02849 1.04601 1.05507 1.04359 +1.05024 1.04842 1.05507 1.0448 1.04601 1.05386 1.04178 1.05024 +1.05446 1.05748 1.04963 1.04359 1.01037 1.01762 1.01943 1.01037 +1.02608 1.01943 1.01158 1.0146 1.02306 1.02306 1.01158 1.0146 +0.988024 1.00675 1.02245 1.02185 1.0152 1.02426 1.0146 1.01822 +1.02185 1.02306 1.01279 1.01581 1.01883 1.01883 1.01098 1.01581 +1.01641 1.02426 1.0303 1.01339 1.014 1.01037 1.0146 1.00977 +1.01641 1.02366 1.01943 1.02064 1.01037 1.014 1.02547 1.02426 +1.01943 1.02306 1.01883 1.02426 1.02728 1.03514 1.04178 1.05144 +1.06292 0.54481 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0 0 0 0.00401333 0.0140467 0.00501667 0 0.00301 +0.00100333 0 0.00100333 0.00301 0.00602 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00501667 0.00802667 0.00602 0.00602 +0.00100333 0.00100333 0 0 0 0 0.00401333 0.00401333 +0 0 0 0.00200667 0 0.00100333 0 0 +0.00200667 0.00200667 0.00501667 0.00501667 0.00301 0.00501667 0.00501667 0.00602 +0.00903 0.0100333 0.00501667 0 0 0 0 0 +0 0 0 0 0 0.52976 1.05809 1.05024 +1.03936 1.03212 1.0291 1.02849 1.02547 1.01883 1.014 1.01943 +1.01822 1.01581 1.02064 1.0152 1.01762 1.014 1.01822 1.02004 +1.01279 1.01158 1.01339 1.014 1.01822 1.014 1.01218 1.01883 +1.01581 1.01702 1.02366 1.02064 1.01883 1.03151 1.02608 1.02185 +1.01883 1.01279 1.01581 1.02245 1.02487 1.0152 0.988024 1.02608 +1.02124 1.01641 1.02306 1.02124 1.02306 1.02306 1.0152 1.02185 +1.02124 1.04118 1.06232 1.0593 1.05446 1.04903 1.0454 1.04782 +1.05507 1.05144 1.06292 1.04722 1.05446 1.05205 1.04722 1.04299 +1.0454 1.02185 1.02366 1.0146 1.02789 1.02004 1.0152 1.01762 +1.01822 1.0291 1.02728 1.0152 1.01883 1.01158 1.00494 1.01581 +1.0152 1.03091 1.0152 1.02608 1.03514 1.02849 1.02608 1.02064 +1.01581 1.02306 1.02487 1.0146 1.01762 1.05326 1.04903 1.04299 +1.04601 1.04963 1.05144 1.05567 1.05386 1.05809 1.0605 1.05265 +1.05628 1.05748 1.0593 1.04903 1.01883 1.02547 1.02185 1.01641 +1.02608 1.02185 1.02185 1.01822 1.02004 1.01702 1.0291 1.02306 +0.992856 1.0146 1.02185 1.02124 1.01822 1.0152 1.014 1.02064 +1.01822 1.02004 1.01943 1.01883 1.01943 1.01883 1.01098 1.014 +1.01943 1.01883 1.01883 1.02849 1.01641 1.02306 1.02668 1.02366 +1.02245 1.01641 1.02004 1.02185 1.02004 1.02185 1.01098 1.02004 +1.02789 1.02306 1.02789 1.02789 1.03091 1.03514 1.03876 1.05084 +1.04057 0.301 0 0 0 0 0 0 +0 0 0 0.00200667 0 0 0 0 +0.00501667 0.0100333 0.00401333 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0.00200667 0.00200667 0.00100333 0 0 0 +0 0.00501667 0.00602 0 0 0 0 0 +0.00301 0.00501667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.292973 1.03936 1.04903 +1.03453 1.02366 1.02849 1.02789 1.02547 1.02487 1.02426 1.02185 +1.02004 1.01641 1.0152 1.01581 1.01702 1.02064 1.02426 1.01883 +1.02004 1.02185 1.01943 1.02245 1.01702 1.01943 1.01581 1.01339 +1.0291 1.02668 1.01098 1.02487 1.02366 1.02004 1.01098 1.01279 +1.01943 1.02366 1.01943 1.02124 1.02306 1.02366 1.00373 1.00494 +1.02064 1.01702 1.00916 1.02426 1.02245 1.01822 1.02789 1.02124 +1.01279 1.01339 1.03695 1.05084 1.04359 1.04963 1.05144 1.0454 +1.05144 1.04903 1.05084 1.05567 1.05748 1.06232 1.05084 1.05567 +1.05144 1.0291 1.01943 1.01943 1.02789 1.01702 1.03091 1.02487 +1.02487 1.02849 1.00796 0.988628 0.968696 0.966884 0.968092 0.969904 +0.971716 1.00131 1.0146 1.02124 1.01762 1.00796 1.02004 1.01641 +1.01641 1.01641 1.02185 1.02366 1.03212 1.04782 1.06352 1.05507 +1.04903 1.04963 1.0454 1.04903 1.05144 1.04661 1.04782 1.04178 +1.04238 1.0454 1.04601 1.03876 1.00735 1.01943 1.01943 1.01762 +1.02608 1.02728 1.02185 1.0152 1.01762 1.02668 1.02426 0.992252 +1.02004 1.03332 1.01822 1.0152 1.01822 1.02004 1.01883 1.01883 +1.00916 1.02004 1.02004 1.00977 1.00614 1.01218 1.02064 1.01279 +1.0146 1.01641 1.01037 1.02124 1.01883 1.01822 1.03091 1.01581 +1.01883 1.01883 1.02306 1.01702 1.01339 1.01943 1.02849 1.02487 +1.0291 1.02728 1.0303 1.03272 1.0297 1.03453 1.04238 1.05748 +0.995272 0.118393 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0.00301 0.0100333 0.00602 0.00401333 0.0110367 0.0100333 +0.01204 0.00903 0.00802667 0.00200667 0.00100333 0.00401333 0.00301 0.00100333 +0.00501667 0.00702333 0.00501667 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00200667 0.00401333 +0.00200667 0 0 0 0.00802667 0.0140467 0.0100333 0.00501667 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0 0 0 +0 0 0 0 0 0.10234 0.98742 1.05507 +1.04601 1.03151 1.03212 1.03453 1.02789 1.02728 1.02728 1.02668 +1.02426 1.03272 1.02849 1.02547 1.02728 1.01943 1.02124 1.02185 +1.02124 1.02306 1.02366 1.02124 1.01822 1.0146 1.02426 1.02004 +1.01581 1.01339 1.01943 1.01943 1.02608 1.01641 1.02064 1.01762 +1.02064 1.02185 1.02185 1.02608 1.01822 1.01762 1.02487 1.01218 +1.01702 1.01581 1.01702 1.01822 1.02366 1.01702 1.02064 1.0303 +1.02487 1.014 1.04299 1.0442 1.05084 1.04722 1.05386 1.0593 +1.05507 1.05265 1.06352 1.0454 1.04722 1.0448 1.04178 1.05567 +1.02124 1.02064 1.02547 1.02004 1.01762 1.01581 1.01943 1.02789 +1.0152 0.968092 0.961448 0.96024 0.971716 0.959032 0.958428 0.970508 +0.962052 0.95722 0.976548 1.02306 1.02547 1.01702 1.02366 1.02547 +1.02547 1.01581 1.02487 1.02185 1.02124 1.05748 1.05326 1.05628 +1.05144 1.06292 1.05628 1.04661 1.04782 1.04903 1.05326 1.05326 +1.05386 1.04118 1.05688 1.0442 1.01762 1.02064 1.02608 1.0146 +1.01762 1.0152 1.0146 1.01883 1.0146 1.02608 1.01037 0.985004 +1.01883 1.02547 1.01158 1.02547 1.01883 1.01762 1.02004 1.01943 +1.02849 1.02124 1.02547 1.02366 1.02426 1.0303 1.02124 1.02185 +1.0146 1.01883 1.02124 1.01702 1.0152 1.01883 1.0146 1.01098 +1.02366 1.01702 1.02185 1.02789 1.0297 1.02064 1.02004 1.01279 +1.01883 1.02124 1.02124 1.02185 1.03091 1.04299 1.04118 1.05205 +0.806792 0.00100333 0 0 0 0 0 0 +0 0.00100333 0 0 0 0 0 0.00301 +0 0 0 0.00301 0.00200667 0 0.00200667 0 +0 0.00100333 0.00501667 0.00200667 0.00301 0.00602 0.00401333 0.00501667 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00200667 0.00501667 +0.00802667 0.0100333 0.00501667 0.00401333 0 0 0 0 +0 0.00200667 0.00602 0 0 0 0 0 +0 0 0 0.00100333 0 0.00100333 0.00401333 0.00501667 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.779744 1.05446 +1.04359 1.03151 1.02366 1.02064 1.01641 1.01883 1.01943 1.02306 +1.02547 1.01641 1.01641 1.01702 1.0152 1.01883 1.01943 1.01702 +1.01581 1.01702 1.01279 1.02366 1.02789 1.02185 1.01581 1.01037 +1.02004 1.01339 1.02004 1.0152 1.01158 1.01339 1.02487 1.01581 +1.02728 1.01762 1.02547 1.02306 1.03091 1.01581 1.02789 1.0146 +1.01883 1.02789 1.02668 1.03091 1.02789 1.02366 1.0291 1.0152 +1.02185 1.02426 1.03151 1.04601 1.05205 1.04963 1.04722 1.03936 +1.04299 1.04661 1.0454 1.05205 1.04722 1.05265 1.05748 1.05507 +1.0291 1.0146 1.01037 1.01943 1.0303 1.02185 1.01098 1.01702 +0.983192 0.971716 0.968696 0.97232 0.965676 0.964468 0.965676 0.973528 +0.973528 0.974736 0.967488 0.977756 1.01943 1.02004 1.02366 1.03332 +1.02185 1.01762 1.01218 1.02124 1.0152 1.04722 1.04842 1.04963 +1.05748 1.05688 1.04601 1.05809 1.06111 1.04842 1.04722 1.05809 +1.05869 1.0599 1.04661 1.01883 1.01218 1.02004 1.03151 1.01943 +1.02004 1.02668 1.01883 1.03091 1.03212 1.02608 0.985004 1.0146 +1.014 1.01883 1.01581 1.01641 1.02245 1.02004 1.02366 1.02306 +1.014 1.01883 1.02608 1.01581 1.01943 1.0297 1.03091 1.0297 +1.02004 1.00796 1.02004 1.0146 1.0146 1.01641 1.02487 1.02064 +1.02064 1.02064 1.02728 1.02245 1.01702 1.01581 1.02064 1.02064 +1.02849 1.02547 1.0297 1.02789 1.03212 1.03695 1.04601 1.05688 +0.474577 0 0 0 0 0 0 0 +0 0 0.00602 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00100333 +0.00401333 0.00301 0 0 0 0 0 0.00602 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00301 0.00501667 0.00903 0.00100333 0 0 +0 0 0 0 0 0 0.431433 1.05024 +1.04238 1.03332 1.02608 1.02789 1.02487 1.02608 1.02306 1.01641 +1.01762 1.02124 1.02064 1.02004 1.01218 1.01218 1.01641 1.02004 +1.01641 1.01702 1.01702 1.01762 1.02185 1.02245 1.02245 1.01883 +1.01762 1.01943 1.02366 1.01762 1.02547 1.02124 1.02004 1.02426 +1.02124 1.02004 1.02004 1.01943 1.014 1.02185 1.02547 1.0297 +1.02366 1.01883 1.02547 1.01943 1.02245 1.01822 1.01762 1.0152 +1.02668 1.02245 1.01641 1.03816 1.0448 1.05084 1.05326 1.0599 +1.06171 1.05144 1.05205 1.04359 1.05386 1.05326 1.05205 1.02849 +1.02728 1.0146 1.03091 1.02426 1.02789 1.02608 1.02728 0.998896 +0.9693 0.962052 0.971112 0.97232 0.967488 0.974132 0.964468 0.965072 +0.961448 0.965072 0.962052 0.96024 0.986816 1.02789 1.02064 1.01883 +1.01883 1.02547 1.03272 1.02064 1.01037 1.02789 1.05205 1.04722 +1.05507 1.05084 1.05205 1.03574 1.04601 1.04842 1.04118 1.04118 +1.05688 1.05446 1.05265 1.01218 1.02306 1.02245 1.02426 1.02728 +1.0152 1.02004 1.01943 1.0291 1.02668 0.995272 0.9995 1.01702 +1.02668 1.01822 1.01339 1.014 1.01158 1.0146 1.01822 1.02306 +1.01883 1.0146 1.02124 1.01822 1.02185 1.01943 1.01037 1.014 +1.00796 1.01581 1.02366 1.02064 1.01581 1.01339 1.01581 1.01943 +1.02004 1.01702 1.01279 1.00977 1.02004 1.01218 1.01218 1.01762 +1.02004 1.02306 1.0297 1.02849 1.04238 1.04722 1.05024 1.0146 +0.18662 0 0 0 0 0 0 0 +0 0 0 0 0 0.00501667 0.00501667 0 +0 0.00100333 0.00401333 0.0140467 0.0140467 0.01505 0.01505 0.00501667 +0.00200667 0 0 0 0 0 0 0.00301 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00301 0.00301 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0.00100333 0 0.00100333 0.00401333 0.00602 0 +0.00301 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0.137457 0.991044 +1.05326 1.03876 1.0291 1.02668 1.0291 1.02849 1.02487 1.02426 +1.02728 1.02064 1.01279 1.02185 1.02547 1.01883 1.02124 1.02185 +1.02124 1.03272 1.03091 1.01883 1.00856 1.01098 1.01883 1.02064 +1.01943 1.02004 1.02608 1.01339 1.01581 1.02185 1.02426 1.02185 +1.0146 1.01581 1.014 1.02064 1.01279 1.02004 1.0146 1.01641 +1.01883 0.994064 1.0146 1.01822 1.02608 1.01762 1.02004 1.01762 +1.01581 1.02124 1.01581 1.01641 1.02668 1.05205 1.06473 1.04359 +1.04842 1.05084 1.04963 1.0605 1.05386 1.04782 1.02547 1.0152 +1.02306 1.0303 1.0297 1.01943 1.02004 1.0146 1.01822 0.977152 +0.96326 0.969904 0.971716 0.962052 0.957824 0.95722 0.962656 0.966884 +0.96326 0.968696 0.965676 0.961448 0.960844 0.998292 1.02124 1.03453 +1.01098 1.01702 1.01339 1.01641 1.02306 1.00796 1.03151 1.04842 +1.05144 1.06292 1.04722 1.05446 1.05205 1.0448 1.05326 1.05326 +1.04963 1.04299 1.0146 1.02849 1.02185 1.01762 1.01641 1.01822 +1.02426 1.02245 1.02608 1.02124 1.00916 0.992856 1.02668 1.02547 +1.0152 1.01098 1.01883 1.02306 1.02366 1.02064 1.0146 1.01037 +1.02124 1.0297 1.02124 1.01702 1.01702 1.014 1.01098 1.02547 +1.03091 1.01762 1.01702 1.02245 1.01883 1.02487 1.02185 1.014 +1.01279 1.01943 1.02124 1.02004 1.02487 1.02426 1.03212 1.02185 +1.02668 1.02728 1.0303 1.02728 1.0291 1.04722 1.05869 0.858312 +0.0220733 0 0 0 0 0.00501667 0 0 +0 0 0 0 0 0 0 0.00301 +0.00401333 0.00100333 0 0 0 0 0 0 +0 0.00100333 0.00200667 0 0 0 0 0 +0.00100333 0.00401333 0.00301 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00802667 0.00903 +0.00501667 0.00200667 0.00200667 0.00501667 0.00802667 0.00602 0.00602 0.00802667 +0.0100333 0.00702333 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00602 0 0 +0 0 0 0 0 0 0 0.738528 +1.05386 1.04722 1.04299 1.0303 1.02306 1.02185 1.02064 1.01702 +1.02124 1.0152 1.02366 1.02245 1.01822 1.00977 1.02064 1.02366 +1.01762 1.0146 1.01098 1.00977 1.01943 1.02185 1.02366 1.01339 +1.01098 1.0152 1.01581 1.0146 1.01943 1.01158 1.01037 1.02004 +1.02789 1.02064 1.014 1.01762 1.01581 1.03574 1.01943 1.03272 +1.02366 1.00433 1.0001 1.014 1.02004 1.00856 1.02366 1.0291 +1.02306 1.02064 1.00977 1.01762 1.01641 1.01943 1.02306 1.03393 +1.05024 1.0448 1.04661 1.03755 1.02608 1.01641 1.01943 1.02426 +1.02245 1.02306 1.01098 1.02789 1.0303 1.03091 0.991044 0.965676 +0.956616 0.970508 0.963864 0.965676 0.967488 0.977756 0.973528 0.973528 +0.962656 0.968696 0.962656 0.94816 0.956012 0.978964 1.01641 1.02185 +1.02728 1.01218 1.0146 1.02849 1.02608 1.0291 1.02426 1.0448 +1.05265 1.06473 1.0593 1.05688 1.04842 1.05024 1.04601 1.0448 +1.04057 1.02487 1.02547 1.01339 1.01158 1.01158 1.02668 1.01581 +1.0152 1.02064 1.02668 1.01581 0.983192 1.014 1.01339 1.01762 +1.02547 1.0152 1.01822 1.02124 1.02004 1.02608 1.02366 1.02004 +1.01883 1.0146 1.01218 1.01822 1.01218 1.01762 1.02366 1.01822 +1.0146 1.01702 1.0152 1.01943 1.01098 1.01822 1.01702 1.02728 +1.01943 1.014 1.02185 1.02004 1.02124 1.01279 1.02366 1.02728 +1.02849 1.02668 1.02668 1.03936 1.04299 1.04722 1.04722 0.4515 +0 0 0 0 0 0 0 0 +0.00401333 0.00100333 0.00501667 0.00401333 0.0100333 0.00702333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00501667 0.00903 0.00200667 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0 0 0.00301 0.00100333 0 +0 0 0 0.00501667 0.0110367 0.00200667 0 0.00401333 +0.00200667 0.00200667 0 0 0 0.00100333 0 0.00401333 +0.00702333 0.00501667 0 0 0.00100333 0 0 0 +0 0 0 0 0 0 0 0.345147 +1.04842 1.05326 1.03634 1.0303 1.02366 1.02789 1.02789 1.02608 +1.02547 1.01943 1.02124 1.01943 1.01702 1.01702 1.02064 1.014 +1.01037 1.01943 1.02306 1.02064 1.02366 1.02124 1.02426 1.02185 +1.02064 1.01822 1.02306 1.02124 1.01702 1.02064 1.01762 1.01883 +1.02306 1.02245 1.02849 1.0291 1.02245 1.0146 1.01339 1.0146 +1.01339 1.02426 1.0146 0.98742 1.01883 1.02849 1.02668 1.01943 +1.0297 1.01339 1.02608 1.01762 1.03091 1.02426 1.02668 1.02064 +1.02366 1.02245 1.02185 1.01581 1.0146 1.00977 1.02124 1.01883 +1.01762 1.01339 1.0297 1.014 1.0291 1.02426 0.981984 0.966884 +0.977152 0.974132 0.968696 0.96024 0.975944 0.968696 0.973528 0.971716 +0.965676 0.96024 0.968696 0.969904 0.976548 0.980776 1.01641 1.0146 +1.02487 1.02547 1.01762 1.01581 1.02124 1.03212 1.02366 1.01762 +1.02124 1.04178 1.04842 1.05084 1.0448 1.04963 1.04661 1.03574 +1.03212 1.01581 1.02306 1.02668 1.01883 1.02185 1.01581 1.02426 +1.0152 1.0146 1.00856 0.995272 1.00856 1.02547 1.02306 1.02728 +1.02185 1.03936 1.02487 1.01641 1.014 1.02366 1.02245 1.02306 +1.0146 1.01581 1.02185 1.02004 1.02064 1.01098 1.01883 1.01762 +1.02245 1.02124 1.00796 1.02245 1.02547 1.02245 1.02004 1.02185 +1.01339 1.01702 1.01641 1.0152 1.02185 1.02366 1.02004 1.02185 +1.02426 1.02487 1.03272 1.03634 1.04178 1.05386 0.997688 0.142473 +0 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0.00501667 0.00301 0 +0 0.00401333 0 0 0 0.00100333 0.00200667 0 +0.00200667 0 0 0 0 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00301 0 0 0.00602 0.01505 0.00702333 +0.00903 0.00501667 0.00401333 0.00100333 0 0 0 0 +0 0 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0.0561867 +0.930644 1.05144 1.05024 1.04238 1.0297 1.03332 1.02547 1.014 +1.01943 1.02608 1.02306 1.02185 1.02366 1.02245 1.01581 1.01822 +1.02608 1.0152 1.02124 1.01158 1.02124 1.02608 1.01339 1.00494 +1.02004 1.02789 1.02849 1.01641 1.02064 1.02487 1.02004 1.01702 +1.02306 1.02668 1.02004 1.03272 1.02245 1.02426 1.02245 1.01883 +1.02728 1.03212 1.00977 1.01037 1.00735 1.02789 1.01339 1.03574 +1.02487 1.01822 1.02004 1.0303 1.014 1.02064 1.0152 1.01822 +1.02306 1.01883 1.01883 1.02004 1.0152 1.02306 1.03393 1.02004 +1.0297 1.03332 1.02064 1.02185 1.02789 1.01883 0.975944 0.97232 +0.965072 0.965072 0.974132 0.968696 0.964468 0.956616 0.964468 0.966884 +0.967488 0.966884 0.964468 0.971716 0.9693 0.967488 1.01037 1.03091 +1.02185 1.02306 1.02124 1.02064 1.02487 1.01883 1.02185 1.01943 +1.01762 1.00312 1.01762 1.02124 1.03453 1.03816 1.02789 1.014 +1.01943 1.01641 1.00796 1.02426 1.02426 1.01641 1.01822 1.01702 +1.01762 1.01822 1.00494 1.00131 1.01883 1.02245 1.01883 1.01883 +1.01158 1.01641 1.01883 1.02426 1.01822 1.0152 1.00856 1.02064 +1.02608 1.01098 1.02064 1.01641 1.02366 1.01822 1.03151 1.02064 +1.01581 1.0297 1.02124 1.02245 1.02064 1.02366 1.01641 1.01822 +1.02426 1.02426 1.02426 1.02064 1.02124 1.01943 1.02064 1.02487 +1.02849 1.02789 1.02728 1.04359 1.05507 1.06171 0.706328 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0 0 0 0 0 0 +0 0 0 0 0.00200667 0 0 0 +0 0 0 0 0.00100333 0.00200667 0.00301 0 +0.00501667 0.00401333 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00200667 0.00200667 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00401333 0.00702333 0.00602 0.00401333 0.00301 +0 0 0 0 0 0.00401333 0.00401333 0 +0 0 0 0 0 0 0 0 +0.497653 1.05326 1.04661 1.03272 1.02004 1.01762 1.02668 1.02849 +1.02849 1.02004 1.01702 1.01702 1.01581 1.02728 1.02487 1.02366 +1.01581 1.01581 1.01822 1.02004 1.01883 1.02185 1.01883 1.02366 +1.01641 1.01822 1.00796 1.00675 1.0152 1.01822 1.01641 1.02366 +1.01702 1.01641 1.01702 1.02004 1.02064 1.03212 1.02487 1.02487 +1.02547 1.01943 1.02004 1.02547 1.00131 1.00494 1.02004 1.01218 +1.01279 1.02185 1.01641 1.02306 1.01098 1.02306 1.02124 1.02245 +1.02004 1.01158 1.02004 1.02306 1.0291 1.02004 1.01822 1.0297 +1.0303 1.00554 1.02728 1.02487 1.02849 1.02124 0.974132 0.973528 +0.97534 0.95722 0.960844 0.968092 0.961448 0.965676 0.966884 0.97534 +0.976548 0.970508 0.96024 0.962656 0.97534 0.976548 1.01037 1.02245 +1.01883 1.01279 1.02789 1.01641 1.01762 1.0291 1.01822 1.02426 +1.01822 1.01762 1.01339 1.02124 1.02668 1.02426 1.02124 1.02487 +1.014 1.02728 1.02306 1.01279 1.01641 1.00856 1.02185 1.0146 +1.01218 1.00554 1.00856 1.02185 1.01581 1.03393 1.02728 1.0297 +1.02668 1.02124 1.01762 1.0146 1.01702 1.01098 1.02124 1.01581 +1.01037 1.02487 1.01279 1.02124 1.02426 1.02124 1.01822 1.02064 +1.01581 1.02306 1.01762 1.02245 1.02004 1.01702 1.01943 1.02306 +1.02426 1.0152 1.01943 1.0152 1.02306 1.01762 1.01943 1.02185 +1.02789 1.03272 1.04118 1.04178 1.05084 1.02608 0.277923 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00702333 0.00501667 0.00301 0.00501667 +0.00501667 0.00200667 0.00501667 0.00100333 0 0 0.00702333 0.0110367 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00301 0.00301 0.00401333 0.00401333 0.0110367 0.00903 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00702333 0.0110367 0.0110367 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0.13846 0.991648 1.05024 1.03997 1.03574 1.03332 1.01883 1.02124 +1.01943 1.02306 1.01702 1.01822 1.01581 1.02064 1.014 1.014 +1.01943 1.01339 1.01702 1.01883 1.01762 1.01883 1.01279 1.01943 +1.01158 1.01883 1.02547 1.02004 1.02064 1.02124 1.02064 1.01641 +1.01581 1.00977 1.01158 1.01279 1.00312 1.01158 1.01581 1.02668 +1.02668 1.01339 1.01641 1.02064 1.02306 0.992252 1.00614 1.0152 +1.02306 1.02245 1.01883 1.02245 1.03091 1.02547 1.02487 1.00977 +1.02124 1.02306 1.02547 1.01943 1.0303 1.02426 1.0297 1.02487 +1.00735 1.02426 1.02608 1.02306 1.02547 1.014 0.971112 0.955408 +0.964468 0.962052 0.962052 0.969904 0.979568 0.969904 0.973528 0.96628 +0.949368 0.96628 0.974736 0.96628 0.968696 0.975944 1.02789 1.02004 +1.02668 1.01883 1.02245 1.0291 1.01762 1.01098 1.01822 1.01037 +1.02849 1.01641 1.02789 1.01762 1.02668 1.03332 1.0297 1.02728 +1.01641 1.01339 1.02306 1.01702 1.01037 1.01943 1.01702 1.01943 +1.00614 0.995876 1.02608 1.02608 1.03332 1.02366 1.014 1.01641 +1.02064 1.02064 1.02608 1.01641 1.01218 1.02064 1.02366 1.01883 +1.02306 1.0146 1.02668 1.02366 1.02124 1.01581 1.01702 1.02426 +1.01279 1.0146 1.0146 1.02064 1.02124 1.01762 1.02668 1.02185 +1.02185 1.02185 1.02608 1.02608 1.02426 1.02306 1.02487 1.03272 +1.03755 1.03453 1.03936 1.04178 1.05809 0.849296 0.02107 0 +0 0 0 0 0 0 0.00100333 0.00702333 +0.00802667 0.00702333 0.00200667 0.00200667 0 0 0 0 +0 0 0.00301 0.00702333 0.00602 0 0 0 +0.00401333 0.00802667 0.00602 0.00401333 0.00200667 0.00501667 0.00401333 0.00100333 +0.00501667 0.00401333 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.00401333 0.00401333 0.00501667 0.00602 0.00200667 +0 0 0 0 0.00401333 0 0 0.00301 +0 0.00301 0 0 0 0.00702333 0.00501667 0.00903 +0.00903 0 0 0 0 0 0 0 +0 0.611016 1.05265 1.03755 1.03574 1.0291 1.02185 1.02426 +1.0297 1.01702 1.02245 1.02608 1.02608 1.02185 1.0152 1.0152 +1.0146 1.014 1.01158 1.02487 1.01943 1.01641 1.02306 1.02004 +1.01641 1.02728 1.02366 1.02004 1.02426 1.0297 1.02668 1.02728 +1.02185 1.01037 1.0001 0.998896 1.00131 1.00312 1.00131 0.99346 +1.00192 1.01581 1.02668 1.02245 1.02366 1.01762 0.992252 0.998292 +1.0152 1.01641 1.01762 1.02185 1.0146 1.01641 1.02487 1.01883 +1.01883 1.02366 1.02064 1.02004 1.00554 1.02064 1.0146 1.01279 +1.01702 1.03514 1.0291 1.03272 1.01641 1.00735 0.99346 0.976548 +0.969904 0.966884 0.973528 0.972924 0.966884 0.963864 0.965676 0.963864 +0.941516 0.964468 0.97232 0.963864 0.971112 0.986212 1.02004 1.02185 +1.02245 1.02064 1.014 1.0297 1.02064 1.02064 1.01037 1.02728 +1.02124 1.02245 1.02004 1.01702 1.02064 1.01339 1.02668 1.03091 +1.02426 1.02124 1.02366 1.03634 1.0291 1.03151 1.02487 1.01279 +1.01218 1.01883 1.01279 1.01883 1.02608 1.00977 1.02004 1.0146 +1.01218 1.02487 1.01702 1.01943 1.01037 1.02185 1.01339 1.01702 +1.02245 1.02547 1.01943 1.0152 1.01762 1.02245 1.01762 1.02608 +1.02366 1.02668 1.01943 1.02064 1.01702 1.02064 1.01158 1.01822 +1.02366 1.01822 1.014 1.02124 1.02124 1.02004 1.02064 1.01581 +1.02366 1.03695 1.0454 1.05205 1.03574 0.353173 0 0 +0 0 0 0 0.00602 0 0 0.00501667 +0.00401333 0 0 0 0 0.00301 0.00401333 0.00501667 +0.00301 0 0 0 0.00301 0.00401333 0 0 +0 0 0.00200667 0.00702333 0.00200667 0.00200667 0.00200667 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0 0.00200667 0.00200667 0 0 +0 0.00501667 0.00802667 0.00200667 0.00200667 0.00501667 0.00602 0.00401333 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.202673 1.00494 1.05205 1.04359 1.03091 1.02487 1.02608 +1.02366 1.01943 1.02366 1.02245 1.01641 1.01339 1.01822 1.02487 +1.02789 1.02547 1.02426 1.01702 1.01762 1.014 1.01279 1.01279 +1.01883 1.02608 1.02487 1.02185 1.02426 1.02668 1.01883 1.01641 +0.99044 0.992856 1.01943 1.00856 1.01762 1.02185 1.01702 1.02064 +1.00494 1.00554 1.0146 1.02245 1.0303 1.01883 1.0303 1.01037 +1.00494 1.01883 1.02728 1.02789 1.02306 1.0146 1.00192 1.02124 +1.01883 1.02124 1.02124 1.01762 1.01702 1.01279 1.01822 1.014 +1.02789 1.01641 1.02245 1.0146 1.02849 1.02849 1.01581 0.96326 +0.967488 0.964468 0.96326 0.965676 0.966884 0.968092 0.965676 0.974736 +0.967488 0.974736 0.968696 0.956616 0.972924 1.01218 1.03091 1.03151 +1.02004 1.0146 1.01702 1.02064 1.01883 1.02185 1.02245 1.01822 +1.01943 1.0152 1.02245 1.01581 1.02306 1.01339 1.02124 1.01822 +1.02426 1.0297 1.01218 1.014 1.01581 1.00796 1.00614 1.00735 +1.02004 1.01702 1.0152 1.01279 1.01218 1.0146 1.01339 1.02306 +1.01883 1.00554 1.00675 1.01702 1.02608 1.0291 1.02064 1.02004 +1.01762 1.01581 1.0146 1.02547 1.014 1.01702 1.01339 1.02124 +1.0152 1.0146 1.02487 1.01158 1.014 1.014 1.01702 1.01581 +1.02004 1.02004 1.02185 1.02124 1.02728 1.02668 1.02366 1.03695 +1.03514 1.03212 1.04178 1.05326 0.900816 0.0501667 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00100333 0.00702333 0.00401333 0 0.00301 0.00401333 +0.00301 0.00301 0.00401333 0.00301 0.00100333 0.00501667 0.00602 0.00702333 +0.00501667 0.00802667 0.00401333 0 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0.00301 0.00702333 0.00401333 0 0 +0 0 0 0 0 0 0.00100333 0.00200667 +0.00301 0.00100333 0.00702333 0.0130433 0.00501667 0 0 0 +0.00200667 0.00200667 0.00401333 0 0.00301 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0 0.6664 1.06232 1.04722 1.03876 1.03453 1.02728 +1.02245 1.01943 1.01581 1.01883 1.02789 1.02668 1.02728 1.01822 +1.02004 1.01641 1.01822 1.02426 1.03151 1.02185 1.02849 1.02487 +1.02789 1.02426 1.02426 1.01943 1.02004 1.00977 1.00916 0.988024 +1.00796 1.02849 1.0146 1.02366 1.01883 1.02487 1.02487 1.01822 +1.02124 1.02004 1.00977 1.014 1.014 1.02124 1.02849 1.02064 +0.998292 0.994668 1.01822 1.0146 1.02366 1.03272 1.03091 1.02728 +1.0297 1.01581 1.02245 1.01581 1.01702 1.02306 1.02608 1.0146 +1.01943 1.01641 1.01641 1.01218 1.02245 1.02668 1.02245 0.9995 +0.962656 0.965072 0.971112 0.96628 0.971112 0.96326 0.967488 0.973528 +0.964468 0.96024 0.972924 0.972924 0.986816 1.02064 1.01218 1.01702 +1.01883 1.03755 1.02004 1.02064 1.02849 1.02608 1.01822 1.02306 +1.01943 1.01883 1.02487 1.0146 1.01641 1.01339 1.01943 1.0146 +1.01279 1.02064 1.01641 1.01762 1.02426 1.01883 1.0146 1.0146 +1.02426 1.02004 1.01822 1.01279 1.00433 1.01581 1.02245 1.00916 +1.01943 1.02789 1.01158 1.01641 1.00312 1.01037 1.014 1.014 +1.01762 1.02064 1.02487 1.01218 1.0146 1.01762 1.01762 1.02004 +1.01098 1.0146 1.02849 1.01943 1.02064 1.01581 1.0146 1.02185 +1.02245 1.02185 1.01822 1.01943 1.02426 1.02366 1.02004 1.02608 +1.02668 1.03816 1.0442 1.04359 0.383273 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0 0 +0 0 0 0.00602 0.00301 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0.00501667 0.00602 0 0 0.00200667 0.00301 +0 0.00301 0.00401333 0.00602 0.00702333 0.00602 0.00100333 0.00100333 +0 0 0 0 0 0 0 0 +0.00100333 0.00100333 0.00100333 0.00501667 0.00602 0.00702333 0.00903 0.00702333 +0 0.00100333 0 0 0 0 0 0 +0 0 0.188627 1.00071 1.05748 1.05386 1.04057 1.02849 +1.0303 1.02789 1.02789 1.02185 1.02547 1.02124 1.02608 1.02426 +1.02426 1.0146 1.01581 1.01943 1.02245 1.01641 1.01883 1.0146 +1.01218 1.00916 1.01581 1.01339 1.01883 1.01641 0.997084 1.00312 +1.0152 1.00252 1.01279 1.0146 1.00977 1.01581 1.01581 1.02064 +1.02185 1.00796 1.00856 0.9995 1.01037 1.00735 1.01339 1.01037 +1.02004 0.997084 0.994064 1.01037 1.01218 1.01822 1.00916 1.02124 +1.01339 1.01098 1.02124 1.02668 1.01822 1.02124 1.01641 1.02366 +1.02185 1.01702 1.03332 1.02426 1.03091 1.01943 1.01218 1.02124 +0.979568 0.961448 0.954804 0.970508 0.972924 0.96628 0.968092 0.969904 +0.973528 0.974736 0.97232 0.9844 1.00675 1.03574 1.0152 1.02004 +1.02608 1.02004 1.03332 1.02064 1.02124 1.01702 1.01641 1.02366 +1.02426 1.01339 1.02366 1.00856 1.0291 1.00916 1.01883 1.02608 +1.01702 1.02306 1.0291 1.02004 1.02547 1.02789 1.03272 1.01218 +1.01762 1.01279 1.0152 1.01218 1.01762 1.0152 1.0146 1.02608 +1.00916 1.0146 1.01098 1.00494 1.00312 1.01037 1.014 1.02608 +1.0303 1.01581 1.01943 1.01762 1.01883 1.01218 1.02306 1.02366 +1.02064 1.01218 1.02245 1.02547 1.03151 1.02004 1.01822 1.02124 +1.01218 1.01883 1.02245 1.01581 1.02185 1.02849 1.0297 1.03816 +1.0442 1.05144 1.05567 0.903392 0.05117 0 0 0 +0 0 0 0 0 0.00401333 0.00401333 0 +0.00501667 0.00602 0 0 0 0.00200667 0.00602 0.00200667 +0.00100333 0.00100333 0 0 0 0.00100333 0 0 +0 0 0 0 0 0.00802667 0.00200667 0 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0 0 0.00100333 0.00200667 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00702333 0.00602 0.0130433 0.00501667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.58695 1.05386 1.04238 1.0297 1.02547 +1.02849 1.02608 1.02487 1.02185 1.01943 1.01943 1.01822 1.0146 +1.01762 1.01762 1.02004 1.014 1.01037 1.00916 1.0146 1.01279 +1.0146 1.01581 1.0146 1.01822 1.01943 1.00856 0.989232 1.00977 +1.01702 1.02245 1.01702 1.00554 1.00796 1.00252 1.00675 1.01702 +1.00977 1.02487 1.02547 1.0146 1.00614 1.014 1.02426 1.02547 +1.02064 1.02306 1.00494 0.981984 1.01158 1.01641 1.02668 1.0291 +1.02185 1.02789 1.02306 1.01883 1.01883 1.01279 1.01581 1.02124 +1.02245 1.01702 1.01883 1.0297 1.01581 1.0152 1.02124 1.02789 +1.03091 0.995876 0.971716 0.962656 0.966884 0.965676 0.971112 0.971112 +0.969904 0.959032 0.997084 1.00675 1.01883 1.01581 1.02245 1.01762 +1.02608 1.02487 1.02487 1.01822 1.01883 1.01279 1.02426 1.02728 +1.02245 1.01822 1.02366 1.02004 1.02124 1.02245 1.0146 1.0152 +1.02004 1.02608 1.01762 1.01339 1.01581 1.01641 1.00796 1.02487 +1.01098 1.02789 1.02004 1.01218 1.01339 1.01641 1.00796 1.00916 +1.01037 1.01158 1.00796 1.01943 1.02245 1.02185 1.01279 1.00373 +1.00916 1.01158 1.02185 1.02547 1.02426 1.02789 1.01702 1.01762 +1.02004 1.0152 1.01762 1.014 1.0146 1.02004 1.0146 1.01943 +1.01943 1.01822 1.02306 1.02124 1.02728 1.03332 1.04057 1.0448 +1.0448 1.05265 1.03816 0.353173 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.00802667 0.00602 0.00100333 0 0 0 0 +0 0 0 0 0.00301 0.00200667 0.00702333 0.0140467 +0.00702333 0.00200667 0 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00301 0 0 0 0.00301 +0.00602 0.00301 0.00200667 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.131437 0.96628 1.05326 1.04722 1.03091 +1.02728 1.02064 1.02306 1.02366 1.02849 1.02728 1.02185 1.02426 +1.02064 1.02124 1.01702 1.0152 1.01158 1.01762 1.01943 1.02064 +1.01883 1.0152 1.01339 1.01098 1.02245 0.992252 1.00977 1.02426 +1.02487 1.00373 0.994668 1.06352 1.18766 1.21903 1.10615 1.01762 +1.00675 1.00252 1.01762 1.01339 1.01762 1.0297 1.02668 1.02426 +1.01822 1.02064 1.01943 1.00675 0.980776 0.986212 1.0152 1.01279 +1.02124 1.02124 1.01943 1.03453 1.02064 1.01581 1.01883 1.0146 +1.01762 1.02547 1.02124 1.0291 1.03634 1.03695 1.0291 1.02245 +1.02608 1.0291 1.01702 0.9995 0.99346 0.978964 0.979568 0.971112 +0.992856 1.00856 1.02064 1.01822 1.01883 1.02849 1.02245 1.02547 +1.01702 1.01883 1.0146 1.01581 1.01581 1.02547 1.02245 1.01762 +1.02487 1.02608 1.0152 1.02004 1.01762 1.01702 1.0146 1.02185 +1.0152 1.00494 1.00554 1.01702 1.02004 1.01581 1.02245 1.01702 +1.0146 1.0146 1.01037 1.02064 1.01883 1.02124 1.02185 1.01218 +1.014 1.01339 1.00977 1.00373 1.00252 1.00977 1.00494 1.00312 +1.0152 1.01943 1.02124 1.00796 1.01339 1.01339 1.00796 1.00916 +1.0146 1.014 1.02306 1.01762 1.0152 1.02547 1.01822 1.02728 +1.02306 1.02185 1.02608 1.0291 1.02064 1.0297 1.03272 1.03634 +1.03936 1.05084 0.7952 0.02107 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0 0 0 0 +0.00301 0 0 0 0 0 0 0 +0.00702333 0.00602 0.00100333 0 0 0.00100333 0.00903 0.00802667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0 0 0.00100333 0 0 0 +0 0.00702333 0.00802667 0.00100333 0 0 0.00301 0.00501667 +0 0.00200667 0 0 0.00100333 0.00301 0 0.00602 +0.00401333 0.00301 0.00401333 0.00301 0 0 0 0 +0 0 0.00501667 0.00501667 0 0 0 0 +0 0 0 0 0.46053 1.04299 1.04118 1.04359 +1.03936 1.03634 1.03091 1.02849 1.02366 1.01762 1.02366 1.01702 +1.01098 1.02185 1.02064 1.02185 1.01762 1.01098 1.02004 1.01702 +1.02124 1.0146 1.01339 1.02487 1.01158 0.980172 1.00856 1.00614 +1.00675 0.998896 1.0442 1.35537 1.49506 1.50134 1.42354 1.11175 +0.994064 1.00916 1.00796 1.0152 1.0146 1.01822 1.0152 1.01158 +1.0152 1.02366 1.02064 1.02426 1.0303 1.00373 0.980172 1.0146 +1.02547 1.02245 1.02124 1.02185 1.01641 1.03272 1.0303 1.03272 +1.02064 1.02668 1.01098 1.02426 0.997688 1.01098 1.02064 1.02849 +1.02547 1.02426 1.01581 1.02487 1.02004 1.01098 1.01822 1.01702 +1.00614 1.02789 1.02849 1.0303 1.02608 1.02064 1.014 1.01702 +1.02426 1.02185 1.01822 1.02245 1.02728 1.0297 1.02004 1.014 +1.02124 1.01943 1.01702 1.01702 1.03634 1.02426 1.02124 1.01581 +1.01098 1.02487 1.02004 1.01762 1.01883 1.01822 1.02487 1.02668 +1.02124 1.02306 1.01339 1.00735 1.0146 1.00856 1.02245 1.0939 +1.13695 1.0883 1.00071 0.994668 1.01883 1.02487 1.02245 1.01883 +1.01762 1.01883 1.01702 1.014 1.01762 1.02245 1.01581 1.01581 +1.02064 1.00735 1.01098 1.02547 1.01702 1.01883 1.02124 1.01702 +1.02245 1.0146 1.02185 1.03151 1.02728 1.02668 1.03634 1.04722 +1.0605 1.02306 0.27692 0 0 0 0 0 +0 0.00702333 0.0100333 0 0 0 0 0 +0 0 0 0 0.00301 0 0 0 +0 0.00100333 0.00100333 0 0 0.00100333 0 0 +0 0 0.00401333 0.00301 0.00401333 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00602 0.00602 0.00301 0.0100333 0.01505 +0.00903 0 0 0 0 0.00100333 0 0 +0 0 0 0 0 0.00200667 0 0 +0 0 0 0.00200667 0.00301 0.00100333 0.00200667 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0.05418 0.877632 1.05386 1.04661 +1.0291 1.02306 1.02608 1.01581 1.02004 1.01883 1.01158 1.0146 +1.02004 1.01339 1.0146 1.0152 1.02608 1.02426 1.02124 1.01702 +1.0146 1.01641 1.01218 1.01279 1.00131 0.991044 1.01037 1.0152 +1.00554 0.994064 1.17135 1.49381 1.50175 1.49715 1.50594 1.29013 +1.01158 1.01762 1.01883 1.02728 1.01943 1.0152 1.01339 1.02245 +1.02366 1.02728 1.01641 1.01883 1.01098 1.01702 1.01762 0.986212 +1.00554 1.01339 1.01943 1.01943 1.00796 1.01581 1.0152 1.01943 +1.01883 1.02245 1.02124 1.02064 1.03212 1.0297 1.01158 1.00433 +1.02245 1.02306 1.01339 1.0297 1.0146 1.02366 1.02185 1.02064 +1.01762 1.02487 1.02426 1.02849 1.00796 1.01339 1.02608 1.0297 +1.02547 1.0291 1.03393 1.0297 1.01158 1.01762 1.02245 1.02487 +1.0297 1.02366 1.02366 1.02306 1.01943 1.01762 1.01098 1.01339 +1.01098 1.01158 1.01098 1.0291 1.01581 1.01822 1.00675 1.0146 +1.01822 1.02004 1.02004 1.01158 1.00735 1.00675 1.17386 1.43149 +1.48168 1.43693 1.1793 1.00312 0.995876 1.01339 1.01762 1.00494 +1.00373 1.01641 1.02245 1.01279 1.02487 1.02668 1.01883 1.02668 +1.02849 1.02245 1.00675 1.0152 1.02426 1.02849 1.014 1.02245 +1.02487 1.02547 1.02789 1.02789 1.03634 1.03695 1.03272 1.04299 +1.05326 0.68572 0.00401333 0 0 0 0 0 +0 0 0 0.00501667 0.00100333 0 0 0 +0 0 0 0.00702333 0.00802667 0.0110367 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0.00501667 0.0100333 0.0110367 0.00802667 0 0 0 0 +0 0.00200667 0.00501667 0.00100333 0 0.00602 0.00301 0.00301 +0 0.00100333 0.00200667 0.00301 0 0 0 0 +0 0 0 0 0 0.280933 1.00735 1.04601 +1.04601 1.03816 1.02124 1.03453 1.0291 1.02789 1.02849 1.02849 +1.02124 1.02608 1.0291 1.02487 1.01883 1.01762 1.014 1.00916 +1.01762 1.02064 1.014 1.01581 1.01822 0.994668 1.02426 1.00796 +0.9995 0.994668 1.18515 1.49506 1.50217 1.50008 1.49381 1.30226 +1.00131 1.00071 1.00916 1.01279 1.01218 1.01037 1.00977 1.02004 +1.01702 1.01581 1.01943 1.01641 1.01883 1.03332 1.01581 1.0152 +1.0152 0.995876 1.00433 1.02426 1.02487 1.01822 1.02668 1.02306 +1.0297 1.02245 1.01641 1.01762 1.02185 1.0152 1.02487 1.0303 +1.01943 1.01581 1.02124 1.02608 1.01943 1.02547 1.02306 1.0146 +1.02064 1.02245 1.0152 1.01762 1.01822 1.01581 1.01702 1.0303 +1.01883 1.0146 1.02064 1.02608 1.02608 1.02608 1.0152 1.01098 +1.0146 1.014 1.0291 1.02245 1.00554 1.01702 1.02426 1.01883 +1.0152 1.014 1.01279 1.02366 1.02547 1.01279 1.01641 1.01339 +1.00554 1.02004 1.02608 1.01218 0.997084 1.05386 1.41058 1.49088 +1.49632 1.50092 1.39971 1.04238 1.00192 1.00131 1.01943 1.01943 +1.00796 1.01762 1.01883 1.02004 1.01702 1.01943 1.01822 1.02789 +1.02245 1.02608 1.02487 1.01822 1.014 1.01641 1.01943 1.01702 +1.02366 1.02306 1.02547 1.02789 1.03272 1.0448 1.04299 1.04661 +0.985004 0.172573 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00501667 0 0 +0.00702333 0.00301 0 0 0 0.00301 0.00401333 0.00301 +0.01204 0.0140467 0.00802667 0.00903 0.0160533 0.00802667 0.00401333 0.00702333 +0.00200667 0 0 0 0.00401333 0.00802667 0.00602 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00301 0.00200667 0 0 0.00100333 0 0 0.00501667 +0 0 0 0 0 0.00802667 0.00802667 0.00200667 +0.00802667 0.00200667 0 0 0.00100333 0.00100333 0 0 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.570897 1.04903 +1.04722 1.0303 1.02426 1.03091 1.0297 1.02366 1.01702 1.01218 +1.02064 1.01943 1.02004 1.0146 1.01762 1.01943 1.014 1.02185 +1.02849 1.02547 1.01822 1.0146 1.0152 0.9844 1.00373 1.01218 +1.0152 1.00131 1.08445 1.40514 1.49841 1.49381 1.44906 1.14542 +0.992252 1.00312 1.00554 1.00916 1.0152 1.01641 1.0146 1.00977 +1.02487 1.014 1.01762 1.0146 1.02547 1.00675 1.01883 1.02728 +1.02366 1.02306 1.01158 1.0146 1.01339 1.02306 1.00916 1.02245 +1.02124 1.01883 1.01943 1.02608 1.02306 1.02245 1.01883 1.02487 +1.02245 1.01702 1.01581 1.01702 1.02064 1.02547 1.02124 1.01762 +1.02306 1.02426 1.0146 1.02849 1.0303 1.03695 1.03151 1.02668 +1.01641 1.01339 1.01943 1.02547 1.02366 1.01339 1.0152 1.02728 +1.01943 1.0146 1.00614 1.02124 1.01279 1.01581 1.01702 1.01943 +1.02004 1.01339 1.01762 1.01762 1.02306 1.02245 1.01822 1.02185 +1.0146 1.01037 1.01158 1.00192 1.00252 1.0841 1.45408 1.49339 +1.48963 1.50259 1.45366 1.0855 1.00796 1.00614 1.00192 1.01279 +1.0146 1.02004 1.02185 1.02487 1.01822 1.00916 1.00916 1.014 +1.0146 1.01822 1.01098 1.01641 1.02245 1.02185 1.02426 1.02487 +1.02487 1.02124 1.02668 1.03393 1.03997 1.04601 1.05144 1.0448 +0.50869 0 0 0 0 0 0 0 +0.00200667 0.00100333 0 0.00100333 0 0.00301 0.00501667 0.00501667 +0 0 0 0.00200667 0 0 0.00501667 0 +0 0 0 0 0 0 0.00401333 0.00802667 +0.0110367 0.00602 0.00301 0.00200667 0 0.00200667 0.00802667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0.00602 0.0110367 0.00501667 0.00100333 0 +0 0 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0903 0.908544 +1.04903 1.03634 1.03695 1.0297 1.0291 1.01762 1.02245 1.02789 +1.02728 1.02306 1.02366 1.02245 1.02245 1.02185 1.0146 1.01702 +1.01339 1.01702 1.02306 1.02789 1.02366 0.99648 1.01883 1.02004 +1.01098 1.01762 1.02728 1.11315 1.26671 1.29138 1.14918 1.00856 +1.0001 1.01339 0.994064 1.01098 1.00675 1.00614 1.0146 1.02547 +1.0146 1.0152 1.01279 1.03151 1.01218 1.01702 1.0152 1.02124 +1.01762 1.014 1.02124 1.01883 1.01641 1.01218 1.01158 1.01641 +1.014 1.01762 1.014 1.02789 1.0303 1.01883 1.02124 1.01279 +1.01581 1.01943 1.02366 1.02849 1.02124 1.01581 1.02245 1.02728 +1.01883 1.0152 1.01762 1.02547 1.02487 1.01822 1.01822 1.02366 +1.02064 1.02124 1.01762 1.02306 1.02064 1.02547 1.01279 1.00554 +1.0001 1.00614 1.00916 1.01883 1.02064 1.01339 1.01218 1.02366 +1.02185 1.02608 1.02185 1.0152 1.01581 1.01943 1.01822 1.01279 +1.01883 1.00433 1.01641 1.00856 0.9995 1.01762 1.34826 1.49757 +1.50385 1.49046 1.34115 1.03151 1.00856 1.02668 1.02124 1.00735 +1.01098 1.01641 1.0152 1.014 1.01822 1.02064 1.02426 1.02185 +1.01218 1.01822 1.02426 1.01883 1.02245 1.02064 1.01641 1.01762 +1.02608 1.02306 1.03151 1.0303 1.03453 1.03997 1.05507 0.871192 +0.0602 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0 0 +0 0.00501667 0.00301 0 0.00100333 0 0 0.00100333 +0.00200667 0.00501667 0.00200667 0.00903 0.00501667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0 0 +0.00200667 0 0 0 0 0.00501667 0.0100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00602 0.00301 0 0.00401333 0.0100333 +0.0130433 0.00702333 0 0.00401333 0.00903 0 0 0 +0 0 0 0 0 0 0 0.268893 +1.00373 1.05507 1.0454 1.03332 1.02668 1.03936 1.03332 1.0303 +1.01822 1.01641 1.02004 1.02668 1.02064 1.01702 1.01339 1.01943 +1.01943 1.02185 1.01581 1.01883 1.014 1.01339 0.994668 1.01883 +1.01943 1.02185 1.01641 1.01158 1.01822 1.01943 1.01702 1.00977 +0.998896 1.01037 1.0146 1.01762 1.0152 1.01822 1.02064 1.01218 +1.01702 1.01339 1.01883 1.02245 1.014 1.02124 1.01702 1.01883 +1.01218 1.02004 1.02064 1.01762 1.01641 1.02547 1.02426 1.02185 +1.00856 1.00131 1.00373 1.01218 1.02185 1.014 1.02124 1.02789 +1.01822 1.01883 1.02608 1.01762 1.02306 1.03272 1.02245 1.02608 +1.0291 1.02426 1.02487 1.02185 1.02366 1.01762 1.00433 1.01098 +1.00554 1.00856 1.00614 1.0146 1.00433 1.00796 1.0001 1.00252 +1.01943 1.02547 1.0152 1.02366 1.02306 1.02366 1.0297 1.01883 +1.02789 1.02004 1.01822 1.014 1.00977 1.01037 1.01339 1.00916 +1.02245 1.01158 1.01702 1.014 1.00977 1.00252 1.09285 1.31439 +1.39134 1.30686 1.09845 1.00494 1.01279 1.00856 1.01339 1.01822 +1.01883 1.02124 1.02608 1.02004 1.01762 1.01943 1.02004 1.02124 +1.01822 1.01702 1.02366 1.01943 1.02608 1.03212 1.02728 1.0291 +1.02608 1.03393 1.03936 1.03876 1.04299 1.04963 0.997688 0.247823 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0.00200667 0 0 0.00401333 0.00401333 0.00100333 0.00602 0.00501667 +0 0 0 0 0.00401333 0.00702333 0.00903 0.00903 +0.00702333 0.00200667 0 0.00100333 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00401333 0.00301 0.00401333 0 0.00100333 +0.00602 0.00602 0 0 0 0 0.00301 0.00802667 +0.00702333 0.00501667 0.00401333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0 0 0 0 0 +0.49966 1.03514 1.04299 1.04057 1.03453 1.03091 1.02608 1.02306 +1.02668 1.03514 1.02728 1.02547 1.02306 1.02064 1.02849 1.02849 +1.02245 1.02124 1.01943 1.02487 1.02004 1.02124 0.997084 1.01037 +1.01641 1.01158 1.01339 1.03212 1.01762 1.02849 1.01822 1.00796 +1.01581 1.014 1.01641 1.01762 1.0152 1.01158 1.01822 1.01702 +1.01279 1.01641 1.0146 1.00433 1.01702 1.02245 1.02064 1.00796 +1.02064 1.01943 1.01883 1.02185 1.02426 1.03151 1.0152 1.01943 +1.01702 1.00433 1.00071 1.00856 1.01158 1.00916 0.995272 1.01158 +1.01822 1.0297 1.01702 1.01641 1.0146 1.02185 1.02366 1.03272 +1.01218 1.02185 1.01037 1.01218 1.014 1.02185 1.02426 1.02668 +1.02668 1.01339 1.00916 1.00433 1.00494 1.01762 1.01037 1.00916 +1.01279 1.01762 1.02245 1.02547 1.01702 1.0146 1.01762 1.00252 +1.01218 1.02487 1.01158 1.01762 1.02366 1.01702 1.02004 1.0152 +1.01218 1.01158 1.01822 1.01883 1.01822 1.00554 1.00494 1.02426 +1.04118 1.0297 1.02366 1.0146 1.02608 1.01641 1.01581 1.00856 +1.01158 1.02245 1.02185 1.02124 1.0291 1.02789 1.02426 1.02185 +1.02185 1.01641 1.01762 1.01581 1.01762 1.03272 1.0291 1.0291 +1.03091 1.04359 1.04722 1.04299 1.05265 1.05084 0.51471 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0.00200667 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00401333 0 0 0 0 0 0 +0 0 0.00200667 0 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0.00401333 0.00301 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0.00200667 0 0.00501667 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0.00100333 0 0.00100333 0.00501667 0.00100333 0 +0 0 0 0 0 0 0 0 +0.0381267 0.725648 1.04661 1.04963 1.03332 1.03936 1.03634 1.0291 +1.03514 1.02245 1.02004 1.02064 1.02426 1.02185 1.02306 1.01641 +1.02849 1.02608 1.02547 1.01762 1.01883 1.01037 1.0146 0.9995 +0.997084 1.02004 1.02306 1.02245 1.02849 1.02185 1.01339 1.01762 +1.01762 1.01641 1.02064 1.0146 1.02185 1.01581 1.02004 1.02185 +1.02306 1.01581 1.01581 1.00856 1.01883 1.02004 1.02004 1.02306 +1.02185 1.0146 1.02608 1.01762 1.02004 1.01339 1.01641 1.01702 +1.00977 1.01883 1.01339 1.014 1.00614 1.0152 1.014 1.0146 +1.01158 1.01279 1.00977 1.01762 1.01158 1.00071 1.01037 1.00494 +1.00675 1.01158 1.00554 1.01702 1.01098 1.00916 1.00433 1.00494 +1.00614 1.02487 1.01702 1.01762 1.01641 1.01581 1.01822 1.02426 +1.01702 1.02064 1.00916 1.01883 1.00916 1.01279 1.01641 1.01943 +1.014 1.01279 1.01581 1.02366 1.01822 1.01702 1.01279 1.02487 +1.02245 1.0152 1.01037 1.01098 1.00856 1.0152 1.00192 1.00494 +1.00977 1.00796 1.01883 1.00977 1.00675 1.02366 1.02004 1.02366 +1.02245 1.01943 1.01581 1.01762 1.01702 1.02004 1.01943 1.02185 +1.02124 1.02064 1.02426 1.02487 1.01702 1.01943 1.02849 1.03755 +1.03091 1.03091 1.04057 1.05024 1.05326 0.735952 0.0371233 0 +0 0 0 0 0.00501667 0 0 0 +0 0.00100333 0 0 0 0 0 0.00501667 +0 0 0 0 0.00100333 0 0 0 +0.00301 0 0.00301 0.00401333 0.00200667 0 0 0 +0.00200667 0.00401333 0.00301 0.00501667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0110367 +0.00602 0 0.00100333 0.00401333 0.00602 0.00200667 0 0 +0 0 0 0 0 0 0.00100333 0 +0 0.00200667 0 0 0 0.00702333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.10836 0.903392 1.05326 1.04299 1.03695 1.02487 1.03212 +1.02849 1.0297 1.02849 1.02064 1.02185 1.02124 1.02547 1.02366 +1.02245 1.02366 1.014 1.02064 1.01037 1.01822 1.01943 1.00916 +1.0001 1.01339 1.01822 1.01883 1.01943 1.01581 1.02004 1.00433 +1.01037 1.01218 1.01037 1.0146 1.01762 1.02608 1.01943 1.01883 +1.02245 1.01883 1.01702 1.02306 1.02789 1.02306 1.01943 1.02306 +1.01943 1.02306 1.02004 1.01581 1.02185 1.00192 1.0146 1.0146 +1.01943 1.03151 1.02547 1.0291 1.01762 1.01158 1.01581 1.01822 +1.01822 1.01339 1.00977 1.02487 1.02124 1.0146 1.01702 1.03332 +1.02064 1.01158 1.014 1.014 1.014 1.02124 1.02064 1.0303 +1.01822 1.014 1.01822 1.00977 1.01641 1.01218 1.01339 1.00977 +1.00433 1.02185 1.02185 1.02004 1.0152 1.02185 1.01943 1.02004 +1.01822 1.01098 1.02487 1.02185 1.014 1.01822 1.01037 1.02185 +1.0152 1.02426 1.01641 1.01943 1.01581 1.01702 1.01218 1.0146 +1.02245 1.02306 1.01943 1.02064 1.00312 1.0146 1.01098 1.01762 +1.01702 1.03151 1.02366 1.01641 1.02487 1.02306 1.0146 1.02185 +1.03212 1.01883 1.03091 1.02849 1.02124 1.03212 1.02849 1.03514 +1.03755 1.04963 1.04238 1.05507 0.908544 0.122407 0 0 +0 0 0 0 0 0 0.00401333 0 +0 0 0 0.00100333 0.00301 0 0 0 +0.00200667 0 0 0 0 0.00100333 0 0 +0 0.00100333 0 0.00401333 0.00401333 0.00702333 0.00301 0 +0 0.00301 0.00200667 0.00602 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0.00903 0.0110367 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0.00602 0.00602 0 0.00100333 0.00702333 0.00301 +0 0.00200667 0 0 0 0 0 0 +0.00802667 0.00802667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.214713 0.957824 1.04782 1.03816 1.03816 1.0303 +1.03212 1.02608 1.02064 1.02547 1.02789 1.03393 1.02366 1.02124 +1.02124 1.01822 1.02849 1.02004 1.0146 1.02849 1.02185 1.02668 +1.02728 1.02064 1.01037 1.0146 1.00312 1.00675 1.01098 1.00916 +1.01037 1.01641 1.02124 1.02124 1.02185 1.0146 1.01581 1.02004 +1.02547 1.01943 1.01762 1.0303 1.0146 1.02124 1.02547 1.0146 +1.01762 1.01943 1.02064 1.01702 1.01762 1.00916 1.01641 1.0146 +1.014 1.00977 1.01581 1.02064 1.02789 1.02789 1.01943 1.01702 +1.00856 1.01581 1.00735 1.01883 1.03634 1.0605 1.07138 1.06292 +1.04903 1.02789 1.014 1.00675 1.02306 1.01943 1.01822 1.02124 +1.02064 1.01581 1.01883 1.01581 1.0152 1.01822 1.01218 1.0146 +1.01098 1.00856 1.01883 1.01762 1.03272 1.02366 1.01883 1.02064 +1.02064 1.01702 1.02064 1.01641 1.0303 1.02728 1.01581 1.0291 +1.01702 1.0152 1.01158 1.01339 1.01641 1.01581 1.01943 1.01943 +1.01883 1.02487 1.02426 1.02426 1.02547 1.014 1.0152 1.01822 +1.01098 1.01762 1.02668 1.01762 1.01762 1.02064 1.02306 1.01762 +1.0146 1.01822 1.02366 1.02487 1.02064 1.02487 1.03574 1.03876 +1.03634 1.04722 1.04842 0.950576 0.202673 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0100333 0.00401333 0.00200667 0.00301 +0.00802667 0.00602 0.00802667 0 0 0 0.00702333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0 0 0 0.00200667 0 0.00100333 +0.00301 0.00802667 0.00200667 0 0.00903 0.00602 0 0 +0 0 0.00200667 0 0 0.00100333 0.00401333 0.00501667 +0 0 0 0 0 0 0 0 +0.00301 0.00301 0 0 0 0 0 0 +0 0 0 0.27993 0.991044 1.05628 1.03997 1.0297 +1.03997 1.04057 1.03876 1.02728 1.0291 1.02064 1.0146 1.01943 +1.02124 1.02245 1.02547 1.02426 1.01762 1.02004 1.02487 1.02245 +1.02064 1.02547 1.02245 1.01098 1.01822 1.02185 1.0152 1.01641 +1.0152 1.02124 1.02004 1.0146 1.01762 1.02064 1.0146 1.01037 +1.014 1.01822 1.01762 1.01702 1.01339 1.01339 1.01762 1.0146 +1.01762 1.02547 1.01158 1.01943 1.01943 1.01943 1.02124 1.01762 +1.01218 1.02185 1.0146 1.01158 1.01822 1.02064 1.01037 1.0146 +1.02124 1.00977 1.05567 1.1009 1.12785 1.14185 1.1429 1.14115 +1.13065 1.1135 1.0771 1.01822 1.0146 1.01943 1.0152 1.01581 +1.01339 1.0152 1.02547 1.01822 1.01883 1.02124 1.01883 1.014 +1.0146 1.02728 1.01822 1.01581 1.02366 1.01581 1.01702 1.02004 +1.02547 1.0152 1.01822 1.02426 1.02789 1.01822 1.03151 1.02185 +1.00856 1.01641 1.02064 1.01339 1.01218 1.00614 1.00614 1.01339 +1.0146 1.014 1.014 1.01762 1.01762 1.02185 1.01339 1.01581 +1.01883 1.01762 1.01762 1.02185 1.02608 1.01943 1.02487 1.02789 +1.02306 1.02668 1.02728 1.03272 1.03574 1.04057 1.03514 1.0454 +1.04661 1.06534 0.992252 0.28595 0 0 0 0 +0 0 0 0 0 0.00702333 0.00903 0.00200667 +0.00200667 0 0 0 0 0.00200667 0 0 +0 0 0.00301 0.0100333 0.00301 0 0 0.00602 +0.00802667 0.00903 0 0.00501667 0.00802667 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00100333 0 0 0 0.00200667 0 0.00501667 0.0130433 +0.00501667 0 0 0 0 0 0 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00501667 0 0 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0.335113 0.997084 1.04842 1.04118 +1.03574 1.04057 1.03332 1.02849 1.02426 1.02608 1.0303 1.02608 +1.02547 1.01702 1.014 1.01641 1.02064 1.02366 1.014 1.01943 +1.01339 1.02185 1.01943 1.01581 1.02064 1.0146 1.02004 1.02124 +1.02668 1.01883 1.02064 1.02185 1.01641 1.01822 1.02124 1.02608 +1.02064 1.02668 1.02064 1.0152 1.02185 1.02366 1.01098 1.01883 +1.01037 1.01943 1.01762 1.01158 1.01822 1.02789 1.02124 1.01762 +1.01581 1.01943 1.02487 1.0146 1.014 1.00916 1.0146 1.00796 +1.0297 1.06896 1.12855 1.13625 1.1373 1.13975 1.131 1.1387 +1.1415 1.14045 1.1429 1.1065 1.02728 1.00252 1.0146 1.02185 +1.02064 1.01641 1.01822 1.02306 1.01339 1.01883 1.02487 1.02366 +1.02306 1.02064 1.01762 1.02124 1.02185 1.02426 1.02366 1.02547 +1.02366 1.02064 1.01279 1.02185 1.01037 1.02064 1.0152 1.02245 +1.02124 1.01822 1.01098 1.01762 1.02004 1.0146 1.02245 1.02185 +1.01762 1.02487 1.02124 1.02124 1.02124 1.02366 1.01702 1.02064 +1.01883 1.01339 1.02004 1.01339 1.01822 1.02124 1.02426 1.02245 +1.02426 1.03453 1.03212 1.0297 1.03453 1.04118 1.04238 1.0454 +1.05326 0.985608 0.315047 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00903 0 0.00301 0.00501667 0.00100333 0.00602 0 +0.00401333 0.00702333 0.00702333 0 0.00200667 0.0110367 0.01806 0.01204 +0.00903 0.0140467 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0100333 0.00501667 +0 0.00301 0.00702333 0.00501667 0.00401333 0.00200667 0 0 +0 0 0.00501667 0.00501667 0 0.00100333 0 0 +0 0 0.00100333 0.00200667 0 0 0 0.00301 +0.00501667 0.00501667 0 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.320063 0.980776 1.04963 +1.04118 1.03755 1.03634 1.03695 1.02426 1.02789 1.02366 1.02366 +1.02064 1.01702 1.02487 1.02668 1.02728 1.00796 1.01822 1.02185 +1.02487 1.02245 1.01641 1.01762 1.02004 1.01762 1.02608 1.02245 +1.02185 1.014 1.01641 1.01883 1.02004 1.02004 1.02547 1.02185 +1.01822 1.02789 1.0152 1.014 1.01883 1.01641 1.02185 1.02366 +1.014 1.02185 1.0303 1.02668 1.02789 1.01762 1.00916 1.02608 +1.02608 1.02366 1.01641 1.01762 1.0146 1.02547 1.01702 1.00977 +1.0605 1.12645 1.1401 1.13905 1.1338 1.13065 1.13625 1.14584 +1.13485 1.1366 1.1366 1.13275 1.103 1.02004 1.00796 1.00735 +1.01581 1.01098 1.01883 1.01943 1.02608 1.01762 1.02004 1.01822 +1.01158 1.02185 1.02306 1.01581 1.01943 1.01641 1.0146 1.014 +1.02064 1.02426 1.02608 1.01702 1.01762 1.02185 1.014 1.00856 +1.0146 1.02668 1.01158 1.0146 1.02426 1.02245 1.02366 1.02185 +1.0146 1.01762 1.01581 1.01883 1.02306 1.02547 1.02789 1.02064 +1.02306 1.02124 1.02487 1.02728 1.03151 1.02366 1.02426 1.02608 +1.01702 1.02728 1.03151 1.03272 1.03332 1.04178 1.0448 1.05144 +0.974132 0.30401 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00501667 0.00301 +0 0.00301 0.00100333 0 0.00301 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0.00802667 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.00802667 0.00501667 0 0 0 0.00100333 0 +0.00100333 0 0.00301 0.00200667 0.00401333 0.00200667 0 0 +0.00802667 0.00200667 0.00100333 0 0 0.00802667 0.00200667 0.00401333 +0 0.00100333 0.00200667 0.00501667 0 0.00702333 0.0100333 0.00903 +0.0100333 0 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0.284947 0.97232 +1.05628 1.03997 1.0297 1.03453 1.03574 1.03453 1.03634 1.02245 +1.02728 1.02124 1.02608 1.02608 1.014 1.02426 1.03272 1.02064 +1.02608 1.0152 1.02004 1.01822 1.02849 1.02245 1.02004 1.02185 +1.01581 1.02426 1.01883 1.02547 1.03272 1.02124 1.0146 1.01943 +1.02547 1.02004 1.01822 1.01762 1.02245 1.02004 1.01702 1.0152 +1.02608 1.02728 1.01702 1.0146 1.01883 1.02064 1.01702 1.0146 +1.02849 1.01641 1.00856 1.02849 1.01943 1.00373 1.00252 1.01762 +1.11665 1.13765 1.13835 1.13345 1.1345 1.1317 1.13415 1.13835 +1.13275 1.13345 1.1303 1.138 1.1422 1.08795 1.00554 1.0146 +1.01822 1.01581 1.014 1.01279 1.01037 1.02728 1.01339 1.02124 +1.02124 1.02064 1.01943 1.00856 1.01883 1.02426 1.02004 1.01581 +1.02185 1.014 1.014 1.00977 1.02245 1.02004 1.02004 1.02124 +1.00796 1.02185 1.0152 1.02064 1.00977 1.00856 1.01218 1.0291 +1.02185 1.02064 1.02185 1.01822 1.02185 1.02426 1.02064 1.02004 +1.0152 1.02004 1.01822 1.01762 1.02728 1.03151 1.02789 1.02608 +1.03816 1.02608 1.03816 1.0448 1.04299 1.04842 1.05507 0.968092 +0.287957 0 0 0 0 0 0.00401333 0 +0 0 0 0 0 0.00200667 0 0 +0.00301 0.00501667 0.0110367 0 0 0 0.00200667 0 +0.00100333 0 0 0.00602 0 0.00602 0.00401333 0.00401333 +0.00200667 0.00501667 0.00702333 0 0.00100333 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00501667 0 0 0 0 0 0 0.00401333 +0 0 0 0 0 0 0.00301 0.0100333 +0.00501667 0 0 0 0.00501667 0.00401333 0 0 +0 0.00100333 0 0 0 0.00401333 0 0 +0 0 0 0 0 0 0.00100333 0.00100333 +0 0 0.00301 0 0 0 0 0.206687 +0.896952 1.05144 1.04963 1.04118 1.03332 1.03453 1.03393 1.03151 +1.02547 1.03332 1.03212 1.02426 1.03574 1.02004 1.02728 1.02306 +1.01822 1.02124 1.02245 1.03151 1.0291 1.01883 1.02366 1.02124 +1.01702 1.0152 1.02004 1.01581 1.0152 1.0146 1.01762 1.0152 +1.01883 1.01581 1.02185 1.02426 1.01822 1.01581 1.01037 1.0152 +1.01943 1.0152 1.01279 1.014 1.02004 1.02547 1.01822 1.01581 +1.0146 1.014 1.01218 1.00916 1.01037 1.00675 1.00735 1.08165 +1.1401 1.1373 1.13415 1.13835 1.1408 1.1338 1.1303 1.13275 +1.13765 1.13695 1.13905 1.1415 1.1394 1.11945 1.02608 1.00977 +1.0146 1.02185 1.0152 1.01822 1.01702 1.01279 1.01581 1.01943 +1.00796 1.01339 1.02849 1.01822 1.02185 1.02668 1.02728 1.02245 +1.02245 1.02185 1.02245 1.01883 1.02426 1.01641 1.01702 1.02366 +1.02426 1.02064 1.01762 1.014 1.03091 1.02668 1.02426 1.0303 +1.01883 1.01158 1.02366 1.02668 1.01581 1.01581 1.02849 1.02185 +1.01641 1.01339 1.02789 1.02124 1.02426 1.02849 1.03453 1.02849 +1.03755 1.03876 1.03634 1.04782 1.05386 1.06775 0.933664 0.21672 +0 0 0 0 0 0 0.00501667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0.00301 0.00301 0 0.00301 +0.00301 0.00301 0.00903 0.01204 0 0.00501667 0.00501667 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0.00501667 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0.00301 0 0 0 0.00200667 0 0 0 +0.00602 0.00401333 0.00100333 0 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0.11137 0.739816 1.03816 1.04057 1.04722 1.0442 1.0454 1.03393 +1.02487 1.03272 1.02728 1.03574 1.03091 1.02124 1.02849 1.02306 +1.02487 1.02306 1.0303 1.02426 1.01943 1.01943 1.02185 1.01943 +1.01098 1.014 1.02004 1.02245 1.02547 1.02245 1.01339 1.01218 +1.02366 1.02124 1.02668 1.01822 1.02064 1.0152 1.02547 1.02426 +1.0152 1.0146 1.0291 1.01581 1.02306 1.01218 1.01641 1.02004 +1.00554 1.01822 1.00977 1.01762 1.01581 1.00977 1.0152 1.1093 +1.138 1.1387 1.13905 1.1324 1.13345 1.13625 1.13765 1.13485 +1.1338 1.13205 1.1373 1.1415 1.1359 1.13275 1.0593 1.00252 +1.00433 1.01279 1.01037 1.0146 1.01279 1.02245 1.02064 1.02668 +1.02064 1.0146 1.02064 1.02547 1.0146 1.01098 1.02245 1.02366 +1.02185 1.01822 1.01943 1.0146 1.01822 1.02064 1.02064 1.02789 +1.01822 1.01943 1.02849 1.02426 1.0146 1.02124 1.01943 1.02789 +1.02547 1.02185 1.02124 1.02789 1.02064 1.02849 1.02608 1.03091 +1.02004 1.01943 1.02306 1.02306 1.02306 1.01883 1.02728 1.03393 +1.03574 1.03997 1.04359 1.05024 1.04118 0.797776 0.139463 0 +0 0 0 0 0 0 0 0.00200667 +0.00100333 0.00602 0 0 0 0.00301 0.00602 0 +0.00100333 0 0 0.00301 0 0 0.00301 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00200667 0.00301 0.00802667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0.00401333 0 0 0 0 0 +0 0 0 0.00100333 0 0.00401333 0.0140467 0.00401333 +0.00100333 0.00602 0.00903 0.00802667 0 0.00702333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0311033 0.50568 1.00796 1.04963 1.0442 1.03393 1.03514 +1.03695 1.03816 1.03272 1.03212 1.03151 1.02547 1.02487 1.02064 +1.02426 1.02547 1.0303 1.01762 1.02547 1.02064 1.01702 1.02366 +1.02124 1.02668 1.02366 1.01702 1.01822 1.02124 1.02004 1.02487 +1.0297 1.01943 1.014 1.01883 1.02245 1.01762 1.01702 1.01702 +1.02366 1.02306 1.02245 1.02426 1.0152 1.02789 1.0146 1.02185 +1.02306 1.02366 1.01641 1.0152 1.00796 1.01339 1.02789 1.12505 +1.14115 1.14185 1.13695 1.1366 1.13975 1.138 1.1345 1.138 +1.13135 1.12995 1.13905 1.13765 1.14045 1.1422 1.08935 1.01339 +1.01158 1.014 1.0146 1.0152 1.01339 1.02306 1.01762 1.02064 +1.0146 1.01279 1.02124 1.02124 1.02124 1.02306 1.0297 1.01943 +1.01883 1.01641 1.02306 1.02185 1.02306 1.01762 1.02306 1.0152 +1.01883 1.01339 1.0146 1.02064 1.02608 1.01822 1.01098 1.01641 +1.02426 1.02426 1.02004 1.02064 1.02487 1.02245 1.01339 1.03151 +1.02728 1.02366 1.02668 1.02608 1.03151 1.0297 1.03574 1.03816 +1.04118 1.05688 1.05205 1.02789 0.616168 0.06622 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0 0 0.00100333 0.00100333 0.00602 0.00702333 0.00501667 0.00200667 +0.00100333 0 0.00401333 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00702333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0.00401333 0 0.01204 0.00702333 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0 0 0 0.0110367 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0.253843 0.894376 1.05024 1.04782 1.05446 +1.04782 1.04299 1.04057 1.02487 1.02849 1.03393 1.0291 1.0297 +1.03393 1.02789 1.02608 1.03151 1.02245 1.02064 1.0303 1.02064 +1.02185 1.014 1.02789 1.01943 1.01822 1.02124 1.02366 1.02547 +1.00796 1.01581 1.01581 1.014 1.01822 1.0152 1.0146 1.01641 +1.01702 1.01943 1.0152 1.02185 1.02004 1.0152 1.01822 1.0152 +1.01037 1.01218 1.01279 1.02426 1.02487 1.01218 1.02487 1.13065 +1.1408 1.13975 1.13485 1.1387 1.1324 1.13625 1.13905 1.13205 +1.1394 1.13485 1.1352 1.1366 1.1331 1.13975 1.0918 1.00252 +1.00675 1.0152 1.00916 1.01762 1.02426 1.0146 1.01037 1.02306 +1.01762 1.02004 1.02124 1.01098 1.014 1.01762 1.0291 1.01581 +1.02849 1.03091 1.01943 1.01883 1.02124 1.01279 1.01581 1.01702 +1.014 1.02245 1.02185 1.02124 1.02849 1.02124 1.0297 1.02728 +1.02426 1.02789 1.02366 1.02124 1.03212 1.02547 1.02728 1.03091 +1.02306 1.03272 1.03816 1.03151 1.02849 1.03091 1.0454 1.04903 +1.0454 1.05567 0.963864 0.371233 0.00602 0 0 0 +0 0 0 0 0 0.00802667 0.00301 0 +0 0 0 0 0 0 0.0100333 0.0140467 +0.00802667 0 0 0.00100333 0 0 0.00200667 0.00802667 +0 0 0.00100333 0.00301 0.00602 0.00602 0.0100333 0.00602 +0 0.00100333 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0.00200667 0.00100333 0.00200667 0.00702333 0 0.00301 0 0 +0.00602 0.0100333 0.00100333 0 0 0 0 0 +0.00702333 0 0 0.00602 0 0 0 0.00401333 +0.00501667 0.00100333 0 0 0.00401333 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.08127 0.537787 1.00312 1.05326 +1.04178 1.0454 1.03755 1.03514 1.04238 1.03272 1.03272 1.03091 +1.0297 1.02547 1.02849 1.02426 1.02426 1.03634 1.0303 1.02124 +1.02849 1.02004 1.0291 1.0291 1.02004 1.02487 1.02124 1.01339 +1.01641 1.02124 1.01762 1.02668 1.02185 1.01822 1.01822 1.02185 +1.02547 1.02366 1.01943 1.02366 1.02306 1.01279 1.02487 1.01822 +1.02306 1.02124 1.01641 1.00856 1.0146 1.02185 1.01762 1.12155 +1.1408 1.13485 1.14185 1.1408 1.1366 1.1324 1.13415 1.1415 +1.13625 1.1359 1.1394 1.13695 1.1401 1.1429 1.08865 1.01581 +1.01098 1.01037 1.01822 1.02306 1.02306 1.01943 1.02306 1.01098 +1.02487 1.01943 1.01943 1.02789 1.02306 1.01279 1.02547 1.01943 +1.01883 1.01822 1.01762 1.0303 1.01822 1.02124 1.02487 1.02124 +1.01339 1.01943 1.01702 1.014 1.01158 1.02306 1.01702 1.02426 +1.01822 1.02245 1.02789 1.02306 1.02789 1.02487 1.02487 1.02306 +1.02849 1.03091 1.04057 1.04238 1.05205 1.04842 1.04661 1.05628 +1.03634 0.757848 0.167557 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00702333 0 0 0.00802667 0 0 0 +0 0 0 0 0.00301 0 0 0.00100333 +0.00200667 0.00401333 0 0.00100333 0.00100333 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0.00100333 0 0 0 0.00602 +0 0 0.00702333 0 0 0 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0.00401333 0 0 0 0.0100333 0 +0 0 0 0 0 0 0.20769 0.739816 +1.02064 1.05205 1.04601 1.04661 1.04299 1.03212 1.03755 1.03091 +1.02789 1.03332 1.03755 1.02849 1.03393 1.02668 1.01581 1.02064 +1.02608 1.02668 1.02185 1.02004 1.02245 1.02789 1.0152 1.02124 +1.0291 1.02245 1.02185 1.02124 1.02366 1.03091 1.02608 1.02487 +1.02245 1.02124 1.0297 1.02185 1.02306 1.0146 1.0152 1.01943 +1.02185 1.0146 1.01641 1.02487 1.01702 1.00071 1.0152 1.1044 +1.13905 1.13695 1.13275 1.13415 1.1338 1.13345 1.1331 1.138 +1.1352 1.1401 1.1394 1.13905 1.1422 1.1352 1.06956 1.00735 +1.02306 1.0152 1.02064 1.0146 1.0146 1.02185 1.02487 1.02366 +1.02004 1.02306 1.01581 1.01279 1.02608 1.02124 1.01883 1.01702 +1.02245 1.01883 1.014 1.03453 1.02004 1.02426 1.01883 1.01641 +1.0303 1.02124 1.02487 1.0303 1.02547 1.02064 1.02487 1.02426 +1.0152 1.02426 1.02245 1.03574 1.0297 1.02849 1.0291 1.02547 +1.03755 1.03936 1.03876 1.0442 1.04782 1.05628 1.05748 0.9542 +0.40033 0.0220733 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0 0 0.00301 0 0 0 0 0.00100333 +0 0 0 0 0 0.00602 0.00602 0.00501667 +0 0 0 0 0.00100333 0 0 0.00301 +0.00501667 0.00602 0.00401333 0.00602 0.00702333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00301 0.00200667 0 0 0 0.00702333 +0 0 0 0 0 0 0.00602 0 +0 0 0 0 0 0.00802667 0.00301 0.00401333 +0.00100333 0 0.00501667 0.00200667 0 0 0 0 +0 0 0 0 0 0.00301 0 0 +0 0 0 0 0 0 0 0.0110367 +0.301 0.7952 1.03151 1.0599 1.0442 1.04661 1.03816 1.04238 +1.0448 1.03091 1.03212 1.02789 1.03514 1.02124 1.02608 1.03453 +1.02608 1.02547 1.02849 1.03272 1.03151 1.01883 1.02124 1.02668 +1.02547 1.02789 1.0291 1.02366 1.02547 1.02608 1.02306 1.02185 +1.02064 1.02245 1.01943 1.01883 1.00977 1.02306 1.02487 1.02789 +1.01762 1.02124 1.0297 1.01762 1.0146 1.00433 1.01037 1.0799 +1.1387 1.1443 1.1359 1.14115 1.1443 1.1359 1.1352 1.1394 +1.13555 1.1359 1.13695 1.1359 1.1394 1.12575 1.03816 1.0146 +1.01158 1.02004 1.02668 1.02366 1.02668 1.01883 1.0146 1.02728 +1.02547 1.02547 1.01279 1.02004 1.01822 1.02487 1.02608 1.02366 +1.02668 1.01702 1.01762 1.02487 1.02306 1.02245 1.02306 1.02185 +1.02245 1.02064 1.01822 1.02789 1.03332 1.01883 1.02004 1.02849 +1.02426 1.02789 1.02547 1.03091 1.03755 1.03755 1.03393 1.03151 +1.04359 1.04238 1.04903 1.05869 1.06171 1.00071 0.588957 0.101337 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00401333 0 0.00401333 +0 0 0 0.00100333 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0 0 0 0 0 0 0 +0 0 0.00602 0.0110367 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0.00200667 0.00100333 0 0 0 0 0 0 +0 0 0 0.00200667 0.00903 0 0 0 +0.00501667 0 0 0.0100333 0 0 0.00602 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0 0 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0130433 0.266887 0.71148 0.998292 1.05205 1.05265 1.04963 +1.04661 1.03634 1.04299 1.03574 1.03332 1.02366 1.03151 1.03332 +1.03151 1.03091 1.02245 1.02426 1.0303 1.02789 1.03936 1.02608 +1.01581 1.0291 1.03514 1.01822 1.02124 1.02124 1.01883 1.02004 +1.02185 1.02849 1.02728 1.02306 1.02668 1.02728 1.02789 1.02064 +1.02668 1.02547 1.01641 1.02185 1.02064 1.02004 1.02185 1.03876 +1.12015 1.1387 1.1408 1.1373 1.1429 1.1429 1.1387 1.1366 +1.1352 1.14465 1.14751 1.14542 1.145 1.08585 1.0146 1.02185 +1.02004 1.01943 1.02366 1.02064 1.02487 1.02547 1.02789 1.02245 +1.02728 1.014 1.02487 1.02849 1.02426 1.02608 1.02064 1.02728 +1.02124 1.02668 1.02728 1.02849 1.03332 1.02728 1.0297 1.02547 +1.02245 1.02849 1.03272 1.02426 1.02366 1.02608 1.02004 1.0291 +1.0291 1.03272 1.03997 1.03695 1.03816 1.04963 1.04661 1.04238 +1.05326 1.05205 1.06352 0.998292 0.62776 0.169563 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00903 0 0 0 0 0 +0.00501667 0 0.00903 0 0.00802667 0.00802667 0.00501667 0 +0.00401333 0 0.00200667 0 0 0 0.00301 0 +0.00200667 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0 0 0 0 0 0 0 0.00200667 +0 0 0 0.00501667 0 0 0.00602 0 +0 0 0 0 0.00301 0.00200667 0 0 +0 0 0.00301 0 0 0 0 0 +0 0 0 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.1806 0.539793 0.9391 1.03755 +1.05567 1.05144 1.04178 1.04057 1.04359 1.04661 1.04178 1.03393 +1.03332 1.03272 1.03695 1.03755 1.03393 1.02789 1.03393 1.03393 +1.03453 1.02608 1.02668 1.02124 1.03151 1.03393 1.02245 1.03091 +1.0297 1.0291 1.02547 1.02608 1.02004 1.02004 1.02487 1.02547 +1.02849 1.02185 1.02245 1.02487 1.02849 1.02366 1.01762 1.02608 +1.06896 1.1366 1.14542 1.1415 1.14255 1.1422 1.1443 1.13835 +1.1387 1.1443 1.14625 1.14325 1.1114 1.03816 1.02608 1.02306 +1.01762 1.02124 1.02366 1.02487 1.02487 1.03393 1.02487 1.02668 +1.03212 1.03151 1.02426 1.01943 1.0291 1.02547 1.02306 1.02306 +1.02487 1.02487 1.02004 1.02547 1.02608 1.02608 1.02366 1.0291 +1.02789 1.03212 1.03695 1.0297 1.03212 1.03272 1.03393 1.02487 +1.02789 1.03514 1.03574 1.0448 1.0442 1.05326 1.04782 1.05567 +1.0448 0.973528 0.57792 0.18963 0 0 0 0 +0 0 0 0 0 0 0.00301 0 +0 0 0 0 0.00602 0 0 0 +0 0 0.00200667 0 0 0 0 0 +0 0.00401333 0.00100333 0 0.00501667 0 0 0 +0 0.00100333 0.00301 0.00702333 0 0 0.00501667 0 +0 0 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0.00602 0 0 0.00100333 0.00100333 0.00200667 0 +0 0 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00602 0 0 0 0 0.00802667 0.00501667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.05418 0.306017 +0.641928 0.94816 1.02728 1.0599 1.05446 1.0448 1.04299 1.04118 +1.04057 1.04842 1.04118 1.03574 1.03936 1.04178 1.03574 1.03272 +1.02366 1.03151 1.03212 1.03453 1.03936 1.02849 1.03212 1.03876 +1.03453 1.0291 1.02668 1.03816 1.03091 1.03876 1.0291 1.03574 +1.02849 1.03634 1.03453 1.0291 1.02426 1.03212 1.03272 1.02426 +1.02608 1.07379 1.12995 1.14709 1.14876 1.14395 1.14793 1.145 +1.14751 1.14625 1.14185 1.1142 1.0442 1.02547 1.02849 1.02789 +1.02849 1.0291 1.0297 1.02728 1.02728 1.02849 1.02668 1.03272 +1.0291 1.02728 1.0291 1.03755 1.02849 1.03091 1.03091 1.02366 +1.03755 1.02668 1.03212 1.02728 1.0297 1.03151 1.03091 1.02849 +1.03574 1.02789 1.03453 1.04238 1.04299 1.03453 1.04057 1.0448 +1.03876 1.0442 1.0448 1.05446 1.05628 1.05507 1.02064 0.845432 +0.431433 0.110367 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00501667 0 0.00602 0 +0 0 0 0 0 0 0 0 +0 0 0.00903 0 0.00100333 0 0 0.00702333 +0.00200667 0 0 0 0.00200667 0 0.00100333 0.00602 +0 0.00401333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0.00802667 0 +0 0 0 0.00200667 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.06622 0.254847 0.53578 0.871192 0.992856 1.04057 1.05446 +1.05628 1.05265 1.05205 1.04359 1.03876 1.04057 1.03936 1.03574 +1.04299 1.0291 1.03574 1.04057 1.0303 1.03151 1.03393 1.03936 +1.02426 1.03212 1.03393 1.03453 1.03332 1.03332 1.03695 1.03393 +1.0291 1.03453 1.03634 1.0297 1.03755 1.03755 1.03212 1.02849 +1.03393 1.03332 1.05869 1.1079 1.13205 1.14667 1.14751 1.14584 +1.14876 1.1296 1.0848 1.04903 1.03393 1.03272 1.03332 1.03453 +1.03453 1.03574 1.03755 1.03453 1.04238 1.03997 1.0303 1.03695 +1.03212 1.03453 1.03151 1.03574 1.03393 1.03876 1.02608 1.03876 +1.03272 1.03212 1.03816 1.04178 1.03816 1.03212 1.03212 1.03151 +1.0442 1.04238 1.03091 1.0454 1.04903 1.03936 1.05144 1.04359 +1.05446 1.04963 1.04722 1.01037 0.87892 0.515713 0.199663 0.02107 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00301 0 0 0 0 0.00200667 +0 0 0 0.00602 0 0 0 0.00200667 +0 0 0 0 0 0 0 0 +0 0.00501667 0.00301 0 0 0 0 0 +0.0110367 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0100333 0.12642 0.320063 0.554843 +0.804216 0.959032 1.01641 1.03997 1.04903 1.05084 1.04661 1.04238 +1.0442 1.04359 1.05205 1.04782 1.04842 1.0442 1.03936 1.04118 +1.04238 1.05205 1.0442 1.03936 1.04722 1.04661 1.03514 1.03634 +1.03997 1.04359 1.03695 1.04359 1.04118 1.04661 1.03634 1.03755 +1.04238 1.03695 1.04601 1.0442 1.0599 1.07319 1.08305 1.0862 +1.06594 1.05084 1.03876 1.03997 1.03816 1.0454 1.0442 1.03997 +1.03634 1.04178 1.03755 1.03212 1.03755 1.03634 1.04238 1.04057 +1.03695 1.03936 1.03755 1.0442 1.0448 1.03876 1.03755 1.04299 +1.04359 1.03755 1.0448 1.0442 1.04178 1.04359 1.04782 1.0442 +1.05024 1.04842 1.04238 1.05507 1.0605 1.04963 1.0454 1.00735 +0.934872 0.680568 0.42742 0.17458 0.02709 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00602 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0100333 0 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0581933 0.17157 0.29799 0.452503 0.641928 0.818384 0.931852 +0.962656 1.00614 1.0146 1.02426 1.0303 1.03332 1.04782 1.04661 +1.04722 1.04722 1.05326 1.04359 1.04722 1.0448 1.04299 1.0454 +1.04842 1.04963 1.05386 1.05024 1.04661 1.0448 1.05024 1.04118 +1.04178 1.04842 1.04601 1.04299 1.04842 1.04782 1.04842 1.04722 +1.05024 1.04601 1.04722 1.05265 1.03997 1.04178 1.04601 1.05144 +1.05024 1.04963 1.05326 1.05084 1.0448 1.04903 1.04661 1.04963 +1.05205 1.0454 1.04782 1.05144 1.04359 1.04842 1.05144 1.05265 +1.05205 1.05084 1.04661 1.0442 1.04178 1.03695 1.03514 1.01581 +1.00977 0.978964 0.922712 0.787472 0.61488 0.462537 0.295983 0.145483 +0.0411367 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0341133 0.0441467 0.0471567 0.0441467 0.05418 0.05117 0.0602 +0.0702333 0.0672233 0.06923 0.0672233 0.08428 0.0973233 0.06923 0.0903 +0.0983267 0.0983267 0.0983267 0.11137 0.125417 0.115383 0.101337 0.106353 +0.107357 0.103343 0.109363 0.106353 0.12341 0.11438 0.124413 0.128427 +0.12341 0.127423 0.143477 0.13244 0.139463 0.139463 0.14448 0.12642 +0.133443 0.139463 0.124413 0.122407 0.136453 0.13244 0.124413 0.110367 +0.125417 0.121403 0.131437 0.1204 0.110367 0.125417 0.118393 0.130433 +0.149497 0.146487 0.152507 0.121403 0.109363 0.107357 0.0973233 0.0983267 +0.09632 0.0943133 0.08428 0.0882933 0.08127 0.10836 0.11137 0.155517 +0.206687 0.27391 0.314043 0.366217 0.41538 0.4515 0.49063 0.49063 +0.522737 0.542803 0.551833 0.570897 0.584943 0.584943 0.597987 0.631624 +0.649656 0.67284 0.671552 0.690872 0.716632 0.721784 0.710192 0.7308 +0.74368 0.729512 0.744968 0.751408 0.735952 0.761712 0.768152 0.777168 +0.791336 0.78232 0.779744 0.765576 0.786184 0.786184 0.811944 0.831264 +0.796488 0.779744 0.768152 0.802928 0.783608 0.791336 0.781032 0.760424 +0.787472 0.760424 0.77588 0.747544 0.742392 0.723072 0.723072 0.670264 +0.65352 0.632912 0.57491 0.5117 0.43344 0.38829 0.336117 0.268893 +0.21973 0.14147 0.0762533 0.0401333 0.0280933 0.01505 0.02107 0.0321067 +0.0260867 0.0190633 0.0190633 0.0140467 0.0260867 0.02709 0.0230767 0.0160533 +0.0351167 0.04515 0.0260867 0.0160533 0.01505 0.0170567 0.0200667 0.0110367 +0.01505 0.00602 0.0110367 0.0190633 0.00401333 0.0160533 0.0220733 0.01204 +0.0140467 0.01204 0.00401333 0 0 0.00200667 0 0 +0.00301 0.00903 0.0140467 0.0190633 0 0 0 0 +0 0.00401333 0 0 0 0 0 0.00301 +0 0 0 0 0.00602 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.118393 0.17759 0.17458 0.181603 0.172573 0.161537 0.1806 +0.185617 0.191637 0.1806 0.184613 0.190633 0.1806 0.170567 0.191637 +0.19866 0.19565 0.194647 0.184613 0.187623 0.17759 0.17157 0.17759 +0.16254 0.167557 0.173577 0.172573 0.169563 0.160533 0.16254 0.178593 +0.182607 0.173577 0.157523 0.167557 0.17458 0.137457 0.15652 0.160533 +0.161537 0.1505 0.1505 0.15953 0.148493 0.14147 0.145483 0.152507 +0.1505 0.163543 0.14749 0.15351 0.139463 0.134447 0.140467 0.15652 +0.14147 0.158527 0.14448 0.13545 0.136453 0.14147 0.139463 0.13846 +0.12943 0.122407 0.128427 0.10836 0.109363 0.113377 0.11739 0.0983267 +0.112373 0.113377 0.116387 0.09933 0.0983267 0.0983267 0.0913033 0.0903 +0.0913033 0.08428 0.0882933 0.0953167 0.0973233 0.10234 0.103343 0.10836 +0.110367 0.101337 0.09933 0.10836 0.11137 0.112373 0.11137 0.10836 +0.100333 0.11137 0.101337 0.11137 0.104347 0.09933 0.118393 0.11438 +0.11739 0.0983267 0.10836 0.109363 0.112373 0.124413 0.109363 0.122407 +0.11739 0.1204 0.115383 0.125417 0.119397 0.113377 0.112373 0.115383 +0.121403 0.100333 0.125417 0.118393 0.11739 0.110367 0.115383 0.11137 +0.10535 0.101337 0.119397 0.112373 0.103343 0.103343 0.11438 0.103343 +0.106353 0.122407 0.112373 0.118393 0.131437 0.127423 0.12341 0.152507 +0.134447 0.1204 0.149497 0.136453 0.134447 0.15351 0.164547 0.166553 +0.164547 0.178593 0.151503 0.157523 0.16555 0.14448 0.167557 0.164547 +0.184613 0.17458 0.164547 0.16856 0.148493 0.1505 0.166553 0.18361 +0.169563 0.169563 0.164547 0.15652 0.158527 0.1505 0.14448 0.14147 +0.143477 0.143477 0.128427 0.151503 0.151503 0.142473 0.139463 0.14448 +0.130433 0.122407 0.109363 0.100333 0.109363 0.100333 0.0882933 0.0882933 +0.0973233 0.107357 0.0923067 0.0772567 0.0802667 0.08729 0.04515 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.10234 0.1505 0.14147 0.1505 0.148493 0.158527 +0.151503 0.15652 0.14448 0.151503 0.161537 0.152507 0.15652 0.167557 +0.154513 0.14749 0.134447 0.139463 0.14147 0.13545 0.140467 0.134447 +0.131437 0.145483 0.14749 0.142473 0.143477 0.12943 0.15351 0.139463 +0.12943 0.128427 0.140467 0.145483 0.14147 0.14448 0.15652 0.15351 +0.13244 0.155517 0.143477 0.145483 0.14448 0.142473 0.15652 0.128427 +0.143477 0.15351 0.14749 0.136453 0.11739 0.140467 0.13545 0.140467 +0.13545 0.140467 0.127423 0.13244 0.140467 0.137457 0.133443 0.130433 +0.121403 0.12642 0.12943 0.12642 0.134447 0.118393 0.118393 0.118393 +0.125417 0.113377 0.11137 0.09632 0.11739 0.09933 0.110367 0.10535 +0.106353 0.1204 0.106353 0.09933 0.107357 0.104347 0.09632 0.103343 +0.10234 0.109363 0.0983267 0.09632 0.101337 0.0983267 0.10535 0.101337 +0.09632 0.10234 0.0892967 0.107357 0.10836 0.0983267 0.107357 0.104347 +0.115383 0.0892967 0.10535 0.0973233 0.109363 0.10535 0.0943133 0.104347 +0.107357 0.0983267 0.122407 0.10535 0.113377 0.11137 0.106353 0.10535 +0.103343 0.0943133 0.0943133 0.112373 0.10836 0.101337 0.103343 0.0983267 +0.106353 0.110367 0.09632 0.09933 0.103343 0.0983267 0.0953167 0.10535 +0.11438 0.103343 0.104347 0.130433 0.106353 0.128427 0.11739 0.13244 +0.106353 0.12943 0.134447 0.133443 0.124413 0.139463 0.12642 0.12943 +0.13545 0.149497 0.14749 0.146487 0.14749 0.146487 0.133443 0.13846 +0.16555 0.140467 0.15953 0.151503 0.158527 0.157523 0.14147 0.140467 +0.15652 0.148493 0.160533 0.151503 0.15652 0.154513 0.148493 0.15953 +0.160533 0.161537 0.148493 0.1505 0.157523 0.16254 0.1505 0.163543 +0.169563 0.17458 0.173577 0.161537 0.16254 0.161537 0.166553 0.170567 +0.16856 0.173577 0.17458 0.172573 0.166553 0.124413 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.09933 0.151503 0.157523 0.139463 0.145483 +0.142473 0.143477 0.145483 0.152507 0.14749 0.14749 0.142473 0.143477 +0.14147 0.130433 0.134447 0.140467 0.142473 0.145483 0.133443 0.13545 +0.1505 0.146487 0.134447 0.13545 0.133443 0.130433 0.128427 0.13244 +0.130433 0.148493 0.14749 0.137457 0.13244 0.130433 0.133443 0.133443 +0.140467 0.1505 0.143477 0.13846 0.133443 0.143477 0.149497 0.143477 +0.15351 0.145483 0.14147 0.142473 0.13545 0.155517 0.139463 0.148493 +0.13545 0.13545 0.127423 0.133443 0.134447 0.128427 0.137457 0.124413 +0.124413 0.13244 0.140467 0.113377 0.127423 0.13545 0.139463 0.128427 +0.130433 0.10535 0.13244 0.10535 0.113377 0.128427 0.122407 0.113377 +0.12943 0.1204 0.115383 0.11137 0.116387 0.12341 0.11137 0.131437 +0.115383 0.116387 0.107357 0.115383 0.119397 0.1204 0.119397 0.1204 +0.107357 0.115383 0.115383 0.1204 0.119397 0.11438 0.1204 0.115383 +0.121403 0.110367 0.121403 0.136453 0.140467 0.121403 0.125417 0.125417 +0.122407 0.12341 0.12943 0.12642 0.118393 0.10836 0.12341 0.11137 +0.12642 0.11739 0.112373 0.119397 0.116387 0.12341 0.11137 0.115383 +0.109363 0.11739 0.12341 0.124413 0.124413 0.11739 0.116387 0.125417 +0.10535 0.12642 0.139463 0.127423 0.12943 0.127423 0.134447 0.128427 +0.125417 0.130433 0.139463 0.154513 0.14147 0.14749 0.154513 0.13545 +0.13244 0.142473 0.142473 0.14448 0.140467 0.152507 0.151503 0.12943 +0.148493 0.145483 0.148493 0.13846 0.149497 0.14749 0.142473 0.12642 +0.15351 0.143477 0.140467 0.151503 0.148493 0.15351 0.155517 0.137457 +0.152507 0.146487 0.145483 0.14147 0.14448 0.1505 0.14448 0.1505 +0.137457 0.149497 0.140467 0.1505 0.151503 0.149497 0.143477 0.146487 +0.149497 0.15351 0.163543 0.160533 0.116387 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.14448 0.143477 0.128427 0.139463 +0.14448 0.14448 0.140467 0.14147 0.137457 0.13545 0.124413 0.134447 +0.14147 0.139463 0.151503 0.14749 0.149497 0.14147 0.136453 0.14448 +0.154513 0.14147 0.14147 0.13846 0.14448 0.131437 0.137457 0.134447 +0.130433 0.130433 0.112373 0.127423 0.134447 0.133443 0.130433 0.139463 +0.145483 0.133443 0.13846 0.13545 0.139463 0.142473 0.146487 0.151503 +0.139463 0.154513 0.146487 0.139463 0.131437 0.13846 0.14448 0.148493 +0.14147 0.140467 0.137457 0.137457 0.12341 0.1505 0.128427 0.13846 +0.127423 0.13244 0.13244 0.130433 0.137457 0.13244 0.13244 0.12341 +0.139463 0.134447 0.13244 0.110367 0.134447 0.127423 0.125417 0.137457 +0.127423 0.121403 0.128427 0.1204 0.12341 0.121403 0.124413 0.134447 +0.12642 0.122407 0.127423 0.115383 0.134447 0.130433 0.121403 0.1204 +0.118393 0.124413 0.130433 0.137457 0.121403 0.122407 0.128427 0.13244 +0.130433 0.136453 0.12943 0.143477 0.136453 0.12943 0.127423 0.11739 +0.139463 0.12642 0.130433 0.12943 0.130433 0.12943 0.125417 0.12341 +0.131437 0.12341 0.128427 0.125417 0.112373 0.128427 0.112373 0.127423 +0.118393 0.12642 0.122407 0.12642 0.136453 0.13846 0.131437 0.13846 +0.124413 0.124413 0.142473 0.14147 0.131437 0.143477 0.137457 0.140467 +0.125417 0.142473 0.14147 0.143477 0.152507 0.145483 0.151503 0.14749 +0.14147 0.14448 0.13846 0.146487 0.142473 0.13244 0.145483 0.136453 +0.146487 0.140467 0.14749 0.13846 0.133443 0.148493 0.139463 0.134447 +0.139463 0.149497 0.13545 0.142473 0.14147 0.13846 0.14448 0.1505 +0.1505 0.148493 0.148493 0.14749 0.139463 0.13846 0.134447 0.15351 +0.15953 0.155517 0.160533 0.148493 0.14749 0.14147 0.137457 0.151503 +0.15652 0.146487 0.155517 0.119397 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0140467 0.14147 0.136453 0.142473 +0.14448 0.140467 0.13846 0.137457 0.13846 0.146487 0.139463 0.152507 +0.14448 0.14749 0.14749 0.146487 0.140467 0.137457 0.139463 0.14749 +0.149497 0.14448 0.136453 0.131437 0.14749 0.140467 0.142473 0.13846 +0.151503 0.142473 0.142473 0.143477 0.14147 0.118393 0.139463 0.139463 +0.139463 0.142473 0.140467 0.14147 0.13846 0.14448 0.146487 0.14147 +0.14448 0.140467 0.142473 0.146487 0.12642 0.15351 0.155517 0.149497 +0.139463 0.124413 0.139463 0.14147 0.137457 0.14448 0.136453 0.137457 +0.14448 0.146487 0.13846 0.131437 0.143477 0.134447 0.136453 0.1505 +0.14448 0.125417 0.124413 0.130433 0.140467 0.133443 0.137457 0.12642 +0.133443 0.13846 0.128427 0.121403 0.128427 0.130433 0.139463 0.127423 +0.133443 0.124413 0.130433 0.139463 0.13846 0.13545 0.127423 0.128427 +0.12943 0.127423 0.122407 0.134447 0.136453 0.13846 0.133443 0.13545 +0.14147 0.131437 0.13244 0.128427 0.14448 0.13244 0.131437 0.131437 +0.14749 0.124413 0.131437 0.142473 0.128427 0.136453 0.127423 0.14448 +0.134447 0.119397 0.13545 0.140467 0.13244 0.124413 0.136453 0.131437 +0.124413 0.13545 0.139463 0.127423 0.145483 0.142473 0.145483 0.148493 +0.12642 0.140467 0.14147 0.146487 0.12642 0.140467 0.133443 0.13846 +0.13545 0.14448 0.152507 0.14147 0.142473 0.145483 0.152507 0.131437 +0.148493 0.13846 0.13846 0.13846 0.148493 0.143477 0.137457 0.128427 +0.139463 0.12943 0.142473 0.14749 0.137457 0.151503 0.160533 0.145483 +0.148493 0.143477 0.13846 0.148493 0.146487 0.142473 0.137457 0.146487 +0.14448 0.155517 0.148493 0.152507 0.151503 0.14749 0.13244 0.151503 +0.151503 0.149497 0.14448 0.155517 0.1505 0.14749 0.148493 0.146487 +0.158527 0.1505 0.154513 0.02107 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0170567 0.148493 0.154513 +0.15351 0.157523 0.163543 0.158527 0.151503 0.16254 0.155517 0.154513 +0.16555 0.158527 0.161537 0.151503 0.15953 0.164547 0.158527 0.163543 +0.16555 0.160533 0.16856 0.16856 0.170567 0.155517 0.15351 0.16254 +0.16555 0.160533 0.166553 0.17157 0.16856 0.16856 0.173577 0.161537 +0.163543 0.16555 0.1806 0.16254 0.164547 0.161537 0.17458 0.16555 +0.15652 0.160533 0.164547 0.17458 0.170567 0.16555 0.166553 0.16555 +0.15652 0.155517 0.17759 0.164547 0.164547 0.167557 0.161537 0.16555 +0.161537 0.166553 0.16254 0.169563 0.164547 0.176587 0.169563 0.158527 +0.161537 0.14147 0.17458 0.161537 0.160533 0.152507 0.155517 0.154513 +0.164547 0.15652 0.154513 0.151503 0.161537 0.172573 0.169563 0.158527 +0.161537 0.15953 0.161537 0.16254 0.173577 0.163543 0.160533 0.155517 +0.160533 0.160533 0.167557 0.157523 0.169563 0.16555 0.166553 0.15953 +0.158527 0.16555 0.154513 0.17458 0.173577 0.160533 0.160533 0.1505 +0.16254 0.154513 0.160533 0.158527 0.173577 0.158527 0.14147 0.169563 +0.160533 0.149497 0.16254 0.164547 0.164547 0.166553 0.167557 0.15953 +0.15351 0.16555 0.17157 0.158527 0.163543 0.167557 0.146487 0.167557 +0.161537 0.163543 0.170567 0.16555 0.161537 0.166553 0.164547 0.157523 +0.154513 0.154513 0.157523 0.172573 0.146487 0.160533 0.149497 0.149497 +0.163543 0.16254 0.161537 0.161537 0.15953 0.166553 0.155517 0.13846 +0.161537 0.14749 0.152507 0.155517 0.155517 0.13545 0.13545 0.155517 +0.16254 0.163543 0.151503 0.149497 0.1505 0.15652 0.13846 0.14749 +0.14448 0.14147 0.149497 0.155517 0.15652 0.15652 0.137457 0.139463 +0.14749 0.148493 0.149497 0.151503 0.152507 0.145483 0.14147 0.161537 +0.154513 0.169563 0.02107 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0110367 0.0792633 +0.0832767 0.0742467 0.0612033 0.0672233 0.0762533 0.0772567 0.07525 0.0762533 +0.0702333 0.07826 0.07224 0.06321 0.0792633 0.06923 0.0672233 0.0622067 +0.0712367 0.06923 0.0672233 0.07525 0.0762533 0.0622067 0.0642133 0.06622 +0.06622 0.0642133 0.0702333 0.0682267 0.0602 0.06622 0.0652167 0.05719 +0.0622067 0.0652167 0.0551833 0.0551833 0.0501667 0.0702333 0.05418 0.0501667 +0.0551833 0.0642133 0.0622067 0.0401333 0.05418 0.0381267 0.0581933 0.0501667 +0.0461533 0.05719 0.0501667 0.0491633 0.0581933 0.0471567 0.0461533 0.05418 +0.0491633 0.0441467 0.0461533 0.0461533 0.05418 0.0461533 0.03913 0.0301 +0.04816 0.04816 0.0411367 0.0371233 0.04515 0.04515 0.0401333 0.0381267 +0.0561867 0.0341133 0.0501667 0.03612 0.04214 0.0441467 0.0561867 0.0521733 +0.04816 0.05117 0.0491633 0.0381267 0.0612033 0.0461533 0.0491633 0.04515 +0.0602 0.0491633 0.0561867 0.05418 0.05719 0.0622067 0.0441467 0.0622067 +0.0561867 0.0551833 0.0591967 0.05418 0.0591967 0.06321 0.0561867 0.0521733 +0.06321 0.0561867 0.05418 0.0431433 0.0672233 0.06321 0.0612033 0.0381267 +0.06923 0.0682267 0.0591967 0.0581933 0.06321 0.07826 0.0622067 0.06622 +0.0642133 0.0712367 0.0772567 0.07826 0.0822733 0.0822733 0.0642133 0.0792633 +0.0762533 0.08127 0.10535 0.10234 0.0983267 0.106353 0.0953167 0.115383 +0.100333 0.110367 0.116387 0.115383 0.112373 0.10836 0.10234 0.107357 +0.11739 0.107357 0.107357 0.128427 0.128427 0.13846 0.137457 0.130433 +0.14448 0.136453 0.137457 0.130433 0.136453 0.14749 0.13545 0.127423 +0.137457 0.145483 0.14749 0.148493 0.1505 0.154513 0.143477 0.160533 +0.161537 0.155517 0.14749 0.161537 0.160533 0.16555 0.166553 0.176587 +0.15953 0.16555 0.157523 0.172573 0.16555 0.16856 0.15652 0.16856 +0.175583 0.0260867 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.01806 0.0230767 0.0301 0.0411367 0.0301 0.0341133 0.0371233 0.0230767 +0.02709 0.0290967 0.03311 0.03311 0.0321067 0.0351167 0.0341133 0.04515 +0.0321067 0.0311033 0.03913 0.0401333 0.0351167 0.0160533 0.0381267 0.0220733 +0.03612 0.0290967 0.0230767 0.0341133 0.0381267 0.02709 0.0321067 0.0260867 +0.03913 0.03311 0.0280933 0.0411367 0.0351167 0.0401333 0.0220733 0.0341133 +0.02709 0.02408 0.0250833 0.02408 0.0280933 0.0230767 0.0290967 0.0311033 +0.0280933 0.02709 0.0250833 0.0401333 0.0371233 0.0321067 0.0220733 0.0321067 +0.0321067 0.0200667 0.0351167 0.02408 0.0250833 0.02709 0.0250833 0.02709 +0.0311033 0.0230767 0.02408 0.0290967 0.03612 0.0371233 0.02107 0.0200667 +0.0321067 0.0250833 0.0200667 0.0200667 0.02408 0.02709 0.0290967 0.0290967 +0.0220733 0.0250833 0.02107 0.02107 0.0351167 0.0260867 0.01806 0.0371233 +0.02408 0.0250833 0.0280933 0.0250833 0.0280933 0.02408 0.0280933 0.0260867 +0.0250833 0.02107 0.02709 0.03311 0.02408 0.0290967 0.01806 0.0341133 +0.03311 0.0170567 0.0250833 0.01806 0.0220733 0.0381267 0.0250833 0.03311 +0.01204 0.02709 0.02408 0.0250833 0.02107 0.0280933 0.0311033 0.0200667 +0.0140467 0.0301 0.0351167 0.0250833 0.0220733 0.0371233 0.0351167 0.0351167 +0.02408 0.0280933 0.0351167 0.0230767 0.0290967 0.0371233 0.0220733 0.0371233 +0.0290967 0.02107 0.0250833 0.0321067 0.0411367 0.0321067 0.0351167 0.02107 +0.0301 0.0371233 0.01806 0.0220733 0.0301 0.04515 0.04214 0.0290967 +0.0401333 0.05418 0.04515 0.0501667 0.0280933 0.0321067 0.04214 0.04214 +0.0351167 0.03612 0.04214 0.0461533 0.04816 0.04214 0.04214 0.0501667 +0.0521733 0.05117 0.05418 0.0561867 0.0491633 0.0471567 0.04214 0.05117 +0.0551833 0.0602 0.0501667 0.0551833 0.06321 0.0682267 0.08127 0.0762533 +0.00702333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0230767 0.0260867 0.0301 0.0200667 0.02408 0.0200667 0.0311033 +0.0290967 0.0190633 0.02709 0.0290967 0.0250833 0.0311033 0.0401333 0.0351167 +0.0280933 0.0311033 0.0290967 0.0290967 0.0301 0.03311 0.0280933 0.0290967 +0.0230767 0.0301 0.0401333 0.0351167 0.0321067 0.0311033 0.0290967 0.0371233 +0.0290967 0.01806 0.0461533 0.0341133 0.0190633 0.0280933 0.03311 0.03913 +0.0280933 0.0371233 0.0260867 0.0190633 0.0250833 0.0260867 0.03612 0.0321067 +0.0341133 0.03612 0.0311033 0.0401333 0.0321067 0.0160533 0.0230767 0.02709 +0.03311 0.0301 0.02709 0.0220733 0.0311033 0.0260867 0.0321067 0.03311 +0.0250833 0.0280933 0.02709 0.0321067 0.02408 0.02709 0.0290967 0.0290967 +0.0250833 0.0250833 0.03612 0.0290967 0.02709 0.0311033 0.0250833 0.0321067 +0.0371233 0.0130433 0.0321067 0.0301 0.0280933 0.02408 0.03311 0.0230767 +0.02107 0.0341133 0.0301 0.02107 0.0260867 0.02408 0.0301 0.0250833 +0.02107 0.0351167 0.0220733 0.0290967 0.03311 0.02709 0.0441467 0.0351167 +0.02709 0.0250833 0.0301 0.0311033 0.0311033 0.0280933 0.0401333 0.02408 +0.0301 0.0220733 0.0301 0.0301 0.0250833 0.03311 0.0220733 0.0351167 +0.0250833 0.01505 0.0321067 0.0341133 0.0290967 0.0200667 0.03311 0.0301 +0.0230767 0.02709 0.0401333 0.03311 0.0170567 0.03612 0.0260867 0.0290967 +0.0381267 0.0250833 0.0341133 0.0190633 0.0371233 0.0381267 0.03311 0.03913 +0.02709 0.0200667 0.0280933 0.01806 0.0351167 0.0290967 0.03311 0.0290967 +0.0230767 0.0280933 0.02709 0.03311 0.0341133 0.0311033 0.02709 0.03612 +0.02709 0.0250833 0.0401333 0.0170567 0.0431433 0.0321067 0.02709 0.02709 +0.03612 0.0280933 0.02408 0.0471567 0.0371233 0.0371233 0.03612 0.03612 +0.0381267 0.0411367 0.03612 0.0190633 0.0200667 0.0401333 0.0642133 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0160533 0.01505 0.0220733 0.0200667 0.0321067 0.0250833 +0.0200667 0.0290967 0.0371233 0.0290967 0.0351167 0.0411367 0.0230767 0.0200667 +0.0160533 0.0290967 0.0301 0.03311 0.0280933 0.0220733 0.02709 0.0381267 +0.0321067 0.03612 0.03913 0.02709 0.03612 0.0301 0.02408 0.0230767 +0.03311 0.0371233 0.0290967 0.0311033 0.0280933 0.0371233 0.03311 0.02408 +0.0371233 0.02709 0.01806 0.03311 0.0321067 0.02408 0.03612 0.03311 +0.0371233 0.0431433 0.0190633 0.0321067 0.0351167 0.02408 0.0371233 0.0341133 +0.0371233 0.02408 0.0301 0.02709 0.0311033 0.0301 0.0381267 0.0311033 +0.0290967 0.0381267 0.0260867 0.0200667 0.0280933 0.04515 0.0321067 0.0200667 +0.0301 0.0381267 0.0230767 0.0301 0.02709 0.03913 0.0401333 0.0250833 +0.0290967 0.0250833 0.0260867 0.02709 0.04816 0.0250833 0.02408 0.0280933 +0.03311 0.0371233 0.0301 0.0260867 0.0351167 0.0290967 0.0260867 0.0260867 +0.0311033 0.04214 0.0260867 0.0290967 0.0290967 0.0260867 0.03311 0.0341133 +0.0351167 0.0301 0.0280933 0.0250833 0.0351167 0.0290967 0.03913 0.02107 +0.0301 0.0311033 0.0280933 0.0381267 0.0230767 0.0290967 0.0321067 0.0280933 +0.0371233 0.0170567 0.0351167 0.0160533 0.0280933 0.0441467 0.0301 0.0351167 +0.0160533 0.0250833 0.03311 0.0200667 0.04214 0.0351167 0.0220733 0.03311 +0.03311 0.03612 0.0230767 0.0290967 0.0260867 0.0311033 0.02709 0.0411367 +0.04816 0.0311033 0.0351167 0.0280933 0.0190633 0.0311033 0.03311 0.03913 +0.02107 0.0381267 0.03311 0.03311 0.0311033 0.0311033 0.0260867 0.0371233 +0.0341133 0.02709 0.04214 0.0301 0.0351167 0.0431433 0.0311033 0.0220733 +0.0280933 0.0431433 0.0290967 0.01806 0.0401333 0.03311 0.0321067 0.04816 +0.0301 0.03311 0.0431433 0.0431433 0.0311033 0.0290967 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.03612 0.0230767 0.0290967 0.0260867 0.0200667 +0.0351167 0.0301 0.0220733 0.0280933 0.0321067 0.0190633 0.0170567 0.0230767 +0.0351167 0.0301 0.0321067 0.0351167 0.0301 0.0260867 0.0351167 0.03311 +0.0431433 0.0341133 0.0250833 0.0260867 0.0311033 0.0280933 0.0311033 0.04214 +0.0260867 0.0351167 0.0280933 0.0301 0.0260867 0.02709 0.0301 0.0230767 +0.0301 0.0321067 0.0381267 0.03612 0.0280933 0.03311 0.0431433 0.0371233 +0.02709 0.0170567 0.0301 0.03311 0.0311033 0.0280933 0.0351167 0.0290967 +0.0220733 0.0311033 0.02709 0.02709 0.0441467 0.04515 0.0170567 0.0411367 +0.02709 0.0311033 0.0190633 0.0220733 0.0371233 0.03913 0.0220733 0.0311033 +0.0401333 0.01806 0.0260867 0.03311 0.03311 0.0321067 0.0250833 0.0321067 +0.0290967 0.0351167 0.0260867 0.0321067 0.03612 0.02408 0.02107 0.0351167 +0.0301 0.03612 0.0290967 0.0301 0.0381267 0.0260867 0.0290967 0.03612 +0.0351167 0.0371233 0.0220733 0.0381267 0.0290967 0.0290967 0.0381267 0.02107 +0.0341133 0.03311 0.0401333 0.02107 0.0230767 0.03913 0.0230767 0.0311033 +0.0311033 0.0200667 0.04214 0.03311 0.0401333 0.0170567 0.02709 0.02709 +0.04214 0.02408 0.0381267 0.0200667 0.0200667 0.0381267 0.03612 0.0401333 +0.0321067 0.02408 0.0321067 0.02709 0.0290967 0.03311 0.0321067 0.0230767 +0.03311 0.03311 0.03612 0.0290967 0.0341133 0.0351167 0.03311 0.0290967 +0.02709 0.0431433 0.0260867 0.03913 0.04214 0.0250833 0.0220733 0.0431433 +0.0341133 0.02107 0.0311033 0.03311 0.0321067 0.0351167 0.03913 0.02107 +0.0280933 0.0280933 0.0250833 0.0311033 0.0220733 0.0280933 0.0411367 0.0311033 +0.0321067 0.02408 0.0280933 0.0341133 0.02408 0.0411367 0.0220733 0.03612 +0.0351167 0.0371233 0.0290967 0.04515 0.0471567 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.02107 0.00401333 0.0170567 0.02709 +0.02408 0.0220733 0.0200667 0.0170567 0.02709 0.02107 0.0280933 0.0471567 +0.0301 0.03311 0.0341133 0.0230767 0.0260867 0.03913 0.0301 0.03913 +0.02709 0.01806 0.0260867 0.0371233 0.0321067 0.0301 0.03913 0.0301 +0.02408 0.0351167 0.02107 0.0321067 0.02709 0.0351167 0.0290967 0.0301 +0.0431433 0.0280933 0.0280933 0.0431433 0.0371233 0.0290967 0.0381267 0.0230767 +0.0301 0.0351167 0.04214 0.02709 0.0280933 0.03612 0.02709 0.0230767 +0.03612 0.0230767 0.0321067 0.0351167 0.0431433 0.0301 0.0341133 0.03311 +0.0321067 0.0311033 0.02709 0.0301 0.0341133 0.0260867 0.0431433 0.0301 +0.0200667 0.0351167 0.03612 0.02709 0.0260867 0.0341133 0.0351167 0.0301 +0.0321067 0.02709 0.0290967 0.0280933 0.0351167 0.0341133 0.0401333 0.0280933 +0.0250833 0.0411367 0.02408 0.0260867 0.0341133 0.03612 0.0280933 0.0260867 +0.0321067 0.0351167 0.03311 0.0321067 0.0290967 0.0230767 0.0441467 0.02408 +0.0341133 0.0341133 0.03612 0.0230767 0.0260867 0.03311 0.0301 0.0280933 +0.0301 0.0280933 0.0290967 0.0351167 0.0230767 0.0371233 0.0371233 0.0190633 +0.0341133 0.03913 0.03311 0.0411367 0.01505 0.0220733 0.0280933 0.0260867 +0.0351167 0.0341133 0.04214 0.0280933 0.0311033 0.02107 0.03612 0.02709 +0.0280933 0.03311 0.03311 0.0311033 0.03913 0.0301 0.03311 0.0341133 +0.02709 0.0381267 0.03311 0.03311 0.0351167 0.0341133 0.0290967 0.0250833 +0.0401333 0.0341133 0.0290967 0.0290967 0.02408 0.0371233 0.0341133 0.0290967 +0.0341133 0.0371233 0.0260867 0.03311 0.0311033 0.0290967 0.0280933 0.0371233 +0.04214 0.0341133 0.03311 0.0341133 0.02709 0.0321067 0.03311 0.02408 +0.0280933 0.0341133 0.04515 0.0371233 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0652167 0.0250833 0.00903 +0.00301 0.0110367 0.0220733 0.03311 0.0311033 0.03612 0.03913 0.0280933 +0.0311033 0.0230767 0.02107 0.02408 0.03913 0.0341133 0.0371233 0.03311 +0.0190633 0.0280933 0.03311 0.0321067 0.0301 0.0401333 0.02709 0.0260867 +0.03913 0.0260867 0.0341133 0.03612 0.0280933 0.03311 0.0250833 0.0351167 +0.0401333 0.0250833 0.0351167 0.0371233 0.0200667 0.03612 0.0321067 0.0341133 +0.0220733 0.03612 0.0371233 0.0280933 0.0290967 0.02408 0.0301 0.0341133 +0.03311 0.02709 0.0401333 0.0341133 0.0280933 0.0311033 0.0321067 0.0311033 +0.02408 0.03612 0.0260867 0.0301 0.0311033 0.0351167 0.0341133 0.0301 +0.03311 0.03311 0.0260867 0.0301 0.0250833 0.0471567 0.0280933 0.02709 +0.0351167 0.0311033 0.0401333 0.0311033 0.0321067 0.03612 0.0321067 0.02709 +0.0321067 0.02709 0.0371233 0.0311033 0.0280933 0.0290967 0.0250833 0.0351167 +0.0250833 0.0321067 0.0311033 0.0230767 0.0290967 0.03311 0.0290967 0.0280933 +0.03612 0.03311 0.03311 0.0260867 0.0321067 0.0341133 0.0260867 0.0290967 +0.0301 0.0301 0.0371233 0.0301 0.0301 0.0260867 0.0441467 0.0351167 +0.01806 0.0411367 0.0321067 0.03913 0.0321067 0.03311 0.0260867 0.0301 +0.02709 0.0321067 0.02709 0.0301 0.0280933 0.0260867 0.0371233 0.0341133 +0.0140467 0.03311 0.0280933 0.0311033 0.0230767 0.0401333 0.04214 0.0321067 +0.0250833 0.0290967 0.0290967 0.0351167 0.0321067 0.0381267 0.0290967 0.0301 +0.0401333 0.02709 0.0341133 0.0341133 0.03311 0.0230767 0.04214 0.02408 +0.0290967 0.0250833 0.0321067 0.0311033 0.0321067 0.0301 0.0260867 0.0301 +0.0280933 0.03913 0.02408 0.0311033 0.0351167 0.0341133 0.0301 0.0321067 +0.0290967 0.02408 0.0341133 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.04816 0.09933 0.0220733 +0.0230767 0.0220733 0.0230767 0.01806 0.02408 0.0200667 0.0170567 0.02709 +0.0230767 0.0321067 0.02709 0.03612 0.0280933 0.0250833 0.02709 0.01806 +0.0441467 0.0321067 0.0321067 0.02408 0.0321067 0.0311033 0.0280933 0.0411367 +0.0381267 0.0250833 0.0351167 0.0260867 0.0250833 0.0371233 0.0371233 0.03612 +0.0351167 0.0220733 0.03612 0.0371233 0.02408 0.0381267 0.0351167 0.0290967 +0.03311 0.0301 0.03311 0.0250833 0.0200667 0.0441467 0.0441467 0.0341133 +0.0230767 0.0301 0.0401333 0.0260867 0.03612 0.0280933 0.0301 0.0250833 +0.0371233 0.04515 0.0290967 0.0441467 0.0230767 0.0311033 0.0381267 0.0371233 +0.0381267 0.0290967 0.0351167 0.0321067 0.0341133 0.03612 0.0160533 0.02709 +0.0471567 0.0170567 0.04214 0.0371233 0.0260867 0.0280933 0.0411367 0.0311033 +0.02107 0.03913 0.0290967 0.0351167 0.0401333 0.0250833 0.0301 0.0401333 +0.0280933 0.0381267 0.0371233 0.0260867 0.03311 0.03311 0.0321067 0.03311 +0.03311 0.02408 0.03612 0.03311 0.0260867 0.0351167 0.03913 0.0260867 +0.0311033 0.0301 0.0351167 0.0381267 0.0260867 0.0260867 0.0321067 0.03311 +0.03612 0.03913 0.03311 0.0290967 0.0250833 0.02709 0.03612 0.0301 +0.0260867 0.0280933 0.02408 0.0351167 0.02408 0.0250833 0.04515 0.0381267 +0.0311033 0.0260867 0.0411367 0.0311033 0.01806 0.03311 0.0411367 0.03913 +0.0301 0.0220733 0.03612 0.0441467 0.0230767 0.03311 0.04214 0.0301 +0.0401333 0.0290967 0.0371233 0.0341133 0.03311 0.0321067 0.03311 0.0371233 +0.0341133 0.0260867 0.0290967 0.0260867 0.0280933 0.0371233 0.0290967 0.0290967 +0.0250833 0.0411367 0.0311033 0.0230767 0.0220733 0.0260867 0.0200667 0.0200667 +0.0280933 0.0170567 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.03311 +0.0652167 0.0381267 0.0100333 0.02408 0.0200667 0.0260867 0.01806 0.0190633 +0.0280933 0.0290967 0.02408 0.0290967 0.0200667 0.0220733 0.0230767 0.0411367 +0.0301 0.02107 0.02408 0.03913 0.0411367 0.0311033 0.0321067 0.0411367 +0.02107 0.0230767 0.03612 0.0280933 0.0301 0.04515 0.0341133 0.0290967 +0.0301 0.03612 0.0311033 0.0411367 0.0260867 0.03311 0.0321067 0.02408 +0.0351167 0.0341133 0.0290967 0.0321067 0.0371233 0.0431433 0.0290967 0.02709 +0.0290967 0.03612 0.0260867 0.02709 0.03311 0.02408 0.0351167 0.0301 +0.02107 0.0311033 0.0381267 0.0371233 0.0260867 0.0351167 0.0321067 0.0371233 +0.0260867 0.0311033 0.0341133 0.0260867 0.0351167 0.03612 0.0220733 0.0280933 +0.0471567 0.02408 0.03311 0.0301 0.0301 0.0431433 0.0260867 0.0321067 +0.0290967 0.0341133 0.02709 0.0371233 0.03311 0.03311 0.0301 0.0321067 +0.0321067 0.0321067 0.0411367 0.0321067 0.0230767 0.0371233 0.0351167 0.0260867 +0.03913 0.0190633 0.03913 0.0311033 0.03612 0.0260867 0.0311033 0.0311033 +0.0381267 0.03612 0.0280933 0.0260867 0.0290967 0.0311033 0.03612 0.03311 +0.03612 0.0290967 0.0411367 0.0220733 0.0301 0.0411367 0.0321067 0.02408 +0.0341133 0.0301 0.0321067 0.02709 0.0321067 0.02107 0.03311 0.0381267 +0.03311 0.0311033 0.0321067 0.02709 0.0311033 0.0371233 0.0311033 0.0311033 +0.04214 0.0230767 0.03311 0.0351167 0.0280933 0.0260867 0.03612 0.0351167 +0.03913 0.0351167 0.03612 0.02709 0.0311033 0.0280933 0.0341133 0.0311033 +0.03612 0.0260867 0.0321067 0.02709 0.0311033 0.0280933 0.0411367 0.02107 +0.0260867 0.0311033 0.02408 0.0250833 0.0200667 0.0200667 0.02408 0.0381267 +0.0311033 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00501667 0.0401333 0.05719 0.0381267 0.0301 0.0110367 0.0190633 0.02107 +0.0290967 0.0311033 0.02408 0.0200667 0.02709 0.02709 0.0250833 0.0321067 +0.00903 0.0311033 0.0431433 0.0371233 0.0311033 0.0311033 0.0250833 0.0260867 +0.02408 0.0311033 0.0381267 0.0311033 0.0351167 0.0321067 0.0301 0.0220733 +0.0311033 0.03612 0.0301 0.0341133 0.0351167 0.0341133 0.0280933 0.0280933 +0.0401333 0.0321067 0.0230767 0.03913 0.0381267 0.0371233 0.03311 0.0351167 +0.0301 0.0280933 0.0321067 0.0351167 0.0311033 0.0230767 0.0301 0.0250833 +0.03612 0.0301 0.03913 0.0351167 0.0290967 0.0290967 0.0371233 0.0290967 +0.03612 0.0260867 0.03913 0.0290967 0.0311033 0.03612 0.0220733 0.0381267 +0.02709 0.0321067 0.0321067 0.0311033 0.0371233 0.03311 0.0260867 0.02709 +0.0311033 0.0351167 0.0220733 0.0411367 0.02709 0.0381267 0.0280933 0.03311 +0.0280933 0.02709 0.0431433 0.0321067 0.0250833 0.0321067 0.03311 0.03311 +0.0260867 0.02709 0.0381267 0.0301 0.0371233 0.0301 0.0381267 0.0190633 +0.0401333 0.0381267 0.02107 0.0290967 0.0301 0.0280933 0.0311033 0.0280933 +0.0371233 0.0311033 0.0341133 0.0441467 0.0160533 0.0321067 0.0411367 0.03311 +0.02107 0.0351167 0.0381267 0.0311033 0.0280933 0.0280933 0.03311 0.03612 +0.03311 0.0321067 0.0371233 0.02408 0.0230767 0.0321067 0.03612 0.0381267 +0.0351167 0.03311 0.0130433 0.03612 0.0290967 0.0491633 0.0190633 0.0431433 +0.0301 0.0260867 0.0321067 0.0431433 0.0341133 0.0301 0.0250833 0.03913 +0.03311 0.03311 0.02107 0.0411367 0.02709 0.00702333 0.0280933 0.0341133 +0.0301 0.0140467 0.0290967 0.0321067 0.0381267 0.0290967 0.05418 0.0602 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00602 0.04816 0.0521733 0.0190633 0.02408 0.0230767 +0.0301 0.0280933 0.0230767 0.0250833 0.0260867 0.0190633 0.0311033 0.02408 +0.0230767 0.03913 0.03311 0.02107 0.02408 0.0230767 0.0301 0.03311 +0.0371233 0.03311 0.0280933 0.02709 0.0321067 0.02709 0.0351167 0.0260867 +0.0381267 0.03612 0.0371233 0.0341133 0.0260867 0.0260867 0.0371233 0.0311033 +0.03913 0.02709 0.0290967 0.0290967 0.0280933 0.0351167 0.03612 0.0301 +0.0220733 0.0341133 0.0341133 0.0311033 0.0170567 0.0301 0.0411367 0.0280933 +0.0381267 0.0321067 0.0371233 0.0311033 0.0341133 0.0250833 0.03311 0.0311033 +0.02709 0.0341133 0.0401333 0.03311 0.0411367 0.0321067 0.0321067 0.0341133 +0.0280933 0.03311 0.0431433 0.02408 0.0290967 0.0351167 0.0260867 0.0381267 +0.0311033 0.0381267 0.0260867 0.03612 0.0321067 0.0351167 0.03311 0.0321067 +0.02408 0.0301 0.0401333 0.0411367 0.0381267 0.0341133 0.0341133 0.0341133 +0.0321067 0.0341133 0.0280933 0.0351167 0.0381267 0.0351167 0.0371233 0.02709 +0.03913 0.0290967 0.0280933 0.0341133 0.03311 0.0260867 0.0301 0.0351167 +0.0301 0.0321067 0.0280933 0.0371233 0.0341133 0.0321067 0.0290967 0.03913 +0.0321067 0.03913 0.0351167 0.0280933 0.0311033 0.0321067 0.0301 0.0280933 +0.02709 0.03612 0.03612 0.0301 0.0301 0.0260867 0.02709 0.0321067 +0.03913 0.0431433 0.0290967 0.0230767 0.0170567 0.0371233 0.0301 0.03913 +0.0381267 0.0321067 0.03311 0.0381267 0.03612 0.0351167 0.0341133 0.0190633 +0.0230767 0.0290967 0.02709 0.01505 0.0381267 0.0351167 0.0220733 0.02408 +0.0301 0.0250833 0.0190633 0.0290967 0.06622 0.0983267 0.0642133 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0471567 0.06622 0.04214 +0.01505 0.0190633 0.0190633 0.0230767 0.0220733 0.0351167 0.02408 0.0260867 +0.0351167 0.0341133 0.0160533 0.0200667 0.0280933 0.0341133 0.0280933 0.0341133 +0.0200667 0.0260867 0.02408 0.02709 0.0311033 0.03311 0.0290967 0.0351167 +0.0311033 0.03913 0.0341133 0.0230767 0.0280933 0.04214 0.0341133 0.0371233 +0.02709 0.0351167 0.02709 0.0311033 0.0401333 0.03612 0.0280933 0.0371233 +0.02107 0.04515 0.0311033 0.0200667 0.0301 0.0371233 0.0280933 0.0381267 +0.0290967 0.0220733 0.0351167 0.0381267 0.02408 0.0341133 0.0220733 0.0321067 +0.0321067 0.0321067 0.03311 0.0341133 0.03612 0.0290967 0.0301 0.02709 +0.0371233 0.0351167 0.0280933 0.0260867 0.0401333 0.02107 0.0301 0.03913 +0.0260867 0.0311033 0.0301 0.0411367 0.0321067 0.0321067 0.0301 0.0401333 +0.0341133 0.0280933 0.0311033 0.0381267 0.0381267 0.0230767 0.0381267 0.0220733 +0.0431433 0.0280933 0.02709 0.0290967 0.0260867 0.0431433 0.0321067 0.0341133 +0.0341133 0.0321067 0.0290967 0.0341133 0.0341133 0.03311 0.0250833 0.03612 +0.0311033 0.0170567 0.0401333 0.0411367 0.03913 0.0341133 0.0290967 0.0411367 +0.0351167 0.0250833 0.0371233 0.0301 0.0230767 0.0280933 0.0371233 0.0341133 +0.03311 0.02709 0.02709 0.0351167 0.03612 0.0260867 0.03612 0.0321067 +0.0301 0.0351167 0.04515 0.03612 0.0290967 0.0341133 0.0280933 0.0250833 +0.03311 0.0290967 0.0200667 0.0260867 0.03612 0.0311033 0.0341133 0.0411367 +0.0321067 0.04214 0.0260867 0.0230767 0.0321067 0.0290967 0.02408 0.0260867 +0.0170567 0.0301 0.0471567 0.0712367 0.0702333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0260867 +0.06622 0.05117 0.01806 0.02107 0.02709 0.0260867 0.0170567 0.0280933 +0.0260867 0.0160533 0.0280933 0.0290967 0.03913 0.0280933 0.0260867 0.02408 +0.02107 0.0301 0.03311 0.0311033 0.0311033 0.0321067 0.01806 0.0301 +0.0280933 0.0341133 0.0341133 0.0140467 0.03612 0.0371233 0.0290967 0.0371233 +0.0290967 0.03913 0.02408 0.0341133 0.04214 0.0290967 0.03311 0.03612 +0.0170567 0.0341133 0.0301 0.03311 0.0461533 0.0351167 0.03612 0.0321067 +0.0230767 0.03612 0.0371233 0.0371233 0.0321067 0.02709 0.0280933 0.03612 +0.0371233 0.0290967 0.0351167 0.0290967 0.0311033 0.0280933 0.0351167 0.01806 +0.0401333 0.0321067 0.03913 0.0371233 0.03311 0.02709 0.0441467 0.0351167 +0.0311033 0.0260867 0.0290967 0.03913 0.0311033 0.0230767 0.0311033 0.0401333 +0.0371233 0.0301 0.02709 0.0381267 0.0351167 0.03311 0.0351167 0.02709 +0.0280933 0.0280933 0.0351167 0.0290967 0.0230767 0.0381267 0.0280933 0.0461533 +0.0230767 0.03612 0.0290967 0.03311 0.0280933 0.04214 0.0290967 0.0411367 +0.02709 0.02709 0.0301 0.0311033 0.0381267 0.0351167 0.0280933 0.0220733 +0.0341133 0.0381267 0.0321067 0.03612 0.02408 0.0311033 0.03612 0.02408 +0.03311 0.0371233 0.02408 0.02408 0.03311 0.03612 0.0311033 0.02408 +0.04515 0.0311033 0.0290967 0.0381267 0.0311033 0.0280933 0.0321067 0.0260867 +0.0190633 0.03311 0.0290967 0.01505 0.0260867 0.0401333 0.0301 0.0381267 +0.02709 0.0371233 0.0290967 0.03612 0.0220733 0.0301 0.0301 0.0321067 +0.0471567 0.0581933 0.04515 0.01204 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.02709 0.0110367 0 +0 0.0140467 0.05117 0.0561867 0.02408 0.0160533 0.02408 0.02709 +0.0200667 0.0260867 0.0351167 0.0250833 0.0260867 0.0250833 0.02107 0.02107 +0.0371233 0.0311033 0.03913 0.02709 0.0290967 0.0301 0.0290967 0.0321067 +0.0280933 0.0290967 0.0190633 0.02408 0.0341133 0.02408 0.0311033 0.0411367 +0.0280933 0.0341133 0.0220733 0.0311033 0.03311 0.0260867 0.0250833 0.03913 +0.02408 0.0351167 0.0441467 0.0190633 0.0321067 0.0411367 0.0260867 0.0260867 +0.04816 0.0431433 0.03913 0.0351167 0.0321067 0.0311033 0.0351167 0.0260867 +0.0441467 0.0321067 0.0290967 0.0431433 0.02709 0.0321067 0.0321067 0.0290967 +0.03311 0.0341133 0.0371233 0.03913 0.0220733 0.0311033 0.0301 0.03311 +0.0290967 0.0311033 0.0351167 0.0381267 0.0220733 0.03612 0.01806 0.0371233 +0.04214 0.0250833 0.0321067 0.03311 0.0371233 0.0230767 0.0351167 0.0371233 +0.02709 0.0401333 0.0301 0.0190633 0.0431433 0.0371233 0.0250833 0.0371233 +0.0250833 0.0351167 0.0321067 0.0250833 0.04214 0.02709 0.0321067 0.03913 +0.0341133 0.0260867 0.0321067 0.02709 0.0351167 0.0371233 0.0381267 0.02709 +0.0321067 0.0260867 0.0371233 0.0301 0.0311033 0.0311033 0.0351167 0.03311 +0.0290967 0.0290967 0.0401333 0.0311033 0.0290967 0.03311 0.03612 0.02408 +0.0321067 0.03612 0.0321067 0.02408 0.03612 0.0220733 0.0321067 0.0290967 +0.0371233 0.02107 0.0321067 0.0170567 0.0230767 0.0220733 0.02408 0.02709 +0.0341133 0.0280933 0.0220733 0.02709 0.0190633 0.0351167 0.0682267 0.0612033 +0.0311033 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.284947 0.18963 +0.0381267 0 0 0.00602 0.0351167 0.0471567 0.0551833 0.02107 +0.02408 0.0230767 0.0190633 0.01806 0.0280933 0.0250833 0.01505 0.03913 +0.0401333 0.0220733 0.0311033 0.02408 0.0260867 0.0220733 0.0351167 0.0381267 +0.02709 0.0431433 0.0250833 0.0341133 0.0280933 0.0301 0.0441467 0.0200667 +0.0311033 0.0311033 0.0220733 0.0381267 0.02408 0.03311 0.0431433 0.02408 +0.0280933 0.03913 0.01806 0.02709 0.02107 0.0351167 0.0200667 0.0351167 +0.0341133 0.02408 0.03311 0.02408 0.0381267 0.0381267 0.0260867 0.03311 +0.03612 0.0260867 0.0461533 0.0250833 0.0260867 0.0341133 0.0250833 0.03612 +0.04214 0.0250833 0.03612 0.0260867 0.0401333 0.0321067 0.0311033 0.0401333 +0.02408 0.0280933 0.0431433 0.0301 0.0341133 0.0290967 0.0381267 0.0311033 +0.0280933 0.0321067 0.0311033 0.03311 0.03612 0.0381267 0.0301 0.0321067 +0.0301 0.0461533 0.0311033 0.03311 0.0381267 0.0351167 0.0341133 0.0351167 +0.0321067 0.0301 0.03612 0.0301 0.0341133 0.0341133 0.03311 0.0290967 +0.0280933 0.0230767 0.0401333 0.0250833 0.0401333 0.0341133 0.0381267 0.0351167 +0.03612 0.0311033 0.0341133 0.0290967 0.03612 0.0280933 0.0381267 0.03612 +0.03311 0.0200667 0.0230767 0.0290967 0.03612 0.0230767 0.0311033 0.03612 +0.0250833 0.0250833 0.02709 0.0301 0.0351167 0.03311 0.0260867 0.0321067 +0.0301 0.03311 0.03311 0.0280933 0.0220733 0.02709 0.01505 0.0290967 +0.02107 0.0301 0.0351167 0.03913 0.0732433 0.0612033 0.00802667 0 +0.01806 0.0140467 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.173577 +0.701176 0.152507 0 0 0 0.0401333 0.271903 0.241803 +0.0983267 0.0190633 0.0190633 0.02107 0.02408 0.0160533 0.0260867 0.03311 +0.0301 0.02107 0.0280933 0.0280933 0.0220733 0.0341133 0.0280933 0.0230767 +0.03311 0.0280933 0.03612 0.0351167 0.03913 0.03311 0.0280933 0.0311033 +0.0371233 0.02408 0.0341133 0.0401333 0.0260867 0.0401333 0.02709 0.0260867 +0.03913 0.0371233 0.0411367 0.0280933 0.0301 0.0341133 0.03311 0.04214 +0.0290967 0.0280933 0.02408 0.03913 0.0280933 0.0280933 0.02709 0.03311 +0.03612 0.0341133 0.0290967 0.0250833 0.02709 0.0401333 0.0260867 0.0351167 +0.04816 0.0290967 0.02709 0.0321067 0.03612 0.0371233 0.0250833 0.03612 +0.0351167 0.0280933 0.0431433 0.02408 0.0301 0.0280933 0.03913 0.0321067 +0.0260867 0.03311 0.0321067 0.02709 0.03612 0.0381267 0.0371233 0.0290967 +0.0311033 0.0381267 0.03913 0.0371233 0.0301 0.03913 0.0260867 0.0301 +0.0371233 0.0311033 0.02408 0.0381267 0.0301 0.0250833 0.0351167 0.0401333 +0.02107 0.0351167 0.0341133 0.0280933 0.02709 0.0311033 0.0341133 0.03612 +0.0341133 0.03311 0.03612 0.02709 0.03311 0.0290967 0.0341133 0.0311033 +0.0381267 0.0321067 0.0290967 0.0341133 0.0230767 0.0381267 0.02408 0.0371233 +0.0301 0.0250833 0.03311 0.0321067 0.0351167 0.0230767 0.02709 0.0280933 +0.0290967 0.0301 0.02408 0.0321067 0.01505 0.02107 0.01204 0.0190633 +0.03913 0.06923 0.0652167 0.0341133 0.00501667 0 0.00100333 0.0622067 +0.0100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.29197 0.759136 0.64064 0.220733 0.0301 0 0.0551833 0.194647 +0.321067 0.28294 0.143477 0.0381267 0.0160533 0.0301 0.0230767 0.0280933 +0.0190633 0.00903 0.0220733 0.01806 0.02107 0.0260867 0.03612 0.0250833 +0.03612 0.0371233 0.03311 0.02709 0.0341133 0.02709 0.03612 0.0311033 +0.0301 0.0230767 0.0351167 0.0321067 0.02408 0.03311 0.0411367 0.03311 +0.03311 0.04214 0.0220733 0.02408 0.0220733 0.03913 0.0341133 0.0351167 +0.0301 0.0301 0.0431433 0.04214 0.0341133 0.0301 0.0401333 0.02709 +0.0371233 0.0301 0.03311 0.0321067 0.02408 0.0351167 0.0280933 0.0321067 +0.0341133 0.03913 0.0250833 0.0431433 0.0341133 0.0311033 0.0230767 0.03311 +0.0411367 0.0351167 0.0411367 0.0321067 0.0321067 0.0321067 0.03311 0.03913 +0.0371233 0.0280933 0.0321067 0.0371233 0.0471567 0.0260867 0.0431433 0.0381267 +0.0301 0.0290967 0.0341133 0.0341133 0.02709 0.0351167 0.0321067 0.02709 +0.0311033 0.03311 0.02709 0.0351167 0.0321067 0.0341133 0.03311 0.0311033 +0.03311 0.0290967 0.02709 0.0371233 0.0371233 0.0311033 0.02408 0.03311 +0.0371233 0.03612 0.0200667 0.0200667 0.0290967 0.03311 0.0290967 0.0280933 +0.03913 0.0250833 0.0260867 0.03913 0.0190633 0.02408 0.0371233 0.0301 +0.0311033 0.03612 0.0220733 0.0311033 0.0351167 0.0321067 0.0250833 0.0250833 +0.02709 0.01505 0.01505 0.0220733 0.0321067 0.0250833 0.0622067 0.182607 +0.309027 0.206687 0.0100333 0 0.0110367 0.140467 0.221737 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.625184 1.09705 0.922712 0.39431 0.121403 0.0280933 +0.0371233 0.130433 0.274913 0.312037 0.221737 0.10836 0.0311033 0.01806 +0.01806 0.0130433 0.0230767 0.02709 0.0190633 0.02408 0.0220733 0.0341133 +0.0280933 0.0371233 0.01806 0.0230767 0.02107 0.0321067 0.0311033 0.0301 +0.0220733 0.0341133 0.0250833 0.0260867 0.0250833 0.03311 0.0321067 0.0290967 +0.0321067 0.0280933 0.0301 0.0230767 0.03311 0.0280933 0.0311033 0.0341133 +0.0280933 0.0311033 0.0351167 0.0351167 0.03311 0.03311 0.0401333 0.0260867 +0.0341133 0.0321067 0.0321067 0.02408 0.0371233 0.04214 0.0301 0.0311033 +0.0371233 0.03612 0.0250833 0.0371233 0.0321067 0.0341133 0.0260867 0.0311033 +0.03311 0.02408 0.0290967 0.0371233 0.0341133 0.03612 0.0280933 0.02709 +0.0311033 0.0280933 0.02408 0.03612 0.0321067 0.02709 0.0381267 0.02709 +0.0311033 0.02709 0.0311033 0.0301 0.0311033 0.0311033 0.0401333 0.02709 +0.0290967 0.0381267 0.0321067 0.0341133 0.0220733 0.0341133 0.0351167 0.0260867 +0.03913 0.0301 0.0200667 0.0311033 0.03612 0.0220733 0.0301 0.0220733 +0.0381267 0.03612 0.0301 0.02709 0.02709 0.0441467 0.0260867 0.0250833 +0.0371233 0.0321067 0.0280933 0.0341133 0.03311 0.02408 0.02408 0.01505 +0.0230767 0.0351167 0.0230767 0.0301 0.02709 0.0321067 0.02107 0.0260867 +0.02709 0.01505 0.01806 0.04214 0.122407 0.263877 0.32809 0.274913 +0.107357 0.0160533 0.0441467 0.266887 0.687008 0.408357 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.19565 0.937288 1.10125 1.03695 0.652232 +0.260867 0.0672233 0.03311 0.0742467 0.20769 0.324077 0.311033 0.17759 +0.0642133 0.02107 0.0170567 0.02107 0.0110367 0.0321067 0.0250833 0.0321067 +0.02107 0.0230767 0.0230767 0.0230767 0.0301 0.0250833 0.0321067 0.03311 +0.02107 0.0321067 0.0371233 0.0260867 0.0341133 0.0311033 0.03311 0.0260867 +0.03612 0.0351167 0.0230767 0.0341133 0.0250833 0.02709 0.0371233 0.02107 +0.0341133 0.03311 0.0401333 0.0371233 0.0280933 0.0351167 0.0260867 0.02107 +0.0290967 0.03311 0.0260867 0.0351167 0.0381267 0.0381267 0.02107 0.03913 +0.03612 0.0290967 0.0351167 0.0290967 0.0351167 0.03311 0.02709 0.0371233 +0.0321067 0.0311033 0.03311 0.03913 0.03311 0.0371233 0.0351167 0.0230767 +0.0301 0.03612 0.03913 0.0280933 0.0341133 0.0321067 0.03612 0.0301 +0.0401333 0.0250833 0.0411367 0.0301 0.0371233 0.0250833 0.04214 0.0311033 +0.0401333 0.0230767 0.0371233 0.0321067 0.0250833 0.0311033 0.03913 0.0341133 +0.0301 0.0351167 0.02408 0.0290967 0.03612 0.0341133 0.0371233 0.02408 +0.0381267 0.0280933 0.0301 0.0311033 0.02408 0.0321067 0.0371233 0.0250833 +0.0341133 0.03913 0.0260867 0.0260867 0.03311 0.0301 0.0290967 0.0280933 +0.0250833 0.0301 0.02107 0.0260867 0.0260867 0.0170567 0.0220733 0.0230767 +0.02709 0.0852833 0.203677 0.321067 0.315047 0.19565 0.0762533 0.0461533 +0.169563 0.477587 0.960844 0.937288 0.311033 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.238793 0.650944 1.03755 +1.0925 0.959636 0.516717 0.19565 0.0521733 0.0441467 0.12341 0.277923 +0.339127 0.26488 0.139463 0.0491633 0.0260867 0.0280933 0.02408 0.0250833 +0.0160533 0.02709 0.0160533 0.0311033 0.0250833 0.03311 0.0311033 0.0260867 +0.0190633 0.0411367 0.03612 0.0230767 0.0381267 0.02709 0.03311 0.0321067 +0.0311033 0.0250833 0.03913 0.0321067 0.0351167 0.03311 0.02408 0.0321067 +0.0290967 0.0341133 0.03311 0.0411367 0.0290967 0.0381267 0.0250833 0.0321067 +0.0401333 0.03311 0.0230767 0.03612 0.0301 0.02709 0.0341133 0.0341133 +0.03612 0.0371233 0.0351167 0.0411367 0.0250833 0.0321067 0.03612 0.0301 +0.03913 0.0290967 0.0260867 0.04214 0.03311 0.0321067 0.0351167 0.0280933 +0.0301 0.0290967 0.0381267 0.02709 0.0351167 0.0431433 0.0250833 0.0371233 +0.0351167 0.0280933 0.0301 0.0290967 0.0341133 0.02408 0.0290967 0.03311 +0.0351167 0.02107 0.0401333 0.03311 0.0311033 0.0280933 0.03913 0.0321067 +0.02709 0.0351167 0.0280933 0.0321067 0.0341133 0.02408 0.0290967 0.0341133 +0.0311033 0.0321067 0.0230767 0.03913 0.03311 0.03311 0.0401333 0.0311033 +0.0230767 0.02709 0.03612 0.0280933 0.01806 0.0321067 0.02408 0.0190633 +0.0220733 0.0280933 0.0220733 0.01806 0.01806 0.02408 0.0712367 0.19264 +0.298993 0.314043 0.226753 0.0943133 0.0531767 0.122407 0.36722 0.784896 +1.0778 1.0946 0.564877 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.118393 +0.398323 0.815808 1.075 1.0785 0.89824 0.455513 0.178593 0.0581933 +0.0471567 0.140467 0.28595 0.332103 0.24381 0.1204 0.0441467 0.0190633 +0.0260867 0.01806 0.0130433 0.0170567 0.03311 0.0230767 0.0220733 0.0260867 +0.0311033 0.0401333 0.0220733 0.0200667 0.0411367 0.0260867 0.0381267 0.0260867 +0.0311033 0.0250833 0.0341133 0.0200667 0.02408 0.0351167 0.02408 0.0290967 +0.02709 0.0371233 0.0311033 0.0230767 0.0371233 0.0250833 0.0311033 0.0351167 +0.0311033 0.0381267 0.0280933 0.0311033 0.0341133 0.04214 0.02107 0.0301 +0.0301 0.0351167 0.02408 0.0371233 0.0371233 0.0280933 0.03612 0.0301 +0.03612 0.02709 0.02709 0.0381267 0.0371233 0.0321067 0.0311033 0.0280933 +0.0311033 0.0280933 0.0341133 0.02709 0.0351167 0.0280933 0.0290967 0.03612 +0.0290967 0.03612 0.0311033 0.0280933 0.0341133 0.0280933 0.0290967 0.0301 +0.0381267 0.0230767 0.0290967 0.0280933 0.03612 0.0250833 0.0321067 0.0260867 +0.03311 0.03311 0.0321067 0.02709 0.0371233 0.02709 0.0250833 0.0371233 +0.02107 0.0301 0.02709 0.0290967 0.03311 0.0230767 0.0311033 0.0341133 +0.0230767 0.0341133 0.0160533 0.0311033 0.0160533 0.0260867 0.02709 0.02408 +0.01806 0.0190633 0.0250833 0.06622 0.136453 0.281937 0.341133 0.274913 +0.12943 0.0672233 0.10836 0.311033 0.687008 1.02004 1.0897 0.963864 +0.50568 0.09933 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0642133 0.19264 0.470563 0.925812 1.0827 1.06956 0.886648 +0.464543 0.190633 0.06923 0.0742467 0.167557 0.284947 0.321067 0.256853 +0.12341 0.02709 0.0110367 0.0311033 0.02408 0.0190633 0.02709 0.02107 +0.0230767 0.0250833 0.0230767 0.0311033 0.0321067 0.01806 0.0321067 0.0311033 +0.03311 0.0260867 0.0280933 0.03913 0.0280933 0.0230767 0.0290967 0.0250833 +0.0351167 0.0301 0.03311 0.0250833 0.03612 0.0260867 0.0260867 0.03311 +0.0250833 0.0461533 0.02408 0.0301 0.0381267 0.0371233 0.0311033 0.0371233 +0.0351167 0.02709 0.0301 0.0301 0.0411367 0.0301 0.0321067 0.03612 +0.0311033 0.0341133 0.0230767 0.0351167 0.02709 0.0250833 0.0341133 0.0260867 +0.03612 0.0301 0.03612 0.0301 0.03612 0.0280933 0.0311033 0.0341133 +0.0290967 0.0381267 0.0230767 0.0290967 0.0351167 0.0301 0.0351167 0.0230767 +0.03311 0.03913 0.0220733 0.02709 0.0280933 0.0371233 0.02709 0.0371233 +0.0280933 0.03311 0.0311033 0.0280933 0.0351167 0.0290967 0.03311 0.0301 +0.0301 0.02107 0.0290967 0.0341133 0.0230767 0.0260867 0.0290967 0.0321067 +0.0200667 0.0341133 0.01806 0.0220733 0.0280933 0.02709 0.0230767 0.0311033 +0.0602 0.15351 0.26488 0.338123 0.277923 0.143477 0.06923 0.124413 +0.317053 0.668976 1.00433 1.0792 0.989836 0.623896 0.272907 0.0321067 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00702333 0.0381267 0.0903 0.212707 0.494643 0.928832 +1.08445 1.07885 0.936684 0.51772 0.236787 0.0923067 0.09331 0.18963 +0.302003 0.317053 0.212707 0.0792633 0.0381267 0.02107 0.02709 0.0220733 +0.0250833 0.02107 0.0280933 0.0301 0.02709 0.0250833 0.0301 0.0250833 +0.02107 0.02408 0.0311033 0.0311033 0.0200667 0.0371233 0.0290967 0.0260867 +0.02709 0.0401333 0.0341133 0.0311033 0.0341133 0.0301 0.02408 0.0351167 +0.0321067 0.0321067 0.02709 0.0260867 0.0321067 0.0351167 0.0220733 0.0260867 +0.0301 0.0321067 0.0341133 0.02107 0.02709 0.0280933 0.0290967 0.0401333 +0.0260867 0.0220733 0.03311 0.0341133 0.0280933 0.0301 0.0290967 0.0341133 +0.0290967 0.0260867 0.0371233 0.0321067 0.03311 0.0260867 0.0280933 0.0321067 +0.03311 0.0290967 0.0290967 0.0280933 0.03311 0.0301 0.0290967 0.0311033 +0.02709 0.0290967 0.0311033 0.0321067 0.0301 0.0321067 0.0301 0.03612 +0.02408 0.0321067 0.0290967 0.0321067 0.0341133 0.03612 0.03311 0.0250833 +0.0341133 0.0200667 0.0311033 0.0280933 0.0311033 0.0230767 0.02107 0.0220733 +0.01806 0.0301 0.0230767 0.0220733 0.0381267 0.0652167 0.16856 0.29197 +0.317053 0.26789 0.145483 0.0923067 0.161537 0.371233 0.73724 1.01883 +1.0855 0.99648 0.65352 0.309027 0.115383 0.0170567 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.01806 0.04515 0.06321 0.0913033 +0.203677 0.456517 0.882784 1.0744 1.0995 1.00373 0.656096 0.34314 +0.14147 0.116387 0.236787 0.329093 0.305013 0.0973233 0.05117 0.0311033 +0.0260867 0.02709 0.02107 0.02709 0.0280933 0.0190633 0.0250833 0.0311033 +0.0260867 0.0190633 0.03612 0.0220733 0.02107 0.0341133 0.0301 0.02709 +0.03913 0.0301 0.0260867 0.02408 0.03311 0.0260867 0.02408 0.0301 +0.0280933 0.0311033 0.0280933 0.0311033 0.0371233 0.0280933 0.0250833 0.03311 +0.0220733 0.0351167 0.03311 0.02107 0.0301 0.0290967 0.0351167 0.0371233 +0.0260867 0.0250833 0.03311 0.0301 0.02408 0.0341133 0.02709 0.0260867 +0.0321067 0.0351167 0.0290967 0.0220733 0.0250833 0.0321067 0.0301 0.0321067 +0.0290967 0.02709 0.0351167 0.0290967 0.03311 0.0351167 0.0280933 0.0351167 +0.02709 0.0301 0.03612 0.0290967 0.0321067 0.0220733 0.0341133 0.03612 +0.0280933 0.0301 0.02709 0.0250833 0.0250833 0.0321067 0.03612 0.0200667 +0.02107 0.0250833 0.0290967 0.01806 0.0280933 0.0321067 0.0200667 0.0260867 +0.02107 0.0381267 0.0792633 0.170567 0.287957 0.333107 0.25284 0.15351 +0.12642 0.220733 0.482603 0.87248 1.06534 1.08375 0.97232 0.596983 +0.308023 0.136453 0.0742467 0.01806 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.0431433 0.0431433 +0.0561867 0.0652167 0.0742467 0.176587 0.387287 0.770728 1.03876 1.10825 +1.07815 0.913696 0.513707 0.277923 0.178593 0.08428 0 0.0110367 +0.0301 0.0491633 0.0521733 0.0351167 0.0260867 0.01806 0.0250833 0.02408 +0.0140467 0.0220733 0.0321067 0.01505 0.0290967 0.0220733 0.0200667 0.0230767 +0.02408 0.03612 0.0280933 0.02408 0.02709 0.0321067 0.02408 0.02107 +0.0371233 0.0260867 0.03612 0.0351167 0.03913 0.0200667 0.0250833 0.0311033 +0.02709 0.0411367 0.0280933 0.02709 0.02709 0.0260867 0.0401333 0.0301 +0.02107 0.0290967 0.0250833 0.0321067 0.0250833 0.0341133 0.0321067 0.0200667 +0.0311033 0.0321067 0.0381267 0.0260867 0.0230767 0.0461533 0.0351167 0.02709 +0.0250833 0.0290967 0.0301 0.0280933 0.0301 0.0341133 0.02709 0.03311 +0.0250833 0.02709 0.0311033 0.03311 0.0220733 0.0220733 0.0311033 0.0301 +0.0311033 0.0301 0.0260867 0.02107 0.0260867 0.0260867 0.03311 0.0290967 +0.0220733 0.0170567 0.02408 0.0260867 0.0230767 0.03612 0.0501667 0.04214 +0.0371233 0.0501667 0.20769 0.251837 0.184613 0.20769 0.377253 0.68572 +1.00433 1.0974 1.0792 0.902104 0.519727 0.239797 0.11438 0.0732433 +0.0612033 0.0230767 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0110367 +0.0461533 0.0491633 0.0642133 0.0561867 0.0602 0.0581933 0.106353 0.272907 +0.582937 0.96326 1.09635 1.117 1.05628 0.823536 0.455513 0.227757 +0.07525 0.0160533 0.00802667 0.02709 0.0371233 0.0431433 0.0531767 0.0290967 +0.0250833 0.0220733 0.0250833 0.0230767 0.0220733 0.0230767 0.0290967 0.02408 +0.01806 0.0290967 0.02709 0.0290967 0.0321067 0.0260867 0.02408 0.0200667 +0.0321067 0.0290967 0.0381267 0.0301 0.02709 0.0290967 0.0280933 0.02107 +0.0290967 0.02709 0.0301 0.0301 0.0220733 0.0341133 0.0301 0.02709 +0.0290967 0.03311 0.0230767 0.02709 0.0250833 0.0311033 0.0260867 0.0280933 +0.02709 0.03311 0.0311033 0.0200667 0.0290967 0.0321067 0.0341133 0.02709 +0.0200667 0.02709 0.0290967 0.0381267 0.0311033 0.03311 0.0250833 0.01806 +0.02408 0.0280933 0.0160533 0.0341133 0.0220733 0.0200667 0.02709 0.02107 +0.0260867 0.0290967 0.0250833 0.0170567 0.02408 0.0170567 0.03612 0.0200667 +0.0290967 0.0321067 0.0411367 0.0491633 0.0682267 0.0501667 0.01806 0.00501667 +0.0341133 0.142473 0.339127 0.613592 0.974132 1.0953 1.1107 1.02306 +0.723072 0.380263 0.172573 0.0903 0.0702333 0.0642133 0.05117 0.0311033 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0200667 0.0551833 0.05418 0.0682267 0.0672233 0.05418 0.05418 +0.04214 0.0551833 0.1505 0.369227 0.690872 1.0001 1.1086 1.12365 +1.05748 0.886648 0.52374 0.27391 0.118393 0.04816 0.0200667 0.03311 +0.0551833 0.0581933 0.04816 0.0461533 0.02709 0.0220733 0.0170567 0.01505 +0.0200667 0.01806 0.0200667 0.0220733 0.01806 0.0250833 0.01806 0.0130433 +0.0220733 0.0290967 0.0341133 0.0190633 0.0140467 0.02408 0.0200667 0.0220733 +0.0401333 0.0250833 0.0301 0.02107 0.0351167 0.0301 0.0250833 0.0250833 +0.0260867 0.0341133 0.01806 0.0250833 0.0260867 0.02709 0.0260867 0.0301 +0.0321067 0.0321067 0.02709 0.01806 0.02408 0.0220733 0.0260867 0.0260867 +0.01505 0.0290967 0.0321067 0.01806 0.0311033 0.0220733 0.0200667 0.0250833 +0.0200667 0.0220733 0.02107 0.0311033 0.0220733 0.0190633 0.0260867 0.0140467 +0.02408 0.0230767 0.01505 0.0250833 0.0341133 0.0311033 0.0742467 0.06923 +0.0792633 0.04515 0.0230767 0.0190633 0.06622 0.193643 0.404343 0.688296 +0.986816 1.09775 1.11315 1.06171 0.869904 0.49364 0.232773 0.10234 +0.0521733 0.0521733 0.06622 0.0642133 0.0612033 0.05719 0.0110367 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0250833 0.0712367 0.0581933 0.07826 0.08127 +0.0772567 0.0581933 0.0461533 0.0301 0.01806 0.0612033 0.190633 0.402337 +0.69216 1.0001 1.0967 1.12505 1.0981 0.994064 0.746256 0.459527 +0.248827 0.134447 0.06923 0.0652167 0.0471567 0.05418 0.0531767 0.04515 +0.0381267 0.01806 0.0290967 0.01806 0.02107 0.0280933 0.0190633 0.0190633 +0.0230767 0.0311033 0.02408 0.0130433 0.0290967 0.0220733 0.01505 0.02408 +0.02408 0.0160533 0.02408 0.0280933 0.0200667 0.0200667 0.0290967 0.02107 +0.0250833 0.0321067 0.02107 0.0280933 0.0260867 0.0230767 0.0170567 0.0301 +0.0230767 0.0230767 0.02408 0.0220733 0.0301 0.03311 0.0220733 0.0220733 +0.0160533 0.02107 0.0250833 0.0230767 0.0290967 0.02107 0.0170567 0.02709 +0.0230767 0.0190633 0.0170567 0.0200667 0.0170567 0.0200667 0.0140467 0.0280933 +0.04214 0.0531767 0.0521733 0.0602 0.07525 0.05418 0.06321 0.09331 +0.182607 0.34013 0.56889 0.882784 1.05205 1.11595 1.1268 1.06654 +0.8918 0.524743 0.263877 0.09933 0.0341133 0.0381267 0.0531767 0.0712367 +0.0712367 0.06622 0.06622 0.05418 0.02408 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.03311 0.08729 0.07224 +0.0712367 0.0822733 0.0742467 0.0682267 0.0652167 0.0521733 0.0301 0.0290967 +0.0371233 0.0732433 0.166553 0.332103 0.55986 0.880208 1.04238 1.10685 +1.1177 1.10055 0.994064 0.810656 0.542803 0.369227 0.23177 0.142473 +0.0953167 0.0772567 0.07224 0.0742467 0.0531767 0.0381267 0.0321067 0.0260867 +0.0230767 0.0250833 0.0170567 0.0100333 0.0280933 0.0140467 0.0200667 0.0140467 +0.0190633 0.0170567 0.03311 0.01204 0.01806 0.0301 0.00802667 0.0220733 +0.02107 0.02408 0.02107 0.01806 0.01505 0.0190633 0.0170567 0.0220733 +0.02107 0.02107 0.0160533 0.0140467 0.0250833 0.02408 0.0200667 0.0170567 +0.01806 0.0170567 0.0341133 0.02107 0.01806 0.0220733 0.00903 0.0160533 +0.0230767 0.02408 0.0301 0.0471567 0.0702333 0.0822733 0.0772567 0.0953167 +0.101337 0.12341 0.170567 0.272907 0.434443 0.64708 0.939704 1.06594 +1.12085 1.13065 1.09845 0.988024 0.725648 0.453507 0.239797 0.103343 +0.03913 0.02709 0.0311033 0.04816 0.0702333 0.06923 0.0802667 0.06923 +0.0642133 0.0802667 0.03311 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0.0531767 0.0762533 0.0762533 0.0852833 0.0913033 0.0742467 0.0682267 0.0642133 +0.0441467 0.0401333 0.0260867 0.0341133 0.0441467 0.07826 0.100333 0.20167 +0.3612 0.569893 0.823536 0.99648 1.0869 1.11245 1.11455 1.0855 +1.014 0.903392 0.670264 0.495647 0.366217 0.271903 0.194647 0.158527 +0.1204 0.11137 0.0852833 0.0672233 0.04515 0.0381267 0.0341133 0.0190633 +0.0170567 0.01505 0.02709 0.0140467 0.01204 0.0250833 0.00802667 0.0220733 +0.0140467 0.0230767 0.0170567 0.01204 0.0110367 0.02408 0.0220733 0.0170567 +0.0160533 0.02709 0.0100333 0.01505 0.02107 0.0230767 0.01505 0.0220733 +0.0130433 0.0220733 0.04214 0.0351167 0.0521733 0.0581933 0.0672233 0.08127 +0.10234 0.12642 0.164547 0.221737 0.31003 0.41538 0.551833 0.759136 +0.95118 1.04359 1.10265 1.1205 1.11735 1.0778 0.973528 0.757848 +0.494643 0.28896 0.170567 0.08729 0.0381267 0.03311 0.0321067 0.0341133 +0.04515 0.0712367 0.07826 0.0802667 0.0772567 0.0702333 0.07224 0.06321 +0.00702333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.01204 0.0301 0.0862867 0.0832767 0.0852833 0.0983267 0.0852833 +0.0792633 0.0622067 0.0501667 0.0461533 0.0461533 0.0501667 0.03612 0.0612033 +0.0521733 0.0652167 0.07826 0.100333 0.161537 0.245817 0.395313 0.564877 +0.779744 0.965072 1.05386 1.09425 1.12225 1.1212 1.10265 1.06836 +1.00554 0.931248 0.799064 0.658672 0.55986 0.47558 0.402337 0.321067 +0.277923 0.230767 0.19565 0.154513 0.13244 0.121403 0.09933 0.0913033 +0.07525 0.0772567 0.0742467 0.0602 0.06321 0.06923 0.0732433 0.0672233 +0.0772567 0.0903 0.0923067 0.11137 0.127423 0.160533 0.184613 0.22274 +0.254847 0.295983 0.362203 0.419393 0.500663 0.57792 0.6986 0.845432 +0.96024 1.02487 1.0848 1.1121 1.1261 1.1212 1.09425 1.03876 +0.937892 0.721784 0.524743 0.365213 0.23177 0.14147 0.0882933 0.0672233 +0.05117 0.0431433 0.0441467 0.04214 0.04214 0.04816 0.0652167 0.07525 +0.0742467 0.0882933 0.08428 0.0762533 0.08729 0.03612 0.0130433 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.03913 0.0612033 0.0953167 0.0913033 +0.0943133 0.0903 0.08428 0.0772567 0.07826 0.0551833 0.0471567 0.0531767 +0.04515 0.0672233 0.0652167 0.06321 0.06923 0.06321 0.06622 0.06321 +0.0672233 0.09331 0.128427 0.1806 0.272907 0.381267 0.49063 0.630336 +0.804216 0.946952 1.00252 1.06473 1.0876 1.1044 1.1191 1.1184 +1.11735 1.1107 1.10475 1.0918 1.08165 1.075 1.05326 1.03634 +1.02728 1.01279 1.00796 0.9995 0.99648 1.00192 1.00494 1.00373 +1.01641 1.02728 1.04359 1.05084 1.06715 1.0827 1.09355 1.10685 +1.1163 1.1163 1.12225 1.12155 1.1086 1.09075 1.05326 0.992252 +0.932456 0.757848 0.59598 0.47257 0.3311 0.2408 0.170567 0.125417 +0.08127 0.07224 0.0652167 0.0682267 0.0561867 0.0602 0.0591967 0.0612033 +0.0461533 0.04515 0.0521733 0.06923 0.0732433 0.09331 0.0852833 0.0923067 +0.0802667 0.07525 0.0612033 0.04515 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00702333 0.0321067 +0.09933 0.0953167 0.10836 0.09632 0.0983267 0.08127 0.0832767 0.06923 +0.0732433 0.06622 0.0581933 0.0591967 0.06923 0.0672233 0.0822733 0.0792633 +0.0732433 0.0732433 0.07224 0.06622 0.0712367 0.0682267 0.0672233 0.0622067 +0.0682267 0.0862867 0.103343 0.130433 0.160533 0.20769 0.27692 0.323073 +0.380263 0.426417 0.491633 0.560863 0.613592 0.684432 0.73724 0.783608 +0.835128 0.857024 0.87892 0.902104 0.895664 0.903392 0.908544 0.881496 +0.850584 0.815808 0.781032 0.725648 0.688296 0.613592 0.557853 0.49665 +0.434443 0.375247 0.309027 0.244813 0.205683 0.170567 0.127423 0.0983267 +0.0832767 0.0642133 0.06321 0.07224 0.0602 0.0712367 0.0792633 0.0802667 +0.0642133 0.0762533 0.0652167 0.0742467 0.06321 0.0551833 0.0602 0.0622067 +0.0652167 0.0682267 0.0802667 0.100333 0.0953167 0.0983267 0.0852833 0.0822733 +0.03913 0.0140467 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00802667 0.0431433 0.09933 0.106353 0.11137 0.09933 0.100333 +0.0943133 0.07826 0.0742467 0.06923 0.06622 0.07224 0.0712367 0.0762533 +0.0792633 0.0862867 0.0892967 0.0862867 0.0892967 0.0792633 0.0792633 0.0682267 +0.0762533 0.0732433 0.07525 0.0622067 0.0742467 0.06923 0.0712367 0.0672233 +0.0652167 0.05719 0.0622067 0.0652167 0.0652167 0.0612033 0.06923 0.0682267 +0.0732433 0.0742467 0.07525 0.0792633 0.0712367 0.0742467 0.0822733 0.07826 +0.06923 0.0742467 0.06622 0.0622067 0.06622 0.0581933 0.0732433 0.0652167 +0.06923 0.0712367 0.0682267 0.06321 0.0672233 0.0742467 0.0622067 0.0682267 +0.0742467 0.07525 0.07826 0.0882933 0.0762533 0.0732433 0.0802667 0.07525 +0.0672233 0.07826 0.0642133 0.06622 0.0682267 0.0702333 0.08127 0.09632 +0.101337 0.0973233 0.0973233 0.104347 0.0973233 0.0381267 0.00802667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0100333 0.0501667 0.110367 0.11137 +0.107357 0.100333 0.0943133 0.0862867 0.0742467 0.0802667 0.07826 0.06923 +0.08127 0.08127 0.08428 0.0892967 0.0923067 0.09331 0.08729 0.0903 +0.0882933 0.08729 0.08127 0.0762533 0.0802667 0.0762533 0.0862867 0.0822733 +0.0832767 0.0742467 0.0762533 0.07826 0.0792633 0.0762533 0.0672233 0.07826 +0.07826 0.0742467 0.06923 0.0712367 0.07525 0.06923 0.0772567 0.0762533 +0.0712367 0.0802667 0.0832767 0.0772567 0.0712367 0.0802667 0.0822733 0.0802667 +0.08729 0.0822733 0.07525 0.06923 0.0672233 0.0913033 0.0792633 0.09331 +0.0903 0.0953167 0.0892967 0.0832767 0.0822733 0.0832767 0.0852833 0.08428 +0.0762533 0.0762533 0.06923 0.0772567 0.08729 0.09632 0.106353 0.11739 +0.10234 0.107357 0.0351167 0.00802667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.01204 +0.0461533 0.08428 0.115383 0.107357 0.0953167 0.0973233 0.0832767 0.07826 +0.0792633 0.0822733 0.0772567 0.0852833 0.0903 0.08729 0.0882933 0.0973233 +0.0973233 0.0903 0.09331 0.0923067 0.0882933 0.09331 0.0923067 0.0832767 +0.08127 0.0802667 0.0862867 0.0862867 0.0983267 0.0892967 0.0802667 0.08729 +0.08729 0.0852833 0.08127 0.0802667 0.0862867 0.0882933 0.0832767 0.0882933 +0.0852833 0.0913033 0.08729 0.0923067 0.0772567 0.0913033 0.0822733 0.0762533 +0.0862867 0.0852833 0.09331 0.0892967 0.0903 0.100333 0.0892967 0.0943133 +0.0913033 0.0953167 0.0862867 0.09331 0.0832767 0.08127 0.08127 0.0792633 +0.07826 0.08428 0.0953167 0.106353 0.11438 0.116387 0.0772567 0.0491633 +0.00903 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0461533 0.0471567 0.113377 0.10836 0.103343 +0.0953167 0.0862867 0.08127 0.08729 0.0832767 0.0822733 0.08127 0.09331 +0.0983267 0.0943133 0.0973233 0.0923067 0.0973233 0.100333 0.09331 0.0953167 +0.0983267 0.0913033 0.0882933 0.0852833 0.0983267 0.0953167 0.0882933 0.0923067 +0.0973233 0.104347 0.0913033 0.09632 0.0983267 0.101337 0.0973233 0.0953167 +0.09331 0.09632 0.08729 0.0903 0.0822733 0.0882933 0.0913033 0.0913033 +0.101337 0.103343 0.106353 0.0973233 0.09632 0.0953167 0.08729 0.0913033 +0.0923067 0.09331 0.08428 0.0882933 0.0832767 0.0832767 0.0892967 0.0983267 +0.109363 0.10836 0.115383 0.0471567 0.04515 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0491633 +0.0431433 0.07525 0.10535 0.100333 0.0953167 0.0882933 0.0832767 0.08729 +0.09632 0.0882933 0.0913033 0.09331 0.104347 0.101337 0.09933 0.101337 +0.101337 0.100333 0.0983267 0.0973233 0.09933 0.100333 0.0923067 0.0943133 +0.100333 0.10234 0.09331 0.0953167 0.09933 0.101337 0.0983267 0.0943133 +0.09331 0.0913033 0.09331 0.0903 0.09933 0.09933 0.103343 0.10234 +0.09933 0.101337 0.10234 0.0892967 0.0903 0.09632 0.0832767 0.100333 +0.0882933 0.0903 0.09331 0.09933 0.100333 0.103343 0.0802667 0.0441467 +0.04816 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0441467 0.0381267 0.06622 0.10234 +0.109363 0.09632 0.0953167 0.0983267 0.0973233 0.100333 0.104347 0.107357 +0.103343 0.107357 0.0973233 0.107357 0.0983267 0.107357 0.09632 0.100333 +0.09331 0.09632 0.09331 0.0943133 0.0983267 0.10234 0.09933 0.101337 +0.0983267 0.09933 0.107357 0.10234 0.101337 0.106353 0.101337 0.10234 +0.09331 0.09933 0.104347 0.09933 0.09632 0.10234 0.0943133 0.10535 +0.10234 0.0672233 0.0371233 0.0461533 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0461533 0.04515 0.04214 0.04214 0.119397 0.11739 +0.1204 0.112373 0.116387 0.11739 0.107357 0.119397 0.10836 0.10836 +0.11438 0.110367 0.0973233 0.10836 0.09632 0.110367 0.104347 0.115383 +0.115383 0.112373 0.110367 0.11137 0.106353 0.116387 0.11137 0.11438 +0.109363 0.119397 0.04214 0.04515 0.0431433 0.0431433 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 \ No newline at end of file diff --git a/examples/extended/medical/DICOM/14196650.dat b/examples/extended/medical/DICOM/14196650.dat deleted file mode 100644 index 223f5046d1..0000000000 --- a/examples/extended/medical/DICOM/14196650.dat +++ /dev/null @@ -1,4 +0,0 @@ -Rows,columns(#): 512 512 -PixelSpacing_X,Y(mm): 0.976562 0.976562 -SliceThickness(mm): 3.000000 -SliceLocation(mm): -30.000000 diff --git a/examples/extended/medical/DICOM/14196650.g4 b/examples/extended/medical/DICOM/14196650.g4 deleted file mode 100644 index 88834993d0..0000000000 Binary files a/examples/extended/medical/DICOM/14196650.g4 and /dev/null differ diff --git a/examples/extended/medical/DICOM/14196650.g4dcm b/examples/extended/medical/DICOM/14196650.g4dcm new file mode 100644 index 0000000000..3cdbfc8e78 --- /dev/null +++ b/examples/extended/medical/DICOM/14196650.g4dcm @@ -0,0 +1,8464 @@ +10 +0 Air +1 LungInhale +2 LungExhale +3 AdiposeTissue +4 Breast +5 Water +6 Muscle +7 Liver +8 TrabecularBone +9 DenseBone +256 256 1 +-250 250 +-250 250 +-31.5 -28.5 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 2 3 4 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 4 3 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 3 5 5 6 6 6 6 6 6 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 6 6 6 6 6 6 6 6 6 6 6 6 5 4 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 5 6 6 6 6 6 6 6 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 6 5 5 6 5 6 6 6 6 6 6 6 6 6 5 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 6 6 6 6 6 6 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 5 5 5 6 5 6 5 5 6 6 6 6 6 6 5 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 5 6 6 6 6 6 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 6 6 6 6 6 5 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 6 6 6 6 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 6 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 5 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 5 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 6 5 6 5 6 6 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 6 6 5 6 5 6 6 6 5 5 6 5 6 6 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 6 6 6 5 6 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 5 6 5 6 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 6 6 5 6 6 6 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 6 6 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 6 5 5 6 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 6 6 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 5 5 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 5 5 5 5 6 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 6 5 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 6 6 5 5 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 5 6 6 6 6 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 5 5 6 5 5 6 5 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 6 6 6 6 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 6 6 5 5 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 6 6 6 5 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 6 6 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 5 6 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 4 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 5 3 2 2 3 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 2 2 1 2 2 2 4 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 4 2 1 0 0 0 0 1 2 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 6 3 1 0 0 0 0 0 0 0 0 1 2 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 2 2 2 2 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 3 1 0 0 0 0 0 0 0 0 0 0 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 2 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 2 1 1 1 1 1 1 1 1 1 1 1 2 4 5 5 5 5 5 4 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 1 0 0 0 0 0 0 0 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 1 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 2 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 2 2 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 5 5 5 5 5 5 5 5 5 5 5 4 2 1 1 1 1 2 2 1 2 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 3 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 4 5 5 5 5 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 4 5 5 5 5 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 4 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 5 5 5 5 3 1 1 1 1 1 1 2 2 1 1 2 2 1 1 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 2 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 1 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 4 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 4 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 1 1 1 1 1 1 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 5 5 5 5 5 5 5 4 5 5 5 5 5 3 2 1 1 1 1 1 1 2 1 1 1 1 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 2 1 1 1 1 1 2 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 1 0 0 0 0 0 0 1 2 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 4 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 2 2 2 2 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 2 2 2 2 2 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 1 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 2 1 1 1 1 1 1 1 1 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 4 2 0 0 0 0 0 0 0 1 2 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 4 2 2 2 2 2 2 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 3 2 1 1 1 1 2 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 5 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 6 6 5 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 5 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 6 6 6 6 6 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 5 6 5 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 5 5 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 6 5 5 6 6 6 6 6 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 6 6 5 6 5 5 6 5 6 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 6 6 5 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 4 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 3 4 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 4 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 4 3 3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 3 3 3 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 3 3 4 3 3 3 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 4 4 6 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 6 8 8 8 8 8 4 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 6 8 6 4 4 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 4 4 8 8 9 8 9 8 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 4 4 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 4 8 8 9 9 9 8 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 9 8 6 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 4 6 8 9 9 8 8 4 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 6 8 9 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 6 8 8 8 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 4 5 8 8 8 8 8 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 6 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 5 4 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 7 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 5 6 6 6 6 5 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 6 6 6 6 5 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 8 8 8 8 8 8 8 8 8 8 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 4 5 6 6 6 5 5 6 6 5 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 8 8 8 8 8 8 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 5 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 3 5 6 6 6 6 6 6 6 5 6 6 5 5 5 5 5 6 5 5 5 5 5 6 5 5 5 5 6 6 5 5 5 5 5 6 6 6 6 6 6 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 6 5 5 5 6 6 6 5 6 6 6 6 6 5 5 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 3 3 4 5 5 5 5 6 5 5 5 5 5 6 6 6 6 6 5 5 6 6 6 6 5 6 6 5 6 6 5 6 6 6 6 6 5 5 6 6 6 6 6 6 6 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 4 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 2 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 5 2 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 3 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 3 2 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 2 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 5 6 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 2 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 4 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 6 6 3 2 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 2 5 6 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 6 6 4 2 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 2 6 6 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 6 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 4 6 6 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 6 8 6 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 6 7 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 7 8 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 6 8 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 8 6 4 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 5 8 8 6 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 5 6 7 6 4 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 6 8 8 6 5 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 4 6 8 8 6 4 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 5 6 8 8 6 4 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 3 6 6 8 8 6 6 4 3 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 3 5 6 7 8 8 6 5 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 2 3 5 6 6 7 8 8 8 6 6 6 6 6 6 5 5 4 4 4 4 4 4 4 4 5 5 6 6 6 6 6 8 8 8 8 7 6 6 5 3 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0.00401333 0.00903 0.00301 0.00401333 0.00100333 0.00903 +0.00602 0.00501667 0.00501667 0 0.0140467 0.00501667 0.00401333 0.00401333 +0.00301 0.00501667 0.00200667 0.0110367 0.00200667 0.00200667 0.0110367 0.00702333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0.00501667 0.00100333 0.00301 0.00401333 0.00602 0.00301 0.00602 +0.00200667 0 0.00401333 0.0100333 0.00200667 0.00301 0.00200667 0.00602 +0.00501667 0.00501667 0 0.00100333 0.01204 0.00200667 0.00301 0.00100333 +0 0.00200667 0 0.00903 0 0 0.01204 0.00301 +0.00702333 0 0.00903 0 0.00200667 0.0140467 0.00200667 0.00702333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00301 0.00702333 0.00501667 0 0.00301 +0.00903 0.00401333 0.00200667 0.00200667 0.00301 0.00602 0.00501667 0.00301 +0.00501667 0 0.00501667 0.00802667 0.00200667 0 0.00301 0.00501667 +0 0.01204 0 0.00301 0.0110367 0.00100333 0.00200667 0.00200667 +0.00200667 0.00200667 0 0.00602 0.00200667 0 0.0130433 0 +0.00602 0 0.0100333 0 0.00401333 0.00802667 0.00301 0.00702333 +0 0.00501667 0.00401333 0.00501667 0.00501667 0.00802667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00602 0.00501667 +0.00501667 0.00200667 0.00802667 0 0 0.00802667 0 0.00100333 +0.00702333 0.00200667 0.00301 0.00401333 0.00200667 0.00401333 0.00200667 0.00200667 +0.00501667 0 0.00200667 0.00602 0 0 0.00501667 0.00200667 +0 0.0110367 0 0 0.00802667 0.00100333 0.00301 0.00100333 +0.00200667 0 0.00301 0.00100333 0.00401333 0 0.01204 0.00100333 +0.00401333 0.00100333 0.00301 0.00100333 0.00401333 0.00301 0.00501667 0.00200667 +0 0.00802667 0.00301 0.00200667 0.00602 0.00301 0.0100333 0.00903 +0.00501667 0.00802667 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00401333 0.00501667 0.00301 0.00401333 0.00602 +0.00501667 0.00200667 0.00702333 0.00100333 0.00301 0.00501667 0.00100333 0.00100333 +0 0.00401333 0 0.00401333 0.00301 0.00702333 0 0.00903 +0 0 0.00501667 0.00501667 0 0.00200667 0.00200667 0.00200667 +0 0.0100333 0 0.00100333 0.00501667 0 0.00301 0 +0.00301 0.00100333 0.00602 0 0.00301 0 0.0130433 0.00200667 +0 0.00501667 0 0.00401333 0.00200667 0.00100333 0.00802667 0 +0.00100333 0.00702333 0.00200667 0 0.00602 0.00200667 0.00501667 0.00702333 +0.00200667 0.00401333 0.00501667 0.00702333 0.00200667 0.00702333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00702333 +0.00401333 0.00401333 0.00200667 0.00401333 0.00401333 0.00501667 0 0.00401333 +0.00301 0.00401333 0.00100333 0.00501667 0 0.00301 0 0.00301 +0 0.00501667 0.00301 0.00401333 0.00200667 0.00702333 0 0.00903 +0 0 0.00802667 0.00200667 0 0.00301 0.00401333 0.00200667 +0.00200667 0.00702333 0.00602 0 0.00301 0.00100333 0.00401333 0.00200667 +0.00401333 0 0.00401333 0 0.00100333 0 0.0110367 0.00501667 +0 0.00301 0.00301 0.00200667 0.00200667 0.00100333 0.00501667 0 +0 0.00501667 0.00200667 0 0.00501667 0.00501667 0.00301 0.00802667 +0 0.00401333 0.00501667 0.00301 0.00401333 0.00100333 0.0100333 0.00802667 +0.0100333 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00802667 0 0.00802667 0.00301 +0.00401333 0.00602 0 0.00501667 0.00602 0.00401333 0 0.00301 +0.00100333 0.00802667 0 0.00501667 0.00100333 0 0.00200667 0.00200667 +0 0.00401333 0.00501667 0.00401333 0 0.00702333 0 0.00401333 +0.00100333 0 0.00602 0.00200667 0 0.00200667 0.00301 0 +0.00301 0.00301 0.00802667 0.00100333 0.00200667 0 0.00200667 0.00501667 +0.00100333 0 0.00501667 0 0.00100333 0.00200667 0.00702333 0.00602 +0 0.00200667 0.00501667 0.00301 0 0.00602 0.00501667 0 +0.00100333 0.00501667 0.00100333 0.00100333 0.00200667 0.00301 0.00401333 0.00501667 +0 0.00301 0.00501667 0.00401333 0 0.00200667 0.00602 0.00401333 +0.00401333 0.00602 0.00802667 0.00702333 0.00903 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0.00802667 0.00200667 0.00501667 0 0.00501667 0.00301 +0.00602 0.00602 0 0.00200667 0.00200667 0.00702333 0 0 +0 0.01204 0 0 0.00903 0 0.00802667 0.00200667 +0 0 0.00702333 0.00501667 0 0.00602 0 0.00602 +0.00401333 0 0.00501667 0.00100333 0 0.00301 0.00401333 0.00200667 +0.00200667 0.00401333 0.00301 0.00100333 0.00200667 0 0 0.00401333 +0.00401333 0 0.00401333 0 0.00200667 0.00200667 0.00501667 0.0110367 +0 0.00200667 0.00501667 0.00501667 0 0.00702333 0 0.00401333 +0.00301 0.00301 0.00401333 0.00200667 0.00100333 0 0.0100333 0 +0 0.00501667 0.00301 0.00200667 0 0.00501667 0.00301 0.00702333 +0.00200667 0.00401333 0.00501667 0.00200667 0.00501667 0.0100333 0.00501667 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00903 +0.00602 0.00301 0.00301 0.00401333 0.01204 0 0.00401333 0.00200667 +0.00602 0.00501667 0 0 0.00401333 0.00301 0.00401333 0 +0.00100333 0.00501667 0.00301 0 0.00602 0 0.00602 0 +0 0 0.00702333 0.00802667 0.00100333 0.00501667 0 0.00200667 +0.00501667 0 0.00501667 0 0.00100333 0.00200667 0 0.00301 +0 0.00401333 0 0.00100333 0.00702333 0 0 0.00301 +0.00903 0 0.00200667 0 0.00301 0.00200667 0.00602 0.0100333 +0 0.00100333 0.00401333 0.00200667 0.00200667 0.00100333 0 0.00401333 +0.00100333 0 0.00301 0.00401333 0 0.00301 0.00802667 0 +0.00100333 0.00501667 0.00501667 0 0 0.00401333 0.00200667 0.00602 +0 0.00200667 0.00301 0.00301 0 0.00501667 0.00501667 0.00802667 +0 0.00802667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00903 0.00702333 0 0.00602 +0.00501667 0.00802667 0 0.00401333 0.0110367 0 0.00100333 0.00602 +0 0.00401333 0.00401333 0.00200667 0.00401333 0.00100333 0.00802667 0 +0.00100333 0.00602 0.00602 0 0.00200667 0.00301 0.00401333 0.00200667 +0.00100333 0 0.00401333 0.00802667 0 0.00401333 0 0 +0.00501667 0.00100333 0.00501667 0 0 0.00602 0.00100333 0.00200667 +0.00100333 0.00401333 0.00100333 0 0.00401333 0 0 0.00100333 +0.0100333 0 0.00301 0 0 0.00200667 0.00602 0.00602 +0 0.00100333 0.00501667 0.00100333 0.00301 0 0.00501667 0.00200667 +0.00200667 0 0.00702333 0.00100333 0 0.00301 0.00602 0 +0.00301 0.00401333 0.00401333 0 0 0.00702333 0.00100333 0.00702333 +0 0 0.00903 0.00200667 0.00200667 0.00301 0.0100333 0 +0.00100333 0.00401333 0.00501667 0.0100333 0.0130433 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00602 0.00100333 0.00802667 0.00702333 0 0 +0.00100333 0.00802667 0.00100333 0.00200667 0.0110367 0 0 0.00401333 +0.00501667 0.00301 0.00401333 0 0.00100333 0.00301 0.00702333 0 +0.00301 0.00401333 0.00301 0 0 0.00301 0.00200667 0.00100333 +0 0.00200667 0 0.00903 0 0.00200667 0.00401333 0 +0.00501667 0.00100333 0.00301 0 0 0.00301 0 0.00200667 +0.00200667 0.00602 0 0 0.00401333 0 0 0 +0.00602 0 0.00100333 0.00100333 0 0.00200667 0.00401333 0.00200667 +0 0 0.00100333 0.00100333 0 0 0.00401333 0.00200667 +0.00301 0 0.00802667 0 0.00100333 0.00100333 0.00903 0 +0.00501667 0.00301 0.00301 0 0 0.00301 0.00200667 0.00602 +0 0.00301 0.00301 0.00200667 0 0.00401333 0.00802667 0 +0.00903 0.00100333 0.00501667 0.00802667 0.00602 0.00301 0 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00301 +0.00702333 0.00100333 0.00501667 0 0.00802667 0.00501667 0.00200667 0.00100333 +0 0.00602 0.00301 0 0.00602 0.00501667 0 0 +0.00301 0.00200667 0.00200667 0.00301 0.00501667 0 0.00401333 0 +0.00100333 0.00602 0.00301 0 0 0.00301 0 0.00301 +0 0.00301 0 0.00602 0.00100333 0.00100333 0.00602 0 +0.00401333 0.00100333 0.00200667 0 0 0.00200667 0.00602 0 +0.00100333 0.00602 0 0.00200667 0.00501667 0.00100333 0 0.00200667 +0.00802667 0.00200667 0 0.00200667 0 0.00100333 0.00702333 0.00100333 +0.00301 0 0.00100333 0.00501667 0.00301 0 0.00401333 0.00200667 +0 0 0.00401333 0.00401333 0 0.00401333 0.00301 0.00100333 +0.00200667 0.00401333 0.00100333 0.00200667 0.00401333 0 0.0100333 0.00100333 +0 0.00501667 0.00501667 0.00301 0.00100333 0.00501667 0.00401333 0 +0.00802667 0 0.00702333 0.00401333 0 0.00401333 0 0.0190633 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00401333 0.00401333 0.00200667 +0.00501667 0.00200667 0.00301 0.00401333 0.00200667 0.00602 0 0.00200667 +0 0.00301 0.00301 0.00501667 0.00200667 0.0110367 0 0 +0.00602 0.00401333 0 0.00301 0.00602 0 0 0.00301 +0 0.00702333 0.00200667 0 0 0.00301 0.00100333 0.00301 +0 0.00301 0 0.00301 0.00200667 0.00100333 0.00100333 0 +0 0.00301 0.00401333 0.00501667 0 0 0.00401333 0 +0.00100333 0.00802667 0 0.00100333 0.00200667 0 0 0.00301 +0.00301 0.00100333 0 0.00100333 0 0.00100333 0.00301 0.00200667 +0 0 0.00301 0.00200667 0.00301 0 0.00501667 0 +0 0 0.00100333 0.00301 0 0.00200667 0 0.00602 +0 0.00702333 0 0.00602 0.00301 0 0.00802667 0 +0.00100333 0.00100333 0.00501667 0.00100333 0.00200667 0.00401333 0.00100333 0 +0.00100333 0.00200667 0.00301 0.00401333 0.00100333 0.00200667 0.00301 0.0100333 +0 0.00200667 0.00602 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00903 0.00501667 0.00401333 0 0.00501667 +0.00401333 0 0.00100333 0.00602 0.00301 0 0 0.00501667 +0 0.00100333 0.00100333 0.00602 0.00501667 0.00301 0.00602 0 +0.00200667 0.00200667 0 0 0.00802667 0 0.00100333 0.00100333 +0 0 0.00903 0 0 0.00100333 0.00100333 0.00200667 +0 0.00301 0 0.00602 0 0.00401333 0 0.00401333 +0 0 0.00501667 0.00301 0 0.00100333 0.00602 0.00301 +0 0.00903 0 0.00401333 0 0.00401333 0 0.00602 +0.00301 0.00100333 0 0.00100333 0.00100333 0.00100333 0.00501667 0.00501667 +0 0 0.00100333 0.00100333 0 0.00602 0.00200667 0 +0.00100333 0.00100333 0.00100333 0.00401333 0 0.00301 0.00100333 0.00200667 +0 0.00401333 0.00100333 0.00301 0 0 0.00401333 0.00200667 +0 0.00100333 0.0100333 0 0.00301 0.00200667 0.00100333 0 +0.00401333 0.00802667 0 0.00401333 0.00100333 0.00501667 0.00301 0.00401333 +0 0.00501667 0.00401333 0.0100333 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00802667 0 0.00602 0.00501667 0.00301 0.00100333 0 +0.0100333 0 0 0.00301 0.00903 0.00100333 0 0.00802667 +0 0 0.00301 0.00602 0.00401333 0 0.00501667 0 +0 0.00501667 0.00401333 0 0.00501667 0 0.00301 0.00100333 +0.00100333 0 0.00702333 0.00100333 0 0 0 0.00200667 +0.00200667 0 0 0.00501667 0 0.00501667 0 0.00200667 +0 0 0.00501667 0.00702333 0 0 0.00602 0.00100333 +0 0.0100333 0.00200667 0.00501667 0 0.00401333 0 0.00401333 +0.00301 0 0.00200667 0 0 0.00200667 0.00100333 0.00301 +0 0 0.00501667 0 0.00200667 0.00602 0 0.00301 +0 0.00200667 0 0.00401333 0.00100333 0.00301 0.00100333 0 +0 0.00501667 0.00401333 0.00401333 0 0.00100333 0 0.00401333 +0 0 0.00501667 0 0.00702333 0 0.00602 0 +0.00301 0.00100333 0.00200667 0.00200667 0 0.00903 0.00100333 0 +0.00301 0.00802667 0 0.00903 0 0.00301 0.00702333 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00802667 +0.00200667 0.00702333 0.00401333 0 0.00100333 0.00501667 0.00401333 0 +0.00602 0.00100333 0.00200667 0.00100333 0.00501667 0.00501667 0 0.00401333 +0.00401333 0 0.00100333 0.00401333 0.00602 0 0.00301 0 +0 0 0.00903 0 0.00200667 0 0.00501667 0 +0.00602 0 0.00301 0.00401333 0 0 0 0 +0.00802667 0 0.00301 0 0.00301 0.00200667 0.00200667 0 +0 0 0.00401333 0.00301 0.00100333 0 0.00602 0 +0 0.00501667 0.00100333 0.00200667 0 0 0.00401333 0.00301 +0.00100333 0 0 0.00301 0 0 0 0.00200667 +0.00200667 0.00100333 0.00100333 0 0.00301 0.00200667 0 0.00100333 +0.00200667 0.00200667 0.00301 0.00100333 0.00301 0 0.00401333 0 +0 0.00200667 0.00200667 0.00501667 0 0 0 0.00301 +0 0.00401333 0.00301 0 0.00802667 0 0.00301 0.00100333 +0.00401333 0 0.00401333 0 0.00702333 0.00501667 0 0 +0.00200667 0.00702333 0.00100333 0.00301 0.00100333 0.00802667 0.00100333 0.00802667 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00602 0.00100333 0.00501667 +0.00602 0.00100333 0.00401333 0.00100333 0 0.00802667 0 0.00100333 +0.00301 0.00301 0.00100333 0 0.00200667 0.00702333 0 0.00100333 +0.00401333 0 0.00200667 0.00200667 0.00702333 0 0.00501667 0 +0.00401333 0 0.00702333 0 0.00100333 0 0.00401333 0 +0 0.00501667 0 0.00602 0 0 0.00100333 0 +0.00702333 0 0.00200667 0 0.00802667 0 0.00301 0.00100333 +0 0 0.00301 0 0.00702333 0 0.00200667 0 +0 0.00200667 0.00100333 0 0 0 0.00602 0 +0 0.00301 0 0.00200667 0 0.00301 0.00100333 0 +0.00200667 0.00301 0 0 0 0.00200667 0.00301 0 +0.00200667 0.00100333 0 0 0.00301 0.00200667 0.00401333 0 +0.00200667 0.00100333 0.00401333 0.00200667 0.00301 0 0 0.00501667 +0 0.00501667 0 0.00301 0.00501667 0 0.00301 0.00200667 +0.00100333 0.00401333 0.00100333 0.00200667 0.00702333 0 0 0 +0.00802667 0.00702333 0 0.00200667 0.00200667 0.00501667 0.00200667 0.00702333 +0 0.00702333 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0 0.00702333 0 +0.00602 0.00401333 0 0.00501667 0 0.00602 0.00702333 0 +0.00200667 0.00401333 0.00301 0 0.00401333 0.00200667 0 0 +0.00401333 0.00301 0 0.00100333 0.00501667 0.00100333 0.00200667 0 +0.00301 0 0.00602 0 0.00401333 0.00200667 0 0.00100333 +0 0.00501667 0 0 0.00602 0 0 0.00200667 +0.00100333 0 0 0 0.00401333 0.00200667 0.00602 0 +0 0 0.00501667 0 0.00602 0.00200667 0.00200667 0 +0.00100333 0.00301 0.00200667 0 0 0.00200667 0.00702333 0 +0.00100333 0.00401333 0 0.00301 0 0.00200667 0 0 +0 0.00401333 0 0.00100333 0 0.00200667 0.00401333 0 +0 0.00200667 0 0.00501667 0.00100333 0 0.00200667 0 +0.00301 0.00100333 0.00301 0.00100333 0.00802667 0 0 0.00100333 +0.00100333 0.00200667 0 0.00903 0.00200667 0 0.00501667 0.00200667 +0.00200667 0 0.00501667 0 0.00301 0 0 0 +0.0130433 0.00401333 0 0 0.0110367 0 0.00501667 0.00100333 +0 0.00802667 0.00200667 0 0.00501667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00301 0.00702333 0.00602 0 0.00301 0.00100333 +0 0.00802667 0.00200667 0.00100333 0.00200667 0.00100333 0.00602 0.00301 +0 0 0.01204 0 0.00100333 0.00200667 0.00301 0 +0.00401333 0.00301 0 0.00100333 0.00501667 0 0 0.00301 +0.00200667 0 0.00301 0.00200667 0.00200667 0.00602 0 0.00100333 +0.00301 0 0.00301 0 0.00401333 0 0 0.00200667 +0 0.00200667 0 0.00401333 0 0.00602 0.00501667 0 +0.00401333 0 0 0 0.00301 0.00301 0.00501667 0 +0.00401333 0.00200667 0.00301 0 0 0.00501667 0.00501667 0 +0 0.00501667 0 0.00401333 0.00100333 0.00301 0 0 +0 0.00301 0.00200667 0.00602 0 0.00200667 0 0 +0 0.00200667 0 0.00903 0.00100333 0 0.00200667 0 +0.00301 0.00501667 0 0.00501667 0.00401333 0.00200667 0 0 +0 0.00100333 0.00301 0.00702333 0 0 0.00301 0.00301 +0 0 0.00802667 0 0.00200667 0.00401333 0.00100333 0.00301 +0.00702333 0.00200667 0 0.00301 0.0110367 0 0.00501667 0 +0.00401333 0.00802667 0 0 0.00501667 0.00802667 0.00702333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00602 0 0.00501667 0.00401333 0 0.00401333 +0 0.00100333 0.00702333 0.00301 0 0 0.00903 0.00501667 +0 0 0.00401333 0.00702333 0 0 0.00301 0.00401333 +0.00100333 0 0.00100333 0.00301 0.00301 0.00301 0 0.00100333 +0.00401333 0 0 0.00301 0 0.00602 0 0 +0.00301 0.00100333 0 0 0.00401333 0 0 0.00200667 +0 0.00401333 0 0.00401333 0 0.00301 0.00401333 0 +0.00401333 0 0 0.00100333 0.00401333 0.00401333 0 0 +0.00200667 0.00100333 0.00100333 0 0.00401333 0.00602 0.00401333 0 +0.00100333 0.00200667 0 0.00301 0.00200667 0.00401333 0 0.00501667 +0 0.00200667 0.00301 0.00200667 0 0 0 0.00301 +0 0 0 0.00802667 0.00100333 0 0.00200667 0 +0.00501667 0 0 0.0100333 0.00100333 0.00401333 0 0.00401333 +0 0.00200667 0.00602 0.00200667 0 0 0.00200667 0.00401333 +0 0.00301 0 0 0.00702333 0 0.00301 0.00401333 +0.00301 0.00200667 0 0.00802667 0.00903 0.00401333 0 0 +0.00501667 0.00401333 0.00100333 0.00100333 0.00401333 0.00802667 0 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00301 +0 0 0.00200667 0.00401333 0.00200667 0.00200667 0 0 +0.00702333 0 0.00100333 0.00602 0 0 0.00301 0.00802667 +0 0 0.00200667 0.00602 0.00401333 0 0 0.00501667 +0 0 0 0.00602 0.00100333 0 0.00401333 0 +0 0.00501667 0 0.00100333 0 0.00200667 0.00301 0 +0.00602 0.00100333 0 0 0.00200667 0.00501667 0 0.00301 +0 0.00501667 0 0.00401333 0 0 0 0.00301 +0 0.00100333 0 0 0.00401333 0.00301 0 0.00200667 +0 0.00401333 0 0 0 0.00602 0.00401333 0 +0.00200667 0.00401333 0 0.00501667 0.00100333 0.00301 0 0.00501667 +0 0.00301 0.00200667 0.00401333 0.00100333 0 0 0.00401333 +0 0 0.00401333 0.00301 0.00401333 0 0.00100333 0 +0.00602 0 0.00100333 0.00903 0.00100333 0.00100333 0 0.00301 +0 0.00602 0.00301 0.00501667 0.00100333 0 0.00602 0 +0.00100333 0.00702333 0 0 0.00401333 0 0.00200667 0.00501667 +0 0.00301 0 0.00301 0.0100333 0 0 0.00802667 +0 0.00200667 0.00100333 0.00301 0 0.00702333 0 0.00903 +0.00200667 0.01204 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00501667 0.0100333 0.00602 +0 0 0.00200667 0 0.00903 0 0 0 +0.0100333 0.00301 0.00100333 0.00702333 0.00100333 0 0.00200667 0.00602 +0.00301 0 0.00501667 0.00301 0.00200667 0.00100333 0 0 +0.00100333 0.00401333 0 0.00602 0.00401333 0 0.00401333 0.00100333 +0 0.00200667 0.00200667 0 0.00401333 0 0.00200667 0.00100333 +0.00401333 0.00200667 0 0.00200667 0 0.00501667 0.00301 0 +0 0 0 0.00200667 0 0.00702333 0 0.00702333 +0 0.00100333 0.00200667 0 0.00501667 0.00200667 0 0.00200667 +0.00100333 0.00501667 0 0.00401333 0 0.00301 0.00702333 0 +0.00301 0.00200667 0 0.00100333 0.00301 0 0 0.00100333 +0.00200667 0.00200667 0 0.00401333 0 0 0.00100333 0.00100333 +0.00200667 0 0.00501667 0.00301 0.00501667 0 0.00200667 0 +0.00501667 0 0.00401333 0.00301 0.00301 0 0 0 +0 0.00602 0 0.00602 0 0 0.00602 0.00100333 +0.00602 0.00100333 0 0.00200667 0 0.00602 0 0 +0.00200667 0.00401333 0 0.00602 0.00501667 0 0.00702333 0 +0.00401333 0.00200667 0.00401333 0 0 0.00401333 0 0.00501667 +0.00301 0.00802667 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00501667 0.00401333 0.0110367 0.00301 +0.00200667 0 0 0 0.00602 0.00401333 0 0 +0.00100333 0.00802667 0.00301 0 0 0 0 0 +0.00501667 0 0 0.00602 0.00401333 0.00100333 0 0 +0.00501667 0.00100333 0.00200667 0 0.00401333 0 0 0.00100333 +0 0 0.00100333 0.00100333 0.00100333 0.00200667 0 0.00501667 +0 0 0 0 0 0.00100333 0.00501667 0 +0 0 0.00401333 0 0 0.00702333 0 0.00802667 +0 0.00401333 0.00200667 0 0.00401333 0.00200667 0.00100333 0.00200667 +0 0.00301 0 0.00401333 0.00200667 0 0.0100333 0 +0.00903 0 0 0.00301 0.00301 0.00100333 0 0 +0.00602 0.00200667 0.00301 0 0.00301 0 0 0 +0.00200667 0 0.00100333 0.00200667 0.00301 0 0.00200667 0.00200667 +0.00501667 0 0.00501667 0.00100333 0.00501667 0 0.00200667 0 +0.00100333 0.00401333 0 0.00401333 0 0 0.00200667 0.00501667 +0.00401333 0 0 0.00602 0 0.00301 0 0.00100333 +0 0.00401333 0 0.00602 0 0.00200667 0.00401333 0 +0.00501667 0.00501667 0 0 0 0.0110367 0 0.00301 +0.00602 0.00100333 0.00301 0.00301 0.00802667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0110367 0.00200667 0.00401333 0.00301 0.00802667 0.00602 +0.00401333 0 0 0 0 0.00702333 0.00501667 0 +0 0.00501667 0.00401333 0.00200667 0.00200667 0 0 0.00100333 +0.00401333 0 0 0.00401333 0.00802667 0 0 0 +0.00501667 0 0.00301 0.00200667 0.00301 0 0.00501667 0 +0.00602 0 0 0.00301 0 0.00100333 0 0.00100333 +0.00100333 0 0 0.00100333 0 0 0.00100333 0.00100333 +0.00100333 0 0.00602 0 0.00501667 0 0 0.00200667 +0 0.00100333 0.00501667 0 0.00301 0.00301 0 0.00100333 +0.00200667 0 0 0.00200667 0.00301 0 0.00702333 0 +0.0100333 0 0 0.00401333 0 0.00100333 0 0 +0.00501667 0.00301 0.00301 0 0.00702333 0 0 0.00200667 +0 0.00100333 0.00301 0 0.00100333 0 0 0.00200667 +0.00501667 0 0.00501667 0.00100333 0.00200667 0 0.00401333 0 +0.00702333 0 0 0.00602 0 0 0.00501667 0.00200667 +0.00401333 0 0 0.00802667 0.00200667 0.00301 0 0.00100333 +0.00100333 0 0.00200667 0.00401333 0.00301 0.00301 0 0.00200667 +0.00702333 0.00100333 0 0.00401333 0.00602 0.00702333 0 0 +0.00602 0 0.0100333 0.00401333 0.00401333 0.00501667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00100333 0.00602 0.00100333 0.00200667 0.00200667 0.00602 +0.00401333 0 0.00301 0.00200667 0 0.00501667 0.00702333 0 +0 0.00200667 0.00602 0.00200667 0.00702333 0 0 0 +0.00301 0.00200667 0 0.00401333 0 0.00501667 0 0.00401333 +0 0 0 0.00401333 0.00301 0 0.00501667 0 +0.00401333 0.00301 0 0.00301 0.00200667 0 0 0.00401333 +0.00200667 0 0 0.00401333 0 0.00301 0 0.00301 +0.00200667 0 0.00602 0 0.00802667 0 0.00702333 0 +0 0.00100333 0.00602 0 0.00401333 0 0.00401333 0 +0.00401333 0 0.00301 0 0.00401333 0 0.00301 0 +0.00702333 0 0.00100333 0.00501667 0 0 0.00301 0 +0.00401333 0.00501667 0.00200667 0 0.00401333 0.00301 0 0.00200667 +0 0.00301 0.00602 0 0 0.00200667 0 0 +0.00501667 0.00100333 0 0.00301 0 0 0.00200667 0 +0.00903 0 0.00301 0.00501667 0 0 0.00702333 0 +0.00401333 0 0 0.00501667 0 0.00200667 0 0.00301 +0.00100333 0.00200667 0.00301 0.00200667 0.00501667 0.00301 0 0.00802667 +0.00301 0 0 0.0100333 0.00702333 0.00200667 0 0.00401333 +0.00100333 0 0.00802667 0.00100333 0.00401333 0.00200667 0.00903 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00200667 0.00200667 0.00501667 0 0.00200667 0.00200667 0.00200667 0 +0.0110367 0.00401333 0.00200667 0 0.00100333 0 0.00401333 0.00301 +0 0.00100333 0.00301 0.00401333 0.00100333 0 0.00200667 0 +0.00301 0.00301 0 0.00501667 0 0.00301 0.00200667 0 +0.00602 0 0 0.00200667 0.00501667 0 0 0 +0 0.00100333 0 0.00200667 0 0 0 0 +0.00301 0 0 0.00802667 0 0.00301 0.00100333 0 +0.00200667 0 0.00602 0 0.00602 0 0.00200667 0.00401333 +0 0 0.00602 0 0.00401333 0 0.00401333 0 +0.00200667 0 0.00602 0 0 0.00301 0 0.00501667 +0.00401333 0 0 0.00100333 0 0 0.00200667 0.00401333 +0 0.00802667 0.00100333 0 0.00200667 0.00602 0 0.00301 +0.00200667 0.00100333 0.00401333 0 0 0.00903 0 0.00602 +0.00200667 0.00401333 0 0.00200667 0 0.00100333 0 0.00702333 +0.00200667 0 0.00301 0.00501667 0 0 0.00702333 0 +0 0 0.00200667 0.00401333 0.00100333 0 0.00301 0.00501667 +0 0.00301 0.00200667 0.00100333 0.00301 0.00100333 0 0.00200667 +0 0 0.00100333 0.00903 0.00200667 0.00100333 0 0.00802667 +0.00501667 0 0.00501667 0.00602 0 0.00301 0.00401333 0.00702333 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00802667 +0.00602 0 0 0.00602 0.00100333 0 0.00702333 0 +0.00100333 0.01204 0 0.00200667 0 0.00301 0.00100333 0.00401333 +0 0.00200667 0 0.00401333 0.00602 0 0.00200667 0 +0 0.00401333 0.00200667 0.00100333 0 0 0.00802667 0 +0.00602 0 0 0.00100333 0 0 0.00100333 0.00301 +0 0.00301 0 0.00501667 0 0.00200667 0 0.00501667 +0 0.00501667 0 0.00401333 0 0.00100333 0 0 +0.00100333 0.00301 0 0 0.00100333 0.00301 0 0.00100333 +0.00200667 0 0.00501667 0 0 0.00200667 0 0.00501667 +0 0 0.00301 0.00100333 0 0.00401333 0 0.00401333 +0.00401333 0 0.00301 0 0.00501667 0 0 0.00501667 +0 0.00501667 0 0 0.00301 0.00200667 0 0.00100333 +0.00401333 0 0.00602 0 0 0.00602 0 0.00401333 +0.00200667 0.00401333 0 0.00301 0 0 0.00200667 0.00301 +0 0 0 0.00401333 0 0.00301 0.00401333 0 +0 0 0.00200667 0.00301 0 0 0.00200667 0.00401333 +0 0.00100333 0.00401333 0.00501667 0.00100333 0.00602 0 0.00200667 +0 0.00100333 0.00401333 0.00802667 0 0.00301 0.00301 0.00200667 +0.00602 0.00100333 0.00702333 0 0 0.00301 0.00702333 0.00602 +0 0 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00100333 0.00100333 +0.0140467 0.00301 0 0.00301 0.00401333 0.00200667 0.00301 0.00401333 +0 0.0110367 0.00301 0.00100333 0 0 0.00301 0 +0.00301 0 0.00200667 0 0.0100333 0 0.00100333 0 +0 0 0.00100333 0.00501667 0 0 0.00200667 0.00100333 +0 0.00200667 0.00401333 0.00200667 0 0 0.00501667 0 +0 0 0.00301 0.00100333 0 0 0 0.00903 +0 0 0.00301 0 0.00100333 0.00702333 0 0.00401333 +0 0.00501667 0.00100333 0.00100333 0 0.00702333 0 0 +0.00100333 0 0.00501667 0 0 0.00602 0 0.00401333 +0 0.00602 0 0.00501667 0 0.00200667 0.00100333 0 +0.00602 0 0.00200667 0 0.00100333 0.00100333 0 0.00501667 +0 0.00100333 0.00301 0.00100333 0 0.00200667 0 0.00100333 +0.00602 0 0.00401333 0.00100333 0 0 0.00401333 0 +0.00401333 0 0.00200667 0.00401333 0.00100333 0 0.00702333 0 +0 0.00401333 0 0.00301 0 0.00301 0.00200667 0 +0 0.00100333 0.00200667 0.00100333 0.00200667 0 0.00401333 0 +0.00200667 0.00301 0.00200667 0.00401333 0.00401333 0.00401333 0 0.00301 +0 0.00501667 0 0.00200667 0 0.00401333 0 0.00200667 +0.0110367 0.00301 0.00301 0 0.00200667 0.00501667 0.00401333 0.00702333 +0 0.00401333 0.0130433 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00301 0.00200667 0 +0.00602 0.00602 0.00401333 0 0.00100333 0.00401333 0.00301 0.00501667 +0 0 0.00802667 0 0.00301 0 0.00100333 0 +0.00501667 0 0 0 0.00702333 0.00602 0 0.00100333 +0 0 0.00702333 0 0.00301 0 0 0.00100333 +0.00301 0 0.00200667 0 0.00501667 0 0.00301 0.00100333 +0 0.00301 0.00100333 0.00100333 0.00501667 0 0 0.00200667 +0.00301 0 0.00100333 0.00200667 0 0.00501667 0 0.00401333 +0 0.00100333 0.00501667 0 0 0.00401333 0.00301 0 +0.00200667 0 0.00802667 0 0.00200667 0.00100333 0 0 +0.00401333 0.00501667 0 0 0 0.00100333 0.00301 0.00100333 +0.00100333 0 0 0.00100333 0.00200667 0.00301 0 0.00100333 +0.00100333 0.00200667 0.00401333 0.00200667 0 0.00401333 0 0.00301 +0.00100333 0 0.00100333 0 0 0 0.00301 0 +0.00200667 0.00301 0 0.00401333 0.00301 0 0.00501667 0 +0 0.00501667 0 0 0.00200667 0 0.00301 0 +0 0.00301 0 0.00501667 0.00200667 0 0.00200667 0 +0.00301 0.00301 0 0.00401333 0.00501667 0 0 0 +0 0.00702333 0 0.00401333 0 0 0.00301 0.00501667 +0.00903 0 0 0 0.00802667 0 0.00301 0.00301 +0 0.00602 0.00802667 0 0.00602 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00602 0.00602 0.00200667 0.00401333 0.00200667 0 +0.00401333 0.00100333 0.00802667 0.00501667 0 0 0.00602 0.00401333 +0.00301 0 0.00100333 0.00301 0.00200667 0.00100333 0 0 +0 0.0100333 0 0 0.00100333 0.00501667 0.00501667 0.00100333 +0 0 0.00401333 0.00401333 0 0.00100333 0.00100333 0 +0.00401333 0 0.00501667 0 0.00602 0 0 0.00501667 +0 0.00100333 0.00301 0 0.00602 0 0.00100333 0.00100333 +0.00802667 0 0 0.00200667 0 0.00200667 0.00200667 0 +0.00401333 0.00200667 0.00301 0 0.00100333 0 0.00802667 0 +0.00401333 0 0.00602 0 0 0 0.00301 0 +0.00301 0.00501667 0.00301 0 0.00301 0.00200667 0.00401333 0 +0 0 0.00100333 0 0.00501667 0 0 0 +0 0.00200667 0.00100333 0.00501667 0 0 0.00100333 0.00501667 +0 0 0 0.00501667 0 0 0 0.00200667 +0 0.00602 0 0.00702333 0.00602 0 0.00301 0 +0 0.00100333 0 0.00100333 0.00903 0 0.00100333 0 +0.00401333 0 0.00401333 0.00702333 0 0.00401333 0 0.00401333 +0.00401333 0 0.00100333 0.00100333 0 0 0 0.00100333 +0 0.00501667 0 0.00200667 0.00401333 0 0.00401333 0.00501667 +0.00100333 0 0.00200667 0.00200667 0.00401333 0.00301 0.00100333 0.00200667 +0.00100333 0.00401333 0.00301 0 0.00702333 0.00602 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0.00301 0.00401333 0.00501667 0.00301 0.00401333 0 +0 0.00802667 0.00100333 0.00401333 0.00200667 0.00200667 0 0.00602 +0 0.00602 0 0.00501667 0.00301 0.00401333 0 0 +0 0.00200667 0.01204 0 0 0 0.00802667 0.00401333 +0.00100333 0 0 0.00602 0 0 0.00501667 0 +0.00200667 0.00200667 0.00802667 0 0.00200667 0 0.00301 0 +0 0 0.00200667 0.00100333 0.00501667 0 0 0 +0.00602 0 0.00100333 0 0.00200667 0.00100333 0.00301 0 +0.00301 0.00100333 0.00200667 0.00301 0 0 0.00100333 0.00301 +0 0.00100333 0.00301 0.00200667 0 0.00501667 0 0 +0.00301 0.00301 0.00501667 0.00200667 0 0.00501667 0 0 +0.00301 0 0.00401333 0.00100333 0.00200667 0.00401333 0 0.00200667 +0.00100333 0 0.00501667 0.00501667 0 0 0.00501667 0 +0.00100333 0.00501667 0 0.00802667 0 0 0 0.00301 +0 0.00501667 0 0.0100333 0.00401333 0 0 0.00401333 +0 0 0.00401333 0 0.00501667 0 0.00100333 0 +0 0 0.00501667 0 0.00301 0 0 0.00903 +0.00200667 0 0 0.00401333 0 0 0 0.00200667 +0.00100333 0.00401333 0.00100333 0.00602 0 0.00301 0 0.00301 +0 0.00401333 0.00602 0 0.00401333 0.00401333 0 0.00702333 +0 0.00702333 0 0.00501667 0.00401333 0.00100333 0.00802667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0.00702333 0.00200667 0 0.00501667 0.00401333 +0 0.00401333 0.00200667 0.00301 0.00602 0.00100333 0 0.00301 +0 0.00401333 0 0 0.00501667 0.00501667 0.00602 0 +0 0 0.00802667 0.00200667 0 0 0 0.00802667 +0 0 0 0.00200667 0.00100333 0 0.00401333 0.00200667 +0 0.00301 0 0.00401333 0.00100333 0 0.00903 0 +0 0.00100333 0.00501667 0 0.00602 0 0.00100333 0.00100333 +0.00200667 0 0.00200667 0 0.00802667 0 0 0.00401333 +0 0 0.00301 0.00401333 0 0 0 0.00802667 +0.00100333 0.00100333 0.00602 0 0 0.00702333 0 0 +0.00602 0 0.00702333 0.00100333 0 0.00501667 0 0 +0.00401333 0 0.00301 0.00301 0 0.00702333 0 0.00301 +0 0 0.00301 0.0110367 0 0 0.00301 0.00401333 +0 0.00702333 0 0.00702333 0.00100333 0 0 0.00200667 +0 0.00200667 0 0.00401333 0.00602 0 0.00100333 0 +0.00100333 0 0.00702333 0 0.00301 0 0.00501667 0 +0 0.00301 0.00100333 0.00200667 0.00200667 0 0.00200667 0.0110367 +0 0.00200667 0 0.00501667 0 0.00200667 0 0 +0.00200667 0.00100333 0.00802667 0.00100333 0 0.00301 0 0.00301 +0 0.00802667 0.00100333 0 0.00401333 0 0.00501667 0 +0.00200667 0.00301 0 0.00602 0.00301 0.00301 0.00501667 0.00200667 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0.0110367 0 0 0.00301 0.00100333 0 0 0.00100333 +0.00301 0.00200667 0.00401333 0 0.00200667 0.00100333 0.00602 0 +0.00301 0 0.00301 0 0.00301 0.00301 0.00401333 0.00702333 +0 0 0.00301 0.00301 0 0.00602 0 0.00903 +0 0.00401333 0 0.00301 0 0 0 0 +0 0.00301 0 0.00200667 0.00501667 0 0.00702333 0.00401333 +0 0 0.00100333 0 0 0.00401333 0 0.00200667 +0 0 0 0 0.00501667 0.00200667 0 0.00602 +0.00100333 0 0 0.00702333 0 0.00100333 0 0.00200667 +0.00602 0 0.0100333 0 0 0.00501667 0 0.00200667 +0.00200667 0 0.00200667 0.00602 0 0 0 0 +0.00100333 0.00200667 0.00301 0.00200667 0 0.00401333 0.00301 0.00200667 +0 0 0 0.00903 0.00301 0 0.00602 0.00200667 +0 0.00501667 0 0 0.00301 0 0 0.00100333 +0 0.00401333 0.00401333 0.00100333 0.00802667 0 0.00301 0 +0.00200667 0.00401333 0 0 0.00401333 0 0.00702333 0 +0 0.00401333 0 0.00602 0 0 0.00602 0.00401333 +0 0.00702333 0 0.00401333 0.00200667 0.00200667 0 0 +0.00100333 0.00501667 0.00401333 0 0.00301 0 0.00200667 0.00200667 +0.00301 0.00501667 0 0.00602 0 0 0.0100333 0 +0.00401333 0.00401333 0 0.00401333 0 0.00100333 0.00100333 0.00903 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00501667 0.00501667 +0 0.0110367 0 0.00100333 0 0.00100333 0.00401333 0 +0 0.00602 0.00100333 0.00100333 0.00100333 0 0.00702333 0.00301 +0 0.00401333 0.00200667 0.00100333 0 0.00702333 0.00100333 0.00301 +0.00301 0 0.00200667 0.00401333 0.00200667 0 0 0 +0.00501667 0.00301 0 0 0.00100333 0 0 0.00200667 +0.00301 0.00401333 0 0.00401333 0.00501667 0 0.00100333 0.00501667 +0.00200667 0 0.00301 0.00401333 0 0.00401333 0.00100333 0.00401333 +0 0 0 0 0.00100333 0.00401333 0 0 +0.00802667 0 0 0.00702333 0 0.00602 0.00301 0 +0.00903 0 0.00301 0.00200667 0 0.00401333 0 0 +0.00401333 0 0 0.0100333 0.00200667 0 0 0.00301 +0 0.0100333 0.00100333 0 0 0 0.00802667 0.00100333 +0 0 0.00100333 0.00401333 0.00401333 0 0.00301 0 +0 0.00200667 0.00401333 0.00100333 0.00100333 0 0 0.00301 +0 0.00401333 0.00301 0.00200667 0.00501667 0 0 0.00802667 +0 0.00301 0 0.00100333 0 0.00401333 0 0 +0 0.00702333 0 0.00200667 0.00200667 0 0.00301 0.00200667 +0.00100333 0 0 0.00401333 0.00301 0 0 0 +0.00301 0.00401333 0 0.00401333 0 0 0.00401333 0.00301 +0.00501667 0 0 0.00401333 0 0.00702333 0.00401333 0.00100333 +0 0.00301 0.00100333 0.00100333 0 0 0.00802667 0 +0 0.00903 0.01204 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00602 0.00301 0.00602 +0.00301 0.00301 0.00301 0.00200667 0.00301 0.00401333 0 0.00301 +0 0.00401333 0.00501667 0.00200667 0 0 0.00401333 0.00401333 +0.00200667 0 0 0.00501667 0 0.00301 0.00200667 0 +0.00200667 0 0.00401333 0.00100333 0.00100333 0 0 0.00100333 +0.00200667 0 0.00200667 0.00200667 0.00100333 0 0 0.00301 +0 0.00401333 0 0.00200667 0.00401333 0 0 0.00802667 +0.00100333 0 0.00200667 0 0.00200667 0.00301 0 0.00702333 +0 0.00301 0 0 0.00100333 0 0 0.00100333 +0.00401333 0 0.00401333 0.00401333 0 0.00401333 0.00602 0 +0.00401333 0 0.00301 0.00200667 0 0.00401333 0 0.00200667 +0.00702333 0 0 0.00702333 0.00200667 0 0 0 +0 0.00702333 0 0.00100333 0 0 0.01204 0 +0 0 0 0 0.00802667 0 0 0 +0.00100333 0.00200667 0.00501667 0 0 0 0 0.00200667 +0 0.00501667 0.00501667 0 0 0 0.00200667 0.00301 +0 0 0 0.00100333 0 0.00100333 0.00301 0 +0 0.00602 0.00100333 0 0 0 0.00301 0.00100333 +0 0 0 0.00702333 0.00100333 0 0 0.00100333 +0.00602 0 0.00602 0 0 0 0.00802667 0.00501667 +0 0 0.00501667 0 0.00200667 0.00301 0.00501667 0 +0.00301 0.00100333 0.00200667 0.00401333 0 0 0.00802667 0 +0.00802667 0.0100333 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00501667 0.00501667 0.00602 +0.00100333 0.00100333 0.00301 0.00100333 0.00401333 0 0 0 +0 0.00501667 0.00301 0.00602 0.00100333 0 0.00301 0 +0.00903 0 0.00100333 0 0 0.00401333 0 0.00702333 +0 0 0 0.00702333 0.00401333 0 0 0 +0.00602 0.00100333 0 0 0.00401333 0.00301 0 0.00501667 +0 0 0.00401333 0.00100333 0 0.00903 0 0.00401333 +0 0.00200667 0.00301 0 0.00501667 0.00200667 0 0.00903 +0 0.00401333 0.00100333 0 0.00802667 0 0 0.00200667 +0 0.00200667 0 0.00903 0 0.00702333 0.00100333 0 +0 0.00301 0.00301 0.00200667 0 0.00100333 0 0.00100333 +0.00301 0 0.00100333 0.00200667 0.0100333 0 0 0.00100333 +0.00401333 0 0.00301 0.00301 0 0.00401333 0.00602 0 +0.00100333 0.00301 0 0 0.0100333 0 0 0.00200667 +0 0.00501667 0.00602 0 0 0 0.00401333 0 +0.00702333 0 0.00401333 0 0 0.00100333 0.00602 0 +0 0 0.00100333 0 0 0.00200667 0 0.00200667 +0.00301 0 0.00301 0 0.00501667 0 0.00200667 0 +0.00100333 0.00100333 0.00401333 0.00200667 0 0 0 0.00501667 +0.00501667 0 0.00401333 0 0 0.00501667 0 0.00401333 +0.00100333 0 0.00301 0 0.00602 0.00200667 0 0 +0.00100333 0.00301 0 0 0 0.00802667 0 0.00301 +0.00903 0.00100333 0 0.00602 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00802667 0.00301 0.00100333 0 0.00903 +0 0.00401333 0 0.00501667 0.00401333 0.00100333 0.00200667 0 +0 0 0 0.0100333 0.00301 0 0.00401333 0.00100333 +0 0.00401333 0 0.00301 0 0 0 0.00702333 +0 0.00200667 0 0.00401333 0.00501667 0.00401333 0 0 +0 0.0100333 0.00100333 0 0.00200667 0 0.00100333 0 +0 0.00100333 0 0.00501667 0 0.00301 0.00100333 0.00301 +0 0.00802667 0.00401333 0 0.00602 0 0.00100333 0.00501667 +0 0.00401333 0 0 0.00301 0.00401333 0 0.00401333 +0 0.00301 0 0.00602 0 0.00401333 0.00200667 0.00100333 +0 0.00401333 0.00301 0.00200667 0 0.00100333 0.00100333 0.00100333 +0.00200667 0 0.00100333 0.00200667 0.00401333 0.00100333 0.00100333 0.00100333 +0.00301 0 0.00401333 0 0.00200667 0.00401333 0.00301 0.00100333 +0.00100333 0.00200667 0 0.00501667 0.00501667 0 0.00200667 0 +0 0.00802667 0 0 0.00100333 0 0.00501667 0 +0.00602 0.00200667 0.00401333 0 0 0.00301 0.00602 0 +0 0.00100333 0 0 0 0.00401333 0 0 +0.00100333 0.00301 0.00100333 0 0.00602 0 0 0 +0.00401333 0.00301 0 0 0.00702333 0 0.00100333 0.00802667 +0 0 0 0.00501667 0 0.00200667 0 0.00602 +0.00100333 0.00100333 0 0.00100333 0.00401333 0.00100333 0 0 +0.00702333 0.00200667 0 0.00100333 0.00802667 0 0.00501667 0.00100333 +0.00401333 0 0.00301 0 0.00602 0.00602 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00702333 0 0.00602 0.00802667 0 0 +0.00702333 0 0.00903 0 0.00200667 0.00802667 0 0.00501667 +0 0 0 0 0.0140467 0 0.00501667 0.00200667 +0 0.00602 0 0 0.00200667 0.00401333 0 0.00602 +0 0 0 0 0.00100333 0.00702333 0 0 +0 0.00802667 0.00401333 0 0 0 0.00602 0 +0.00301 0 0.00301 0.00200667 0 0.00200667 0.00602 0 +0 0.00200667 0.00200667 0.00200667 0 0.00602 0.00401333 0 +0.00100333 0 0 0 0.00200667 0.00501667 0 0.00501667 +0 0.00301 0.00401333 0 0.00401333 0.00200667 0.00200667 0.00100333 +0 0.00501667 0.00200667 0.00200667 0.00100333 0 0 0.00200667 +0.00301 0 0 0.00501667 0.00100333 0.00401333 0 0.00501667 +0 0 0.00100333 0 0.00401333 0.00501667 0.00200667 0 +0.00301 0.00401333 0 0.00802667 0.00100333 0.00100333 0.00301 0 +0.00401333 0.00501667 0 0 0.00501667 0.00301 0 0.00401333 +0 0.00301 0.00702333 0 0.00903 0 0.00802667 0 +0 0 0.00100333 0.00100333 0 0.00802667 0 0 +0.00200667 0.00903 0 0.00200667 0.00200667 0 0.00501667 0.00301 +0.00100333 0 0 0.00301 0 0 0.00602 0.00200667 +0 0 0.00301 0.00301 0 0.00903 0.00301 0.00200667 +0 0.00401333 0.00100333 0.00401333 0 0.00200667 0 0.00802667 +0 0 0 0.00602 0.00602 0.00501667 0 0.00401333 +0.00100333 0.00301 0 0.00401333 0.00501667 0.00702333 0.00802667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00602 0.00301 0.00301 0.00100333 0.00200667 0.00501667 0 +0.00401333 0.00501667 0 0.00702333 0 0.00501667 0 0 +0.00802667 0 0 0 0 0.0110367 0 0.00802667 +0 0.00100333 0 0 0.00301 0.00301 0.00301 0.00200667 +0.00401333 0 0 0.00200667 0 0 0.00401333 0 +0 0.00602 0.00301 0.00401333 0 0 0.00100333 0.00602 +0 0.00401333 0 0 0.00301 0.00301 0.00401333 0 +0 0.00501667 0.00401333 0.00200667 0 0.00301 0.00802667 0 +0.00501667 0 0 0.00301 0 0.00802667 0 0.00100333 +0 0.00401333 0 0.00100333 0.00100333 0.00501667 0.00401333 0 +0 0.00903 0 0 0 0 0 0 +0.00903 0 0 0.00200667 0 0.00702333 0 0 +0.00401333 0 0 0 0.00802667 0 0.00301 0 +0 0.00200667 0 0.00702333 0 0 0.00401333 0.00200667 +0.00401333 0.00401333 0 0 0.00802667 0 0 0.00903 +0 0 0.00802667 0 0.00401333 0.00501667 0.00100333 0 +0.00100333 0 0 0 0 0.00802667 0 0.00200667 +0.00602 0 0 0.00401333 0 0 0.00802667 0 +0 0.00200667 0 0 0.00702333 0 0 0 +0.00100333 0 0.00200667 0 0.00401333 0.00200667 0 0.00301 +0 0 0.00702333 0 0 0.00401333 0 0.00401333 +0 0 0.00602 0.00401333 0.00401333 0 0.00200667 0.00501667 +0.00100333 0.00200667 0.00100333 0.00602 0 0.0100333 0.00401333 0.00903 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0.00602 0 0.00401333 0.00200667 0.00802667 0.00301 +0 0.0100333 0 0 0.00602 0 0.00100333 0 +0 0.00602 0 0 0 0.00200667 0.00802667 0.00100333 +0.00200667 0.00301 0 0 0.00301 0 0.00301 0 +0 0.00200667 0 0.00401333 0 0 0.00301 0 +0 0.00301 0.00501667 0 0 0 0 0.00501667 +0.00200667 0.00100333 0 0.00301 0 0.00200667 0.00602 0 +0 0 0.00702333 0.00702333 0 0 0.00702333 0 +0.00702333 0 0 0.00501667 0.00100333 0.00501667 0.00301 0 +0 0.00301 0 0.00200667 0 0.0100333 0.00401333 0 +0.00200667 0.00602 0 0.00100333 0 0.00200667 0.00200667 0 +0.01204 0 0 0.00301 0.00200667 0.00702333 0 0 +0.00301 0 0 0 0.0100333 0 0.00100333 0 +0 0 0.00200667 0.00301 0.00401333 0 0.00702333 0.00301 +0 0.00301 0 0.00100333 0.00501667 0 0 0.00501667 +0.00401333 0 0.00802667 0 0.00501667 0 0 0.00100333 +0.00200667 0 0 0 0 0.00501667 0 0.00501667 +0.00301 0 0 0.00301 0 0.00602 0.00401333 0 +0.00100333 0.00100333 0 0 0.0140467 0 0.00301 0.00401333 +0.00301 0 0.00100333 0.00200667 0.00602 0 0.00401333 0.00100333 +0.00301 0 0.00301 0 0.00100333 0 0 0.00401333 +0 0 0.00602 0 0 0.00301 0.00602 0.00100333 +0.00301 0.00200667 0.00501667 0.00602 0 0.00501667 0 0.00200667 +0.00702333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0.00200667 0 0.00602 0.00301 0 0.00200667 0.00401333 0.00903 +0 0 0.00702333 0 0.00200667 0.00602 0 0 +0 0.00301 0.00100333 0 0 0.00100333 0.00602 0.00602 +0 0.00401333 0.00501667 0 0 0.00100333 0.00200667 0.00301 +0 0 0.00100333 0.00301 0 0 0 0.00501667 +0 0.00301 0.00301 0.00100333 0.00401333 0 0.00100333 0.00200667 +0 0.00602 0 0 0.00301 0.00100333 0.00100333 0 +0.00301 0 0.00100333 0.00903 0 0 0.00301 0.00301 +0.00301 0 0.00200667 0 0.00602 0.00100333 0.00100333 0 +0 0 0.00401333 0 0 0.00100333 0.00401333 0 +0.00401333 0.00200667 0 0 0 0.00802667 0 0 +0.00501667 0 0 0.00501667 0 0.00200667 0 0 +0.00602 0 0 0 0.00802667 0 0.00602 0 +0 0 0.00602 0 0.00501667 0 0.00702333 0 +0.00100333 0.00200667 0 0.00100333 0.00301 0 0.00702333 0 +0.00200667 0.00200667 0 0 0.00702333 0.00200667 0 0.00602 +0.00200667 0 0 0 0.00802667 0 0.00702333 0.00100333 +0 0.00100333 0 0 0.00200667 0.00602 0 0.00301 +0 0.00401333 0 0.00401333 0.00100333 0 0.00401333 0.00401333 +0 0 0.00200667 0.00501667 0 0.00501667 0 0.00702333 +0 0.00401333 0 0 0 0 0.00602 0 +0.00501667 0 0.00401333 0 0.00200667 0.00301 0.00301 0.00100333 +0.00802667 0 0.00501667 0 0.00301 0 0.01204 0.00100333 +0.00301 0.00501667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00602 0.00802667 +0 0.00200667 0.00200667 0.00802667 0 0.00401333 0.00301 0.00301 +0.00401333 0 0 0.00501667 0 0.00802667 0.00602 0.00200667 +0 0 0 0.00501667 0 0.00100333 0 0.00602 +0.00301 0 0 0.00903 0 0 0 0.00602 +0.00200667 0 0.00100333 0.00200667 0.00602 0 0.00100333 0 +0 0.00501667 0.00301 0.00200667 0.00501667 0 0.00301 0 +0.00200667 0 0.00501667 0 0.00100333 0 0.00602 0 +0.00501667 0 0 0.01204 0.00401333 0 0 0.00401333 +0.00401333 0 0.00401333 0 0.00100333 0.00200667 0 0 +0.00100333 0 0.00200667 0 0.00200667 0 0.00100333 0.00200667 +0 0.00401333 0 0 0 0.00802667 0 0 +0.00301 0 0.00301 0 0.00401333 0 0 0 +0.00602 0 0.00301 0 0.00200667 0 0.00401333 0 +0 0 0.00602 0 0 0 0.00301 0 +0.00200667 0.00401333 0 0.00100333 0.00100333 0 0.00702333 0 +0 0.00301 0 0.0100333 0.00100333 0.00100333 0 0.00802667 +0 0 0.00200667 0 0.00301 0.00301 0.00602 0 +0.00301 0.00100333 0 0 0.00903 0 0 0 +0 0.00301 0.00200667 0 0.00301 0.00301 0 0 +0 0.00301 0.00200667 0 0 0 0.00702333 0.00200667 +0 0.00200667 0 0 0 0.00501667 0 0 +0.00100333 0.00100333 0.00501667 0 0.00602 0 0.00401333 0.00501667 +0 0 0 0.00200667 0 0.00903 0.00200667 0.00200667 +0 0.00802667 0.0100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.0100333 +0 0 0 0.00602 0.00200667 0 0.00501667 0.00602 +0 0.00501667 0 0.00200667 0.00301 0 0.00602 0.00501667 +0.00702333 0 0 0.00301 0 0 0.00903 0 +0.00301 0.00401333 0 0.00200667 0.00301 0.00501667 0 0.00200667 +0 0.00401333 0 0.00301 0.00301 0 0 0 +0 0.00100333 0.00301 0 0.00602 0 0.00501667 0.00100333 +0 0.00301 0 0.00100333 0.00200667 0 0.00301 0 +0.00301 0 0 0.00501667 0.00602 0.00100333 0 0.00100333 +0.00802667 0 0.00501667 0 0 0.00301 0 0 +0 0 0 0.00100333 0 0.00301 0 0.00602 +0 0.00200667 0.00200667 0 0 0.00301 0.00301 0 +0.00200667 0.00301 0.00100333 0 0.00702333 0 0 0 +0.00602 0 0.00401333 0.00301 0 0.00702333 0 0.00200667 +0 0.00100333 0.00100333 0 0.00100333 0.00501667 0 0 +0.00802667 0 0 0 0 0.00200667 0.00501667 0 +0 0.00100333 0 0.0140467 0 0.00501667 0.00501667 0 +0 0.00301 0.00100333 0.00702333 0 0.01505 0 0.00501667 +0.00100333 0 0.00301 0 0.00702333 0 0.00100333 0 +0.00301 0.00702333 0 0 0.00501667 0 0.00401333 0 +0.00401333 0 0 0 0.00802667 0 0.00401333 0 +0.00301 0 0 0 0.00200667 0.00100333 0 0.00200667 +0 0.00602 0.00401333 0.00200667 0.00301 0 0.00100333 0.00100333 +0 0 0.00802667 0 0.00602 0.00301 0 0 +0.00200667 0.00501667 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0170567 0.00200667 0.00200667 0 +0.01204 0 0 0.00301 0 0 0 0.00702333 +0.00802667 0 0.00301 0 0.00301 0 0 0.00401333 +0.00301 0.00200667 0 0 0.00100333 0 0.00401333 0.00401333 +0 0.00301 0 0.00401333 0 0.00903 0.00401333 0 +0.00200667 0.00100333 0 0.00100333 0.00301 0.00501667 0 0 +0 0.00100333 0.00301 0.00301 0 0 0.00802667 0.00501667 +0 0 0.00301 0 0.00602 0 0.00100333 0 +0.00301 0.00301 0.00401333 0 0.00200667 0.00401333 0 0.00100333 +0.00200667 0 0.00501667 0 0.00200667 0 0.00100333 0 +0.00200667 0 0 0.00702333 0 0.00200667 0.00200667 0 +0.00301 0 0 0.00301 0 0 0.00501667 0 +0.00100333 0.00200667 0 0.00401333 0 0 0.00200667 0 +0.00702333 0 0.00100333 0.00401333 0 0.00802667 0 0.00802667 +0 0.00301 0 0 0.00602 0.00200667 0 0 +0.00301 0 0.00200667 0.00100333 0 0.00301 0 0 +0 0.00501667 0 0.00802667 0 0.00401333 0.00200667 0 +0.00200667 0.00702333 0 0.00100333 0 0.0100333 0 0.00301 +0 0 0.00301 0.00200667 0.00200667 0 0 0 +0.00702333 0.00301 0 0.00401333 0 0.00401333 0.00100333 0 +0 0.00200667 0 0.00401333 0.00903 0 0 0.00200667 +0 0 0 0.00200667 0.00100333 0 0 0.00200667 +0.00301 0.00903 0 0.00501667 0.00200667 0.00200667 0 0 +0 0.00903 0.00200667 0 0.00301 0 0 0.00100333 +0.00200667 0.00501667 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00401333 0.00802667 0.00602 0 +0.00903 0.00903 0 0.00401333 0.00401333 0 0 0 +0.00802667 0.00100333 0.00702333 0.00401333 0.00100333 0 0 0.00501667 +0.00100333 0 0.00200667 0.00100333 0.00100333 0 0 0.00200667 +0 0 0.00401333 0.00301 0 0.00100333 0.00301 0.00200667 +0 0.00301 0.00301 0 0.00401333 0 0.00401333 0 +0 0 0.00100333 0.00501667 0 0 0.00401333 0.00602 +0.00401333 0 0 0 0.00802667 0 0.00501667 0 +0 0.00200667 0.00501667 0.00200667 0 0.00301 0 0.00100333 +0 0 0.00401333 0 0 0.00100333 0.00401333 0 +0 0.00401333 0.00100333 0.00401333 0 0 0.00702333 0 +0 0.00602 0 0 0.00100333 0 0 0.00100333 +0.00200667 0 0 0.00301 0 0 0 0 +0.00602 0 0 0.00401333 0 0.00401333 0 0.00501667 +0 0.00903 0 0 0.0100333 0 0.00100333 0 +0 0.00501667 0.00200667 0.00100333 0 0 0 0 +0 0.00301 0 0.00200667 0.00301 0.00100333 0.00200667 0 +0.00401333 0.00401333 0 0.00200667 0.00200667 0 0.00501667 0 +0.00100333 0.00100333 0.00100333 0.00200667 0 0 0.00602 0.00301 +0 0.00501667 0 0 0.00401333 0.00200667 0 0 +0 0.00602 0 0.0110367 0 0 0.00301 0.00100333 +0 0.00501667 0 0.00100333 0.00100333 0.00200667 0 0.00401333 +0.00200667 0 0.00100333 0.0100333 0 0.00200667 0.00401333 0 +0 0.00802667 0 0.00100333 0 0.00802667 0.00200667 0 +0.00903 0 0.00100333 0.00501667 0.01505 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00802667 0.00501667 0 0.00501667 0.00200667 0.00702333 +0 0.0130433 0.00602 0 0.00200667 0 0 0 +0.00200667 0.00200667 0.00100333 0.00602 0.00200667 0.00200667 0 0 +0 0.00501667 0.00200667 0.00200667 0 0.00100333 0 0.00100333 +0 0 0.00200667 0.00401333 0.00200667 0.00100333 0.00100333 0.00100333 +0 0 0.00301 0.00301 0.00301 0 0.00301 0 +0.00501667 0 0 0.00200667 0.00501667 0 0.00200667 0.00401333 +0.00401333 0 0.00200667 0 0.00200667 0.00501667 0 0 +0 0 0.00100333 0.00401333 0.00100333 0.00200667 0 0 +0.00100333 0 0 0.00200667 0 0.00903 0 0.00200667 +0 0.00401333 0.00200667 0.00100333 0 0 0 0.00702333 +0 0.00301 0.00301 0 0 0.00501667 0 0.00602 +0 0 0 0.00200667 0 0 0.00200667 0 +0.00100333 0 0.00301 0 0.00301 0.00100333 0 0 +0 0.00903 0 0.00501667 0.00401333 0 0.00200667 0 +0 0.00401333 0.00301 0.00301 0 0 0 0 +0 0 0.00401333 0 0.00501667 0 0.00401333 0 +0 0.00401333 0.00401333 0 0 0.00301 0.00501667 0 +0.00802667 0 0.00501667 0 0 0.00200667 0.0100333 0 +0.00200667 0.00301 0.00100333 0.00200667 0.00200667 0 0 0 +0.00501667 0.00301 0 0.00802667 0 0 0.00602 0 +0.00501667 0 0 0.00100333 0.00802667 0 0 0.00100333 +0 0 0.0100333 0 0.00200667 0 0 0.00100333 +0.00401333 0 0 0.00100333 0.00602 0.00602 0 0.00301 +0 0 0.00602 0.00802667 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00602 0.00702333 0.00200667 0.00200667 0 0.00200667 0 +0.00501667 0 0.0100333 0.00200667 0.00100333 0 0 0 +0.00200667 0 0 0.00401333 0.00401333 0.00200667 0 0.00100333 +0 0.00200667 0.00301 0 0.00301 0 0 0.00301 +0 0 0 0.00501667 0 0.00501667 0.00602 0 +0.00602 0 0.00200667 0.00200667 0.00501667 0 0.00401333 0.00200667 +0 0.00100333 0 0 0 0 0.00401333 0 +0.00903 0 0.00301 0.00301 0 0.00100333 0.00401333 0 +0 0.00100333 0 0.00200667 0 0.00602 0.00100333 0 +0.00501667 0 0 0.00401333 0 0.0110367 0 0.00200667 +0 0 0.00602 0 0 0 0 0.00501667 +0 0 0.00200667 0 0.00100333 0 0 0.00602 +0 0.00702333 0 0 0 0 0.00903 0 +0.00200667 0.00100333 0 0.00100333 0.00301 0 0 0 +0 0.00200667 0 0 0 0.00301 0 0 +0.00501667 0 0.00401333 0.00100333 0 0 0 0.00301 +0 0 0.00602 0 0.00602 0.00100333 0 0.00301 +0.00200667 0.00301 0.00301 0 0 0.00301 0.00301 0 +0.00903 0.00301 0 0 0 0.0100333 0 0 +0.00602 0.00401333 0 0.00401333 0 0 0 0.00802667 +0.00100333 0 0 0.00602 0 0 0.00200667 0 +0 0.00100333 0 0.00301 0.00200667 0 0.00501667 0.00200667 +0 0.00200667 0.00602 0 0 0 0.00200667 0.00301 +0 0 0.00200667 0.00602 0.00602 0.00100333 0 0.00301 +0 0.00802667 0.00903 0.00401333 0 0 0.00802667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00602 0.00200667 0.00100333 0.00200667 0 0.00802667 +0 0.00301 0 0.00702333 0 0.00903 0 0 +0 0.00702333 0 0.00401333 0 0 0.00702333 0 +0 0.00301 0 0 0.00501667 0 0.00301 0 +0.00301 0 0 0.00100333 0 0 0.00501667 0.00100333 +0.00401333 0.00301 0 0.00301 0.00903 0 0 0.00401333 +0.00702333 0 0 0 0.00100333 0 0.00702333 0.00501667 +0.00301 0 0.00301 0.00200667 0 0 0.00100333 0.00200667 +0 0 0.00200667 0.00200667 0 0.00602 0.00100333 0.00100333 +0.00401333 0.00301 0 0.00100333 0 0.00903 0.00100333 0 +0 0.00301 0 0.00301 0 0 0.00100333 0.00301 +0.00100333 0 0 0 0.00301 0.00301 0.00200667 0 +0.00301 0.00501667 0 0 0 0.00602 0.00702333 0.00200667 +0.00100333 0 0 0.00301 0.00501667 0 0 0.00501667 +0.00100333 0 0.00602 0 0.00200667 0 0.00100333 0.00401333 +0 0.00100333 0.00301 0 0 0 0 0.00602 +0 0.00100333 0.00802667 0 0.00702333 0 0.00100333 0.00100333 +0 0.00602 0 0.00200667 0 0.00200667 0 0.00702333 +0.00401333 0.00200667 0 0.00301 0 0.00602 0.00200667 0 +0 0.00602 0.00200667 0 0.00301 0 0.00501667 0.00200667 +0 0.00100333 0 0.00802667 0 0 0.00401333 0 +0.00301 0 0.00301 0.00200667 0 0.00100333 0.00501667 0 +0 0.00602 0.00100333 0 0 0.00301 0 0.00200667 +0.00200667 0 0.00100333 0.00301 0 0 0.00100333 0.00100333 +0.00401333 0.00702333 0.00100333 0.00301 0 0.00501667 0.00602 0.00903 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0.00401333 0.00100333 0.00702333 0.00501667 0 0.00401333 0.00301 0 +0.00802667 0.00401333 0 0.00200667 0.00100333 0.00401333 0.00200667 0 +0 0.00200667 0.00100333 0 0 0 0 0.00301 +0.00200667 0.00100333 0.00200667 0 0.00401333 0.00301 0 0.00401333 +0.00301 0 0 0.00501667 0 0.00401333 0.00100333 0 +0.00100333 0.00501667 0.00301 0 0.00301 0.00401333 0 0 +0.00802667 0.00401333 0.00401333 0 0 0 0 0.0100333 +0.00200667 0 0 0.00501667 0.00702333 0 0 0 +0.00501667 0 0 0.00501667 0 0.00501667 0.00301 0 +0.00702333 0.00100333 0 0 0.00200667 0.00401333 0 0.00100333 +0.00100333 0 0 0.00401333 0 0.00100333 0.00301 0.00301 +0.00200667 0 0.00301 0 0.00100333 0.00702333 0.00602 0 +0.00702333 0.00200667 0.00100333 0.00200667 0 0.00401333 0.00301 0.00301 +0.00301 0 0.00100333 0 0.0130433 0 0 0.00301 +0 0.00100333 0.00301 0.00100333 0 0.00401333 0 0.00301 +0.00200667 0.00301 0 0 0 0.00301 0 0.00501667 +0 0.00200667 0.00301 0 0.00200667 0 0 0.00401333 +0 0.00200667 0 0 0.00200667 0.00200667 0 0.00702333 +0 0 0.00200667 0.00100333 0 0.00903 0 0 +0.00501667 0.00401333 0 0.00100333 0 0 0.00100333 0.00602 +0 0 0 0.00301 0 0.00501667 0 0.00100333 +0.00301 0 0.00200667 0.00200667 0 0 0.00100333 0 +0.00501667 0.00200667 0.00100333 0 0 0.00401333 0.00200667 0.00301 +0.00301 0 0.00501667 0 0.00301 0 0 0.00301 +0.00602 0.00501667 0.00200667 0 0.00702333 0.00602 0.00602 0.00301 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0100333 +0.00501667 0.00200667 0.00301 0.00602 0 0.00100333 0.0100333 0 +0 0.00602 0.00401333 0.00100333 0.00401333 0 0.00501667 0 +0 0 0.00301 0 0.00200667 0 0.00301 0.00100333 +0.00200667 0 0.00200667 0 0.00802667 0 0.00100333 0.00501667 +0.00301 0.00100333 0 0.00501667 0 0.00401333 0 0.00301 +0 0 0.00200667 0.00501667 0.00401333 0.00301 0 0 +0.00100333 0.00100333 0.00702333 0.00903 0 0 0 0.00301 +0.00602 0 0 0.00702333 0 0.00301 0.00401333 0 +0 0.00200667 0.00100333 0 0 0.00401333 0.00401333 0 +0 0.00401333 0 0 0 0.00602 0.00200667 0 +0.00301 0 0 0.00501667 0.00401333 0 0 0.00501667 +0.00100333 0.00200667 0.00200667 0 0 0.00501667 0.00501667 0 +0.00301 0 0 0.00200667 0 0.00200667 0.00100333 0.00401333 +0.00401333 0 0.00401333 0.00200667 0.00903 0 0.00100333 0 +0.00200667 0.00401333 0 0.00903 0 0.00100333 0 0 +0.0100333 0 0 0 0 0 0 0.00100333 +0.00100333 0 0.00702333 0.00200667 0 0 0.00501667 0 +0.00602 0 0 0.00301 0 0 0.00401333 0.00301 +0 0.00401333 0 0 0.0100333 0 0 0 +0.00200667 0.00100333 0.00501667 0 0 0.00602 0.00200667 0.00702333 +0 0 0 0.00301 0 0.00100333 0.00301 0 +0.00301 0 0.00401333 0.00602 0 0 0.00100333 0.00401333 +0.00301 0.00401333 0 0 0.00903 0 0.00100333 0.00100333 +0 0.00301 0.00301 0.00100333 0 0 0.00200667 0.00401333 +0.00401333 0.00501667 0 0 0.00903 0.00802667 0.00602 0 +0 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0 +0.00702333 0.00401333 0.00401333 0 0.00100333 0.00200667 0.00200667 0.00702333 +0 0 0.00501667 0 0.00301 0.00200667 0.00200667 0.00702333 +0 0 0.00100333 0.00200667 0 0 0 0 +0.00401333 0.00100333 0 0 0.00501667 0.00301 0 0.00200667 +0.00200667 0.00301 0 0.00301 0 0.00501667 0.00200667 0 +0.00301 0 0.00100333 0 0.00301 0.00903 0 0 +0 0.00200667 0.00301 0.00702333 0.00702333 0 0 0 +0 0 0 0.00401333 0.00602 0 0.00401333 0.00100333 +0 0 0.00200667 0 0 0.00200667 0.0110367 0 +0 0.00301 0 0.00100333 0 0.00200667 0.00802667 0 +0.00200667 0 0.00100333 0 0.01204 0 0.00301 0 +0 0.00301 0.00200667 0 0 0.00702333 0 0 +0 0 0 0.00301 0 0 0 0 +0.00200667 0 0 0.00100333 0.00401333 0 0.00602 0 +0.00401333 0.00200667 0 0.0110367 0 0.00100333 0.00200667 0.00100333 +0.00401333 0.00200667 0 0.00200667 0.00401333 0 0.00501667 0 +0.00200667 0 0.00702333 0 0 0 0.0100333 0 +0 0.00301 0 0.00501667 0 0.00301 0.00401333 0 +0.00602 0 0 0 0.00501667 0 0.00200667 0.00301 +0.00301 0 0.00501667 0 0 0.00602 0.00702333 0 +0 0 0.00401333 0.00200667 0.00100333 0.00301 0 0.00301 +0.00200667 0.00301 0 0.00200667 0 0 0.00903 0 +0.00200667 0.00501667 0 0.00702333 0 0 0.00702333 0 +0 0.00301 0.00301 0 0 0 0.00200667 0.00602 +0.00100333 0 0 0.0110367 0.0100333 0 0 0.00100333 +0.00401333 0.00802667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00702333 0 +0.00501667 0.00301 0.00100333 0.00802667 0.00401333 0.00100333 0 0.00100333 +0.00602 0.00301 0 0.00401333 0.00200667 0.00100333 0.00602 0.00401333 +0.00301 0 0 0.00501667 0 0.00401333 0.00100333 0 +0 0.00100333 0.00602 0 0.00602 0.00301 0 0.00501667 +0 0 0 0.00602 0.00200667 0 0 0 +0.00301 0 0 0.00602 0 0.00301 0.00802667 0.00200667 +0 0 0.00100333 0.00301 0.00501667 0 0.00100333 0 +0 0.00100333 0 0 0.00702333 0.00200667 0.00100333 0 +0 0 0.00903 0 0 0 0.01806 0 +0.00100333 0 0 0.00100333 0.00100333 0.00100333 0.00200667 0.00903 +0 0 0.00100333 0 0.00702333 0.00301 0.00200667 0 +0 0 0 0 0.00401333 0.00401333 0 0 +0.00200667 0 0 0.00100333 0.00200667 0 0 0.00200667 +0.00200667 0.00100333 0 0 0 0 0.00501667 0 +0.00100333 0.00301 0 0.00401333 0.00100333 0 0 0.00401333 +0 0 0 0.00602 0.00200667 0 0.00200667 0.00301 +0.00401333 0 0.00401333 0.00100333 0 0.00702333 0 0 +0.00200667 0.00100333 0 0 0.00100333 0 0.00200667 0 +0.00802667 0 0 0.00301 0 0.00802667 0 0.00602 +0.00100333 0.00200667 0.00401333 0 0.00301 0.00501667 0 0 +0.00401333 0.00100333 0.00301 0.00100333 0 0.00200667 0.00501667 0.00200667 +0 0 0.00200667 0 0 0.0110367 0.00501667 0 +0.00200667 0 0 0.00602 0 0.00602 0.00200667 0.00100333 +0.00100333 0.00702333 0 0 0.00401333 0 0.00301 0.00100333 +0.00301 0 0.00602 0.00903 0 0.00200667 0.00100333 0.00401333 +0.00602 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0140467 0.00602 +0 0 0 0.00702333 0.00602 0.00100333 0.00602 0 +0 0 0.00401333 0.00301 0.00301 0.00903 0 0.00602 +0 0.00501667 0 0.00100333 0 0 0.00200667 0.00301 +0 0 0.00200667 0 0 0.00903 0.00100333 0.00100333 +0.0100333 0 0.00200667 0 0.00100333 0.00602 0 0 +0 0.00301 0 0 0.00602 0 0 0.00401333 +0.00301 0 0 0.00501667 0 0.00602 0 0 +0 0 0.00100333 0 0 0.00702333 0 0 +0 0.00100333 0 0.00301 0 0 0.0110367 0.00100333 +0.00401333 0 0 0 0.00501667 0 0.00401333 0.00200667 +0.00702333 0 0 0 0 0.00602 0 0 +0 0 0 0 0.00501667 0.00301 0 0 +0.00100333 0 0.00100333 0 0 0 0 0.00200667 +0.00401333 0 0 0.00602 0 0.00501667 0 0 +0.00301 0 0 0 0.00401333 0 0 0.00602 +0 0 0.00301 0.00702333 0 0.00602 0 0.0100333 +0 0 0.00401333 0.00501667 0 0.00501667 0 0.00301 +0.00100333 0 0 0.00903 0 0.00100333 0 0.00200667 +0 0 0.00100333 0.00301 0 0.00301 0.00100333 0.00200667 +0 0.00802667 0 0.00200667 0 0.00301 0 0.00100333 +0.00401333 0.00602 0.00602 0 0.00401333 0 0.00702333 0 +0 0 0.00100333 0.00200667 0.00200667 0.00702333 0 0 +0.00200667 0 0.00100333 0.00301 0.00200667 0.00602 0.00200667 0 +0.00401333 0 0 0.00903 0 0.00200667 0.00401333 0.00200667 +0 0.00100333 0.00602 0 0.00301 0.00602 0 0.00200667 +0 0.00702333 0.00401333 0.00702333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0100333 0.00401333 0 0.00602 +0.00903 0.00301 0 0.00100333 0.00602 0.00401333 0.00100333 0.00301 +0 0 0 0.00301 0.00100333 0.00501667 0.00401333 0.00100333 +0.0110367 0 0.00200667 0 0 0 0.00100333 0 +0.00501667 0 0 0.00200667 0.00100333 0 0.00401333 0.00401333 +0.00100333 0.0130433 0 0 0.00501667 0 0.00200667 0 +0.0100333 0 0.00702333 0 0 0.00903 0 0 +0.00100333 0.00100333 0 0.00100333 0.00100333 0.00401333 0 0.00200667 +0 0 0.00200667 0.00200667 0 0.00602 0 0.00100333 +0 0.00100333 0.00200667 0 0 0 0.00301 0.00100333 +0.00401333 0.00301 0 0.00200667 0.00100333 0 0 0 +0.00401333 0.00100333 0 0 0 0.00501667 0 0.00200667 +0 0 0 0 0 0.00200667 0 0 +0 0 0.00702333 0 0.00301 0 0 0.00401333 +0 0.00501667 0 0.00200667 0 0 0 0 +0.00301 0 0.00301 0 0.00501667 0.00200667 0 0.00702333 +0 0 0.00702333 0 0.00200667 0.00301 0.00100333 0.00602 +0 0 0.00100333 0.00802667 0 0.00602 0 0.00301 +0 0 0.00401333 0.00802667 0 0.00301 0.00200667 0.00200667 +0 0 0.00401333 0 0 0.00501667 0 0 +0.00802667 0.00301 0 0.00602 0 0 0 0.0110367 +0 0.00602 0.00100333 0 0 0.00301 0 0 +0 0.00602 0 0 0.00602 0 0.00100333 0 +0 0.00501667 0.00301 0 0.00401333 0.00100333 0 0.00501667 +0.00100333 0 0 0.00401333 0.00100333 0 0 0 +0 0.00401333 0.00301 0.00401333 0.00501667 0 0.00501667 0 +0.00200667 0.00702333 0.00200667 0.00501667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00702333 0.00802667 0.00702333 0.00200667 0.00200667 +0.00200667 0.00702333 0.00100333 0 0.00501667 0.00100333 0.00702333 0.00401333 +0 0 0 0 0.00100333 0 0 0.00100333 +0.00200667 0.0110367 0.00100333 0 0 0 0 0 +0.00401333 0.00401333 0 0 0 0.00602 0 0.00200667 +0.00301 0.00501667 0 0 0.00200667 0.00100333 0.00200667 0.00200667 +0 0.00100333 0 0.00501667 0 0.00501667 0.00802667 0 +0 0.00501667 0 0.00100333 0 0.00200667 0.00200667 0.00401333 +0 0 0.00100333 0.00702333 0 0.00602 0 0 +0.00100333 0.00100333 0.00401333 0 0 0 0.00200667 0.00301 +0 0.00802667 0 0.00100333 0.00903 0 0 0 +0 0.00301 0 0 0.00200667 0.00602 0 0.00401333 +0.00301 0 0 0 0 0.00702333 0 0.00501667 +0 0 0.00702333 0 0 0.00401333 0 0.00401333 +0 0.00401333 0 0.00200667 0 0 0 0.00702333 +0 0 0 0 0.00200667 0 0 0 +0 0 0.00501667 0 0.00100333 0.00401333 0 0 +0.00100333 0 0.00301 0 0 0.00401333 0 0.00301 +0 0 0.01204 0.00100333 0.00401333 0 0 0.00301 +0 0.00301 0 0 0.00501667 0 0 0.00702333 +0.00501667 0 0 0.01204 0 0.00200667 0.00301 0.00401333 +0.00100333 0.00100333 0.00100333 0 0 0 0 0.00100333 +0 0.00401333 0 0.00501667 0 0.00200667 0 0 +0.00401333 0 0.00200667 0 0.00802667 0 0.00100333 0.00200667 +0 0.00301 0.00100333 0 0.00200667 0.00100333 0 0.00200667 +0.00301 0.00301 0 0.00501667 0.00100333 0 0.00200667 0 +0.00802667 0.00401333 0.00100333 0.00702333 0.00602 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.00200667 0.00802667 0.00501667 0.00602 0.00200667 +0 0.00301 0.00802667 0.00200667 0 0 0 0.0110367 +0.00200667 0 0.00401333 0 0.00100333 0 0 0.00301 +0.00100333 0.00200667 0.00802667 0 0 0.00602 0 0 +0 0.00501667 0.00200667 0.00401333 0 0.00301 0.00401333 0 +0.00100333 0.00602 0.00602 0 0 0 0.00100333 0.00401333 +0 0.00401333 0 0.00602 0 0 0.00501667 0.00301 +0 0 0 0 0.00401333 0 0.00100333 0.00802667 +0 0 0.00100333 0.00602 0 0 0.00200667 0.00301 +0 0.00501667 0.00702333 0 0 0 0 0 +0.00501667 0.00100333 0.00100333 0 0.00401333 0 0.00100333 0 +0 0 0 0 0.00501667 0 0.00301 0 +0.00903 0 0 0 0 0 0 0.00301 +0 0 0.00602 0 0 0.00200667 0 0.00401333 +0 0.00301 0 0.00100333 0 0 0 0.00401333 +0.00301 0 0.00200667 0 0.00602 0 0.00100333 0 +0 0.00301 0 0 0.00501667 0.00401333 0 0.00301 +0 0.00200667 0 0 0.00501667 0.00501667 0.00200667 0 +0 0.00702333 0.00401333 0.00200667 0 0.00301 0 0.00602 +0 0.00602 0 0.00602 0 0 0 0.00501667 +0 0.00200667 0 0.00802667 0.00100333 0 0.0100333 0 +0.00401333 0 0.00301 0 0.00802667 0 0 0.00301 +0.00401333 0 0.00501667 0 0.00100333 0 0 0.00100333 +0 0 0.00401333 0.00903 0.00200667 0.00200667 0 0 +0.00802667 0 0 0 0 0.00100333 0.00301 0.00301 +0.00702333 0 0.00200667 0.00301 0 0.00200667 0.00301 0.00602 +0.00602 0 0.00301 0.00301 0.00602 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.00501667 0.00200667 0.00602 0.00100333 0.00602 +0.00702333 0 0 0.00702333 0.00200667 0.00200667 0 0 +0.00903 0.00200667 0 0 0 0.00401333 0 0 +0.00903 0 0 0.0100333 0 0 0 0.00501667 +0 0 0.00702333 0.00401333 0 0 0.0100333 0 +0 0.00100333 0 0.00200667 0.00501667 0 0 0.00200667 +0.00501667 0 0.00100333 0 0.00401333 0 0 0.00501667 +0 0 0.00100333 0 0.00802667 0 0 0.00401333 +0.00200667 0 0 0.00903 0 0.00100333 0.00100333 0.00301 +0 0 0.00702333 0.00200667 0.00200667 0 0.00100333 0 +0 0 0.00903 0 0 0 0.00401333 0.00200667 +0 0 0 0.00301 0 0 0.00100333 0 +0 0.00200667 0 0 0 0 0 0 +0.00301 0 0 0 0 0 0.00401333 0.00100333 +0 0.00301 0 0 0 0 0 0.00401333 +0 0 0 0.00702333 0 0.00200667 0 0 +0.00100333 0.00401333 0 0 0.0100333 0.00200667 0 0 +0.00401333 0 0 0 0.0110367 0 0.00401333 0 +0.00301 0.00702333 0 0.00100333 0 0 0 0.00702333 +0 0 0.00401333 0.00501667 0 0 0.00200667 0 +0.00702333 0 0 0.0160533 0 0 0.00501667 0 +0 0 0 0.00501667 0.00100333 0.00200667 0.00501667 0 +0 0.00802667 0.00401333 0 0.00401333 0 0.00401333 0.00100333 +0.00200667 0.00501667 0.0130433 0 0 0 0 0.00702333 +0 0 0.00200667 0 0.00200667 0.00903 0.00100333 0.00301 +0 0.00501667 0.00702333 0 0.00200667 0.00401333 0 0.00501667 +0 0 0.0110367 0.00501667 0 0.00401333 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0.00501667 0.00200667 0.00301 0.00200667 0.00301 0.00301 +0.00702333 0.0100333 0 0 0.00501667 0.00100333 0.00802667 0 +0 0.00501667 0.00501667 0 0 0.00903 0 0 +0.00200667 0.00501667 0 0.00100333 0.00401333 0 0.00401333 0 +0 0 0 0.00602 0.00200667 0 0 0.0100333 +0 0 0 0.00501667 0 0.00702333 0 0 +0.00802667 0.00702333 0 0 0 0.00200667 0.00100333 0 +0 0 0 0 0.00802667 0.00602 0 0.00100333 +0.00200667 0 0.00301 0 0.00702333 0 0.00702333 0.00100333 +0.00100333 0 0 0.00501667 0 0 0.00301 0 +0 0 0.00602 0 0.00401333 0 0.00200667 0.00501667 +0 0 0 0.00401333 0 0.00301 0.00200667 0 +0 0 0.00401333 0.00100333 0 0 0 0 +0.00501667 0 0 0 0 0.00401333 0 0.00501667 +0 0.00200667 0 0 0 0 0 0.00501667 +0 0 0 0.00301 0 0 0.00301 0 +0.00401333 0.00100333 0 0 0.00802667 0.00200667 0 0 +0.00401333 0 0 0.00301 0.00100333 0 0 0.00401333 +0.00200667 0 0.00200667 0 0 0 0.00401333 0 +0 0.00200667 0.00501667 0.00301 0 0.00903 0 0.00301 +0 0 0.00702333 0.00200667 0 0.00301 0.00100333 0 +0 0 0.00301 0.00702333 0.00100333 0 0.00100333 0.00100333 +0 0.00501667 0 0 0.00301 0.00602 0 0.00301 +0.00200667 0.00401333 0.00100333 0 0 0 0.00301 0.00501667 +0 0 0.00301 0 0.00602 0.00602 0 0 +0.00301 0.0110367 0 0 0 0.00401333 0 0.00301 +0 0.0140467 0.00100333 0 0.00602 0.00301 0.00602 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.00100333 0 0 0.00200667 0.00200667 0 0 +0.00702333 0.00100333 0.0100333 0.00200667 0.00100333 0.00501667 0.00100333 0.00702333 +0 0 0 0.00501667 0 0 0.00501667 0 +0.00401333 0.00200667 0 0.0110367 0.00100333 0 0.00200667 0.00702333 +0.00100333 0 0.00301 0 0.00301 0 0.00200667 0 +0.00702333 0.00200667 0 0.00200667 0 0.00903 0.00501667 0 +0 0.00602 0.00702333 0 0 0 0.00301 0 +0.00200667 0.00501667 0 0 0 0.00401333 0.00200667 0 +0.00401333 0 0.00401333 0.00100333 0.00602 0 0 0.00301 +0.00200667 0 0 0 0 0 0 0.00301 +0 0.00100333 0.00100333 0 0.00501667 0 0 0.00301 +0.00100333 0 0 0 0 0.00100333 0 0 +0 0 0 0.00501667 0 0.00200667 0 0 +0.00602 0 0 0 0 0.00200667 0.00100333 0 +0 0 0 0.00301 0 0 0.00200667 0 +0.00100333 0 0 0 0.00200667 0 0 0 +0 0 0 0 0.00602 0.00100333 0 0 +0.00100333 0.00100333 0 0.00501667 0 0 0 0.00802667 +0 0.00401333 0 0 0.00401333 0 0.00100333 0 +0.0100333 0 0.00602 0 0 0.00702333 0 0.00200667 +0.00200667 0 0.00602 0 0 0 0 0.00100333 +0.00100333 0 0.0110367 0 0 0.00501667 0.00200667 0 +0.00200667 0 0 0.00200667 0.01204 0 0 0.00401333 +0.00301 0.00100333 0 0 0 0.00501667 0 0 +0.00401333 0 0.00401333 0.00401333 0.00100333 0.00501667 0 0.00301 +0.0110367 0 0.00200667 0.00200667 0 0 0.00602 0.00401333 +0.0100333 0.00501667 0 0 0.00200667 0 0 0.00501667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00903 0.00501667 0.00501667 0 0.00200667 0.00200667 0.00903 0 +0 0.00200667 0.00401333 0.00702333 0 0.00100333 0 0.00903 +0.00602 0 0 0.00100333 0 0 0.00401333 0.00200667 +0 0.00602 0.00200667 0 0.00702333 0 0 0.00301 +0.00301 0 0.00200667 0 0.00200667 0 0 0 +0 0.00301 0.00401333 0.00401333 0 0 0.0130433 0.00501667 +0 0 0.00401333 0.00802667 0 0 0.00100333 0.00100333 +0 0.00501667 0.00602 0 0 0 0.00200667 0 +0 0.00301 0.00401333 0 0.00602 0.00702333 0 0 +0 0.00301 0.00200667 0 0 0 0 0.00200667 +0.00200667 0 0.00200667 0.00301 0 0 0.00200667 0 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00602 0 0 0.00100333 0.00401333 0 0 +0 0 0 0.00702333 0 0.00301 0 0 +0 0.00200667 0 0 0.00200667 0 0.00100333 0 +0 0 0.00200667 0.00100333 0 0 0.00301 0 +0 0.00200667 0 0 0.00100333 0 0 0.00802667 +0 0 0 0 0.00903 0 0.00100333 0.00702333 +0.00200667 0 0 0.00301 0.00501667 0 0 0.00602 +0 0.00501667 0.00200667 0 0 0 0.00802667 0 +0 0.00501667 0.00401333 0 0 0.00602 0 0 +0.00200667 0.00100333 0 0.0100333 0.00100333 0 0 0.0100333 +0.00501667 0 0 0 0.00301 0 0 0.00200667 +0.00100333 0 0.00501667 0 0.00501667 0 0 0.00702333 +0.00100333 0 0.00602 0.00501667 0.00200667 0.00301 0.00301 0.00200667 +0.00501667 0 0 0.00301 0 0 0.00301 0.0130433 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0100333 0.00501667 0.00501667 0 0 0.00100333 0.00802667 +0.00301 0 0 0.00903 0.00602 0 0 0.00200667 +0.00903 0 0 0.00301 0.00200667 0 0 0.00401333 +0 0 0.0100333 0.00301 0 0.00401333 0.00401333 0 +0 0 0.00602 0 0.00401333 0 0.00401333 0 +0.00301 0 0.00200667 0.00602 0.00401333 0 0 0.00702333 +0.00702333 0 0 0.00401333 0.00200667 0 0.00200667 0 +0 0 0.00602 0 0.00702333 0 0 0.00602 +0 0 0.00200667 0 0 0.01204 0.00100333 0 +0 0 0.00401333 0.00200667 0 0.0100333 0 0 +0 0 0.00200667 0.00200667 0.00100333 0 0 0 +0 0.00100333 0 0 0 0 0 0 +0.00200667 0 0.00200667 0 0 0 0 0 +0 0.00200667 0 0.00100333 0 0 0 0 +0 0 0 0.00301 0 0.00100333 0 0 +0 0 0 0 0 0 0.00602 0 +0 0 0 0.00100333 0 0.00802667 0.00200667 0 +0 0.00802667 0 0.00200667 0 0 0 0 +0 0 0 0 0.00802667 0.00100333 0.0130433 0 +0 0 0.00602 0 0 0 0 0.00301 +0.00903 0 0.00200667 0 0 0.00301 0.00301 0 +0.00100333 0 0.0100333 0 0.00802667 0.00200667 0 0 +0.00702333 0 0.00802667 0.00200667 0 0.00401333 0.00602 0.00702333 +0 0 0.0100333 0.00200667 0 0.00501667 0 0.00301 +0 0.00602 0 0.00401333 0 0 0.00903 0 +0 0.00301 0.0100333 0 0 0 0 0 +0 0 0.00501667 0.00301 0 0.00501667 0.00802667 0.00802667 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00702333 +0.00200667 0 0.00501667 0.00903 0.00401333 0 0 0.00501667 +0 0.00401333 0 0 0.00802667 0.0110367 0 0 +0 0.00903 0 0.00301 0 0 0 0 +0.00200667 0.00200667 0 0.00501667 0.00702333 0 0.00401333 0 +0.00401333 0 0 0.00100333 0.00401333 0.00501667 0.00100333 0 +0 0.00401333 0 0.00200667 0.00100333 0 0.00100333 0.00301 +0.0100333 0.00200667 0 0 0 0.00702333 0.00100333 0.00802667 +0 0 0 0.00401333 0.00100333 0 0 0.00100333 +0 0 0.00100333 0 0 0.00401333 0.00702333 0 +0 0 0 0.00602 0 0.00301 0 0 +0 0 0 0.00501667 0.00200667 0 0 0 +0 0 0.00100333 0.00100333 0 0.00301 0 0 +0.00100333 0 0 0 0 0 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0 0.01806 0 0 +0 0 0.00200667 0 0.00501667 0 0 0.00301 +0 0 0 0 0.00100333 0.0110367 0 0 +0.00401333 0.00401333 0.00401333 0 0 0 0 0.00301 +0 0.00301 0 0.00100333 0 0.00200667 0 0.00200667 +0.00100333 0.00100333 0 0 0.00301 0 0.00702333 0.00100333 +0 0 0 0 0 0.00501667 0.00100333 0 +0 0.00602 0.00200667 0 0 0 0.00100333 0 +0 0 0 0.00702333 0.00301 0.00100333 0.00301 0 +0.00501667 0.00200667 0 0 0.00200667 0 0 0 +0 0.0100333 0.00301 0.00100333 0.00602 0 0.00401333 0.00100333 +0.00602 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00802667 0.00903 +0.0110367 0 0 0 0.00401333 0.00200667 0.00401333 0.00100333 +0.00401333 0.00200667 0 0 0 0.00702333 0.00702333 0 +0.00401333 0.00702333 0 0 0.00401333 0.00301 0 0.00100333 +0 0 0.00100333 0 0.00501667 0.00401333 0 0 +0.00602 0 0 0 0.00200667 0.00100333 0.00702333 0.00401333 +0.00501667 0 0.00100333 0.00702333 0 0 0.00301 0.00200667 +0 0.0100333 0 0 0.00301 0 0 0 +0.00802667 0 0 0.00501667 0 0 0.00100333 0.00200667 +0 0.00100333 0.00602 0 0 0 0.00802667 0 +0 0.00200667 0 0 0.00702333 0 0 0.00301 +0 0 0 0.00100333 0 0.00100333 0.00301 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0 0.00301 +0 0 0 0 0 0 0 0.00301 +0 0 0 0 0 0 0 0.00100333 +0 0 0 0.00100333 0 0 0 0 +0 0.00100333 0 0 0 0.00702333 0 0 +0 0 0.00401333 0 0.00401333 0 0.00401333 0.00903 +0 0 0.00200667 0 0.0100333 0 0 0.00100333 +0.00200667 0.00100333 0 0 0.00602 0 0 0 +0.00602 0.00100333 0.00903 0 0.00301 0 0 0 +0.00501667 0 0.01204 0 0.00501667 0.00602 0.00200667 0 +0.00100333 0 0 0.00200667 0.00702333 0 0 0 +0.01204 0 0.00501667 0 0 0 0 0.00200667 +0.00401333 0 0.00501667 0 0.00200667 0.00100333 0 0.00401333 +0 0.00401333 0 0.00100333 0 0 0 0.00200667 +0.0110367 0 0.00200667 0 0 0.00802667 0.00301 0.00501667 +0.00100333 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.0110367 0.00200667 0 0.00401333 0.00100333 0 0.00100333 +0 0.00702333 0.00401333 0 0 0.00200667 0.00602 0 +0 0.00100333 0.00903 0.00301 0.00100333 0.00401333 0 0 +0.00501667 0 0 0.00100333 0 0.00903 0 0 +0.00501667 0.00602 0 0.00200667 0.00100333 0 0.00301 0 +0.00501667 0.00602 0 0.00301 0.00301 0 0.00200667 0.00200667 +0.00200667 0 0.00903 0 0.00100333 0.00501667 0.00501667 0 +0 0.00301 0 0 0.00602 0.00100333 0 0 +0.00100333 0 0.00200667 0 0.00100333 0 0 0 +0 0.00301 0 0 0.00501667 0 0 0 +0.00301 0 0 0 0 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0 0 +0 0 0.00602 0 0 0 0 0.00200667 +0.00100333 0 0 0 0.00702333 0 0 0.00401333 +0.00301 0.00100333 0 0.00301 0.00602 0 0 0.00401333 +0.00200667 0 0 0.00602 0 0.00100333 0 0.0100333 +0 0 0 0.00301 0.00401333 0.00501667 0 0 +0.00602 0 0.00401333 0.00100333 0.00602 0.00501667 0 0.00702333 +0 0.00301 0 0 0.00200667 0.00301 0.00602 0.00301 +0 0 0 0.00802667 0.00100333 0 0.01204 0.00200667 +0 0 0 0 0 0.00301 0 0.0110367 +0 0.00200667 0.00200667 0 0.00903 0.00702333 0.00100333 0 +0.00401333 0.00501667 0.01204 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0100333 0.00903 0.00100333 +0 0 0.0100333 0.00702333 0 0.00301 0 0.00301 +0.00100333 0 0.00301 0.00100333 0.00200667 0 0.00903 0.00301 +0.00200667 0.00100333 0 0 0.00401333 0 0.00301 0 +0 0.00702333 0 0.00200667 0 0 0.00802667 0 +0 0.00401333 0.00200667 0 0.00702333 0 0.00903 0 +0 0.00401333 0.00301 0 0.00301 0.00802667 0 0 +0 0.00100333 0.00602 0.00702333 0 0.00401333 0 0.00401333 +0.00100333 0 0.00401333 0 0.00301 0 0.00401333 0 +0 0 0 0 0.00802667 0 0 0.00100333 +0 0 0 0 0 0.00100333 0 0 +0 0 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0 0 0 0 0 +0 0 0 0.01204 0 0 0 0.00702333 +0 0 0.00200667 0.00903 0 0.00301 0 0.00100333 +0.00100333 0 0.00200667 0.00100333 0 0 0.00200667 0.00301 +0 0.00401333 0.00501667 0.00301 0.00401333 0 0 0 +0.00602 0 0.00200667 0.00401333 0.00401333 0 0.00501667 0.00501667 +0 0 0.00401333 0 0.00301 0.00903 0.00200667 0 +0 0.00401333 0.0100333 0 0.00100333 0.00903 0 0 +0 0 0.00301 0 0 0.00802667 0.00602 0.00200667 +0 0 0 0.0100333 0.00602 0 0.00301 0.00401333 +0.00100333 0.00702333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0 0.00301 0.00602 +0.00200667 0 0 0.00702333 0.00401333 0 0.00200667 0 +0.00501667 0.00301 0 0 0.00200667 0 0 0.00702333 +0.00100333 0.00602 0 0 0.00100333 0.00401333 0 0 +0 0 0.00401333 0.00200667 0 0 0 0.00802667 +0 0.00200667 0.00501667 0 0 0.00100333 0.00501667 0.00301 +0.00200667 0 0 0 0 0 0.00501667 0 +0 0 0.00401333 0.00301 0.00301 0 0.00702333 0 +0 0.00501667 0.00501667 0 0.00100333 0 0 0.00401333 +0 0 0 0 0.00903 0.00100333 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00602 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0110367 0.00200667 0 0 0.00602 +0 0 0.00301 0 0 0.00100333 0 0.00301 +0 0 0 0 0 0.00702333 0.00200667 0 +0.00401333 0 0.00401333 0 0 0 0 0.0100333 +0 0.00501667 0.00401333 0.00602 0 0 0.00401333 0 +0 0.00200667 0.00501667 0 0.0140467 0.00401333 0 0 +0.00301 0.00401333 0 0.00702333 0.00802667 0 0 0 +0.00602 0.00301 0 0 0.0130433 0 0.00100333 0.00200667 +0 0 0.00802667 0 0 0.00401333 0.00501667 0.00100333 +0.00301 0 0 0.00802667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00602 0.00301 0 0 +0.00100333 0.00702333 0 0 0.0100333 0 0 0 +0 0.00301 0.01204 0.00100333 0 0 0 0 +0 0.00602 0.00702333 0 0.00301 0 0.00200667 0 +0.00401333 0 0 0.00401333 0.0100333 0 0.00301 0 +0.00602 0 0 0.00401333 0.00200667 0 0.00200667 0.00802667 +0.00100333 0 0.00100333 0 0 0 0 0.00301 +0.00100333 0 0.00301 0 0.00200667 0.00200667 0 0.00501667 +0 0.00301 0 0.00401333 0.00100333 0 0 0 +0 0.00100333 0 0 0 0.00401333 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0 0 0 0.00501667 0 0 0 0.00802667 +0 0.00100333 0 0 0 0 0.00100333 0.00200667 +0 0.00501667 0.00903 0 0 0.00301 0 0.00802667 +0 0.00100333 0.00501667 0 0.00501667 0 0.0100333 0.00301 +0 0.00401333 0.00200667 0 0.00100333 0 0.00501667 0 +0.00401333 0.0130433 0.00401333 0 0.00200667 0 0 0 +0.00802667 0 0.00501667 0.00602 0 0 0 0.00602 +0 0 0 0.0100333 0 0.00401333 0.00200667 0 +0 0.00200667 0.00501667 0 0.00501667 0.00501667 0.00100333 0.00100333 +0 0 0.00602 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00602 0.00301 0 0 +0.00100333 0.00200667 0.00501667 0 0 0.0100333 0.00501667 0.00401333 +0 0 0 0.0130433 0 0 0 0 +0.00200667 0 0.00501667 0.00200667 0.00401333 0.00301 0.00301 0.00100333 +0 0 0 0 0 0.00802667 0 0 +0 0 0.00501667 0 0 0.00100333 0 0.00702333 +0.00702333 0 0.00602 0 0.00301 0 0 0.00100333 +0.00200667 0 0.00802667 0 0 0.00200667 0 0 +0 0.00200667 0.00802667 0 0.00200667 0.00401333 0 0 +0 0 0.00200667 0 0 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00301 +0 0.00100333 0 0.00501667 0 0 0 0.00200667 +0.00100333 0.00401333 0.00100333 0 0 0.00100333 0 0 +0.00301 0.00301 0 0 0.00301 0.00301 0.00200667 0 +0 0.00100333 0 0.00200667 0 0.00100333 0 0 +0.0160533 0.00501667 0 0.00200667 0.00200667 0 0 0.00301 +0.00100333 0.00301 0.00100333 0.00200667 0 0 0.00903 0 +0 0 0.00301 0 0.00100333 0.00301 0 0 +0.00100333 0.00702333 0 0.00702333 0.00401333 0.00301 0 0 +0 0.00903 0.00802667 0 0.00602 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0140467 0.00100333 0.00602 0.00602 0.00301 +0 0 0 0.00301 0 0 0.00401333 0.00301 +0 0 0 0.00802667 0.00401333 0.00100333 0 0.00100333 +0 0 0 0.00501667 0.00501667 0 0.00903 0 +0.00501667 0 0 0 0 0 0.00501667 0.00501667 +0.00802667 0 0 0.00401333 0 0 0.00501667 0 +0.00401333 0.00100333 0 0 0.00501667 0.00401333 0 0 +0.0110367 0 0 0.01204 0 0 0.00301 0 +0 0.00200667 0 0.00702333 0 0 0.00100333 0 +0 0.00100333 0 0 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00602 0.00301 +0 0.00501667 0.00100333 0 0 0 0 0 +0.00501667 0 0 0 0.00301 0.00100333 0 0.00100333 +0.00501667 0 0.00702333 0.00200667 0.00100333 0.00301 0 0.00903 +0.00602 0 0 0 0.00200667 0 0 0.00501667 +0.0100333 0.00401333 0.00802667 0 0 0.00200667 0 0 +0 0 0.00802667 0.00200667 0.00200667 0 0.00401333 0 +0.00200667 0.00702333 0.00501667 0 0 0 0.00200667 0.00301 +0.00501667 0.00602 0 0.00401333 0 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00702333 0.01204 0.00301 0.00501667 0.00501667 +0.00802667 0 0.00301 0 0 0 0.00200667 0.00100333 +0.00301 0 0 0 0.00501667 0.00501667 0 0 +0 0 0 0 0 0.00702333 0.00802667 0.00301 +0.00501667 0.00501667 0.00100333 0 0 0 0 0 +0.00100333 0.00200667 0.00501667 0.00602 0.00301 0 0 0.00200667 +0.00301 0 0.00100333 0.00200667 0.00100333 0.00903 0 0 +0 0.00702333 0 0 0.0130433 0 0.00100333 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0 0 0 0 0.00602 +0 0 0 0 0.00301 0.00301 0 0.00301 +0 0.00301 0.00802667 0 0 0.00401333 0.00200667 0.00602 +0 0 0 0 0.00501667 0 0 0.0170567 +0 0.00200667 0.00100333 0 0 0 0 0.00602 +0 0.01204 0.00802667 0 0.00100333 0 0 0 +0.0100333 0.00100333 0 0 0.00200667 0.00200667 0.00100333 0 +0.00602 0 0 0.00100333 0.00501667 0.00602 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00401333 0 0 0.00903 0.00802667 0.00602 +0.00100333 0.00100333 0.00301 0.00401333 0.00301 0 0 0 +0.00301 0.00501667 0 0 0 0 0.00903 0 +0 0 0.00200667 0 0 0 0.00200667 0.00702333 +0 0.00301 0.00903 0 0.00301 0 0.00200667 0 +0 0.00501667 0 0.00200667 0.00802667 0 0 0.00200667 +0 0 0.00100333 0 0 0.00301 0.0100333 0 +0.00100333 0 0.00602 0 0 0.00200667 0 0 +0.00702333 0 0 0 0 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.03913 0.101337 0.167557 0.233777 0.306017 0.381267 0.444477 +0.483607 0.519727 0.54481 0.566883 0.56889 0.588957 0.5719 0.55986 +0.545813 0.515713 0.501667 0.447487 0.399327 0.356183 0.287957 0.233777 +0.181603 0.131437 0.08428 0.0461533 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00401333 0.00100333 0.00100333 0 0.00200667 0 +0.00100333 0.00100333 0 0 0.00602 0.00702333 0 0 +0.00602 0 0 0 0 0 0.0130433 0 +0.00501667 0 0.00100333 0 0 0.00501667 0.00501667 0.00501667 +0.00602 0.00702333 0 0 0.00602 0 0 0.00401333 +0.00200667 0 0.00200667 0 0.00602 0 0 0.00802667 +0 0 0.00401333 0.00301 0 0.00602 0.0100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.01204 0.00401333 0.00200667 0 0 0.00602 +0.00802667 0.00301 0 0 0 0.00301 0.00401333 0 +0 0.00200667 0.0110367 0 0 0 0 0.00602 +0.00501667 0 0 0.00702333 0 0 0 0.00401333 +0 0 0 0.00200667 0.00100333 0 0 0.00301 +0 0 0.00100333 0.00301 0.00200667 0 0.00100333 0.00702333 +0.01204 0 0 0.00200667 0.00100333 0 0.00401333 0 +0 0.00501667 0 0.00100333 0 0.00200667 0 0 +0 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0411367 0.125417 0.247823 0.417387 0.55384 0.735952 +0.886648 0.955408 0.998292 1.01702 1.04359 1.05265 1.05024 1.05507 +1.05748 1.05386 1.05265 1.05567 1.05567 1.05688 1.0599 1.05205 +1.05809 1.05265 1.06352 1.05688 1.04963 1.05446 1.04842 1.04118 +1.03212 1.01883 0.99044 0.957824 0.887936 0.753984 0.600997 0.465547 +0.30702 0.179597 0.0792633 0.00702333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0 0 0.00100333 0 0 0 0.00100333 0 +0.00200667 0 0.00100333 0 0.00501667 0.00501667 0 0.00501667 +0.00100333 0 0.00200667 0.00100333 0.00100333 0.00602 0.00501667 0 +0 0.00802667 0 0 0 0.00301 0 0.00903 +0 0.00100333 0 0.01204 0 0 0.00602 0 +0 0.00702333 0 0.00301 0 0 0.0140467 0 +0.00301 0.00702333 0 0.00301 0.0110367 0.00602 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00702333 0 0.00702333 0.00602 0.00702333 0.00501667 0 +0.00501667 0.00903 0.00501667 0 0 0 0 0.00100333 +0.00200667 0 0.00501667 0.00401333 0 0 0.00501667 0 +0.00200667 0.00401333 0 0 0.0140467 0 0 0.00702333 +0.00100333 0 0.00702333 0 0.00100333 0.00200667 0.00301 0 +0.00903 0 0 0 0.00100333 0.00100333 0 0 +0.00301 0.00200667 0.00501667 0 0.00501667 0 0.00501667 0.00100333 +0 0.00301 0 0.00903 0 0 0.00200667 0 +0 0 0.00200667 0 0 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.05117 0.164547 0.34314 +0.55083 0.779744 0.9542 1.01339 1.03816 1.0593 1.05628 1.06171 +1.05748 1.05748 1.05567 1.04299 1.05386 1.05205 1.04601 1.05446 +1.05144 1.0442 1.0442 1.04903 1.04782 1.04782 1.0448 1.04903 +1.04359 1.0448 1.04661 1.05628 1.03936 1.05084 1.0454 1.04722 +1.04722 1.05507 1.05748 1.05628 1.05869 1.06232 1.05809 1.05809 +1.05386 1.02124 0.985004 0.902104 0.708904 0.477587 0.283943 0.13244 +0.0220733 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0.00100333 0 0 0 0 +0 0 0.00301 0 0.00301 0 0.00702333 0 +0 0 0 0.00501667 0.0100333 0.00301 0 0.00903 +0 0.00200667 0 0.00301 0.00301 0 0 0.00200667 +0.00802667 0 0 0.00200667 0.0140467 0.00802667 0.00200667 0 +0 0 0 0 0 0.00602 0 0 +0.01204 0.00200667 0.00301 0.00100333 0.00501667 0.0100333 0 0.00501667 +0.00401333 0 0.00501667 0.00501667 0 0.00200667 0 0.00802667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00602 0.00200667 0 0.00401333 0 0.00501667 0.00200667 0.00100333 +0.00200667 0.00200667 0.0110367 0.0110367 0.00702333 0 0 0 +0 0 0 0.0130433 0.00702333 0 0 0 +0 0.00602 0.01204 0 0 0.00602 0 0 +0.00501667 0.00602 0.00301 0.00802667 0 0.00602 0 0.01204 +0 0.00702333 0 0 0.00401333 0 0 0 +0 0 0 0 0 0.00100333 0.00200667 0 +0.00100333 0.00401333 0 0 0.00301 0.00602 0 0 +0 0 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0712367 0.233777 0.468557 0.753984 0.959636 1.01702 1.05326 +1.06171 1.05869 1.05567 1.05507 1.05024 1.05024 1.04299 1.05024 +1.04963 1.04601 1.04782 1.04178 1.04299 1.04057 1.04238 1.04118 +1.03634 1.04178 1.03695 1.03755 1.03876 1.03212 1.03695 1.03876 +1.03574 1.03272 1.03997 1.04057 1.03936 1.04359 1.03755 1.04057 +1.04118 1.04842 1.04118 1.04299 1.0448 1.04238 1.0442 1.05024 +1.04842 1.05205 1.05084 1.0599 1.06654 1.05809 1.05084 1.00675 +0.916272 0.668976 0.39732 0.187623 0.0401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0 0 0 0.00100333 0 0 0 0 +0 0.00200667 0.00100333 0 0.00100333 0.00200667 0 0 +0 0 0.00602 0.00100333 0.00301 0 0 0 +0 0.00602 0 0.00200667 0.00100333 0.00100333 0.00301 0.00401333 +0 0 0.00802667 0.0100333 0.00301 0 0.00100333 0 +0 0 0.00301 0.00200667 0 0.00501667 0 0.0110367 +0 0.00501667 0 0.00301 0 0 0 0.00301 +0 0.00301 0.00100333 0 0.00702333 0.00501667 0.00802667 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00602 0.00401333 0 0.00401333 0.00200667 0.00501667 0.00401333 +0 0 0 0.00702333 0.0130433 0.00702333 0.00602 0 +0 0 0 0 0.00100333 0.00903 0 0.00501667 +0.00602 0 0.00301 0.0100333 0 0 0 0 +0 0.00200667 0 0.00301 0.00501667 0 0 0.00200667 +0.00401333 0.00301 0.00100333 0 0.00200667 0.00301 0 0.00401333 +0.00903 0 0 0 0 0 0.00602 0.00100333 +0 0.00501667 0.00100333 0 0 0.00100333 0 0 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0200667 0.166553 0.414377 +0.72436 0.971716 1.03634 1.0593 1.06111 1.0593 1.05265 1.0454 +1.04722 1.05084 1.04238 1.0448 1.04903 1.03816 1.03876 1.03816 +1.04118 1.03634 1.03936 1.03755 1.03393 1.03574 1.03332 1.03634 +1.03272 1.0291 1.03514 1.02789 1.0303 1.02728 1.02245 1.03212 +1.02789 1.02789 1.03453 1.03091 1.03212 1.03393 1.03514 1.03151 +1.03876 1.04359 1.03091 1.03816 1.04359 1.03453 1.03816 1.03997 +1.04359 1.03453 1.04359 1.04299 1.04238 1.04661 1.05869 1.05628 +1.05809 1.0599 1.05446 1.02064 0.938496 0.687008 0.365213 0.145483 +0.00903 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00301 +0 0 0 0.00200667 0.00200667 0.00301 0 0 +0 0.00100333 0 0 0 0 0.00401333 0.00200667 +0.00100333 0.00702333 0 0 0 0.00602 0 0 +0.00100333 0.0110367 0.00401333 0 0 0 0.00100333 0 +0.00200667 0 0.00602 0 0 0.00100333 0.00301 0 +0 0 0 0.00301 0.00301 0 0.00702333 0.00301 +0.00301 0.00200667 0 0.00401333 0.00401333 0.00100333 0.00200667 0.00200667 +0.00903 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0.00702333 0.00200667 0.00301 0.00301 0 0 0.00100333 0.00100333 +0.00501667 0.00200667 0 0 0 0.0110367 0.00702333 0.00702333 +0 0 0 0 0.00301 0 0 0 +0.00602 0 0.00401333 0.00200667 0.00903 0.00903 0 0 +0 0 0.00200667 0.00802667 0.00602 0 0.00200667 0 +0.00802667 0.00100333 0 0 0 0 0 0 +0.00602 0.00301 0.00301 0 0.00200667 0 0 0 +0 0.00501667 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0250833 0.19866 0.509693 0.881496 1.01702 1.05748 +1.06352 1.05809 1.04661 1.05144 1.0442 1.0442 1.04359 1.03695 +1.04359 1.04178 1.03876 1.03574 1.03634 1.03514 1.03574 1.03453 +1.02849 1.03876 1.03514 1.0297 1.03091 1.02426 1.03151 1.0303 +1.02728 1.02728 1.02668 1.01943 1.02849 1.02366 1.01822 1.02064 +1.02245 1.02245 1.02004 1.01943 1.02728 1.03091 1.0303 1.02849 +1.02668 1.03091 1.02789 1.03514 1.0291 1.03876 1.0303 1.03816 +1.03091 1.03453 1.03332 1.03574 1.03755 1.04118 1.04359 1.04722 +1.04299 1.04842 1.04661 1.05265 1.05567 1.06413 1.05628 1.00916 +0.844144 0.4816 0.194647 0.0220733 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0 +0 0 0 0 0 0 0 0.00401333 +0 0.00100333 0 0.00100333 0 0.00903 0.00401333 0 +0 0 0.00100333 0 0.0130433 0 0 0.00100333 +0 0.00301 0 0 0 0 0.00501667 0 +0 0.00802667 0 0 0.00602 0 0 0.00100333 +0.00903 0 0 0 0 0.01204 0.00501667 0 +0 0.00401333 0.00501667 0.00401333 0 0.00301 0 0.00100333 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00702333 +0.00401333 0.00301 0.00401333 0.00602 0.00100333 0.00200667 0 0.00100333 +0.00200667 0.00200667 0 0.00501667 0.00100333 0 0.00100333 0.00602 +0.00903 0.00200667 0.00301 0 0 0.00802667 0.00200667 0 +0 0.00200667 0 0.00100333 0.00200667 0.00501667 0.00602 0 +0 0 0 0 0.00702333 0.00401333 0.00200667 0.00200667 +0 0.00501667 0.00200667 0 0 0 0.00100333 0.00301 +0 0.00301 0.00301 0.00200667 0 0.00200667 0.00200667 0 +0 0 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.1505 0.480597 0.887936 1.02004 1.05748 1.06413 1.05024 1.04661 +1.05869 1.04057 1.04178 1.03876 1.03695 1.04118 1.03514 1.03816 +1.03816 1.03272 1.03453 1.0303 1.03514 1.0297 1.02728 1.03393 +1.02728 1.02728 1.03332 1.02668 1.02789 1.02547 1.02306 1.02728 +1.02426 1.02426 1.01581 1.01762 1.02124 1.04601 1.06775 1.0876 +1.08795 1.07258 1.03272 1.01822 1.02547 1.02185 1.0291 1.02789 +1.02849 1.02608 1.0303 1.02004 1.03151 1.0297 1.03151 1.0291 +1.03272 1.03453 1.0303 1.03574 1.03514 1.03876 1.03091 1.03272 +1.03574 1.03453 1.03997 1.03876 1.0454 1.04782 1.05084 1.05205 +1.05748 1.05688 1.02608 0.880208 0.488623 0.164547 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0 0 0.00100333 0 0 0 0 +0.00301 0.00401333 0 0 0.00401333 0 0 0 +0.00501667 0.00100333 0.00301 0.00602 0 0 0 0.00702333 +0 0 0 0 0 0.00903 0 0 +0.00802667 0 0 0.00401333 0 0 0.00501667 0.00501667 +0 0 0.00501667 0 0.0110367 0.00200667 0 0 +0.00802667 0.00501667 0 0 0.00501667 0.00301 0.00802667 0.00602 +0.00702333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00501667 0.00401333 +0.00401333 0.00602 0.00301 0.00301 0.00702333 0.00301 0.00501667 0.00100333 +0 0.00501667 0 0 0.00100333 0.00301 0 0 +0.00100333 0.0100333 0.00401333 0.00100333 0 0 0.00301 0.00602 +0.00301 0 0.00903 0 0 0.00702333 0.00702333 0.00802667 +0 0 0 0.00501667 0 0.00501667 0.00200667 0.00702333 +0 0 0 0 0 0 0 0 +0 0.00100333 0 0.00301 0 0 0 0.00200667 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0471567 0.31003 0.74368 +1.00071 1.05869 1.06413 1.05567 1.04359 1.04722 1.03997 1.0297 +1.04601 1.03332 1.03755 1.04178 1.03212 1.0291 1.03212 1.0303 +1.02849 1.03453 1.02849 1.03272 1.02366 1.02366 1.02245 1.0291 +1.02547 1.02306 1.02728 1.0297 1.02366 1.02306 1.02185 1.02245 +1.02064 1.02004 1.01581 1.04722 1.10615 1.13835 1.14709 1.14835 +1.14918 1.15211 1.13135 1.09845 1.04238 1.01762 1.02185 1.03151 +1.02124 1.02245 1.02185 1.01762 1.0297 1.0303 1.02668 1.02366 +1.0297 1.0297 1.02366 1.03212 1.03091 1.03453 1.02728 1.0303 +1.03393 1.03514 1.03816 1.03574 1.03997 1.03755 1.04178 1.0442 +1.04057 1.05144 1.05809 1.0593 1.06171 1.01581 0.805504 0.368223 +0.0772567 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00401333 0.0100333 0.00200667 +0.00702333 0 0 0.00100333 0.00602 0.00401333 0 0.00200667 +0 0 0 0.00100333 0 0.00401333 0.00602 0.00200667 +0 0.00200667 0 0.00501667 0 0 0 0.0110367 +0 0 0 0 0.00200667 0.00100333 0.00702333 0 +0 0.00602 0.0100333 0.00200667 0.00200667 0 0 0.00602 +0 0 0 0.00802667 0 0.00903 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0 +0 0 0.00401333 0.00702333 0.00501667 0 0.00200667 0.00301 +0.00702333 0 0.00401333 0.00301 0.00200667 0.00401333 0.00602 0 +0 0 0.00501667 0.00903 0 0 0.00200667 0 +0.00401333 0 0 0.00903 0 0 0.00501667 0.00903 +0.00401333 0 0 0 0 0 0.00401333 0.00501667 +0 0.00903 0 0 0 0 0 0 +0.00401333 0 0 0.00702333 0.0110367 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.112373 0.46655 0.925208 1.04118 1.05688 +1.05869 1.04782 1.0448 1.04963 1.03997 1.03695 1.03876 1.0297 +1.03514 1.03272 1.03393 1.03393 1.03091 1.02849 1.02849 1.0297 +1.02728 1.0297 1.02547 1.02426 1.02789 1.02487 1.02004 1.01943 +1.02608 1.01822 1.03393 1.02185 1.02366 1.02185 1.01943 1.01762 +1.02185 1.02064 1.07077 1.1303 1.14751 1.14625 1.145 1.14625 +1.14542 1.14709 1.14185 1.15127 1.12505 1.05326 1.01702 1.02728 +1.01641 1.02004 1.0146 1.02124 1.02608 1.02789 1.02124 1.02487 +1.02185 1.02608 1.02849 1.02306 1.02849 1.02728 1.0303 1.02728 +1.03514 1.02668 1.0297 1.02728 1.03091 1.03332 1.03695 1.03272 +1.03997 1.04118 1.04178 1.04963 1.04601 1.05748 1.06232 1.04903 +0.963864 0.543807 0.170567 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0 0.00702333 0 0 +0 0 0 0.00903 0.00401333 0 0.00301 0 +0 0.00702333 0 0 0.00200667 0 0.00702333 0 +0.00200667 0.00802667 0.00100333 0 0 0 0.00903 0 +0.00100333 0 0 0.00702333 0.00501667 0.00903 0 0.00200667 +0 0.00702333 0.00100333 0 0 0.00200667 0.00501667 0.00100333 +0.00802667 0 0.00802667 0.00401333 0.00301 0 0 0 +0.00401333 0.01505 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00802667 0.00501667 +0 0 0 0 0.00301 0.00802667 0 0 +0 0.00903 0.00301 0 0 0 0.00501667 0.00501667 +0 0.00401333 0 0.00100333 0.00401333 0 0 0 +0.00100333 0.00401333 0 0.00301 0.00501667 0 0 0.00602 +0.00702333 0.00702333 0 0.00401333 0 0 0.00200667 0.00301 +0.00100333 0.00501667 0.00602 0 0.00301 0.00602 0.00200667 0.00100333 +0 0 0 0 0.00401333 0.00602 0 0 +0 0.00200667 0 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.130433 0.552837 0.973528 1.05869 1.05688 1.04842 1.04601 +1.03936 1.04118 1.03332 1.03634 1.03755 1.03393 1.03514 1.03393 +1.02668 1.03151 1.02064 1.02789 1.02668 1.01883 1.02306 1.02366 +1.03091 1.02064 1.02668 1.02306 1.02366 1.02426 1.02366 1.01762 +1.0152 1.02004 1.02426 1.02185 1.01822 1.02185 1.01943 1.02004 +1.0146 1.06171 1.13625 1.14584 1.14325 1.1436 1.1443 1.1408 +1.1422 1.14115 1.13905 1.14876 1.14918 1.1289 1.04299 1.01762 +1.01883 1.01762 1.02547 1.02124 1.0297 1.01943 1.02366 1.0303 +1.01339 1.02608 1.02547 1.02668 1.02608 1.02245 1.0291 1.02849 +1.02487 1.02487 1.0291 1.02849 1.03695 1.03453 1.02608 1.0291 +1.03453 1.03876 1.03393 1.04118 1.04057 1.04661 1.03997 1.04963 +1.05628 1.05628 1.01581 0.701176 0.247823 0.00802667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00802667 0.00802667 0 0 0 0 +0.00301 0.00200667 0 0 0.00301 0.00100333 0 0 +0.00702333 0.00301 0 0 0.00702333 0.00903 0.00100333 0 +0 0.00802667 0.00501667 0.00200667 0 0 0 0.00100333 +0.00501667 0.00100333 0 0.00200667 0.00602 0.00200667 0.00401333 0 +0 0.00501667 0.00401333 0 0.00100333 0.00301 0.00802667 0.00702333 +0.00802667 0.00501667 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00501667 0.00301 0.00301 +0.00602 0.00301 0 0 0 0.00100333 0.00301 0 +0 0 0.00702333 0.01204 0 0 0.00200667 0.00501667 +0.00401333 0 0 0.00301 0.00100333 0 0.00200667 0 +0 0 0 0 0 0 0.00100333 0 +0.00200667 0.00301 0.00702333 0 0 0.00100333 0 0 +0.00501667 0 0.0100333 0 0 0 0 0 +0 0 0 0 0 0.00200667 0.00301 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.14147 +0.58695 0.989232 1.05809 1.0593 1.05567 1.04903 1.03574 1.04359 +1.03332 1.03876 1.03091 1.0303 1.0291 1.02487 1.0303 1.02728 +1.02668 1.03272 1.02668 1.02487 1.0297 1.01883 1.02185 1.02668 +1.01822 1.02185 1.02366 1.02306 1.02487 1.02547 1.01883 1.02728 +1.01883 1.02728 1.02185 1.01702 1.01581 1.01883 1.02487 1.01641 +1.02728 1.1191 1.14751 1.1422 1.1415 1.14255 1.14115 1.14045 +1.13975 1.13835 1.13835 1.1422 1.14255 1.14255 1.1072 1.01641 +1.01702 1.01943 1.02245 1.02004 1.02185 1.02185 1.01883 1.02608 +1.01883 1.01762 1.02426 1.02426 1.02124 1.01883 1.02668 1.02124 +1.02366 1.02608 1.02547 1.02608 1.0291 1.02426 1.02426 1.0297 +1.03272 1.0297 1.0297 1.03272 1.03393 1.03574 1.04238 1.0442 +1.04661 1.0442 1.05507 1.06473 1.03272 0.792624 0.27391 0.00702333 +0 0 0 0 0 0 0 0 +0 0 0 0.00401333 0 0 0 0 +0.00501667 0.00401333 0.00401333 0 0 0 0 0 +0.00200667 0 0.00401333 0.00903 0.00301 0 0 0.00702333 +0.00401333 0 0 0.00401333 0.00100333 0 0 0.00501667 +0.0130433 0 0 0 0.0100333 0.00301 0 0.00301 +0 0.00100333 0.00702333 0.00100333 0.00903 0.00401333 0 0 +0 0.00100333 0 0 0 0.00501667 0 0 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00401333 0.00401333 0.00200667 +0.00301 0 0.00301 0.00100333 0 0 0.00301 0.00301 +0.00200667 0 0 0 0.00602 0 0 0.00301 +0.00602 0.00501667 0 0 0 0.00200667 0 0 +0.00100333 0 0 0.00401333 0.00200667 0 0 0 +0 0.00100333 0 0 0 0.00200667 0 0 +0 0 0.00100333 0.00301 0.00100333 0.00200667 0 0.00301 +0.00100333 0 0.00501667 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.106353 0.542803 0.991044 +1.06534 1.05869 1.05144 1.0442 1.04601 1.04722 1.03272 1.03272 +1.0291 1.03091 1.03453 1.0303 1.02849 1.0297 1.02789 1.03091 +1.02306 1.01943 1.02004 1.02185 1.02366 1.01943 1.02064 1.02487 +1.01762 1.02426 1.02426 1.0146 1.02064 1.01943 1.02064 1.02668 +1.02185 1.01943 1.02124 1.02608 1.01943 1.01762 1.02124 1.0146 +1.07198 1.1422 1.1429 1.1415 1.138 1.14115 1.1394 1.13695 +1.1401 1.1373 1.1394 1.1401 1.1443 1.14185 1.13835 1.04903 +1.014 1.02245 1.02245 1.00977 1.01762 1.02004 1.01641 1.01883 +1.02366 1.02124 1.02668 1.02789 1.014 1.02306 1.02124 1.02124 +1.02426 1.02487 1.01943 1.02487 1.03272 1.01581 1.02668 1.0297 +1.02306 1.02366 1.0291 1.0303 1.03332 1.03091 1.0297 1.03634 +1.03212 1.03816 1.0442 1.05144 1.05688 1.06232 1.0303 0.778456 +0.250833 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0 0 0 0.00301 0 0 0.00401333 +0 0.00200667 0.00802667 0.00200667 0 0.00602 0.0100333 0.00702333 +0 0 0.0100333 0 0 0.00100333 0.00903 0.0130433 +0 0 0.00501667 0 0.00200667 0.00702333 0.00501667 0 +0.00903 0.00401333 0 0.00903 0 0 0.00100333 0 +0 0.00100333 0.00100333 0.00100333 0.0100333 0.00200667 0 0.00602 +0 0 0 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.01204 0.00602 0.00200667 0 +0.00602 0.00702333 0 0 0.00501667 0 0.00100333 0.00301 +0 0.00100333 0 0.00200667 0.00200667 0.00200667 0 0.00401333 +0.00702333 0.00301 0 0 0.00200667 0.00100333 0.00200667 0 +0 0.00501667 0.00301 0 0.00501667 0.0100333 0 0 +0 0 0.00301 0.00301 0 0 0 0 +0.00501667 0 0.00200667 0 0.00401333 0 0 0.00200667 +0 0 0.00100333 0 0.00501667 0 0 0.00501667 +0 0 0 0 0 0 0 0 +0 0 0 0.0411367 0.438457 0.965676 1.05507 1.05386 +1.05628 1.05024 1.03634 1.03936 1.03634 1.03272 1.03876 1.02245 +1.02789 1.02426 1.0303 1.02668 1.02547 1.02185 1.02668 1.02124 +1.02789 1.02426 1.02185 1.014 1.02547 1.02064 1.01702 1.02245 +1.02487 1.01822 1.02185 1.02004 1.01702 1.02064 1.01641 1.01883 +1.02004 1.01641 1.02185 1.0146 1.01581 1.01943 1.01702 1.0146 +1.10335 1.1436 1.1401 1.14045 1.1415 1.13695 1.1387 1.1359 +1.13695 1.13625 1.1387 1.1366 1.14325 1.1436 1.14115 1.08375 +1.01762 1.01883 1.02608 1.01702 1.02366 1.01158 1.02728 1.01702 +1.02306 1.01822 1.02245 1.02306 1.02124 1.01822 1.01883 1.02306 +1.02004 1.02426 1.02306 1.02547 1.02004 1.02547 1.02245 1.02245 +1.02185 1.02789 1.02547 1.0303 1.01943 1.02245 1.03151 1.03332 +1.0303 1.03151 1.04359 1.03876 1.04842 1.03936 1.05326 1.06292 +1.02245 0.677992 0.164547 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0.00301 0 0 0.00702333 0.00702333 0.00802667 0 +0 0.00802667 0 0 0 0.00401333 0.0100333 0 +0 0.00301 0 0.0100333 0.00501667 0 0 0 +0 0 0.00301 0 0 0.00301 0 0 +0.00602 0.00501667 0.00501667 0.0100333 0 0 0.00602 0.00602 +0 0 0.00301 0.00702333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00501667 0.00602 0.00802667 0.00702333 +0 0 0.00602 0.00602 0.00100333 0.00100333 0 0 +0.00501667 0.00100333 0 0 0.00200667 0 0 0.00100333 +0.00100333 0.00401333 0.01204 0 0.00100333 0.00401333 0.00401333 0 +0.00301 0 0 0 0 0.00301 0.01204 0.0100333 +0.00100333 0 0.00100333 0 0 0 0 0 +0 0 0.00200667 0 0 0.00301 0 0 +0.00401333 0 0.00200667 0 0.00100333 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0.272907 0.87248 1.05024 1.06292 1.05265 1.04722 +1.03695 1.04118 1.03272 1.03212 1.03453 1.02668 1.03272 1.02849 +1.02426 1.02366 1.02124 1.02124 1.02366 1.02608 1.02366 1.02366 +1.02245 1.02487 1.02306 1.02245 1.02064 1.02245 1.02004 1.01762 +1.01581 1.02185 1.01641 1.01822 1.02004 1.02366 1.02306 1.02245 +1.02124 1.01822 1.01702 1.02306 1.0146 1.01581 1.01943 1.01641 +1.12015 1.1422 1.1394 1.14045 1.1359 1.138 1.1387 1.1359 +1.13555 1.13625 1.138 1.14185 1.14395 1.14465 1.14185 1.10405 +1.01822 1.02185 1.01883 1.01641 1.01762 1.02185 1.02124 1.02064 +1.02064 1.02306 1.02306 1.01822 1.01943 1.01641 1.02185 1.02004 +1.02245 1.02789 1.02245 1.02366 1.01822 1.02668 1.02064 1.0152 +1.02426 1.02668 1.02426 1.01883 1.02306 1.0297 1.02668 1.02668 +1.02487 1.02789 1.03091 1.03574 1.03574 1.03816 1.04782 1.05326 +1.05688 1.05567 0.992252 0.507687 0.06923 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0.00802667 0.00702333 0.00200667 0 0 +0 0 0.00100333 0.00200667 0.00702333 0.00301 0 0 +0.00602 0.00100333 0 0.00401333 0 0 0 0.00602 +0.00501667 0 0 0 0.00100333 0 0 0.00501667 +0.00702333 0.00401333 0.00200667 0 0.00100333 0.00702333 0.00802667 0 +0 0.00401333 0.00602 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0100333 0.00401333 0.00200667 0.00702333 +0.01204 0.00401333 0 0 0 0.00501667 0 0.00100333 +0.00200667 0.00501667 0.00903 0 0 0.00200667 0.00200667 0 +0 0.00401333 0 0.0110367 0.00200667 0.00401333 0.0100333 0.00702333 +0.00401333 0.00200667 0.00903 0 0 0 0.00301 0.00501667 +0.0100333 0.0110367 0.00200667 0.00903 0 0.00401333 0 0.00401333 +0 0 0.00100333 0 0 0 0.00301 0 +0.00301 0.00602 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.100333 0.605864 1.02728 1.05869 1.04903 1.04238 1.04359 1.04178 +1.04057 1.02608 1.03091 1.02245 1.03212 1.03091 1.02245 1.02185 +1.02789 1.02245 1.01822 1.02306 1.02064 1.02124 1.02064 1.02245 +1.01641 1.02306 1.01943 1.02366 1.01883 1.02245 1.02245 1.02185 +1.01883 1.02004 1.02064 1.02004 1.01883 1.0146 1.01762 1.02064 +1.02245 1.0152 1.02366 1.02487 1.01702 1.01218 1.0152 1.02306 +1.12505 1.14395 1.14185 1.13905 1.13835 1.1387 1.14045 1.13835 +1.13695 1.1373 1.1345 1.14185 1.13625 1.13765 1.14709 1.1072 +1.01581 1.01822 1.01218 1.02004 1.02064 1.01641 1.01822 1.02306 +1.01883 1.02064 1.01883 1.01822 1.02728 1.01762 1.02306 1.014 +1.02608 1.02064 1.0146 1.01943 1.02064 1.02004 1.02004 1.02245 +1.02426 1.02306 1.02124 1.01883 1.02366 1.02366 1.02306 1.02668 +1.02728 1.02245 1.03755 1.03091 1.02728 1.03816 1.03755 1.04057 +1.03936 1.05024 1.05326 1.05265 0.926416 0.32508 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0 0.00200667 0.00602 0.00200667 0 0 0 0 +0.00100333 0.00501667 0.00100333 0.00100333 0 0 0 0.00401333 +0 0 0.00200667 0 0.00301 0 0.00501667 0 +0 0 0.00200667 0.00301 0.00301 0 0 0.00100333 +0.00200667 0.00100333 0.00100333 0 0.00702333 0 0 0 +0 0.00100333 0 0.00702333 0.00702333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0 0.00401333 0.00702333 0 +0 0.00401333 0.00602 0 0 0 0.00501667 0.00200667 +0 0.00401333 0 0.00802667 0.00301 0 0 0 +0 0 0.00301 0 0 0 0 0 +0.01204 0.00401333 0 0.00602 0.00501667 0.00200667 0 0 +0 0 0.00301 0.00100333 0.00903 0 0.00903 0 +0 0.00301 0 0 0.00802667 0 0 0 +0 0 0.00602 0 0 0 0 0 +0 0 0 0 0 0 0 0.335113 +0.946348 1.05748 1.0593 1.04722 1.04661 1.03574 1.0297 1.02789 +1.03695 1.03514 1.02004 1.03514 1.02728 1.02849 1.0291 1.02487 +1.02124 1.02306 1.01883 1.02245 1.02487 1.02245 1.0152 1.02004 +1.02124 1.01883 1.01702 1.01581 1.0146 1.01883 1.02487 1.01883 +1.01943 1.02185 1.0146 1.01762 1.02004 1.02004 1.01581 1.01581 +1.0146 1.02426 1.0146 1.02608 1.0146 1.0152 1.01702 1.02004 +1.1205 1.1429 1.1415 1.1415 1.1387 1.13835 1.13975 1.13625 +1.1373 1.13905 1.13905 1.13695 1.1401 1.1415 1.1422 1.10615 +1.014 1.01641 1.0146 1.01762 1.0146 1.01943 1.02004 1.014 +1.02004 1.02124 1.0146 1.02185 1.01943 1.01762 1.01339 1.02124 +1.02185 1.01943 1.01641 1.01822 1.02245 1.02366 1.0152 1.02426 +1.02306 1.02185 1.02366 1.02004 1.02064 1.01702 1.03272 1.02668 +1.02426 1.02426 1.02487 1.02487 1.03393 1.03151 1.0291 1.0297 +1.0454 1.04118 1.03997 1.05809 1.06715 1.0297 0.680568 0.134447 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0100333 0 0 0 +0.00301 0.00100333 0 0 0 0 0.00100333 0.00602 +0.00501667 0.00301 0.00602 0 0 0.00401333 0.00100333 0 +0.0100333 0.00200667 0.00401333 0.00100333 0 0.00702333 0 0 +0.00100333 0.0100333 0 0 0.00200667 0.00501667 0 0.00702333 +0.00501667 0.00200667 0.00100333 0 0 0 0.00200667 0 +0.00301 0 0.00301 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0140467 0.00100333 0.00200667 0.00301 0.0100333 +0.00903 0.00200667 0.00602 0.00702333 0 0 0 0 +0 0 0.00200667 0.00301 0 0.00100333 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0.00903 0.00200667 0 0 0.00401333 0 0.00802667 +0 0 0.00401333 0.00802667 0 0 0.00401333 0.01204 +0 0 0 0 0.00602 0.00401333 0 0 +0.00501667 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0.0792633 0.617456 1.0297 +1.06232 1.05084 1.04299 1.03634 1.03332 1.03574 1.02306 1.02426 +1.02728 1.03212 1.02306 1.02004 1.0291 1.01581 1.02306 1.02789 +1.01883 1.01943 1.01641 1.01822 1.01943 1.02547 1.02728 1.02185 +1.02124 1.01762 1.02185 1.01762 1.02366 1.01943 1.02064 1.01822 +1.01943 1.02064 1.02124 1.01641 1.02426 1.0303 1.01943 1.01702 +1.014 1.01943 1.01339 1.02306 1.02004 1.01641 1.01279 1.02004 +1.1023 1.14325 1.1394 1.1401 1.1387 1.1415 1.138 1.1394 +1.13625 1.13485 1.1387 1.1331 1.14185 1.1443 1.1422 1.08025 +1.00916 1.01218 1.01822 1.01943 1.02064 1.01702 1.01702 1.01822 +1.02064 1.01218 1.01762 1.01702 1.00916 1.0291 1.01279 1.02064 +1.02487 1.0146 1.02306 1.02185 1.02306 1.0152 1.02004 1.02306 +1.01762 1.02306 1.01581 1.02487 1.02185 1.02124 1.01883 1.02064 +1.02366 1.02245 1.02306 1.03091 1.02608 1.0291 1.02668 1.0303 +1.03393 1.03755 1.03574 1.05084 1.03997 1.05084 1.05869 0.966884 +0.374243 0.00501667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0 0 0 0.00100333 0.00903 0 +0 0.00802667 0 0 0.00200667 0.00802667 0 0 +0 0 0.00100333 0 0.00501667 0 0 0 +0.00702333 0 0 0 0 0 0.00802667 0.00501667 +0 0 0 0.00301 0 0.00100333 0 0 +0.00401333 0.00602 0.00702333 0.00401333 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.00602 0.00602 0 0 0 +0.00602 0.00702333 0 0.00100333 0 0.00301 0 0 +0 0.00100333 0 0 0.00602 0.00200667 0 0.00100333 +0 0 0.00401333 0 0.00401333 0 0.00401333 0 +0 0 0.00702333 0.00501667 0 0 0.00100333 0 +0.00602 0 0.00100333 0.00100333 0 0 0 0.00401333 +0.00602 0 0.00100333 0 0 0.00301 0 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0.245817 0.905968 1.0599 1.05809 +1.04963 1.05628 1.04299 1.03755 1.03091 1.03514 1.03393 1.02426 +1.02124 1.02487 1.02849 1.01822 1.02728 1.02064 1.02728 1.01581 +1.02245 1.01581 1.02185 1.02004 1.01339 1.01581 1.01883 1.01702 +1.02547 1.01158 1.02366 1.0146 1.02426 1.02185 1.01279 1.01822 +1.01702 1.01581 1.01581 1.01883 1.02004 1.02487 1.02366 1.01883 +1.01943 1.01581 1.02185 1.014 1.02064 1.01279 1.01218 1.01098 +1.06715 1.1394 1.1443 1.1366 1.13835 1.14115 1.1359 1.1366 +1.13765 1.1345 1.1408 1.138 1.13905 1.14584 1.1338 1.03574 +1.00856 1.02185 1.01581 1.02004 1.01883 1.0146 1.02004 1.02185 +1.02245 1.01762 1.01762 1.02366 1.01822 1.02185 1.02668 1.01702 +1.01822 1.0146 1.02366 1.01762 1.02064 1.0146 1.02849 1.01762 +1.01641 1.02064 1.02124 1.02789 1.02185 1.02426 1.02004 1.02366 +1.02245 1.0152 1.02245 1.02366 1.02064 1.02185 1.02608 1.02245 +1.02366 1.03574 1.0297 1.03272 1.03816 1.05144 1.05084 1.05628 +1.03332 0.658672 0.0943133 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00200667 +0 0 0.00501667 0 0 0 0 0.00501667 +0.00501667 0 0 0 0.0100333 0.00100333 0 0.00401333 +0.00200667 0.00401333 0.00401333 0 0 0 0.00501667 0 +0 0 0.00100333 0 0 0.00802667 0.00501667 0 +0 0.00301 0.00501667 0 0 0 0 0.0100333 +0.00401333 0.00301 0 0.00200667 0.00802667 0.00602 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00501667 0.00903 0.00702333 0.00100333 0 +0 0.00200667 0.00501667 0.00903 0.0100333 0.00200667 0.00100333 0 +0.00200667 0.00501667 0.00802667 0.00301 0 0.00802667 0.00602 0.00903 +0.00401333 0 0 0.00802667 0.00100333 0.00702333 0 0.00100333 +0.00200667 0 0 0 0.00702333 0 0 0 +0 0 0 0.00301 0.0110367 0.00602 0 0 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00301 0.43043 1.00494 1.0593 1.05144 1.04782 +1.03634 1.03997 1.03453 1.03695 1.02789 1.0291 1.03272 1.02789 +1.02185 1.02245 1.02124 1.01702 1.01762 1.02426 1.01581 1.02608 +1.02849 1.02004 1.01641 1.02487 1.01943 1.0152 1.02426 1.02245 +1.02004 1.02004 1.0146 1.01762 1.02064 1.01883 1.02245 1.02306 +1.01943 1.02185 1.01883 1.02487 1.01641 1.01339 1.02668 1.014 +1.02124 1.01822 1.02185 1.01641 1.02064 1.01098 1.01943 1.014 +1.02004 1.11455 1.14793 1.13695 1.14751 1.14255 1.1338 1.1373 +1.13415 1.13485 1.14185 1.138 1.13835 1.14667 1.0953 1.01098 +1.00735 1.014 1.01943 1.01581 1.02064 1.01822 1.01822 1.01581 +1.02124 1.01822 1.02185 1.01883 1.02245 1.02124 1.01822 1.01641 +1.0146 1.02668 1.02245 1.01158 1.02004 1.02789 1.01581 1.01641 +1.01822 1.02487 1.01822 1.02185 1.02185 1.01822 1.01762 1.02366 +1.02064 1.02064 1.0297 1.02849 1.02487 1.02124 1.02426 1.01943 +1.02728 1.0297 1.02849 1.03091 1.03755 1.03936 1.03816 1.04359 +1.05628 1.0599 0.924 0.24381 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0 0 0.00301 0.00802667 0.00301 +0 0 0 0 0.00200667 0 0.00200667 0 +0 0 0 0 0.00301 0.00301 0 0 +0.00401333 0.00301 0 0.00401333 0.00702333 0 0 0 +0 0.00100333 0 0 0 0.00903 0.01204 0.00200667 +0 0 0.00200667 0.00602 0.00602 0.00301 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00702333 0.00100333 0 0.00301 0.00602 0.00602 +0.00301 0 0.00100333 0.00200667 0.00100333 0.00602 0 0.00200667 +0 0 0 0 0.00401333 0 0 0.00602 +0.00501667 0.00401333 0 0 0 0 0.00100333 0.0100333 +0.00501667 0 0 0.00301 0.00602 0.00301 0 0.00602 +0 0.00602 0.00100333 0 0 0 0.0110367 0.00100333 +0 0.00702333 0 0 0 0.00200667 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0.0461533 0.623896 1.03634 1.06292 1.05205 1.04299 1.03634 +1.03755 1.02124 1.03695 1.0297 1.02789 1.01641 1.0291 1.02789 +1.02789 1.02608 1.02185 1.01702 1.01883 1.02306 1.02124 1.0146 +1.02426 1.02426 1.01822 1.01943 1.02306 1.02004 1.01822 1.02124 +1.0146 1.02547 1.02004 1.02185 1.01702 1.01702 1.0152 1.0152 +1.02004 1.02064 1.01339 1.02245 1.02185 1.01641 1.01943 1.02306 +1.02064 1.01883 1.01883 1.01702 1.01279 1.0146 1.02064 1.01098 +1.01581 1.0448 1.1275 1.1422 1.14115 1.1373 1.14045 1.1422 +1.1373 1.14045 1.138 1.14751 1.145 1.11665 1.02547 1.01581 +1.014 1.0152 1.0146 1.01581 1.02064 1.01762 1.0152 1.02124 +1.01702 1.02064 1.02668 1.01279 1.02245 1.02426 1.01641 1.01037 +1.02306 1.0146 1.0146 1.01822 1.02547 1.01883 1.01883 1.0146 +1.02124 1.02426 1.01702 1.02306 1.02124 1.02064 1.02124 1.02426 +1.01218 1.02849 1.02124 1.02064 1.01883 1.02185 1.02608 1.02124 +1.02668 1.02789 1.02426 1.0297 1.03091 1.03212 1.03393 1.03695 +1.05084 1.05748 1.05567 0.995272 0.38528 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00802667 0 0 0.00301 0.00602 0 0 +0.00100333 0 0 0.00802667 0.00501667 0.00401333 0.00501667 0 +0.00903 0 0 0.00501667 0 0 0.00200667 0.00702333 +0.00200667 0.00200667 0.00501667 0.00401333 0 0.00200667 0.00100333 0 +0.00401333 0 0.00200667 0 0.00702333 0.00501667 0 0 +0.00602 0.00401333 0.00301 0 0.00100333 0.00702333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0 0.00100333 0.00100333 +0.00100333 0.00100333 0 0.00100333 0 0.00200667 0.00501667 0.00301 +0.00100333 0.00100333 0 0 0 0.00501667 0 0 +0.00200667 0.00802667 0.00903 0.00602 0.00100333 0 0 0 +0 0.00602 0.00200667 0 0.00401333 0 0.00501667 0 +0 0.00903 0.00100333 0.00301 0 0 0 0.00602 +0 0 0.00702333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.103343 0.761712 1.05628 1.05507 1.04118 1.04238 1.03574 1.03151 +1.03574 1.0297 1.01581 1.02547 1.02668 1.02306 1.01218 1.01883 +1.02487 1.0297 1.02487 1.02487 1.01641 1.02004 1.02245 1.01822 +1.02185 1.02668 1.01943 1.01883 1.01762 1.02366 1.01158 1.01883 +1.0146 1.02124 1.01641 1.02004 1.02124 1.01762 1.02668 1.01762 +1.0152 1.01702 1.01883 1.01702 1.01702 1.02366 1.0146 1.02245 +1.0146 1.02064 1.0146 1.02124 1.02124 1.01702 1.02004 1.01158 +1.0152 1.01641 1.05809 1.12435 1.14115 1.13975 1.14465 1.14255 +1.13975 1.1429 1.1415 1.14835 1.1149 1.03151 1.01158 1.0146 +1.01822 1.01702 1.01762 1.02004 1.02185 1.01822 1.01641 1.01943 +1.01581 1.02185 1.02185 1.01218 1.01943 1.01883 1.01762 1.01339 +1.02366 1.02064 1.01883 1.02426 1.02487 1.01762 1.01943 1.02004 +1.02487 1.02487 1.01762 1.02124 1.01883 1.02124 1.02064 1.01581 +1.01762 1.02124 1.02004 1.02124 1.0146 1.01883 1.02004 1.02245 +1.02064 1.01883 1.02004 1.0303 1.03453 1.02849 1.02849 1.03272 +1.04903 1.03816 1.04601 1.05507 1.0297 0.545813 0.02107 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00501667 0 0.00100333 0.00501667 0 +0.00200667 0 0.00301 0.00501667 0.00501667 0 0 0.00501667 +0 0 0.00100333 0 0.00501667 0.0110367 0 0.00602 +0.00100333 0.00301 0 0 0.00501667 0.00401333 0 0.00802667 +0 0.00301 0.00301 0.00301 0.00501667 0 0 0.00903 +0.00401333 0 0.00401333 0.0130433 0.00903 0 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0.00702333 0.00802667 0.00100333 0 0.00501667 0.00100333 0 +0.00301 0.00100333 0.00301 0.00200667 0.00200667 0.00702333 0.00903 0.00401333 +0.00501667 0.01204 0.00100333 0 0 0 0.00903 0 +0 0 0 0 0.00602 0.00501667 0 0 +0 0.00602 0.00501667 0 0 0.00401333 0 0.00200667 +0 0 0 0.00200667 0.00501667 0.00100333 0 0 +0 0 0 0.00802667 0 0 0 0 +0 0 0 0 0 0 0 0.158527 +0.88536 1.05809 1.04661 1.0454 1.04299 1.03634 1.02728 1.03453 +1.03151 1.03091 1.0303 1.02185 1.02547 1.0297 1.02124 1.01702 +1.01762 1.02306 1.01883 1.02487 1.01822 1.01883 1.01702 1.02849 +1.01883 1.02306 1.01943 1.02547 1.01098 1.02728 1.02366 1.01822 +1.02245 1.01943 1.01762 1.02124 1.02004 1.01822 1.02547 1.0152 +1.01822 1.02245 1.01822 1.02185 1.014 1.01822 1.02366 1.014 +1.02487 1.02064 1.02064 1.01762 1.02124 1.01943 1.01641 1.0146 +1.014 1.01943 1.01158 1.04359 1.0918 1.12715 1.1394 1.14395 +1.1401 1.145 1.12365 1.08655 1.01762 1.01279 1.01279 1.01702 +1.01762 1.01218 1.01822 1.01762 1.01762 1.01339 1.01822 1.01339 +1.014 1.02004 1.02608 1.01762 1.01822 1.02366 1.01822 1.02124 +1.02366 1.01762 1.02366 1.02185 1.01822 1.01943 1.01218 1.02064 +1.02366 1.01641 1.01883 1.01762 1.02366 1.01943 1.01279 1.01883 +1.02064 1.02608 1.02426 1.02366 1.02185 1.01762 1.02064 1.02487 +1.01943 1.02547 1.02608 1.02668 1.02426 1.02366 1.02789 1.02789 +1.03755 1.03574 1.03997 1.04661 1.05386 1.04722 0.645792 0.0561867 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00602 0.00200667 0 0.00401333 0 0 0 0 +0 0.00100333 0 0.00602 0.00501667 0 0.00802667 0 +0 0 0.00401333 0.00100333 0 0 0.00301 0 +0 0.00501667 0.00401333 0.00301 0 0 0.00802667 0.00301 +0.00301 0.00602 0.00501667 0 0 0.00100333 0.00602 0 +0 0 0 0 0 0 0 0 +0 0.00702333 0.00401333 0.00501667 0 0 0.00301 0.00301 +0 0 0 0 0 0 0 0.00602 +0.00501667 0 0.00702333 0.0110367 0.00100333 0 0 0 +0.00100333 0.00401333 0 0 0 0.00200667 0.00702333 0 +0 0 0 0 0.00401333 0 0 0 +0 0 0 0 0 0 0 0.00802667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.18662 0.93306 +1.0593 1.05144 1.04118 1.03332 1.03634 1.03212 1.02668 1.02185 +1.01943 1.02426 1.02245 1.02245 1.0146 1.03151 1.02426 1.02004 +1.01822 1.0297 1.02306 1.02849 1.02185 1.02306 1.02185 1.01218 +1.02728 1.01581 1.01641 1.02487 1.02004 1.01581 1.02306 1.01098 +1.01943 1.02245 1.02547 1.01883 1.01822 1.02064 1.01822 1.02185 +1.01702 1.02064 1.02668 1.01943 1.02064 1.01822 1.02124 1.01883 +1.02185 1.02124 1.02185 1.01883 1.01098 1.0291 1.01279 1.02004 +1.02487 1.01702 1.00916 1.01883 1.01218 1.02487 1.05809 1.06715 +1.07138 1.04782 1.0291 1.00977 1.01279 1.01641 1.01581 1.01279 +1.01641 1.02004 1.014 1.02004 1.02608 1.01339 1.02185 1.01883 +1.01883 1.02426 1.02487 1.02487 1.02004 1.01279 1.02608 1.01822 +1.00977 1.02124 1.02487 1.014 1.01641 1.0152 1.02306 1.02064 +1.01098 1.0146 1.02064 1.02487 1.01581 1.02366 1.01762 1.02004 +1.02487 1.02426 1.01883 1.0291 1.01641 1.02185 1.02608 1.02306 +1.02547 1.02245 1.02185 1.0297 1.02064 1.02547 1.02366 1.03151 +1.03272 1.03212 1.03453 1.04299 1.04238 1.05386 1.04299 0.738528 +0.0792633 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0.00401333 0 0 0.00401333 0 0 0.0130433 0.00501667 +0.00602 0.00501667 0.00802667 0.00702333 0 0 0 0 +0 0 0 0 0.00301 0 0 0.0100333 +0.0100333 0 0 0 0 0.00702333 0.00200667 0 +0.00501667 0.00903 0.00501667 0 0.00200667 0.00301 0.00802667 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0.00501667 0.00301 0.00602 0.00200667 0.00200667 0.00200667 +0.00200667 0.00200667 0 0 0 0.00501667 0 0 +0 0.00301 0.00100333 0 0.00501667 0.00301 0 0.00401333 +0 0 0.00602 0.0130433 0 0 0.00100333 0.00301 +0.00200667 0 0 0.00401333 0 0 0 0 +0 0.00301 0.00501667 0 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.208693 0.945744 1.0599 +1.05205 1.04057 1.0454 1.02608 1.02849 1.03151 1.0291 1.0291 +1.02487 1.02608 1.02245 1.02547 1.01883 1.01822 1.02789 1.02366 +1.01581 1.01641 1.02185 1.014 1.01339 0.995272 1.00131 0.995876 +1.00373 1.02124 1.01702 1.02064 1.02547 1.01581 1.01943 1.02004 +1.01702 1.01581 1.02426 1.01702 1.02366 1.02004 1.02124 1.0146 +1.02245 1.01702 1.02185 1.01762 1.01702 1.0152 1.01581 1.01883 +1.02245 1.01762 1.01762 1.02004 1.01822 1.01641 1.01279 1.01037 +1.02426 1.00796 1.02124 1.01641 1.01702 1.00916 1.014 1.01218 +1.01339 1.00977 1.01641 1.0146 1.01158 1.01581 1.01883 1.01702 +1.01943 1.02306 1.01581 1.01339 1.02185 1.02124 1.01218 1.01702 +1.02124 1.01883 1.01762 1.02487 1.01762 1.01762 1.02245 1.01822 +1.02487 1.02366 1.01218 1.01641 1.02487 1.01883 1.02306 1.02245 +1.00977 1.02245 1.02306 1.02306 1.01762 1.01883 1.02124 1.014 +1.02004 1.00856 1.02004 1.02608 1.0146 1.02245 1.01641 1.02124 +1.01943 1.01581 1.01641 1.02004 1.02306 1.03091 1.02245 1.02789 +1.02849 1.02668 1.0297 1.03332 1.03816 1.04601 1.04782 1.06292 +0.810656 0.0983267 0 0 0 0 0 0 +0 0 0 0.00200667 0.00401333 0 0 0.01204 +0.00100333 0 0 0 0.00301 0.00802667 0.00401333 0 +0 0 0 0 0 0 0 0.0100333 +0.00401333 0.00401333 0.00100333 0.00802667 0 0.00200667 0.00501667 0 +0 0 0 0.00301 0.0100333 0.00401333 0.00401333 0.00602 +0.00802667 0 0 0 0.00100333 0.00301 0 0 +0 0 0 0 0 0 0 0 +0 0.00702333 0.00200667 0 0 0.00200667 0 0.00301 +0.00100333 0.00301 0.00802667 0.0100333 0.00200667 0 0.00702333 0.00501667 +0 0 0.00301 0.00501667 0 0 0.00401333 0.00301 +0.00301 0 0 0.00301 0.0110367 0.00401333 0 0 +0 0.00903 0 0.00301 0 0.00903 0.0140467 0.00200667 +0.00100333 0 0 0 0.00200667 0 0 0 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0.202673 0.95722 1.0599 1.05386 +1.0442 1.04178 1.03634 1.02849 1.01943 1.02728 1.03091 1.02124 +1.02124 1.02124 1.01822 1.02426 1.01762 1.01822 1.0152 1.0297 +1.02185 1.00735 1.00131 0.985608 0.989836 0.991648 0.99346 0.995272 +0.99346 0.991648 1.00675 1.01339 1.02306 1.02849 1.01943 1.02004 +1.0146 1.01581 1.01702 1.02306 1.01641 1.0146 1.0152 1.02487 +1.01822 1.02608 1.01943 1.02064 1.02245 1.02124 1.01339 1.01581 +1.02306 1.01339 1.0152 1.01822 1.01641 1.01943 1.01702 1.0146 +1.02004 1.00977 1.02004 1.01279 1.02064 1.01098 1.01037 1.01641 +1.01581 1.01218 1.01581 1.01762 1.0146 1.02185 1.01822 1.02124 +1.0152 1.02245 1.0146 1.01581 1.02004 1.02004 1.01822 1.01883 +1.0152 1.01098 1.02124 1.01158 1.02547 1.02064 1.01762 1.014 +1.02124 1.02124 1.02004 1.01822 1.01581 1.01702 1.02004 1.02124 +1.01762 1.02064 1.02124 1.02245 1.01037 1.01218 1.0001 0.9995 +0.995272 0.99648 0.995272 0.994668 1.00494 1.01762 1.02064 1.02547 +1.01822 1.02004 1.01641 1.01943 1.02426 1.02547 1.0152 1.02004 +1.02245 1.02728 1.0291 1.0297 1.0303 1.03755 1.04661 1.05144 +1.06232 0.804216 0.0923067 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00200667 +0 0 0.00602 0 0 0.00301 0 0 +0 0 0 0 0.00200667 0 0.00501667 0.00401333 +0 0 0.00702333 0.00100333 0.00401333 0 0 0 +0.00301 0.0100333 0.00100333 0 0 0 0 0 +0 0 0 0 0.00200667 0.00401333 0.00702333 0.00802667 +0 0 0 0 0 0 0 0 +0.00602 0.00602 0.00602 0.00602 0.00200667 0.00401333 0 0.00200667 +0.00301 0 0 0 0 0.00301 0 0 +0 0 0 0 0 0 0 0 +0.00702333 0.00602 0.00501667 0 0 0 0.00301 0.00401333 +0.00100333 0 0.00100333 0 0.0110367 0 0.00100333 0 +0.00301 0.00301 0 0 0 0.00200667 0 0 +0 0.00301 0 0 0 0 0 0 +0 0 0 0.175583 0.945744 1.06292 1.04903 1.04601 +1.04118 1.03514 1.03755 1.02668 1.02728 1.01883 1.01883 1.02185 +1.01943 1.02608 1.02426 1.01822 1.02124 1.02608 1.02064 1.01641 +1.01098 0.997084 0.99346 0.989836 0.988628 0.99346 0.988024 0.988628 +0.995876 0.98742 0.989836 1.00494 1.01279 1.01641 1.02124 1.01883 +1.02608 1.02004 1.01702 1.01702 1.0152 1.02547 1.02245 1.02124 +1.02064 1.02366 1.01943 1.02306 1.02789 1.02306 1.01762 1.01702 +1.02124 1.02426 1.02245 1.01762 1.0146 1.01702 1.0146 1.0291 +1.01279 1.01279 1.01581 1.014 1.01339 1.0146 1.01581 1.01037 +1.01762 1.01218 1.01943 1.01702 1.01702 1.01581 1.01581 1.02064 +1.0152 1.01883 1.02064 1.02668 1.01702 1.0152 1.02426 1.02366 +1.0152 1.01883 1.02124 1.01702 1.02306 1.02004 1.014 1.02185 +1.02487 1.02668 1.01702 1.01762 1.01883 1.03212 1.01943 1.02185 +1.01822 1.01641 1.01762 1.0152 0.991044 0.989232 0.992252 0.994668 +0.99044 0.989232 0.985608 0.992252 0.985608 0.997084 1.00675 1.01702 +1.01943 1.02306 1.0146 1.02185 1.02124 1.01641 1.01581 1.02487 +1.02185 1.03091 1.02064 1.02789 1.03453 1.03212 1.04359 1.04359 +1.04782 1.05567 0.802928 0.07525 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0.00301 0.00100333 0 0.00100333 +0 0.00702333 0 0 0 0.00802667 0.00301 0 +0 0.00401333 0.00301 0 0 0 0.00100333 0.00200667 +0.00200667 0.00100333 0 0.00802667 0.00602 0.00301 0.00702333 0.00200667 +0.00501667 0.00802667 0.0130433 0.0130433 0.01204 0.00501667 0.00301 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00100333 0 0 0 0 0 +0.00401333 0.00802667 0.00401333 0 0 0 0.0110367 0.00903 +0.00401333 0.00401333 0.00501667 0.00401333 0.00602 0.00602 0 0 +0 0 0.00200667 0.00501667 0.00100333 0.00702333 0 0 +0.00401333 0.00602 0 0 0.00602 0.0130433 0.00200667 0.00200667 +0 0 0.00702333 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.115383 0.913696 1.0605 1.04782 1.04722 1.0297 +1.03816 1.02789 1.0303 1.02487 1.02547 1.02487 1.02547 1.02124 +1.02366 1.01822 1.02245 1.02064 1.01943 1.02185 1.01943 1.00494 +0.989836 0.991648 0.991648 0.989232 0.988628 0.99648 0.988628 0.988024 +0.988628 0.989232 0.99044 0.989232 1.00373 1.01943 1.02064 1.01883 +1.0146 1.02366 1.01822 1.03091 1.01943 1.01158 1.02487 1.01641 +1.02124 1.01822 1.02547 1.01581 1.02366 1.01822 1.01702 1.0152 +1.01943 1.01762 1.02245 1.01641 1.01943 1.02668 1.01339 1.02608 +1.01279 1.01762 1.01943 1.0146 1.00916 1.02366 1.0146 1.014 +1.01279 1.01762 1.02426 1.01279 1.02124 1.01158 1.0152 1.02124 +1.01943 1.01098 1.02124 1.02064 1.01762 1.01218 1.02789 1.02124 +1.02124 1.02185 1.01641 1.02004 1.02185 1.01098 1.02004 1.01581 +1.02124 1.01702 1.02728 1.01279 1.0291 1.01339 1.01641 1.01641 +1.01943 1.01883 1.01641 0.997688 0.988628 0.99044 0.989836 0.994668 +0.991648 0.99346 0.988628 0.99346 0.994668 0.989232 0.989232 1.01098 +1.01943 1.02004 1.01883 1.02487 1.02547 1.02426 1.02245 1.02366 +1.02124 1.01943 1.02306 1.02487 1.0297 1.03453 1.04178 1.03634 +1.04238 1.05205 1.05507 0.721784 0.04515 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00501667 0.00602 0 0.00602 0.00200667 0 0 +0.0110367 0 0 0.0110367 0.00702333 0 0 0 +0.00501667 0.00401333 0 0 0.00501667 0.0170567 0.00301 0.00100333 +0.00200667 0 0 0 0 0.00200667 0.00100333 0.00200667 +0.00301 0.00501667 0.00100333 0 0 0 0.00100333 0.00802667 +0 0 0 0 0 0 0 0 +0.00602 0 0 0.00200667 0.00602 0.00602 0.00100333 0 +0 0 0.00100333 0.00301 0 0 0 0 +0.00200667 0.00200667 0 0.00100333 0.00200667 0.00100333 0.0100333 0.00301 +0 0 0 0.00702333 0.00602 0.00501667 0.00401333 0.00301 +0.00100333 0 0.00501667 0.00702333 0 0 0.00401333 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0551833 0.791336 1.0593 1.05507 1.04178 1.03816 1.03634 +1.03091 1.02789 1.0291 1.02668 1.02487 1.02124 1.01943 1.02668 +1.01218 1.02728 1.01581 1.01943 1.01279 1.02064 1.02064 0.997688 +0.99044 0.985608 0.992252 0.988024 0.985004 0.988628 0.994668 0.99648 +0.988628 0.995876 0.988628 0.988024 0.994668 1.01098 1.01822 1.0146 +1.02064 1.02366 1.01641 1.01279 1.01883 1.014 1.0152 1.01822 +1.02306 1.01037 1.02306 1.02064 1.01581 1.02064 1.0146 1.01098 +1.00916 1.01339 1.01943 1.01158 1.01037 1.01158 1.01279 1.01339 +1.01702 1.02366 1.02608 1.00916 1.01279 1.02185 1.02004 1.02185 +1.0152 1.02124 1.01218 1.0146 1.01641 1.0001 0.995876 1.00735 +1.00675 1.00977 1.00675 1.01883 1.02064 1.01581 1.02245 1.01762 +1.01822 1.01641 1.02124 1.01883 1.01098 1.01943 1.02064 1.0152 +1.01702 1.03151 1.01822 1.02245 1.0152 1.02004 1.02426 1.01883 +1.02366 1.02185 0.998292 0.992856 0.991648 0.99346 0.991648 0.995876 +0.99044 0.995876 0.99346 0.988628 0.995876 0.985608 0.995876 0.995876 +1.01218 1.02728 1.0152 1.02004 1.01762 1.02064 1.02124 1.02004 +1.014 1.02185 1.02366 1.02728 1.03212 1.02789 1.02487 1.03393 +1.03936 1.04057 1.04963 1.05446 0.617456 0.0140467 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00301 0 0 0 0 +0 0 0.00702333 0 0 0 0.00301 0.00903 +0 0.00100333 0 0.00702333 0.00802667 0 0 0.00301 +0 0.00802667 0.00501667 0.00501667 0.00200667 0 0.00401333 0.00401333 +0.00401333 0 0.00301 0.00100333 0 0.00401333 0.00501667 0 +0.00501667 0 0 0 0 0 0 0.0100333 +0.00602 0.00200667 0.00501667 0.00100333 0.00100333 0.00401333 0.00501667 0.0100333 +0.00401333 0 0 0 0.00301 0.00702333 0 0 +0 0 0 0 0 0 0 0.00200667 +0.00802667 0 0 0 0 0.00802667 0.00802667 0.00100333 +0 0.00301 0 0.00301 0.0110367 0 0 0 +0 0.00301 0 0 0 0 0 0 +0.00100333 0.00100333 0 0 0 0 0 0 +0.00602 0.603288 1.05386 1.05507 1.04118 1.03091 1.03332 1.02547 +1.02849 1.02547 1.01883 1.0291 1.02185 1.02426 1.02185 1.02004 +1.02064 1.02487 1.02124 1.01943 1.02668 1.0146 1.00916 0.995876 +0.997084 0.995876 0.994668 0.998292 0.986816 0.994064 0.988024 0.995876 +0.99346 0.998292 0.995272 0.991648 0.988024 1.00192 1.02004 1.02185 +1.01702 1.01822 1.02245 1.02366 1.01762 1.02185 1.02004 1.014 +1.01822 1.014 1.01762 1.02366 1.01883 1.02728 1.01822 1.01883 +1.01218 1.01279 1.01581 1.0152 1.01218 1.01943 1.02064 1.014 +1.01943 1.02728 1.01883 1.02064 1.01762 1.02004 1.02124 1.02004 +1.01762 1.02124 1.00977 1.02608 1.01762 1.02004 1.02306 1.02004 +1.02124 1.01883 1.00796 0.992252 1.00071 1.01762 1.02004 1.02185 +1.02366 1.02124 1.02426 1.01279 1.01218 1.02728 1.02728 1.0146 +1.01762 1.01762 1.0146 1.02426 1.01641 1.02064 1.02004 1.01762 +1.0152 1.01279 0.992252 0.988628 0.995876 0.992856 0.995272 0.986816 +0.991044 0.995876 0.994064 0.994064 0.99044 0.992856 0.9995 0.988628 +1.00071 1.01702 1.01581 1.0152 1.0146 1.0297 1.02185 1.01702 +1.02004 1.02849 1.02547 1.01943 1.02668 1.02004 1.02547 1.0303 +1.03151 1.03574 1.04903 1.05507 1.03755 0.474577 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.0130433 +0.00100333 0.00602 0.00100333 0 0.0110367 0.00501667 0.00301 0 +0.00301 0 0 0.00301 0 0 0.00602 0 +0 0 0 0 0 0.00100333 0 0 +0 0 0 0 0 0 0 0.00200667 +0.00802667 0 0 0 0 0 0 0.00702333 +0.0100333 0.01204 0.00401333 0.00100333 0 0 0.00200667 0.00200667 +0.00602 0.00702333 0.00100333 0.00501667 0.00200667 0 0.00501667 0 +0.00301 0.00401333 0.00100333 0.00301 0.00100333 0 0 0 +0.00200667 0.00501667 0 0.00200667 0 0 0 0.00401333 +0 0.00200667 0.00100333 0 0 0 0 0 +0 0 0.00100333 0.00401333 0 0 0.00100333 0 +0 0 0 0 0 0 0 0 +0.413373 1.04178 1.05446 1.04842 1.03816 1.03876 1.02728 1.02728 +1.01943 1.02426 1.02185 1.02245 1.02426 1.02487 1.02004 1.02004 +1.0152 1.02668 1.02789 1.02064 1.01581 1.02004 1.0001 0.994668 +0.991648 0.99648 0.989232 0.998292 0.99346 0.988628 0.9995 0.986212 +0.988628 0.989836 0.989232 0.99648 0.99648 0.9995 1.01702 1.02789 +1.0152 1.0146 1.02185 1.01822 1.02004 1.01702 1.02185 1.01943 +1.01702 1.01762 1.01581 1.0146 1.00675 1.02185 1.0146 1.01339 +1.01762 1.02004 1.01641 1.01883 1.02124 1.02426 1.02487 1.01762 +1.02306 1.0146 1.01822 1.02668 1.01702 1.0146 1.01943 1.01943 +1.02245 1.02185 1.01883 1.02185 1.02185 1.01581 1.01641 1.01641 +1.02185 1.01762 1.01822 1.01339 1.02366 1.0152 1.0146 1.01279 +1.02004 1.01641 1.0152 1.0297 1.02245 1.02185 1.0146 1.014 +1.02185 1.02124 1.01762 1.0146 1.01581 1.02668 1.01702 1.02124 +1.02306 1.00977 0.985004 0.99648 0.995272 0.988628 0.99044 0.991648 +0.995272 0.986212 0.995272 0.991648 0.995876 0.994668 0.988024 0.991648 +0.989232 1.01581 1.00856 1.02004 1.01762 1.02185 1.01218 1.02789 +1.02426 1.02185 1.01822 1.02124 1.0297 1.02547 1.02547 1.03212 +1.02849 1.04118 1.03272 1.05144 1.05869 1.014 0.299997 0 +0 0 0 0 0 0 0 0 +0 0 0.00301 0.00802667 0 0 0 0 +0 0.00100333 0 0.00401333 0 0 0 0 +0 0 0.00702333 0.00301 0 0 0 0 +0 0 0.00301 0.00100333 0.00100333 0.00200667 0.00602 0.00200667 +0 0 0 0.00401333 0.00200667 0.00702333 0.0110367 0.0130433 +0.00100333 0 0 0 0 0 0 0.00903 +0.00200667 0.00401333 0.01204 0.0110367 0.01204 0.00802667 0 0 +0 0 0 0.00100333 0.00602 0.00301 0 0 +0 0.00301 0.00501667 0.00200667 0 0.00301 0.00200667 0.00100333 +0 0 0.00200667 0 0 0 0.00200667 0 +0.00602 0 0.00200667 0 0 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.214713 +0.991648 1.05628 1.04057 1.03936 1.03212 1.04057 1.03393 1.03393 +1.02728 1.02487 1.02245 1.014 1.02608 1.01883 1.02728 1.02306 +1.01641 1.014 1.01883 1.02185 1.01883 1.0146 0.992856 0.991044 +0.989232 0.99044 0.99044 0.992252 0.998896 0.994064 0.992252 0.991648 +0.985004 0.997084 0.995876 0.99648 0.988024 1.00071 1.02004 1.02185 +1.02728 1.0152 1.0146 1.02124 1.0303 1.02245 1.01702 1.02426 +1.0146 1.02064 1.01158 1.01883 1.00312 1.01762 1.01883 1.01218 +1.02185 1.01822 1.02306 1.00916 1.02004 1.01943 1.02306 1.02426 +1.02064 1.01098 1.02064 1.02487 1.0146 1.02124 1.02547 1.02185 +1.01822 1.02245 1.01581 1.01943 1.02064 1.02064 1.0146 1.02064 +1.02185 1.01158 1.01822 1.02245 1.01641 1.01883 1.02728 1.01943 +1.01943 1.00192 1.00735 1.01883 1.02124 1.01339 1.01883 1.02004 +1.02124 1.02366 1.01641 1.02426 1.0303 1.02064 1.01641 1.02064 +1.02487 0.994064 0.995876 0.994668 0.988024 0.994668 0.99044 0.997084 +0.991648 0.98742 0.99648 0.99346 0.99648 0.99346 0.989232 0.991044 +0.988628 1.01279 1.02064 1.03574 1.01279 1.014 1.02547 1.01822 +1.01218 1.02426 1.02547 1.02487 1.01883 1.01581 1.02728 1.02487 +1.02728 1.02789 1.03453 1.0448 1.04359 1.05144 0.9542 0.152507 +0 0 0 0 0 0 0 0 +0 0 0.00301 0 0.00100333 0.00301 0.00100333 0 +0.00100333 0 0 0 0 0 0 0.00401333 +0 0 0 0 0 0 0 0.00401333 +0.0170567 0.0110367 0.00602 0.0100333 0.0140467 0.00903 0 0.00301 +0 0.00401333 0.00200667 0 0.00602 0.00602 0.00200667 0 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00301 0.00200667 +0.00401333 0 0.00100333 0 0.00401333 0.00200667 0.00903 0.00401333 +0 0 0 0 0 0 0 0 +0.00301 0.00301 0 0.00200667 0.00401333 0.00401333 0.00200667 0 +0.00200667 0 0.00100333 0.0130433 0.00401333 0.00200667 0 0 +0 0 0 0 0 0.00100333 0 0 +0 0 0 0 0 0 0.0591967 0.868616 +1.06352 1.05567 1.03997 1.03151 1.02849 1.02487 1.0297 1.0291 +1.02004 1.02245 1.02668 1.02004 1.02245 1.02064 1.02306 1.01822 +1.02426 1.02366 1.02306 1.02064 1.02366 1.02124 0.997688 0.989232 +0.99346 0.99346 0.986212 0.992252 0.991044 0.995272 0.992252 0.99044 +0.99346 0.988024 0.991648 0.995876 0.989836 0.992856 1.02124 1.01218 +1.01943 1.02366 1.02306 1.02245 1.02185 1.02306 1.01883 1.02004 +1.02487 1.02124 1.02004 1.00735 1.00916 1.02064 1.01762 1.01641 +1.02366 1.02124 1.0291 1.014 1.01702 1.01581 1.01822 1.02064 +1.01943 1.01098 1.01641 1.0146 1.02185 1.01702 1.0152 1.02608 +1.01702 1.01762 1.02245 1.01158 1.02245 1.01702 1.0152 1.02004 +1.01702 1.01822 1.01641 1.02668 1.0146 1.02426 1.00916 1.01641 +1.02124 1.0152 1.02064 1.01098 1.00977 1.01158 1.02245 1.02185 +1.0146 1.0146 1.014 1.02064 1.01762 1.0152 1.01762 1.02426 +1.014 1.00312 0.991044 0.98742 0.986816 0.992252 0.991044 0.992252 +0.985608 0.994064 0.989836 0.989836 0.994064 0.988628 0.991648 0.99648 +0.981984 1.01098 1.01883 1.014 1.00433 1.02789 1.02245 1.01339 +1.02124 1.02124 1.01883 1.01339 1.01702 1.02185 1.02547 1.01822 +1.02789 1.03574 1.03272 1.0303 1.03997 1.05326 1.05809 0.772016 +0.0290967 0 0 0 0 0 0 0 +0 0.00702333 0.00702333 0 0 0 0.00200667 0 +0 0 0 0.00903 0.00802667 0 0 0 +0 0.00401333 0 0.00200667 0.00602 0.00100333 0.00401333 0.01505 +0.00602 0.00602 0.00903 0.0130433 0 0 0.00200667 0 +0.00401333 0.00501667 0.00301 0.00602 0.00501667 0.00100333 0.00100333 0 +0 0 0 0 0 0 0 0.00200667 +0 0.00100333 0.00100333 0.00301 0 0 0.00401333 0.00401333 +0 0 0 0.00301 0 0 0 0.00301 +0.00903 0.00602 0.00301 0.00401333 0.00702333 0.00903 0.00501667 0.00100333 +0 0 0 0 0 0 0 0 +0 0.00702333 0 0 0 0.00301 0.00501667 0.00602 +0.00100333 0 0 0.00903 0 0 0 0 +0 0 0 0 0 0 0.536783 1.05265 +1.04842 1.04359 1.04178 1.03332 1.03332 1.02064 1.02004 1.02426 +1.02608 1.02245 1.0152 1.02185 1.01822 1.01883 1.02004 1.02245 +1.01883 1.01762 1.02124 1.02728 1.01581 1.02004 1.00192 0.991648 +0.989232 0.997688 0.992252 0.992252 0.992856 0.997084 0.998896 0.983192 +0.995876 0.986816 0.989836 0.997688 0.989232 0.991648 1.02426 1.02064 +1.02124 1.0152 1.01581 1.02124 1.01822 1.02487 1.02487 1.01702 +1.01822 1.02245 1.01279 1.02487 1.02366 1.01943 1.01822 1.02547 +1.01822 1.02064 1.01218 1.02608 1.01641 1.02728 1.02547 1.01822 +1.01822 1.02064 1.02608 1.01822 1.01581 1.01943 1.0146 1.02306 +1.02064 1.02185 1.02366 1.02124 1.01822 1.01822 1.0152 1.02306 +1.02245 1.0152 1.01641 1.02064 1.01641 1.01883 1.01581 1.02245 +1.00977 1.02185 1.02366 1.02064 1.0146 1.014 1.00192 1.01702 +1.02185 1.02608 1.0146 1.02668 1.01822 1.01581 1.01943 1.01943 +1.01943 0.995876 0.989836 0.991648 0.995876 0.99346 0.991044 0.99044 +0.992252 0.992856 0.994668 0.998896 0.992856 0.991648 0.991648 0.989836 +0.9995 1.014 1.01822 1.01037 1.0146 1.02366 1.0146 1.02366 +1.02185 1.0152 1.01641 1.02608 1.0297 1.02608 1.0297 1.02789 +1.02728 1.02728 1.02547 1.03453 1.03997 1.0448 1.05688 1.04359 +0.46956 0 0 0 0 0 0 0 +0 0 0 0 0 0.00501667 0 0.00301 +0 0 0.00702333 0 0 0 0 0 +0.00100333 0 0.00100333 0.00200667 0 0.00702333 0.0110367 0.00301 +0 0 0 0 0 0 0 0.00301 +0.00100333 0 0.00301 0.00602 0.00200667 0 0 0 +0.0100333 0.01204 0 0 0 0 0.01505 0.00903 +0.01204 0.00802667 0 0.00200667 0.00702333 0.00200667 0 0.00501667 +0.00702333 0.00501667 0.00200667 0 0.00602 0 0 0 +0 0.00100333 0 0 0 0.00501667 0.00301 0.00501667 +0.00200667 0 0.00401333 0.00301 0.00200667 0.00802667 0.00501667 0.0110367 +0 0 0.0140467 0.00200667 0 0 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0.233777 1.00916 1.05869 +1.04903 1.03936 1.03634 1.03212 1.03091 1.02728 1.02124 1.02004 +1.01641 1.02366 1.02426 1.01641 1.02064 1.0152 1.01943 1.01641 +1.02608 1.01702 1.014 1.02004 1.02366 1.01339 1.01158 0.988024 +0.994668 0.988628 0.991044 0.99044 0.98742 0.986212 0.995876 0.989232 +0.991044 0.994064 1.0001 0.982588 0.985608 1.00192 1.02608 1.02064 +1.02185 1.02064 1.0146 1.01158 1.014 1.02245 1.01641 1.0146 +1.01943 1.02064 1.01943 1.02245 1.02185 1.01883 1.01218 1.02608 +1.01702 1.02185 1.01883 1.02064 1.01762 1.02064 1.01822 1.02004 +1.02185 1.02124 1.02306 1.02004 1.02426 1.02124 1.01641 1.02245 +1.01762 1.0146 1.02245 1.03091 1.02608 1.02245 1.01883 1.01581 +1.01702 1.02064 1.01822 1.01943 1.02185 1.02789 1.02608 1.01218 +1.02366 1.01581 1.01581 1.01943 1.01883 1.01943 1.00614 1.00071 +1.02064 1.0146 1.01943 1.014 1.02124 1.01943 1.02487 1.02426 +1.02426 1.00252 0.989836 0.99346 0.994064 0.98742 0.991648 0.992252 +0.992856 0.992856 1.0001 0.988628 0.9995 0.99044 0.994064 1.00071 +0.992252 1.00856 1.02306 1.0152 1.01641 1.02185 1.01641 1.01943 +1.02064 1.00796 1.0291 1.02426 1.02185 1.02306 1.01883 1.02064 +1.02124 1.02245 1.02849 1.02728 1.02849 1.04359 1.04178 1.05628 +0.998292 0.208693 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00802667 0 0 0.00200667 0.00401333 0.00903 0.00501667 +0.00602 0.00501667 0.00100333 0.00501667 0.00501667 0.00802667 0.00702333 0 +0.00200667 0.00702333 0 0.00501667 0.00301 0 0.0100333 0 +0 0.00200667 0.00602 0.00501667 0 0.00200667 0.00702333 0.0100333 +0.00602 0.00602 0 0 0 0 0.00401333 0 +0 0 0.00501667 0.00301 0 0.00301 0 0 +0 0.00200667 0.00602 0.00702333 0 0.00401333 0.00602 0.00802667 +0 0 0.00301 0 0 0 0.00602 0.00802667 +0.0100333 0.00501667 0 0 0.00301 0 0.00200667 0 +0.00200667 0 0 0.00802667 0.00802667 0.00501667 0.00200667 0 +0 0.00802667 0 0 0 0 0 0 +0 0 0 0 0.0351167 0.80808 1.05386 1.03816 +1.03876 1.0303 1.02608 1.0291 1.02547 1.0291 1.02366 1.02185 +1.014 1.01702 1.02366 1.02366 1.01943 1.014 1.01883 1.01822 +1.02668 1.02728 1.02185 1.0152 1.02004 1.02185 1.00494 0.99346 +0.994064 0.99648 0.991044 0.992856 1.00373 0.99044 0.985004 1.00071 +0.989232 0.983796 0.998292 0.994064 0.989232 1.00916 1.02004 1.02487 +1.01943 1.0303 1.02789 1.02004 1.01641 0.989232 1.01218 1.01822 +1.01883 1.01581 1.01641 1.01339 1.01943 1.01822 1.01581 1.0146 +1.02245 1.02064 1.01822 1.02245 1.01641 1.02124 1.01641 1.01581 +1.02124 1.02185 1.01762 1.02185 1.02064 1.01822 1.01641 1.00735 +1.01702 1.00916 1.01339 1.01943 1.02124 1.02245 1.02306 1.02185 +1.01218 1.02306 1.01943 1.02124 1.0146 1.02185 1.02366 1.02487 +1.02064 1.01098 1.01943 1.02608 1.02004 1.01943 1.02306 1.01943 +1.00192 0.99648 1.01822 1.01883 1.02245 1.01822 1.02245 1.01883 +1.01158 1.01037 0.99044 0.988024 0.991044 0.994668 0.991648 0.997084 +0.99044 0.991044 0.994064 0.991044 0.991648 0.989836 0.986212 0.988628 +0.994668 1.0146 1.02366 1.01279 1.02185 1.02245 1.02306 1.01762 +1.02124 1.02668 1.02366 1.02185 1.01822 1.00796 1.01943 1.01702 +1.02124 1.02547 1.01943 1.02185 1.0303 1.03393 1.04118 1.04842 +1.05446 0.791336 0.0311033 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0.00602 0.00501667 0 0 0.00401333 0.0130433 +0.00200667 0 0.00702333 0.00100333 0.00200667 0 0 0 +0 0 0.00301 0 0 0.00100333 0 0 +0.00200667 0.00602 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00200667 +0.00602 0.00301 0 0.00200667 0.00702333 0 0.0110367 0.01204 +0.00301 0 0 0.00100333 0.00702333 0.00200667 0 0 +0.00401333 0.00100333 0 0.00301 0.00200667 0 0 0 +0.00100333 0.00401333 0.00301 0 0.00100333 0.00602 0.00301 0.00702333 +0.00401333 0 0.00802667 0.00301 0.00200667 0 0.00200667 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0.420397 1.04903 1.05567 1.0448 +1.03453 1.03453 1.02608 1.02064 1.02668 1.02306 1.02426 1.02487 +1.02547 1.0152 1.01037 1.01581 1.02245 1.0146 1.01822 1.00856 +1.01641 1.02185 1.01883 1.02185 1.0152 1.02245 1.02245 0.9995 +0.991044 0.991648 0.99346 0.991648 0.998896 0.995272 0.992252 0.99346 +0.9995 0.988628 0.983192 0.994668 1.00071 1.0152 1.02245 1.02789 +1.01702 1.01702 1.02185 1.0146 1.00373 1.01279 1.02245 1.01883 +1.02064 1.02547 1.01943 1.01702 1.02124 1.02064 1.01943 1.01822 +1.0146 1.01883 1.01702 1.02426 1.01822 1.01883 1.01702 1.02366 +1.02004 1.02064 1.02004 1.02849 1.01641 0.998292 0.974736 0.961448 +0.971716 0.970508 0.969904 0.986816 1.00312 1.0146 1.02245 1.02487 +1.01702 1.02124 1.02185 1.0146 1.01883 1.01218 1.0152 1.01822 +1.01037 1.01641 1.01762 1.02004 1.014 1.02426 1.02789 1.02245 +1.02849 1.02064 1.00494 1.00796 1.02789 1.01762 1.02487 1.01762 +1.01822 1.02426 1.00433 0.98742 0.989836 0.991044 0.997084 0.986212 +0.988024 0.99346 0.989836 0.994668 0.989836 0.986212 0.998896 0.99648 +1.00977 1.02185 1.02185 1.02366 1.02306 1.02124 1.01218 1.01883 +1.02366 1.01762 1.02064 1.02245 1.01943 1.02608 1.02426 1.02547 +1.02064 1.01883 1.02487 1.02426 1.0291 1.03332 1.03997 1.0454 +1.05205 1.0442 0.4214 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0 0 0 0.00702333 0.00501667 0 +0 0 0 0 0 0 0.00401333 0 +0 0.00301 0 0 0 0 0.00100333 0.0100333 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00702333 0.00602 +0.00702333 0.00602 0.0110367 0 0 0 0 0.00401333 +0.00602 0.00301 0 0 0 0.00100333 0.00602 0.0100333 +0 0 0.00401333 0.00100333 0.00100333 0 0.00200667 0 +0 0.00401333 0.00301 0 0 0 0 0.00100333 +0.00301 0.00200667 0 0 0 0 0 0 +0 0.00401333 0.00100333 0 0 0 0 0 +0 0 0 0.0973233 0.950576 1.05748 1.04903 1.04178 +1.0291 1.03091 1.02728 1.02306 1.01581 1.02004 1.02124 1.01641 +1.01641 1.02185 1.02004 1.01581 1.02487 1.02185 1.0152 1.0152 +1.01581 1.01883 1.02306 1.02366 1.02245 1.02124 1.02004 1.01943 +0.997688 0.989836 0.992856 0.977152 0.983192 0.991044 0.992856 0.991044 +0.986212 0.994668 0.988628 0.99648 1.02306 1.0152 1.01098 1.01702 +1.02728 1.02849 1.01279 1.00675 1.02306 1.01762 1.02728 1.01702 +1.01702 1.02487 1.0146 1.01943 1.01762 1.01883 1.01702 1.02426 +1.0146 1.02487 1.01702 1.02124 1.01883 1.01279 1.01762 1.01641 +1.01883 1.01641 1.02487 1.00675 0.962656 0.968092 0.965072 0.973528 +0.959636 0.95722 0.962656 0.962656 0.961448 0.982588 1.01943 1.02547 +1.01883 1.0146 1.02245 1.02849 1.0146 1.01702 1.02366 1.02124 +1.02306 1.02064 1.01883 1.01279 1.01581 1.02124 1.01883 1.02728 +1.01883 1.01883 1.01883 1.0001 0.997688 1.0146 1.01762 1.01883 +1.02064 1.0146 1.0146 0.99044 0.99044 0.992856 0.991044 0.992252 +0.995272 0.985004 1.00131 0.988024 0.997084 0.992252 0.992856 1.0001 +1.01581 1.00856 1.01943 1.01641 1.02547 1.0152 1.0146 1.01943 +1.01762 1.0152 1.02124 1.01581 1.01641 1.01158 1.01702 1.01883 +1.0146 1.01762 1.02064 1.02366 1.02366 1.03151 1.03695 1.03936 +1.04178 1.05748 0.96024 0.11739 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00301 0.00301 0 0 0 0 +0 0.00100333 0 0.00100333 0 0 0.00200667 0.00401333 +0 0 0 0.00301 0.00501667 0.00301 0.00100333 0 +0 0 0 0 0 0.00401333 0 0.00401333 +0.00501667 0.0110367 0.00401333 0 0 0 0 0 +0.00100333 0 0 0.00501667 0.00501667 0.00301 0.00401333 0 +0 0 0.00200667 0 0 0.00100333 0 0 +0.00501667 0.00301 0 0 0.00501667 0.00501667 0.00301 0.00200667 +0 0 0.00100333 0 0.00301 0 0 0 +0 0.00401333 0.00702333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.55384 1.05205 1.0454 1.03997 1.03936 +1.02608 1.03272 1.02789 1.02668 1.01943 1.02366 1.02547 1.0146 +1.02245 1.01641 1.01943 1.01641 1.02245 1.01581 1.03453 1.01581 +1.01822 1.02245 1.02124 1.02366 1.02426 1.02426 1.01943 1.01641 +1.02124 0.994668 0.99346 0.994668 0.988628 0.991044 0.997084 0.994668 +0.99346 0.99346 0.997688 1.00977 1.02608 1.0291 1.02004 1.02004 +1.01641 1.00856 1.01581 1.02064 1.02124 1.01641 1.01339 1.01581 +1.01822 1.03091 1.02064 1.01641 1.02728 1.02245 1.02064 1.0146 +1.01822 1.0303 1.02185 1.02668 1.01641 1.0146 1.02306 1.02366 +1.02789 1.01762 1.00433 0.964468 0.959032 0.967488 0.9542 0.968092 +0.968092 0.962052 0.962656 0.971716 0.96326 0.964468 0.980776 1.02366 +1.01762 1.02668 1.02487 1.014 1.01762 1.02245 1.02185 1.01822 +1.02004 1.02728 1.02004 1.02366 1.0146 1.03151 1.02004 1.01822 +1.0152 1.0152 1.02728 1.02185 1.00796 1.00131 1.02185 1.02306 +1.0297 1.02306 1.02487 1.01098 1.00071 0.98742 0.997084 0.988024 +0.98742 0.997688 0.988628 0.99648 0.995272 0.991044 1.00131 1.00856 +1.02366 1.01883 1.02668 1.02185 1.01883 1.01581 1.0146 1.02245 +1.02668 1.01943 1.02185 1.01641 1.0152 1.01279 1.02185 1.01702 +1.01822 1.02124 1.01641 1.02487 1.0291 1.03453 1.03574 1.03634 +1.04057 1.05205 1.06232 0.584943 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00903 0.0140467 0 0 0.00200667 0.00301 0 0 +0.00802667 0 0 0 0 0.00702333 0 0 +0.00200667 0.00501667 0.00602 0.00100333 0 0 0.00100333 0.00802667 +0.00301 0.00301 0 0.0110367 0.00903 0.00602 0 0 +0.0100333 0.0110367 0.00702333 0 0 0 0.00401333 0 +0 0 0 0 0 0 0 0.00301 +0 0 0 0.00401333 0.00301 0 0.00200667 0 +0 0 0.00602 0 0 0.00301 0 0.00100333 +0 0 0.00100333 0.00802667 0 0.00200667 0.00501667 0.00200667 +0 0.00301 0.00200667 0.00702333 0.0100333 0.00802667 0.00301 0.00100333 +0.00100333 0 0 0 0 0 0 0 +0 0 0.154513 0.986816 1.05809 1.04722 1.04238 1.03272 +1.0303 1.0291 1.0297 1.02608 1.02366 1.01762 1.02185 1.02124 +1.02064 1.02185 1.01943 1.01641 1.02004 1.01158 1.01822 1.02426 +1.01339 1.00977 1.01762 1.01581 1.01581 1.02547 1.02306 1.02004 +1.02547 1.02124 1.01098 0.997084 0.989836 0.99044 0.988628 0.988628 +0.989836 1.00614 1.01098 1.0146 1.0146 1.02487 1.02426 1.014 +1.00071 1.01218 1.0152 1.01581 1.0152 1.02668 1.02487 1.02306 +1.02004 1.01702 1.02004 1.01279 1.02185 1.02547 1.014 1.02487 +1.02366 1.02185 1.01943 1.01339 1.01641 1.01581 1.01822 1.01641 +1.01037 1.00856 0.975944 0.962052 0.962656 0.96628 0.958428 0.965072 +0.965676 0.9693 0.970508 0.952388 0.96024 0.960844 0.961448 0.98742 +1.03332 1.01581 1.0152 1.02064 1.02306 1.0146 1.0146 1.01762 +1.02789 1.02608 1.01339 1.014 1.01943 1.01943 1.01822 1.01822 +1.0152 1.02064 1.03151 1.01581 1.02245 1.01641 0.997084 1.01883 +1.01943 1.02064 1.02366 1.01339 1.00796 1.00433 0.992252 0.99346 +0.995272 0.989836 1.0001 0.99044 0.991044 1.00071 1.00916 1.01762 +1.02608 1.02004 1.01641 1.01702 1.01822 1.01279 1.0146 1.01581 +1.01581 1.01098 1.0152 1.01702 1.02185 1.02426 1.02608 1.01822 +1.02185 1.01943 1.02849 1.02728 1.02668 1.02668 1.02789 1.02608 +1.04057 1.04661 1.05507 0.995876 0.160533 0 0 0 +0 0 0 0 0 0 0.00100333 0.00200667 +0.00200667 0 0.00100333 0.00802667 0 0 0 0 +0 0 0 0 0.00100333 0 0 0 +0 0 0 0 0.00501667 0.00602 0.00200667 0 +0 0.00200667 0.0130433 0.00100333 0 0.00200667 0.0100333 0.01204 +0.00401333 0 0.00200667 0 0 0.00602 0.00702333 0.01204 +0.00802667 0.00501667 0.00401333 0.00602 0.0130433 0.00401333 0 0 +0.00702333 0.00401333 0.00301 0.00100333 0 0 0 0.00100333 +0 0 0 0.00501667 0 0 0 0.00301 +0.00602 0 0 0 0.01204 0 0 0 +0.00200667 0 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.599993 1.05205 1.04178 1.03695 1.03393 1.03332 +1.01883 1.02245 1.02849 1.02185 1.02366 1.02185 1.02547 1.0152 +1.02064 1.02124 1.01883 1.01822 1.01943 1.01702 1.01943 1.01943 +1.02306 1.03091 1.01883 1.01943 1.01822 1.01581 1.01822 1.01943 +1.02185 1.02487 1.02608 1.01762 1.01702 1.00977 1.01279 1.00796 +1.0297 1.02426 1.02426 1.02124 1.02004 1.01822 1.01218 0.99044 +1.01762 1.02245 1.01762 1.02306 1.02306 1.01581 1.01822 1.014 +1.01641 1.0152 1.02124 1.02668 1.01702 1.02245 1.014 1.01279 +1.01943 1.01762 1.01762 1.02004 1.01822 1.02728 1.02245 1.01581 +1.02547 0.992252 0.968696 0.965676 0.965072 0.960844 0.968092 0.971112 +0.959032 0.962656 0.9693 0.962656 0.9693 0.967488 0.966884 0.970508 +1.02245 1.02487 1.02366 1.02366 1.01883 1.02004 1.0146 1.02245 +1.02185 1.01883 1.01822 1.01883 1.01641 1.01883 1.01098 1.02064 +1.02004 1.01339 1.01943 1.01883 1.02306 1.00916 1.01158 0.986816 +1.01581 1.02487 1.02306 1.01158 1.02426 1.01883 1.01762 1.01339 +0.992856 1.00071 1.00131 1.00312 1.00856 1.02306 1.01883 1.01641 +1.01581 1.01581 1.01641 1.0146 1.02366 1.02185 1.0297 1.01702 +1.01762 1.0146 1.01762 1.01762 1.01822 1.01339 1.02004 1.0152 +1.02185 1.01883 1.01883 1.02124 1.02185 1.02185 1.02004 1.02849 +1.03936 1.03936 1.04842 1.05809 0.645792 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0 0 0.00301 0.00802667 0 +0.00100333 0.00200667 0.00802667 0.01204 0.00602 0.00200667 0.00100333 0.00501667 +0.00702333 0.00602 0 0.00200667 0 0 0 0.00501667 +0.00301 0.00100333 0 0 0.00702333 0.00702333 0 0 +0 0 0 0 0 0.00301 0.00401333 0.00100333 +0.00100333 0.00501667 0.00702333 0 0 0.00702333 0.00602 0 +0 0 0.00200667 0.00200667 0.00401333 0.00802667 0.00100333 0 +0.00200667 0.00602 0 0 0 0.00702333 0.00100333 0 +0 0.00200667 0 0 0 0.00802667 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.15953 0.997084 1.05688 1.04178 1.03936 1.03634 1.03393 +1.02789 1.02306 1.01883 1.02185 1.01702 1.02426 1.02306 1.03212 +1.02245 1.02245 1.01943 1.02366 1.02124 1.02245 1.01581 1.02185 +1.0152 1.02608 1.02547 1.01762 1.02426 1.02004 1.02064 1.02124 +1.01822 1.014 1.02487 1.02487 1.01702 1.02124 1.01943 1.02426 +1.02004 1.02245 1.02185 1.02064 1.02789 1.01641 0.998292 1.0146 +1.01702 1.01702 1.01702 1.02004 1.0303 1.02668 1.01641 1.01581 +1.01641 1.02124 1.01339 1.02124 1.00856 1.02426 1.02185 1.02366 +1.01641 1.01339 1.02245 1.01702 1.01883 1.0291 1.02547 1.03272 +1.0146 0.983192 0.967488 0.969904 0.968092 0.971112 0.963864 0.966884 +0.973528 0.974132 0.96024 0.962656 0.971716 0.95722 0.954804 0.973528 +0.991044 1.00916 1.0146 1.01037 1.01762 1.0146 1.0146 1.02547 +1.01943 1.01581 1.02789 1.01943 1.014 1.00856 1.02064 1.02004 +1.02306 1.01158 1.01762 1.02849 1.0303 1.02064 1.02849 1.01641 +0.995272 1.00433 1.01883 1.01943 1.02366 1.02185 1.01339 1.01218 +1.01581 1.01641 1.01943 1.014 1.02064 1.01883 1.0297 1.02306 +1.02124 1.02366 1.02185 1.014 1.02245 1.02185 1.0152 1.02849 +1.0146 1.01943 1.01702 1.00614 1.01762 1.02004 1.01581 1.02306 +1.02004 1.01943 1.02426 1.02668 1.02306 1.0291 1.0291 1.02487 +1.02849 1.03876 1.04722 1.05507 1.00494 0.185617 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0 0.00702333 0.00702333 0 0 0.00501667 0.00602 0.00301 +0 0 0 0.00401333 0.00702333 0.00301 0.00100333 0.00100333 +0 0.00301 0.0110367 0.0100333 0.00100333 0.00100333 0.00200667 0.00200667 +0.00501667 0.00501667 0.00501667 0 0 0 0 0.00200667 +0 0 0.00401333 0.00301 0.00301 0 0 0.00301 +0.00602 0.00200667 0 0 0 0 0 0.00200667 +0 0 0.00100333 0 0.00100333 0 0 0.00200667 +0.00602 0.00501667 0.00602 0.00100333 0 0 0.00301 0.00200667 +0 0.0110367 0.00501667 0.00501667 0 0 0.00200667 0 +0.00401333 0.00401333 0 0 0 0 0 0 +0 0.584943 1.05748 1.05144 1.04238 1.03695 1.02668 1.0297 +1.02306 1.02245 1.02004 1.02728 1.01702 1.01339 1.01339 1.0146 +1.01702 1.01218 1.01762 1.01702 1.02426 1.02426 1.02245 1.02124 +1.01037 1.01581 1.01943 1.01581 1.02185 1.01822 1.0146 1.01943 +1.01702 1.01641 1.0146 1.01883 1.02004 1.01883 1.02064 1.02547 +1.0297 1.01883 1.02124 1.02064 1.01883 0.988024 1.00856 1.01883 +1.02124 1.01218 1.02245 1.02064 1.02064 1.02064 1.01702 1.02064 +1.01037 1.01339 1.0146 1.01037 1.01218 1.0152 1.01822 1.02124 +1.02064 1.01883 1.02608 1.02185 1.01339 1.02245 1.01762 1.02547 +1.01098 0.973528 0.964468 0.96628 0.968092 0.967488 0.9693 0.96326 +0.968092 0.969904 0.967488 0.961448 0.97232 0.9693 0.962656 0.959636 +0.976548 1.02608 1.02728 1.0146 1.01943 1.01641 1.02004 1.02487 +1.01762 1.02728 1.02185 1.02124 1.02487 1.02306 1.01702 1.0291 +1.0152 1.0291 1.02004 1.02245 1.01822 1.02124 1.02547 1.02426 +1.00916 0.99648 1.02185 1.02064 1.01762 1.02366 1.01822 1.03091 +1.01762 1.02366 1.01883 1.01883 1.02124 1.01339 1.02547 1.02487 +1.01037 1.02366 1.02245 1.01943 1.02064 1.02306 1.01581 1.02185 +1.0146 1.01218 1.01762 1.01581 1.02426 1.02366 1.02245 1.01762 +1.01762 1.01702 1.02124 1.01581 1.02608 1.02064 1.02366 1.02728 +1.0291 1.03514 1.04118 1.04963 1.06111 0.599993 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0.00501667 0.00301 0 0 0.00903 0.00200667 0 0 +0.00301 0.00903 0.00802667 0 0 0 0 0 +0 0 0 0 0 0.00401333 0.00100333 0 +0 0 0 0 0 0.00401333 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0.00401333 0.00100333 0 0 0.00200667 0.00401333 +0.00802667 0.00100333 0 0.00501667 0.00602 0.0110367 0.00903 0.00401333 +0 0 0 0.00301 0 0.00501667 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.122407 0.981984 1.05628 1.04238 1.03514 1.03151 1.03151 1.02426 +1.02668 1.0303 1.01581 1.01762 1.02124 1.02124 1.02366 1.0146 +1.01339 1.02124 1.01943 1.01279 1.0146 1.01822 1.01943 1.01762 +1.02668 1.02306 1.02366 1.02185 1.02064 1.01762 1.0146 1.02004 +1.02547 1.02004 1.02426 1.01581 1.01883 1.02245 1.01702 1.01762 +1.02185 1.0152 1.01762 1.02547 0.982588 1.0146 1.0152 1.02064 +1.02547 1.02185 1.02306 1.02306 1.01339 1.02849 1.01279 1.01943 +1.02547 1.02306 1.02789 1.02608 1.01218 1.01339 1.02608 1.01883 +1.01218 1.01218 1.02306 1.01279 1.02064 1.01943 1.02004 1.02124 +1.01037 0.97534 0.97232 0.969904 0.971716 0.965676 0.96326 0.962656 +0.960844 0.971112 0.966884 0.968696 0.963864 0.96628 0.974132 0.965072 +0.99044 1.02306 1.02245 1.01218 1.02728 1.0291 1.0146 1.02004 +1.01883 1.02004 1.01339 1.01641 1.02306 1.0146 1.0152 1.014 +1.02185 1.02185 1.0146 1.02849 1.014 1.01762 1.02245 1.02608 +1.02426 1.01581 1.00071 1.00977 1.02124 1.01581 1.0146 1.01218 +1.0146 1.02728 1.02668 1.02426 1.01581 1.02306 1.01702 1.02245 +1.02547 1.02426 1.01702 1.02064 1.01943 1.01581 1.02306 1.01762 +1.01037 1.0152 1.02124 1.02004 1.0291 1.01943 1.01702 1.02185 +1.02547 1.02185 1.02366 1.02547 1.02185 1.02004 1.02426 1.02487 +1.02547 1.03212 1.04299 1.04359 1.05446 0.989232 0.13846 0 +0 0 0 0 0 0 0.00100333 0 +0.00200667 0.00702333 0.00401333 0.00702333 0.00903 0 0.00100333 0 +0.00100333 0.00301 0.00200667 0.00802667 0.00200667 0.00301 0.00100333 0.00702333 +0.00200667 0 0 0 0.00501667 0.00702333 0 0 +0.00401333 0.00702333 0 0 0 0 0 0 +0 0.00501667 0.00802667 0 0 0.00802667 0.00602 0.00401333 +0.00802667 0.00702333 0.00702333 0.0110367 0.00501667 0.00301 0 0 +0.00802667 0.00401333 0 0 0.00501667 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00501667 0 0.00301 0.00501667 0.00501667 0.00501667 +0 0 0.00401333 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0.4816 1.05688 1.05205 1.03936 1.04238 1.03876 1.02728 1.02608 +1.02124 1.02245 1.02789 1.02185 1.02124 1.02245 1.02004 1.03393 +1.01702 1.01641 1.0152 1.02064 1.01702 1.02064 1.02124 1.01702 +1.02668 1.01943 1.01158 1.01702 1.01641 1.02608 1.02064 1.02064 +1.01883 1.02185 1.02366 1.01581 1.01218 1.01883 1.02306 1.01943 +1.01581 1.02728 1.01702 0.992252 1.01702 1.03272 1.02426 1.01943 +1.01581 1.01702 1.01158 1.01762 1.0146 1.01822 1.03695 1.03816 +1.03393 1.04782 1.04661 1.05567 1.03997 1.0291 1.02064 1.01822 +1.02064 1.01702 1.01581 1.0291 1.01822 1.03091 1.02426 1.02306 +1.00796 0.968696 0.96628 0.96628 0.965072 0.974736 0.965072 0.965676 +0.961448 0.964468 0.971716 0.960844 0.968696 0.970508 0.974132 0.96326 +0.983192 1.02608 1.02185 1.01883 1.02849 1.01098 1.01943 1.02124 +1.02185 1.01218 1.0152 1.01702 1.014 1.01037 1.02124 1.02185 +1.02487 1.01762 1.02668 1.01581 1.02487 1.02789 1.00735 1.02245 +1.01279 1.02185 1.01098 1.00614 1.01339 1.01279 1.02185 1.0291 +1.02487 1.01822 1.01943 1.02185 1.01943 1.0146 1.0146 1.0152 +1.014 1.01883 1.01762 1.02668 1.02487 1.01702 1.0152 1.01218 +1.0146 1.02366 1.014 1.01762 1.01581 1.02004 1.02064 1.01279 +1.0146 1.01883 1.02185 1.02185 1.01822 1.02487 1.02306 1.02124 +1.02547 1.03332 1.0303 1.03816 1.05144 1.04842 0.501667 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0 0 0.00301 0 0.00702333 +0.00200667 0 0 0.00401333 0 0 0 0 +0 0.00100333 0 0 0 0 0 0.00200667 +0.00301 0 0 0.00200667 0 0 0 0 +0.00903 0.00501667 0.00401333 0 0 0.00100333 0 0 +0 0 0 0.00401333 0.00802667 0.00702333 0.00301 0.00401333 +0 0.00401333 0.00301 0 0.00100333 0.00903 0.00802667 0.00401333 +0.00301 0 0 0.00802667 0.0110367 0 0 0 +0.00100333 0 0.00401333 0.00501667 0 0 0.00301 0.00903 +0.00702333 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0441467 +0.914984 1.05446 1.0448 1.03634 1.0303 1.03151 1.02668 1.02064 +1.02728 1.02426 1.02728 1.01762 1.01279 1.02004 1.01762 1.01883 +1.0146 1.02487 1.01883 1.02185 1.02366 1.02426 1.01641 1.01883 +1.02487 1.02064 1.02547 1.01641 1.02064 1.0152 1.01943 1.01158 +1.01822 1.01762 1.02064 1.02306 1.02547 1.01943 1.01702 1.02487 +1.02426 1.02487 1.00252 0.998896 1.02487 1.02124 1.00916 1.02547 +1.01943 1.01883 1.02004 1.02004 1.01883 1.02789 1.0442 1.04842 +1.04903 1.04118 1.04299 1.03816 1.05265 1.05386 1.03997 1.03876 +1.02728 1.0297 1.01762 1.02306 1.01279 1.00856 1.01943 1.02245 +1.01883 0.968092 0.97534 0.965072 0.962656 0.972924 0.964468 0.964468 +0.967488 0.974132 0.968696 0.969904 0.965072 0.966884 0.964468 0.962052 +0.997084 1.01822 1.02547 1.02004 1.02004 1.01581 1.02306 1.01339 +1.02004 1.02064 1.02426 1.01943 1.02064 1.01339 1.02004 1.02245 +1.0146 1.02004 1.01762 1.02366 1.01702 1.014 1.02547 1.0303 +1.02245 1.02366 1.0297 1.0146 1.014 1.02306 1.02608 1.02245 +1.01762 1.0152 1.02366 1.0146 1.01641 1.014 1.02668 1.01943 +1.02487 1.02426 1.02004 1.01581 1.02004 1.01218 1.0146 1.02064 +1.02064 1.01943 1.02064 1.02064 1.02487 1.01762 1.0146 1.00675 +1.014 1.02064 1.02547 1.0146 1.0152 1.02064 1.02245 1.02366 +1.03574 1.03151 1.03332 1.04359 1.04359 1.05567 0.939704 0.0591967 +0 0 0 0 0 0.00200667 0 0 +0 0 0.00100333 0.00301 0 0 0.00501667 0 +0 0 0.00301 0 0 0 0 0 +0 0.00200667 0.00903 0.0100333 0.00401333 0.00602 0.00200667 0.00301 +0.00301 0.00100333 0.00100333 0 0.00100333 0.00702333 0.00802667 0.00802667 +0.00200667 0.00100333 0.00301 0.00802667 0 0 0.00301 0.00100333 +0.00301 0 0 0 0 0 0.00401333 0 +0 0 0.00401333 0 0 0 0 0.00301 +0.00200667 0.00702333 0.00301 0 0.00200667 0.00100333 0 0 +0 0 0 0 0.00602 0.00301 0 0 +0 0 0 0.00200667 0 0 0.00301 0 +0 0 0 0 0 0 0 0.315047 +1.04057 1.05024 1.03997 1.03332 1.03151 1.03514 1.03151 1.02426 +1.01702 1.02185 1.02245 1.02185 1.02668 1.01762 1.02124 1.02487 +1.01702 1.01339 1.02124 1.01218 1.01883 1.02064 1.02004 1.01581 +1.01158 1.0146 1.01883 1.01822 1.01943 1.01883 1.02306 1.0303 +1.02185 1.01762 1.01702 1.02185 1.01279 1.00977 1.00614 1.01702 +1.01641 1.00373 0.989836 1.01883 1.0152 1.01641 1.02547 1.01762 +1.03151 1.02608 1.02245 1.02124 1.03393 1.04178 1.04842 1.04178 +1.05507 1.04601 1.04057 1.04661 1.0448 1.05688 1.05326 1.04842 +1.03151 1.02185 1.01037 1.0297 1.0303 1.01702 1.01702 1.02124 +1.02789 0.983192 0.961448 0.96326 0.965676 0.965676 0.966884 0.961448 +0.959032 0.97232 0.964468 0.966884 0.97232 0.975944 0.966884 0.970508 +1.00131 1.02426 1.02124 1.01943 1.02728 1.03212 1.01641 1.02366 +1.01581 1.01943 1.01822 1.03272 1.03393 1.05024 1.03514 1.03695 +1.0291 1.00735 1.02004 1.014 1.02124 1.01702 1.02426 1.02426 +1.02728 1.02426 1.02185 1.0146 1.00433 1.02185 1.02004 1.02789 +1.0146 1.01883 1.02608 1.02547 1.02306 1.02608 1.02124 1.01581 +1.01943 1.02004 1.01098 1.014 1.00856 1.00796 1.02547 1.02426 +1.02064 1.02004 1.01822 1.01641 1.01279 1.01218 1.01883 1.02185 +1.02245 1.0291 1.01943 1.00796 1.02185 1.02306 1.02004 1.01883 +1.02366 1.02366 1.03091 1.03272 1.04118 1.05446 1.04299 0.321067 +0 0 0 0 0 0 0 0.00602 +0.00200667 0 0 0 0 0.00501667 0 0 +0.00401333 0.00802667 0 0.00200667 0 0 0.01204 0.00501667 +0.0130433 0.00903 0.00100333 0 0 0 0.00501667 0.00100333 +0 0 0 0 0.00200667 0.00301 0 0 +0 0 0 0 0.00200667 0.00501667 0 0 +0.00100333 0.00702333 0.00401333 0.00200667 0 0 0.00301 0.00501667 +0.00401333 0.00301 0 0.00401333 0.00501667 0.00200667 0 0 +0 0 0 0.00200667 0 0.00602 0.00602 0.00401333 +0.00100333 0.00100333 0 0 0 0.00301 0.00903 0 +0.00100333 0 0 0 0.00501667 0 0 0 +0 0 0 0 0 0 0 0.684432 +1.06292 1.05024 1.03997 1.0291 1.02487 1.02487 1.02185 1.02668 +1.02004 1.01581 1.02245 1.0146 1.02064 1.01762 1.01581 1.02064 +1.01762 1.01822 1.01581 1.01943 1.01581 1.01822 1.01883 1.01883 +1.02245 1.02124 1.02366 1.02306 1.02185 1.02487 1.01279 1.01098 +1.02306 1.01762 1.01641 1.01883 1.02064 1.02306 1.01943 1.01883 +1.00735 0.994064 1.02124 1.02245 1.01822 1.02608 1.0152 1.01279 +1.0152 1.02124 1.02426 1.02426 1.04782 1.04238 1.0448 1.04299 +1.04963 1.05326 1.04178 1.0442 1.05084 1.04842 1.05205 1.04601 +1.03695 1.02487 1.0297 1.01279 1.02185 1.01943 1.01883 1.02366 +1.02306 1.00373 0.961448 0.963864 0.968696 0.965676 0.961448 0.967488 +0.96326 0.960844 0.96326 0.959636 0.971716 0.960844 0.961448 0.979568 +1.02185 1.03936 1.03091 1.03091 1.01883 1.01037 1.01943 1.01762 +1.014 1.03332 1.04057 1.04601 1.04782 1.0454 1.05386 1.04782 +1.0454 1.03816 1.02487 1.00735 1.02004 1.0152 1.01762 1.01339 +1.01943 1.0152 1.02426 1.02064 1.02124 1.00494 1.02608 1.01883 +1.01339 1.02064 1.02366 1.02366 1.0152 1.00433 1.02728 1.01158 +1.0297 1.02245 1.02306 1.02306 1.02124 1.02789 1.0146 1.01822 +1.01218 1.02185 1.01339 1.01822 1.01822 1.01641 1.01822 1.01822 +1.02124 1.01279 1.00977 1.014 1.02306 1.02245 1.01762 1.0297 +1.02306 1.02245 1.03453 1.03272 1.03695 1.0454 1.0593 0.707616 +0 0 0 0 0 0 0.00100333 0 +0 0 0 0.00802667 0.00802667 0 0 0 +0 0 0 0 0.00200667 0.00501667 0 0.00903 +0.00401333 0 0 0 0.00501667 0.00501667 0 0 +0 0.00401333 0 0 0.00200667 0 0 0 +0.00501667 0.00301 0.00200667 0.00100333 0 0.00501667 0.00802667 0.00200667 +0 0.00100333 0.00301 0.00602 0.00100333 0 0 0 +0.00802667 0.00602 0.00301 0 0 0.00301 0.0130433 0.0100333 +0.00401333 0.00401333 0 0.00200667 0.00200667 0.00100333 0.00501667 0.00401333 +0.00200667 0.00401333 0.00301 0.00301 0 0 0 0 +0.00501667 0.0110367 0 0 0 0 0 0 +0 0 0 0 0 0 0.09933 0.98138 +1.05386 1.04299 1.04057 1.03453 1.02064 1.0291 1.02064 1.01883 +1.02426 1.0303 1.02487 1.02004 1.01883 1.01883 1.01279 1.01581 +1.01762 1.02124 1.01822 1.02306 1.02245 1.01641 1.02849 1.02064 +1.02426 1.01702 1.01218 1.0146 1.01641 1.02245 1.02185 1.0146 +1.02487 1.02789 1.02668 1.01702 1.02245 1.02185 1.02728 1.03212 +0.992856 1.00554 1.02789 1.02306 1.02668 1.02245 1.02124 1.02789 +1.01641 1.02004 1.02366 1.04661 1.0442 1.03755 1.04963 1.04057 +1.0448 1.04661 1.05024 1.04178 1.03393 1.0448 1.04238 1.0454 +1.04722 1.02728 1.02608 1.02728 1.01641 1.02245 1.01822 1.02849 +1.02366 1.01702 0.983796 0.964468 0.969904 0.96628 0.962052 0.968092 +0.962656 0.971112 0.961448 0.971716 0.965072 0.956616 0.971112 1.01158 +1.02306 1.01702 1.02185 1.02185 1.01581 1.01641 1.01702 1.01641 +1.03453 1.05084 1.04661 1.04359 1.03997 1.04842 1.04299 1.04178 +1.0454 1.04782 1.05326 1.02487 1.01822 1.01883 1.01943 1.02728 +1.01581 1.01943 1.0152 1.01943 1.01822 1.01218 1.01037 1.01581 +1.01883 1.02366 1.02487 1.01943 1.01339 1.02245 1.01702 1.01098 +1.0146 1.01641 1.02245 1.01822 1.02426 1.01822 1.01883 1.01339 +1.0146 1.01762 1.0146 1.02366 1.0146 1.02366 1.02004 1.02245 +1.02185 1.0152 1.01641 1.02124 1.02608 1.02185 1.02124 1.02064 +1.02306 1.02185 1.0303 1.0291 1.03876 1.04359 1.05144 0.983796 +0.11438 0 0 0 0 0 0 0 +0 0 0.00602 0 0 0 0.00602 0.00802667 +0.00301 0 0 0 0.00301 0 0.00100333 0 +0 0 0.00602 0 0.00100333 0 0 0 +0.00602 0 0.00100333 0.00100333 0 0 0.00200667 0.00401333 +0 0 0 0 0.00100333 0 0.00100333 0.00802667 +0.00802667 0.00301 0 0 0 0 0 0 +0 0.00401333 0.00401333 0.00200667 0.00200667 0 0 0 +0.00802667 0.00903 0.00602 0 0 0 0 0.00401333 +0.00200667 0 0 0.00100333 0.00401333 0 0 0 +0 0 0.00903 0 0 0 0 0 +0 0 0 0 0 0 0.365213 1.04722 +1.05326 1.03997 1.03634 1.03393 1.03212 1.02789 1.02789 1.02245 +1.02245 1.01339 1.01581 1.0146 1.02004 1.02124 1.01943 1.01762 +1.02064 1.01702 1.02185 1.01822 1.01943 1.02064 1.02487 1.01702 +1.02004 1.02487 1.02728 1.02728 1.01339 1.01218 1.01581 1.01822 +1.0146 1.01943 1.02185 1.02487 1.0152 1.01702 1.02306 1.01581 +1.00494 1.01702 1.0146 1.01339 1.02426 1.02728 1.01581 1.02366 +1.02124 1.02306 1.01883 1.04057 1.04601 1.0442 1.04359 1.03332 +1.03936 1.0448 1.03695 1.05748 1.04238 1.04963 1.04842 1.05326 +1.04601 1.04963 1.02366 1.0146 1.02547 1.01762 1.02547 1.02849 +1.02487 1.02789 1.02245 0.989836 0.971716 0.962656 0.963864 0.965676 +0.972924 0.962656 0.967488 0.956616 0.960844 0.976548 1.00977 1.02064 +1.01702 1.02608 1.01943 1.01943 1.02668 1.02547 1.02366 1.03574 +1.05144 1.05809 1.03876 1.04842 1.04842 1.05024 1.03755 1.0448 +1.04963 1.05446 1.04722 1.04238 1.02849 1.01822 1.02849 1.02004 +1.02366 1.02245 1.0303 1.02487 1.02668 1.01641 1.0146 1.01158 +1.01762 1.03151 1.02426 1.02004 1.02124 1.02426 1.01702 1.01762 +1.02608 1.02185 1.02004 1.02306 1.01641 1.0146 1.0146 1.01943 +1.02245 1.02185 1.02426 1.02124 1.02185 1.01943 1.02306 1.02668 +1.01339 1.02124 1.02185 1.02728 1.0152 1.02185 1.01581 1.01883 +1.02004 1.02366 1.02487 1.02608 1.03816 1.04118 1.04903 1.05144 +0.38829 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00501667 0.00100333 0 +0 0 0.00802667 0.0130433 0.00301 0.00401333 0 0 +0.00702333 0.00903 0 0 0 0 0.00301 0.00401333 +0 0 0 0 0.00602 0.00903 0.0100333 0 +0 0 0.00301 0.00602 0.00903 0.00602 0 0 +0 0.00501667 0.00802667 0.00200667 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00301 0.00802667 0 0 0 +0.00100333 0.00802667 0.00200667 0 0 0.00100333 0.00401333 0.00602 +0.00100333 0 0.00401333 0 0 0 0 0 +0 0 0 0 0 0 0.68572 1.0599 +1.0448 1.03453 1.0297 1.02366 1.02849 1.01943 1.01339 1.01943 +1.01943 1.01581 1.02306 1.02124 1.02004 1.0152 1.02124 1.02004 +1.014 1.014 1.01943 1.02124 1.01158 1.01702 1.01762 1.02004 +1.0152 1.01641 1.01581 1.02789 1.02426 1.01883 1.02124 1.02366 +1.01883 1.01883 1.02306 1.02245 1.02306 1.02306 1.0146 0.995876 +1.02487 1.02306 1.0152 1.01822 1.01641 1.02185 1.0152 1.0291 +1.02608 1.00796 1.02728 1.03876 1.04842 1.04842 1.04661 1.05507 +1.04782 1.04722 1.04903 1.05024 1.04963 1.04601 1.04661 1.04359 +1.0454 1.0448 1.02185 1.02004 1.02245 1.02306 1.01943 1.02064 +1.01339 1.01822 1.02306 1.02426 1.00252 0.978964 0.971112 0.965072 +0.966884 0.968696 0.964468 0.962052 0.986212 1.01762 1.02306 1.01702 +1.02245 1.02849 1.01279 1.01581 1.014 1.00796 1.02124 1.04299 +1.05024 1.05024 1.0442 1.0442 1.04842 1.0448 1.04238 1.04661 +1.04842 1.03997 1.04238 1.0454 1.03634 1.01581 1.01641 1.00675 +1.01641 1.02668 1.02306 1.02124 1.01702 1.02547 1.01822 1.00614 +1.02366 1.02064 1.01581 1.01702 1.01883 1.01339 1.01702 1.01883 +1.02789 1.02426 1.02366 1.01581 1.01943 1.02547 1.01702 1.01581 +1.02547 1.01762 1.01641 1.01218 1.01943 1.0146 1.01641 1.01339 +1.01883 1.02426 1.02004 1.02426 1.02245 1.01943 1.01822 1.01883 +1.02064 1.02366 1.02789 1.03272 1.03212 1.03936 1.0448 1.05748 +0.73724 0 0 0 0 0 0 0.00802667 +0.00501667 0.00301 0.00200667 0 0 0 0 0 +0.00401333 0.00301 0.00301 0 0 0 0.00100333 0.00903 +0.00401333 0.00200667 0.00903 0.00401333 0.00802667 0.00702333 0.00802667 0.00100333 +0 0 0 0.0110367 0.0110367 0.00401333 0 0 +0.00401333 0.00903 0.00602 0.00903 0 0 0 0.00301 +0 0 0 0 0.00100333 0 0.00401333 0 +0 0.00100333 0 0.00100333 0 0.00100333 0 0 +0.00301 0 0 0.00602 0.00200667 0.01505 0.00702333 0 +0 0 0 0.00200667 0 0 0 0.00401333 +0.00903 0.00301 0.00100333 0.00401333 0 0 0 0 +0 0 0 0 0 0.0672233 0.958428 1.05024 +1.04057 1.03695 1.0303 1.02668 1.0297 1.0303 1.02547 1.01943 +1.01702 1.02124 1.02185 1.02426 1.02487 1.02306 1.01943 1.02124 +1.01762 1.02668 1.0152 1.02004 1.02124 1.0146 1.01581 1.01822 +1.0152 1.0146 1.00796 1.01581 1.02064 1.01943 1.02064 1.00856 +1.0152 1.02547 1.02306 1.01702 1.02004 1.0297 0.997688 1.00977 +1.02366 1.03091 1.03272 1.02306 1.02306 1.02728 1.02487 1.0146 +1.01762 1.02608 1.0297 1.04903 1.04359 1.0448 1.04842 1.04722 +1.04118 1.04722 1.03816 1.03997 1.04661 1.04238 1.0442 1.04782 +1.04661 1.04722 1.0297 1.02064 1.0146 1.02245 1.01641 1.02789 +1.02426 1.02004 1.02668 1.01762 1.0146 1.00916 0.995876 0.985608 +0.9844 0.988024 1.00252 1.0152 1.02426 1.01762 1.0291 1.02668 +1.02547 1.01762 1.01943 1.03393 1.02608 1.01339 1.03634 1.04661 +1.0454 1.05386 1.04661 1.04661 1.04903 1.04178 1.04842 1.0454 +1.03997 1.03997 1.0454 1.04722 1.0442 1.04178 1.02547 1.02668 +1.02789 1.02004 1.02124 1.02608 1.02064 1.0152 1.02124 1.0152 +1.00735 1.01943 1.02306 1.02306 1.01822 1.01581 1.02124 1.01702 +1.02728 1.01339 1.0146 1.01641 1.01943 1.014 1.01218 1.01641 +1.01943 1.0146 1.01581 1.00916 1.02668 1.02004 1.01822 1.01943 +1.01762 1.02306 1.01702 1.0146 1.01581 1.01822 1.01883 1.02124 +1.01762 1.02245 1.0291 1.0291 1.02728 1.03695 1.05205 1.05205 +0.977152 0.0943133 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00200667 0 +0 0 0 0.00200667 0.00702333 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00602 0.00401333 0 0 0 0 +0.00200667 0.00100333 0 0 0.00401333 0.00501667 0.00200667 0 +0.00100333 0.00200667 0.00602 0.00100333 0 0.00200667 0.00200667 0.00401333 +0.00301 0 0 0 0 0 0.00100333 0.00100333 +0.00200667 0 0 0 0 0 0.00301 0.01204 +0.00200667 0.00200667 0.00301 0.00401333 0.00200667 0.00602 0 0 +0 0 0 0 0 0 0 0.00401333 +0 0 0 0 0 0.244813 1.03997 1.0454 +1.04178 1.03574 1.03151 1.02849 1.02608 1.01883 1.02547 1.02849 +1.01581 1.01581 1.01762 1.01218 1.01883 1.02064 1.01762 1.02366 +1.02426 1.02185 1.02004 1.01943 1.01339 1.02608 1.01762 1.01702 +1.02004 1.02306 1.02547 1.01883 1.02789 1.02668 1.02668 1.02185 +1.02608 1.01883 1.0146 1.02245 1.01641 1.01822 0.994668 1.02124 +1.02245 1.0146 1.02608 1.03212 1.01037 1.01279 1.02124 1.02366 +1.02124 1.01883 1.02185 1.05386 1.04722 1.0448 1.04238 1.04299 +1.03997 1.0442 1.05567 1.04722 1.0454 1.05386 1.04903 1.0442 +1.04661 1.04782 1.01702 1.02245 1.02124 1.02004 1.01943 1.01822 +1.01218 1.01883 1.02064 1.01702 1.0297 1.02185 1.03272 1.02185 +1.02245 1.01762 1.02366 1.01641 1.01218 1.02124 1.02064 1.01822 +1.02668 1.03212 1.02547 1.02306 1.02124 1.02366 1.04722 1.04722 +1.0448 1.03936 1.03272 1.04178 1.03936 1.03876 1.0454 1.04178 +1.04842 1.04359 1.04601 1.04782 1.05386 1.01883 1.01762 1.01883 +1.01279 1.01218 1.02124 1.02306 1.01037 1.01702 1.01158 1.01581 +0.991648 1.02185 1.02849 1.01762 1.014 1.01883 1.01883 1.02064 +1.02366 1.0146 1.02004 1.02547 1.02306 1.02306 1.01822 1.02004 +1.01641 1.02426 1.02004 1.02487 1.02064 1.0146 1.01883 1.0146 +1.01883 1.0152 1.02004 1.02124 1.02366 1.02426 1.01883 1.00977 +1.01943 1.02728 1.02426 1.01943 1.0297 1.04238 1.03453 1.0454 +1.03936 0.298993 0 0 0 0 0 0 +0 0 0 0 0.0100333 0.00401333 0.00100333 0.00903 +0.00903 0 0.0100333 0.00802667 0 0 0 0 +0 0.00200667 0 0 0 0 0 0.0110367 +0.00802667 0.0100333 0 0 0 0.00100333 0.00702333 0.00702333 +0.00301 0.00100333 0.00401333 0.0110367 0.00702333 0.00602 0.00602 0.00602 +0.00401333 0.00501667 0.00100333 0 0.00301 0.00501667 0.00401333 0.00301 +0.00702333 0.0130433 0 0 0 0 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0 0 0 +0 0 0 0 0 0.00200667 0 0 +0 0 0 0 0 0.497653 1.05809 1.05024 +1.03332 1.0291 1.03212 1.02728 1.02004 1.02124 1.01943 1.02004 +1.02245 1.01943 1.01702 1.0152 1.01098 1.0152 1.01883 1.0146 +1.01943 1.02064 1.02064 1.01883 1.0152 1.02487 1.02306 1.02245 +1.02608 1.02124 1.0152 1.01702 1.01822 1.01581 1.01762 1.02124 +1.01581 1.02064 1.02306 1.02366 1.02004 0.992252 1.00192 1.02728 +1.02064 1.02366 1.02124 1.01822 1.02728 1.01943 1.02124 1.01037 +1.02306 1.014 1.01883 1.04238 1.04782 1.04722 1.04782 1.04963 +1.0442 1.04238 1.04359 1.04057 1.04842 1.03816 1.04722 1.05024 +1.05386 1.03514 1.0146 1.01702 1.02608 1.02245 1.02245 1.02608 +1.02668 1.02487 1.01279 1.01822 1.01702 1.02245 1.02366 1.02245 +1.0291 1.02789 1.02064 1.02306 1.02728 1.02487 1.02245 1.01218 +1.01581 1.01822 1.03091 1.01037 1.0146 1.02487 1.04722 1.04057 +1.03876 1.03936 1.04178 1.05507 1.0454 1.04299 1.04299 1.05084 +1.04842 1.04359 1.03876 1.05265 1.03816 1.03876 1.01641 1.0146 +1.02064 1.02366 1.02306 1.01762 1.02608 1.014 1.02124 1.03091 +1.01762 1.00433 1.014 1.02789 1.01702 1.02366 1.02789 1.02064 +1.01339 1.02185 1.0146 1.0152 1.01098 1.01037 1.02245 1.02185 +1.01822 1.01339 1.01641 1.02185 1.0152 1.01037 1.0146 1.0146 +1.01762 1.0146 1.01822 1.01641 1.01339 1.014 1.01883 1.02789 +1.02789 1.0291 1.02608 1.03634 1.03332 1.03936 1.03936 1.05205 +1.05748 0.561867 0 0 0 0 0 0 +0 0 0 0.00501667 0.00501667 0.00501667 0.00702333 0.00401333 +0.00200667 0.00602 0.00301 0 0 0.00401333 0.00100333 0.00501667 +0.00301 0.00301 0 0 0 0.00301 0.00501667 0 +0 0 0 0 0 0.00200667 0 0 +0 0.00100333 0.00301 0.00602 0 0 0 0.00100333 +0 0.00401333 0.00301 0.00903 0.00602 0 0 0 +0 0 0.00802667 0.00200667 0 0.00401333 0.00200667 0.00602 +0.00401333 0 0 0 0 0 0.00301 0.00501667 +0.00200667 0.00100333 0 0.00200667 0.00301 0.00602 0.00200667 0.00200667 +0.00702333 0 0 0 0 0 0 0 +0 0 0 0 0 0.783608 1.05326 1.04299 +1.03634 1.02849 1.02668 1.0291 1.02366 1.02185 1.02366 1.02245 +1.02306 1.01883 1.02245 1.02426 1.02426 1.01702 1.0146 1.0146 +1.01218 1.0152 1.02547 1.01943 1.02547 1.01883 1.01822 1.02849 +1.02245 1.02608 1.02064 1.01762 1.014 1.02245 1.02366 1.02426 +1.02728 1.02426 1.02004 1.01702 1.02245 0.997084 1.01822 1.02124 +1.02789 1.0152 1.02789 1.02064 1.01943 1.0303 1.01702 1.02547 +1.02245 1.02245 1.01822 1.03695 1.04842 1.04118 1.04722 1.03876 +1.0442 1.05144 1.05507 1.04661 1.04842 1.04178 1.0442 1.05748 +1.0442 1.04118 1.01822 1.02124 1.02487 1.02547 1.01822 1.014 +1.02849 1.02306 1.01822 1.03091 1.02487 1.02124 1.02306 1.02124 +1.01883 1.03272 1.0146 1.02185 1.02608 1.03091 1.02185 1.01943 +1.02124 1.0291 1.01943 1.02185 1.02064 1.01762 1.0442 1.03876 +1.03997 1.04661 1.03997 1.03755 1.04601 1.04118 1.03876 1.0442 +1.03936 1.04842 1.04601 1.03695 1.04601 1.0297 1.02185 1.0146 +1.02426 1.02245 1.02124 1.01279 1.01581 1.02849 1.01822 1.01762 +1.02245 0.988628 1.02064 1.02487 1.02185 1.01943 1.0146 1.00614 +1.01098 1.02124 1.01641 1.01641 1.02789 1.02487 1.02185 1.02426 +1.02547 1.0291 1.02426 1.02185 1.0146 1.02064 1.02487 1.02185 +1.02487 1.02306 1.02366 1.01702 1.01883 1.02064 1.01883 1.01883 +1.02185 1.01762 1.02547 1.02004 1.02728 1.02064 1.03514 1.0448 +1.05628 0.845432 0.00602 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00401333 0 0.00702333 0.00602 +0 0 0.00100333 0.00401333 0.00200667 0.00602 0.00501667 0.00501667 +0.00200667 0 0 0.00100333 0 0 0.00401333 0.00401333 +0.00100333 0.00200667 0.00301 0 0.00602 0.00200667 0 0 +0 0 0 0 0 0 0.00301 0.00301 +0.0100333 0.00401333 0 0.00401333 0.00200667 0 0 0 +0 0.00200667 0 0 0.0110367 0.00903 0 0 +0.0100333 0.00602 0.0100333 0.00301 0 0.00401333 0 0 +0 0.00100333 0 0.00301 0.00301 0 0 0 +0 0 0 0 0.05719 0.96024 1.05567 1.04057 +1.02849 1.03393 1.0297 1.02426 1.02426 1.01822 1.01581 1.01943 +1.02004 1.01641 1.02245 1.01218 1.01098 1.01581 1.01641 1.01702 +1.01822 1.0146 1.01218 1.01339 1.02185 1.01943 1.01581 1.00856 +1.01158 1.01762 1.02064 1.01218 1.02245 1.01581 1.02185 1.02487 +1.02245 1.01883 1.01822 1.01822 0.991648 1.00856 1.02124 1.02547 +1.02004 1.01883 1.01098 1.0152 1.01702 1.02124 1.02608 1.0152 +1.01158 1.01279 1.01762 1.02849 1.05144 1.05084 1.04057 1.04903 +1.04782 1.04842 1.04722 1.05507 1.04359 1.04118 1.04359 1.04722 +1.04722 1.03574 1.02728 1.01339 1.02487 1.02366 1.02487 1.02426 +1.02849 1.01883 1.01279 1.02245 1.02245 1.01339 1.01218 1.01641 +1.02487 1.01279 1.02245 1.01943 1.01943 1.02366 1.0146 1.0146 +1.02124 1.02124 1.01641 1.02004 1.02064 1.02426 1.03876 1.0454 +1.04722 1.04782 1.05386 1.04057 1.03574 1.04057 1.04601 1.0448 +1.04178 1.04118 1.05265 1.04178 1.0442 1.03514 1.02789 1.02789 +1.0297 1.01943 1.01279 1.02004 1.02849 1.02547 1.02185 1.02426 +1.02608 1.00614 1.00071 1.01822 1.02426 1.00977 1.0152 1.02849 +1.02547 1.01339 1.02728 1.02366 1.02245 1.01641 1.01883 1.01943 +1.01339 1.02004 1.02064 1.0152 1.01883 1.02064 1.02185 1.02306 +1.01822 1.02004 1.01943 1.01098 1.02487 1.01279 1.01762 1.02547 +1.01822 1.02306 1.02789 1.02306 1.02426 1.03453 1.03695 1.04299 +1.05265 0.9844 0.0923067 0 0 0 0 0 +0.00200667 0 0 0 0.00501667 0 0 0 +0 0 0 0.00100333 0 0.00301 0 0 +0 0.00501667 0 0 0.00301 0.00401333 0 0 +0 0.00501667 0.00501667 0.00602 0.00702333 0.00501667 0.00301 0 +0.00301 0 0 0.00501667 0 0.00401333 0.00200667 0.00401333 +0.00200667 0 0.00200667 0.00501667 0 0 0 0 +0 0 0 0 0.00702333 0.01204 0.00903 0.00301 +0.00401333 0.00602 0.00702333 0 0 0 0.00401333 0 +0 0 0 0 0 0 0 0.00501667 +0 0 0 0 0 0 0 0 +0 0 0 0 0.1806 1.02547 1.05024 1.04238 +1.03634 1.02789 1.02245 1.02849 1.02728 1.02426 1.02064 1.02004 +1.01762 1.01702 1.02064 1.0303 1.02185 1.02064 1.01762 1.02547 +1.02487 1.02064 1.02608 1.01762 1.0146 1.02004 1.02245 1.02306 +1.01883 1.01641 1.02245 1.01279 1.02004 1.02487 1.01943 1.014 +1.02124 1.02426 1.02608 1.02849 0.981984 1.01822 1.01702 1.02124 +1.01702 1.0152 1.02185 1.01943 1.01339 1.01641 1.02668 1.02064 +1.02245 1.02547 1.02064 1.02185 1.02668 1.04601 1.05024 1.03755 +1.0442 1.05024 1.04359 1.03453 1.06111 1.0454 1.04057 1.0448 +1.02789 1.02064 1.01762 1.02366 1.00614 1.01883 1.0152 1.01943 +1.0152 1.0152 1.01822 1.02728 1.02064 1.01762 1.02124 1.02185 +1.02426 1.01581 1.02004 1.02185 1.0297 1.02547 1.01943 1.02487 +1.02306 1.02064 1.01762 1.0152 1.0146 1.01702 1.02366 1.04178 +1.04782 1.0454 1.04842 1.05265 1.04963 1.05205 1.0454 1.04238 +1.03634 1.04238 1.04299 1.04299 1.03936 1.0303 1.02547 1.02426 +1.01762 1.01581 1.02004 1.02004 1.02185 1.02426 1.02124 1.01279 +1.02608 1.02547 0.997084 1.02185 1.02185 1.02487 1.02064 1.02064 +1.02608 1.02366 1.01762 1.01762 1.01702 1.01218 1.02185 1.02426 +1.01702 1.01822 1.01158 1.02426 1.02366 1.02124 1.02245 1.01339 +1.01581 1.01641 1.01641 1.02064 1.02547 1.00916 1.0146 1.01702 +1.0152 1.02185 1.02306 1.02608 1.02608 1.03212 1.03936 1.04118 +1.05386 1.03091 0.224747 0 0 0 0 0 +0 0 0.00802667 0.00200667 0 0.00100333 0.00100333 0.00602 +0.0100333 0.00903 0.0100333 0.00200667 0.00200667 0 0 0 +0 0 0.00702333 0.01204 0.00100333 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0 0.00200667 0.00602 0.00702333 0.00301 0 0.00401333 0.00301 +0.00301 0.00401333 0 0 0.00501667 0 0.00301 0.00301 +0.00501667 0.00301 0.00501667 0.00501667 0 0 0.00200667 0.00401333 +0 0 0 0 0 0 0 0.00301 +0.00100333 0 0 0 0 0.00200667 0 0 +0.00401333 0.00401333 0 0 0 0 0 0 +0 0 0 0 0.323073 1.04782 1.05024 1.03514 +1.02789 1.03212 1.02547 1.01822 1.02004 1.02124 1.02124 1.02185 +1.01339 1.02004 1.0152 1.02547 1.02366 1.01762 1.01641 1.01943 +1.0152 1.02185 1.02124 1.02668 1.02004 1.02004 1.02185 1.01037 +1.01883 1.0152 1.02608 1.01883 1.02124 1.01943 1.02185 1.02004 +1.0146 1.01762 1.02426 1.01581 1.00735 1.02185 1.02668 1.02668 +1.02366 1.01762 1.02185 1.02608 1.0297 1.01943 1.02124 1.02245 +1.02064 1.02366 1.02608 1.01581 1.0303 1.03634 1.05205 1.04842 +1.05386 1.04842 1.05265 1.04057 1.05084 1.04782 1.04118 1.03393 +1.01822 1.02124 1.02426 1.0297 1.01883 1.01641 1.02245 1.03212 +1.01883 1.0152 1.02124 1.01339 1.00916 1.02064 1.02124 1.02185 +1.01218 1.02668 1.0303 1.01037 1.02426 1.02124 1.02366 1.01943 +1.02426 1.02004 1.01943 1.02245 1.02608 1.02245 1.01218 1.03453 +1.04057 1.03695 1.04782 1.05024 1.05628 1.04359 1.05144 1.0442 +1.04963 1.05265 1.0448 1.05144 1.03755 1.0146 1.02608 1.0146 +1.02487 1.03091 1.02306 1.02124 1.01943 1.02728 1.02849 1.01943 +1.02728 1.01762 0.997688 1.01218 1.02366 1.02668 1.0152 1.01762 +1.02849 1.01641 1.02426 1.01883 1.01218 1.02608 1.02608 1.01702 +1.014 1.02004 1.0146 1.01883 1.014 1.01702 1.01822 1.0146 +1.0146 1.014 1.02185 1.0146 1.01641 1.01943 1.0297 1.02245 +1.01943 1.01581 1.01822 1.02487 1.02789 1.03453 1.03091 1.04238 +1.04782 1.05567 0.40033 0 0 0 0 0 +0 0 0 0 0 0 0 0.00401333 +0.00602 0 0 0 0 0 0 0.00301 +0.00301 0.00602 0 0 0 0 0 0.00200667 +0.00301 0.00802667 0.00602 0.00702333 0.00903 0.00702333 0.00100333 0.00602 +0.00702333 0.00200667 0 0 0.00501667 0.00501667 0 0 +0.00100333 0.00200667 0.00702333 0.00200667 0 0.00401333 0.00200667 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0.00702333 0.00903 0 0 0 0 0 +0 0 0.00200667 0.00301 0.00200667 0 0 0 +0 0 0 0 0.494643 1.05507 1.04842 1.03997 +1.03453 1.0303 1.02849 1.02306 1.02306 1.02124 1.01762 1.02547 +1.03272 1.02849 1.02004 1.0152 1.02245 1.02608 1.01581 1.02064 +1.02124 1.01943 1.02366 1.01883 1.02064 1.01641 1.02668 1.01943 +1.02306 1.01883 1.01641 1.02547 1.01883 1.01581 1.02064 1.02185 +1.01822 1.02004 1.014 0.979568 1.01218 1.03091 1.0291 1.02668 +1.02306 1.014 1.0146 1.01218 1.01943 1.02728 1.02124 1.02004 +1.02004 1.01702 1.02245 1.02306 1.01883 1.0152 1.02487 1.04359 +1.0303 1.03997 1.03936 1.0303 1.04057 1.04238 1.03997 1.02064 +1.02426 1.01218 1.0291 1.0152 1.02185 1.01581 1.014 1.01339 +1.01581 1.01581 1.0146 1.00554 1.00916 1.014 1.0146 1.00614 +1.01279 1.01883 1.02487 1.02245 1.02064 1.02487 1.01883 1.02668 +1.0152 1.02064 1.02185 1.02185 1.01883 1.02426 1.0291 1.01762 +1.03936 1.05205 1.04238 1.04661 1.0442 1.04963 1.05205 1.04903 +1.0454 1.03634 1.04661 1.04782 1.03514 1.01641 1.0146 1.02124 +1.02185 1.02789 1.02004 1.02064 1.02185 1.01279 1.014 1.01883 +1.02728 1.02728 1.0152 1.01218 1.02185 1.01641 1.0152 1.01822 +1.01822 1.01098 1.02004 1.02245 1.02064 1.02668 1.02124 1.02124 +1.02366 1.0152 1.01883 1.02245 1.01641 1.01641 1.0146 1.01762 +1.02185 1.02185 1.02547 1.02004 1.02366 1.02608 1.02306 1.02487 +1.02124 1.02426 1.02789 1.02668 1.0303 1.0297 1.02789 1.04178 +1.04238 1.05326 0.576917 0 0 0 0 0 +0 0 0 0 0 0.00200667 0.00401333 0 +0 0 0.00301 0.00100333 0 0.00301 0.00602 0.00501667 +0.00100333 0.00301 0.00100333 0 0 0.00200667 0.00501667 0.00802667 +0.00802667 0.00401333 0 0 0 0 0.00401333 0.00100333 +0.00501667 0.00401333 0.00200667 0.00301 0.00100333 0 0.00401333 0.00702333 +0 0 0 0.00200667 0 0 0 0.00100333 +0.00100333 0.00100333 0 0 0.00200667 0 0 0 +0 0.00100333 0.00200667 0.01505 0.0130433 0.00802667 0 0 +0.00501667 0.00301 0 0.00501667 0.00401333 0 0 0 +0.00602 0.00100333 0 0 0 0 0 0 +0 0 0 0 0.67284 1.05084 1.0442 1.03393 +1.02608 1.02849 1.03212 1.03091 1.02366 1.02185 1.01883 1.01883 +1.02306 1.01943 1.01822 1.01581 1.0152 1.01822 1.02185 1.01883 +1.01822 1.0146 1.0146 1.02124 1.02124 1.0146 1.02064 1.02366 +1.01641 1.0297 1.02124 1.01098 1.01762 1.01822 1.02426 1.02004 +1.02789 1.02306 1.02004 0.983796 1.02487 1.02366 1.02245 1.0291 +1.0291 1.02849 1.02849 1.01641 1.01943 1.0303 1.0297 1.0291 +1.01943 1.02366 1.01822 1.02789 1.01641 1.02245 1.02487 1.03212 +1.03272 1.04299 1.03755 1.03634 1.02366 1.02124 1.01762 1.02306 +1.02245 1.02185 1.01581 1.02064 1.0152 1.01339 1.02064 1.02185 +1.02366 1.01762 1.00252 1.01218 1.0146 1.01822 1.02366 1.02668 +1.0146 1.02004 1.02426 1.00977 1.02547 1.01581 1.02124 1.01339 +1.02064 1.02487 1.0303 1.01581 1.02064 1.01943 1.02366 1.02185 +1.0303 1.04178 1.04782 1.05688 1.04057 1.03936 1.04722 1.0442 +1.04238 1.05205 1.04722 1.02366 1.01339 1.01037 1.0146 1.0303 +1.02124 1.01158 1.02064 1.02728 1.02306 1.02849 1.02547 1.01943 +1.014 1.02728 1.01943 1.00675 1.02306 1.02245 1.01943 1.01822 +1.02185 1.01581 1.02245 1.01943 1.02306 1.01762 1.0152 1.02547 +1.01762 1.01581 1.01702 1.02547 1.01943 1.02245 1.01943 1.01762 +1.02849 1.02366 1.02608 1.02124 1.01641 1.01762 1.02668 1.01943 +1.02064 1.02124 1.02366 1.02124 1.02728 1.02789 1.02668 1.03695 +1.04057 1.05446 0.773304 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0 0 0 0.00401333 0.00401333 0 +0 0 0 0 0.00301 0.00200667 0.00401333 0 +0 0 0 0 0.00100333 0.00602 0.00301 0.00100333 +0 0 0 0.00301 0.00401333 0 0 0 +0.00200667 0.00401333 0 0 0.00301 0.00200667 0 0 +0 0.00301 0.00200667 0 0 0.00501667 0.00200667 0.00100333 +0 0 0 0 0.00100333 0.00602 0.00401333 0.0100333 +0 0 0.00301 0 0 0.00200667 0.00602 0 +0 0.00200667 0.00401333 0 0 0 0 0 +0 0 0 0 0.841568 1.0605 1.04842 1.03997 +1.03695 1.02849 1.02849 1.02124 1.02124 1.02245 1.02124 1.01762 +1.01279 1.01581 1.01581 1.02064 1.01581 1.02064 1.02004 1.02306 +1.02004 1.02728 1.02185 1.02849 1.02668 1.02487 1.02728 1.02245 +1.02185 1.01943 1.01581 1.02789 1.02426 1.02124 1.02124 1.02064 +1.01822 1.02124 0.998896 0.997688 1.01943 1.01822 1.02004 1.02004 +1.01339 1.01822 1.02306 1.02487 1.01641 1.0146 1.01641 1.02185 +1.02306 1.01822 1.02306 1.02185 1.01883 1.02004 1.01883 1.014 +1.02306 1.0152 1.01762 1.02306 1.01822 1.02366 1.01883 1.01943 +1.02064 1.02306 1.02064 1.0291 1.02245 1.03332 1.01822 1.02004 +1.02004 1.01822 1.0152 1.0152 1.02306 1.0146 1.01702 1.014 +1.02608 1.02124 1.02245 1.01762 1.01762 1.03091 1.02487 1.01641 +1.02547 1.02245 1.01943 1.02668 1.02124 1.01762 1.02064 1.02124 +1.014 1.0297 1.03695 1.03634 1.05144 1.05688 1.04299 1.04299 +1.04299 1.03936 1.02487 1.02124 1.02366 1.02124 1.02728 1.0146 +1.01762 1.0291 1.02547 1.02426 1.02245 1.00856 1.01762 1.02668 +1.02306 1.02185 1.01339 1.01762 1.01702 1.01883 1.02487 1.02185 +1.02668 1.01581 1.01641 1.01762 1.01702 1.01822 1.02668 1.02064 +1.02366 1.01943 1.02245 1.01581 1.01702 1.02245 1.01037 1.02185 +1.01943 1.02124 1.0152 1.01641 1.0152 1.02064 1.0152 1.01581 +1.02789 1.02608 1.02487 1.02245 1.0291 1.0297 1.03332 1.03212 +1.0454 1.05688 0.931248 0.0341133 0 0 0 0 +0 0 0 0 0.00501667 0.00100333 0 0 +0 0 0 0.00100333 0.00702333 0 0 0 +0.00301 0.00301 0.00401333 0.01204 0.00602 0 0 0.00301 +0 0 0 0.00501667 0.00501667 0 0 0 +0 0 0.00401333 0.00301 0 0.00100333 0.00301 0.00301 +0 0 0 0 0 0 0.00301 0.00100333 +0.00100333 0 0 0.00200667 0.00200667 0.00200667 0.00301 0.00501667 +0.0110367 0.01204 0.00702333 0 0 0 0 0 +0 0 0.00200667 0.00702333 0.00501667 0.00301 0 0.00301 +0 0 0 0 0 0 0 0 +0 0 0 0.0381267 0.943932 1.05326 1.04299 1.03755 +1.03272 1.02728 1.02124 1.01883 1.02306 1.02366 1.02245 1.02487 +1.01641 1.02064 1.02728 1.01702 1.02366 1.02064 1.01702 1.02124 +1.01581 1.02547 1.02547 1.02487 1.02366 1.0152 1.02064 1.02306 +1.02245 1.02547 1.01702 1.01098 1.01883 1.02487 1.00796 1.02487 +1.02064 1.01158 0.985608 1.00916 1.0303 1.02608 1.02668 1.01943 +1.02306 1.03212 1.02608 1.02728 1.02668 1.02547 1.02608 1.02124 +1.03151 1.03453 1.01883 1.03091 1.02426 1.02426 1.02849 1.03091 +1.02306 1.01822 1.02487 1.02426 1.02366 1.01943 1.02004 1.02004 +1.02306 1.02245 1.02547 1.01581 1.03272 1.02306 1.02487 1.01581 +1.02366 1.02366 1.02124 1.01098 1.01339 1.02064 1.01883 1.01581 +1.03091 1.01762 1.01158 1.01279 1.02366 1.0146 1.01339 1.02487 +1.02426 1.01702 1.0297 1.02608 1.01822 1.02064 1.02004 1.02124 +1.01339 1.02124 1.01641 1.01943 1.02849 1.02668 1.02789 1.02064 +1.0146 1.02064 1.02306 1.01641 1.02668 1.02728 1.01158 1.01218 +1.02245 1.02608 1.01762 1.0152 1.01279 1.02124 1.02185 1.02306 +1.01641 1.02306 1.02487 1.01279 1.00675 1.02366 1.02124 1.00856 +1.01339 1.0297 1.02185 1.02608 1.01762 1.02547 1.02306 1.02245 +1.03212 1.02487 1.02245 1.02245 1.02366 1.02668 1.02366 1.02366 +1.02064 1.014 1.02124 1.02366 1.02185 1.02124 1.01762 1.02064 +1.0146 1.01581 1.02004 1.02245 1.02789 1.02668 1.03151 1.03634 +1.0448 1.04782 0.976548 0.09331 0 0 0 0 +0 0 0.00301 0.00301 0 0 0 0.00802667 +0.0140467 0.00903 0.00200667 0 0 0 0 0.00100333 +0.00100333 0.00200667 0 0 0 0 0 0 +0 0.0100333 0.00702333 0.00301 0 0 0 0.00301 +0.00301 0.00200667 0.00200667 0 0.00401333 0 0 0 +0 0 0 0 0.00100333 0 0 0.00100333 +0 0.00200667 0.00602 0 0 0 0 0 +0 0 0 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.09632 0.995876 1.05507 1.03997 1.03453 +1.03514 1.0297 1.02426 1.02487 1.01762 1.02185 1.02185 1.02789 +1.0297 1.02306 1.00856 1.0146 1.01762 1.02004 1.02487 1.03151 +1.03393 1.02004 1.01581 1.01943 1.02366 1.02306 1.02366 1.03272 +1.02426 1.0291 1.02668 1.0146 1.01339 1.01943 1.01883 1.02487 +1.02849 1.02306 0.99648 1.02366 1.02064 1.02306 1.02306 1.01702 +1.02124 1.02004 1.02245 1.02426 1.02849 1.02849 1.01762 1.02668 +1.0152 1.0303 1.0291 1.0297 1.02608 1.03755 1.02728 1.02064 +1.02245 1.01762 1.01339 1.02426 1.02547 1.02366 1.0152 1.02306 +1.02426 1.02306 1.02064 1.02004 1.01822 1.01822 1.02306 1.01943 +1.01702 1.02124 1.02004 1.0152 1.02245 1.00977 1.02728 1.01822 +1.01702 1.01581 1.02668 1.02668 1.03332 1.02608 1.02064 1.02124 +1.03091 1.01883 1.0146 1.02064 1.01883 1.0297 1.01037 1.02245 +1.01762 1.0146 1.014 1.02849 1.02849 1.02306 1.00735 1.0291 +1.0291 1.01943 1.02124 1.0303 1.02245 1.02124 1.02064 1.01762 +1.02789 1.02728 1.02366 1.0146 1.02366 1.02547 1.02004 1.02547 +1.01762 1.02366 1.03212 1.02306 1.014 1.01943 1.02366 1.0146 +1.01883 1.01762 1.02064 1.01883 1.01883 1.02064 1.01581 1.01581 +1.00796 1.02064 1.02004 1.02306 1.02426 1.01943 1.02124 1.02245 +1.01883 1.02547 1.01883 1.0152 1.01883 1.01641 1.01641 1.02185 +1.02306 1.03151 1.02547 1.02185 1.02487 1.02426 1.0291 1.03332 +1.0448 1.05326 1.01762 0.169563 0 0 0 0 +0 0 0 0 0 0 0.00301 0.00200667 +0.00100333 0 0.00200667 0.00602 0.00903 0.00903 0.0100333 0.01204 +0.0110367 0.00200667 0 0 0.00100333 0 0 0.00501667 +0.0110367 0.00301 0 0.00301 0.00401333 0.00100333 0 0.00200667 +0.00200667 0.00100333 0 0.00200667 0 0 0 0 +0 0.00301 0.00100333 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0.00501667 0.00401333 0 +0 0 0 0.00401333 0.00301 0.00702333 0.00401333 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0.148493 1.01098 1.04963 1.03695 1.02668 +1.02849 1.02668 1.02306 1.02185 1.02426 1.02124 1.01762 1.01339 +1.01218 1.0152 1.03332 1.02426 1.02004 1.01883 1.01641 1.0146 +1.02245 1.02487 1.02547 1.0297 1.02487 1.03574 1.02245 1.03091 +1.02487 1.01822 1.02064 1.02608 1.02426 1.02789 1.02124 1.03332 +1.01822 1.00977 1.00614 1.01641 1.02185 1.02608 1.01883 1.02185 +1.01762 1.02306 1.01883 1.0291 1.02728 1.02487 1.03514 1.03453 +1.04178 1.03816 1.04178 1.03574 1.02547 1.0146 1.02004 1.01883 +1.01641 1.03634 1.01702 1.00675 1.02185 1.01581 1.02124 1.02064 +1.02124 1.02366 1.02487 1.01339 1.02426 1.01098 1.01581 1.03212 +1.02789 1.02004 1.02064 1.02849 1.02789 1.0146 1.01943 1.03453 +1.02185 1.02608 1.01641 1.0146 1.01641 1.02547 1.02728 1.01943 +1.01641 1.01822 1.0146 1.02487 1.0152 1.01762 1.02608 1.02004 +1.01762 1.01218 1.02306 1.01702 1.01279 1.0146 1.01943 1.02789 +1.01943 1.02426 1.03151 1.0146 1.01641 1.02487 1.0291 1.02306 +1.02124 1.0152 1.02124 1.02487 1.01883 1.0152 1.01943 1.02185 +1.01822 1.01641 1.02728 1.02306 1.0146 1.02245 1.02185 1.02547 +1.02608 1.01883 1.02426 1.02487 1.01581 1.02789 1.02124 1.0291 +1.0291 1.02185 1.02124 1.02004 1.02789 1.02185 1.02487 1.02547 +1.01762 1.01762 1.01339 1.02487 1.01641 1.014 1.02004 1.01762 +1.02306 1.01279 1.00554 1.02064 1.02245 1.0297 1.03212 1.03634 +1.04057 1.04722 1.03936 0.26488 0 0 0 0 +0 0 0 0 0.00100333 0.00200667 0 0 +0 0.00100333 0.00200667 0 0 0.00200667 0.00200667 0 +0 0 0.00301 0 0 0.00702333 0.0100333 0.00501667 +0 0.00200667 0.00200667 0 0.00200667 0.00501667 0.00401333 0.00100333 +0 0 0 0.00501667 0 0.00301 0.00200667 0 +0 0 0 0 0 0.00602 0.00401333 0.00501667 +0 0 0 0 0 0.00100333 0.00200667 0.00802667 +0.00301 0.00100333 0 0.0100333 0.00903 0.00401333 0 0.00602 +0.0110367 0.00401333 0 0 0.00200667 0 0 0 +0.00301 0 0 0 0 0 0 0 +0 0 0 0.22876 1.03634 1.04903 1.04057 1.03212 +1.0291 1.0297 1.02547 1.02668 1.02185 1.01943 1.02487 1.02426 +1.02426 1.02366 1.02306 1.02728 1.02306 1.02789 1.02789 1.02668 +1.02789 1.03151 1.03332 1.03332 1.03695 1.02608 1.03272 1.03332 +1.03695 1.03393 1.02245 1.02547 1.0146 1.02004 1.01762 1.02789 +1.01883 1.00856 1.00796 1.02064 1.01762 1.02608 1.01943 1.02366 +1.02668 1.02849 1.02245 1.02789 1.03997 1.03997 1.03936 1.04903 +1.04238 1.0448 1.04359 1.04359 1.03936 1.03272 1.0291 1.02668 +1.02487 1.02789 1.03997 1.02668 1.02245 1.02064 1.02124 1.02849 +1.01943 1.01339 1.02124 1.01702 1.02245 1.01641 1.01279 1.02004 +1.01762 1.0146 1.01762 1.02789 1.00916 1.01098 1.03212 1.00312 +1.01822 1.03151 1.01702 1.02124 1.01883 1.01822 1.01943 1.01943 +1.02185 1.02668 1.0291 1.02064 1.02487 1.0291 1.02849 1.02426 +1.02306 1.0303 1.02849 1.01581 1.02185 1.01883 1.02487 1.02064 +1.02608 1.03514 1.02547 1.02668 1.03453 1.0303 1.01943 1.02487 +1.01943 1.02366 1.0303 1.0291 1.03151 1.0303 1.01218 1.02124 +1.02124 1.02789 1.01762 1.02668 1.00735 1.01702 1.0152 1.01762 +1.0146 1.02366 1.03393 1.02306 1.01762 1.0291 1.02004 1.0291 +1.02426 1.03151 1.0303 1.0291 1.02185 1.02487 1.02487 1.01702 +1.01883 1.0297 1.02245 1.02789 1.01943 1.01339 1.01822 1.02185 +1.01762 1.01762 1.02366 1.02668 1.02547 1.02487 1.0297 1.03393 +1.03574 1.04299 1.04963 0.353173 0 0 0 0 +0 0 0 0 0 0.00301 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0.00100333 0.00100333 0.0100333 0 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0.00602 0.00702333 0.00401333 0 0 0.00100333 0.00301 +0 0.00200667 0.00501667 0.00401333 0.00200667 0.00100333 0 0 +0.00702333 0.00401333 0 0 0 0 0 0 +0.00200667 0.00501667 0.00200667 0 0 0 0 0 +0 0.00501667 0.00802667 0 0 0.00100333 0.00903 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0.290967 1.04238 1.05265 1.04299 1.03634 +1.03272 1.02124 1.02185 1.02668 1.02487 1.01822 1.01702 1.01943 +1.01822 1.0152 1.01883 1.01702 1.01822 1.02004 1.02306 1.03212 +1.03876 1.03212 1.00856 0.986816 0.962656 0.992252 1.01581 1.02789 +1.03332 1.03634 1.02426 1.03393 1.01883 1.02487 1.02728 1.02849 +1.0291 1.00071 1.01158 1.02306 1.02306 1.02426 1.01883 1.02728 +1.02004 1.02608 1.02306 1.03997 1.03755 1.04359 1.01037 0.935476 +0.855736 0.81452 0.934268 1.00977 1.03453 1.0442 1.03332 1.03574 +1.03212 1.02789 1.02185 1.02366 1.02426 1.00856 1.02185 1.02306 +1.02306 1.02426 1.02004 1.0152 1.02185 1.01762 1.02728 1.0297 +1.02426 1.02064 1.02064 1.02064 1.02004 1.0146 1.02668 1.0291 +1.0146 1.02487 1.02306 1.01762 1.01822 1.01762 1.01883 1.01883 +1.01943 1.02124 1.02366 1.02185 1.01641 1.02245 1.00916 1.02366 +1.01822 1.0152 1.01037 1.0146 1.02245 1.02849 1.01943 1.02487 +1.0291 1.0297 1.02547 1.03151 1.02668 1.02306 1.03091 1.03091 +1.03453 1.02789 1.02608 1.02185 1.02608 1.0291 1.02124 1.0291 +1.03212 1.02366 1.02306 1.0146 1.02608 1.0146 1.02185 1.02124 +1.02366 1.01883 1.0146 1.02245 1.01943 1.02547 1.03634 1.02547 +1.03272 1.03332 1.02789 1.02124 1.02547 1.03514 1.02608 1.01943 +1.02487 1.01581 1.01943 1.0291 1.02366 1.02728 1.02185 1.02245 +1.02245 1.0291 1.02306 1.02366 1.01822 1.02306 1.02547 1.03212 +1.03695 1.04359 1.04963 0.458523 0 0 0 0 +0 0 0 0 0.00200667 0 0 0 +0 0 0.00702333 0.00702333 0 0.00100333 0.00200667 0.00301 +0.00501667 0.00301 0.00301 0 0 0.00100333 0.00602 0.00301 +0.00100333 0.00200667 0.00401333 0.00401333 0.00602 0.00501667 0.00702333 0.00200667 +0.00602 0.00702333 0.00401333 0 0.00301 0.00100333 0 0 +0.00100333 0.00200667 0 0 0 0 0.00100333 0.00401333 +0.00200667 0 0.00401333 0.00802667 0 0 0.00401333 0 +0 0 0 0.00200667 0.00301 0 0 0.00401333 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.365213 1.05386 1.04782 1.03453 1.02728 +1.02668 1.02608 1.02728 1.02004 1.02366 1.0291 1.02668 1.02064 +1.02306 1.02124 1.01822 1.02366 1.02366 1.0303 1.03453 1.02789 +0.949972 0.681856 0.521733 0.492637 0.473573 0.48762 0.563873 0.797776 +1.00071 1.03514 1.03574 1.02789 1.0303 1.01822 1.02064 1.0146 +1.01339 0.991044 1.02306 1.02728 1.02728 1.02185 1.02728 1.02668 +1.02728 1.03272 1.03695 1.03755 0.986816 0.59598 0.281937 0.182607 +0.137457 0.130433 0.15652 0.303007 0.59899 0.997084 1.0454 1.03453 +1.0297 1.0291 1.02849 1.03151 1.03212 1.02426 1.02608 1.01218 +1.01339 1.02487 1.01702 1.02426 1.01037 1.01641 1.02728 1.02366 +1.02124 1.0146 1.0146 1.01641 1.02004 1.02004 1.00916 1.01641 +1.01762 1.01883 1.02426 1.01158 1.0152 1.01822 1.02608 1.0146 +1.02004 1.0152 1.02547 1.02366 1.02789 1.02547 1.02487 1.02245 +1.00977 1.02124 1.01943 1.02487 1.0303 1.02185 1.03212 1.02487 +1.03091 1.03816 1.03695 1.03091 1.04057 1.04118 1.04178 1.03272 +1.03514 1.03514 1.0291 1.0297 1.02245 1.02124 1.01702 1.03212 +1.02245 1.01641 1.02366 1.02668 1.02487 1.014 1.02547 1.02306 +1.02426 1.02426 1.02306 1.02547 1.0291 1.03514 1.0303 1.03393 +1.03634 1.02064 1.01943 1.02064 1.03332 1.02426 1.02789 1.02849 +1.0291 1.0297 1.03272 1.01581 1.01883 1.01641 1.01581 1.01279 +1.02004 1.01822 1.02547 1.02185 1.02004 1.02426 1.03272 1.02728 +1.03574 1.05024 1.0605 0.558857 0 0 0 0 +0 0 0 0 0 0.00100333 0 0.00100333 +0 0 0 0.00100333 0.00200667 0 0 0.00802667 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0 0.00100333 0.00301 +0 0 0 0.0100333 0 0 0.00100333 0.00702333 +0.00200667 0 0 0 0 0.00301 0 0 +0 0 0 0 0.00100333 0 0 0.00602 +0.00802667 0 0 0 0 0 0.00100333 0 +0.00200667 0.00301 0 0.00602 0.00602 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0 0 0 0.419393 1.05567 1.0442 1.03514 1.03574 +1.04118 1.02608 1.02487 1.02547 1.02245 1.02426 1.0152 1.02124 +1.02124 1.02306 1.02608 1.01943 1.02668 1.03212 1.01581 0.770728 +0.46053 0.432437 0.43946 0.444477 0.452503 0.461533 0.46655 0.462537 +0.55986 0.934872 1.03151 1.02185 1.02668 1.0303 1.02849 1.0303 +1.02306 0.988024 1.02004 1.02366 1.01883 1.02608 1.02849 1.02668 +1.03393 1.04057 1.04722 0.926416 0.315047 0.12341 0.12341 0.128427 +0.130433 0.128427 0.113377 0.107357 0.112373 0.303007 0.905968 1.04118 +1.0442 1.02608 1.02366 1.03393 1.02185 1.02849 1.02728 1.02668 +1.02004 1.0146 1.02366 1.02728 1.02004 1.02004 1.014 1.02849 +1.02608 1.01762 1.0146 1.02306 1.02366 1.02426 1.02185 1.02064 +1.02124 1.01762 1.01762 1.02185 1.0303 1.02124 1.01762 1.02185 +1.02728 1.02728 1.02487 1.02668 1.03272 1.02064 1.01883 1.01943 +1.02608 1.02426 1.03212 1.02124 1.02668 1.02789 1.02487 1.03212 +1.03393 1.03151 1.04661 1.0291 1.02608 1.01218 1.01702 1.03876 +1.04903 1.0442 1.03936 1.03514 1.02547 1.02728 1.02849 1.03091 +1.02185 1.01702 1.01883 1.01581 1.0152 1.01762 1.01822 1.02668 +1.0146 1.02849 1.02426 1.03212 1.03453 1.04057 1.00433 0.91112 +0.710192 0.581933 0.555847 0.58695 0.716632 0.944536 1.014 1.03393 +1.02668 1.02487 1.0303 1.02487 1.01702 1.02004 1.02306 1.01702 +1.02728 1.02124 1.02306 1.01943 1.02306 1.02728 1.02487 1.0297 +1.03332 1.0448 1.05144 0.626472 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0.00200667 0 0 0.00100333 0.00100333 0 +0 0 0 0 0 0.00501667 0.00602 0 +0 0 0.00501667 0.00702333 0 0.00200667 0.00100333 0 +0 0.00702333 0.00501667 0 0.00401333 0.00602 0.00100333 0 +0 0 0.00200667 0.00200667 0 0 0 0.0100333 +0.00702333 0 0 0 0 0.00301 0.00401333 0 +0 0 0.00100333 0.00100333 0.00200667 0 0 0 +0 0 0.00301 0.00200667 0 0.00802667 0.0160533 0.00802667 +0.00602 0 0 0.00602 0 0 0 0 +0 0 0 0.48461 1.0593 1.04782 1.03876 1.0303 +1.02185 1.02245 1.02608 1.02004 1.0152 1.01641 1.01883 1.01943 +1.02849 1.02185 1.01641 1.02366 1.02849 1.02004 0.773304 0.473573 +0.458523 0.45451 0.441467 0.467553 0.462537 0.45752 0.45451 0.45451 +0.46053 0.521733 0.9542 1.03695 1.02185 1.02245 1.02849 1.02547 +1.0152 0.99044 1.0303 1.02487 1.0303 1.0297 1.02547 1.0297 +1.04118 1.03514 0.931852 0.24983 0.122407 0.134447 0.14448 0.151503 +0.133443 0.143477 0.148493 0.13545 0.134447 0.11137 0.256853 0.929436 +1.04118 1.03453 1.0291 1.01943 1.01943 1.02849 1.02789 1.02487 +1.03212 1.0146 1.01943 1.0146 1.02124 1.02668 1.02185 1.02004 +1.02306 1.02487 1.01581 1.02306 1.02064 1.02306 1.0297 1.02306 +1.01641 1.02728 1.02124 1.0291 1.02306 1.02124 1.02185 1.02547 +1.02064 1.0146 1.02004 1.02306 1.02004 1.01883 1.02064 1.02124 +1.03091 1.01883 1.01762 1.01702 1.02608 1.02426 1.02728 1.03936 +1.04238 1.02487 0.876344 0.519727 0.32508 0.260867 0.29197 0.38829 +0.65352 0.970508 1.03755 1.03997 1.03997 1.03212 1.02728 1.02547 +1.01581 1.01883 1.02004 1.02487 1.02124 1.014 1.02849 1.02185 +1.02426 1.02728 1.03332 1.02849 1.02728 0.945744 0.599993 0.471567 +0.45451 0.444477 0.44548 0.447487 0.422403 0.449493 0.649656 0.9693 +1.03272 1.03151 1.02124 1.01218 1.02064 1.02124 1.02004 1.0297 +1.02547 1.01581 1.01702 1.02245 1.02789 1.0303 1.03212 1.03936 +1.03816 1.0442 1.05567 0.723072 0 0 0 0 +0 0 0 0 0.00100333 0 0 0.00100333 +0.00200667 0.0100333 0.00100333 0.00301 0.00501667 0 0 0.00200667 +0.00501667 0.00301 0.00702333 0.00802667 0.00501667 0 0 0.00200667 +0.00602 0.00401333 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00301 +0.00501667 0.00200667 0 0 0.00401333 0.00702333 0 0 +0.00301 0.00802667 0.00301 0 0.00100333 0 0 0.00401333 +0.00802667 0 0 0 0.00401333 0.00200667 0.00301 0.00501667 +0.00401333 0 0 0 0.00200667 0.00301 0 0 +0.00401333 0.00802667 0 0 0 0 0 0 +0 0 0 0.518723 1.05688 1.04661 1.03876 1.03091 +1.03332 1.02728 1.02306 1.02487 1.02185 1.02124 1.02064 1.01762 +1.0146 1.0303 1.02789 1.0291 1.03332 0.914984 0.492637 0.444477 +0.44849 0.455513 0.474577 0.458523 0.471567 0.470563 0.480597 0.46354 +0.455513 0.447487 0.56287 0.9995 1.03212 1.02608 1.02185 1.03332 +1.02245 0.995272 1.02004 1.02547 1.02426 1.02064 1.0291 1.03272 +1.02849 1.01339 0.383273 0.109363 0.11739 0.13545 0.157523 0.137457 +0.15652 0.16254 0.143477 0.142473 0.146487 0.122407 0.112373 0.362203 +1.00614 1.03997 1.03695 1.04057 1.0146 1.02789 1.02306 1.02064 +1.02124 1.01822 1.01822 1.02004 1.01883 1.0291 1.00675 1.0291 +1.01822 1.01883 1.02668 1.02608 1.02547 1.02185 1.02004 1.02849 +1.02124 1.01762 1.01158 1.02426 1.02124 1.01883 1.02366 1.02366 +1.0146 1.014 1.02124 1.01641 1.02185 1.02668 1.01822 1.02849 +1.01218 1.01943 1.02789 1.02064 1.02789 1.02487 1.03272 1.05507 +0.974736 0.462537 0.14749 0.109363 0.116387 0.116387 0.130433 0.13545 +0.124413 0.245817 0.708904 1.01943 1.03755 1.03514 1.02366 1.02668 +1.01943 1.02004 1.03212 1.02185 1.01883 1.01822 1.02124 1.02728 +1.02245 1.02426 1.03151 1.0291 0.930644 0.50869 0.458523 0.45752 +0.44548 0.456517 0.452503 0.45451 0.45752 0.443473 0.441467 0.537787 +0.952992 1.0297 1.03212 1.02547 1.02124 1.02426 1.02185 1.0146 +1.01943 1.02124 1.01641 1.02185 1.02608 1.02064 1.02608 1.02668 +1.03876 1.04782 1.05446 0.793912 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00602 0.00100333 0.00200667 0.00501667 0 +0.00200667 0 0 0.00301 0.00301 0.00301 0.00401333 0 +0 0 0 0.00100333 0.00301 0.00301 0 0 +0 0 0.00100333 0.00200667 0.00602 0.00501667 0.00301 0 +0 0.00401333 0.00802667 0.0100333 0.00301 0 0 0 +0 0 0 0 0 0.00100333 0.00501667 0.00401333 +0 0.00602 0.00903 0.00401333 0.00100333 0.00301 0 0 +0 0.00501667 0.00501667 0.00602 0.00301 0 0.00301 0 +0 0 0.00200667 0.0140467 0 0 0 0 +0 0 0 0.55685 1.05628 1.04601 1.03332 1.03212 +1.02366 1.02426 1.02789 1.02487 1.02185 1.02124 1.02064 1.02668 +1.02185 1.02547 1.03272 1.02849 1.00796 0.575913 0.44548 0.46354 +0.452503 0.46354 0.461533 0.465547 0.467553 0.477587 0.477587 0.46956 +0.473573 0.455513 0.450497 0.819672 1.03212 1.03272 1.0291 1.02668 +1.02306 1.00796 1.01883 1.02426 1.02366 1.02547 1.02064 1.03574 +1.04661 0.76944 0.133443 0.11438 0.125417 0.154513 0.15351 0.143477 +0.151503 0.16856 0.164547 0.176587 0.152507 0.142473 0.13244 0.146487 +0.80164 1.03634 1.03574 1.02608 1.02124 1.03514 1.01822 1.01762 +1.01762 1.02849 1.0303 1.01822 1.0303 1.0152 1.01702 1.02608 +1.01098 1.02426 1.0146 1.01581 1.03091 1.02668 1.0146 1.02426 +1.01702 1.02064 1.02608 1.02789 1.02366 1.01581 1.01822 1.01641 +1.02306 1.014 1.01702 1.0297 1.0152 1.02064 1.01883 1.01641 +1.0146 1.03091 1.01822 1.03091 1.03151 1.04238 1.04722 0.968696 +0.33411 0.100333 0.11739 0.122407 0.124413 0.14749 0.14147 0.137457 +0.133443 0.118393 0.149497 0.59899 1.03212 1.03876 1.02185 1.02064 +1.02185 1.02668 1.01883 1.02366 1.01822 1.01943 1.01943 1.01702 +1.02547 1.02789 1.03695 0.97534 0.530763 0.4515 0.46354 0.458523 +0.474577 0.468557 0.459527 0.477587 0.482603 0.461533 0.446483 0.444477 +0.588957 0.992252 1.02849 1.02306 1.02245 1.02004 1.02608 1.014 +1.01581 1.02426 1.02668 1.01822 1.02124 1.02789 1.02849 1.03332 +1.03574 1.03936 1.05446 0.858312 0.00802667 0 0 0 +0 0 0 0 0.00200667 0.00100333 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00200667 +0 0.00100333 0.00501667 0.00200667 0.00100333 0 0 0 +0.00100333 0.00401333 0.00501667 0.00903 0 0 0 0 +0 0 0 0 0.00100333 0.00301 0.00301 0.00200667 +0.00100333 0.00100333 0 0.00200667 0.00401333 0.00100333 0 0 +0 0 0 0 0 0 0.00401333 0.00301 +0.00702333 0.00702333 0.00702333 0 0 0 0 0.00401333 +0.00802667 0.00100333 0 0 0 0 0 0 +0 0 0 0.576917 1.0593 1.0442 1.03514 1.03453 +1.03212 1.02728 1.02245 1.02064 1.02306 1.0146 1.01883 1.02185 +1.02124 1.0297 1.02487 1.03212 0.932456 0.479593 0.458523 0.462537 +0.471567 0.467553 0.450497 0.471567 0.455513 0.482603 0.47859 0.473573 +0.474577 0.465547 0.453507 0.582937 1.00856 1.03393 1.03755 1.02124 +1.01581 1.01158 1.03212 1.0291 1.02245 1.0297 1.02668 1.03151 +1.03151 0.44548 0.1204 0.13846 0.13244 0.143477 0.15351 0.15953 +0.166553 0.164547 0.14147 0.157523 0.1806 0.155517 0.13846 0.134447 +0.468557 1.02849 1.03393 1.02064 1.02547 1.02668 1.02426 1.01943 +1.02487 1.03453 1.02004 1.02064 1.01702 1.0152 1.02124 1.0146 +1.0291 1.0146 1.02728 1.02245 1.02728 1.01943 1.01883 1.02124 +1.00494 1.0291 1.0146 1.01883 1.02306 1.02668 1.01158 1.02064 +1.01883 1.03091 1.02245 1.02426 1.01641 1.03453 1.01822 1.02366 +1.02245 1.03091 1.02728 1.0291 1.03393 1.03332 1.01158 0.413373 +0.0903 0.11137 0.134447 0.140467 0.137457 0.146487 0.142473 0.14147 +0.145483 0.143477 0.134447 0.16254 0.778456 1.0448 1.0291 1.03151 +1.02668 1.02366 1.02185 1.02426 1.02487 1.01279 1.0146 1.02306 +1.03393 1.03755 1.02487 0.69216 0.443473 0.465547 0.456517 0.47859 +0.474577 0.476583 0.485613 0.482603 0.462537 0.47257 0.455513 0.44548 +0.437453 0.804216 1.02245 1.02426 1.02366 1.01641 1.014 1.01822 +1.02789 1.02306 1.02728 1.02547 1.02245 1.02608 1.02849 1.02849 +1.03332 1.04057 1.05748 0.896952 0.00903 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00602 0.00301 0.00702333 0.0100333 0.00200667 0 0 0 +0 0.00401333 0 0 0 0 0 0 +0.00903 0.0100333 0.00602 0.00301 0 0 0 0 +0.00100333 0.00200667 0.00401333 0.00401333 0 0 0.00200667 0.00200667 +0 0.00301 0.00301 0.00301 0 0 0 0 +0 0.00100333 0 0 0 0 0.00200667 0.00301 +0.00200667 0 0.00301 0.00501667 0.00702333 0 0 0 +0.00200667 0 0 0.00401333 0.00200667 0 0 0 +0 0 0.00401333 0.00501667 0 0 0 0 +0 0 0 0.590963 1.05084 1.04178 1.03514 1.0291 +1.02366 1.02004 1.02004 1.02668 1.02789 1.02185 1.01822 1.01822 +1.01943 1.02547 1.02245 1.03574 0.809368 0.462537 0.464543 0.45451 +0.453507 0.46354 0.468557 0.465547 0.473573 0.479593 0.464543 0.47257 +0.480597 0.46354 0.43946 0.49966 0.971716 1.03091 1.0297 1.02608 +1.00856 1.01339 1.02849 1.01702 1.03212 1.02185 1.03816 1.03514 +1.00614 0.281937 0.115383 0.134447 0.13846 0.151503 0.15652 0.149497 +0.16856 0.17759 0.164547 0.16555 0.155517 0.155517 0.149497 0.12943 +0.293977 1.01279 1.03634 1.0297 1.03574 1.02064 1.02608 1.0146 +1.01641 1.02064 1.01762 1.02366 1.02608 1.02064 1.02608 1.01822 +1.00796 1.03212 1.02789 1.02547 1.02547 1.02245 1.01581 1.014 +1.03272 1.02547 1.02306 1.01762 1.0146 1.02245 1.02849 1.03091 +1.02366 1.01822 1.02185 1.01883 1.0303 1.014 1.01822 1.02245 +1.01581 1.03272 1.02245 1.02668 1.03151 1.0454 0.786184 0.12943 +0.101337 0.106353 0.13545 0.137457 0.148493 0.15953 0.15953 0.15953 +0.173577 0.181603 0.140467 0.0923067 0.31003 0.997084 1.04661 1.03574 +1.01883 1.03272 1.03151 1.02064 1.02245 1.00856 1.014 1.03695 +1.02849 1.02668 0.988024 0.507687 0.43946 0.455513 0.46053 0.47257 +0.49364 0.48461 0.465547 0.482603 0.473573 0.47257 0.468557 0.461533 +0.455513 0.56889 1.01037 1.03634 1.02245 1.02849 1.01943 1.02789 +1.02124 1.02004 1.02064 1.01641 1.02366 1.02426 1.02366 1.02547 +1.03695 1.04299 1.05084 0.895664 0.01204 0 0 0 +0 0 0 0.00301 0.00100333 0 0 0.00100333 +0 0 0 0 0 0 0.00401333 0.00501667 +0.00401333 0.0100333 0.00903 0.00903 0.01204 0.01505 0.00802667 0 +0 0 0 0 0 0.00401333 0.00100333 0 +0 0 0 0 0 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0.00401333 0.00401333 0.00100333 0.00602 +0.00702333 0.00401333 0 0 0.00301 0.0110367 0.00602 0 +0 0 0 0 0.00501667 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.62132 1.05869 1.04842 1.03936 1.03393 +1.02487 1.01943 1.02306 1.02124 1.02004 1.02245 1.02366 1.02004 +1.0152 1.01943 1.02487 1.02547 0.729512 0.437453 0.438457 0.46053 +0.467553 0.479593 0.474577 0.482603 0.482603 0.474577 0.47257 0.459527 +0.462537 0.465547 0.443473 0.471567 0.950576 1.02668 1.03212 1.03151 +1.01822 1.02124 1.02004 1.02487 1.02306 1.02064 1.02849 1.03212 +0.994064 0.24682 0.125417 0.136453 0.149497 0.155517 0.173577 0.161537 +0.164547 0.16555 0.167557 0.164547 0.169563 0.15652 0.145483 0.124413 +0.242807 1.00131 1.04118 1.03272 1.02306 1.02668 1.02245 1.01762 +1.02728 1.02185 1.01762 1.01702 1.0146 1.01702 1.03091 1.0146 +1.02185 1.01822 1.02064 1.014 1.0152 1.02608 1.01098 0.969904 +1.02306 1.01822 1.02849 1.0146 1.02245 1.02124 1.01883 1.02547 +1.02608 1.02366 1.01581 1.01943 1.01641 1.02004 1.03212 1.02064 +1.02124 1.02608 1.02306 1.03393 1.04601 1.02668 0.401333 0.0943133 +0.0953167 0.128427 0.142473 0.146487 0.175583 0.160533 0.164547 0.16555 +0.191637 0.19565 0.16254 0.106353 0.131437 0.818384 1.04238 1.03151 +1.02728 1.03272 1.02487 1.03091 1.02124 1.00373 1.03091 1.03453 +1.02185 1.02668 0.912408 0.462537 0.455513 0.455513 0.48762 0.473573 +0.470563 0.474577 0.47558 0.471567 0.479593 0.470563 0.46354 0.444477 +0.46053 0.476583 0.95118 1.02547 1.01943 1.02547 1.02487 1.0297 +1.02185 1.01943 1.02124 1.02004 1.02245 1.02608 1.02547 1.04118 +1.04359 1.0454 1.05144 0.907256 0.0190633 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0 0 0 0.00301 0 0.00802667 +0.00301 0 0 0 0 0 0 0 +0.00301 0.00501667 0.00602 0.00501667 0.00200667 0.00100333 0.00602 0.00602 +0.0100333 0.00702333 0.00401333 0 0 0 0.00100333 0.00100333 +0.00200667 0.00602 0.00200667 0 0.00100333 0.00301 0.00401333 0.00602 +0.00501667 0 0.00200667 0.00501667 0 0 0 0 +0 0 0.00301 0.00401333 0 0 0 0.00401333 +0.00602 0.00301 0.00702333 0.0130433 0.00602 0.00602 0.00501667 0 +0 0 0 0 0 0 0 0 +0 0 0 0.616168 1.05748 1.04359 1.03755 1.03212 +1.0291 1.03151 1.03332 1.01883 1.02004 1.02366 1.0297 1.02668 +1.02306 1.02426 1.02547 1.03151 0.739816 0.449493 0.46053 0.45451 +0.458523 0.456517 0.47257 0.46354 0.471567 0.477587 0.47859 0.47257 +0.483607 0.46655 0.452503 0.489627 0.95722 1.03936 1.02245 1.03393 +1.02004 1.014 1.02004 1.02608 1.03151 1.02608 1.02487 1.03272 +1.00192 0.266887 0.125417 0.134447 0.146487 0.146487 0.15953 0.16555 +0.184613 0.169563 0.154513 0.140467 0.1505 0.158527 0.125417 0.115383 +0.268893 1.014 1.02668 1.03272 1.02728 1.02185 1.02064 1.0297 +1.01883 1.02668 1.02426 1.0146 1.02124 1.02426 1.00916 1.02366 +1.02245 1.02306 1.02668 1.02547 1.01822 1.01762 0.926416 0.251837 +0.965676 1.02185 1.01762 1.02668 1.01581 1.02245 1.02487 1.0146 +1.02608 1.01581 1.00977 1.02306 1.03091 1.01702 1.0146 1.02064 +1.0146 1.0291 1.02124 1.03151 1.04359 0.989232 0.232773 0.11137 +0.125417 0.130433 0.131437 0.160533 0.166553 0.161537 0.17759 0.167557 +0.166553 0.163543 0.151503 0.118393 0.0903 0.549827 1.03634 1.0303 +1.0297 1.02245 1.01762 1.02366 1.03091 1.014 1.02185 1.03151 +1.03212 1.03514 0.838992 0.447487 0.44548 0.464543 0.467553 0.479593 +0.4816 0.47257 0.47859 0.476583 0.47558 0.474577 0.467553 0.447487 +0.453507 0.459527 0.907256 1.03151 1.02004 1.02426 1.02366 1.01943 +1.02124 1.02124 1.02487 1.02426 1.02124 1.02004 1.03514 1.02487 +1.02789 1.03876 1.05326 0.903392 0.0160533 0 0 0 +0 0.00100333 0 0 0 0 0 0 +0 0 0 0 0.00200667 0 0 0 +0 0 0.00301 0.00501667 0.00401333 0.00100333 0.00401333 0.00200667 +0.00200667 0.00401333 0.00802667 0.00602 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.00501667 0.00200667 0.00100333 0 0 +0 0.00602 0.00401333 0 0 0 0.00401333 0.00501667 +0.00200667 0.00200667 0 0 0.00200667 0.00301 0.00602 0.00401333 +0.00602 0.00802667 0 0 0 0 0 0.00200667 +0.00903 0.00100333 0 0.00301 0 0 0 0 +0 0 0 0.613592 1.05748 1.0448 1.03816 1.03695 +1.0303 1.02487 1.01581 1.02185 1.02245 1.02426 1.02306 1.01762 +1.0297 1.02487 1.02789 1.02849 0.850584 0.459527 0.453507 0.453507 +0.46354 0.462537 0.468557 0.471567 0.476583 0.473573 0.474577 0.474577 +0.474577 0.473573 0.44247 0.5117 0.9844 1.03393 1.03151 1.02789 +1.01339 1.02245 1.02668 1.03393 1.02306 1.02789 1.03332 1.03816 +1.02608 0.39732 0.121403 0.12642 0.142473 0.15652 0.158527 0.157523 +0.182607 0.166553 0.16254 0.136453 0.139463 0.146487 0.128427 0.112373 +0.39431 1.02668 1.03755 1.03514 1.01822 1.02608 1.02668 1.02547 +1.02245 1.01762 1.02064 1.0152 1.02728 1.01581 1.03151 1.01641 +1.01339 1.02426 1.0297 1.01883 1.0152 1.03393 1.00614 0.935476 +1.02064 1.03151 1.01822 1.0291 1.02547 1.02064 1.02064 1.01702 +1.02487 1.01762 1.0152 1.01581 1.02185 1.01822 1.02366 1.02124 +1.03151 1.01883 1.02124 1.0291 1.04238 0.9542 0.164547 0.12943 +0.13244 0.133443 0.148493 0.1505 0.166553 0.158527 0.16856 0.172573 +0.161537 0.1505 0.146487 0.14749 0.11739 0.43946 1.03212 1.02608 +1.03574 1.02849 1.02789 1.02547 1.0291 1.00312 1.01883 1.03393 +1.03332 1.03091 0.844144 0.46354 0.453507 0.458523 0.467553 0.462537 +0.471567 0.49364 0.474577 0.46053 0.465547 0.468557 0.464543 0.4515 +0.459527 0.47558 0.924604 1.03453 1.02728 1.02306 1.01883 1.0152 +1.02004 1.02547 1.01883 1.02185 1.02668 1.02547 1.02004 1.03514 +1.03634 1.04359 1.04782 0.880208 0.00802667 0 0 0 +0 0 0 0 0 0 0 0.00301 +0.00100333 0.00401333 0.00501667 0.00602 0 0 0 0.00100333 +0.00602 0.00200667 0 0 0 0.00100333 0.0100333 0.0100333 +0.0100333 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00301 +0 0 0.00100333 0.00501667 0.00602 0.00401333 0.00702333 0.00200667 +0 0.00100333 0.00702333 0.0110367 0.00301 0 0.00401333 0.00401333 +0.00200667 0 0.0100333 0.0110367 0.00200667 0 0 0 +0 0.00401333 0 0 0 0 0 0 +0 0 0 0.584943 1.05507 1.04601 1.03755 1.03272 +1.03272 1.02306 1.02185 1.02728 1.01822 1.0152 1.01943 1.02245 +1.02004 1.02426 1.0297 1.03453 0.967488 0.48461 0.443473 0.4515 +0.45451 0.46956 0.476583 0.47859 0.471567 0.47257 0.470563 0.470563 +0.465547 0.45752 0.453507 0.626472 1.0303 1.03514 1.02487 1.01943 +1.00373 1.00675 1.02849 1.02668 1.02789 1.02306 1.0291 1.03151 +1.04299 0.668976 0.124413 0.137457 0.139463 0.1505 0.151503 0.16555 +0.14448 0.151503 0.14448 0.15953 0.1505 0.134447 0.131437 0.107357 +0.676704 1.04238 1.03695 1.03151 1.02668 1.01702 1.02306 1.02547 +1.02426 1.01279 1.02064 1.02487 1.01158 1.01943 1.01641 1.02245 +1.02124 1.02608 1.0146 1.01581 1.01883 1.02608 1.02306 1.02668 +1.02487 1.02124 1.02668 1.02547 1.02306 1.02124 1.01762 1.02728 +1.01581 1.02849 1.01762 1.02004 1.0146 1.02547 1.03332 1.01822 +1.01822 1.02306 1.02426 1.03332 1.03574 0.953596 0.179597 0.12341 +0.130433 0.140467 0.146487 0.158527 0.161537 0.16555 0.161537 0.148493 +0.151503 0.14448 0.145483 0.12341 0.121403 0.435447 1.03332 1.03151 +1.02547 1.02426 1.02487 1.03212 1.02185 1.01098 1.02185 1.01943 +1.02608 1.03332 0.922712 0.458523 0.444477 0.47859 0.476583 0.474577 +0.476583 0.4816 0.482603 0.477587 0.479593 0.483607 0.4816 0.464543 +0.462537 0.46956 0.951784 1.0297 1.0152 1.02185 1.02487 1.0291 +1.02849 1.02185 1.02064 1.02547 1.02185 1.02185 1.02426 1.0297 +1.03091 1.04118 1.06171 0.887936 0.0100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00401333 0.00802667 0.00702333 +0.00602 0.00401333 0.00903 0.0100333 0.01204 0.00401333 0 0 +0 0 0.00401333 0.00401333 0.00100333 0 0 0 +0.00100333 0.00100333 0 0 0 0 0 0 +0 0 0.00301 0.00200667 0 0 0 0 +0.00401333 0.00602 0.00100333 0 0 0 0 0 +0.00802667 0.00200667 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00602 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0 0.576917 1.05688 1.04359 1.03574 1.0291 +1.02426 1.0303 1.02668 1.02064 1.02366 1.02366 1.02064 1.02366 +1.02487 1.02426 1.02185 1.02668 1.01943 0.675416 0.443473 0.449493 +0.4515 0.46354 0.471567 0.47257 0.473573 0.47859 0.482603 0.479593 +0.44548 0.435447 0.46053 0.907256 1.03151 1.02306 1.02366 1.03876 +1.02789 1.01822 1.02004 1.02245 1.01762 1.02668 1.03151 1.03272 +1.03695 0.97232 0.263877 0.10234 0.136453 0.131437 0.152507 0.143477 +0.151503 0.158527 0.1505 0.14448 0.133443 0.12341 0.11137 0.265883 +0.977152 1.04118 1.03936 1.03091 1.02547 1.02547 1.01943 1.02185 +1.01702 1.00796 1.02426 1.02185 1.02366 1.0303 1.02245 1.01702 +1.02547 1.02306 1.02426 1.02547 1.02306 1.01762 1.02245 1.02728 +1.01702 1.02004 1.01581 1.03212 1.03212 1.01581 1.01762 1.01702 +1.0297 1.01581 1.02366 1.0291 1.01943 1.0152 1.03091 1.0146 +1.02124 1.02849 1.02124 1.03212 1.03876 0.991648 0.25284 0.10535 +0.112373 0.140467 0.157523 0.148493 0.161537 0.14749 0.140467 0.148493 +0.14749 0.155517 0.14448 0.113377 0.0913033 0.534777 1.03212 1.03453 +1.02245 1.0297 1.02789 1.02185 1.02426 1.014 1.01883 1.0297 +1.03514 1.03332 0.982588 0.507687 0.446483 0.450497 0.459527 0.462537 +0.47558 0.471567 0.476583 0.47558 0.46655 0.47859 0.464543 0.456517 +0.4515 0.552837 1.00192 1.02426 1.02668 1.02849 1.02185 1.01339 +1.01822 1.02245 1.02185 1.02426 1.01883 1.0291 1.0297 1.03997 +1.04118 1.04722 1.04601 0.810656 0 0 0 0 +0 0 0 0 0 0 0.00702333 0.00802667 +0.00301 0 0.00602 0.00903 0.00501667 0.00903 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00200667 0 +0 0 0.00100333 0 0 0 0.00100333 0 +0.00100333 0 0 0 0.00100333 0.00200667 0 0 +0 0 0 0 0 0.00602 0.00802667 0 +0 0 0 0 0 0 0 0.00200667 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.53277 1.05326 1.04722 1.03816 1.0297 +1.02728 1.02366 1.01943 1.014 1.02124 1.02185 1.02789 1.02728 +1.02426 1.02306 1.02064 1.0291 1.03453 0.965676 0.51471 0.446483 +0.455513 0.4515 0.464543 0.458523 0.459527 0.462537 0.470563 0.46354 +0.459527 0.455513 0.6664 1.02306 1.03272 1.03695 1.02608 1.0152 +1.01702 1.01943 1.01339 1.0303 1.02547 1.02124 1.02849 1.03695 +1.03634 1.03997 0.761712 0.161537 0.118393 0.128427 0.139463 0.133443 +0.13545 0.134447 0.13545 0.13846 0.121403 0.1204 0.164547 0.772016 +1.05446 1.03272 1.03272 1.01762 1.01581 1.0297 1.01943 1.02004 +1.02728 1.01702 1.02366 1.02487 1.02426 1.02004 1.01822 1.02849 +1.01581 1.014 1.01943 1.00856 1.02426 1.02728 1.02124 1.01762 +1.02426 1.01098 1.01098 1.0303 1.01641 1.02728 1.01762 1.01037 +1.02547 1.0297 1.01279 1.01883 1.02306 1.03212 1.02124 1.02185 +1.02064 1.014 1.02306 1.0303 1.04178 1.0303 0.42441 0.11137 +0.113377 0.149497 0.137457 0.14147 0.14147 0.154513 0.148493 0.155517 +0.146487 0.12943 0.109363 0.109363 0.128427 0.837704 1.04238 1.0303 +1.03393 1.02668 1.02608 1.02668 1.03272 1.00373 1.02366 1.03151 +1.03876 1.0303 1.02487 0.658672 0.44548 0.449493 0.4515 0.468557 +0.47558 0.458523 0.480597 0.46956 0.46956 0.465547 0.468557 0.46956 +0.45451 0.774592 1.02668 1.02608 1.02426 1.02487 1.02487 1.01883 +1.02668 1.02306 1.01762 1.02064 1.02547 1.02185 1.02426 1.02728 +1.03695 1.04057 1.05507 0.806792 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.00903 0.00401333 0.00602 0.00602 0.00100333 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0 +0 0 0.00100333 0.00401333 0.00200667 0 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0.00702333 0.00401333 0.00200667 0.00301 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.51471 1.0605 1.0442 1.03574 1.03212 +1.02728 1.02547 1.02185 1.01641 1.02185 1.01702 1.01883 1.01581 +1.02185 1.02789 1.02789 1.02487 1.02547 1.0297 0.927624 0.52374 +0.428423 0.43946 0.441467 0.462537 0.456517 0.450497 0.45451 0.443473 +0.465547 0.643216 0.988024 1.03695 1.0303 1.02487 1.02185 1.02487 +1.02306 1.01702 1.02547 1.02124 1.01883 1.02668 1.03212 1.02004 +1.02487 1.03876 1.03091 0.670264 0.178593 0.09933 0.133443 0.12642 +0.134447 0.12943 0.13846 0.12642 0.09933 0.18963 0.716632 1.0442 +1.03755 1.02487 1.03332 1.02366 1.02366 1.02547 1.02608 1.02004 +1.02245 1.0291 1.0291 1.01762 1.014 1.02426 1.02789 1.01339 +1.00916 1.02185 1.01883 1.02487 1.01943 1.02426 1.01943 1.02004 +1.03151 1.02366 1.02668 1.01641 1.014 1.02306 1.01943 1.00977 +1.01943 1.02064 1.02245 1.014 1.01641 1.01218 1.01943 1.01762 +1.02245 1.02366 1.0303 1.02789 1.03755 1.03514 0.806792 0.157523 +0.118393 0.134447 0.13244 0.1505 0.155517 0.15351 0.140467 0.128427 +0.122407 0.14448 0.110367 0.10836 0.31906 1.00433 1.03816 1.02547 +1.03272 1.02728 1.02185 1.02487 1.01883 0.994668 1.01943 1.02124 +1.0152 1.0297 1.03936 0.94514 0.49063 0.4515 0.440463 0.456517 +0.467553 0.471567 0.476583 0.482603 0.470563 0.458523 0.464543 0.446483 +0.561867 0.982588 1.01943 1.02849 1.02245 1.02487 1.03272 1.01822 +1.01762 1.01641 1.02064 1.02306 1.02487 1.02668 1.02789 1.0297 +1.03332 1.04842 1.0593 0.766864 0 0 0 0 +0 0 0 0.00301 0.00501667 0.00200667 0.00100333 0.00702333 +0.00200667 0 0 0 0 0 0 0 +0.00301 0.00702333 0.00802667 0.00702333 0.00602 0.00501667 0.00401333 0 +0 0 0.00301 0 0.00100333 0.00100333 0 0 +0 0 0.00200667 0 0 0 0 0.00200667 +0.00602 0.00702333 0.00501667 0 0 0 0 0 +0.00100333 0.00200667 0.00702333 0.0110367 0.00200667 0 0 0.00100333 +0.00301 0 0 0 0 0 0 0.00301 +0 0 0 0 0 0.00702333 0.00602 0 +0 0 0 0 0 0 0 0 +0 0 0 0.46053 1.05507 1.0448 1.03816 1.03212 +1.03151 1.02668 1.02547 1.02185 1.02608 1.014 1.01581 1.014 +1.01641 1.02124 1.0152 1.01943 1.01822 1.01822 1.02728 0.952992 +0.64064 0.483607 0.446483 0.458523 0.453507 0.45752 0.45451 0.50267 +0.783608 1.00856 1.03272 1.03212 1.02849 1.01943 1.01762 1.02789 +1.02245 1.0152 1.02426 1.02185 1.02064 1.02004 1.02487 1.03212 +1.03453 1.03453 1.02608 1.03212 0.875056 0.374243 0.14749 0.113377 +0.0953167 0.0953167 0.11438 0.15953 0.38227 0.90468 1.03876 1.0442 +1.02849 1.03393 1.02547 1.02789 1.0303 1.01702 1.01822 1.02547 +1.02366 1.01883 1.02789 1.02064 1.02245 1.02366 1.0152 1.02366 +1.02004 1.01702 1.02124 1.02426 1.01822 1.01883 1.01822 1.02789 +1.01762 1.02306 1.02366 1.02547 1.02185 1.0291 1.02366 1.02245 +1.01702 1.01822 1.0152 1.02185 1.01883 1.02064 1.01762 1.02547 +1.02668 1.02547 1.02064 1.02004 1.03272 1.04842 1.02849 0.461533 +0.11438 0.12642 0.131437 0.131437 0.140467 0.140467 0.1204 0.130433 +0.13244 0.107357 0.109363 0.182607 0.811944 1.04903 1.03574 1.0297 +1.02547 1.02608 1.02547 1.02245 1.01762 0.983192 1.01279 1.02849 +1.03393 1.03212 1.03876 1.02366 0.842856 0.444477 0.4214 0.464543 +0.461533 0.471567 0.47859 0.47859 0.4515 0.44849 0.432437 0.531767 +0.943328 1.03574 1.03332 1.02306 1.01641 1.01943 1.01279 1.01702 +1.0291 1.03272 1.02668 1.01581 1.02668 1.02668 1.02426 1.0291 +1.03332 1.03514 1.05567 0.690872 0 0 0 0 +0 0 0 0 0 0 0.00401333 0 +0 0 0.00501667 0.00702333 0.00802667 0.0100333 0.00903 0.0110367 +0.00100333 0 0 0 0 0 0 0.00100333 +0.00501667 0.00200667 0 0 0 0 0 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0.00200667 0.00401333 0.00301 0.0100333 +0.0100333 0.0110367 0.0100333 0.00702333 0.0110367 0.0100333 0.00301 0 +0.00100333 0.00200667 0.00100333 0.00301 0 0 0.00100333 0 +0 0 0.00100333 0.00100333 0 0 0 0.00200667 +0.00100333 0.00802667 0.00602 0 0 0 0 0 +0 0 0 0.408357 1.04903 1.04722 1.04118 1.03634 +1.03332 1.02789 1.02366 1.02306 1.02426 1.02426 1.02366 1.02306 +1.02185 1.02124 1.02004 1.02245 1.02004 1.03091 1.0291 1.02608 +1.00614 0.93004 0.747544 0.645792 0.612304 0.670264 0.818384 0.983796 +1.03634 1.0291 1.02789 1.02064 1.02608 1.02366 1.02004 1.02245 +1.01339 1.01762 1.01883 1.02124 1.0291 1.02185 1.01883 1.02849 +1.02547 1.02426 1.03393 1.03332 1.0303 1.00735 0.89824 0.636776 +0.5418 0.528757 0.632912 0.914984 1.02004 1.04118 1.03695 1.03151 +1.02547 1.03151 1.02064 1.02426 1.01641 1.01762 1.02728 1.01641 +1.01762 1.02185 1.01279 1.01943 1.02668 1.02245 1.01279 1.01641 +1.014 1.01822 1.02185 1.03212 1.01641 1.02004 1.02366 1.01641 +1.02426 1.0146 1.01279 1.0146 1.02668 1.01218 1.01641 1.01883 +1.02124 1.01641 1.02185 1.01822 1.02426 1.01822 1.01822 1.01702 +1.01581 1.0297 1.02245 1.03393 1.0291 1.03272 1.04057 0.989836 +0.399327 0.12642 0.12341 0.122407 0.121403 0.12943 0.12642 0.121403 +0.12642 0.109363 0.17759 0.65352 1.02668 1.04178 1.02608 1.02245 +1.03091 1.01641 1.01822 1.02487 1.02728 0.988024 1.02608 1.014 +1.02124 1.02366 1.03393 1.03634 1.03272 0.871192 0.467553 0.437453 +0.459527 0.458523 0.461533 0.444477 0.449493 0.471567 0.641928 0.963864 +1.03332 1.03272 1.02849 1.02306 1.02547 1.01883 1.0291 1.02064 +1.01762 1.01279 1.02004 1.01581 1.01762 1.02608 1.03634 1.03514 +1.03876 1.05205 1.05326 0.59297 0 0 0 0 +0 0 0 0.00602 0.00802667 0.00100333 0 0 +0.00401333 0.00903 0.00802667 0.00602 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0 0.00100333 0.00501667 0.00903 0.00702333 0.00301 +0.00602 0.00301 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00602 0.00100333 0 +0 0 0 0 0 0 0 0.00501667 +0.00200667 0 0 0 0 0 0.00100333 0.00401333 +0.00401333 0.00200667 0.00200667 0.00100333 0 0 0 0.00200667 +0.00903 0.00401333 0 0 0 0 0 0 +0 0 0 0.35819 1.0442 1.04299 1.03332 1.02789 +1.02789 1.02608 1.02487 1.02245 1.01279 1.014 1.01822 1.01702 +1.02547 1.02487 1.02547 1.02547 1.02608 1.02185 1.02245 1.02789 +1.02849 1.03936 1.03091 1.02124 1.02124 1.02608 1.0297 1.0297 +1.02849 1.02789 1.02728 1.02547 1.01943 1.02306 1.02426 1.02547 +1.02366 1.0146 1.02306 1.0146 1.01943 1.02426 1.02487 1.0291 +1.0152 1.02426 1.03272 1.03514 1.03212 1.04118 1.04661 1.03634 +1.03695 1.03634 1.05326 1.03936 1.0291 1.02608 1.03151 1.03393 +1.0291 1.02547 1.02064 1.02426 1.0152 1.02608 1.01822 1.0146 +1.02608 1.01279 1.02487 1.01822 1.0146 1.0152 1.02366 1.01641 +1.02124 1.03212 1.01943 1.02245 1.01641 1.03151 1.02064 1.0146 +1.01883 1.01037 1.01822 1.01098 1.02306 1.02728 1.02849 1.01762 +1.01339 1.02306 1.0297 1.02245 1.01883 1.01279 1.02849 1.02789 +1.01943 1.02124 1.01943 1.02245 1.0152 1.02547 1.03393 1.0454 +0.986816 0.52675 0.191637 0.11137 0.118393 0.11739 0.128427 0.0953167 +0.133443 0.286953 0.759136 1.0297 1.04238 1.02789 1.02668 1.02487 +1.02306 1.01581 1.03091 1.02426 1.014 0.985004 1.02064 1.02547 +1.02306 1.02789 1.02064 1.01883 1.0291 1.03634 0.992252 0.824824 +0.572903 0.49063 0.494643 0.537787 0.674128 0.921424 1.0152 1.02306 +1.02547 1.0291 1.01641 1.02185 1.02004 1.02426 1.02426 1.01158 +1.01762 1.01883 1.02185 1.02426 1.03151 1.03212 1.03212 1.03393 +1.03876 1.0442 1.0605 0.536783 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0 0 0 0 0.00100333 0 0 0.00602 +0 0 0.00200667 0.00401333 0.00301 0.00802667 0.00602 0.00301 +0.00301 0.00100333 0.00401333 0.00501667 0.00301 0 0 0 +0 0.00100333 0 0 0 0 0 0 +0 0 0 0.00301 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00802667 0.00200667 0.00301 0.00200667 0 0 0 +0 0.00100333 0.00702333 0.00802667 0.00401333 0.00501667 0.00301 0 +0 0 0 0 0 0 0 0 +0 0 0 0.298993 1.0448 1.04722 1.04299 1.02668 +1.02124 1.02306 1.0291 1.02547 1.02849 1.02849 1.02426 1.01581 +1.01883 1.01762 1.01943 1.01762 1.02547 1.02487 1.01158 1.02064 +1.02487 1.02487 1.03816 1.03574 1.02608 1.0297 1.02849 1.02728 +1.0297 1.02487 1.02728 1.02789 1.01641 1.01822 1.01339 1.01581 +1.01641 1.02306 1.0303 1.02547 1.02124 1.0152 1.02426 1.0152 +1.02306 1.01581 1.02608 1.0303 1.0291 1.02245 1.0291 1.03997 +1.03212 1.03393 1.02547 1.02547 1.03514 1.02366 1.02789 1.02004 +1.02306 1.01641 1.03151 1.0297 1.02124 1.01702 1.01702 1.01581 +1.02004 1.02245 1.01883 1.02426 1.0152 1.02306 1.02547 1.02064 +1.02245 1.02245 1.01943 1.0297 1.01822 1.01822 1.02547 1.01098 +1.0152 1.02306 1.01822 1.02366 1.01158 1.02004 1.0291 1.02306 +1.01762 1.01279 1.0291 1.02004 1.0152 1.02728 1.00796 1.01762 +1.01883 1.0303 1.014 1.02426 1.03151 1.02487 1.04118 1.03816 +1.05205 1.0291 0.924 0.578923 0.37324 0.332103 0.326083 0.450497 +0.697312 0.98138 1.04601 1.03876 1.0303 1.0303 1.02849 1.02426 +1.02849 1.01883 1.02306 1.01762 1.0152 1.00554 1.02245 1.02487 +1.01822 1.02728 1.02608 1.03272 1.03574 1.03332 1.03514 1.03151 +1.01822 0.99346 0.991044 1.00131 1.02789 1.03091 1.02487 1.02547 +1.02306 1.02124 1.02004 1.02064 1.01822 1.0152 1.01641 1.02426 +1.03212 1.02306 1.02487 1.02487 1.01762 1.01822 1.02306 1.02366 +1.03332 1.04601 1.04661 0.423407 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00501667 0 0.00301 0 +0 0.00301 0.00100333 0 0 0 0 0.00200667 +0.00100333 0 0 0 0 0 0 0 +0.00100333 0.00602 0.00401333 0.00200667 0 0 0.00401333 0.00401333 +0.00100333 0 0 0 0 0.00301 0.00200667 0.00100333 +0 0 0 0 0 0 0 0.00401333 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.241803 1.03514 1.05144 1.0448 1.04178 +1.03393 1.02668 1.02064 1.01943 1.01762 1.01822 1.02064 1.02366 +1.02789 1.01943 1.01581 1.01822 1.02064 1.02608 1.02245 1.02245 +1.01943 1.02426 1.01762 1.02306 1.03514 1.02789 1.02426 1.0291 +1.0291 1.01279 1.02064 1.02306 1.01883 1.02547 1.02789 1.02185 +1.02124 1.0152 1.01339 1.0152 1.0291 1.02366 1.01822 1.02426 +1.02004 1.02789 1.03091 1.0303 1.03332 1.03212 1.02789 1.02608 +1.02487 1.0291 1.0303 1.03212 1.03574 1.03151 1.03091 1.03151 +1.01702 1.02426 1.0152 1.01943 1.01702 1.02064 1.0303 1.02789 +1.01641 1.01822 1.01218 1.01762 1.01702 1.02185 1.01702 1.02668 +1.0152 1.01762 1.01581 1.02426 1.01581 1.01279 1.02004 1.01218 +1.02185 1.01702 1.01883 1.0152 1.01339 1.02547 1.02004 1.02366 +1.0297 1.014 1.02245 1.01822 1.02245 1.01702 1.02004 1.01702 +1.01339 1.02245 1.02547 1.02366 1.01581 1.02366 1.02547 1.02547 +1.02668 1.04238 1.0454 1.04661 1.02668 1.0146 1.01581 1.03755 +1.04722 1.04238 1.03091 1.02668 1.03091 1.02124 1.0146 1.02426 +1.02004 1.0303 1.02426 1.02789 0.991044 1.00252 1.02185 1.02366 +1.01762 1.01762 1.01883 1.02185 1.02124 1.01581 1.01702 1.02789 +1.0303 1.03091 1.0303 1.03091 1.01822 1.0291 1.02124 1.02366 +1.02487 1.01822 1.01943 1.0146 1.02608 1.02004 1.01641 1.01641 +1.01762 1.02245 1.0152 1.02004 1.02547 1.02245 1.0297 1.03453 +1.03816 1.04359 1.0442 0.341133 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00501667 +0.0100333 0.0130433 0.00802667 0 0 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.0110367 0.01204 0.00802667 0.00100333 0 0 0 +0.00200667 0.00602 0.00100333 0 0 0.00200667 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.16856 1.02366 1.04963 1.03936 1.03514 +1.03272 1.0291 1.02547 1.02426 1.02306 1.02004 1.02124 1.02306 +1.02245 1.02064 1.01883 1.01339 1.02245 1.01762 1.02245 1.0291 +1.03212 1.02487 1.01943 1.02487 1.01822 1.02064 1.02064 1.01762 +1.02668 1.0297 1.02728 1.02245 1.02124 1.02185 1.02608 1.01762 +1.02849 1.02245 1.02366 1.01883 1.01943 1.01641 1.02366 1.01883 +1.0303 1.03091 1.02547 1.02064 1.02608 1.01098 1.02789 1.02789 +1.03514 1.02728 1.03453 1.03453 1.02608 1.02849 1.01762 1.01822 +1.03151 1.01702 1.01641 1.01883 1.01883 1.02185 1.02728 1.02668 +1.02789 1.02366 1.01581 1.02185 1.02064 1.02004 1.02668 1.00796 +1.01883 1.02366 1.01702 1.01762 1.02124 1.01702 1.00856 1.01037 +1.02245 1.01279 1.01339 1.02185 1.02366 1.01581 1.0146 1.01702 +1.02487 1.02668 1.00796 1.01581 1.02245 1.01641 1.02185 1.02004 +1.02185 1.0152 1.01641 1.03091 1.02487 1.02487 1.02366 1.0291 +1.02789 1.0291 1.02668 1.03453 1.03634 1.03634 1.05144 1.03272 +1.02487 1.02547 1.03453 1.0303 1.02306 1.0297 1.02608 1.01943 +1.01641 1.01702 1.02245 1.02366 0.994064 1.01762 1.01702 1.02185 +1.03151 1.01943 1.01581 1.02124 1.02487 1.0303 1.02789 1.03272 +1.02426 1.0291 1.0303 1.03151 1.0291 1.02668 1.02004 1.02185 +1.01822 1.02547 1.01943 1.02547 1.02306 1.01943 1.01943 1.02306 +1.01943 1.01943 1.01581 1.02004 1.02124 1.03272 1.02547 1.03272 +1.04359 1.05507 1.03393 0.232773 0 0 0 0 +0 0 0 0 0 0.00200667 0.00200667 0 +0 0 0.01204 0.00903 0.00702333 0.00401333 0.00301 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00301 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00100333 0 0.00100333 0 0 0 +0 0 0 0.00401333 0.00602 0 0 0 +0 0 0 0.00100333 0.00301 0.00401333 0.00301 0.00702333 +0.00401333 0 0.00401333 0.00602 0 0 0.00301 0.00903 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0.119397 0.997688 1.04963 1.03876 1.03332 +1.02487 1.02547 1.02245 1.02487 1.02487 1.02064 1.02004 1.014 +1.01943 1.02306 1.02064 1.01883 1.02366 1.02004 1.02004 1.01279 +1.01883 1.01943 1.02306 1.02004 1.0146 1.02004 1.01581 1.01943 +1.01641 1.00796 1.02487 1.01641 1.0152 1.01822 1.02306 1.01762 +1.02366 1.0297 1.02185 1.0291 1.01762 1.02547 1.02004 1.02487 +1.02426 1.01883 1.03212 1.01943 1.01339 1.02668 1.02064 1.02185 +1.01943 1.02547 1.02306 1.01581 1.03212 1.02728 1.02245 1.02426 +1.0146 1.0152 1.0152 1.01943 1.02185 1.0152 1.0146 1.00977 +1.01158 1.01218 1.01641 1.01883 1.01822 1.02245 1.02004 1.0146 +1.01943 1.02306 1.01702 1.02608 1.00916 1.00614 1.0146 1.01218 +1.01762 1.01943 1.01581 1.0152 1.0146 1.02487 1.02124 1.01762 +1.02487 1.01279 1.00977 1.02306 1.01641 1.02547 1.00916 1.02608 +1.02185 1.02124 1.02366 1.0146 1.02426 1.02245 1.0146 1.02789 +1.03151 1.02004 1.03393 1.0297 1.02668 1.03514 1.02366 1.03574 +1.02789 1.02306 1.0152 1.02608 1.02245 1.02306 1.01822 1.02728 +1.02245 1.03151 1.02487 1.02004 0.994668 1.02306 1.01581 1.01581 +1.02487 1.02306 1.02306 1.03212 1.01641 1.02064 1.03151 1.02426 +1.01581 1.02728 1.02366 1.02728 1.02064 1.02185 1.02004 1.01943 +1.02185 1.02789 1.02306 1.014 1.01822 1.02608 1.01822 1.0146 +1.0152 1.02064 1.02306 1.02728 1.02668 1.0291 1.02728 1.03514 +1.03755 1.04963 1.01822 0.15652 0 0 0 0 +0 0 0 0.00100333 0.01204 0.00802667 0.00903 0.0140467 +0.0110367 0.00401333 0.00602 0.00802667 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00100333 0.00100333 0 0 0 0.00200667 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00301 +0 0 0 0 0 0 0.00602 0 +0 0.00501667 0.00602 0.00501667 0.00401333 0.00301 0 0 +0 0.00401333 0.00100333 0 0.00501667 0.00602 0 0 +0 0 0.00200667 0.00501667 0.00100333 0 0 0 +0 0 0 0.0622067 0.96628 1.05386 1.04722 1.03091 +1.02668 1.0291 1.02306 1.02366 1.02004 1.02185 1.0152 1.02004 +1.02306 1.02426 1.01883 1.02064 1.02004 1.01762 1.02668 1.02185 +1.01702 1.0152 1.02426 1.02004 1.02668 1.03393 1.02366 1.02728 +1.02004 1.01037 1.01339 1.02366 1.02668 1.02064 1.02366 1.01641 +1.0146 1.01702 1.01702 1.0146 1.02064 1.01883 1.02789 1.02004 +1.02245 1.01822 1.01581 1.02064 1.01762 1.02185 1.02366 1.02004 +1.01822 1.02487 1.02004 1.01822 1.01581 1.0146 1.02487 1.03936 +1.03997 1.05386 1.04601 1.03634 1.014 1.00977 1.01762 1.00494 +1.01822 1.02185 1.0152 1.0146 1.03272 1.01702 1.00977 1.0146 +1.02064 1.02426 1.02245 1.01762 1.01702 1.01218 1.01641 1.02728 +1.01702 1.0297 1.02245 1.02124 1.02426 1.01098 1.02064 1.02245 +1.02004 1.01279 1.0291 1.02064 1.02487 1.01943 1.02245 1.02245 +1.01581 1.01279 1.01822 1.0146 1.01883 1.02306 1.02728 1.01279 +1.01702 1.02608 1.02668 1.02004 1.01943 1.01762 1.0303 1.03212 +1.0303 1.01279 1.02245 1.02245 1.0303 1.03453 1.02426 1.01762 +1.02487 1.02245 1.014 1.00252 0.994668 1.02547 1.0146 1.02004 +1.02487 1.01883 1.0152 1.02728 1.02547 1.02608 1.0152 1.02608 +1.02185 1.02245 1.02245 1.01218 1.02306 1.02608 1.02245 1.01822 +1.02064 1.02064 1.01883 1.02547 1.02608 1.02185 1.01702 1.02064 +1.02306 1.02124 1.01581 1.01943 1.02426 1.02849 1.03212 1.03453 +1.04057 1.04782 0.969904 0.0792633 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00200667 +0 0.00401333 0.00301 0 0 0 0 0.00100333 +0.00401333 0.00501667 0.00802667 0.00501667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00702333 0.00301 0.00301 0.00401333 0.00100333 0 +0 0.00100333 0.00100333 0 0 0.00100333 0 0.00301 +0.00401333 0.00100333 0 0 0 0 0 0 +0.00301 0.00100333 0 0 0.00200667 0 0 0.00200667 +0.00301 0 0 0 0 0 0 0 +0 0 0 0.02107 0.908544 1.05567 1.04359 1.04782 +1.04238 1.0303 1.02487 1.02064 1.02245 1.02306 1.02728 1.02245 +1.02547 1.02487 1.02245 1.02306 1.01822 1.02004 1.01702 1.02366 +1.01762 1.02004 1.014 1.01702 1.02064 1.01762 1.02245 1.03514 +1.03272 1.03151 1.02306 1.02245 1.01158 1.00977 1.0152 1.0152 +1.02306 1.01702 1.00675 1.00735 1.02124 1.0303 1.02547 1.01943 +1.0152 1.02124 1.01822 1.0291 1.02124 1.02547 1.02728 1.02487 +1.02426 1.02064 1.02245 1.01943 1.02849 1.05144 1.04782 1.0593 +1.0593 1.04842 1.05507 1.04299 1.04118 1.04299 1.01822 1.02426 +1.01883 1.02064 1.0152 1.03574 1.02668 1.01822 1.01822 1.02185 +1.02306 1.01279 1.01581 1.01762 1.01762 1.01943 1.02426 1.01702 +1.02789 1.01943 1.00735 1.02728 1.01762 1.00373 1.0297 1.01339 +1.02185 1.02064 1.02245 1.02064 1.02185 1.01702 1.02004 1.0152 +1.01822 1.02366 1.02306 1.02124 1.02245 1.02608 1.02728 1.02366 +1.02306 1.02004 1.0297 1.02245 1.02668 1.03332 1.02306 1.01883 +1.01641 1.03091 1.02245 1.02366 1.01158 1.02004 1.01641 1.02366 +1.02547 1.02185 1.02124 0.985004 1.01339 1.02487 1.02185 1.0152 +1.01822 1.0146 1.01883 1.0152 1.014 1.02245 1.02608 1.01883 +1.014 1.01822 1.0152 1.02124 1.014 1.01883 1.01218 1.02366 +1.02004 1.01943 1.01762 1.02004 1.01943 1.01339 1.01762 1.02668 +1.02849 1.03212 1.02426 1.03151 1.02547 1.02366 1.03332 1.03936 +1.04722 1.05809 0.918848 0.0190633 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0 0 0 0 0 +0.00401333 0.00301 0.00100333 0.00301 0.00100333 0.00200667 0.00501667 0.00401333 +0.00100333 0 0 0 0 0 0.00501667 0.00301 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00401333 0 0.00200667 0 +0 0.00100333 0.00501667 0.00301 0 0 0 0 +0 0 0 0.00301 0 0 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.790048 1.06594 1.0442 1.03453 +1.0291 1.02608 1.02426 1.02306 1.02064 1.01943 1.0152 1.01641 +1.01943 1.01641 1.01883 1.02366 1.02004 1.02185 1.02306 1.01883 +1.02728 1.02366 1.02306 1.01883 1.01943 1.00856 1.00856 1.01037 +1.01641 1.02668 1.02185 1.02306 1.01883 1.0291 1.01581 1.0146 +1.02306 1.0291 1.0303 0.99648 1.01883 1.01037 1.01822 1.01943 +1.02789 1.02245 1.02547 1.02487 1.02245 1.02668 1.02124 1.02306 +1.02245 1.02487 1.01883 1.02547 1.05144 1.0442 1.06292 1.05386 +1.05265 1.05084 1.04963 1.0593 1.05446 1.04661 1.03453 1.02668 +1.0146 1.02004 1.01822 1.02124 1.00916 1.02004 1.02245 1.02185 +1.0146 1.01702 1.01702 1.0146 1.01702 1.02728 1.02004 1.01883 +1.02487 1.01943 1.01581 1.02245 1.02124 1.02124 1.01581 1.02547 +1.01822 1.01158 1.01702 1.01762 1.02426 1.0152 1.02366 1.02487 +1.02668 1.05084 1.05688 1.05024 1.06111 1.05265 1.04118 1.03816 +1.0152 1.02064 1.02487 1.02849 1.02306 1.01822 1.02245 1.01943 +1.02487 1.02124 1.01762 1.01702 1.02366 1.03393 1.02185 1.0146 +1.01943 1.02185 1.02547 0.991044 1.02608 1.02366 1.02306 1.01943 +1.02487 1.02306 1.01641 1.01822 1.0152 1.02124 1.01218 1.0146 +1.01762 1.02426 1.02185 1.02185 1.02366 1.02426 1.01702 1.01883 +1.01158 1.02487 1.014 1.01822 1.01883 1.02004 1.02668 1.02547 +1.01702 1.01943 1.02064 1.02124 1.03151 1.02789 1.03151 1.0303 +1.03997 1.05386 0.726936 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00602 0.00702333 0 +0 0 0.00501667 0.00602 0.00802667 0.00301 0 0 +0 0.00401333 0.00903 0.00602 0.00401333 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00301 0.00100333 0 +0.00100333 0 0 0 0 0 0 0 +0.00602 0 0 0.00100333 0.00301 0.00200667 0 0.00100333 +0.00100333 0 0.00100333 0 0 0 0 0 +0 0 0 0 0.590963 1.05144 1.03695 1.04118 +1.04118 1.03634 1.03332 1.03272 1.02789 1.0303 1.02668 1.01883 +1.02064 1.02426 1.02004 1.02185 1.0152 1.01822 1.01702 1.02124 +1.02064 1.0146 1.0146 1.02245 1.02004 1.01762 1.01943 1.02004 +1.01581 1.01279 1.01279 1.02306 1.02245 1.01158 1.02004 1.01762 +1.02004 1.02124 1.02064 1.00614 1.01279 1.02124 1.01943 1.014 +1.01702 1.02668 1.02608 1.01883 1.02366 1.02426 1.02245 1.02426 +1.0152 1.01702 1.02487 1.05084 1.05084 1.05386 1.06171 1.05688 +1.05084 1.05809 1.05628 1.05084 1.06111 1.05748 1.06836 1.03816 +1.02245 1.03634 1.01641 1.01943 1.02124 1.02306 1.0291 1.01762 +1.01762 1.02668 1.01279 1.02245 1.02306 1.01943 1.01641 1.01822 +1.01702 1.02124 1.02004 1.01158 1.02487 1.01943 1.01883 1.01581 +1.02306 1.01581 1.00614 1.01279 1.02185 1.02185 1.01883 1.0297 +1.04722 1.04118 1.0599 1.04238 1.05326 1.05869 1.05265 1.05809 +1.05809 1.03272 1.01279 1.02487 1.02064 1.01702 1.01822 1.02728 +1.01822 1.0291 1.01883 1.01641 1.0291 1.01822 1.02547 1.02789 +1.02608 1.02487 1.00252 0.983192 1.02608 1.02245 1.02306 1.02245 +1.01762 1.02245 1.0152 1.02547 1.02366 1.01943 1.02728 1.02608 +1.02426 1.02366 1.01702 1.02245 1.02366 1.01158 1.0146 1.01702 +1.02487 1.0297 1.02487 1.02185 1.01822 1.01762 1.02004 1.02064 +1.01943 1.01762 1.02004 1.01822 1.02487 1.02185 1.03393 1.0454 +1.05144 1.05748 0.543807 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.00200667 0.00501667 0.00200667 0.00401333 0.00301 0 0.00401333 +0.00501667 0.00100333 0 0 0.00100333 0.00301 0.00401333 0.00702333 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00702333 0.00100333 +0 0 0.00200667 0 0 0.00100333 0.00702333 0.00903 +0.00702333 0.00100333 0 0 0 0 0 0 +0 0 0 0 0.461533 1.05386 1.04661 1.03695 +1.02064 1.02306 1.01762 1.0152 1.01762 1.0146 1.01702 1.02728 +1.01822 1.01762 1.00916 1.01158 1.01822 1.01702 1.02004 1.01037 +1.01279 1.01581 1.01883 1.01641 1.00735 1.0146 1.02789 1.02426 +1.0146 1.01883 1.02064 1.01702 1.02306 1.02306 1.01822 1.02789 +1.02306 1.01943 1.02426 1.01702 0.998292 1.02064 1.02366 1.02366 +1.01581 1.02306 1.0146 1.02668 1.01339 1.0146 1.01702 1.01581 +1.02064 1.01339 1.02547 1.05265 1.04782 1.05084 1.0448 1.04359 +1.04903 1.05326 1.04782 1.06171 1.05326 1.04963 1.05205 1.05326 +1.02728 1.0152 1.02366 1.0146 1.02668 1.01279 1.00675 1.02124 +1.01218 1.014 1.00494 1.02124 1.02245 1.02124 1.01883 1.01822 +1.01883 1.01883 1.03151 1.03574 1.01822 1.02849 1.01943 1.02668 +1.02185 1.02366 1.02668 1.01702 1.01279 1.02426 1.03755 1.05628 +1.05326 1.05567 1.04842 1.0599 1.06111 1.0454 1.05628 1.05446 +1.05386 1.05205 1.01822 1.0146 1.02124 1.02366 1.01641 1.0146 +1.02487 1.02306 1.02185 1.02849 1.02608 1.02789 1.02668 1.02245 +1.02487 1.02124 0.991044 1.0146 1.03091 1.02487 1.0303 1.02306 +1.02547 1.02366 1.02306 1.01581 1.02185 1.02064 1.02124 1.02004 +1.02124 1.02366 1.02306 1.02366 1.01883 1.02608 1.02245 1.01943 +1.02306 1.01883 1.01158 1.01822 1.01883 1.02004 1.01279 1.01702 +1.02487 1.02426 1.02426 1.02366 1.0303 1.03574 1.03816 1.03876 +1.04601 1.05144 0.375247 0 0 0 0 0 +0 0 0 0 0 0 0.00501667 0 +0.00401333 0.00702333 0.00602 0.00501667 0 0.00100333 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0.00100333 0 0 0.00100333 0 0.00200667 +0.00903 0.0110367 0.00602 0.00802667 0.00702333 0.00100333 0 0 +0 0 0 0.00301 0 0 0 0 +0.00200667 0.00100333 0 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.303007 1.04359 1.05084 1.04057 +1.03755 1.02789 1.02306 1.02426 1.0291 1.02668 1.0152 1.01641 +1.0146 1.02004 1.02849 1.02789 1.02064 1.02185 1.02728 1.01822 +1.01943 1.02004 1.02366 1.014 1.02487 1.01822 1.01218 1.02004 +1.01581 1.02124 1.01943 1.01641 1.0146 1.03091 1.01822 1.01822 +1.01641 1.01702 1.01702 1.02366 0.975944 1.01339 1.02185 1.01702 +1.0146 1.02668 1.02004 1.01943 1.02185 1.02789 1.02608 1.01943 +1.01702 1.02124 1.05386 1.06292 1.05446 1.05205 1.05205 1.04842 +1.05084 1.04661 1.04842 1.06171 1.04722 1.0593 1.05869 1.05326 +1.03514 1.01883 1.01581 1.01279 1.0146 1.00916 1.02124 1.01822 +1.01702 1.0297 1.02426 1.01883 1.02366 1.01279 1.02064 1.01098 +1.02245 1.02185 1.01641 1.02124 1.02004 1.01702 1.01218 1.02789 +1.02185 1.02366 1.0152 1.02547 1.01581 1.02185 1.05809 1.05688 +1.05084 1.05024 1.06171 1.05084 1.05748 1.05205 1.04601 1.05386 +1.04661 1.05205 1.04963 1.02004 1.01943 1.02306 1.02608 1.014 +1.02306 1.0152 1.01943 1.02245 1.01702 1.02185 1.02668 1.01762 +1.01702 1.0146 0.985004 1.01218 1.01581 1.02547 1.01822 1.00856 +1.01037 1.01098 1.014 1.01822 1.02789 1.02185 1.01883 1.01762 +1.0152 1.02004 1.01581 1.02185 1.0146 1.02064 1.02306 1.02366 +1.02064 1.02366 1.02487 1.01822 1.02185 1.02064 1.01822 1.02668 +1.02064 1.02124 1.02306 1.02668 1.02487 1.03091 1.03272 1.03816 +1.0454 1.02668 0.202673 0 0 0 0 0 +0 0.00100333 0.00401333 0 0 0 0 0 +0 0 0 0 0.00903 0.00200667 0 0.00200667 +0.00301 0 0 0.00200667 0.00100333 0 0 0 +0.00401333 0.00903 0.00903 0.00401333 0.00401333 0.00401333 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00501667 0.00602 0.00702333 0.00501667 0.00200667 +0 0 0 0 0 0 0.00200667 0.00401333 +0 0 0 0 0 0.00100333 0.00100333 0 +0.00100333 0.00501667 0.00100333 0.00100333 0.00301 0.00100333 0.00100333 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0.15652 1.01943 1.05567 1.0442 +1.03574 1.03816 1.03393 1.03212 1.02185 1.01641 1.01822 1.02064 +1.01762 1.01822 1.01339 1.01883 1.01762 1.02245 1.01822 1.02004 +1.02487 1.01883 1.02306 1.02426 1.02004 1.02185 1.014 1.01883 +1.02004 1.02426 1.02728 1.02004 1.01702 1.02547 1.01641 1.02608 +1.02004 1.01943 1.02004 1.02306 1.00071 0.995876 1.03332 1.02728 +1.0297 1.01702 1.02789 1.02245 1.02306 1.01098 1.01641 1.02668 +1.01762 1.01943 1.06232 1.0448 1.05205 1.05446 1.05809 1.04842 +1.05084 1.05144 1.05144 1.04722 1.04963 1.05386 1.04661 1.05567 +1.05326 1.02245 1.01822 1.0297 1.02426 1.02306 1.01883 1.02185 +1.02789 1.01943 1.02668 1.02306 1.02185 1.01037 1.00614 1.03091 +1.01702 1.02306 1.02547 1.02306 1.02608 1.02366 1.01702 1.02487 +1.01762 1.02124 1.02185 1.02124 1.02306 1.04359 1.05869 1.04722 +1.05265 1.04299 1.05748 1.04661 1.04118 1.04903 1.04963 1.05024 +1.04782 1.04722 1.05205 1.02245 1.02306 1.01581 1.0152 1.02245 +1.02064 1.02124 1.01581 1.02245 1.02064 1.014 1.0146 1.01943 +1.01581 0.986816 1.00252 1.02124 1.0152 1.02185 1.02124 1.01581 +1.02728 1.02185 1.02668 1.02426 1.0303 1.0152 1.02124 1.01762 +1.01581 1.02426 1.02245 1.01762 1.01762 1.01883 1.01218 1.0146 +1.01943 1.01702 1.02064 1.02185 1.01943 1.02366 1.01581 1.02306 +1.0152 1.01702 1.01822 1.02185 1.02547 1.02849 1.03272 1.04299 +1.05507 0.97232 0.08127 0 0 0 0 0 +0 0 0 0.00401333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00903 0 0 0 0.00100333 0.00301 0.00200667 +0 0 0 0 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00702333 0.00702333 0.00401333 0 0 0 0.00100333 +0 0 0 0 0 0 0.00401333 0.00200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0.05719 0.949368 1.05084 1.03876 +1.03332 1.03393 1.0291 1.02789 1.02728 1.02849 1.02608 1.02668 +1.02366 1.02487 1.01762 1.02064 1.02064 1.02849 1.02849 1.02547 +1.01822 1.02426 1.02245 1.02004 1.02366 1.02849 1.0291 1.01943 +1.00856 1.01762 1.01702 1.02608 1.02306 1.02306 1.01943 1.03091 +1.02004 1.01822 1.02608 1.02185 1.02426 0.982588 1.01641 1.02124 +1.02064 1.01158 1.01883 1.02547 1.01883 1.03634 1.03151 1.0152 +1.01762 1.03816 1.05144 1.05567 1.04601 1.05688 1.05265 1.05688 +1.04238 1.05628 1.0599 1.05205 1.04903 1.05446 1.05386 1.05144 +1.04903 1.01762 1.01339 1.01279 1.01279 1.01943 1.02004 1.02185 +1.01641 1.01943 1.02728 1.01339 1.00614 1.02426 1.03091 1.01762 +1.02306 1.02004 1.014 1.01943 1.02487 1.0152 1.02306 1.02124 +1.02306 1.02668 1.02064 1.01702 1.01158 1.05446 1.04661 1.04842 +1.05024 1.05688 1.05507 1.05084 1.05507 1.05386 1.05688 1.05024 +1.0605 1.05688 1.04903 1.03332 1.01641 1.02487 1.02124 1.02426 +1.02366 1.01641 1.01943 1.01702 1.0152 1.01822 1.02426 1.02004 +1.01037 0.995272 1.01883 1.02366 1.0152 1.01581 1.01158 1.02124 +1.02849 1.02668 1.02124 1.01037 1.0146 1.0152 1.01158 1.02547 +1.01279 1.0146 1.01581 1.0152 1.01339 1.01943 1.01762 1.02004 +1.00916 1.014 1.02487 1.02064 1.01581 1.02004 1.01883 1.02064 +1.02789 1.02487 1.02064 1.02004 1.02487 1.0291 1.03876 1.0448 +1.05446 0.818384 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00401333 0.0110367 +0.00903 0.00100333 0.0100333 0.01204 0.00602 0 0 0.00200667 +0.00200667 0.00501667 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00200667 +0 0 0 0 0.00301 0.00301 0.00301 0.00200667 +0.00301 0.00200667 0 0 0 0 0 0.00501667 +0 0 0 0.00401333 0.00301 0 0 0 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0 0 0.777168 1.05628 1.04057 +1.02306 1.02728 1.02366 1.02185 1.02124 1.02366 1.01822 1.01943 +1.01581 1.0152 1.02426 1.01943 1.01762 1.02004 1.014 1.01218 +1.01883 1.01581 1.02064 1.02124 1.02306 1.01943 1.01822 1.02245 +1.02547 1.02245 1.0146 1.01158 1.02306 1.02608 1.01943 1.02004 +1.02789 1.03151 1.01943 1.02245 1.02547 1.00554 1.00554 1.0303 +1.02487 1.02366 1.02064 1.03453 1.01641 1.02004 1.01762 1.02245 +1.02245 1.03514 1.04963 1.05024 1.05628 1.05386 1.0448 1.0442 +1.04842 1.05748 1.03876 1.05024 1.05024 1.05386 1.05869 1.05326 +1.05024 1.01943 1.02004 1.02004 1.02487 1.01883 1.02849 1.02004 +1.0146 1.02608 1.01883 1.01822 1.02789 1.02608 1.03091 1.02064 +1.02547 1.02487 1.02124 1.0146 1.01943 1.02245 1.0152 1.02547 +1.01762 1.01339 1.02547 1.014 1.01822 1.04661 1.05084 1.05386 +1.04299 1.05446 1.04359 1.04963 1.0599 1.05024 1.05386 1.05446 +1.05446 1.04057 1.05265 1.04118 1.00675 1.02547 1.0152 1.01158 +1.0291 1.01883 1.01883 1.02849 1.01702 1.01702 1.01943 1.01883 +0.995876 1.00916 1.02547 1.02306 1.02608 1.02064 1.01641 1.01943 +1.01641 1.01037 1.02366 1.0152 1.02366 1.01762 1.02547 1.01762 +1.0146 1.02004 1.01943 1.01641 1.0152 1.02064 1.02124 1.02245 +1.01702 1.01702 1.014 1.01762 1.01762 1.02668 1.02426 1.00796 +1.01943 1.02487 1.02849 1.02849 1.03272 1.02849 1.03634 1.0448 +1.05084 0.54782 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00702333 +0.00401333 0.00301 0.00501667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0.00702333 0.00401333 0 0 0 0 +0 0 0.00200667 0 0.00200667 0.00802667 0.00501667 0 +0 0 0.00100333 0 0.00100333 0.00602 0.00501667 0 +0 0 0 0.00200667 0.00301 0.00100333 0 0 +0 0 0 0 0 0.53578 1.0605 1.04903 +1.04178 1.03876 1.02849 1.02547 1.01943 1.02306 1.02245 1.02124 +1.02426 1.02064 1.02547 1.01822 1.01883 1.0146 1.01339 1.02064 +1.01883 1.01641 1.01702 1.014 1.02124 1.01943 1.02124 1.01943 +1.02547 1.02004 1.01339 1.02064 1.01339 1.00433 1.02426 1.01762 +1.0152 1.01279 1.01702 1.02245 1.01641 1.01037 0.980776 1.01218 +1.02064 1.02608 1.01822 1.00614 1.01822 1.01641 1.01762 1.00735 +1.02004 1.03936 1.05628 1.05265 1.06413 1.05205 1.0454 1.05446 +1.0593 1.0593 1.05386 1.05748 1.05024 1.04118 1.04178 1.03755 +1.0448 1.0291 1.01641 1.01822 1.02245 1.01762 1.00856 1.02185 +1.02608 1.01581 1.02306 1.01943 1.02064 1.00977 1.00735 1.0152 +1.02064 1.0303 1.02245 1.02547 1.02306 1.02789 1.02728 1.01218 +1.02547 1.01943 1.01822 1.02004 1.04238 1.05446 1.05386 1.06352 +1.04601 1.0442 1.05688 1.05205 1.0599 1.04299 1.05265 1.03936 +1.03332 1.04903 1.05688 1.05748 1.01218 1.01762 1.02487 1.01098 +1.02366 1.02366 1.02366 1.02668 1.03091 1.03997 1.0146 1.01581 +0.988024 1.01702 1.01702 1.02487 1.02366 1.02547 1.02185 1.02487 +1.02366 1.01883 1.01883 1.02185 1.02306 1.01218 1.01641 1.02547 +1.014 1.02004 1.02366 1.01943 1.02185 1.01279 1.01581 1.02004 +1.01702 1.01339 1.01822 1.01762 1.01581 1.02366 1.02789 1.02487 +1.02426 1.02245 1.01702 1.02668 1.0297 1.0291 1.04057 1.05205 +1.04661 0.31003 0 0 0 0 0 0 +0 0 0 0 0 0.00802667 0.00702333 0.00401333 +0.00602 0.00401333 0.00802667 0.0130433 0.0110367 0.00702333 0.00802667 0 +0 0 0 0 0.00100333 0.00100333 0.00602 0.00602 +0.00100333 0.00501667 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00301 +0.00100333 0.00200667 0.00100333 0 0 0.00200667 0.00301 0 +0 0 0 0 0 0 0 0.00200667 +0.00501667 0.00100333 0.00100333 0.00200667 0 0 0 0.00401333 +0.01204 0.00501667 0 0 0 0 0 0 +0 0 0 0 0 0.28896 1.0442 1.04963 +1.03453 1.03212 1.0297 1.02789 1.02487 1.02366 1.02064 1.02185 +1.01883 1.01702 1.0146 1.00735 1.01581 1.01883 1.0152 1.00916 +1.01762 1.0152 1.02366 1.02366 1.02789 1.01339 1.01822 1.02185 +1.00916 1.0152 1.01762 1.0146 1.01943 1.0146 1.01943 1.01339 +1.01943 1.02547 1.01762 1.0146 1.02245 1.0146 1.00796 1.01641 +1.02306 1.02789 1.014 1.02004 1.0303 1.01762 1.0146 1.02728 +1.01822 1.01581 1.04057 1.04782 1.04722 1.05628 1.05567 1.05265 +1.04601 1.04661 1.05084 1.05809 1.04661 1.05205 1.05628 1.0599 +1.04299 1.02306 1.01943 1.02608 1.02124 1.03091 1.0297 1.02728 +1.02245 1.02487 1.01883 0.982588 0.956616 0.961448 0.96628 0.962052 +0.97836 0.983796 1.01702 1.01218 1.01279 1.01762 1.01762 1.02124 +1.02608 1.02426 1.02306 1.02306 1.01943 1.05446 1.0442 1.0454 +1.06836 1.0599 1.05144 1.0605 1.0454 1.04601 1.04722 1.06473 +1.04722 1.0454 1.05688 1.03453 1.01218 1.01702 1.01702 1.03453 +1.01883 1.01581 1.02728 1.02366 1.02426 1.02547 1.02728 0.99648 +1.0146 1.01943 1.0146 1.01218 1.02789 1.0291 1.0146 1.01762 +1.01822 1.02426 1.0146 1.02124 1.01822 1.02306 1.01098 1.0146 +1.02004 1.01822 1.02245 1.02004 1.02185 1.01822 1.01037 1.02004 +1.01581 1.02064 1.02366 1.02245 1.02426 1.00977 1.0146 1.0146 +1.01581 1.02487 1.02426 1.02245 1.02608 1.04178 1.0442 1.04842 +0.986816 0.113377 0 0 0 0 0 0 +0 0 0 0.00200667 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00301 0.00100333 0 0 +0 0 0 0 0.00301 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00100333 0.00200667 0 0 0 0.00100333 +0.00602 0.00301 0 0 0 0 0.00100333 0 +0 0 0 0.00100333 0.00602 0.00401333 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.09632 0.973528 1.04963 +1.03936 1.02728 1.02608 1.02487 1.0291 1.02064 1.02728 1.02547 +1.01943 1.01883 1.01279 1.01883 1.02185 1.01762 1.01822 1.01279 +1.01822 1.02124 1.01641 1.02124 1.01702 1.01943 1.00856 1.01581 +1.01641 1.01641 1.02124 1.02426 1.0291 1.01762 1.02004 1.02306 +1.01943 1.02004 1.01158 1.02004 1.01581 1.01581 1.01883 1.00977 +1.01279 1.01883 1.03393 1.02789 1.0303 1.01762 1.02608 1.01822 +1.0146 1.01158 1.0442 1.05144 1.05326 1.05024 1.05567 1.05567 +1.04842 1.06232 1.05326 1.04782 1.0454 1.05205 1.05688 1.04722 +1.03936 1.03151 1.0303 1.02608 1.01943 1.01943 1.014 1.02426 +1.02064 0.979568 0.972924 0.965676 0.97534 0.971716 0.971112 0.968092 +0.958428 0.974132 0.977756 1.00735 1.02608 1.02789 1.02547 1.02004 +1.02426 1.01762 1.02426 1.02789 1.02185 1.04782 1.06654 1.06292 +1.05024 1.04782 1.03936 1.03876 1.05144 1.0454 1.05024 1.05688 +1.0599 1.05386 1.0454 1.03816 1.01339 1.02064 1.02124 1.02366 +1.01883 1.02185 1.02789 1.02789 1.02124 1.02668 1.01098 1.00192 +1.02245 1.02426 1.02426 1.01943 1.01641 1.01702 1.02245 1.02306 +1.01641 1.0146 1.014 1.01943 1.01158 1.02064 1.01883 1.01943 +1.02306 1.01943 1.02547 1.014 1.01581 1.02306 1.02366 1.02064 +1.02064 1.01762 1.01943 1.01822 1.01218 1.01943 1.02004 1.01943 +1.02064 1.02004 1.03151 1.03453 1.03816 1.03936 1.04299 1.05688 +0.824824 0.00401333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0.00200667 0.00100333 0.0110367 0.01204 0.00903 0.00301 +0.00702333 0.0110367 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00301 0.00401333 +0 0 0 0 0 0 0.00200667 0.00200667 +0 0.00100333 0.0110367 0.00802667 0.00501667 0.00602 0.00702333 0.00501667 +0.00903 0.00501667 0.00100333 0 0 0 0 0.00100333 +0.00100333 0.00100333 0.00401333 0 0 0 0 0 +0 0 0 0 0 0 0.787472 1.05869 +1.0454 1.03695 1.02426 1.02728 1.02728 1.02608 1.02185 1.0152 +1.01883 1.0291 1.02728 1.02789 1.01641 1.01762 1.01883 1.03212 +1.03212 1.02245 1.02004 1.01822 1.01279 1.01641 1.02185 1.02245 +1.01762 1.02426 1.02124 1.00796 1.014 1.02366 1.01822 1.02487 +1.0146 1.01641 1.02426 1.03574 1.02668 1.02245 1.01883 1.01822 +1.02487 1.02366 1.02668 1.02608 1.0146 1.0146 1.02306 1.014 +1.01702 1.0146 1.02547 1.0454 1.05809 1.05144 1.04782 1.03936 +1.05386 1.04238 1.03876 1.04601 1.05628 1.04963 1.04601 1.04359 +1.02668 1.01641 1.01762 1.01822 1.01762 1.01822 1.02004 1.01822 +0.988628 0.95722 0.963864 0.955408 0.969904 0.972924 0.966884 0.956616 +0.960844 0.96628 0.974736 0.975944 1.01158 1.02547 1.02004 1.0152 +1.01943 1.014 1.02728 1.01822 1.02245 1.05024 1.04963 1.04118 +1.05748 1.04057 1.03393 1.05144 1.04118 1.05144 1.04178 1.05144 +1.05144 1.05326 1.0599 1.02789 1.01883 1.02547 1.01702 1.02487 +1.00614 1.01279 1.01098 1.00977 1.02668 1.01702 0.974736 1.014 +1.02064 1.01279 1.00675 1.01279 1.014 1.0152 1.02004 1.0152 +1.01339 1.00796 1.02064 1.01822 1.02064 1.03634 1.02487 1.01339 +1.01641 1.0152 1.0146 1.0146 1.01641 1.01339 1.01641 1.02124 +1.02366 1.01339 1.02124 1.02728 1.02789 1.02668 1.0291 1.02487 +1.03332 1.02849 1.0291 1.02547 1.03212 1.04903 1.05869 1.0605 +0.48461 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00401333 0 0 0.00401333 0.00401333 0.00602 +0.00602 0.00100333 0.00501667 0.00501667 0.00602 0.00702333 0.00501667 0.00401333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00401333 0.00200667 0.00100333 +0.00301 0.00702333 0.00702333 0.00301 0.00100333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00301 0.00903 0.00802667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.417387 1.04782 +1.05628 1.04238 1.0297 1.0291 1.02849 1.01822 1.02124 1.01702 +1.01883 1.01883 1.01702 1.01098 1.01279 1.0152 1.01822 1.01581 +1.01702 1.01098 1.0152 1.01581 1.01702 1.014 1.00252 1.01339 +1.01641 1.02185 1.01339 1.02245 1.0291 1.01822 1.01581 1.02306 +1.01943 1.01218 1.01822 1.01641 1.01098 1.02487 1.03936 1.02366 +1.014 1.00977 1.02487 1.02487 1.02366 1.02366 1.01762 1.02547 +1.03151 1.0297 1.02366 1.02366 1.04722 1.05084 1.05326 1.05265 +1.05205 1.04722 1.05507 1.04722 1.04782 1.04359 1.05326 1.03212 +1.02185 1.02124 1.01883 1.01762 1.02789 1.02185 1.02849 0.994064 +0.962052 0.977152 0.963864 0.970508 0.970508 0.968092 0.96326 0.977152 +0.968092 0.964468 0.9693 0.974132 0.986816 1.02547 1.03453 1.04238 +1.03091 1.01822 1.01339 1.01702 1.01762 1.03514 1.04601 1.04842 +1.03755 1.04782 1.04601 1.05205 1.0448 1.05748 1.04903 1.05024 +1.05628 1.04722 1.03816 1.01702 1.0152 1.01218 1.02789 1.01762 +1.02004 1.01702 1.02366 1.02426 1.01641 0.997688 1.00433 1.01339 +1.02185 1.0146 1.0152 1.02064 1.02728 1.0291 1.02185 1.01822 +1.01883 1.00977 1.02789 1.02306 1.01762 1.014 1.01762 1.02185 +1.01279 1.01702 1.01218 1.02124 1.02185 1.02124 1.02185 1.01279 +1.02004 1.02306 1.02547 1.01822 1.0152 1.01581 1.01762 1.01883 +1.02064 1.02306 1.03574 1.03936 1.0442 1.04238 1.05024 1.01883 +0.194647 0 0 0 0 0.00100333 0.00100333 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00200667 0.00301 0.00802667 +0.00702333 0.00200667 0.00100333 0 0 0.00200667 0.00903 0.00903 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0 0 0 0 0.133443 0.992252 +1.0442 1.03634 1.03332 1.03212 1.03151 1.0303 1.02608 1.0291 +1.02789 1.02064 1.01762 1.02245 1.02728 1.0291 1.0303 1.02306 +1.01762 1.01762 1.02185 1.02124 1.02185 1.02306 1.02185 1.02245 +1.01702 1.0146 1.01702 1.01702 1.01822 1.02124 1.01762 1.02004 +1.02487 1.02185 1.01883 1.02487 1.02185 1.01702 1.0146 1.0303 +1.01702 0.998292 1.00675 1.02728 1.0152 1.02004 1.02306 1.02728 +1.01279 1.0152 1.02004 1.02306 1.03212 1.04903 1.04903 1.05265 +1.05507 1.04842 1.06292 1.05869 1.05628 1.04842 1.03091 1.01822 +1.02245 1.03091 1.02608 1.01279 1.02245 1.02185 1.00977 0.966884 +0.968092 0.964468 0.962052 0.971112 0.964468 0.972924 0.962052 0.971716 +0.968696 0.97232 0.966884 0.965072 0.95722 0.99648 1.01702 1.01218 +1.0146 1.00796 1.02487 1.01883 1.01581 1.00916 1.03453 1.05507 +1.05024 1.06413 1.05386 1.05507 1.06171 1.05084 1.05809 1.05144 +1.05628 1.05205 1.02366 1.0152 1.02487 1.02366 1.02849 1.02064 +1.01883 1.02064 1.03332 1.0291 1.00252 0.976548 1.01641 1.02064 +1.0152 1.02124 1.02547 1.01581 1.0152 1.01581 1.03212 1.02064 +1.02185 1.0146 1.01641 1.01762 1.01339 1.01702 1.02245 1.02064 +1.01218 1.0152 1.02124 1.01762 1.0146 1.01158 1.01822 1.02306 +1.02426 1.01883 1.02185 1.014 1.02004 1.02487 1.01943 1.02487 +1.02245 1.01822 1.01822 1.01762 1.03091 1.03876 1.05205 0.867328 +0.02107 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0 +0.00100333 0.00702333 0.00802667 0.00200667 0 0.00100333 0.00200667 0.00301 +0.00602 0.00501667 0.00501667 0.00501667 0.00200667 0 0 0.00200667 +0.00602 0.0110367 0.0110367 0.00702333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0 0 0 0.00200667 +0.00401333 0.00401333 0.00501667 0.00401333 0.00100333 0 0 0 +0.00301 0.00501667 0.00401333 0.00100333 0.00602 0.00100333 0 0 +0 0 0 0 0 0 0 0.755272 +1.06413 1.05205 1.03695 1.02245 1.02306 1.02608 1.03091 1.02366 +1.02728 1.02487 1.02366 1.02064 1.02849 1.01762 1.01339 1.00796 +1.02668 1.01883 1.02245 1.01822 1.01943 1.01581 1.02306 1.02487 +1.02245 1.02185 1.01279 1.014 1.014 1.01339 1.014 1.02608 +1.01822 1.0146 1.01581 1.02185 1.014 1.02306 1.0152 1.02124 +1.0146 1.0146 0.9995 1.01218 1.01762 1.02064 1.0152 1.02547 +1.02366 1.02426 1.02064 1.02547 1.01762 1.0152 1.02366 1.03453 +1.04601 1.05084 1.03272 1.03151 1.02306 1.0146 1.01641 1.0146 +1.02487 1.02849 1.01702 1.02728 1.02668 1.02849 0.994064 0.96326 +0.968696 0.962656 0.968092 0.977152 0.963864 0.960844 0.962052 0.974736 +0.961448 0.96024 0.968092 0.965676 0.973528 0.997084 1.02306 1.02185 +1.01702 1.02608 1.02004 1.01339 1.02185 1.01581 1.01943 1.03816 +1.05628 1.0448 1.04782 1.06111 1.05386 1.05084 1.05265 1.04782 +1.05446 1.02004 1.02306 1.0146 1.01279 1.01822 1.01822 1.02487 +1.02426 1.02366 1.01279 1.00796 0.97836 1.0146 1.02487 1.01762 +1.02064 1.01037 1.01822 1.0152 1.02487 1.0146 1.02064 1.02608 +1.02849 1.02608 1.02306 1.01279 1.01158 1.0152 1.01339 1.02064 +1.03212 1.01943 1.02306 1.0146 1.02064 1.02366 1.01581 1.0152 +1.01762 1.01339 1.02124 1.02064 1.01822 1.02124 1.02366 1.02004 +1.01883 1.02185 1.03151 1.03695 1.04238 1.04903 1.05205 0.470563 +0 0 0 0 0 0 0 0 +0 0 0.00702333 0.00401333 0.00702333 0.00602 0.00903 0.00401333 +0.00100333 0 0.00602 0.00501667 0.00301 0 0 0.00200667 +0.00200667 0.00200667 0 0 0 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00401333 0.00200667 0.00200667 +0.00401333 0.00301 0.00200667 0.00401333 0 0.00301 0 0 +0.00100333 0.00100333 0.00100333 0 0.00100333 0.00200667 0.00301 0 +0 0 0 0 0 0.00301 0.00401333 0.00602 +0.00100333 0.00301 0 0 0 0 0 0 +0.00401333 0 0 0 0 0 0 0.33712 +1.04299 1.05205 1.04661 1.03393 1.03212 1.02245 1.02245 1.0152 +1.0146 1.02124 1.02185 1.0146 1.0152 1.014 1.0152 1.02487 +1.01581 1.01339 1.02185 1.01943 1.01641 1.02064 1.01943 1.02064 +1.02487 1.03212 1.01762 1.02124 1.01581 1.02608 1.01822 1.01158 +1.02245 1.0291 1.02728 1.02306 1.02487 1.02366 1.0152 1.01822 +1.02547 1.01581 1.01218 0.995272 1.01339 1.01218 1.02245 1.02849 +1.00977 1.00796 1.02487 1.01883 1.01702 1.0303 1.02064 1.02245 +1.01883 1.01158 1.0291 1.01702 1.02245 1.02789 1.03514 1.01279 +1.02366 1.00675 1.02366 1.02245 1.02668 1.02004 0.983796 0.964468 +0.974736 0.961448 0.97232 0.965676 0.963864 0.980776 0.973528 0.97232 +0.961448 0.968092 0.969904 0.970508 0.954804 0.963864 1.01581 1.03453 +1.02608 1.02124 1.03574 1.01218 1.02185 1.02849 1.02004 1.02668 +1.03212 1.05446 1.0448 1.05205 1.05144 1.0593 1.05024 1.03816 +1.02487 1.02124 1.01641 1.02185 1.02426 1.01822 1.01822 1.01641 +1.01702 1.02608 1.014 0.99044 1.00916 1.03453 1.02185 1.01883 +1.0152 1.01218 1.01762 1.01339 1.02064 1.02426 1.02064 1.01702 +1.0146 1.01218 1.02426 1.03091 1.0146 1.02306 1.0146 1.01098 +1.0146 1.01762 1.01098 1.01883 1.01581 1.02004 1.02124 1.02366 +1.02487 1.02426 1.01822 1.02004 1.02064 1.014 1.01098 1.02608 +1.02728 1.03453 1.03091 1.04057 1.04963 1.05024 0.99346 0.137457 +0 0 0 0 0 0 0 0.00401333 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00501667 0.00802667 0 0 0.00802667 0.00401333 +0.00501667 0.00200667 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00301 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0.00401333 0.00401333 0 0 0 +0 0 0 0 0 0 0 0.05418 +0.926416 1.0442 1.03997 1.03332 1.0303 1.03212 1.02306 1.02366 +1.02547 1.01822 1.01883 1.01581 1.02306 1.02366 1.01883 1.01641 +1.01702 1.01641 1.02547 1.02064 1.01822 1.02366 1.014 1.01158 +1.01641 1.01762 1.00916 1.02245 1.02608 1.01037 1.01943 1.02608 +1.02004 1.0146 1.02004 1.0146 1.02306 1.02366 1.03151 1.02426 +1.02608 1.02668 1.02366 0.998292 0.994668 1.03272 1.02608 1.01339 +1.02366 1.03212 1.01822 1.01218 1.02124 1.00977 1.02306 1.01822 +1.01883 1.02728 1.01339 1.0146 1.02426 1.014 1.00071 1.02789 +1.02849 1.01641 1.02789 1.02547 1.0297 1.02366 0.975944 0.965676 +0.968092 0.968696 0.965072 0.96628 0.970508 0.958428 0.959032 0.96628 +0.97836 0.971112 0.968092 0.958428 0.96024 0.965072 1.01037 1.02185 +1.01822 1.0146 1.02426 1.02728 1.01762 1.02124 1.01943 1.01702 +1.02124 1.02789 1.02366 1.02366 1.02124 1.02064 1.01943 1.02728 +1.02366 1.02064 1.0291 1.01339 1.0152 1.02245 1.0146 1.02366 +1.02728 1.02124 1.00252 1.01702 1.01883 1.01702 1.02426 1.02487 +1.01702 1.01581 1.02306 1.0146 1.02426 1.014 1.01943 1.01702 +1.02668 1.01581 1.02064 1.02124 1.02366 1.02728 1.01641 1.02306 +1.02004 1.02306 1.02245 1.02426 1.02064 1.02366 1.01943 1.01702 +1.01702 1.02185 1.01581 1.01279 1.02004 1.02245 1.02608 1.02608 +1.02608 1.02547 1.03212 1.03936 1.04842 1.0605 0.720496 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0.00100333 0.00200667 0 0 +0 0 0 0 0 0 0 0.00401333 +0.00200667 0.00200667 0.00401333 0.00401333 0.00702333 0.00200667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0 0.00802667 0.00100333 0 0 +0.00401333 0.0100333 0.00702333 0.00602 0.00903 0.00903 0.00702333 0.00702333 +0.00602 0.00501667 0.00903 0 0 0 0 0 +0.00301 0 0 0 0 0 0 0 +0.507687 1.05446 1.05084 1.03876 1.03151 1.01822 1.02487 1.02547 +1.02245 1.02366 1.02789 1.02547 1.01943 1.01762 1.01822 1.01883 +1.01581 1.01883 1.02668 1.01702 1.01822 1.02668 1.01943 1.02668 +1.02064 1.01218 1.01943 1.02124 1.02004 1.01822 1.0146 1.0146 +1.00554 1.02124 1.0146 1.01822 1.01762 1.01641 1.0146 1.01641 +1.02608 1.02064 1.01581 1.01279 1.00494 1.00916 1.02547 1.01641 +1.02366 1.0146 1.01822 1.01883 1.01641 1.02064 1.01098 1.02004 +1.02306 1.00433 1.02245 1.0146 1.01581 1.0152 1.02487 1.02728 +1.01883 1.01943 1.02487 1.01641 1.02426 1.01641 0.96326 0.965072 +0.959636 0.95722 0.9693 0.959636 0.965676 0.968696 0.971716 0.977756 +0.96628 0.955408 0.971716 0.974736 0.959636 0.9693 1.02064 1.02064 +1.01037 1.01279 1.02608 1.02728 1.02426 1.02849 1.03393 1.02004 +1.03151 1.0146 1.02608 1.02124 1.0297 1.02366 1.02728 1.01218 +1.02124 1.00735 1.02426 1.0291 1.02366 1.02185 1.02245 1.02245 +1.0146 1.00252 1.00554 1.02064 1.02004 1.02064 1.014 1.02245 +1.02668 1.02728 1.02306 1.014 1.02064 1.01158 1.02064 1.02124 +1.02487 1.02366 1.02064 1.01279 1.0146 1.02547 1.03332 1.0291 +1.02849 1.02245 1.02547 1.02849 1.02004 1.01581 1.02004 1.02064 +1.014 1.02124 1.01822 1.01762 1.01883 1.014 1.01641 1.02124 +1.02487 1.02728 1.02849 1.03634 1.04782 1.03151 0.284947 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0.00100333 0.00501667 0.00702333 0.00401333 0.0100333 0.00602 0.00802667 +0 0 0 0 0 0 0 0.00401333 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0.00301 0.00802667 0.00200667 0 0 +0 0 0 0 0 0 0 0.00903 +0.00602 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.12642 0.985608 1.05386 1.04601 1.0297 1.02728 1.03091 1.01762 +1.01883 1.02004 1.01641 1.0146 1.01762 1.02185 1.01883 1.01279 +1.01702 1.01943 1.01822 1.01883 1.01702 1.02306 1.02426 1.01883 +1.01279 1.0146 1.03151 1.01943 1.02185 1.02064 1.0291 1.03332 +1.02608 1.02064 1.02124 1.02245 1.00977 1.0146 1.01883 1.01822 +1.014 1.0152 1.02245 1.0291 1.02064 0.986212 1.00796 1.02004 +1.01883 1.01883 1.02668 1.02245 1.02487 1.00977 1.01037 1.02426 +1.01641 1.00916 1.0146 1.02185 1.01641 1.02728 1.02004 1.01883 +1.00977 1.02064 1.02245 1.01279 1.01943 1.02306 0.980776 0.968696 +0.966884 0.972924 0.9542 0.967488 0.966884 0.97534 0.969904 0.97534 +0.959636 0.96628 0.965072 0.971112 0.968696 0.980172 1.02426 1.02245 +1.02547 1.02366 1.02789 1.01943 1.01762 1.02608 1.01943 1.02668 +1.01158 1.01762 1.01581 1.02608 1.02366 1.01943 1.01943 1.02185 +1.01339 1.02004 1.01883 1.03212 1.01943 1.01581 1.00916 1.01762 +1.00614 0.98742 1.02124 1.014 1.02547 1.03272 1.02366 1.0152 +1.02064 1.02124 1.00856 1.01943 1.02668 1.0146 1.01279 1.01098 +1.00916 1.01943 1.02245 1.02124 1.01883 1.01339 1.0146 1.01339 +1.01943 1.02487 1.01641 1.01641 1.0146 1.01822 1.01883 1.02064 +1.02245 1.02064 1.02366 1.02124 1.02547 1.02789 1.02789 1.02849 +1.02547 1.03695 1.0454 1.05326 1.05386 0.84028 0.0230767 0 +0 0 0 0 0 0 0 0 +0.00301 0.00501667 0 0 0 0.00100333 0.00602 0.00301 +0.0100333 0.00401333 0.00301 0.00100333 0.00100333 0 0 0 +0 0 0.00501667 0.00401333 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00301 0.00301 0.00401333 0.00100333 0 0.00301 0.00100333 +0 0.00100333 0.0100333 0.00903 0.00501667 0.00100333 0.00702333 0 +0 0.00100333 0.00100333 0 0.00401333 0 0 0.00100333 +0 0.0100333 0.00301 0 0.00501667 0.00401333 0.00200667 0 +0 0 0 0 0 0 0 0 +0 0.612304 1.05446 1.04118 1.03151 1.02608 1.02245 1.02306 +1.02789 1.0291 1.02728 1.02366 1.02306 1.02185 1.02004 1.01883 +1.02064 1.01218 1.01158 1.01762 1.02004 1.02004 1.01641 1.0146 +1.02728 1.02366 1.00916 1.01218 1.01641 1.01943 1.01641 1.01641 +1.01641 1.00252 0.985004 0.997084 0.991044 1.00071 1.0001 1.00494 +1.00675 1.01822 1.0146 1.02185 1.01641 1.01098 0.985608 1.00554 +1.02426 1.02668 1.02245 1.0152 1.03453 1.02306 1.02789 1.02668 +1.03453 1.02366 1.02064 1.02064 1.02668 1.03574 1.01943 1.01883 +1.01339 1.0146 1.02124 1.02366 1.02185 1.0297 0.998292 0.969904 +0.966884 0.971112 0.971112 0.972924 0.968092 0.966884 0.962656 0.967488 +0.953596 0.964468 0.979568 0.968696 0.96628 0.988628 1.02487 1.02124 +1.02185 1.01581 1.02185 1.01158 1.01822 1.00977 1.014 1.01762 +1.01883 1.0297 1.01883 1.00614 1.01702 1.01581 1.02366 1.0146 +1.02306 1.01943 1.0152 1.01339 1.02185 1.03332 1.02487 1.00796 +1.00373 1.01641 1.02547 1.02306 1.01702 1.01822 1.01037 1.02064 +1.02185 1.02245 1.01762 1.02004 1.02245 1.03091 1.01822 1.01641 +1.02366 1.02185 1.02124 1.02426 1.02004 1.0146 1.02547 1.02608 +1.014 1.01943 1.01581 1.02004 1.01581 1.01641 1.02245 1.014 +1.02004 1.01641 1.01822 1.01943 1.01883 1.01943 1.0291 1.02849 +1.03332 1.03634 1.03876 1.04963 1.04118 0.371233 0 0 +0 0 0 0 0.00602 0.00702333 0.00301 0 +0 0.00501667 0.00401333 0.00602 0.01204 0.00501667 0.00702333 0.00200667 +0.00200667 0.00702333 0.00401333 0.00200667 0 0.00802667 0.0100333 0.00602 +0.00903 0.00501667 0.00301 0.00301 0.00501667 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0 0.00200667 +0.00301 0 0 0 0 0 0 0 +0.00401333 0.00301 0 0.00301 0 0 0 0 +0 0.00401333 0.00100333 0.0110367 0.01204 0.00903 0.0100333 0.00702333 +0 0 0 0 0 0 0 0 +0 0.199663 1.00675 1.05084 1.04238 1.03272 1.02306 1.0297 +1.02426 1.02004 1.01581 1.0152 1.01641 1.0152 1.02185 1.01822 +1.0146 1.01581 1.02124 1.01702 1.00977 1.01037 1.01702 1.02064 +1.01702 1.01883 1.01943 1.02547 1.01218 1.01762 1.01702 1.01218 +0.988024 1.01098 1.0146 1.01883 1.0152 1.02245 1.01883 1.01943 +1.01218 1.00131 1.0146 1.01943 1.01943 1.0297 1.02064 1.00071 +1.00252 1.02306 1.01641 1.01098 1.02366 1.02064 1.02668 1.01581 +1.01883 1.03151 1.02064 1.02608 1.0152 1.02185 1.01943 1.02789 +1.01702 1.02004 1.02124 1.02608 1.02426 1.01943 1.01581 0.971716 +0.974736 0.965676 0.969904 0.968092 0.969904 0.960844 0.973528 0.965072 +0.966884 0.971716 0.96024 0.961448 0.968696 1.00252 1.02668 1.02668 +1.02245 1.0303 1.01581 1.01883 1.01822 1.01218 1.02124 1.02547 +1.02789 1.01762 1.01943 1.01581 1.0152 1.02306 1.02728 1.02366 +1.01822 1.0146 1.02306 1.01279 1.02124 1.01702 1.014 1.00856 +1.02306 1.02547 1.00494 1.01883 1.01702 1.01822 1.02124 0.998292 +1.01279 1.00312 1.00675 1.00977 1.00796 1.014 1.02728 1.02306 +1.01883 1.02124 1.0146 1.02366 1.02608 1.02426 1.02185 1.01641 +1.02064 1.01641 1.02728 1.01883 1.02185 1.0152 1.01581 1.01702 +1.01581 1.02004 1.01762 1.02487 1.01883 1.02245 1.02668 1.02728 +1.02728 1.03695 1.0448 1.05446 0.90468 0.0461533 0 0 +0 0 0 0 0 0 0 0 +0.00702333 0.00401333 0 0 0 0 0 0 +0 0 0.00200667 0.0110367 0.0100333 0 0 0 +0 0 0 0 0.00100333 0.00401333 0.00301 0.00501667 +0.00100333 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00100333 0.00301 0.00200667 0 0 0 +0 0 0.00301 0 0 0 0 0.00301 +0.00602 0 0 0 0 0 0 0 +0.00100333 0.00501667 0.00200667 0 0 0 0 0 +0 0 0.635488 1.05507 1.04782 1.03634 1.03453 1.03091 +1.02487 1.02306 1.02668 1.02245 1.02306 1.02728 1.01702 1.01943 +1.02306 1.02608 1.02064 1.02245 1.014 1.01581 1.01762 1.01218 +1.01702 1.02426 1.02064 1.01581 1.01581 1.01943 1.01279 0.983192 +1.00433 1.01158 1.00916 1.00916 1.01339 1.0146 1.02245 1.01641 +1.01762 1.01883 0.9995 1.014 1.02306 1.02064 1.01822 1.01158 +1.00433 0.992856 1.01279 1.02668 1.0146 1.02185 1.02608 1.014 +1.01641 1.02245 1.02547 1.02185 1.02064 1.01339 1.0146 1.02064 +1.02366 1.02124 1.01581 1.02306 1.02124 1.02306 1.0291 0.983796 +0.95722 0.952992 0.963864 0.965072 0.969904 0.96628 0.94816 0.937892 +0.96628 0.958428 0.979568 0.963864 0.976548 1.01943 1.02245 1.01822 +1.02185 1.0291 1.02728 1.03091 1.02426 1.0303 1.02004 1.00554 +1.01762 1.01581 1.02426 1.02366 1.01822 1.01822 1.02426 1.02064 +1.01037 1.01883 1.01943 1.03212 1.02185 1.01158 1.01279 1.02668 +1.01702 1.014 1.00856 1.01581 1.014 1.01339 1.02064 1.01762 +1.0146 1.00977 1.01037 1.01279 1.00071 1.00192 1.00796 1.01581 +1.0152 1.02185 1.01943 1.02306 1.00373 1.0146 1.01762 1.0146 +1.0152 1.02064 1.01581 1.01641 1.0146 1.0152 1.01279 1.02185 +1.02728 1.02064 1.01822 1.02487 1.02124 1.02608 1.03272 1.03755 +1.04299 1.04359 1.04963 1.0448 0.40033 0 0 0 +0 0 0 0 0 0.00802667 0.00602 0 +0 0 0 0.00200667 0 0 0 0 +0 0 0 0 0 0.00702333 0.00301 0.00200667 +0.00301 0.00301 0.00602 0.00602 0.00100333 0 0 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00401333 0.00301 +0 0 0 0 0 0 0.00200667 0.00200667 +0.00200667 0.00301 0 0 0.00200667 0.00501667 0.00602 0 +0 0.00301 0.00301 0.00702333 0.00501667 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0 0 0.182607 0.99044 1.05205 1.04299 1.02487 1.02608 +1.01762 1.02728 1.02306 1.01943 1.02185 1.0152 1.01702 1.01883 +1.014 1.01158 1.00614 1.01098 1.01822 1.01883 1.01943 1.0146 +1.01702 1.00977 1.0146 1.01762 1.02004 1.02487 1.0001 1.00614 +1.02124 1.02306 1.01822 1.02668 1.01581 1.01762 1.02608 1.01762 +1.02185 1.01098 1.014 1.0152 1.00856 1.01822 1.02366 1.02487 +1.02366 0.995272 0.989232 1.01279 1.0152 1.02487 1.0146 1.01098 +1.01943 1.0152 1.01943 1.02124 1.00977 1.02004 1.02124 1.02124 +1.01641 1.01822 1.02124 1.01762 1.01702 1.02064 1.01218 1.01883 +0.985608 0.962052 0.971112 0.968092 0.966884 0.97534 0.972924 0.96024 +0.968696 0.96024 0.964468 0.98138 1.01883 1.02547 1.02064 1.02124 +1.01822 1.00977 1.00916 1.01822 1.02547 1.02789 1.0152 1.02849 +1.01762 1.01098 1.01339 1.01822 1.01943 1.02004 1.02124 1.02547 +1.02306 1.03151 1.02789 1.01943 1.0152 1.01943 1.01158 1.01218 +1.01822 1.02245 1.02789 1.01702 1.01641 1.01702 1.01641 1.01037 +1.01339 1.02245 1.01702 1.01883 1.02124 1.01641 1.02004 1.01822 +1.02366 1.02185 1.02064 1.02487 1.0152 1.02426 1.01883 1.01822 +1.01279 1.01883 1.01339 1.02547 1.01279 1.02366 1.0146 1.01098 +1.01943 1.01279 1.01702 1.02124 1.01943 1.02124 1.02124 1.03091 +1.03695 1.04782 1.05446 0.887936 0.05117 0 0 0 +0 0 0 0 0 0 0.00200667 0 +0 0 0 0 0.00501667 0.00200667 0.00100333 0 +0.00401333 0 0 0.00401333 0 0 0 0 +0 0 0 0 0 0 0.00501667 0.00602 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00501667 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00200667 0.00301 0 0 0 0 0 +0 0 0 0.56889 1.04903 1.04722 1.03091 1.02064 +1.03151 1.03091 1.02366 1.02547 1.02728 1.02849 1.02728 1.03091 +1.02608 1.0303 1.02426 1.01943 1.0152 1.02064 1.01943 1.02366 +1.02185 1.02245 1.02426 1.01822 1.02124 1.01098 0.986212 1.01158 +1.0152 1.01037 1.00796 1.014 1.01822 1.01762 1.0152 1.01037 +1.00796 1.01883 1.0152 1.0146 1.00916 1.01762 1.014 1.01943 +1.01822 1.02185 1.00252 0.983796 1.00494 1.02185 1.01279 1.03634 +1.02789 1.01762 1.02366 1.02185 1.03212 1.0146 1.0152 1.0146 +1.02185 1.02064 1.01822 1.02487 1.01883 1.02064 1.02004 1.0303 +1.03151 0.9995 0.97534 0.97232 0.974736 0.98138 0.9693 0.97232 +0.966884 0.959636 0.991648 1.02366 1.03091 1.02668 1.02487 1.02064 +1.0146 1.02306 1.02547 1.02789 1.01883 1.00796 1.02245 1.01883 +1.01762 1.02064 1.0146 1.01641 1.02124 1.02245 1.0291 1.02064 +1.02124 1.01943 1.00977 1.00312 1.02004 1.0297 1.02245 1.02487 +1.01581 1.014 1.01883 1.02426 1.014 1.02487 1.01581 1.01943 +1.01702 1.00796 1.00916 1.014 1.01581 1.02064 1.00554 1.01279 +1.0152 1.01943 1.0152 1.0146 1.0152 1.00916 1.01762 1.014 +1.02004 1.02366 1.02426 1.02245 1.02728 1.02547 1.0297 1.01762 +1.02426 1.02849 1.02426 1.02728 1.02668 1.0297 1.03514 1.03876 +1.03755 1.04842 1.03393 0.34916 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00501667 0.00802667 +0.00301 0.00802667 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00301 0.00501667 0.00301 0.00802667 0.00602 0.00401333 +0.00200667 0.00100333 0 0 0 0 0.00301 0.00401333 +0.00200667 0 0.00200667 0 0 0 0 0.00401333 +0.00301 0 0 0 0.00301 0 0.00100333 0 +0 0.00301 0 0 0 0 0 0 +0 0 0 0.128427 0.968696 1.05446 1.03876 1.03514 +1.03151 1.02789 1.02366 1.02004 1.02004 1.02306 1.02004 1.01279 +1.0146 1.00735 1.01762 1.0146 1.01702 1.02608 1.01883 1.01581 +1.00977 1.01218 1.01037 1.01762 1.01098 0.982588 1.0001 1.01279 +1.00433 0.9995 1.00131 1.06715 1.20397 1.22237 1.1079 1.01339 +1.01098 1.00735 1.0146 1.014 1.01943 1.01158 1.02608 1.03453 +1.01702 1.02245 1.02245 1.01279 0.967488 0.989232 1.02426 1.02366 +1.00916 1.01943 1.02426 1.02245 1.02306 1.02306 1.02245 1.02245 +1.02185 1.02849 1.01702 1.0152 1.02185 1.02426 1.03393 1.01581 +1.01641 1.01822 1.01098 1.0001 0.989836 0.979568 0.97836 0.992252 +1.00554 1.01581 1.03332 1.02547 1.01339 1.02245 1.01943 1.03695 +1.02487 1.02245 1.00977 1.01641 1.02426 1.01822 1.02004 1.0303 +1.02728 1.02245 1.0297 1.03151 1.02124 1.01339 1.02124 1.02185 +1.01641 1.00735 1.00856 1.01641 1.01339 1.01339 1.02064 1.02306 +1.02124 1.01581 1.01218 1.01218 1.01641 1.0146 1.01822 1.01702 +1.01822 1.01641 1.00916 1.01037 1.01098 1.0152 1.02366 1.01098 +1.01883 1.01641 1.014 1.01158 1.02124 1.0303 1.02245 1.01218 +1.01943 1.0152 1.01339 1.01098 1.0152 1.01581 1.02366 1.02668 +1.02547 1.02064 1.02245 1.02426 1.0303 1.03091 1.03514 1.04842 +1.05446 1.06171 0.81452 0.02408 0 0 0 0 +0 0 0 0 0 0.00100333 0 0 +0.00401333 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0.00501667 0.0130433 0.0100333 +0.00702333 0.00401333 0.00501667 0 0 0.00602 0.00802667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0 +0 0 0.00301 0.00100333 0.00501667 0.00702333 0.01505 0.00100333 +0.00301 0 0 0 0.00301 0.00802667 0 0 +0 0 0 0 0.464543 1.04842 1.05024 1.03936 +1.01822 1.02124 1.01943 1.01883 1.01822 1.01943 1.0146 1.01822 +1.01641 1.01641 1.01883 1.02124 1.02004 1.01641 1.00735 1.02366 +1.02185 1.02366 1.01762 1.01641 1.02004 0.99044 1.01702 1.01883 +1.01339 1.00735 1.06111 1.36583 1.49381 1.49423 1.43024 1.12435 +1.00131 1.00916 1.00796 1.01158 1.01037 1.01581 1.01702 1.0152 +1.0152 1.00675 1.02004 1.01339 1.02728 0.998896 0.989836 1.00977 +1.01641 1.00977 1.01339 1.01339 1.01943 1.01762 1.01702 1.02004 +1.02426 1.02245 1.01822 1.01581 1.03091 1.01339 1.01158 1.02306 +1.02608 1.02728 1.02064 1.02124 1.01279 1.01158 1.0146 1.01218 +1.01339 1.02124 1.01883 1.0146 1.01581 1.02426 1.02306 1.0146 +1.02547 1.0291 1.02004 1.01581 1.02004 1.02668 1.01641 1.02064 +1.01037 1.01883 1.01702 1.01218 1.0146 1.02668 1.02608 1.01037 +1.01581 1.0146 1.02608 1.01158 1.00614 1.02124 1.014 1.00675 +1.00916 1.00252 1.01339 1.01883 1.01279 1.00614 1.00796 1.09285 +1.1352 1.0911 1.0001 1.00192 1.00916 1.00796 1.0001 1.01158 +1.01943 1.02245 1.02668 1.03332 1.00856 1.00675 1.01581 1.02124 +1.0146 1.01883 1.02366 1.02185 1.01883 1.02185 1.01762 1.02306 +1.01762 1.02124 1.02124 1.01943 1.02728 1.03151 1.03212 1.03393 +1.0442 1.01641 0.278927 0 0 0 0 0.00100333 +0 0 0 0.00301 0 0.00200667 0.00602 0.00200667 +0 0.00200667 0.00501667 0.00200667 0.00401333 0.00100333 0 0 +0 0 0 0.00301 0.00602 0 0 0 +0 0 0 0 0 0 0 0.00602 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0.00100333 0.00100333 0 0 +0 0 0 0 0 0 0 0.00100333 +0.00501667 0.00501667 0.00301 0.00602 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0551833 0.85316 1.05024 1.04903 +1.03514 1.03151 1.03574 1.02608 1.02728 1.02366 1.02789 1.02306 +1.01581 1.01883 1.02306 1.02849 1.01581 1.0146 1.01822 1.01702 +1.0146 1.0152 1.01581 1.01581 1.0146 0.997084 1.01762 1.01158 +1.00131 1.00312 1.16884 1.48879 1.49799 1.49506 1.5005 1.28469 +1.0001 1.00192 1.01098 1.01339 1.01641 1.00916 1.014 1.01581 +1.02487 1.02608 1.02426 1.01822 1.02668 1.02245 1.00433 0.995272 +0.998292 1.02426 1.03393 1.02245 1.02245 1.01279 1.01218 1.0146 +1.03091 1.02366 1.0146 1.01581 1.01822 1.02185 1.02487 1.02306 +1.01762 1.01339 1.01822 1.00977 1.02124 1.01218 1.00856 1.02487 +1.02366 1.01943 1.0303 1.03212 1.01943 1.02366 1.01762 1.02366 +1.00916 1.02789 1.03936 1.03091 1.02366 1.01339 1.01702 1.01762 +1.01762 1.01883 1.0303 1.02608 1.03091 1.014 1.00977 1.00312 +1.01762 1.01822 1.02064 1.03514 1.03393 1.02004 1.02668 1.02064 +1.02245 1.01339 1.02366 1.00614 1.00433 1.00977 1.17595 1.44195 +1.47875 1.43567 1.18264 1.00252 1.00131 1.0146 1.01098 1.014 +1.00071 1.02185 1.01581 1.01883 1.02185 1.01098 1.01943 1.01641 +1.01822 1.01702 1.01702 1.01822 1.01581 1.02064 1.00856 1.014 +1.02668 1.01581 1.01581 1.02547 1.02849 1.03453 1.04057 1.04722 +1.05024 0.690872 0.00301 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00200667 0 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00100333 0.00301 0.00401333 0 0 0 0.00100333 0 +0.00200667 0.00602 0.00702333 0 0 0 0.00301 0.00200667 +0.00401333 0.00200667 0 0 0 0 0.00501667 0.00301 +0 0.00401333 0.00501667 0 0 0 0 0 +0 0 0 0 0 0.269897 1.01037 1.05144 +1.04299 1.0303 1.03272 1.0291 1.0303 1.02547 1.02487 1.01822 +1.01762 1.02668 1.01943 1.01702 1.01279 1.01822 1.02124 1.01883 +1.01702 1.01883 1.01943 1.01822 1.00312 0.985004 1.014 1.01702 +1.00675 0.99346 1.18515 1.49255 1.50468 1.50134 1.5005 1.30518 +1.00312 1.00131 1.01339 1.02306 1.0146 1.00675 1.00735 1.02547 +1.01098 1.0152 1.02487 1.02426 1.0146 1.0146 1.02064 1.02004 +1.01822 0.994064 1.00554 1.00916 1.01883 1.02849 1.0297 1.01581 +1.01158 1.02004 1.02245 1.02185 1.03151 1.02124 1.01702 1.014 +1.0152 1.01641 1.01279 1.02004 1.0297 1.02426 1.02849 1.02668 +1.02185 1.01279 1.00856 1.01279 1.00675 1.01822 1.01883 1.01822 +1.02004 1.02487 1.01581 1.02064 1.02728 1.01641 1.02004 1.02245 +1.0146 1.01158 1.01641 1.02366 1.01037 1.01098 1.014 1.01943 +1.00977 1.00796 1.00735 1.01098 1.01279 1.01883 1.01702 1.0146 +1.01158 1.01339 1.0152 1.01702 1.0146 1.07017 1.41393 1.49172 +1.49506 1.5005 1.40891 1.05507 0.997084 1.00433 1.00614 1.0152 +1.00977 1.00856 1.02245 1.02426 1.0152 1.02185 1.02124 1.01943 +1.0146 1.02185 1.02487 1.02487 1.02124 1.02185 1.02124 1.02547 +1.02668 1.02366 1.03393 1.02487 1.03695 1.04057 1.05024 1.05567 +0.982588 0.178593 0 0 0 0 0 0 +0 0.00301 0.00501667 0 0.00501667 0.00702333 0 0 +0 0 0.00301 0.0100333 0.00602 0.00501667 0.00702333 0.00100333 +0 0 0 0 0 0 0.00200667 0 +0 0 0.00100333 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00200667 0 0.00602 +0.00903 0.00903 0 0 0 0.00401333 0 0 +0.00200667 0 0 0 0.00501667 0.0100333 0.00501667 0.00401333 +0 0.00200667 0 0 0 0 0 0 +0.00702333 0.00301 0 0.00200667 0 0 0 0 +0 0 0 0 0 0 0.576917 1.04057 +1.03997 1.03755 1.02668 1.03091 1.02728 1.02124 1.014 1.02366 +1.02185 1.02487 1.03151 1.02487 1.02426 1.01702 1.02004 1.02124 +1.01581 1.014 1.02306 1.01762 1.01279 0.995272 1.01943 1.01339 +1.01641 1.00312 1.08375 1.40389 1.49632 1.49674 1.45868 1.14625 +0.986212 1.00433 1.00675 1.01098 1.00312 1.01158 1.02004 1.02064 +1.014 1.01581 1.02185 1.02064 1.014 1.0146 1.02124 1.01883 +1.02306 1.03997 1.0146 0.998896 1.01883 1.02064 1.01581 1.02306 +1.02306 1.02366 1.01762 1.02064 1.01641 1.0291 1.02124 1.0152 +1.01702 1.02487 1.02849 1.02185 1.01279 1.02487 1.02487 1.0303 +1.02426 1.0152 1.02245 1.0303 1.02547 1.02185 1.02426 1.03272 +1.0297 1.00856 1.01581 1.01339 1.02124 1.01762 1.0152 1.02124 +1.01762 1.01762 1.01581 1.01762 1.00916 1.00494 1.01702 1.01822 +1.02185 1.02064 1.02426 1.01641 1.01702 1.01339 1.00856 1.01702 +1.01822 1.01098 1.01037 1.00554 0.9995 1.0799 1.44738 1.49966 +1.49214 1.49506 1.44571 1.0897 1.00675 1.01218 1.01822 1.02004 +1.02426 1.0152 1.00675 1.00977 1.02004 1.01943 1.02728 1.01702 +1.014 1.01883 1.01641 1.01641 1.02487 1.02306 1.02547 1.01762 +1.02245 1.02789 1.03393 1.03755 1.04057 1.0448 1.0448 1.05446 +0.50869 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00602 +0.00200667 0.00401333 0.00301 0.00100333 0 0 0 0.00702333 +0.00200667 0.00301 0.00802667 0.00802667 0.00200667 0.00702333 0.00501667 0.00903 +0.00702333 0.00301 0.00301 0.00602 0 0.00602 0.00401333 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0100333 0.00200667 0 0 0 0 +0 0 0 0.00301 0.00401333 0 0 0 +0 0 0.00702333 0.0100333 0.00301 0 0 0.00100333 +0 0 0 0.00100333 0.00501667 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.0923067 0.903392 +1.05507 1.04842 1.03514 1.02608 1.02668 1.02668 1.04057 1.03151 +1.02547 1.02064 1.0146 1.01702 1.01641 1.02849 1.02004 1.01762 +1.0152 1.02366 1.02064 1.01762 1.01762 1.00131 1.00373 1.01883 +1.02245 1.01943 1.02185 1.1086 1.26545 1.29138 1.14325 1.00494 +1.00312 1.00675 1.0146 1.01037 1.02004 1.02306 1.02426 1.01943 +1.02124 1.02668 1.01339 1.01702 1.0146 1.02608 1.01943 1.02366 +1.02004 1.01943 1.01822 1.02185 1.02185 1.014 1.01581 1.01762 +1.02668 1.02245 1.02064 1.02608 1.01339 1.01339 1.02426 1.02789 +1.03272 1.03212 1.02608 1.02608 1.02245 1.01581 1.02004 1.01581 +1.01339 1.0303 1.01762 1.02547 1.02487 1.02608 1.01339 1.02245 +1.02789 1.02366 1.02426 1.02487 1.00977 1.02124 1.01822 1.01339 +1.00373 1.0001 1.01702 1.01943 1.01702 1.02064 1.02789 1.01822 +1.01581 1.01702 1.02124 1.02004 1.0146 1.01702 1.02728 1.00977 +1.00977 0.9995 1.014 1.00614 1.00192 1.02064 1.34241 1.4959 +1.49464 1.4959 1.34032 1.0291 1.00312 1.01218 1.01158 1.01218 +1.01158 1.02487 1.02366 1.01702 1.01581 1.02064 1.014 1.01702 +1.01037 1.02426 1.02426 1.02728 1.01943 1.02426 1.0297 1.02608 +1.02789 1.02306 1.03272 1.0297 1.04299 1.05265 1.05567 0.876344 +0.07525 0 0 0 0 0.00200667 0 0.00200667 +0.00602 0.00200667 0 0 0 0 0 0 +0.00200667 0 0 0.00200667 0.00401333 0.00301 0.00301 0.00501667 +0 0 0 0.00100333 0 0 0 0 +0 0 0.00100333 0.00100333 0.00802667 0.00602 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00602 0.00301 0.00501667 0.00200667 +0 0.00100333 0.00602 0.00200667 0 0 0 0 +0.00401333 0.00301 0 0 0.00100333 0.00200667 0 0 +0 0 0 0.00602 0 0 0 0.00602 +0.00401333 0.00602 0 0.00301 0.00903 0.00602 0 0 +0 0 0 0 0 0 0 0.265883 +1.00312 1.04903 1.03876 1.02608 1.02366 1.0303 1.02547 1.02426 +1.01822 1.02426 1.02366 1.02064 1.02608 1.02608 1.01762 1.02668 +1.02728 1.014 1.01702 1.02547 1.02245 1.01098 0.995272 1.0152 +1.02185 1.01279 1.01098 1.014 1.01158 1.02185 1.00675 1.00433 +1.0146 1.00494 1.01218 1.0146 1.00796 1.01218 1.00977 1.0146 +1.02306 1.00856 1.0152 1.02789 1.02306 1.02124 1.0146 1.01883 +1.01943 1.01581 1.01702 1.01883 1.02728 1.02306 1.02728 1.02789 +1.01158 0.997084 1.00675 1.0152 1.01641 1.02608 1.02306 1.02245 +1.01581 1.01822 1.02366 1.02728 1.02487 1.0291 1.02426 1.02426 +1.02547 1.01218 1.02426 1.02547 1.01943 1.01762 1.02728 1.02789 +1.02004 1.00796 1.01581 1.02124 1.014 1.01037 1.00071 1.00675 +1.01339 1.01641 1.02245 1.01943 1.01822 1.01822 1.02185 1.01037 +1.02124 1.02004 1.01581 1.01702 1.02306 1.0146 1.0291 1.03091 +1.0146 1.01581 1.00916 1.00614 0.995272 0.998292 1.0911 1.30686 +1.38967 1.3056 1.09845 1.02426 1.00675 1.00916 1.00735 1.01822 +1.0146 1.01943 1.02004 1.01943 1.0146 1.01702 1.01339 1.01883 +1.01702 1.01158 1.02245 1.01098 1.01641 1.01158 1.01702 1.02547 +1.03574 1.04118 1.03936 1.04359 1.04238 1.05144 1.01158 0.265883 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00100333 0.00100333 0.00401333 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0 0 0.00802667 +0.00602 0.00401333 0.00100333 0 0.00200667 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0100333 0 0 0.00200667 0 +0 0 0 0 0.00100333 0.0100333 0.00501667 0.00702333 +0.00200667 0.00100333 0 0 0 0 0.00602 0 +0 0 0 0 0 0.00903 0.01505 0.00802667 +0.00602 0.00100333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.497653 1.04118 1.0448 1.03574 1.03091 1.03574 1.03332 1.02849 +1.02487 1.01822 1.03151 1.0303 1.02306 1.0291 1.01883 1.01883 +1.00977 1.02185 1.02306 1.02245 1.0146 1.01158 1.00554 1.00735 +1.01037 1.01339 1.01218 1.01218 1.02608 1.02426 1.01339 1.02306 +1.00554 1.01037 1.014 1.01883 1.01641 1.02004 1.01822 1.02185 +1.0146 1.02306 1.02124 1.01762 1.0152 1.02185 1.0146 1.02306 +1.02789 1.02849 1.02426 1.01762 1.014 1.02064 1.0152 1.01641 +1.02124 1.00675 1.00071 0.997688 0.997688 1.00735 1.02124 1.01037 +1.01581 1.0146 1.01943 1.01943 1.02004 1.0303 1.02608 1.014 +1.02185 1.02366 1.0146 1.00916 1.00735 1.01943 1.01339 1.01279 +1.014 0.998896 0.989232 0.994668 0.998292 1.01158 1.01098 1.0146 +1.0146 1.01037 1.01037 1.01883 1.0152 1.02185 1.0303 1.03634 +1.02004 1.02185 1.01883 1.02668 1.01883 1.01641 1.00675 1.01037 +1.00494 1.01279 1.00433 1.01037 1.00916 1.00433 0.994668 1.01943 +1.04238 1.02306 1.00494 1.01641 1.02245 1.02185 1.01762 1.01822 +1.0146 1.01218 1.01822 1.02185 1.01943 1.01641 1.02124 1.01641 +1.02004 1.01641 1.01641 1.02426 1.02124 1.02426 1.014 1.01943 +1.02547 1.03634 1.03816 1.03997 1.04722 1.04118 0.507687 0 +0 0 0 0 0 0 0.00100333 0.00100333 +0 0 0 0 0.00401333 0.00602 0.00200667 0.00100333 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00200667 0.00501667 0 0 +0 0 0.00200667 0.00301 0.00401333 0 0 0.00301 +0 0 0 0.00200667 0.00401333 0.00903 0 0.00903 +0.01204 0.00802667 0 0 0.00903 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.0290967 0.701176 1.04057 1.04842 1.03574 1.03091 1.03695 1.0303 +1.03091 1.0291 1.02487 1.01581 1.02064 1.02185 1.01641 1.02366 +1.02366 1.02124 1.01943 1.01883 1.01822 1.02064 1.01762 0.995272 +1.01883 1.02849 1.02789 1.02124 1.01641 1.00554 1.01279 1.01762 +1.0146 1.02185 1.02306 1.01702 1.02668 1.0152 1.01581 1.01098 +1.02004 1.01943 1.01762 1.0152 1.014 1.00977 1.02004 1.02306 +1.01098 1.00433 1.00977 1.02547 1.01943 1.0146 1.02728 1.01762 +1.01279 1.01098 1.0152 1.01279 1.03393 1.02306 1.01037 1.00373 +1.00071 1.01279 1.00312 1.00735 1.0001 1.014 1.00977 1.01822 +1.0152 1.0146 1.02728 1.02124 1.02789 1.01098 1.01339 1.01218 +1.014 1.02366 1.01822 1.01943 1.02185 1.02306 1.01943 1.01581 +1.0152 1.0146 1.02487 1.01943 1.01218 1.01762 1.01158 1.01037 +1.01098 1.00977 1.01822 1.02124 1.0152 1.01641 1.0152 1.01098 +1.014 1.02306 1.02366 1.00977 1.0146 1.00916 1.0146 1.01339 +1.01702 1.01762 1.02487 1.01762 1.0146 1.02185 1.01581 1.02185 +1.02426 1.0146 1.01943 1.02124 1.0303 1.01218 1.014 1.02306 +1.02728 1.02547 1.02849 1.02185 1.0291 1.03212 1.02366 1.02306 +1.03151 1.03634 1.0442 1.04601 1.0605 0.75012 0.0351167 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0.00100333 0.00602 0.00200667 0 0.00401333 0 +0 0.00200667 0 0.0100333 0.00702333 0.00100333 0 0 +0 0.00401333 0.00802667 0.00501667 0.00301 0.00401333 0.00702333 0.00501667 +0.00602 0.00903 0.00301 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.119397 0.913696 1.0599 1.04842 1.03634 1.03151 1.03332 +1.0303 1.02185 1.02426 1.0297 1.02306 1.01943 1.02547 1.01943 +1.01822 1.02547 1.02124 1.01581 1.01702 1.01943 1.02426 1.01702 +1.00312 1.01762 1.0146 1.01822 1.0146 1.02728 1.02245 1.01581 +1.01641 1.0146 1.02245 1.014 1.02064 1.02426 1.02124 1.0291 +1.0152 1.01702 1.014 1.02306 1.02185 1.01943 1.02124 1.01883 +1.01883 1.02306 1.02608 1.02064 1.0146 1.02728 1.01883 1.02064 +1.03151 1.02668 1.0152 1.0152 1.014 1.01581 1.02245 1.02668 +1.02064 1.01702 1.01762 1.02185 1.01822 1.0152 1.01641 1.01158 +1.01822 1.02124 1.0152 1.00554 1.01098 1.00856 1.01883 1.01883 +1.02426 1.0146 1.01279 1.0152 1.0152 1.0146 1.02306 1.01762 +1.01943 1.0146 1.01762 1.02064 1.01883 1.01702 1.01641 1.00977 +1.01218 1.00916 1.02064 1.0152 1.01762 1.02245 1.01883 1.01762 +1.02487 1.02547 1.01339 1.02487 1.0146 1.01218 1.01883 1.00916 +1.00977 1.01762 1.02547 1.02487 1.02004 1.02426 1.01641 1.01822 +1.02306 1.01883 1.0146 1.01822 1.02245 1.02668 1.0146 1.014 +1.01641 1.02487 1.02245 1.02487 1.0297 1.0303 1.03514 1.03876 +1.03393 1.03997 1.03574 1.0454 0.918848 0.124413 0 0 +0 0 0 0 0 0.00200667 0.00301 0 +0 0.00100333 0 0 0.00100333 0.00802667 0.00802667 0.00401333 +0 0 0 0 0 0.00401333 0.00401333 0.00401333 +0.00401333 0 0 0 0.00100333 0 0 0 +0.00100333 0 0.00401333 0.00802667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00100333 0.00100333 0.00200667 +0.00200667 0.00100333 0.00100333 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00200667 0 0 0 0 0.00401333 0 +0.00100333 0 0.00100333 0 0.0100333 0.00501667 0 0 +0 0.00200667 0 0 0 0 0 0 +0 0 0.203677 0.955408 1.04963 1.03936 1.03151 1.03151 +1.03634 1.03695 1.0303 1.02245 1.02547 1.02608 1.0152 1.02728 +1.02608 1.02124 1.01883 1.01762 1.01762 1.02245 1.02064 1.014 +1.01762 1.01098 0.997688 1.0146 1.00977 1.01218 1.01158 0.997688 +1.01702 1.01158 1.02064 1.02185 1.02245 1.014 1.0146 1.01581 +1.01822 1.02426 1.0303 1.01762 1.02547 1.02004 1.02306 1.02185 +1.01641 1.01158 1.01943 1.02426 1.02487 1.02366 1.02245 1.0146 +1.01339 1.01762 1.01641 1.02487 1.02487 1.01037 1.01943 1.02608 +1.02306 1.01883 1.01883 1.02306 1.03997 1.06171 1.07885 1.07605 +1.05144 1.02245 1.02245 1.01339 1.02487 1.02426 1.02245 1.01339 +1.02426 1.02245 1.00856 1.00796 1.01339 1.01218 1.01037 1.0146 +1.02185 1.02366 1.02124 1.02668 1.01883 1.01702 1.01218 1.01702 +1.02124 1.02547 1.02004 1.01762 1.02185 1.02185 1.01762 1.01339 +1.01339 1.01339 1.02366 1.01641 1.01883 1.01158 1.01702 1.02124 +1.02547 1.02064 1.00916 1.0291 1.02004 1.02124 1.01883 1.02306 +1.02306 1.02366 1.01943 1.02245 1.02004 1.02124 1.02426 1.02728 +1.01702 1.02487 1.02547 1.02487 1.02124 1.03151 1.03936 1.03936 +1.04178 1.04963 1.0593 0.967488 0.20769 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00401333 +0 0.00802667 0.00501667 0.00200667 0 0 0 0 +0 0.00100333 0 0.00100333 0 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00602 0.00200667 0 +0 0 0 0 0 0 0 0 +0.00200667 0.0140467 0.00702333 0.00301 0 0 0 0.00602 +0.00802667 0 0 0 0 0.00301 0 0 +0 0 0.00100333 0.00501667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.268893 0.980172 1.05265 1.03997 1.03695 +1.03151 1.02608 1.02668 1.02245 1.02849 1.02004 1.01702 1.03091 +1.02487 1.02426 1.02487 1.01943 1.02426 1.02064 1.02487 1.01822 +1.01641 1.02487 1.02487 1.01641 1.01883 1.02004 1.01702 1.02124 +1.02245 1.01702 1.02668 1.02245 1.01581 1.01762 1.02245 1.01641 +1.0146 1.02608 1.02185 1.02004 1.02004 1.0146 1.0152 1.0152 +1.01702 1.01943 1.02487 1.01641 1.00916 1.00796 1.02064 1.02124 +1.01822 1.02124 1.0297 1.01098 1.0146 1.0146 1.01762 1.01641 +1.01762 1.0146 1.05084 1.10195 1.1289 1.13695 1.1408 1.1415 +1.138 1.117 1.0778 1.02064 1.01218 1.01037 1.01037 1.01339 +1.01581 1.02245 1.01883 1.01581 1.02064 1.02064 1.02366 1.01581 +1.01037 1.01883 1.00735 1.01037 1.0152 1.01883 1.02185 1.02306 +1.02124 1.02306 1.02547 1.01883 1.02004 1.0152 1.00977 1.0291 +1.02245 1.01883 1.02306 1.02064 1.01339 1.01279 1.01581 1.02426 +1.01339 1.0152 1.0152 1.01218 1.01822 1.02004 1.01883 1.01279 +1.02547 1.00614 1.02064 1.01702 1.01581 1.02668 1.02487 1.02245 +1.02245 1.02366 1.02608 1.03091 1.03634 1.03091 1.03695 1.04118 +1.04661 1.05748 0.988628 0.281937 0 0 0 0 +0 0 0 0 0 0 0.00100333 0 +0 0.00401333 0.00602 0 0 0 0 0 +0.00401333 0 0 0 0.00100333 0 0 0 +0 0 0.00301 0.00301 0.00702333 0 0 0 +0.00200667 0.00100333 0.00602 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0 +0 0 0 0.00501667 0.00903 0.00802667 0.00100333 0.00401333 +0.00702333 0 0 0 0 0.00100333 0.00903 0.00501667 +0 0 0 0.00401333 0.00301 0 0 0 +0 0.00903 0.00903 0 0.00501667 0.00100333 0 0.00401333 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0.332103 0.991648 1.05507 1.03574 +1.03332 1.04178 1.03876 1.03695 1.03453 1.03393 1.03212 1.02728 +1.02547 1.01943 1.0152 1.02547 1.0152 1.02064 1.01641 1.02547 +1.01702 1.02426 1.01822 1.0152 1.02064 1.02849 1.01883 1.01883 +1.02306 1.01702 1.01581 1.02245 1.02487 1.01581 1.02185 1.00614 +1.01822 1.02004 1.0146 1.00916 1.01339 1.01762 1.02245 1.01641 +1.01822 1.01158 1.014 1.01883 1.02004 1.01581 1.0146 1.01158 +1.02789 1.01279 1.01098 1.02245 1.01339 1.00856 1.0146 1.01762 +1.01158 1.07535 1.1275 1.13835 1.13905 1.1422 1.1373 1.13765 +1.14045 1.1429 1.1408 1.1058 1.03332 1.01641 1.00977 1.00735 +1.01098 1.01702 1.01822 1.02668 1.01702 1.02366 1.02426 1.02366 +1.02124 1.01641 1.01943 1.02306 1.02004 1.01098 1.0152 1.01702 +1.0146 1.01098 1.02245 1.02426 1.02124 1.02547 1.02426 1.01158 +1.01702 1.01581 1.01581 1.01641 1.02064 1.0146 1.01762 1.01037 +1.01702 1.01762 1.0303 1.02185 1.0146 1.0146 1.02547 1.02366 +1.02849 1.02366 1.02004 1.01943 1.01339 1.01943 1.01762 1.02608 +1.02728 1.02306 1.0297 1.02849 1.03876 1.03393 1.04661 1.03876 +1.05084 0.986816 0.317053 0 0 0 0 0 +0 0.00501667 0.00100333 0 0 0 0 0 +0 0 0 0 0.00200667 0 0.00100333 0 +0 0.00501667 0.01204 0 0.00100333 0.00602 0.00501667 0 +0 0 0 0 0.00200667 0.00301 0.00602 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0.00200667 0 0 +0 0.00200667 0.00501667 0.00200667 0 0.00401333 0 0.00903 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.330097 0.988628 1.04903 +1.04661 1.03816 1.03332 1.0291 1.02306 1.01641 1.02124 1.02487 +1.02124 1.0146 1.02789 1.0146 1.01883 1.02608 1.02608 1.01702 +1.01037 1.02608 1.03151 1.01883 1.02366 1.0146 1.01762 1.0146 +1.014 1.02064 1.02245 1.02668 1.0146 1.02124 1.01037 1.01762 +1.02728 1.02366 1.02668 1.0303 1.02185 1.01581 1.02124 1.01943 +1.02185 1.02366 1.03393 1.01943 1.02487 1.02124 1.02728 1.01883 +1.00675 1.00916 1.0146 1.01037 1.01702 1.01883 1.014 1.01762 +1.06473 1.1345 1.1408 1.1415 1.138 1.1352 1.13275 1.1359 +1.13555 1.1394 1.1387 1.1387 1.1093 1.02547 1.01641 1.01218 +1.01883 1.014 1.01037 1.01641 1.01702 1.01702 1.01279 1.0146 +1.0152 1.01641 1.01581 1.02366 1.02245 1.0152 1.02728 1.01883 +1.02004 1.02124 1.01943 1.00554 1.02064 1.01581 1.01702 1.02487 +1.0303 1.02306 1.01943 1.01279 1.00796 1.01581 1.01762 1.02064 +1.02426 1.01702 1.02124 1.02306 1.0152 1.02004 1.01822 1.0152 +1.02487 1.0297 1.0303 1.02306 1.02728 1.02547 1.02366 1.02245 +1.03091 1.0291 1.0291 1.03393 1.03634 1.04359 1.05869 1.05688 +0.985004 0.323073 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00501667 +0 0 0.00100333 0 0 0 0.00401333 0 +0 0 0 0.00301 0.00501667 0.00602 0 0.00401333 +0.00401333 0.00301 0 0 0 0 0 0.00100333 +0.00602 0.00602 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00602 0.00301 0 0.00200667 0 0.00602 0.00100333 +0 0.00301 0.00802667 0.00602 0 0 0.00301 0.00903 +0.00702333 0.00602 0.00401333 0 0.00501667 0.00100333 0 0.00501667 +0 0 0 0 0.00301 0 0 0 +0 0.00200667 0.00602 0 0 0 0 0 +0 0 0 0 0 0 0.277923 0.971112 +1.05748 1.04903 1.04359 1.04178 1.03876 1.03332 1.03755 1.02608 +1.02487 1.03272 1.0297 1.03332 1.02668 1.03212 1.01581 1.02124 +1.02185 1.02124 1.0146 1.01943 1.0152 1.01218 1.02306 1.02608 +1.02487 1.02185 1.01641 1.01339 1.00977 1.0146 1.014 1.01641 +1.02004 1.02245 1.02185 1.01641 1.0146 1.0146 1.02426 1.02185 +1.01822 1.0152 1.01581 1.00856 1.00675 1.0146 1.01641 1.00735 +1.01762 1.02124 1.01581 1.02124 1.0152 1.00856 1.00614 1.0297 +1.1177 1.14045 1.1387 1.13205 1.1338 1.13695 1.13345 1.1303 +1.1352 1.13415 1.1338 1.1394 1.1422 1.09215 1.00796 1.00252 +1.01037 1.02245 1.01762 1.0152 1.01339 1.01762 1.0152 1.01581 +1.01822 1.01762 1.02366 1.02185 1.02124 1.02547 1.014 1.01822 +1.02124 1.02366 1.02064 1.02064 1.01822 1.01158 1.0146 1.01822 +1.01943 1.01218 1.01943 1.02789 1.03151 1.02728 1.02064 1.02064 +1.0146 1.01279 1.02426 1.02306 1.02185 1.01641 1.0297 1.0152 +1.02487 1.01943 1.03393 1.0146 1.02064 1.03151 1.02849 1.02124 +1.02185 1.03453 1.03755 1.0442 1.04178 1.04118 1.05507 0.965072 +0.27993 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00301 0.00602 0 0 0 0 0 0 +0 0 0 0 0 0.00401333 0.00903 0 +0 0 0.00602 0 0 0 0.00100333 0.00100333 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00702333 0.00200667 0.00100333 0 0.00200667 0.00501667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00301 0 +0.00602 0.00702333 0.00401333 0.00301 0.00301 0.00401333 0.00602 0.00702333 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.20468 +0.91112 1.04661 1.04178 1.03876 1.03997 1.03695 1.03091 1.02849 +1.04178 1.0291 1.02668 1.02728 1.014 1.01098 1.02004 1.01883 +1.0146 1.01883 1.02547 1.02547 1.02668 1.02124 1.02004 1.02124 +1.0146 1.01037 1.02124 1.01883 1.02366 1.0303 1.02306 1.01883 +1.02426 1.02366 1.01702 1.0291 1.02124 1.02004 1.02487 1.02366 +1.02668 1.02245 1.01762 1.01883 1.02185 1.0152 1.01581 1.01883 +1.03634 1.02487 1.02366 1.01702 1.01762 1.00554 1.00131 1.08305 +1.1408 1.13975 1.14115 1.1345 1.1359 1.13555 1.13415 1.1373 +1.1373 1.13555 1.1338 1.1436 1.13695 1.12575 1.02849 1.00614 +1.00977 1.01339 1.01098 1.01641 1.01822 1.02185 1.02306 1.02849 +1.02124 1.02064 1.0152 1.0152 1.01641 1.01762 1.02366 1.01762 +1.01762 1.01762 1.01762 1.01943 1.02245 1.02124 1.01581 1.01943 +1.01943 1.01339 1.01279 1.01037 1.01702 1.01822 1.0146 1.01762 +1.02366 1.02426 1.02728 1.02004 1.02547 1.01762 1.02608 1.02004 +1.02124 1.0152 1.02004 1.03091 1.01822 1.02426 1.03091 1.02668 +1.03272 1.03332 1.03574 1.04359 1.05205 1.05084 0.925208 0.21672 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00702333 0.0100333 0 0.00100333 0.00401333 0.00501667 0.00903 +0.00501667 0 0 0 0 0 0 0.00702333 +0.00200667 0 0 0 0.0110367 0.00100333 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0 0 0 0.00401333 +0.00702333 0.00501667 0 0.00100333 0.00100333 0.00100333 0.00602 0.00602 +0.00301 0.00401333 0.00100333 0.0100333 0.00301 0 0.00501667 0.00501667 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0.00301 0 0 0 0 +0 0 0 0 0 0 0 0 +0.107357 0.708904 1.04299 1.04359 1.03514 1.0291 1.03695 1.03876 +1.03272 1.01762 1.02668 1.02487 1.02185 1.03212 1.03212 1.02004 +1.02245 1.0291 1.02728 1.02366 1.02426 1.02004 1.02487 1.02064 +1.02849 1.02004 1.02306 1.02064 1.02547 1.01339 1.01702 1.01943 +1.02366 1.02306 1.01822 1.01098 1.01339 1.02547 1.01641 1.0152 +1.01702 1.01581 1.02004 1.02185 1.01822 1.0297 1.01702 1.01702 +1.02064 1.01279 1.00614 1.01158 1.0152 1.01158 1.01037 1.1079 +1.14115 1.13765 1.13485 1.13625 1.1345 1.13555 1.1359 1.13135 +1.13765 1.1373 1.1373 1.138 1.14185 1.1352 1.06836 1.01098 +1.01218 1.00796 1.014 1.01943 1.01762 1.01762 1.02426 1.01762 +1.01943 1.02185 1.02306 1.01581 1.01943 1.01339 1.02064 1.02668 +1.02487 1.0152 1.0152 1.01822 1.01943 1.02668 1.01702 1.01822 +1.03151 1.02668 1.02064 1.01581 1.02124 1.02306 1.01943 1.01641 +1.01279 1.02245 1.02728 1.02004 1.02185 1.01943 1.02547 1.02064 +1.02789 1.02728 1.02306 1.02849 1.02608 1.02789 1.03393 1.0303 +1.03514 1.04903 1.04661 1.05205 1.05024 0.831264 0.143477 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.0110367 0.00501667 0.00401333 0 0 +0 0 0 0 0 0.00301 0.00602 0 +0 0 0 0.00501667 0.00401333 0.00401333 0 0.00401333 +0.00301 0.00100333 0.00401333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0 0 0.00501667 0.0100333 0.00301 0 +0 0 0 0 0 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00401333 0 +0.00401333 0.00401333 0 0.00200667 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0280933 0.48461 0.995876 1.04963 1.04299 1.03393 1.03514 +1.03272 1.03816 1.03755 1.02608 1.0297 1.03453 1.02064 1.02728 +1.02547 1.02124 1.01581 1.02789 1.02668 1.02608 1.02124 1.02245 +1.01883 1.02004 1.01641 1.02306 1.0146 1.02004 1.01943 1.02185 +1.01943 1.02487 1.02547 1.01702 1.01943 1.01339 1.01098 1.02245 +1.02064 1.02124 1.01883 1.02064 1.01702 1.01762 1.02004 1.01883 +1.01581 1.01641 1.02064 1.01339 1.00614 1.01339 1.03091 1.1261 +1.1331 1.1429 1.13345 1.1324 1.1415 1.1324 1.1366 1.1352 +1.1373 1.1352 1.14045 1.1352 1.13835 1.1443 1.0918 1.00433 +1.00554 1.00856 1.01641 1.0146 1.00916 1.01218 1.01702 1.01037 +1.02487 1.02064 1.0291 1.0146 1.01641 1.01581 1.01037 1.02185 +1.02306 1.01943 1.02426 1.01762 1.0146 1.01581 1.02124 1.01098 +1.01762 1.01581 1.02185 1.01822 1.02245 1.02245 1.01581 1.02245 +1.02366 1.02185 1.02426 1.02004 1.02849 1.02245 1.02547 1.02487 +1.02004 1.02426 1.02849 1.0297 1.03453 1.03695 1.03936 1.03634 +1.04722 1.05205 1.05869 1.0303 0.602 0.0702333 0 0 +0 0 0 0 0 0 0.00301 0 +0 0 0 0 0 0 0.00100333 0 +0.00602 0.0110367 0 0.00301 0 0 0.00401333 0.00200667 +0.00100333 0.00903 0.00100333 0.00100333 0 0.00301 0 0 +0.00602 0.00100333 0.00200667 0.0100333 0.00702333 0.00501667 0.00501667 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00200667 0.00501667 0.00200667 0 0 0 +0 0 0 0 0.00200667 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0.00100333 0 0 0 0 0 +0 0.00200667 0 0 0 0 0 0 +0 0 0 0.256853 0.894376 1.05326 1.05748 1.04842 +1.04782 1.04842 1.03151 1.03151 1.03755 1.02185 1.02547 1.03936 +1.02728 1.02306 1.03453 1.02124 1.02426 1.02366 1.01943 1.01822 +1.01822 1.01762 1.03212 1.01883 1.02185 1.01943 1.02004 1.02487 +1.02306 1.0152 1.01702 1.0146 1.02185 1.02487 1.01943 1.02668 +1.01762 1.02306 1.02124 1.01762 1.01581 1.01702 1.01641 1.02306 +1.01641 1.0146 1.01702 1.00977 1.01158 1.00977 1.0297 1.12645 +1.13975 1.1338 1.1373 1.1408 1.138 1.13485 1.13345 1.1317 +1.12995 1.1317 1.131 1.13345 1.1352 1.1387 1.09845 1.01339 +1.0146 1.02547 1.01822 1.02245 1.02124 1.01762 1.01943 1.02789 +1.02004 1.01762 1.02306 1.02306 1.02064 1.02728 1.02245 1.02245 +1.01822 1.02185 1.02608 1.02306 1.0297 1.02608 1.01641 1.02124 +1.01279 1.02366 1.02124 1.02124 1.01762 1.02185 1.02064 1.01822 +1.01702 1.02124 1.0303 1.02124 1.02306 1.02608 1.02608 1.0291 +1.03212 1.03332 1.03091 1.02728 1.02789 1.04661 1.04359 1.04903 +1.05507 1.05386 0.965072 0.396317 0.00602 0 0 0 +0 0 0 0 0 0 0.00200667 0.0100333 +0.00401333 0 0 0 0 0 0.00200667 0 +0 0.00200667 0 0 0.00501667 0.00200667 0.00200667 0.00200667 +0 0 0.00301 0.00301 0.00301 0.00100333 0 0.00200667 +0 0.00702333 0 0 0.00301 0.00802667 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00401333 0.00200667 0 +0 0.00501667 0.00301 0 0 0 0 0 +0 0 0.00100333 0 0 0 0 0 +0 0.00200667 0 0.00200667 0.00301 0 0.00903 0.0100333 +0 0 0 0 0.00501667 0 0 0.00401333 +0.00501667 0 0 0 0 0 0 0 +0 0 0 0 0.07525 0.524743 0.997084 1.05507 +1.05748 1.03936 1.03695 1.04299 1.0303 1.03393 1.03574 1.02789 +1.02789 1.0303 1.03514 1.0291 1.02124 1.02245 1.02366 1.02124 +1.0303 1.02004 1.01641 1.02064 1.02366 1.02124 1.02366 1.02185 +1.01339 1.01822 1.01883 1.02306 1.02004 1.0152 1.02366 1.01943 +1.02124 1.02004 1.02366 1.01822 1.01822 1.02487 1.01883 1.02064 +1.01098 1.01702 1.01702 1.01641 1.01581 1.014 1.01702 1.12925 +1.14045 1.138 1.1359 1.13485 1.1359 1.12855 1.1317 1.1401 +1.1359 1.1387 1.1401 1.13835 1.13905 1.13555 1.08445 1.01218 +1.01037 1.00494 1.01641 1.02306 1.02366 1.02728 1.01641 1.02306 +1.01641 1.02004 1.02004 1.02004 1.01822 1.0146 1.02789 1.02366 +1.01339 1.01883 1.01943 1.01943 1.01279 1.01702 1.02366 1.03634 +1.02306 1.01943 1.02849 1.02608 1.01883 1.01943 1.02728 1.02245 +1.02487 1.02547 1.01822 1.0303 1.03091 1.02004 1.02849 1.02185 +1.02849 1.03453 1.03574 1.03816 1.03272 1.04299 1.04963 1.05084 +1.03634 0.728224 0.16856 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00401333 0.00200667 0 0 0 0 +0 0 0.0130433 0 0 0 0 0.0100333 +0.00802667 0 0 0 0 0 0.00401333 0 +0 0 0.00802667 0.00301 0 0.00100333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00200667 0 0 0 0 +0 0.00200667 0 0 0 0 0 0 +0.00100333 0 0 0.00702333 0 0 0.00903 0.0110367 +0.01505 0 0 0.00200667 0 0 0.00100333 0 +0 0.00702333 0.00903 0.00200667 0 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.214713 0.733376 +1.01641 1.05084 1.04903 1.04178 1.03634 1.04118 1.03332 1.03755 +1.03936 1.03453 1.02426 1.02124 1.03272 1.02185 1.02608 1.02366 +1.0291 1.02789 1.0303 1.02547 1.02124 1.01822 1.01943 1.01822 +1.02487 1.03393 1.0146 1.02426 1.02789 1.0303 1.01943 1.01883 +1.02608 1.02124 1.02124 1.02547 1.02185 1.0146 1.01339 1.01883 +1.02668 1.02306 1.02849 1.02124 1.01581 1.01702 1.01581 1.11525 +1.14255 1.1387 1.13835 1.13835 1.1373 1.13835 1.1359 1.1401 +1.1345 1.1352 1.14115 1.1401 1.1422 1.1415 1.07379 1.02124 +1.01641 1.01581 1.01822 1.01218 1.01883 1.02245 1.02789 1.02487 +1.02426 1.02004 1.02547 1.03091 1.03332 1.01883 1.03272 1.02306 +1.02668 1.02547 1.02185 1.02426 1.02668 1.02124 1.01762 1.02064 +1.01883 1.02064 1.02245 1.02547 1.02366 1.01581 1.014 1.02728 +1.02004 1.02608 1.02064 1.02728 1.02789 1.02789 1.03936 1.03212 +1.03695 1.04118 1.04722 1.05084 1.05507 1.05688 1.05688 0.955408 +0.408357 0.02408 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00903 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0.00200667 0 0 0 +0.00100333 0.00401333 0 0.00100333 0.00200667 0 0 0.00100333 +0.00100333 0 0 0.00301 0.00802667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00200667 0.00501667 +0 0 0 0 0 0 0 0 +0 0.0130433 0.0140467 0 0.00501667 0.0110367 0.00100333 0 +0 0 0 0 0.00200667 0.00301 0 0 +0 0 0 0 0 0.00401333 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00200667 +0.278927 0.781032 1.02004 1.0605 1.05809 1.04842 1.03997 1.04057 +1.03876 1.0291 1.03634 1.03574 1.03091 1.01883 1.0291 1.02245 +1.02124 1.01883 1.02789 1.02668 1.02789 1.03091 1.02426 1.02728 +1.02728 1.02124 1.02668 1.02124 1.02426 1.02728 1.02306 1.02064 +1.02366 1.02064 1.01943 1.01581 1.02245 1.02245 1.02185 1.02306 +1.01641 1.01822 1.014 1.014 1.02004 1.01279 1.01218 1.0764 +1.138 1.1401 1.1401 1.1408 1.13835 1.14115 1.138 1.14465 +1.13625 1.1429 1.14185 1.13905 1.1408 1.12645 1.03091 1.02366 +1.01581 1.0152 1.02789 1.02004 1.01218 1.02547 1.01883 1.0146 +1.02306 1.02366 1.0152 1.01822 1.02185 1.02366 1.01762 1.02306 +1.01822 1.02245 1.02185 1.02547 1.02728 1.0146 1.02245 1.02487 +1.01822 1.02487 1.0291 1.02426 1.0297 1.02668 1.02004 1.02426 +1.02064 1.03393 1.03091 1.0303 1.0303 1.03876 1.03876 1.03634 +1.03272 1.0448 1.05084 1.05628 1.04903 1.00373 0.56889 0.110367 +0 0 0 0 0 0 0 0 +0 0 0 0.0110367 0 0 0 0 +0 0.00602 0 0.00301 0.00702333 0.00501667 0.00501667 0 +0.00301 0.00100333 0.00702333 0 0 0.00100333 0 0 +0 0 0 0 0 0.00100333 0 0.00100333 +0.00301 0.00100333 0.00100333 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00401333 0 0 0.00200667 0 0 0.00301 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00301 0.00100333 0.00200667 0 0 0 0 +0 0 0 0.01204 0 0.00100333 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0.0200667 0.274913 0.707616 1.00252 1.05205 1.0454 1.04963 +1.04299 1.0454 1.03695 1.03212 1.03453 1.03212 1.04299 1.03272 +1.03876 1.0303 1.03634 1.03634 1.03212 1.02366 1.02064 1.02608 +1.02608 1.02245 1.03393 1.02547 1.02547 1.02306 1.014 1.02728 +1.02426 1.0303 1.02185 1.02849 1.01822 1.03514 1.02728 1.01883 +1.02124 1.01883 1.01581 1.02366 1.02487 1.01762 1.014 1.03272 +1.12225 1.14793 1.14115 1.1387 1.13975 1.13695 1.1394 1.1359 +1.1429 1.13905 1.14115 1.1429 1.14542 1.09425 1.01883 1.01943 +1.01279 1.0146 1.01822 1.02124 1.02124 1.02306 1.02547 1.02124 +1.01943 1.0152 1.02124 1.02004 1.03332 1.03332 1.02004 1.02668 +1.02426 1.02608 1.02426 1.02306 1.02728 1.02668 1.02185 1.02608 +1.02728 1.02547 1.0297 1.0146 1.0303 1.02366 1.01883 1.0303 +1.03151 1.03272 1.03151 1.03997 1.0303 1.03816 1.03755 1.0448 +1.04963 1.05386 1.05809 1.00916 0.632912 0.18361 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00301 0 0.00100333 0 0 +0 0.00802667 0.00802667 0 0 0 0.00200667 0.00200667 +0 0 0 0.00100333 0 0 0 0 +0 0 0.00602 0.00301 0 0 0 0 +0 0.00200667 0.00401333 0.00903 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00702333 0.00100333 0 +0 0 0 0 0 0 0.00200667 0 +0 0 0 0 0 0 0.00100333 0 +0 0.00301 0 0 0 0 0 0 +0.00200667 0 0 0.00100333 0 0.00200667 0 0 +0 0.00301 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.17458 0.531767 0.929436 1.03695 +1.05628 1.05265 1.05084 1.0442 1.04118 1.03997 1.0448 1.03212 +1.02668 1.03332 1.03936 1.03091 1.0303 1.0297 1.02789 1.02728 +1.02487 1.0303 1.02728 1.03453 1.02487 1.0297 1.0291 1.0291 +1.02789 1.03091 1.02547 1.02849 1.02849 1.02668 1.02124 1.02789 +1.02185 1.03272 1.02547 1.01822 1.02124 1.0297 1.02064 1.01943 +1.0757 1.1338 1.14625 1.14751 1.14667 1.14185 1.1408 1.14255 +1.1387 1.1443 1.14325 1.145 1.10895 1.0303 1.02185 1.02487 +1.02547 1.02185 1.02608 1.03091 1.02849 1.02728 1.02668 1.02366 +1.0303 1.03634 1.0297 1.01943 1.03212 1.01943 1.03151 1.01762 +1.02849 1.01883 1.02728 1.0297 1.03272 1.02668 1.02004 1.01762 +1.03332 1.02849 1.03453 1.03332 1.03393 1.02668 1.03816 1.0291 +1.03212 1.03212 1.03997 1.04359 1.04782 1.04359 1.05809 1.05688 +1.04661 0.97232 0.596983 0.18662 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00100333 +0 0 0 0 0 0 0 0.00200667 +0.00702333 0 0 0.00100333 0 0.0110367 0 0 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00100333 0.00301 0 0 0 +0 0 0 0 0.00602 0.00903 0.00301 0 +0 0 0 0 0 0 0.0110367 0 +0 0 0.00802667 0 0 0 0 0.00301 +0 0 0 0.00100333 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.05117 0.287957 +0.638064 0.949368 1.03091 1.04903 1.0593 1.04782 1.04359 1.04057 +1.04782 1.0448 1.04178 1.03634 1.0291 1.03514 1.03272 1.03997 +1.02668 1.02789 1.03514 1.03332 1.03091 1.03755 1.02789 1.03212 +1.03634 1.03393 1.03272 1.0291 1.03151 1.02728 1.04118 1.04118 +1.03272 1.02849 1.03091 1.02728 1.0291 1.02728 1.02426 1.02728 +1.02728 1.07815 1.1338 1.14709 1.14325 1.15211 1.1436 1.1443 +1.145 1.14793 1.14709 1.1135 1.04722 1.02547 1.02728 1.02608 +1.02668 1.03272 1.0297 1.02849 1.02849 1.02608 1.02789 1.0291 +1.02789 1.02789 1.02728 1.02185 1.03151 1.03574 1.03453 1.03212 +1.03091 1.02728 1.0303 1.02487 1.02849 1.03876 1.03695 1.02124 +1.02547 1.03816 1.03453 1.03332 1.04238 1.03272 1.03816 1.0454 +1.04722 1.0454 1.05144 1.04661 1.06352 1.05326 1.01702 0.85316 +0.443473 0.110367 0 0 0 0 0 0.00501667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00100333 0 0.00301 0.00501667 0 0 0 +0.00200667 0.00200667 0 0 0 0 0 0 +0.00301 0.00100333 0 0.00602 0.00401333 0.00200667 0.0110367 0.00802667 +0.00501667 0.00401333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.00602 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0.00301 0 0 0 0 0 0 +0.00100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.06321 0.268893 0.54481 0.87248 0.986816 1.03574 1.04661 +1.06171 1.04963 1.03997 1.03634 1.04782 1.0442 1.03997 1.0448 +1.03816 1.03936 1.0297 1.04238 1.03695 1.03634 1.02849 1.03755 +1.03393 1.02789 1.03695 1.0303 1.03634 1.04238 1.04118 1.02608 +1.02789 1.03393 1.0303 1.03151 1.03393 1.03634 1.02789 1.03936 +1.03332 1.03272 1.05688 1.10685 1.14185 1.15002 1.15755 1.14625 +1.14465 1.12155 1.0918 1.05084 1.03091 1.0303 1.03393 1.03695 +1.03453 1.04057 1.03514 1.03272 1.03332 1.03212 1.03695 1.03332 +1.03816 1.03212 1.03574 1.02608 1.03091 1.0303 1.03574 1.03634 +1.03876 1.04178 1.03272 1.03997 1.03634 1.03272 1.03876 1.03816 +1.03936 1.03816 1.03936 1.03091 1.04722 1.04722 1.0442 1.05265 +1.04661 1.0599 1.05386 1.00977 0.882784 0.530763 0.202673 0.0200667 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00401333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00401333 0.125417 0.31605 0.55685 +0.806792 0.957824 1.01702 1.04661 1.05084 1.05809 1.05446 1.05326 +1.05567 1.05265 1.03695 1.04661 1.0454 1.03574 1.04299 1.04299 +1.04299 1.04118 1.04661 1.03695 1.03876 1.03816 1.03212 1.03997 +1.04359 1.04299 1.03876 1.03816 1.04118 1.04903 1.04359 1.03936 +1.04299 1.04057 1.03816 1.03695 1.0605 1.0778 1.08655 1.08445 +1.07815 1.05748 1.03574 1.03936 1.04057 1.05084 1.03816 1.0303 +1.03936 1.03514 1.03876 1.04178 1.03634 1.04057 1.03816 1.04118 +1.03695 1.04782 1.04057 1.03393 1.04057 1.03816 1.03816 1.03876 +1.03514 1.0448 1.04118 1.04118 1.04238 1.05446 1.05144 1.04963 +1.04299 1.04903 1.05507 1.05084 1.0442 1.05748 1.03272 1.01037 +0.926416 0.697312 0.438457 0.18963 0.0200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00100333 0.00100333 +0 0 0 0 0 0 0 0 +0 0.00100333 0.00802667 0 0 0 0 0.00100333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.07525 0.16856 0.323073 0.47257 0.645792 0.799064 0.930644 +0.9693 0.997688 1.01641 1.0297 1.03393 1.04178 1.04842 1.04118 +1.04178 1.03816 1.03876 1.04238 1.04601 1.05205 1.04903 1.04782 +1.05386 1.04299 1.04178 1.0448 1.05567 1.04842 1.05084 1.04238 +1.04661 1.05144 1.04299 1.0448 1.04842 1.04238 1.04963 1.0454 +1.0448 1.05205 1.04722 1.04178 1.03997 1.04963 1.05326 1.04782 +1.04903 1.05386 1.04963 1.04782 1.04178 1.04299 1.05205 1.04963 +1.04782 1.05144 1.05386 1.04722 1.0448 1.0454 1.04903 1.04903 +1.04661 1.05507 1.04661 1.04903 1.0442 1.03755 1.04238 1.02124 +1.01158 0.980172 0.925208 0.811944 0.62776 0.470563 0.298993 0.148493 +0.03913 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00200667 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0401333 0.0371233 0.0341133 0.0411367 0.05117 0.0561867 0.05719 +0.0591967 0.0561867 0.0491633 0.0622067 0.0832767 0.0772567 0.0822733 0.08127 +0.0822733 0.08428 0.0923067 0.106353 0.115383 0.0913033 0.0882933 0.10234 +0.112373 0.115383 0.109363 0.10836 0.0983267 0.125417 0.12341 0.128427 +0.125417 0.125417 0.130433 0.130433 0.124413 0.131437 0.110367 0.11739 +0.11137 0.116387 0.121403 0.143477 0.14749 0.139463 0.128427 0.10234 +0.127423 0.125417 0.12341 0.127423 0.130433 0.122407 0.115383 0.125417 +0.140467 0.130433 0.119397 0.1204 0.124413 0.12642 0.136453 0.101337 +0.0913033 0.0772567 0.0862867 0.07826 0.0802667 0.101337 0.10535 0.1505 +0.196653 0.253843 0.3311 0.40334 0.43645 0.464543 0.479593 0.50869 +0.506683 0.549827 0.554843 0.575913 0.58093 0.596983 0.636776 0.643216 +0.657384 0.684432 0.71148 0.719208 0.720496 0.738528 0.742392 0.73724 +0.741104 0.7308 0.761712 0.75012 0.773304 0.755272 0.779744 0.792624 +0.791336 0.790048 0.806792 0.792624 0.781032 0.783608 0.805504 0.831264 +0.806792 0.778456 0.809368 0.81452 0.80164 0.800352 0.804216 0.80164 +0.784896 0.787472 0.773304 0.770728 0.748832 0.747544 0.734664 0.701176 +0.657384 0.620032 0.573907 0.524743 0.456517 0.384277 0.34916 0.28294 +0.205683 0.1505 0.0953167 0.0401333 0.02107 0.0110367 0.0170567 0.01806 +0.0230767 0.0250833 0.02408 0.0260867 0.00702333 0.0200667 0.0160533 0.0371233 +0.0250833 0.0321067 0.02107 0.0290967 0.0260867 0.0190633 0.0200667 0.0220733 +0.01806 0.00501667 0.00702333 0.0100333 0.01806 0.0100333 0.00200667 0.00903 +0 0 0.00602 0.00702333 0.00401333 0 0 0 +0.00100333 0.00301 0 0 0 0.00401333 0.00401333 0.00702333 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.1204 0.167557 0.176587 0.172573 0.172573 0.169563 0.172573 +0.16856 0.163543 0.181603 0.18662 0.169563 0.176587 0.18662 0.176587 +0.187623 0.19565 0.190633 0.187623 0.184613 0.176587 0.18361 0.182607 +0.187623 0.176587 0.163543 0.16856 0.173577 0.185617 0.176587 0.166553 +0.164547 0.160533 0.152507 0.163543 0.175583 0.155517 0.152507 0.15351 +0.169563 0.163543 0.166553 0.158527 0.151503 0.155517 0.152507 0.161537 +0.146487 0.14448 0.152507 0.1505 0.139463 0.139463 0.148493 0.154513 +0.14448 0.154513 0.155517 0.157523 0.149497 0.137457 0.13545 0.109363 +0.128427 0.121403 0.116387 0.118393 0.12642 0.109363 0.121403 0.112373 +0.11137 0.09933 0.11137 0.103343 0.09331 0.0903 0.107357 0.09331 +0.0762533 0.0973233 0.09933 0.0973233 0.106353 0.10535 0.110367 0.103343 +0.106353 0.109363 0.103343 0.106353 0.10836 0.119397 0.113377 0.09632 +0.106353 0.116387 0.106353 0.109363 0.106353 0.10836 0.113377 0.109363 +0.104347 0.1204 0.11438 0.122407 0.11137 0.106353 0.130433 0.107357 +0.119397 0.10836 0.12943 0.112373 0.128427 0.130433 0.127423 0.119397 +0.11438 0.116387 0.119397 0.116387 0.11438 0.116387 0.11438 0.11739 +0.110367 0.119397 0.11438 0.106353 0.101337 0.115383 0.0943133 0.10836 +0.11438 0.125417 0.112373 0.116387 0.130433 0.12642 0.146487 0.14749 +0.128427 0.13846 0.13244 0.163543 0.1505 0.151503 0.16254 0.167557 +0.152507 0.16555 0.15953 0.172573 0.179597 0.167557 0.163543 0.178593 +0.181603 0.152507 0.170567 0.17759 0.175583 0.172573 0.17458 0.151503 +0.15652 0.160533 0.152507 0.149497 0.140467 0.13545 0.127423 0.149497 +0.14448 0.14749 0.146487 0.143477 0.134447 0.1204 0.11438 0.127423 +0.133443 0.130433 0.116387 0.115383 0.09632 0.08729 0.09933 0.09632 +0.0973233 0.106353 0.08729 0.08729 0.0802667 0.08428 0.0341133 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.10234 0.14147 0.14749 0.145483 0.143477 0.13846 +0.151503 0.158527 0.15652 0.140467 0.158527 0.169563 0.149497 0.16254 +0.155517 0.152507 0.145483 0.140467 0.143477 0.157523 0.151503 0.134447 +0.137457 0.137457 0.14448 0.142473 0.148493 0.13545 0.13244 0.13846 +0.134447 0.130433 0.163543 0.15351 0.140467 0.148493 0.145483 0.160533 +0.14448 0.137457 0.148493 0.14147 0.154513 0.1505 0.14749 0.13545 +0.13846 0.146487 0.13545 0.133443 0.14448 0.14749 0.14147 0.14147 +0.142473 0.134447 0.131437 0.12943 0.124413 0.131437 0.121403 0.125417 +0.130433 0.12642 0.136453 0.140467 0.130433 0.11438 0.13244 0.119397 +0.11438 0.10535 0.10234 0.104347 0.11739 0.113377 0.103343 0.103343 +0.116387 0.118393 0.103343 0.10836 0.11137 0.0953167 0.09331 0.101337 +0.0943133 0.115383 0.104347 0.0953167 0.104347 0.106353 0.101337 0.0983267 +0.104347 0.10535 0.100333 0.10234 0.0903 0.101337 0.110367 0.09933 +0.0882933 0.103343 0.113377 0.0983267 0.0983267 0.107357 0.113377 0.0953167 +0.1204 0.106353 0.11137 0.106353 0.119397 0.106353 0.103343 0.10535 +0.09331 0.10234 0.09933 0.112373 0.101337 0.10836 0.104347 0.103343 +0.107357 0.09632 0.106353 0.100333 0.103343 0.109363 0.0953167 0.10535 +0.11137 0.110367 0.10836 0.116387 0.1204 0.113377 0.116387 0.106353 +0.131437 0.125417 0.146487 0.134447 0.12642 0.12943 0.12943 0.14749 +0.148493 0.142473 0.128427 0.131437 0.139463 0.151503 0.154513 0.140467 +0.160533 0.158527 0.146487 0.142473 0.140467 0.15652 0.154513 0.166553 +0.15652 0.143477 0.152507 0.157523 0.15351 0.161537 0.1505 0.155517 +0.151503 0.164547 0.161537 0.16856 0.16555 0.157523 0.16555 0.15953 +0.15953 0.163543 0.173577 0.169563 0.178593 0.163543 0.169563 0.15953 +0.17157 0.181603 0.166553 0.169563 0.169563 0.12943 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.103343 0.148493 0.14749 0.142473 0.142473 +0.143477 0.13244 0.136453 0.149497 0.1505 0.142473 0.154513 0.155517 +0.158527 0.149497 0.14448 0.1505 0.142473 0.137457 0.12642 0.13545 +0.14749 0.142473 0.13244 0.128427 0.125417 0.13846 0.13846 0.128427 +0.12642 0.134447 0.146487 0.127423 0.134447 0.14749 0.140467 0.134447 +0.137457 0.15652 0.146487 0.140467 0.146487 0.14749 0.13244 0.148493 +0.15953 0.148493 0.140467 0.15351 0.155517 0.139463 0.136453 0.13846 +0.142473 0.12341 0.124413 0.134447 0.133443 0.13545 0.130433 0.134447 +0.127423 0.13244 0.14749 0.14147 0.112373 0.131437 0.12943 0.121403 +0.128427 0.11739 0.12341 0.12642 0.121403 0.115383 0.116387 0.115383 +0.136453 0.116387 0.122407 0.115383 0.124413 0.121403 0.116387 0.1204 +0.11739 0.106353 0.1204 0.115383 0.113377 0.125417 0.11137 0.118393 +0.10836 0.121403 0.118393 0.11137 0.121403 0.118393 0.12943 0.107357 +0.12341 0.115383 0.1204 0.125417 0.131437 0.124413 0.12642 0.116387 +0.12943 0.134447 0.12642 0.130433 0.11438 0.12341 0.116387 0.119397 +0.113377 0.110367 0.119397 0.115383 0.125417 0.115383 0.11438 0.112373 +0.11438 0.1204 0.121403 0.115383 0.11137 0.125417 0.128427 0.125417 +0.122407 0.127423 0.11739 0.13545 0.128427 0.136453 0.131437 0.13244 +0.131437 0.12943 0.12943 0.149497 0.140467 0.17157 0.149497 0.140467 +0.142473 0.154513 0.142473 0.14448 0.142473 0.131437 0.15652 0.13545 +0.13846 0.149497 0.154513 0.160533 0.145483 0.13244 0.143477 0.142473 +0.14448 0.152507 0.14448 0.155517 0.148493 0.145483 0.140467 0.145483 +0.14448 0.148493 0.1505 0.154513 0.151503 0.154513 0.142473 0.1505 +0.148493 0.140467 0.149497 0.148493 0.15351 0.15652 0.154513 0.149497 +0.152507 0.15351 0.15953 0.157523 0.11739 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.128427 0.131437 0.137457 0.143477 +0.13846 0.146487 0.14749 0.14448 0.148493 0.15652 0.1505 0.143477 +0.130433 0.128427 0.13846 0.139463 0.14147 0.14147 0.149497 0.157523 +0.14147 0.13545 0.136453 0.13846 0.143477 0.145483 0.131437 0.12642 +0.125417 0.13244 0.133443 0.136453 0.133443 0.133443 0.122407 0.13244 +0.146487 0.127423 0.13244 0.142473 0.1505 0.148493 0.152507 0.151503 +0.14448 0.13846 0.13545 0.151503 0.136453 0.13846 0.137457 0.145483 +0.142473 0.13545 0.154513 0.137457 0.143477 0.12943 0.130433 0.133443 +0.134447 0.140467 0.139463 0.12642 0.11739 0.137457 0.127423 0.136453 +0.13846 0.127423 0.124413 0.12642 0.133443 0.125417 0.12341 0.127423 +0.130433 0.12943 0.121403 0.119397 0.13846 0.12642 0.12642 0.12642 +0.122407 0.1204 0.131437 0.122407 0.122407 0.134447 0.124413 0.121403 +0.12341 0.124413 0.131437 0.121403 0.13244 0.128427 0.124413 0.136453 +0.146487 0.13244 0.140467 0.127423 0.131437 0.12642 0.136453 0.12341 +0.125417 0.122407 0.12642 0.143477 0.140467 0.125417 0.1204 0.131437 +0.125417 0.124413 0.11438 0.119397 0.12943 0.128427 0.119397 0.131437 +0.119397 0.12341 0.118393 0.124413 0.134447 0.122407 0.142473 0.131437 +0.137457 0.13545 0.130433 0.134447 0.134447 0.14749 0.14147 0.13846 +0.130433 0.146487 0.131437 0.151503 0.137457 0.134447 0.155517 0.160533 +0.14749 0.145483 0.1505 0.146487 0.13244 0.130433 0.143477 0.160533 +0.14448 0.13244 0.124413 0.146487 0.148493 0.136453 0.146487 0.151503 +0.140467 0.145483 0.134447 0.128427 0.14448 0.152507 0.1505 0.152507 +0.14147 0.14749 0.148493 0.137457 0.146487 0.14147 0.155517 0.145483 +0.149497 0.145483 0.142473 0.148493 0.149497 0.158527 0.155517 0.146487 +0.149497 0.160533 0.16254 0.115383 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0170567 0.152507 0.152507 0.146487 +0.148493 0.14448 0.14448 0.155517 0.148493 0.142473 0.14147 0.143477 +0.137457 0.14147 0.140467 0.14749 0.13846 0.15351 0.145483 0.137457 +0.143477 0.139463 0.148493 0.149497 0.148493 0.136453 0.136453 0.142473 +0.15351 0.148493 0.134447 0.14147 0.14147 0.13244 0.136453 0.146487 +0.142473 0.14448 0.143477 0.1505 0.142473 0.145483 0.14448 0.131437 +0.140467 0.146487 0.149497 0.131437 0.13545 0.136453 0.152507 0.14749 +0.140467 0.149497 0.13244 0.134447 0.149497 0.134447 0.148493 0.151503 +0.136453 0.130433 0.131437 0.13846 0.134447 0.14448 0.137457 0.145483 +0.14147 0.1204 0.14147 0.14147 0.122407 0.124413 0.13244 0.143477 +0.11739 0.12943 0.134447 0.13846 0.1204 0.139463 0.131437 0.122407 +0.136453 0.134447 0.12943 0.13545 0.128427 0.136453 0.134447 0.12341 +0.134447 0.12642 0.125417 0.134447 0.136453 0.127423 0.134447 0.13846 +0.142473 0.13846 0.139463 0.13545 0.125417 0.13545 0.128427 0.130433 +0.133443 0.137457 0.140467 0.133443 0.13545 0.134447 0.134447 0.137457 +0.127423 0.134447 0.137457 0.130433 0.13244 0.121403 0.133443 0.145483 +0.13244 0.13545 0.14147 0.13244 0.12642 0.140467 0.148493 0.148493 +0.146487 0.13244 0.143477 0.131437 0.127423 0.14448 0.133443 0.14448 +0.14147 0.149497 0.142473 0.13545 0.143477 0.143477 0.149497 0.130433 +0.14448 0.13545 0.145483 0.148493 0.151503 0.142473 0.131437 0.133443 +0.142473 0.16254 0.139463 0.142473 0.139463 0.136453 0.139463 0.148493 +0.139463 0.163543 0.158527 0.13846 0.14448 0.143477 0.14749 0.143477 +0.1505 0.142473 0.154513 0.161537 0.143477 0.1505 0.155517 0.149497 +0.145483 0.1505 0.154513 0.139463 0.134447 0.145483 0.154513 0.161537 +0.149497 0.1505 0.16254 0.02107 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0170567 0.157523 0.16555 +0.155517 0.15953 0.166553 0.158527 0.155517 0.154513 0.146487 0.148493 +0.160533 0.166553 0.16856 0.170567 0.15652 0.16254 0.155517 0.158527 +0.154513 0.16254 0.169563 0.169563 0.163543 0.155517 0.169563 0.172573 +0.161537 0.157523 0.176587 0.164547 0.155517 0.15953 0.169563 0.172573 +0.15953 0.16856 0.17458 0.170567 0.16856 0.161537 0.16555 0.164547 +0.155517 0.17157 0.146487 0.16856 0.169563 0.172573 0.170567 0.16555 +0.17458 0.16254 0.163543 0.167557 0.172573 0.173577 0.157523 0.158527 +0.1505 0.17157 0.152507 0.17157 0.166553 0.163543 0.16254 0.15351 +0.164547 0.15953 0.154513 0.154513 0.15351 0.15652 0.160533 0.166553 +0.15652 0.158527 0.164547 0.161537 0.172573 0.166553 0.160533 0.160533 +0.16254 0.151503 0.166553 0.164547 0.169563 0.170567 0.164547 0.167557 +0.16555 0.157523 0.15351 0.151503 0.161537 0.167557 0.176587 0.15351 +0.160533 0.17157 0.164547 0.167557 0.16254 0.167557 0.148493 0.167557 +0.160533 0.160533 0.170567 0.158527 0.1505 0.163543 0.16555 0.16254 +0.154513 0.158527 0.167557 0.16254 0.172573 0.169563 0.145483 0.161537 +0.16856 0.163543 0.15953 0.17458 0.163543 0.145483 0.164547 0.157523 +0.16254 0.16555 0.172573 0.163543 0.163543 0.160533 0.15953 0.161537 +0.164547 0.15652 0.15953 0.164547 0.158527 0.164547 0.158527 0.15652 +0.157523 0.15351 0.157523 0.155517 0.148493 0.160533 0.157523 0.1505 +0.149497 0.157523 0.160533 0.167557 0.15351 0.152507 0.151503 0.152507 +0.137457 0.13846 0.152507 0.161537 0.157523 0.145483 0.151503 0.1505 +0.152507 0.145483 0.143477 0.154513 0.161537 0.145483 0.14749 0.15652 +0.1505 0.15351 0.15652 0.154513 0.1505 0.14147 0.14749 0.14749 +0.158527 0.160533 0.0200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.01806 0.0792633 +0.07826 0.08127 0.0732433 0.07224 0.0702333 0.0772567 0.0712367 0.0832767 +0.0802667 0.0762533 0.0822733 0.06923 0.08127 0.06923 0.0591967 0.0612033 +0.0712367 0.07826 0.0682267 0.07525 0.0672233 0.0772567 0.0742467 0.0591967 +0.0561867 0.0652167 0.0682267 0.0672233 0.0742467 0.0682267 0.06923 0.0521733 +0.0652167 0.06622 0.0551833 0.0561867 0.0561867 0.0591967 0.0551833 0.05418 +0.0491633 0.0531767 0.06321 0.05418 0.0491633 0.05719 0.06321 0.0591967 +0.05418 0.05418 0.0411367 0.0602 0.05719 0.0461533 0.0501667 0.05719 +0.03612 0.04214 0.05418 0.0531767 0.0401333 0.0521733 0.0471567 0.04515 +0.0491633 0.0441467 0.0371233 0.04816 0.0441467 0.0431433 0.03311 0.0411367 +0.0401333 0.0501667 0.0521733 0.0401333 0.0351167 0.04816 0.0471567 0.0491633 +0.0411367 0.0471567 0.0471567 0.0471567 0.0521733 0.05117 0.0531767 0.05418 +0.0581933 0.0471567 0.05117 0.0441467 0.0521733 0.0561867 0.0591967 0.0682267 +0.0642133 0.0531767 0.0501667 0.0652167 0.0471567 0.0581933 0.0561867 0.0591967 +0.0521733 0.0612033 0.0622067 0.06622 0.05418 0.05418 0.0602 0.0551833 +0.0642133 0.0561867 0.0672233 0.06321 0.07224 0.0762533 0.06923 0.0682267 +0.0792633 0.0772567 0.07826 0.07525 0.0792633 0.0642133 0.08428 0.0702333 +0.0882933 0.0832767 0.0943133 0.104347 0.103343 0.0983267 0.107357 0.09632 +0.106353 0.118393 0.107357 0.10234 0.10234 0.107357 0.125417 0.127423 +0.12642 0.125417 0.11137 0.124413 0.122407 0.133443 0.137457 0.12943 +0.130433 0.131437 0.124413 0.145483 0.14147 0.145483 0.148493 0.16254 +0.146487 0.139463 0.139463 0.146487 0.158527 0.1505 0.139463 0.15953 +0.164547 0.163543 0.166553 0.164547 0.164547 0.16555 0.161537 0.175583 +0.169563 0.164547 0.172573 0.169563 0.17759 0.172573 0.17458 0.178593 +0.175583 0.02408 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.03311 0.03311 0.0290967 0.0371233 0.0260867 0.0311033 0.0341133 0.0290967 +0.0280933 0.0280933 0.03612 0.0341133 0.03913 0.03311 0.0290967 0.0321067 +0.0411367 0.0381267 0.03913 0.0301 0.04214 0.0371233 0.02107 0.02709 +0.0280933 0.03913 0.0371233 0.0250833 0.02408 0.0321067 0.0381267 0.0301 +0.0341133 0.0250833 0.0290967 0.02408 0.0290967 0.0230767 0.0381267 0.02408 +0.0321067 0.0341133 0.0280933 0.0250833 0.0461533 0.03311 0.03311 0.0260867 +0.0290967 0.0220733 0.02709 0.0401333 0.0260867 0.0280933 0.0311033 0.0301 +0.0190633 0.02709 0.0250833 0.0140467 0.02709 0.0250833 0.03612 0.0290967 +0.0290967 0.0381267 0.0290967 0.02709 0.0260867 0.0321067 0.03311 0.02709 +0.03311 0.03913 0.0230767 0.0100333 0.0301 0.0290967 0.0190633 0.0230767 +0.02709 0.0220733 0.02709 0.03311 0.0260867 0.0160533 0.03311 0.0230767 +0.02107 0.0280933 0.0200667 0.0311033 0.0321067 0.0130433 0.0321067 0.0311033 +0.0321067 0.0250833 0.0220733 0.0290967 0.0190633 0.0220733 0.0230767 0.0301 +0.02709 0.0190633 0.0250833 0.0321067 0.02709 0.0260867 0.02408 0.0301 +0.0321067 0.0200667 0.0250833 0.02107 0.0311033 0.0341133 0.0260867 0.03913 +0.0200667 0.02107 0.02408 0.03913 0.0220733 0.0190633 0.03612 0.02408 +0.03311 0.0130433 0.0311033 0.0351167 0.0301 0.0371233 0.0290967 0.0321067 +0.0250833 0.02408 0.0250833 0.0311033 0.0401333 0.0220733 0.0341133 0.0250833 +0.0401333 0.0351167 0.0401333 0.03913 0.02709 0.0220733 0.0411367 0.0441467 +0.0431433 0.0561867 0.0321067 0.0341133 0.0341133 0.0351167 0.03913 0.04816 +0.03612 0.0491633 0.0501667 0.0371233 0.0501667 0.0612033 0.0441467 0.0381267 +0.0461533 0.0491633 0.03913 0.04816 0.0521733 0.0652167 0.05418 0.0441467 +0.0652167 0.0602 0.0561867 0.05117 0.0602 0.0712367 0.0762533 0.0742467 +0.0110367 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0311033 0.0260867 0.00903 0.0280933 0.0220733 0.0200667 0.0341133 +0.0280933 0.03612 0.03311 0.0301 0.0290967 0.02107 0.02709 0.0280933 +0.0321067 0.0401333 0.03311 0.0321067 0.0321067 0.0280933 0.0260867 0.0351167 +0.0301 0.03311 0.02709 0.0280933 0.0341133 0.0341133 0.0351167 0.0260867 +0.0381267 0.01505 0.0301 0.0321067 0.04214 0.04214 0.0321067 0.02709 +0.0250833 0.0311033 0.0371233 0.0411367 0.0401333 0.0220733 0.0220733 0.0290967 +0.02408 0.02408 0.0311033 0.02709 0.0250833 0.0250833 0.02709 0.0290967 +0.02107 0.02408 0.0220733 0.0260867 0.0431433 0.0301 0.0401333 0.0341133 +0.03311 0.03612 0.0250833 0.02107 0.02709 0.0290967 0.0311033 0.0280933 +0.03612 0.0190633 0.0321067 0.0301 0.01806 0.04214 0.0280933 0.0260867 +0.01806 0.0371233 0.03612 0.0250833 0.03913 0.0220733 0.0301 0.0290967 +0.0290967 0.0311033 0.0230767 0.0301 0.03311 0.0250833 0.0230767 0.0290967 +0.0311033 0.02709 0.02709 0.0321067 0.0290967 0.0341133 0.0250833 0.0321067 +0.0311033 0.0280933 0.0341133 0.0341133 0.0280933 0.0311033 0.02709 0.02408 +0.0301 0.0260867 0.0351167 0.02408 0.0220733 0.0321067 0.0190633 0.0250833 +0.03612 0.0351167 0.0200667 0.0190633 0.02709 0.0280933 0.0260867 0.0341133 +0.0321067 0.0260867 0.0130433 0.0371233 0.0290967 0.0311033 0.02709 0.0301 +0.0301 0.0301 0.0351167 0.02709 0.0190633 0.0351167 0.0280933 0.0250833 +0.0250833 0.0351167 0.02709 0.0280933 0.03612 0.02107 0.0280933 0.02709 +0.02709 0.03612 0.0461533 0.0461533 0.02408 0.0220733 0.03311 0.0200667 +0.03311 0.0321067 0.0381267 0.0220733 0.0170567 0.0280933 0.0401333 0.02709 +0.0321067 0.0381267 0.03913 0.0371233 0.0160533 0.02408 0.03913 0.0341133 +0.0351167 0.03913 0.04214 0.04515 0.02709 0.0290967 0.03311 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.0140467 0.0260867 0.0301 0.0230767 0.03612 0.02107 +0.0230767 0.0301 0.02408 0.0220733 0.02709 0.0301 0.0321067 0.0411367 +0.0411367 0.03913 0.0200667 0.0200667 0.0321067 0.0371233 0.0250833 0.0321067 +0.0311033 0.0250833 0.02709 0.02709 0.0260867 0.0290967 0.0311033 0.0230767 +0.02408 0.02709 0.0501667 0.04515 0.03311 0.0190633 0.0260867 0.0351167 +0.03311 0.0341133 0.0311033 0.0371233 0.01806 0.02107 0.0381267 0.03311 +0.0260867 0.0351167 0.0250833 0.0321067 0.0260867 0.0311033 0.0301 0.02709 +0.0321067 0.03612 0.0371233 0.0311033 0.03311 0.0290967 0.0290967 0.03913 +0.0200667 0.0170567 0.0311033 0.0250833 0.0230767 0.0401333 0.0411367 0.0200667 +0.0311033 0.0260867 0.0351167 0.0250833 0.02107 0.0301 0.0341133 0.0280933 +0.0290967 0.0351167 0.0351167 0.0200667 0.0411367 0.0381267 0.0200667 0.0280933 +0.03612 0.0301 0.02709 0.0321067 0.0321067 0.0290967 0.0220733 0.0301 +0.0351167 0.0260867 0.0381267 0.0351167 0.01806 0.0411367 0.0301 0.0311033 +0.03311 0.02709 0.0220733 0.0290967 0.0230767 0.0341133 0.0250833 0.0351167 +0.0290967 0.0260867 0.02709 0.0301 0.03311 0.0260867 0.0230767 0.03311 +0.0250833 0.0441467 0.0280933 0.0311033 0.02408 0.0230767 0.0260867 0.0371233 +0.0351167 0.0301 0.0311033 0.0321067 0.0290967 0.0290967 0.0351167 0.0260867 +0.02408 0.0301 0.0290967 0.0441467 0.0301 0.03311 0.03913 0.01204 +0.0290967 0.0301 0.03311 0.0371233 0.0371233 0.0220733 0.03311 0.0301 +0.0371233 0.02408 0.03311 0.03913 0.0381267 0.02709 0.0431433 0.0371233 +0.0280933 0.0220733 0.03311 0.0351167 0.0381267 0.0341133 0.0321067 0.0341133 +0.0280933 0.0220733 0.0311033 0.04214 0.0461533 0.0311033 0.02408 0.0190633 +0.0280933 0.0220733 0.0351167 0.03913 0.0471567 0.03612 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0280933 0.0260867 0.02107 0.0290967 0.02408 +0.0200667 0.0311033 0.02107 0.0290967 0.0341133 0.03311 0.0321067 0.03311 +0.0290967 0.0160533 0.0321067 0.0381267 0.03612 0.0260867 0.0280933 0.02408 +0.02709 0.0301 0.0401333 0.0371233 0.0260867 0.03612 0.02408 0.0321067 +0.0411367 0.0401333 0.0351167 0.0260867 0.02709 0.0341133 0.03612 0.0301 +0.0280933 0.03311 0.03612 0.0260867 0.02408 0.0381267 0.0220733 0.0280933 +0.0351167 0.0220733 0.0230767 0.0290967 0.0321067 0.0341133 0.0280933 0.0401333 +0.02709 0.0341133 0.0200667 0.0321067 0.0311033 0.0341133 0.03612 0.0351167 +0.0260867 0.0250833 0.03311 0.0311033 0.0301 0.0351167 0.0301 0.02107 +0.0321067 0.0311033 0.0280933 0.03612 0.0260867 0.0250833 0.0311033 0.0321067 +0.0411367 0.0230767 0.0260867 0.03913 0.0311033 0.03311 0.02408 0.04214 +0.0220733 0.02408 0.0351167 0.0321067 0.0301 0.0351167 0.0220733 0.03913 +0.0351167 0.0290967 0.0351167 0.0260867 0.02709 0.0341133 0.0341133 0.0341133 +0.0321067 0.0301 0.0260867 0.0371233 0.0290967 0.0351167 0.0341133 0.02107 +0.0301 0.0301 0.0341133 0.02408 0.03311 0.0401333 0.02408 0.0311033 +0.02709 0.0280933 0.0290967 0.0321067 0.02408 0.03612 0.03311 0.0280933 +0.0280933 0.02408 0.0230767 0.0311033 0.0351167 0.0371233 0.03311 0.0280933 +0.0250833 0.0280933 0.02107 0.03612 0.02709 0.0311033 0.0411367 0.0280933 +0.0311033 0.0250833 0.0290967 0.0321067 0.0280933 0.03612 0.0301 0.0280933 +0.0301 0.03612 0.0301 0.0401333 0.0280933 0.0311033 0.03913 0.0351167 +0.04515 0.0301 0.0280933 0.01806 0.0311033 0.0351167 0.0311033 0.0250833 +0.03311 0.0280933 0.0321067 0.0230767 0.03311 0.0311033 0.0491633 0.0371233 +0.0321067 0.0321067 0.0311033 0.01806 0.0371233 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.02408 0.02408 0.0160533 0.0200667 +0.02709 0.0280933 0.02107 0.03311 0.03612 0.0250833 0.0290967 0.0280933 +0.0351167 0.03311 0.03612 0.0220733 0.0230767 0.0220733 0.0371233 0.0311033 +0.0321067 0.0290967 0.03311 0.0200667 0.0351167 0.0381267 0.0290967 0.03612 +0.0311033 0.0301 0.03612 0.0371233 0.0260867 0.0280933 0.03311 0.0321067 +0.02408 0.0441467 0.02709 0.0260867 0.0381267 0.0311033 0.0321067 0.0401333 +0.0321067 0.02107 0.0431433 0.0371233 0.02408 0.0311033 0.0311033 0.0341133 +0.0311033 0.03612 0.0301 0.0311033 0.0311033 0.02408 0.0280933 0.02709 +0.03311 0.0280933 0.0341133 0.0311033 0.0301 0.03311 0.0230767 0.0321067 +0.03612 0.0260867 0.03612 0.0381267 0.0160533 0.0371233 0.0321067 0.0431433 +0.0260867 0.0200667 0.03913 0.0311033 0.02709 0.0311033 0.0301 0.03612 +0.0321067 0.0280933 0.0371233 0.0311033 0.0260867 0.0290967 0.0351167 0.0250833 +0.0411367 0.0321067 0.0290967 0.0341133 0.0311033 0.0280933 0.0371233 0.0260867 +0.0311033 0.0311033 0.0321067 0.0371233 0.0341133 0.02408 0.03612 0.0260867 +0.0311033 0.0280933 0.0341133 0.01806 0.0381267 0.0351167 0.0351167 0.0260867 +0.0351167 0.04214 0.0301 0.03612 0.02709 0.0290967 0.0260867 0.0371233 +0.0290967 0.01806 0.0321067 0.0351167 0.0260867 0.01806 0.0441467 0.0341133 +0.03612 0.0371233 0.02709 0.0371233 0.0311033 0.0280933 0.0280933 0.0290967 +0.0441467 0.0260867 0.0321067 0.0381267 0.0311033 0.0260867 0.0351167 0.0311033 +0.0311033 0.02408 0.0411367 0.0290967 0.0250833 0.03612 0.03612 0.0280933 +0.03913 0.0341133 0.04515 0.0321067 0.0290967 0.0260867 0.0290967 0.0301 +0.03311 0.0381267 0.0160533 0.0371233 0.04515 0.02107 0.0311033 0.0351167 +0.03311 0.0351167 0.0461533 0.0411367 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.05117 0.01204 0.02408 +0.0220733 0.02107 0.0220733 0.0290967 0.0250833 0.0280933 0.0280933 0.0381267 +0.0220733 0.0250833 0.0200667 0.0220733 0.0290967 0.03612 0.0301 0.02107 +0.0321067 0.0321067 0.0411367 0.0321067 0.0371233 0.0341133 0.02408 0.0321067 +0.02709 0.0341133 0.0401333 0.0301 0.0351167 0.02709 0.0301 0.0160533 +0.0411367 0.0290967 0.02709 0.0311033 0.0381267 0.0311033 0.0250833 0.0351167 +0.0260867 0.0301 0.0401333 0.0260867 0.03311 0.0301 0.03311 0.0301 +0.0280933 0.02709 0.0311033 0.0401333 0.0311033 0.0290967 0.03612 0.0371233 +0.0351167 0.02709 0.03311 0.03913 0.03311 0.0230767 0.03311 0.0301 +0.0401333 0.0311033 0.0280933 0.02408 0.0301 0.0321067 0.0311033 0.03913 +0.0200667 0.0351167 0.0321067 0.0220733 0.03913 0.0321067 0.0321067 0.0381267 +0.0250833 0.0260867 0.0351167 0.0301 0.02709 0.0250833 0.0381267 0.0280933 +0.0311033 0.0341133 0.0250833 0.0401333 0.03913 0.02408 0.0371233 0.0280933 +0.0351167 0.0260867 0.0250833 0.0321067 0.0301 0.0351167 0.02107 0.0411367 +0.02709 0.0260867 0.0280933 0.03612 0.02709 0.02408 0.0381267 0.0260867 +0.0280933 0.0341133 0.0311033 0.0321067 0.0301 0.02709 0.03612 0.0280933 +0.03311 0.02408 0.03913 0.0220733 0.0260867 0.02408 0.0341133 0.0260867 +0.0290967 0.0401333 0.0311033 0.0260867 0.0411367 0.0321067 0.0301 0.0260867 +0.0341133 0.0341133 0.02709 0.0321067 0.02408 0.03311 0.0371233 0.0301 +0.0301 0.02709 0.0381267 0.03612 0.0341133 0.0230767 0.0321067 0.03311 +0.0431433 0.0311033 0.0341133 0.0311033 0.04214 0.0471567 0.0260867 0.0200667 +0.02408 0.03311 0.0280933 0.02408 0.0321067 0.0341133 0.04214 0.0260867 +0.0230767 0.0311033 0.0341133 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0431433 0.115383 0.03612 +0.01806 0.00401333 0.01204 0.0290967 0.0140467 0.0220733 0.0311033 0.01505 +0.0230767 0.03311 0.0301 0.02709 0.0321067 0.0280933 0.02107 0.0351167 +0.0351167 0.0290967 0.0301 0.03913 0.0321067 0.0260867 0.0290967 0.03913 +0.0301 0.0341133 0.0371233 0.0260867 0.02107 0.0250833 0.03311 0.03612 +0.0250833 0.0280933 0.0301 0.0401333 0.0230767 0.03311 0.0351167 0.0321067 +0.0301 0.0290967 0.03311 0.0341133 0.0280933 0.0341133 0.0290967 0.0341133 +0.03311 0.0230767 0.0311033 0.0301 0.0311033 0.03311 0.03913 0.0260867 +0.02709 0.03913 0.0321067 0.0381267 0.0280933 0.0260867 0.03612 0.0301 +0.0321067 0.0351167 0.02107 0.0321067 0.0381267 0.03311 0.03913 0.0311033 +0.0301 0.0290967 0.0311033 0.0260867 0.0301 0.02709 0.0341133 0.0260867 +0.0280933 0.0351167 0.0341133 0.0301 0.02709 0.03612 0.02408 0.0311033 +0.0301 0.0290967 0.0290967 0.0301 0.0371233 0.0311033 0.0351167 0.0230767 +0.0381267 0.0250833 0.0311033 0.03311 0.0351167 0.0351167 0.03311 0.0321067 +0.0311033 0.0351167 0.0250833 0.03311 0.0290967 0.0130433 0.0341133 0.0411367 +0.0301 0.0321067 0.0301 0.0381267 0.0290967 0.0301 0.03913 0.02408 +0.0260867 0.0230767 0.0371233 0.0341133 0.02709 0.0290967 0.03913 0.0311033 +0.0381267 0.0401333 0.02709 0.0280933 0.04214 0.0311033 0.03913 0.0371233 +0.0341133 0.0321067 0.0371233 0.03311 0.0280933 0.02709 0.0351167 0.0301 +0.0341133 0.0351167 0.0381267 0.0301 0.02709 0.04515 0.03311 0.02107 +0.0301 0.0290967 0.03913 0.0301 0.03311 0.0341133 0.0351167 0.0411367 +0.0260867 0.0260867 0.0381267 0.0301 0.0160533 0.02107 0.0200667 0.0321067 +0.0301 0.0130433 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0280933 +0.0591967 0.03612 0.02709 0.0160533 0.0130433 0.0250833 0.01505 0.0321067 +0.0290967 0.02709 0.0230767 0.02107 0.0280933 0.0190633 0.0301 0.0371233 +0.0321067 0.0280933 0.0371233 0.0301 0.0351167 0.03311 0.0381267 0.0301 +0.0260867 0.0381267 0.0250833 0.0260867 0.0301 0.0411367 0.0351167 0.0280933 +0.0341133 0.0301 0.0321067 0.0401333 0.0321067 0.0371233 0.0351167 0.0260867 +0.0290967 0.02408 0.0321067 0.0321067 0.03311 0.0280933 0.0280933 0.0280933 +0.0321067 0.0250833 0.0461533 0.01806 0.0321067 0.0311033 0.0280933 0.0351167 +0.0290967 0.0381267 0.0230767 0.04214 0.0260867 0.0351167 0.02709 0.0321067 +0.03913 0.0220733 0.0321067 0.0280933 0.03612 0.0381267 0.02408 0.03311 +0.0321067 0.02709 0.02709 0.03311 0.0411367 0.0351167 0.0290967 0.0301 +0.0371233 0.0381267 0.0341133 0.03612 0.0250833 0.02107 0.0401333 0.0371233 +0.0311033 0.03612 0.02408 0.03311 0.0311033 0.03913 0.0290967 0.03311 +0.0351167 0.02408 0.0351167 0.0321067 0.0301 0.0351167 0.0280933 0.0401333 +0.03612 0.03913 0.02709 0.0280933 0.0351167 0.0220733 0.03311 0.0301 +0.03612 0.0311033 0.0351167 0.0351167 0.0351167 0.0260867 0.0371233 0.03311 +0.0311033 0.0311033 0.0401333 0.0341133 0.03311 0.0220733 0.02408 0.0321067 +0.0301 0.0311033 0.0311033 0.0301 0.0381267 0.02709 0.0280933 0.0311033 +0.0341133 0.0351167 0.03612 0.03311 0.0311033 0.0280933 0.0341133 0.0301 +0.0311033 0.0250833 0.0381267 0.0431433 0.0260867 0.0250833 0.0381267 0.03311 +0.03311 0.0260867 0.0301 0.03612 0.04214 0.0351167 0.0371233 0.0260867 +0.0280933 0.0190633 0.0190633 0.0250833 0.0321067 0.0200667 0.0280933 0.0341133 +0.0280933 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.00602 0.06321 0.0591967 0.0341133 0.0321067 0.0110367 0.0160533 0.0230767 +0.02408 0.0290967 0.0260867 0.0190633 0.0290967 0.0311033 0.0301 0.0301 +0.03311 0.0290967 0.0250833 0.0260867 0.0381267 0.02709 0.0290967 0.0341133 +0.0381267 0.0341133 0.0280933 0.0260867 0.0341133 0.0301 0.02408 0.0301 +0.03612 0.0321067 0.0290967 0.0290967 0.0381267 0.0301 0.0321067 0.0311033 +0.0401333 0.0301 0.0321067 0.03913 0.0311033 0.0260867 0.0260867 0.0301 +0.0301 0.04214 0.0280933 0.02408 0.03311 0.0341133 0.0290967 0.0301 +0.0351167 0.03612 0.0260867 0.0351167 0.0341133 0.0301 0.03612 0.03311 +0.0301 0.0290967 0.0321067 0.03913 0.0401333 0.0280933 0.02709 0.0381267 +0.03913 0.0280933 0.03913 0.03311 0.0321067 0.0371233 0.0351167 0.0301 +0.03913 0.0301 0.03913 0.03311 0.0280933 0.0290967 0.0341133 0.0321067 +0.0280933 0.03913 0.0321067 0.0351167 0.0321067 0.0351167 0.0321067 0.02709 +0.03612 0.0280933 0.0351167 0.02709 0.02107 0.04214 0.0301 0.0321067 +0.0290967 0.0381267 0.0351167 0.0250833 0.0301 0.0290967 0.03612 0.0321067 +0.02709 0.03311 0.0341133 0.0301 0.0371233 0.0351167 0.0431433 0.0341133 +0.0311033 0.01806 0.0260867 0.03913 0.0280933 0.0321067 0.0250833 0.02709 +0.0290967 0.0381267 0.03612 0.0200667 0.0351167 0.0311033 0.0371233 0.02107 +0.0301 0.0411367 0.0321067 0.0311033 0.0311033 0.0301 0.0441467 0.03612 +0.0301 0.02107 0.03612 0.0321067 0.0341133 0.0371233 0.02709 0.02709 +0.04214 0.0321067 0.0190633 0.0260867 0.03311 0.03311 0.02709 0.0411367 +0.0321067 0.0301 0.02408 0.0140467 0.0260867 0.02709 0.0521733 0.05418 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00903 0.0471567 0.04515 0.0290967 0.0200667 0.0170567 +0.01806 0.01505 0.0190633 0.0280933 0.0341133 0.0290967 0.0321067 0.0190633 +0.0250833 0.0260867 0.02408 0.0311033 0.0220733 0.0220733 0.0230767 0.0260867 +0.03612 0.03311 0.0280933 0.0401333 0.0321067 0.0250833 0.0250833 0.0301 +0.0321067 0.0411367 0.0321067 0.0431433 0.0301 0.0280933 0.03612 0.0321067 +0.03311 0.0290967 0.03311 0.0341133 0.0260867 0.02408 0.0311033 0.0351167 +0.0371233 0.0381267 0.0250833 0.03913 0.0301 0.0341133 0.0311033 0.0321067 +0.0351167 0.0250833 0.02709 0.0321067 0.0321067 0.0250833 0.0381267 0.0341133 +0.03311 0.0341133 0.03612 0.0301 0.03311 0.0280933 0.0351167 0.0351167 +0.0401333 0.0260867 0.0321067 0.0220733 0.03311 0.04214 0.03311 0.0311033 +0.0431433 0.0301 0.02709 0.03311 0.0341133 0.03913 0.0280933 0.0321067 +0.0290967 0.04214 0.0341133 0.0341133 0.0381267 0.03311 0.0311033 0.03311 +0.0411367 0.03612 0.0401333 0.0280933 0.0290967 0.0250833 0.0441467 0.0381267 +0.0351167 0.0230767 0.0381267 0.0280933 0.0381267 0.0230767 0.02408 0.0411367 +0.02709 0.03311 0.03913 0.0230767 0.0341133 0.0230767 0.0311033 0.0471567 +0.0311033 0.03311 0.0250833 0.0321067 0.0311033 0.0381267 0.0401333 0.0341133 +0.0280933 0.0280933 0.0311033 0.03311 0.0311033 0.0321067 0.0351167 0.0230767 +0.0230767 0.0351167 0.03311 0.0351167 0.02709 0.02709 0.0351167 0.0411367 +0.02709 0.0311033 0.0200667 0.0321067 0.02709 0.02709 0.0311033 0.0311033 +0.0290967 0.0260867 0.0190633 0.01505 0.02709 0.0411367 0.0280933 0.0260867 +0.0341133 0.0250833 0.0280933 0.0351167 0.04214 0.0882933 0.05117 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.00100333 0.0441467 0.0682267 0.0381267 +0.02107 0.0230767 0.02107 0.02709 0.0321067 0.0250833 0.02709 0.02107 +0.03311 0.0301 0.0260867 0.02709 0.02107 0.0250833 0.0280933 0.0351167 +0.0341133 0.0160533 0.0371233 0.0250833 0.0250833 0.0280933 0.0250833 0.03612 +0.0381267 0.03612 0.0311033 0.0441467 0.01806 0.0411367 0.03913 0.0280933 +0.03612 0.02709 0.0341133 0.03913 0.0220733 0.0341133 0.0381267 0.0341133 +0.0301 0.0341133 0.0341133 0.0351167 0.0260867 0.03913 0.0290967 0.0280933 +0.03913 0.0140467 0.0381267 0.0381267 0.0290967 0.0290967 0.0311033 0.0290967 +0.0411367 0.0321067 0.02709 0.0190633 0.03913 0.0290967 0.03311 0.03612 +0.0351167 0.0311033 0.0260867 0.0250833 0.03612 0.04515 0.0411367 0.02107 +0.0371233 0.0341133 0.0301 0.03913 0.0301 0.03311 0.0341133 0.03612 +0.0311033 0.0381267 0.0301 0.0351167 0.0321067 0.0351167 0.0321067 0.0351167 +0.0290967 0.03612 0.03612 0.0301 0.0260867 0.0301 0.0341133 0.0411367 +0.0250833 0.0351167 0.02408 0.0280933 0.03913 0.0351167 0.0290967 0.0321067 +0.0381267 0.0220733 0.03913 0.0401333 0.03612 0.0230767 0.0311033 0.04214 +0.0351167 0.0341133 0.02408 0.0260867 0.0341133 0.0230767 0.0280933 0.0411367 +0.0321067 0.0311033 0.0371233 0.0250833 0.03612 0.0311033 0.03612 0.0301 +0.0311033 0.02709 0.0351167 0.0311033 0.0351167 0.02709 0.0280933 0.0371233 +0.0280933 0.0301 0.02709 0.0290967 0.0230767 0.0321067 0.0140467 0.0351167 +0.0381267 0.0311033 0.02709 0.0230767 0.0260867 0.02107 0.0301 0.0301 +0.0301 0.0290967 0.04515 0.07525 0.0602 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0381267 +0.05117 0.0381267 0.03311 0.0260867 0.02107 0.0230767 0.0260867 0.02709 +0.0321067 0.02408 0.02709 0.01806 0.02107 0.0260867 0.0341133 0.0411367 +0.0290967 0.0280933 0.02709 0.0190633 0.0200667 0.03612 0.0341133 0.03311 +0.0290967 0.0230767 0.0260867 0.0341133 0.0260867 0.0431433 0.0250833 0.02709 +0.0301 0.0321067 0.0381267 0.03311 0.0321067 0.0190633 0.02408 0.02107 +0.0341133 0.0311033 0.0311033 0.0321067 0.0371233 0.0301 0.0341133 0.0351167 +0.0290967 0.02107 0.0411367 0.03311 0.0381267 0.0311033 0.02107 0.0311033 +0.0441467 0.0220733 0.0250833 0.0321067 0.0321067 0.0321067 0.0311033 0.02709 +0.0290967 0.02709 0.0341133 0.0290967 0.0311033 0.0371233 0.03612 0.03913 +0.0160533 0.0321067 0.0301 0.02709 0.0290967 0.03913 0.0230767 0.03913 +0.0311033 0.03311 0.0411367 0.0341133 0.03311 0.03311 0.03311 0.0371233 +0.0290967 0.0341133 0.0351167 0.0280933 0.0341133 0.0290967 0.0290967 0.0441467 +0.0220733 0.0411367 0.0321067 0.0301 0.0321067 0.03612 0.03311 0.03913 +0.02709 0.0381267 0.02408 0.0381267 0.0341133 0.0250833 0.0220733 0.0321067 +0.0301 0.0341133 0.03311 0.0301 0.0301 0.0341133 0.0341133 0.0250833 +0.03311 0.0371233 0.03612 0.0351167 0.02408 0.0341133 0.0431433 0.0290967 +0.0321067 0.0311033 0.02107 0.0351167 0.02408 0.02709 0.0311033 0.0311033 +0.0321067 0.0321067 0.03311 0.0290967 0.0230767 0.0371233 0.0220733 0.0200667 +0.0371233 0.03311 0.0321067 0.0220733 0.02408 0.0290967 0.0220733 0.0290967 +0.0521733 0.07826 0.04816 0.01204 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0260867 0.00301 0 +0 0.0260867 0.0521733 0.0411367 0.0290967 0.0230767 0.0140467 0.01806 +0.0301 0.0190633 0.0200667 0.0220733 0.0260867 0.0351167 0.0401333 0.02408 +0.0341133 0.0290967 0.0220733 0.0290967 0.0351167 0.0431433 0.0190633 0.0311033 +0.03913 0.0230767 0.03311 0.0381267 0.0250833 0.02709 0.0311033 0.01806 +0.0431433 0.0220733 0.0351167 0.0351167 0.0381267 0.0280933 0.03311 0.0290967 +0.0371233 0.0381267 0.0341133 0.0341133 0.0411367 0.0301 0.0371233 0.0230767 +0.03311 0.0431433 0.04816 0.0311033 0.03612 0.0250833 0.04214 0.0381267 +0.0341133 0.0280933 0.0230767 0.0411367 0.0351167 0.03612 0.0311033 0.0290967 +0.0311033 0.0311033 0.0401333 0.0280933 0.03311 0.0341133 0.0381267 0.0321067 +0.03311 0.0381267 0.0321067 0.0301 0.0311033 0.0351167 0.0311033 0.03913 +0.0250833 0.0290967 0.03612 0.0381267 0.0250833 0.0280933 0.03913 0.0371233 +0.0280933 0.02709 0.0351167 0.0381267 0.0341133 0.0311033 0.0371233 0.03612 +0.0341133 0.0371233 0.0250833 0.0290967 0.0371233 0.0301 0.0280933 0.0441467 +0.0290967 0.0311033 0.0371233 0.0321067 0.03612 0.0290967 0.0280933 0.0301 +0.03612 0.0220733 0.03311 0.0321067 0.0311033 0.02709 0.0371233 0.0311033 +0.0280933 0.0260867 0.0351167 0.0341133 0.0311033 0.0280933 0.0351167 0.0341133 +0.0341133 0.0311033 0.0321067 0.03311 0.02107 0.0341133 0.0311033 0.0311033 +0.0321067 0.0371233 0.0351167 0.0290967 0.0290967 0.0341133 0.03311 0.0230767 +0.02107 0.02709 0.0301 0.02107 0.0250833 0.0431433 0.0712367 0.0712367 +0.0250833 0.00501667 0.00200667 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.2709 0.19264 +0.03311 0 0 0.00802667 0.0461533 0.0602 0.0491633 0.0230767 +0.0130433 0.0190633 0.0200667 0.0351167 0.03311 0.03612 0.02107 0.0260867 +0.03311 0.0110367 0.0230767 0.0431433 0.0351167 0.0260867 0.0200667 0.0371233 +0.0381267 0.03311 0.0260867 0.03311 0.0280933 0.0341133 0.0220733 0.0311033 +0.02709 0.02709 0.0341133 0.0341133 0.0341133 0.02107 0.0371233 0.0250833 +0.03612 0.0311033 0.0301 0.0260867 0.03311 0.02709 0.0250833 0.0371233 +0.0260867 0.03612 0.0371233 0.0250833 0.0280933 0.03913 0.0381267 0.0280933 +0.0411367 0.0250833 0.0321067 0.04515 0.0290967 0.0341133 0.02709 0.0321067 +0.0341133 0.0260867 0.0341133 0.0250833 0.03612 0.0371233 0.0321067 0.0321067 +0.0260867 0.0290967 0.03913 0.0290967 0.0290967 0.03913 0.0351167 0.0301 +0.0280933 0.0431433 0.0290967 0.03913 0.03913 0.0260867 0.0381267 0.0351167 +0.02709 0.0321067 0.03311 0.02709 0.02709 0.0341133 0.0321067 0.03311 +0.0311033 0.0371233 0.0311033 0.03311 0.03311 0.02408 0.0200667 0.04214 +0.03311 0.0301 0.03311 0.0341133 0.0321067 0.0290967 0.03612 0.0321067 +0.0411367 0.0280933 0.0401333 0.03612 0.0321067 0.03311 0.03612 0.03311 +0.0260867 0.02709 0.0311033 0.0341133 0.0371233 0.0200667 0.0290967 0.0301 +0.03311 0.0321067 0.0311033 0.0341133 0.0280933 0.0321067 0.0250833 0.0351167 +0.0260867 0.0321067 0.0351167 0.02107 0.0230767 0.0290967 0.0230767 0.0290967 +0.0190633 0.0200667 0.0290967 0.0461533 0.06923 0.0501667 0.0140467 0 +0.02709 0.00702333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.172573 +0.670264 0.15351 0 0 0 0.03913 0.286953 0.229763 +0.0882933 0.0351167 0.0250833 0.02107 0.0200667 0.0290967 0.0220733 0.0250833 +0.0200667 0.0170567 0.03311 0.0311033 0.0220733 0.0260867 0.0341133 0.0381267 +0.0311033 0.0321067 0.0351167 0.0250833 0.02709 0.0321067 0.0301 0.0381267 +0.0381267 0.0311033 0.0190633 0.0260867 0.02107 0.03311 0.04214 0.0341133 +0.03612 0.03311 0.0411367 0.0351167 0.03612 0.0260867 0.0280933 0.03311 +0.02709 0.03311 0.0280933 0.0290967 0.0290967 0.0381267 0.02408 0.0311033 +0.0311033 0.02709 0.0381267 0.0351167 0.03311 0.0341133 0.03913 0.0351167 +0.0351167 0.03311 0.0351167 0.0321067 0.03913 0.0371233 0.0301 0.0311033 +0.03311 0.0301 0.03612 0.0280933 0.0301 0.03913 0.0401333 0.0290967 +0.0280933 0.0371233 0.0321067 0.02107 0.0341133 0.0401333 0.02709 0.0250833 +0.0411367 0.0301 0.0301 0.0260867 0.03612 0.03311 0.0381267 0.0411367 +0.0341133 0.0311033 0.0401333 0.0311033 0.02709 0.0321067 0.02709 0.0341133 +0.0321067 0.0341133 0.0321067 0.03311 0.02709 0.0321067 0.0321067 0.03913 +0.0230767 0.0301 0.03612 0.0321067 0.0301 0.0250833 0.04214 0.02709 +0.02408 0.0311033 0.0260867 0.0381267 0.0260867 0.0190633 0.0371233 0.0351167 +0.0290967 0.0250833 0.0351167 0.02107 0.0290967 0.0351167 0.0190633 0.0220733 +0.02107 0.0250833 0.0371233 0.0311033 0.0190633 0.0260867 0.0301 0.0200667 +0.0341133 0.0832767 0.0792633 0.0441467 0 0 0 0.05418 +0.0100333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0.290967 0.747544 0.617456 0.20769 0.0280933 0 0.0591967 0.191637 +0.330097 0.286953 0.136453 0.0501667 0.02709 0.0140467 0.0160533 0.0100333 +0.0200667 0.02408 0.0311033 0.02408 0.0190633 0.0311033 0.0341133 0.0260867 +0.02709 0.0290967 0.0230767 0.03311 0.0301 0.0290967 0.0411367 0.0371233 +0.02408 0.0321067 0.0301 0.0230767 0.0341133 0.0321067 0.0250833 0.03311 +0.02709 0.0371233 0.03311 0.0301 0.0341133 0.0311033 0.0260867 0.03913 +0.0341133 0.0301 0.0401333 0.03612 0.0250833 0.0351167 0.03612 0.02709 +0.02408 0.0341133 0.0411367 0.0290967 0.0411367 0.0260867 0.0341133 0.03913 +0.0280933 0.0290967 0.03311 0.03612 0.03913 0.0301 0.0280933 0.03612 +0.0461533 0.03612 0.0351167 0.0301 0.0301 0.03913 0.0290967 0.03311 +0.02408 0.0381267 0.03311 0.0301 0.03311 0.0321067 0.0321067 0.0351167 +0.0290967 0.0321067 0.0311033 0.02709 0.0341133 0.0200667 0.03311 0.0381267 +0.0290967 0.03311 0.0411367 0.0341133 0.0280933 0.0311033 0.0311033 0.03311 +0.0321067 0.0321067 0.0321067 0.0371233 0.02709 0.0371233 0.0290967 0.0411367 +0.0280933 0.0200667 0.0290967 0.03311 0.02408 0.0290967 0.0471567 0.0250833 +0.0280933 0.0311033 0.0280933 0.03913 0.03311 0.0230767 0.0230767 0.0321067 +0.04515 0.0290967 0.03612 0.0190633 0.0170567 0.0290967 0.0260867 0.0321067 +0.02408 0.0130433 0.02107 0.03913 0.0190633 0.0170567 0.0581933 0.191637 +0.318057 0.211703 0.0100333 0 0.01204 0.12642 0.209697 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.618744 1.0918 0.900816 0.395313 0.101337 0.0220733 +0.0341133 0.14147 0.27692 0.31003 0.202673 0.0892967 0.0351167 0.00802667 +0.0200667 0.01806 0.0200667 0.0230767 0.0250833 0.0341133 0.0200667 0.02408 +0.0290967 0.0260867 0.0250833 0.0250833 0.0401333 0.0290967 0.0341133 0.0321067 +0.0301 0.0301 0.02408 0.0290967 0.03612 0.04214 0.0280933 0.0381267 +0.0290967 0.02709 0.0230767 0.0311033 0.0311033 0.03311 0.01806 0.0290967 +0.03612 0.0250833 0.03311 0.03612 0.0301 0.0301 0.0381267 0.0280933 +0.0260867 0.0381267 0.0431433 0.0301 0.02408 0.0260867 0.0311033 0.0371233 +0.0280933 0.0301 0.0371233 0.03913 0.03913 0.0250833 0.0351167 0.03311 +0.0341133 0.0290967 0.03612 0.0341133 0.0290967 0.03612 0.03612 0.0381267 +0.0321067 0.0280933 0.0290967 0.0341133 0.0280933 0.03612 0.02709 0.04515 +0.0321067 0.0371233 0.0351167 0.0311033 0.0431433 0.0301 0.0311033 0.0411367 +0.0341133 0.0341133 0.0341133 0.0301 0.03311 0.0371233 0.0280933 0.0341133 +0.0290967 0.0371233 0.0290967 0.03913 0.0290967 0.0220733 0.0351167 0.0351167 +0.0321067 0.02408 0.02709 0.03913 0.0290967 0.0260867 0.03612 0.02709 +0.0290967 0.0351167 0.03612 0.0250833 0.0311033 0.0301 0.0220733 0.0311033 +0.0260867 0.0381267 0.0311033 0.0301 0.0260867 0.02107 0.02408 0.0250833 +0.0220733 0.0190633 0.0100333 0.0401333 0.125417 0.25585 0.34314 0.269897 +0.0973233 0.0220733 0.0491633 0.247823 0.667688 0.40334 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.191637 0.948764 1.09705 1.02789 0.632912 +0.25886 0.0702333 0.0260867 0.0832767 0.199663 0.315047 0.298993 0.167557 +0.0622067 0.0301 0.0260867 0.0230767 0.0200667 0.0220733 0.0200667 0.0260867 +0.0230767 0.0321067 0.0220733 0.03311 0.03311 0.0170567 0.0341133 0.0220733 +0.0321067 0.02709 0.03311 0.0290967 0.03311 0.03913 0.0290967 0.0301 +0.0381267 0.0170567 0.04214 0.0280933 0.0321067 0.0321067 0.0290967 0.0341133 +0.0401333 0.0230767 0.0321067 0.0301 0.02709 0.0371233 0.0301 0.0230767 +0.03311 0.0351167 0.04214 0.0260867 0.0321067 0.0260867 0.0301 0.0371233 +0.0371233 0.0260867 0.0311033 0.0311033 0.03612 0.0301 0.0321067 0.0381267 +0.0311033 0.0311033 0.0321067 0.0341133 0.02709 0.0351167 0.0260867 0.0280933 +0.0411367 0.0250833 0.03311 0.0371233 0.02107 0.0371233 0.03913 0.0411367 +0.0351167 0.02709 0.03612 0.0311033 0.0290967 0.02709 0.0371233 0.0341133 +0.0321067 0.03612 0.03612 0.0280933 0.02709 0.0371233 0.0371233 0.0260867 +0.0290967 0.0351167 0.03311 0.0321067 0.0260867 0.0290967 0.0311033 0.0260867 +0.0401333 0.03311 0.02408 0.0371233 0.0371233 0.0250833 0.03913 0.02709 +0.0290967 0.0290967 0.0341133 0.03311 0.0321067 0.0301 0.0260867 0.01505 +0.0301 0.02709 0.02408 0.0341133 0.0160533 0.0220733 0.0160533 0.0140467 +0.03913 0.07525 0.202673 0.317053 0.31304 0.197657 0.0762533 0.05719 +0.152507 0.4515 0.952388 0.943328 0.31003 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.245817 0.668976 1.03816 +1.09215 0.953596 0.49063 0.188627 0.04816 0.0401333 0.11739 0.26187 +0.32809 0.272907 0.14749 0.0521733 0.02709 0.02107 0.0220733 0.02709 +0.0250833 0.0220733 0.0220733 0.03913 0.01505 0.0250833 0.0321067 0.0200667 +0.0280933 0.02107 0.0351167 0.0250833 0.03913 0.03612 0.03913 0.0381267 +0.0280933 0.0230767 0.0301 0.0260867 0.0321067 0.0301 0.0280933 0.0311033 +0.03311 0.0411367 0.0301 0.0431433 0.0290967 0.03311 0.0290967 0.0290967 +0.0381267 0.0371233 0.03913 0.0321067 0.0260867 0.0280933 0.0371233 0.0341133 +0.0341133 0.0250833 0.0381267 0.03913 0.0321067 0.03311 0.0381267 0.0301 +0.02408 0.04214 0.03913 0.0290967 0.0371233 0.0321067 0.02408 0.0341133 +0.03913 0.0290967 0.0321067 0.02408 0.0381267 0.0341133 0.0341133 0.0280933 +0.03913 0.0280933 0.0371233 0.03311 0.0290967 0.0290967 0.0260867 0.0351167 +0.02107 0.03311 0.0401333 0.0301 0.02709 0.03311 0.0260867 0.0401333 +0.0190633 0.0311033 0.0311033 0.0371233 0.02709 0.0301 0.0351167 0.02107 +0.03913 0.0341133 0.0260867 0.0311033 0.03612 0.0301 0.0351167 0.02709 +0.0321067 0.0190633 0.03311 0.0280933 0.0311033 0.0301 0.0280933 0.02107 +0.0140467 0.0321067 0.02408 0.0260867 0.02408 0.0160533 0.0612033 0.18361 +0.309027 0.33411 0.235783 0.104347 0.0551833 0.1204 0.347153 0.770728 +1.07815 1.09495 0.572903 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.122407 +0.39732 0.842856 1.06956 1.0764 0.871192 0.43946 0.16856 0.06321 +0.0581933 0.155517 0.283943 0.323073 0.253843 0.119397 0.0441467 0.0130433 +0.0160533 0.0230767 0.0220733 0.0200667 0.0190633 0.0311033 0.02408 0.02408 +0.0351167 0.0200667 0.0341133 0.0220733 0.03913 0.02709 0.0351167 0.0280933 +0.0250833 0.0290967 0.0301 0.0200667 0.0351167 0.02709 0.03311 0.02709 +0.0351167 0.0260867 0.0321067 0.02709 0.0321067 0.0250833 0.03311 0.0130433 +0.0280933 0.0431433 0.03612 0.02408 0.02709 0.04214 0.0341133 0.03311 +0.0280933 0.03311 0.0311033 0.0230767 0.0280933 0.0260867 0.0381267 0.0230767 +0.0260867 0.04515 0.0260867 0.0311033 0.0401333 0.03311 0.0301 0.0301 +0.0301 0.0311033 0.0200667 0.03311 0.0301 0.03311 0.0290967 0.0260867 +0.02709 0.0341133 0.03311 0.0301 0.0301 0.0311033 0.0280933 0.0321067 +0.0280933 0.0280933 0.0351167 0.0321067 0.0280933 0.0260867 0.0301 0.0341133 +0.0260867 0.0230767 0.0341133 0.03612 0.03311 0.02107 0.0371233 0.0290967 +0.0301 0.0280933 0.02408 0.0301 0.0341133 0.0200667 0.0290967 0.02408 +0.0431433 0.02107 0.0280933 0.0250833 0.0230767 0.03311 0.0260867 0.0170567 +0.00802667 0.0230767 0.0250833 0.0672233 0.152507 0.269897 0.329093 0.266887 +0.14749 0.06923 0.11137 0.302003 0.661248 1.01279 1.0918 0.977152 +0.515713 0.10234 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0602 0.199663 0.479593 0.914984 1.08445 1.07077 0.87248 +0.453507 0.1806 0.0581933 0.0822733 0.164547 0.281937 0.32508 0.253843 +0.131437 0.04214 0.0170567 0.0190633 0.02107 0.0260867 0.00903 0.0341133 +0.02107 0.0230767 0.0280933 0.0381267 0.03612 0.0321067 0.03311 0.02107 +0.0220733 0.0321067 0.0371233 0.02107 0.0371233 0.0341133 0.0280933 0.0250833 +0.0290967 0.0351167 0.0280933 0.02408 0.0311033 0.03913 0.03311 0.02107 +0.0311033 0.0411367 0.02709 0.03311 0.0280933 0.0311033 0.0321067 0.0280933 +0.0301 0.03612 0.02709 0.0290967 0.0321067 0.0311033 0.0301 0.0351167 +0.0290967 0.0341133 0.0301 0.0401333 0.0301 0.0311033 0.0321067 0.03612 +0.03311 0.0290967 0.0280933 0.0341133 0.0301 0.03311 0.0311033 0.0311033 +0.0290967 0.03311 0.0260867 0.03612 0.0321067 0.0301 0.02408 0.0341133 +0.0220733 0.0341133 0.03311 0.0230767 0.0351167 0.0341133 0.0260867 0.0250833 +0.0301 0.0321067 0.0321067 0.0341133 0.0301 0.0381267 0.02709 0.0371233 +0.02709 0.0260867 0.0311033 0.0280933 0.02709 0.02107 0.02709 0.0230767 +0.0230767 0.02709 0.02107 0.0220733 0.01505 0.02107 0.0280933 0.02709 +0.0622067 0.160533 0.272907 0.345147 0.271903 0.145483 0.08428 0.125417 +0.309027 0.641928 0.99346 1.0841 1.00494 0.6342 0.287957 0.0311033 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.00903 0.0401333 0.0852833 0.22876 0.50869 0.935476 +1.0813 1.0792 0.934872 0.50568 0.226753 0.0882933 0.0923067 0.17759 +0.286953 0.33712 0.245817 0.12341 0.0471567 0.02107 0.0220733 0.0220733 +0.01806 0.0321067 0.0301 0.0220733 0.0280933 0.0250833 0.0280933 0.0220733 +0.0260867 0.0280933 0.0311033 0.0290967 0.0401333 0.0301 0.0321067 0.0220733 +0.03612 0.0301 0.0341133 0.0321067 0.0401333 0.0290967 0.0341133 0.02408 +0.03311 0.0341133 0.02709 0.0321067 0.02709 0.0311033 0.0280933 0.0290967 +0.0351167 0.0351167 0.03913 0.0230767 0.0230767 0.0321067 0.0321067 0.0321067 +0.0290967 0.0311033 0.0351167 0.0351167 0.02408 0.0250833 0.0351167 0.03311 +0.0290967 0.0301 0.02709 0.0381267 0.0321067 0.0321067 0.02709 0.0280933 +0.03612 0.0250833 0.0230767 0.03311 0.0301 0.0351167 0.0311033 0.0341133 +0.0280933 0.03612 0.0290967 0.02709 0.0280933 0.04515 0.01806 0.0290967 +0.0260867 0.0321067 0.0301 0.0311033 0.02107 0.0301 0.02107 0.02408 +0.0290967 0.0280933 0.0301 0.0250833 0.0280933 0.0200667 0.0230767 0.0170567 +0.02408 0.0200667 0.0170567 0.0260867 0.0351167 0.0702333 0.18963 0.28595 +0.330097 0.25886 0.158527 0.0953167 0.154513 0.359193 0.703752 1.01581 +1.08375 1.00614 0.649656 0.330097 0.133443 0.0190633 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0130433 0.0441467 0.0642133 0.0913033 +0.205683 0.480597 0.895664 1.0778 1.09915 0.98742 0.6342 0.321067 +0.13244 0.10535 0.19565 0.308023 0.33411 0.13846 0.0521733 0.03612 +0.0311033 0.03612 0.01505 0.0230767 0.01806 0.0250833 0.0250833 0.0190633 +0.02408 0.0260867 0.0250833 0.0200667 0.0301 0.03311 0.01806 0.0280933 +0.03612 0.0280933 0.01806 0.0311033 0.0280933 0.0371233 0.02709 0.0170567 +0.0250833 0.0260867 0.02709 0.0311033 0.0401333 0.0260867 0.02408 0.03311 +0.0311033 0.0321067 0.0250833 0.0321067 0.02709 0.03311 0.0290967 0.0341133 +0.0200667 0.0280933 0.0341133 0.0301 0.0260867 0.02709 0.0381267 0.02709 +0.0230767 0.0321067 0.0341133 0.0301 0.0260867 0.03311 0.0321067 0.03612 +0.0431433 0.02107 0.0280933 0.0341133 0.0280933 0.03612 0.0250833 0.0381267 +0.0280933 0.0311033 0.0341133 0.0260867 0.0260867 0.03913 0.0260867 0.03311 +0.0280933 0.0381267 0.03311 0.0311033 0.02408 0.0280933 0.0341133 0.03311 +0.0230767 0.03311 0.0321067 0.0130433 0.0321067 0.02107 0.0250833 0.0200667 +0.0321067 0.03612 0.0913033 0.208693 0.309027 0.327087 0.260867 0.15351 +0.1204 0.218727 0.468557 0.867328 1.06594 1.09005 0.977756 0.620032 +0.312037 0.136453 0.0702333 0.0230767 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.00602 0.03913 0.04515 +0.0521733 0.0622067 0.0832767 0.178593 0.3913 0.774592 1.04238 1.1079 +1.06956 0.896952 0.49966 0.254847 0.12642 0.0682267 0.00301 0.0200667 +0.0431433 0.0591967 0.03913 0.03612 0.0321067 0.0280933 0.0200667 0.0170567 +0.0170567 0.0170567 0.02709 0.02709 0.0260867 0.0341133 0.0170567 0.0260867 +0.0260867 0.0260867 0.0170567 0.0260867 0.0301 0.02709 0.03311 0.0321067 +0.0371233 0.0290967 0.02709 0.0301 0.04515 0.02408 0.02408 0.0401333 +0.0280933 0.03612 0.0301 0.02107 0.03311 0.02709 0.0290967 0.0290967 +0.0301 0.0341133 0.0301 0.02408 0.0280933 0.0301 0.0351167 0.02408 +0.03311 0.0301 0.0301 0.0321067 0.0200667 0.03311 0.03612 0.0280933 +0.0411367 0.0311033 0.0230767 0.03311 0.0311033 0.0280933 0.03311 0.0351167 +0.0260867 0.0290967 0.0311033 0.0170567 0.0311033 0.0311033 0.0280933 0.0311033 +0.02107 0.0301 0.0260867 0.01204 0.0160533 0.0220733 0.02408 0.0230767 +0.02107 0.02709 0.0250833 0.02709 0.0220733 0.0341133 0.0471567 0.0551833 +0.0702333 0.0622067 0.203677 0.21973 0.16254 0.187623 0.371233 0.671552 +0.99648 1.0974 1.0799 0.928832 0.54782 0.251837 0.113377 0.07525 +0.0591967 0.02107 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00602 +0.0521733 0.0561867 0.0591967 0.0612033 0.0591967 0.04816 0.1204 0.275917 +0.57491 0.96326 1.096 1.1156 1.0454 0.792624 0.44849 0.217723 +0.06923 0.00602 0.00903 0.0250833 0.05719 0.0591967 0.0401333 0.03913 +0.0260867 0.02408 0.02408 0.0230767 0.0230767 0.02408 0.0190633 0.02408 +0.0280933 0.02408 0.0190633 0.0200667 0.0381267 0.0170567 0.0250833 0.03311 +0.02408 0.01806 0.0301 0.02709 0.0321067 0.02709 0.0280933 0.0321067 +0.0301 0.0250833 0.0250833 0.0280933 0.03913 0.02709 0.02408 0.0301 +0.04214 0.0290967 0.0301 0.02709 0.0301 0.0311033 0.02709 0.0280933 +0.02408 0.0311033 0.0260867 0.0280933 0.02408 0.02408 0.0311033 0.0250833 +0.0341133 0.0250833 0.02408 0.0260867 0.0250833 0.03311 0.02408 0.0321067 +0.03311 0.0311033 0.0351167 0.02709 0.0280933 0.0230767 0.02408 0.0170567 +0.03311 0.0250833 0.0190633 0.0260867 0.02107 0.0170567 0.02408 0.01806 +0.0351167 0.03612 0.0351167 0.0612033 0.0531767 0.0531767 0.01806 0.0100333 +0.0381267 0.131437 0.321067 0.59899 0.961448 1.09355 1.1114 1.03514 +0.752696 0.393307 0.178593 0.0852833 0.07525 0.0682267 0.0491633 0.03913 +0.00301 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.0200667 0.0581933 0.0672233 0.05719 0.0642133 0.0712367 0.0431433 +0.04214 0.05719 0.158527 0.390297 0.70504 1.00977 1.1128 1.11525 +1.04903 0.850584 0.506683 0.26789 0.118393 0.0371233 0.0260867 0.0341133 +0.0531767 0.0672233 0.0431433 0.0371233 0.0321067 0.0220733 0.01806 0.0230767 +0.0230767 0.02408 0.0170567 0.0200667 0.0301 0.0160533 0.0250833 0.0200667 +0.02408 0.0220733 0.02408 0.0250833 0.0250833 0.0260867 0.0311033 0.0220733 +0.0250833 0.0220733 0.0321067 0.0250833 0.0230767 0.0250833 0.0280933 0.02408 +0.0280933 0.0311033 0.0280933 0.0250833 0.0321067 0.02107 0.0280933 0.0341133 +0.0341133 0.0290967 0.0280933 0.02408 0.0311033 0.0200667 0.0301 0.0170567 +0.03311 0.0290967 0.0311033 0.0220733 0.0311033 0.0160533 0.02408 0.0250833 +0.0190633 0.0230767 0.0190633 0.0160533 0.0230767 0.02408 0.0220733 0.02408 +0.02408 0.0280933 0.0130433 0.03311 0.0290967 0.0461533 0.0612033 0.0642133 +0.07224 0.0561867 0.0200667 0.0230767 0.0642133 0.181603 0.383273 0.668976 +0.977756 1.08935 1.11385 1.07319 0.90468 0.512703 0.24682 0.107357 +0.05719 0.0551833 0.0622067 0.0702333 0.05719 0.0581933 0.00903 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.02709 0.0622067 0.0672233 0.0712367 0.0702333 +0.0822733 0.0561867 0.05418 0.0341133 0.0301 0.0732433 0.19565 0.410363 +0.694736 0.998292 1.10055 1.12155 1.0939 0.99044 0.719208 0.426417 +0.24983 0.12341 0.0602 0.0501667 0.0521733 0.04816 0.0602 0.0441467 +0.0381267 0.02408 0.02107 0.0190633 0.0200667 0.02709 0.0170567 0.02107 +0.0200667 0.0130433 0.0230767 0.0230767 0.0220733 0.02107 0.0250833 0.0190633 +0.01505 0.02408 0.0230767 0.0220733 0.0301 0.0280933 0.02107 0.0260867 +0.0200667 0.0311033 0.0230767 0.0260867 0.02709 0.01806 0.02709 0.0280933 +0.0230767 0.0160533 0.02107 0.0200667 0.0230767 0.0200667 0.03612 0.0110367 +0.0250833 0.0200667 0.0230767 0.02107 0.03311 0.0170567 0.0160533 0.0341133 +0.01505 0.0200667 0.0260867 0.01806 0.0130433 0.0200667 0.01505 0.0250833 +0.04515 0.0531767 0.0642133 0.0732433 0.0612033 0.0732433 0.0612033 0.0802667 +0.16555 0.332103 0.551833 0.864752 1.04057 1.11665 1.1219 1.07138 +0.91756 0.537787 0.271903 0.110367 0.0441467 0.0381267 0.05418 0.0672233 +0.0742467 0.0672233 0.05418 0.0602 0.0200667 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0341133 0.0712367 0.0672233 +0.07826 0.07826 0.08428 0.0672233 0.0672233 0.0461533 0.0301 0.0301 +0.0250833 0.0822733 0.166553 0.342137 0.570897 0.882784 1.04299 1.10405 +1.11035 1.0904 0.986212 0.778456 0.52675 0.353173 0.220733 0.13846 +0.0983267 0.0802667 0.0802667 0.05719 0.0531767 0.0471567 0.0190633 0.0230767 +0.0170567 0.00903 0.02408 0.02408 0.0190633 0.0220733 0.02107 0.0190633 +0.0250833 0.0190633 0.0190633 0.0140467 0.0200667 0.0170567 0.0250833 0.0220733 +0.0230767 0.0260867 0.0160533 0.02408 0.0250833 0.00602 0.02709 0.0250833 +0.02107 0.0160533 0.0280933 0.0220733 0.0110367 0.0200667 0.0250833 0.0140467 +0.03612 0.0170567 0.02408 0.0160533 0.0230767 0.00702333 0.0160533 0.01806 +0.01806 0.0140467 0.0371233 0.03913 0.0551833 0.0732433 0.0712367 0.0943133 +0.0943133 0.113377 0.17157 0.262873 0.416383 0.636776 0.926416 1.06473 +1.1163 1.13485 1.10125 1.00554 0.764288 0.46956 0.257857 0.106353 +0.0401333 0.0230767 0.02709 0.0441467 0.0672233 0.0742467 0.0762533 0.0682267 +0.0702333 0.0772567 0.0321067 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00802667 +0.0581933 0.0762533 0.0762533 0.0862867 0.0923067 0.0762533 0.0682267 0.05719 +0.0471567 0.03913 0.0341133 0.03311 0.04515 0.06923 0.110367 0.214713 +0.3612 0.572903 0.837704 1.00312 1.0869 1.11735 1.11315 1.0834 +1.0001 0.889224 0.636776 0.468557 0.344143 0.260867 0.185617 0.145483 +0.109363 0.0892967 0.0852833 0.0622067 0.0401333 0.0311033 0.0260867 0.0250833 +0.02709 0.0170567 0.0170567 0.0200667 0.00702333 0.0230767 0.0110367 0.0200667 +0.0140467 0.0280933 0.01806 0.0140467 0.0190633 0.00802667 0.0230767 0.0190633 +0.0130433 0.01505 0.0220733 0.02107 0.00602 0.0160533 0.0140467 0.01806 +0.0220733 0.0220733 0.0311033 0.0381267 0.04515 0.0551833 0.0672233 0.0822733 +0.103343 0.12943 0.157523 0.211703 0.286953 0.407353 0.537787 0.723072 +0.940308 1.04178 1.09915 1.1226 1.12225 1.08865 0.9844 0.786184 +0.501667 0.31906 0.17759 0.08729 0.0471567 0.0260867 0.0351167 0.03612 +0.04515 0.0682267 0.0822733 0.07826 0.0772567 0.0672233 0.07826 0.0622067 +0.0110367 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.00903 0.0321067 0.0862867 0.08428 0.0862867 0.09331 0.0832767 +0.07224 0.0712367 0.05418 0.05117 0.04515 0.0441467 0.0401333 0.0531767 +0.0652167 0.0702333 0.0652167 0.110367 0.155517 0.27391 0.410363 0.57491 +0.802928 0.970508 1.05748 1.09915 1.1177 1.1191 1.09915 1.06352 +0.994668 0.920136 0.778456 0.64064 0.537787 0.450497 0.395313 0.3311 +0.280933 0.223743 0.18361 0.163543 0.131437 0.10836 0.10234 0.0923067 +0.0732433 0.0702333 0.06622 0.06923 0.0622067 0.06321 0.06923 0.0712367 +0.07525 0.0792633 0.104347 0.11137 0.122407 0.139463 0.15953 0.22876 +0.25886 0.315047 0.35518 0.41538 0.483607 0.56287 0.681856 0.8274 +0.951784 1.0146 1.0813 1.11 1.1261 1.12155 1.0981 1.04238 +0.944536 0.757848 0.542803 0.378257 0.247823 0.151503 0.08428 0.0672233 +0.0551833 0.0501667 0.0411367 0.03913 0.0431433 0.0471567 0.0622067 0.0792633 +0.0822733 0.0772567 0.0892967 0.0712367 0.08729 0.03311 0.0110367 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0381267 0.0602 0.0822733 0.0923067 +0.09933 0.08729 0.08428 0.0792633 0.0742467 0.0501667 0.05117 0.05719 +0.05719 0.05117 0.0602 0.06622 0.0642133 0.0762533 0.0642133 0.0642133 +0.0672233 0.0913033 0.137457 0.191637 0.27993 0.375247 0.500663 0.645792 +0.804216 0.947556 1.00916 1.06232 1.0897 1.1093 1.1149 1.1212 +1.11805 1.10755 1.09915 1.0904 1.0778 1.05567 1.0454 1.03091 +1.01098 0.998292 0.986212 0.988628 0.983796 0.985608 0.991648 0.997688 +1.00071 1.00977 1.03574 1.04359 1.0593 1.07745 1.08445 1.103 +1.11385 1.12225 1.12015 1.12155 1.1128 1.09215 1.05748 1.00433 +0.943328 0.791336 0.611016 0.488623 0.36421 0.24682 0.181603 0.1204 +0.0862867 0.06923 0.0642133 0.0591967 0.0672233 0.0561867 0.05117 0.0471567 +0.04816 0.05117 0.04816 0.0612033 0.0822733 0.08428 0.0903 0.0862867 +0.08729 0.0712367 0.0672233 0.0461533 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.00802667 0.03612 +0.0892967 0.10234 0.109363 0.09933 0.0913033 0.0832767 0.0923067 0.0712367 +0.0642133 0.0622067 0.0551833 0.0602 0.0682267 0.07525 0.0702333 0.0822733 +0.0682267 0.0802667 0.06622 0.06321 0.0702333 0.0581933 0.06622 0.0551833 +0.0742467 0.08729 0.09933 0.127423 0.170567 0.217723 0.268893 0.338123 +0.40334 0.446483 0.506683 0.573907 0.636776 0.702464 0.753984 0.802928 +0.838992 0.862176 0.876344 0.905968 0.912408 0.924 0.909832 0.89824 +0.854448 0.8274 0.797776 0.744968 0.688296 0.618744 0.55986 0.49966 +0.447487 0.393307 0.312037 0.25886 0.227757 0.17458 0.133443 0.0973233 +0.08127 0.0642133 0.0591967 0.0622067 0.0682267 0.06923 0.07525 0.0672233 +0.07224 0.0742467 0.0702333 0.06923 0.0652167 0.0591967 0.0531767 0.05418 +0.0642133 0.07525 0.0943133 0.0862867 0.0943133 0.0983267 0.0862867 0.0903 +0.0351167 0.01204 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0.01204 0.0371233 0.101337 0.109363 0.104347 0.107357 0.0892967 +0.0953167 0.0852833 0.06923 0.0762533 0.0682267 0.0702333 0.0702333 0.07826 +0.0772567 0.09331 0.08127 0.08428 0.0852833 0.0742467 0.07826 0.0712367 +0.0772567 0.0702333 0.0742467 0.0702333 0.0732433 0.0652167 0.0702333 0.06622 +0.07224 0.0642133 0.0591967 0.0642133 0.0652167 0.0622067 0.06923 0.0742467 +0.0742467 0.0822733 0.0732433 0.0762533 0.0862867 0.08127 0.0712367 0.08428 +0.0672233 0.0762533 0.06923 0.0682267 0.0622067 0.0591967 0.0682267 0.0652167 +0.06622 0.07525 0.0702333 0.0652167 0.0682267 0.0642133 0.06923 0.06321 +0.07224 0.0772567 0.08428 0.0802667 0.08127 0.0802667 0.07826 0.07525 +0.08127 0.07826 0.0702333 0.0682267 0.0702333 0.0642133 0.08428 0.08428 +0.09933 0.09632 0.112373 0.0973233 0.0903 0.03612 0.00903 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0110367 0.0441467 0.11739 0.110367 +0.104347 0.09632 0.09632 0.0882933 0.08127 0.07525 0.0742467 0.07525 +0.0742467 0.0862867 0.0822733 0.08428 0.0882933 0.0903 0.0903 0.0862867 +0.0882933 0.0913033 0.08428 0.0852833 0.0742467 0.0742467 0.0903 0.0802667 +0.0832767 0.07826 0.0792633 0.0852833 0.0822733 0.06923 0.0762533 0.0732433 +0.0772567 0.07525 0.0642133 0.0762533 0.07525 0.0762533 0.07525 0.07826 +0.0712367 0.0802667 0.07826 0.08127 0.07826 0.0732433 0.0852833 0.08729 +0.0822733 0.07224 0.07525 0.0732433 0.0762533 0.0832767 0.0943133 0.08729 +0.08729 0.0923067 0.0923067 0.0832767 0.0802667 0.0862867 0.0802667 0.0762533 +0.07525 0.07525 0.0712367 0.07826 0.0903 0.09331 0.10535 0.100333 +0.113377 0.103343 0.0411367 0.00903 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.00802667 +0.0441467 0.08729 0.116387 0.10836 0.101337 0.0943133 0.08428 0.0852833 +0.0802667 0.0712367 0.0822733 0.0762533 0.0852833 0.0923067 0.0903 0.0953167 +0.09632 0.09933 0.0923067 0.09331 0.0852833 0.09331 0.09331 0.0882933 +0.0802667 0.0822733 0.0882933 0.0913033 0.0862867 0.0852833 0.0862867 0.0832767 +0.09331 0.0903 0.0832767 0.0852833 0.0852833 0.0892967 0.0913033 0.0852833 +0.0892967 0.0892967 0.0852833 0.0882933 0.08428 0.0762533 0.0822733 0.08127 +0.0903 0.0802667 0.0882933 0.09933 0.0953167 0.09632 0.10535 0.0862867 +0.0852833 0.0923067 0.0943133 0.0862867 0.08729 0.08428 0.07826 0.07525 +0.0772567 0.0832767 0.101337 0.11137 0.11438 0.11438 0.0772567 0.0431433 +0.00702333 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0.0471567 0.0491633 0.10836 0.109363 0.104347 +0.0923067 0.0862867 0.0923067 0.0792633 0.0862867 0.0822733 0.0903 0.0852833 +0.100333 0.0953167 0.09933 0.0973233 0.09632 0.09933 0.09933 0.0983267 +0.0913033 0.0892967 0.0943133 0.09331 0.0852833 0.0943133 0.09331 0.0923067 +0.101337 0.101337 0.0923067 0.0943133 0.0973233 0.09933 0.0913033 0.0953167 +0.0892967 0.0943133 0.0862867 0.08729 0.0862867 0.0892967 0.0923067 0.0903 +0.103343 0.10234 0.0923067 0.0983267 0.103343 0.0903 0.104347 0.0923067 +0.08729 0.0973233 0.0913033 0.0882933 0.0832767 0.0852833 0.08127 0.100333 +0.10836 0.110367 0.11739 0.0501667 0.0471567 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.0461533 +0.0401333 0.0732433 0.10836 0.09933 0.0882933 0.0943133 0.0832767 0.09331 +0.0903 0.08729 0.0953167 0.100333 0.0973233 0.0983267 0.100333 0.101337 +0.0983267 0.0953167 0.104347 0.09933 0.09331 0.0983267 0.0923067 0.09632 +0.10234 0.100333 0.09632 0.0892967 0.103343 0.0983267 0.09933 0.09933 +0.0892967 0.0913033 0.0943133 0.0943133 0.0983267 0.10535 0.10234 0.09933 +0.10535 0.09933 0.0953167 0.0973233 0.0983267 0.09632 0.09632 0.0923067 +0.08729 0.09331 0.08729 0.09632 0.09331 0.11137 0.0762533 0.0431433 +0.0461533 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0.0411367 0.0411367 0.0672233 0.107357 +0.0953167 0.0943133 0.0973233 0.101337 0.0973233 0.09933 0.10234 0.112373 +0.10234 0.106353 0.10234 0.103343 0.10234 0.103343 0.09632 0.10234 +0.0973233 0.0943133 0.0913033 0.0882933 0.103343 0.0882933 0.104347 0.0973233 +0.0973233 0.0983267 0.104347 0.107357 0.10234 0.100333 0.104347 0.0973233 +0.09933 0.10234 0.09632 0.10234 0.0983267 0.103343 0.103343 0.09933 +0.0923067 0.0642133 0.0371233 0.0461533 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0.04214 0.0441467 0.0431433 0.04214 0.11739 0.122407 +0.10836 0.11739 0.109363 0.11739 0.11438 0.110367 0.110367 0.116387 +0.112373 0.10535 0.0983267 0.107357 0.101337 0.09933 0.11137 0.113377 +0.11438 0.104347 0.121403 0.11438 0.109363 0.10535 0.116387 0.106353 +0.11137 0.116387 0.04214 0.0461533 0.0471567 0.0441467 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 0 0 0 \ No newline at end of file diff --git a/examples/extended/medical/DICOM/Colormap.dat b/examples/extended/medical/DICOM/Colormap.dat deleted file mode 100644 index 6550a3a4e9..0000000000 --- a/examples/extended/medical/DICOM/Colormap.dat +++ /dev/null @@ -1,21 +0,0 @@ -19 -0.000 0.0 0.0 0.0 1.0 -0.207 0.8 0.5 0.5 1.0 -0.227 0.8 0.5 0.5 1.0 -0.481 0.7 0.7 0.7 1.0 -0.534 0.7 0.7 0.7 1.0 -0.919 1.0 0.8 0.8 1.0 -0.979 1.0 0.8 0.8 1.0 -0.980 0.9 0.0 0.9 1.0 -1.004 0.9 0.0 0.9 1.0 -1.005 0.9 0.8 0.8 1.0 -1.043 0.9 0.8 0.8 1.0 -1.044 0.8 0.3 0.3 1.0 -1.109 0.8 0.3 0.3 1.0 -1.114 0.9 0.9 0.9 1.0 -1.217 0.9 0.9 0.9 1.0 -1.496 1.0 1.0 1.0 1.0 -1.856 1.0 1.0 1.0 1.0 -2.000 0.8 0.8 0.8 1.0 -4.000 0.0 0.0 0.0 1.0 -density red green blue opacity diff --git a/examples/extended/medical/DICOM/ColourMap.dat b/examples/extended/medical/DICOM/ColourMap.dat new file mode 100644 index 0000000000..dad61b70b4 --- /dev/null +++ b/examples/extended/medical/DICOM/ColourMap.dat @@ -0,0 +1,12 @@ +10 +Air 0.0 0.0 0.0 1.0 +LungInhale 0.8 0.5 0.5 1.0 +LungExhale 0.7 0.7 0.7 1.0 +AdiposeTissue 1.0 0.8 0.8 1.0 +Breast 0.9 0.0 0.9 1.0 +Water 0.9 0.8 0.8 1.0 +Muscle 0.8 0.3 0.3 1.0 +Liver 0.9 0.9 0.9 1.0 +TrabecularBone 1.0 1.0 1.0 1.0 +DenseBone 0.8 0.8 0.8 1.0 +material red green blue opacity diff --git a/examples/extended/medical/DICOM/Data.dat b/examples/extended/medical/DICOM/Data.dat index 05c49e88bb..fcbd31899f 100644 --- a/examples/extended/medical/DICOM/Data.dat +++ b/examples/extended/medical/DICOM/Data.dat @@ -3,20 +3,16 @@ 14196616 14196633 14196650 +10 +Air 0.207 +LungInhale 0.481 +LungExhale 0.919 +AdiposeTissue 0.979 +Breast 1.004 +Water 1.043 +Muscle 1.109 +Liver 1.113 +TrabecularBone 1.496 +DenseBone 1.654 - -######################################################## -# Short explanation of Data.dat # -######################################################## -# 2 -> Compression Value # -# 3 -> Total number of images # -# ... -> DICM names without extension # -######################################################## - -######################################################## -# Please do not include extension after the names # -# of the DICM images. The program will automatically # -# add <.g4> or <.dcm>. # -######################################################## - diff --git a/examples/extended/medical/DICOM/History b/examples/extended/medical/DICOM/History index e3f2e84693..6bebed74d9 100644 --- a/examples/extended/medical/DICOM/History +++ b/examples/extended/medical/DICOM/History @@ -1,4 +1,4 @@ -$Id: History,v 1.10 2005/12/06 14:26:35 gcosmo Exp $ +$Id: History,v 1.12 2007/12/05 22:36:01 arce Exp $ ------------------------------------------------------------------- ========================================================= @@ -8,6 +8,13 @@ $Id: History,v 1.10 2005/12/06 14:26:35 gcosmo Exp $ Category History file --------------------- +06.12.2007 - Pedro Arce + Added voxel colouring by material. Added possibility to use nested parameterisation + +05.12.2007 - Pedro Arce + Deep review on the input files and the way how the geometry is built. + Use of G4PhantomParameterisation and G4RegularNavigation. + 06.12.2005 - Gabriele Cosmo Trivial changes for support of CLHEP-2.0.X series. diff --git a/examples/extended/medical/DICOM/README b/examples/extended/medical/DICOM/README index 8f5fc3c765..2c885f6eb6 100644 --- a/examples/extended/medical/DICOM/README +++ b/examples/extended/medical/DICOM/README @@ -4,7 +4,7 @@ | README | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -The DICOM application has been developed by the Geant4 users: +The DICOM application has been orignal developed by the Geant4 users: Louis Archambault,*Luc Beaulieu, +Vincent Hubert-Tremblay. *Centre Hospitalier Universitaire de Quebec (CHUQ), @@ -16,89 +16,124 @@ web : thomson.phy.ulaval.ca/phys_med + Université Laval, Québec (QC) Canada -This example illustrates a preliminary version of a Geant4 interface -to the DICOM image format. -The example consists in creating an image from dicom files. +And it has been deeply reviewed by Pedro Arce in December 2007. + --->1) Introduction -DICOM images are read and used as Geometry for simulation. +This example serves first to convert a DICOM file to a simple ASCII file, where the Hounsfield numbers are converted to materials and densities so that it can be used by GEANT4. It serves also to create a GEANT4 geometry based on the DICOM file information using the G4PhantomParameterisation. -Three file .dcm give the experimental set-up -(in terms of tissues and tissue geometry position) are read. -It is possible to visualise the reproduced experimental -set-up thanks to the use of visualisation packages. - You can find the phantom reproduced in the image PhantomCT.jpg. -In the application the phantom is placed on a table. +In the application the phantom is placed on a table. ---> 2) Installation: - -example enviroment with the compiler 3.2.3 - -a standard Geant4 example GNUmakefile is provided - -setup with: -compiler = gcc-3.2.3 -G4SYSTEM = linux-g++ - -The following environment variables need to be set: -G4LEDATA: points to low energy data base - G4EMLOW3.0 - -visualisation package: OpenGL + - A standard Geant4 example GNUmakefile is provided + - Compile it with 'make' ---> 3) Run the example: -- batch mode: - -dicom vis.mac :the geometry is visualised with OPENGL - -dicom run.mac :no geometry visualisation + - To run the environment variable G4LEDATA needs to be set, pointing to the low energy data base, G4EMLOW4.3 -- interactive mode: -dicom -the file default.mac is read in order to visualise the phantom. + - batch mode: + - $G4INSTALL/bin/Linux-g++/dicom run.mac ---->4) Some details : + - interactive mode: + - $G4INSTALL/bin/Linux-g++/dicom + the file vis.mac is read in order to visualise the phantom with OpenGL -The DICOM images pixel values represent CT (Hounsfield) numbers and they should be -converted, first, to a given density and then to a material type. The relation between -CT number and density is more or less linear. The one used in this program is represented -in the table below. +--->4) Metadata: + + The file Data.dat has the following information + - A line with the compression value (used only to create the .g4dcm, not to read it) + - A line with the number of files + - A line for each file name (to these names it will be added the suffix .dcm to read the DICOM files in their original format, and the suffix .g4dcm to read the text files that contain the DICOM information where the Hounsfield numbers have been converted to material and densities) + +In case you want to convert DICOM files to text files, it must have the following lines: + - The number of materials you want to use + - A line for each material describing its name and the upper bound of the density interval. The materials should be described in increasing order of density. The voxels with a density between 0. and the first upper bound will be assigned to the first material, those with a density between the first upper bound and the second upper bound will be assigned to the second material, etc. + +--->5) Conversion of Hounsfield numbers to materials: + +After reading the name of files from Data.dat, if a file .dcm is found, then it looks for the corresponding .g4dcm file and if not found creates it. +Each file corresponds to a Z slice. The Z slices will be merged at runtime to form a unique patient volume; therefore the different slices have to be contiguous in Z. + +The DICOM images pixel values represent CT (Hounsfield) numbers and they should be converted, first, to a given density and then to a material type. The relation between CT number and density is more or less linear. +The file CT2Density.dat contains the calibration curve to convert CT (Hounsfield) number to physical density +The assignment of material densities to materials is done following the information from the file Data.dat (see below). In this case we have used: ##################################################### # Density Range Material # #---------------------------------------------------# # mg/cm3 - # #---------------------------------------------------# - # [ 0.207 , 0.227 ] Lungs (inhale) # - # [ 0.481 , 0.534 ] Lungs (exhale) # - # [ 0.919 , 0.979 ] Adipose # - # ] 0.979 , 1.004 ] Breast # - # ] 1.004 , 1.043 ] Phantom # - # ] 1.043 , 1.109 ] Liver # - # ] 1.109 , 1.113 ] Muscle # - # ] 1.113 , 1.217 ] Trabecular Bone# + # [ 0. , 0.207 ) Air # + # [ 0.207 , 0.481 ) Lungs (inhale) # + # [ 0.481 , 0.919 ) Lungs (exhale) # + # [ 0.919 , 0.979 ) Adipose # + # [ 0.979 , 1.004 ) Breast # + # [ 1.004 , 1.043 ) Phantom # + # [ 1.043 , 1.109 ) Liver # + # [ 1.109 , 1.113 ) Muscle # + # [ 1.113 , 1.496 ) Trabecular Bone# # [ 1.496 , 1.654 ] Dense Bone # ##################################################### -Data taken from the International Commission on Radiation Units and measurements (ICRU) -report 46 was used to build the materials (lung, liver, breast, bones, ...) +Data taken from the International Commission on Radiation Units and measurements (ICRU) report 46 was used to build the materials (lung, liver, breast, bones, ...) -5) Contacts +--->6) Splitting materials in density intervals: -If you have any questions or wish to notify of updates and/or modification -please contact: - -*Louis Archambault at louis.archambault@phy.ulaval.ca - -*Luc Beaulieu at beaulieu@phy.ulaval.ca +In the class DicomDetectorConstruction, it is defined a density interval -+ Vincent Hubert-Tremblay - or + G4double densityDiff = 0.1; -*Centre Hospitalier Universitaire de Quebec (CHUQ), -Hotel-Dieu de Quebec, departement de Radio-oncologie -11 cote du palais. Quebec, QC, Canada, G1R 2J6 -tel (418) 525-4444 #6720 -fax (418) 691 5268 -web : thomson.phy.ulaval.ca/phys_med +This means that the voxels of each material will be grouped in density intervals of 0.1 g/cm3 and a new material will be created for each group of voxels. + +--->7) Voxel colouring: + +The file Colormap.dat defines the colour that will be assigned to the voxels of each material. + +--->8) DICOM text file format: + +The DICOM files are converted to a simple text format. You may create your own file with the following format (see e.g. 14196616.g4dcm): + +- A line with the number of materials +- A line for each material with its index and name (the same name of materials that you construct as G4Material's) +- A line with the number of voxels in X, Y and Z +- A line with the minimum and maximum extension in X (mm) +- A line with the minimum and maximum extension in Y (mm) +- A line with the minimum and maximum extension in Z (mm) +- A number of lines containing the nVoxelX*nVoxelY*nVoxelZ material indices (one per voxel) +- A number of lines containing the nVoxelX*nVoxelY*nVoxelZ material densities (one per voxel) + +As commented before the DICOM files (.dcm) are assumed to describe one Z slice per file, and therefore the GEANT4 text files (.g4dcm) created from them have also one unique Z slice per file. Nevertheless if you create your own .g4dcm file you may include as many Z slices as desired. In any case you have to respect the rule that the Z slices must be contiguous. + +--->9) Choosing different parameterisation/navigation options: + +There are four possible ways in GEANT4 to treat the navigation in regular voxelised volumes: + +- The non-optimised way. It will be very slow because each time a track exits a voxel it has to loop to all other voxels to know which one it may enter +- The optimisation with G4SmartVoxel: a 3D grid is built, so that the location of voxels is fast, but it requires a lot of memory +- Using G4NestedParameterisation. The search is done hierarchically in X, Y and Z. It is fast and does not require big memory +- Using G4PhantomParameterisation/G4RegularNavigation: an special algorithm to navigate in regular voxelised geometries (see GEANT4 doc). This is the fastest way without any extra memory requirement (and it is the default in this example). It includes an option (default) to skip frontiers between voxels when they have the same material + +You can select amont the four options in the following way: + +- By default the example will run with G4RegularNavigation + +- To use the first option at RegularDicomDetectorConstruction.cc you just have to set + + patient_phys->SetRegularStructureId(0); + +- To use the second option apart from the change above at RegularDicomDetectorConstruction.cc you have to replace (i.e. use kUndefined) + + G4PVParameterised * patient_phys = new G4PVParameterised("Patient",voxel_logic,container_logic, + kXAxis, nVoxelX*nVoxelY*nVoxelZ, param); + +by + + G4PVParameterised * patient_phys = new G4PVParameterised("Patient",voxel_logic,container_logic, + kUndefined, nVoxelX*nVoxelY*nVoxelZ, param); + +- To use the third option you have to set the enviromental variable DICOM_NESTED_PARAM to 1 -+ Université Laval, Québec (QC) Canada \ No newline at end of file diff --git a/examples/extended/medical/DICOM/default.mac b/examples/extended/medical/DICOM/default.mac deleted file mode 100644 index 1d474265bd..0000000000 --- a/examples/extended/medical/DICOM/default.mac +++ /dev/null @@ -1,13 +0,0 @@ -/control/verbose 2 -/run/verbose 2 -#visualisation -/vis/scene/create -/vis/open OGLIX -/vis/drawVolume -/vis/viewer/update -/vis/viewer/zoom 5 -/vis/viewer/set/viewpointThetaPhi 90 0 -#/tracking/storeTrajectory 1 -#/vis/scene/endOfEventAction accumulate -#/run/beamOn 1000 - diff --git a/examples/extended/medical/DICOM/dicom.cc b/examples/extended/medical/DICOM/dicom.cc index 30141800a9..4c0e2686a8 100644 --- a/examples/extended/medical/DICOM/dicom.cc +++ b/examples/extended/medical/DICOM/dicom.cc @@ -51,7 +51,8 @@ #include "G4VisExecutive.hh" #endif -#include "DicomGeometry.hh" +#include "RegularDicomDetectorConstruction.hh" +#include "NestedParamDicomDetectorConstruction.hh" #include "DicomPrimaryGeneratorAction.hh" #include "DicomEventAction.hh" #include "DicomHandler.hh" @@ -61,15 +62,21 @@ int main(int argc,char** argv) // Treatment of DICOM images before creating the G4runManager DicomHandler* dcmHandler = new DicomHandler; - dcmHandler->checkFileFormat(); + dcmHandler->CheckFileFormat(); // Initialisation of physics, geometry, primary particles ... G4RunManager* runManager = new G4RunManager; - DicomGeometry* theGeometry = new DicomGeometry(); + DicomDetectorConstruction* theGeometry; + char* nest = getenv( "DICOM_NESTED_PARAM" ); + if( nest && G4String(nest) == "1" ) { + theGeometry = new NestedParamDicomDetectorConstruction(); + } else { + theGeometry = new RegularDicomDetectorConstruction(); + } runManager->SetUserInitialization(new DicomPhysicsList); runManager->SetUserInitialization(theGeometry); runManager->SetUserAction(new DicomPrimaryGeneratorAction()); - runManager->SetUserAction(new DicomEventAction); + // runManager->SetUserAction(new DicomEventAction); runManager->Initialize(); @@ -86,7 +93,7 @@ int main(int argc,char** argv) if (argc==1) { G4UIsession* session = new G4UIterminal(new G4UItcsh); - UI->ApplyCommand("/control/execute default.mac"); + UI->ApplyCommand("/control/execute vis.mac"); session->SessionStart(); delete session; } diff --git a/examples/extended/medical/DICOM/include/DicomConfiguration.hh b/examples/extended/medical/DICOM/include/DicomConfiguration.hh deleted file mode 100644 index 27f6531735..0000000000 --- a/examples/extended/medical/DICOM/include/DicomConfiguration.hh +++ /dev/null @@ -1,109 +0,0 @@ -// -// ******************************************************************** -// * 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. * -// ******************************************************************** -// -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca -// -// -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 -// -// + Université Laval, Québec (QC) Canada -//******************************************************* -// -// -// DicomConfiguration.hh : -// - Handling of the header of *.g4 files -// - Reading file - -#ifndef DicomConfiguration_h -#define DicomConfiguration_h 1 - -#include "globals.hh" -#include - -class DicomConfiguration -{ -public: - - DicomConfiguration(); - ~DicomConfiguration() { } - - // This function reads , return true or false - // if successfull or not - G4bool ReadDataFile(); - - G4int GetCompressionValue() {return compressionValue;} - - G4int GetTotalNumberOfFile() {return totalNumberOfFile;} - - std::vector GetListOfFile() {return listOfFile;} - - G4int GetTotalRows() {return totalRows;} - - G4int GetTotalColumns() {return totalColumns;} - - G4int GetTotalPixels() {return totalPixels;} - //G4int GetTotalPixels() {return densityValue.size();} - - G4double GetXPixelSpacing() {return xPixelSpacing;} - - G4double GetYPixelSpacing() {return yPixelSpacing;} - - G4double GetSliceThickness() {return sliceTickness;} - - std::vector GetSliceLocation() {return sliceLocation;} - - G4int IsCompressionUsed() {return compressionUsed;} - - G4double GetDensityValue(G4int i); - - void ClearDensityData() {densityValue.clear(); }; - - G4int ReadG4File(G4String g4File); - -private: - - static short compressionValue; - static G4int totalNumberOfFile; - static std::vector listOfFile; - static short totalRows; - static short totalColumns; - static G4int totalPixels; - static G4double xPixelSpacing; - static G4double yPixelSpacing; - static G4double sliceTickness; - static std::vector sliceLocation; - static short compressionUsed; - static std::vector densityValue; - -}; -#endif - diff --git a/examples/extended/medical/DICOM/include/DicomDetectorConstruction.hh b/examples/extended/medical/DICOM/include/DicomDetectorConstruction.hh new file mode 100644 index 0000000000..84b5c8012f --- /dev/null +++ b/examples/extended/medical/DICOM/include/DicomDetectorConstruction.hh @@ -0,0 +1,108 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// Author: P. Arce +// History: 30.11.07 First version +//******************************************************* +// +// DicomDetectorConstruction.hh : +// - Start the building of the geometry +// - Initialisation of materials +// - Creation of the world +// - Reading of the DICOM data +//******************************************************* + +#ifndef DicomDetectorConstruction_h +#define DicomDetectorConstruction_h 1 + +#include "globals.hh" +#include "G4VUserDetectorConstruction.hh" +#include "DicomPatientZSliceHeader.hh" + +class G4Material; +class G4Box; +class G4LogicalVolume; + +class DicomDetectorConstruction : public G4VUserDetectorConstruction +{ +public: + + DicomDetectorConstruction(); + ~DicomDetectorConstruction(); + + G4VPhysicalVolume* Construct(); + // trigger the construction of the geometry + +protected: + void InitialisationOfMaterials(); + // create the original materials + + void ReadPatientData(); + // read the DICOM files describing the patient + + void ReadPatientDataFile(const G4String& fname); + // read one of the DICOM files describing the patient (usually one per Z slice). Build a DicomPatientZSliceHeader for each file + + void MergeZSliceHeaders(); + // merge the slice headers of all the files + + G4Material* BuildMaterialWithChangingDensity( const G4Material* origMate, float density, G4String newMateName ); + // build a new material if the density of the voxel is different to the other voxels + + G4String ftoa(float flo); + // convert a float to a string + + void ConstructPatientContainer(); + virtual void ConstructPatient() = 0; + // construct the patient volumes. This method should be implemented for each of the derived classes + +protected: + G4Material* air; + + // World ... + G4Box* world_solid; + G4LogicalVolume* world_logic; + G4VPhysicalVolume* world_phys; + + G4Box* container_solid; + G4LogicalVolume* container_logic; + G4VPhysicalVolume* container_phys; + + G4int fNoFiles; // number of DICOM files + std::vector fOriginalMaterials; // list of original materials + std::vector fMaterials; // list of new materials created to distinguish different density voxels that have the same original materials + size_t* fMateIDs; // index of material of each voxel + + std::map fDensityDiffs; // Density difference to distinguish material for each original material (by index) + + std::vector fZSliceHeaders; // list of z slice header (one per DICOM files) + DicomPatientZSliceHeader* fZSliceHeaderMerged; // z slice header resulted from merging all z slice headers + + G4int nVoxelX, nVoxelY, nVoxelZ; + G4double voxelHalfDimX, voxelHalfDimY, voxelHalfDimZ; +}; + +#endif + diff --git a/examples/extended/medical/DICOM/include/DicomGeometry.hh b/examples/extended/medical/DICOM/include/DicomGeometry.hh deleted file mode 100644 index 7f2816fc37..0000000000 --- a/examples/extended/medical/DICOM/include/DicomGeometry.hh +++ /dev/null @@ -1,102 +0,0 @@ -// -// ******************************************************************** -// * 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. * -// ******************************************************************** -// -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca -// -// -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 -// -// + Université Laval, Québec (QC) Canada -//*******************************************************// -//******************************************************* -// -// DicomGeometry.hh : -// - Start the building of the geometry -// - Creation of the world and other "mother"(middle) volume -// - Initialisation of patient geometry -// - Initialisation of HeaD geometry -// - Functions are in DicomGeometry.cc, PatientConstructor.cc -//******************************************************* - -#ifndef DicomGeometry_h -#define DicomGeometry_h 1 - -#include "globals.hh" -#include "G4VUserDetectorConstruction.hh" - -class DicomConfiguration; -class DicomPatientConstructor; -class G4Material; -class G4LogicalVolume; -class G4PhysicalVolume; -class G4Box; - -class DicomGeometry : public G4VUserDetectorConstruction -{ -public: - - DicomGeometry(); - ~DicomGeometry(); - - G4VPhysicalVolume* Construct(); - -private: - - void InitialisationOfMaterials(); - void PatientConstruction(); - - DicomPatientConstructor* patientConstructor; - - //Materials ... - - G4Material* trabecularBone; - G4Material* denseBone; - G4Material* liver; - G4Material* muscle; - G4Material* phantom; - G4Material* breast; - G4Material* adiposeTissue; - G4Material* lungexhale; - G4Material* lunginhale; - G4Material* air; - - // World ... - - G4Box* solidWorld; - G4LogicalVolume* logicWorld; - G4VPhysicalVolume* physiWorld; - G4VPhysicalVolume* parameterisedPhysVolume; - G4VPhysicalVolume* physicalLungINhale; -}; - -#endif - diff --git a/examples/extended/medical/DICOM/include/DicomHandler.hh b/examples/extended/medical/DICOM/include/DicomHandler.hh index 3b547a5bbc..67bbd24bc0 100644 --- a/examples/extended/medical/DICOM/include/DicomHandler.hh +++ b/examples/extended/medical/DICOM/include/DicomHandler.hh @@ -57,6 +57,8 @@ #define DicomHandler_h 1 #include +#include +#include #include "globals.hh" @@ -68,17 +70,17 @@ public: ~DicomHandler(); - G4int readHeader(FILE *,char *); - G4int readData(FILE *,char *); // note: always use readHeader + G4int ReadFile(FILE *,char *); + G4int ReadData(FILE *,char *); // note: always use readHeader // before readData // use ImageMagick to display the image //G4int displayImage(char[500]); - void checkFileFormat(); + void CheckFileFormat(); private: - template void getValue(char *, Type &); + template void GetValue(char *, Type &); private: @@ -86,12 +88,14 @@ private: const int LINEBUFFSIZE; const int FILENAMESIZE; - void storeInformation(char *); - void getInformation(G4int &, char *); - G4double pixel2density(G4int pixel); + void GetInformation(G4int &, char *); + G4double Pixel2density(G4int pixel); + void ReadMaterialIndices( std::ifstream& finData); + size_t GetMaterialIndex( G4double density ); + void StoreData(std::ofstream& foutG4DCM); short compression; - G4int max; + G4int nFiles; short rows; short columns; short bitAllocated; @@ -105,6 +109,9 @@ private: G4bool littleEndian, implicitEndian; short pixelRepresentation; + + G4int** tab; + std::map fMaterialIndices; }; #endif diff --git a/examples/extended/medical/DICOM/include/DicomNestedPhantomParameterisation.hh b/examples/extended/medical/DICOM/include/DicomNestedPhantomParameterisation.hh new file mode 100644 index 0000000000..e0a02bd81a --- /dev/null +++ b/examples/extended/medical/DICOM/include/DicomNestedPhantomParameterisation.hh @@ -0,0 +1,130 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#ifndef RE02NESTEDPARAMETERISATION_HH +#define RE02NESTEDPARAMETERISATION_HH + +#include "G4Types.hh" +#include "G4VNestedParameterisation.hh" +#include "G4ThreeVector.hh" +#include + +class G4VPhysicalVolume; +class G4VTouchable; +class G4VSolid; +class G4Material; + +// CSG Entities which may be parameterised/replicated +// +class G4Box; +class G4Tubs; +class G4Trd; +class G4Trap; +class G4Cons; +class G4Sphere; +class G4Orb; +class G4Torus; +class G4Para; +class G4Polycone; +class G4Polyhedra; +class G4Hype; + +class DicomNestedPhantomParameterisation: public G4VNestedParameterisation +{ + public: // with description + + DicomNestedPhantomParameterisation(const G4ThreeVector& voxelSize, + std::vector& mat); + virtual ~DicomNestedPhantomParameterisation(); + + // Methods required in derived classes + // ----------------------------------- + virtual G4Material* ComputeMaterial(G4VPhysicalVolume *currentVol, + const G4int repNo, + const G4VTouchable *parentTouch=0 + ); + // Required method, as it is the reason for this class. + // Must cope with parentTouch=0 for navigator's SetupHierarchy + + virtual G4int GetNumberOfMaterials() const; + virtual G4Material* GetMaterial(G4int idx) const; + // Needed to define materials for instances of Nested Parameterisation + // Current convention: each call should return the materials + // of all instances with the same mother/ancestor volume. + size_t GetMaterialIndex( size_t nx, size_t ny, size_t nz) const; + size_t GetMaterialIndex( size_t copyNo) const; + void SetMaterialIndices( size_t* matInd ){ + fMaterialIndices = matInd; } + void SetNoVoxel( size_t nx, size_t ny, size_t nz ); + + virtual void ComputeTransformation(const G4int no, + G4VPhysicalVolume *currentPV) const; + + // Methods optional in derived classes + // ----------------------------------- + + // Additional standard Parameterisation methods, + // which can be optionally defined, in case solid is used. + + virtual void ComputeDimensions(G4Box &, + const G4int, + const G4VPhysicalVolume *) const; + +private: // Dummy declarations to get rid of warnings ... + void ComputeDimensions (G4Trd&,const G4int,const G4VPhysicalVolume*) + const {} + void ComputeDimensions (G4Trap&,const G4int,const G4VPhysicalVolume*) + const {} + void ComputeDimensions (G4Cons&,const G4int,const G4VPhysicalVolume*) + const {} + void ComputeDimensions (G4Sphere&,const G4int,const G4VPhysicalVolume*) + const {} + void ComputeDimensions (G4Orb&,const G4int,const G4VPhysicalVolume*) + const {} + void ComputeDimensions (G4Torus&,const G4int,const G4VPhysicalVolume*) + const {} + void ComputeDimensions (G4Para&,const G4int,const G4VPhysicalVolume*) + const {} + void ComputeDimensions (G4Hype&,const G4int,const G4VPhysicalVolume*) + const {} + void ComputeDimensions (G4Tubs&,const G4int,const G4VPhysicalVolume*) + const {} + void ComputeDimensions (G4Polycone&,const G4int,const G4VPhysicalVolume*) + const {} + void ComputeDimensions (G4Polyhedra&,const G4int,const G4VPhysicalVolume*) + const {} + +private: + G4double fdX,fdY,fdZ; + G4int fnX,fnY,fnZ; + + // + std::vector fMaterials; + + size_t* fMaterialIndices; + // Index in fMaterials that correspond to each voxel. +}; + +#endif diff --git a/examples/extended/medical/DICOM/include/DicomOctree.hh b/examples/extended/medical/DICOM/include/DicomOctree.hh deleted file mode 100644 index 365407922b..0000000000 --- a/examples/extended/medical/DICOM/include/DicomOctree.hh +++ /dev/null @@ -1,100 +0,0 @@ -// -// ******************************************************************** -// * 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. * -// ******************************************************************** -// -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca -// -// -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 -// -// + Université Laval, Québec (QC) Canada -//*******************************************************// -// -//--------------------------------------------------------------------------- -/// Octree encapsulates a volumetric compressed representation of the -/// vector field used for the reconstruction of a 3D model from multiple -/// range images or curves. -/// -/// It is assumed that the space occupied by octree is a cube whose -/// bottom-left-front corner is at origin (0,0,0) while the opposite corner -/// (top,right,back) is at ( mSize,mSize,mSize). Resolution of an octree -/// denotes the number of voxels along each axis such -/// that the resolution = 2^mNoLevels. -// ------------------------------------------------------------------------- - -#ifndef DICOMOCTREE_HH -#define DICOMOCTREE_HH - -#include "globals.hh" -#include "DicomOctreeNode.hh" -#include "DicomOctreeMiddleNode.hh" -#include "DicomOctreeTerminalNode.hh" - -class DicomOctreeNode; -class DicomOctreeMiddleNode; -class DicomTerminalNode; -class DicomOctree; - -class DicomOctree -{ -public: - - DicomOctree( G4int noLevels, G4double size ); - ~DicomOctree(); - - DicomOctreeNode* CreateNode( G4double i, G4double j, G4double k, G4int level ); - DicomOctreeNode* operator()( G4double nodeX, G4double nodeY, - G4double nodeZ, G4int level ); - void DeleteTree(); - - G4int CountMemory( G4int rMiddle, G4int rTerminal ); - - DicomOctreeNode* Root() { return mRoot; } - G4double Size() { return mSize; } - G4int NoLevels() { return mNoLevels; } - //G4bool Resolution() { return ( 1 << mNoLevels ); } - G4int GetIndexChild() { return indexChild;} -private: - void CountRecursive( DicomOctreeNode* pNode, G4int rMiddle, G4int rTerminal ); - // Root node of the tree - DicomOctreeMiddleNode* mRoot; - - // In an octree, size denotes physical size of the cube, - // ie length of its sides (which are assumed equal). - G4double mSize; - - // Number of levels denotes the maximal number of - // nodes in a single branch, starting from the root node. - G4int mNoLevels; - G4int indexChild; -}; -#endif - diff --git a/examples/extended/medical/DICOM/include/DicomPatientParameterisation.hh b/examples/extended/medical/DICOM/include/DicomPatientParameterisation.hh deleted file mode 100644 index 28e33cdb51..0000000000 --- a/examples/extended/medical/DICOM/include/DicomPatientParameterisation.hh +++ /dev/null @@ -1,189 +0,0 @@ -// -// ******************************************************************** -// * 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. * -// ******************************************************************** -// -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca -// -// -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 -// -// + Université Laval, Québec (QC) Canada -//*******************************************************// -#ifndef DicomPatientParameterisation_h -#define DicomPatientParameterisation_h 1 - -#include "globals.hh" -#include "G4VPVParameterisation.hh" -#include - -class G4VPhysicalVolume; -class G4LogicalVolume; -class G4Box; -class G4Material; -class G4VisAttributes; -class DicomConfiguration; -class DicomPatientParameterisation : public G4VPVParameterisation -{ -public: - - DicomPatientParameterisation(G4int NoVoxels, - G4double maxDensity, - G4double minDensity , - G4Material* lunginhale, - G4Material* lungexhale, - G4Material* adipose, - G4Material* breast, - G4Material* phantom, - G4Material* muscle, - G4Material* liver, - G4Material* denseBone, - G4Material* trabecularBone); - - virtual ~DicomPatientParameterisation(); - - void ComputeTransformation (const G4int copyNo, G4VPhysicalVolume* physVol) const; - - void ComputeDimensions(G4Box&, - const G4int, - const G4VPhysicalVolume* ) const; - - void ComputeDimensions(G4Tubs &, - const G4int, - const G4VPhysicalVolume *) const {} - - void ComputeDimensions(G4Trd &, - const G4int, - const G4VPhysicalVolume *) const {} - - void ComputeDimensions(G4Trap &, - const G4int, - const G4VPhysicalVolume *) const {} - - void ComputeDimensions(G4Cons &, - const G4int, - const G4VPhysicalVolume *) const {} - - void ComputeDimensions(G4Sphere &, - const G4int, - const G4VPhysicalVolume *) const {} - - void ComputeDimensions(G4Orb &, - const G4int, - const G4VPhysicalVolume *) const {} - - void ComputeDimensions(G4Torus &, - const G4int, - const G4VPhysicalVolume *) const {} - - void ComputeDimensions(G4Para &, - const G4int, - const G4VPhysicalVolume *) const {} - - void ComputeDimensions(G4Polycone &, - const G4int, - const G4VPhysicalVolume *) const {} - - void ComputeDimensions(G4Polyhedra &, - const G4int, - const G4VPhysicalVolume *) const {} - - void ComputeDimensions(G4Hype &, - const G4int, - const G4VPhysicalVolume *) const {} - - G4Material* ComputeMaterial(const G4int copyNo, - G4VPhysicalVolume* physVol, - const G4VTouchable*); - - void GetDensity( G4double maxDensity, G4double minDensity ); - -private: - - //materials ... - G4Material* lungExhale; - G4Material* lungInhale; - G4Material* adiposeTissue; - G4Material* breastTissue; - G4Material* phantomTissue; - G4Material* muscleTissue; - G4Material* liverTissue; - G4Material* denseBoneTissue; - G4Material* trabecularBoneTissue; - - G4VisAttributes* attributeAir; - G4VisAttributes* attributeLungINhale; - G4VisAttributes* attributeLungEXhale; - G4VisAttributes* attributeAdipose; - G4VisAttributes* attributeBreast; - G4VisAttributes* attributePhantom; - G4VisAttributes* attributeMuscle; - G4VisAttributes* attributeLiver; - G4VisAttributes* attributeTrabecularBone; - G4VisAttributes* attributeDenseBone; - - G4int max; - short compression; - - FILE* readData; - short columns,rows; - G4double pixelSpacingX; - G4double pixelSpacingY; - G4double sliceThickness; - G4double sliceLocation; - - std::vector density; - std::vector patientPlacementX; - std::vector patientPlacementY; - std::vector patientPlacementZ; - - - //G4LogicalVolume* LogicalVolumeParam; - - G4double middleLocationValue; - -private: - - void readColorChart(); - class ColorChart { - public: - G4double density; - G4double color[3]; - G4double alpha; - enum {CRED, CGREEN, CBLUE}; - }; - std::vector colorChart; - G4int numColorChart; - G4double getChartColor(G4int, G4double density); -}; -#endif - - - diff --git a/examples/extended/medical/DICOM/include/DicomPatientZSliceHeader.hh b/examples/extended/medical/DICOM/include/DicomPatientZSliceHeader.hh new file mode 100644 index 0000000000..9c20b615da --- /dev/null +++ b/examples/extended/medical/DICOM/include/DicomPatientZSliceHeader.hh @@ -0,0 +1,106 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// Author: P. Arce +// History: 30.11.07 First version +//******************************************************* +// +// DicomPatientZSliceHeader.hh : +// - Contains the meta data information corresponding to one or several Z slices (number of voxels, dimension) +//******************************************************* + +#ifndef DicomPatientZSliceHeader_h +#define DicomPatientZSliceHeader_h 1 + +#include "globals.hh" +class G4material; +#include +#include + + +class DicomPatientZSliceHeader +{ +public: + + DicomPatientZSliceHeader( const DicomPatientZSliceHeader& rhs ); + // build object copying an existing one (except Z dimensions) + + DicomPatientZSliceHeader( std::ifstream& fin ); + // build object reading data from a file + + ~DicomPatientZSliceHeader(){}; + + // Get and set methods + G4int GetNoVoxelX() const { return fNoVoxelX; }; + G4int GetNoVoxelY() const { return fNoVoxelY; }; + G4int GetNoVoxelZ() const { return fNoVoxelZ; }; + G4int GetNoVoxels() const { return fNoVoxelX*fNoVoxelY*fNoVoxelZ; }; + + G4double GetMinX() const { return fMinX; }; + G4double GetMinY() const { return fMinY; }; + G4double GetMinZ() const { return fMinZ; }; + G4double GetMaxX() const { return fMaxX; }; + G4double GetMaxY() const { return fMaxY; }; + G4double GetMaxZ() const { return fMaxZ; }; + + G4double GetVoxelHalfX() const { return (fMaxX-fMinX)/fNoVoxelX/2.; }; + G4double GetVoxelHalfY() const { return (fMaxY-fMinY)/fNoVoxelY/2.; }; + G4double GetVoxelHalfZ() const { return (fMaxZ-fMinZ)/fNoVoxelZ/2.; }; + + std::vector GetMaterialNames() const { return fMaterialNames; }; + + + void SetNoVoxelX(const G4int val) { fNoVoxelX = val; } + void SetNoVoxelY(const G4int val) { fNoVoxelY = val; } + void SetNoVoxelZ(const G4int val) { fNoVoxelZ = val; } + + void SetMinX(const G4double val) { fMinX = val; }; + void SetMaxX(const G4double val) { fMaxX = val; }; + void SetMinY(const G4double val) { fMinY = val; }; + void SetMaxY(const G4double val) { fMaxY = val; }; + void SetMinZ(const G4double val) { fMinZ = val; }; + void SetMaxZ(const G4double val) { fMaxZ = val; }; + + void SetMaterialNames(std::vector& mn ){ fMaterialNames = mn; } + + + void operator+=( const DicomPatientZSliceHeader& rhs ); + DicomPatientZSliceHeader operator+( const DicomPatientZSliceHeader& rhs ); + // add two slices that have the same dimensions, merging them in Z + +private: + G4bool CheckMaterialExists( const G4String& mateName ); + // check that material read exists as a G4Material + +private: + G4int fNoVoxelX, fNoVoxelY, fNoVoxelZ; // number of voxels in each dimensions + G4double fMinX,fMinY,fMinZ; // minimum extension of voxels (position of wall) + G4double fMaxX,fMaxY,fMaxZ; // maximum extension of voxels (position of wall) + + std::vector fMaterialNames; // list of material names + +}; + +#endif diff --git a/examples/extended/medical/DICOM/include/DicomPhantomParameterisationColour.hh b/examples/extended/medical/DICOM/include/DicomPhantomParameterisationColour.hh new file mode 100755 index 0000000000..6123bf494a --- /dev/null +++ b/examples/extended/medical/DICOM/include/DicomPhantomParameterisationColour.hh @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// class DicomPhantomParameterisationColour +// +// Class description: +// +// Class inherited from G4PhantomParameterisation to provide different colour for each material +// History: +// - Created. P. Arce, 5 December 2007 +// ********************************************************************* + +#ifndef DicomPhantomParameterisationColour_HH +#define DicomPhantomParameterisationColour_HH + +#include + +#include "G4PhantomParameterisation.hh" +class G4VisAttributes; + +class DicomPhantomParameterisationColour : public G4PhantomParameterisation +{ +public: // with description + + DicomPhantomParameterisationColour(); + ~DicomPhantomParameterisationColour(); + + virtual G4Material* ComputeMaterial(const G4int repNo, + G4VPhysicalVolume *currentVol, + const G4VTouchable *parentTouch=0); + +private: + void ReadColourData(); + +private: + std::map fColours; +}; + + +#endif diff --git a/examples/extended/medical/DICOM/include/DicomPrimaryGeneratorAction.hh b/examples/extended/medical/DICOM/include/DicomPrimaryGeneratorAction.hh index a467a9fabd..763f0d178c 100644 --- a/examples/extended/medical/DICOM/include/DicomPrimaryGeneratorAction.hh +++ b/examples/extended/medical/DICOM/include/DicomPrimaryGeneratorAction.hh @@ -36,6 +36,9 @@ // fax (418) 691 5268 // // + Université Laval, Québec (QC) Canada +// +// History: 30.11.07 P.Arce modified so that some particles reach patient voxels +// //******************************************************* #ifndef DicomPrimaryGeneratorAction_h diff --git a/examples/extended/medical/DICOM/include/NestedParamDicomDetectorConstruction.hh b/examples/extended/medical/DICOM/include/NestedParamDicomDetectorConstruction.hh new file mode 100644 index 0000000000..80d431ae37 --- /dev/null +++ b/examples/extended/medical/DICOM/include/NestedParamDicomDetectorConstruction.hh @@ -0,0 +1,54 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// Author: P. Arce +// History: 30.11.07 First version +//******************************************************* +// +// NestedParamDicomDetectorConstruction.hh : +// - Construct the patient using DicomPhantomParameterisationColour +//******************************************************* + +#ifndef NestedParamDicomDetectorConstruction_h +#define NestedParamDicomDetectorConstruction_h 1 + +#include "globals.hh" +#include "DicomDetectorConstruction.hh" + +class NestedParamDicomDetectorConstruction : public DicomDetectorConstruction +{ +public: + + NestedParamDicomDetectorConstruction(); + ~NestedParamDicomDetectorConstruction(); + +private: + + virtual void ConstructPatient(); + +}; + +#endif + diff --git a/examples/extended/medical/DICOM/include/RegularDicomDetectorConstruction.hh b/examples/extended/medical/DICOM/include/RegularDicomDetectorConstruction.hh new file mode 100644 index 0000000000..cec055e81a --- /dev/null +++ b/examples/extended/medical/DICOM/include/RegularDicomDetectorConstruction.hh @@ -0,0 +1,54 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// Author: P. Arce +// History: 30.11.07 First version +//******************************************************* +// +// RegularDicomDetectorConstruction.hh : +// - Construct the patient using DicomPhantomParameterisationColour +//******************************************************* + +#ifndef RegularDicomDetectorConstruction_h +#define RegularDicomDetectorConstruction_h 1 + +#include "globals.hh" +#include "DicomDetectorConstruction.hh" + +class RegularDicomDetectorConstruction : public DicomDetectorConstruction +{ +public: + + RegularDicomDetectorConstruction(); + ~RegularDicomDetectorConstruction(); + +private: + + virtual void ConstructPatient(); + +}; + +#endif + diff --git a/examples/extended/medical/DICOM/run.mac b/examples/extended/medical/DICOM/run.mac index 5535bfc5dc..6c762adadb 100644 --- a/examples/extended/medical/DICOM/run.mac +++ b/examples/extended/medical/DICOM/run.mac @@ -1,3 +1,7 @@ /control/verbose 1 /run/verbose 1 -/run/beamOn 10 +/tracking/verbose 1 +/random/setDirectoryName . +/random/setSavingFlag 1 +#/random/resetEngineFrom currentEvent.rndm1 +/run/beamOn 100 diff --git a/examples/extended/medical/DICOM/src/DicomConfiguration.cc b/examples/extended/medical/DICOM/src/DicomConfiguration.cc deleted file mode 100644 index 2cf70c5a19..0000000000 --- a/examples/extended/medical/DICOM/src/DicomConfiguration.cc +++ /dev/null @@ -1,149 +0,0 @@ -// -// ******************************************************************** -// * 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. * -// ******************************************************************** -// -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca -// -// -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 -// -// + Université Laval, Québec (QC) Canada -//******************************************************* -// -// -// DicomConfiguration.cc : -// - Handling of the header of *.g4 files -// - Reading file - -#include "globals.hh" -#include "DicomConfiguration.hh" -#include -#include - -short DicomConfiguration::compressionValue = 0; -G4int DicomConfiguration::totalNumberOfFile = 0; -std::vector DicomConfiguration::listOfFile; -short DicomConfiguration::totalRows = 0; -short DicomConfiguration::totalColumns = 0; -G4int DicomConfiguration::totalPixels = 0; -G4double DicomConfiguration::xPixelSpacing = 0.; -G4double DicomConfiguration::yPixelSpacing = 0.; -G4double DicomConfiguration::sliceTickness = 0.; -std::vector DicomConfiguration::sliceLocation; -short DicomConfiguration::compressionUsed = 0; -std::vector DicomConfiguration::densityValue; - -// -DicomConfiguration::DicomConfiguration() { - ReadDataFile(); -} - -// -G4bool DicomConfiguration::ReadDataFile() { - - if(totalNumberOfFile > 0) return true; - - totalPixels = 0; - - std::ifstream dataFile("Data.dat"); - G4String nameOfFileBuffer; - if(dataFile.good() != 1 ) return 1; - - dataFile >> compressionValue; - dataFile >> totalNumberOfFile; - - for(G4int i = 0; i < totalNumberOfFile; i++ ) { - - dataFile >> nameOfFileBuffer; - listOfFile.push_back( nameOfFileBuffer ); - - // read densities from .g4 file - ReadG4File(nameOfFileBuffer); - } - - dataFile.close(); - return 0; -} - -G4int DicomConfiguration::ReadG4File( G4String g4File ) { - - //densityValue.clear(); - - g4File = g4File + ".g4"; - std::ifstream readingG4FileHeader(g4File.c_str(), - std::ios_base::in | std::ios_base::binary); - - if ( readingG4FileHeader.good() != 1 ) return 1; - - readingG4FileHeader.read((char *)&totalRows, 2); - readingG4FileHeader.read((char *)&totalColumns, 2); - readingG4FileHeader.read((char *)&xPixelSpacing, 8); - readingG4FileHeader.read((char *)&yPixelSpacing, 8); - readingG4FileHeader.read((char *)&sliceTickness, 8); - G4double sliceLocationBuff; - readingG4FileHeader.read((char *)&sliceLocationBuff, 8); - readingG4FileHeader.read((char *)&compressionUsed, 2); - - sliceLocation.push_back(sliceLocationBuff); - - G4double density; - for(int y = 0; y < totalRows/compressionUsed; y++) { - for(int x = 0; x < totalColumns/compressionUsed; x++) { - readingG4FileHeader.read((char *)&density, sizeof(G4double)); - densityValue.push_back(density); - totalPixels++; - } - } - - readingG4FileHeader.close(); - return 0; -} - -G4double DicomConfiguration::GetDensityValue(G4int i) { - - G4double value = 0.; - - if (i >= 0) { - unsigned int j = i; - // - if(j > densityValue.size() ) { - // Throw exception, return dummy, cerr error message... - G4cout << "out of range in GetDensityValue()! : " - << j << ", " << totalPixels << G4endl; - } else { - value = densityValue[i]; - } - } else { - G4cout << "out of range in GetDensityValue()!"<AddElement(elN, 0.7); + air->AddElement(elO, 0.3); + + // Lung Inhale + G4Material* lunginhale = new G4Material( "LungInhale", + density = 0.217*g/cm3, + numberofElements = 9); + lunginhale->AddElement(elH,0.103); + lunginhale->AddElement(elC,0.105); + lunginhale->AddElement(elN,0.031); + lunginhale->AddElement(elO,0.749); + lunginhale->AddElement(elNa,0.002); + lunginhale->AddElement(elP,0.002); + lunginhale->AddElement(elS,0.003); + lunginhale->AddElement(elCl,0.002); + lunginhale->AddElement(elK,0.003); + + // Lung exhale + G4Material* lungexhale = new G4Material( "LungExhale", + density = 0.508*g/cm3, + numberofElements = 9 ); + lungexhale->AddElement(elH,0.103); + lungexhale->AddElement(elC,0.105); + lungexhale->AddElement(elN,0.031); + lungexhale->AddElement(elO,0.749); + lungexhale->AddElement(elNa,0.002); + lungexhale->AddElement(elP,0.002); + lungexhale->AddElement(elS,0.003); + lungexhale->AddElement(elCl,0.002); + lungexhale->AddElement(elK,0.003); + + // Adipose tissue + G4Material* adiposeTissue = new G4Material( "AdiposeTissue", + density = 0.967*g/cm3, + numberofElements = 7); + adiposeTissue->AddElement(elH,0.114); + adiposeTissue->AddElement(elC,0.598); + adiposeTissue->AddElement(elN,0.007); + adiposeTissue->AddElement(elO,0.278); + adiposeTissue->AddElement(elNa,0.001); + adiposeTissue->AddElement(elS,0.001); + adiposeTissue->AddElement(elCl,0.001); + + // Breast + G4Material* breast = new G4Material( "Breast", + density = 0.990*g/cm3, + numberofElements = 8 ); + breast->AddElement(elH,0.109); + breast->AddElement(elC,0.506); + breast->AddElement(elN,0.023); + breast->AddElement(elO,0.358); + breast->AddElement(elNa,0.001); + breast->AddElement(elP,0.001); + breast->AddElement(elS,0.001); + breast->AddElement(elCl,0.001); + + // Water + G4Material* water = new G4Material( "Water", + density = 1.0*g/cm3, + numberofElements = 2 ); + water->AddElement(elH,0.112); + water->AddElement(elO,0.888); + + // Muscle + G4Material* muscle = new G4Material( "Muscle", + density = 1.061*g/cm3, + numberofElements = 9 ); + muscle->AddElement(elH,0.102); + muscle->AddElement(elC,0.143); + muscle->AddElement(elN,0.034); + muscle->AddElement(elO,0.710); + muscle->AddElement(elNa,0.001); + muscle->AddElement(elP,0.002); + muscle->AddElement(elS,0.003); + muscle->AddElement(elCl,0.001); + muscle->AddElement(elK,0.004); + + // Liver + G4Material* liver = new G4Material( "Liver", + density = 1.071*g/cm3, + numberofElements = 9); + liver->AddElement(elH,0.102); + liver->AddElement(elC,0.139); + liver->AddElement(elN,0.030); + liver->AddElement(elO,0.716); + liver->AddElement(elNa,0.002); + liver->AddElement(elP,0.003); + liver->AddElement(elS,0.003); + liver->AddElement(elCl,0.002); + liver->AddElement(elK,0.003); + + // Trabecular Bone + G4Material* trabecularBone = new G4Material( "TrabecularBone", + density = 1.159*g/cm3, + numberofElements = 12 ); + trabecularBone->AddElement(elH,0.085); + trabecularBone->AddElement(elC,0.404); + trabecularBone->AddElement(elN,0.058); + trabecularBone->AddElement(elO,0.367); + trabecularBone->AddElement(elNa,0.001); + trabecularBone->AddElement(elMg,0.001); + trabecularBone->AddElement(elP,0.034); + trabecularBone->AddElement(elS,0.002); + trabecularBone->AddElement(elCl,0.002); + trabecularBone->AddElement(elK,0.001); + trabecularBone->AddElement(elCa,0.044); + trabecularBone->AddElement(elFe,0.001); + + // Dense Bone + G4Material* denseBone = new G4Material( "DenseBone", + density = 1.575*g/cm3, + numberofElements = 11 ); + denseBone->AddElement(elH,0.056); + denseBone->AddElement(elC,0.235); + denseBone->AddElement(elN,0.050); + denseBone->AddElement(elO,0.434); + denseBone->AddElement(elNa,0.001); + denseBone->AddElement(elMg,0.001); + denseBone->AddElement(elP,0.072); + denseBone->AddElement(elS,0.003); + denseBone->AddElement(elCl,0.001); + denseBone->AddElement(elK,0.001); + denseBone->AddElement(elCa,0.146); + + //----- Put the materials in a vector + fOriginalMaterials.push_back(air); // rho = 0.00129 + fOriginalMaterials.push_back(lunginhale); // rho = 0.217 + fOriginalMaterials.push_back(lungexhale); // rho = 0.508 + fOriginalMaterials.push_back(adiposeTissue); // rho = 0.967 + fOriginalMaterials.push_back(breast ); // rho = 0.990 + fOriginalMaterials.push_back(water); // rho = 1.018 + fOriginalMaterials.push_back(muscle); // rho = 1.061 + fOriginalMaterials.push_back(liver); // rho = 1.071 + fOriginalMaterials.push_back(trabecularBone); // rho = 1.159 + fOriginalMaterials.push_back(denseBone); // rho = 1.575 + +} + + +//------------------------------------------------------------- +void DicomDetectorConstruction::ReadPatientData() +{ + std::ifstream finDF("Data.dat"); + G4String fname; + if(finDF.good() != 1 ) { + G4Exception(" DicomDetectorConstruction::ReadPatientData. Problem reading data file: Data.dat"); + } + + G4int compression; + finDF >> compression; // not used here + + finDF >> fNoFiles; + for(G4int i = 0; i < fNoFiles; i++ ) { + finDF >> fname; + //--- Read one data file + fname += ".g4dcm"; + ReadPatientDataFile(fname); + } + + //----- Merge data headers + MergeZSliceHeaders(); + + finDF.close(); + +} + +//------------------------------------------------------------- +void DicomDetectorConstruction::ReadPatientDataFile(const G4String& fname) +{ +#ifdef G4VERBOSE + G4cout << " DicomDetectorConstruction::ReadPatientDataFile opening file " << fname << G4endl; +#endif + std::ifstream fin(fname.c_str(), std::ios_base::in); + if( !fin.is_open() ) { + G4Exception("DicomDetectorConstruction::ReadPatientDataFil. File not found " + fname ); + } + //----- Define density differences (maximum density difference to create a new material) + G4double densityDiff = 0.1; + std::map fDensityDiffs; // to be able to use a different densityDiff for each material + for( size_t ii = 0; ii < fOriginalMaterials.size(); ii++ ){ + fDensityDiffs[ii] = densityDiff; //currently all materials with same difference + } + + //----- Read data header + DicomPatientZSliceHeader* sliceHeader = new DicomPatientZSliceHeader( fin ); + fZSliceHeaders.push_back( sliceHeader ); + + //----- Read material indices + G4int nVoxels = sliceHeader->GetNoVoxels(); + + //--- If first slice, initiliaze fMateIDs + if( fZSliceHeaders.size() == 1 ) { + fMateIDs = new size_t[fNoFiles*nVoxels]; + } + + size_t mateID; + G4int voxelCopyNo = (fZSliceHeaders.size()-1)*nVoxels; // number of voxels from previously read slices + for( G4int ii = 0; ii < nVoxels; ii++, voxelCopyNo++ ){ + fin >> mateID; + fMateIDs[voxelCopyNo] = mateID; + } + + //----- Read material densities and build new materials if two voxels have same material but its density is in a different density interval (size of density intervals defined by densityDiff) + G4double density; + voxelCopyNo = (fZSliceHeaders.size()-1)*nVoxels; // number of voxels from previously read slices + for( G4int ii = 0; ii < nVoxels; ii++, voxelCopyNo++ ){ + fin >> density; + + //-- Get material from list of original materials + int mateID = fMateIDs[voxelCopyNo]; + G4Material* mateOrig = fOriginalMaterials[mateID]; + + //-- Get density bin: middle point of the bin in which the current density is included + float densityBin = fDensityDiffs[mateID] * (G4int(density/fDensityDiffs[mateID])+0.5); + //-- Build the new material name + G4String newMateName = mateOrig->GetName()+"__"+ftoa(densityBin); + + //-- Look if a material with this name is already created (because a previous voxel was already in this density bin) + size_t im; + for( im = 0; im < fMaterials.size(); im++ ){ + if( fMaterials[im]->GetName() == newMateName ) { + break; + } + } + //-- If material is already created use index of this material + if( im != fMaterials.size() ) { + fMateIDs[voxelCopyNo] = im; + //-- else, create the material + } else { + fMaterials.push_back( BuildMaterialWithChangingDensity( mateOrig, densityBin, newMateName ) ); + fMateIDs[voxelCopyNo] = fMaterials.size()-1; + } + } + +} + + +//------------------------------------------------------------- +void DicomDetectorConstruction::MergeZSliceHeaders() +{ + //----- Images must have the same dimension ... + fZSliceHeaderMerged = new DicomPatientZSliceHeader( *fZSliceHeaders[0] ); + for( size_t ii = 1; ii < fZSliceHeaders.size(); ii++ ) { + *fZSliceHeaderMerged += *fZSliceHeaders[ii]; + }; +} + +//------------------------------------------------------------- +G4Material* DicomDetectorConstruction::BuildMaterialWithChangingDensity( const G4Material* origMate, float density, G4String newMateName ) +{ + //----- Copy original material, but with new density + G4int nelem = origMate->GetNumberOfElements(); + G4Material* mate = new G4Material( newMateName, density*g/cm3, nelem, kStateUndefined, STP_Temperature ); + + for( G4int ii = 0; ii < nelem; ii++ ){ + G4double frac = origMate->GetFractionVector()[ii]; + G4Element* elem = const_cast(origMate->GetElement(ii)); + mate->AddElement( elem, frac ); + } + + return mate; +} + +//----------------------------------------------------------------------- +G4String DicomDetectorConstruction::ftoa(float flo) +{ + char ctmp[100]; + gcvt( flo, 10, ctmp ); + return G4String(ctmp); +} + + +//------------------------------------------------------------- +void DicomDetectorConstruction::ConstructPatientContainer() +{ + //---- Extract number of voxels and voxel dimensions + nVoxelX = fZSliceHeaderMerged->GetNoVoxelX(); + nVoxelY = fZSliceHeaderMerged->GetNoVoxelY(); + nVoxelZ = fZSliceHeaderMerged->GetNoVoxelZ(); + + voxelHalfDimX = fZSliceHeaderMerged->GetVoxelHalfX(); + voxelHalfDimY = fZSliceHeaderMerged->GetVoxelHalfY(); + voxelHalfDimZ = fZSliceHeaderMerged->GetVoxelHalfZ(); +#ifdef G4VERBOSE + G4cout << " nVoxelX " << nVoxelX << " voxelHalfDimX " << voxelHalfDimX <GetMaxX() + fZSliceHeaderMerged->GetMinX() ) /2.; + G4double offsetY = (fZSliceHeaderMerged->GetMaxY() + fZSliceHeaderMerged->GetMinY() ) /2.; + G4double offsetZ = (fZSliceHeaderMerged->GetMaxZ() + fZSliceHeaderMerged->GetMinZ() ) /2.; + G4ThreeVector posCentreVoxels(offsetX,offsetY,offsetZ); +#ifdef G4VERBOSE + G4cout << " placing voxel container volume at " << posCentreVoxels << G4endl; +#endif + container_phys = + new G4PVPlacement(0, // rotation + posCentreVoxels, + container_logic, // The logic volume + "PhantomContainer", // Name + world_logic, // Mother + false, // No op. bool. + 1); // Copy number + +} + diff --git a/examples/extended/medical/DICOM/src/DicomEventAction.cc b/examples/extended/medical/DICOM/src/DicomEventAction.cc index 36afdabf14..4bf570f271 100644 --- a/examples/extended/medical/DICOM/src/DicomEventAction.cc +++ b/examples/extended/medical/DICOM/src/DicomEventAction.cc @@ -51,8 +51,10 @@ DicomEventAction::DicomEventAction():drawFlag("all") DicomEventAction::~DicomEventAction() { } -void DicomEventAction::BeginOfEventAction(const G4Event*) -{ } +void DicomEventAction::BeginOfEventAction(const G4Event* evt) +{ + G4cout << "EV: " << evt->GetEventID() << G4endl; + } void DicomEventAction::EndOfEventAction(const G4Event* evt) { diff --git a/examples/extended/medical/DICOM/src/DicomGeometry.cc b/examples/extended/medical/DICOM/src/DicomGeometry.cc deleted file mode 100644 index 9c5b169cca..0000000000 --- a/examples/extended/medical/DICOM/src/DicomGeometry.cc +++ /dev/null @@ -1,388 +0,0 @@ -// -// ******************************************************************** -// * 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. * -// ******************************************************************** -// -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca -// -// -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 -// -// + Université Laval, Québec (QC) Canada -//******************************************************* - -#include "globals.hh" - -#include "G4Box.hh" -#include "G4LogicalVolume.hh" -#include "G4VPhysicalVolume.hh" -#include "G4PVPlacement.hh" -#include "G4PVParameterised.hh" -#include "G4Material.hh" -#include "G4Element.hh" -#include "G4VisAttributes.hh" -#include "G4Colour.hh" -#include "G4ios.hh" - -#include "DicomGeometry.hh" -#include "DicomPatientParameterisation.hh" -#include "DicomPatientConstructor.hh" -#include "DicomConfiguration.hh" - - -DicomGeometry::DicomGeometry() -{ - patientConstructor = new DicomPatientConstructor(); - trabecularBone = 0; - denseBone = 0; - liver = 0; - muscle = 0; - phantom = 0; - breast = 0; - adiposeTissue = 0; - lungexhale = 0; - lunginhale = 0; - air = 0; - solidWorld = 0; - logicWorld = 0; - physiWorld = 0; - parameterisedPhysVolume = 0; - physicalLungINhale = 0; -} - -DicomGeometry::~DicomGeometry() -{ - delete air; - delete lunginhale; - delete lungexhale; - delete adiposeTissue; - delete breast; - delete phantom; - delete muscle; - delete liver; - delete denseBone; - delete trabecularBone; - delete patientConstructor; -} - -void DicomGeometry::InitialisationOfMaterials() -{ - // Creating elements : - G4double z, a, density; - G4String name, symbol; - - G4Element* elC = new G4Element( name = "Carbon", - symbol = "C", - z = 6.0, a = 12.011 * g/mole ); - G4Element* elH = new G4Element( name = "Hydrogen", - symbol = "H", - z = 1.0, a = 1.008 * g/mole ); - G4Element* elN = new G4Element( name = "Nitrogen", - symbol = "N", - z = 7.0, a = 14.007 * g/mole ); - G4Element* elO = new G4Element( name = "Oxygen", - symbol = "O", - z = 8.0, a = 16.00 * g/mole ); - G4Element* elNa = new G4Element( name = "Sodium", - symbol = "Na", - z= 11.0, a = 22.98977* g/mole ); - G4Element* elS = new G4Element( name = "Sulfur", - symbol = "S", - z = 16.0,a = 32.065* g/mole ); - G4Element* elCl = new G4Element( name = "Chlorine", - symbol = "P", - z = 17.0, a = 35.453* g/mole ); - G4Element* elK = new G4Element( name = "Potassium", - symbol = "P", - z = 19.0, a = 30.0983* g/mole ); - G4Element* elP = new G4Element( name = "Phosphorus", - symbol = "P", - z = 30.0, a = 30.973976* g/mole ); - G4Element* elFe = new G4Element( name = "Iron", - symbol = "Fe", - z = 26, a = 56.845* g/mole ); - G4Element* elMg = new G4Element( name = "Magnesium", - symbol = "Mg", - z = 12.0, a = 24.3050* g/mole ); - G4Element* elCa = new G4Element( name="Calcium", - symbol = "Ca", - z = 20.0, a = 40.078* g/mole ); - // Creating Materials : - G4int numberofElements; - - // Trabecular Bone - trabecularBone = new G4Material( "SkeletonSpongiosa", - density = 1159*kg/m3, - numberofElements = 12 ); - trabecularBone->AddElement(elH,0.085); - trabecularBone->AddElement(elC,0.404); - trabecularBone->AddElement(elN,0.058); - trabecularBone->AddElement(elO,0.367); - trabecularBone->AddElement(elNa,0.001); - trabecularBone->AddElement(elMg,0.001); - trabecularBone->AddElement(elP,0.034); - trabecularBone->AddElement(elS,0.002); - trabecularBone->AddElement(elCl,0.002); - trabecularBone->AddElement(elK,0.001); - trabecularBone->AddElement(elCa,0.044); - trabecularBone->AddElement(elFe,0.001); - - // dense Bone - denseBone = new G4Material( "SkeletonRibs", - density = 1575*kg/m3, - numberofElements = 11 ); - denseBone->AddElement(elH,0.056); - denseBone->AddElement(elC,0.235); - denseBone->AddElement(elN,0.050); - denseBone->AddElement(elO,0.434); - denseBone->AddElement(elNa,0.001); - denseBone->AddElement(elMg,0.001); - denseBone->AddElement(elP,0.072); - denseBone->AddElement(elS,0.003); - denseBone->AddElement(elCl,0.001); - denseBone->AddElement(elK,0.001); - denseBone->AddElement(elCa,0.146); - - // Liver - liver = new G4Material( "Liver", - density = 1071*kg/m3, - numberofElements = 9); - liver->AddElement(elH,0.102); - liver->AddElement(elC,0.139); - liver->AddElement(elN,0.030); - liver->AddElement(elO,0.716); - liver->AddElement(elNa,0.002); - liver->AddElement(elP,0.003); - liver->AddElement(elS,0.003); - liver->AddElement(elCl,0.002); - liver->AddElement(elK,0.003); - - // Muscle - muscle = new G4Material( "Muscle", - density = 1061*kg/m3, - numberofElements = 9 ); - muscle->AddElement(elH,0.102); - muscle->AddElement(elC,0.143); - muscle->AddElement(elN,0.034); - muscle->AddElement(elO,0.710); - muscle->AddElement(elNa,0.001); - muscle->AddElement(elP,0.002); - muscle->AddElement(elS,0.003); - muscle->AddElement(elCl,0.001); - muscle->AddElement(elK,0.004); - - // Phantom - phantom = new G4Material( "Phantom", - density = 1.018*kg/m3, - numberofElements = 2 ); - phantom->AddElement(elH,0.112); - phantom->AddElement(elO,0.888); - - - // Breast - breast = new G4Material( "Breast", - density = 990*kg/m3, - numberofElements = 8 ); - breast->AddElement(elH,0.109); - breast->AddElement(elC,0.506); - breast->AddElement(elN,0.023); - breast->AddElement(elO,0.358); - breast->AddElement(elNa,0.001); - breast->AddElement(elP,0.001); - breast->AddElement(elS,0.001); - breast->AddElement(elCl,0.001); - - // Adipose tissue - adiposeTissue = new G4Material( "adiposeTissue", - density = 967*kg/m3, - numberofElements = 7); - adiposeTissue->AddElement(elH,0.114); - adiposeTissue->AddElement(elC,0.598); - adiposeTissue->AddElement(elN,0.007); - adiposeTissue->AddElement(elO,0.278); - adiposeTissue->AddElement(elNa,0.001); - adiposeTissue->AddElement(elS,0.001); - adiposeTissue->AddElement(elCl,0.001); - - lungexhale = new G4Material( "lungExhale", - density = 508*kg/m3, - numberofElements = 9 ); - lungexhale->AddElement(elH,0.103); - lungexhale->AddElement(elC,0.105); - lungexhale->AddElement(elN,0.031); - lungexhale->AddElement(elO,0.749); - lungexhale->AddElement(elNa,0.002); - lungexhale->AddElement(elP,0.002); - lungexhale->AddElement(elS,0.003); - lungexhale->AddElement(elCl,0.002); - lungexhale->AddElement(elK,0.003); - - // LungINhale - lunginhale = new G4Material( "lungInhale", - density = 217*kg/m3, - numberofElements = 9); - lunginhale->AddElement(elH,0.103); - lunginhale->AddElement(elC,0.105); - lunginhale->AddElement(elN,0.031); - lunginhale->AddElement(elO,0.749); - lunginhale->AddElement(elNa,0.002); - lunginhale->AddElement(elP,0.002); - lunginhale->AddElement(elS,0.003); - lunginhale->AddElement(elCl,0.002); - lunginhale->AddElement(elK,0.003); - - - // Air - air = new G4Material( "Air", - 1.290*mg/cm3, - numberofElements = 2 ); - air->AddElement(elN, 0.7); - air->AddElement(elO, 0.3); -} - -void DicomGeometry::PatientConstruction() -{ - DicomConfiguration readConfiguration; - readConfiguration.ReadDataFile(); - - // images must have the same dimension ... - // open a .g4 file to read some values ... - - G4int compressionUsed = readConfiguration.IsCompressionUsed(); - G4double sliceThickness = readConfiguration.GetSliceThickness(); - G4double xPixelSpacing = readConfiguration.GetXPixelSpacing(); - G4double yPixelSpacing = readConfiguration.GetYPixelSpacing(); - G4int totalNumberOfFile = readConfiguration.GetTotalNumberOfFile(); - G4int totalRows = readConfiguration.GetTotalRows(); - G4int totalColumns = readConfiguration.GetTotalColumns(); - - G4double patientX = (compressionUsed*(xPixelSpacing)/2.0) *mm; - G4double patientY = (compressionUsed*(yPixelSpacing)/2.0) *mm; - G4double patientZ = ((sliceThickness/2.0) *mm); - - G4VisAttributes* visualisationAttribute = new G4VisAttributes(); - visualisationAttribute->SetForceSolid(false); - visualisationAttribute->SetColour( 1., - 0., - 0., - 1. ); - - G4double middleLocationValue; - G4double maxsl = -999. , minsl = 999.; - for ( G4int i=0; i< totalNumberOfFile;i++ ) - { - G4double sliceLoc = readConfiguration.GetSliceLocation()[i]; - if(sliceLoc > maxsl) maxsl = sliceLoc; - if(sliceLoc < minsl) minsl = sliceLoc; - } - middleLocationValue = (maxsl + minsl)/2.; - - - //Building up the parameterisation ... - G4Box* parameterisedBox = new G4Box( "Parameterisation_Mother", - totalColumns*(xPixelSpacing)/2.*mm, - totalRows*(yPixelSpacing)/2.*mm, - (maxsl-minsl+sliceThickness)/2.*mm); - - G4LogicalVolume* parameterisedLogicalvolume = - new G4LogicalVolume( parameterisedBox, - air, - "Parameterisation_Mother (logical)" ); - parameterisedLogicalvolume->SetVisAttributes(visualisationAttribute); - - - - G4ThreeVector origin( 0.*mm,0.*mm,middleLocationValue*mm ); - parameterisedPhysVolume = new G4PVPlacement( 0, - origin, - parameterisedLogicalvolume, - "Parameterisation_Mother_placement", - logicWorld, - false, - 0 ); - - G4Box* LungINhale = new G4Box( "LungINhale", patientX, patientY, patientZ); - - G4LogicalVolume* logicLungInHale = new G4LogicalVolume(LungINhale,lunginhale,"Logical_LungINhale",0,0,0); - - // ---- MGP ---- Numbers (2.0, 0.207) to be removed from code; move to const - G4int numberOfVoxels = patientConstructor->FindingNbOfVoxels(2.0,0.207); - - G4VPVParameterisation* paramLungINhale = new DicomPatientParameterisation - ( numberOfVoxels, - 2.0 , 0.207 , - lunginhale, - lungexhale, - adiposeTissue, - breast, - phantom, - muscle, - liver, - denseBone, - trabecularBone ); - - physicalLungINhale = - new G4PVParameterised( "Physical_LungINhale" , - logicLungInHale, - parameterisedLogicalvolume, - kZAxis, numberOfVoxels, - paramLungINhale ); - // delete ReadConfiguration; -} - -G4VPhysicalVolume* DicomGeometry::Construct() -{ - InitialisationOfMaterials(); - - G4double worldXDimension = 1.*m; - G4double worldYDimension = 1.*m; - G4double worldZDimension = 1.*m; - - solidWorld = new G4Box( "WorldSolid", - worldXDimension, - worldYDimension, - worldZDimension ); - - logicWorld = new G4LogicalVolume( solidWorld, - air, - "WorldLogical", - 0, 0, 0 ); - - physiWorld = new G4PVPlacement( 0, - G4ThreeVector(0,0,0), - "World", - logicWorld, - 0, - false, - 0 ); - PatientConstruction(); - - return physiWorld; -} diff --git a/examples/extended/medical/DICOM/src/DicomHandler.cc b/examples/extended/medical/DICOM/src/DicomHandler.cc index 3975fd7825..a127db03dc 100644 --- a/examples/extended/medical/DICOM/src/DicomHandler.cc +++ b/examples/extended/medical/DICOM/src/DicomHandler.cc @@ -35,7 +35,7 @@ // tel (418) 525-4444 #6720 // fax (418) 691 5268 // -// + Universit-Aé Laval, Québec (QC) Canada$)B +// + Universit.AŽé Laval, QuŽébec (QC) Canada //******************************************************* // //******************************************************* @@ -45,7 +45,7 @@ // DicomHandler.cc : // - Handling of DICM images // - Reading headers and pixels -// - Transforming pixel to density and creating *.g4 +// - Transforming pixel to density and creating *.g4dcm // files // - Definitions are in DicomHandler.hh //******************************************************* @@ -61,7 +61,7 @@ DicomHandler::DicomHandler() : DATABUFFSIZE(8192), LINEBUFFSIZE(128), FILENAMESIZE(512), - compression(0), max(0), rows(0), columns(0), + compression(0), nFiles(0), rows(0), columns(0), bitAllocated(0), maxPixelValue(0), minPixelValue(0), pixelSpacingX(0.), pixelSpacingY(0.), sliceThickness(0.), sliceLocation(0.), @@ -75,8 +75,9 @@ DicomHandler::~DicomHandler() { ; } -G4int DicomHandler::readHeader(FILE *dicom, char * filename2) +G4int DicomHandler::ReadFile(FILE *dicom, char * filename2) { + G4cout << " ReadFile " << filename2 << G4endl; G4int returnvalue = 0; char * buffer = new char[LINEBUFFSIZE]; @@ -108,10 +109,10 @@ G4int DicomHandler::readHeader(FILE *dicom, char * filename2) readElementId = 0; // group ID std::fread(buffer, 2, 1, dicom); - getValue(buffer, readGroupId); + GetValue(buffer, readGroupId); // element ID std::fread(buffer, 2, 1, dicom); - getValue(buffer, readElementId); + GetValue(buffer, readElementId); // Creating a tag to be identified afterward G4int tagDictionary = readGroupId*0x10000 + readElementId; @@ -119,7 +120,7 @@ G4int DicomHandler::readHeader(FILE *dicom, char * filename2) // VR or element length std::fread(buffer,2,1,dicom); - getValue(buffer, elementLength2); + GetValue(buffer, elementLength2); // If value representation (VR) is OB, OW, SQ, UN, //the next length is 32 bits @@ -133,7 +134,7 @@ G4int DicomHandler::readHeader(FILE *dicom, char * filename2) // element length std::fread(buffer, 4, 1, dicom); - getValue(buffer, elementLength4); + GetValue(buffer, elementLength4); // beginning of the pixels if(tagDictionary == 0x7FE00010) break; @@ -147,7 +148,7 @@ G4int DicomHandler::readHeader(FILE *dicom, char * filename2) if(!implicitEndian || readGroupId == 2) { // element length (2 bytes) std::fread(buffer, 2, 1, dicom); - getValue(buffer, elementLength2); + GetValue(buffer, elementLength2); elementLength4 = elementLength2; } else { @@ -157,7 +158,7 @@ G4int DicomHandler::readHeader(FILE *dicom, char * filename2) exit(-10); } std::fread(buffer, 4, 1, dicom); - getValue(buffer, elementLength4); + GetValue(buffer, elementLength4); } // beginning of the pixels @@ -169,12 +170,35 @@ G4int DicomHandler::readHeader(FILE *dicom, char * filename2) // NULL termination data[elementLength4] = '\0'; - // analyzing inforamtion - getInformation(tagDictionary, data); + // analyzing information + GetInformation(tagDictionary, data); } // Creating files to store information - storeInformation(filename2); + std::ofstream foutG4DCM; + G4String fnameG4DCM = G4String(filename2) + ".g4dcm"; + foutG4DCM.open(fnameG4DCM); + G4cout << " opened fnameG4DCM file " << fnameG4DCM << G4endl; + + foutG4DCM << fMaterialIndices.size() << G4endl; + //--- Write materials + size_t ii = 0; + std::map::const_iterator ite; + for( ite = fMaterialIndices.begin(); ite != fMaterialIndices.end(); ite++, ii++ ){ + foutG4DCM << ii << " " << (*ite).second << G4endl; + } + //--- Write number of voxels (assume only one voxel in Z) + foutG4DCM << rows/compression << " " << columns/compression << " 1 " << G4endl; + //--- Write minimum and maximum extensions + foutG4DCM << -pixelSpacingX*rows/2 << " " << pixelSpacingX*rows/2 << G4endl; + foutG4DCM << -pixelSpacingY*columns/2 << " " << pixelSpacingY*columns/2 << G4endl; + foutG4DCM << sliceLocation-sliceThickness/2. << " " << sliceLocation+sliceThickness/2. << G4endl; + + ReadData( dicom, filename2 ); + + StoreData( foutG4DCM ); + + foutG4DCM.close(); // delete [] buffer; @@ -184,35 +208,35 @@ G4int DicomHandler::readHeader(FILE *dicom, char * filename2) } // -void DicomHandler::getInformation(G4int & tagDictionary, char * data) { +void DicomHandler::GetInformation(G4int & tagDictionary, char * data) { if(tagDictionary == 0x00280010 ) { // Number of Rows - getValue(data, rows); + GetValue(data, rows); std::printf("[0x00280010] Rows -> %i\n",rows); } else if(tagDictionary == 0x00280011 ) { // Number of columns - getValue(data, columns); + GetValue(data, columns); std::printf("[0x00280011] Columns -> %i\n",columns); } else if(tagDictionary == 0x00280102 ) { // High bits ( not used ) short highBits; - getValue(data, highBits); + GetValue(data, highBits); std::printf("[0x00280102] High bits -> %i\n",highBits); } else if(tagDictionary == 0x00280100 ) { // Bits allocated - getValue(data, bitAllocated); + GetValue(data, bitAllocated); std::printf("[0x00280100] Bits allocated -> %i\n", bitAllocated); } else if(tagDictionary == 0x00280101 ) { // Bits stored ( not used ) short bitStored; - getValue(data, bitStored); + GetValue(data, bitStored); std::printf("[0x00280101] Bits stored -> %i\n",bitStored); } else if(tagDictionary == 0x00280106 ) { // Min. pixel value - getValue(data, minPixelValue); + GetValue(data, minPixelValue); std::printf("[0x00280106] Min. pixel value -> %i\n", minPixelValue); } else if(tagDictionary == 0x00280107 ) { // Max. pixel value - getValue(data, maxPixelValue); + GetValue(data, maxPixelValue); std::printf("[0x00280107] Max. pixel value -> %i\n", maxPixelValue); } else if(tagDictionary == 0x00281053) { // Rescale slope @@ -324,68 +348,131 @@ void DicomHandler::getInformation(G4int & tagDictionary, char * data) { } -// -void DicomHandler::storeInformation(char * _filename) { +void DicomHandler::StoreData(std::ofstream& foutG4DCM) +{ + G4int mean; + G4double density; + G4bool overflow = false; + G4int cpt=1; - char * compressionbuf = new char[LINEBUFFSIZE]; - char * maxbuf = new char[LINEBUFFSIZE]; - char * filename = new char[FILENAMESIZE]; - compression = 0; - max = 0; - FILE* configuration; - - configuration = std::fopen("Data.dat","r"); - if( configuration != 0 ) { - std::fscanf(configuration,"%s",compressionbuf); - compression = atoi(compressionbuf); - std::fscanf(configuration,"%s",maxbuf); - max = atoi(maxbuf); - std::fclose(configuration); - } else { - std::printf("### WARNING, file Data.dat not here !!!\n"); - exit(1); + //----- Print indices of material + if(compression == 1) { // no compression: each pixel has a density value) + for( G4int ww = 0; ww < rows; ww++) { + for( G4int xx = 0; xx < columns; xx++) { + mean = tab[ww][xx]; + density = Pixel2density(mean); + foutG4DCM << GetMaterialIndex( density ) << " "; + } + foutG4DCM << G4endl; + } + + } else { + // density value is the average of a square region of + // compression*compression pixels + for(G4int ww = 0; ww < rows ;ww += compression ) { + for(G4int xx = 0; xx < columns ;xx +=compression ) { + overflow = false; + mean = 0; + for(int sumx = 0; sumx < compression; sumx++) { + for(int sumy = 0; sumy < compression; sumy++) { + if(ww+sumy >= rows || xx+sumx >= columns) overflow = true; + mean += tab[ww+sumy][xx+sumx]; + } + if(overflow) break; + } + mean /= compression*compression; + cpt = 1; + + if(!overflow) { + G4double density = Pixel2density(mean); + foutG4DCM << GetMaterialIndex( density ) << " "; + } + } + foutG4DCM << G4endl; } + } - FILE* dat; - std::sprintf(filename,"%s.dat", _filename); - dat = std::fopen(filename,"w+"); - // Note: the .dat files contain basic information on the images. + //----- Print densities + if(compression == 1) { // no compression: each pixel has a density value) + for( G4int ww = 0; ww < rows; ww++) { + for( G4int xx = 0; xx < columns; xx++) { + mean = tab[ww][xx]; + density = Pixel2density(mean); + foutG4DCM << density << " "; + if( xx%8 == 3 ) foutG4DCM << G4endl; // just for nicer reading + } + } + + } else { + // density value is the average of a square region of + // compression*compression pixels + for(G4int ww = 0; ww < rows ;ww += compression ) { + for(G4int xx = 0; xx < columns ;xx +=compression ) { + overflow = false; + mean = 0; + for(int sumx = 0; sumx < compression; sumx++) { + for(int sumy = 0; sumy < compression; sumy++) { + if(ww+sumy >= rows || xx+sumx >= columns) overflow = true; + mean += tab[ww+sumy][xx+sumx]; + } + if(overflow) break; + } + mean /= compression*compression; + cpt = 1; + + if(!overflow) { + G4double density = Pixel2density(mean); + foutG4DCM << density << " "; + if( xx/compression%8 == 3 ) foutG4DCM << G4endl; // just for nicer reading + } + } + } - std::fprintf(dat,"Rows,columns(#): %8i %8i\n",rows,columns); - std::fprintf(dat,"PixelSpacing_X,Y(mm): %8f %8f\n", - pixelSpacingX,pixelSpacingY); - std::fprintf(dat,"SliceThickness(mm): %8f\n",sliceThickness); - std::fprintf(dat,"SliceLocation(mm): %8f\n",sliceLocation); - std::fclose(dat); + } - delete [] compressionbuf; - delete [] maxbuf; - delete [] filename; +} + +void DicomHandler::ReadMaterialIndices( std::ifstream& finData) +{ + size_t nMate; + G4String mateName; + G4double densityMax; + finData >> nMate; + G4cout << " ReadMaterialIndices " << nMate << G4endl; + for( size_t ii = 0; ii < nMate; ii++ ){ + finData >> mateName >> densityMax; + fMaterialIndices[densityMax] = mateName; + G4cout << ii << " ReadMaterialIndices " << mateName << " " << densityMax << G4endl; + } + +} + +size_t DicomHandler::GetMaterialIndex( G4double density ) +{ + size_t mateID; + std::map::reverse_iterator ite; + G4int ii = fMaterialIndices.size(); + for( ite = fMaterialIndices.rbegin(); ite != fMaterialIndices.rend(); ite++, ii-- ) { + if( density >= (*ite).first ) { + break; + } + } + //- G4cout << " GetMaterialIndex " << density << " = " << ii << G4endl; + return ii; } // -G4int DicomHandler::readData(FILE *dicom,char * filename2) +G4int DicomHandler::ReadData(FILE *dicom,char * filename2) { G4int returnvalue = 0; - char * compressionbuf = new char[LINEBUFFSIZE]; - char * maxbuf = new char[LINEBUFFSIZE]; - short compression = 0; - G4int max = 0; - - FILE* configuration = std::fopen("Data.dat","r"); - std::fscanf(configuration,"%s",compressionbuf); - compression = atoi(compressionbuf); - std::fscanf(configuration,"%s",maxbuf); - max = atoi(maxbuf); - std::fclose(configuration); // READING THE PIXELS : G4int w = 0; G4int len = 0; - G4int** tab = new G4int*[rows]; + tab = new G4int*[rows]; for ( G4int i = 0; i < rows; i ++ ) { tab[i] = new G4int[columns]; } @@ -416,7 +503,7 @@ G4int DicomHandler::readData(FILE *dicom,char * filename2) for( G4int i = 0; i < columns; i++) { w++; std::fread(sbuff, 2, 1, dicom); - getValue(sbuff, pixel); + GetValue(sbuff, pixel); tab[j][i] = pixel*rescaleSlope + rescaleIntercept; } } @@ -455,7 +542,7 @@ G4int DicomHandler::readData(FILE *dicom,char * filename2) for( G4int ww = 0; ww < rows; ww++) { for( G4int xx = 0; xx < columns; xx++) { mean = tab[ww][xx]; - density = pixel2density(mean); + density = Pixel2density(mean); std::fwrite(&density, sizeof(G4double), 1, processed); } } @@ -478,7 +565,7 @@ G4int DicomHandler::readData(FILE *dicom,char * filename2) cpt = 1; if(!overflow) { - G4double density = pixel2density(mean); + G4double density = Pixel2density(mean); std::fwrite(&density, sizeof(G4double), 1, processed); } } @@ -487,14 +574,13 @@ G4int DicomHandler::readData(FILE *dicom,char * filename2) } std::fclose(processed); - delete [] compressionbuf; - delete [] maxbuf; delete [] nameProcessed; - for ( G4int i = 0; i < rows; i ++ ) { + /* for ( G4int i = 0; i < rows; i ++ ) { delete [] tab[i]; } delete [] tab; + */ return returnvalue; } @@ -511,7 +597,7 @@ G4int DicomHandler::readData(FILE *dicom,char * filename2) } */ -G4double DicomHandler::pixel2density(G4int pixel) +G4double DicomHandler::Pixel2density(G4int pixel) { G4double density = -1.; G4int nbrequali = 0; @@ -560,11 +646,10 @@ G4double DicomHandler::pixel2density(G4int pixel) } -void DicomHandler::checkFileFormat() +void DicomHandler::CheckFileFormat() { std::ifstream checkData("Data.dat"); char * oneLine = new char[128]; - G4int nbImages; if(!(checkData.is_open())) { //Check existance of Data.dat @@ -575,30 +660,33 @@ void DicomHandler::checkFileFormat() exit(0); } - checkData >> nbImages; - checkData >> nbImages; + checkData >> compression; + checkData >> nFiles; G4String oneName; checkData.getline(oneLine,100); std::ifstream testExistence; G4bool existAlready = true; - for(G4int rep = 0; rep < nbImages; rep++) { - checkData.getline(oneLine,100); - oneName = oneLine; - oneName += ".g4"; // create dicomFile.g4 - testExistence.open(oneName.data()); - if(!(testExistence.is_open())) { - existAlready = false; - testExistence.clear(); - testExistence.close(); - break; - } + for(G4int rep = 0; rep < nFiles; rep++) { + checkData.getline(oneLine,100); + oneName = oneLine; + oneName += ".g4dcm"; // create dicomFile.g4dcm + G4cout << nFiles << " test file " << oneName << G4endl; + testExistence.open(oneName.data()); + if(!(testExistence.is_open())) { + existAlready = false; testExistence.clear(); testExistence.close(); + } + testExistence.clear(); + testExistence.close(); } + + ReadMaterialIndices( checkData ); + checkData.close(); delete [] oneLine; - if( existAlready == false ) { // The files *.g4 have to be created + if( existAlready == false ) { // The files *.g4dcm have to be created G4cout << "\nAll the necessary images were not found in processed form, starting " << "with .dcm images\n"; @@ -615,9 +703,10 @@ void DicomHandler::checkFileFormat() std::fscanf(lecturePref,"%s",compressionc); compression = atoi(compressionc); std::fscanf(lecturePref,"%s",maxc); - max = atoi(maxc); + nFiles = atoi(maxc); + G4cout << " nFiles " << nFiles << G4endl; - for( G4int i = 1; i <= max; i++ ) { // Begin loop on filenames + for( G4int i = 1; i <= nFiles; i++ ) { // Begin loop on filenames std::fscanf(lecturePref,"%s",inputFile); std::sprintf(name,"%s.dcm",inputFile); @@ -629,11 +718,9 @@ void DicomHandler::checkFileFormat() // 1. reading the header // 2. reading the pixel data and store the density in Moyenne.dat if( dicom != 0 ) { - readHeader(dicom,inputFile); - readData(dicom,inputFile); + ReadFile(dicom,inputFile); } else { G4cout << "\nError opening file : " << name << G4endl; - exit(0); } std::fclose(dicom); } @@ -650,7 +737,7 @@ void DicomHandler::checkFileFormat() template -void DicomHandler::getValue(char * _val, Type & _rval) { +void DicomHandler::GetValue(char * _val, Type & _rval) { #if BYTE_ORDER == BIG_ENDIAN if(littleEndian) { // little endian diff --git a/examples/extended/medical/DICOM/src/DicomNestedPhantomParameterisation.cc b/examples/extended/medical/DICOM/src/DicomNestedPhantomParameterisation.cc new file mode 100644 index 0000000000..893771f470 --- /dev/null +++ b/examples/extended/medical/DICOM/src/DicomNestedPhantomParameterisation.cc @@ -0,0 +1,122 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +/////////////////////////////////////////////////////////////////////////////// +#include "DicomNestedPhantomParameterisation.hh" + +#include "G4VPhysicalVolume.hh" +#include "G4VTouchable.hh" +#include "G4ThreeVector.hh" +#include "G4Box.hh" +#include "G4LogicalVolume.hh" +#include "G4Material.hh" + +DicomNestedPhantomParameterisation::DicomNestedPhantomParameterisation( + const G4ThreeVector& voxelSize, + std::vector& mat): + G4VNestedParameterisation(),fdX(voxelSize.x()),fdY(voxelSize.y()),fdZ(voxelSize.z()),fMaterials(mat) +{ + // Position of voxels. + // x and y positions are already defined in DetectorConstruction + // by using replicated volume. Here only we need to define is z positions of voxes. +} + +DicomNestedPhantomParameterisation::~DicomNestedPhantomParameterisation() +{ +} + +void DicomNestedPhantomParameterisation::SetNoVoxel( size_t nx, size_t ny, size_t nz ) +{ + fnX = nx; + fnY = ny; + fnZ = nz; +} + +// +// Material assignment to geometry. +// +G4Material* DicomNestedPhantomParameterisation::ComputeMaterial(G4VPhysicalVolume* , + const G4int copyNoZ, + const G4VTouchable* parentTouch) +{ + if(parentTouch==0) return fMaterials[0]; // protection for initialization and vis at idle state + // Copy number of voxels. + // Copy number of X and Y are obtained from replication number. + // Copy nymber of Z is the copy number of current voxel. + G4int ix = parentTouch->GetReplicaNumber(0); + G4int iy = parentTouch->GetReplicaNumber(1); + G4int iz = copyNoZ; + + G4int copyNo = ix + fnZ*iy + fnX*fnY*iz; + + size_t matIndex = GetMaterialIndex(copyNo); + + return fMaterials[ matIndex ]; + +} + +//------------------------------------------------------------------ +size_t DicomNestedPhantomParameterisation:: +GetMaterialIndex( size_t copyNo ) const +{ + return *(fMaterialIndices+copyNo); +} + +// +// Number of Materials +// Material scanner is required for preparing physics tables and so on before +// stating simulation, so that G4 has to know number of materials. +G4int DicomNestedPhantomParameterisation::GetNumberOfMaterials() const{ + return fMaterials.size(); +} + +// +// GetMaterial +// This is needed for material scanner and realizing geometry. +// +G4Material* DicomNestedPhantomParameterisation::GetMaterial(G4int i) const{ + return fMaterials[i]; +} + +// +// Transformation of voxels. +// +void DicomNestedPhantomParameterisation::ComputeTransformation(const G4int copyNo, + G4VPhysicalVolume* physVol)const{ + G4ThreeVector position(0.,0.,(2*copyNo+1)*fdZ - fdZ*fnZ); + + physVol->SetTranslation(position); +} + +// +// Dimensions are always same in this RE02 example. +// +void DicomNestedPhantomParameterisation::ComputeDimensions(G4Box& box, + const G4int , + const G4VPhysicalVolume* ) const{ + box.SetXHalfLength(fdX); + box.SetYHalfLength(fdY); + box.SetZHalfLength(fdZ); +} diff --git a/examples/extended/medical/DICOM/src/DicomOctree.cc b/examples/extended/medical/DICOM/src/DicomOctree.cc deleted file mode 100644 index 553052cf18..0000000000 --- a/examples/extended/medical/DICOM/src/DicomOctree.cc +++ /dev/null @@ -1,157 +0,0 @@ -// -// ******************************************************************** -// * 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. * -// ******************************************************************** -// -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca -// -// -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 -// -// + Université Laval, Québec (QC) Canada -//******************************************************* - - -#include "DicomOctree.hh" -#include "DicomOctreeNode.hh" -#include "DicomOctreeMiddleNode.hh" -#include "DicomOctreeTerminalNode.hh" - -#include "G4ios.hh" - -DicomOctree::DicomOctree( G4int noLevels, G4double size ) -{ - std::cout << "++++++ DicomOctree was instantiated now." << std::endl; - mNoLevels = noLevels; - mSize = size; - mRoot = new DicomOctreeMiddleNode(0); -} - -DicomOctree::~DicomOctree() -{ - delete mRoot; - mRoot = 0; -} - -DicomOctreeNode* DicomOctree::CreateNode( G4double nodeX, G4double nodeY, G4double nodeZ, G4int level ) -{ - DicomOctreeNode* current = mRoot; - G4double currentX = 0; - G4double currentY = 0; - G4double currentZ = 0; - indexChild = 8; - for ( G4int i = 0; i < indexChild; i++ ) // Make children - { - G4double childLevelResolution = (1 << (i+1) ); - G4double childSize = mSize / childLevelResolution; - - G4int dirX = G4int( nodeX >= currentX + childSize ); - G4int dirY = G4int( nodeY >= currentY + childSize ); - G4int dirZ = G4int( nodeZ >= currentZ + childSize ); - G4int direction = dirX + ( dirY << 1 ) + ( dirZ << 2 ); - - if ( (*current)[direction] == 0 ) - { - if ( i < level - 1 ) - { - (*current)[direction] = new DicomOctreeMiddleNode( current ); - } else - { - (*current)[direction] = new DicomOctreeTerminalNode( current ); - } - } - - current = (*current)[direction]; - currentX += dirX*childSize; - currentY += dirY*childSize; - currentZ += dirZ*childSize; - } - return current; -} - -DicomOctreeNode* DicomOctree::operator()( G4double nodeX, - G4double nodeY, - G4double nodeZ, - G4int level ) -{ - DicomOctreeNode* current = mRoot; - G4double currentX = 0; - G4double currentY = 0; - G4double currentZ = 0; - // Make children - for ( G4int i = 0; i < level; i++ ) - { - G4double childLevelResolution = ( 1 << (i+1) ); - G4double childSize = mSize / childLevelResolution; - - G4int dirX = G4int( nodeX >= currentX + childSize ); - G4int dirY = G4int( nodeY >= currentY + childSize ); - G4int dirZ = G4int( nodeZ >= currentZ + childSize ); - G4int direction = dirX + ( dirY << 1 ) + ( dirZ << 2 ); - - if ( (*current)[direction] == 0 ) return 0; - - current = (*current)[direction]; - currentX += dirX*childSize; - currentY += dirY*childSize; - currentZ += dirZ*childSize; - } - return current; -} - -void DicomOctree::DeleteTree() -{ - delete mRoot; - mRoot = 0; -} - -void DicomOctree::CountRecursive( DicomOctreeNode* pNode, - G4int rMiddle, - G4int rTerminal ) -{ - if ( pNode->Type() == MIDDLE_NODE )rMiddle++; - else rTerminal++; - - for ( G4int i = 0; i < 8; i++ ) - { - if ( (*pNode)[i] != 0 ) - CountRecursive( (*pNode)[i], rMiddle, rTerminal ); - } -} - -G4int DicomOctree::CountMemory( G4int rMiddle, G4int rTerminal ) -{ - CountRecursive( mRoot, rMiddle, rTerminal ); - G4int total = rMiddle*sizeof(DicomOctreeMiddleNode) + - rTerminal*sizeof(DicomOctreeTerminalNode); - return total; -} - - diff --git a/examples/extended/medical/DICOM/src/DicomPatientParameterisation.cc b/examples/extended/medical/DICOM/src/DicomPatientParameterisation.cc deleted file mode 100644 index ff91b2d12e..0000000000 --- a/examples/extended/medical/DICOM/src/DicomPatientParameterisation.cc +++ /dev/null @@ -1,367 +0,0 @@ -// -// ******************************************************************** -// * 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. * -// ******************************************************************** -// -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca -// -// -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 -// -// + Universit.AŽé Laval, QuŽébec (QC) Canada -//******************************************************* - -#include "DicomPatientParameterisation.hh" -#include "DicomConfiguration.hh" - -#include "G4VPhysicalVolume.hh" -#include "G4ThreeVector.hh" -#include "G4Box.hh" -#include "G4LogicalVolume.hh" -#include "G4Material.hh" -#include "G4VisAttributes.hh" - -DicomPatientParameterisation::DicomPatientParameterisation(G4int, // NoVoxels, - G4double maxDensity, - G4double minDensity , - G4Material* lunginhale, - G4Material* lungexhale, - G4Material* adipose, - G4Material* breast, - G4Material* phantom, - G4Material* muscle, - G4Material* liver, - G4Material* denseBone, - G4Material* trabecularBone) { - - lungExhale = lungexhale; - lungInhale = lunginhale; - adiposeTissue = adipose; - breastTissue = breast; - phantomTissue = phantom; - muscleTissue = muscle; - liverTissue = liver; - denseBoneTissue = denseBone; - trabecularBoneTissue = trabecularBone; - - density.clear(); - - DicomConfiguration dicomConfiguration; - - // images must have the same dimension - G4int totalNumberOfFile = dicomConfiguration.GetTotalNumberOfFile(); - - G4double maxsl = -999. , minsl = 999.; - for( G4int i = 0; i < totalNumberOfFile; i++) { - G4double sliceLocation = dicomConfiguration.GetSliceLocation()[i]; - if(sliceLocation > maxsl) maxsl = sliceLocation; - if(sliceLocation < minsl) minsl = sliceLocation; - } - middleLocationValue = (maxsl + minsl)*0.5; - - // - readColorChart(); - - - G4double alpha; - - attributeLungINhale = new G4VisAttributes; - attributeLungINhale->SetColour(getChartColor(ColorChart::CRED, 0.217), - getChartColor(ColorChart::CGREEN, 0.217), - getChartColor(ColorChart::CBLUE, 0.217), - alpha=1.); - attributeLungINhale->SetForceSolid(true); - - attributeLungEXhale = new G4VisAttributes; - attributeLungEXhale->SetColour(getChartColor(ColorChart::CRED, 0.508), - getChartColor(ColorChart::CGREEN, 0.508), - getChartColor(ColorChart::CBLUE, 0.508), - alpha=1.); - attributeLungEXhale->SetForceSolid(true); - - attributeAdipose = new G4VisAttributes; - attributeAdipose->SetColour(getChartColor(ColorChart::CRED, 0.967), - getChartColor(ColorChart::CGREEN, 0.967), - getChartColor(ColorChart::CBLUE, 0.967), - alpha=1.); - attributeAdipose->SetForceSolid(true); - - attributeBreast = new G4VisAttributes; - attributeBreast->SetColour(getChartColor(ColorChart::CRED, 0.99), - getChartColor(ColorChart::CGREEN, 0.99), - getChartColor(ColorChart::CBLUE, 0.99), - alpha=1.); - attributeBreast->SetForceSolid(true); - - attributePhantom = new G4VisAttributes; - attributePhantom->SetColour(getChartColor(ColorChart::CRED, 1.018), - getChartColor(ColorChart::CGREEN, 1.018), - getChartColor(ColorChart::CBLUE, 1.018), - alpha=1.); - attributePhantom->SetForceSolid(true); - - attributeMuscle = new G4VisAttributes; - attributeMuscle->SetColour(getChartColor(ColorChart::CRED, 1.061), - getChartColor(ColorChart::CGREEN, 1.061), - getChartColor(ColorChart::CBLUE, 1.061), - alpha=1.); - attributeMuscle->SetForceSolid(true); - - - attributeLiver = new G4VisAttributes; - attributeLiver->SetColour(getChartColor(ColorChart::CRED, 1.071), - getChartColor(ColorChart::CGREEN, 1.071), - getChartColor(ColorChart::CBLUE, 1.071), - alpha=1.); - attributeLiver->SetForceSolid(true); - - attributeTrabecularBone = new G4VisAttributes; - attributeTrabecularBone->SetColour(getChartColor(ColorChart::CRED, 1.159), - getChartColor(ColorChart::CGREEN, 1.159), - getChartColor(ColorChart::CBLUE, 1.159), - alpha=1.); - attributeTrabecularBone->SetForceSolid(true); - - attributeDenseBone = new G4VisAttributes; - attributeDenseBone->SetColour(getChartColor(ColorChart::CRED, 1.575), - getChartColor(ColorChart::CGREEN, 1.575), - getChartColor(ColorChart::CBLUE, 1.575), - alpha=1.); - attributeDenseBone->SetForceSolid(true); - - attributeAir = new G4VisAttributes; - attributeAir->SetColour(getChartColor(ColorChart::CRED, 1.), - getChartColor(ColorChart::CGREEN, 1.), - getChartColor(ColorChart::CBLUE, 1.), - alpha=1.); - attributeAir->SetForceSolid(false); - - - rows = dicomConfiguration.GetTotalRows(); - columns = dicomConfiguration.GetTotalColumns(); - compression = dicomConfiguration.GetCompressionValue(); - max = dicomConfiguration.GetTotalNumberOfFile(); - pixelSpacingX = dicomConfiguration.GetXPixelSpacing(); - pixelSpacingY = dicomConfiguration.GetYPixelSpacing(); - sliceThickness = dicomConfiguration.GetSliceThickness(); - - GetDensity( maxDensity , minDensity ); - - dicomConfiguration.ClearDensityData(); -} - -DicomPatientParameterisation::~DicomPatientParameterisation() { - - // visualisation attributes ... - delete attributeAdipose; - delete attributeLungEXhale; - delete attributeBreast; - delete attributePhantom; - delete attributeMuscle; - delete attributeLiver; - delete attributeTrabecularBone; - delete attributeLungINhale; - delete attributeDenseBone; - delete attributeAir; - - // materials ... - delete trabecularBoneTissue; - delete denseBoneTissue; - delete liverTissue; - delete muscleTissue; - - delete breastTissue; - delete adiposeTissue; - delete lungInhale; - delete lungExhale; - -} - -void DicomPatientParameterisation::ComputeTransformation(const G4int copyNo, G4VPhysicalVolume* physVol) const -{ - G4double originZ = patientPlacementZ[copyNo]*mm-middleLocationValue*mm-sliceThickness/2; - G4ThreeVector origin( patientPlacementX[copyNo]*mm, - patientPlacementY[copyNo]*mm, - originZ*mm ); - - physVol->SetTranslation(origin); -} - -void DicomPatientParameterisation::ComputeDimensions(G4Box& voxels, const G4int, const G4VPhysicalVolume*) const -{ - voxels.SetXHalfLength((pixelSpacingX * compression/2.0) * mm); - voxels.SetYHalfLength((pixelSpacingY * compression/2.0) * mm); - voxels.SetZHalfLength((sliceThickness / 2.0) * mm); -} - -G4Material* -DicomPatientParameterisation::ComputeMaterial(const G4int copyNo, - G4VPhysicalVolume* physVol, - const G4VTouchable*) -{ - if( density[copyNo] >= 0.207 && density[copyNo] <= 0.227 ) { - physVol->SetName("PhysicalLungINhale"); - physVol->GetLogicalVolume()->SetVisAttributes( attributeLungINhale ); - return lungInhale; - - } else if( density[copyNo] >= 0.481 && density[copyNo] <= 0.534 ) { - physVol->SetName("PhysicalLungEXhale"); - physVol->GetLogicalVolume()->SetVisAttributes( attributeLungEXhale ); - return lungExhale; - - } else if( density[copyNo] >= 0.919 && density[copyNo] <= 0.979 ) { - physVol->SetName("PhysicalAdipose"); - physVol->GetLogicalVolume()->SetVisAttributes( attributeAdipose ); - return adiposeTissue; - - } else if( density[copyNo] > 0.979 && density[copyNo] <= 1.004 ) { - physVol->SetName("PhysicalBreast"); - physVol->GetLogicalVolume()->SetVisAttributes( attributeBreast ); - return breastTissue; - - } else if( density[copyNo] > 1.004 && density[copyNo] <= 1.043 ) { - physVol->SetName("PhysicalPhantom"); - physVol->GetLogicalVolume()->SetVisAttributes( attributePhantom ); - return phantomTissue; - - } else if( density[copyNo] > 1.043 && density[copyNo] <= 1.109 ) { - physVol->SetName("PhysicalMuscle"); - physVol->GetLogicalVolume()->SetVisAttributes( attributeMuscle ); - return muscleTissue; - - } else if( density[copyNo] > 1.109 && density[copyNo] <= 1.113 ) { - physVol->SetName("PhysicalLiver"); - physVol->GetLogicalVolume()->SetVisAttributes( attributeLiver ); - return liverTissue; - - } else if( density[copyNo] > 1.113 && density[copyNo] <= 1.217 ) { - physVol->SetName("PhysicalTrabecularBone"); - physVol->GetLogicalVolume()->SetVisAttributes( attributeTrabecularBone ); - return trabecularBoneTissue; - - } else if( density[copyNo] > 1.496 && density[copyNo] <= 1.654 ) { - physVol->SetName("PhysicalDenseBone"); - physVol->GetLogicalVolume()->SetVisAttributes( attributeDenseBone ); - return denseBoneTissue; - - } - - return physVol->GetLogicalVolume()->GetMaterial(); -} - -void DicomPatientParameterisation::GetDensity(G4double maxdensity, G4double mindensity) { - - DicomConfiguration dicomConfiguration; - - G4int copyCounter = 0; - - G4int totalNumberOfFile = dicomConfiguration.GetTotalNumberOfFile(); - - G4int lenRows = rows/compression; - G4int lenColumns = columns/compression; - G4double xDimension = (lenColumns*pixelSpacingX)/2; - - G4int i = 0; - for( G4int z = 0; z < totalNumberOfFile; z++ ) { - - G4double slicePosition = dicomConfiguration.GetSliceLocation()[z]; - - for( G4int j = 1; j <= lenRows; j++ ) { - for( G4int w = 1; w <= lenColumns; w++ ) { - - G4double tissueDensity = dicomConfiguration.GetDensityValue(i++); - - if( tissueDensity != -1 ) { - if( tissueDensity >= mindensity && tissueDensity <= maxdensity ) { - - density.push_back( tissueDensity ); - copyCounter++; - G4double yPixel = (pixelSpacingY/2 + (w-1)*pixelSpacingY); - G4double yDimension = ((lenRows*pixelSpacingX)/2)-(pixelSpacingY/2+(j-1)*pixelSpacingY); - - patientPlacementX.push_back( ( compression*(xDimension- yPixel ) ) *mm ); - patientPlacementY.push_back( ( compression* yDimension ) *mm ); - patientPlacementZ.push_back( ( slicePosition + sliceThickness/2 ) *mm ); - } - } - } - } - } - -} - -void DicomPatientParameterisation::readColorChart() { - std::ifstream cm("Colormap.dat"); - if(!cm) { - G4cerr << "Colormap.dat couldn't be opened!!" << G4endl; - numColorChart = 2; - ColorChart cc; - cc.density = 0.; - cc.color[ColorChart::CRED] = 0.; - cc.color[ColorChart::CGREEN] = 0.; - cc.color[ColorChart::CBLUE] = 0.; - cc.alpha = 1.; - colorChart.push_back(cc); - cc.density = 4.; - cc.color[ColorChart::CRED] = 1.; - cc.color[ColorChart::CGREEN] = 1.; - cc.color[ColorChart::CBLUE] = 1.; - cc.alpha = 1.; - colorChart.push_back(cc); - return; - } - - cm >> numColorChart; - ColorChart cc; - for(int i = 0; i < numColorChart; i++) { - cm >> cc.density - >> cc.color[ColorChart::CRED] - >> cc.color[ColorChart::CGREEN] - >> cc.color[ColorChart::CBLUE] - >> cc.alpha; - colorChart.push_back(cc); - } - -} - -G4double DicomPatientParameterisation::getChartColor(G4int CC, G4double density) { - G4double color = 0.; - - for(int i = 0; i < numColorChart; i++) { - if(density <= colorChart[i].density) { - - G4double w = (density - colorChart[i-1].density) - /(colorChart[i].density - colorChart[i-1].density); - color = w*colorChart[i-1].color[CC] + (1-w)*colorChart[i].color[CC]; - return color; - } - } - return color; -} diff --git a/examples/extended/medical/DICOM/src/DicomPatientZSliceHeader.cc b/examples/extended/medical/DICOM/src/DicomPatientZSliceHeader.cc new file mode 100644 index 0000000000..d257ab566b --- /dev/null +++ b/examples/extended/medical/DICOM/src/DicomPatientZSliceHeader.cc @@ -0,0 +1,176 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// + +#include "globals.hh" +#include "G4LogicalVolume.hh" +#include "G4MaterialTable.hh" +#include "G4Material.hh" +#include "G4GeometryTolerance.hh" + +#include "DicomPatientZSliceHeader.hh" + +//------------------------------------------------------------- +DicomPatientZSliceHeader::DicomPatientZSliceHeader( const DicomPatientZSliceHeader& rhs ) +{ + fNoVoxelX = rhs.GetNoVoxelX(); + fNoVoxelY = rhs.GetNoVoxelY(); + fNoVoxelZ = rhs.GetNoVoxelZ(); + fMinX = rhs.GetMinX(); + fMaxX = rhs.GetMaxX(); + fMinY = rhs.GetMinY(); + fMaxY = rhs.GetMaxY(); + fMinZ = rhs.GetMinZ(); + fMaxZ = rhs.GetMaxZ(); + fMaterialNames = rhs.GetMaterialNames(); + +} + +//------------------------------------------------------------- +DicomPatientZSliceHeader::DicomPatientZSliceHeader( std::ifstream& fin ) +{ + //----- Read material indices and names + G4int nmate; + G4String mateindex; + G4String matename; + fin >> nmate; +#ifdef G4VERBOSE + G4cout << " DicomPatientZSliceHeader reading number of materials " << nmate << G4endl; +#endif + + for( G4int im = 0; im < nmate; im++ ){ + fin >> mateindex >> matename; +#ifdef G4VERBOSE + G4cout << " DicomPatientZSliceHeader reading material " << im << " : " << mateindex << " " << matename << G4endl; +#endif + + if( ! CheckMaterialExists( matename ) ) { + G4Exception("DicomPatientZSliceHeader::DicomPatientZSliceHeader","A material is found in file that is not built in the C++ code",FatalErrorInArgument,matename.c_str()); + } + + fMaterialNames.push_back(matename); + } + + //----- Read number of voxels + fin >> fNoVoxelX >> fNoVoxelY >> fNoVoxelZ; +#ifdef G4VERBOSE + G4cout << " Number of voxels " << fNoVoxelX << " " << fNoVoxelY << " " << fNoVoxelZ << G4endl; +#endif + + //----- Read minimal and maximal extensions (= walls of patient) + fin >> fMinX >> fMaxX; + fin >> fMinY >> fMaxY; + fin >> fMinZ >> fMaxZ; +#ifdef G4VERBOSE + G4cout << " Extension in X " << fMinX << " " << fMaxX << G4endl + << " Extension in Y " << fMinY << " " << fMaxY << G4endl + << " Extension in Z " << fMinZ << " " << fMaxZ << G4endl; +#endif + +} + +//------------------------------------------------------------- +G4bool DicomPatientZSliceHeader::CheckMaterialExists( const G4String& mateName ) +{ + G4bool bFound = FALSE; + + const G4MaterialTable* matTab = G4Material::GetMaterialTable(); + std::vector::const_iterator matite; + for( matite = matTab->begin(); matite != matTab->end(); matite++ ) { + if( (*matite)->GetName() == mateName ) { + bFound = TRUE; + break; + } + } + + return bFound; + +} + + +//------------------------------------------------------------- +void DicomPatientZSliceHeader::operator+=( const DicomPatientZSliceHeader& rhs ) +{ + *this = *this + rhs; +} + +//------------------------------------------------------------- +DicomPatientZSliceHeader DicomPatientZSliceHeader::operator+( const DicomPatientZSliceHeader& rhs ) +{ + //----- Check that both slices has the same dimensions + if( fNoVoxelX != rhs.GetNoVoxelX() + || fNoVoxelY != rhs.GetNoVoxelY() ) { + G4cerr << "DicomPatientZSliceHeader error adding two slice headers: !!! Different number of voxels: " + << " X= " << fNoVoxelX << " =? " << rhs.GetNoVoxelX() + << " Y= " << fNoVoxelY << " =? " << rhs.GetNoVoxelY() + << " Z= " << fNoVoxelZ << " =? " << rhs.GetNoVoxelZ() + << G4endl; + G4Exception(""); + } + //----- Check that both slices has the same extensions + if( fMinX != rhs.GetMinX() || fMaxX != rhs.GetMaxX() + || fMinY != rhs.GetMinY() || fMaxY != rhs.GetMaxY() ) { + G4cerr << "DicomPatientZSliceHeader error adding two slice headers: !!! Different extensions: " + << " Xmin= " << fMinX << " =? " << rhs.GetMinX() + << " Xmax= " << fMaxX << " =? " << rhs.GetMaxX() + << " Ymin= " << fMinY << " =? " << rhs.GetMinY() + << " Ymax= " << fMaxY << " =? " << rhs.GetMaxY() + << G4endl; + G4Exception(""); + } + + //----- Check that both slices has the same materials + std::vector fMaterialNames2 = rhs.GetMaterialNames(); + if( fMaterialNames.size() != fMaterialNames2.size() ) { + G4cerr << "DicomPatientZSliceHeader error adding two slice headers: !!! Different number of materials: " << fMaterialNames.size() << " =? " << fMaterialNames2.size() << G4endl; + G4Exception(""); + } + for( size_t ii = 0; ii < fMaterialNames.size(); ii++ ) { + if( fMaterialNames[ii] != fMaterialNames2[ii] ) { + G4cerr << "DicomPatientZSliceHeader error adding two slice headers: !!! Different material number " << ii << " : " << fMaterialNames[ii] << " =? " << fMaterialNames2[ii] << G4endl; + G4Exception(""); + } + } + + //----- Check that the slices are contiguous in Z + if( std::fabs( fMinZ - rhs.GetMaxZ() ) > G4GeometryTolerance::GetInstance()->GetRadialTolerance() && + std::fabs( fMaxZ - rhs.GetMinZ() ) > G4GeometryTolerance::GetInstance()->GetRadialTolerance() ){ + G4cerr << "DicomPatientZSliceHeader error adding two slice headers: !!! Slices are not contiguous in Z " + << " Zmin= " << fMinZ << " & " << rhs.GetMinZ() + << " Zmax= " << fMaxZ << " & " << rhs.GetMaxZ() + << G4endl; + G4Exception(""); + } + + //----- Build slice header copying first one + DicomPatientZSliceHeader temp( *this ); + + //----- Add data from second slice header + temp.SetMinZ( std::min( fMinZ, rhs.GetMinZ() ) ); + temp.SetMaxZ( std::max( fMaxZ, rhs.GetMaxZ() ) ); + temp.SetNoVoxelZ( fNoVoxelZ + rhs.GetNoVoxelZ() ); + + return temp; +} diff --git a/examples/extended/medical/DICOM/src/DicomPhantomParameterisationColour.cc b/examples/extended/medical/DICOM/src/DicomPhantomParameterisationColour.cc new file mode 100755 index 0000000000..f9536469fc --- /dev/null +++ b/examples/extended/medical/DICOM/src/DicomPhantomParameterisationColour.cc @@ -0,0 +1,94 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// -------------------------------------------------------------------- + +#include "DicomPhantomParameterisationColour.hh" + +#include "globals.hh" +#include "G4VisAttributes.hh" +#include "G4Material.hh" +#include "G4VPhysicalVolume.hh" +#include "G4LogicalVolume.hh" + +//------------------------------------------------------------------ +DicomPhantomParameterisationColour::DicomPhantomParameterisationColour() +{ + ReadColourData(); +} + + +//------------------------------------------------------------------ +DicomPhantomParameterisationColour::~DicomPhantomParameterisationColour() +{ +} + +//------------------------------------------------------------------ +void DicomPhantomParameterisationColour::ReadColourData() +{ + //----- Add a G4VisAttributes for materials not defined in file; + G4VisAttributes* blankAtt = new G4VisAttributes; + blankAtt->SetVisibility( FALSE ); + fColours["Default"] = blankAtt; + + //----- Read file + std::ifstream fin("ColourMap.dat"); + G4int nMate; + G4String mateName; + G4double cred, cgreen, cblue, copacity; + fin >> nMate; + for( G4int ii = 0; ii < nMate; ii++ ){ + fin >> mateName >> cred >> cgreen >> cblue >> copacity; + G4Colour colour( cred, cgreen, cblue, copacity ); + G4VisAttributes* visAtt = new G4VisAttributes( colour ); + fColours[mateName] = visAtt; + } + +} + + +//------------------------------------------------------------------ +G4Material* DicomPhantomParameterisationColour:: +ComputeMaterial(const G4int copyNo, G4VPhysicalVolume * physVol, const G4VTouchable *) +{ + G4Material* mate = G4PhantomParameterisation::ComputeMaterial( copyNo, physVol, 0 ); + if( physVol ) { + G4String mateName = mate->GetName(); + size_t iuu = mateName.find("__"); + if( iuu != std::string::npos ) { + mateName = mateName.substr( 0, iuu ); + } + std::map::const_iterator ite = fColours.find(mateName); + if( ite != fColours.end() ){ + const G4Colour col = ((*ite).second)->GetColour(); + physVol->GetLogicalVolume()->SetVisAttributes( (*ite).second ); + } else { + physVol->GetLogicalVolume()->SetVisAttributes( (*(fColours.begin()) ).second ); // set it as unseen + } + } + + return mate; +} + diff --git a/examples/extended/medical/DICOM/src/DicomPhysicsList.cc b/examples/extended/medical/DICOM/src/DicomPhysicsList.cc index b7383b4a2b..7a126705a3 100644 --- a/examples/extended/medical/DICOM/src/DicomPhysicsList.cc +++ b/examples/extended/medical/DICOM/src/DicomPhysicsList.cc @@ -36,6 +36,8 @@ // fax (418) 691 5268 // // + Université Laval, Québec (QC) Canada +// +// History: 30.11.07 P.Arce default cut changed to 1 mm //******************************************************* #include "DicomPhysicsList.hh" @@ -51,8 +53,8 @@ DicomPhysicsList::DicomPhysicsList(): G4VUserPhysicsList() { - defaultCutValue = 10.*mm; - cutForGamma = 10.*mm; + defaultCutValue = 1.e-3*mm; + cutForGamma = 1.e-3*mm; cutForElectron = defaultCutValue; cutForPositron = defaultCutValue; diff --git a/examples/extended/medical/DICOM/src/DicomPrimaryGeneratorAction.cc b/examples/extended/medical/DICOM/src/DicomPrimaryGeneratorAction.cc index 4bfae65eb0..6e049d0d9f 100644 --- a/examples/extended/medical/DICOM/src/DicomPrimaryGeneratorAction.cc +++ b/examples/extended/medical/DICOM/src/DicomPrimaryGeneratorAction.cc @@ -43,9 +43,10 @@ #include "G4Event.hh" #include "G4ParticleGun.hh" #include "G4ParticleTable.hh" -#include "DicomGeometry.hh" +#include "RegularDicomDetectorConstruction.hh" #include "G4ParticleDefinition.hh" #include "Randomize.hh" +#include "CLHEP/Random/RandFlat.h" DicomPrimaryGeneratorAction::DicomPrimaryGeneratorAction() { @@ -65,10 +66,11 @@ void DicomPrimaryGeneratorAction::GeneratePrimaries(G4Event *anEvent) G4ParticleDefinition* particle = particleTable->FindParticle(particleName="gamma"); particleGun->SetParticleDefinition(particle); - // ---- MGP ---- Numbers in the code should be replaced by const - particleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.*cm,0.*cm)); + G4ThreeVector dir(2.*CLHEP::RandFlat::shoot()-1.,2.*CLHEP::RandFlat::shoot()-1.,2.*CLHEP::RandFlat::shoot()-1); + dir /= dir.mag(); + particleGun->SetParticleMomentumDirection(dir); particleGun->SetParticleEnergy(5.*MeV); - particleGun->SetParticlePosition(G4ThreeVector(0.,0.,0.)); + particleGun->SetParticlePosition(G4ThreeVector(0.,0.,-20.)); // put it close to the patient voxels particleGun->GeneratePrimaryVertex(anEvent); } diff --git a/examples/extended/medical/DICOM/src/NestedParamDicomDetectorConstruction.cc b/examples/extended/medical/DICOM/src/NestedParamDicomDetectorConstruction.cc new file mode 100644 index 0000000000..1931cbcce7 --- /dev/null +++ b/examples/extended/medical/DICOM/src/NestedParamDicomDetectorConstruction.cc @@ -0,0 +1,100 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// History: +// Pedro Arce +// +//******************************************************* + +#include "globals.hh" + +#include "G4Box.hh" +#include "G4LogicalVolume.hh" +#include "G4VPhysicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4PVParameterised.hh" + +#include "NestedParamDicomDetectorConstruction.hh" +#include "DicomNestedPhantomParameterisation.hh" + +NestedParamDicomDetectorConstruction::NestedParamDicomDetectorConstruction() : DicomDetectorConstruction() +{ +} + +NestedParamDicomDetectorConstruction::~NestedParamDicomDetectorConstruction() +{ +} + + +//------------------------------------------------------------- +void NestedParamDicomDetectorConstruction::ConstructPatient() +{ +#ifdef G4VERBOSE + G4cout << "NestedParamDicomDetectorConstruction::ConstructPatient " << G4endl; +#endif + + //----- Replication of Water Phantom Volume. + //--- Y Slice + G4String yRepName("RepY"); + G4VSolid* solYRep = + new G4Box(yRepName,nVoxelX*voxelHalfDimX,voxelHalfDimY,nVoxelZ*voxelHalfDimZ); + G4LogicalVolume* logYRep = + new G4LogicalVolume(solYRep,air,yRepName); + new G4PVReplica(yRepName,logYRep,container_logic,kYAxis,nVoxelY,voxelHalfDimY*2.); + + //--- X Slice + G4String xRepName("RepX"); + G4VSolid* solXRep = + new G4Box(xRepName,voxelHalfDimX,voxelHalfDimY,nVoxelZ*voxelHalfDimZ); + G4LogicalVolume* logXRep = + new G4LogicalVolume(solXRep,air,xRepName); + new G4PVReplica(xRepName,logXRep,logYRep,kXAxis,nVoxelX,voxelHalfDimX*2.); + + //----- Voxel solid and logical volumes + //--- Z Slice + G4VSolid* solVoxel = + new G4Box("Patient",voxelHalfDimX,voxelHalfDimY,voxelHalfDimZ); + G4LogicalVolume* logicVoxel = new G4LogicalVolume(solVoxel,air,"Patient"); + + // + // Parameterisation for transformation of voxels. + // (voxel size is fixed in this example. + // e.g. nested parameterisation handles material and transfomation of voxels.) + G4ThreeVector voxelSize(voxelHalfDimX,voxelHalfDimY,voxelHalfDimZ); + DicomNestedPhantomParameterisation* param + = new DicomNestedPhantomParameterisation(voxelSize,fMaterials); + + new G4PVParameterised("Patient", // their name + logicVoxel, // their logical volume + logXRep, // Mother logical volume + kXAxis, // Are placed along this axis + // kUndefined, // Are placed along this axis + nVoxelZ, // Number of cells + param); // Parameterisation. + + param->SetMaterialIndices( fMateIDs ); + param->SetNoVoxel( nVoxelX, nVoxelY, nVoxelZ ); + +} diff --git a/examples/extended/medical/DICOM/src/RegularDicomDetectorConstruction.cc b/examples/extended/medical/DICOM/src/RegularDicomDetectorConstruction.cc new file mode 100644 index 0000000000..4b75d03816 --- /dev/null +++ b/examples/extended/medical/DICOM/src/RegularDicomDetectorConstruction.cc @@ -0,0 +1,98 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// History: +// Pedro Arce +// +//******************************************************* + +#include "globals.hh" + +#include "G4Box.hh" +#include "G4LogicalVolume.hh" +#include "G4VPhysicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4PVParameterised.hh" +#include "G4Material.hh" +#include "G4Element.hh" +#include "G4VisAttributes.hh" +#include "G4Colour.hh" +#include "G4ios.hh" + +#include "RegularDicomDetectorConstruction.hh" +#include "DicomPhantomParameterisationColour.hh" + +RegularDicomDetectorConstruction::RegularDicomDetectorConstruction() : DicomDetectorConstruction() +{ +} + +RegularDicomDetectorConstruction::~RegularDicomDetectorConstruction() +{ +} + +//------------------------------------------------------------- +void RegularDicomDetectorConstruction::ConstructPatient() +{ +#ifdef G4VERBOSE + G4cout << "RegularDicomDetectorConstruction::ConstructPatient " << G4endl; +#endif + + //----- Create parameterisation + DicomPhantomParameterisationColour* param = new DicomPhantomParameterisationColour(); + + //----- Set voxel dimensions + param->SetVoxelDimensions( voxelHalfDimX, voxelHalfDimY, voxelHalfDimZ ); + + //----- Set number of voxels + param->SetNoVoxel( nVoxelX, nVoxelY, nVoxelZ ); + + //----- Set list of materials + param->SetMaterials( fMaterials ); + + //----- Set list of material indices: for each voxel it is a number that correspond to the index of its material in the vector of materials defined above + param->SetMaterialIndices( fMateIDs ); + + //----- Define voxel logical volume + G4Box* voxel_solid = new G4Box( "Voxel", voxelHalfDimX, voxelHalfDimY, voxelHalfDimZ); + G4LogicalVolume* voxel_logic = new G4LogicalVolume(voxel_solid,fMaterials[0],"VoxelLogical",0,0,0); // material is not relevant, it will be changed by the ComputeMaterial method of the parameterisation + + //--- Assign the container volume of the parameterisation + param->BuildContainerSolid(container_phys); + + //--- Assure yourself that the voxels are completely filling the container volume + param->CheckVoxelsFillContainer( container_solid->GetXHalfLength(), + container_solid->GetYHalfLength(), + container_solid->GetZHalfLength() ); + + + //----- The G4PVParameterised object that uses the created parameterisation should be placed in the container logical volume + G4PVParameterised * patient_phys = new G4PVParameterised("Patient",voxel_logic,container_logic, + kXAxis, nVoxelX*nVoxelY*nVoxelZ, param); + // if axis is set as kUndefined instead of kXAxis, GEANT4 will do an smart voxel optimisation (not needed if G4RegularNavigation is used) + + //----- Set this physical volume as having a regular structure of type 1, so that G4RegularNavigation is used + patient_phys->SetRegularStructureId(1); // if not set, G4VoxelNavigation will be used instead +} + diff --git a/examples/extended/medical/DICOM/vis.mac b/examples/extended/medical/DICOM/vis.mac index 26c2fe0e9d..6dfdb6628e 100644 --- a/examples/extended/medical/DICOM/vis.mac +++ b/examples/extended/medical/DICOM/vis.mac @@ -1,10 +1,12 @@ -/control/verbose 1 -/run/verbose 1 +/control/verbose 2 +/run/verbose 2 #visualisation /vis/scene/create /vis/open OGLIX -/vis/viewer/zoom 3 -/vis/viewer/set/viewpointThetaPhi 90 0 -#/vis/viewer/update -#beamOn -/run/beamOn 3 +/vis/viewer/update +/vis/viewer/zoom 5 +/tracking/storeTrajectory 1 +/vis/scene/endOfEventAction accumulate +/tracking/verbose 1 +/run/beamOn 10 + diff --git a/examples/extended/medical/GammaTherapy/GammaTherapy.out b/examples/extended/medical/GammaTherapy/GammaTherapy.out index d60c2f3940..7179e237b6 100644 --- a/examples/extended/medical/GammaTherapy/GammaTherapy.out +++ b/examples/extended/medical/GammaTherapy/GammaTherapy.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,11 +9,11 @@ ***** Table : Nb of materials = 6 ***** - Material: G4_Be density: 1.848 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 35.276 cm + Material: G4_Be density: 1.848 g/cm3 RadL: 35.276 cm Imean: 63.700 eV ---> Element: Be (Be) Z = 4.0 N = 9.0 A = 9.01 g/mole ---> Isotope: Be Z = 4 N = 9 A = 9.01 g/mole abundance: 100.00 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_W density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm + Material: G4_W density: 19.300 g/cm3 RadL: 3.504 mm Imean: 727.000 eV ---> Element: W (W) Z = 74.0 N = 183.9 A = 183.84 g/mole ---> Isotope: W Z = 74 N = 180 A = 179.95 g/mole abundance: 0.12 % ---> Isotope: W Z = 74 N = 182 A = 181.95 g/mole abundance: 26.50 % @@ -21,12 +21,12 @@ ---> Isotope: W Z = 74 N = 184 A = 183.95 g/mole abundance: 30.64 % ---> Isotope: W Z = 74 N = 186 A = 185.95 g/mole abundance: 28.43 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_He density: 0.166 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.671 km + Material: G4_He density: 0.166 mg/cm3 RadL: 5.671 km Imean: 41.800 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: He (He) Z = 2.0 N = 4.0 A = 4.00 g/mole ---> Isotope: He Z = 2 N = 3 A = 3.02 g/mole abundance: 0.00 % ---> Isotope: He Z = 2 N = 4 A = 4.00 g/mole abundance: 100.00 % ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: G4_WATER H_2O density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.083 cm + Material: G4_WATER H_2O density: 1.000 g/cm3 RadL: 36.083 cm Imean: 75.000 eV ---> Element: H (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ---> Isotope: H Z = 1 N = 1 A = 1.01 g/mole abundance: 99.99 % ---> Isotope: H Z = 1 N = 2 A = 2.01 g/mole abundance: 0.01 % ElmMassFraction: 11.19 % ElmAbundance 66.67 % @@ -35,7 +35,7 @@ ---> Isotope: O Z = 8 N = 17 A = 17.00 g/mole abundance: 0.04 % ---> Isotope: O Z = 8 N = 18 A = 18.00 g/mole abundance: 0.20 % ElmMassFraction: 88.81 % ElmAbundance 33.33 % - Material: G4_AIR density: 1.205 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 303.921 m + Material: G4_AIR density: 1.205 mg/cm3 RadL: 303.921 m Imean: 85.700 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: C (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ---> Isotope: C Z = 6 N = 12 A = 12.00 g/mole abundance: 98.93 % ---> Isotope: C Z = 6 N = 13 A = 13.00 g/mole abundance: 1.07 % ElmMassFraction: 0.01 % ElmAbundance 0.02 % @@ -51,7 +51,7 @@ ---> Isotope: Ar Z = 18 N = 38 A = 37.96 g/mole abundance: 0.06 % ---> Isotope: Ar Z = 18 N = 40 A = 39.96 g/mole abundance: 99.60 % ElmMassFraction: 1.28 % ElmAbundance 0.47 % - Material: G4_MYLAR density: 1.400 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 28.536 cm + Material: G4_MYLAR density: 1.400 g/cm3 RadL: 28.536 cm Imean: 78.700 eV ---> Element: H (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ---> Isotope: H Z = 1 N = 1 A = 1.01 g/mole abundance: 99.99 % ---> Isotope: H Z = 1 N = 2 A = 2.01 g/mole abundance: 0.01 % ElmMassFraction: 4.20 % ElmAbundance 36.36 % @@ -72,26 +72,26 @@ UI interface is started /event/verbose 0 /testem/verbose 0 # -/testem/phys/setCuts 0.1 mm +/testem/phys/setCuts 0.1 mm # -/testem/phys/addPhysics emstandard +/testem/phys/addPhysics emstandard ### PhysicsList Add Physics emBuilderIsRegisted= 0 PhysicsList::AddPhysicsList -#/testem/phys/addPhysics emstandard_opt2 -#/testem/phys/addPhysics penelope -#/testem/phys/addPhysics livermore -#/testem/phys/addPhysics step_limit +#/testem/phys/addPhysics emstandard_opt2 +#/testem/phys/addPhysics penelope +#/testem/phys/addPhysics livermore +#/testem/phys/addPhysics step_limit # -/testem/target1Material G4_Be +/testem/target1Material G4_Be New target1 material G4_Be -/testem/target2Material G4_W +/testem/target2Material G4_W New target2 material G4_W -/testem/target1Z 9 mm -/testem/target2Z 6 mm +/testem/target1Z 9 mm +/testem/target2Z 6 mm # -#/testem/histoName be_w_st.paw +#/testem/histoName be_w_st.paw # -#/testem/stepMax 1.0 mm +#/testem/stepMax 1.0 mm # /gun/particle e- /gun/energy 50.0 MeV @@ -177,22 +177,22 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10000 - User=271.56s Real=271.59s Sys=0.01s + User=282.86s Real=282.89s Sys=0.01s RunAction: End of run actions are started Histo: End of run actions are started ======================================================== Number of events 10000 -Average number of e- 12.08 -Average number of gamma 21.08 -Average number of e+ 0.7662 +Average number of e- 12.17 +Average number of gamma 20.94 +Average number of e+ 0.751 Average number of neutrons 0 -Average number of steps in absorber 31.42 -Average number of e- steps in target 18.73 -Average number of g produced in the target 20.27 -Average number of e- produced in the target 7.184 -Average number of g produced in the phantom 0.5095 -Average number of e- produced in the phantom 2.731 -Total gamma fluence in front of phantom 8.556 MeV +Average number of steps in absorber 32.41 +Average number of e- steps in target 18.72 +Average number of g produced in the target 20.1 +Average number of e- produced in the target 7.12 +Average number of g produced in the phantom 0.5335 +Average number of e- produced in the phantom 2.801 +Total gamma fluence in front of phantom 8.887 MeV ======================================================== diff --git a/examples/extended/medical/GammaTherapy/History b/examples/extended/medical/GammaTherapy/History index ce6e559d8f..4844f67cd5 100644 --- a/examples/extended/medical/GammaTherapy/History +++ b/examples/extended/medical/GammaTherapy/History @@ -1,4 +1,4 @@ -$Id: History,v 1.24 2007/05/25 09:59:14 vnivanch Exp $ +$Id: History,v 1.25 2007/07/04 11:14:33 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,9 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +04-07-07 V.Ivant (gtherapy-V09-00-00) +- Provide a possibility to change cuts between runs + 25-05-07 V.Ivant (gtherapy-V08-03-02) - Fixed singleton GetPointer method diff --git a/examples/extended/medical/GammaTherapy/include/EventActionMessenger.hh b/examples/extended/medical/GammaTherapy/include/EventActionMessenger.hh index 9007cea4f6..8f08ac14c0 100644 --- a/examples/extended/medical/GammaTherapy/include/EventActionMessenger.hh +++ b/examples/extended/medical/GammaTherapy/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.2 2006/06/29 17:25:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/include/G4StepLimiterBuilder.hh b/examples/extended/medical/GammaTherapy/include/G4StepLimiterBuilder.hh index adc2611e43..88622dfee8 100644 --- a/examples/extended/medical/GammaTherapy/include/G4StepLimiterBuilder.hh +++ b/examples/extended/medical/GammaTherapy/include/G4StepLimiterBuilder.hh @@ -25,7 +25,7 @@ // // // $Id: G4StepLimiterBuilder.hh,v 1.2 2006/06/29 17:26:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/include/G4StepLimiterMessenger.hh b/examples/extended/medical/GammaTherapy/include/G4StepLimiterMessenger.hh index 77a708eacd..701f308f93 100644 --- a/examples/extended/medical/GammaTherapy/include/G4StepLimiterMessenger.hh +++ b/examples/extended/medical/GammaTherapy/include/G4StepLimiterMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4StepLimiterMessenger.hh,v 1.2 2006/06/29 17:26:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/include/G4StepLimiterPerRegion.hh b/examples/extended/medical/GammaTherapy/include/G4StepLimiterPerRegion.hh index 84fbc4a354..c06189f959 100644 --- a/examples/extended/medical/GammaTherapy/include/G4StepLimiterPerRegion.hh +++ b/examples/extended/medical/GammaTherapy/include/G4StepLimiterPerRegion.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4StepLimiterPerRegion.hh,v 1.4 2007/05/16 16:27:53 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/include/ParticlesBuilder.hh b/examples/extended/medical/GammaTherapy/include/ParticlesBuilder.hh index 2a8d100bd0..fd8c6caa75 100644 --- a/examples/extended/medical/GammaTherapy/include/ParticlesBuilder.hh +++ b/examples/extended/medical/GammaTherapy/include/ParticlesBuilder.hh @@ -25,7 +25,7 @@ // // // $Id: ParticlesBuilder.hh,v 1.2 2006/06/29 17:26:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/include/PhysListEmLivermore.hh b/examples/extended/medical/GammaTherapy/include/PhysListEmLivermore.hh index 23d9583a35..872a7d7ae9 100644 --- a/examples/extended/medical/GammaTherapy/include/PhysListEmLivermore.hh +++ b/examples/extended/medical/GammaTherapy/include/PhysListEmLivermore.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.hh,v 1.1 2006/11/16 14:42:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/include/PhysListEmPenelope.hh b/examples/extended/medical/GammaTherapy/include/PhysListEmPenelope.hh index 957841f993..a27e370f8d 100644 --- a/examples/extended/medical/GammaTherapy/include/PhysListEmPenelope.hh +++ b/examples/extended/medical/GammaTherapy/include/PhysListEmPenelope.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.hh,v 1.3 2006/11/16 14:42:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/include/PhysicsList.hh b/examples/extended/medical/GammaTherapy/include/PhysicsList.hh index 097966d3ba..9a4a61978d 100644 --- a/examples/extended/medical/GammaTherapy/include/PhysicsList.hh +++ b/examples/extended/medical/GammaTherapy/include/PhysicsList.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsList.hh,v 1.6 2006/11/16 14:42:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Modified: // diff --git a/examples/extended/medical/GammaTherapy/include/PhysicsListMessenger.hh b/examples/extended/medical/GammaTherapy/include/PhysicsListMessenger.hh index 3a60f754b1..7c812a1184 100644 --- a/examples/extended/medical/GammaTherapy/include/PhysicsListMessenger.hh +++ b/examples/extended/medical/GammaTherapy/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.3 2006/06/29 17:26:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/src/EventActionMessenger.cc b/examples/extended/medical/GammaTherapy/src/EventActionMessenger.cc index 088baadbae..d339a2c3c6 100644 --- a/examples/extended/medical/GammaTherapy/src/EventActionMessenger.cc +++ b/examples/extended/medical/GammaTherapy/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.2 2006/06/29 17:27:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/src/G4StepLimiterBuilder.cc b/examples/extended/medical/GammaTherapy/src/G4StepLimiterBuilder.cc index d0bd965274..011727fbd8 100644 --- a/examples/extended/medical/GammaTherapy/src/G4StepLimiterBuilder.cc +++ b/examples/extended/medical/GammaTherapy/src/G4StepLimiterBuilder.cc @@ -25,7 +25,7 @@ // // // $Id: G4StepLimiterBuilder.cc,v 1.3 2006/06/29 17:27:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/examples/extended/medical/GammaTherapy/src/G4StepLimiterMessenger.cc b/examples/extended/medical/GammaTherapy/src/G4StepLimiterMessenger.cc index 6166f6e042..e644b9643b 100644 --- a/examples/extended/medical/GammaTherapy/src/G4StepLimiterMessenger.cc +++ b/examples/extended/medical/GammaTherapy/src/G4StepLimiterMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4StepLimiterMessenger.cc,v 1.2 2006/06/29 17:27:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/src/G4StepLimiterPerRegion.cc b/examples/extended/medical/GammaTherapy/src/G4StepLimiterPerRegion.cc index d7e77a150f..d808092261 100644 --- a/examples/extended/medical/GammaTherapy/src/G4StepLimiterPerRegion.cc +++ b/examples/extended/medical/GammaTherapy/src/G4StepLimiterPerRegion.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4StepLimiterPerRegion.cc,v 1.4 2007/05/16 16:27:53 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/src/ParticlesBuilder.cc b/examples/extended/medical/GammaTherapy/src/ParticlesBuilder.cc index f0886ac40d..1a3ebbdb87 100644 --- a/examples/extended/medical/GammaTherapy/src/ParticlesBuilder.cc +++ b/examples/extended/medical/GammaTherapy/src/ParticlesBuilder.cc @@ -25,7 +25,7 @@ // // // $Id: ParticlesBuilder.cc,v 1.3 2006/06/29 17:27:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/examples/extended/medical/GammaTherapy/src/PhysListEmLivermore.cc b/examples/extended/medical/GammaTherapy/src/PhysListEmLivermore.cc index 8ae68cd07a..4fbc46dfef 100644 --- a/examples/extended/medical/GammaTherapy/src/PhysListEmLivermore.cc +++ b/examples/extended/medical/GammaTherapy/src/PhysListEmLivermore.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmLivermore.cc,v 1.1 2006/11/16 14:42:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/src/PhysListEmPenelope.cc b/examples/extended/medical/GammaTherapy/src/PhysListEmPenelope.cc index 85b802e123..62bc0a1d40 100644 --- a/examples/extended/medical/GammaTherapy/src/PhysListEmPenelope.cc +++ b/examples/extended/medical/GammaTherapy/src/PhysListEmPenelope.cc @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPenelope.cc,v 1.3 2006/11/16 14:42:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/src/PhysicsList.cc b/examples/extended/medical/GammaTherapy/src/PhysicsList.cc index 4ab306f5ba..5c560179e2 100644 --- a/examples/extended/medical/GammaTherapy/src/PhysicsList.cc +++ b/examples/extended/medical/GammaTherapy/src/PhysicsList.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysicsList.cc,v 1.14 2007/05/16 16:27:53 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.cc,v 1.15 2007/07/04 11:14:33 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -228,6 +228,7 @@ void PhysicsList::SetVerbose(G4int val) void PhysicsList::SetCutForGamma(G4double cut) { cutForGamma = cut; + SetParticleCuts(cutForGamma, G4Gamma::Gamma()); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -235,6 +236,7 @@ void PhysicsList::SetCutForGamma(G4double cut) void PhysicsList::SetCutForElectron(G4double cut) { cutForElectron = cut; + SetParticleCuts(cutForElectron, G4Electron::Electron()); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -242,6 +244,7 @@ void PhysicsList::SetCutForElectron(G4double cut) void PhysicsList::SetCutForPositron(G4double cut) { cutForPositron = cut; + SetParticleCuts(cutForPositron, G4Positron::Positron()); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/GammaTherapy/src/PhysicsListMessenger.cc b/examples/extended/medical/GammaTherapy/src/PhysicsListMessenger.cc index ca9d331878..974742a375 100644 --- a/examples/extended/medical/GammaTherapy/src/PhysicsListMessenger.cc +++ b/examples/extended/medical/GammaTherapy/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.3 2006/06/29 17:28:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/History b/examples/extended/medical/fanoCavity/History index 01f439b0e1..048d541bc6 100644 --- a/examples/extended/medical/fanoCavity/History +++ b/examples/extended/medical/fanoCavity/History @@ -1,4 +1,4 @@ -$Id: History,v 1.10 2007/06/12 12:04:15 maire Exp $ +$Id: History,v 1.19 2007/11/13 11:31:53 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,39 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +12-11-07 mma (fano-V09-00-08) +- HistoManager/HistoMessenger : print selected histos on ascii file + +05-11-07 mma(fano-V09-00-07) +- syntax correction in DetectorMessenger.cc + +29-10-07 mma(fano-V09-00-06) +- Error on energy deposit : per e- track instead of per incident gamma + +29-10-07 mma(fano-V09-00-05) +- EventAction : histogram of energy deposit in cavity per incident gamma +- RunAction : compute error on energy deposit and mean kinetic energy + +08-10-07 mma(fano-V09-00-04) +- DetectorConstruction : wallRadius automatically recomputed + +02-10-07 mma(fano-V09-00-03) +- PhysicsList : implement G4CoulombScattering process (option) + +26-09-07 mma(fano-V09-00-02) +- MyKleinNishina.cc : do not cancel Compton crossSection in cavity +- PhysicsList.cc : physics tables, 100 bins per decade (emOptions) + +03-09-07 mma +- DetectorConstruction.cc : add materials graphite and aluminium + +05-07-07 mma (fano-V09-00-01) +- fano-00 retaged in fano-01 + +27-06-07 mma (fano-V09-00-00) +- emOptions : fUseDistanceToBoundary +- cosmetic in fanoCavity.cc + 12-06-07 mma (fano-V08-03-01) - emOptions : SetLinearLossLimit(1.e-6); SetSkin(2.); diff --git a/examples/extended/medical/fanoCavity/README b/examples/extended/medical/fanoCavity/README index cee7dcde56..342105d766 100644 --- a/examples/extended/medical/fanoCavity/README +++ b/examples/extended/medical/fanoCavity/README @@ -1,4 +1,4 @@ -$Id: README,v 1.9 2007/06/12 12:04:15 maire Exp $ +$Id: README,v 1.13 2007/11/13 11:31:54 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -101,11 +101,8 @@ $Id: README,v 1.9 2007/06/12 12:04:15 maire Exp $ - Compton scattering : as explained above, the final state is modified in MyKleinNishinaCompton class. - The Compton cross section is set to zero in cavity, to force the charged - particle fluence conservation. - In order to make the program more efficient, one can increase the Compton - cross section in wall via the function SetCSFactor(factor) and its + cross section via the function SetCSFactor(factor) and its associated UI command. Default is factor=1000. - Bremsstrahlung : Fano conditions imply no energy transfer via @@ -127,7 +124,9 @@ $Id: README,v 1.9 2007/06/12 12:04:15 maire Exp $ - Multiple scattering : is switched in single Coulomb scattering mode near boundaries. This is selected via EM options in PhysicsList, and can be - controled with UI commands. + controled with UI commands. + + - All PhysicsTables are built with 100 bins per decade. 5- HISTOGRAMS @@ -143,6 +142,7 @@ $Id: README,v 1.9 2007/06/12 12:04:15 maire Exp $ 8 : track segment of e+- in cavity 9 : step size of e+- in wall 10 : step size of e+- in cavity + 11 : energy deposit in cavity per track The histograms are managed by the HistoManager class and its Messenger. The histos can be individually activated with the command : @@ -154,7 +154,11 @@ $Id: README,v 1.9 2007/06/12 12:04:15 maire Exp $ It is possible to choose the format of the histogram file (hbook, root, XML) with the command /testem/histo/setFileType (hbook by default) - + + It is also possible to print selected histograms on an ascii file: + /testem/histo/printHisto id + All selected histos will be written on a file name.ascii (default fanocavity) + Note that, by default, histograms are disabled. To activate them, uncomment the flag G4ANALYSIS_USE in GNUmakefile. diff --git a/examples/extended/medical/fanoCavity/basic.mac b/examples/extended/medical/fanoCavity/basic.mac index d69eddbc0e..7ceae6777d 100644 --- a/examples/extended/medical/fanoCavity/basic.mac +++ b/examples/extended/medical/fanoCavity/basic.mac @@ -1,4 +1,4 @@ -# $Id: basic.mac,v 1.7 2007/03/19 13:08:41 maire Exp $ +# $Id: basic.mac,v 1.11 2007/10/29 12:36:26 maire Exp $ # /control/verbose 2 /run/verbose 2 @@ -11,6 +11,6 @@ /testem/histo/setFileName nothing /testem/histo/setHisto 9 100 0 1 mm #step size in wall # -/testem/event/printModulo 20000 +/testem/event/printModulo 10000 # -###/run/beamOn 200000 +/run/beamOn 200000 diff --git a/examples/extended/medical/fanoCavity/fanoCavity.cc b/examples/extended/medical/fanoCavity/fanoCavity.cc index 7c2115fe5e..8ef198c26e 100644 --- a/examples/extended/medical/fanoCavity/fanoCavity.cc +++ b/examples/extended/medical/fanoCavity/fanoCavity.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: fanoCavity.cc,v 1.3 2007/01/30 16:02:10 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: fanoCavity.cc,v 1.6 2007/10/29 17:09:53 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -71,20 +71,14 @@ int main(int argc,char** argv) { runManager->SetUserInitialization(det = new DetectorConstruction); runManager->SetUserInitialization(phys = new PhysicsList(det)); runManager->SetUserAction(kin = new PrimaryGeneratorAction(det)); - -#ifdef G4VIS_USE - //visualization manager - G4VisManager* visManager = new G4VisExecutive; - visManager->Initialize(); -#endif //set user action classes HistoManager* histo = new HistoManager(); RunAction* run = new RunAction(det,kin,histo); EventAction* event = new EventAction(run,histo); - SteppingAction* step = new SteppingAction(det,run,histo); + TrackingAction* track = new TrackingAction(run,histo); + SteppingAction* step = new SteppingAction(det,run,event,track,histo); StackingAction* stack = new StackingAction(det,run,histo); - TrackingAction* track = new TrackingAction(step); runManager->SetUserAction(run); runManager->SetUserAction(event); @@ -95,29 +89,37 @@ int main(int argc,char** argv) { //get the pointer to the User Interface manager G4UImanager* UI = G4UImanager::GetUIpointer(); - if (argc==1) // Define UI terminal for interactive mode - { - G4UIsession* session = 0; -#ifdef G4UI_USE_TCSH - session = new G4UIterminal(new G4UItcsh); -#else - session = new G4UIterminal(); -#endif - session->SessionStart(); - delete session; - } - else // Batch mode - { + if (argc!=1) // batch mode + { G4String command = "/control/execute "; G4String fileName = argv[1]; UI->ApplyCommand(command+fileName); } + + else // interactive mode :define visualization and UI terminal + { +#ifdef G4VIS_USE + G4VisManager* visManager = new G4VisExecutive; + visManager->Initialize(); +#endif + + G4UIsession * session = 0; +#ifdef G4UI_USE_TCSH + session = new G4UIterminal(new G4UItcsh); +#else + session = new G4UIterminal(); +#endif + session->SessionStart(); + delete session; + +#ifdef G4VIS_USE + delete visManager; +#endif + } + //job termination -#ifdef G4VIS_USE - delete visManager; -#endif - + // delete histo; delete runManager; diff --git a/examples/extended/medical/fanoCavity/fanoCavity.in b/examples/extended/medical/fanoCavity/fanoCavity.in index 8ad6bfdab2..482538776e 100644 --- a/examples/extended/medical/fanoCavity/fanoCavity.in +++ b/examples/extended/medical/fanoCavity/fanoCavity.in @@ -1,4 +1,4 @@ -# $Id: fanoCavity.in,v 1.3 2007/02/06 11:47:39 maire Exp $ +# $Id: fanoCavity.in,v 1.5 2007/10/29 12:36:26 maire Exp $ # /control/verbose 2 /run/verbose 2 diff --git a/examples/extended/medical/fanoCavity/fanoCavity.out b/examples/extended/medical/fanoCavity/fanoCavity.out index 3b89a6ce34..1c7b6e347e 100644 --- a/examples/extended/medical/fanoCavity/fanoCavity.out +++ b/examples/extended/medical/fanoCavity/fanoCavity.out @@ -1,56 +1,38 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 ************************************************************* -***** Table : Nb of materials = 3 ***** +***** Table : Nb of materials = 7 ***** - Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm + Material: Water density: 1.000 g/cm3 RadL: 36.092 cm Imean: 75.000 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: Water_vapor density: 1.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 360.925 m + Material: Water_vapor density: 1.000 mg/cm3 RadL: 360.925 m Imean: 75.000 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % + Material: Graphite density: 2.265 g/cm3 RadL: 18.850 cm Imean: 78.000 eV + ---> Element: Graphite ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % -Visualization Manager instantiating... -Visualization Manager initialising... -Registering graphics systems... + Material: Graphite_gas density: 2.265 mg/cm3 RadL: 188.496 m Imean: 78.000 eV temperature: 273.15 K pressure: 1.00 atm + ---> Element: Graphite_gas ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % -You have successfully registered the following graphics systems. -Current available graphics systems are: - ASCIITree (ATree) - DAWNFILE (DAWNFILE) - G4HepRep (HepRepXML) - G4HepRepFile (HepRepFile) - RayTracer (RayTracer) - VRML1FILE (VRML1FILE) - VRML2FILE (VRML2FILE) + Material: Aluminium density: 2.700 g/cm3 RadL: 8.893 cm Imean: 166.400 eV + ---> Element: Aluminium ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % -Registering model factories... + Material: Aluminium_gas density: 2.700 mg/cm3 RadL: 88.925 m Imean: 166.400 eV temperature: 273.15 K pressure: 1.00 atm + ---> Element: Aluminium_gas ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % -You have successfully registered the following model factories. -Registered model factories: - generic - drawByCharge - drawByParticleID - drawByOriginVolume - drawByAttribute - -Registered filter factories: - chargeFilter - particleFilter - originVolumeFilter - attributeFilter /run/verbose 2 # @@ -87,7 +69,7 @@ The cut in energy is set1.79769e+305GeV compt: Total cross sections has a good parametrisation from 10 KeV to (100/Z) GeV Sampling according myKlein-Nishina model tables are built for gamma - Lambda tables from 100 eV to 100 GeV in 90 bins. + Lambda tables from 100 eV to 10 GeV in 800 bins. phot: Total cross sections from Sandia parametrisation. Sampling according PhotoElectric model @@ -95,42 +77,42 @@ phot: Total cross sections from Sandia parametrisation. conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV for all Z; sampling secondary e+e- according Bethe-Heitler model tables are built for gamma - Lambda tables from 1.022 MeV to 100 GeV in 100 bins. + Lambda tables from 1.022 MeV to 10 GeV in 800 bins. msc: Model variant of multiple scattering for e- - Lambda tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from 100 eV to 10 GeV in 800 bins. LateralDisplacementFlag= 1 Skin= 2 Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 2 eIoni: tables are built for e- - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 10 GeV in 800 bins. + Lambda tables from threshold to 10 GeV in 800 bins. Delta cross sections and sampling from myMollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1 - CSDA range table up to 1 GeV in 70 bins. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 10 GeV in 800 bins. eIoni: tables are built for e+ - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 10 GeV in 800 bins. + Lambda tables from threshold to 10 GeV in 800 bins. Delta cross sections and sampling from myMollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1 - CSDA range table up to 1 GeV in 70 bins. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 10 GeV in 800 bins. msc: Model variant of multiple scattering for proton - Lambda tables from 100 eV to 100 TeV in 120 bins. + Lambda tables from 100 eV to 10 GeV in 800 bins. LateralDisplacementFlag= 1 Skin= 2 Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 2 hIoni: tables are built for proton - dE/dx and range tables from 100 eV to 100 TeV in 120 bins. - Lambda tables from threshold to 100 TeV in 120 bins. + dE/dx and range tables from 100 eV to 10 GeV in 800 bins. + Lambda tables from threshold to 10 GeV in 800 bins. Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1 - CSDA range table up to 1 GeV in 70 bins. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 10 GeV in 800 bins. Region -- appears in world volume Root logical volume(s) : Chamber @@ -169,15 +151,15 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics ---------------------------------------- Start Run processing. - ---> NbofEvents= 1000 NbOfelectr= 70984 Tkin= 588.477 keV (0.000 %) NbOfelec in cav= 4728 Dose/EnFluence= 27.992 cm2/g (0.000 %) + ---> NbofEvents= 1000 NbOfelectr= 70377 Tkin= 587.674 keV (0.000 %) NbOfelec in cav= 4706 Dose/EnFluence= 27.808 cm2/g (0.000 %) - ---> NbofEvents= 2000 NbOfelectr= 141575 Tkin= 588.989 keV (0.087 %) NbOfelec in cav= 9601 Dose/EnFluence= 29.795 cm2/g (6.441 %) + ---> NbofEvents= 2000 NbOfelectr= 140843 Tkin= 588.018 keV (0.059 %) NbOfelec in cav= 9478 Dose/EnFluence= 29.067 cm2/g (4.526 %) - ---> NbofEvents= 3000 NbOfelectr= 212837 Tkin= 588.952 keV (-0.006 %) NbOfelec in cav= 14224 Dose/EnFluence= 29.087 cm2/g (-2.375 %) + ---> NbofEvents= 3000 NbOfelectr= 210899 Tkin= 587.747 keV (-0.046 %) NbOfelec in cav= 14266 Dose/EnFluence= 29.580 cm2/g (1.764 %) Run terminated. Run Summary Number of events processed : 4000 - User=665.47s Real=665.52s Sys=0s + User=747.74s Real=747.87s Sys=0s ======================== run summary ====================== @@ -187,35 +169,33 @@ Run Summary ============================================================ - Process calls frequency ---> compt= 283779 Transportation= 76764 msc= 1330017 eIoni= 1882531 + Process calls frequency ---> compt= 281392 Transportation= 77840 msc= 1338697 eIoni= 1868423 Gamma crossSections in wall material : compt= 63.447 cm2/g --> total= 63.447 cm2/g - Mean energy of secondary e- = 588.9356 keV (--> range in wall material = 2.2149 mm ) - Mass_energy_transfer coef: 29.8930 cm2/g + Mean energy of secondary e- = 587.7124 keV +- 0.1031 % (--> range in wall material = 2.2085 mm ) + Mass_energy_transfer coef: 29.8309 cm2/g - StoppingPower in wall = 1.9774 MeV*cm2/g - in cavity = 1.9774 MeV*cm2/g + StoppingPower in wall = 1.9727 MeV*cm2/g + in cavity = 1.9727 MeV*cm2/g Charged particle flow in cavity : - Enter --> nbParticles = 18964 Energy = 9.4797 GeV - Exit --> nbParticles = 18928 Energy = 9.4666 GeV + Enter --> nbParticles = 19202 Energy = 9.6622 GeV + Exit --> nbParticles = 19209 Energy = 9.6676 GeV - Total edep in cavity = 13.1454 MeV Total charged trackLength = 52.9837 m (mean value = 2.7939 mm ) - Total dose in cavity = 20.9215 MeV/mg - Dose/EnergyFluence = 29.5771 cm2/g + Total edep in cavity = 13.3059 MeV +- 2.7263 % Total charged trackLength = 53.4346 m (mean value = 2.7828 mm ) + Total dose in cavity = 21.1771 MeV/mg + Dose/EnergyFluence = 29.9384 cm2/g - (Dose/EnergyFluence)/Mass_energy_transfer = 0.9894 + (Dose/EnergyFluence)/Mass_energy_transfer = 1.00360 +- 0.02840 - StepSize of ch. tracks in wall = 149.5427 um +- 127.2593 um (nbSteps/track = 11.2424) - StepSize of ch. tracks in cavity = 579.6401 um +- 656.8654 um (nbSteps/track = 4.8201) + StepSize of ch. tracks in wall = 147.1601 um +- 130.7912 um (nbSteps/track = 11.3215) + StepSize of ch. tracks in cavity = 583.3986 um +- 645.6047 um (nbSteps/track = 4.7699) --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 423862883, 1083343246 + Current couple of seeds = 2000128992, 244730984 ---------------------------------------- -Graphics systems deleted. -Visualization Manager deleting... UserDetectorConstruction deleted. UserPhysicsList deleted. UserRunAction deleted. diff --git a/examples/extended/medical/fanoCavity/include/DetectorConstruction.hh b/examples/extended/medical/fanoCavity/include/DetectorConstruction.hh index 0d8bb6a7b6..bdca97c957 100644 --- a/examples/extended/medical/fanoCavity/include/DetectorConstruction.hh +++ b/examples/extended/medical/fanoCavity/include/DetectorConstruction.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: DetectorConstruction.hh,v 1.1 2007/01/19 17:20:26 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: DetectorConstruction.hh,v 1.2 2007/10/08 12:05:02 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -51,7 +51,6 @@ class DetectorConstruction : public G4VUserDetectorConstruction public: void SetWallThickness (G4double); - void SetWallRadius (G4double); void SetWallMaterial (G4String); void SetCavityThickness (G4double); @@ -90,7 +89,6 @@ class DetectorConstruction : public G4VUserDetectorConstruction G4VPhysicalVolume* pCavity; G4double totalThickness; - G4bool defaultRadius; DetectorMessenger* detectorMessenger; diff --git a/examples/extended/medical/fanoCavity/include/DetectorMessenger.hh b/examples/extended/medical/fanoCavity/include/DetectorMessenger.hh index bff775a4d2..4c0ff8ec28 100644 --- a/examples/extended/medical/fanoCavity/include/DetectorMessenger.hh +++ b/examples/extended/medical/fanoCavity/include/DetectorMessenger.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: DetectorMessenger.hh,v 1.1 2007/01/19 17:20:26 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: DetectorMessenger.hh,v 1.2 2007/10/08 12:05:02 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -60,7 +60,6 @@ class DetectorMessenger: public G4UImessenger G4UIdirectory* detDir; G4UIcmdWithAString* wallMater; G4UIcmdWithADoubleAndUnit* wallThick; - G4UIcmdWithADoubleAndUnit* wallRadius; G4UIcmdWithAString* cavMater; G4UIcmdWithADoubleAndUnit* cavThick; G4UIcmdWithADoubleAndUnit* cavRadius; diff --git a/examples/extended/medical/fanoCavity/include/EventAction.hh b/examples/extended/medical/fanoCavity/include/EventAction.hh index 1e7f47b341..8c988fe5ff 100644 --- a/examples/extended/medical/fanoCavity/include/EventAction.hh +++ b/examples/extended/medical/fanoCavity/include/EventAction.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: EventAction.hh,v 1.1 2007/01/19 17:20:26 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: EventAction.hh,v 1.3 2007/10/29 17:09:53 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -50,7 +50,7 @@ class EventAction : public G4UserEventAction public: void BeginOfEventAction(const G4Event*); void EndOfEventAction(const G4Event*); - + void SetDrawFlag(G4String val) {drawFlag = val;}; void SetPrintModulo(G4int val) {printModulo = val;}; diff --git a/examples/extended/medical/fanoCavity/include/EventActionMessenger.hh b/examples/extended/medical/fanoCavity/include/EventActionMessenger.hh index 4b0b89b734..d90b397c2c 100644 --- a/examples/extended/medical/fanoCavity/include/EventActionMessenger.hh +++ b/examples/extended/medical/fanoCavity/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.1 2007/01/19 17:20:26 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/include/HistoManager.hh b/examples/extended/medical/fanoCavity/include/HistoManager.hh index de9466c320..72a04f0bbd 100644 --- a/examples/extended/medical/fanoCavity/include/HistoManager.hh +++ b/examples/extended/medical/fanoCavity/include/HistoManager.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.hh,v 1.2 2007/03/19 13:08:41 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.hh,v 1.4 2007/11/13 11:31:54 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -44,7 +44,7 @@ namespace AIDA { class HistoMessenger; -const G4int MaxHisto = 11; +const G4int MaxHisto = 12; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -64,6 +64,7 @@ class HistoManager void FillHisto(G4int id, G4double e, G4double weight = 1.0); void RemoveHisto (G4int); void Scale (G4int, G4double); + void PrintHisto (G4int); G4bool HistoExist (G4int id) {return exist[id];} G4double GetHistoUnit(G4int id) {return Unit[id];} @@ -85,8 +86,13 @@ class HistoManager G4double Vmax [MaxHisto]; G4double Unit [MaxHisto]; G4double Width[MaxHisto]; + G4bool ascii[MaxHisto]; + G4bool factoryOn; HistoMessenger* histoMessenger; + + private: + void saveAscii(); }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/include/HistoMessenger.hh b/examples/extended/medical/fanoCavity/include/HistoMessenger.hh index d11213f9da..b1728a6c11 100644 --- a/examples/extended/medical/fanoCavity/include/HistoMessenger.hh +++ b/examples/extended/medical/fanoCavity/include/HistoMessenger.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.hh,v 1.1 2007/01/19 17:20:26 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.hh,v 1.2 2007/11/13 11:31:54 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -62,6 +62,7 @@ class HistoMessenger: public G4UImessenger G4UIcmdWithAString* factoryCmd; G4UIcmdWithAString* typeCmd; G4UIcommand* histoCmd; + G4UIcmdWithAnInteger* prhistoCmd; G4UIcmdWithAnInteger* rmhistoCmd; }; diff --git a/examples/extended/medical/fanoCavity/include/MyKleinNishinaCompton.hh b/examples/extended/medical/fanoCavity/include/MyKleinNishinaCompton.hh index f889e63a2f..debb685ec9 100644 --- a/examples/extended/medical/fanoCavity/include/MyKleinNishinaCompton.hh +++ b/examples/extended/medical/fanoCavity/include/MyKleinNishinaCompton.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: MyKleinNishinaCompton.hh,v 1.3 2007/05/23 08:40:21 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/medical/fanoCavity/include/MyMollerBhabhaModel.hh b/examples/extended/medical/fanoCavity/include/MyMollerBhabhaModel.hh index 7839810fe0..39d56b1273 100644 --- a/examples/extended/medical/fanoCavity/include/MyMollerBhabhaModel.hh +++ b/examples/extended/medical/fanoCavity/include/MyMollerBhabhaModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: MyMollerBhabhaModel.hh,v 1.1 2007/01/19 17:20:26 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/medical/fanoCavity/include/PhysicsList.hh b/examples/extended/medical/fanoCavity/include/PhysicsList.hh index 8b08cdfc82..eee5eb2257 100644 --- a/examples/extended/medical/fanoCavity/include/PhysicsList.hh +++ b/examples/extended/medical/fanoCavity/include/PhysicsList.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: PhysicsList.hh,v 1.2 2007/01/30 16:02:10 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.hh,v 1.3 2007/10/02 14:42:51 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -61,12 +61,14 @@ class PhysicsList: public G4VUserPhysicsList void AddStepMax(); void SetComptonCSfactor(G4double); + void SingleCoulombScattering (G4bool); void RegisterBrem (G4bool); private: DetectorConstruction* detector; MyKleinNishinaCompton* comptonModel; - G4bool registerBrem; + G4bool singleScattering; + G4bool registerBrem; PhysicsListMessenger* pMessenger; }; diff --git a/examples/extended/medical/fanoCavity/include/PhysicsListMessenger.hh b/examples/extended/medical/fanoCavity/include/PhysicsListMessenger.hh index 211d3762fb..645da7dcdd 100644 --- a/examples/extended/medical/fanoCavity/include/PhysicsListMessenger.hh +++ b/examples/extended/medical/fanoCavity/include/PhysicsListMessenger.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysicsListMessenger.hh,v 1.1 2007/01/19 17:20:26 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsListMessenger.hh,v 1.2 2007/10/02 14:42:51 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -54,6 +54,7 @@ class PhysicsListMessenger: public G4UImessenger PhysicsList* pPhysicsList; G4UIdirectory* physDir; G4UIcmdWithADouble* csFactor; + G4UIcmdWithABool* singleScat; G4UIcmdWithABool* brem; }; diff --git a/examples/extended/medical/fanoCavity/include/PrimaryGeneratorAction.hh b/examples/extended/medical/fanoCavity/include/PrimaryGeneratorAction.hh index cd87ac2a9d..f7abb302a8 100644 --- a/examples/extended/medical/fanoCavity/include/PrimaryGeneratorAction.hh +++ b/examples/extended/medical/fanoCavity/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.1 2007/01/19 17:20:26 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/include/PrimaryGeneratorMessenger.hh b/examples/extended/medical/fanoCavity/include/PrimaryGeneratorMessenger.hh index 4e5afa31f3..6b61cd2eff 100644 --- a/examples/extended/medical/fanoCavity/include/PrimaryGeneratorMessenger.hh +++ b/examples/extended/medical/fanoCavity/include/PrimaryGeneratorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.hh,v 1.1 2007/01/19 17:20:26 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/include/ProcessesCount.hh b/examples/extended/medical/fanoCavity/include/ProcessesCount.hh index a577a93955..4e363eecdb 100644 --- a/examples/extended/medical/fanoCavity/include/ProcessesCount.hh +++ b/examples/extended/medical/fanoCavity/include/ProcessesCount.hh @@ -25,7 +25,7 @@ // // // $Id: ProcessesCount.hh,v 1.1 2007/01/19 17:20:26 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/include/RunAction.hh b/examples/extended/medical/fanoCavity/include/RunAction.hh index c3330c8a20..fb3a75c7dc 100644 --- a/examples/extended/medical/fanoCavity/include/RunAction.hh +++ b/examples/extended/medical/fanoCavity/include/RunAction.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: RunAction.hh,v 1.2 2007/02/06 11:47:39 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: RunAction.hh,v 1.3 2007/10/29 12:36:26 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -59,12 +59,14 @@ class RunAction : public G4UserRunAction void SurveyConvergence(G4int); - void sumEsecond(G4double e) { Esecondary += e; nbSec++;}; + void sumEsecond(G4double e) { Esecondary += e; Esecondary2 += e*e; + nbSec++;}; void FlowInCavity(G4int k, G4double e) { EnerFlowCavity[k] += e; PartFlowCavity[k]++;}; - void AddEdepCavity(G4double de) { EdepCavity += de;}; + void AddEdepCavity(G4double de) { EdepCavity += de; EdepCavity2 += de*de; + nbEventCavity++;}; void AddTrakCavity(G4double dt) { trkSegmCavity += dt;}; void StepInWall (G4double s) { stepWall += s; stepWall2 += s*s; @@ -78,13 +80,14 @@ class RunAction : public G4UserRunAction ProcessesCount* ProcCounter; HistoManager* histoManager; - G4double Esecondary; + G4double Esecondary, Esecondary2; G4long nbSec; G4long PartFlowCavity[2]; G4double EnerFlowCavity[2]; - G4double EdepCavity; + G4double EdepCavity, EdepCavity2; G4double trkSegmCavity; + G4long nbEventCavity; G4double oldEmean, oldDose; diff --git a/examples/extended/medical/fanoCavity/include/StackingAction.hh b/examples/extended/medical/fanoCavity/include/StackingAction.hh index bb0c665e7e..c8658695c6 100644 --- a/examples/extended/medical/fanoCavity/include/StackingAction.hh +++ b/examples/extended/medical/fanoCavity/include/StackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingAction.hh,v 1.1 2007/01/23 13:34:19 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/include/StackingMessenger.hh b/examples/extended/medical/fanoCavity/include/StackingMessenger.hh index 4744e0dd5f..40b10839fd 100644 --- a/examples/extended/medical/fanoCavity/include/StackingMessenger.hh +++ b/examples/extended/medical/fanoCavity/include/StackingMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingMessenger.hh,v 1.1 2007/01/23 13:34:19 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/include/StepMax.hh b/examples/extended/medical/fanoCavity/include/StepMax.hh index 934d123550..35fd73e170 100644 --- a/examples/extended/medical/fanoCavity/include/StepMax.hh +++ b/examples/extended/medical/fanoCavity/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/include/StepMaxMessenger.hh b/examples/extended/medical/fanoCavity/include/StepMaxMessenger.hh index 24e1404b94..78ad404a1e 100644 --- a/examples/extended/medical/fanoCavity/include/StepMaxMessenger.hh +++ b/examples/extended/medical/fanoCavity/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/include/SteppingAction.hh b/examples/extended/medical/fanoCavity/include/SteppingAction.hh index 8495ef01bc..4e7b50d54a 100644 --- a/examples/extended/medical/fanoCavity/include/SteppingAction.hh +++ b/examples/extended/medical/fanoCavity/include/SteppingAction.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: SteppingAction.hh,v 1.2 2007/03/19 13:08:41 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: SteppingAction.hh,v 1.4 2007/10/29 17:09:53 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -38,6 +38,8 @@ class DetectorConstruction; class RunAction; +class EventAction; +class TrackingAction; class HistoManager; class G4VPhysicalVolume; @@ -47,22 +49,22 @@ class G4VPhysicalVolume; class SteppingAction : public G4UserSteppingAction { public: - SteppingAction(DetectorConstruction*,RunAction*, HistoManager*); + SteppingAction(DetectorConstruction*,RunAction*,EventAction*, + TrackingAction*,HistoManager*); ~SteppingAction(); void UserSteppingAction(const G4Step*); - void TrackCharge (G4bool flag) { trackCharged = flag;} - private: DetectorConstruction* detector; RunAction* runAction; + EventAction* eventAction; + TrackingAction* trackAction; HistoManager* histoManager; G4VPhysicalVolume* wall; G4VPhysicalVolume* cavity; G4bool first; - G4bool trackCharged; G4double trackSegm; G4ThreeVector directionIn; }; diff --git a/examples/extended/medical/fanoCavity/include/SteppingVerbose.hh b/examples/extended/medical/fanoCavity/include/SteppingVerbose.hh index 7682416ee4..b95b787557 100644 --- a/examples/extended/medical/fanoCavity/include/SteppingVerbose.hh +++ b/examples/extended/medical/fanoCavity/include/SteppingVerbose.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.hh,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/include/TrackingAction.hh b/examples/extended/medical/fanoCavity/include/TrackingAction.hh index b01ab6171e..0c8938a426 100644 --- a/examples/extended/medical/fanoCavity/include/TrackingAction.hh +++ b/examples/extended/medical/fanoCavity/include/TrackingAction.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: TrackingAction.hh,v 1.2 2007/01/23 13:34:19 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: TrackingAction.hh,v 1.3 2007/10/29 17:09:53 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -35,21 +35,27 @@ #include "G4UserTrackingAction.hh" #include "globals.hh" -class SteppingAction; +class RunAction; +class HistoManager; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class TrackingAction : public G4UserTrackingAction { public: - TrackingAction(SteppingAction*); + TrackingAction(RunAction*, HistoManager*); ~TrackingAction(); void PreUserTrackingAction(const G4Track*); void PostUserTrackingAction(const G4Track*); + void AddEdepCavity(G4double de) { EdepCavity += de;}; + private: - SteppingAction* stepAction; + RunAction* runAction; + HistoManager* histoManager; + + G4double EdepCavity; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/run01.mac b/examples/extended/medical/fanoCavity/run01.mac index 2c5c8b8f85..0c93560f83 100644 --- a/examples/extended/medical/fanoCavity/run01.mac +++ b/examples/extended/medical/fanoCavity/run01.mac @@ -1,4 +1,4 @@ -# $Id: run01.mac,v 1.3 2007/03/19 13:08:41 maire Exp $ +# $Id: run01.mac,v 1.5 2007/10/29 17:09:53 maire Exp $ # /control/verbose 2 /run/verbose 2 @@ -19,6 +19,7 @@ /testem/histo/setHisto 8 100 0 10 mm #track segment in cavity /testem/histo/setHisto 9 100 0 1 mm #step size in wall /testem/histo/setHisto 10 100 0 3 mm #step size in cavity +/testem/histo/setHisto 11 100 0 3000 eV #edep in cavity # /testem/event/printModulo 1000 # diff --git a/examples/extended/medical/fanoCavity/src/DetectorConstruction.cc b/examples/extended/medical/fanoCavity/src/DetectorConstruction.cc index 4ab8197acb..0150ce79e7 100644 --- a/examples/extended/medical/fanoCavity/src/DetectorConstruction.cc +++ b/examples/extended/medical/fanoCavity/src/DetectorConstruction.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: DetectorConstruction.cc,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: DetectorConstruction.cc,v 1.3 2007/10/08 12:05:02 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -56,7 +56,6 @@ DetectorConstruction::DetectorConstruction() cavityRadius = 1*cm; wallThickness = 5*mm; - defaultRadius = true; DefineMaterials(); SetWallMaterial("Water"); @@ -110,7 +109,13 @@ void DetectorConstruction::DefineMaterials() new G4Material("Air", 1.290*mg/cm3, 2); Air->AddElement(N, 70.*perCent); Air->AddElement(O, 30.*perCent); - + + new G4Material("Graphite", 6, 12.01*g/mole, 2.265*g/cm3); + new G4Material("Graphite_gas", 6, 12.01*g/mole, 2.265*mg/cm3); + + new G4Material("Aluminium", 13, 26.98*g/mole, 2.700*g/cm3); + new G4Material("Aluminium_gas", 13, 26.98*g/mole, 2.700*mg/cm3); + G4cout << *(G4Material::GetMaterialTable()) << G4endl; } @@ -126,7 +131,7 @@ G4VPhysicalVolume* DetectorConstruction::ConstructVolumes() // Chamber // totalThickness = cavityThickness + 2*wallThickness; - if (defaultRadius) wallRadius = cavityRadius + wallThickness; + wallRadius = cavityRadius + wallThickness; G4Tubs* sChamber = new G4Tubs("Chamber", //name @@ -196,13 +201,6 @@ void DetectorConstruction::SetWallThickness(G4double value) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void DetectorConstruction::SetWallRadius(G4double value) -{ - wallRadius = value; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - void DetectorConstruction::SetWallMaterial(G4String materialChoice) { // search the material by its name @@ -222,7 +220,6 @@ void DetectorConstruction::SetCavityThickness(G4double value) void DetectorConstruction::SetCavityRadius(G4double value) { cavityRadius = value; - defaultRadius = false; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/src/DetectorMessenger.cc b/examples/extended/medical/fanoCavity/src/DetectorMessenger.cc index 1961e97554..457de1ef80 100644 --- a/examples/extended/medical/fanoCavity/src/DetectorMessenger.cc +++ b/examples/extended/medical/fanoCavity/src/DetectorMessenger.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: DetectorMessenger.cc,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: DetectorMessenger.cc,v 1.3 2007/11/05 13:44:18 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -52,23 +52,17 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det) wallMater->SetGuidance("Set material of the wall."); wallMater->SetParameterName("wallMat",false); - wallThick = new G4UIcmdWithADoubleAndUnit("/testem/det/wallTickness",this); + wallThick = new G4UIcmdWithADoubleAndUnit("/testem/det/wallThickness",this); wallThick->SetGuidance("Set tickness of the wall"); wallThick->SetParameterName("wallTick",false); wallThick->SetRange("wallTick>0."); wallThick->SetUnitCategory("Length"); - - wallRadius = new G4UIcmdWithADoubleAndUnit("/testem/det/wallRadius",this); - wallRadius->SetGuidance("Set radius of the wall"); - wallRadius->SetParameterName("wallRadius",false); - wallRadius->SetRange("wallRadius>0."); - wallRadius->SetUnitCategory("Length"); cavMater = new G4UIcmdWithAString("/testem/det/cavityMater",this); cavMater->SetGuidance("Set material of the cavity."); cavMater->SetParameterName("cavMat",false); - cavThick = new G4UIcmdWithADoubleAndUnit("/testem/det/cavityTickness",this); + cavThick = new G4UIcmdWithADoubleAndUnit("/testem/det/cavityThickness",this); cavThick->SetGuidance("Set tickness of the cavity"); cavThick->SetParameterName("cavityTick",false); cavThick->SetRange("cavityTick>0."); @@ -93,7 +87,6 @@ DetectorMessenger::~DetectorMessenger() { delete wallMater; delete wallThick; - delete wallRadius; delete cavMater; delete cavThick; @@ -113,9 +106,6 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) if( command == wallThick ) { Detector->SetWallThickness(wallThick->GetNewDoubleValue(newValue));} - - if( command == wallRadius ) - { Detector->SetWallRadius(wallRadius->GetNewDoubleValue(newValue));} if( command == cavMater ) { Detector->SetCavityMaterial(newValue);} diff --git a/examples/extended/medical/fanoCavity/src/EventAction.cc b/examples/extended/medical/fanoCavity/src/EventAction.cc index 703f1f97e6..78ac845b9e 100644 --- a/examples/extended/medical/fanoCavity/src/EventAction.cc +++ b/examples/extended/medical/fanoCavity/src/EventAction.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: EventAction.cc,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: EventAction.cc,v 1.4 2007/10/29 17:09:53 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -69,7 +69,7 @@ void EventAction::BeginOfEventAction(const G4Event* evt) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void EventAction::EndOfEventAction(const G4Event* evt) -{ +{ //trajectories // if (G4VVisManager::GetConcreteInstance()) @@ -82,7 +82,7 @@ void EventAction::EndOfEventAction(const G4Event* evt) ((*(evt->GetTrajectoryContainer()))[i]); if (drawFlag == "all") trj->DrawTrajectory(1000); else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) - trj->DrawTrajectory(1000); + trj->DrawTrajectory(); } } } diff --git a/examples/extended/medical/fanoCavity/src/EventActionMessenger.cc b/examples/extended/medical/fanoCavity/src/EventActionMessenger.cc index d323a774b6..0ac62b7f34 100644 --- a/examples/extended/medical/fanoCavity/src/EventActionMessenger.cc +++ b/examples/extended/medical/fanoCavity/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/src/HistoManager.cc b/examples/extended/medical/fanoCavity/src/HistoManager.cc index 87b7f6843e..04bdf11774 100644 --- a/examples/extended/medical/fanoCavity/src/HistoManager.cc +++ b/examples/extended/medical/fanoCavity/src/HistoManager.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoManager.cc,v 1.2 2007/03/19 13:08:41 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoManager.cc,v 1.5 2007/11/13 11:31:54 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -61,6 +61,7 @@ HistoManager::HistoManager() exist[k] = false; Unit[k] = 1.0; Width[k] = 1.0; + ascii[k] = false; } histoMessenger = new HistoMessenger(this); @@ -126,6 +127,7 @@ void HistoManager::save() { #ifdef G4ANALYSIS_USE if (factoryOn) { + saveAscii(); // Write ascii file, if any tree->commit(); // Writing the histograms to the file tree->close(); // and closing the tree (and the file) G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl; @@ -162,7 +164,7 @@ void HistoManager::SetHisto(G4int ih, return; } - const G4String id[] = {"0","1","2","3","4","5","6","7","8","9" ,"10"}; + const G4String id[] = {"0","1","2","3","4","5","6","7","8","9" ,"10", "11"}; const G4String title[] = { "dummy", //0 "emission point of e-", //1 @@ -174,7 +176,8 @@ void HistoManager::SetHisto(G4int ih, "theta distribution of e- at first step in cavity", //7 "track segment of e- in cavity", //8 "step size of e- in wall", //9 - "step size of e- in cavity" //10 + "step size of e- in cavity", //10 + "energy deposit in cavity per track" //11 }; @@ -230,3 +233,43 @@ void HistoManager::Scale(G4int ih, G4double fac) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void HistoManager::PrintHisto(G4int ih) +{ + if (ih < MaxHisto) ascii[ih] = true; + else + G4cout << "---> warning from HistoManager::PrintHisto() : histo " << ih + << "does not exist" << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include + +void HistoManager::saveAscii() +{ +#ifdef G4ANALYSIS_USE + + G4String name = fileName[0] + ".ascii"; + std::ofstream File(name, std::ios::out); + File.setf( std::ios::scientific, std::ios::floatfield ); + + //write selected histograms + for (G4int ih=0; ihbinMean(iBin) << "\t" + << histo[ih]->binHeight(iBin) + << G4endl; + } + } + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + diff --git a/examples/extended/medical/fanoCavity/src/HistoMessenger.cc b/examples/extended/medical/fanoCavity/src/HistoMessenger.cc index e4b95e89e8..85f606bf42 100644 --- a/examples/extended/medical/fanoCavity/src/HistoMessenger.cc +++ b/examples/extended/medical/fanoCavity/src/HistoMessenger.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HistoMessenger.cc,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HistoMessenger.cc,v 1.2 2007/11/13 11:31:54 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -82,6 +82,11 @@ HistoMessenger::HistoMessenger(HistoManager* manager) unit->SetDefaultValue("none"); histoCmd->SetParameter(unit); + prhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/printHisto",this); + prhistoCmd->SetGuidance("print histo #id on ascii file"); + prhistoCmd->SetParameterName("id",false); + prhistoCmd->SetRange("id>0"); + rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this); rmhistoCmd->SetGuidance("desactivate histo #id"); rmhistoCmd->SetParameterName("id",false); @@ -93,6 +98,7 @@ HistoMessenger::HistoMessenger(HistoManager* manager) HistoMessenger::~HistoMessenger() { delete rmhistoCmd; + delete prhistoCmd; delete histoCmd; delete typeCmd; delete factoryCmd; @@ -119,7 +125,10 @@ void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues) if (unit != "none") vUnit = G4UIcommand::ValueOf(unit); histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit); } - + + if (command == prhistoCmd) + histoManager->PrintHisto(prhistoCmd->GetNewIntValue(newValues)); + if (command == rmhistoCmd) histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues)); } diff --git a/examples/extended/medical/fanoCavity/src/MyKleinNishinaCompton.cc b/examples/extended/medical/fanoCavity/src/MyKleinNishinaCompton.cc index 349c646714..6ed5452ca2 100644 --- a/examples/extended/medical/fanoCavity/src/MyKleinNishinaCompton.cc +++ b/examples/extended/medical/fanoCavity/src/MyKleinNishinaCompton.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: MyKleinNishinaCompton.cc,v 1.3 2007/05/23 08:40:21 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: MyKleinNishinaCompton.cc,v 1.5 2007/10/01 15:19:57 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -64,12 +64,9 @@ G4double MyKleinNishinaCompton::CrossSectionPerVolume( G4double, G4double) { G4double CrossSection = - G4VEmModel::CrossSectionPerVolume(mat,part,GammaEnergy,0,0); - - G4double factor = CrossSectionFactor; - if (mat == detector->GetCavityMaterial()) factor = 0.; - - return CrossSection*factor; + G4VEmModel::CrossSectionPerVolume(mat,part,GammaEnergy); + + return CrossSection*CrossSectionFactor; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/medical/fanoCavity/src/MyMollerBhabhaModel.cc b/examples/extended/medical/fanoCavity/src/MyMollerBhabhaModel.cc index f4907de057..ae3c638602 100644 --- a/examples/extended/medical/fanoCavity/src/MyMollerBhabhaModel.cc +++ b/examples/extended/medical/fanoCavity/src/MyMollerBhabhaModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: MyMollerBhabhaModel.cc,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/src/PhysicsList.cc b/examples/extended/medical/fanoCavity/src/PhysicsList.cc index cade437c41..de28dffa59 100644 --- a/examples/extended/medical/fanoCavity/src/PhysicsList.cc +++ b/examples/extended/medical/fanoCavity/src/PhysicsList.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: PhysicsList.cc,v 1.5 2007/06/12 12:04:15 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsList.cc,v 1.9 2007/10/02 14:42:51 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -48,6 +48,7 @@ PhysicsList::PhysicsList(DetectorConstruction* det) : G4VUserPhysicsList(), detector(det) { defaultCutValue = 10.*km; + singleScattering = false; registerBrem = false; pMessenger = new PhysicsListMessenger(this); SetVerboseLevel(1); @@ -90,6 +91,7 @@ void PhysicsList::ConstructProcess() #include "G4PhotoElectricEffect.hh" #include "G4MultipleScattering.hh" +#include "G4CoulombScattering.hh" #include "G4eIonisation.hh" #include "MyMollerBhabhaModel.hh" @@ -98,9 +100,11 @@ void PhysicsList::ConstructProcess() #include "G4hIonisation.hh" +#include "G4EmProcessOptions.hh" +#include "G4MscStepLimitType.hh" + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -#include "G4EmProcessOptions.hh" void PhysicsList::ConstructEM() { @@ -109,55 +113,85 @@ void PhysicsList::ConstructEM() G4ParticleDefinition* particle = theParticleIterator->value(); G4ProcessManager* pmanager = particle->GetProcessManager(); G4String particleName = particle->GetParticleName(); + G4int iAlong = 0, iPost = 0; if (particleName == "gamma") { G4ComptonScattering* compton = new G4ComptonScattering(); compton->SetModel(comptonModel = new MyKleinNishinaCompton(detector)); - comptonModel->SetCSFactor(1000.); - pmanager->AddDiscreteProcess(compton); - + comptonModel->SetCSFactor(1000.); + + pmanager->AddDiscreteProcess(compton); pmanager->AddDiscreteProcess(new G4PhotoElectricEffect); pmanager->AddDiscreteProcess(new G4GammaConversion); } else if (particleName == "e-") { - pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); + if (singleScattering) + pmanager->AddProcess(new G4CoulombScattering, -1, -1, ++iPost); + else + pmanager->AddProcess(new G4MultipleScattering, -1, ++iAlong, ++iPost); G4eIonisation* eIoni = new G4eIonisation(); eIoni->SetEmModel(new MyMollerBhabhaModel); - pmanager->AddProcess(eIoni, -1, 2,2); + pmanager->AddProcess(eIoni, -1, ++iAlong, ++iPost); - if (registerBrem) { - pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); - } + if (registerBrem) + pmanager->AddProcess(new G4eBremsstrahlung, -1, ++iAlong, ++iPost); + } else if (particleName == "e+") { - - pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); + + if (singleScattering) + pmanager->AddProcess(new G4CoulombScattering, -1, -1, ++iPost); + else + pmanager->AddProcess(new G4MultipleScattering, -1, ++iAlong, ++iPost); G4eIonisation* pIoni = new G4eIonisation(); pIoni->SetEmModel(new MyMollerBhabhaModel); - pmanager->AddProcess(pIoni, -1, 2,2); + pmanager->AddProcess(pIoni, -1, ++iAlong, ++iPost); if (registerBrem) { - pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3); - pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4); + pmanager->AddProcess(new G4eBremsstrahlung, -1, ++iAlong, ++iPost); + pmanager->AddProcess(new G4eplusAnnihilation, 0, -1, ++iPost); } } else if (particleName == "proton") { - - pmanager->AddProcess(new G4MultipleScattering,-1, 1,1); - pmanager->AddProcess(new G4hIonisation, -1, 2,2); + + if (singleScattering) + pmanager->AddProcess(new G4CoulombScattering, -1, -1, ++iPost); + else + pmanager->AddProcess(new G4MultipleScattering, -1, ++iAlong, ++iPost); + + pmanager->AddProcess(new G4hIonisation, -1, ++iAlong, ++iPost); } } // Em options // G4EmProcessOptions emOptions; + + //multiple scattering + // + emOptions.SetMscStepLimitation(fUseDistanceToBoundary); + emOptions.SetSkin(2.); + + //physics tables + // + emOptions.SetMinEnergy(100*eV); + emOptions.SetMaxEnergy(10*GeV); + emOptions.SetDEDXBinning(800); + emOptions.SetLambdaBinning(800); + + //energy loss + // emOptions.SetStepFunction(0.2, 10*um); emOptions.SetLinearLossLimit(1.e-6); - emOptions.SetSkin(2.); //single scattering at boundaries - emOptions.SetBuildCSDARange(true); + + //build CSDA range + // + emOptions.SetBuildCSDARange(true); + emOptions.SetMaxEnergyForCSDARange(10*GeV); + emOptions.SetDEDXBinningForCSDARange(800); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -208,6 +242,13 @@ void PhysicsList::SetComptonCSfactor(G4double factor) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void PhysicsList::SingleCoulombScattering(G4bool flag) +{ + singleScattering = flag; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void PhysicsList::RegisterBrem(G4bool flag) { registerBrem = flag; diff --git a/examples/extended/medical/fanoCavity/src/PhysicsListMessenger.cc b/examples/extended/medical/fanoCavity/src/PhysicsListMessenger.cc index e37b36b6b5..01deb3e28f 100644 --- a/examples/extended/medical/fanoCavity/src/PhysicsListMessenger.cc +++ b/examples/extended/medical/fanoCavity/src/PhysicsListMessenger.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: PhysicsListMessenger.cc,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysicsListMessenger.cc,v 1.2 2007/10/02 14:42:51 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -50,6 +50,12 @@ PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys) csFactor->SetParameterName("factor",false); csFactor->SetRange("factor>=0"); + singleScat = new G4UIcmdWithABool("/testem/phys/singleScattering",this); + singleScat->SetGuidance("apply single Coulomb scattering process"); + singleScat->SetParameterName("flag",true); + singleScat->SetDefaultValue(true); + singleScat->AvailableForStates(G4State_PreInit); + brem = new G4UIcmdWithABool("/testem/phys/registerBrem",this); brem->SetGuidance("register Brems in PhysicsList"); brem->SetParameterName("flag",true); @@ -62,6 +68,7 @@ PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys) PhysicsListMessenger::~PhysicsListMessenger() { delete csFactor; + delete singleScat; delete brem; delete physDir; } @@ -73,6 +80,10 @@ void PhysicsListMessenger::SetNewValue(G4UIcommand* command, { if (command == csFactor) {pPhysicsList->SetComptonCSfactor(csFactor->GetNewDoubleValue(newValue));} + + if (command == singleScat) + {pPhysicsList->SingleCoulombScattering(singleScat->GetNewBoolValue(newValue));} + if (command == brem) {pPhysicsList->RegisterBrem(brem->GetNewBoolValue(newValue));} } diff --git a/examples/extended/medical/fanoCavity/src/PrimaryGeneratorAction.cc b/examples/extended/medical/fanoCavity/src/PrimaryGeneratorAction.cc index 3e4822d6d9..7b17b6510e 100644 --- a/examples/extended/medical/fanoCavity/src/PrimaryGeneratorAction.cc +++ b/examples/extended/medical/fanoCavity/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/src/PrimaryGeneratorMessenger.cc b/examples/extended/medical/fanoCavity/src/PrimaryGeneratorMessenger.cc index 96f6ed5d13..441385056a 100644 --- a/examples/extended/medical/fanoCavity/src/PrimaryGeneratorMessenger.cc +++ b/examples/extended/medical/fanoCavity/src/PrimaryGeneratorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorMessenger.cc,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/src/RunAction.cc b/examples/extended/medical/fanoCavity/src/RunAction.cc index 0b88e4b2d3..6fecc8fe56 100644 --- a/examples/extended/medical/fanoCavity/src/RunAction.cc +++ b/examples/extended/medical/fanoCavity/src/RunAction.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: RunAction.cc,v 1.2 2007/01/23 13:34:19 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: RunAction.cc,v 1.3 2007/10/29 12:36:26 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -86,7 +86,7 @@ void RunAction::BeginOfRunAction(const G4Run* aRun) //kinetic energy of charged secondary a creation // - Esecondary = 0.; + Esecondary = Esecondary2 = 0.; nbSec = 0; //charged particles and energy flow in cavity @@ -96,7 +96,8 @@ void RunAction::BeginOfRunAction(const G4Run* aRun) //total energy deposit and charged track segment in cavity // - EdepCavity = trkSegmCavity = 0.; + EdepCavity = EdepCavity2 = trkSegmCavity = 0.; + nbEventCavity = 0; //stepLenth of charged particles // @@ -237,13 +238,17 @@ void RunAction::EndOfRunAction(const G4Run* aRun) //mean kinetic energy of secondary electrons // if (nbSec == 0) return; - G4double meanEsecond = Esecondary/nbSec; + G4double meanEsecond = Esecondary/nbSec, meanEsecond2 = Esecondary2/nbSec; + G4double varianceEsec = meanEsecond2 - meanEsecond*meanEsecond; + G4double dToverT = 0.; + if (varianceEsec>0.) dToverT = std::sqrt(varianceEsec/nbSec)/meanEsecond; G4double csdaRange = emCalculator.GetCSDARange(meanEsecond,G4Electron::Electron(),mateWall); G4cout.precision(4); G4cout << "\n Mean energy of secondary e- = " << G4BestUnit(meanEsecond,"Energy") + << " +- " << 100*dToverT << " %" << " (--> range in wall material = " << G4BestUnit(csdaRange,"Length") << ")" << G4endl; @@ -288,7 +293,16 @@ void RunAction::EndOfRunAction(const G4Run* aRun) // G4double rBeam = wallRadius*(kinematic->GetBeamRadius()); G4double surfaceBeam = pi*rBeam*rBeam; - + + //error on Edep in cavity + // + if (nbEventCavity == 0) return; + G4double meanEdep = EdepCavity/nbEventCavity; + G4double meanEdep2 = EdepCavity2/nbEventCavity; + G4double varianceEdep = meanEdep2 - meanEdep*meanEdep; + G4double dEoverE = 0.; + if(varianceEdep>0.) dEoverE = std::sqrt(varianceEdep/nbEventCavity)/meanEdep; + //total dose in cavity // G4double doseCavity = EdepCavity/massCavity; @@ -300,6 +314,7 @@ void RunAction::EndOfRunAction(const G4Run* aRun) G4cout.precision(4); G4cout << "\n Total edep in cavity = " << G4BestUnit(EdepCavity,"Energy") + << " +- " << 100*dEoverE << " %" << "\t Total charged trackLength = " << G4BestUnit(trkSegmCavity,"Length") << " (mean value = " << G4BestUnit(meantrack,"Length") << ")" << "\n Total dose in cavity = " << doseCavity/(MeV/mg) << " MeV/mg" @@ -308,10 +323,13 @@ void RunAction::EndOfRunAction(const G4Run* aRun) //ratio simulation/theory // - G4double ratio = doseOverBeam/massTransfCoef; + G4double ratio = doseOverBeam/massTransfCoef; + G4double error = ratio*(dEoverE + dToverT); + G4cout.precision(5); G4cout - << "\n (Dose/EnergyFluence)/Mass_energy_transfer = " << ratio << G4endl; + << "\n (Dose/EnergyFluence)/Mass_energy_transfer = " << ratio + << " +- " << error << G4endl; //compute mean step size of charged particles // @@ -330,9 +348,9 @@ void RunAction::EndOfRunAction(const G4Run* aRun) if (rms>0.) rms = std::sqrt(rms); else rms = 0.; G4cout - << "\n StepSize of ch. tracks in cavity = " - << G4BestUnit(stepCavity,"Length") << " +- " << G4BestUnit( rms,"Length") - << "\t (nbSteps/track = " << double(nbStepCavity)/PartFlowCavity[0] << ")"; + << "\n StepSize of ch. tracks in cavity = " + << G4BestUnit(stepCavity,"Length") << " +- " << G4BestUnit( rms,"Length") + << "\t (nbSteps/track = " << double(nbStepCavity)/PartFlowCavity[0] << ")"; G4cout << G4endl; diff --git a/examples/extended/medical/fanoCavity/src/StackingAction.cc b/examples/extended/medical/fanoCavity/src/StackingAction.cc index a783d4c502..de98b1be3e 100644 --- a/examples/extended/medical/fanoCavity/src/StackingAction.cc +++ b/examples/extended/medical/fanoCavity/src/StackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingAction.cc,v 1.2 2007/03/02 11:08:41 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/src/StackingMessenger.cc b/examples/extended/medical/fanoCavity/src/StackingMessenger.cc index 2bfc018ba5..b4dd0250ae 100644 --- a/examples/extended/medical/fanoCavity/src/StackingMessenger.cc +++ b/examples/extended/medical/fanoCavity/src/StackingMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StackingMessenger.cc,v 1.1 2007/01/23 13:34:19 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/src/StepMax.cc b/examples/extended/medical/fanoCavity/src/StepMax.cc index c14c2c1763..9bed2b365c 100644 --- a/examples/extended/medical/fanoCavity/src/StepMax.cc +++ b/examples/extended/medical/fanoCavity/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/src/StepMaxMessenger.cc b/examples/extended/medical/fanoCavity/src/StepMaxMessenger.cc index 287194596a..741caa8979 100644 --- a/examples/extended/medical/fanoCavity/src/StepMaxMessenger.cc +++ b/examples/extended/medical/fanoCavity/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/src/SteppingAction.cc b/examples/extended/medical/fanoCavity/src/SteppingAction.cc index e2b0b239d1..1a0ab4ade9 100644 --- a/examples/extended/medical/fanoCavity/src/SteppingAction.cc +++ b/examples/extended/medical/fanoCavity/src/SteppingAction.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: SteppingAction.cc,v 1.2 2007/03/19 13:08:41 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: SteppingAction.cc,v 1.4 2007/10/29 17:09:53 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -32,20 +32,23 @@ #include "SteppingAction.hh" #include "DetectorConstruction.hh" #include "RunAction.hh" +#include "EventAction.hh" +#include "TrackingAction.hh" #include "HistoManager.hh" #include "G4SteppingManager.hh" +#include "G4Gamma.hh" #include "G4UnitsTable.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... SteppingAction::SteppingAction(DetectorConstruction* det, RunAction* RuAct, - HistoManager* histo) -:detector(det), runAction(RuAct), histoManager(histo), - wall(0), cavity(0) + EventAction* EvAct,TrackingAction* TrAct, + HistoManager* histo) +:detector(det), runAction(RuAct), eventAction(EvAct), trackAction(TrAct), + histoManager(histo), wall(0), cavity(0) { first = true; - trackCharged = false; trackSegm = 0.; directionIn = 0.; } @@ -81,12 +84,12 @@ void SteppingAction::UserSteppingAction(const G4Step* step) // if (volume == cavity) { G4double edep = step->GetTotalEnergyDeposit(); - if (edep > 0.) runAction->AddEdepCavity(edep); + if (edep > 0.) trackAction->AddEdepCavity(edep); } //keep only charged particles // - if (!trackCharged) return; + if (step->GetTrack()->GetDefinition() == G4Gamma::Gamma()) return; //step size of charged particles // diff --git a/examples/extended/medical/fanoCavity/src/SteppingVerbose.cc b/examples/extended/medical/fanoCavity/src/SteppingVerbose.cc index c086ad1d79..27c9c36efc 100644 --- a/examples/extended/medical/fanoCavity/src/SteppingVerbose.cc +++ b/examples/extended/medical/fanoCavity/src/SteppingVerbose.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingVerbose.cc,v 1.1 2007/01/19 17:20:27 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity/src/TrackingAction.cc b/examples/extended/medical/fanoCavity/src/TrackingAction.cc index 1bea629309..1e49264584 100644 --- a/examples/extended/medical/fanoCavity/src/TrackingAction.cc +++ b/examples/extended/medical/fanoCavity/src/TrackingAction.cc @@ -23,20 +23,22 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: TrackingAction.cc,v 1.3 2007/01/23 13:34:19 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: TrackingAction.cc,v 1.4 2007/10/29 17:09:53 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "TrackingAction.hh" -#include "SteppingAction.hh" +#include "RunAction.hh" +#include "HistoManager.hh" + #include "G4Track.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -TrackingAction::TrackingAction(SteppingAction* step) -:stepAction(step) +TrackingAction::TrackingAction(RunAction* RuAct, HistoManager* histo) +:runAction(RuAct), histoManager(histo) { } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -46,17 +48,24 @@ TrackingAction::~TrackingAction() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void TrackingAction::PreUserTrackingAction(const G4Track* track) -{ - G4ParticleDefinition* particle = track->GetDefinition(); - G4bool charged = (particle->GetPDGCharge() != 0.); - stepAction->TrackCharge(charged); +void TrackingAction::PreUserTrackingAction(const G4Track*) +{ + //initialize edep cavity per track + // + EdepCavity = 0.; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void TrackingAction::PostUserTrackingAction(const G4Track*) -{ } +{ + //sum energy in cavity + // + if (EdepCavity > 0.) { + runAction->AddEdepCavity(EdepCavity); + histoManager->FillHisto(11,EdepCavity); + } + } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity2/GNUmakefile b/examples/extended/medical/fanoCavity2/GNUmakefile new file mode 100644 index 0000000000..2d45f1e8c1 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/GNUmakefile @@ -0,0 +1,38 @@ +# $Id: GNUmakefile,v 1.1 2007/10/15 16:20:23 maire Exp $ +# -------------------------------------------------------------- +# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. +# -------------------------------------------------------------- + +name := fanoCavity2 +G4TARGET := $(name) +G4EXLIB := true + +ifndef G4INSTALL + G4INSTALL = ../../../.. +endif + +.PHONY: all +all: lib bin + +#### G4ANALYSIS_USE := true + +ifdef G4ANALYSIS_USE + CPPFLAGS += -DG4ANALYSIS_USE +endif + +include $(G4INSTALL)/config/architecture.gmk + +ifdef G4ANALYSIS_USE + # for the aida-config command see the README file + CPPFLAGS += `aida-config --include` + LOADLIBS += `aida-config --lib` +endif + +include $(G4INSTALL)/config/binmake.gmk + +visclean: + rm -f g4*.prim g4*.eps g4*.wrl + rm -f .DAWN_* + +histclean: + rm ${G4WORKDIR}/tmp/${G4SYSTEM}/${G4TARGET}/HistoManager.o diff --git a/examples/extended/medical/fanoCavity2/History b/examples/extended/medical/fanoCavity2/History new file mode 100644 index 0000000000..bde78d5555 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/History @@ -0,0 +1,25 @@ +$Id: History,v 1.4 2007/11/12 18:19:30 maire Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + fanoCavity2 History file + ----------------------- +This file should be used by the G4 example coordinator to briefly +summarize all major modifications introduced in the code and keep +track of all tags. + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +12-11-07 mma (fano2-V09-00-01) +- HistoManager/HistoMessenger : print selected histos on ascii file + +12-10-07 mma (fano2-V09-00-00) +- compute error on ratio + +12-10-07 michel maire +- created from fanoCavity example diff --git a/examples/extended/medical/fanoCavity2/README b/examples/extended/medical/fanoCavity2/README new file mode 100644 index 0000000000..6c260560c3 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/README @@ -0,0 +1,199 @@ +$Id: README,v 1.8 2007/11/12 18:19:30 maire Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + fanoCavity2 + ----------- + + This program computes the dose deposited in an ionization chamber by an + extended (one dimensional) monoenergetic electron source. + The geometry of the chamber satisfies the conditions of charged particle + equilibrium. Hence, under idealized conditions, the ratio of the dose + deposited over the beam energy fluence must be equal to 1. + This variante of the Fano cavity test make use of an reciprocity theorem. + + J.Sempau and P.Andreo, Phys. Med. Biol. 51 (2006) 3533 + + 1- GEOMETRY + + The chamber is modelized as a cylinder with a cavity in it. + + 5 parameters define the geometry : + - the radius of the chamber (must be big) + - the material of the wall + - the thickness of the wall + - the material of the cavity + - the thickness of the cavity + + Wall and cavity must be made of the same material, but with different + density. + Radius must be bigger than range of electrons in cavity. + + All above parameters can be redifined via the UI commands built in + DetectorMessenger class. + + _________________ + radius (infinite) | | | | + | | | | + | | | | + | | | | + | | <-+-----+--- cavity + | | | | + | | | | + ---------------------------- cylinder axis = e- source + | | | | + | | | | + | | | | + |wall | |wall | + | | | | + | | | | + | | | | + ----------------- + + 2- BEAM + + Monoenergetic (E0) incident electron source is uniformly distribued along + cylinder axis, within wall and cavity, with constant lineic density + per mass: I. + An effective wall thickness is defined from the range of e- at energy E0. + + Beam_energy_fluence is E0*I + + 3- PURPOSE OF THE PROGRAM + + The program computes the dose deposited in the cavity and the ratio + Dose/Beam_energy_fluence. This ratio must be 1. + + The program needs high statistic to reach precision on the computed dose. + The UI command /testem/event/printModulo allows to survey the convergence of + the dose calculation. + + The simplest way to study the effect of e- tracking parameters on dose + deposition is to use the command /testem/stepMax. + + 4- PHYSICS + + The physics list contains the standard electromagnetic processes, with few + modifications listed here. + + - Bremsstrahlung : Fano conditions imply no energy transfer via + bremsstrahlung radiation. Therefore this process is not registered in the + physics list. However, it is always possible to include it via an UI + command. See PhysicsListMessenger class. + + - Ionization : In order to have same stopping power in wall and cavity, one + must cancel the density correction term in the dedx formula. This is done in + a specific MollerBhabha model (MyMollerBhabhaModel) which inherites from + G4MollerBhabhaModel. + + To prevent explicit generation of delta-rays, the default production + threshold (i.e. cut) is set to 10 km (CSDA condition). + + The finalRange of the step function is set to 10 um, which more on less + correspond to a tracking cut in water of about 20 keV. See emOptions. + Once again, the above parameters can be controled via UI commands. + + - Multiple scattering : is switched in single Coulomb scattering mode near + boundaries. This is selected via EM options in PhysicsList, and can be + controled with UI commands. + + - All PhysicsTables are built with 100 bins per decade. + + 5- HISTOGRAMS + + fanoCavity2 has several predefined 1D histograms : + + 1 : emission point of e+- + 2 : energy spectrum of e+- + 3 : theta distribution of e+- + 4 : emission point of e+- hitting cavity + 5 : energy spectrum of e+- when entering in cavity + 6 : theta distribution of e+- before enter in cavity + 7 : theta distribution of e+- at first step in cavity + 8 : track segment of e+- in cavity + 9 : step size of e+- in wall + 10 : step size of e+- in cavity + 11 : energy deposit in cavity per track + + The histograms are managed by the HistoManager class and its Messenger. + The histos can be individually activated with the command : + /testem/histo/setHisto id nbBins valMin valMax unit + where unit is the desired unit for the histo (MeV or keV, deg or mrad, etc..) + + One can control the name of the histograms file with the command: + /testem/histo/setFileName name (default fanoCavity) + + It is possible to choose the format of the histogram file (hbook, root, XML) + with the command /testem/histo/setFileType (hbook by default) + + It is also possible to print selected histograms on an ascii file: + /testem/histo/printHisto id + All selected histos will be written on a file name.ascii (default fanocavity2) + + Note that, by default, histograms are disabled. To activate them, uncomment + the flag G4ANALYSIS_USE in GNUmakefile. + + 6- HOW TO START ? + + - compile and link to generate an executable + % cd geant4/examples/extended/medical/fanoCavity2 + % gmake + + - execute fanoCavity2 in 'batch' mode from macro files + % fanoCavity2 run01.mac + + - execute fanoCavity2 in 'interactive mode' with visualization + % fanoCavity2 + .... + Idle> type your commands + .... + Idle> exit + + 7- USING HISTOGRAMS + + To use histograms, at least one of the AIDA implementations should be + available (see http://aida.freehep.org). + + 8a - PI + + A package including AIDA and extended interfaces also using Python is PI, + available from: http://cern.ch/pi + + Once installed PI or PI-Lite in a specified local area $MYPY, it is required + to add the installation path to $PATH, i.e. for example, for release 1.2.1 of + PI: + setenv PATH ${PATH}:$MYPI/1.2.1/app/releases/PI/PI_1_2_1/rh73_gcc32/bin + + CERN users can use the PATH to the LCG area on AFS. + Before running the example the command should be issued: + eval `aida-config --runtime csh` + + 8b - OpenScientist + + OpenScientist is available at http://OpenScientist.lal.in2p3.fr. + + You have to "setup" the OpenScientist AIDA implementation before compiling + (then with G4ANALYSIS_USE set) and running your Geant4 application. + + On UNIX you setup, with a csh flavoured shell : + csh> source </aida-setup.csh + or with a sh flavoured shell : + sh> . </aida-setup.sh + On Windows : + DOS> call </aida-setup.bat + + You can use various file formats for writing (AIDA-XML, hbook, root). + These formats are readable by the Lab onx interactive program + or the OpenPAW application. See the web pages. + + + With OpenPAW, on a run.hbook file, one can view the histograms + with something like : + OS> opaw + opaw> h/file 1 run.hbook ( or opaw> h/file 1 run.aida or run.root) + opaw> zone 2 2 + opaw> h/plot 1 + opaw> h/plot 2 diff --git a/examples/extended/medical/fanoCavity2/basic.mac b/examples/extended/medical/fanoCavity2/basic.mac new file mode 100644 index 0000000000..728cf857fd --- /dev/null +++ b/examples/extended/medical/fanoCavity2/basic.mac @@ -0,0 +1,18 @@ +# $Id: basic.mac,v 1.2 2007/11/05 13:19:16 maire Exp $ +# +/control/verbose 2 +/run/verbose 2 +# +/testem/det/wallMater Water +/testem/det/wallThickness 5 cm +# +/run/initialize +# +/process/inactivate msc +/process/eLoss/fluct false +# +/gun/energy 10 keV +# +/testem/event/printModulo 500000 +# +/run/beamOn 10000000 diff --git a/examples/extended/medical/fanoCavity2/essai.mac b/examples/extended/medical/fanoCavity2/essai.mac new file mode 100644 index 0000000000..09aa091a42 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/essai.mac @@ -0,0 +1,20 @@ +# $Id: essai.mac,v 1.3 2007/11/12 18:19:30 maire Exp $ +# +/control/verbose 2 +/run/verbose 2 +# +/testem/det/wallMater Water +/testem/det/wallThickness 5 mm +/testem/det/worldRadius 5 mm +# +/run/initialize +# +/process/inactivate msc +/process/eLoss/fluct false +# +/gun/energy 10 keV +/gun/direction 0 1 0 +# +/testem/event/printModulo 20000 +# +#/run/beamOn 200000 diff --git a/examples/extended/medical/fanoCavity2/fanoCavity2.cc b/examples/extended/medical/fanoCavity2/fanoCavity2.cc new file mode 100644 index 0000000000..b82646a607 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/fanoCavity2.cc @@ -0,0 +1,127 @@ +// +// ******************************************************************** +// * 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: fanoCavity2.cc,v 1.2 2007/10/31 16:16:20 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4RunManager.hh" +#include "G4UImanager.hh" +#include "G4UIterminal.hh" +#include "G4UItcsh.hh" +#include "Randomize.hh" + +#include "DetectorConstruction.hh" +#include "PhysicsList.hh" +#include "PrimaryGeneratorAction.hh" + +#include "RunAction.hh" +#include "EventAction.hh" +#include "TrackingAction.hh" +#include "SteppingAction.hh" +#include "SteppingVerbose.hh" +#include "HistoManager.hh" + +#ifdef G4VIS_USE + #include "G4VisExecutive.hh" +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +int main(int argc,char** argv) { + + //choose the Random engine + CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine); + + //my Verbose output class + G4VSteppingVerbose::SetInstance(new SteppingVerbose); + + //Construct the default run manager + G4RunManager * runManager = new G4RunManager; + + //set mandatory initialization classes + DetectorConstruction* det; + PhysicsList* phys; + PrimaryGeneratorAction* kin; + HistoManager* histo = new HistoManager(); + + runManager->SetUserInitialization(det = new DetectorConstruction); + runManager->SetUserInitialization(phys = new PhysicsList(det)); + runManager->SetUserAction(kin = new PrimaryGeneratorAction(det,histo)); + + //set user action classes + RunAction* run = new RunAction(det,kin,histo); + EventAction* event = new EventAction(run,histo); + TrackingAction* track = new TrackingAction(run,histo); + SteppingAction* step = new SteppingAction(det,run,event,track,histo); + + runManager->SetUserAction(run); + runManager->SetUserAction(event); + runManager->SetUserAction(track); + runManager->SetUserAction(step); + + //get the pointer to the User Interface manager + G4UImanager* UI = G4UImanager::GetUIpointer(); + + if (argc!=1) // batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + else // interactive mode :define visualization and UI terminal + { +#ifdef G4VIS_USE + G4VisManager* visManager = new G4VisExecutive; + visManager->Initialize(); +#endif + + G4UIsession * session = 0; +#ifdef G4UI_USE_TCSH + session = new G4UIterminal(new G4UItcsh); +#else + session = new G4UIterminal(); +#endif + session->SessionStart(); + delete session; + +#ifdef G4VIS_USE + delete visManager; +#endif + } + + + //job termination + // + delete histo; + delete runManager; + + return 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity2/fanoCavity2.in b/examples/extended/medical/fanoCavity2/fanoCavity2.in new file mode 100644 index 0000000000..392e5d37ca --- /dev/null +++ b/examples/extended/medical/fanoCavity2/fanoCavity2.in @@ -0,0 +1,12 @@ +# $Id: fanoCavity2.in,v 1.2 2007/11/05 13:19:16 maire Exp $ +# +/control/verbose 2 +/run/verbose 2 +# +/run/initialize +# +/gun/energy 1 MeV +# +/testem/event/printModulo 10000 +# +/run/beamOn 40000 diff --git a/examples/extended/medical/fanoCavity2/fanoCavity2.out b/examples/extended/medical/fanoCavity2/fanoCavity2.out new file mode 100644 index 0000000000..b9ee49e11d --- /dev/null +++ b/examples/extended/medical/fanoCavity2/fanoCavity2.out @@ -0,0 +1,208 @@ + +************************************************************* + Geant4 version Name: global-V09-00-02 (14-December-2007) + Copyright : Geant4 Collaboration + Reference : NIM A 506 (2003), 250-303 + WWW : http://cern.ch/geant4 +************************************************************* + + +***** Table : Nb of materials = 6 ***** + + Material: Water density: 1.000 g/cm3 RadL: 36.092 cm Imean: 75.000 eV + ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % + ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % + + Material: Water_gas density: 1.000 mg/cm3 RadL: 360.925 m Imean: 75.000 eV temperature: 273.15 K pressure: 1.00 atm + ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % + ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % + + Material: Graphite density: 2.265 g/cm3 RadL: 18.850 cm Imean: 78.000 eV + ---> Element: Graphite ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % + + Material: Graphite_gas density: 2.265 mg/cm3 RadL: 188.496 m Imean: 78.000 eV temperature: 273.15 K pressure: 1.00 atm + ---> Element: Graphite_gas ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % + + Material: Aluminium density: 2.700 g/cm3 RadL: 8.893 cm Imean: 166.400 eV + ---> Element: Aluminium ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % + + Material: Aluminium_gas density: 2.700 mg/cm3 RadL: 88.925 m Imean: 166.400 eV temperature: 273.15 K pressure: 1.00 atm + ---> Element: Aluminium_gas ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % + + +/run/verbose 2 +# +/run/initialize +userDetector->Construct() start. + +--------------------------------------------------------- +---> The Wall is 5 cm of Water ( 1 g/cm3 ) + The Cavity is 2 mm of Water_gas ( 1 mg/cm3 ) +--------------------------------------------------------- + +Wall is registered to the default region. +physicsList->Construct() start. +physicsList->Construct() start. +physicsList->setCut() start. +PhysicsList::SetCuts:CutLength : 10 km +# +/gun/energy 1 MeV +# +/testem/event/printModulo 10000 +# +/run/beamOn 40000 +G4VRangeToEnergyConverter::ConvertCutToKineticEnergy for gamma +The cut in range [1e+07 (mm)] is too big for material idx=0 +The cut in energy is set1.79769e+305GeV +G4VRangeToEnergyConverter::ConvertCutToKineticEnergy for e- +The cut in range [1e+07 (mm)] is too big for material idx=0 +The cut in energy is set1.79769e+305GeV +G4VRangeToEnergyConverter::ConvertCutToKineticEnergy for e+ +The cut in range [1e+07 (mm)] is too big for material idx=0 +The cut in energy is set1.79769e+305GeV +G4VRangeToEnergyConverter::ConvertCutToKineticEnergy for gamma +The cut in range [1e+07 (mm)] is too big for material idx=1 +The cut in energy is set1.79769e+305GeV + +phot: Total cross sections from Sandia parametrisation. + Sampling according PhotoElectric model + +compt: Total cross sections has a good parametrisation from 10 KeV to (100/Z) GeV + Sampling according Klein-Nishina model + tables are built for gamma + Lambda tables from 100 eV to 10 GeV in 800 bins. + +conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV for all Z; + sampling secondary e+e- according Bethe-Heitler model + tables are built for gamma + Lambda tables from 1.022 MeV to 10 GeV in 800 bins. + +msc: Model variant of multiple scattering for e- + Lambda tables from 100 eV to 10 GeV in 800 bins. + LateralDisplacementFlag= 1 Skin= 2 + Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 2 + +eIoni: tables are built for e- + dE/dx and range tables from 100 eV to 10 GeV in 800 bins. + Lambda tables from threshold to 10 GeV in 800 bins. + Delta cross sections and sampling from myMollerBhabha model + Good description from 1 KeV to 100 GeV. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 10 GeV in 800 bins. + +eIoni: tables are built for e+ + dE/dx and range tables from 100 eV to 10 GeV in 800 bins. + Lambda tables from threshold to 10 GeV in 800 bins. + Delta cross sections and sampling from myMollerBhabha model + Good description from 1 KeV to 100 GeV. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 10 GeV in 800 bins. + +msc: Model variant of multiple scattering for proton + Lambda tables from 100 eV to 10 GeV in 800 bins. + LateralDisplacementFlag= 1 Skin= 2 + Boundary/stepping algorithm is active with RangeFactor= 0.02 Step limit type 2 + +hIoni: tables are built for proton + dE/dx and range tables from 100 eV to 10 GeV in 800 bins. + Lambda tables from threshold to 10 GeV in 800 bins. + Scaling relation is used from proton dE/dx and range. + Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV + Parametrisation from Bragg for protons below. + Step function: finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1 + CSDA range table up to 10 GeV in 800 bins. + +Region -- appears in world volume + Root logical volume(s) : Wall + Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0] + Materials : Water Water_gas + Production cuts : gamma 10 km e- 10 km e+ 10 km + +========= Table of registered couples ============================== + +Index : 0 used in the geometry : Yes recalculation needed : No + Material : Water + Range cuts : gamma 10 km e- 10 km e+ 10 km + Energy thresholds : gamma 2.88022e+295 J e- 2.88022e+295 J e+ 2.88022e+295 J + Region(s) which use this couple : + DefaultRegionForTheWorld + +Index : 1 used in the geometry : Yes recalculation needed : No + Material : Water_gas + Range cuts : gamma 10 km e- 10 km e+ 10 km + Energy thresholds : gamma 2.88022e+295 J e- 18.4792 GeV e+ 17.5913 GeV + Region(s) which use this couple : + DefaultRegionForTheWorld + +==================================================================== + +Start closing geometry. +G4GeometryManager::ReportVoxelStats -- Voxel Statistics + + Total memory consumed for geometry optimisation: 0 kByte + Total CPU time elapsed for geometry optimisation: 0 seconds + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 9876, 54321 +---------------------------------------- +### Run 0 start. + + ======================== run conditions ===================== + + The run will be 40000 e- of 1.000 MeV through 2*5.246 mm of Water (density: 1.000 g/cm3 ); Mass/cm2 = 1.049 g + csdaRange: 4.371 mm + + the cavity is 2.000 mm of Water_gas (density: 1.000 mg/cm3); Mass/cm2 = 0.200 mg --> massRatio = 0.000191 + World radius: 10.000 m ; range in cavity: 4.371 m + + ============================================================ + + StoppingPower in wall = 1.8720 MeV*cm2/g + in cavity = 1.8720 MeV*cm2/g +Start Run processing. + +--->evntNb= 10000 Nwall= 10000 Ncav= 1 Ic/Iw= 0.52455 Ne-_cav= 2852 doseCavity/Ebeam= 1.39766 (100*(ratio-1) = 39.76621 %) + +--->evntNb= 20000 Nwall= 20000 Ncav= 1 Ic/Iw= 0.26228 Ne-_cav= 5826 doseCavity/Ebeam= 1.29916 (100*(ratio-1) = 29.91598 %) + +--->evntNb= 30000 Nwall= 29998 Ncav= 3 Ic/Iw= 0.52459 Ne-_cav= 8614 doseCavity/Ebeam= 1.34504 (100*(ratio-1) = 34.50383 %) +Run terminated. +Run Summary + Number of events processed : 40000 + User=2.1e+02s Real=2.1e+02s Sys=0.02s + + Process calls frequency ---> msc= 355861 eIoni= 635564 Transportation= 22917 + + Charged particle flow in cavity : + Enter --> nbParticles = 11462 Energy = 7.232 GeV + Exit --> nbParticles = 11455 Energy = 7.229 GeV + + beamFluence in wall = 39993 in cavity = 7 Icav/Iwall = 0.91812 energyFluence = 38.12063 MeV*cm2/mg + + Total edep in cavity = 10.08626 MeV +- 5.32434 % + Total dose in cavity = 50.43128 MeV*cm2/mg +- 5.32434 % + + DoseCavity/EnergyFluence = 1.32294 +- 0.07044 + + Total charged trackLength in cavity = 41.2549 m (mean value = 3.5993 mm ) + + StepSize of ch. tracks in wall = 182.8036 um +- 184.9149 um (nbSteps/track = 23.9927) + StepSize of ch. tracks in cavity = 752.7984 um +- 3.9930 mm (nbSteps/track = 4.7812) + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1829867873, 2087567788 +---------------------------------------- +UserDetectorConstruction deleted. +UserPhysicsList deleted. +UserRunAction deleted. +UserPrimaryGenerator deleted. +G4 kernel has come to Quit state. +EventManager deleted. +Default detector region deleted. +UImanager deleted. +Units table cleared. +StateManager deleted. +RunManagerKernel is deleted. +RunManager is deleting. diff --git a/examples/extended/medical/fanoCavity2/include/DetectorConstruction.hh b/examples/extended/medical/fanoCavity2/include/DetectorConstruction.hh new file mode 100644 index 0000000000..6fa65ed0fe --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/DetectorConstruction.hh @@ -0,0 +1,102 @@ +// +// ******************************************************************** +// * 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/10/15 16:20:23 maire 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 G4VPhysicalVolume; +class G4Material; +class DetectorMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class DetectorConstruction : public G4VUserDetectorConstruction +{ + public: + + DetectorConstruction(); + ~DetectorConstruction(); + + public: + + void SetWallMaterial (G4String); + + void SetWallThickness (G4double); + void SetCavityThickness (G4double); + + void SetWorldRadius (G4double); + + G4VPhysicalVolume* Construct(); + void UpdateGeometry(); + + public: + + G4double GetWallThickness() {return wallThickness;}; + G4Material* GetWallMaterial() {return wallMaterial;}; + G4VPhysicalVolume* GetWall() {return pWall;}; + + G4double GetCavityThickness() {return cavityThickness;}; + G4Material* GetCavityMaterial() {return cavityMaterial;}; + G4VPhysicalVolume* GetCavity() {return pCavity;}; + + G4double GetWorldThickness() {return worldThickness;}; + G4double GetWorldRadius() {return worldRadius;}; + + void PrintParameters(); + + private: + + G4double wallThickness; + G4Material* wallMaterial; + G4VPhysicalVolume* pWall; + + G4double cavityThickness; + G4Material* cavityMaterial; + G4VPhysicalVolume* pCavity; + + G4double worldThickness; + G4double worldRadius; + + DetectorMessenger* detectorMessenger; + + private: + + void DefineMaterials(); + G4VPhysicalVolume* ConstructVolumes(); +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/medical/fanoCavity2/include/DetectorMessenger.hh b/examples/extended/medical/fanoCavity2/include/DetectorMessenger.hh new file mode 100644 index 0000000000..aba50192d3 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/DetectorMessenger.hh @@ -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.hh,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef DetectorMessenger_h +#define DetectorMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class DetectorConstruction; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithoutParameter; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class DetectorMessenger: public G4UImessenger +{ + public: + + DetectorMessenger(DetectorConstruction* ); + ~DetectorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + + DetectorConstruction* Detector; + + G4UIdirectory* testemDir; + G4UIdirectory* detDir; + G4UIcmdWithAString* wallMater; + G4UIcmdWithADoubleAndUnit* wallThick; + G4UIcmdWithADoubleAndUnit* cavThick; + G4UIcmdWithADoubleAndUnit* worldRadius; + + G4UIcmdWithoutParameter* UpdateCmd; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/medical/fanoCavity2/include/EventAction.hh b/examples/extended/medical/fanoCavity2/include/EventAction.hh new file mode 100644 index 0000000000..5178087df7 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/EventAction.hh @@ -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: EventAction.hh,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef EventAction_h +#define EventAction_h 1 + +#include "G4UserEventAction.hh" +#include "globals.hh" + +class RunAction; +class HistoManager; +class EventActionMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class EventAction : public G4UserEventAction +{ + public: + EventAction(RunAction*, HistoManager*); + ~EventAction(); + + public: + void BeginOfEventAction(const G4Event*); + void EndOfEventAction(const G4Event*); + + void SetDrawFlag(G4String val) {drawFlag = val;}; + void SetPrintModulo(G4int val) {printModulo = val;}; + + + private: + RunAction* runAct; + G4String drawFlag; + G4int printModulo; + HistoManager* histoManager; + EventActionMessenger* eventMessenger; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + + diff --git a/examples/extended/medical/fanoCavity2/include/EventActionMessenger.hh b/examples/extended/medical/fanoCavity2/include/EventActionMessenger.hh new file mode 100644 index 0000000000..700291840b --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/EventActionMessenger.hh @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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: EventActionMessenger.hh,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef EventActionMessenger_h +#define EventActionMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class EventAction; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class EventActionMessenger: public G4UImessenger +{ + public: + EventActionMessenger(EventAction*); + ~EventActionMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + EventAction* eventAction; + G4UIdirectory* eventDir; + G4UIcmdWithAString* DrawCmd; + G4UIcmdWithAnInteger* PrintCmd; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif diff --git a/examples/extended/medical/fanoCavity2/include/HistoManager.hh b/examples/extended/medical/fanoCavity2/include/HistoManager.hh new file mode 100644 index 0000000000..ca449d1c25 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/HistoManager.hh @@ -0,0 +1,101 @@ +// +// ******************************************************************** +// * 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: HistoManager.hh,v 1.3 2007/11/12 18:19:30 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef HistoManager_h +#define HistoManager_h 1 + +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +namespace AIDA { + class IAnalysisFactory; + class ITree; + class IHistogram1D; +} + +class HistoMessenger; + +const G4int MaxHisto = 12; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class HistoManager +{ + public: + + HistoManager(); + ~HistoManager(); + + void SetFileName (const G4String& name) { fileName[0] = name;}; + void SetFileType (const G4String& name) { fileType = name;}; + void SetFileOption (const G4String& name) { fileOption = name;}; + void book(); + void save(); + void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none"); + void FillHisto(G4int id, G4double e, G4double weight = 1.0); + void RemoveHisto (G4int); + void Scale (G4int, G4double); + void PrintHisto (G4int); + + G4bool HistoExist (G4int id) {return exist[id];} + G4double GetHistoUnit(G4int id) {return Unit[id];} + G4double GetBinWidth (G4int id) {return Width[id];} + + private: + + G4String fileName[2]; + G4String fileType; + G4String fileOption; + AIDA::IAnalysisFactory* af; + AIDA::ITree* tree; + AIDA::IHistogram1D* histo[MaxHisto]; + G4bool exist[MaxHisto]; + G4String Label[MaxHisto]; + G4String Title[MaxHisto]; + G4int Nbins[MaxHisto]; + G4double Vmin [MaxHisto]; + G4double Vmax [MaxHisto]; + G4double Unit [MaxHisto]; + G4double Width[MaxHisto]; + G4bool ascii[MaxHisto]; + + G4bool factoryOn; + HistoMessenger* histoMessenger; + + private: + void saveAscii(); +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/medical/fanoCavity2/include/HistoMessenger.hh b/examples/extended/medical/fanoCavity2/include/HistoMessenger.hh new file mode 100644 index 0000000000..24c3e5eecf --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/HistoMessenger.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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: HistoMessenger.hh,v 1.2 2007/11/12 18:19:30 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef HistoMessenger_h +#define HistoMessenger_h 1 + +#include "G4UImessenger.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class HistoManager; +class G4UIdirectory; +class G4UIcommand; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class HistoMessenger: public G4UImessenger +{ + public: + + HistoMessenger(HistoManager* ); + ~HistoMessenger(); + + void SetNewValue(G4UIcommand* ,G4String ); + + private: + + HistoManager* histoManager; + + G4UIdirectory* histoDir; + G4UIcmdWithAString* factoryCmd; + G4UIcmdWithAString* typeCmd; + G4UIcommand* histoCmd; + G4UIcmdWithAnInteger* prhistoCmd; + G4UIcmdWithAnInteger* rmhistoCmd; + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/medical/fanoCavity2/include/MyMollerBhabhaModel.hh b/examples/extended/medical/fanoCavity2/include/MyMollerBhabhaModel.hh new file mode 100644 index 0000000000..e14b33bb74 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/MyMollerBhabhaModel.hh @@ -0,0 +1,57 @@ +// +// ******************************************************************** +// * 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: MyMollerBhabhaModel.hh,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef MyMollerBhabhaModel_h +#define MyMollerBhabhaModel_h 1 + +#include "G4MollerBhabhaModel.hh" + +class G4ParticleChangeForLoss; + +class MyMollerBhabhaModel : public G4MollerBhabhaModel +{ + +public: + + MyMollerBhabhaModel(const G4ParticleDefinition* p = 0, + const G4String& nam = "myMollerBhabha"); + + virtual ~MyMollerBhabhaModel(); + + virtual G4double ComputeDEDXPerVolume(const G4Material*, + const G4ParticleDefinition*, + G4double kineticEnergy, + G4double cutEnergy); +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif diff --git a/examples/extended/medical/fanoCavity2/include/PhysicsList.hh b/examples/extended/medical/fanoCavity2/include/PhysicsList.hh new file mode 100644 index 0000000000..5b3937e980 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/PhysicsList.hh @@ -0,0 +1,77 @@ +// +// ******************************************************************** +// * 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: PhysicsList.hh,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef PhysicsList_h +#define PhysicsList_h 1 + +#include "G4VUserPhysicsList.hh" +#include "globals.hh" + +class DetectorConstruction; +class PhysicsListMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class PhysicsList: public G4VUserPhysicsList +{ + public: + PhysicsList(DetectorConstruction*); + ~PhysicsList(); + + // Construct particle and physics + void ConstructParticle(); + void ConstructProcess(); + + void SetCuts(); + + // these methods Construct physics processes and register them + void ConstructEM(); + void AddStepMax(); + + void SingleCoulombScattering (G4bool); + void RegisterBrem (G4bool); + + private: + DetectorConstruction* detector; + G4bool singleScattering; + G4bool registerBrem; + PhysicsListMessenger* pMessenger; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + + + diff --git a/examples/extended/medical/fanoCavity2/include/PhysicsListMessenger.hh b/examples/extended/medical/fanoCavity2/include/PhysicsListMessenger.hh new file mode 100644 index 0000000000..62009b455c --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/PhysicsListMessenger.hh @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef PhysicsListMessenger_h +#define PhysicsListMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class PhysicsList; +class G4UIdirectory; +class G4UIcmdWithABool; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class PhysicsListMessenger: public G4UImessenger +{ + public: + PhysicsListMessenger(PhysicsList* ); + ~PhysicsListMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + PhysicsList* pPhysicsList; + G4UIdirectory* physDir; + G4UIcmdWithABool* singleScat; + G4UIcmdWithABool* brem; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/medical/fanoCavity2/include/PrimaryGeneratorAction.hh b/examples/extended/medical/fanoCavity2/include/PrimaryGeneratorAction.hh new file mode 100644 index 0000000000..b3201a991c --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/PrimaryGeneratorAction.hh @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * 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/10/15 16:20:23 maire 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; +class HistoManager; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction +{ + public: + PrimaryGeneratorAction(DetectorConstruction*, HistoManager*); + ~PrimaryGeneratorAction(); + + public: + void RunInitialisation(G4double, G4double); + void GeneratePrimaries(G4Event*); + + G4ParticleGun* GetParticleGun() {return particleGun;} + + G4int GetWallCount() {return Nwall;} + G4int GetCavityCount() {return Ncavity;} + + private: + G4ParticleGun* particleGun; + DetectorConstruction* detector; + G4double effWallThick; + G4double cavityThickness; + G4double massWallRatio; + G4int Nwall, Ncavity; + HistoManager* histoManager; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + + diff --git a/examples/extended/medical/fanoCavity2/include/ProcessesCount.hh b/examples/extended/medical/fanoCavity2/include/ProcessesCount.hh new file mode 100644 index 0000000000..19f4564fae --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/ProcessesCount.hh @@ -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: ProcessesCount.hh,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +// 08.03.01 Hisaya: adapted for STL +// 26.10.98 mma : first version + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef ProcessesCount_HH +#define ProcessesCount_HH + +#include "globals.hh" +#include + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class OneProcessCount +{ +public: + OneProcessCount(G4String name) {Name=name; Counter=0;}; + ~OneProcessCount() {}; + +public: + G4String GetName() {return Name;}; + G4int GetCounter() {return Counter;}; + void Count() {Counter++;}; + +private: + G4String Name; // process name + G4int Counter; // process counter +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +typedef std::vector ProcessesCount; + +#endif + + + + + + diff --git a/examples/extended/medical/fanoCavity2/include/RunAction.hh b/examples/extended/medical/fanoCavity2/include/RunAction.hh new file mode 100644 index 0000000000..98e7737545 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/RunAction.hh @@ -0,0 +1,99 @@ +// +// ******************************************************************** +// * 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.2 2007/10/31 16:16:20 maire 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 "ProcessesCount.hh" +#include "globals.hh" + +class G4Run; +class G4Material; +class DetectorConstruction; +class PrimaryGeneratorAction; +class HistoManager; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class RunAction : public G4UserRunAction +{ + public: + RunAction(DetectorConstruction*, PrimaryGeneratorAction*, + HistoManager*); + ~RunAction(); + + public: + void BeginOfRunAction(const G4Run*); + void EndOfRunAction(const G4Run*); + + void CountProcesses(G4String); + + void SurveyConvergence(G4int); + + void FlowInCavity(G4int k, G4double e) { EnerFlowCavity[k] += e; + PartFlowCavity[k]++;}; + + void AddEdepCavity(G4double de) { EdepCavity += de; EdepCavity2 += de*de; + nbEventCavity++;}; + void AddTrakCavity(G4double dt) { trkSegmCavity += dt;}; + + void StepInWall (G4double s) { stepWall += s; stepWall2 += s*s; + nbStepWall++;}; + void StepInCavity (G4double s) { stepCavity += s; stepCavity2 += s*s; + nbStepCavity++;}; + + private: + DetectorConstruction* detector; + PrimaryGeneratorAction* kinematic; + ProcessesCount* ProcCounter; + HistoManager* histoManager; + + G4long PartFlowCavity[2]; + G4double EnerFlowCavity[2]; + G4double EdepCavity, EdepCavity2; + G4double trkSegmCavity; + G4long nbEventCavity; + + G4double stepWall, stepWall2; + G4double stepCavity, stepCavity2; + G4long nbStepWall, nbStepCavity; + + private: + G4double energyGun; + G4double massWall; + G4double massCavity; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/medical/fanoCavity2/include/StepMax.hh b/examples/extended/medical/fanoCavity2/include/StepMax.hh new file mode 100644 index 0000000000..acbba0ef62 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/StepMax.hh @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * 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: StepMax.hh,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef StepMax_h +#define StepMax_h 1 + +#include "globals.hh" +#include "G4VDiscreteProcess.hh" +#include "G4ParticleDefinition.hh" +#include "G4Step.hh" + +class StepMaxMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class StepMax : public G4VDiscreteProcess +{ + public: + + StepMax(const G4String& processName = "UserMaxStep"); + ~StepMax(); + + G4bool IsApplicable(const G4ParticleDefinition&); + + void SetMaxStep(G4double); + + G4double GetMaxStep() {return MaxChargedStep;}; + + G4double PostStepGetPhysicalInteractionLength( const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition); + + G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&); + + G4double GetMeanFreePath(const G4Track&, G4double,G4ForceCondition*) + {return DBL_MAX;}; + + private: + + G4double MaxChargedStep; + + StepMaxMessenger* pMess; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/examples/extended/electromagnetic/TestEm8/include/PhysListParticles.hh b/examples/extended/medical/fanoCavity2/include/StepMaxMessenger.hh similarity index 77% rename from examples/extended/electromagnetic/TestEm8/include/PhysListParticles.hh rename to examples/extended/medical/fanoCavity2/include/StepMaxMessenger.hh index a78dfa45be..a658efbda7 100644 --- a/examples/extended/electromagnetic/TestEm8/include/PhysListParticles.hh +++ b/examples/extended/medical/fanoCavity2/include/StepMaxMessenger.hh @@ -23,46 +23,36 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// $Id: StepMaxMessenger.hh,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// $Id: PhysListParticles.hh,v 1.2 2006/06/29 16:59:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -#ifndef PhysListParticles_h -#define PhysListParticles_h 1 +#ifndef StepMaxMessenger_h +#define StepMaxMessenger_h 1 -#include "G4VPhysicsConstructor.hh" #include "globals.hh" +#include "G4UImessenger.hh" + +class StepMax; +class G4UIcmdWithADoubleAndUnit; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -class PhysListParticles : public G4VPhysicsConstructor +class StepMaxMessenger: public G4UImessenger { - public: - PhysListParticles(const G4String& name = "particles"); - virtual ~PhysListParticles(); - - public: - // This method will be invoked in the Construct() method. - // each particle type will be instantiated - virtual void ConstructParticle(); - - // This method is dummy. - virtual void ConstructProcess() {}; - + public: + StepMaxMessenger(StepMax*); + ~StepMaxMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + StepMax* stepMax; + G4UIcmdWithADoubleAndUnit* StepMaxCmd; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #endif - - - - - - - - diff --git a/examples/extended/medical/fanoCavity2/include/SteppingAction.hh b/examples/extended/medical/fanoCavity2/include/SteppingAction.hh new file mode 100644 index 0000000000..f06f626e6b --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/SteppingAction.hh @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * 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: SteppingAction.hh,v 1.2 2007/10/31 16:16:20 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef SteppingAction_h +#define SteppingAction_h 1 + +#include "G4UserSteppingAction.hh" +#include "globals.hh" +#include "G4ThreeVector.hh" + +class DetectorConstruction; +class RunAction; +class EventAction; +class TrackingAction; +class HistoManager; + +class G4VPhysicalVolume; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class SteppingAction : public G4UserSteppingAction +{ + public: + SteppingAction(DetectorConstruction*,RunAction*,EventAction*, + TrackingAction*,HistoManager*); + ~SteppingAction(); + + void UserSteppingAction(const G4Step*); + + private: + DetectorConstruction* detector; + RunAction* runAction; + EventAction* eventAction; + TrackingAction* trackAction; + HistoManager* histoManager; + + G4VPhysicalVolume* wall; + G4VPhysicalVolume* cavity; + G4bool first; + G4double trackSegm; + G4ThreeVector directionIn; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif diff --git a/examples/extended/medical/fanoCavity2/include/SteppingVerbose.hh b/examples/extended/medical/fanoCavity2/include/SteppingVerbose.hh new file mode 100644 index 0000000000..e33f1eeb27 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/SteppingVerbose.hh @@ -0,0 +1,53 @@ +// +// ******************************************************************** +// * 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: SteppingVerbose.hh,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef SteppingVerbose_h +#define SteppingVerbose_h 1 + +#include "G4SteppingVerbose.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class SteppingVerbose : public G4SteppingVerbose { + +public: + + SteppingVerbose(); + ~SteppingVerbose(); + + void StepInfo(); + void TrackingStarted(); + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif diff --git a/examples/extended/medical/fanoCavity2/include/TrackingAction.hh b/examples/extended/medical/fanoCavity2/include/TrackingAction.hh new file mode 100644 index 0000000000..9fce8bf5f0 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/include/TrackingAction.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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: TrackingAction.hh,v 1.2 2007/10/31 16:16:20 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef TrackingAction_h +#define TrackingAction_h 1 + +#include "G4UserTrackingAction.hh" +#include "globals.hh" + +class RunAction; +class HistoManager; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class TrackingAction : public G4UserTrackingAction { + + public: + TrackingAction(RunAction*, HistoManager*); + ~TrackingAction(); + + void PreUserTrackingAction(const G4Track*); + void PostUserTrackingAction(const G4Track*); + + void AddEdepCavity(G4double de) { EdepCavity += de;}; + + private: + RunAction* runAction; + HistoManager* histoManager; + + G4double EdepCavity; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif diff --git a/examples/extended/medical/fanoCavity2/run01.mac b/examples/extended/medical/fanoCavity2/run01.mac new file mode 100644 index 0000000000..4e0a696434 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/run01.mac @@ -0,0 +1,24 @@ +# $Id: run01.mac,v 1.2 2007/10/31 16:16:20 maire Exp $ +# +/control/verbose 2 +/run/verbose 2 +# +/run/initialize +# +/testem/histo/setFileName fanocavity2 +/testem/histo/setFileType hbook +/testem/histo/setHisto 1 200 -10 +10 mm #interaction point +/testem/histo/setHisto 2 125 0 1250 keV #energy spectrum +/testem/histo/setHisto 3 100 0 100 deg #theta distribution +/testem/histo/setHisto 4 200 -10 +10 mm #vertex of e- in cav +/testem/histo/setHisto 5 125 0 1250 keV #energy spectrum at entrance +/testem/histo/setHisto 6 100 0 100 deg #theta dist before entrance +/testem/histo/setHisto 7 100 0 100 deg #theta dist after entrance +/testem/histo/setHisto 8 100 0 10 mm #track segment in cavity +/testem/histo/setHisto 9 100 0 1 mm #step size in wall +/testem/histo/setHisto 10 100 0 3 mm #step size in cavity +/testem/histo/setHisto 11 100 0 3000 eV #edep in cavity +# +/testem/event/printModulo 100000 +# +/run/beamOn 1000000 diff --git a/examples/extended/medical/fanoCavity2/src/DetectorConstruction.cc b/examples/extended/medical/fanoCavity2/src/DetectorConstruction.cc new file mode 100644 index 0000000000..4322da6b15 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/DetectorConstruction.cc @@ -0,0 +1,228 @@ +// +// ******************************************************************** +// * 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.2 2007/11/05 13:19:16 maire 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 "G4Tubs.hh" +#include "G4LogicalVolume.hh" +#include "G4VPhysicalVolume.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() +:pWall(0), pCavity(0) +{ + // default parameter values + wallThickness = 5*cm; + cavityThickness = 2*mm; + worldRadius = 10*m; + + DefineMaterials(); + SetWallMaterial("Water"); + + // create commands for interactive definition of the detector + 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* O = new G4Element("Oxygen" ,"O" , z= 8., a= 16.00*g/mole); + + // + // define materials + // + G4Material* H2O = + new G4Material("Water", 1.0*g/cm3, 2); + H2O->AddElement(H, 2); + H2O->AddElement(O, 1); + H2O->GetIonisation()->SetMeanExcitationEnergy(75.0*eV); + + G4Material* gas = + new G4Material("Water_gas", 1.0*mg/cm3, 2); + gas->AddElement(H, 2); + gas->AddElement(O, 1); + gas->GetIonisation()->SetMeanExcitationEnergy(75.0*eV); + + new G4Material("Graphite", 6, 12.01*g/mole, 2.265*g/cm3); + new G4Material("Graphite_gas", 6, 12.01*g/mole, 2.265*mg/cm3); + + new G4Material("Aluminium", 13, 26.98*g/mole, 2.700*g/cm3); + new G4Material("Aluminium_gas", 13, 26.98*g/mole, 2.700*mg/cm3); + + G4cout << *(G4Material::GetMaterialTable()) << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4VPhysicalVolume* DetectorConstruction::ConstructVolumes() +{ + G4GeometryManager::GetInstance()->OpenGeometry(); + G4PhysicalVolumeStore::GetInstance()->Clean(); + G4LogicalVolumeStore::GetInstance()->Clean(); + G4SolidStore::GetInstance()->Clean(); + + // Wall + // + worldThickness = cavityThickness + 2*wallThickness; + + G4Tubs* + sWall = new G4Tubs("Wall", //name + 0.,worldRadius,0.5*worldThickness,0.,twopi); //size + + G4LogicalVolume* + lWall = new G4LogicalVolume(sWall, //solid + wallMaterial, //material + "Wall"); //name + + pWall = new G4PVPlacement(0, //no rotation + G4ThreeVector(), //at (0,0,0) + lWall, //logical volume + "Wall", //name + 0, //mother volume + false, //no boolean operation + 0); //copy number + + // Cavity + // + G4Tubs* + sCavity = new G4Tubs("Cavity", + 0.,worldRadius,0.5*cavityThickness,0.,twopi); + + G4LogicalVolume* + lCavity = new G4LogicalVolume(sCavity, //shape + cavityMaterial, //material + "Cavity"); //name + + pCavity = new G4PVPlacement(0, //no rotation + G4ThreeVector(), //at (0,0,0) + lCavity, //logical volume + "Cavity", //name + lWall, //mother volume + false, //no boolean operation + 1); //copy number + + PrintParameters(); + + // + //always return the root volume + // + return pWall; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void DetectorConstruction::PrintParameters() +{ + G4cout << "\n---------------------------------------------------------\n"; + G4cout << "---> The Wall is " << G4BestUnit(wallThickness,"Length") + << " of " << wallMaterial->GetName() << " ( " + << G4BestUnit(wallMaterial->GetDensity(),"Volumic Mass") << " )\n"; + G4cout << " The Cavity is " << G4BestUnit(cavityThickness,"Length") + << " of " << cavityMaterial->GetName() << " ( " + << G4BestUnit(cavityMaterial->GetDensity(),"Volumic Mass") << " )"; + G4cout << "\n---------------------------------------------------------\n"; + G4cout << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void DetectorConstruction::SetWallMaterial(G4String materialChoice) +{ + // search the material by its name + G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice); + if (pttoMaterial) wallMaterial = pttoMaterial; + + pttoMaterial = G4Material::GetMaterial(materialChoice + "_gas"); + if (pttoMaterial) cavityMaterial = pttoMaterial; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void DetectorConstruction::SetWallThickness(G4double value) +{ + wallThickness = value; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void DetectorConstruction::SetCavityThickness(G4double value) +{ + cavityThickness = value; + +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void DetectorConstruction::SetWorldRadius(G4double value) +{ + worldRadius = value; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4RunManager.hh" + +void DetectorConstruction::UpdateGeometry() +{ +G4RunManager::GetRunManager()->DefineWorldVolume(ConstructVolumes()); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity2/src/DetectorMessenger.cc b/examples/extended/medical/fanoCavity2/src/DetectorMessenger.cc new file mode 100644 index 0000000000..06d469e40f --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/DetectorMessenger.cc @@ -0,0 +1,115 @@ +// +// ******************************************************************** +// * 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.2 2007/11/05 13:19:16 maire 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" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithoutParameter.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +DetectorMessenger::DetectorMessenger(DetectorConstruction * Det) +:Detector(Det) +{ + testemDir = new G4UIdirectory("/testem/"); + testemDir->SetGuidance(" detector control."); + + detDir = new G4UIdirectory("/testem/det/"); + detDir->SetGuidance("detector construction commands"); + + wallMater = new G4UIcmdWithAString("/testem/det/wallMater",this); + wallMater->SetGuidance("Set material of the wall."); + wallMater->SetParameterName("wallMat",false); + + wallThick = new G4UIcmdWithADoubleAndUnit("/testem/det/wallThickness",this); + wallThick->SetGuidance("Set tickness of the wall"); + wallThick->SetParameterName("wallTick",false); + wallThick->SetRange("wallTick>0."); + wallThick->SetUnitCategory("Length"); + + cavThick = new G4UIcmdWithADoubleAndUnit("/testem/det/cavityThickness",this); + cavThick->SetGuidance("Set tickness of the cavity"); + cavThick->SetParameterName("cavityTick",false); + cavThick->SetRange("cavityTick>0."); + cavThick->SetUnitCategory("Length"); + + worldRadius = new G4UIcmdWithADoubleAndUnit("/testem/det/worldRadius",this); + worldRadius->SetGuidance("Set radius of the cavity"); + worldRadius->SetParameterName("cavityRadius",false); + worldRadius->SetRange("cavityRadius>0."); + worldRadius->SetUnitCategory("Length"); + + UpdateCmd = new G4UIcmdWithoutParameter("/testem/det/update",this); + UpdateCmd->SetGuidance("Update geometry."); + UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" "); + UpdateCmd->SetGuidance("if you changed geometrical value(s)."); + UpdateCmd->AvailableForStates(G4State_Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +DetectorMessenger::~DetectorMessenger() +{ + delete wallMater; + + delete wallThick; + delete cavThick; + delete worldRadius; + + delete UpdateCmd; + delete detDir; + delete testemDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if( command == wallMater ) + { Detector->SetWallMaterial(newValue);} + + if( command == wallThick ) + { Detector->SetWallThickness(wallThick->GetNewDoubleValue(newValue));} + + if( command == cavThick ) + { Detector->SetCavityThickness(cavThick->GetNewDoubleValue(newValue));} + + if( command == worldRadius ) + { Detector->SetWorldRadius(worldRadius->GetNewDoubleValue(newValue));} + + if( command == UpdateCmd ) + { Detector->UpdateGeometry();} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity2/src/EventAction.cc b/examples/extended/medical/fanoCavity2/src/EventAction.cc new file mode 100644 index 0000000000..89c37d3a02 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/EventAction.cc @@ -0,0 +1,92 @@ +// +// ******************************************************************** +// * 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: EventAction.cc,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "EventAction.hh" + +#include "RunAction.hh" +#include "EventActionMessenger.hh" +#include "HistoManager.hh" + +#include "G4Event.hh" +#include "G4TrajectoryContainer.hh" +#include "G4Trajectory.hh" +#include "G4VVisManager.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +EventAction::EventAction(RunAction* run, HistoManager* histo) +:runAct(run), drawFlag("none"), printModulo(10000), histoManager(histo) +{ + eventMessenger = new EventActionMessenger(this); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +EventAction::~EventAction() +{ + delete eventMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void EventAction::BeginOfEventAction(const G4Event* evt) +{ + G4int evtNb = evt->GetEventID(); + + //survey convergence + // + if (evtNb%printModulo == 0) runAct->SurveyConvergence(evtNb); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void EventAction::EndOfEventAction(const G4Event* evt) +{ + //trajectories + // + if (G4VVisManager::GetConcreteInstance()) + { + G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); + G4int n_trajectories = 0; + if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); + for(G4int i=0; iGetTrajectoryContainer()))[i]); + if (drawFlag == "all") trj->DrawTrajectory(1000); + else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) + trj->DrawTrajectory(); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + diff --git a/examples/extended/medical/fanoCavity2/src/EventActionMessenger.cc b/examples/extended/medical/fanoCavity2/src/EventActionMessenger.cc new file mode 100644 index 0000000000..a6187d0319 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/EventActionMessenger.cc @@ -0,0 +1,84 @@ +// +// ******************************************************************** +// * 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: EventActionMessenger.cc,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "EventActionMessenger.hh" + +#include "EventAction.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +EventActionMessenger::EventActionMessenger(EventAction* EvAct) +:eventAction(EvAct) +{ + eventDir = new G4UIdirectory("/testem/event/"); + eventDir->SetGuidance("event control"); + + DrawCmd = new G4UIcmdWithAString("/testem/event/drawTracks",this); + DrawCmd->SetGuidance("Draw the tracks in the event"); + DrawCmd->SetGuidance(" Choice : none,charged, all"); + DrawCmd->SetParameterName("choice",true); + DrawCmd->SetDefaultValue("all"); + DrawCmd->SetCandidates("none charged all"); + DrawCmd->AvailableForStates(G4State_Idle); + + PrintCmd = new G4UIcmdWithAnInteger("/testem/event/printModulo",this); + PrintCmd->SetGuidance("Print events modulo n"); + PrintCmd->SetParameterName("EventNb",false); + PrintCmd->SetRange("EventNb>0"); + PrintCmd->AvailableForStates(G4State_Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +EventActionMessenger::~EventActionMessenger() +{ + delete DrawCmd; + delete PrintCmd; + delete eventDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void EventActionMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) +{ + if(command == DrawCmd) + {eventAction->SetDrawFlag(newValue);} + + if(command == PrintCmd) + {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity2/src/HistoManager.cc b/examples/extended/medical/fanoCavity2/src/HistoManager.cc new file mode 100644 index 0000000000..bc68019ed1 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/HistoManager.cc @@ -0,0 +1,275 @@ +// +// ******************************************************************** +// * 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: HistoManager.cc,v 1.3 2007/11/12 18:19:30 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "HistoManager.hh" +#include "HistoMessenger.hh" +#include "G4UnitsTable.hh" + +#ifdef G4ANALYSIS_USE +#include "AIDA/AIDA.h" +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +HistoManager::HistoManager() +:af(0),tree(0),factoryOn(false) +{ +#ifdef G4ANALYSIS_USE + // Creating the analysis factory + af = AIDA_createAnalysisFactory(); + if(!af) { + G4cout << " HistoManager::HistoManager() :" + << " problem creating the AIDA analysis factory." + << G4endl; + } +#endif + + fileName[0] = "fanocavity2"; + fileType = "hbook"; + fileOption = "--noErrors uncompress"; + // histograms + for (G4int k=0; kcreateTreeFactory(); + tree = tf->create(fileName[1], fileType, readOnly, createNew, fileOption); + delete tf; + if(!tree) { + G4cout << "HistoManager::book() :" + << " problem creating the AIDA tree with " + << " storeName = " << fileName[1] + << " storeType = " << fileType + << " readOnly = " << readOnly + << " createNew = " << createNew + << " options = " << fileOption + << G4endl; + return; + } + + // Creating a histogram factory, whose histograms will be handled by the tree + AIDA::IHistogramFactory* hf = af->createHistogramFactory(*tree); + + // create selected histograms + for (G4int k=0; kcreateHistogram1D( Label[k], Title[k], + Nbins[k], Vmin[k], Vmax[k]); + factoryOn = true; + } + } + delete hf; + if (factoryOn) + G4cout << "\n----> Histogram Tree is opened in " << fileName[1] << G4endl; +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void HistoManager::save() +{ +#ifdef G4ANALYSIS_USE + if (factoryOn) { + saveAscii(); // Write ascii file, if any + tree->commit(); // Writing the histograms to the file + tree->close(); // and closing the tree (and the file) + G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl; + + delete tree; + tree = 0; + factoryOn = false; + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void HistoManager::FillHisto(G4int ih, G4double e, G4double weight) +{ + if (ih > MaxHisto) { + G4cout << "---> warning from HistoManager::FillHisto() : histo " << ih + << "does not exist; e= " << e << " w= " << weight << G4endl; + return; + } +#ifdef G4ANALYSIS_USE + if(exist[ih]) histo[ih]->fill(e/Unit[ih], weight); +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void HistoManager::SetHisto(G4int ih, + G4int nbins, G4double valmin, G4double valmax, const G4String& unit) +{ + if (ih > MaxHisto) { + G4cout << "---> warning from HistoManager::SetHisto() : histo " << ih + << "does not exist" << G4endl; + return; + } + + const G4String id[] = {"0","1","2","3","4","5","6","7","8","9" ,"10", "11"}; + const G4String title[] = + { "dummy", //0 + "emission point of e-", //1 + "energy spectrum of e-", //2 + "theta distribution of e-", //3 + "emission point of e- hitting cavity", //4 + "energy spectrum of e- when entering in cavity", //5 + "theta distribution of e- before enter in cavity", //6 + "theta distribution of e- at first step in cavity", //7 + "track segment of e- in cavity", //8 + "step size of e- in wall", //9 + "step size of e- in cavity", //10 + "energy deposit in cavity per track" //11 + }; + + + G4String titl = title[ih]; + G4double vmin = valmin, vmax = valmax; + Unit[ih] = 1.; + + if (unit != "none") { + titl = title[ih] + " (" + unit + ")"; + Unit[ih] = G4UnitDefinition::GetValueOf(unit); + vmin = valmin/Unit[ih]; vmax = valmax/Unit[ih]; + } + + exist[ih] = true; + Label[ih] = id[ih]; + Title[ih] = titl; + Nbins[ih] = nbins; + Vmin[ih] = vmin; + Vmax[ih] = vmax; + Width[ih] = (valmax-valmin)/nbins; + + G4cout << "----> SetHisto " << ih << ": " << titl << "; " + << nbins << " bins from " + << vmin << " " << unit << " to " << vmax << " " << unit << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void HistoManager::RemoveHisto(G4int ih) +{ + if (ih > MaxHisto) { + G4cout << "---> warning from HistoManager::RemoveHisto() : histo " << ih + << "does not exist" << G4endl; + return; + } + + histo[ih] = 0; exist[ih] = false; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void HistoManager::Scale(G4int ih, G4double fac) +{ + if (ih > MaxHisto) { + G4cout << "---> warning from HistoManager::RemoveHisto() : histo " << ih + << "does not exist" << G4endl; + return; + } +#ifdef G4ANALYSIS_USE + if(exist[ih]) histo[ih]->scale(fac); +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void HistoManager::PrintHisto(G4int ih) +{ + if (ih < MaxHisto) ascii[ih] = true; + else + G4cout << "---> warning from HistoManager::PrintHisto() : histo " << ih + << "does not exist" << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include + +void HistoManager::saveAscii() +{ +#ifdef G4ANALYSIS_USE + + G4String name = fileName[0] + ".ascii"; + std::ofstream File(name, std::ios::out); + File.setf( std::ios::scientific, std::ios::floatfield ); + + //write selected histograms + for (G4int ih=0; ihbinMean(iBin) << "\t" + << histo[ih]->binHeight(iBin) + << G4endl; + } + } + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + diff --git a/examples/extended/medical/fanoCavity2/src/HistoMessenger.cc b/examples/extended/medical/fanoCavity2/src/HistoMessenger.cc new file mode 100644 index 0000000000..8bc3505784 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/HistoMessenger.cc @@ -0,0 +1,137 @@ +// +// ******************************************************************** +// * 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: HistoMessenger.cc,v 1.2 2007/11/12 18:19:30 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "HistoMessenger.hh" + +#include + +#include "HistoManager.hh" +#include "G4UIdirectory.hh" +#include "G4UIcommand.hh" +#include "G4UIparameter.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +HistoMessenger::HistoMessenger(HistoManager* manager) +:histoManager (manager) +{ + histoDir = new G4UIdirectory("/testem/histo/"); + histoDir->SetGuidance("histograms control"); + + factoryCmd = new G4UIcmdWithAString("/testem/histo/setFileName",this); + factoryCmd->SetGuidance("set name for the histograms file"); + + typeCmd = new G4UIcmdWithAString("/testem/histo/setFileType",this); + typeCmd->SetGuidance("set histograms file type: hbook, root, XML"); + typeCmd->SetCandidates("hbook root XML"); + + histoCmd = new G4UIcommand("/testem/histo/setHisto",this); + histoCmd->SetGuidance("Set bining of the histo number ih :"); + histoCmd->SetGuidance(" nbBins; valMin; valMax; unit (of vmin and vmax)"); + // + G4UIparameter* ih = new G4UIparameter("ih",'i',false); + ih->SetGuidance("histo number : from 1 to MaxHisto"); + ih->SetParameterRange("ih>0"); + histoCmd->SetParameter(ih); + // + G4UIparameter* nbBins = new G4UIparameter("nbBins",'i',false); + nbBins->SetGuidance("number of bins"); + nbBins->SetParameterRange("nbBins>0"); + histoCmd->SetParameter(nbBins); + // + G4UIparameter* valMin = new G4UIparameter("valMin",'d',false); + valMin->SetGuidance("valMin, expressed in unit"); + histoCmd->SetParameter(valMin); + // + G4UIparameter* valMax = new G4UIparameter("valMax",'d',false); + valMax->SetGuidance("valMax, expressed in unit"); + histoCmd->SetParameter(valMax); + // + G4UIparameter* unit = new G4UIparameter("unit",'s',true); + unit->SetGuidance("if omitted, vmin and vmax are assumed dimensionless"); + unit->SetDefaultValue("none"); + histoCmd->SetParameter(unit); + + prhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/printHisto",this); + prhistoCmd->SetGuidance("print histo #id on ascii file"); + prhistoCmd->SetParameterName("id",false); + prhistoCmd->SetRange("id>0"); + + rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this); + rmhistoCmd->SetGuidance("desactivate histo #id"); + rmhistoCmd->SetParameterName("id",false); + rmhistoCmd->SetRange("id>0"); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +HistoMessenger::~HistoMessenger() +{ + delete rmhistoCmd; + delete prhistoCmd; + delete histoCmd; + delete typeCmd; + delete factoryCmd; + delete histoDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues) +{ + if (command == factoryCmd) + histoManager->SetFileName(newValues); + + if (command == typeCmd) + histoManager->SetFileType(newValues); + + if (command == histoCmd) + { G4int ih,nbBins; G4double vmin,vmax; char unts[30]; + const char* t = newValues; + std::istringstream is(t); + is >> ih >> nbBins >> vmin >> vmax >> unts; + G4String unit = unts; + G4double vUnit = 1. ; + if (unit != "none") vUnit = G4UIcommand::ValueOf(unit); + histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit); + } + + if (command == prhistoCmd) + histoManager->PrintHisto(prhistoCmd->GetNewIntValue(newValues)); + + if (command == rmhistoCmd) + histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues)); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/medical/fanoCavity2/src/MyMollerBhabhaModel.cc b/examples/extended/medical/fanoCavity2/src/MyMollerBhabhaModel.cc new file mode 100644 index 0000000000..ddfb9f988c --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/MyMollerBhabhaModel.cc @@ -0,0 +1,128 @@ +// +// ******************************************************************** +// * 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: MyMollerBhabhaModel.cc,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "MyMollerBhabhaModel.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +using namespace std; + +MyMollerBhabhaModel::MyMollerBhabhaModel(const G4ParticleDefinition* p, + const G4String& nam) + : G4MollerBhabhaModel(p,nam) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +MyMollerBhabhaModel::~MyMollerBhabhaModel() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double MyMollerBhabhaModel::ComputeDEDXPerVolume( + const G4Material* material, + const G4ParticleDefinition* p, + G4double kineticEnergy, + G4double cutEnergy) +{ + if(!particle) SetParticle(p); + // calculate the dE/dx due to the ionization by Seltzer-Berger formula + + G4double electronDensity = material->GetElectronDensity(); + G4double Zeff = electronDensity/material->GetTotNbOfAtomsPerVolume(); + G4double th = 0.25*sqrt(Zeff)*keV; + G4double tkin = kineticEnergy; + G4bool lowEnergy = false; + if (kineticEnergy < th) { + tkin = th; + lowEnergy = true; + } + G4double tau = tkin/electron_mass_c2; + G4double gam = tau + 1.0; + G4double gamma2= gam*gam; + G4double beta2 = 1. - 1./gamma2; + //G4double bg2 = beta2*gamma2; + + G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy(); + eexc /= electron_mass_c2; + G4double eexc2 = eexc*eexc; + + G4double d = min(cutEnergy, MaxSecondaryEnergy(p, tkin))/electron_mass_c2; + G4double dedx; + + // electron + if (isElectron) { + + dedx = log(2.0*(tau + 2.0)/eexc2) - 1.0 - beta2 + + log((tau-d)*d) + tau/(tau-d) + + (0.5*d*d + (2.0*tau + 1.)*log(1. - d/tau))/gamma2; + + //positron + } else { + + G4double d2 = d*d*0.5; + G4double d3 = d2*d/1.5; + G4double d4 = d3*d*3.75; + G4double y = 1.0/(1.0 + gam); + dedx = log(2.0*(tau + 2.0)/eexc2) + log(tau*d) + - beta2*(tau + 2.0*d - y*(3.0*d2 + + y*(d - d3 + y*(d2 - tau*d3 + d4))))/tau; + } + + //do not apply density correction + //G4double cden = material->GetIonisation()->GetCdensity(); + //G4double mden = material->GetIonisation()->GetMdensity(); + //G4double aden = material->GetIonisation()->GetAdensity(); + //G4double x0den = material->GetIonisation()->GetX0density(); + //G4double x1den = material->GetIonisation()->GetX1density(); + //G4double x = log(bg2)/twoln10; + + //if (x >= x0den) { + // dedx -= twoln10*x - cden; + // if (x < x1den) dedx -= aden*pow(x1den-x, mden); + //} + + // now you can compute the total ionization loss + dedx *= twopi_mc2_rcl2*electronDensity/beta2; + if (dedx < 0.0) dedx = 0.0; + + // lowenergy extrapolation + + if (lowEnergy) { + + if (kineticEnergy >= lowLimit) dedx *= sqrt(tkin/kineticEnergy); + else dedx *= sqrt(tkin*kineticEnergy)/lowLimit; + + } + return dedx; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity2/src/PhysicsList.cc b/examples/extended/medical/fanoCavity2/src/PhysicsList.cc new file mode 100644 index 0000000000..748e30348f --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/PhysicsList.cc @@ -0,0 +1,249 @@ +// +// ******************************************************************** +// * 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: PhysicsList.cc,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "PhysicsList.hh" +#include "PhysicsListMessenger.hh" +#include "DetectorConstruction.hh" + +#include "G4ParticleDefinition.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" + +#include "G4ProcessManager.hh" +#include "G4LossTableManager.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PhysicsList::PhysicsList(DetectorConstruction* det) +: G4VUserPhysicsList(), detector(det) +{ + defaultCutValue = 10.*km; + singleScattering = false; + registerBrem = false; + pMessenger = new PhysicsListMessenger(this); + SetVerboseLevel(1); + + G4LossTableManager::Instance(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PhysicsList::~PhysicsList() +{ delete pMessenger; } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void PhysicsList::ConstructParticle() +{ + G4Geantino::GeantinoDefinition(); + G4Gamma::GammaDefinition(); + + G4Electron::ElectronDefinition(); + G4Positron::PositronDefinition(); + + G4Proton::ProtonDefinition(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void PhysicsList::ConstructProcess() +{ + AddTransportation(); + ConstructEM(); + AddStepMax(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4ComptonScattering.hh" +#include "G4GammaConversion.hh" +#include "G4PhotoElectricEffect.hh" + +#include "G4MultipleScattering.hh" +#include "G4CoulombScattering.hh" + +#include "G4eIonisation.hh" +#include "MyMollerBhabhaModel.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +#include "G4hIonisation.hh" + +#include "G4EmProcessOptions.hh" +#include "G4MscStepLimitType.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + +void PhysicsList::ConstructEM() +{ + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + G4String particleName = particle->GetParticleName(); + G4int iAlong = 0, iPost = 0; + + if (particleName == "gamma") { + + pmanager->AddDiscreteProcess(new G4PhotoElectricEffect); + pmanager->AddDiscreteProcess(new G4ComptonScattering); + pmanager->AddDiscreteProcess(new G4GammaConversion); + + } else if (particleName == "e-") { + + if (singleScattering) + pmanager->AddProcess(new G4CoulombScattering, -1, -1, ++iPost); + else + pmanager->AddProcess(new G4MultipleScattering, -1, ++iAlong, ++iPost); + + G4eIonisation* eIoni = new G4eIonisation(); + eIoni->SetEmModel(new MyMollerBhabhaModel); + pmanager->AddProcess(eIoni, -1, ++iAlong, ++iPost); + + if (registerBrem) + pmanager->AddProcess(new G4eBremsstrahlung, -1, ++iAlong, ++iPost); + + } else if (particleName == "e+") { + + if (singleScattering) + pmanager->AddProcess(new G4CoulombScattering, -1, -1, ++iPost); + else + pmanager->AddProcess(new G4MultipleScattering, -1, ++iAlong, ++iPost); + + G4eIonisation* pIoni = new G4eIonisation(); + pIoni->SetEmModel(new MyMollerBhabhaModel); + pmanager->AddProcess(pIoni, -1, ++iAlong, ++iPost); + + if (registerBrem) { + pmanager->AddProcess(new G4eBremsstrahlung, -1, ++iAlong, ++iPost); + pmanager->AddProcess(new G4eplusAnnihilation, 0, -1, ++iPost); + } + + } else if (particleName == "proton") { + + if (singleScattering) + pmanager->AddProcess(new G4CoulombScattering, -1, -1, ++iPost); + else + pmanager->AddProcess(new G4MultipleScattering, -1, ++iAlong, ++iPost); + + pmanager->AddProcess(new G4hIonisation, -1, ++iAlong, ++iPost); + } + } + + // Em options + // + G4EmProcessOptions emOptions; + + //multiple scattering + // + emOptions.SetMscStepLimitation(fUseDistanceToBoundary); + emOptions.SetSkin(2.); + + //physics tables + // + emOptions.SetMinEnergy(100*eV); + emOptions.SetMaxEnergy(10*GeV); + emOptions.SetDEDXBinning(800); + emOptions.SetLambdaBinning(800); + + //energy loss + // + emOptions.SetStepFunction(0.2, 10*um); + emOptions.SetLinearLossLimit(1.e-6); + + //build CSDA range + // + emOptions.SetBuildCSDARange(true); + emOptions.SetMaxEnergyForCSDARange(10*GeV); + emOptions.SetDEDXBinningForCSDARange(800); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "StepMax.hh" + +void PhysicsList::AddStepMax() +{ + // Step limitation seen as a process + StepMax* stepMaxProcess = new StepMax(); + + theParticleIterator->reset(); + while ((*theParticleIterator)()){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + + if (stepMaxProcess->IsApplicable(*particle)) + { + pmanager ->AddDiscreteProcess(stepMaxProcess); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4UnitsTable.hh" + +void PhysicsList::SetCuts() +{ + if (verboseLevel >0){ + G4cout << "PhysicsList::SetCuts:"; + G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; + } + + // 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(defaultCutValue, "gamma"); + SetCutValue(defaultCutValue, "e-"); + SetCutValue(defaultCutValue, "e+"); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void PhysicsList::SingleCoulombScattering(G4bool flag) +{ + singleScattering = flag; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void PhysicsList::RegisterBrem(G4bool flag) +{ + registerBrem = flag; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + + + diff --git a/examples/extended/medical/fanoCavity2/src/PhysicsListMessenger.cc b/examples/extended/medical/fanoCavity2/src/PhysicsListMessenger.cc new file mode 100644 index 0000000000..b5e60cf46e --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/PhysicsListMessenger.cc @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * 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/10/15 16:20:23 maire 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 "G4UIcmdWithABool.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys) +:pPhysicsList(pPhys) +{ + physDir = new G4UIdirectory("/testem/phys/"); + physDir->SetGuidance("physics list commands"); + + singleScat = new G4UIcmdWithABool("/testem/phys/singleScattering",this); + singleScat->SetGuidance("apply single Coulomb scattering process"); + singleScat->SetParameterName("flag",true); + singleScat->SetDefaultValue(true); + singleScat->AvailableForStates(G4State_PreInit); + + brem = new G4UIcmdWithABool("/testem/phys/registerBrem",this); + brem->SetGuidance("register Brems in PhysicsList"); + brem->SetParameterName("flag",true); + brem->SetDefaultValue(true); + brem->AvailableForStates(G4State_PreInit); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PhysicsListMessenger::~PhysicsListMessenger() +{ + delete singleScat; + delete brem; + delete physDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void PhysicsListMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) +{ + if (command == singleScat) + {pPhysicsList->SingleCoulombScattering(singleScat->GetNewBoolValue(newValue));} + + if (command == brem) + {pPhysicsList->RegisterBrem(brem->GetNewBoolValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity2/src/PrimaryGeneratorAction.cc b/examples/extended/medical/fanoCavity2/src/PrimaryGeneratorAction.cc new file mode 100644 index 0000000000..5eb8999e80 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/PrimaryGeneratorAction.cc @@ -0,0 +1,103 @@ +// +// ******************************************************************** +// * 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/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "PrimaryGeneratorAction.hh" + +#include "DetectorConstruction.hh" +#include "HistoManager.hh" + +#include "G4Event.hh" +#include "G4ParticleGun.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" +#include "Randomize.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PrimaryGeneratorAction::PrimaryGeneratorAction(DetectorConstruction* det, + HistoManager* histo) +:detector(det),histoManager(histo) +{ + particleGun = new G4ParticleGun(1); + G4ParticleDefinition* particle + = G4ParticleTable::GetParticleTable()->FindParticle("e-"); + particleGun->SetParticleDefinition(particle); + particleGun->SetParticleEnergy(1*MeV); + particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.)); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +PrimaryGeneratorAction::~PrimaryGeneratorAction() +{ + delete particleGun; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void PrimaryGeneratorAction::RunInitialisation(G4double effWall, G4double massR) +{ + //this function is called at beginning of run + // + cavityThickness = detector->GetCavityThickness(); + effWallThick = effWall; + massWallRatio = massR; + + Nwall = Ncavity = 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) +{ + //this function is called at the begining of event + // + G4double Zvertex; + if (G4UniformRand() < massWallRatio) { + Zvertex = 0.5*cavityThickness + G4UniformRand()*effWallThick; + if (G4UniformRand() < 0.5) Zvertex = -Zvertex; + Nwall++; + } else { + Zvertex = (G4UniformRand() - 0.5)*cavityThickness; + Ncavity++; + } + + particleGun->SetParticlePosition(G4ThreeVector(0., 0., Zvertex)); + particleGun->GeneratePrimaryVertex(anEvent); + + //histograms + // + histoManager->FillHisto(1,Zvertex); + histoManager->FillHisto(2,particleGun->GetParticleEnergy()); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/medical/fanoCavity2/src/RunAction.cc b/examples/extended/medical/fanoCavity2/src/RunAction.cc new file mode 100644 index 0000000000..40ee0a5665 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/RunAction.cc @@ -0,0 +1,360 @@ +// +// ******************************************************************** +// * 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.3 2007/11/05 13:19:16 maire 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 "HistoManager.hh" + +#include "G4Run.hh" +#include "G4RunManager.hh" +#include "G4UnitsTable.hh" +#include "G4EmCalculator.hh" +#include "G4Electron.hh" + +#include "Randomize.hh" +#include + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +RunAction::RunAction(DetectorConstruction* det, PrimaryGeneratorAction* kin, + HistoManager* histo) +:detector(det),kinematic(kin),ProcCounter(0),histoManager(histo) +{ } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +RunAction::~RunAction() +{ } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void RunAction::BeginOfRunAction(const G4Run* aRun) +{ + // do not save Rndm status + G4RunManager::GetRunManager()->SetRandomNumberStore(false); + CLHEP::HepRandom::showEngineStatus(); + + G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; + + G4int NbofEvents = aRun->GetNumberOfEventToBeProcessed(); + if (NbofEvents == 0) return; + + //run conditions + // + G4ParticleDefinition* particleGun + = kinematic->GetParticleGun()->GetParticleDefinition(); + G4String partName = particleGun->GetParticleName(); + energyGun = kinematic->GetParticleGun()->GetParticleEnergy(); + + //geometry : effective wall volume + // + G4double cavityThickness = detector->GetCavityThickness(); + G4Material* mateCavity = detector->GetCavityMaterial(); + G4double densityCavity = mateCavity->GetDensity(); + massCavity = cavityThickness*densityCavity; + + G4double wallThickness = detector->GetWallThickness(); + G4Material* mateWall = detector->GetWallMaterial(); + G4double densityWall = mateWall->GetDensity(); + + G4EmCalculator emCal; + G4double RangeWall = emCal.GetCSDARange(energyGun,particleGun,mateWall); + G4double factor = 1.2; + G4double effWallThick = factor*RangeWall; + if ((effWallThick > wallThickness)||(effWallThick <= 0.)) + effWallThick = wallThickness; + massWall = 2*effWallThick*densityWall; + + G4double massTotal = massWall + massCavity; + G4double massWallRatio = massWall/massTotal; + kinematic->RunInitialisation(effWallThick, massWallRatio ); + + G4double massRatio = massCavity/massWall; + + //check radius + // + G4double worldRadius = detector->GetWorldRadius(); + G4double RangeCavity = emCal.GetCSDARange(energyGun,particleGun,mateCavity); + + std::ios::fmtflags mode = G4cout.flags(); + G4cout.setf(std::ios::fixed,std::ios::floatfield); + G4int prec = G4cout.precision(3); + + G4cout << "\n ======================== run conditions =====================\n"; + + G4cout << "\n The run will be " << NbofEvents << " "<< partName << " of " + << G4BestUnit(energyGun,"Energy") << " through 2*" + << G4BestUnit(effWallThick,"Length") << " of " + << mateWall->GetName() << " (density: " + << G4BestUnit(densityWall,"Volumic Mass") << "); Mass/cm2 = " + << G4BestUnit(massWall*cm2,"Mass") + << "\n csdaRange: " << G4BestUnit(RangeWall,"Length") << G4endl; + + G4cout << "\n the cavity is " + << G4BestUnit(cavityThickness,"Length") << " of " + << mateCavity->GetName() << " (density: " + << G4BestUnit(densityCavity,"Volumic Mass") << "); Mass/cm2 = " + << G4BestUnit(massCavity*cm2,"Mass") + << " --> massRatio = " << std::setprecision(6) << massRatio << G4endl; + + G4cout.precision(3); + G4cout << " World radius: " << G4BestUnit(worldRadius,"Length") + << "; range in cavity: " << G4BestUnit(RangeCavity,"Length") + << G4endl; + + G4cout << "\n ============================================================\n"; + + //stopping power from EmCalculator + // + G4double dedxWall = + emCal.GetDEDX(energyGun,G4Electron::Electron(),mateWall); + dedxWall /= densityWall; + G4double dedxCavity = + emCal.GetDEDX(energyGun,G4Electron::Electron(),mateCavity); + dedxCavity /= densityCavity; + + G4cout << std::setprecision(4) + << "\n StoppingPower in wall = " + << G4BestUnit(dedxWall,"Energy*Surface/Mass") + << "\n in cavity = " + << G4BestUnit(dedxCavity,"Energy*Surface/Mass") + << G4endl; + + //process counter + // + ProcCounter = new ProcessesCount; + + //charged particles and energy flow in cavity + // + PartFlowCavity[0] = PartFlowCavity[1] = 0; + EnerFlowCavity[0] = EnerFlowCavity[1] = 0.; + + //total energy deposit and charged track segment in cavity + // + EdepCavity = EdepCavity2 = trkSegmCavity = 0.; + nbEventCavity = 0; + + //stepLenth of charged particles + // + stepWall = stepWall2 = stepCavity = stepCavity2 =0.; + nbStepWall = nbStepCavity = 0; + + //histograms + // + histoManager->book(); + + // reset default formats + G4cout.setf(mode,std::ios::floatfield); + G4cout.precision(prec); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void RunAction::CountProcesses(G4String procName) +{ + //does the process already encounted ? + size_t nbProc = ProcCounter->size(); + size_t i = 0; + while ((iGetName()!=procName)) i++; + if (i == nbProc) ProcCounter->push_back( new OneProcessCount(procName)); + + (*ProcCounter)[i]->Count(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void RunAction::SurveyConvergence(G4int NbofEvents) +{ + if (NbofEvents == 0) return; + + + //beam fluence + // + G4int Nwall = kinematic->GetWallCount(); + G4int Ncavity = kinematic->GetCavityCount(); + G4double Iwall = Nwall/massWall; + G4double Icavity = Ncavity/massCavity; + G4double Iratio = Icavity/Iwall; + G4double Itot = NbofEvents/(massWall+massCavity); + G4double energyFluence = energyGun*Itot; + + //total dose in cavity + // + G4double doseCavity = EdepCavity/massCavity; + G4double ratio = doseCavity/energyFluence; + G4double err = 100*(ratio-1.); + + std::ios::fmtflags mode = G4cout.flags(); + G4cout.setf(std::ios::fixed,std::ios::floatfield); + G4int prec = G4cout.precision(5); + + G4cout << "\n--->evntNb= " << NbofEvents + << " Nwall= " << Nwall + << " Ncav= " << Ncavity + << " Ic/Iw= " << Iratio + << " Ne-_cav= " << PartFlowCavity[0] + << " doseCavity/Ebeam= " << ratio + << " (100*(ratio-1) = " << err << " %)" + << G4endl; + + // reset default formats + G4cout.setf(mode,std::ios::floatfield); + G4cout.precision(prec); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void RunAction::EndOfRunAction(const G4Run* aRun) +{ + std::ios::fmtflags mode = G4cout.flags(); + G4cout.setf(std::ios::fixed,std::ios::floatfield); + G4int prec = G4cout.precision(3); + + G4int NbofEvents = aRun->GetNumberOfEvent(); + if (NbofEvents == 0) return; + + //frequency of processes + // + G4cout << "\n Process calls frequency --->"; + for (size_t i=0; i< ProcCounter->size();i++) { + G4String procName = (*ProcCounter)[i]->GetName(); + G4int count = (*ProcCounter)[i]->GetCounter(); + G4cout << " " << procName << "= " << count; + } + G4cout << G4endl; + + //charged particle flow in cavity + // + G4cout + << "\n Charged particle flow in cavity :" + << "\n Enter --> nbParticles = " << PartFlowCavity[0] + << "\t Energy = " << G4BestUnit (EnerFlowCavity[0], "Energy") + << "\n Exit --> nbParticles = " << PartFlowCavity[1] + << "\t Energy = " << G4BestUnit (EnerFlowCavity[1], "Energy") + << G4endl; + + if (PartFlowCavity[0] == 0) return; + + //beam fluence + // + G4int Nwall = kinematic->GetWallCount(); + G4int Ncavity = kinematic->GetCavityCount(); + G4double Iwall = Nwall/massWall; + G4double Icavity = Ncavity/massCavity; + G4double Iratio = Icavity/Iwall; + G4double Itot = NbofEvents/(massWall+massCavity); + G4double energyFluence = energyGun*Itot; + + G4cout.precision(5); + G4cout + << "\n beamFluence in wall = " << Nwall + << "\t in cavity = " << Ncavity + << "\t Icav/Iwall = " << Iratio + << "\t energyFluence = " << energyFluence/(MeV*cm2/mg) << " MeV*cm2/mg" + << G4endl; + + //error on Edep in cavity + // + if (nbEventCavity == 0) return; + G4double meanEdep = EdepCavity/nbEventCavity; + G4double meanEdep2 = EdepCavity2/nbEventCavity; + G4double varianceEdep = meanEdep2 - meanEdep*meanEdep; + G4double dEoverE = 0.; + if(varianceEdep>0.) dEoverE = std::sqrt(varianceEdep/nbEventCavity)/meanEdep; + + //total dose in cavity + // + G4double doseCavity = EdepCavity/massCavity; + G4double ratio = doseCavity/energyFluence, error = ratio*dEoverE; + + G4cout + << "\n Total edep in cavity = " << G4BestUnit(EdepCavity,"Energy") + << " +- " << 100*dEoverE << " %" + << "\n Total dose in cavity = " << doseCavity/(MeV*cm2/mg) << " MeV*cm2/mg" + << " +- " << 100*dEoverE << " %" + << "\n\n DoseCavity/EnergyFluence = " << ratio + << " +- " << error << G4endl; + + + //track length in cavity + G4double meantrack = trkSegmCavity/PartFlowCavity[0]; + + G4cout.precision(4); + G4cout + << "\n Total charged trackLength in cavity = " + << G4BestUnit(trkSegmCavity,"Length") + << " (mean value = " << G4BestUnit(meantrack,"Length") << ")" + << G4endl; + + //compute mean step size of charged particles + // + stepWall /= nbStepWall; stepWall2 /= nbStepWall; + G4double rms = stepWall2 - stepWall*stepWall; + if (rms>0.) rms = std::sqrt(rms); else rms = 0.; + G4double nbTrackWall = kinematic->GetWallCount(); + + G4cout + << "\n StepSize of ch. tracks in wall = " + << G4BestUnit(stepWall,"Length") << " +- " << G4BestUnit( rms,"Length") + << "\t (nbSteps/track = " << double(nbStepWall)/nbTrackWall << ")"; + + stepCavity /= nbStepCavity; stepCavity2 /= nbStepCavity; + rms = stepCavity2 - stepCavity*stepCavity; + if (rms>0.) rms = std::sqrt(rms); else rms = 0.; + + G4cout + << "\n StepSize of ch. tracks in cavity = " + << G4BestUnit(stepCavity,"Length") << " +- " << G4BestUnit( rms,"Length") + << "\t (nbSteps/track = " << double(nbStepCavity)/PartFlowCavity[0] << ")"; + + G4cout << G4endl; + + // reset default formats + G4cout.setf(mode,std::ios::floatfield); + G4cout.precision(prec); + + // delete and remove all contents in ProcCounter + while (ProcCounter->size()>0){ + OneProcessCount* aProcCount=ProcCounter->back(); + ProcCounter->pop_back(); + delete aProcCount; + } + delete ProcCounter; + + // save histograms + histoManager->save(); + + // show Rndm status + CLHEP::HepRandom::showEngineStatus(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity2/src/StepMax.cc b/examples/extended/medical/fanoCavity2/src/StepMax.cc new file mode 100644 index 0000000000..ea48199085 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/StepMax.cc @@ -0,0 +1,81 @@ +// +// ******************************************************************** +// * 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: StepMax.cc,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "StepMax.hh" +#include "StepMaxMessenger.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +StepMax::StepMax(const G4String& processName) + : G4VDiscreteProcess(processName),MaxChargedStep(DBL_MAX) +{ + pMess = new StepMaxMessenger(this); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +StepMax::~StepMax() { delete pMess; } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool StepMax::IsApplicable(const G4ParticleDefinition& particle) +{ + return (particle.GetPDGCharge() != 0. && !particle.IsShortLived()); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void StepMax::SetMaxStep(G4double step) {MaxChargedStep = step;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double StepMax::PostStepGetPhysicalInteractionLength( const G4Track&, + G4double, + G4ForceCondition* condition ) +{ + // condition is set to "Not Forced" + *condition = NotForced; + + return MaxChargedStep; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4VParticleChange* StepMax::PostStepDoIt(const G4Track& aTrack, const G4Step&) +{ + // do nothing + aParticleChange.Initialize(aTrack); + return &aParticleChange; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + diff --git a/examples/extended/medical/fanoCavity2/src/StepMaxMessenger.cc b/examples/extended/medical/fanoCavity2/src/StepMaxMessenger.cc new file mode 100644 index 0000000000..91f5bbd782 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/StepMaxMessenger.cc @@ -0,0 +1,64 @@ +// +// ******************************************************************** +// * 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: StepMaxMessenger.cc,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "StepMaxMessenger.hh" + +#include "StepMax.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +StepMaxMessenger::StepMaxMessenger(StepMax* stepM) +:stepMax(stepM) +{ + StepMaxCmd = new G4UIcmdWithADoubleAndUnit("/testem/stepMax",this); + StepMaxCmd->SetGuidance("Set max allowed step length"); + StepMaxCmd->SetParameterName("mxStep",false); + StepMaxCmd->SetRange("mxStep>0."); + StepMaxCmd->SetUnitCategory("Length"); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +StepMaxMessenger::~StepMaxMessenger() +{ + delete StepMaxCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void StepMaxMessenger::SetNewValue(G4UIcommand* command, G4String newValue) +{ + if (command == StepMaxCmd) + { stepMax->SetMaxStep(StepMaxCmd->GetNewDoubleValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity2/src/SteppingAction.cc b/examples/extended/medical/fanoCavity2/src/SteppingAction.cc new file mode 100644 index 0000000000..8c525145ce --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/SteppingAction.cc @@ -0,0 +1,153 @@ +// +// ******************************************************************** +// * 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: SteppingAction.cc,v 1.2 2007/10/31 16:16:20 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "SteppingAction.hh" +#include "DetectorConstruction.hh" +#include "RunAction.hh" +#include "EventAction.hh" +#include "TrackingAction.hh" +#include "HistoManager.hh" + +#include "G4SteppingManager.hh" +#include "G4Gamma.hh" +#include "G4UnitsTable.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +SteppingAction::SteppingAction(DetectorConstruction* det, RunAction* RuAct, + EventAction* EvAct,TrackingAction* TrAct, + HistoManager* histo) +:detector(det), runAction(RuAct), eventAction(EvAct), trackAction(TrAct), + histoManager(histo), wall(0), cavity(0) +{ + first = true; + trackSegm = 0.; + directionIn = 0.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +SteppingAction::~SteppingAction() +{ } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void SteppingAction::UserSteppingAction(const G4Step* step) +{ + //get detector pointers + if (first) { + wall = detector->GetWall(); + cavity = detector->GetCavity(); + first = false; + } + + //get volume + // + G4StepPoint* point1 = step->GetPreStepPoint(); + G4VPhysicalVolume* volume = point1->GetTouchableHandle()->GetVolume(); + + // count processes + // + G4StepPoint* point2 = step->GetPostStepPoint(); + const G4VProcess* process = point2->GetProcessDefinedStep(); + if (process) runAction->CountProcesses(process->GetProcessName()); + + //energy deposit in cavity + // + if (volume == cavity) { + G4double edep = step->GetTotalEnergyDeposit(); + if (edep > 0.) trackAction->AddEdepCavity(edep); + } + + //keep only charged particles + // + if (step->GetTrack()->GetDefinition() == G4Gamma::Gamma()) return; + + //step size of charged particles + // + G4int id; + G4double steplen = step->GetStepLength(); + if (volume == wall) {runAction->StepInWall (steplen); id = 9;} + else {runAction->StepInCavity(steplen); id = 10;} + histoManager->FillHisto(id,steplen); + + //last step before hitting the cavity + // + if ((volume == wall) && (point2->GetStepStatus() == fGeomBoundary)) { + directionIn = point1->GetMomentumDirection(); + } + + //keep only charged particles within cavity + // + if (volume == wall) return; + + G4double ekin1 = point1->GetKineticEnergy(); + G4double ekin2 = point2->GetKineticEnergy(); + + //first step in cavity + // + if (point1->GetStepStatus() == fGeomBoundary) { + trackSegm = 0.; + G4ThreeVector vertex = step->GetTrack()->GetVertexPosition(); + histoManager->FillHisto(4,vertex.z()); + runAction->FlowInCavity(0,ekin1); + histoManager->FillHisto(5,ekin1); + if (steplen>0.) { + G4ThreeVector directionOut = + (point2->GetPosition() - point1->GetPosition()).unit(); + G4ThreeVector normal = point1->GetTouchableHandle()->GetSolid() + ->SurfaceNormal(point1->GetPosition()); + histoManager->FillHisto(6,std::acos(-directionIn*normal)); + histoManager->FillHisto(7,std::acos(-directionOut*normal)); + } + } + + //within cavity + // + if (step->GetTrack()->GetCurrentStepNumber() == 1) trackSegm = 0.; + trackSegm += steplen; + if (ekin2 <= 0.) { + runAction->AddTrakCavity(trackSegm); + histoManager->FillHisto(8,trackSegm); + } + + //exit cavity + // + if (point2->GetStepStatus() == fGeomBoundary) { + runAction->FlowInCavity(1,ekin2); + runAction->AddTrakCavity(trackSegm); + histoManager->FillHisto(8,trackSegm); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + diff --git a/examples/extended/medical/fanoCavity2/src/SteppingVerbose.cc b/examples/extended/medical/fanoCavity2/src/SteppingVerbose.cc new file mode 100644 index 0000000000..3d23397883 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/SteppingVerbose.cc @@ -0,0 +1,180 @@ +// +// ******************************************************************** +// * 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: SteppingVerbose.cc,v 1.1 2007/10/15 16:20:23 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "SteppingVerbose.hh" + +#include "G4SteppingManager.hh" +#include "G4UnitsTable.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +SteppingVerbose::SteppingVerbose() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +SteppingVerbose::~SteppingVerbose() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void SteppingVerbose::StepInfo() +{ + CopyState(); + + G4int prec = G4cout.precision(3); + + if( verboseLevel >= 1 ){ + if( verboseLevel >= 4 ) VerboseTrack(); + if( verboseLevel >= 3 ){ + G4cout << G4endl; + G4cout << std::setw( 5) << "#Step#" << " " + << std::setw( 6) << "X" << " " + << std::setw( 6) << "Y" << " " + << std::setw( 6) << "Z" << " " + << std::setw( 9) << "KineE" << " " + << std::setw( 9) << "dEStep" << " " + << std::setw(10) << "StepLeng" + << std::setw(10) << "TrakLeng" + << std::setw(10) << "Volume" << " " + << std::setw(10) << "Process" << G4endl; + } + + G4cout << std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length") + << " "; + + // if( fStepStatus != fWorldBoundary){ + if( fTrack->GetNextVolume() != 0 ) { + G4cout << std::setw(10) << fTrack->GetVolume()->GetName(); + } else { + G4cout << std::setw(10) << "OutOfWorld"; + } + + if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){ + G4cout << " " + << std::setw(10) << fStep->GetPostStepPoint() + ->GetProcessDefinedStep()->GetProcessName(); + } else { + G4cout << " UserLimit"; + } + + G4cout << G4endl; + + if( verboseLevel == 2 ){ + G4int tN2ndariesTot = fN2ndariesAtRestDoIt + + fN2ndariesAlongStepDoIt + + fN2ndariesPostStepDoIt; + if(tN2ndariesTot>0){ + G4cout << " :----- List of 2ndaries - " + << "#SpawnInStep=" << std::setw(3) << tN2ndariesTot + << "(Rest=" << std::setw(2) << fN2ndariesAtRestDoIt + << ",Along=" << std::setw(2) << fN2ndariesAlongStepDoIt + << ",Post=" << std::setw(2) << fN2ndariesPostStepDoIt + << "), " + << "#SpawnTotal=" << std::setw(3) << (*fSecondary).size() + << " ---------------" + << G4endl; + + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; + lp1<(*fSecondary).size(); lp1++){ + G4cout << " : " + << std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length") + << std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length") + << std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length") + << std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy") + << std::setw(10) + << (*fSecondary)[lp1]->GetDefinition()->GetParticleName(); + G4cout << G4endl; + } + + G4cout << " :-----------------------------" + << "----------------------------------" + << "-- EndOf2ndaries Info ---------------" + << G4endl; + } + } + + } + G4cout.precision(prec); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void SteppingVerbose::TrackingStarted() +{ + + CopyState(); +G4int prec = G4cout.precision(3); + if( verboseLevel > 0 ){ + + G4cout << std::setw( 5) << "Step#" << " " + << std::setw( 6) << "X" << " " + << std::setw( 6) << "Y" << " " + << std::setw( 6) << "Z" << " " + << std::setw( 9) << "KineE" << " " + << std::setw( 9) << "dEStep" << " " + << std::setw(10) << "StepLeng" + << std::setw(10) << "TrakLeng" + << std::setw(10) << "Volume" << " " + << std::setw(10) << "Process" << G4endl; + + G4cout << std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length") + << " "; + + if(fTrack->GetNextVolume()){ + G4cout << std::setw(10) << fTrack->GetVolume()->GetName(); + } else { + G4cout << std::setw(10) << "OutOfWorld"; + } + G4cout << " initStep" << G4endl; + } + G4cout.precision(prec); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/medical/fanoCavity2/src/TrackingAction.cc b/examples/extended/medical/fanoCavity2/src/TrackingAction.cc new file mode 100644 index 0000000000..46f215d39a --- /dev/null +++ b/examples/extended/medical/fanoCavity2/src/TrackingAction.cc @@ -0,0 +1,71 @@ +// +// ******************************************************************** +// * 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: TrackingAction.cc,v 1.2 2007/10/31 16:16:20 maire Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "TrackingAction.hh" +#include "RunAction.hh" +#include "HistoManager.hh" + +#include "G4Track.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +TrackingAction::TrackingAction(RunAction* RuAct, HistoManager* histo) +:runAction(RuAct), histoManager(histo) +{ } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +TrackingAction::~TrackingAction() +{ } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void TrackingAction::PreUserTrackingAction(const G4Track*) +{ + //initialize edep cavity per track + // + EdepCavity = 0.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void TrackingAction::PostUserTrackingAction(const G4Track*) +{ + //sum energy in cavity + // + if (EdepCavity > 0.) { + runAction->AddEdepCavity(EdepCavity); + histoManager->FillHisto(11,EdepCavity); + } + } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/medical/fanoCavity2/stepfunction.mac b/examples/extended/medical/fanoCavity2/stepfunction.mac new file mode 100644 index 0000000000..02cd32f18a --- /dev/null +++ b/examples/extended/medical/fanoCavity2/stepfunction.mac @@ -0,0 +1,18 @@ +# $Id: stepfunction.mac,v 1.1 2007/10/15 16:29:06 maire Exp $ +# +/control/verbose 2 +/run/verbose 2 +# +/run/initialize +# +/process/inactivate msc +/process/eLoss/fluct false +# +/process/eLoss/StepFunction 1 10 um +# +/testem/histo/setFileName nothing.dr100 +/testem/histo/setHisto 9 100 0 5 mm #step size in wall +# +/testem/event/printModulo 200000 +# +/run/beamOn 2000000 diff --git a/examples/extended/medical/fanoCavity2/vis.mac b/examples/extended/medical/fanoCavity2/vis.mac new file mode 100644 index 0000000000..aeb7204728 --- /dev/null +++ b/examples/extended/medical/fanoCavity2/vis.mac @@ -0,0 +1,33 @@ +# +# Macro file for the initialization phase of "TestEm6.cc" +# +# Sets some default verbose +# and initializes the graphic. +# +/control/verbose 2 +/run/verbose 2 +# +/run/initialize +# +# Create empty scene ("world" is default) +/vis/scene/create +# +# Create a scene handler for a specific graphics system +# Edit the next line(s) to choose another graphic system +# +/vis/open OGLIX +# +#/vis/open DAWNFILE +# +# Draw scene +/vis/viewer/set/viewpointThetaPhi 90 180 deg +/vis/viewer/zoom 1.4 +/vis/viewer/flush +# +# for drawing the tracks +# if too many tracks cause core dump => storeTrajectory 0 +/tracking/storeTrajectory 1 +/vis/scene/endOfEventAction accumulate +# +/testem/event/drawTracks all + diff --git a/examples/extended/optical/LXe/History b/examples/extended/optical/LXe/History index efa523f828..2ad4465db2 100644 --- a/examples/extended/optical/LXe/History +++ b/examples/extended/optical/LXe/History @@ -1,4 +1,4 @@ -$Id: History,v 1.8 2006/09/14 22:26:55 gum Exp $ +$Id: History,v 1.9 2007/09/30 22:33:42 gum Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,9 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +30 Sept 2007 Peter Gumplinger (LXe-V09-00-00) +- adjust to the G4Cerenkov process now being a G4VDiscreteProcess + 14 Sept 2006 Peter Gumplinger (LXe-V08-01-00) - bug fix (889): set the pointers to G4MaterialPropertiesTable LXe_mt and MPTPStyrene to NULL in the class constructor of LXeDetectorConstruction. diff --git a/examples/extended/optical/LXe/LXe.out b/examples/extended/optical/LXe/LXe.out index 6399519c64..405f9c8f48 100644 --- a/examples/extended/optical/LXe/LXe.out +++ b/examples/extended/optical/LXe/LXe.out @@ -1,5 +1,5 @@ ********************************************** - Geant4 version $Name: geant4-09-00 $ + Geant4 version $Name: geant4-09-01 $ (12-December-2003) Copyright : Geant4 Collaboration ********************************************** diff --git a/examples/extended/optical/LXe/src/LXeOpticalPhysics.cc b/examples/extended/optical/LXe/src/LXeOpticalPhysics.cc index c3eeb62113..4c508d420b 100644 --- a/examples/extended/optical/LXe/src/LXeOpticalPhysics.cc +++ b/examples/extended/optical/LXe/src/LXeOpticalPhysics.cc @@ -88,7 +88,8 @@ void LXeOpticalPhysics::ConstructProcess() G4ParticleDefinition* particle = theParticleIterator->value(); pManager = particle->GetProcessManager(); if(theCerenkovProcess->IsApplicable(*particle)){ - pManager->AddContinuousProcess(theCerenkovProcess); + pManager->AddProcess(theCerenkovProcess); + pManager->SetProcessOrdering(theCerenkovProcess,idxPostStep); } if(theScintProcess->IsApplicable(*particle)){ pManager->AddProcess(theScintProcess); diff --git a/examples/extended/parallel/ExDiane/Brachy.cc b/examples/extended/parallel/ExDiane/Brachy.cc index ebe581ef1e..2e16352e63 100644 --- a/examples/extended/parallel/ExDiane/Brachy.cc +++ b/examples/extended/parallel/ExDiane/Brachy.cc @@ -25,7 +25,7 @@ // // // $Id: Brachy.cc -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // GEANT 4 - ExDiane example diff --git a/examples/extended/parallel/ExDiane/include/BrachyAnalysisManager.hh b/examples/extended/parallel/ExDiane/include/BrachyAnalysisManager.hh index 732a4461c9..dca37f1f76 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyAnalysisManager.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyAnalysisManager.hh @@ -29,7 +29,7 @@ // // // $Id: BrachyAnalysisManager.hh,v 1.3 2006/06/29 17:30:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ********************************** // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyDetectorConstruction.hh b/examples/extended/parallel/ExDiane/include/BrachyDetectorConstruction.hh index 43ca94c91d..b1da557104 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyDetectorConstruction.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyDetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyDetectorConstruction.hh,v 1.3 2006/06/29 17:30:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // **************************************** // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyDetectorConstructionI.hh b/examples/extended/parallel/ExDiane/include/BrachyDetectorConstructionI.hh index 4df0499362..a077e75f87 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyDetectorConstructionI.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyDetectorConstructionI.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyDetectorConstructionI.hh,v 1.3 2006/06/29 17:31:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // **************************************** // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyDetectorConstructionIr.hh b/examples/extended/parallel/ExDiane/include/BrachyDetectorConstructionIr.hh index c0ebd923e4..7c61c00886 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyDetectorConstructionIr.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyDetectorConstructionIr.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyDetectorConstructionIr.hh,v 1.3 2006/06/29 17:31:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // **************************************** // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyDetectorConstructionLeipzig.hh b/examples/extended/parallel/ExDiane/include/BrachyDetectorConstructionLeipzig.hh index 69080ab390..3860261cd6 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyDetectorConstructionLeipzig.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyDetectorConstructionLeipzig.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyDetectorConstructionLeipzig.hh,v 1.3 2006/06/29 17:31:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Author: Susanna Guatelli // diff --git a/examples/extended/parallel/ExDiane/include/BrachyDetectorMessenger.hh b/examples/extended/parallel/ExDiane/include/BrachyDetectorMessenger.hh index 43658ce70b..a9be842cf9 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyDetectorMessenger.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyDetectorMessenger.hh @@ -33,7 +33,7 @@ // ***************************************** // // $Id: BrachyDetectorMessenger.hh,v 1.3 2006/06/29 17:31:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // #ifndef BrachyDetectorMessenger_h diff --git a/examples/extended/parallel/ExDiane/include/BrachyEventAction.hh b/examples/extended/parallel/ExDiane/include/BrachyEventAction.hh index cc5d5e72a3..5eae47efa3 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyEventAction.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyEventAction.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyEventAction.hh,v 1.3 2006/06/29 17:31:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Code developed by: // S.Guatelli diff --git a/examples/extended/parallel/ExDiane/include/BrachyFactory.hh b/examples/extended/parallel/ExDiane/include/BrachyFactory.hh index 71f4a48e8c..791f3c14e7 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyFactory.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyFactory.hh @@ -26,7 +26,7 @@ // Code developed by: Susanna Guatelli // // $Id: BrachyFactory.hh,v 1.2 2006/06/29 17:31:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ********************************** // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyFactoryI.hh b/examples/extended/parallel/ExDiane/include/BrachyFactoryI.hh index 76a20c4e37..7948b594f5 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyFactoryI.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyFactoryI.hh @@ -35,7 +35,7 @@ // // // $Id: BrachyFactoryI.hh,v 1.2 2006/06/29 17:32:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/parallel/ExDiane/include/BrachyFactoryIr.hh b/examples/extended/parallel/ExDiane/include/BrachyFactoryIr.hh index e6feb395b2..22baf08674 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyFactoryIr.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyFactoryIr.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyFactoryIr.hh,v 1.2 2006/06/29 17:32:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ********************************** // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyFactoryLeipzig.hh b/examples/extended/parallel/ExDiane/include/BrachyFactoryLeipzig.hh index 4b8ff37a00..4a7491d59f 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyFactoryLeipzig.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyFactoryLeipzig.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyFactoryLeipzig.hh,v 1.2 2006/06/29 17:32:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ********************************** // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyMaterial.hh b/examples/extended/parallel/ExDiane/include/BrachyMaterial.hh index 388675bf9b..42ae549c20 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyMaterial.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyMaterial.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyMaterial.hh,v 1.2 2006/06/29 17:32:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ********************************** // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyPhantomHit.hh b/examples/extended/parallel/ExDiane/include/BrachyPhantomHit.hh index fbe0c98cc1..2e15b09e85 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyPhantomHit.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyPhantomHit.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyPhantomHit.hh,v 1.3 2006/06/29 17:32:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ******************************** diff --git a/examples/extended/parallel/ExDiane/include/BrachyPhantomROGeometry.hh b/examples/extended/parallel/ExDiane/include/BrachyPhantomROGeometry.hh index 0aade324e5..9729131645 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyPhantomROGeometry.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyPhantomROGeometry.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyPhantomROGeometry.hh,v 1.3 2006/06/29 17:32:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ************************************ // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyPhantomSD.hh b/examples/extended/parallel/ExDiane/include/BrachyPhantomSD.hh index 6c5703dd45..eb80e93e3f 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyPhantomSD.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyPhantomSD.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyPhantomSD.hh,v 1.2 2006/06/29 17:32:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ******************************** // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyPhysicsList.hh b/examples/extended/parallel/ExDiane/include/BrachyPhysicsList.hh index 4092b121ef..b2700d678b 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyPhysicsList.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyPhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyPhysicsList.hh,v 1.3 2006/06/29 17:32:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ********************************** // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyPrimaryGeneratorAction.hh b/examples/extended/parallel/ExDiane/include/BrachyPrimaryGeneratorAction.hh index 3d4861632a..9722ff9526 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyPrimaryGeneratorAction.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyPrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyPrimaryGeneratorAction.hh,v 1.2 2006/06/29 17:32:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ******************************************** // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyPrimaryGeneratorActionI.hh b/examples/extended/parallel/ExDiane/include/BrachyPrimaryGeneratorActionI.hh index 597d49f125..ebb24b577e 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyPrimaryGeneratorActionI.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyPrimaryGeneratorActionI.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyPrimaryGeneratorActionI.hh,v 1.3 2006/06/29 17:32:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/examples/extended/parallel/ExDiane/include/BrachyPrimaryGeneratorActionIr.hh b/examples/extended/parallel/ExDiane/include/BrachyPrimaryGeneratorActionIr.hh index ae2c519ca1..501d6c79f9 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyPrimaryGeneratorActionIr.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyPrimaryGeneratorActionIr.hh @@ -26,7 +26,7 @@ //Author: Susanna Guatelli // // $Id: BrachyPrimaryGeneratorActionIr.hh,v 1.3 2006/06/29 17:32:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ************************************************* // * * diff --git a/examples/extended/parallel/ExDiane/include/BrachyRunAction.hh b/examples/extended/parallel/ExDiane/include/BrachyRunAction.hh index fc37dfe20d..79c2944656 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyRunAction.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyRunAction.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyRunAction.hh,v 1.3 2006/06/29 17:32:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Author: Susanna Guatelli // diff --git a/examples/extended/parallel/ExDiane/include/BrachyRunMessenger.hh b/examples/extended/parallel/ExDiane/include/BrachyRunMessenger.hh index e53ca0eec9..1baf92776f 100644 --- a/examples/extended/parallel/ExDiane/include/BrachyRunMessenger.hh +++ b/examples/extended/parallel/ExDiane/include/BrachyRunMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: BrachyRunMessenger.hh,v 1.3 2006/06/29 17:32:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Author: Susanna Guatelli // diff --git a/examples/extended/parallel/ExDiane/include/BrachySimulation.hh b/examples/extended/parallel/ExDiane/include/BrachySimulation.hh index 339c59a3b8..10f926fa82 100644 --- a/examples/extended/parallel/ExDiane/include/BrachySimulation.hh +++ b/examples/extended/parallel/ExDiane/include/BrachySimulation.hh @@ -25,7 +25,7 @@ // // // $Id: BrachySimulation.hh -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // GEANT 4 - Brachytherapy example diff --git a/examples/extended/parallel/ExDiane/src/BrachyAnalysisManager.cc b/examples/extended/parallel/ExDiane/src/BrachyAnalysisManager.cc index 50b5e63de5..570075e56f 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyAnalysisManager.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyAnalysisManager.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyAnalysisManager.cc,v 1.3 2006/06/29 17:32:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifdef G4ANALYSIS_USE #include diff --git a/examples/extended/parallel/ExDiane/src/BrachyDetectorConstruction.cc b/examples/extended/parallel/ExDiane/src/BrachyDetectorConstruction.cc index 46cce6f76e..12aa9cc8d6 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyDetectorConstruction.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyDetectorConstruction.cc @@ -37,7 +37,7 @@ // **************************************** // // $Id: BrachyDetectorConstruction.cc,v 1.3 2006/06/29 17:32:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyPhantomROGeometry.hh" #include "BrachyPhantomSD.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyDetectorConstructionI.cc b/examples/extended/parallel/ExDiane/src/BrachyDetectorConstructionI.cc index 20ab10a985..11e24a6683 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyDetectorConstructionI.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyDetectorConstructionI.cc @@ -37,7 +37,7 @@ // **************************************** // // $Id: BrachyDetectorConstructionI.cc,v 1.3 2006/06/29 17:32:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" #include "BrachyDetectorConstructionI.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyDetectorConstructionIr.cc b/examples/extended/parallel/ExDiane/src/BrachyDetectorConstructionIr.cc index 0db80e64fe..2543b7bfa3 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyDetectorConstructionIr.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyDetectorConstructionIr.cc @@ -37,7 +37,7 @@ // **************************************** // // $Id: BrachyDetectorConstructionIr.cc,v 1.3 2006/06/29 17:32:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" #include "BrachyDetectorConstructionIr.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyDetectorConstructionLeipzig.cc b/examples/extended/parallel/ExDiane/src/BrachyDetectorConstructionLeipzig.cc index fea79e5854..f2039e9f39 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyDetectorConstructionLeipzig.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyDetectorConstructionLeipzig.cc @@ -38,7 +38,7 @@ // // // $Id: BrachyDetectorConstructionLeipzig.cc,v 1.3 2006/06/29 17:32:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyDetectorMessenger.cc b/examples/extended/parallel/ExDiane/src/BrachyDetectorMessenger.cc index cf109a4558..29666abc03 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyDetectorMessenger.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyDetectorMessenger.cc @@ -35,7 +35,7 @@ // // // $Id: BrachyDetectorMessenger.cc,v 1.3 2006/06/29 17:33:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/parallel/ExDiane/src/BrachyEventAction.cc b/examples/extended/parallel/ExDiane/src/BrachyEventAction.cc index 7e3b631cf9..225f39656d 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyEventAction.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyEventAction.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyEventAction.cc,v 1.3 2006/06/29 17:33:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyEventAction.hh" #include "G4Event.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyFactory.cc b/examples/extended/parallel/ExDiane/src/BrachyFactory.cc index 43c243c429..acf01ba23b 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyFactory.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyFactory.cc @@ -35,7 +35,7 @@ // ******************************* // // $Id: BrachyFactory.cc,v 1.3 2006/06/29 17:33:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include"BrachyFactory.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyFactoryI.cc b/examples/extended/parallel/ExDiane/src/BrachyFactoryI.cc index f17c6303c6..7ee318616d 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyFactoryI.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyFactoryI.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyFactoryI.cc,v 1.2 2006/06/29 17:33:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyFactoryI.hh" #include "BrachyPrimaryGeneratorActionI.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyFactoryIr.cc b/examples/extended/parallel/ExDiane/src/BrachyFactoryIr.cc index 66c9007e77..eec76f552a 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyFactoryIr.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyFactoryIr.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyFactoryIr.cc,v 1.3 2006/06/29 17:33:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" #include "BrachyFactoryIr.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyFactoryLeipzig.cc b/examples/extended/parallel/ExDiane/src/BrachyFactoryLeipzig.cc index b106dfdc54..4e57be41c3 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyFactoryLeipzig.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyFactoryLeipzig.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyFactoryLeipzig.cc,v 1.3 2006/06/29 17:33:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyMaterial.cc b/examples/extended/parallel/ExDiane/src/BrachyMaterial.cc index 89ec59a567..0687369c88 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyMaterial.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyMaterial.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyMaterial.cc,v 1.3 2006/06/29 17:33:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4MaterialPropertiesTable.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyPhantomHit.cc b/examples/extended/parallel/ExDiane/src/BrachyPhantomHit.cc index f1c8de8b57..91bfb18071 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyPhantomHit.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyPhantomHit.cc @@ -33,7 +33,7 @@ // ******************************** // // $Id: BrachyPhantomHit.cc,v 1.3 2006/06/29 17:33:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyPhantomHit.hh" #include "G4ios.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyPhantomROGeometry.cc b/examples/extended/parallel/ExDiane/src/BrachyPhantomROGeometry.cc index a47f0dd13c..baea0642e9 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyPhantomROGeometry.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyPhantomROGeometry.cc @@ -33,7 +33,7 @@ // ************************************ // // $Id: BrachyPhantomROGeometry.cc,v 1.3 2006/06/29 17:33:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyPhantomROGeometry.hh" #include "BrachyDummySD.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyPhantomSD.cc b/examples/extended/parallel/ExDiane/src/BrachyPhantomSD.cc index da633f302b..04cb46ad87 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyPhantomSD.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyPhantomSD.cc @@ -33,7 +33,7 @@ // ******************************** // // $Id: BrachyPhantomSD.cc,v 1.4 2006/06/29 17:33:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyPhantomSD.hh" #include "BrachyPhantomHit.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyPhysicsList.cc b/examples/extended/parallel/ExDiane/src/BrachyPhysicsList.cc index 1cbd5eae33..ca4ca89452 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyPhysicsList.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyPhysicsList.cc @@ -33,7 +33,7 @@ // ********************************** // // $Id: BrachyPhysicsList.cc,v 1.3 2006/06/29 17:33:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyPhysicsList.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyPrimaryGeneratorAction.cc b/examples/extended/parallel/ExDiane/src/BrachyPrimaryGeneratorAction.cc index bf8333c3de..7973541da0 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyPrimaryGeneratorAction.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyPrimaryGeneratorAction.cc @@ -38,7 +38,7 @@ // ******************************************** // // $Id: BrachyPrimaryGeneratorAction.cc,v 1.2 2006/06/29 17:33:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" #include "BrachyPrimaryGeneratorAction.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyPrimaryGeneratorActionI.cc b/examples/extended/parallel/ExDiane/src/BrachyPrimaryGeneratorActionI.cc index f632de6363..4fdd43b892 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyPrimaryGeneratorActionI.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyPrimaryGeneratorActionI.cc @@ -37,7 +37,7 @@ // ******************************************** // // $Id: BrachyPrimaryGeneratorActionI.cc,v 1.4 2006/06/29 17:33:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyPrimaryGeneratorActionI.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyPrimaryGeneratorActionIr.cc b/examples/extended/parallel/ExDiane/src/BrachyPrimaryGeneratorActionIr.cc index 0b47989f64..d0d36bd09e 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyPrimaryGeneratorActionIr.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyPrimaryGeneratorActionIr.cc @@ -37,7 +37,7 @@ // ******************************************** // // $Id: BrachyPrimaryGeneratorActionIr.cc,v 1.4 2006/06/29 17:33:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyPrimaryGeneratorActionIr.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyRunAction.cc b/examples/extended/parallel/ExDiane/src/BrachyRunAction.cc index 118db59e60..2f5b6cc75b 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyRunAction.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyRunAction.cc @@ -39,7 +39,7 @@ // ******************************* // // $Id: BrachyRunAction.cc,v 1.3 2006/06/29 17:33:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "BrachyRunAction.hh" diff --git a/examples/extended/parallel/ExDiane/src/BrachyRunMessenger.cc b/examples/extended/parallel/ExDiane/src/BrachyRunMessenger.cc index 9b59e8cf8b..a48a6cbd04 100644 --- a/examples/extended/parallel/ExDiane/src/BrachyRunMessenger.cc +++ b/examples/extended/parallel/ExDiane/src/BrachyRunMessenger.cc @@ -27,7 +27,7 @@ // S.Guatelli // // $Id: BrachyRunMessenger.cc,v 1.3 2006/06/29 17:33:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/examples/extended/parallel/ExDiane/src/BrachySimulation.cc b/examples/extended/parallel/ExDiane/src/BrachySimulation.cc index 4cad8c4aee..73b7d3881a 100644 --- a/examples/extended/parallel/ExDiane/src/BrachySimulation.cc +++ b/examples/extended/parallel/ExDiane/src/BrachySimulation.cc @@ -25,7 +25,7 @@ // // // $Id: BrachySimulation.cc -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // GEANT 4 - Brachytherapy example diff --git a/examples/extended/parallel/MPI/History b/examples/extended/parallel/MPI/History new file mode 100644 index 0000000000..94385b6b77 --- /dev/null +++ b/examples/extended/parallel/MPI/History @@ -0,0 +1,17 @@ +$Id: History,v 1.1 2007/11/16 04:02:10 kmura Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + Category History file + --------------------- + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +16 Nov. 2007 K.Murakami + - commited to G4 CVS. + diff --git a/examples/extended/parallel/MPI/README b/examples/extended/parallel/MPI/README new file mode 100644 index 0000000000..2b594bdfe2 --- /dev/null +++ b/examples/extended/parallel/MPI/README @@ -0,0 +1,177 @@ +$Id: README,v 1.2 2007/11/16 14:04:05 kmura Exp $ +========================================================================== +Geant4 MPI Interface + + Author: + Koichi Murakami (KEK) / Koichi.Murakami@kek.jp +========================================================================== + +About the interface +=================== +G4MPI is a native interface with MPI libraries. The directory contains +a Geant4 UI library and a couple of parallelized examples. +Using this interface, users applications can be parllelized with +different MPI compliant libraries, such as LAM/MPI, MPICH2, OpenMPI, +and so on. + +System Requirements: +------------------- +* Platform + +- Linux (32bit/64bit) +- MacOS (Tiger) + + +* MPI implementation + +- LAM/MPI (7.1.3) + http://www.lam-mpi.org/ + +- MPICH2 (1.0.6p1) + http://www.mcs.anl.gov/research/projects/mpich2/ + +- Open MPI (1.2.4) + http://www.open-mpi.org/ + + +* Optional +- ROOT for histogramming/analysis + + +G4MPI UI library +---------------- +G4MPI UI library is provided in the "mpi_interface" directory. +Start with building the G4MPI UI library according to the instruction +in the directory. + + +How to make parallel applications: +---------------------------------- +* An example of a main program: + +#include "G4MPImanager.hh" +#include "G4MPIsession.hh" + +int main(int argc,char** argv) +{ + // At first, G4MPImanager/G4MPIsession should be created. + G4MPImanager* g4MPI= new G4MPImanager(argc,argv); + + // MPI session (G4MPIsession) instead of G4UIterminal + G4MPIsession* session= g4MPI-> GetMPIsession(); + + // LAM users can use G4tcsh. + G4String prompt= "G4MPI"; + G4UItcsh* tcsh= new G4UItcsh(prompt); + session-> SetShell(tcsh); + + // user application setting + G4RunManager* runManager= new G4RunManager(); + + // .... + + // After user application setting, just start a MPI session. + // MPIsession treats both interactive and batch modes. + session-> SessionStart(); + + // Finally, terminate the program + delete g4MPI; + delete runManager; +} + + +* Notes about session shell: + +LAM/MPI users can use "G4tcsh" as an interactive session shell. +For other users (Open MPI/MPICH2), plese use G4csh (default). + + +How to use: +----------- +* MPI runtime rnvironment + +1. Make hosts/cluster configuration of your MPI environment. + +2. Launch MPI runtime environment, typically executing + lamboot (LAM) / mpdboot (MPICH2). + +* How to run +For example, + +> mpiexec -n # + +Instead, "mpirun" command is more convenient for LAM users. + + +MPI G4UI commands: +------------------ +G4UI commands handling the G4MPI interface are placed in /mpi/. + +Command directory path : /mpi/ + +Guidance : +MPI control commands + + Sub-directories : + Commands : + verbose * Set verbose level. + status * Show mpi status. + execute * Execute a macro file. (=/control/execute) + beamOn * Start a parallel run w/ thread. + .beamOn * Start a parallel run w/o thread. (=/run/beamOn) + masterWeight * Set weight for master node. + showSeeds * Show seeds of MPI nodes. + setMasterSeed * Set a master seed for the seed generator. + setSeed * Set a seed for a specified node. + +* Notes: +While "/run/beamOn" is executed in foreground, the "/mpi/beamOn" +command invokes beam-on in background, so you can input UI commands +even while event processing. + +The original "/control/execute" and "/run/beamOn" are overwritten +with "/mpi/execute" and "/mpi/.beamOn" commands, customized for +the MPI interface. + + +Examples +======== +There are a couple of examples for Geant4 MPI applications. + +In some cases, you need to set some additional environment variables +for running examples: + +- G4LEVELGAMMADATA : directory path for the data of + "low energy electromagnetic processes". + +For running ROOT applications, + +- ROOTSYS : root path of the ROOT package +- LD_LIBRARY_PATH : add ROOT library path, such as $(ROOTSYS)/lib/root + + +[exMPI01] +A simple application. + +* Geometry : chamber / calorimeter +* Primary : particle gun (200 MeV electron as default) +* Physics List : standard EM + +- Particles are transported in a geometry without any scoring. +- Learn how to parallelize your G4 session. + + +[exMPI02] (ROOT application) +An example of dosimetry in a water phantom. + +* Geometry : water phantom +* Primary : particle gun (200 MeV proton as default) +* Physics List : QGSP_BIC + +- Score dose distribution in a water phantom. +- Learn how to paralleize your applications. +- Create a ROOT file containing histograms in each node. + * treat multiple outputs properly: + each slave node generate a ROOT file, whose file name should + be different from each other. + diff --git a/examples/extended/parallel/MPI/exMPI01/GNUmakefile b/examples/extended/parallel/MPI/exMPI01/GNUmakefile new file mode 100644 index 0000000000..8e1a1abf10 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/GNUmakefile @@ -0,0 +1,19 @@ +# $Id: GNUmakefile,v 1.1 2007/11/16 14:16:46 kmura Exp $ +# $Name: geant4-09-01 $ +# =========================================================== +# Makefile for building G4 MPI aplication +# =========================================================== +name := exMPI01# +G4TARGET := $(name) +G4EXLIB := true + +G4WORKDIR := . + +.PHONY: all +all: lib bin + +include $(G4INSTALL)/config/binmake.gmk +include ../mpi_interface/G4MPI.gmk + +LDLIBS1 += -lG4UImpi + diff --git a/examples/extended/parallel/MPI/exMPI01/History b/examples/extended/parallel/MPI/exMPI01/History new file mode 100644 index 0000000000..3b6d83e434 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/History @@ -0,0 +1,14 @@ +$Id: History,v 1.1 2007/11/16 14:16:46 kmura Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + exMPI01 History + --------------- + +16 Nov. 2007 K.Murakami + - commited to G4 CVS. + + diff --git a/examples/extended/parallel/MPI/exMPI01/README b/examples/extended/parallel/MPI/exMPI01/README new file mode 100644 index 0000000000..9c2bb8b4ba --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/README @@ -0,0 +1,16 @@ +$Id: README,v 1.1 2007/11/16 14:16:46 kmura Exp $ +------------------------------------------------------------------- + +Example MPI01 +------------- + +A simple application. + +* Geometry : chamber / calorimeter +* Primary : particle gun (200 MeV electron as default) +* Physics List : standard EM + +- Particles are transported in a geometry without any scoring. +- Learn how to parallelized your G4 session. + + diff --git a/examples/extended/parallel/MPI/exMPI01/exMPI01.cc b/examples/extended/parallel/MPI/exMPI01/exMPI01.cc new file mode 100644 index 0000000000..c205372424 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/exMPI01.cc @@ -0,0 +1,114 @@ +// +// ******************************************************************** +// * 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: exMPI01.cc,v 1.1 2007/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// exMPI01.cc +// +// 2007 Q +// ==================================================================== +#include "G4RunManager.hh" +#include "G4UImanager.hh" + +// my application +#include "DetectorConstruction.hh" +#include "PhysicsList.hh" +#include "PrimaryGeneratorAction.hh" + +// MPI session +#include "G4MPImanager.hh" +#include "G4MPIsession.hh" +#include "G4UItcsh.hh" + +#ifdef G4VIS_USE +#include "G4VisExecutive.hh" +#endif + +int main(int argc,char** argv) +{ + // random engine + //CLHEP::HepJamesRandom randomEngine; + CLHEP::Ranlux64Engine randomEngine; + CLHEP::HepRandom::setTheEngine(&randomEngine); + + // -------------------------------------------------------------------- + // MPI session + // -------------------------------------------------------------------- + // At first, G4MPImanager/G4MPIsession should be created. + G4MPImanager* g4MPI= new G4MPImanager(argc,argv); + + // MPI session (G4MPIsession) instead of G4UIterminal + // Terminal availability depends on your MPI implementation. + G4MPIsession* session= g4MPI-> GetMPIsession(); + + // LAM/MPI users can use G4tcsh. + G4String prompt= ""; + prompt+= "G4MPI"; + prompt+= "(%s)[%/]:"; + + G4UItcsh* tcsh= new G4UItcsh(prompt); + tcsh-> SetLsColor(BLUE,RED); + session-> SetShell(tcsh); + + // -------------------------------------------------------------------- + // user application setting + // -------------------------------------------------------------------- + G4RunManager* runManager= new G4RunManager(); + + // setup your application + runManager-> SetUserInitialization(new DetectorConstruction); + runManager-> SetUserInitialization(new PhysicsList); + runManager-> SetUserAction(new PrimaryGeneratorAction); + + runManager-> Initialize(); + +#ifdef G4VIS_USE + G4VisExecutive* visManager= new G4VisExecutive; + visManager-> Initialize(); + G4cout << G4endl; +#endif + + // -------------------------------------------------------------------- + // ready for go + // MPIsession treats both interactive and batch modes. + // Just start your session as below. + // -------------------------------------------------------------------- + session-> SessionStart(); + + // -------------------------------------------------------------------- + // termination + // -------------------------------------------------------------------- +#ifdef G4VIS_USE + delete visManager; +#endif + + delete g4MPI; + + delete runManager; + + return 0; +} diff --git a/examples/extended/parallel/MPI/exMPI01/include/DetectorConstruction.hh b/examples/extended/parallel/MPI/exMPI01/include/DetectorConstruction.hh new file mode 100644 index 0000000000..5e2fb99f3f --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/include/DetectorConstruction.hh @@ -0,0 +1,55 @@ +// +// ******************************************************************** +// * 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/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// DetectorConstruction.hh +// +// 2007 Q +// ==================================================================== +#ifndef DETECTOR_CONSTRUCTION_H +#define DETECTOR_CONSTRUCTION_H + +#include "G4VUserDetectorConstruction.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class DetectorConstruction : public G4VUserDetectorConstruction { + +public: + DetectorConstruction(); + ~DetectorConstruction(); + + virtual G4VPhysicalVolume* Construct(); + +}; + +#endif diff --git a/examples/extended/parallel/MPI/exMPI01/include/Materials.hh b/examples/extended/parallel/MPI/exMPI01/include/Materials.hh new file mode 100644 index 0000000000..9abc12316d --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/include/Materials.hh @@ -0,0 +1,54 @@ +// +// ******************************************************************** +// * 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: Materials.hh,v 1.1 2007/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// Materials.hh +// +// 2007 Q +// ==================================================================== +#ifndef MATERIALS_H +#define MATERIALS_H + +#include "globals.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== +class Materials { + +public: + Materials(); + ~Materials(); + + void Construct(); +}; + +#endif + diff --git a/examples/extended/parallel/MPI/exMPI01/include/Particles.hh b/examples/extended/parallel/MPI/exMPI01/include/Particles.hh new file mode 100644 index 0000000000..5656f7869a --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/include/Particles.hh @@ -0,0 +1,56 @@ +// +// ******************************************************************** +// * 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: Particles.hh,v 1.1 2007/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// Particles.hh +// +// 2007 Q +// ==================================================================== +#ifndef PARTICLES_H +#define PARTICLES_H + +#include "G4VPhysicsConstructor.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class Particles : public G4VPhysicsConstructor { + +public: + Particles(); + ~Particles(); + + virtual void ConstructParticle(); + virtual void ConstructProcess(); +}; + +#endif + diff --git a/examples/extended/parallel/MPI/exMPI01/include/PhysicsList.hh b/examples/extended/parallel/MPI/exMPI01/include/PhysicsList.hh new file mode 100644 index 0000000000..330e0990fa --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/include/PhysicsList.hh @@ -0,0 +1,54 @@ +// +// ******************************************************************** +// * 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: PhysicsList.hh,v 1.1 2007/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// PhysicsList.hh +// +// 2007 Q +// ==================================================================== +#ifndef PHYSICS_LIST_H +#define PHYSICS_LIST_H + +#include "G4VModularPhysicsList.hh" +#include "globals.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class PhysicsList: public G4VModularPhysicsList { +public: + PhysicsList(); + ~PhysicsList(); + + virtual void SetCuts(); +}; + +#endif diff --git a/examples/extended/parallel/MPI/exMPI01/include/PhysicsListEMstd.hh b/examples/extended/parallel/MPI/exMPI01/include/PhysicsListEMstd.hh new file mode 100644 index 0000000000..c35cc45ac0 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/include/PhysicsListEMstd.hh @@ -0,0 +1,55 @@ +// +// ******************************************************************** +// * 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: PhysicsListEMstd.hh,v 1.1 2007/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// PhysicsListEMstd.hh +// +// 2007 Q +// ==================================================================== +#ifndef PHYSICS_LIST_EM_STD_H +#define PHYSICS_LIST_EM_STD_H + +#include "G4VPhysicsConstructor.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class PhysicsListEMstd : public G4VPhysicsConstructor { + +public: + PhysicsListEMstd(); + ~PhysicsListEMstd(); + + virtual void ConstructParticle(); + virtual void ConstructProcess(); +}; + +#endif diff --git a/examples/extended/parallel/MPI/exMPI01/include/PrimaryGeneratorAction.hh b/examples/extended/parallel/MPI/exMPI01/include/PrimaryGeneratorAction.hh new file mode 100644 index 0000000000..0c92491968 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/include/PrimaryGeneratorAction.hh @@ -0,0 +1,60 @@ +// +// ******************************************************************** +// * 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/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// PrimaryGeneratorAction.hh +// +// 2007 Q +// ==================================================================== +#ifndef PRIMARY_GENERATOR_ACTION_H +#define PRIMARY_GENERATOR_ACTION_H + +#include "G4VUserPrimaryGeneratorAction.hh" + +class G4ParticleGun; + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { + +private: + G4ParticleGun* particleGun; + +public: + PrimaryGeneratorAction(); + ~PrimaryGeneratorAction(); + + virtual void GeneratePrimaries(G4Event* anEvent); + +}; + +#endif diff --git a/examples/extended/parallel/MPI/exMPI01/src/DetectorConstruction.cc b/examples/extended/parallel/MPI/exMPI01/src/DetectorConstruction.cc new file mode 100644 index 0000000000..077550d0d8 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/src/DetectorConstruction.cc @@ -0,0 +1,151 @@ +// +// ******************************************************************** +// * 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/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// DetectorConstruction.cc +// +// 2007 Q +// ==================================================================== +#include "DetectorConstruction.hh" +#include "Materials.hh" +#include "G4Material.hh" +#include "G4Tubs.hh" +#include "G4Box.hh" +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4VisAttributes.hh" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +// constants (detector parameters) +static const G4double DXYZ_AREA= 32.*cm; +static const G4double DW= 10.*cm; + +//////////////////////////////////////////// +DetectorConstruction::DetectorConstruction() +//////////////////////////////////////////// +{ +} + +///////////////////////////////////////////// +DetectorConstruction::~DetectorConstruction() +///////////////////////////////////////////// +{ +} + +/////////////////////////////////////////////////// +G4VPhysicalVolume* DetectorConstruction::Construct() +/////////////////////////////////////////////////// +{ + // material definition + Materials* materialConstruction= new Materials; + materialConstruction-> Construct(); + + G4Material* mate; + G4VisAttributes* va; + + // ============================================================== + // world volume + // ============================================================== + G4Box* areaSolid= new G4Box("AREA", + DXYZ_AREA/2., DXYZ_AREA/2., DXYZ_AREA/2.); + + G4Material* vacuum= G4Material::GetMaterial("Vacuum"); + G4LogicalVolume* areaLV= new G4LogicalVolume(areaSolid, vacuum, "AREA_LV"); + G4PVPlacement* area= new G4PVPlacement(0, G4ThreeVector(), "AREA_PV", + areaLV, 0, false, 0); + // vis. attributes + va= new G4VisAttributes(G4Color(1.,1.,1.)); + va-> SetVisibility(false); + areaLV-> SetVisAttributes(va); + + // ============================================================== + // detectors + // ============================================================== + // voxel + const G4double dvoxel= 10.*mm; + const G4double dl= 10.*cm; + + G4Box* svoxel= new G4Box("voxel", dvoxel, dl, dvoxel); + mate= G4Material::GetMaterial("Vacuum"); + G4LogicalVolume* lvoxel= new G4LogicalVolume(svoxel, mate, "voxel"); + va= new G4VisAttributes(G4Color(0.,0.8,0.8)); + va-> SetVisibility(false); + lvoxel-> SetVisAttributes(va); + + G4int ix, iz; + G4int index=0; + for (iz=0; iz<5; iz++) { + for (ix=-7; ix<=7; ix++) { + G4double x0= (2.*ix)*cm; + G4double z0= (-13.+2.*iz)*cm; + new G4PVPlacement(0, G4ThreeVector(x0, 0., z0), + lvoxel, "voxel", areaLV, false, index); + index++; + } + } + + // tube + //G4Tubs* stube= new G4Tubs("tube", 15./2.*mm, 19./2.*mm, dl, + G4Tubs* stube= new G4Tubs("tube", 0.*mm, 19./2.*mm, dl, + 0., 360.*deg); + mate= G4Material::GetMaterial("Al"); + G4LogicalVolume* ltube= new G4LogicalVolume(stube, mate, "tube"); + va= new G4VisAttributes(G4Color(0.,0.8,0.8)); + ltube-> SetVisAttributes(va); + + G4RotationMatrix* rmtube= new G4RotationMatrix; + rmtube-> rotateX(-90.*deg); + new G4PVPlacement(rmtube, G4ThreeVector(), + ltube, "tube", lvoxel, false, 0); + + // cal + const G4double dxycal= 25.*mm; + const G4double dzcal= 3.*cm; + + G4Box* scal= new G4Box("cal", dxycal, dxycal, dzcal); + mate= G4Material::GetMaterial("CsI"); + G4LogicalVolume* lcal= new G4LogicalVolume(scal, mate, "cal"); + va= new G4VisAttributes(G4Color(0.5,0.5,0.)); + lcal-> SetVisAttributes(va); + + index= 0; + for (ix=-2; ix<=2; ix++) { + G4double x0= (5.*ix)*cm; + new G4PVPlacement(0, G4ThreeVector(x0, 0., 2.*cm), + lcal, "cal", areaLV, false, index); + index++; + } + + return area; +} + diff --git a/examples/extended/parallel/MPI/exMPI01/src/Materials.cc b/examples/extended/parallel/MPI/exMPI01/src/Materials.cc new file mode 100644 index 0000000000..b364af5f38 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/src/Materials.cc @@ -0,0 +1,164 @@ +// +// ******************************************************************** +// * 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: Materials.cc,v 1.1 2007/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// Materials.cc +// +// 2007 Q +// ==================================================================== +#include "Materials.hh" +#include "G4Material.hh" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +////////////////////// +Materials::Materials() +////////////////////// +{ +} + + +/////////////////////// +Materials::~Materials() +/////////////////////// +{ +} + + +/////////////////////////// +void Materials::Construct() +/////////////////////////// +{ + G4double A, Z; + + // ------------------------------------------------------------------------ + // Elements + // ------------------------------------------------------------------------ + G4Element* elH = new G4Element("Hydrogen","H", Z=1., A=1.00794*g/mole); + G4Element* elC = new G4Element("Carbon", "C", Z=6., A= 12.011 *g/mole); + G4Element* elN = new G4Element("Nitrogen","N", Z=7., A= 14.00674*g/mole); + G4Element* elO = new G4Element("Oxygen", "O", Z=8., A= 15.9994*g/mole); + G4Element* elNa = new G4Element("Sodium", "Na", Z=11., A= 22.989768*g/mole); + G4Element* elSi = new G4Element("Silicon", "Si", Z=14., A= 28.0855*g/mole); + G4Element* elAr = new G4Element("Argon", "Ar", Z=18., A= 39.948*g/mole); + G4Element* elI = new G4Element("Iodine", "I", Z=53., A= 126.90447*g/mole); + G4Element* elCs = new G4Element("Cesium", "Cs", Z=55., A= 132.90543*g/mole); + + // ------------------------------------------------------------------------ + // Materials + // ------------------------------------------------------------------------ + G4double density, massfraction; + G4int natoms, nel; + + // temperature of experimental hall is controlled at 20 degree. + const G4double expTemp= STP_Temperature+20.*kelvin; + + // vacuum + density= universe_mean_density; + G4Material* Vacuum= new G4Material("Vacuum", density, nel=2); + Vacuum-> AddElement(elN, .7); + Vacuum-> AddElement(elO, .3); + + // air + density= 1.2929e-03 *g/cm3; // at 20 degree + G4Material* Air= new G4Material("Air", density, nel=3, + kStateGas, expTemp); + G4double ttt= 75.47+23.20+1.28; + Air-> AddElement(elN, massfraction= 75.47/ttt); + Air-> AddElement(elO, massfraction= 23.20/ttt); + Air-> AddElement(elAr, massfraction= 1.28/ttt); + + // Ar gas + A= 39.948 *g/mole; + const G4double denAr= 1.782e-03 *g/cm3 * STP_Temperature/expTemp; + G4Material* Ar= new G4Material("ArgonGas", Z=18., A, denAr, + kStateGas, expTemp); + + // ethane (C2H6) + const G4double denEthane= 1.356e-3 *g/cm3 * STP_Temperature/expTemp; + G4Material* Ethane= new G4Material("Ethane", denEthane, nel=2, + kStateGas, expTemp); + Ethane-> AddElement(elC, natoms=2); + Ethane-> AddElement(elH, natoms=6); + + // Ar(50%) + ethane(50%) mixture + density= (denAr+denEthane)/2.; + G4Material* ArEthane= new G4Material("ArEthane", density, nel=2, + kStateGas, expTemp); + ArEthane-> AddMaterial(Ar, massfraction= denAr/density/2.); + ArEthane-> AddMaterial(Ethane, massfraction= denEthane/density/2.); + + // silicon + A= 28.0855 *g/mole; + density= 2.33 *g/cm3; + new G4Material("SiliconWafer", Z=14., A, density); + + // alminium + A= 26.98 *g/mole; + density= 2.70 *g/cm3; + new G4Material("Al", Z=13., A, density); + + // iron + A= 55.847 *g/mole; + density= 7.87 *g/cm3; + new G4Material("Iron", Z=26., A, density); + + // lead + A= 207.2 *g/mole; + density= 11.35 *g/cm3; + new G4Material("Lead", Z=82., A, density); + + // scintillator (Polystyene(C6H5CH=CH2)) + density= 1.032 *g/cm3; + G4Material* Scinti= new G4Material("Scinti", density, nel=2); + Scinti-> AddElement(elC, natoms=8); + Scinti-> AddElement(elH, natoms=8); + + // quartz (SiO2, crystalline) + density= 2.64 *g/cm3; + G4Material* Quartz= new G4Material("Quartz", density, nel= 2); + Quartz-> AddElement(elSi, natoms=1); + Quartz-> AddElement(elO, natoms=2); + + // NaI crystal + density= 3.67 *g/cm3; + G4Material* NaI= new G4Material("NaI", density, nel= 2); + NaI-> AddElement(elNa, natoms=1); + NaI-> AddElement(elI, natoms=1); + + // CsI crystal + density= 4.51 *g/cm3; + G4Material* CsI= new G4Material("CsI", density, nel= 2); + CsI-> AddElement(elCs, natoms=1); + CsI-> AddElement(elI, natoms=1); + +} diff --git a/examples/extended/parallel/MPI/exMPI01/src/Particles.cc b/examples/extended/parallel/MPI/exMPI01/src/Particles.cc new file mode 100644 index 0000000000..61add84542 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/src/Particles.cc @@ -0,0 +1,83 @@ +// +// ******************************************************************** +// * 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: Particles.cc,v 1.1 2007/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// Particles.cc +// Physics list for defining particles +// +// 2007 Q +// ==================================================================== +#include "Particles.hh" + +#include "G4LeptonConstructor.hh" +#include "G4BosonConstructor.hh" +#include "G4MesonConstructor.hh" +#include "G4BaryonConstructor.hh" +#include "G4ShortLivedConstructor.hh" +#include "G4IonConstructor.hh" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +////////////////////////////////////// +Particles::Particles() + : G4VPhysicsConstructor("Particles") +////////////////////////////////////// +{ +} + + +/////////////////////// +Particles::~Particles() +/////////////////////// +{ +} + + +/////////////////////////////////// +void Particles::ConstructParticle() +/////////////////////////////////// +{ + G4LeptonConstructor::ConstructParticle(); + G4BosonConstructor::ConstructParticle(); + G4MesonConstructor::ConstructParticle(); + G4BaryonConstructor::ConstructParticle(); + G4ShortLivedConstructor::ConstructParticle(); + G4IonConstructor::ConstructParticle(); +} + + +////////////////////////////////// +void Particles::ConstructProcess() +////////////////////////////////// +{ +} + diff --git a/examples/extended/gdml/src/g4rwPhysicsList.cc b/examples/extended/parallel/MPI/exMPI01/src/PhysicsList.cc similarity index 62% rename from examples/extended/gdml/src/g4rwPhysicsList.cc rename to examples/extended/parallel/MPI/exMPI01/src/PhysicsList.cc index 69f937f231..69f435225e 100644 --- a/examples/extended/gdml/src/g4rwPhysicsList.cc +++ b/examples/extended/parallel/MPI/exMPI01/src/PhysicsList.cc @@ -23,52 +23,54 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// $Id: PhysicsList.cc,v 1.1 2007/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ // -// $Id: g4rwPhysicsList.cc,v 1.2 2006/06/29 17:21:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// ==================================================================== +// PhysicsList.cc // -// -// -------------------------------------------------------------- -// Comments +// 2007 Q +// ==================================================================== +#include "PhysicsList.hh" +#include "Particles.hh" +#include "PhysicsListEMstd.hh" + +// ==================================================================== // -// -------------------------------------------------------------- +// class description +// +// ==================================================================== -#include "g4rwPhysicsList.hh" - -#include "G4ParticleTypes.hh" - -gogdmlPhysicsList::gogdmlPhysicsList() -{;} - -gogdmlPhysicsList::~gogdmlPhysicsList() -{;} - -void gogdmlPhysicsList::ConstructParticle() +/////////////////////////// +PhysicsList::PhysicsList() + : G4VModularPhysicsList() +//////////////////////////// { - // In this method, static member functions should be called - // for all particles which you want to use. - // This ensures that objects of these particle types will be - // created in the program. + // default cut value (1.0mm) + defaultCutValue = 1.*mm; + SetVerboseLevel(1); - G4Geantino::GeantinoDefinition(); + // particles + RegisterPhysics(new Particles); + + // EM Physics + RegisterPhysics(new PhysicsListEMstd); } -void gogdmlPhysicsList::ConstructProcess() -{ - // Define transportation process - AddTransportation(); +/////////////////////////// +PhysicsList::~PhysicsList() +/////////////////////////// +{ } -void gogdmlPhysicsList::SetCuts() + +/////////////////////////// +void PhysicsList::SetCuts() +/////////////////////////// { - // uppress error messages even in case e/gamma/proton do not exist - G4int temp = GetVerboseLevel(); SetVerboseLevel(0); // " G4VUserPhysicsList::SetCutsWithDefault" method sets // the default cut value for all particle types SetCutsWithDefault(); - - // Retrieve verbose level - SetVerboseLevel(temp); } diff --git a/examples/extended/parallel/MPI/exMPI01/src/PhysicsListEMstd.cc b/examples/extended/parallel/MPI/exMPI01/src/PhysicsListEMstd.cc new file mode 100644 index 0000000000..a5688ebbbb --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/src/PhysicsListEMstd.cc @@ -0,0 +1,124 @@ +// +// ******************************************************************** +// * 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: PhysicsListEMstd.cc,v 1.1 2007/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// PhysicsListEMstd.cc +// Physics list for electron/positron/gamma +// EM-standard package w/ default parameters +// +// 2007 Q +// ==================================================================== +#include "PhysicsListEMstd.hh" + +#include "G4ProcessManager.hh" +#include "G4ParticleDefinition.hh" + +#include "G4Gamma.hh" +#include "G4Electron.hh" +#include "G4Positron.hh" +#include "G4NeutrinoE.hh" +#include "G4AntiNeutrinoE.hh" + +#include "G4ComptonScattering.hh" +#include "G4GammaConversion.hh" +#include "G4PhotoElectricEffect.hh" +#include "G4MultipleScattering.hh" +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +//////////////////////////////////// +PhysicsListEMstd::PhysicsListEMstd() + : G4VPhysicsConstructor("EM-std") +//////////////////////////////////// +{ +} + + +///////////////////////////////////// +PhysicsListEMstd::~PhysicsListEMstd() +///////////////////////////////////// +{ +} + + +////////////////////////////////////////// +void PhysicsListEMstd::ConstructParticle() +////////////////////////////////////////// +{ +} + + +///////////////////////////////////////// +void PhysicsListEMstd::ConstructProcess() +///////////////////////////////////////// +{ + G4ProcessManager* pm; + + // ---------------------------------------------------------- + // gamma physics + // ---------------------------------------------------------- + pm= G4Gamma::Gamma()-> GetProcessManager(); + pm-> AddDiscreteProcess(new G4PhotoElectricEffect); + pm-> AddDiscreteProcess(new G4ComptonScattering); + pm-> AddDiscreteProcess(new G4GammaConversion); + + // ---------------------------------------------------------- + // electron physics + // ---------------------------------------------------------- + G4MultipleScattering* msc= new G4MultipleScattering; + G4eIonisation* eion= new G4eIonisation; + G4eBremsstrahlung* ebrems= new G4eBremsstrahlung; + + pm= G4Electron::Electron()->GetProcessManager(); + pm-> AddProcess(msc, ordInActive, 1, 1); + pm-> AddProcess(eion, ordInActive, 2, 2); + pm-> AddProcess(ebrems, ordInActive, ordInActive, 3); + + // ---------------------------------------------------------- + // positron physics + // ---------------------------------------------------------- + msc= new G4MultipleScattering; + eion= new G4eIonisation; + ebrems= new G4eBremsstrahlung; + G4eplusAnnihilation* annihilation= new G4eplusAnnihilation; + + pm= G4Positron::Positron()-> GetProcessManager(); + pm-> AddProcess(msc, ordInActive, 1, 1); + pm-> AddProcess(eion, ordInActive, 2, 2); + pm-> AddProcess(ebrems, ordInActive, ordInActive, 3); + pm-> AddProcess(annihilation, 0, ordInActive, 4); + +} + diff --git a/examples/extended/parallel/MPI/exMPI01/src/PrimaryGeneratorAction.cc b/examples/extended/parallel/MPI/exMPI01/src/PrimaryGeneratorAction.cc new file mode 100644 index 0000000000..4f07a93b24 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/src/PrimaryGeneratorAction.cc @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * 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/11/16 14:16:46 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// PrimaryGeneratorAction.cc +// +// 2007 Q +// ==================================================================== +#include "PrimaryGeneratorAction.hh" +#include "G4ParticleGun.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +//////////////////////////////////////////////// +PrimaryGeneratorAction::PrimaryGeneratorAction() +//////////////////////////////////////////////// +{ + particleGun= new G4ParticleGun; + + G4ParticleTable* particleTable= G4ParticleTable::GetParticleTable(); + G4ParticleDefinition* particle= particleTable-> FindParticle("e-"); + + particleGun-> SetParticleDefinition(particle); + particleGun-> SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.)); + particleGun->SetParticlePosition(G4ThreeVector(0.,0.,-14.9*cm)); + particleGun-> SetParticleEnergy(200.*MeV); + +} + +///////////////////////////////////////////////// +PrimaryGeneratorAction::~PrimaryGeneratorAction() +///////////////////////////////////////////////// +{ + delete particleGun; +} + +//////////////////////////////////////////////////////////////// +void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) +//////////////////////////////////////////////////////////////// +{ + particleGun-> GeneratePrimaryVertex(anEvent); +} + diff --git a/examples/extended/parallel/MPI/exMPI01/v.mac b/examples/extended/parallel/MPI/exMPI01/v.mac new file mode 100644 index 0000000000..724af45b8b --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI01/v.mac @@ -0,0 +1,15 @@ +/vis/open OGLIX + +/vis/scene/create +/vis/scene/add/volume + +/vis/sceneHandler/attach + +/vis/viewer/set/viewpointThetaPhi 90. 270. + +/tracking/storeTrajectory 1 +/vis/scene/add/trajectories +/vis/scene/endOfEventAction accumulate +#/vis/scene/endOfEventAction refresh + + diff --git a/examples/extended/parallel/MPI/exMPI02/GNUmakefile b/examples/extended/parallel/MPI/exMPI02/GNUmakefile new file mode 100644 index 0000000000..4ef7f625ac --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/GNUmakefile @@ -0,0 +1,28 @@ +# $Id: GNUmakefile,v 1.1 2007/11/16 14:28:34 kmura Exp $ +# $Name: geant4-09-01 $ +# =========================================================== +# Makefile for building G4 MPI aplication +# =========================================================== +name := exMPI02# +G4TARGET := $(name) +G4EXLIB := true + +G4WORKDIR := . + +.PHONY: all +all: lib bin + +include $(G4INSTALL)/config/binmake.gmk +include ../mpi_interface/G4MPI.gmk + +LDLIBS1 += -lG4UImpi + +ifdef ROOTSYS + CPPFLAGS += -I$(shell $(ROOTSYS)/bin/root-config --incdir) + LDLIBS += $(shell $(ROOTSYS)/bin/root-config --libs) +endif + +ifeq ($(G4SYSTEM),Linux-g++) + LDLIBS += -Wl,-rpath,$(shell $(ROOTSYS)/bin/root-config --libdir) +endif + diff --git a/examples/extended/parallel/MPI/exMPI02/History b/examples/extended/parallel/MPI/exMPI02/History new file mode 100644 index 0000000000..3f8693cab2 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/History @@ -0,0 +1,14 @@ +$Id: History,v 1.1 2007/11/16 14:28:34 kmura Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + exMPI02 History + --------------- + +16 Nov. 2007 K.Murakami + - commited to G4 CVS. + + diff --git a/examples/extended/parallel/MPI/exMPI02/README b/examples/extended/parallel/MPI/exMPI02/README new file mode 100644 index 0000000000..64aab1218b --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/README @@ -0,0 +1,24 @@ +$Id: README,v 1.1 2007/11/16 14:28:34 kmura Exp $ +------------------------------------------------------------------- + +Example MPI02 +------------- + +An example of dosimetry in a water phantom. + +* Geometry : water phantom +* Primary : broad beam (200 MeV proton) +* Physics List : QGSP_BIC + You need to set an additional environment variable; + $G4LEVELGAMMADATA indicates a directory path for the data of + "low energy electromagnetic processes". +* Analysis : ROOT histogramming + ROOT should be installed under $ROOTSYS. + +- Score dose distribution in a water phantom. +- Learn how to paralleized your applications. +- Create a ROOT file containing histograms/trees in each node. + * treat multiple outputs properly: + each slave node generate a ROOT file, whose file name should + be different from each other. + diff --git a/examples/extended/parallel/MPI/exMPI02/exMPI02.cc b/examples/extended/parallel/MPI/exMPI02/exMPI02.cc new file mode 100644 index 0000000000..2e56e365ba --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/exMPI02.cc @@ -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: exMPI02.cc,v 1.1 2007/11/16 14:28:34 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// exMPI02.cc +// +// 2007 Q +// ==================================================================== +#include "G4RunManager.hh" +#include "G4UImanager.hh" + +// my application +#include "DetectorConstruction.hh" +#include "MedicalBeam.hh" +#include "QGSP_BIC.hh" +#include "RunAction.hh" +#include "EventAction.hh" + +// MPI session +#include "G4MPImanager.hh" +#include "G4MPIsession.hh" +#include "G4UItcsh.hh" + +#ifdef G4VIS_USE +#include "G4VisExecutive.hh" +#endif + +int main(int argc,char** argv) +{ + // random engine + //CLHEP::Ranlux64Engine randomEngine; + //CLHEP::HepRandom::setTheEngine(&randomEngine); + + // -------------------------------------------------------------------- + // MPI session + // -------------------------------------------------------------------- + // At first, G4MPImanager/G4MPIsession should be created. + G4MPImanager* g4MPI= new G4MPImanager(argc,argv); + + // MPI session (G4MPIsession) instead of G4UIterminal + // Terminal availability depends on your MPI implementation. + G4MPIsession* session= g4MPI-> GetMPIsession(); + + // LAM/MPI users can use G4tcsh. + G4String prompt= ""; + prompt+= "G4MPI"; + prompt+= "(%s)[%/]:"; + + G4UItcsh* tcsh= new G4UItcsh(prompt); + tcsh-> SetLsColor(BLUE,RED); + session-> SetShell(tcsh); + + // -------------------------------------------------------------------- + // user application setting + // -------------------------------------------------------------------- + G4RunManager* runManager= new G4RunManager(); + + // setup your application + runManager-> SetUserInitialization(new DetectorConstruction); + runManager-> SetUserInitialization(new QGSP_BIC); + runManager-> SetUserAction(new MedicalBeam); + runManager-> SetUserAction(new RunAction); + runManager-> SetUserAction(new EventAction); + + runManager-> Initialize(); + +#ifdef G4VIS_USE + G4VisExecutive* visManager= new G4VisExecutive; + visManager-> Initialize(); + G4cout << G4endl; +#endif + + // -------------------------------------------------------------------- + // ready for go + // MPIsession treats both interactive and batch modes. + // Just start your session as below. + // -------------------------------------------------------------------- + session-> SessionStart(); + + + // termination +#ifdef G4VIS_USE + delete visManager; +#endif + + delete g4MPI; + + delete runManager; + + return 0; +} diff --git a/examples/extended/medical/DICOM/include/DicomOctreeNode.hh b/examples/extended/parallel/MPI/exMPI02/include/Analysis.hh similarity index 57% rename from examples/extended/medical/DICOM/include/DicomOctreeNode.hh rename to examples/extended/parallel/MPI/exMPI02/include/Analysis.hh index b7c7392565..e026bba80e 100644 --- a/examples/extended/medical/DICOM/include/DicomOctreeNode.hh +++ b/examples/extended/parallel/MPI/exMPI02/include/Analysis.hh @@ -23,53 +23,62 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca +// $Id: Analysis.hh,v 1.1 2007/11/16 14:29:32 kmura Exp $ +// $Name: geant4-09-01 $ // +// ==================================================================== +// Analysis.hh // -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 +// 2007 Q +// ==================================================================== +#ifndef ANALYSIS_MANAGER_H +#define ANALYSIS_MANAGER_H + +#include "G4ThreeVector.hh" + +// ==================================================================== // -// + Université Laval, Québec (QC) Canada -//*******************************************************// -#ifndef DICOMOCTREENODE_H -#define DICOMOCTREENODE_H -#include "globals.hh" - -enum OctreeNodeType { MIDDLE_NODE, TERMINAL_NODE }; - -// OctreeNode represents a single node in the Octree. -class DicomOctreeNode -{ -public: - - DicomOctreeNode(); - ~DicomOctreeNode(); - - DicomOctreeNode( DicomOctreeNode* pParent ); - - G4double Density(){return mDensity;} - - virtual DicomOctreeNode*& operator []( G4int index ) = 0; - - virtual OctreeNodeType Type() = 0; - - const DicomOctreeNode* Parent(){ return mParent; } - - virtual G4int FindChild( const DicomOctreeNode* pNode ) = 0; - - static G4int InstanceCounter() { return mInstanceCounter; } - - virtual G4int MemSize() = 0; +// class definition +// +// ==================================================================== +class TH1D; +class TH2D; +class Analysis { private: - static G4int mInstanceCounter; - DicomOctreeNode* mParent; - G4double mDensity; + static Analysis* myanalysis; + + TH2D* incident_map; + TH1D* incident_x_hist; + + TH2D* dose_map; + TH1D* dose_hist; + + Analysis(); // protected + + G4bool incidentFlag; + +public: + ~Analysis(); + + static Analysis* GetAnalysis(); + + void Update(); + void Clear(); + void Save(const G4String& fname); + + void FillIncident(const G4ThreeVector& p); + void FillDose(const G4ThreeVector& p, G4double dedx); + + void ClearIncidentFlag(); + }; -#endif + +// ==================================================================== +// inline functions +// ==================================================================== + +inline void Analysis::ClearIncidentFlag() +{ incidentFlag= false; } + +#endif diff --git a/examples/extended/parallel/MPI/exMPI02/include/DetectorConstruction.hh b/examples/extended/parallel/MPI/exMPI02/include/DetectorConstruction.hh new file mode 100644 index 0000000000..18dfa11fd6 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/include/DetectorConstruction.hh @@ -0,0 +1,55 @@ +// +// ******************************************************************** +// * 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/11/16 14:29:32 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// DetectorConstruction.hh +// +// Q +// ==================================================================== +#ifndef DETECTOR_CONSTRUCTION_H +#define DETECTOR_CONSTRUCTION_H + +#include "G4VUserDetectorConstruction.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class DetectorConstruction : public G4VUserDetectorConstruction { + +public: + DetectorConstruction(); + ~DetectorConstruction(); + + virtual G4VPhysicalVolume* Construct(); + +}; + +#endif diff --git a/examples/extended/parallel/MPI/exMPI02/include/EventAction.hh b/examples/extended/parallel/MPI/exMPI02/include/EventAction.hh new file mode 100644 index 0000000000..e0f4571fa7 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/include/EventAction.hh @@ -0,0 +1,55 @@ +// +// ******************************************************************** +// * 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: EventAction.hh,v 1.2 2007/12/10 16:28:34 gunter Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// EventAction.hh +// +// 2007 Q +// ==================================================================== +#ifndef EVENT_ACTION_H +#define EVENT_ACTION_H + +#include "G4UserEventAction.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class EventAction : public G4UserEventAction { + +public: + EventAction(); + ~EventAction(); + + virtual void BeginOfEventAction(const G4Event* aevent); + virtual void EndOfEventAction(const G4Event* aevent); + +}; + +#endif diff --git a/examples/extended/parallel/MPI/exMPI02/include/MedicalBeam.hh b/examples/extended/parallel/MPI/exMPI02/include/MedicalBeam.hh new file mode 100644 index 0000000000..6072acfeda --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/include/MedicalBeam.hh @@ -0,0 +1,145 @@ +// +// ******************************************************************** +// * 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: MedicalBeam.hh,v 1.1 2007/11/16 14:29:33 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// MedicalBeam.hh +// +// 2005 Q +// ==================================================================== +#ifndef MEDICAL_BEAM_H +#define MEDICAL_BEAM_H + +#include "globals.hh" +#include "G4ThreeVector.hh" +#include "G4VUserPrimaryGeneratorAction.hh" + +class G4ParticleDefinition; + +// ==================================================================== +// +// class definition +// +// ==================================================================== +class MedicalBeam : public G4VUserPrimaryGeneratorAction { +public: + enum FieldShape{ SQUARE=0, CIRCLE }; + +protected: + G4ParticleDefinition* particle; + G4double kineticE; + G4ThreeVector sourcePosition; + + G4double SSD; // (SSD= Source Skin Depth) + FieldShape fieldShape; + G4double fieldXY[2]; + G4double fieldR; + + // local methods... + G4ThreeVector GenerateBeamDirection() const; + +public: + MedicalBeam(); + ~MedicalBeam(); + + // set/get functions... + void SetParticleDefinition(G4ParticleDefinition* pd); + const G4ParticleDefinition* GetParticleDefinition() const; + + void SetKineticE(G4double e); + G4double GetKineticE() const; + + void SetSourcePosition(const G4ThreeVector& pos); + G4ThreeVector GetSourcePosition() const; + + void SetFieldShape(FieldShape shape); + FieldShape GetFieldShape() const; + + void SetSSD(G4double ssd); + G4double GetSSD() const; + + void SetFieldXY(G4double fx, G4double fy); + G4double GetFieldX() const; + G4double GetFieldY() const; + + void SetFieldR(G4double r); + G4double GetFieldR() const; + + // methods... + virtual void GeneratePrimaries(G4Event* anEvent); + +}; + +// ==================================================================== +// inline functions +// ==================================================================== +inline void MedicalBeam::SetParticleDefinition(G4ParticleDefinition* pd) +{ particle= pd; } + +inline const G4ParticleDefinition* MedicalBeam::GetParticleDefinition() const +{ return particle; } + +inline void MedicalBeam::SetKineticE(G4double e) +{ kineticE= e; } + +inline G4double MedicalBeam::GetKineticE() const +{ return kineticE; } + +inline void MedicalBeam::SetSourcePosition(const G4ThreeVector& pos) +{ sourcePosition= pos; } + +inline G4ThreeVector MedicalBeam::GetSourcePosition() const +{ return sourcePosition; } + +inline void MedicalBeam::SetFieldShape(MedicalBeam::FieldShape shape) +{ fieldShape= shape; } + +inline MedicalBeam::FieldShape MedicalBeam::GetFieldShape() const +{ return fieldShape; } + +inline void MedicalBeam::SetSSD(G4double ssd) +{ SSD= ssd; } + +inline G4double MedicalBeam::GetSSD() const +{ return SSD; } + +inline void MedicalBeam::SetFieldXY(G4double fx, G4double fy) +{ fieldXY[0]= fx; fieldXY[1]= fy; } + +inline G4double MedicalBeam::GetFieldX() const +{ return fieldXY[0]; } + +inline G4double MedicalBeam::GetFieldY() const +{ return fieldXY[1]; } + +inline void MedicalBeam::SetFieldR(G4double r) +{ fieldR= r; } + +inline G4double MedicalBeam::GetFieldR() const +{ return fieldR; } + +#endif + diff --git a/examples/extended/parallel/MPI/exMPI02/include/RunAction.hh b/examples/extended/parallel/MPI/exMPI02/include/RunAction.hh new file mode 100644 index 0000000000..4eb3573d74 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/include/RunAction.hh @@ -0,0 +1,55 @@ +// +// ******************************************************************** +// * 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.2 2007/12/10 16:28:39 gunter Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// RunAction.hh +// +// 2007 Q +// ==================================================================== +#ifndef RUN_ACTION_H +#define RUN_ACTION_H + +#include "G4UserRunAction.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class RunAction : public G4UserRunAction { + +public: + RunAction(); + ~RunAction(); + + virtual void BeginOfRunAction(const G4Run* arun); + virtual void EndOfRunAction(const G4Run* arun); + +}; + +#endif diff --git a/examples/extended/parallel/MPI/exMPI02/include/VoxelParam.hh b/examples/extended/parallel/MPI/exMPI02/include/VoxelParam.hh new file mode 100644 index 0000000000..0b50a7ae7c --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/include/VoxelParam.hh @@ -0,0 +1,94 @@ +// +// ******************************************************************** +// * 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: VoxelParam.hh,v 1.1 2007/11/16 14:29:33 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// VoxelParam.hh +// +// 2007 Q +// ==================================================================== +#ifndef VOXEL_PARAM_H +#define VOXEL_PARAM_H + +#include "G4VPVParameterisation.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class VoxelParam : public G4VPVParameterisation { + +public: + VoxelParam(); + ~VoxelParam(); + + virtual void ComputeTransformation(const G4int id, + G4VPhysicalVolume* vol) const; + + virtual void ComputeDimensions(G4Box& box, const G4int id, + const G4VPhysicalVolume* vol) const; + + virtual void ComputeDimensions + (G4Trd&,const G4int,const G4VPhysicalVolume*) const {} + + virtual void ComputeDimensions + (G4Trap&,const G4int,const G4VPhysicalVolume*) const {} + + virtual void ComputeDimensions + (G4Cons&,const G4int,const G4VPhysicalVolume*) const {} + + virtual void ComputeDimensions + (G4Sphere&,const G4int,const G4VPhysicalVolume*) const {} + + virtual void ComputeDimensions + (G4Orb&,const G4int,const G4VPhysicalVolume*) const {} + + virtual void ComputeDimensions + (G4Torus&,const G4int,const G4VPhysicalVolume*) const {} + + + virtual void ComputeDimensions + (G4Para&,const G4int,const G4VPhysicalVolume*) const {} + + virtual void ComputeDimensions + (G4Hype&,const G4int,const G4VPhysicalVolume*) const {} + + virtual void ComputeDimensions + (G4Tubs&,const G4int,const G4VPhysicalVolume*) const {} + + virtual void ComputeDimensions + (G4Polycone&,const G4int,const G4VPhysicalVolume*) const {} + + virtual void ComputeDimensions + (G4Polyhedra&,const G4int,const G4VPhysicalVolume*) const {} + +}; + +#endif + diff --git a/examples/extended/parallel/MPI/exMPI02/include/VoxelSD.hh b/examples/extended/parallel/MPI/exMPI02/include/VoxelSD.hh new file mode 100644 index 0000000000..d02bad9752 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/include/VoxelSD.hh @@ -0,0 +1,58 @@ +// +// ******************************************************************** +// * 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: VoxelSD.hh,v 1.1 2007/11/16 14:29:33 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// VoxelSD.hh +// +// 2007 Q +// ==================================================================== +#ifndef VOXEL_SD_H +#define VOXEL_SD_H + +#include "G4VSensitiveDetector.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class VoxelSD : public G4VSensitiveDetector { + +public: + VoxelSD(const G4String& name); + ~VoxelSD(); + + // virtual methods + virtual G4bool ProcessHits(G4Step* astep, G4TouchableHistory* rohist); + virtual void Initialize(G4HCofThisEvent* HCTE); + virtual void EndOfEvent(G4HCofThisEvent* HCTE); + +}; + +#endif diff --git a/examples/extended/parallel/MPI/exMPI02/src/Analysis.cc b/examples/extended/parallel/MPI/exMPI02/src/Analysis.cc new file mode 100644 index 0000000000..e6ec51dfe1 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/src/Analysis.cc @@ -0,0 +1,179 @@ +// +// ******************************************************************** +// * 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: Analysis.cc,v 1.1 2007/11/16 14:29:33 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// Analysis.cc +// +// 2007 Q +// ==================================================================== +#include "Analysis.hh" + +// ROOT headers +#include "TROOT.h" +#include "TFile.h" +#include "TH1.h" +#include "TH2.h" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +Analysis* Analysis::myanalysis= 0; + + +//////////////////// +Analysis::Analysis() +//////////////////// +{ + // ROOT style + gROOT->Reset(); + + // define histograms + incident_map = new TH2D("incident map", "Incident Distributuon", + 50, -5., 5., + 50, -5., 5.); + incident_map-> GetXaxis()-> SetTitle("X (cm)"); + incident_map-> GetYaxis()-> SetTitle("Y (cm)"); + incident_map-> SetStats(0); + + incident_x_hist = new TH1D("incident x", "Incident X", 100, -5., 5.); + incident_x_hist-> GetXaxis()-> SetTitle("X (cm)"); + incident_x_hist-> SetFillColor(kRed); + + dose_map = new TH2D("dose map", "Dose Distribution", + 500, 0., 50., + 200, -10., 10.); + dose_map-> GetXaxis()-> SetTitle("Z (cm)"); + dose_map-> GetYaxis()-> SetTitle("X (cm)"); + dose_map-> SetStats(0); + + dose_hist = new TH1D("dose", "Dose Distribution", 500, 0., 50.); + dose_hist-> GetXaxis()-> SetTitle("Z (cm)"); + dose_hist-> GetYaxis()-> SetTitle("Dose (GeV)"); + dose_hist-> SetFillColor(kBlue); + dose_hist-> SetStats(0); + +} + + +///////////////////// +Analysis::~Analysis() +///////////////////// +{ + delete incident_map; + delete incident_x_hist; + delete dose_map; + delete dose_hist; + + myanalysis=0; +} + + +///////////////////////////////// +Analysis* Analysis::GetAnalysis() +///////////////////////////////// +{ + if (myanalysis == 0) { + myanalysis = new Analysis(); + } + + return myanalysis; +} + + +/////////////////////// +void Analysis::Update() +/////////////////////// +{ + return; +} + + +////////////////////// +void Analysis::Clear() +////////////////////// +{ + incident_map-> Reset(); + incident_x_hist-> Reset(); + dose_map-> Reset(); + dose_hist-> Reset(); + + return; +} + + +////////////////////////////////////////// +void Analysis::Save(const G4String& fname) +////////////////////////////////////////// +{ + TFile* file = new TFile(fname.c_str(), + "RECREATE", "Geant4 ROOT analysis"); + incident_map-> Write(); + incident_x_hist-> Write(); + dose_map-> Write(); + dose_hist-> Write(); + + file-> Close(); + + delete file; + + return; +} + + +/////////////////////////////////////////////////// +void Analysis::FillIncident(const G4ThreeVector& p) +/////////////////////////////////////////////////// +{ + if(! incidentFlag) { + incident_map-> Fill(p.x()/cm, p.y()/cm); + incident_x_hist-> Fill(p.x()/cm); + + incidentFlag= true; + } +} + + +////////////////////////////////////////////////////////////// +void Analysis::FillDose(const G4ThreeVector& p, G4double dedx) +////////////////////////////////////////////////////////////// +{ + const G4double Z0= 25.*cm; + const G4double dxy= 10.*mm; + + if(std::abs(p.y()) < dxy ) { + dose_map-> Fill((p.z()+Z0)/cm, p.x()/cm, dedx/GeV); + + if(std::abs(p.x()) < dxy) { + dose_hist-> Fill((p.z()+Z0)/cm, dedx/GeV); + } + } +} + diff --git a/examples/extended/parallel/MPI/exMPI02/src/DetectorConstruction.cc b/examples/extended/parallel/MPI/exMPI02/src/DetectorConstruction.cc new file mode 100644 index 0000000000..7c9b7961f8 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/src/DetectorConstruction.cc @@ -0,0 +1,144 @@ +// +// ******************************************************************** +// * 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/11/16 14:29:33 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// DetectorConstruction.cc +// +// 2007 Q +// ==================================================================== +#include "DetectorConstruction.hh" +#include "VoxelParam.hh" +#include "G4NistManager.hh" +#include "G4Box.hh" +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4PVParameterised.hh" +#include "VoxelSD.hh" +#include "G4VisAttributes.hh" + +typedef G4LogicalVolume G4LV; +typedef G4PVPlacement G4PVP; +typedef G4VisAttributes G4VA; + +// ==================================================================== +// +// class description +// +// ==================================================================== + +//////////////////////////////////////////// +DetectorConstruction::DetectorConstruction() +//////////////////////////////////////////// +{ +} + +///////////////////////////////////////////// +DetectorConstruction::~DetectorConstruction() +///////////////////////////////////////////// +{ +} + +//////////////////////////////////////////////////// +G4VPhysicalVolume* DetectorConstruction::Construct() +//////////////////////////////////////////////////// +{ + G4NistManager* nistManager= G4NistManager::Instance(); + G4VisAttributes* va; + + // ============================================================== + // world volume + // ============================================================== + const G4double DXYZ_WORLD= 200.*cm; + G4Box* sld_world= new G4Box("world", + DXYZ_WORLD/2., DXYZ_WORLD/2., DXYZ_WORLD/2.); + + G4Material* vacuum= nistManager-> FindOrBuildMaterial("G4_Galactic"); + G4LV* lv_world= new G4LogicalVolume(sld_world, vacuum, "world"); + G4PVP* world= new G4PVPlacement(0, G4ThreeVector(), "AREA", + lv_world, 0, false, 0); + // vis. attributes + va= new G4VA(G4Color(1.,1.,1.)); + va-> SetVisibility(false); + lv_world-> SetVisAttributes(va); + + // ============================================================== + // water phantom + // ============================================================== + const G4double DXY_PHANTOM= 20.*cm; + const G4double DZ_PHANTOM= 50.*cm; + + G4Box* sld_phantom= new G4Box("phantom", + DXY_PHANTOM/2., DXY_PHANTOM/2., DZ_PHANTOM/2.); + + G4Material* water= nistManager-> FindOrBuildMaterial("G4_WATER"); + G4LV* lv_phantom= new G4LogicalVolume(sld_phantom, + water, "phantom"); + + va= new G4VA(G4Color(0.,1.,1.)); + lv_phantom-> SetVisAttributes(va); + + new G4PVP(0, G4ThreeVector(), lv_phantom, "phantom", lv_world, false, 0); + + // -------------------------------------------------------------- + // voxel planes + const G4double DXY_VXP= 20.*cm; + const G4double DZ_VXP= 1.*mm; + + G4Box* sld_vxp= new G4Box("vxplane", DXY_VXP/2., DXY_VXP/2., DZ_VXP/2.); + G4LV* lv_vxp= new G4LV(sld_vxp, water, "vxplane"); + + va= new G4VA(G4Color(1.,0.,0.)); + va-> SetVisibility(false); + lv_vxp-> SetVisAttributes(va); + + for (G4int iz=0; iz<500; iz++) { + G4double z0= -DZ_PHANTOM/2. + (iz+0.5)*DZ_VXP; + new G4PVP(0, G4ThreeVector(0.,0.,z0), + lv_vxp, "vxplane", lv_phantom, + false, 1000+iz); + } + + // -------------------------------------------------------------- + // voxel parameterized + + G4Box* sld_voxel= new G4Box("voxel",1.,1.,1.); // dummy + G4LV* lv_voxel= new G4LV(sld_voxel, water, "voxel"); + lv_voxel-> SetSensitiveDetector(new VoxelSD("voxel")); + + va= new G4VA(G4Color(0.,1.,1.)); + va-> SetVisibility(false); + lv_voxel-> SetVisAttributes(va); + + const G4int nvoxels= 100*100; + new G4PVParameterised("voxle", lv_voxel, lv_vxp, + kUndefined, nvoxels, new VoxelParam()); + + + return world; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAElectronBornExcitation.cc b/examples/extended/parallel/MPI/exMPI02/src/EventAction.cc similarity index 60% rename from source/processes/electromagnetic/lowenergy/src/G4DNAElectronBornExcitation.cc rename to examples/extended/parallel/MPI/exMPI02/src/EventAction.cc index ef14b2b2fa..bddfcf7d86 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAElectronBornExcitation.cc +++ b/examples/extended/parallel/MPI/exMPI02/src/EventAction.cc @@ -23,41 +23,49 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// $Id: EventAction.cc,v 1.2 2007/12/10 16:28:52 gunter Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// EventAction.cc // -// $Id: G4DNAElectronBornExcitation.cc,v 1.3 2006/06/29 19:39:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// 2007 Q +// ==================================================================== +#include "EventAction.hh" +#include "G4Event.hh" +#include "Analysis.hh" -#include "G4DNAElectronBornExcitation.hh" -#include "G4Electron.hh" +// ==================================================================== +// +// class description +// +// ==================================================================== - G4DNAElectronBornExcitationEnergyLimitsPolicy::G4DNAElectronBornExcitationEnergyLimitsPolicy() -: - lowEnergyLimit(7*eV), - zeroBelowLowEnergyLimit(true), - highEnergyLimit(10*keV), - zeroAboveHighEnergyLimit(false) +////////////////////////// +EventAction::EventAction() +////////////////////////// { } - G4DNAElectronBornExcitationIncomingParticlePolicy :: G4DNAElectronBornExcitationIncomingParticlePolicy() +/////////////////////////// +EventAction::~EventAction() +/////////////////////////// { } - G4DNAElectronBornExcitationDataFilePolicy :: G4DNAElectronBornExcitationDataFilePolicy() -: - lowEnergyLimit(7*eV), - zeroBelowLowEnergyLimit(true), - highEnergyLimit(10*keV), - zeroAboveHighEnergyLimit(false), - dataFileEnergyUnit(eV), - dataFileCrossSectionUnit(m*m), - dataFileName("ElectronBornExcitationCrossSection") + +//////////////////////////////////////////////////// +void EventAction::BeginOfEventAction(const G4Event*) +//////////////////////////////////////////////////// { } -const G4ParticleDefinition * G4DNAElectronBornExcitationIncomingParticlePolicy :: IncomingParticleDefinition(void) const + +////////////////////////////////////////////////// +void EventAction::EndOfEventAction(const G4Event*) +////////////////////////////////////////////////// { - return G4Electron::Electron(); + Analysis* myana= Analysis::GetAnalysis(); + myana-> ClearIncidentFlag(); } diff --git a/examples/extended/parallel/MPI/exMPI02/src/MedicalBeam.cc b/examples/extended/parallel/MPI/exMPI02/src/MedicalBeam.cc new file mode 100644 index 0000000000..d1a10c535a --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/src/MedicalBeam.cc @@ -0,0 +1,143 @@ +// +// ******************************************************************** +// * 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: MedicalBeam.cc,v 1.1 2007/11/16 14:29:33 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// MedicalBeam.cc +// +// 2005 Q +// ==================================================================== +#include "MedicalBeam.hh" +#include "Randomize.hh" +#include "G4Event.hh" +#include "G4ParticleTable.hh" +#include "G4PrimaryVertex.hh" + +using namespace CLHEP; + +#include + +// ==================================================================== +// +// class description +// +// ==================================================================== + +/////////////////////////////////// +MedicalBeam::MedicalBeam() + : particle(0), + kineticE(1.*MeV), + sourcePosition(G4ThreeVector()), + SSD(1.*m), + fieldShape(MedicalBeam::SQUARE), + fieldR(10.*cm) +/////////////////////////////////// +{ + + G4ParticleTable* particleTable= G4ParticleTable::GetParticleTable(); + particle= particleTable-> FindParticle("proton"); + + kineticE= 200.*MeV; + sourcePosition= G4ThreeVector(0.,0.,-125.*cm); + SSD= 100.*cm; + fieldXY[0]= fieldXY[1]= 5.*cm; +} + + +/////////////////////////// +MedicalBeam::~MedicalBeam() +/////////////////////////// +{ +} + + +//////////////////////////////////////////////////////// +G4ThreeVector MedicalBeam::GenerateBeamDirection() const +//////////////////////////////////////////////////////// +{ + // uniform distribution in a limitted solid angle + G4double dr; + if(fieldShape == MedicalBeam::SQUARE) { + dr= std::sqrt(sqr(fieldXY[0]/2.)+sqr(fieldXY[1]/2.)); + } else { + dr= fieldR; + } + + G4double sin0= dr/SSD; + G4double cos0= std::sqrt(1.-sqr(sin0)); + + G4double dcos=0.; + G4double dsin, dphi, z; + + G4double x= DBL_MAX; + G4double y= DBL_MAX; + + G4double xmax, ymax; + if(fieldShape == MedicalBeam::SQUARE) { + xmax= fieldXY[0]/2./SSD; + ymax= fieldXY[1]/2./SSD; + } else { + xmax= ymax= DBL_MAX-1.; + } + + while(! (std::abs(x)< xmax && std::abs(y)< ymax) ) { + dcos= RandFlat::shoot(cos0, 1.); + dsin= std::sqrt(1.-sqr(dcos)); + dphi= RandFlat::shoot(0., twopi); + + x= std::cos(dphi)*dsin*dcos; + y= std::sin(dphi)*dsin*dcos; + } + z= dcos; + + return G4ThreeVector(x,y,z); +} + + +///////////////////////////////////////////////////// +void MedicalBeam::GeneratePrimaries(G4Event* anEvent) +///////////////////////////////////////////////////// +{ + if(particle==0) return; + + // create a new vertex + G4PrimaryVertex* vertex= new G4PrimaryVertex(sourcePosition, 0.*ns); + + // momentum + G4double mass= particle-> GetPDGMass(); + G4double p= std::sqrt(sqr(mass+kineticE)-sqr(mass)); + G4ThreeVector pmon= p*GenerateBeamDirection(); + G4PrimaryParticle* primary= new G4PrimaryParticle(particle, + pmon.x(), + pmon.y(), + pmon.z()); + // set primary to vertex + vertex-> SetPrimary(primary); + + // set vertex to event + anEvent-> AddPrimaryVertex(vertex); +} + diff --git a/examples/extended/medical/DICOM/src/DicomOctreeMiddleNode.cc b/examples/extended/parallel/MPI/exMPI02/src/RunAction.cc similarity index 57% rename from examples/extended/medical/DICOM/src/DicomOctreeMiddleNode.cc rename to examples/extended/parallel/MPI/exMPI02/src/RunAction.cc index e57ada342f..bfb4a3edf8 100644 --- a/examples/extended/medical/DICOM/src/DicomOctreeMiddleNode.cc +++ b/examples/extended/parallel/MPI/exMPI02/src/RunAction.cc @@ -23,61 +23,58 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca +// $Id: RunAction.cc,v 1.2 2007/12/10 16:28:54 gunter Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// RunAction.cc // +// 2007 Q +// ==================================================================== +#include "RunAction.hh" +#include "Analysis.hh" +#include "G4MPImanager.hh" +#include + +// ==================================================================== // -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 +// class description // -// + Université Laval, Québec (QC) Canada -//******************************************************* +// ==================================================================== - -#include "DicomOctreeNode.hh" -#include "DicomOctreeMiddleNode.hh" -#include "DicomOctree.hh" - -DicomOctreeMiddleNode::DicomOctreeMiddleNode() +////////////////////////// +RunAction::RunAction() +////////////////////////// { - ResetFamily(); -} - -DicomOctreeMiddleNode::~DicomOctreeMiddleNode() -{ - for ( G4int i = 0; i < 8; i++ ) - { - if ( mChildren[i] != 0 ) delete mChildren[i]; - } -} -void DicomOctreeMiddleNode::ResetFamily() -{ - // ---- MGP ---- Remove explicit numbers in code - for ( G4int i = 0; i < 8; i++ ) mChildren[i] = 0; -} - -DicomOctreeMiddleNode::DicomOctreeMiddleNode( DicomOctreeNode* pParent ) : DicomOctreeNode( pParent ) -{ - ResetFamily(); -} - -G4int DicomOctreeMiddleNode::FindChild( const DicomOctreeNode* pNode ) -{ - for ( G4int i = 0; i < 8; i++ ) - { - if ( mChildren[i] == pNode ) return i; - } - return -1; -} - -G4int DicomOctreeMiddleNode::MemSize() -{ - return sizeof(DicomOctreeMiddleNode); } +/////////////////////////// +RunAction::~RunAction() +/////////////////////////// +{ +} + + +////////////////////////////////////////////// +void RunAction::BeginOfRunAction(const G4Run*) +////////////////////////////////////////////// +{ + Analysis* myana= Analysis::GetAnalysis(); + myana-> Clear(); +} + + +//////////////////////////////////////////// +void RunAction::EndOfRunAction(const G4Run*) +//////////////////////////////////////////// +{ + G4int rank= G4MPImanager::GetManager()-> GetRank(); + + char str[64]; + sprintf(str, "dose-%03d.root", rank); + G4String fname(str); + + Analysis* myana= Analysis::GetAnalysis(); + myana-> Save(fname); +} + diff --git a/examples/extended/parallel/MPI/exMPI02/src/VoxelParam.cc b/examples/extended/parallel/MPI/exMPI02/src/VoxelParam.cc new file mode 100644 index 0000000000..124ee7e125 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/src/VoxelParam.cc @@ -0,0 +1,87 @@ +// +// ******************************************************************** +// * 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: VoxelParam.cc,v 1.1 2007/11/16 14:29:33 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// VoxelParam.cc +// +// 2007 Q +// ==================================================================== +#include "VoxelParam.hh" +#include "G4VPhysicalVolume.hh" +#include "G4Box.hh" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +//////////////////////// +VoxelParam::VoxelParam() +//////////////////////// +{ +} + +///////////////////////// +VoxelParam::~VoxelParam() +///////////////////////// +{ +} + +//////////////////////////////////////////////////////////////////// +void VoxelParam::ComputeTransformation(const G4int id, + G4VPhysicalVolume* vol) const +//////////////////////////////////////////////////////////////////// +{ + const G4int NX= 100; + + G4int iy= id / NX; + G4int ix= id % NX; + + const G4double dxyz= 1.*mm; + const G4double DXY= 10.*cm; + + G4double x0= -DXY/2. + ix*dxyz; + G4double y0= -DXY/2. + iy*dxyz; + + vol-> SetTranslation(G4ThreeVector(x0,y0,0.)); + vol-> SetRotation(0); +} + +////////////////////////////////////////////////////////////////// +void VoxelParam::ComputeDimensions(G4Box& box, const G4int, + const G4VPhysicalVolume*) const +////////////////////////////////////////////////////////////////// +{ + const G4double dxyz= 0.5*mm; + + box.SetXHalfLength(dxyz); + box.SetYHalfLength(dxyz); + box.SetZHalfLength(dxyz); +} + diff --git a/examples/extended/parallel/MPI/exMPI02/src/VoxelSD.cc b/examples/extended/parallel/MPI/exMPI02/src/VoxelSD.cc new file mode 100644 index 0000000000..743d312433 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/src/VoxelSD.cc @@ -0,0 +1,103 @@ +// +// ******************************************************************** +// * 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: VoxelSD.cc,v 1.1 2007/11/16 14:29:33 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// VoxelSD.cc +// +// 2007 Q +// ==================================================================== +#include "VoxelSD.hh" +#include "G4SDManager.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4VTouchable.hh" +#include "G4TouchableHistory.hh" +#include "Randomize.hh" +#include "G4MPImanager.hh" +#include "Analysis.hh" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +////////////////////////////////////// +VoxelSD::VoxelSD(const G4String& name) + : G4VSensitiveDetector(name) +////////////////////////////////////// +{ + G4SDManager::GetSDMpointer()-> AddNewDetector(this); +} + + +/////////////////// +VoxelSD::~VoxelSD() +/////////////////// +{ +} + +/////////////////////////////////////////////////////////////// +G4bool VoxelSD::ProcessHits(G4Step* astep, G4TouchableHistory*) +/////////////////////////////////////////////////////////////// +{ + G4ThreeVector x0= astep-> GetPreStepPoint()-> GetPosition(); + G4ThreeVector x1= astep-> GetPostStepPoint()-> GetPosition(); + + G4int tid= astep-> GetTrack()-> GetTrackID(); + G4int iz= astep-> GetPreStepPoint()-> GetTouchable()-> GetReplicaNumber(1); + + Analysis* myana= Analysis::GetAnalysis(); + + // incident position + if (tid==1 && iz==1000) { // scored @ first layer + myana-> FillIncident(x0); + } + + // energy deposit + G4ThreeVector p= G4UniformRand()*(x1-x0) + x0; // position sampling + G4double edep= astep-> GetTotalEnergyDeposit(); + myana-> FillDose(p, edep); + + return true; +} + + +//////////////////////////////////////////// +void VoxelSD::Initialize(G4HCofThisEvent*) +//////////////////////////////////////////// +{ +} + + +//////////////////////////////////////////// +void VoxelSD::EndOfEvent(G4HCofThisEvent*) +//////////////////////////////////////////// +{ +} + diff --git a/examples/extended/parallel/MPI/exMPI02/v.mac b/examples/extended/parallel/MPI/exMPI02/v.mac new file mode 100644 index 0000000000..0b8843bfa7 --- /dev/null +++ b/examples/extended/parallel/MPI/exMPI02/v.mac @@ -0,0 +1,17 @@ +/vis/verbose 0 + +/vis/open OGLIX + +/vis/scene/create +/vis/scene/add/volume + +/vis/sceneHandler/attach + +/vis/viewer/set/viewpointThetaPhi 90. 270. + +/tracking/storeTrajectory 1 +/vis/scene/add/trajectories +/vis/scene/endOfEventAction accumulate +#/vis/scene/endOfEventAction refresh + + diff --git a/examples/extended/parallel/MPI/mpi_interface/G4MPI-lam.gmk b/examples/extended/parallel/MPI/mpi_interface/G4MPI-lam.gmk new file mode 100644 index 0000000000..d09d1c8638 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/G4MPI-lam.gmk @@ -0,0 +1,14 @@ +# $Id: G4MPI-lam.gmk,v 1.1 2007/11/16 13:32:56 kmura Exp $ +# $Name: geant4-09-01 $ +# =========================================================== +# Makefile for building G4MPI (LAM) +# =========================================================== + +ifndef G4MPIROOT + G4MPIROOT = /opt/lam +endif + +# additional flags +CXX := mpic++ +CPPFLAGS += -I$(G4MPIROOT)/include + diff --git a/examples/extended/parallel/MPI/mpi_interface/G4MPI-mpich2.gmk b/examples/extended/parallel/MPI/mpi_interface/G4MPI-mpich2.gmk new file mode 100644 index 0000000000..72f340239f --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/G4MPI-mpich2.gmk @@ -0,0 +1,14 @@ +# $Id: G4MPI-mpich2.gmk,v 1.1 2007/11/16 13:32:56 kmura Exp $ +# $Name: geant4-09-01 $ +# =========================================================== +# Makefile for building G4MPI (MPICH2) +# =========================================================== + +ifndef G4MPIROOT + G4MPIROOT = /opt/mpich2 +endif + +# additional flags +CXX := mpicxx +CPPFLAGS += -I$(G4MPIROOT)/include -DMPICH_IGNORE_CXX_SEEK + diff --git a/examples/extended/parallel/MPI/mpi_interface/G4MPI-openmpi.gmk b/examples/extended/parallel/MPI/mpi_interface/G4MPI-openmpi.gmk new file mode 100644 index 0000000000..dcf896caf7 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/G4MPI-openmpi.gmk @@ -0,0 +1,14 @@ +# $Id: G4MPI-openmpi.gmk,v 1.1 2007/11/16 13:32:56 kmura Exp $ +# $Name: geant4-09-01 $ +# =========================================================== +# Makefile for building G4MPI (LAM) +# =========================================================== + +ifndef G4MPIROOT + G4MPIROOT = /opt/ompi +endif + +# additional flags +CXX := mpic++ +CPPFLAGS += -I$(G4MPIROOT)/include -I$(G4MPIROOT)/include/openmpi + diff --git a/examples/extended/parallel/MPI/mpi_interface/G4MPI.gmk b/examples/extended/parallel/MPI/mpi_interface/G4MPI.gmk new file mode 100644 index 0000000000..dfb8c6a38d --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/G4MPI.gmk @@ -0,0 +1,14 @@ +# $Id: G4MPI.gmk,v 1.1 2007/11/16 13:32:56 kmura Exp $ +# $Name: geant4-09-01 $ +# =========================================================== +# Makefile for building G4MPI (LAM) +# =========================================================== + +ifndef G4MPIROOT + G4MPIROOT = /opt/lam +endif + +# additional flags +CXX := mpic++ +CPPFLAGS += -I$(G4MPIROOT)/include + diff --git a/examples/extended/parallel/MPI/mpi_interface/GNUmakefile b/examples/extended/parallel/MPI/mpi_interface/GNUmakefile new file mode 100644 index 0000000000..5fc2a56a5a --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/GNUmakefile @@ -0,0 +1,44 @@ +# $Id: GNUmakefile,v 1.1 2007/11/16 13:32:56 kmura Exp $ +# $Name: geant4-09-01 $ +# =========================================================== +# Makefile for building MPI interface +# =========================================================== +name := G4UImpi + +ifndef G4INSTALL + G4INSTALL = ../../../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk +include $(G4INSTALL)/config/interactivity.gmk +include G4MPI.gmk + +CPPFLAGS += -I$(G4BASE)/global/management/include \ + -I$(G4BASE)/global/HEPRandom/include \ + -I$(G4BASE)/global/HEPGeometry/include \ + -I$(G4BASE)/run/include \ + -I$(G4BASE)/event/include \ + -I$(G4BASE)/track/include \ + -I$(G4BASE)/tracking/include \ + -I$(G4BASE)/particles/management/include \ + -I$(G4BASE)/processes/management/include \ + -I$(G4BASE)/processes/cuts/include \ + -I$(G4BASE)/processes/electromagnetic/utils/include \ + -I$(G4BASE)/processes/transportation/include \ + -I$(G4BASE)/processes/decay/include \ + -I$(G4BASE)/materials/include \ + -I$(G4BASE)/geometry/management/include \ + -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/navigation/include \ + -I$(G4BASE)/geometry/magneticfield/include \ + -I$(G4BASE)/geometry/biasing/include \ + -I$(G4BASE)/digits_hits/detector/include \ + -I$(G4BASE)/digits_hits/hits/include \ + -I$(G4BASE)/digits_hits/digits/include \ + -I$(G4BASE)/interfaces/common/include \ + -I$(G4BASE)/interfaces/basic/include \ + -I$(G4BASE)/intercoms/include \ + -I$(G4BASE)/graphics_reps/include + +include $(G4INSTALL)/config/common.gmk + diff --git a/examples/extended/parallel/MPI/mpi_interface/History b/examples/extended/parallel/MPI/mpi_interface/History new file mode 100644 index 0000000000..57f792fd53 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/History @@ -0,0 +1,16 @@ +$Id: History,v 1.1 2007/11/16 13:32:56 kmura Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + G4MPI History file + ------------------ + +16 Nov. 2007 K.Murakami + - commited to G4 CVS. + + + + diff --git a/examples/extended/parallel/MPI/mpi_interface/README b/examples/extended/parallel/MPI/mpi_interface/README new file mode 100644 index 0000000000..6335429fb2 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/README @@ -0,0 +1,41 @@ +$Id: README,v 1.1 2007/11/16 13:32:56 kmura Exp $ +========================================================================== +Geant4 MPI Interface + + Author: + Koichi Murakami (KEK) / Koichi.Murakami@kek.jp +========================================================================== + +How to build +============ + +1. Check "G4MPI.gmk" for yor MPI configuration: + +* Set "G4MPIROOT", which is the root path to your MPI library. +* Redifine CXX as (wrapped) MPI C++ compiler. +* Specify additional include paths and compiler flags to "CPPFLAGS". + +Sample makefiles for (LAM, MPICH2, OpenMPI) are also presented. +An example of "G4MPI.gmk": + + # =========================================================== + # Makefile for building G4MPI (LAM) + # =========================================================== + + ifndef G4MPIROOT + G4MPIROOT = /opt/lam + endif + + # additional flags + CXX := mpic++ + CPPFLAGS += -I$(G4MPIROOT)/include + + +2. Build the library + +# make +# make includes + +The library (libG4UImpi) will be created in $G4LIB, +and header files will be installed into $G4INCLUDE. + diff --git a/examples/extended/parallel/MPI/mpi_interface/include/G4MPIbatch.hh b/examples/extended/parallel/MPI/mpi_interface/include/G4MPIbatch.hh new file mode 100644 index 0000000000..174b74cb87 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/include/G4MPIbatch.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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: G4MPIbatch.hh,v 1.1 2007/11/16 14:05:39 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4MPIbatch.hh +// +// 2007 Q +// ==================================================================== +#ifndef G4MPI_BATCH_H +#define G4MPI_BATCH_H + +#include "G4VMPIsession.hh" +#include + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class G4MPIbatch : public G4VMPIsession { +protected: + std::ifstream batchStream; + G4bool isOpened; + G4bool isBatchMode; + + // get command from a batch script file + G4String ReadCommand(); + +public: + G4MPIbatch(const G4String& fname="", G4bool qbatch=false); + ~G4MPIbatch(); + + // concrete implementations + virtual G4UIsession* SessionStart(); +}; + +#endif diff --git a/examples/extended/parallel/MPI/mpi_interface/include/G4MPImanager.hh b/examples/extended/parallel/MPI/mpi_interface/include/G4MPImanager.hh new file mode 100644 index 0000000000..c2cce67247 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/include/G4MPImanager.hh @@ -0,0 +1,243 @@ +// +// ******************************************************************** +// * 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: G4MPImanager.hh,v 1.1 2007/11/16 14:05:40 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4MPImanager.hh +// +// 2007 Q +// ==================================================================== +#ifndef G4MPI_MANAGER_H +#define G4MPI_MANAGER_H + +#include "mpi.h" +#include "globals.hh" +#include +#include + +// ==================================================================== +// +// class definition +// +// ==================================================================== +class G4MPImessenger; +class G4MPIsession; +class G4MPIstatus; +class G4VMPIseedGenerator; + +class G4MPImanager { +private: + static G4MPImanager* theManager; + G4MPImessenger* messenger; + G4MPIsession* session; + + G4int verbose; + G4MPIstatus* status; // status for each node + + // MPI rank + G4bool isMaster; + G4bool isSlave; + G4int rank; + G4int size; + + // MPI communicator + MPI::Intracomm COMM_G4COMMAND; + + // cout/cerr control + G4bool qfcout; + std::ofstream fscout; + + // init/macro file + G4bool qinitmacro; + G4String initFileName; + G4bool qbatchmode; + G4String macroFileName; + + // internal use + void Initialize(); + void ParseArguments(G4int argc, char** argv); + void Wait(G4int ausec) const; + void UpdateStatus(); + + // for beamOn + pthread_t threadID; + + // seed generator + G4VMPIseedGenerator* seedGenerator; + + // parallel parameters + G4double masterWeight; + +public: + + enum { // MPI master rank + RANK_MASTER= 0 + }; + + enum { // MPI tag + TAG_G4COMMAND= 100, + TAG_G4STATUS= 200, + TAG_G4SEED= 300, + TAG_DATA= 1000 + }; + + G4MPImanager(); + G4MPImanager(int argc, char** argv); + ~G4MPImanager(); + + static G4MPImanager* GetManager(); + + // set/get methods + G4MPIsession* GetMPIsession() const; + + G4int GetVerbose() const; + void SetVerbose(G4int iverbose); + + G4int GetSize() const; + G4int GetRank() const; + + G4bool IsMaster() const; + G4bool IsSlave() const; + + G4bool IsInitMacro() const; + const G4String& GetInitFileName() const; + + G4bool IsBatchMode() const; + const G4String& GetMacroFileName() const; + + void SetMasterWeight(G4double aweight); + G4double GetMasterWeight() const; + + G4VMPIseedGenerator* GetSeedGenerator() const; + + // MPI methods + G4String BcastCommand(const G4String& command); + void ShowStatus(); + void ShowSeeds(); + void SetSeed(G4int inode, G4long seed); + + // methods for MPI environment + void DistributeSeeds(); + void ExecuteMacroFile(const G4String& fname, G4bool qbatch=false); + G4bool CheckThreadStatus(); + void ExecuteThreadCommand(const G4String& command); + void ExecuteBeamOnThread(const G4String& command); + void JoinBeamOnThread(); + + void BeamOn(G4int nevent, G4bool qdivide=true); + void Print(const G4String& message); + + // misc + void ShowHelp() const; + +}; + +// ==================================================================== +// inline functions +// ==================================================================== + +inline G4MPIsession* G4MPImanager::GetMPIsession() const +{ + return session; +} + +inline G4int G4MPImanager::GetVerbose() const +{ + return verbose; +} + +inline void G4MPImanager::SetVerbose(G4int iverbose) +{ + G4int lv=iverbose; + if(iverbose>1) lv=1; + if(iverbose<0) lv=0; + + verbose= lv; + return; +} + +inline G4int G4MPImanager::GetRank() const +{ + return rank; +} + +inline G4int G4MPImanager::GetSize() const +{ + return size; +} + +inline G4bool G4MPImanager::IsMaster() const +{ + return isMaster; +} + +inline G4bool G4MPImanager::IsSlave() const +{ + return isSlave; +} + +inline G4bool G4MPImanager::IsInitMacro() const +{ + return qinitmacro; + +} + +inline const G4String& G4MPImanager::GetInitFileName() const +{ + return initFileName; + +} + +inline G4bool G4MPImanager::IsBatchMode() const +{ + return qbatchmode; +} + +inline const G4String& G4MPImanager::GetMacroFileName() const +{ + return macroFileName; +} + +inline void G4MPImanager::SetMasterWeight(G4double aweight) +{ + masterWeight= aweight; + + if(aweight<0.) masterWeight= 0.; + if(aweight>1.) masterWeight= 1.; +} + +inline G4double G4MPImanager::GetMasterWeight() const +{ + return masterWeight; +} + +inline G4VMPIseedGenerator* G4MPImanager::GetSeedGenerator() const +{ + return seedGenerator; +} + +#endif diff --git a/examples/extended/parallel/MPI/mpi_interface/include/G4MPImessenger.hh b/examples/extended/parallel/MPI/mpi_interface/include/G4MPImessenger.hh new file mode 100644 index 0000000000..7527d5af39 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/include/G4MPImessenger.hh @@ -0,0 +1,81 @@ +// +// ******************************************************************** +// * 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: G4MPImessenger.hh,v 1.1 2007/11/16 14:05:40 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4MPImessenger.hh +// +// 2007 Q +// ==================================================================== +#ifndef G4MPI_MESSENGER_H +#define G4MPI_MESSENGER_H + +#include "G4UImessenger.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== +class G4MPImanager; +class G4UIdirectory; +class G4UIcmdWithoutParameter; +class G4UIcmdWithAnInteger; +class G4UIcmdWithAString; +class G4UIcmdWithADouble; +class G4UIcommand; + +class G4MPImessenger : public G4UImessenger { +private: + G4MPImanager* g4MPI; + + // /mpi + G4UIdirectory* dir; + + G4UIcmdWithAnInteger* verbose; + G4UIcmdWithoutParameter* status; + + G4UIcmdWithAString* execute; + + G4UIcommand* beamOn; + G4UIcmdWithAnInteger* dotbeamOn; + G4UIcmdWithADouble* masterWeight; + + G4UIcmdWithoutParameter* showSeeds; + G4UIcmdWithAnInteger* setMasterSeed; + G4UIcommand* setSeed; + +public: + G4MPImessenger(G4MPImanager* manager); + ~G4MPImessenger(); + + virtual void SetNewValue(G4UIcommand* command, G4String newValue); + virtual G4String GetCurrentValue(G4UIcommand* command); + +}; + +#endif diff --git a/examples/extended/parallel/MPI/mpi_interface/include/G4MPIrandomSeedGenerator.hh b/examples/extended/parallel/MPI/mpi_interface/include/G4MPIrandomSeedGenerator.hh new file mode 100644 index 0000000000..ee750ccd3d --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/include/G4MPIrandomSeedGenerator.hh @@ -0,0 +1,56 @@ +// +// ******************************************************************** +// * 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: G4MPIrandomSeedGenerator.hh,v 1.1 2007/11/16 14:05:40 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4MPIrandomSeedGenerator.hh +// +// 2007 Q +// ==================================================================== +#ifndef G4MPI_RANDOM_SEED_GENERATOR_H +#define G4MPI_RANDOM_SEED_GENERATOR_H + +#include "G4VMPIseedGenerator.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class G4MPIrandomSeedGenerator : public G4VMPIseedGenerator { +protected: + G4bool CheckDoubleCount(); + virtual void GenerateSeeds(); + +public: + G4MPIrandomSeedGenerator(); + ~G4MPIrandomSeedGenerator(); + +}; + +#endif diff --git a/examples/extended/parallel/MPI/mpi_interface/include/G4MPIsession.hh b/examples/extended/parallel/MPI/mpi_interface/include/G4MPIsession.hh new file mode 100644 index 0000000000..3f4102c09c --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/include/G4MPIsession.hh @@ -0,0 +1,67 @@ +// +// ******************************************************************** +// * 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: G4MPIsession.hh,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4MPIsession.hh +// +// 2007 Q +// ==================================================================== +#ifndef G4MPI_SESSION_H +#define G4MPI_SESSION_H + +#include "G4VMPIsession.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class G4MPIsession : public G4VMPIsession { +protected: + G4VUIshell* shell; + + // get command from user prompt of the master node + G4String GetCommand(const char* msg=0); + + // misc + G4bool TryForcedTerminate(); + +public: + G4MPIsession(G4VUIshell* ashell=0); + ~G4MPIsession(); + + void SetPrompt(const G4String& prompt); + void SetShell(G4VUIshell* ashell); + + // concrete implementations + virtual G4UIsession* SessionStart(); + +}; + +#endif diff --git a/examples/extended/parallel/MPI/mpi_interface/include/G4MPIstatus.hh b/examples/extended/parallel/MPI/mpi_interface/include/G4MPIstatus.hh new file mode 100644 index 0000000000..d3c6c332f0 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/include/G4MPIstatus.hh @@ -0,0 +1,138 @@ +// +// ******************************************************************** +// * 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: G4MPIstatus.hh,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4MPIstatus.hh +// +// 2007 Q +// ==================================================================== +#ifndef G4MPI_STATUS_H +#define G4MPI_STATUS_H + +#include "globals.hh" +#include "G4ApplicationState.hh" +#include "G4Timer.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== +class G4Timer; + +class G4MPIstatus { +private: + G4int rank; + G4int runID; + G4int nEventToBeProcessed; + G4int eventID; + G4double cputime; + G4ApplicationState g4state; + G4Timer* timer; + + G4String GetStateString(G4ApplicationState astate) const; + +public: + enum { NSIZE=10 }; + + G4MPIstatus(); + ~G4MPIstatus(); + + // set/get functions + void SetStatus(G4int arank, G4int runid, G4int noe, G4int evtid, + G4ApplicationState state); + + G4int GetRank() const; + G4int GetRunID() const; + G4int GetNEventToBeProcessed() const; + G4int GetEventID() const; + G4double GetCPUTime() const; + G4ApplicationState GetG4State() const; + + // for pickling + G4int SizeOf() const; + void Pack(G4int* data) const; + void UnPack(G4int* data); + + // for timer + void StartTimer(); + void StopTimer(); + + void Print() const; + +}; + +// ==================================================================== +// inline functions +// ==================================================================== +inline G4int G4MPIstatus::SizeOf() const +{ + return NSIZE; +} + +inline G4int G4MPIstatus::GetRank() const +{ + return rank; +} + +inline G4int G4MPIstatus::GetRunID() const +{ + return runID; +} + +inline G4int G4MPIstatus::GetNEventToBeProcessed() const +{ + return nEventToBeProcessed; +} + +inline G4int G4MPIstatus::GetEventID() const +{ + return eventID; +} + +inline G4double G4MPIstatus::GetCPUTime() const +{ + return cputime; +} + +inline G4ApplicationState G4MPIstatus::GetG4State() const +{ + return g4state; +} + +inline void G4MPIstatus::StartTimer() +{ + timer-> Start(); +} + +inline void G4MPIstatus::StopTimer() +{ + timer-> Stop(); +} + +#endif diff --git a/examples/extended/parallel/MPI/mpi_interface/include/G4UImpish.hh b/examples/extended/parallel/MPI/mpi_interface/include/G4UImpish.hh new file mode 100644 index 0000000000..887afffbb4 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/include/G4UImpish.hh @@ -0,0 +1,56 @@ +// +// ******************************************************************** +// * 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: G4UImpish.hh,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4UImpish.hh +// +// shell for MPI slaves +// 2007 Q +// ==================================================================== +#ifndef G4UI_MPI_SH_H +#define G4UI_MPI_SH_H + +#include "G4VUIshell.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class G4UImpish : public G4VUIshell { + +public: + G4UImpish(); + ~G4UImpish(); + + virtual G4String GetCommandLine(const char* msg=0); + +}; + +#endif diff --git a/examples/extended/parallel/MPI/mpi_interface/include/G4VMPIseedGenerator.hh b/examples/extended/parallel/MPI/mpi_interface/include/G4VMPIseedGenerator.hh new file mode 100644 index 0000000000..a327befc33 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/include/G4VMPIseedGenerator.hh @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * 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: G4VMPIseedGenerator.hh,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4VMPIseedGenerator.hh +// +// 2007 Q +// ==================================================================== +#ifndef G4VMPI_SEED_GENERATOR_H +#define G4VMPI_SEED_GENERATOR_H + +#include "globals.hh" +#include + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +class G4VMPIseedGenerator { +protected: + G4long masterSeed; + std::vector seedList; + + // generate seeds for MPI nodes + virtual void GenerateSeeds()=0; + +public: + G4VMPIseedGenerator(); + virtual ~G4VMPIseedGenerator(); + + // set/get methods + void SetMasterSeed(G4long aseed); // trigger GenerateSeeds() + G4long GetMasterSeed() const; + + const std::vector& GetSeedList() const; + +}; + +// ==================================================================== +// inline functions +// ==================================================================== +inline G4long G4VMPIseedGenerator::GetMasterSeed() const +{ + return masterSeed; +} + +inline const std::vector& G4VMPIseedGenerator::GetSeedList() const +{ + return seedList; +} + +#endif diff --git a/examples/extended/parallel/MPI/mpi_interface/include/G4VMPIsession.hh b/examples/extended/parallel/MPI/mpi_interface/include/G4VMPIsession.hh new file mode 100644 index 0000000000..2d067bd292 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/include/G4VMPIsession.hh @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * 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: G4VMPIsession.hh,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4VMPIsession.hh +// +// 2007 Q +// ==================================================================== +#ifndef G4VMPI_SESSION_H +#define G4VMPI_SESSION_H + +#include "G4VBasicShell.hh" + +// ==================================================================== +// +// class definition +// +// ==================================================================== + +typedef void* (*Func_t)(void *); // for thead function + +class G4MPImanager; +class G4VUIshell; + +class G4VMPIsession : public G4VBasicShell { +protected: + // MPI handling + G4MPImanager* g4MPI; + + // MPI node info (cache) + G4bool isMaster; + G4bool isSlave; + G4int rank; + + G4int ExecCommand(G4String aCommand); + G4String TruncateCommand(const G4String& command) const; + G4String BypassCommand(const G4String& command) const; + + // for help operation + virtual G4bool GetHelpChoice(G4int& aval); + virtual void ExitHelp(); + +public: + G4VMPIsession(); + ~G4VMPIsession(); + + // concrete implementations + virtual void PauseSessionStart(G4String msg); + + virtual G4int ReceiveG4cout(G4String coutString); + virtual G4int ReceiveG4cerr(G4String cerrString); + +}; + +#endif diff --git a/examples/extended/parallel/MPI/mpi_interface/src/G4MPIbatch.cc b/examples/extended/parallel/MPI/mpi_interface/src/G4MPIbatch.cc new file mode 100644 index 0000000000..82efa38fad --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/src/G4MPIbatch.cc @@ -0,0 +1,137 @@ +// +// ******************************************************************** +// * 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: G4MPIbatch.cc,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4MPIsession.cc +// +// 2007 Q +// ==================================================================== +#include "G4MPIbatch.hh" +#include "G4MPImanager.hh" +#include "G4UIcommandStatus.hh" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +//////////////////////////////////////////////////////////// +G4MPIbatch::G4MPIbatch(const G4String& fname, G4bool qbatch) + : G4VMPIsession(), + isOpened(false), isBatchMode(qbatch) +//////////////////////////////////////////////////////////// +{ + if(isMaster) { + batchStream.open(fname, std::ios::in); + if(batchStream.fail()) { + G4cerr << "cannot open a macro file(" << fname << ")." + << G4endl; + } else { + isOpened= true; + } + } +} + + +///////////////////////////// +G4MPIbatch::~G4MPIbatch() +///////////////////////////// +{ + if(isOpened) batchStream.close(); +} + + +////////////////////////////////// +G4String G4MPIbatch::ReadCommand() +////////////////////////////////// +{ + enum { BUFSIZE= 256 }; + char linebuf[BUFSIZE]; + + while(batchStream.good()) { + batchStream.getline(linebuf, BUFSIZE); + + G4String cmdline(linebuf); + cmdline= cmdline.strip(G4String::both); + cmdline= cmdline.strip(G4String::both, '\011'); // remove TAB + cmdline= TruncateCommand(cmdline); + + str_size ic= cmdline.find_first_of('#'); + if(ic != G4String::npos) { + cmdline= cmdline(0, ic); + } + + if(batchStream.eof()) { + if(cmdline.size()==0) { + return "exit"; + } else { + return cmdline; + } + } + + if(cmdline.size()==0) continue; // skip null line + return cmdline; + } + + return "exit"; // dummy +} + + +/////////////////////////////////////// +G4UIsession* G4MPIbatch::SessionStart() +/////////////////////////////////////// +{ + G4String newCommand="", scommand; // newCommand is always "" in slaves + + if(isMaster) newCommand= ReadCommand(); + // broadcast a new G4 command + scommand= g4MPI-> BcastCommand(newCommand); + if(scommand == "exit" ) return 0; + + while(1){ + G4int rc= ExecCommand(scommand); + if(rc != fCommandSucceeded) break; + + if(isMaster) newCommand= ReadCommand(); + scommand= g4MPI-> BcastCommand(newCommand); + if(scommand == "exit" ) { + if(isBatchMode) { + if(g4MPI-> CheckThreadStatus()) { + g4MPI-> JoinBeamOnThread(); + break; + } + } else { + break; + } + } + } + + return 0; +} + diff --git a/examples/extended/parallel/MPI/mpi_interface/src/G4MPImanager.cc b/examples/extended/parallel/MPI/mpi_interface/src/G4MPImanager.cc new file mode 100644 index 0000000000..e4221ba1a4 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/src/G4MPImanager.cc @@ -0,0 +1,592 @@ +// +// ******************************************************************** +// * 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: G4MPImanager.cc,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4MPImanager.cc +// +// 2007 Q +// ==================================================================== +#include "G4MPImanager.hh" +#include "G4MPImessenger.hh" +#include "G4MPIsession.hh" +#include "G4MPIbatch.hh" +#include "G4MPIstatus.hh" +#include "G4MPIrandomSeedGenerator.hh" +#include "G4UImanager.hh" +#include "G4RunManager.hh" +#include "G4StateManager.hh" +#include "G4Run.hh" +#include +#include +#include + +G4MPImanager* G4MPImanager::theManager= 0; + +// ==================================================================== +// wrappers for thread functions +// ==================================================================== + +//////////////////////////////////////////////////////////////// +static void thread_ExecuteThreadCommand(const G4String* command) +//////////////////////////////////////////////////////////////// +{ + G4MPImanager::GetManager()-> ExecuteThreadCommand(*command); +} + + +// ==================================================================== +// +// class description +// +// ==================================================================== + +//////////////////////////// +G4MPImanager::G4MPImanager() + : verbose(0), + qfcout(false), + qinitmacro(false), + qbatchmode(false), + threadID(0), + masterWeight(1.) +//////////////////////////// +{ + //MPI::Init(); + MPI::Init_thread(MPI::THREAD_SERIALIZED); + Initialize(); +} + + +///////////////////////////////////////////////// +G4MPImanager::G4MPImanager(int argc, char** argv) + : verbose(0), qfcout(false), + qinitmacro(false), qbatchmode(false), + threadID(0), + masterWeight(1.) +///////////////////////////////////////////////// +{ + //MPI::Init(argc, argv); + MPI::Init_thread(argc, argv, MPI::THREAD_SERIALIZED); + Initialize(); + ParseArguments(argc, argv); +} + + +///////////////////////////// +G4MPImanager::~G4MPImanager() +///////////////////////////// +{ + if(isSlave && qfcout) fscout.close(); + + delete status; + delete messenger; + delete session; + + COMM_G4COMMAND.Free(); + + MPI::Finalize(); + + theManager= 0; +} + + +//////////////////////////////////////// +G4MPImanager* G4MPImanager::GetManager() +//////////////////////////////////////// +{ + if(theManager==0) { + G4Exception("G4MPImanager is not created."); + } + return theManager; +} + + +/////////////////////////////// +void G4MPImanager::Initialize() +/////////////////////////////// +{ + if(theManager != 0) { + G4Exception("G4MPImanager is constructed twice."); + } + theManager= this; + + // get rank information + size= MPI::COMM_WORLD.Get_size(); + rank= MPI::COMM_WORLD.Get_rank(); + isMaster= (rank == RANK_MASTER); + isSlave= (rank != RANK_MASTER); + + // initialize MPI communicator + COMM_G4COMMAND= MPI::COMM_WORLD.Dup(); + + // new G4MPI stuffs + messenger= new G4MPImessenger(this); + + session= new G4MPIsession; + + status= new G4MPIstatus; + + // default seed generator is random generator. + seedGenerator= new G4MPIrandomSeedGenerator; + DistributeSeeds(); + +} + + +//////////////////////////////////////////////////////// +void G4MPImanager::ParseArguments(int argc, char** argv) +//////////////////////////////////////////////////////// +{ + G4int qhelp= 0; + G4String ofprefix="mpi"; + + G4int c; + while (1) { + G4int option_index= 0; + static struct option long_options[] = { + {"help", 0, 0, 0}, + {"verbose", 0, 0, 0}, + {"init", 1, 0, 0}, + {"ofile", 2, 0, 0}, + {0, 0, 0, 0} + }; + + opterr= 0; // suppress message + c= getopt_long(argc, argv, "hvi:o", long_options, &option_index); + opterr= 1; + + if(c == -1) break; + + switch (c) { + case 0: + switch(option_index) { + case 0 : // --help + qhelp= 1; + break; + case 1 : // --verbose + verbose= 1; + break; + case 2 : // --init + qinitmacro= true; + initFileName= optarg; + break; + case 3 : // --ofile + qfcout= true; + if(optarg) ofprefix= optarg; + break; + } + break; + case 'h' : + qhelp=1; + break; + case 'v' : + verbose= 1; + break; + case 'i' : + qinitmacro= true; + initFileName= optarg; + break; + case 'o' : + qfcout= true; + break; + default: + break; + } + } + + // show help + if(qhelp) { + if(isMaster) ShowHelp(); + MPI::Finalize(); + exit(0); + } + + // file output + if(isSlave && qfcout) { + G4String prefix= ofprefix+".%03d"+".cout"; + char str[1024]; + sprintf(str, prefix.c_str(), rank); + G4String fname(str); + fscout.open(fname.c_str(), std::ios::out); + } + + // non-option ARGV-elements ... + if (optind < argc ) { + qbatchmode= true; + macroFileName= argv[optind]; + } +} + + +////////////////////////////////////////// +void G4MPImanager::Wait(G4int ausec) const +////////////////////////////////////////// +{ + struct timespec treq, trem; + treq.tv_sec = 0; + treq.tv_nsec = ausec*1000; + + nanosleep(&treq, &trem); +} + +// ==================================================================== + +///////////////////////////////// +void G4MPImanager::UpdateStatus() +///////////////////////////////// +{ + G4RunManager* runManager= G4RunManager::GetRunManager(); + const G4Run* run= runManager-> GetCurrentRun(); + + G4int runid, eventid, neventTBP; + + if (run) { // running... + runid= run-> GetRunID(); + neventTBP= run -> GetNumberOfEventToBeProcessed(); + eventid= run-> GetNumberOfEvent(); + } else { + runid= 0; + eventid= 0; + neventTBP= 0; + } + + G4StateManager* stateManager= G4StateManager::GetStateManager(); + G4ApplicationState g4state= stateManager-> GetCurrentState(); + + status-> SetStatus(rank, runid, neventTBP, eventid, g4state); +} + + +/////////////////////////////// +void G4MPImanager::ShowStatus() +/////////////////////////////// +{ + G4int buff[G4MPIstatus::NSIZE]; + + UpdateStatus(); + G4bool gstatus= CheckThreadStatus(); + + if(isMaster) { + status-> Print(); // for maser itself + + G4int nev= status-> GetEventID(); + G4int nevtp= status-> GetNEventToBeProcessed(); + G4double cputime= status-> GetCPUTime(); + + // receive from each slave + for (G4int islave=1; islave< size; islave++) { + COMM_G4COMMAND.Recv(buff, G4MPIstatus::NSIZE, MPI::INT, + islave, TAG_G4STATUS); + status-> UnPack(buff); + status-> Print(); + + // aggregation + nev+= status-> GetEventID(); + nevtp+= status-> GetNEventToBeProcessed(); + //mpistate= status-> GetG4State(); + cputime+= status-> GetCPUTime(); + } + + G4String strStatus; + if(gstatus) { + strStatus= "Run"; + } else { + strStatus= "Idle"; + } + + G4cout << "-------------------------------------------------------" + << G4endl + << "* #ranks= " << size + << " event= " << nev << "/" << nevtp + << " state= " << strStatus + << " time= " << cputime << "s" + << G4endl; + } else { + status-> Pack(buff); + COMM_G4COMMAND.Send(buff, G4MPIstatus::NSIZE, MPI::INT, + RANK_MASTER, TAG_G4STATUS); + } +} + +// ==================================================================== + +//////////////////////////////////// +void G4MPImanager::DistributeSeeds() +//////////////////////////////////// +{ + std::vector seedList= seedGenerator-> GetSeedList(); + CLHEP::HepRandom::setTheSeed(seedList[rank]); +} + + +////////////////////////////// +void G4MPImanager::ShowSeeds() +////////////////////////////// +{ + G4long buff; + + if(isMaster) { + // print master + G4cout << "* rank= " << rank + << " seed= " << CLHEP::HepRandom::getTheSeed() + << G4endl; + // receive from each slave + for (G4int islave=1; islave< size; islave++) { + COMM_G4COMMAND.Recv(&buff, 1, MPI::LONG, islave, TAG_G4SEED); + G4cout << "* rank= " << islave + << " seed= " << buff + << G4endl; + } + } else { // slaves + buff= CLHEP::HepRandom::getTheSeed(); + COMM_G4COMMAND.Send(&buff, 1, MPI::LONG, RANK_MASTER, TAG_G4SEED); + } +} + + +//////////////////////////////////////////////////// +void G4MPImanager::SetSeed(G4int inode, G4long seed) +//////////////////////////////////////////////////// +{ + if(rank==inode) { + CLHEP::HepRandom::setTheSeed(seed); + } +} + +// ==================================================================== + +//////////////////////////////////////// +G4bool G4MPImanager::CheckThreadStatus() +//////////////////////////////////////// +{ + unsigned buff; + G4bool qstatus= false; + + if(isMaster) { + qstatus= threadID; + // get slave status + for (G4int islave=1; islave< size; islave++) { + COMM_G4COMMAND.Recv(&buff, 1, MPI::UNSIGNED, islave, TAG_G4STATUS); + qstatus |= buff; + } + } else { + buff= unsigned(threadID); + COMM_G4COMMAND.Send(&buff, 1, MPI::UNSIGNED, RANK_MASTER, TAG_G4STATUS); + } + + // broadcast + buff= qstatus; // for master + COMM_G4COMMAND.Bcast(&buff, 1, MPI::UNSIGNED, RANK_MASTER); + qstatus= buff; // for slave + + return qstatus; +} + + +//////////////////////////////////////////////////////////////// +void G4MPImanager::ExecuteThreadCommand(const G4String& command) +//////////////////////////////////////////////////////////////// +{ + // this method is a thread function. + G4UImanager* UI= G4UImanager::GetUIpointer(); + G4int rc= UI-> ApplyCommand(command); + + G4int commandStatus = rc - (rc%100); + + switch(commandStatus) { + case fCommandSucceeded: + break; + case fIllegalApplicationState: + G4cerr << "illegal application state -- command refused" << G4endl; + break; + default: + G4cerr << "command refused (" << commandStatus << ")" << G4endl; + break; + } + + // thread is joined + if(threadID) { + pthread_join(threadID, 0); + threadID= 0; + } + + return; +} + + +/////////////////////////////////////////////////////////////// +void G4MPImanager::ExecuteBeamOnThread(const G4String& command) +/////////////////////////////////////////////////////////////// +{ + G4bool threadStatus= CheckThreadStatus(); + + if (threadStatus) { + if(isMaster) { + G4cout << "G4MPIsession:: beamOn is still running." << G4endl; + } + } else { // ok + static G4String cmdstr; + cmdstr= command; + G4int rc= pthread_create(&threadID, 0, + (Func_t)thread_ExecuteThreadCommand, + (void*)&cmdstr); + if (rc != 0) + G4Exception("G4MPIsession:: failed to create a beamOn thread."); + } +} + + +///////////////////////////////////// +void G4MPImanager::JoinBeamOnThread() +///////////////////////////////////// +{ + if(threadID) { + pthread_join(threadID, 0); + threadID= 0; + } +} + + +// ==================================================================== + +//////////////////////////////////////////////////////////// +G4String G4MPImanager::BcastCommand(const G4String& command) +//////////////////////////////////////////////////////////// +{ + enum { BUFF_SIZE= 512 }; + static char sbuff[BUFF_SIZE]; + command.copy(sbuff,BUFF_SIZE); + G4int len= command.size(); + sbuff[len]='\0'; // no boundary check + + // "command" is not yet fixed in slaves at this time. + + // waiting message exhausts CPU in LAM! + //COMM_G4COMMAND.Bcast(sbuff, BUFF_SIZE, MPI::CHAR, RANK_MASTER); + + // another implementation + if( isMaster ) { + for (G4int islave=1; islave< size; islave++) { + COMM_G4COMMAND.Send(sbuff, BUFF_SIZE, MPI::CHAR, islave, TAG_G4COMMAND); + } + } else { + // try non-blocking receive + MPI::Request request= COMM_G4COMMAND.Irecv(sbuff, BUFF_SIZE, MPI::CHAR, + RANK_MASTER, TAG_G4COMMAND); + // polling... + MPI::Status status; + while(! request.Test(status)) { + Wait(100); + } + } + + return G4String(sbuff); +} + +// ==================================================================== + +///////////////////////////////////////////////////////////////////////// +void G4MPImanager::ExecuteMacroFile(const G4String& fname, G4bool qbatch) +///////////////////////////////////////////////////////////////////////// +{ + G4MPIbatch* batchSession= new G4MPIbatch(fname, qbatch); + batchSession-> SessionStart(); + delete batchSession; +} + + +/////////////////////////////////////////////////////// +void G4MPImanager::BeamOn(G4int nevent, G4bool qdivide) +/////////////////////////////////////////////////////// +{ + G4RunManager* runManager= G4RunManager::GetRunManager(); + + if(qdivide) { // events are divided + G4double ntot= masterWeight+size-1.; + G4int nproc= G4int(nevent/ntot); + G4int nproc0= nevent-nproc*(size-1); + + if(verbose>0 && isMaster) { + G4cout << "#events in master=" << nproc0 << " / " + << "#events in slave=" << nproc << G4endl; + } + + status-> StartTimer(); // start timer + if(isMaster) runManager-> BeamOn(nproc0); + else runManager-> BeamOn(nproc); + status-> StopTimer(); // stop timer + + } else { // same events are generated in each node (for test use) + if(verbose>0 && isMaster) { + G4cout << "#events in master=" << nevent << " / " + << "#events in slave=" << nevent << G4endl; + } + status-> StartTimer(); // start timer + runManager-> BeamOn(nevent); + status-> StopTimer(); // stop timer + } +} + + +///////////////////////////////////////////////// +void G4MPImanager::Print(const G4String& message) +///////////////////////////////////////////////// +{ + if(isMaster){ + std::cout << message << std::flush; + } else { + if(qfcout) { // output to a file + fscout << message << std::flush; + } else { // output to stdout + std::cout << rank << ":" << message << std::flush; + } + } +} + + +/////////////////////////////////// +void G4MPImanager::ShowHelp() const +/////////////////////////////////// +{ + if(isSlave) return; + + G4cout << "Geant4 MPI interface" << G4endl; + G4cout << "usage:" << G4endl; + G4cout << " [options] [macro file]" + << G4endl << G4endl; + G4cout << " -h, --help show this message." + << G4endl; + G4cout << " -v, --verbose show verbose message" + << G4endl; + G4cout << " -i, --init=FNAME set an init macro file" + << G4endl; + G4cout << " -o, --ofile[=FNAME] set slave output to a flie" + << G4endl; + G4cout << G4endl; + +} + diff --git a/examples/extended/parallel/MPI/mpi_interface/src/G4MPImessenger.cc b/examples/extended/parallel/MPI/mpi_interface/src/G4MPImessenger.cc new file mode 100644 index 0000000000..c151b79a70 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/src/G4MPImessenger.cc @@ -0,0 +1,207 @@ +// +// ******************************************************************** +// * 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: G4MPImessenger.cc,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4MPImessenger.cc +// +// 2007 Q +// ==================================================================== +#include "G4MPImessenger.hh" +#include "G4MPImanager.hh" +#include "G4VMPIseedGenerator.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithoutParameter.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithADouble.hh" +#include "G4UIcommand.hh" +#include "G4UIparameter.hh" +#include + +// ==================================================================== +// +// class description +// +// ==================================================================== + +////////////////////////////////////////////////////// +G4MPImessenger::G4MPImessenger( G4MPImanager* manager) + : G4UImessenger(), g4MPI(manager) +////////////////////////////////////////////////////// +{ + // /mpi + dir= new G4UIdirectory("/mpi/"); + dir-> SetGuidance("MPI control commands"); + + // /mpi/verbose + verbose= new G4UIcmdWithAnInteger("/mpi/verbose", this); + verbose-> SetGuidance("Set verbose level."); + verbose-> SetParameterName("verbose", false, false); + verbose->SetRange("verbose>=0 && verbose<=1"); + + // /mpi/status + status= new G4UIcmdWithoutParameter("/mpi/status", this); + status-> SetGuidance( "Show mpi status."); + + // /mpi/execute + execute= new G4UIcmdWithAString("/mpi/execute", this); + execute-> SetGuidance("Execute a macro file. (=/control/execute)"); + execute-> SetParameterName("fileName", false, false); + + // /mpi/beamOn + beamOn= new G4UIcommand("/mpi/beamOn", this); + beamOn-> SetGuidance("Start a parallel run w/ thread."); + + G4UIparameter* p1= new G4UIparameter("numberOfEvent", 'i', true); + p1-> SetDefaultValue(1); + p1-> SetParameterRange("numberOfEvent>=0"); + beamOn-> SetParameter(p1); + + G4UIparameter* p2= new G4UIparameter("divide", 'b', true); + p2-> SetDefaultValue(true); + beamOn-> SetParameter(p2); + + // /mpi/.beamOn + dotbeamOn= new G4UIcmdWithAnInteger("/mpi/.beamOn", this); + dotbeamOn-> SetGuidance("Start a parallel run w/o thread. (=/run/beamOn)"); + dotbeamOn-> SetParameterName("numberOfEvent", true, false); + dotbeamOn-> SetDefaultValue(1); + dotbeamOn-> SetRange("numberOfEvent>=0"); + + // /mpi/weightForMaster + masterWeight= new G4UIcmdWithADouble("/mpi/masterWeight", this); + masterWeight-> SetGuidance("Set weight for master node."); + masterWeight-> SetParameterName("weight", false, false); + masterWeight-> SetRange("weight>=0. && weight<=1."); + + // /mpi/showSeeds + showSeeds= new G4UIcmdWithoutParameter("/mpi/showSeeds", this); + showSeeds-> SetGuidance("Show seeds of MPI nodes."); + + // /mpi/setMasterSeed + setMasterSeed= new G4UIcmdWithAnInteger("/mpi/setMasterSeed", this); + setMasterSeed-> SetGuidance("Set a master seed for the seed generator."); + setMasterSeed-> SetParameterName("seed", false, false); + + // /mpi/setSeed + setSeed= new G4UIcommand("/mpi/setSeed", this); + setSeed-> SetGuidance("Set a seed for a specified node."); + + p1= new G4UIparameter("node", 'i', false); + p1-> SetParameterRange("node>=0"); + setSeed-> SetParameter(p1); + + p2= new G4UIparameter("seed", 'i', false); + setSeed-> SetParameter(p2); +} + + +///////////////////////////////// +G4MPImessenger::~G4MPImessenger() +///////////////////////////////// +{ + delete verbose; + delete status; + delete execute; + delete beamOn; + delete dotbeamOn; + delete masterWeight; + delete showSeeds; + delete setMasterSeed; + delete setSeed; + + delete dir; +} + + +////////////////////////////////////////////////////////////////////////// +void G4MPImessenger::SetNewValue( G4UIcommand* command, G4String newValue) +////////////////////////////////////////////////////////////////////////// +{ + if (command == verbose) { // /mpi/verbose + G4int lv= verbose-> GetNewIntValue(newValue); + g4MPI-> SetVerbose(lv); + + } else if (command == status){ // /mpi/status + g4MPI-> ShowStatus(); + + } else if (command == execute){ // /mpi/execute + g4MPI-> ExecuteMacroFile(newValue); + + } else if (command == beamOn){ // /mpi/beamOn + std::istringstream is(newValue); + G4int nevent; + G4bool qdivide; + is >> nevent >> qdivide; + g4MPI-> BeamOn(nevent, qdivide); + + } else if (command == dotbeamOn){ // /mpi/.beamOn + G4int nevent= dotbeamOn-> GetNewIntValue(newValue); + g4MPI-> BeamOn(nevent); + + } else if (command == masterWeight){ // /mpi/masterWeight + G4double weight= masterWeight-> GetNewDoubleValue(newValue); + g4MPI-> SetMasterWeight(weight); + + } else if (command == showSeeds){ // /mpi/showSeeds + g4MPI-> ShowSeeds(); + + } else if (command == setMasterSeed){ // /mpi/setMasterSeed + std::istringstream is(newValue); + G4long seed; + is >> seed; + g4MPI-> GetSeedGenerator()-> SetMasterSeed(seed); + g4MPI-> DistributeSeeds(); + + } else if (command == setSeed){ // /mpi/setSeed + std::istringstream is(newValue); + G4int inode; + G4long seed; + is >> inode >> seed; + g4MPI-> SetSeed(inode, seed); + } + + return; +} + + +///////////////////////////////////////////////////////////// +G4String G4MPImessenger::GetCurrentValue(G4UIcommand* command) +///////////////////////////////////////////////////////////// +{ + G4String cv; + + if (command == verbose) { + cv= verbose-> ConvertToString(g4MPI->GetVerbose()); + } else if (command == masterWeight) { + cv= masterWeight-> ConvertToString(g4MPI->GetMasterWeight()); + } + + return cv; +} + diff --git a/examples/extended/parallel/MPI/mpi_interface/src/G4MPIrandomSeedGenerator.cc b/examples/extended/parallel/MPI/mpi_interface/src/G4MPIrandomSeedGenerator.cc new file mode 100644 index 0000000000..7636d0ef67 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/src/G4MPIrandomSeedGenerator.cc @@ -0,0 +1,99 @@ +// +// ******************************************************************** +// * 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: G4MPIrandomSeedGenerator.cc,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4MPIrandomSeedGenerator.cc +// +// 2007 Q +// ==================================================================== +#include "G4MPIrandomSeedGenerator.hh" +#include "G4MPImanager.hh" +#include "Randomize.hh" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +//////////////////////////////////////////////////// +G4MPIrandomSeedGenerator::G4MPIrandomSeedGenerator() + : G4VMPIseedGenerator() +//////////////////////////////////////////////////// +{ + GenerateSeeds(); +} + + +///////////////////////////////////////////////////// +G4MPIrandomSeedGenerator::~G4MPIrandomSeedGenerator() +///////////////////////////////////////////////////// +{ +} + + +/////////////////////////////////////////////////// +G4bool G4MPIrandomSeedGenerator::CheckDoubleCount() +/////////////////////////////////////////////////// +{ + G4MPImanager* g4MPI= G4MPImanager::GetManager(); + G4int nsize= g4MPI-> GetSize(); + + for (G4int i=0; i< nsize; i++) { + for (G4int j=0; j< nsize; j++) { + if((i != j) && (seedList[i] == seedList[j])) { + G4double x= G4UniformRand(); + seedList[j]= G4long(x*LONG_MAX); + return false; + } + } + } + + return true; +} + + +////////////////////////////////////////////// +void G4MPIrandomSeedGenerator::GenerateSeeds() +////////////////////////////////////////////// +{ + G4MPImanager* g4MPI= G4MPImanager::GetManager(); + G4int nsize= g4MPI-> GetSize(); + seedList.clear(); + + for (G4int i=0; i< nsize; i++) { + G4double x= G4UniformRand(); + G4int seed= G4long(x*LONG_MAX); + seedList.push_back(seed); + } + + while(! CheckDoubleCount()) { + continue; + } +} + diff --git a/examples/extended/parallel/MPI/mpi_interface/src/G4MPIsession.cc b/examples/extended/parallel/MPI/mpi_interface/src/G4MPIsession.cc new file mode 100644 index 0000000000..48a212e727 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/src/G4MPIsession.cc @@ -0,0 +1,264 @@ +// +// ******************************************************************** +// * 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: G4MPIsession.cc,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4MPIsession.cc +// +// 2007 Q +// ==================================================================== +#include "G4MPIsession.hh" +#include "G4MPImanager.hh" +#include "G4RunManager.hh" +#include "G4UImanager.hh" +#include "G4UIcommand.hh" +#include "G4UIcsh.hh" +#include "G4UImpish.hh" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +////////////////////////////////////////////// +G4MPIsession::G4MPIsession(G4VUIshell* ashell) + : G4VMPIsession() +////////////////////////////////////////////// +{ + G4UImanager* UI= G4UImanager::GetUIpointer(); + UI-> SetSession(this); + UI-> SetCoutDestination(this); + + // shell + if(isMaster) { + if(ashell) { + shell= ashell; + } else { + shell= new G4UIcsh; + } + } else { + shell= new G4UImpish; + } +} + +///////////////////////////// +G4MPIsession::~G4MPIsession() +///////////////////////////// +{ + delete shell; + + G4UImanager* UI= G4UImanager::GetUIpointer(); + UI-> SetSession(0); + UI-> SetCoutDestination(0); +} + +//////////////////////////////////////////////////// +void G4MPIsession::SetPrompt(const G4String& prompt) +//////////////////////////////////////////////////// +{ + shell-> SetPrompt(prompt); +} + + +/////////////////////////////////////////////// +void G4MPIsession::SetShell(G4VUIshell* ashell) +/////////////////////////////////////////////// +{ + delete shell; + shell= ashell; +} + + +////////////////////////////////////////////////// +G4String G4MPIsession::GetCommand(const char* msg) +////////////////////////////////////////////////// +{ + G4UImanager* UI= G4UImanager::GetUIpointer(); + + G4String newCommand; + const G4String nullString=""; + + // get command from shell... + newCommand= shell-> GetCommandLine(msg); + + G4String nC= newCommand.strip(G4String::leading); + if( nC.length() == 0 ) { + newCommand= nullString; + + } else if( nC(0) == '#' ) { + G4cout << nC << G4endl; + newCommand= nullString; + + } else if(nC=="ls" || nC(0,3)=="ls " ) { // list commands + ListDirectory(nC); + newCommand= nullString; + + } else if(nC=="lc" || nC(0,3)=="lc " ) { // ... by shell + shell-> ListCommand(nC.remove(0,2)); + newCommand= nullString; + + } else if(nC == "pwd") { // show current directory + G4cout << "Current Command Directory : " + << GetCurrentWorkingDirectory() << G4endl; + newCommand= nullString; + + } else if(nC == "cwd") { // ... by shell + shell-> ShowCurrentDirectory(); + newCommand= nullString; + + } else if(nC == "cd" || nC(0,3) == "cd ") { // "cd" + ChangeDirectoryCommand(nC); + shell-> SetCurrentDirectory(GetCurrentWorkingDirectory()); + newCommand= nullString; + + } else if(nC == "help" || nC(0,5) == "help ") { // "help" + TerminalHelp(nC); + newCommand= nullString; + + } else if(nC(0) == '?') { // "show current value of a parameter" + ShowCurrent(nC); + newCommand= nullString; + + } else if(nC == "hist" || nC == "history") { // "hist/history" + G4int nh= UI-> GetNumberOfHistory(); + for (G4int i=0; iGetPreviousCommand(i) << G4endl; + } + newCommand= nullString; + + } else if(nC(0) == '!') { // "!" + G4String ss= nC(1, nC.length()-1); + G4int vl; + const char* tt= ss; + std::istringstream is(tt); + is >> vl; + G4int nh= UI-> GetNumberOfHistory(); + if(vl>=0 && vl GetPreviousCommand(vl); + G4cout << newCommand << G4endl; + } else { + G4cerr << "history " << vl << " is not found." << G4endl; + newCommand= nullString; + } + + } else if( nC.empty() ){ // NULL command + newCommand= nullString; + + } else if( nC == "exit" ){ // "exit" + return "exit"; + + } else { // ... + + } + + newCommand= TruncateCommand(newCommand); + return ModifyToFullPathCommand(newCommand); +} + + +///////////////////////////////////////// +G4UIsession* G4MPIsession::SessionStart() +///////////////////////////////////////// +{ + // execute init macro + if(g4MPI-> IsInitMacro()) { + g4MPI-> ExecuteMacroFile(g4MPI->GetInitFileName()); + } + + // batch mode + if(g4MPI-> IsBatchMode()) { + g4MPI-> ExecuteMacroFile(g4MPI->GetMacroFileName(), true); + return 0; + } + + // interactive session + G4String newCommand="", scommand; // newCommand is always "" in slaves + + if(isMaster) newCommand= GetCommand(); + // broadcast a new G4 command + scommand= g4MPI-> BcastCommand(newCommand); + if(scommand == "exit" ) return 0; + + while(1){ + ExecCommand(scommand); + + // get next ... + if(isMaster) newCommand= GetCommand(); + scommand= g4MPI-> BcastCommand(newCommand); + if(scommand == "exit" ) { + G4bool qexit= TryForcedTerminate(); + if(qexit) break; + else scommand=""; + } + } + + return 0; +} + + +///////////////////////////////////////// +G4bool G4MPIsession::TryForcedTerminate() +///////////////////////////////////////// +{ + if(! g4MPI-> CheckThreadStatus()) { + return true; + } + + G4String xmessage; + + // beamOn is still running + if(isMaster) { + char c[1024]; + while(1) { + G4cout << "Run is still running. Do you abort a run? [y/N]:" + << std::flush; + G4cin.getline(c,1024); + G4String yesno= c; + if(yesno=="y" || yesno=="Y" || + yesno=="n" || yesno=="N" || yesno == "") { + break; + } + } + if(c[0]=='y' || c[0]=='Y') { + G4cout << "Aborting a run..." << G4endl; + xmessage= g4MPI-> BcastCommand("kill me"); + } else { + xmessage= g4MPI-> BcastCommand("alive"); + } + } else { + xmessage= g4MPI->BcastCommand(""); + } + + if(xmessage == "kill me") { + G4RunManager* runManager= G4RunManager::GetRunManager(); + runManager-> AbortRun(true); // soft abort + } + + return false; +} + diff --git a/examples/extended/parallel/MPI/mpi_interface/src/G4MPIstatus.cc b/examples/extended/parallel/MPI/mpi_interface/src/G4MPIstatus.cc new file mode 100644 index 0000000000..33c9e1ecc0 --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/src/G4MPIstatus.cc @@ -0,0 +1,161 @@ +// +// ******************************************************************** +// * 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: G4MPIstatus.cc,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4MPIstatus.cc +// +// 2007 Q +// ==================================================================== +#include "G4MPIstatus.hh" +#include "G4ApplicationState.hh" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +////////////////////////// +G4MPIstatus::G4MPIstatus() + : rank(0), runID(0), + nEventToBeProcessed(0), + eventID(0), + cputime(0.), + g4state(G4State_Quit) +////////////////////////// +{ + timer= new G4Timer; + timer-> Start(); +} + + +////////////////////////// +G4MPIstatus::~G4MPIstatus() +////////////////////////// +{ + delete timer; +} + + +///////////////////////////////////////////////////// +void G4MPIstatus::SetStatus(G4int arank, G4int runid, + G4int noe, G4int evtid, + G4ApplicationState state) +///////////////////////////////////////////////////// +{ + rank= arank; + runID= runid; + nEventToBeProcessed= noe; + eventID= evtid; + g4state= state; + + timer-> Stop(); + cputime= timer-> GetUserElapsed(); +} + + +///////////////////////////////////////// +void G4MPIstatus::Pack(G4int* data) const +///////////////////////////////////////// +{ + data[0]= rank; + data[1]= runID; + data[2]= nEventToBeProcessed; + data[3]= eventID; + data[4]= g4state; + + G4double* ddata= (G4double*)(data+5); + ddata[0]= cputime; +} + + +///////////////////////////////////// +void G4MPIstatus::UnPack(G4int* data) +///////////////////////////////////// +{ + rank= data[0]; + runID= data[1]; + nEventToBeProcessed= data[2]; + eventID= data[3]; + g4state= (G4ApplicationState)data[4]; + + G4double* ddata= (G4double*)(data+5); + cputime= ddata[0]; +} + + +/////////////////////////////// +void G4MPIstatus::Print() const +/////////////////////////////// +{ + // * rank= 001 run= 10002 event= 00001 / 100000 state= Idle" + G4cout << "* rank= " << rank + << " run= " << runID + << " event= " << eventID << " / " << nEventToBeProcessed + << " state= " << GetStateString(g4state) + << " time= " << cputime << "s" + << G4endl; +} + + +///////////////////////////////////////////////////////////////////// +G4String G4MPIstatus::GetStateString(G4ApplicationState astate) const +///////////////////////////////////////////////////////////////////// +{ + G4String sname; + + switch(astate) { + case G4State_PreInit: + sname = "PreInit"; + break; + case G4State_Init: + sname = "Init"; + break; + case G4State_Idle: + sname = "Idle"; + break; + case G4State_GeomClosed: + sname = "GeomClosed"; + break; + case G4State_EventProc: + sname = "EventProc"; + break; + case G4State_Quit: + sname = "Quit"; + break; + case G4State_Abort: + sname = "Abort"; + break; + default: + sname = "Unknown"; + break; + } + + return sname; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAProtonChargeIncrease.cc b/examples/extended/parallel/MPI/mpi_interface/src/G4UImpish.cc similarity index 64% rename from source/processes/electromagnetic/lowenergy/src/G4DNAProtonChargeIncrease.cc rename to examples/extended/parallel/MPI/mpi_interface/src/G4UImpish.cc index d612ce3d2f..584c76a822 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAProtonChargeIncrease.cc +++ b/examples/extended/parallel/MPI/mpi_interface/src/G4UImpish.cc @@ -23,28 +23,44 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// $Id: G4UImpish.cc,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ // -// $Id: G4DNAProtonChargeIncrease.cc,v 1.4 2006/06/29 19:39:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// ==================================================================== +// G4UImpish.cc +// +// 2007 Q +// ==================================================================== +#include "G4UImpish.hh" -#include "G4DNAProtonChargeIncrease.hh" -#include "G4DNAGenericIonsManager.hh" +// ==================================================================== +// +// class description +// +// ==================================================================== -G4DNAProtonChargeIncreaseEnergyLimitsPolicy::G4DNAProtonChargeIncreaseEnergyLimitsPolicy() : - lowEnergyLimit(100*eV), - zeroBelowLowEnergyLimit(false), - highEnergyLimit(100*MeV), - zeroAboveHighEnergyLimit(true) +////////////////////// +G4UImpish::G4UImpish() + : G4VUIshell("") +////////////////////// { } -G4DNAProtonChargeIncreaseIncomingParticlePolicy::G4DNAProtonChargeIncreaseIncomingParticlePolicy() +/////////////////////// +G4UImpish::~G4UImpish() +/////////////////////// { } -const G4ParticleDefinition* G4DNAProtonChargeIncreaseIncomingParticlePolicy::IncomingParticleDefinition(void) const +/////////////////////////////////////////////// +G4String G4UImpish::GetCommandLine(const char*) +/////////////////////////////////////////////// { - G4DNAGenericIonsManager* instance; - instance = G4DNAGenericIonsManager::Instance(); - return instance->GetIon("hydrogen"); + G4String newCommand; + + // recieve command string from master + G4cout << "hoge hoge" << G4endl; + + return newCommand; } + diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAProtonChargeDecrease.cc b/examples/extended/parallel/MPI/mpi_interface/src/G4VMPIseedGenerator.cc similarity index 62% rename from source/processes/electromagnetic/lowenergy/src/G4DNAProtonChargeDecrease.cc rename to examples/extended/parallel/MPI/mpi_interface/src/G4VMPIseedGenerator.cc index ad9c4b24c6..8ce2d20b6a 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAProtonChargeDecrease.cc +++ b/examples/extended/parallel/MPI/mpi_interface/src/G4VMPIseedGenerator.cc @@ -23,41 +23,41 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// $Id: G4VMPIseedGenerator.cc,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// ==================================================================== +// G4VMPIseedGenerator.cc // -// $Id: G4DNAProtonChargeDecrease.cc,v 1.3 2006/06/29 19:39:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// 2007 Q +// ==================================================================== +#include "G4VMPIseedGenerator.hh" -#include "G4DNAProtonChargeDecrease.hh" -#include "G4Proton.hh" +// ==================================================================== +// +// class description +// +// ==================================================================== - G4DNAProtonChargeDecreaseEnergyLimitsPolicy :: G4DNAProtonChargeDecreaseEnergyLimitsPolicy() -: - lowEnergyLimit(1.*keV), - zeroBelowLowEnergyLimit(true), - highEnergyLimit(10.*MeV), - zeroAboveHighEnergyLimit(true) +////////////////////////////////////////// +G4VMPIseedGenerator::G4VMPIseedGenerator() + : masterSeed(123456789) +////////////////////////////////////////// { } - G4DNAProtonChargeDecreaseIncomingParticlePolicy :: G4DNAProtonChargeDecreaseIncomingParticlePolicy() + +/////////////////////////////////////////// +G4VMPIseedGenerator::~G4VMPIseedGenerator() +/////////////////////////////////////////// { - f0[0]=1.; - a0[0]=-0.180; - a1[0]=-3.600; - b0[0]=-18.22; - b1[0]=-1.997; - c0[0]=0.215; - d0[0]=3.550; - x0[0]=3.450; - x1[0]=5.251; } -const G4ParticleDefinition * G4DNAProtonChargeDecreaseIncomingParticlePolicy :: IncomingParticleDefinition(void) const + +///////////////////////////////////////////////////// +void G4VMPIseedGenerator::SetMasterSeed(G4long aseed) +///////////////////////////////////////////////////// { - return G4Proton::Proton(); + masterSeed= aseed; + GenerateSeeds(); } -G4int G4DNAProtonChargeDecreaseIncomingParticlePolicy :: NumberOfPartialCrossSections(void) const -{ - return 1; -} diff --git a/examples/extended/parallel/MPI/mpi_interface/src/G4VMPIsession.cc b/examples/extended/parallel/MPI/mpi_interface/src/G4VMPIsession.cc new file mode 100644 index 0000000000..d8f153cd3d --- /dev/null +++ b/examples/extended/parallel/MPI/mpi_interface/src/G4VMPIsession.cc @@ -0,0 +1,263 @@ +// +// ******************************************************************** +// * 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: G4VMPIsession.cc,v 1.1 2007/11/16 14:05:41 kmura Exp $ +// $Name: geant4-09-01 $ +// +// ==================================================================== +// G4VMPIsession.cc +// +// 2007 Q +// ==================================================================== +#include "G4VMPIsession.hh" +#include "G4MPImanager.hh" +#include "G4UImanager.hh" +#include "G4UIcommand.hh" + +// ==================================================================== +// +// class description +// +// ==================================================================== + +////////////////////////////// +G4VMPIsession::G4VMPIsession() + : G4VBasicShell() +////////////////////////////// +{ + // MPI + g4MPI= G4MPImanager::GetManager(); + + isMaster= g4MPI-> IsMaster(); + isSlave= g4MPI-> IsSlave(); + rank= g4MPI-> GetRank(); +} + +/////////////////////////////// +G4VMPIsession::~G4VMPIsession() +/////////////////////////////// +{ +} + + +//////////////////////////////////////////////// +G4bool G4VMPIsession::GetHelpChoice(G4int& aval) +//////////////////////////////////////////////// +{ + G4cin >> aval; + if(!G4cin.good()){ + G4cin.clear(); + G4cin.ignore(30,'\n'); + return false; + } + return true; +} + + +////////////////////////////// +void G4VMPIsession::ExitHelp() +////////////////////////////// +{ + char temp[100]; + G4cin.getline(temp, 100); +} + + +/////////////////////////////////////////////// +void G4VMPIsession::PauseSessionStart(G4String) +/////////////////////////////////////////////// +{ +} + + +/////////////////////////////////////////////////// +G4int G4VMPIsession::ExecCommand(G4String aCommand) +/////////////////////////////////////////////////// +{ + if(aCommand.length()<2) return fCommandSucceeded; + + G4UImanager* UI= G4UImanager::GetUIpointer(); + G4int returnVal= 0; + + G4String command= BypassCommand(aCommand); + + // "/mpi/beamOn is threaded out. + if(command(0,11) == "/mpi/beamOn") { + g4MPI-> ExecuteBeamOnThread(aCommand); + returnVal= fCommandSucceeded; + } else if(command(0,12) == "/mpi/.beamOn") { // care for beamOn + G4bool threadStatus= g4MPI-> CheckThreadStatus(); + if (threadStatus) { // still /run/beamOn is active + if(isMaster) { + G4cout << "G4MPIsession:: beamOn is still running." << G4endl; + } + returnVal= fCommandSucceeded; + } else { + returnVal = UI-> ApplyCommand(command); + } + } else { // normal command + returnVal = UI-> ApplyCommand(command); + } + + G4int paramIndex = returnVal % 100; + // 0 - 98 : paramIndex-th parameter is invalid + // 99 : convination of parameters is invalid + G4int commandStatus = returnVal - paramIndex; + + G4UIcommand* cmd = 0; + if(commandStatus!=fCommandSucceeded) { + cmd = FindCommand(command); + } + + switch(commandStatus) { + case fCommandSucceeded: + break; + case fCommandNotFound: + G4cerr << "command <" << UI->SolveAlias(command) + << "> not found" << G4endl; + break; + case fIllegalApplicationState: + G4cerr << "illegal application state -- command refused" << G4endl; + break; + case fParameterOutOfRange: + // ... + break; + case fParameterOutOfCandidates: + G4cerr << "Parameter is out of candidate list (index " + << paramIndex << ")" << G4endl; + G4cerr << "Candidates : " + << cmd->GetParameter(paramIndex)-> GetParameterCandidates() + << G4endl; + break; + case fParameterUnreadable: + G4cerr << "Parameter is wrong type and/or is not omittable (index " + << paramIndex << ")" << G4endl; + break; + case fAliasNotFound: + // ... + break; + default: + G4cerr << "command refused (" << commandStatus << ")" << G4endl; + } + + return returnVal; +} + + +////////////////////////////////////////////////////////////////////// +G4String G4VMPIsession::TruncateCommand(const G4String& command) const +////////////////////////////////////////////////////////////////////// +{ + // replace "//" with "/" in G4command + G4String acommand= command; + G4String strarg; + + str_size iarg= acommand.find(' '); + if(iarg != G4String::npos) { + strarg= acommand(iarg, acommand.size()-iarg); + acommand= acommand(0,iarg); + } + + str_size idx; + while( (idx= acommand.find("//")) != G4String::npos) { + G4String command1= acommand(0,idx+1); + G4String command2= acommand(idx+2, acommand.size()-idx-2); + acommand= command1 + command2; + } + + acommand += strarg; + + return acommand; +} + + +//////////////////////////////////////////////////////////////////// +G4String G4VMPIsession::BypassCommand(const G4String& command) const +//////////////////////////////////////////////////////////////////// +{ + // bypass some commands + // /run/beamon -> /mpi/.beamOn + // /control/execute -> /mpi/execute + + G4String acommand= command; + + if(acommand(0,11) == "/run/beamOn") { + if(g4MPI-> GetVerbose()>0 && isMaster) { + G4cout << "/run/beamOn is overridden by /mpi/.beamOn" + << G4endl; + } + + acommand= "/mpi/.beamOn "; + + G4String strarg= ""; + G4bool qget= false; + G4bool qdone= false; + + for (str_size idx=10; idx< command.size(); idx++) { + if(command[idx] == ' ' || command[idx] == '\011') { + qget= true; + if(qdone) break; + continue; + } + + if(qget) { + strarg+= command[idx]; + qdone= true; + } + } + acommand += strarg; + } + + if(acommand(0,16) == "/control/execute") { + if(g4MPI-> GetVerbose()>0 && isMaster) { + G4cout << "/control/execute is overridden by /mpi/execute" + << G4endl; + } + + acommand.replace(0, 16, "/mpi/execute "); + } + + return acommand; +} + +// ==================================================================== + +////////////////////////////////////////////////////// +G4int G4VMPIsession::ReceiveG4cout(G4String coutString) +////////////////////////////////////////////////////// +{ + g4MPI-> Print(coutString); + return 0; +} + + +////////////////////////////////////////////////////// +G4int G4VMPIsession::ReceiveG4cerr(G4String cerrString) +////////////////////////////////////////////////////// +{ + g4MPI-> Print(cerrString); + return 0; +} + diff --git a/examples/extended/parallel/ParN02/AnnotatedFiles/G4HCofThisEvent.hh b/examples/extended/parallel/ParN02/AnnotatedFiles/G4HCofThisEvent.hh index 638a65d8ab..1be9a9f6a6 100644 --- a/examples/extended/parallel/ParN02/AnnotatedFiles/G4HCofThisEvent.hh +++ b/examples/extended/parallel/ParN02/AnnotatedFiles/G4HCofThisEvent.hh @@ -25,7 +25,7 @@ // // // $Id: G4HCofThisEvent.hh,v 1.3 2006/06/29 17:33:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4HCofThisEvent_h diff --git a/examples/extended/parallel/ParN02/AnnotatedFiles/G4THitsCollection.hh b/examples/extended/parallel/ParN02/AnnotatedFiles/G4THitsCollection.hh index 8e568daa54..9534d91c4a 100644 --- a/examples/extended/parallel/ParN02/AnnotatedFiles/G4THitsCollection.hh +++ b/examples/extended/parallel/ParN02/AnnotatedFiles/G4THitsCollection.hh @@ -25,7 +25,7 @@ // // // $Id: G4THitsCollection.hh,v 1.3 2006/06/29 17:33:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4THitsCollection_h diff --git a/examples/extended/parallel/ParN02/AnnotatedFiles/G4VHitsCollection.hh b/examples/extended/parallel/ParN02/AnnotatedFiles/G4VHitsCollection.hh index a3dfc24197..d28c26d074 100644 --- a/examples/extended/parallel/ParN02/AnnotatedFiles/G4VHitsCollection.hh +++ b/examples/extended/parallel/ParN02/AnnotatedFiles/G4VHitsCollection.hh @@ -25,7 +25,7 @@ // // // $Id: G4VHitsCollection.hh,v 1.3 2006/06/29 17:34:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VHitsCollection_h diff --git a/examples/extended/parallel/ParN02/ParN02.cc b/examples/extended/parallel/ParN02/ParN02.cc index d54dc5fd5b..0fe43e5c43 100644 --- a/examples/extended/parallel/ParN02/ParN02.cc +++ b/examples/extended/parallel/ParN02/ParN02.cc @@ -25,7 +25,7 @@ // // // $Id: ParN02.cc,v 1.5 2006/07/05 12:45:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/ParTopC.icc b/examples/extended/parallel/ParN02/ParTopC.icc index 4cf8c47251..72ae5fdf94 100644 --- a/examples/extended/parallel/ParN02/ParTopC.icc +++ b/examples/extended/parallel/ParN02/ParTopC.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ParTopC.icc,v 1.2 2006/06/29 17:33:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // Parallel Library for Geant4 diff --git a/examples/extended/parallel/ParN02/include/ExN02ChamberParameterisation.hh b/examples/extended/parallel/ParN02/include/ExN02ChamberParameterisation.hh index b33c9950df..0572fa3422 100644 --- a/examples/extended/parallel/ParN02/include/ExN02ChamberParameterisation.hh +++ b/examples/extended/parallel/ParN02/include/ExN02ChamberParameterisation.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02ChamberParameterisation.hh,v 1.4 2006/06/29 17:34:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A parameterisation that describes a series of boxes along Z diff --git a/examples/extended/parallel/ParN02/include/ExN02DetectorConstruction.hh b/examples/extended/parallel/ParN02/include/ExN02DetectorConstruction.hh index 3ca530ddc7..55f6a3a331 100644 --- a/examples/extended/parallel/ParN02/include/ExN02DetectorConstruction.hh +++ b/examples/extended/parallel/ParN02/include/ExN02DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02DetectorConstruction.hh,v 1.2 2006/06/29 17:34:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/include/ExN02DetectorMessenger.hh b/examples/extended/parallel/ParN02/include/ExN02DetectorMessenger.hh index 10f46dfe21..50d9c6f152 100644 --- a/examples/extended/parallel/ParN02/include/ExN02DetectorMessenger.hh +++ b/examples/extended/parallel/ParN02/include/ExN02DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02DetectorMessenger.hh,v 1.3 2006/06/29 17:34:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/include/ExN02EventAction.hh b/examples/extended/parallel/ParN02/include/ExN02EventAction.hh index 12134f4027..7ea8dcd039 100644 --- a/examples/extended/parallel/ParN02/include/ExN02EventAction.hh +++ b/examples/extended/parallel/ParN02/include/ExN02EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02EventAction.hh,v 1.2 2006/06/29 17:34:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/include/ExN02MagneticField.hh b/examples/extended/parallel/ParN02/include/ExN02MagneticField.hh index 978d75b124..01b7f1a84c 100644 --- a/examples/extended/parallel/ParN02/include/ExN02MagneticField.hh +++ b/examples/extended/parallel/ParN02/include/ExN02MagneticField.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02MagneticField.hh,v 1.2 2006/06/29 17:34:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A class for control of the Magnetic Field of the detector. diff --git a/examples/extended/parallel/ParN02/include/ExN02PhysicsList.hh b/examples/extended/parallel/ParN02/include/ExN02PhysicsList.hh index 2c03dfa2e3..f0aa02bd15 100644 --- a/examples/extended/parallel/ParN02/include/ExN02PhysicsList.hh +++ b/examples/extended/parallel/ParN02/include/ExN02PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02PhysicsList.hh,v 1.2 2006/06/29 17:34:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/include/ExN02PrimaryGeneratorAction.hh b/examples/extended/parallel/ParN02/include/ExN02PrimaryGeneratorAction.hh index f4f8515837..ace8ca5b8d 100644 --- a/examples/extended/parallel/ParN02/include/ExN02PrimaryGeneratorAction.hh +++ b/examples/extended/parallel/ParN02/include/ExN02PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02PrimaryGeneratorAction.hh,v 1.2 2006/06/29 17:34:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/include/ExN02RunAction.hh b/examples/extended/parallel/ParN02/include/ExN02RunAction.hh index 73f17c4021..7cc0dcefea 100644 --- a/examples/extended/parallel/ParN02/include/ExN02RunAction.hh +++ b/examples/extended/parallel/ParN02/include/ExN02RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02RunAction.hh,v 1.3 2006/07/05 12:46:00 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/include/ExN02SteppingAction.hh b/examples/extended/parallel/ParN02/include/ExN02SteppingAction.hh index fbd7c3eb40..e565dfb03f 100644 --- a/examples/extended/parallel/ParN02/include/ExN02SteppingAction.hh +++ b/examples/extended/parallel/ParN02/include/ExN02SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02SteppingAction.hh,v 1.2 2006/06/29 17:34:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/include/ExN02SteppingVerbose.hh b/examples/extended/parallel/ParN02/include/ExN02SteppingVerbose.hh index c44916d95a..2f269d4f03 100644 --- a/examples/extended/parallel/ParN02/include/ExN02SteppingVerbose.hh +++ b/examples/extended/parallel/ParN02/include/ExN02SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02SteppingVerbose.hh,v 1.2 2006/06/29 17:34:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/parallel/ParN02/include/ExN02TrackerSD.hh b/examples/extended/parallel/ParN02/include/ExN02TrackerSD.hh index 819f2e6345..66a645f91d 100644 --- a/examples/extended/parallel/ParN02/include/ExN02TrackerSD.hh +++ b/examples/extended/parallel/ParN02/include/ExN02TrackerSD.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02TrackerSD.hh,v 1.2 2006/06/29 17:34:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/include/ParRunManager.hh b/examples/extended/parallel/ParN02/include/ParRunManager.hh index d3cd2aea80..25e2d365b3 100644 --- a/examples/extended/parallel/ParN02/include/ParRunManager.hh +++ b/examples/extended/parallel/ParN02/include/ParRunManager.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ParRunManager.hh,v 1.3 2006/06/29 17:34:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // Parallel Library for Geant4 diff --git a/examples/extended/parallel/ParN02/src/ExN02ChamberParameterisation.cc b/examples/extended/parallel/ParN02/src/ExN02ChamberParameterisation.cc index b9222be352..6b2dcbb353 100644 --- a/examples/extended/parallel/ParN02/src/ExN02ChamberParameterisation.cc +++ b/examples/extended/parallel/ParN02/src/ExN02ChamberParameterisation.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02ChamberParameterisation.cc,v 1.3 2006/06/29 17:34:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/src/ExN02DetectorConstruction.cc b/examples/extended/parallel/ParN02/src/ExN02DetectorConstruction.cc index e642e525f5..8db9956a36 100644 --- a/examples/extended/parallel/ParN02/src/ExN02DetectorConstruction.cc +++ b/examples/extended/parallel/ParN02/src/ExN02DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02DetectorConstruction.cc,v 1.3 2006/06/29 17:34:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/src/ExN02DetectorMessenger.cc b/examples/extended/parallel/ParN02/src/ExN02DetectorMessenger.cc index 41623cd13a..607b21c36d 100644 --- a/examples/extended/parallel/ParN02/src/ExN02DetectorMessenger.cc +++ b/examples/extended/parallel/ParN02/src/ExN02DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02DetectorMessenger.cc,v 1.4 2006/06/29 17:34:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/src/ExN02EventAction.cc b/examples/extended/parallel/ParN02/src/ExN02EventAction.cc index bab9ed10bd..3afa93d417 100644 --- a/examples/extended/parallel/ParN02/src/ExN02EventAction.cc +++ b/examples/extended/parallel/ParN02/src/ExN02EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02EventAction.cc,v 1.2 2006/06/29 17:34:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/src/ExN02MagneticField.cc b/examples/extended/parallel/ParN02/src/ExN02MagneticField.cc index ebcb895844..fb755579de 100644 --- a/examples/extended/parallel/ParN02/src/ExN02MagneticField.cc +++ b/examples/extended/parallel/ParN02/src/ExN02MagneticField.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02MagneticField.cc,v 1.2 2006/06/29 17:34:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // User Field class implementation. // diff --git a/examples/extended/parallel/ParN02/src/ExN02PhysicsList.cc b/examples/extended/parallel/ParN02/src/ExN02PhysicsList.cc index 0009c8052b..fde7af5926 100644 --- a/examples/extended/parallel/ParN02/src/ExN02PhysicsList.cc +++ b/examples/extended/parallel/ParN02/src/ExN02PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02PhysicsList.cc,v 1.4 2006/06/29 17:34:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/src/ExN02PrimaryGeneratorAction.cc b/examples/extended/parallel/ParN02/src/ExN02PrimaryGeneratorAction.cc index 89704fd0de..3302160883 100644 --- a/examples/extended/parallel/ParN02/src/ExN02PrimaryGeneratorAction.cc +++ b/examples/extended/parallel/ParN02/src/ExN02PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02PrimaryGeneratorAction.cc,v 1.2 2006/06/29 17:34:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/src/ExN02RunAction.cc b/examples/extended/parallel/ParN02/src/ExN02RunAction.cc index 1880eb2842..38e087e445 100644 --- a/examples/extended/parallel/ParN02/src/ExN02RunAction.cc +++ b/examples/extended/parallel/ParN02/src/ExN02RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02RunAction.cc,v 1.3 2006/07/05 12:46:00 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/src/ExN02SteppingAction.cc b/examples/extended/parallel/ParN02/src/ExN02SteppingAction.cc index 76bd55951d..19217e5fe9 100644 --- a/examples/extended/parallel/ParN02/src/ExN02SteppingAction.cc +++ b/examples/extended/parallel/ParN02/src/ExN02SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02SteppingAction.cc,v 1.2 2006/06/29 17:35:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/src/ExN02SteppingVerbose.cc b/examples/extended/parallel/ParN02/src/ExN02SteppingVerbose.cc index 818c4cdbe9..7b565b3d4b 100644 --- a/examples/extended/parallel/ParN02/src/ExN02SteppingVerbose.cc +++ b/examples/extended/parallel/ParN02/src/ExN02SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02SteppingVerbose.cc,v 1.4 2006/06/29 17:35:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/src/ExN02TrackerHit.cc b/examples/extended/parallel/ParN02/src/ExN02TrackerHit.cc index ae107aec3a..86ae51f34c 100644 --- a/examples/extended/parallel/ParN02/src/ExN02TrackerHit.cc +++ b/examples/extended/parallel/ParN02/src/ExN02TrackerHit.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02TrackerHit.cc,v 1.3 2006/06/29 17:35:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN02/src/ExN02TrackerSD.cc b/examples/extended/parallel/ParN02/src/ExN02TrackerSD.cc index 9ace199947..4304954c3c 100644 --- a/examples/extended/parallel/ParN02/src/ExN02TrackerSD.cc +++ b/examples/extended/parallel/ParN02/src/ExN02TrackerSD.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02TrackerSD.cc,v 1.3 2006/06/29 17:35:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN04/AnnotatedFiles/G4HCofThisEvent.hh b/examples/extended/parallel/ParN04/AnnotatedFiles/G4HCofThisEvent.hh index b410987142..45c8ec0fcd 100644 --- a/examples/extended/parallel/ParN04/AnnotatedFiles/G4HCofThisEvent.hh +++ b/examples/extended/parallel/ParN04/AnnotatedFiles/G4HCofThisEvent.hh @@ -25,7 +25,7 @@ // // // $Id: G4HCofThisEvent.hh,v 1.3 2006/06/29 17:35:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4HCofThisEvent_h diff --git a/examples/extended/parallel/ParN04/AnnotatedFiles/G4THitsCollection.hh b/examples/extended/parallel/ParN04/AnnotatedFiles/G4THitsCollection.hh index 43d2892114..2fb27af948 100644 --- a/examples/extended/parallel/ParN04/AnnotatedFiles/G4THitsCollection.hh +++ b/examples/extended/parallel/ParN04/AnnotatedFiles/G4THitsCollection.hh @@ -25,7 +25,7 @@ // // // $Id: G4THitsCollection.hh,v 1.3 2006/06/29 17:35:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4THitsCollection_h diff --git a/examples/extended/parallel/ParN04/AnnotatedFiles/G4VHitsCollection.hh b/examples/extended/parallel/ParN04/AnnotatedFiles/G4VHitsCollection.hh index 03ec119fb6..9e11e9328e 100644 --- a/examples/extended/parallel/ParN04/AnnotatedFiles/G4VHitsCollection.hh +++ b/examples/extended/parallel/ParN04/AnnotatedFiles/G4VHitsCollection.hh @@ -25,7 +25,7 @@ // // // $Id: G4VHitsCollection.hh,v 1.3 2006/06/29 17:35:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VHitsCollection_h diff --git a/examples/extended/parallel/ParN04/ParN04.cc b/examples/extended/parallel/ParN04/ParN04.cc index f33ba855c4..68ec79f8db 100644 --- a/examples/extended/parallel/ParN04/ParN04.cc +++ b/examples/extended/parallel/ParN04/ParN04.cc @@ -25,7 +25,7 @@ // // // $Id: ParN04.cc,v 1.6 2006/07/05 13:07:54 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/parallel/ParN04/ParTopC.icc b/examples/extended/parallel/ParN04/ParTopC.icc index e654b24104..ac1ae8e1da 100644 --- a/examples/extended/parallel/ParN04/ParTopC.icc +++ b/examples/extended/parallel/ParN04/ParTopC.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ParTopC.icc,v 1.2 2006/06/29 17:35:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // Parallel Library for Geant4 diff --git a/examples/extended/parallel/ParN04/include/ExN04EMPhysics.hh b/examples/extended/parallel/ParN04/include/ExN04EMPhysics.hh index e486732b8b..f4bea13c42 100644 --- a/examples/extended/parallel/ParN04/include/ExN04EMPhysics.hh +++ b/examples/extended/parallel/ParN04/include/ExN04EMPhysics.hh @@ -25,7 +25,7 @@ // // // $Id: ExN04EMPhysics.hh,v 1.2 2006/06/29 17:36:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/examples/extended/parallel/ParN04/include/ExN04RunAction.hh b/examples/extended/parallel/ParN04/include/ExN04RunAction.hh index a39121d36e..4a80fd0ed5 100644 --- a/examples/extended/parallel/ParN04/include/ExN04RunAction.hh +++ b/examples/extended/parallel/ParN04/include/ExN04RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN04RunAction.hh,v 1.3 2006/07/05 13:07:55 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN04/include/ExN04SteppingVerbose.hh b/examples/extended/parallel/ParN04/include/ExN04SteppingVerbose.hh index ef8785c59d..b105cd231a 100644 --- a/examples/extended/parallel/ParN04/include/ExN04SteppingVerbose.hh +++ b/examples/extended/parallel/ParN04/include/ExN04SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: ExN04SteppingVerbose.hh,v 1.2 2006/06/29 17:36:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/parallel/ParN04/include/ParRunManager.hh b/examples/extended/parallel/ParN04/include/ParRunManager.hh index 6831ac33df..cce4e966bc 100644 --- a/examples/extended/parallel/ParN04/include/ParRunManager.hh +++ b/examples/extended/parallel/ParN04/include/ParRunManager.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ParRunManager.hh,v 1.4 2006/06/29 17:36:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // Parallel Library for Geant4 diff --git a/examples/extended/parallel/ParN04/src/ExN04RunAction.cc b/examples/extended/parallel/ParN04/src/ExN04RunAction.cc index 095207e5b6..07632d1593 100644 --- a/examples/extended/parallel/ParN04/src/ExN04RunAction.cc +++ b/examples/extended/parallel/ParN04/src/ExN04RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN04RunAction.cc,v 1.3 2006/07/05 13:07:56 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/ParN04/src/ExN04SteppingVerbose.cc b/examples/extended/parallel/ParN04/src/ExN04SteppingVerbose.cc index 71f936ce04..c1c0aef5da 100644 --- a/examples/extended/parallel/ParN04/src/ExN04SteppingVerbose.cc +++ b/examples/extended/parallel/ParN04/src/ExN04SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: ExN04SteppingVerbose.cc,v 1.2 2006/06/29 17:37:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/parallel/README b/examples/extended/parallel/README index 3caa5c5195..938c2de5ab 100644 --- a/examples/extended/parallel/README +++ b/examples/extended/parallel/README @@ -12,3 +12,10 @@ different techniques for achieving event parallelism with Geant4. - ExDiane is a simplified version of the advanced application "brachytherapy" showing how to run Geant4 in a parallel mode using DIANE (DIstributed ANalysis Environment). + +- MPI is a native interface with MPI libraries. The directory contains + a Geant4 UI library and a couple of parallelized examples. + Using this interface, users applications can be parllelized with + different MPI compliant libraries, such as LAM/MPI, MPICH2, OpenMPI, + and so on. + diff --git a/examples/extended/persistency/P01/exampleP01.cc b/examples/extended/persistency/P01/exampleP01.cc index 4666194009..68e1f688d9 100644 --- a/examples/extended/persistency/P01/exampleP01.cc +++ b/examples/extended/persistency/P01/exampleP01.cc @@ -25,7 +25,7 @@ // // // $Id: exampleP01.cc,v 1.2 2006/06/29 17:38:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/include/ExP01ChamberParameterisation.hh b/examples/extended/persistency/P01/include/ExP01ChamberParameterisation.hh index 54202bc150..f3b9468a04 100644 --- a/examples/extended/persistency/P01/include/ExP01ChamberParameterisation.hh +++ b/examples/extended/persistency/P01/include/ExP01ChamberParameterisation.hh @@ -25,7 +25,7 @@ // // // $Id: ExP01ChamberParameterisation.hh,v 1.2 2006/06/29 17:38:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A parameterisation that describes a series of boxes along Z diff --git a/examples/extended/persistency/P01/include/ExP01DetectorConstruction.hh b/examples/extended/persistency/P01/include/ExP01DetectorConstruction.hh index 7807eeb279..2582821034 100644 --- a/examples/extended/persistency/P01/include/ExP01DetectorConstruction.hh +++ b/examples/extended/persistency/P01/include/ExP01DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: ExP01DetectorConstruction.hh,v 1.2 2006/06/29 17:38:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/include/ExP01DetectorMessenger.hh b/examples/extended/persistency/P01/include/ExP01DetectorMessenger.hh index 00c7a1bbbf..48f8b26298 100644 --- a/examples/extended/persistency/P01/include/ExP01DetectorMessenger.hh +++ b/examples/extended/persistency/P01/include/ExP01DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: ExP01DetectorMessenger.hh,v 1.2 2006/06/29 17:38:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/include/ExP01EventAction.hh b/examples/extended/persistency/P01/include/ExP01EventAction.hh index 9125f649a0..c3bd95d03f 100644 --- a/examples/extended/persistency/P01/include/ExP01EventAction.hh +++ b/examples/extended/persistency/P01/include/ExP01EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExP01EventAction.hh,v 1.2 2006/06/29 17:38:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/include/ExP01MagneticField.hh b/examples/extended/persistency/P01/include/ExP01MagneticField.hh index d9814b0c96..6149b82a7c 100644 --- a/examples/extended/persistency/P01/include/ExP01MagneticField.hh +++ b/examples/extended/persistency/P01/include/ExP01MagneticField.hh @@ -25,7 +25,7 @@ // // // $Id: ExP01MagneticField.hh,v 1.2 2006/06/29 17:38:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A class for control of the Magnetic Field of the detector. diff --git a/examples/extended/persistency/P01/include/ExP01PhysicsList.hh b/examples/extended/persistency/P01/include/ExP01PhysicsList.hh index 3f93230353..0e0152b74f 100644 --- a/examples/extended/persistency/P01/include/ExP01PhysicsList.hh +++ b/examples/extended/persistency/P01/include/ExP01PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: ExP01PhysicsList.hh,v 1.2 2006/06/29 17:38:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/include/ExP01PrimaryGeneratorAction.hh b/examples/extended/persistency/P01/include/ExP01PrimaryGeneratorAction.hh index 8195a384e8..3361d7dfe9 100644 --- a/examples/extended/persistency/P01/include/ExP01PrimaryGeneratorAction.hh +++ b/examples/extended/persistency/P01/include/ExP01PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExP01PrimaryGeneratorAction.hh,v 1.2 2006/06/29 17:38:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/include/ExP01RunAction.hh b/examples/extended/persistency/P01/include/ExP01RunAction.hh index 59dd730ad7..a2c796a025 100644 --- a/examples/extended/persistency/P01/include/ExP01RunAction.hh +++ b/examples/extended/persistency/P01/include/ExP01RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExP01RunAction.hh,v 1.2 2006/06/29 17:39:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/include/ExP01SteppingAction.hh b/examples/extended/persistency/P01/include/ExP01SteppingAction.hh index b1db255442..d52e6769b1 100644 --- a/examples/extended/persistency/P01/include/ExP01SteppingAction.hh +++ b/examples/extended/persistency/P01/include/ExP01SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExP01SteppingAction.hh,v 1.2 2006/06/29 17:39:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/include/ExP01SteppingVerbose.hh b/examples/extended/persistency/P01/include/ExP01SteppingVerbose.hh index b4c311b7c6..df8bf48da3 100644 --- a/examples/extended/persistency/P01/include/ExP01SteppingVerbose.hh +++ b/examples/extended/persistency/P01/include/ExP01SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: ExP01SteppingVerbose.hh,v 1.2 2006/06/29 17:39:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/persistency/P01/include/ExP01TrackerHit.hh b/examples/extended/persistency/P01/include/ExP01TrackerHit.hh index 14079df990..4a37b17386 100644 --- a/examples/extended/persistency/P01/include/ExP01TrackerHit.hh +++ b/examples/extended/persistency/P01/include/ExP01TrackerHit.hh @@ -25,7 +25,7 @@ // // // $Id: ExP01TrackerHit.hh,v 1.2 2006/06/29 17:39:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/include/ExP01TrackerSD.hh b/examples/extended/persistency/P01/include/ExP01TrackerSD.hh index d854a84c70..7b567382b3 100644 --- a/examples/extended/persistency/P01/include/ExP01TrackerSD.hh +++ b/examples/extended/persistency/P01/include/ExP01TrackerSD.hh @@ -25,7 +25,7 @@ // // // $Id: ExP01TrackerSD.hh,v 1.2 2006/06/29 17:39:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/src/ExP01ChamberParameterisation.cc b/examples/extended/persistency/P01/src/ExP01ChamberParameterisation.cc index b2ee638b0e..5eca73d6e2 100644 --- a/examples/extended/persistency/P01/src/ExP01ChamberParameterisation.cc +++ b/examples/extended/persistency/P01/src/ExP01ChamberParameterisation.cc @@ -25,7 +25,7 @@ // // // $Id: ExP01ChamberParameterisation.cc,v 1.2 2006/06/29 17:39:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/src/ExP01DetectorConstruction.cc b/examples/extended/persistency/P01/src/ExP01DetectorConstruction.cc index 9855b2b6d9..2add064ae9 100644 --- a/examples/extended/persistency/P01/src/ExP01DetectorConstruction.cc +++ b/examples/extended/persistency/P01/src/ExP01DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: ExP01DetectorConstruction.cc,v 1.2 2006/06/29 17:39:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/src/ExP01DetectorMessenger.cc b/examples/extended/persistency/P01/src/ExP01DetectorMessenger.cc index 1832fe4869..d0b044e220 100644 --- a/examples/extended/persistency/P01/src/ExP01DetectorMessenger.cc +++ b/examples/extended/persistency/P01/src/ExP01DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExP01DetectorMessenger.cc,v 1.2 2006/06/29 17:39:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/src/ExP01EventAction.cc b/examples/extended/persistency/P01/src/ExP01EventAction.cc index 120a5f17ae..5351c9c0b0 100644 --- a/examples/extended/persistency/P01/src/ExP01EventAction.cc +++ b/examples/extended/persistency/P01/src/ExP01EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExP01EventAction.cc,v 1.2 2006/06/29 17:39:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/src/ExP01MagneticField.cc b/examples/extended/persistency/P01/src/ExP01MagneticField.cc index 5b336b6c55..8a07ea7a2b 100644 --- a/examples/extended/persistency/P01/src/ExP01MagneticField.cc +++ b/examples/extended/persistency/P01/src/ExP01MagneticField.cc @@ -25,7 +25,7 @@ // // // $Id: ExP01MagneticField.cc,v 1.2 2006/06/29 17:39:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // User Field class implementation. // diff --git a/examples/extended/persistency/P01/src/ExP01PhysicsList.cc b/examples/extended/persistency/P01/src/ExP01PhysicsList.cc index 47feca123e..91bfb16327 100644 --- a/examples/extended/persistency/P01/src/ExP01PhysicsList.cc +++ b/examples/extended/persistency/P01/src/ExP01PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: ExP01PhysicsList.cc,v 1.2 2006/06/29 17:39:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/src/ExP01PrimaryGeneratorAction.cc b/examples/extended/persistency/P01/src/ExP01PrimaryGeneratorAction.cc index a96c7d63e5..09a62f3b98 100644 --- a/examples/extended/persistency/P01/src/ExP01PrimaryGeneratorAction.cc +++ b/examples/extended/persistency/P01/src/ExP01PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExP01PrimaryGeneratorAction.cc,v 1.2 2006/06/29 17:39:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/src/ExP01RunAction.cc b/examples/extended/persistency/P01/src/ExP01RunAction.cc index 286a095f5f..f766478280 100644 --- a/examples/extended/persistency/P01/src/ExP01RunAction.cc +++ b/examples/extended/persistency/P01/src/ExP01RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExP01RunAction.cc,v 1.2 2006/06/29 17:39:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/src/ExP01SteppingAction.cc b/examples/extended/persistency/P01/src/ExP01SteppingAction.cc index 1834e9df92..772bb8ea27 100644 --- a/examples/extended/persistency/P01/src/ExP01SteppingAction.cc +++ b/examples/extended/persistency/P01/src/ExP01SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExP01SteppingAction.cc,v 1.2 2006/06/29 17:39:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/src/ExP01SteppingVerbose.cc b/examples/extended/persistency/P01/src/ExP01SteppingVerbose.cc index 336f1df573..c349ff0a97 100644 --- a/examples/extended/persistency/P01/src/ExP01SteppingVerbose.cc +++ b/examples/extended/persistency/P01/src/ExP01SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: ExP01SteppingVerbose.cc,v 1.2 2006/06/29 17:39:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/src/ExP01TrackerHit.cc b/examples/extended/persistency/P01/src/ExP01TrackerHit.cc index b9701e8e17..acd41b581c 100644 --- a/examples/extended/persistency/P01/src/ExP01TrackerHit.cc +++ b/examples/extended/persistency/P01/src/ExP01TrackerHit.cc @@ -25,7 +25,7 @@ // // // $Id: ExP01TrackerHit.cc,v 1.2 2006/06/29 17:39:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P01/src/ExP01TrackerSD.cc b/examples/extended/persistency/P01/src/ExP01TrackerSD.cc index edff50c460..8f3d7b53bd 100644 --- a/examples/extended/persistency/P01/src/ExP01TrackerSD.cc +++ b/examples/extended/persistency/P01/src/ExP01TrackerSD.cc @@ -25,7 +25,7 @@ // // // $Id: ExP01TrackerSD.cc,v 1.2 2006/06/29 17:39:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P02/GNUmakefile b/examples/extended/persistency/P02/GNUmakefile new file mode 100644 index 0000000000..351d3e2046 --- /dev/null +++ b/examples/extended/persistency/P02/GNUmakefile @@ -0,0 +1,55 @@ +# $Id: GNUmakefile,v 1.1 2007/11/29 17:05:21 witoldp Exp $ +# -------------------------------------------------------------- +# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. +# -------------------------------------------------------------- + +name := exampleP02 +G4TARGET := $(name) +G4EXLIB := true + +LOCALDIR := ${PWD} + +ifndef G4INSTALL + G4INSTALL = ../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +ifndef PLATFORM + PLATFORM = slc4_ia32_gcc34 +endif + +CPPFLAGS += -I$(ROOTSYS)/include +EXTRALIBS := -L$(ROOTSYS)/lib -lCore -lTree -lCint -lReflex -lCintex -ldl -lNet -lRIO + +DICTIONARYPATH := ${G4WORKDIR}/tmp/${G4SYSTEM}/${G4TARGET}/dictionary + +.PHONY: all +all: dictionary lib bin + +dictionary: +ifndef ROOTSYS + @echo ROOTSYS not defined! +endif +ifndef GCCXMLPATH + @echo GCCXMLPATH not defined! +endif + mkdir -p ${DICTIONARYPATH} + ${ROOTSYS}/bin/genreflex ${LOCALDIR}/include/ExP02Classes.hh \ + -s ${LOCALDIR}/xml/selection.xml -o ${DICTIONARYPATH}/Classes_rflx.cpp \ + --gccxmlpath ${GCCXMLPATH} -Iinclude -I${G4INCLUDE} -I${CLHEP_INCLUDE_DIR} +# + gcc -o ${G4WORKDIR}/tmp/${G4SYSTEM}/${G4TARGET}/libClassesDict.so -fpic -shared \ + ${DICTIONARYPATH}/Classes_rflx.cpp src/*.cc \ + -Iinclude -I${ROOTSYS}/include -I${G4INCLUDE} -I${CLHEP_INCLUDE_DIR} \ + ${EXTRALIBS} -L${CLHEP_LIB_DIR} -l${CLHEP_LIB} -L${G4LIB}/${G4SYSTEM} ${LDLIBS2} +# +# mkdir -p ${G4WORKDIR}/bin/${G4SYSTEM} +# gcc -o ${G4WORKDIR}/bin/${G4SYSTEM}/readHits readHits.cc \ +# -Iinclude -I${ROOTSYS}/include -I${G4INCLUDE} -I${CLHEP_INCLUDE_DIR} \ +# ${EXTRALIBS} -L${CLHEP_LIB_DIR} -l${CLHEP_LIB} -L${G4LIB}/${G4SYSTEM} ${LDLIBS2} + +clean_all: clean + @$(RM) hits.root + +include $(G4INSTALL)/config/binmake.gmk diff --git a/examples/extended/persistency/P02/History b/examples/extended/persistency/P02/History new file mode 100644 index 0000000000..1533c1d848 --- /dev/null +++ b/examples/extended/persistency/P02/History @@ -0,0 +1,19 @@ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + Example P02 History file + ------------------------ +This file should be used by the G4 example coordinator to briefly +summarize all major modifications introduced in the code and keep +track of all tags. + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +November 22, 07 W. Pokorski (exampleP02-V09-00-00) + +- Created. diff --git a/examples/extended/persistency/P02/README b/examples/extended/persistency/P02/README new file mode 100644 index 0000000000..4a0c73dfa5 --- /dev/null +++ b/examples/extended/persistency/P02/README @@ -0,0 +1,78 @@ + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + ExampleP02 + ---------- + + General description + ------------------- + + This example shows how to store in a binary file and how to +read back the geometry tree using the 'reflection' technique for +persistency provided by the Reflex tool also included in ROOT. The +Reflex tool allows to create a dictionary for the geometry classes, +making then possible to save the entire tree in a .root file. + +The provided makefile produces the executable: 'exampleP02'. In order +to run it one has to specify the argument, either 'write' or +'read'. In the first case the geometry is instaciated in the standard +way and then saved into the root file (geo.root). In the second case, +the geometry is read from geo.root file. + + + Building and running the example + -------------------------------- + + Before buidling and/or running the example you need to set the +following environment variables: + +ROOTSYS - ROOT installation directory, it is required to run ROOT + +GCCXMLPATH - gccxml binary directory, it is needed by ROOT for the + dictionary generation +LD_LIBRARY_PATH - to include the ROOT library path and the path to + the dictionary library, i.e., for tcsh UNIX shell: + setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:$ROOTSYS/lib: + $G4WORKDIR/tmp/$G4SYSTEM/exampleP01 + +The present version of the example requires that Geant4 headers are +installed in a single directory referenced by G4INCLUDE, as the standard +Geant4 installation procedure allows to do. + +Once those variables are set (together with the standard Geant4 setup) +the example can be build by issueing the 'make' command. The final +executable file can be found in the usual directory: + +$G4WORKDIR/bin/$G4SYSTEM/ + + + Remark on dictionary generation + ------------------------------- + + The dictionary is generated by ${ROOTSYS}/bin/genreflex +tool. The header file including headers for all the classes we want to +generate the dictionary for should be given as argument. Additionally, +a so called selection file (xml) should be provided (with -s flag) to +the genreflex tool (see the GNUmakefile). The role of this file is to +specify which classes we want to generate the dictionary for. The +selection file for our dictionary is in xml/ directory. Please refer +to genreflex manual for more details concerning the usage of that +tool. + +Concerning generating dictionary for the Geant4 objects, there are +also two technical remarks that need to be made here. The gccxml tool +(version 0.6.0_patch1) requires all the templated classes to be +explicitely used somewhere in the included header files in order for +the generation of the dictionary to be possible. For those templated +classes for which it is not the case, the problem can be very easily +solved by instaciating them in the headerfile which is given to +genreflex (see includes/Classes.h) as argument. +The second remark is that there is an unfortunate clash of names as +far as G4String class is concerned. The header of G4String class +defines __G4String which happens to be the name of a variable used +within the generated dictionary code. The solution for that is to do +#undef __G4String in include/Classes.h file. + + diff --git a/examples/extended/gdml/g4_gdml_read_write.cc b/examples/extended/persistency/P02/exampleP02.cc similarity index 54% rename from examples/extended/gdml/g4_gdml_read_write.cc rename to examples/extended/persistency/P02/exampleP02.cc index 4285a15ff5..851ce5b0d2 100644 --- a/examples/extended/gdml/g4_gdml_read_write.cc +++ b/examples/extended/persistency/P02/exampleP02.cc @@ -24,92 +24,89 @@ // ******************************************************************** // // -// -*- C++ -*- -// $Id: g4_gdml_read_write.cc,v 1.6 2006/06/29 17:21:23 gunter Exp $ +// $Id: exampleP02.cc,v 1.1 2007/11/29 17:05:21 witoldp Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// Author: Radovan Chytracek 2000 - 2004 -// Witek Pokorski -// -#include +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -#include "globals.hh" +#include "ExP02DetectorConstruction.hh" +#include "ExP02DetConstrReader.hh" +#include "ExP02PhysicsList.hh" +#include "ExP02PrimaryGeneratorAction.hh" #include "G4RunManager.hh" #include "G4UImanager.hh" -#include "G4UIsession.hh" #include "G4UIterminal.hh" #include "G4UItcsh.hh" -#include "G4TransportationManager.hh" #ifdef G4VIS_USE #include "G4VisExecutive.hh" #endif -#include "g4rwDetectorConstruction.hh" -#include "g4rwPhysicsList.hh" -#include "g4rwPrimaryGeneratorAction.hh" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -//g4 writer -#include "G4Writer/G4GDMLWriter.h" +int main(int argc, char** argv) +{ + if(argc==1) + { + std::cout << "Please give 'write' or 'read' as argument " << std::endl; + return 0; + } -int main() -{ - // Construct the default run manager - G4RunManager* runManager = new G4RunManager; - // + G4VUserDetectorConstruction* det; + + if(std::string(argv[1]) == "read") + { + det = new ExP02DetConstrReader; + } + else if(std::string(argv[1]) == "write") + { + det = new ExP02DetectorConstruction; + } + else + { + std::cout << "Wrong argument!" << std::endl; + return 0; + } + + // Run manager + G4RunManager * runManager = new G4RunManager; + + // UserInitialization classes (mandatory) + runManager->SetUserInitialization(det); + runManager->SetUserInitialization(new ExP02PhysicsList); + #ifdef G4VIS_USE + // Visualization, if you choose to have it! G4VisManager* visManager = new G4VisExecutive; visManager->Initialize(); #endif + + // UserAction classes + runManager->SetUserAction(new ExP02PrimaryGeneratorAction()); - // set mandatory initialization classes - runManager->SetUserInitialization(new gogdmlDetectorConstruction); - runManager->SetUserInitialization(new gogdmlPhysicsList); - - // set mandatory user action class - runManager->SetUserAction(new gogdmlPrimaryGeneratorAction); - - // initialize G4 kernel - runManager->Initialize(); - - // scanning geometry tree - G4VPhysicalVolume* g4wv = - G4TransportationManager::GetTransportationManager()-> - GetNavigatorForTracking()->GetWorldVolume(); - - G4GDMLWriter g4writer("GDMLschema/gdml.xsd", "g4writertest.gdml"); - - try - { - g4writer.DumpGeometryInfo(g4wv); - } - catch(std::logic_error &lerr) - { - std::cout << "Caught an exception: " - << lerr.what () << std::endl; - } - - - // get the pointer to the UI manager and set verbosities - G4UImanager* UI = G4UImanager::GetUIpointer(); + //Initialize G4 kernel + runManager->Initialize(); + + //get the pointer to the User Interface manager + G4UImanager * UI = G4UImanager::GetUIpointer(); + // Define (G)UI terminal for interactive mode // G4UIterminal is a (dumb) terminal. - G4UIsession * session = new G4UIterminal(new G4UItcsh); - - UI->ApplyCommand("/control/execute vis.mac"); - - UI->ApplyCommand("/run/verbose 0"); - UI->ApplyCommand("/event/verbose 0"); - UI->ApplyCommand("/tracking/verbose 1"); - - // start a run - int numberOfEvent = 10; - runManager->BeamOn(numberOfEvent); + G4UIsession * session = 0; +#ifdef G4UI_USE_TCSH + session = new G4UIterminal(new G4UItcsh); +#else + session = new G4UIterminal(); +#endif + UI->ApplyCommand("/control/execute vis.mac"); session->SessionStart(); - - // job termination + delete session; + #ifdef G4VIS_USE delete visManager; #endif @@ -118,4 +115,5 @@ int main() return 0; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/persistency/P02/geo.root b/examples/extended/persistency/P02/geo.root new file mode 100644 index 0000000000..e8e60311bd Binary files /dev/null and b/examples/extended/persistency/P02/geo.root differ diff --git a/examples/extended/medical/DICOM/src/DicomPatientConstructor.cc b/examples/extended/persistency/P02/include/ExP02Classes.hh similarity index 54% rename from examples/extended/medical/DICOM/src/DicomPatientConstructor.cc rename to examples/extended/persistency/P02/include/ExP02Classes.hh index 902bcb752a..ac99c9d37f 100644 --- a/examples/extended/medical/DICOM/src/DicomPatientConstructor.cc +++ b/examples/extended/persistency/P02/include/ExP02Classes.hh @@ -23,50 +23,56 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca +#include "ExP02GeoTree.hh" // +#include "ExP02DetectorConstruction.hh" // -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 +#include "CLHEP/Vector/EulerAngles.h" +#include "CLHEP/Vector/ThreeVector.h" +#include "CLHEP/Vector/Rotation.h" +#include "CLHEP/Geometry/Transform3D.h" // -// + Université Laval, Québec (QC) Canada -//******************************************************* - -//******************************************************* +#include "G4RunManager.hh" +#include "G4VisExtent.hh" +#include "G4Isotope.hh" +#include "G4Element.hh" +#include "G4ElementVector.hh" +#include "G4ElementTable.hh" +#include "G4Material.hh" +#include "G4MaterialCutsCouple.hh" +#include "G4MaterialPropertiesTable.hh" +#include "G4VSolid.hh" +#include "G4VCSGfaceted.hh" +#include "G4Box.hh" +#include "G4Tubs.hh" +#include "G4Polycone.hh" +#include "G4Polyhedron.hh" +#include "G4PolyconeSide.hh" +#include "G4PolyPhiFace.hh" +#include "G4IntersectingCone.hh" +#include "G4Polyhedra.hh" +#include "G4Trd.hh" +#include "G4Trap.hh" +#include "G4Sphere.hh" +#include "G4Para.hh" +#include "G4Orb.hh" +#include "G4Torus.hh" +#include "G4Cons.hh" +#include "G4EnclosingCylinder.hh" +#include "G4ReduciblePolygon.hh" +#include "G4UnionSolid.hh" +#include "G4SubtractionSolid.hh" +#include "G4IntersectionSolid.hh" +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4VPVParameterisation.hh" +#include "G4VUserRegionInformation.hh" +#include "G4UserLimits.hh" // -// DicomPatientConstructor.cc : -// - Initialisation of the construction of DICM images -// - Reading contour information included in Plan.roi -// (Region of interest) *** NOT FULLY WORKING YET *** -// - Definitions are in DicomGeometry.hh +std::vector a; +std::vector b; +std::vector c; +std::vector d; +std::vector e; // -//******************************************************* - -#include "DicomConfiguration.hh" -#include "DicomPatientConstructor.hh" - -#include "globals.hh" - -G4int DicomPatientConstructor::FindingNbOfVoxels(G4double maxDensity , G4double minDensity) { - - DicomConfiguration dicomConfiguration; - - G4double density; - G4int npass = 0; - - G4int npixels = dicomConfiguration.GetTotalPixels(); - for(int i = 0; i < npixels; i++) { - density = dicomConfiguration.GetDensityValue(i); - if(density >= minDensity && density <= maxDensity) npass++; - } - - return npass; - -} - +#undef __G4String diff --git a/examples/extended/gdml/include/g4rwDetectorConstruction.hh b/examples/extended/persistency/P02/include/ExP02DetConstrReader.hh similarity index 77% rename from examples/extended/gdml/include/g4rwDetectorConstruction.hh rename to examples/extended/persistency/P02/include/ExP02DetConstrReader.hh index 6a19b177f0..ed29de8861 100644 --- a/examples/extended/gdml/include/g4rwDetectorConstruction.hh +++ b/examples/extended/persistency/P02/include/ExP02DetConstrReader.hh @@ -23,32 +23,29 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -*- C++ -*- -// $Id: g4rwDetectorConstruction.hh,v 1.3 2006/06/29 17:21:41 gunter Exp $ -#ifndef g4rwDetectorConstruction_H -#define g4rwDetectorConstruction_H 1 +// +#ifndef ExP02DetConstrReader_h +#define ExP02DetConstrReader_h 1 + +#include "globals.hh" +#include "G4VUserDetectorConstruction.hh" class G4VPhysicalVolume; -#include "G4VUserDetectorConstruction.hh" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -#include "Saxana/SAXProcessor.h" -#include "Saxana/ProcessingConfigurator.h" - -class gogdmlDetectorConstruction : public G4VUserDetectorConstruction +class ExP02DetConstrReader : public G4VUserDetectorConstruction { public: - gogdmlDetectorConstruction(); - ~gogdmlDetectorConstruction(); + + ExP02DetConstrReader(); + ~ExP02DetConstrReader(); public: - G4VPhysicalVolume* Construct(); - - private: - SAXProcessor sxp; - ProcessingConfigurator config; - G4VPhysicalVolume* fWorld; + + G4VPhysicalVolume* Construct(); }; -#endif +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +#endif diff --git a/examples/extended/persistency/P02/include/ExP02DetectorConstruction.hh b/examples/extended/persistency/P02/include/ExP02DetectorConstruction.hh new file mode 100644 index 0000000000..fb6e301b83 --- /dev/null +++ b/examples/extended/persistency/P02/include/ExP02DetectorConstruction.hh @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#ifndef ExP02DetectorConstruction_H +#define ExP02DetectorConstruction_H 1 + +class G4LogicalVolume; +class G4VPhysicalVolume; + +#include "G4VUserDetectorConstruction.hh" +#include "G4Element.hh" + +class ExP02DetectorConstruction : public G4VUserDetectorConstruction +{ + public: + + ExP02DetectorConstruction(); + ~ExP02DetectorConstruction(); + + G4VPhysicalVolume* Construct(); + + private: + + // Logical volumes + // + G4LogicalVolume* experimentalHall_log; + G4LogicalVolume* tracker_log; + G4LogicalVolume* calorimeterBlock_log; + G4LogicalVolume* calorimeterLayer_log; + + // Physical volumes + // + G4VPhysicalVolume* experimentalHall_phys; + G4VPhysicalVolume* calorimeterLayer_phys; + G4VPhysicalVolume* calorimeterBlock_phys; + G4VPhysicalVolume* tracker_phys; +}; + +#endif + diff --git a/examples/extended/persistency/P02/include/ExP02GeoTree.hh b/examples/extended/persistency/P02/include/ExP02GeoTree.hh new file mode 100644 index 0000000000..da32f3bf39 --- /dev/null +++ b/examples/extended/persistency/P02/include/ExP02GeoTree.hh @@ -0,0 +1,54 @@ +// +// ******************************************************************** +// * 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: ExP02GeoTree.hh,v 1.2 2007/12/10 16:29:11 gunter Exp $ +#ifndef INCLUDE_EXP02GEOTREE_H +#define INCLUDE_EXP02GEOTREE_H 1 + +// Include files +#include "G4VPhysicalVolume.hh" +#include "G4Element.hh" +#include "G4ElementTable.hh" +#include "G4Material.hh" +#include "G4MaterialTable.hh" + +class ExP02GeoTree { +public: + + ExP02GeoTree( ); + ExP02GeoTree(G4VPhysicalVolume* vol, const G4ElementTable* et, const G4MaterialTable* mt); + + virtual ~ExP02GeoTree( ); + + G4VPhysicalVolume* TopVol(); + +private: + + G4VPhysicalVolume* topV; + const G4ElementTable* eltab; + const G4MaterialTable* mattab; + +}; +#endif // INCLUDE_EXP02GEOTREE_H diff --git a/examples/extended/persistency/P02/include/ExP02PhysicsList.hh b/examples/extended/persistency/P02/include/ExP02PhysicsList.hh new file mode 100644 index 0000000000..fc573a466c --- /dev/null +++ b/examples/extended/persistency/P02/include/ExP02PhysicsList.hh @@ -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: ExP02PhysicsList.hh,v 1.1 2007/11/29 17:05:22 witoldp Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef ExP02PhysicsList_h +#define ExP02PhysicsList_h 1 + +#include "G4VUserPhysicsList.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class ExP02PhysicsList: public G4VUserPhysicsList +{ + public: + ExP02PhysicsList(); + ~ExP02PhysicsList(); + + protected: + // Construct particle and physics + void ConstructParticle(); + void ConstructProcess(); + + void SetCuts(); + + + protected: + // these methods Construct particles + void ConstructBosons(); + void ConstructLeptons(); + void ConstructMesons(); + void ConstructBaryons(); + + protected: + // these methods Construct physics processes and register them + void ConstructGeneral(); + void ConstructEM(); +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + + diff --git a/examples/extended/persistency/P02/include/ExP02PrimaryGeneratorAction.hh b/examples/extended/persistency/P02/include/ExP02PrimaryGeneratorAction.hh new file mode 100644 index 0000000000..ba4b51f945 --- /dev/null +++ b/examples/extended/persistency/P02/include/ExP02PrimaryGeneratorAction.hh @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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: ExP02PrimaryGeneratorAction.hh,v 1.1 2007/11/29 17:05:22 witoldp Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef ExP02PrimaryGeneratorAction_h +#define ExP02PrimaryGeneratorAction_h 1 + +#include "G4VUserPrimaryGeneratorAction.hh" + +class ExP02DetectorConstruction; +class G4ParticleGun; +class G4Event; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class ExP02PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction +{ + public: + ExP02PrimaryGeneratorAction(); + ~ExP02PrimaryGeneratorAction(); + + public: + void GeneratePrimaries(G4Event*); + + private: + G4ParticleGun* particleGun; + ExP02DetectorConstruction* myDetector; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + + diff --git a/examples/extended/persistency/P02/run.mac b/examples/extended/persistency/P02/run.mac new file mode 100644 index 0000000000..9e3478c431 --- /dev/null +++ b/examples/extended/persistency/P02/run.mac @@ -0,0 +1,23 @@ +# +# Macro file for "persEx02.cc" +# +# can be run in batch, without graphic +# or interactively: Idle> /control/execute run1.mac +# +/run/verbose 2 +/event/verbose 0 +# +# proton 3 GeV to the direction (0.,0.,1.) (default kinematic) +# 1 event with detailled printing +# +/tracking/verbose 2 +/stepping/verbose 2 +/run/beamOn 1 +# +# muon 300 MeV to the direction (0.,0.,1.) +# 3 events (no printing) +# +/gun/particle mu- +/gun/energy 300 MeV +/tracking/verbose 0 +/run/beamOn 3 diff --git a/examples/extended/persistency/P02/src/ExP02DetConstrReader.cc b/examples/extended/persistency/P02/src/ExP02DetConstrReader.cc new file mode 100644 index 0000000000..e766aa5756 --- /dev/null +++ b/examples/extended/persistency/P02/src/ExP02DetConstrReader.cc @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +//ROOT +#include "TROOT.h" +#include "TFile.h" +#include "TSystem.h" +#include "Cintex/Cintex.h" + +//G4 +#include "G4Element.hh" +#include "G4PVPlacement.hh" +#include "ExP02GeoTree.hh" + +// local +#include "ExP02DetConstrReader.hh" + +ExP02DetConstrReader::ExP02DetConstrReader() +{ + // initialize ROOT + TSystem ts; + gSystem->Load("libClassesDict"); + + // ROOT::Cintex::Cintex::SetDebug(2); + ROOT::Cintex::Cintex::Enable(); + // gDebug = 1; + +} + +ExP02DetConstrReader::~ExP02DetConstrReader() +{} + +G4VPhysicalVolume* ExP02DetConstrReader::Construct() +{ + ExP02GeoTree* geotree; + + TFile fo("geo.root"); + fo.GetObject("my_geo", geotree); + + return geotree->TopVol(); +} diff --git a/examples/extended/persistency/P02/src/ExP02DetectorConstruction.cc b/examples/extended/persistency/P02/src/ExP02DetectorConstruction.cc new file mode 100644 index 0000000000..710d8dfa29 --- /dev/null +++ b/examples/extended/persistency/P02/src/ExP02DetectorConstruction.cc @@ -0,0 +1,166 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +#include "ExP02DetectorConstruction.hh" + +#include "G4Material.hh" +#include "G4Box.hh" +#include "G4Tubs.hh" +#include "G4LogicalVolume.hh" +#include "G4ThreeVector.hh" +#include "G4PVPlacement.hh" +#include "globals.hh" + +//ROOT +#include "TROOT.h" +#include "TFile.h" +#include "TSystem.h" +#include "Cintex/Cintex.h" + +#include "ExP02GeoTree.hh" + +ExP02DetectorConstruction::ExP02DetectorConstruction() + : experimentalHall_log(0), tracker_log(0), + calorimeterBlock_log(0), calorimeterLayer_log(0), + experimentalHall_phys(0), calorimeterLayer_phys(0), + calorimeterBlock_phys(0), tracker_phys(0) +{;} + +ExP02DetectorConstruction::~ExP02DetectorConstruction() +{ +} + +G4VPhysicalVolume* ExP02DetectorConstruction::Construct() +{ + + //------------------------------------------------------ materials + + G4double a; // atomic mass + G4double z; // atomic number + G4double density; + + G4Material* Ar = + new G4Material("ArgonGas", z= 18., a= 39.95*g/mole, density= 1.782*mg/cm3); + + G4Material* Al = + new G4Material("Aluminum", z= 13., a= 26.98*g/mole, density= 2.7*g/cm3); + + G4Material* Pb = + new G4Material("Lead", z= 82., a= 207.19*g/mole, density= 11.35*g/cm3); + + //------------------------------------------------------ volumes + + //------------------------------ experimental hall (world volume) + //------------------------------ beam line along x axis + + G4double expHall_x = 3.0*m; + G4double expHall_y = 1.0*m; + G4double expHall_z = 1.0*m; + G4Box* experimentalHall_box + = new G4Box("expHall_box",expHall_x,expHall_y,expHall_z); + experimentalHall_log = new G4LogicalVolume(experimentalHall_box, + Ar,"expHall_log",0,0,0); + experimentalHall_phys = new G4PVPlacement(0,G4ThreeVector(), + experimentalHall_log,"expHall",0,false,0); + + //------------------------------ a tracker tube + + G4double innerRadiusOfTheTube = 0.*cm; + G4double outerRadiusOfTheTube = 60.*cm; + G4double hightOfTheTube = 50.*cm; + G4double startAngleOfTheTube = 0.*deg; + G4double spanningAngleOfTheTube = 360.*deg; + G4Tubs* tracker_tube = new G4Tubs("tracker_tube",innerRadiusOfTheTube, + outerRadiusOfTheTube,hightOfTheTube, + startAngleOfTheTube,spanningAngleOfTheTube); + tracker_log = new G4LogicalVolume(tracker_tube,Al,"tracker_log",0,0,0); + G4double trackerPos_x = -1.0*m; + G4double trackerPos_y = 0.*m; + G4double trackerPos_z = 0.*m; + tracker_phys = new G4PVPlacement(0, + G4ThreeVector(trackerPos_x,trackerPos_y,trackerPos_z), + tracker_log,"tracker",experimentalHall_log,false,0); + + //------------------------------ a calorimeter block + + G4double block_x = 1.0*m; + G4double block_y = 50.0*cm; + G4double block_z = 50.0*cm; + G4Box* calorimeterBlock_box = new G4Box("calBlock_box",block_x, + block_y,block_z); + calorimeterBlock_log = new G4LogicalVolume(calorimeterBlock_box, + Pb,"caloBlock_log",0,0,0); + G4double blockPos_x = 1.0*m; + G4double blockPos_y = 0.0*m; + G4double blockPos_z = 0.0*m; + calorimeterBlock_phys = new G4PVPlacement(0, + G4ThreeVector(blockPos_x,blockPos_y,blockPos_z), + calorimeterBlock_log,"caloBlock",experimentalHall_log,false,0); + + //------------------------------ calorimeter layers + + G4double calo_x = 1.*cm; + G4double calo_y = 40.*cm; + G4double calo_z = 40.*cm; + G4Box* calorimeterLayer_box = new G4Box("caloLayer_box", + calo_x,calo_y,calo_z); + calorimeterLayer_log = new G4LogicalVolume(calorimeterLayer_box, + Al,"caloLayer_log",0,0,0); + for(G4int i=0;i<19;i++) // loop for 19 layers + { + G4double caloPos_x = (i-9)*10.*cm; + G4double caloPos_y = 0.0*m; + G4double caloPos_z = 0.0*m; + calorimeterLayer_phys = new G4PVPlacement(0, + G4ThreeVector(caloPos_x,caloPos_y,caloPos_z), + calorimeterLayer_log,"caloLayer",calorimeterBlock_log,false,i); + } + + //------------------------------------------------------------------ + + // writing the geometry to a ROOT file + + // initialize ROOT + TSystem ts; + + gSystem->Load("libClassesDict"); + + // ROOT::Cintex::Cintex::SetDebug(2); + ROOT::Cintex::Cintex::Enable(); + // gDebug = 1; + + const G4ElementTable* eltab = G4Element::GetElementTable(); + const G4MaterialTable* mattab = G4Material::GetMaterialTable(); + + ExP02GeoTree* geotree = new ExP02GeoTree(experimentalHall_phys, eltab, mattab); + + TFile fo("geo.root","RECREATE"); + + fo.WriteObject(geotree, "my_geo"); + + return experimentalHall_phys; +} + diff --git a/examples/extended/persistency/P02/src/ExP02GeoTree.cc b/examples/extended/persistency/P02/src/ExP02GeoTree.cc new file mode 100644 index 0000000000..0153dd8129 --- /dev/null +++ b/examples/extended/persistency/P02/src/ExP02GeoTree.cc @@ -0,0 +1,61 @@ +// +// ******************************************************************** +// * 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: ExP02GeoTree.cc,v 1.2 2007/12/10 16:29:20 gunter Exp $ +// Include files + +// local +#include "ExP02GeoTree.hh" + +//----------------------------------------------------------------------------- +// Implementation file for class : ExP02GeoTree +// +// 2005-05-26 : Witold POKORSKI +//----------------------------------------------------------------------------- + +//============================================================================= +// Standard constructor, initializes variables +//============================================================================= +ExP02GeoTree::ExP02GeoTree( ): topV(0) +{ + eltab = G4Element::GetElementTable(); + mattab = G4Material::GetMaterialTable(); +} + +ExP02GeoTree::ExP02GeoTree(G4VPhysicalVolume* vol, const G4ElementTable* et, const G4MaterialTable* mt): + topV(vol), eltab(et), mattab(mt) +{} + +//============================================================================= +// Destructor +//============================================================================= +ExP02GeoTree::~ExP02GeoTree() {} + +//============================================================================= + +G4VPhysicalVolume* ExP02GeoTree::TopVol() +{ + return topV; +} diff --git a/examples/extended/persistency/P02/src/ExP02PhysicsList.cc b/examples/extended/persistency/P02/src/ExP02PhysicsList.cc new file mode 100644 index 0000000000..1313316496 --- /dev/null +++ b/examples/extended/persistency/P02/src/ExP02PhysicsList.cc @@ -0,0 +1,241 @@ +// +// ******************************************************************** +// * 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: ExP02PhysicsList.cc,v 1.2 2007/12/10 16:29:25 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "globals.hh" +#include "ExP02PhysicsList.hh" + +#include "G4ProcessManager.hh" +#include "G4ParticleTypes.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +ExP02PhysicsList::ExP02PhysicsList(): G4VUserPhysicsList() +{ + defaultCutValue = 1.0*cm; + SetVerboseLevel(1); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +ExP02PhysicsList::~ExP02PhysicsList() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void ExP02PhysicsList::ConstructParticle() +{ + // In this method, static member functions should be called + // for all particles which you want to use. + // This ensures that objects of these particle types will be + // created in the program. + + ConstructBosons(); + ConstructLeptons(); + ConstructMesons(); + ConstructBaryons(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void ExP02PhysicsList::ConstructBosons() +{ + // pseudo-particles + G4Geantino::GeantinoDefinition(); + G4ChargedGeantino::ChargedGeantinoDefinition(); + + // gamma + G4Gamma::GammaDefinition(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void ExP02PhysicsList::ConstructLeptons() +{ + // leptons + // e+/- + G4Electron::ElectronDefinition(); + G4Positron::PositronDefinition(); + // mu+/- + G4MuonPlus::MuonPlusDefinition(); + G4MuonMinus::MuonMinusDefinition(); + // nu_e + G4NeutrinoE::NeutrinoEDefinition(); + G4AntiNeutrinoE::AntiNeutrinoEDefinition(); + // nu_mu + G4NeutrinoMu::NeutrinoMuDefinition(); + G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void ExP02PhysicsList::ConstructMesons() +{ + // mesons + // light mesons + G4PionPlus::PionPlusDefinition(); + G4PionMinus::PionMinusDefinition(); + G4PionZero::PionZeroDefinition(); + G4Eta::EtaDefinition(); + G4EtaPrime::EtaPrimeDefinition(); + G4KaonPlus::KaonPlusDefinition(); + G4KaonMinus::KaonMinusDefinition(); + G4KaonZero::KaonZeroDefinition(); + G4AntiKaonZero::AntiKaonZeroDefinition(); + G4KaonZeroLong::KaonZeroLongDefinition(); + G4KaonZeroShort::KaonZeroShortDefinition(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void ExP02PhysicsList::ConstructBaryons() +{ + // barions + G4Proton::ProtonDefinition(); + G4AntiProton::AntiProtonDefinition(); + + G4Neutron::NeutronDefinition(); + G4AntiNeutron::AntiNeutronDefinition(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void ExP02PhysicsList::ConstructProcess() +{ + AddTransportation(); + ConstructEM(); + ConstructGeneral(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4ComptonScattering.hh" +#include "G4GammaConversion.hh" +#include "G4PhotoElectricEffect.hh" + +#include "G4MultipleScattering.hh" + +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +#include "G4MuIonisation.hh" +#include "G4MuBremsstrahlung.hh" +#include "G4MuPairProduction.hh" + +#include "G4hIonisation.hh" + +#include "G4StepLimiter.hh" +#include "G4UserSpecialCuts.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void ExP02PhysicsList::ConstructEM() +{ + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + 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, 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, 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, 3,3); + pmanager->AddProcess(new G4MuPairProduction, -1, 4,4); + + } 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 G4StepLimiter, -1,-1,3); + ///pmanager->AddProcess(new G4UserSpecialCuts, -1,-1,4); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4Decay.hh" +void ExP02PhysicsList::ConstructGeneral() +{ + // Add Decay Process + G4Decay* theDecayProcess = new G4Decay(); + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + if (theDecayProcess->IsApplicable(*particle)) { + pmanager ->AddProcess(theDecayProcess); + // set ordering for PostStepDoIt and AtRestDoIt + pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); + pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void ExP02PhysicsList::SetCuts() +{ + //G4VUserPhysicsList::SetCutsWithDefault method sets + //the default cut value for all particle types + // + SetCutsWithDefault(); + + if (verboseLevel>0) DumpCutValuesTable(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAHydrogenChargeIncrease.cc b/examples/extended/persistency/P02/src/ExP02PrimaryGeneratorAction.cc similarity index 64% rename from source/processes/electromagnetic/lowenergy/src/G4DNAHydrogenChargeIncrease.cc rename to examples/extended/persistency/P02/src/ExP02PrimaryGeneratorAction.cc index 55c5094f24..17c3ab715d 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAHydrogenChargeIncrease.cc +++ b/examples/extended/persistency/P02/src/ExP02PrimaryGeneratorAction.cc @@ -23,29 +23,38 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// $Id: G4DNAHydrogenChargeIncrease.cc,v 1.2 2006/06/29 19:39:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +#include "ExP02PrimaryGeneratorAction.hh" -#include "G4DNAHydrogenChargeIncrease.hh" -#include "G4DNAGenericIonsManager.hh" +#include "G4Event.hh" +#include "G4ParticleGun.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" +#include "globals.hh" - G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy :: G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy() -: - lowEnergyLimit(100*eV), - zeroBelowLowEnergyLimit(false), - highEnergyLimit(10*MeV), - zeroAboveHighEnergyLimit(true) +ExP02PrimaryGeneratorAction::ExP02PrimaryGeneratorAction() { + G4int n_particle = 1; + particleGun = new G4ParticleGun(n_particle); + + G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); + G4String particleName; + // particleGun->SetParticleDefinition(particleTable->FindParticle(particleName="pi+")); + particleGun->SetParticleDefinition(particleTable->FindParticle(particleName="geantino")); + particleGun->SetParticleEnergy(1.0*GeV); + particleGun->SetParticlePosition(G4ThreeVector(0.0, 0.0, 0.0)); } - G4DNAHydrogenChargeIncreaseIncomingParticlePolicy :: G4DNAHydrogenChargeIncreaseIncomingParticlePolicy() - -{} - -const G4ParticleDefinition * G4DNAHydrogenChargeIncreaseIncomingParticlePolicy :: IncomingParticleDefinition(void) const +ExP02PrimaryGeneratorAction::~ExP02PrimaryGeneratorAction() { - G4DNAGenericIonsManager *instance; - instance = G4DNAGenericIonsManager::Instance(); - return instance->GetIon("hydrogen"); + delete particleGun; } + +void ExP02PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) +{ + G4ThreeVector v(1.0,0.1,0.1); + + particleGun->SetParticleMomentumDirection(v); + particleGun->GeneratePrimaryVertex(anEvent); +} + + diff --git a/examples/extended/persistency/P02/vis.mac b/examples/extended/persistency/P02/vis.mac new file mode 100644 index 0000000000..d8d128bf23 --- /dev/null +++ b/examples/extended/persistency/P02/vis.mac @@ -0,0 +1,35 @@ +# +# Macro file for the initialization phase of "persEx02.cc" +# when runing in interactive mode +# +# Sets some default verbose +# +/control/verbose 2 +/run/verbose 2 +/tracking/verbose 2 +# +# create empty scene +# +/vis/scene/create +# +# Create a scene handler for a specific graphics system +# (Edit the next line(s) to choose another graphic system) +# +/vis/open OGLIX +# +####/vis/open DAWNFILE +# +# draw scene +# +/vis/viewer/set/viewpointThetaPhi 60 60 deg +/vis/viewer/zoom 1.4 +/vis/viewer/flush +# +# for drawing the tracks +# (if too many tracks cause core dump => storeTrajectory 0) +/tracking/storeTrajectory 1 +/vis/scene/add/trajectories +# (if you prefer refreshing each event, comment out next line) +/vis/scene/endOfEventAction accumulate +# +/run/beamOn 1 diff --git a/examples/extended/persistency/P02/xml/selection.xml b/examples/extended/persistency/P02/xml/selection.xml new file mode 100644 index 0000000000..eb0927fd1b --- /dev/null +++ b/examples/extended/persistency/P02/xml/selection.xml @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/extended/polarisation/Pol01/History b/examples/extended/polarisation/Pol01/History index 3540b81d8c..3d9586ada9 100644 --- a/examples/extended/polarisation/Pol01/History +++ b/examples/extended/polarisation/Pol01/History @@ -1,4 +1,4 @@ -$Id: History,v 1.4 2006/11/17 11:44:46 vnivanch Exp $ +$Id: History,v 1.7 2007/12/04 10:34:17 schaelic Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,15 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +04-12-07 A.Schaelicke (expol01-V09-00-01) +- README and pol01.out, to include polarized photo electric effect + +05-11-07: A.Schaelicke (expol01-V09-00-00) +01-11-07: A.Schaelicke + use new polarized photo electric effect, this is important for + polarisation transfer from photon to electron in certain regions of + the phasespace (see E166 experiment) + 17-11-06 V.Ivanchenko (expol01-V08-01-02) - RunAction and HistoManager classes: double -> G4double, it -> G4int, add destructor for RunAction::ParticleStatistics diff --git a/examples/extended/polarisation/Pol01/README b/examples/extended/polarisation/Pol01/README index 00efd5d71e..e363b8bdfa 100644 --- a/examples/extended/polarisation/Pol01/README +++ b/examples/extended/polarisation/Pol01/README @@ -1,4 +1,4 @@ -$Id: README,v 1.1 2006/11/17 09:49:41 vnivanch Exp $ +$Id: README,v 1.2 2007/12/04 10:34:17 schaelic Exp $ ------------------------------------------------------------------- ========================================================= @@ -68,7 +68,7 @@ $Id: README,v 1.1 2006/11/17 09:49:41 vnivanch Exp $ asymmetries for longitudinally polarized leptons, and circularly polarized photons) - photo-electric effect + polarized photo-electric effect polarized Compton scattering polarized pair production polarized bremsstrahlung diff --git a/examples/extended/polarisation/Pol01/include/DetectorConstruction.hh b/examples/extended/polarisation/Pol01/include/DetectorConstruction.hh index f76e2c0080..50cf3e3457 100644 --- a/examples/extended/polarisation/Pol01/include/DetectorConstruction.hh +++ b/examples/extended/polarisation/Pol01/include/DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.hh,v 1.2 2006/10/02 16:25:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/DetectorMessenger.hh b/examples/extended/polarisation/Pol01/include/DetectorMessenger.hh index 09060b1bf8..6f02bd0f73 100644 --- a/examples/extended/polarisation/Pol01/include/DetectorMessenger.hh +++ b/examples/extended/polarisation/Pol01/include/DetectorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.hh,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/EventAction.hh b/examples/extended/polarisation/Pol01/include/EventAction.hh index 793eb26597..a3a180f323 100644 --- a/examples/extended/polarisation/Pol01/include/EventAction.hh +++ b/examples/extended/polarisation/Pol01/include/EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.hh,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/EventActionMessenger.hh b/examples/extended/polarisation/Pol01/include/EventActionMessenger.hh index 9be41799e8..61d892bfc5 100644 --- a/examples/extended/polarisation/Pol01/include/EventActionMessenger.hh +++ b/examples/extended/polarisation/Pol01/include/EventActionMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.hh,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/HistoManager.hh b/examples/extended/polarisation/Pol01/include/HistoManager.hh index 8463d0a722..53b537847e 100644 --- a/examples/extended/polarisation/Pol01/include/HistoManager.hh +++ b/examples/extended/polarisation/Pol01/include/HistoManager.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HistoManager.hh,v 1.2 2006/11/17 11:44:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/HistoMessenger.hh b/examples/extended/polarisation/Pol01/include/HistoMessenger.hh index 970d0af118..e25882bd5b 100644 --- a/examples/extended/polarisation/Pol01/include/HistoMessenger.hh +++ b/examples/extended/polarisation/Pol01/include/HistoMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HistoMessenger.hh,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/PhysListEmPolarized.hh b/examples/extended/polarisation/Pol01/include/PhysListEmPolarized.hh index 916673bc17..f6b076ce92 100644 --- a/examples/extended/polarisation/Pol01/include/PhysListEmPolarized.hh +++ b/examples/extended/polarisation/Pol01/include/PhysListEmPolarized.hh @@ -25,7 +25,7 @@ // // // $Id: PhysListEmPolarized.hh,v 1.1 2006/10/02 16:25:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/PhysListEmStandard.hh b/examples/extended/polarisation/Pol01/include/PhysListEmStandard.hh index 9984b27d2c..2fee9507b7 100644 --- a/examples/extended/polarisation/Pol01/include/PhysListEmStandard.hh +++ b/examples/extended/polarisation/Pol01/include/PhysListEmStandard.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmStandard.hh,v 1.2 2006/10/02 16:25:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/PhysicsList.hh b/examples/extended/polarisation/Pol01/include/PhysicsList.hh index eb5271b67b..0fd4bc6630 100644 --- a/examples/extended/polarisation/Pol01/include/PhysicsList.hh +++ b/examples/extended/polarisation/Pol01/include/PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.hh,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/examples/extended/polarisation/Pol01/include/PhysicsListMessenger.hh b/examples/extended/polarisation/Pol01/include/PhysicsListMessenger.hh index e1695abbc5..f87c0e4a28 100644 --- a/examples/extended/polarisation/Pol01/include/PhysicsListMessenger.hh +++ b/examples/extended/polarisation/Pol01/include/PhysicsListMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.hh,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/PrimaryGeneratorAction.hh b/examples/extended/polarisation/Pol01/include/PrimaryGeneratorAction.hh index cb11b44686..30c6643173 100644 --- a/examples/extended/polarisation/Pol01/include/PrimaryGeneratorAction.hh +++ b/examples/extended/polarisation/Pol01/include/PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.hh,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/ProcessesCount.hh b/examples/extended/polarisation/Pol01/include/ProcessesCount.hh index d2966ff80e..a40abc585f 100644 --- a/examples/extended/polarisation/Pol01/include/ProcessesCount.hh +++ b/examples/extended/polarisation/Pol01/include/ProcessesCount.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ProcessesCount.hh,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/RunAction.hh b/examples/extended/polarisation/Pol01/include/RunAction.hh index 607c118758..1231762eb2 100644 --- a/examples/extended/polarisation/Pol01/include/RunAction.hh +++ b/examples/extended/polarisation/Pol01/include/RunAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.hh,v 1.2 2006/11/17 11:44:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/StepMax.hh b/examples/extended/polarisation/Pol01/include/StepMax.hh index cf040fcb9b..fe349e4241 100644 --- a/examples/extended/polarisation/Pol01/include/StepMax.hh +++ b/examples/extended/polarisation/Pol01/include/StepMax.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.hh,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/StepMaxMessenger.hh b/examples/extended/polarisation/Pol01/include/StepMaxMessenger.hh index e842550955..ea546bd494 100644 --- a/examples/extended/polarisation/Pol01/include/StepMaxMessenger.hh +++ b/examples/extended/polarisation/Pol01/include/StepMaxMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.hh,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/include/SteppingAction.hh b/examples/extended/polarisation/Pol01/include/SteppingAction.hh index 88fef82a45..7cf7e204b8 100644 --- a/examples/extended/polarisation/Pol01/include/SteppingAction.hh +++ b/examples/extended/polarisation/Pol01/include/SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.hh,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/pol01.cc b/examples/extended/polarisation/Pol01/pol01.cc index ec0e705dbf..708d9b3ecd 100644 --- a/examples/extended/polarisation/Pol01/pol01.cc +++ b/examples/extended/polarisation/Pol01/pol01.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pol01.cc,v 1.2 2006/10/02 16:25:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/pol01.out b/examples/extended/polarisation/Pol01/pol01.out index 5aac988b29..8b4e7e2902 100644 --- a/examples/extended/polarisation/Pol01/pol01.out +++ b/examples/extended/polarisation/Pol01/pol01.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -40,9 +40,10 @@ theBox : (0,0,0.08) /run/beamOn 10000 buildBhabha cross section 0 buildBhabha cross section 0 +G4PolarizedPEEffectCrossSection() init -phot: Total cross sections from Sandia parametrisation. - Sampling according PhotoElectric model +pol-phot: Total cross sections from Sandia parametrisation. + Sampling according Polarized-PhotoElectric model pol-compt: Total cross sections has a good parametrisation from 10 KeV to (100/Z) GeV Sampling according Polarized-Compton model @@ -63,7 +64,7 @@ pol-eIoni: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 pol-eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -73,7 +74,7 @@ pol-eIoni: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 pol-eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -128,39 +129,39 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10000 - User=8.28s Real=8.29s Sys=0s + User=8.46s Real=8.46s Sys=0s The run consists of 10000 gamma of 10 MeV through 1.75 mm of G4_Fe (density: 7.874 g/cm3 ) --------- Ranlux engine status --------- Initial seed = 9876 - float_seed_table[] = 0.139354 0.233997 0.30628 0.234571 0.528728 0.486909 0.44629 0.624286 0.989632 0.512979 0.443912 0.421656 0.908938 0.853481 0.956444 0.268544 0.552436 0.126792 0.623712 0.589204 0.314177 0.36294 0.916958 0.574645 - i_lag = 22, j_lag = 8 - carry = 5.96046e-08, count24 = 4 + float_seed_table[] = 0.152339 0.25755 0.713728 0.0103734 0.564808 0.643406 0.374264 0.937159 0.805849 0.0434163 0.374805 0.197638 0.150186 0.321046 0.150129 0.145958 0.210049 0.747725 0.736227 0.0699872 0.339619 0.327128 0.669458 0.525705 + i_lag = 23, j_lag = 9 + carry = 0, count24 = 23 luxury = 3 nskip = 199 ---------------------------------------- Process calls frequency ---> - Transportation = 31038 - pol-compt = 248 - msc = 3373 - pol-eBrem = 308 - phot = 160 - pol-eIoni = 597 - pol-conv = 200 - pol-annihil = 59 + Transportation = 31244 + pol-compt = 267 + msc = 3847 + pol-eBrem = 382 + pol-conv = 234 + pol-eIoni = 617 + pol-annihil = 63 + pol-phot = 173 Gamma: -Mean Number per Event :1.0064 -Mean Energy :9.6278 MeV +- 1.7931 MeV -Mean Polarization :-0.96771 +- 0.17774 +Mean Number per Event :1.0098 +Mean Energy :9.548 MeV +- 1.9702 MeV +Mean Polarization :-0.96123 +- 0.19031 Electron: -Mean Number per Event :0.0313 -Mean Energy :5.1737 MeV +- 2.4785 MeV -Mean Polarization :-0.7229 +- 0.29023 +Mean Number per Event :0.0348 +Mean Energy :5.1647 MeV +- 2.4291 MeV +Mean Polarization :-0.71224 +- 0.30264 Positron: -Mean Number per Event :0.0142 -Mean Energy :4.3329 MeV +- 2.0504 MeV -Mean Polarization :-0.60168 +- 0.31459 +Mean Number per Event :0.0176 +Mean Energy :4.3394 MeV +- 2.0534 MeV +Mean Polarization :-0.60672 +- 0.32544 # UserDetectorConstruction deleted. UserPhysicsList deleted. diff --git a/examples/extended/polarisation/Pol01/src/DetectorConstruction.cc b/examples/extended/polarisation/Pol01/src/DetectorConstruction.cc index 998162f898..a1f6ac6ac0 100644 --- a/examples/extended/polarisation/Pol01/src/DetectorConstruction.cc +++ b/examples/extended/polarisation/Pol01/src/DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorConstruction.cc,v 1.2 2006/10/02 16:25:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/DetectorMessenger.cc b/examples/extended/polarisation/Pol01/src/DetectorMessenger.cc index ed60a6beb0..094271fef9 100644 --- a/examples/extended/polarisation/Pol01/src/DetectorMessenger.cc +++ b/examples/extended/polarisation/Pol01/src/DetectorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DetectorMessenger.cc,v 1.2 2006/10/02 16:25:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/EventAction.cc b/examples/extended/polarisation/Pol01/src/EventAction.cc index c779546bda..bee3b5d865 100644 --- a/examples/extended/polarisation/Pol01/src/EventAction.cc +++ b/examples/extended/polarisation/Pol01/src/EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventAction.cc,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/EventActionMessenger.cc b/examples/extended/polarisation/Pol01/src/EventActionMessenger.cc index 77b07af5b6..9978f01583 100644 --- a/examples/extended/polarisation/Pol01/src/EventActionMessenger.cc +++ b/examples/extended/polarisation/Pol01/src/EventActionMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: EventActionMessenger.cc,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/HistoManager.cc b/examples/extended/polarisation/Pol01/src/HistoManager.cc index d4f90e69b8..a732f1e8f4 100644 --- a/examples/extended/polarisation/Pol01/src/HistoManager.cc +++ b/examples/extended/polarisation/Pol01/src/HistoManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HistoManager.cc,v 1.3 2006/11/17 11:44:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/HistoMessenger.cc b/examples/extended/polarisation/Pol01/src/HistoMessenger.cc index 02a5f9c32b..943d282b01 100644 --- a/examples/extended/polarisation/Pol01/src/HistoMessenger.cc +++ b/examples/extended/polarisation/Pol01/src/HistoMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HistoMessenger.cc,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/PhysListEmPolarized.cc b/examples/extended/polarisation/Pol01/src/PhysListEmPolarized.cc index 0005b6d704..0052630e59 100644 --- a/examples/extended/polarisation/Pol01/src/PhysListEmPolarized.cc +++ b/examples/extended/polarisation/Pol01/src/PhysListEmPolarized.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: PhysListEmPolarized.cc,v 1.1 2006/10/02 16:25:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: PhysListEmPolarized.cc,v 1.2 2007/11/01 17:34:53 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -49,6 +49,7 @@ #include "G4ePolarizedIonisation.hh" #include "G4ePolarizedBremsstrahlung.hh" #include "G4eplusPolarizedAnnihilation.hh" +#include "G4PolarizedPhotoElectricEffect.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -75,7 +76,7 @@ void PhysListEmPolarized::ConstructProcess() if (namePhysics=="polarized") { if (particleName == "gamma") { - pmanager->AddDiscreteProcess(new G4PhotoElectricEffect); + pmanager->AddDiscreteProcess(new G4PolarizedPhotoElectricEffect); pmanager->AddDiscreteProcess(new G4PolarizedCompton); pmanager->AddDiscreteProcess(new G4PolarizedGammaConversion); } diff --git a/examples/extended/polarisation/Pol01/src/PhysListEmStandard.cc b/examples/extended/polarisation/Pol01/src/PhysListEmStandard.cc index 5e396af8d1..aaf1a80fba 100644 --- a/examples/extended/polarisation/Pol01/src/PhysListEmStandard.cc +++ b/examples/extended/polarisation/Pol01/src/PhysListEmStandard.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysListEmStandard.cc,v 1.2 2006/10/02 16:25:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/PhysicsList.cc b/examples/extended/polarisation/Pol01/src/PhysicsList.cc index 628d1fe6a0..369267a2ef 100644 --- a/examples/extended/polarisation/Pol01/src/PhysicsList.cc +++ b/examples/extended/polarisation/Pol01/src/PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: PhysicsList.cc,v 1.2 2006/10/02 16:25:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/PhysicsListMessenger.cc b/examples/extended/polarisation/Pol01/src/PhysicsListMessenger.cc index 0fe5e3da29..599cd7bddf 100644 --- a/examples/extended/polarisation/Pol01/src/PhysicsListMessenger.cc +++ b/examples/extended/polarisation/Pol01/src/PhysicsListMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PhysicsListMessenger.cc,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/PrimaryGeneratorAction.cc b/examples/extended/polarisation/Pol01/src/PrimaryGeneratorAction.cc index d6d094199d..0c78a4223e 100644 --- a/examples/extended/polarisation/Pol01/src/PrimaryGeneratorAction.cc +++ b/examples/extended/polarisation/Pol01/src/PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: PrimaryGeneratorAction.cc,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/RunAction.cc b/examples/extended/polarisation/Pol01/src/RunAction.cc index 059bee8576..86dd5e1c4f 100644 --- a/examples/extended/polarisation/Pol01/src/RunAction.cc +++ b/examples/extended/polarisation/Pol01/src/RunAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RunAction.cc,v 1.3 2006/11/17 11:44:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/StepMax.cc b/examples/extended/polarisation/Pol01/src/StepMax.cc index 525e3c1262..3db03ebe4a 100644 --- a/examples/extended/polarisation/Pol01/src/StepMax.cc +++ b/examples/extended/polarisation/Pol01/src/StepMax.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMax.cc,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/StepMaxMessenger.cc b/examples/extended/polarisation/Pol01/src/StepMaxMessenger.cc index 58200cb8fb..78abfa0f59 100644 --- a/examples/extended/polarisation/Pol01/src/StepMaxMessenger.cc +++ b/examples/extended/polarisation/Pol01/src/StepMaxMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: StepMaxMessenger.cc,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/polarisation/Pol01/src/SteppingAction.cc b/examples/extended/polarisation/Pol01/src/SteppingAction.cc index eb4f5a7136..e89c04e5e6 100644 --- a/examples/extended/polarisation/Pol01/src/SteppingAction.cc +++ b/examples/extended/polarisation/Pol01/src/SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SteppingAction.cc,v 1.1 2006/10/02 13:48:10 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/radioactivedecay/exrdm/History b/examples/extended/radioactivedecay/exrdm/History index 4788b87514..9d9a870823 100644 --- a/examples/extended/radioactivedecay/exrdm/History +++ b/examples/extended/radioactivedecay/exrdm/History @@ -1,4 +1,4 @@ -$Id: History,v 1.13 2007/02/14 10:23:55 vnivanch Exp $ +$Id: History,v 1.17 2007/11/15 16:10:09 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,20 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +November 15th, 2007 V.Ivanchenko (exrdm-V09-00-02) +-------------------------------------------------- +- A minor fix of low-energy EM physics builder + +November 14th, 2007 V.Ivanchenko (exrdm-V09-00-01) +-------------------------------------------------- +- Use decay and radiactive decay builders from physics)lists library +- Added elastic, stopping, ion and extraEm physics + +July 3th, 2007 V.Ivanchenko (exrdm-V09-00-00) +--------------------------------------------- +- Remove obsolete hadronic builders and use only QGSP_BIC, QGSP_BIC_HP, + QGSP_BERT, QGSP_BERT_HP + February 14th, 2006 V.Ivanchenko (exrdm-V08-02-01) ------------------------------- - Use standard EM builder from physics_list subdirectory diff --git a/examples/extended/radioactivedecay/exrdm/exrdm.in b/examples/extended/radioactivedecay/exrdm/exrdm.in index ec79df5636..a133b5ff96 100644 --- a/examples/extended/radioactivedecay/exrdm/exrdm.in +++ b/examples/extended/radioactivedecay/exrdm/exrdm.in @@ -1,6 +1,6 @@ /control/saveHistory -#/exrdm/phys/SelectPhysics LHEP_BIC_HP -/exrdm/phys/SelectPhysics Hadron +/exrdm/phys/SelectPhysics QGSP_BIC_HP +#/exrdm/phys/SelectPhysics Hadron #/geometry/material/add NaI Na-I 3.67 /exrdm/det/setDetectorThickness 30 mm /exrdm/det/setTargetLength 3 cm diff --git a/examples/extended/radioactivedecay/exrdm/exrdm.out b/examples/extended/radioactivedecay/exrdm/exrdm.out index 7b6bf57b4f..e149dfc72f 100644 --- a/examples/extended/radioactivedecay/exrdm/exrdm.out +++ b/examples/extended/radioactivedecay/exrdm/exrdm.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version $Name: geant4-09-00 $ (27-July-2004) + Geant4 version $Name: geant4-09-01 $ (27-July-2004) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/radioactivedecay/exrdm/include/exrdmPhysicsList.hh b/examples/extended/radioactivedecay/exrdm/include/exrdmPhysicsList.hh index 0032a41c0d..ba880978cd 100644 --- a/examples/extended/radioactivedecay/exrdm/include/exrdmPhysicsList.hh +++ b/examples/extended/radioactivedecay/exrdm/include/exrdmPhysicsList.hh @@ -31,6 +31,7 @@ #include "G4VModularPhysicsList.hh" #include "globals.hh" +#include class G4VPhysicsConstructor; class exrdmPhysicsListMessenger; @@ -42,7 +43,7 @@ class exrdmPhysicsList: public G4VModularPhysicsList { public: exrdmPhysicsList(); - ~exrdmPhysicsList(); + virtual ~exrdmPhysicsList(); void ConstructParticle(); @@ -59,6 +60,8 @@ public: private: + void AddExtraBuilders(G4bool flagHP); + // hide assignment operator exrdmPhysicsList & operator=(const exrdmPhysicsList &right); exrdmPhysicsList(const exrdmPhysicsList&); @@ -68,11 +71,13 @@ private: G4double cutForPositron; G4VPhysicsConstructor* emPhysicsList; - G4VPhysicsConstructor* generalPhysicsList; + G4VPhysicsConstructor* raddecayList; G4VPhysicsConstructor* particleList; - // std::vector hadronPhys; G4VPhysicsConstructor* hadPhysicsList; + std::vector hadronPhys; + G4int nhadcomp; + exrdmPhysicsListMessenger* pMessenger; G4ProductionCuts* DetectorCuts; G4ProductionCuts* TargetCuts; diff --git a/examples/extended/radioactivedecay/exrdm/src/exrdmAnalysisManager.cc b/examples/extended/radioactivedecay/exrdm/src/exrdmAnalysisManager.cc index fa0d297126..6c95439fd9 100644 --- a/examples/extended/radioactivedecay/exrdm/src/exrdmAnalysisManager.cc +++ b/examples/extended/radioactivedecay/exrdm/src/exrdmAnalysisManager.cc @@ -214,8 +214,8 @@ void exrdmAnalysisManager::AddEnergy(G4double edep, G4double weight, G4double ti << G4endl; } histo->fillTuple(2, 0, edep/MeV); - histo->fillTuple(2,1,weight); - histo->fillTuple(2,2,time/second); + histo->fillTuple(2,1,time/second); + histo->fillTuple(2,2,weight); histo->addRow(2); // exrdmEnergyDeposition A(edep,time,weight); @@ -232,8 +232,8 @@ void exrdmAnalysisManager::AddParticle(G4double pid, G4double energy, G4double w } histo->fillTuple(0,0, pid); histo->fillTuple(0,1,energy/MeV); - histo->fillTuple(0,2,weight); - histo->fillTuple(0,3,time/second); + histo->fillTuple(0,2,time/second); + histo->fillTuple(0,3,weight); histo->addRow(0); // now fill th emission spectrum if (energy>0.0) histo->fillHisto(6,energy/MeV,weight); @@ -247,8 +247,8 @@ void exrdmAnalysisManager::AddIsotope(G4double pid,G4double weight, G4double tim << G4endl; } histo->fillTuple(1,0,pid); - histo->fillTuple(1,1,weight); - histo->fillTuple(1,2,time/second); + histo->fillTuple(1,1,time/second); + histo->fillTuple(1,2,weight); histo->addRow(1); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/radioactivedecay/exrdm/src/exrdmPhysListEmLowEnergy.cc b/examples/extended/radioactivedecay/exrdm/src/exrdmPhysListEmLowEnergy.cc index 52dfd68601..82d06e5388 100644 --- a/examples/extended/radioactivedecay/exrdm/src/exrdmPhysListEmLowEnergy.cc +++ b/examples/extended/radioactivedecay/exrdm/src/exrdmPhysListEmLowEnergy.cc @@ -89,7 +89,7 @@ void exrdmPhysListEmLowEnergy::ConstructProcess() pmanager->AddProcess(new G4MultipleScattering, -1, 1,1); pmanager->AddProcess(new G4LowEnergyIonisation, -1, 2,2); - pmanager->AddProcess(new G4LowEnergyBremsstrahlung, -1, 3,3); + pmanager->AddProcess(new G4LowEnergyBremsstrahlung, -1,-3,3); } else if (particleName == "e+") { diff --git a/examples/extended/radioactivedecay/exrdm/src/exrdmPhysListHadron.cc b/examples/extended/radioactivedecay/exrdm/src/exrdmPhysListHadron.cc index 0bb579e3ba..6dc7d4c9da 100644 --- a/examples/extended/radioactivedecay/exrdm/src/exrdmPhysListHadron.cc +++ b/examples/extended/radioactivedecay/exrdm/src/exrdmPhysListHadron.cc @@ -64,6 +64,10 @@ #include "G4ProtonInelasticCrossSection.hh" #include "G4NeutronInelasticCrossSection.hh" +// RadioactiveDecay +#include "G4RadioactiveDecay.hh" +#include "G4GenericIon.hh" + exrdmPhysListHadron::exrdmPhysListHadron(const G4String& name) : G4VPhysicsConstructor(name) {} @@ -262,5 +266,11 @@ void exrdmPhysListHadron::ConstructProcess() theIonInelasticProcess->RegisterMe(theIonBC); theIonInelasticProcess->RegisterMe(theTheoModel); pManager->AddDiscreteProcess(theIonInelasticProcess); + + // Add RadioactiveDecay Process + + G4RadioactiveDecay* theRadioactiveDecay = new G4RadioactiveDecay(); + G4GenericIon* ion = G4GenericIon::GenericIon(); + pManager->AddProcess(theRadioactiveDecay, 0, -1, 3); } diff --git a/examples/extended/radioactivedecay/exrdm/src/exrdmPhysicsList.cc b/examples/extended/radioactivedecay/exrdm/src/exrdmPhysicsList.cc index 25f522b65d..047910bb1a 100644 --- a/examples/extended/radioactivedecay/exrdm/src/exrdmPhysicsList.cc +++ b/examples/extended/radioactivedecay/exrdm/src/exrdmPhysicsList.cc @@ -29,7 +29,6 @@ #include "exrdmPhysicsListMessenger.hh" #include "exrdmPhysListParticles.hh" -#include "exrdmPhysListGeneral.hh" #include "G4EmStandardPhysics.hh" #include "exrdmPhysListEmLowEnergy.hh" #include "exrdmPhysListHadron.hh" @@ -49,11 +48,16 @@ #include "HadronPhysicsQGSP_BERT.hh" #include "HadronPhysicsQGSP_BIC.hh" -#include "HadronPhysicsQGSP_HP.hh" -#include "HadronPhysicsLHEP_BERT.hh" -#include "HadronPhysicsLHEP_BERT_HP.hh" -#include "HadronPhysicsLHEP_BIC.hh" -#include "HadronPhysicsLHEP_BIC_HP.hh" +#include "HadronPhysicsQGSP_BERT_HP.hh" +#include "HadronPhysicsQGSP_BIC_HP.hh" + +#include "G4EmExtraPhysics.hh" +#include "G4HadronElasticPhysics.hh" +#include "G4QStoppingPhysics.hh" +#include "G4IonBinaryCascadePhysics.hh" +#include "G4RadioactiveDecayPhysics.hh" +#include "G4NeutronTrackingCut.hh" +#include "G4DecayPhysics.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -71,18 +75,19 @@ exrdmPhysicsList::exrdmPhysicsList() : G4VModularPhysicsList() pMessenger = new exrdmPhysicsListMessenger(this); SetVerboseLevel(2); + //default physics - // Particles - particleList = new exrdmPhysListParticles("particles"); + particleList = new G4DecayPhysics(); + + //default physics + raddecayList = new G4RadioactiveDecayPhysics(); // EM physics - emPhysicsList = new G4EmStandardPhysics("em-standard"); + emPhysicsList = new G4EmStandardPhysics(); - // Had physics (no hadron as default) - hadPhysicsList = 0; - - // General exrdmPhysics - generalPhysicsList = new exrdmPhysListGeneral("general"); + // Had physics + hadPhysicsList = new exrdmPhysListHadron("hadron"); + nhadcomp = 0; } @@ -91,9 +96,14 @@ exrdmPhysicsList::exrdmPhysicsList() : G4VModularPhysicsList() exrdmPhysicsList::~exrdmPhysicsList() { delete pMessenger; - delete generalPhysicsList; + delete raddecayList; delete emPhysicsList; if (hadPhysicsList) delete hadPhysicsList; + if (nhadcomp > 0) { + for(G4int i=0; iConstructProcess(); - //general - generalPhysicsList->ConstructProcess(); + // decays + particleList->ConstructProcess(); + raddecayList->ConstructProcess(); // had + if (nhadcomp > 0) { + for(G4int i=0; iConstructProcess(); + } + } if (hadPhysicsList) hadPhysicsList->ConstructProcess(); } @@ -124,44 +140,21 @@ void exrdmPhysicsList::SelectPhysicsList(const G4String& name) G4cout << "exrdmPhysicsList::SelectPhysicsList: <" << name << ">" << G4endl; } // default Had physics - if (name == "Hadron") { + if (name == "Hadron" && nhadcomp == 0) { if (hadPhysicsList) delete hadPhysicsList; hadPhysicsList = new exrdmPhysListHadron("hadron"); } else if (name == "QGSP_BERT") { - if (emPhysicsList) delete emPhysicsList; - emPhysicsList = new G4EmStandardPhysics(); - if (hadPhysicsList) delete hadPhysicsList; + AddExtraBuilders(false); hadPhysicsList = new HadronPhysicsQGSP_BERT("std-hadron"); - } else if (name == "QGSP_BIC") { - if (emPhysicsList) delete emPhysicsList; - emPhysicsList = new G4EmStandardPhysics(); - if (hadPhysicsList) delete hadPhysicsList; + } else if (name == "QGSP_BIC" && nhadcomp == 0) { + AddExtraBuilders(false); hadPhysicsList = new HadronPhysicsQGSP_BIC("std-hadron"); - } else if (name == "QGSP_HP") { - if (emPhysicsList) delete emPhysicsList; - emPhysicsList = new G4EmStandardPhysics(); - if (hadPhysicsList) delete hadPhysicsList; - hadPhysicsList = new HadronPhysicsQGSP_HP("std-hadron"); - } else if (name == "LHEP_BERT") { - if (emPhysicsList) delete emPhysicsList; - emPhysicsList = new G4EmStandardPhysics(); - if (hadPhysicsList) delete hadPhysicsList; - hadPhysicsList = new HadronPhysicsLHEP_BERT("std-hadron"); - } else if (name == "LHEP_BERT_HP") { - if (emPhysicsList) delete emPhysicsList; - emPhysicsList = new G4EmStandardPhysics(); - if (hadPhysicsList) delete hadPhysicsList; - hadPhysicsList = new HadronPhysicsLHEP_BERT_HP("std-hadron"); - } else if (name == "LHEP_BIC") { - if (emPhysicsList) delete emPhysicsList; - emPhysicsList = new G4EmStandardPhysics(); - if (hadPhysicsList) delete hadPhysicsList; - hadPhysicsList = new HadronPhysicsLHEP_BIC("std-hadron"); - } else if (name == "LHEP_BIC_HP") { - if (emPhysicsList) delete emPhysicsList; - emPhysicsList = new G4EmStandardPhysics(); - if (hadPhysicsList) delete hadPhysicsList; - hadPhysicsList = new HadronPhysicsLHEP_BIC_HP("std-hadron"); + } else if (name == "QGSP_BERT_HP" && nhadcomp == 0) { + AddExtraBuilders(true); + hadPhysicsList = new HadronPhysicsQGSP_BERT_HP("std-hadron"); + } else if (name == "QGSP_BIC_HP" && nhadcomp == 0) { + AddExtraBuilders(true); + hadPhysicsList = new HadronPhysicsQGSP_BIC_HP("std-hadron"); } else if (name == "LowEnergy_EM") { if (!hadPhysicsList ||(hadPhysicsList->GetPhysicsName()=="hadron") ) { if (emPhysicsList) delete emPhysicsList; @@ -176,11 +169,36 @@ void exrdmPhysicsList::SelectPhysicsList(const G4String& name) } else { G4cout << "exrdmPhysicsList: using EM comes with Std-hadron" < Physics " << G4endl; } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void exrdmPhysicsList::AddExtraBuilders(G4bool flagHP) +{ + if (emPhysicsList) delete emPhysicsList; + emPhysicsList = new G4EmStandardPhysics(); + + if (hadPhysicsList) { + delete hadPhysicsList; + hadPhysicsList = 0; + } + nhadcomp = 6; + + hadronPhys.push_back( new G4EmExtraPhysics("extra EM")); + hadronPhys.push_back( new G4HadronElasticPhysics("elastic",verboseLevel, + flagHP)); + hadronPhys.push_back( new G4QStoppingPhysics("stopping",verboseLevel)); + hadronPhys.push_back( new G4IonBinaryCascadePhysics("ionBIC")); + hadronPhys.push_back( new G4RadioactiveDecayPhysics("radioactiveDecay")); + hadronPhys.push_back( new G4NeutronTrackingCut("Neutron tracking cut")); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void exrdmPhysicsList::SetCuts() { diff --git a/examples/extended/runAndEvent/History b/examples/extended/runAndEvent/History new file mode 100644 index 0000000000..1fcc3e2368 --- /dev/null +++ b/examples/extended/runAndEvent/History @@ -0,0 +1,22 @@ +$Id: History,v 1.1 2007/11/17 00:28:33 asaim Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + examples/extended/runAndEvent History file + ------------------------------------------ + +This file should be used by the G4 example coordinator to briefly +summarize all major modifications introduced in the code and keep +track of all tags. + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +Nov. 16, 07 M.Asai (example_RandE-V09-00-00) +- Introducing RE03. +- README updated. + diff --git a/examples/extended/runAndEvent/RE01/History b/examples/extended/runAndEvent/RE01/History index d066d19758..cbd5c34593 100644 --- a/examples/extended/runAndEvent/RE01/History +++ b/examples/extended/runAndEvent/RE01/History @@ -1,11 +1,11 @@ -$Id: History,v 1.3 2007/02/05 11:47:46 gcosmo Exp $ +$Id: History,v 1.4 2007/11/13 20:33:28 asaim Exp $ ------------------------------------------------------------------- ========================================================= Geant4 - an Object-Oriented Toolkit for Simulation in HEP ========================================================= - Example RE02 History file + Example RE01 History file ------------------------ This file should be used by the G4 example coordinator to briefly summarize all major modifications introduced in the code and keep diff --git a/examples/extended/runAndEvent/RE01/RE01.cc b/examples/extended/runAndEvent/RE01/RE01.cc index 4e6a557f0e..400af7b35d 100644 --- a/examples/extended/runAndEvent/RE01/RE01.cc +++ b/examples/extended/runAndEvent/RE01/RE01.cc @@ -25,7 +25,7 @@ // // // $Id: RE01.cc,v 1.3 2006/06/29 17:42:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/runAndEvent/RE01/include/RE01BosonPhysics.hh b/examples/extended/runAndEvent/RE01/include/RE01BosonPhysics.hh index acedb319e2..a03968362c 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01BosonPhysics.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01BosonPhysics.hh @@ -25,7 +25,7 @@ // // // $Id: RE01BosonPhysics.hh,v 1.2 2006/06/29 17:42:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE01BosonPhysics_h diff --git a/examples/extended/runAndEvent/RE01/include/RE01CalorimeterHit.hh b/examples/extended/runAndEvent/RE01/include/RE01CalorimeterHit.hh index bc9fbdc0ff..7d7444eaef 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01CalorimeterHit.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01CalorimeterHit.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01CalorimeterHit.hh,v 1.3 2006/06/29 17:42:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01CalorimeterParametrisation.hh b/examples/extended/runAndEvent/RE01/include/RE01CalorimeterParametrisation.hh index f1619e1047..0b250e767c 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01CalorimeterParametrisation.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01CalorimeterParametrisation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01CalorimeterParametrisation.hh,v 1.2 2006/06/29 17:42:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01CalorimeterROGeometry.hh b/examples/extended/runAndEvent/RE01/include/RE01CalorimeterROGeometry.hh index 500c392021..298a766319 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01CalorimeterROGeometry.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01CalorimeterROGeometry.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01CalorimeterROGeometry.hh,v 1.2 2006/06/29 17:42:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01CalorimeterSD.hh b/examples/extended/runAndEvent/RE01/include/RE01CalorimeterSD.hh index 78d8702e5b..c88c282916 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01CalorimeterSD.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01CalorimeterSD.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01CalorimeterSD.hh,v 1.2 2006/06/29 17:42:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01DecayPhysics.hh b/examples/extended/runAndEvent/RE01/include/RE01DecayPhysics.hh index d51199b8fc..ddb727bb81 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01DecayPhysics.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01DecayPhysics.hh @@ -25,7 +25,7 @@ // // // $Id: RE01DecayPhysics.hh,v 1.2 2006/06/29 17:42:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/runAndEvent/RE01/include/RE01DetectorConstruction.hh b/examples/extended/runAndEvent/RE01/include/RE01DetectorConstruction.hh index 4a01ee956a..3b96c3a263 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01DetectorConstruction.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01DetectorConstruction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01DetectorConstruction.hh,v 1.2 2006/06/29 17:42:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01DetectorParameterDef.hh b/examples/extended/runAndEvent/RE01/include/RE01DetectorParameterDef.hh index e5ad07f81e..46c2f3eea2 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01DetectorParameterDef.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01DetectorParameterDef.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01DetectorParameterDef.hh,v 1.2 2006/06/29 17:42:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // G4double expHall_x; diff --git a/examples/extended/runAndEvent/RE01/include/RE01DummySD.hh b/examples/extended/runAndEvent/RE01/include/RE01DummySD.hh index 2615aa9231..b83094a9b4 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01DummySD.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01DummySD.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01DummySD.hh,v 1.2 2006/06/29 17:42:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/runAndEvent/RE01/include/RE01EventAction.hh b/examples/extended/runAndEvent/RE01/include/RE01EventAction.hh index 1d45a613d9..feefd6ee9d 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01EventAction.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01EventAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01EventAction.hh,v 1.2 2006/06/29 17:42:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01Field.hh b/examples/extended/runAndEvent/RE01/include/RE01Field.hh index f634ca4398..d7381116e3 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01Field.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01Field.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01Field.hh,v 1.2 2006/06/29 17:42:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01HadronPhysics.hh b/examples/extended/runAndEvent/RE01/include/RE01HadronPhysics.hh index ef27133a3f..c7ae57061d 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01HadronPhysics.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01HadronPhysics.hh @@ -25,7 +25,7 @@ // // // $Id: RE01HadronPhysics.hh,v 1.2 2006/06/29 17:42:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE01HadronPhysics_h diff --git a/examples/extended/runAndEvent/RE01/include/RE01IonPhysics.hh b/examples/extended/runAndEvent/RE01/include/RE01IonPhysics.hh index 3f31d62f62..1cc28f31fe 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01IonPhysics.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01IonPhysics.hh @@ -25,7 +25,7 @@ // // // $Id: RE01IonPhysics.hh,v 1.2 2006/06/29 17:42:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE01IonPhysics_h diff --git a/examples/extended/runAndEvent/RE01/include/RE01LeptonPhysics.hh b/examples/extended/runAndEvent/RE01/include/RE01LeptonPhysics.hh index 0ab035a4c4..9cc45cf9ee 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01LeptonPhysics.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01LeptonPhysics.hh @@ -25,7 +25,7 @@ // // // $Id: RE01LeptonPhysics.hh,v 1.2 2006/06/29 17:42:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/runAndEvent/RE01/include/RE01PhysicsList.hh b/examples/extended/runAndEvent/RE01/include/RE01PhysicsList.hh index 522c62fba7..eb9df82727 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01PhysicsList.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: RE01PhysicsList.hh,v 1.2 2006/06/29 17:43:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/runAndEvent/RE01/include/RE01PrimaryGeneratorAction.hh b/examples/extended/runAndEvent/RE01/include/RE01PrimaryGeneratorAction.hh index 0a7ca790a2..11d0dccd7b 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01PrimaryGeneratorAction.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01PrimaryGeneratorAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01PrimaryGeneratorAction.hh,v 1.2 2006/06/29 17:43:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01PrimaryGeneratorMessenger.hh b/examples/extended/runAndEvent/RE01/include/RE01PrimaryGeneratorMessenger.hh index 2479b85d90..6a43061421 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01PrimaryGeneratorMessenger.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01PrimaryGeneratorMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01PrimaryGeneratorMessenger.hh,v 1.2 2006/06/29 17:43:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01RegionInformation.hh b/examples/extended/runAndEvent/RE01/include/RE01RegionInformation.hh index a86ca70007..9306322af9 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01RegionInformation.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01RegionInformation.hh @@ -25,7 +25,7 @@ // // // $Id: RE01RegionInformation.hh,v 1.2 2006/06/29 17:43:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE01RegionInformation_H diff --git a/examples/extended/runAndEvent/RE01/include/RE01RunAction.hh b/examples/extended/runAndEvent/RE01/include/RE01RunAction.hh index 3693b1398b..d87eea0c6f 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01RunAction.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: RE01RunAction.hh,v 1.2 2006/06/29 17:43:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE01RunAction_h diff --git a/examples/extended/runAndEvent/RE01/include/RE01StackingAction.hh b/examples/extended/runAndEvent/RE01/include/RE01StackingAction.hh index ede53023f7..9023a93265 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01StackingAction.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01StackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01StackingAction.hh,v 1.2 2006/06/29 17:43:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01SteppingAction.hh b/examples/extended/runAndEvent/RE01/include/RE01SteppingAction.hh index b9d044e334..db8a027521 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01SteppingAction.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01SteppingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01SteppingAction.hh,v 1.2 2006/06/29 17:43:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01TrackInformation.hh b/examples/extended/runAndEvent/RE01/include/RE01TrackInformation.hh index 4c545d9911..11f56f0794 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01TrackInformation.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01TrackInformation.hh @@ -25,7 +25,7 @@ // // // $Id: RE01TrackInformation.hh,v 1.2 2006/06/29 17:43:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE01TrackInformation_h diff --git a/examples/extended/runAndEvent/RE01/include/RE01TrackerHit.hh b/examples/extended/runAndEvent/RE01/include/RE01TrackerHit.hh index 4942acb894..fc3175dc6f 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01TrackerHit.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01TrackerHit.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01TrackerHit.hh,v 1.3 2006/06/29 17:43:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01TrackerParametrisation.hh b/examples/extended/runAndEvent/RE01/include/RE01TrackerParametrisation.hh index bc2991b111..2d4d171811 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01TrackerParametrisation.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01TrackerParametrisation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01TrackerParametrisation.hh,v 1.2 2006/06/29 17:43:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01TrackerSD.hh b/examples/extended/runAndEvent/RE01/include/RE01TrackerSD.hh index ea60d5de29..46cb77e6fc 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01TrackerSD.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01TrackerSD.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01TrackerSD.hh,v 1.2 2006/06/29 17:43:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/include/RE01TrackingAction.hh b/examples/extended/runAndEvent/RE01/include/RE01TrackingAction.hh index c4b41633a7..870dc92ab5 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01TrackingAction.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01TrackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01TrackingAction.hh,v 1.2 2006/06/29 17:43:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE01TrackingAction_h diff --git a/examples/extended/runAndEvent/RE01/include/RE01Trajectory.hh b/examples/extended/runAndEvent/RE01/include/RE01Trajectory.hh index a1e5339575..f6a93378c4 100644 --- a/examples/extended/runAndEvent/RE01/include/RE01Trajectory.hh +++ b/examples/extended/runAndEvent/RE01/include/RE01Trajectory.hh @@ -25,7 +25,7 @@ // // // $Id: RE01Trajectory.hh,v 1.3 2006/06/29 17:43:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE01Trajectory_h diff --git a/examples/extended/runAndEvent/RE01/src/RE01BosonPhysics.cc b/examples/extended/runAndEvent/RE01/src/RE01BosonPhysics.cc index 3c1472d94b..f179d56fa3 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01BosonPhysics.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01BosonPhysics.cc @@ -25,7 +25,7 @@ // // // $Id: RE01BosonPhysics.cc,v 1.2 2006/06/29 17:43:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/extended/runAndEvent/RE01/src/RE01CalorimeterHit.cc b/examples/extended/runAndEvent/RE01/src/RE01CalorimeterHit.cc index 0dd998ace2..6d7e3ba910 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01CalorimeterHit.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01CalorimeterHit.cc @@ -25,7 +25,7 @@ // // // $Id: RE01CalorimeterHit.cc,v 1.5 2006/11/14 07:07:38 perl Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01CalorimeterParametrisation.cc b/examples/extended/runAndEvent/RE01/src/RE01CalorimeterParametrisation.cc index 77b1ee0121..36341aea3e 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01CalorimeterParametrisation.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01CalorimeterParametrisation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01CalorimeterParametrisation.cc,v 1.2 2006/06/29 17:43:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01CalorimeterROGeometry.cc b/examples/extended/runAndEvent/RE01/src/RE01CalorimeterROGeometry.cc index 0e60e56806..65cb830ee5 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01CalorimeterROGeometry.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01CalorimeterROGeometry.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01CalorimeterROGeometry.cc,v 1.2 2006/06/29 17:43:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE01CalorimeterROGeometry.hh" diff --git a/examples/extended/runAndEvent/RE01/src/RE01CalorimeterSD.cc b/examples/extended/runAndEvent/RE01/src/RE01CalorimeterSD.cc index 03efd1ab61..58d3611381 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01CalorimeterSD.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01CalorimeterSD.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01CalorimeterSD.cc,v 1.3 2006/11/18 02:42:27 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01DecayPhysics.cc b/examples/extended/runAndEvent/RE01/src/RE01DecayPhysics.cc index baef176b05..a8a739fc1f 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01DecayPhysics.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01DecayPhysics.cc @@ -25,7 +25,7 @@ // // // $Id: RE01DecayPhysics.cc,v 1.2 2006/06/29 17:43:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE01DecayPhysics.hh" diff --git a/examples/extended/runAndEvent/RE01/src/RE01DetectorConstruction.cc b/examples/extended/runAndEvent/RE01/src/RE01DetectorConstruction.cc index 4bbf884bdf..19c9472ac0 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01DetectorConstruction.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01DetectorConstruction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01DetectorConstruction.cc,v 1.3 2006/06/29 17:43:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01DetectorParameterDef.icc b/examples/extended/runAndEvent/RE01/src/RE01DetectorParameterDef.icc index 3f0c1849b9..e25240c068 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01DetectorParameterDef.icc +++ b/examples/extended/runAndEvent/RE01/src/RE01DetectorParameterDef.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01DetectorParameterDef.icc,v 1.2 2006/06/29 17:43:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01DummySD.cc b/examples/extended/runAndEvent/RE01/src/RE01DummySD.cc index 126627f5f2..513c8774fd 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01DummySD.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01DummySD.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01DummySD.cc,v 1.2 2006/06/29 17:43:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Dummy sensitive used only to flag sensitivity diff --git a/examples/extended/runAndEvent/RE01/src/RE01EventAction.cc b/examples/extended/runAndEvent/RE01/src/RE01EventAction.cc index 30a03bf13e..53fd27db42 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01EventAction.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01EventAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01EventAction.cc,v 1.2 2006/06/29 17:43:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01Field.cc b/examples/extended/runAndEvent/RE01/src/RE01Field.cc index 45c2e1819f..1a537bc6fa 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01Field.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01Field.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01Field.cc,v 1.3 2006/06/29 17:43:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01HadronPhysics.cc b/examples/extended/runAndEvent/RE01/src/RE01HadronPhysics.cc index b58a6e3ece..b7f4fb0db3 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01HadronPhysics.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01HadronPhysics.cc @@ -25,7 +25,7 @@ // // // $Id: RE01HadronPhysics.cc,v 1.2 2006/06/29 17:44:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE01HadronPhysics.hh" diff --git a/examples/extended/runAndEvent/RE01/src/RE01IonPhysics.cc b/examples/extended/runAndEvent/RE01/src/RE01IonPhysics.cc index 1b8ba41313..1691b03718 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01IonPhysics.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01IonPhysics.cc @@ -25,7 +25,7 @@ // // // $Id: RE01IonPhysics.cc,v 1.2 2006/06/29 17:44:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE01IonPhysics.hh" diff --git a/examples/extended/runAndEvent/RE01/src/RE01LeptonPhysics.cc b/examples/extended/runAndEvent/RE01/src/RE01LeptonPhysics.cc index f98ed82cde..fb63d477a1 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01LeptonPhysics.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01LeptonPhysics.cc @@ -25,7 +25,7 @@ // // // $Id: RE01LeptonPhysics.cc,v 1.2 2006/06/29 17:44:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE01LeptonPhysics.hh" diff --git a/examples/extended/runAndEvent/RE01/src/RE01PhysicsList.cc b/examples/extended/runAndEvent/RE01/src/RE01PhysicsList.cc index daa5dc0de9..4cc3ddcac3 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01PhysicsList.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: RE01PhysicsList.cc,v 1.2 2006/06/29 17:44:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE01PhysicsList.hh" diff --git a/examples/extended/runAndEvent/RE01/src/RE01PrimaryGeneratorAction.cc b/examples/extended/runAndEvent/RE01/src/RE01PrimaryGeneratorAction.cc index 4509183858..22ef6df974 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01PrimaryGeneratorAction.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01PrimaryGeneratorAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01PrimaryGeneratorAction.cc,v 1.2 2006/06/29 17:44:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01PrimaryGeneratorMessenger.cc b/examples/extended/runAndEvent/RE01/src/RE01PrimaryGeneratorMessenger.cc index af13e36d31..2e047a893b 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01PrimaryGeneratorMessenger.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01PrimaryGeneratorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01PrimaryGeneratorMessenger.cc,v 1.2 2006/06/29 17:44:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01RegionInformation.cc b/examples/extended/runAndEvent/RE01/src/RE01RegionInformation.cc index 7fa88c53c4..8cca8f079c 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01RegionInformation.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01RegionInformation.cc @@ -25,7 +25,7 @@ // // // $Id: RE01RegionInformation.cc,v 1.2 2006/06/29 17:44:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE01RegionInformation.hh" diff --git a/examples/extended/runAndEvent/RE01/src/RE01RunAction.cc b/examples/extended/runAndEvent/RE01/src/RE01RunAction.cc index c378e9de70..7e0d3b9b9d 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01RunAction.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: RE01RunAction.cc,v 1.2 2006/06/29 17:44:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE01RunAction.hh" diff --git a/examples/extended/runAndEvent/RE01/src/RE01StackingAction.cc b/examples/extended/runAndEvent/RE01/src/RE01StackingAction.cc index c215403d34..ecc9ae5fb5 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01StackingAction.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01StackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01StackingAction.cc,v 1.2 2006/06/29 17:44:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01SteppingAction.cc b/examples/extended/runAndEvent/RE01/src/RE01SteppingAction.cc index ee6239c14f..03786a8116 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01SteppingAction.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01SteppingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01SteppingAction.cc,v 1.2 2006/06/29 17:44:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01TrackInformation.cc b/examples/extended/runAndEvent/RE01/src/RE01TrackInformation.cc index 0bb12f9c5d..b3e3d1643e 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01TrackInformation.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01TrackInformation.cc @@ -25,7 +25,7 @@ // // // $Id: RE01TrackInformation.cc,v 1.2 2006/06/29 17:44:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE01TrackInformation.hh" diff --git a/examples/extended/runAndEvent/RE01/src/RE01TrackerHit.cc b/examples/extended/runAndEvent/RE01/src/RE01TrackerHit.cc index 0e7d387d04..f1ceeef17c 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01TrackerHit.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01TrackerHit.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01TrackerHit.cc,v 1.5 2006/11/14 07:07:38 perl Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01TrackerParametrisation.cc b/examples/extended/runAndEvent/RE01/src/RE01TrackerParametrisation.cc index 339f5a4dc6..a85a9e1504 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01TrackerParametrisation.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01TrackerParametrisation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01TrackerParametrisation.cc,v 1.2 2006/06/29 17:44:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01TrackerSD.cc b/examples/extended/runAndEvent/RE01/src/RE01TrackerSD.cc index b7e6831795..8775af5d30 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01TrackerSD.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01TrackerSD.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01TrackerSD.cc,v 1.2 2006/06/29 17:44:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01TrackingAction.cc b/examples/extended/runAndEvent/RE01/src/RE01TrackingAction.cc index 8c04c4f724..3f34a0a624 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01TrackingAction.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01TrackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: RE01TrackingAction.cc,v 1.2 2006/06/29 17:44:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE01/src/RE01Trajectory.cc b/examples/extended/runAndEvent/RE01/src/RE01Trajectory.cc index 4b4479ffc1..5f6327e524 100644 --- a/examples/extended/runAndEvent/RE01/src/RE01Trajectory.cc +++ b/examples/extended/runAndEvent/RE01/src/RE01Trajectory.cc @@ -25,7 +25,7 @@ // // // $Id: RE01Trajectory.cc,v 1.3 2006/06/29 17:44:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // diff --git a/examples/extended/runAndEvent/RE02/exampleRE02.cc b/examples/extended/runAndEvent/RE02/exampleRE02.cc index 6e9cec0363..e45995b88d 100644 --- a/examples/extended/runAndEvent/RE02/exampleRE02.cc +++ b/examples/extended/runAndEvent/RE02/exampleRE02.cc @@ -25,7 +25,7 @@ // // // $Id: exampleRE02.cc,v 1.3 2006/11/18 01:37:22 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/examples/extended/runAndEvent/RE02/include/RE02DetectorConstruction.hh b/examples/extended/runAndEvent/RE02/include/RE02DetectorConstruction.hh index b53a790617..3af0e73e93 100644 --- a/examples/extended/runAndEvent/RE02/include/RE02DetectorConstruction.hh +++ b/examples/extended/runAndEvent/RE02/include/RE02DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: RE02DetectorConstruction.hh,v 1.3 2006/11/18 01:37:23 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE02DetectorConstruction_h diff --git a/examples/extended/runAndEvent/RE02/include/RE02EventAction.hh b/examples/extended/runAndEvent/RE02/include/RE02EventAction.hh index 7790db40f3..598c07c8a0 100644 --- a/examples/extended/runAndEvent/RE02/include/RE02EventAction.hh +++ b/examples/extended/runAndEvent/RE02/include/RE02EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: RE02EventAction.hh,v 1.3 2006/11/18 01:37:23 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE02EventAction_h diff --git a/examples/extended/runAndEvent/RE02/include/RE02NestedPhantomParameterisation.hh b/examples/extended/runAndEvent/RE02/include/RE02NestedPhantomParameterisation.hh index 7a94212817..bc361cf4a7 100644 --- a/examples/extended/runAndEvent/RE02/include/RE02NestedPhantomParameterisation.hh +++ b/examples/extended/runAndEvent/RE02/include/RE02NestedPhantomParameterisation.hh @@ -25,7 +25,7 @@ // // // $Id: RE02NestedPhantomParameterisation.hh,v 1.2 2006/12/13 15:42:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4VNestedParameterisation // diff --git a/examples/extended/runAndEvent/RE02/include/RE02PSCellFlux.hh b/examples/extended/runAndEvent/RE02/include/RE02PSCellFlux.hh index 2747e57650..23aa3f3d49 100644 --- a/examples/extended/runAndEvent/RE02/include/RE02PSCellFlux.hh +++ b/examples/extended/runAndEvent/RE02/include/RE02PSCellFlux.hh @@ -25,7 +25,7 @@ // // // $Id: RE02PSCellFlux.hh,v 1.2 2006/12/13 15:42:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE02PSCellFlux_h diff --git a/examples/extended/runAndEvent/RE02/include/RE02PSEnergyDeposit.hh b/examples/extended/runAndEvent/RE02/include/RE02PSEnergyDeposit.hh index 4a7795b4a7..eab7af5398 100644 --- a/examples/extended/runAndEvent/RE02/include/RE02PSEnergyDeposit.hh +++ b/examples/extended/runAndEvent/RE02/include/RE02PSEnergyDeposit.hh @@ -25,7 +25,7 @@ // // // $Id: RE02PSEnergyDeposit.hh,v 1.2 2006/12/13 15:42:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE02PSEnergyDeposit_h diff --git a/examples/extended/runAndEvent/RE02/include/RE02PSFlatSurfaceCurrent.hh b/examples/extended/runAndEvent/RE02/include/RE02PSFlatSurfaceCurrent.hh index 83437d5069..a78636c57c 100644 --- a/examples/extended/runAndEvent/RE02/include/RE02PSFlatSurfaceCurrent.hh +++ b/examples/extended/runAndEvent/RE02/include/RE02PSFlatSurfaceCurrent.hh @@ -25,7 +25,7 @@ // // // $Id: RE02PSFlatSurfaceCurrent.hh,v 1.2 2006/12/13 15:42:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE02PSFlatSurfaceCurrent_h diff --git a/examples/extended/runAndEvent/RE02/include/RE02PSFlatSurfaceFlux.hh b/examples/extended/runAndEvent/RE02/include/RE02PSFlatSurfaceFlux.hh index 51d7f8f191..8369af6dfe 100644 --- a/examples/extended/runAndEvent/RE02/include/RE02PSFlatSurfaceFlux.hh +++ b/examples/extended/runAndEvent/RE02/include/RE02PSFlatSurfaceFlux.hh @@ -25,7 +25,7 @@ // // // $Id: RE02PSFlatSurfaceFlux.hh,v 1.2 2006/12/13 15:42:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE02PSFlatSurfaceFlux_h diff --git a/examples/extended/runAndEvent/RE02/include/RE02PSNofStep.hh b/examples/extended/runAndEvent/RE02/include/RE02PSNofStep.hh index 3859e1921b..e52f4fc632 100644 --- a/examples/extended/runAndEvent/RE02/include/RE02PSNofStep.hh +++ b/examples/extended/runAndEvent/RE02/include/RE02PSNofStep.hh @@ -25,7 +25,7 @@ // // // $Id: RE02PSNofStep.hh,v 1.2 2006/12/13 15:42:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE02PSNofStep_h diff --git a/examples/extended/runAndEvent/RE02/include/RE02PSPassageCellFlux.hh b/examples/extended/runAndEvent/RE02/include/RE02PSPassageCellFlux.hh index 6b84b2220d..2ff915d2af 100644 --- a/examples/extended/runAndEvent/RE02/include/RE02PSPassageCellFlux.hh +++ b/examples/extended/runAndEvent/RE02/include/RE02PSPassageCellFlux.hh @@ -25,7 +25,7 @@ // // // $Id: RE02PSPassageCellFlux.hh,v 1.2 2006/12/13 15:43:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE02PSPassageCellFlux_h diff --git a/examples/extended/runAndEvent/RE02/include/RE02PrimaryGeneratorAction.hh b/examples/extended/runAndEvent/RE02/include/RE02PrimaryGeneratorAction.hh index 1cd2826f4b..e4c456b80d 100644 --- a/examples/extended/runAndEvent/RE02/include/RE02PrimaryGeneratorAction.hh +++ b/examples/extended/runAndEvent/RE02/include/RE02PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: RE02PrimaryGeneratorAction.hh,v 1.3 2006/11/18 01:37:23 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE02PrimaryGeneratorAction_h diff --git a/examples/extended/runAndEvent/RE02/include/RE02Run.hh b/examples/extended/runAndEvent/RE02/include/RE02Run.hh index 6186cdef24..b94ab50b47 100644 --- a/examples/extended/runAndEvent/RE02/include/RE02Run.hh +++ b/examples/extended/runAndEvent/RE02/include/RE02Run.hh @@ -25,7 +25,7 @@ // // // $Id: RE02Run.hh,v 1.3 2006/11/18 01:37:23 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------- // (Purpose) diff --git a/examples/extended/runAndEvent/RE02/include/RE02RunAction.hh b/examples/extended/runAndEvent/RE02/include/RE02RunAction.hh index 05d6bc5197..6e1c51ceda 100644 --- a/examples/extended/runAndEvent/RE02/include/RE02RunAction.hh +++ b/examples/extended/runAndEvent/RE02/include/RE02RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: RE02RunAction.hh,v 1.3 2006/11/18 01:37:23 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef RE02RunAction_h diff --git a/examples/extended/runAndEvent/RE02/src/RE02DetectorConstruction.cc b/examples/extended/runAndEvent/RE02/src/RE02DetectorConstruction.cc index f4d87ba585..77a4d3b99f 100644 --- a/examples/extended/runAndEvent/RE02/src/RE02DetectorConstruction.cc +++ b/examples/extended/runAndEvent/RE02/src/RE02DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: RE02DetectorConstruction.cc,v 1.3 2006/11/18 01:37:23 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE02DetectorConstruction.hh" diff --git a/examples/extended/runAndEvent/RE02/src/RE02EventAction.cc b/examples/extended/runAndEvent/RE02/src/RE02EventAction.cc index 03f6ea33ab..9e9010823e 100644 --- a/examples/extended/runAndEvent/RE02/src/RE02EventAction.cc +++ b/examples/extended/runAndEvent/RE02/src/RE02EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: RE02EventAction.cc,v 1.3 2006/11/18 01:37:24 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE02EventAction.hh" diff --git a/examples/extended/runAndEvent/RE02/src/RE02PSCellFlux.cc b/examples/extended/runAndEvent/RE02/src/RE02PSCellFlux.cc index c931e057e8..0850922938 100644 --- a/examples/extended/runAndEvent/RE02/src/RE02PSCellFlux.cc +++ b/examples/extended/runAndEvent/RE02/src/RE02PSCellFlux.cc @@ -25,7 +25,7 @@ // // // $Id: RE02PSCellFlux.cc,v 1.3 2007/05/18 18:16:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // RE02PSCellFlux #include "RE02PSCellFlux.hh" diff --git a/examples/extended/runAndEvent/RE02/src/RE02PSEnergyDeposit.cc b/examples/extended/runAndEvent/RE02/src/RE02PSEnergyDeposit.cc index 4a1e94d71c..8e3fd5f437 100644 --- a/examples/extended/runAndEvent/RE02/src/RE02PSEnergyDeposit.cc +++ b/examples/extended/runAndEvent/RE02/src/RE02PSEnergyDeposit.cc @@ -25,7 +25,7 @@ // // // $Id: RE02PSEnergyDeposit.cc,v 1.3 2007/05/18 18:16:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // RE02PSEnergyDeposit #include "RE02PSEnergyDeposit.hh" diff --git a/examples/extended/runAndEvent/RE02/src/RE02PSFlatSurfaceCurrent.cc b/examples/extended/runAndEvent/RE02/src/RE02PSFlatSurfaceCurrent.cc index 03d8c384ec..9299006043 100644 --- a/examples/extended/runAndEvent/RE02/src/RE02PSFlatSurfaceCurrent.cc +++ b/examples/extended/runAndEvent/RE02/src/RE02PSFlatSurfaceCurrent.cc @@ -25,7 +25,7 @@ // // // $Id: RE02PSFlatSurfaceCurrent.cc,v 1.3 2007/05/18 18:16:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // RE02PSFlatSurfaceCurrent #include "RE02PSFlatSurfaceCurrent.hh" diff --git a/examples/extended/runAndEvent/RE02/src/RE02PSFlatSurfaceFlux.cc b/examples/extended/runAndEvent/RE02/src/RE02PSFlatSurfaceFlux.cc index 1552124f6a..38dc616f54 100644 --- a/examples/extended/runAndEvent/RE02/src/RE02PSFlatSurfaceFlux.cc +++ b/examples/extended/runAndEvent/RE02/src/RE02PSFlatSurfaceFlux.cc @@ -25,7 +25,7 @@ // // // $Id: RE02PSFlatSurfaceFlux.cc,v 1.3 2007/05/18 18:16:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // RE02PSFlatSurfaceFlux #include "RE02PSFlatSurfaceFlux.hh" diff --git a/examples/extended/runAndEvent/RE02/src/RE02PSNofStep.cc b/examples/extended/runAndEvent/RE02/src/RE02PSNofStep.cc index 6fea7f0f27..c40440b9ec 100644 --- a/examples/extended/runAndEvent/RE02/src/RE02PSNofStep.cc +++ b/examples/extended/runAndEvent/RE02/src/RE02PSNofStep.cc @@ -25,7 +25,7 @@ // // // $Id: RE02PSNofStep.cc,v 1.3 2007/05/18 18:16:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // RE02PSNofStep #include "RE02PSNofStep.hh" diff --git a/examples/extended/runAndEvent/RE02/src/RE02PSPassageCellFlux.cc b/examples/extended/runAndEvent/RE02/src/RE02PSPassageCellFlux.cc index 070c3fa9d8..dd05f12d6d 100644 --- a/examples/extended/runAndEvent/RE02/src/RE02PSPassageCellFlux.cc +++ b/examples/extended/runAndEvent/RE02/src/RE02PSPassageCellFlux.cc @@ -25,7 +25,7 @@ // // // $Id: RE02PSPassageCellFlux.cc,v 1.3 2007/05/18 18:16:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // RE02PSPassageCellFlux #include "RE02PSPassageCellFlux.hh" diff --git a/examples/extended/runAndEvent/RE02/src/RE02PrimaryGeneratorAction.cc b/examples/extended/runAndEvent/RE02/src/RE02PrimaryGeneratorAction.cc index 7aed336bf6..d31bd23818 100644 --- a/examples/extended/runAndEvent/RE02/src/RE02PrimaryGeneratorAction.cc +++ b/examples/extended/runAndEvent/RE02/src/RE02PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: RE02PrimaryGeneratorAction.cc,v 1.3 2006/11/18 01:37:24 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE02PrimaryGeneratorAction.hh" diff --git a/examples/extended/runAndEvent/RE02/src/RE02Run.cc b/examples/extended/runAndEvent/RE02/src/RE02Run.cc index eb4775a4ff..c0c1345d4c 100644 --- a/examples/extended/runAndEvent/RE02/src/RE02Run.cc +++ b/examples/extended/runAndEvent/RE02/src/RE02Run.cc @@ -25,7 +25,7 @@ // // // $Id: RE02Run.cc,v 1.3 2006/11/18 01:37:24 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //===================================================================== diff --git a/examples/extended/runAndEvent/RE02/src/RE02RunAction.cc b/examples/extended/runAndEvent/RE02/src/RE02RunAction.cc index 0b95ca11c1..f034c0756d 100644 --- a/examples/extended/runAndEvent/RE02/src/RE02RunAction.cc +++ b/examples/extended/runAndEvent/RE02/src/RE02RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: RE02RunAction.cc,v 1.3 2006/11/18 01:37:24 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "RE02RunAction.hh" #include "RE02Run.hh" diff --git a/examples/extended/runAndEvent/RE03/GNUmakefile b/examples/extended/runAndEvent/RE03/GNUmakefile new file mode 100644 index 0000000000..5b25c72b57 --- /dev/null +++ b/examples/extended/runAndEvent/RE03/GNUmakefile @@ -0,0 +1,22 @@ +# $Id: GNUmakefile,v 1.1 2007/11/13 19:55:43 asaim Exp $ +# -------------------------------------------------------------- +# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. +# -------------------------------------------------------------- + +name := RE03 +G4TARGET := $(name) +G4EXLIB := true + +ifndef G4INSTALL + G4INSTALL = ../../../.. +endif + +.PHONY: all +all: lib bin + +include $(G4INSTALL)/config/binmake.gmk + +visclean: + rm -f g4*.prim g4*.eps g4*.wrl + rm -f .DAWN_* + diff --git a/examples/extended/runAndEvent/RE03/History b/examples/extended/runAndEvent/RE03/History new file mode 100644 index 0000000000..a1ae77d9d7 --- /dev/null +++ b/examples/extended/runAndEvent/RE03/History @@ -0,0 +1,20 @@ +$Id: History,v 1.1 2007/11/13 20:31:59 asaim Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + Example RE03 History file + ------------------------ +This file should be used by the G4 example coordinator to briefly +summarize all major modifications introduced in the code and keep +track of all tags. + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +Nov. 14, 07 M.Asai (exampleRE03-V09-00-00) +- Introducing this example. + diff --git a/examples/extended/runAndEvent/RE03/RE03.cc b/examples/extended/runAndEvent/RE03/RE03.cc new file mode 100644 index 0000000000..209f365d3e --- /dev/null +++ b/examples/extended/runAndEvent/RE03/RE03.cc @@ -0,0 +1,129 @@ +// +// ******************************************************************** +// * 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: RE03.cc,v 1.4 2007/11/17 01:26:01 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// + +#include "G4RunManager.hh" +#include "G4UImanager.hh" +#include "G4UIterminal.hh" +#include "G4UItcsh.hh" +#include "G4ScoringManager.hh" + +#ifdef G4VIS_USE +#include "G4VisExecutive.hh" +#endif +#include "RE03DetectorConstruction.hh" +#include "RE03PhysicsList.hh" +#include "RE03PrimaryGeneratorAction.hh" + +//==================================================================== +// Un-comment this line for user defined score writer +// #include "RE03UserScoreWriter.hh" +//==================================================================== + +int main(int argc,char** argv) +{ + // Construct the run manager + // + G4RunManager * runManager = new G4RunManager; + + // Activate UI-command base scorer + G4ScoringManager * scManager = G4ScoringManager::GetScoringManager(); + scManager->SetVerboseLevel(1); + +//==================================================================== +// Un-comment this line for user defined score writer +// scManager->SetScoreWriter(new RE03UserScoreWriter()); +//==================================================================== + + // Set mandatory initialization classes + // + G4VUserDetectorConstruction* detector = new RE03DetectorConstruction; + runManager->SetUserInitialization(detector); + // + G4VUserPhysicsList* physics = new RE03PhysicsList; + runManager->SetUserInitialization(physics); + + // Set user action classes + // + G4VUserPrimaryGeneratorAction* gen_action = new RE03PrimaryGeneratorAction; + runManager->SetUserAction(gen_action); + // + +#ifdef G4VIS_USE + // Visualization manager + // + G4VisManager* visManager = new G4VisExecutive; + visManager->Initialize(); +#endif + + // Initialize G4 kernel + // + runManager->Initialize(); + + // Get the pointer to the User Interface manager + // + G4UImanager* UI = G4UImanager::GetUIpointer(); + UI->ApplyCommand("/control/execute vis.mac"); + + if (argc==1) // Define UI session for interactive mode + { + G4UIsession* session=0; + + // G4UIterminal is a (dumb) terminal + // +#ifdef G4UI_USE_TCSH + session = new G4UIterminal(new G4UItcsh); +#else + session = new G4UIterminal(); +#endif + + session->SessionStart(); + + delete session; + } + else // Batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + // Job termination + // Free the store: user actions, physics_list and detector_description are + // owned and deleted by the run manager, so they should not + // be deleted in the main() program ! + +#ifdef G4VIS_USE + delete visManager; +#endif + delete runManager; + + return 0; +} diff --git a/examples/extended/runAndEvent/RE03/README b/examples/extended/runAndEvent/RE03/README new file mode 100644 index 0000000000..2c29dde4bc --- /dev/null +++ b/examples/extended/runAndEvent/RE03/README @@ -0,0 +1,60 @@ + + RE03 - An extended example for run and event + -------------------------------------------- + + Contact : M.Asai (SLAC), A.Kimura (AIT), T.Aso (TNCMT) + +**************************************************************** +* IMPORTANT NOTICE for version 9.1 * +* This UI-command base scoring is still in alpha release and * +* functionality offered is preliminary. We do not guarantee * +* the correctness of the code. Also, we may change any of the * +* commands / methods in the near future release. * +**************************************************************** + +1. Introduction + + This example demonstrates how to use UI-command base scoring. +It create parallel world(s) for defining scoring mesh(es). + + Since this UI-command base scoring is preliminary, this +functionality is not provided by default. To get it included, +the pointer to G4ScoringManager must be accessed. The access +to the static method G4ScoringManager::GetScoringManager() +activate this functionality. + +1.1 Geometry and primary particle + + It has just one water box in the world volume filled by air. +No detector in the mass geometry. Particle gun shoots a gamma +into the water box. + +1.2 Physics + + The physics list is mostly identical to exampleN03. It does not +have hadronics. + +2. Macro files + + "run1.mac" through "run3.mac" macro files should be used +independently. Each macro file create its own scoring parallel +world(s). "vis.mac" and "drawSlics.mac" are used internally. +Each macro should work for both interactively and batch, but +interactive mode is advised for better visualization. + +3. RE03UserScoreWriter + + G4ScoringManager has a default score writer which dumps every +entry of one quantity of a mesh for all quantities of the mesh +one by one in CSV format. To alternate the file format the user +can implement his/her own score writer deriving from G4VUserScoreWriter +base class and set it to G4ScoringManager. To demonstrate this, +RE03UserScoreWriter is included in this example. To use this +alternative writer, un-comment its instantiation in RE03.cc. + + + + + + + diff --git a/examples/extended/runAndEvent/RE03/drawSlice.mac b/examples/extended/runAndEvent/RE03/drawSlice.mac new file mode 100644 index 0000000000..eeae59829c --- /dev/null +++ b/examples/extended/runAndEvent/RE03/drawSlice.mac @@ -0,0 +1 @@ +/score/drawColumn boxMesh_1 nOfStepGamma 0 {iColumn} diff --git a/examples/extended/runAndEvent/RE03/include/RE03DetectorConstruction.hh b/examples/extended/runAndEvent/RE03/include/RE03DetectorConstruction.hh new file mode 100644 index 0000000000..1fd46626a6 --- /dev/null +++ b/examples/extended/runAndEvent/RE03/include/RE03DetectorConstruction.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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: RE03DetectorConstruction.hh,v 1.1 2007/11/13 19:55:43 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// + +#ifndef RE03DetectorConstruction_h +#define RE03DetectorConstruction_h 1 + +#include "G4VUserDetectorConstruction.hh" +#include "globals.hh" + +class G4VPhysicalVolume; +class G4Material; + +class RE03DetectorConstruction : public G4VUserDetectorConstruction +{ + public: + RE03DetectorConstruction(); + virtual ~RE03DetectorConstruction(); + + public: + virtual G4VPhysicalVolume* Construct(); + + private: + void DefineMaterials(); + void SetupGeometry(); + + private: + G4Material* air; + G4Material* water; + G4VPhysicalVolume* worldPhys; + G4VPhysicalVolume* phantomPhys; + G4bool constructed; +}; + +#endif + diff --git a/examples/extended/runAndEvent/RE03/include/RE03PhysicsList.hh b/examples/extended/runAndEvent/RE03/include/RE03PhysicsList.hh new file mode 100644 index 0000000000..eeb57c55e0 --- /dev/null +++ b/examples/extended/runAndEvent/RE03/include/RE03PhysicsList.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * 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: RE03PhysicsList.hh,v 1.1 2007/11/13 19:55:43 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// + +#ifndef RE03PhysicsList_h +#define RE03PhysicsList_h 1 + +#include "G4VUserPhysicsList.hh" +#include "globals.hh" + +class RE03PhysicsList: public G4VUserPhysicsList +{ +public: + RE03PhysicsList(); + virtual ~RE03PhysicsList(); + + // Construct particle and physics + void ConstructParticle(); + void ConstructProcess(); + + void SetCuts(); + +private: + // these methods Construct particles + void ConstructBosons(); + void ConstructLeptons(); + void ConstructMesons(); + void ConstructBaryons(); + + // these methods Construct physics processes and register them + void ConstructDecay(); + void ConstructEM(); +}; + + +#endif + + + diff --git a/examples/extended/gdml/include/g4rwPrimaryGeneratorAction.hh b/examples/extended/runAndEvent/RE03/include/RE03PrimaryGeneratorAction.hh similarity index 75% rename from examples/extended/gdml/include/g4rwPrimaryGeneratorAction.hh rename to examples/extended/runAndEvent/RE03/include/RE03PrimaryGeneratorAction.hh index ec0f845c43..3347930305 100644 --- a/examples/extended/gdml/include/g4rwPrimaryGeneratorAction.hh +++ b/examples/extended/runAndEvent/RE03/include/RE03PrimaryGeneratorAction.hh @@ -24,36 +24,34 @@ // ******************************************************************** // // -// $Id: g4rwPrimaryGeneratorAction.hh,v 1.2 2006/06/29 17:21:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: RE03PrimaryGeneratorAction.hh,v 1.1 2007/11/13 19:55:43 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// -// -------------------------------------------------------------- -// Comments -// -// -------------------------------------------------------------- -#ifndef gogdmlPrimaryGeneratorAction_h -#define gogdmlPrimaryGeneratorAction_h 1 +#ifndef RE03PrimaryGeneratorAction_h +#define RE03PrimaryGeneratorAction_h 1 #include "G4VUserPrimaryGeneratorAction.hh" +#include "globals.hh" class G4ParticleGun; class G4Event; -class gogdmlPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction +class RE03PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { public: - gogdmlPrimaryGeneratorAction(); - ~gogdmlPrimaryGeneratorAction(); + RE03PrimaryGeneratorAction(); + virtual ~RE03PrimaryGeneratorAction(); public: - void GeneratePrimaries(G4Event* anEvent); + virtual void GeneratePrimaries(G4Event*); private: - G4ParticleGun* particleGun; + G4ParticleGun* particleGun; + }; + #endif diff --git a/examples/extended/runAndEvent/RE03/include/RE03UserScoreWriter.hh b/examples/extended/runAndEvent/RE03/include/RE03UserScoreWriter.hh new file mode 100644 index 0000000000..bdb9af9603 --- /dev/null +++ b/examples/extended/runAndEvent/RE03/include/RE03UserScoreWriter.hh @@ -0,0 +1,54 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// + +#ifndef RE03UserScoreWriter_h +#define RE03UserScoreWriter_h 1 + +#include "globals.hh" +#include "G4VScoreWriter.hh" + +// class description: +// +// This class represents storing the scored quantity into a file. +// + + +class RE03UserScoreWriter : public G4VScoreWriter { + +public: + RE03UserScoreWriter(); + virtual ~RE03UserScoreWriter(); + +public: + // store a quantity into a file + void DumpQuantityToFile(G4String & psName, G4String & fileName, G4String & option); + +}; + +#endif + + diff --git a/examples/extended/runAndEvent/RE03/run1.mac b/examples/extended/runAndEvent/RE03/run1.mac new file mode 100644 index 0000000000..e3303170e6 --- /dev/null +++ b/examples/extended/runAndEvent/RE03/run1.mac @@ -0,0 +1,50 @@ +######################################## +# +# define scoring mesh +# +/score/create/boxMesh boxMesh_1 +# +/score/mesh/boxSize 100. 100. 100. cm +/score/mesh/nBin 30 30 30 +# +/score/quantity/energyDeposit eDep +/score/quantity/nOfStep nOfStepGamma +/score/filter/particle gammaFilter gamma +/score/quantity/nOfStep nOfStepEMinus +/score/filter/particle eMinusFilter e- +/score/quantity/nOfStep nOfStepEPlus +/score/filter/particle ePlusFilter e+ +# +/score/close +# +/score/list +# +######################################## +# +/run/beamOn 100 +# +######################################## +# +# drawing projections +# +/score/drawProjection boxMesh_1 eDep +/score/drawProjection boxMesh_1 nOfStepGamma +/score/drawProjection boxMesh_1 nOfStepEMinus +/score/drawProjection boxMesh_1 nOfStepEPlus +# +######################################## +# +# drawing slices +# +/vis/scene/create +/vis/sceneHandler/attach scene-2 +/score/colorMap/setMinMax ! 0. 800. +/control/loop drawSlice.mac iColumn 0 29 7 +# +######################################## +# +# Dump scores to a file +# +/score/dumpQuantityToFile boxMesh_1 nOfStepGamma nOfStepGamma.txt +# +# diff --git a/examples/extended/runAndEvent/RE03/run2.mac b/examples/extended/runAndEvent/RE03/run2.mac new file mode 100644 index 0000000000..3a3bc3a4fe --- /dev/null +++ b/examples/extended/runAndEvent/RE03/run2.mac @@ -0,0 +1,51 @@ +######################################## +# +/score/create/boxMesh boxMesh_2a +# +/score/mesh/boxSize 30. 30. 20. cm +/score/mesh/translate/xyz 0. 0. -80. cm +/score/mesh/nBin 20 20 20 +# +/score/quantity/nOfStep nOfStepGamma +/score/filter/particle gammaFilter gamma +# +/score/close +# +######################################## +# +/score/create/boxMesh boxMesh_2b +# +/score/mesh/boxSize 60. 60. 30. cm +/score/mesh/translate/xyz 0. 0. -30. cm +/score/mesh/nBin 50 50 25 +# +/score/quantity/nOfStep nOfStepGamma +/score/filter/particle gammaFilter gamma +# +/score/close +# +######################################## +# +/score/create/boxMesh boxMesh_2c +# +/score/mesh/boxSize 100. 100. 50. cm +/score/mesh/translate/xyz 0. 0. 50. cm +/score/mesh/nBin 50 50 25 +# +/score/quantity/nOfStep nOfStepGamma +/score/filter/particle gammaFilter gamma +# +/score/close +# +######################################## +# +/score/list +# +/run/beamOn 100 +# +######################################## +# +/score/drawProjection boxMesh_2c nOfStepGamma +/score/drawProjection boxMesh_2b nOfStepGamma +/score/drawProjection boxMesh_2a nOfStepGamma +# diff --git a/examples/extended/runAndEvent/RE03/run3.mac b/examples/extended/runAndEvent/RE03/run3.mac new file mode 100644 index 0000000000..11f7e28b29 --- /dev/null +++ b/examples/extended/runAndEvent/RE03/run3.mac @@ -0,0 +1,35 @@ +######################################## +# +/score/create/boxMesh boxMesh_3a +# +/score/mesh/boxSize 1. 1. 1. m +/score/mesh/nBin 10 10 10 +# +/score/quantity/nOfStep nOfStepGamma +/score/filter/particle gammaFilter gamma +# +/score/close +# +######################################## +# +/score/create/boxMesh boxMesh_3b +# +/score/mesh/boxSize 100. 100. 20. cm +/score/mesh/nBin 50 50 20 +# +/score/quantity/nOfStep nOfStepGamma +/score/filter/particle gammaFilter gamma +# +/score/close +# +######################################## +# +/score/list +# +/run/beamOn 100 +# +######################################## +# +/score/drawProjection boxMesh_3a nOfStepGamma +/score/drawProjection boxMesh_3b nOfStepGamma ! 11 +# diff --git a/examples/extended/runAndEvent/RE03/src/RE03DetectorConstruction.cc b/examples/extended/runAndEvent/RE03/src/RE03DetectorConstruction.cc new file mode 100644 index 0000000000..ed582887b9 --- /dev/null +++ b/examples/extended/runAndEvent/RE03/src/RE03DetectorConstruction.cc @@ -0,0 +1,136 @@ +// +// ******************************************************************** +// * 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: RE03DetectorConstruction.cc,v 1.1 2007/11/13 19:55:43 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// + +#include "RE03DetectorConstruction.hh" + +#include "G4Material.hh" +#include "G4Box.hh" +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" + +#include "G4VisAttributes.hh" +#include "G4Colour.hh" + +#include "G4SDManager.hh" +#include "G4MultiFunctionalDetector.hh" +#include "G4VPrimitiveScorer.hh" +#include "G4PSEnergyDeposit.hh" +#include "G4PSTrackLength.hh" +#include "G4PSNofStep.hh" +#include "G4SDParticleFilter.hh" + +#include "G4ios.hh" + +RE03DetectorConstruction::RE03DetectorConstruction() +:constructed(false) +{;} + +RE03DetectorConstruction::~RE03DetectorConstruction() +{;} + +G4VPhysicalVolume* RE03DetectorConstruction::Construct() +{ + if(!constructed) + { + constructed = true; + DefineMaterials(); + SetupGeometry(); + } + return worldPhys; +} + +void RE03DetectorConstruction::DefineMaterials() +{ + G4String name, symbol; //a=mass of a mole; + G4double a, z, density; //z=mean number of protons; + + G4int ncomponents, natoms; + G4double fractionmass; + + // + // define Elements + // + + a = 1.01*g/mole; + G4Element* H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a); + + a = 14.01*g/mole; + G4Element* N = new G4Element(name="Nitrogen",symbol="N" , z= 7., a); + + a = 16.00*g/mole; + G4Element* O = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a); + + // + // define a material from elements. case 1: chemical molecule + // + + density = 1.000*g/cm3; + water = new G4Material(name="Water", density, ncomponents=2); + water->AddElement(H, natoms=2); + water->AddElement(O, natoms=1); + + // + // define a material from elements. case 2: mixture by fractional mass + // + + density = 1.290*mg/cm3; + air = new G4Material(name="Air" , density, ncomponents=2); + air->AddElement(N, fractionmass=0.7); + air->AddElement(O, fractionmass=0.3); +} + +void RE03DetectorConstruction::SetupGeometry() +{ + // + // World + // + G4VSolid* worldSolid = new G4Box("World",2.*m,2.*m,2.*m); + G4LogicalVolume* worldLogical = new G4LogicalVolume(worldSolid,air,"World"); + worldPhys = new G4PVPlacement(0,G4ThreeVector(),worldLogical,"World", + 0,false,0); + + // + // Phantom + // + G4VSolid* phantomSolid = new G4Box("Calor",1.*m,1.*m,1.*m); + G4LogicalVolume* phantomLogical = new G4LogicalVolume(phantomSolid,water,"Phantom"); + phantomPhys = new G4PVPlacement(0,G4ThreeVector(),phantomLogical,"Phantom", + worldLogical,false,0); + // + // Visualization attributes + // +// worldLogical->SetVisAttributes(G4VisAttributes::Invisible); + G4VisAttributes* simpleBoxVisAtt= new G4VisAttributes(G4Colour(1.0,1.0,1.0)); + simpleBoxVisAtt->SetVisibility(true); + phantomLogical->SetVisAttributes(simpleBoxVisAtt); +} + + diff --git a/examples/extended/runAndEvent/RE03/src/RE03PhysicsList.cc b/examples/extended/runAndEvent/RE03/src/RE03PhysicsList.cc new file mode 100644 index 0000000000..92f4372acd --- /dev/null +++ b/examples/extended/runAndEvent/RE03/src/RE03PhysicsList.cc @@ -0,0 +1,216 @@ +// +// ******************************************************************** +// * 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: RE03PhysicsList.cc,v 1.1 2007/11/13 19:55:43 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// + +#include "RE03PhysicsList.hh" + +#include "G4ProcessManager.hh" +#include "G4ParticleTypes.hh" + +RE03PhysicsList::RE03PhysicsList(): G4VUserPhysicsList() +{ + defaultCutValue = 1.0*mm; + SetVerboseLevel(1); +} + +RE03PhysicsList::~RE03PhysicsList() +{;} + +void RE03PhysicsList::ConstructParticle() +{ + // In this method, static member functions should be called + // for all particles which you want to use. + // This ensures that objects of these particle types will be + // created in the program. + + ConstructBosons(); + ConstructLeptons(); + ConstructMesons(); + ConstructBaryons(); +} + +void RE03PhysicsList::ConstructBosons() +{ + // pseudo-particles + G4Geantino::GeantinoDefinition(); + G4ChargedGeantino::ChargedGeantinoDefinition(); + + // gamma + G4Gamma::GammaDefinition(); + + // optical photon + G4OpticalPhoton::OpticalPhotonDefinition(); +} + +void RE03PhysicsList::ConstructLeptons() +{ + // leptons + G4Electron::ElectronDefinition(); + G4Positron::PositronDefinition(); + G4MuonPlus::MuonPlusDefinition(); + G4MuonMinus::MuonMinusDefinition(); + + G4NeutrinoE::NeutrinoEDefinition(); + G4AntiNeutrinoE::AntiNeutrinoEDefinition(); + G4NeutrinoMu::NeutrinoMuDefinition(); + G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); +} + +void RE03PhysicsList::ConstructMesons() +{ + // mesons + G4PionPlus::PionPlusDefinition(); + G4PionMinus::PionMinusDefinition(); + G4PionZero::PionZeroDefinition(); + G4Eta::EtaDefinition(); + G4EtaPrime::EtaPrimeDefinition(); + G4KaonPlus::KaonPlusDefinition(); + G4KaonMinus::KaonMinusDefinition(); + G4KaonZero::KaonZeroDefinition(); + G4AntiKaonZero::AntiKaonZeroDefinition(); + G4KaonZeroLong::KaonZeroLongDefinition(); + G4KaonZeroShort::KaonZeroShortDefinition(); +} + +void RE03PhysicsList::ConstructBaryons() +{ + // barions + G4Proton::ProtonDefinition(); + G4AntiProton::AntiProtonDefinition(); + G4Neutron::NeutronDefinition(); + G4AntiNeutron::AntiNeutronDefinition(); +} + + +void RE03PhysicsList::ConstructProcess() +{ + AddTransportation(); + ConstructEM(); + ConstructDecay(); +} + +#include "G4ComptonScattering.hh" +#include "G4GammaConversion.hh" +#include "G4PhotoElectricEffect.hh" + +#include "G4MultipleScattering.hh" + +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +#include "G4MuIonisation.hh" +#include "G4MuBremsstrahlung.hh" +#include "G4MuPairProduction.hh" + +#include "G4hIonisation.hh" + +void RE03PhysicsList::ConstructEM() +{ + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + 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, 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, 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, 3,3); + pmanager->AddProcess(new G4MuPairProduction, -1, 4,4); + + } 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); + } + } +} + +#include "G4Decay.hh" + +void RE03PhysicsList::ConstructDecay() +{ + // Add Decay Process + G4Decay* theDecayProcess = new G4Decay(); + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + if (theDecayProcess->IsApplicable(*particle)) { + pmanager ->AddProcess(theDecayProcess); + // set ordering for PostStepDoIt and AtRestDoIt + pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); + pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); + } + } +} + +void RE03PhysicsList::SetCuts() +{ + if (verboseLevel >0){ + G4cout << "RE03PhysicsList::SetCuts:"; + G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; + } + + // 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(defaultCutValue, "gamma"); + SetCutValue(defaultCutValue, "e-"); + SetCutValue(defaultCutValue, "e+"); + + if (verboseLevel>0) DumpCutValuesTable(); +} + + diff --git a/examples/extended/runAndEvent/RE03/src/RE03PrimaryGeneratorAction.cc b/examples/extended/runAndEvent/RE03/src/RE03PrimaryGeneratorAction.cc new file mode 100644 index 0000000000..0415825dda --- /dev/null +++ b/examples/extended/runAndEvent/RE03/src/RE03PrimaryGeneratorAction.cc @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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: RE03PrimaryGeneratorAction.cc,v 1.1 2007/11/13 19:55:43 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "RE03PrimaryGeneratorAction.hh" + +#include "G4Event.hh" +#include "G4ParticleGun.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" + +RE03PrimaryGeneratorAction::RE03PrimaryGeneratorAction() +{ + G4int n_particle = 1; + particleGun = new G4ParticleGun(n_particle); + + // default particle kinematic + G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); + G4String particleName; + G4ParticleDefinition* particle + = particleTable->FindParticle(particleName="e-"); + particleGun->SetParticleDefinition(particle); + particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.)); + particleGun->SetParticlePosition(G4ThreeVector(0.,0.,-1.01*m)); + particleGun->SetParticleEnergy(1.*GeV); +} + +RE03PrimaryGeneratorAction::~RE03PrimaryGeneratorAction() +{ + delete particleGun; +} + +void RE03PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) +{ + particleGun->GeneratePrimaryVertex(anEvent); +} + diff --git a/examples/extended/runAndEvent/RE03/src/RE03UserScoreWriter.cc b/examples/extended/runAndEvent/RE03/src/RE03UserScoreWriter.cc new file mode 100644 index 0000000000..3616bd50a6 --- /dev/null +++ b/examples/extended/runAndEvent/RE03/src/RE03UserScoreWriter.cc @@ -0,0 +1,128 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// + +#include "RE03UserScoreWriter.hh" + +#include "G4MultiFunctionalDetector.hh" +#include "G4SDParticleFilter.hh" +#include "G4VPrimitiveScorer.hh" +#include "G4VScoringMesh.hh" + +#include +#include + +RE03UserScoreWriter::RE03UserScoreWriter() + : G4VScoreWriter() { + ; +} + +RE03UserScoreWriter::~RE03UserScoreWriter() { + ; +} + +void RE03UserScoreWriter::DumpQuantityToFile(G4String & psName, G4String & fileName, G4String & option) { + + // + if(verboseLevel > 0) { + G4cout << "User-defined DumpQuantityToFile() method is invoked." + << G4endl; + G4cout << " -- to obtain a projection of the quantity <" + << psName + << "> onto the x-y plane --" << G4endl; + } + + // change the option string into lowercase to the case-insensitive. + G4String opt = option; + std::transform(opt.begin(), opt.end(), opt.begin(), (int (*)(int))(tolower)); + + // confirm the option + if(opt.size() == 0) opt = "csv"; + + // open the file + std::ofstream ofile(fileName); + if(!ofile) { + G4cerr << "ERROR : DumpToFile : File open error -> " + << fileName << G4endl; + return; + } + ofile << "# mesh name: " << fScoringMesh->GetWorldName() << G4endl; + + + // retrieve the map + MeshScoreMap fSMap = fScoringMesh->GetScoreMap(); + + + MeshScoreMap::const_iterator msMapItr = fSMap.find(psName); + if(msMapItr == fSMap.end()) { + G4cerr << "ERROR : DumpToFile : Unknown quantity, \"" + << psName << "\"." << G4endl; + return; + } + std::map * score = msMapItr->second->GetMap(); + ofile << "# primitive scorer name: " << msMapItr->first << G4endl; + + // write header info + ofile << "# xy projection" << G4endl; + ofile << fNMeshSegments[0] << " " << fNMeshSegments[1] << " " << G4endl; + + // declare xy array + std::vector projy; + for(int y = 0; y < fNMeshSegments[1]; y++) projy.push_back(0.); + std::vector > projxy; + for(int x = 0; x < fNMeshSegments[0]; x++) projxy.push_back(projy); + // accumulate + ofile << std::setprecision(16); // for double value with 8 bytes + for(int x = 0; x < fNMeshSegments[0]; x++) { + for(int y = 0; y < fNMeshSegments[1]; y++) { + for(int z = 0; z < fNMeshSegments[2]; z++) { + + G4int idx = GetIndex(x, y, z); + + std::map::iterator value = score->find(idx); + if(value != score->end()) projxy[x][y] += *(value->second); + + } // z + } // y + } // x + + // write quantity + ofile << std::setprecision(16); // for double value with 8 bytes + for(int x = 0; x < fNMeshSegments[0]; x++) { + for(int y = 0; y < fNMeshSegments[1]; y++) { + + ofile << x << "," << y << ","; + ofile << projxy[x][y] << G4endl; + + } // y + } // x + ofile << std::setprecision(6); + + // close the file + ofile.close(); + +} + diff --git a/examples/extended/runAndEvent/RE03/vis.mac b/examples/extended/runAndEvent/RE03/vis.mac new file mode 100644 index 0000000000..52b87ad28a --- /dev/null +++ b/examples/extended/runAndEvent/RE03/vis.mac @@ -0,0 +1,27 @@ +# +# create empty scene +# +/vis/scene/create +# +# Create a scene handler for a specific graphics system +# (Edit the next line(s) to choose another graphic system) +# +/vis/open OGLIX +# +# draw scene +# +/vis/drawVolume worlds +/vis/viewer/set/viewpointThetaPhi 105 165 deg +# Set specific colur for identification +###/vis/geometry/set/colour Calor-AP_LayerLog ! yellow +###/vis/geometry/set/colour Calor-BP_LayerLog ! yellow +###/vis/geometry/set/colour Calor-CP_LayerLog ! yellow +/vis/viewer/zoom 2.0 +##############/vis/viewer/flush +# +# for drawing the tracks +# (if too many tracks cause core dump => storeTrajectory 0) +/tracking/storeTrajectory 1 +/vis/scene/endOfEventAction accumulate +/vis/scene/add/trajectories + diff --git a/examples/extended/runAndEvent/README b/examples/extended/runAndEvent/README index 8e2c19fd35..4817ddb72c 100644 --- a/examples/extended/runAndEvent/README +++ b/examples/extended/runAndEvent/README @@ -23,3 +23,17 @@ RE02 such as energy deposition and dose for a run. It also demonstrates the use of primitive scorers. +RE03 +---- + + This example demonstrates how to use UI-command base scoring. +It create parallel world(s) for defining scoring mesh(es). + +**************************************************************** +* IMPORTANT NOTICE for version 9.1 release * +* This UI-command base scoring is still in alpha release and * +* functionality offered is preliminary. We do not guarantee * +* the correctness of the code. Also, we may change any of the * +* commands / methods in the near future release. * +**************************************************************** + diff --git a/examples/extended/visualization/perspective/include/PerspectiveVisAction.hh b/examples/extended/visualization/perspective/include/PerspectiveVisAction.hh index b081d04163..0ac664a174 100644 --- a/examples/extended/visualization/perspective/include/PerspectiveVisAction.hh +++ b/examples/extended/visualization/perspective/include/PerspectiveVisAction.hh @@ -25,7 +25,7 @@ // // // $Id: PerspectiveVisAction.hh,v 1.2 2006/06/29 17:45:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef PERSPECTIVEVISACTION_HH #define PERSPECTIVEVISACTION_HH diff --git a/examples/extended/visualization/perspective/include/PerspectiveVisActionMessenger.hh b/examples/extended/visualization/perspective/include/PerspectiveVisActionMessenger.hh index d58971efa9..aee438e903 100644 --- a/examples/extended/visualization/perspective/include/PerspectiveVisActionMessenger.hh +++ b/examples/extended/visualization/perspective/include/PerspectiveVisActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: PerspectiveVisActionMessenger.hh,v 1.2 2006/06/29 17:45:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef PERSPECTIVEVISACTIONMESSENGER_HH #define PERSPECTIVEVISACTIONMESSENGER_HH diff --git a/examples/extended/visualization/perspective/perspective.cc b/examples/extended/visualization/perspective/perspective.cc index 3611d4014d..d434e7c1da 100644 --- a/examples/extended/visualization/perspective/perspective.cc +++ b/examples/extended/visualization/perspective/perspective.cc @@ -25,7 +25,7 @@ // // // $Id: perspective.cc,v 1.2 2006/06/29 17:45:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "globals.hh" #include "G4VisExecutive.hh" diff --git a/examples/extended/visualization/perspective/src/PerspectiveVisAction.cc b/examples/extended/visualization/perspective/src/PerspectiveVisAction.cc index 20f5da139f..2ae341e4d8 100644 --- a/examples/extended/visualization/perspective/src/PerspectiveVisAction.cc +++ b/examples/extended/visualization/perspective/src/PerspectiveVisAction.cc @@ -25,7 +25,7 @@ // // // $Id: PerspectiveVisAction.cc,v 1.2 2006/06/29 17:45:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "PerspectiveVisAction.hh" diff --git a/examples/extended/visualization/perspective/src/PerspectiveVisActionMessenger.cc b/examples/extended/visualization/perspective/src/PerspectiveVisActionMessenger.cc index e1194a750b..45687edc43 100644 --- a/examples/extended/visualization/perspective/src/PerspectiveVisActionMessenger.cc +++ b/examples/extended/visualization/perspective/src/PerspectiveVisActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: PerspectiveVisActionMessenger.cc,v 1.3 2006/11/06 20:07:36 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "PerspectiveVisActionMessenger.hh" diff --git a/examples/extended/visualization/standalone/include/StandaloneVisAction.hh b/examples/extended/visualization/standalone/include/StandaloneVisAction.hh index 27900b5c80..b91901f56d 100644 --- a/examples/extended/visualization/standalone/include/StandaloneVisAction.hh +++ b/examples/extended/visualization/standalone/include/StandaloneVisAction.hh @@ -25,7 +25,7 @@ // // // $Id: StandaloneVisAction.hh,v 1.2 2006/06/29 17:45:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef STANDALONEVISACTION_HH #define STANDALONEVISACTION_HH diff --git a/examples/extended/visualization/standalone/src/StandaloneVisAction.cc b/examples/extended/visualization/standalone/src/StandaloneVisAction.cc index 55de463e2f..d6d5d2cb80 100644 --- a/examples/extended/visualization/standalone/src/StandaloneVisAction.cc +++ b/examples/extended/visualization/standalone/src/StandaloneVisAction.cc @@ -25,7 +25,7 @@ // // // $Id: StandaloneVisAction.cc,v 1.2 2006/06/29 17:45:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "StandaloneVisAction.hh" diff --git a/examples/extended/visualization/standalone/standalone.cc b/examples/extended/visualization/standalone/standalone.cc index 1796a62eef..95b31b6081 100644 --- a/examples/extended/visualization/standalone/standalone.cc +++ b/examples/extended/visualization/standalone/standalone.cc @@ -25,7 +25,7 @@ // // // $Id: standalone.cc,v 1.2 2006/06/29 17:45:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "globals.hh" #include "G4VisExecutive.hh" diff --git a/examples/extended/visualization/userVisAction/include/UVA_ChamberParameterisation.hh b/examples/extended/visualization/userVisAction/include/UVA_ChamberParameterisation.hh index 28373a74c3..991bad3ec2 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_ChamberParameterisation.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_ChamberParameterisation.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_ChamberParameterisation.hh,v 1.2 2006/06/29 17:46:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A parameterisation that describes a series of boxes along Z diff --git a/examples/extended/visualization/userVisAction/include/UVA_DetectorConstruction.hh b/examples/extended/visualization/userVisAction/include/UVA_DetectorConstruction.hh index ebd11e2b00..9b5ac7772d 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_DetectorConstruction.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_DetectorConstruction.hh,v 1.2 2006/06/29 17:46:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/include/UVA_DetectorMessenger.hh b/examples/extended/visualization/userVisAction/include/UVA_DetectorMessenger.hh index ec9e332be2..a2140c27e4 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_DetectorMessenger.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_DetectorMessenger.hh,v 1.2 2006/06/29 17:46:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/include/UVA_EventAction.hh b/examples/extended/visualization/userVisAction/include/UVA_EventAction.hh index 0f2aaa17ce..fdc50d82cd 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_EventAction.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_EventAction.hh,v 1.2 2006/06/29 17:46:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/include/UVA_MagneticField.hh b/examples/extended/visualization/userVisAction/include/UVA_MagneticField.hh index ff744b887e..7dd6646af9 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_MagneticField.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_MagneticField.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_MagneticField.hh,v 1.2 2006/06/29 17:46:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A class for control of the Magnetic Field of the detector. diff --git a/examples/extended/visualization/userVisAction/include/UVA_PhysicsList.hh b/examples/extended/visualization/userVisAction/include/UVA_PhysicsList.hh index 162a2d8db3..075305a52c 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_PhysicsList.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_PhysicsList.hh,v 1.2 2006/06/29 17:46:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/include/UVA_PrimaryGeneratorAction.hh b/examples/extended/visualization/userVisAction/include/UVA_PrimaryGeneratorAction.hh index 2242c69b01..3dc22a43a5 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_PrimaryGeneratorAction.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_PrimaryGeneratorAction.hh,v 1.2 2006/06/29 17:46:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/include/UVA_RunAction.hh b/examples/extended/visualization/userVisAction/include/UVA_RunAction.hh index 596b95b7f4..fd1c5d606d 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_RunAction.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_RunAction.hh,v 1.2 2006/06/29 17:46:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/include/UVA_SteppingAction.hh b/examples/extended/visualization/userVisAction/include/UVA_SteppingAction.hh index b100b2eea9..b015b9c36d 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_SteppingAction.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_SteppingAction.hh,v 1.2 2006/06/29 17:46:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/include/UVA_SteppingVerbose.hh b/examples/extended/visualization/userVisAction/include/UVA_SteppingVerbose.hh index b711f60221..d20ce5a36f 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_SteppingVerbose.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_SteppingVerbose.hh,v 1.2 2006/06/29 17:46:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/extended/visualization/userVisAction/include/UVA_TrackerHit.hh b/examples/extended/visualization/userVisAction/include/UVA_TrackerHit.hh index d4d79514a9..39569fa01e 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_TrackerHit.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_TrackerHit.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_TrackerHit.hh,v 1.2 2006/06/29 17:46:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/include/UVA_TrackerSD.hh b/examples/extended/visualization/userVisAction/include/UVA_TrackerSD.hh index 0f5fac0d54..40130ea8a1 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_TrackerSD.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_TrackerSD.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_TrackerSD.hh,v 1.2 2006/06/29 17:46:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/include/UVA_VisAction.hh b/examples/extended/visualization/userVisAction/include/UVA_VisAction.hh index 0dd50908a8..96c52fad6e 100644 --- a/examples/extended/visualization/userVisAction/include/UVA_VisAction.hh +++ b/examples/extended/visualization/userVisAction/include/UVA_VisAction.hh @@ -25,7 +25,7 @@ // // // $Id: UVA_VisAction.hh,v 1.2 2006/06/29 17:46:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef UVA_VISACTION_HH #define UVA_VISACTION_HH diff --git a/examples/extended/visualization/userVisAction/src/UVA_ChamberParameterisation.cc b/examples/extended/visualization/userVisAction/src/UVA_ChamberParameterisation.cc index 58132a7beb..3ba2d267ff 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_ChamberParameterisation.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_ChamberParameterisation.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_ChamberParameterisation.cc,v 1.2 2006/06/29 17:46:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/src/UVA_DetectorConstruction.cc b/examples/extended/visualization/userVisAction/src/UVA_DetectorConstruction.cc index 394712c82c..cbd4818f29 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_DetectorConstruction.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_DetectorConstruction.cc,v 1.2 2006/06/29 17:46:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/src/UVA_DetectorMessenger.cc b/examples/extended/visualization/userVisAction/src/UVA_DetectorMessenger.cc index aba0a485d2..edb61a41e3 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_DetectorMessenger.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_DetectorMessenger.cc,v 1.2 2006/06/29 17:46:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/src/UVA_EventAction.cc b/examples/extended/visualization/userVisAction/src/UVA_EventAction.cc index 5ad8ce8325..0fba8432ee 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_EventAction.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_EventAction.cc,v 1.2 2006/06/29 17:46:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/src/UVA_MagneticField.cc b/examples/extended/visualization/userVisAction/src/UVA_MagneticField.cc index 1a7a2c9bd2..c61548c21b 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_MagneticField.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_MagneticField.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_MagneticField.cc,v 1.2 2006/06/29 17:46:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // User Field class implementation. // diff --git a/examples/extended/visualization/userVisAction/src/UVA_PhysicsList.cc b/examples/extended/visualization/userVisAction/src/UVA_PhysicsList.cc index 3c467a21d8..6e87a0a255 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_PhysicsList.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_PhysicsList.cc,v 1.2 2006/06/29 17:46:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/src/UVA_PrimaryGeneratorAction.cc b/examples/extended/visualization/userVisAction/src/UVA_PrimaryGeneratorAction.cc index 031ce40620..d8bb8a8b20 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_PrimaryGeneratorAction.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_PrimaryGeneratorAction.cc,v 1.3 2006/11/06 20:11:51 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/src/UVA_RunAction.cc b/examples/extended/visualization/userVisAction/src/UVA_RunAction.cc index 2ae03cd9b9..984450d64c 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_RunAction.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_RunAction.cc,v 1.2 2006/06/29 17:46:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/src/UVA_SteppingAction.cc b/examples/extended/visualization/userVisAction/src/UVA_SteppingAction.cc index c75d3f38e0..c3def36e3e 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_SteppingAction.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_SteppingAction.cc,v 1.2 2006/06/29 17:46:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/src/UVA_SteppingVerbose.cc b/examples/extended/visualization/userVisAction/src/UVA_SteppingVerbose.cc index ac7d85b52a..1645186b26 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_SteppingVerbose.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_SteppingVerbose.cc,v 1.2 2006/06/29 17:47:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/src/UVA_TrackerHit.cc b/examples/extended/visualization/userVisAction/src/UVA_TrackerHit.cc index 3c303eeb62..13f5fc5a7e 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_TrackerHit.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_TrackerHit.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_TrackerHit.cc,v 1.2 2006/06/29 17:47:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/src/UVA_TrackerSD.cc b/examples/extended/visualization/userVisAction/src/UVA_TrackerSD.cc index 451390da68..e225ca3ae1 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_TrackerSD.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_TrackerSD.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_TrackerSD.cc,v 1.2 2006/06/29 17:47:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/visualization/userVisAction/src/UVA_VisAction.cc b/examples/extended/visualization/userVisAction/src/UVA_VisAction.cc index 6ca66b5fca..1d2bc28581 100644 --- a/examples/extended/visualization/userVisAction/src/UVA_VisAction.cc +++ b/examples/extended/visualization/userVisAction/src/UVA_VisAction.cc @@ -25,7 +25,7 @@ // // // $Id: UVA_VisAction.cc,v 1.3 2006/06/29 17:47:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "UVA_VisAction.hh" diff --git a/examples/extended/visualization/userVisAction/userVisAction.cc b/examples/extended/visualization/userVisAction/userVisAction.cc index 62850a48c6..32f16fe069 100644 --- a/examples/extended/visualization/userVisAction/userVisAction.cc +++ b/examples/extended/visualization/userVisAction/userVisAction.cc @@ -25,7 +25,7 @@ // // // $Id: userVisAction.cc,v 1.2 2006/06/29 17:46:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N01/exampleN01.cc b/examples/novice/N01/exampleN01.cc index f76a974267..52477518c0 100644 --- a/examples/novice/N01/exampleN01.cc +++ b/examples/novice/N01/exampleN01.cc @@ -25,7 +25,7 @@ // // // $Id: exampleN01.cc,v 1.6 2006/06/29 17:47:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N01/exampleN01.out b/examples/novice/N01/exampleN01.out index 8822475301..8a3c9c0eba 100644 --- a/examples/novice/N01/exampleN01.out +++ b/examples/novice/N01/exampleN01.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -222,5 +222,5 @@ Terminate current event processing. Run terminated. Run Summary Number of events processed : 3 - User=0.03s Real=0.08s Sys=0.04s + User=0.02s Real=0.07000000000000001s Sys=0.05s G4 kernel has come to Quit state. diff --git a/examples/novice/N01/include/ExN01DetectorConstruction.hh b/examples/novice/N01/include/ExN01DetectorConstruction.hh index 60ba99e94c..d40ee6cad6 100644 --- a/examples/novice/N01/include/ExN01DetectorConstruction.hh +++ b/examples/novice/N01/include/ExN01DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN01DetectorConstruction.hh,v 1.6 2006/06/29 17:47:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN01DetectorConstruction_H diff --git a/examples/novice/N01/include/ExN01PhysicsList.hh b/examples/novice/N01/include/ExN01PhysicsList.hh index 331f074f6d..22a8e795c2 100644 --- a/examples/novice/N01/include/ExN01PhysicsList.hh +++ b/examples/novice/N01/include/ExN01PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: ExN01PhysicsList.hh,v 1.6 2006/06/29 17:47:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/examples/novice/N01/include/ExN01PrimaryGeneratorAction.hh b/examples/novice/N01/include/ExN01PrimaryGeneratorAction.hh index ba33d62577..c5d0b64e6c 100644 --- a/examples/novice/N01/include/ExN01PrimaryGeneratorAction.hh +++ b/examples/novice/N01/include/ExN01PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN01PrimaryGeneratorAction.hh,v 1.5 2006/06/29 17:47:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN01PrimaryGeneratorAction_h diff --git a/examples/novice/N01/src/ExN01DetectorConstruction.cc b/examples/novice/N01/src/ExN01DetectorConstruction.cc index fcda1419c1..932180edf5 100644 --- a/examples/novice/N01/src/ExN01DetectorConstruction.cc +++ b/examples/novice/N01/src/ExN01DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN01DetectorConstruction.cc,v 1.9 2006/06/29 17:47:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN01DetectorConstruction.hh" diff --git a/examples/novice/N01/src/ExN01PhysicsList.cc b/examples/novice/N01/src/ExN01PhysicsList.cc index 6b2938caf5..123d294d14 100644 --- a/examples/novice/N01/src/ExN01PhysicsList.cc +++ b/examples/novice/N01/src/ExN01PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: ExN01PhysicsList.cc,v 1.6 2006/06/29 17:47:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N01/src/ExN01PrimaryGeneratorAction.cc b/examples/novice/N01/src/ExN01PrimaryGeneratorAction.cc index d4b0fcb417..9b279e7919 100644 --- a/examples/novice/N01/src/ExN01PrimaryGeneratorAction.cc +++ b/examples/novice/N01/src/ExN01PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN01PrimaryGeneratorAction.cc,v 1.6 2006/06/29 17:47:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN01PrimaryGeneratorAction.hh" diff --git a/examples/novice/N02/History b/examples/novice/N02/History index 4403e69454..314a12067a 100644 --- a/examples/novice/N02/History +++ b/examples/novice/N02/History @@ -1,4 +1,4 @@ -$Id: History,v 1.50 2007/05/11 14:36:24 gcosmo Exp $ +$Id: History,v 1.55 2007/10/17 08:53:51 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,16 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +17-10-07 G.Cosmo (exampleN02-V09-00-02) +- Explicitely delete allocated parameterisation and step-limit objects + in ExN02DetectorConstruction class. + +22-08-07 G.Cosmo (exampleN02-V09-00-01) +- Fixed implementation of ExN02MagneticField class in way field is set... + +25-06-07 M.Maire (exampleN02-V08-03-01, exampleN02-V09-00-00) +- Cosmetics in main(). 11-05-07 G.Cosmo (exampleN02-V08-03-00) - Show usage of G4GeometryTolerance tuned for the geometry topology. diff --git a/examples/novice/N02/exampleN02.cc b/examples/novice/N02/exampleN02.cc index dd0630a93b..003bed9922 100644 --- a/examples/novice/N02/exampleN02.cc +++ b/examples/novice/N02/exampleN02.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: exampleN02.cc,v 1.12 2006/06/29 17:47:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: exampleN02.cc,v 1.14 2007/07/02 13:09:30 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -68,13 +68,6 @@ int main(int argc,char** argv) // G4VUserPhysicsList* physics = new ExN02PhysicsList; runManager->SetUserInitialization(physics); - -#ifdef G4VIS_USE - // Visualization, if you choose to have it! - // - G4VisManager* visManager = new G4VisExecutive; - visManager->Initialize(); -#endif // User Action classes // @@ -98,35 +91,39 @@ int main(int argc,char** argv) // G4UImanager * UI = G4UImanager::GetUIpointer(); - if(argc==1) // Define (G)UI terminal for interactive mode - { - // G4UIterminal is a (dumb) terminal - // - G4UIsession * session = 0; + if (argc!=1) // batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + else // interactive mode : define visualization and UI terminal + { +#ifdef G4VIS_USE + G4VisManager* visManager = new G4VisExecutive; + visManager->Initialize(); +#endif + + G4UIsession * session = 0; #ifdef G4UI_USE_TCSH session = new G4UIterminal(new G4UItcsh); #else session = new G4UIterminal(); #endif - UI->ApplyCommand("/control/execute vis.mac"); - session->SessionStart(); - delete session; - } - else // Batch mode - { - G4String command = "/control/execute "; - G4String fileName = argv[1]; - UI->ApplyCommand(command+fileName); - } + UI->ApplyCommand("/control/execute vis.mac"); + session->SessionStart(); + delete session; + +#ifdef G4VIS_USE + delete visManager; +#endif + } // Free the store: user actions, physics_list and detector_description are // owned and deleted by the run manager, so they should not // be deleted in the main() program ! -#ifdef G4VIS_USE - delete visManager; -#endif - delete runManager; delete verbosity; diff --git a/examples/novice/N02/exampleN02.out b/examples/novice/N02/exampleN02.out index 38dc4493bd..f3b91728d1 100644 --- a/examples/novice/N02/exampleN02.out +++ b/examples/novice/N02/exampleN02.out @@ -1,55 +1,25 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 ************************************************************* -Visualization Manager instantiating... -Visualization Manager initialising... -Registering graphics systems... - -You have successfully registered the following graphics systems. -Current available graphics systems are: - ASCIITree (ATree) - DAWNFILE (DAWNFILE) - G4HepRep (HepRepXML) - G4HepRepFile (HepRepFile) - RayTracer (RayTracer) - VRML1FILE (VRML1FILE) - VRML2FILE (VRML2FILE) - -Registering model factories... - -You have successfully registered the following model factories. -Registered model factories: - generic - drawByCharge - drawByParticleID - drawByOriginVolume - drawByAttribute - -Registered filter factories: - chargeFilter - particleFilter - originVolumeFilter - attributeFilter - The materials defined are : ***** Table : Nb of materials = 3 ***** - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm + Material: Lead density: 11.350 g/cm3 RadL: 5.612 mm Imean: 820.000 eV ---> Element: Lead ( ) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: XenonGas density: 5.458 mg/cm3 temperature: 293.15 K pressure: 1.00 atm RadLength: 15.539 m + Material: XenonGas density: 5.458 mg/cm3 RadL: 15.539 m Imean: 480.600 eV temperature: 293.15 K pressure: 1.00 atm ---> Element: XenonGas ( ) Z = 54.0 N = 131.3 A = 131.29 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % @@ -81,7 +51,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -94,7 +64,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -117,7 +87,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -125,7 +95,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -137,7 +107,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -154,7 +124,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -172,7 +142,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -185,7 +155,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -220,1809 +190,2034 @@ Index : 2 used in the geometry : Yes recalculation needed : No Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 0 fm 0 fm -2.91 m 200 MeV 0 eV 0 fm 0 fm World initStep - 1 -126 um -4.99 um -2.81 m 200 MeV 20.4 keV 10 cm 10 cm World eIoni - 2 -721 um -52.6 um -2.45 m 200 MeV 95.5 keV 36 cm 46 cm World Transportation - 3 -734 um -55.5 um -2.45 m 147 MeV 3.62 MeV 681 um 46.1 cm Target eBrem - 4 -732 um -53.2 um -2.45 m 127 MeV 340 keV 204 um 46.1 cm Target eBrem - 5 -753 um 7.26 um -2.45 m 120 MeV 2.1 MeV 1.27 mm 46.2 cm Target eBrem - 6 -740 um 3.26 um -2.45 m 29.6 MeV 571 keV 376 um 46.3 cm Target eBrem - 7 -765 um -62.9 um -2.45 m 27.2 MeV 716 keV 565 um 46.3 cm Target eBrem - 8 -511 um -430 um -2.45 m 25.1 MeV 1.53 MeV 1.3 mm 46.4 cm Target eBrem - 9 -1.07 mm -1.48 mm -2.44 m 19 MeV 4.59 MeV 3.26 mm 46.8 cm Target eBrem - 10 -1.19 mm -1.64 mm -2.44 m 14.4 MeV 411 keV 431 um 46.8 cm Target eBrem - 11 -1.19 mm -1.7 mm -2.44 m 6.87 MeV 507 keV 160 um 46.8 cm Target eBrem - 12 48.1 um -1.54 mm -2.44 m 3.95 MeV 2.92 MeV 2.52 mm 47.1 cm Target eIoni - 13 -543 um -969 um -2.44 m 1.72 MeV 2.23 MeV 1.98 mm 47.3 cm Target eIoni - 14 -868 um -1.13 mm -2.44 m 103 keV 1.61 MeV 1.28 mm 47.4 cm Target eIoni - 15 -868 um -1.13 mm -2.44 m 0 eV 103 keV 26.8 um 47.4 cm Target eIoni - 16 -868 um -1.13 mm -2.44 m 0 eV 0 eV 0 fm 47.4 cm Target annihil + 1 -126 um 4.89 um -2.81 m 200 MeV 20.4 keV 10 cm 10 cm World eIoni + 2 -411 um 335 um -2.45 m 200 MeV 82.2 keV 36 cm 46 cm World Transportation + 3 -405 um 323 um -2.45 m 189 MeV 1.98 MeV 681 um 46.1 cm Target eBrem + 4 -426 um 333 um -2.45 m 154 MeV 1.02 MeV 817 um 46.1 cm Target eBrem + 5 -486 um 326 um -2.45 m 147 MeV 1.33 MeV 697 um 46.2 cm Target eBrem + 6 -502 um 337 um -2.45 m 47.3 MeV 180 keV 199 um 46.2 cm Target eBrem + 7 -503 um 339 um -2.45 m 46.7 MeV 23.2 keV 18.1 um 46.2 cm Target eBrem + 8 -510 um 347 um -2.45 m 35.3 MeV 110 keV 91.3 um 46.3 cm Target eBrem + 9 -451 um 1.07 mm -2.45 m 27.2 MeV 3.41 MeV 2.39 mm 46.5 cm Target eBrem + 10 -813 um 823 um -2.44 m 23.2 MeV 4.03 MeV 1.59 mm 46.6 cm Target eBrem + 11 -852 um 758 um -2.44 m 16 MeV 211 keV 231 um 46.7 cm Target eBrem + 12 -2.13 mm 650 um -2.44 m 12.9 MeV 2.33 MeV 1.97 mm 46.9 cm Target eBrem + 13 -2.19 mm 614 um -2.44 m 7.93 MeV 1.69 MeV 1.17 mm 47 cm Target eBrem + 14 -1.82 mm 479 um -2.44 m 6.24 MeV 1.02 MeV 455 um 47 cm Target eBrem + 15 -1.58 mm 557 um -2.44 m 5.04 MeV 469 keV 447 um 47.1 cm Target eBrem + 16 -962 um 321 um -2.44 m 716 keV 875 keV 824 um 47.2 cm Target eBrem + 17 -937 um 276 um -2.44 m 0 eV 716 keV 486 um 47.2 cm Target eIoni + 18 -937 um 276 um -2.44 m 0 eV 0 eV 0 fm 47.2 cm Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 17, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -937 um 276 um -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.12 mm -1.03 mm -2.44 m 241 keV 0 eV 2.08 mm 2.08 mm Target compt + 2 -1.13 mm -1.07 mm -2.44 m 0 eV 88 keV 62.4 um 2.15 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 19, Parent ID = 17 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.13 mm -1.07 mm -2.44 m 153 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.13 mm -1.07 mm -2.44 m 0 eV 153 keV 54.4 um 54.4 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 18, Parent ID = 17 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.12 mm -1.03 mm -2.44 m 270 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.12 mm -1.03 mm -2.44 m 0 eV 270 keV 128 um 128 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 16, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -937 um 276 um -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -629 um 2.51 mm -2.44 m 451 keV 0 eV 3.56 mm 3.56 mm Target compt + 2 -223 um 2.79 mm -2.45 m 0 eV 88 keV 1.59 mm 5.15 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 21, Parent ID = 16 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -223 um 2.79 mm -2.45 m 363 keV 0 eV 0 fm 0 fm Target initStep + 1 -220 um 2.79 mm -2.45 m 0 eV 363 keV 196 um 196 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 20, Parent ID = 16 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -629 um 2.51 mm -2.44 m 59.7 keV 0 eV 0 fm 0 fm Target initStep + 1 -630 um 2.51 mm -2.44 m 0 eV 59.7 keV 12 um 12 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 15, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -962 um 321 um -2.44 m 3.45 MeV 0 eV 0 fm 0 fm Target initStep + 1 -995 um -1.65 cm -2.44 m 2.34 MeV 0 eV 1.68 cm 1.68 cm Target compt + 2 -2.62 mm -2.5 cm -2.44 m 2.34 MeV 0 eV 9.1 mm 2.59 cm Target Transportation + 3 -2.51 cm -14.2 cm -2.4 m 2.34 MeV 0 eV 12.6 cm 15.2 cm World Transportation + 4 -45.7 cm -2.4 m -1.64 m 2.34 MeV 0 eV 2.42 m 2.57 m Tracker Transportation + 5 -55.5 cm -2.91 m -1.47 m 2.34 MeV 0 eV 54.7 cm 3.12 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 22, Parent ID = 15 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -995 um -1.65 cm -2.44 m 1.11 MeV 0 eV 0 fm 0 fm Target initStep + 1 -980 um -1.66 cm -2.44 m 375 keV 255 keV 220 um 220 um Target eBrem + 2 -987 um -1.66 cm -2.44 m 0 eV 375 keV 205 um 425 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 23, Parent ID = 22 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -980 um -1.66 cm -2.44 m 483 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.86 mm -1.64 cm -2.44 m 220 keV 0 eV 1.38 mm 1.38 mm Target compt + 2 -1.46 mm -1.54 cm -2.44 m 0 eV 88 keV 1.17 mm 2.54 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 25, Parent ID = 23 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.46 mm -1.54 cm -2.44 m 132 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.46 mm -1.54 cm -2.44 m 0 eV 132 keV 43.2 um 43.2 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 24, Parent ID = 23 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.86 mm -1.64 cm -2.44 m 263 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.86 mm -1.64 cm -2.44 m 0 eV 263 keV 123 um 123 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 14, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.58 mm 557 um -2.44 m 731 keV 0 eV 0 fm 0 fm Target initStep + 1 4.24 mm 299 um -2.45 m 731 keV 0 eV 8.54 mm 8.54 mm Target compt + 2 6.33 mm 223 um -2.45 m 731 keV 0 eV 2.96 mm 1.15 cm Target Transportation + 3 46.6 cm -1.64 cm -2.91 m 731 keV 0 eV 65 cm 66.2 cm OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 26, Parent ID = 14 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 4.24 mm 299 um -2.45 m 632 eV 0 eV 0 fm 0 fm Target initStep + 1 4.24 mm 299 um -2.45 m 0 eV 632 eV 16.5 nm 16.5 nm Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 13, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -868 um -1.13 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.23 cm -5.83 mm -2.44 m 0 eV 88 keV 1.28 cm 1.28 cm Target phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 14, Parent ID = 13 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.23 cm -5.83 mm -2.44 m 423 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.23 cm -5.84 mm -2.44 m 0 eV 423 keV 242 um 242 um Target eIoni + 0 -1.82 mm 479 um -2.44 m 677 keV 0 eV 0 fm 0 fm Target initStep + 1 -32.1 um 3.82 mm -2.45 m 677 keV 0 eV 9.46 mm 9.46 mm Target Transportation + 2 9.48 cm 18.1 cm -2.91 m 677 keV 0 eV 50.2 cm 51.1 cm OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 12, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -868 um -1.13 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 3.31 mm 583 um -2.44 m 0 eV 88 keV 4.68 mm 4.68 mm Target phot + 0 -2.19 mm 614 um -2.44 m 3.26 MeV 0 eV 0 fm 0 fm Target initStep + 1 1.98 cm -1.05 mm -2.45 m 3 MeV 0 eV 2.24 cm 2.24 cm Target compt + 2 2.5 cm -1.68 mm -2.45 m 3 MeV 0 eV 5.52 mm 2.8 cm Target Transportation + 3 1.33 m -16.1 cm -2.91 m 3 MeV 0 eV 1.39 m 1.42 m OutOfWorld Transportation ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 15, Parent ID = 12 +* G4Track Information: Particle = e-, Track ID = 27, Parent ID = 12 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 3.31 mm 583 um -2.44 m 423 keV 0 eV 0 fm 0 fm Target initStep - 1 3.32 mm 589 um -2.44 m 0 eV 423 keV 242 um 242 um Target eIoni + 0 1.98 cm -1.05 mm -2.45 m 260 keV 0 eV 0 fm 0 fm Target initStep + 1 1.98 cm -1.05 mm -2.45 m 0 eV 260 keV 121 um 121 um Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 11, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.19 mm -1.7 mm -2.44 m 7.07 MeV 0 eV 0 fm 0 fm Target initStep - 1 946 um -5.97 mm -2.42 m 0 eV 0 eV 2.42 cm 2.42 cm Target conv + 0 -2.13 mm 650 um -2.44 m 744 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.03 mm 1.61 mm -2.44 m 0 eV 88 keV 3.16 mm 3.16 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 17, Parent ID = 11 +* G4Track Information: Particle = e-, Track ID = 28, Parent ID = 11 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 946 um -5.97 mm -2.42 m 5.02 MeV 0 eV 0 fm 0 fm Target initStep - 1 1.57 mm -5.23 mm -2.42 m 2.87 MeV 2.15 MeV 2.19 mm 2.19 mm Target eIoni - 2 1.33 mm -5.09 mm -2.42 m 715 keV 1.06 MeV 1.03 mm 3.23 mm Target eBrem - 3 1.32 mm -5.14 mm -2.42 m 0 eV 715 keV 486 um 3.71 mm Target eIoni - 4 1.32 mm -5.14 mm -2.42 m 0 eV 0 eV 0 fm 3.71 mm Target annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 20, Parent ID = 17 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.32 mm -5.14 mm -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 -7.84 mm 6.04 mm -2.42 m 0 eV 88 keV 1.48 cm 1.48 cm Target phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 21, Parent ID = 20 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -7.84 mm 6.04 mm -2.42 m 423 keV 0 eV 0 fm 0 fm Target initStep - 1 -7.85 mm 6.05 mm -2.42 m 0 eV 423 keV 242 um 242 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 19, Parent ID = 17 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.32 mm -5.14 mm -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 5.18 mm -9.86 mm -2.42 m 0 eV 88 keV 6.22 mm 6.22 mm Target phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 22, Parent ID = 19 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 5.18 mm -9.86 mm -2.42 m 423 keV 0 eV 0 fm 0 fm Target initStep - 1 5.19 mm -9.87 mm -2.42 m 0 eV 423 keV 242 um 242 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 18, Parent ID = 17 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.33 mm -5.09 mm -2.42 m 1.1 MeV 0 eV 0 fm 0 fm Target initStep - 1 4.29 mm -1.01 cm -2.42 m 419 keV 0 eV 6.83 mm 6.83 mm Target compt - 2 3.21 mm -1.06 cm -2.42 m 0 eV 88 keV 1.51 mm 8.33 mm Target phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 24, Parent ID = 18 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 3.21 mm -1.06 cm -2.42 m 331 keV 0 eV 0 fm 0 fm Target initStep - 1 3.2 mm -1.06 cm -2.42 m 0 eV 331 keV 172 um 172 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 23, Parent ID = 18 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 4.29 mm -1.01 cm -2.42 m 684 keV 0 eV 0 fm 0 fm Target initStep - 1 4.36 mm -1.01 cm -2.42 m 397 keV 287 keV 184 um 184 um Target eBrem - 2 4.37 mm -1.01 cm -2.42 m 0 eV 397 keV 222 um 406 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 16, Parent ID = 11 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 946 um -5.97 mm -2.42 m 1.03 MeV 0 eV 0 fm 0 fm Target initStep - 1 962 um -5.98 mm -2.42 m 0 eV 1.03 MeV 751 um 751 um Target eIoni + 0 -3.03 mm 1.61 mm -2.44 m 656 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.02 mm 1.61 mm -2.44 m 0 eV 656 keV 433 um 433 um Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 10, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.19 mm -1.64 mm -2.44 m 4.14 MeV 0 eV 0 fm 0 fm Target initStep - 1 -1.71 mm -2.66 mm -2.44 m 0 eV 0 eV 4.01 mm 4.01 mm Target conv + 0 -852 um 758 um -2.44 m 7.01 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.4 mm 447 um -2.44 m 0 eV 0 eV 1.73 mm 1.73 mm Target conv ********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 26, Parent ID = 10 +* G4Track Information: Particle = e+, Track ID = 30, Parent ID = 10 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.71 mm -2.66 mm -2.44 m 1.35 MeV 0 eV 0 fm 0 fm Target initStep - 1 -1.71 mm -2.64 mm -2.44 m 748 keV 56.9 keV 67.8 um 67.8 um Target eBrem - 2 -1.71 mm -2.58 mm -2.44 m 0 eV 748 keV 514 um 582 um Target eIoni - 3 -1.71 mm -2.58 mm -2.44 m 0 eV 0 eV 0 fm 582 um Target annihil + 0 -1.4 mm 447 um -2.44 m 872 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.47 mm 515 um -2.44 m 242 keV 630 keV 484 um 484 um Target eBrem + 2 -1.48 mm 514 um -2.44 m 0 eV 242 keV 105 um 590 um Target eIoni + 3 -1.48 mm 514 um -2.44 m 0 eV 0 eV 0 fm 590 um Target annihil ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 29, Parent ID = 26 +* G4Track Information: Particle = gamma, Track ID = 32, Parent ID = 30 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.71 mm -2.58 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 -6.94 mm -6.87 mm -2.43 m 494 keV 0 eV 8.65 mm 8.65 mm Target compt - 2 -1.3 cm -1.11 cm -2.43 m 190 keV 0 eV 8.1 mm 1.68 cm Target compt - 3 -1.23 cm -1.1 cm -2.43 m 0 eV 88 keV 784 um 1.75 cm Target phot + 0 -1.48 mm 514 um -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 2.73 mm -6.26 mm -2.43 m 0 eV 88 keV 1.29 cm 1.29 cm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 32, Parent ID = 29 +* G4Track Information: Particle = e-, Track ID = 33, Parent ID = 32 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.23 cm -1.1 cm -2.43 m 102 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.23 cm -1.1 cm -2.43 m 0 eV 102 keV 28.6 um 28.6 um Target eIoni + 0 2.73 mm -6.26 mm -2.43 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 2.68 mm -6.25 mm -2.43 m 214 keV 209 keV 131 um 131 um Target eBrem + 2 2.68 mm -6.25 mm -2.43 m 0 eV 214 keV 90.9 um 222 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 31, Parent ID = 29 +* G4Track Information: Particle = gamma, Track ID = 31, Parent ID = 30 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.3 cm -1.11 cm -2.43 m 303 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.3 cm -1.11 cm -2.43 m 0 eV 303 keV 152 um 152 um Target eIoni + 0 -1.48 mm 514 um -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -4.87 mm 5.99 mm -2.45 m 511 keV 0 eV 1.04 cm 1.04 cm Target Transportation + 2 -19.6 cm 31.4 cm -2.91 m 511 keV 0 eV 58.5 cm 59.6 cm OutOfWorld Transportation ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 30, Parent ID = 29 +* G4Track Information: Particle = e-, Track ID = 29, Parent ID = 10 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -6.94 mm -6.87 mm -2.43 m 17.5 keV 0 eV 0 fm 0 fm Target initStep - 1 -6.94 mm -6.87 mm -2.43 m 0 eV 17.5 keV 1.66 um 1.66 um Target eIoni + 0 -1.4 mm 447 um -2.44 m 5.12 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.35 mm 365 um -2.44 m 3.61 MeV 341 keV 355 um 355 um Target eBrem + 2 -2 mm 27 um -2.44 m 1.31 MeV 2.3 MeV 1.89 mm 2.25 mm Target eIoni + 3 -1.99 mm -50.3 um -2.44 m 0 eV 1.31 MeV 987 um 3.23 mm Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 28, Parent ID = 26 +* G4Track Information: Particle = gamma, Track ID = 34, Parent ID = 29 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.71 mm -2.58 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 -364 um -1.49 mm -2.44 m 371 keV 0 eV 2.22 mm 2.22 mm Target compt - 2 2.17 mm -3.87 mm -2.45 m 371 keV 0 eV 1.07 cm 1.29 cm Target Transportation - 3 11.8 cm -11.3 cm -2.91 m 371 keV 0 eV 48.7 cm 50 cm OutOfWorld Transportation + 0 -1.35 mm 365 um -2.44 m 1.17 MeV 0 eV 0 fm 0 fm Target initStep + 1 1.52 cm 1.21 cm -2.43 m 222 keV 0 eV 2.38 cm 2.38 cm Target compt + 2 1.49 cm 1.19 cm -2.43 m 185 keV 0 eV 310 um 2.41 cm Target compt + 3 1.45 cm 1.07 cm -2.43 m 112 keV 0 eV 1.87 mm 2.6 cm Target compt + 4 1.45 cm 1.07 cm -2.43 m 0 eV 88 keV 164 um 2.61 cm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 33, Parent ID = 28 +* G4Track Information: Particle = e-, Track ID = 38, Parent ID = 34 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -364 um -1.49 mm -2.44 m 140 keV 0 eV 0 fm 0 fm Target initStep - 1 -362 um -1.49 mm -2.44 m 0 eV 140 keV 47.3 um 47.3 um Target eIoni + 0 1.45 cm 1.07 cm -2.43 m 24.2 keV 0 eV 0 fm 0 fm Target initStep + 1 1.45 cm 1.07 cm -2.43 m 0 eV 24.2 keV 2.77 um 2.77 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 27, Parent ID = 26 +* G4Track Information: Particle = e-, Track ID = 37, Parent ID = 34 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.71 mm -2.64 mm -2.44 m 547 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.17 mm -60 um -2.44 m 413 keV 0 eV 3.06 mm 3.06 mm Target compt - 2 -313 um 3.33 mm -2.44 m 0 eV 88 keV 3.63 mm 6.68 mm Target phot + 0 1.45 cm 1.07 cm -2.43 m 73.2 keV 0 eV 0 fm 0 fm Target initStep + 1 1.45 cm 1.07 cm -2.43 m 0 eV 73.2 keV 16.7 um 16.7 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 35, Parent ID = 27 +* G4Track Information: Particle = e-, Track ID = 36, Parent ID = 34 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -313 um 3.33 mm -2.44 m 325 keV 0 eV 0 fm 0 fm Target initStep - 1 -315 um 3.34 mm -2.44 m 0 eV 325 keV 168 um 168 um Target eIoni + 0 1.49 cm 1.19 cm -2.43 m 36.4 keV 0 eV 0 fm 0 fm Target initStep + 1 1.49 cm 1.19 cm -2.43 m 0 eV 36.4 keV 5.37 um 5.37 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 34, Parent ID = 27 +* G4Track Information: Particle = e-, Track ID = 35, Parent ID = 34 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.17 mm -60 um -2.44 m 134 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.17 mm -59.4 um -2.44 m 0 eV 134 keV 44.3 um 44.3 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 25, Parent ID = 10 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.71 mm -2.66 mm -2.44 m 1.77 MeV 0 eV 0 fm 0 fm Target initStep - 1 -1.6 mm -2.65 mm -2.44 m 1.46 MeV 309 keV 261 um 261 um Target eBrem - 2 -1.67 mm -2.83 mm -2.44 m 460 keV 494 keV 374 um 635 um Target eBrem - 3 -1.67 mm -2.83 mm -2.44 m 0 eV 460 keV 272 um 907 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 36, Parent ID = 25 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.67 mm -2.83 mm -2.44 m 503 keV 0 eV 0 fm 0 fm Target initStep - 1 1.61 mm -6.38 mm -2.44 m 217 keV 0 eV 4.95 mm 4.95 mm Target compt - 2 1.3 mm -6.43 mm -2.44 m 0 eV 88 keV 1.42 mm 6.37 mm Target phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 38, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.3 mm -6.43 mm -2.44 m 129 keV 0 eV 0 fm 0 fm Target initStep - 1 1.3 mm -6.42 mm -2.44 m 0 eV 129 keV 41.7 um 41.7 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 37, Parent ID = 36 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.61 mm -6.38 mm -2.44 m 286 keV 0 eV 0 fm 0 fm Target initStep - 1 1.62 mm -6.38 mm -2.44 m 0 eV 286 keV 140 um 140 um Target eIoni + 0 1.52 cm 1.21 cm -2.43 m 948 keV 0 eV 0 fm 0 fm Target initStep + 1 1.52 cm 1.21 cm -2.43 m 0 eV 948 keV 681 um 681 um Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 9, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.07 mm -1.48 mm -2.44 m 1.51 MeV 0 eV 0 fm 0 fm Target initStep - 1 -6.79 mm -7.52 mm -2.42 m 229 keV 0 eV 1.99 cm 1.99 cm Target compt - 2 -6.07 mm -7.05 mm -2.43 m 0 eV 88 keV 1.1 mm 2.1 cm Target phot + 0 -451 um 1.07 mm -2.45 m 4.71 MeV 0 eV 0 fm 0 fm Target initStep + 1 -2.84 mm -1.78 mm -2.4 m 0 eV 0 eV 4.52 cm 4.52 cm Target conv ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 40, Parent ID = 9 +* G4Track Information: Particle = e+, Track ID = 40, Parent ID = 9 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -6.07 mm -7.05 mm -2.43 m 141 keV 0 eV 0 fm 0 fm Target initStep - 1 -6.07 mm -7.05 mm -2.43 m 0 eV 141 keV 48.1 um 48.1 um Target eIoni + 0 -2.84 mm -1.78 mm -2.4 m 955 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.82 mm -1.79 mm -2.4 m 901 keV 54.1 keV 58.4 um 58.4 um Target msc + 2 -2.77 mm -1.79 mm -2.4 m 851 keV 50.8 keV 58.4 um 117 um Target msc + 3 -2.74 mm -1.8 mm -2.4 m 782 keV 68.5 keV 58.4 um 175 um Target msc + 4 -2.73 mm -1.85 mm -2.4 m 721 keV 60.8 keV 58.4 um 233 um Target msc + 5 -2.73 mm -1.89 mm -2.4 m 644 keV 77.2 keV 58.4 um 292 um Target msc + 6 -2.72 mm -1.89 mm -2.4 m 565 keV 78.8 keV 58.4 um 350 um Target msc + 7 -2.68 mm -1.88 mm -2.4 m 502 keV 63.2 keV 58.4 um 409 um Target msc + 8 -2.65 mm -1.88 mm -2.4 m 0 eV 502 keV 304 um 713 um Target eIoni + 9 -2.65 mm -1.88 mm -2.4 m 0 eV 0 eV 0 fm 713 um Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 42, Parent ID = 40 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.65 mm -1.88 mm -2.4 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 874 um -3.67 mm -2.4 m 0 eV 88 keV 4.4 mm 4.4 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 43, Parent ID = 42 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 874 um -3.67 mm -2.4 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 879 um -3.66 mm -2.4 m 0 eV 423 keV 242 um 242 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 41, Parent ID = 40 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.65 mm -1.88 mm -2.4 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.27 mm -1.57 mm -2.4 m 511 keV 0 eV 767 um 767 um Target Transportation + 2 -2.4 m 1.22 m -1.09 m 511 keV 0 eV 2.99 m 2.99 m Tracker Transportation + 3 -2.91 m 1.48 m -80.9 cm 511 keV 0 eV 63.7 cm 3.63 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 39, Parent ID = 9 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -6.79 mm -7.52 mm -2.42 m 1.28 MeV 0 eV 0 fm 0 fm Target initStep - 1 -6.88 mm -7.53 mm -2.42 m 1.12 MeV 156 keV 144 um 144 um Target eBrem - 2 -6.91 mm -7.58 mm -2.42 m 0 eV 1.12 MeV 830 um 973 um Target eIoni + 0 -2.84 mm -1.78 mm -2.4 m 2.73 MeV 0 eV 0 fm 0 fm Target initStep + 1 -2.84 mm -1.77 mm -2.4 m 2.69 MeV 44.6 keV 58.4 um 58.4 um Target msc + 2 -2.83 mm -1.77 mm -2.4 m 2.65 MeV 34.7 keV 58.4 um 117 um Target msc + 3 -2.81 mm -1.8 mm -2.4 m 2.59 MeV 60.2 keV 58.4 um 175 um Target msc + 4 -2.8 mm -1.8 mm -2.4 m 2.53 MeV 57.7 keV 58.4 um 233 um Target msc + 5 -2.8 mm -1.79 mm -2.4 m 2.5 MeV 32.6 keV 23.3 um 257 um Target Transportation + 6 -2.93 cm 24.3 cm -1.85 m 2.26 MeV 114 keV 61.1 cm 61.1 cm Tracker eIoni + 7 -3.64 cm 57.5 cm -1.13 m 2.11 MeV 122 keV 79.3 cm 1.4 m Tracker eIoni + 8 -2.22 cm 64.4 cm -80 cm 2.03 MeV 76.7 keV 34.6 cm 1.75 m Tracker Transportation + 9 -6.68 mm 67 cm -73.6 cm 1.9 MeV 46.1 keV 7.43 cm 1.82 m Chamber eBrem + 10 -5.14 mm 67.2 cm -73 cm 1.9 MeV 5.44 keV 5.77 mm 1.83 m Chamber Transportation + 11 26.1 cm 1.09 m 0.114 fm 1.75 MeV 150 keV 91.6 cm 2.75 m Tracker Transportation + 12 27 cm 1.1 m 1.38 cm 1.74 MeV 7.5 keV 2.09 cm 2.77 m Chamber Transportation + 13 85 cm 1.49 m 49.8 cm 1.59 MeV 150 keV 88.4 cm 3.65 m Tracker eBrem + 14 2.24 m 1.89 m 67.4 cm 1.16 MeV 277 keV 1.55 m 5.2 m Tracker eIoni + 15 2.4 m 1.88 m 66.3 cm 1.12 MeV 32.5 keV 16.7 cm 5.37 m Tracker Transportation + 16 2.91 m 1.97 m 56.8 cm 1.02 MeV 100 keV 55.3 cm 5.92 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 48, Parent ID = 39 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 2.24 m 1.89 m 67.4 cm 156 keV 0 eV 0 fm 0 fm Tracker initStep + 1 2.24 m 1.95 m 67.9 cm 138 keV 18 keV 5.74 cm 5.74 cm Tracker eIoni + 2 2.22 m 1.99 m 68.6 cm 115 keV 23 keV 4.71 cm 10.4 cm Tracker eIoni + 3 2.2 m 1.97 m 69.1 cm 105 keV 9.96 keV 3.49 cm 13.9 cm Tracker eIoni + 4 2.2 m 1.94 m 67.8 cm 94.1 keV 10.5 keV 3 cm 16.9 cm Tracker eIoni + 5 2.22 m 1.94 m 69.3 cm 76.9 keV 17.2 keV 2.52 cm 19.4 cm Tracker eIoni + 6 2.22 m 1.94 m 70.9 cm 69.3 keV 7.63 keV 1.81 cm 21.3 cm Tracker eIoni + 7 2.24 m 1.94 m 71.9 cm 58.8 keV 10.5 keV 1.54 cm 22.8 cm Tracker eIoni + 8 2.24 m 1.94 m 72.7 cm 53.3 keV 5.46 keV 1.19 cm 24 cm Tracker eIoni + 9 2.24 m 1.94 m 73.7 cm 47.1 keV 6.24 keV 1.02 cm 25 cm Tracker eIoni + 10 2.24 m 1.94 m 73.2 cm 39.7 keV 7.34 keV 8.52 mm 25.9 cm Tracker eIoni + 11 2.23 m 1.93 m 73.2 cm 33.4 keV 6.31 keV 6.67 mm 26.5 cm Tracker eIoni + 12 2.23 m 1.93 m 72.9 cm 29.8 keV 3.59 keV 5.34 mm 27.1 cm Tracker eIoni + 13 2.23 m 1.93 m 72.6 cm 27 keV 2.85 keV 4.64 mm 27.5 cm Tracker eIoni + 14 2.24 m 1.93 m 72.6 cm 24.6 keV 2.39 keV 4.14 mm 27.9 cm Tracker eIoni + 15 2.24 m 1.93 m 72.9 cm 16.6 keV 8.03 keV 3.72 mm 28.3 cm Tracker eIoni + 16 2.24 m 1.93 m 73.1 cm 7.32 keV 9.26 keV 2.55 mm 28.6 cm Tracker eIoni + 17 2.24 m 1.93 m 73.1 cm 1.83 keV 5.49 keV 1.26 mm 28.7 cm Tracker eIoni + 18 2.24 m 1.93 m 73.1 cm 0 eV 1.83 keV 137 um 28.7 cm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 47, Parent ID = 39 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 85 cm 1.49 m 49.8 cm 1.35 keV 0 eV 0 fm 0 fm Tracker initStep + 1 85.6 cm 1.49 m 50 cm 0 eV 543 eV 6.7 mm 6.7 mm Tracker phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 49, Parent ID = 47 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 85.6 cm 1.49 m 50 cm 808 eV 0 eV 0 fm 0 fm Tracker initStep + 1 85.6 cm 1.49 m 50 cm 0 eV 808 eV 44.3 um 44.3 um Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 46, Parent ID = 39 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -6.68 mm 67 cm -73.6 cm 85.5 keV 0 eV 0 fm 0 fm Chamber initStep + 1 -3.39 mm 67.2 cm -72.6 cm 85.5 keV 0 eV 1.04 cm 1.04 cm Chamber Transportation + 2 24.3 cm 82 cm 0 fm 85.5 keV 0 eV 78.1 cm 79.1 cm Tracker Transportation + 3 27.1 cm 83.7 cm 8.29 cm 0 eV 34.6 keV 8.91 cm 88 cm Chamber phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 50, Parent ID = 46 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 27.1 cm 83.7 cm 8.29 cm 50.9 keV 0 eV 0 fm 0 fm Chamber initStep + 1 27.3 cm 83.6 cm 8.42 cm 36.3 keV 14.6 keV 4.76 mm 4.76 mm Chamber eIoni + 2 27.2 cm 83.6 cm 8.55 cm 24 keV 12.3 keV 3.35 mm 8.11 mm Chamber eIoni + 3 27.1 cm 83.6 cm 8.56 cm 18.3 keV 5.72 keV 2.34 mm 1.05 cm Chamber eIoni + 4 27.1 cm 83.5 cm 8.52 cm 14.5 keV 3.79 keV 1.91 mm 1.24 cm Chamber eIoni + 5 27.1 cm 83.5 cm 8.55 cm 1.6 keV 12.9 keV 1.6 mm 1.4 cm Chamber eIoni + 6 27.1 cm 83.5 cm 8.55 cm 0 eV 1.6 keV 75.5 um 1.4 cm Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 45, Parent ID = 39 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.64 cm 57.5 cm -1.13 m 25.1 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -3.31 cm 57.5 cm -1.14 m 20.9 keV 4.19 keV 3.79 mm 3.79 mm Tracker eIoni + 2 -3.46 cm 57.5 cm -1.14 m 18 keV 2.84 keV 3.15 mm 6.94 mm Tracker eIoni + 3 -3.61 cm 57.6 cm -1.14 m 12.2 keV 5.88 keV 2.75 mm 9.7 mm Tracker eIoni + 4 -3.65 cm 57.7 cm -1.14 m 7.08 keV 5.09 keV 1.99 mm 1.17 cm Tracker eIoni + 5 -3.62 cm 57.7 cm -1.14 m 2.89 keV 4.19 keV 1.21 mm 1.29 cm Tracker eIoni + 6 -3.62 cm 57.7 cm -1.14 m 0 eV 2.89 keV 280 um 1.32 cm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 44, Parent ID = 39 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.93 cm 24.3 cm -1.85 m 130 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -6.62 cm 24.5 cm -1.83 m 110 keV 19.3 keV 4.26 cm 4.26 cm Tracker eIoni + 2 -9.7 cm 24.1 cm -1.83 m 101 keV 9.05 keV 3.28 cm 7.54 cm Tracker eIoni + 3 -10.6 cm 23.8 cm -1.81 m 87.9 keV 13.4 keV 2.83 cm 10.4 cm Tracker eIoni + 4 -10.7 cm 22.4 cm -1.79 m 70.1 keV 17.9 keV 2.26 cm 12.6 cm Tracker eIoni + 5 -11.4 cm 22.5 cm -1.78 m 60.7 keV 9.33 keV 1.57 cm 14.2 cm Tracker eIoni + 6 -11.6 cm 21.5 cm -1.77 m 53 keV 7.75 keV 1.25 cm 15.4 cm Tracker eIoni + 7 -11.6 cm 20.6 cm -1.77 m 43.8 keV 9.13 keV 1.01 cm 16.5 cm Tracker eIoni + 8 -11.3 cm 20 cm -1.77 m 39.6 keV 4.2 keV 7.7 mm 17.2 cm Tracker eIoni + 9 -11 cm 19.5 cm -1.76 m 31.3 keV 8.33 keV 6.65 mm 17.9 cm Tracker eIoni + 10 -10.6 cm 19.3 cm -1.77 m 28 keV 3.28 keV 4.9 mm 18.4 cm Tracker eIoni + 11 -10.6 cm 19.7 cm -1.76 m 20.4 keV 7.67 keV 4.32 mm 18.8 cm Tracker eIoni + 12 -10.6 cm 19.8 cm -1.76 m 16.6 keV 3.74 keV 3.07 mm 19.1 cm Tracker eIoni + 13 -10.5 cm 20 cm -1.76 m 13.7 keV 2.93 keV 2.56 mm 19.4 cm Tracker eIoni + 14 -10.5 cm 20.2 cm -1.76 m 9.01 keV 4.68 keV 2.18 mm 19.6 cm Tracker eIoni + 15 -10.4 cm 20.1 cm -1.76 m 3.63 keV 5.38 keV 1.56 mm 19.8 cm Tracker eIoni + 16 -10.3 cm 20.1 cm -1.76 m 0 eV 3.63 keV 406 um 19.8 cm Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 8, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -511 um -430 um -2.45 m 600 keV 0 eV 0 fm 0 fm Target initStep - 1 -505 um -435 um -2.45 m 554 keV 0 eV 121 um 121 um Target compt - 2 -375 um -615 um -2.45 m 300 keV 0 eV 521 um 641 um Target compt - 3 -956 um -1.88 mm -2.45 m 0 eV 88 keV 1.39 mm 2.03 mm Target phot + 0 -510 um 347 um -2.45 m 11.3 MeV 0 eV 0 fm 0 fm Target initStep + 1 -2.39 mm 3.15 mm -2.42 m 0 eV 0 eV 2.94 cm 2.94 cm Target conv ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 43, Parent ID = 8 +* G4Track Information: Particle = e+, Track ID = 52, Parent ID = 8 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -956 um -1.88 mm -2.45 m 212 keV 0 eV 0 fm 0 fm Target initStep - 1 -957 um -1.87 mm -2.45 m 0 eV 212 keV 89.9 um 89.9 um Target eIoni + 0 -2.39 mm 3.15 mm -2.42 m 5.3 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.39 mm 3.64 mm -2.42 m 2.63 MeV 1.9 MeV 1.86 mm 1.86 mm Target eBrem + 2 -1.31 mm 3.9 mm -2.42 m 0 eV 2.63 MeV 1.65 mm 3.51 mm Target eIoni + 3 -1.31 mm 3.9 mm -2.42 m 0 eV 0 eV 0 fm 3.51 mm Target annihil ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 42, Parent ID = 8 +* G4Track Information: Particle = gamma, Track ID = 55, Parent ID = 52 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -375 um -615 um -2.45 m 254 keV 0 eV 0 fm 0 fm Target initStep - 1 -372 um -614 um -2.45 m 0 eV 254 keV 117 um 117 um Target eIoni + 0 -1.31 mm 3.9 mm -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 2.02 mm -3.33 mm -2.42 m 478 keV 0 eV 9.69 mm 9.69 mm Target compt + 2 3.34 mm -6.14 mm -2.42 m 0 eV 88 keV 3.18 mm 1.29 cm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 41, Parent ID = 8 +* G4Track Information: Particle = e-, Track ID = 57, Parent ID = 55 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -505 um -435 um -2.45 m 45.6 keV 0 eV 0 fm 0 fm Target initStep - 1 -505 um -435 um -2.45 m 0 eV 45.6 keV 7.75 um 7.75 um Target eIoni + 0 3.34 mm -6.14 mm -2.42 m 390 keV 0 eV 0 fm 0 fm Target initStep + 1 3.33 mm -6.15 mm -2.42 m 0 eV 390 keV 217 um 217 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 56, Parent ID = 55 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 2.02 mm -3.33 mm -2.42 m 33 keV 0 eV 0 fm 0 fm Target initStep + 1 2.02 mm -3.33 mm -2.42 m 0 eV 33 keV 4.57 um 4.57 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 54, Parent ID = 52 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.31 mm 3.9 mm -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.8 mm 4.96 mm -2.42 m 244 keV 0 eV 1.42 mm 1.42 mm Target compt + 2 -1.79 mm 4.81 mm -2.42 m 0 eV 88 keV 220 um 1.64 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 59, Parent ID = 54 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.79 mm 4.81 mm -2.42 m 156 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.79 mm 4.81 mm -2.42 m 0 eV 156 keV 55.7 um 55.7 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 58, Parent ID = 54 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.8 mm 4.96 mm -2.42 m 267 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.8 mm 4.97 mm -2.42 m 0 eV 267 keV 126 um 126 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 53, Parent ID = 52 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.39 mm 3.64 mm -2.42 m 766 keV 0 eV 0 fm 0 fm Target initStep + 1 -138 um 1.03 cm -2.42 m 0 eV 88 keV 8.4 mm 8.4 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 60, Parent ID = 53 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -138 um 1.03 cm -2.42 m 678 keV 0 eV 0 fm 0 fm Target initStep + 1 -147 um 1.03 cm -2.42 m 0 eV 678 keV 452 um 452 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 51, Parent ID = 8 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.39 mm 3.15 mm -2.42 m 4.94 MeV 0 eV 0 fm 0 fm Target initStep + 1 -3.16 mm 3.44 mm -2.42 m 2.65 MeV 1.98 MeV 1.54 mm 1.54 mm Target eBrem + 2 -2.96 mm 3.58 mm -2.42 m 227 keV 1.5 MeV 547 um 2.09 mm Target eBrem + 3 -2.95 mm 3.57 mm -2.42 m 0 eV 227 keV 99.4 um 2.18 mm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 62, Parent ID = 51 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.96 mm 3.58 mm -2.42 m 928 keV 0 eV 0 fm 0 fm Target initStep + 1 1.37 cm -1.75 cm -2.42 m 870 keV 0 eV 2.74 cm 2.74 cm Target compt + 2 1.56 cm -2.08 cm -2.43 m 634 keV 0 eV 4.25 mm 3.16 cm Target compt + 3 1.76 cm -2.48 cm -2.42 m 0 eV 88 keV 4.64 mm 3.63 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 65, Parent ID = 62 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.76 cm -2.48 cm -2.42 m 546 keV 0 eV 0 fm 0 fm Target initStep + 1 1.77 cm -2.48 cm -2.42 m 395 keV 151 keV 38.8 um 38.8 um Target msc + 2 1.77 cm -2.48 cm -2.42 m 361 keV 34 keV 38.8 um 77.6 um Target msc + 3 1.77 cm -2.48 cm -2.42 m 327 keV 33.4 keV 38.8 um 116 um Target msc + 4 1.77 cm -2.48 cm -2.42 m 281 keV 46.1 keV 38.8 um 155 um Target msc + 5 1.77 cm -2.48 cm -2.42 m 238 keV 43.4 keV 38.8 um 194 um Target msc + 6 1.77 cm -2.48 cm -2.42 m 190 keV 47.6 keV 38.8 um 233 um Target msc + 7 1.77 cm -2.48 cm -2.42 m 129 keV 60.9 keV 38.8 um 272 um Target msc + 8 1.77 cm -2.48 cm -2.42 m 0 eV 129 keV 41.6 um 313 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 64, Parent ID = 62 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.56 cm -2.08 cm -2.43 m 235 keV 0 eV 0 fm 0 fm Target initStep + 1 1.56 cm -2.08 cm -2.43 m 0 eV 235 keV 105 um 105 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 63, Parent ID = 62 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.37 cm -1.75 cm -2.42 m 58.3 keV 0 eV 0 fm 0 fm Target initStep + 1 1.37 cm -1.75 cm -2.42 m 0 eV 58.3 keV 11.6 um 11.6 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 61, Parent ID = 51 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.16 mm 3.44 mm -2.42 m 309 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.25 mm 5.1 mm -2.42 m 0 eV 88 keV 4.65 mm 4.65 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 66, Parent ID = 61 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.25 mm 5.1 mm -2.42 m 221 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.26 mm 5.1 mm -2.42 m 0 eV 221 keV 95.2 um 95.2 um Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 7, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -765 um -62.9 um -2.45 m 1.61 MeV 0 eV 0 fm 0 fm Target initStep - 1 83.1 nm -1.06 cm -2.4 m 1.61 MeV 0 eV 4.81 cm 4.81 cm Target Transportation - 2 1.31 cm -19 cm -1.6 m 1.61 MeV 0 eV 82 cm 86.8 cm Tracker Transportation - 3 1.63 cm -23.5 cm -1.4 m 1.61 MeV 0 eV 20.5 cm 1.07 m Chamber Transportation - 4 2.61 cm -37 cm -80 cm 1.61 MeV 0 eV 61.5 cm 1.69 m Tracker Transportation - 5 2.94 cm -41.5 cm -60 cm 1.61 MeV 0 eV 20.5 cm 1.89 m Chamber Transportation - 6 3.92 cm -54.9 cm 0 fm 1.61 MeV 0 eV 61.5 cm 2.51 m Tracker Transportation - 7 4.24 cm -59.4 cm 20 cm 1.61 MeV 0 eV 20.5 cm 2.71 m Chamber Transportation - 8 5.22 cm -72.9 cm 80 cm 1.61 MeV 0 eV 61.5 cm 3.33 m Tracker Transportation - 9 5.55 cm -77.4 cm 1 m 1.61 MeV 0 eV 20.5 cm 3.53 m Chamber Transportation - 10 6.53 cm -90.9 cm 1.6 m 1.61 MeV 0 eV 61.5 cm 4.15 m Tracker Transportation - 11 6.85 cm -95.4 cm 1.8 m 1.61 MeV 0 eV 20.5 cm 4.35 m Chamber Transportation - 12 7.83 cm -1.09 m 2.4 m 1.61 MeV 0 eV 61.5 cm 4.97 m Tracker Transportation - 13 8.66 cm -1.2 m 2.91 m 1.61 MeV 0 eV 52.3 cm 5.49 m OutOfWorld Transportation + 0 -503 um 339 um -2.45 m 548 keV 0 eV 0 fm 0 fm Target initStep + 1 -940 um 904 um -2.44 m 0 eV 88 keV 7.03 mm 7.03 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 67, Parent ID = 7 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -940 um 904 um -2.44 m 460 keV 0 eV 0 fm 0 fm Target initStep + 1 -947 um 916 um -2.44 m 0 eV 460 keV 272 um 272 um Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 6, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -740 um 3.26 um -2.45 m 90.1 MeV 0 eV 0 fm 0 fm Target initStep - 1 -632 um -70.2 um -2.44 m 0 eV 0 eV 4.25 mm 4.25 mm Target conv + 0 -502 um 337 um -2.45 m 99.5 MeV 0 eV 0 fm 0 fm Target initStep + 1 -710 um 604 um -2.44 m 0 eV 0 eV 3.41 mm 3.41 mm Target conv ********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 45, Parent ID = 6 +* G4Track Information: Particle = e+, Track ID = 69, Parent ID = 6 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -632 um -70.2 um -2.44 m 40.2 MeV 0 eV 0 fm 0 fm Target initStep - 1 -41.4 um -134 um -2.44 m 31 MeV 3.35 MeV 2.7 mm 2.7 mm Target eBrem - 2 426 um 366 um -2.44 m 25.5 MeV 1.79 MeV 1.59 mm 4.29 mm Target eBrem - 3 1.69 mm 344 um -2.44 m 6.91 MeV 1.94 MeV 1.65 mm 5.93 mm Target eBrem - 4 3.28 mm 985 um -2.44 m 4 MeV 2.9 MeV 2.52 mm 8.46 mm Target eIoni - 5 3.63 mm 1.41 mm -2.44 m 2.12 MeV 1.34 MeV 1.05 mm 9.5 mm Target eBrem - 6 4.04 mm 1.51 mm -2.44 m 310 keV 1.81 MeV 1.47 mm 1.1 cm Target eIoni - 7 4.03 mm 1.5 mm -2.44 m 0 eV 310 keV 153 um 1.11 cm Target eIoni - 8 4.03 mm 1.5 mm -2.44 m 0 eV 0 eV 0 fm 1.11 cm Target annihil + 0 -710 um 604 um -2.44 m 51.2 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.14 mm 863 um -2.44 m 14.9 MeV 2.87 MeV 2.24 mm 2.24 mm Target eBrem + 2 -1.12 mm 806 um -2.44 m 13.9 MeV 337 keV 266 um 2.51 mm Target eBrem + 3 -2.44 mm 1.19 mm -2.44 m 10.3 MeV 3.38 MeV 3.09 mm 5.6 mm Target eBrem + 4 -2.93 mm 1.27 mm -2.44 m 3.37 MeV 1.44 MeV 685 um 6.29 mm Target eBrem + 5 -3.76 mm 1.23 mm -2.44 m 1.38 MeV 1.99 MeV 1.84 mm 8.13 mm Target eIoni + 6 -3.7 mm 1.09 mm -2.44 m 214 keV 1.16 MeV 1.06 mm 9.19 mm Target eIoni + 7 -3.7 mm 1.1 mm -2.44 m 0 eV 214 keV 87 um 9.28 mm Target eIoni + 8 -3.7 mm 1.1 mm -2.44 m 0 eV 0 eV 0 fm 9.28 mm Target annihil ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 51, Parent ID = 45 +* G4Track Information: Particle = gamma, Track ID = 75, Parent ID = 69 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 4.03 mm 1.5 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 4.01 mm 1.48 mm -2.44 m 451 keV 0 eV 30.8 um 30.8 um Target compt - 2 2.71 mm 998 um -2.44 m 0 eV 88 keV 1.4 mm 1.43 mm Target phot + 0 -3.7 mm 1.1 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 4.17 mm 2.02 mm -2.44 m 0 eV 88 keV 8.16 mm 8.16 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 53, Parent ID = 51 +* G4Track Information: Particle = e-, Track ID = 76, Parent ID = 75 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.71 mm 998 um -2.44 m 363 keV 0 eV 0 fm 0 fm Target initStep - 1 2.7 mm 1.01 mm -2.44 m 0 eV 363 keV 196 um 196 um Target eIoni + 0 4.17 mm 2.02 mm -2.44 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 4.18 mm 2.03 mm -2.44 m 0 eV 423 keV 242 um 242 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 52, Parent ID = 51 +* G4Track Information: Particle = gamma, Track ID = 74, Parent ID = 69 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 4.01 mm 1.48 mm -2.44 m 59.9 keV 0 eV 0 fm 0 fm Target initStep - 1 4.01 mm 1.48 mm -2.44 m 0 eV 59.9 keV 12.1 um 12.1 um Target eIoni + 0 -3.7 mm 1.1 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -6.21 mm 798 um -2.44 m 510 keV 0 eV 2.6 mm 2.6 mm Target compt + 2 -9.09 mm 601 um -2.44 m 0 eV 88 keV 2.94 mm 5.54 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 50, Parent ID = 45 +* G4Track Information: Particle = e-, Track ID = 78, Parent ID = 74 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 4.03 mm 1.5 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 1.25 cm 5.86 mm -2.44 m 400 keV 0 eV 1.01 cm 1.01 cm Target compt - 2 1.44 cm 5.5 mm -2.44 m 0 eV 88 keV 1.92 mm 1.21 cm Target phot + 0 -9.09 mm 601 um -2.44 m 422 keV 0 eV 0 fm 0 fm Target initStep + 1 -9.1 mm 607 um -2.44 m 0 eV 422 keV 242 um 242 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 55, Parent ID = 50 +* G4Track Information: Particle = e-, Track ID = 77, Parent ID = 74 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.44 cm 5.5 mm -2.44 m 312 keV 0 eV 0 fm 0 fm Target initStep - 1 1.44 cm 5.5 mm -2.44 m 0 eV 312 keV 158 um 158 um Target eIoni + 0 -6.21 mm 798 um -2.44 m 1.09 keV 0 eV 0 fm 0 fm Target initStep + 1 -6.21 mm 798 um -2.44 m 0 eV 1.09 keV 32.2 nm 32.2 nm Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 54, Parent ID = 50 +* G4Track Information: Particle = gamma, Track ID = 73, Parent ID = 69 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.25 cm 5.86 mm -2.44 m 111 keV 0 eV 0 fm 0 fm Target initStep - 1 1.25 cm 5.86 mm -2.44 m 0 eV 111 keV 32.6 um 32.6 um Target eIoni + 0 -2.93 mm 1.27 mm -2.44 m 5.45 MeV 0 eV 0 fm 0 fm Target initStep + 1 -7.88 mm 2.78 mm -2.44 m 0 eV 0 eV 6.26 mm 6.26 mm Target conv ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 49, Parent ID = 45 +* G4Track Information: Particle = e+, Track ID = 80, Parent ID = 73 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 3.63 mm 1.41 mm -2.44 m 541 keV 0 eV 0 fm 0 fm Target initStep - 1 4.53 mm 9.7 mm -2.44 m 0 eV 88 keV 9.67 mm 9.67 mm Target phot + 0 -7.88 mm 2.78 mm -2.44 m 3.35 MeV 0 eV 0 fm 0 fm Target initStep + 1 -8.59 mm 2.27 mm -2.44 m 1.64 MeV 1.71 MeV 1.84 mm 1.84 mm Target eIoni + 2 -8.81 mm 2.1 mm -2.44 m 509 keV 472 keV 440 um 2.28 mm Target eBrem + 3 -8.82 mm 2.08 mm -2.44 m 0 eV 509 keV 310 um 2.59 mm Target eIoni + 4 -8.82 mm 2.08 mm -2.44 m 0 eV 0 eV 0 fm 2.59 mm Target annihil ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 56, Parent ID = 49 +* G4Track Information: Particle = gamma, Track ID = 83, Parent ID = 80 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 4.53 mm 9.7 mm -2.44 m 453 keV 0 eV 0 fm 0 fm Target initStep - 1 4.53 mm 9.71 mm -2.44 m 0 eV 453 keV 266 um 266 um Target eIoni + 0 -8.82 mm 2.08 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.02 cm 8.83 mm -2.43 m 0 eV 88 keV 7.23 mm 7.23 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 48, Parent ID = 45 +* G4Track Information: Particle = e-, Track ID = 84, Parent ID = 83 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.69 mm 344 um -2.44 m 16.7 MeV 0 eV 0 fm 0 fm Target initStep - 1 4.57 mm 1.65 mm -2.44 m 0 eV 0 eV 3.5 mm 3.5 mm Target conv + 0 -1.02 cm 8.83 mm -2.43 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.02 cm 8.83 mm -2.43 m 0 eV 423 keV 242 um 242 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 58, Parent ID = 48 +* G4Track Information: Particle = gamma, Track ID = 82, Parent ID = 80 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 4.57 mm 1.65 mm -2.44 m 3.28 MeV 0 eV 0 fm 0 fm Target initStep - 1 5.12 mm 1.99 mm -2.44 m 1.18 MeV 1.45 MeV 1.11 mm 1.11 mm Target eBrem - 2 5.11 mm 2.1 mm -2.44 m 0 eV 1.18 MeV 890 um 2 mm Target eIoni - 3 5.11 mm 2.1 mm -2.44 m 0 eV 0 eV 0 fm 2 mm Target annihil + 0 -8.82 mm 2.08 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -8.29 mm -540 um -2.44 m 211 keV 0 eV 2.8 mm 2.8 mm Target compt + 2 -1.14 cm -16.2 um -2.43 m 117 keV 0 eV 6.77 mm 9.57 mm Target compt + 3 -1.14 cm -13.2 um -2.43 m 0 eV 88 keV 35.3 um 9.61 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 61, Parent ID = 58 +* G4Track Information: Particle = e-, Track ID = 87, Parent ID = 82 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 5.11 mm 2.1 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 3.31 mm 2.58 mm -2.44 m 0 eV 88 keV 1.86 mm 1.86 mm Target phot + 0 -1.14 cm -13.2 um -2.43 m 28.9 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.14 cm -13.1 um -2.43 m 0 eV 28.9 keV 3.68 um 3.68 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 62, Parent ID = 61 +* G4Track Information: Particle = e-, Track ID = 86, Parent ID = 82 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 3.31 mm 2.58 mm -2.44 m 423 keV 0 eV 0 fm 0 fm Target initStep - 1 3.3 mm 2.59 mm -2.44 m 0 eV 423 keV 242 um 242 um Target eIoni + 0 -1.14 cm -16.2 um -2.43 m 93.7 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.14 cm -16.2 um -2.43 m 0 eV 93.7 keV 24.9 um 24.9 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 60, Parent ID = 58 +* G4Track Information: Particle = e-, Track ID = 85, Parent ID = 82 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 5.11 mm 2.1 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 7.8 mm 1.37 mm -2.44 m 480 keV 0 eV 2.8 mm 2.8 mm Target compt - 2 1.76 cm -4.1 mm -2.43 m 0 eV 88 keV 1.15 cm 1.43 cm Target phot + 0 -8.29 mm -540 um -2.44 m 300 keV 0 eV 0 fm 0 fm Target initStep + 1 -8.29 mm -547 um -2.44 m 0 eV 300 keV 150 um 150 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 64, Parent ID = 60 +* G4Track Information: Particle = gamma, Track ID = 81, Parent ID = 80 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.76 cm -4.1 mm -2.43 m 392 keV 0 eV 0 fm 0 fm Target initStep - 1 1.76 cm -4.11 mm -2.43 m 0 eV 392 keV 218 um 218 um Target eIoni + 0 -8.81 mm 2.1 mm -2.44 m 659 keV 0 eV 0 fm 0 fm Target initStep + 1 -7.55 mm -3.43 mm -2.44 m 390 keV 0 eV 5.68 mm 5.68 mm Target compt + 2 -9.94 mm -6.17 mm -2.44 m 188 keV 0 eV 4.42 mm 1.01 cm Target compt + 3 -8.68 mm -6.58 mm -2.44 m 0 eV 88 keV 1.35 mm 1.14 cm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 63, Parent ID = 60 +* G4Track Information: Particle = e-, Track ID = 90, Parent ID = 81 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 7.8 mm 1.37 mm -2.44 m 31 keV 0 eV 0 fm 0 fm Target initStep - 1 7.8 mm 1.37 mm -2.44 m 0 eV 31 keV 4.11 um 4.11 um Target eIoni + 0 -8.68 mm -6.58 mm -2.44 m 99.6 keV 0 eV 0 fm 0 fm Target initStep + 1 -8.68 mm -6.59 mm -2.44 m 0 eV 99.6 keV 27.4 um 27.4 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 59, Parent ID = 58 +* G4Track Information: Particle = e-, Track ID = 89, Parent ID = 81 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 5.12 mm 1.99 mm -2.44 m 649 keV 0 eV 0 fm 0 fm Target initStep - 1 5.17 mm 2.73 mm -2.44 m 0 eV 88 keV 737 um 737 um Target phot + 0 -9.94 mm -6.17 mm -2.44 m 202 keV 0 eV 0 fm 0 fm Target initStep + 1 -9.95 mm -6.17 mm -2.44 m 0 eV 202 keV 83.4 um 83.4 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 65, Parent ID = 59 +* G4Track Information: Particle = e-, Track ID = 88, Parent ID = 81 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 5.17 mm 2.73 mm -2.44 m 561 keV 0 eV 0 fm 0 fm Target initStep - 1 5.17 mm 2.75 mm -2.44 m 0 eV 561 keV 354 um 354 um Target eIoni + 0 -7.55 mm -3.43 mm -2.44 m 269 keV 0 eV 0 fm 0 fm Target initStep + 1 -7.55 mm -3.44 mm -2.44 m 0 eV 269 keV 128 um 128 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 57, Parent ID = 48 +* G4Track Information: Particle = e-, Track ID = 79, Parent ID = 73 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 4.57 mm 1.65 mm -2.44 m 12.4 MeV 0 eV 0 fm 0 fm Target initStep - 1 6.17 mm 3.28 mm -2.44 m 5.72 MeV 5.48 MeV 2.7 mm 2.7 mm Target eBrem - 2 6.77 mm 3.88 mm -2.44 m 3.09 MeV 1.95 MeV 1.12 mm 3.82 mm Target eBrem - 3 6.36 mm 3.59 mm -2.44 m 592 keV 2.5 MeV 1.76 mm 5.59 mm Target eIoni - 4 6.35 mm 3.6 mm -2.44 m 0 eV 592 keV 379 um 5.97 mm Target eIoni + 0 -7.88 mm 2.78 mm -2.44 m 1.08 MeV 0 eV 0 fm 0 fm Target initStep + 1 -7.93 mm 2.8 mm -2.44 m 0 eV 1.08 MeV 797 um 797 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 67, Parent ID = 57 +* G4Track Information: Particle = gamma, Track ID = 72, Parent ID = 69 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 6.77 mm 3.88 mm -2.44 m 678 keV 0 eV 0 fm 0 fm Target initStep - 1 8.79 mm 3.97 mm -2.44 m 0 eV 88 keV 6.27 mm 6.27 mm Target phot + 0 -2.44 mm 1.19 mm -2.44 m 288 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.54 mm 1.16 mm -2.44 m 241 keV 0 eV 139 um 139 um Target compt + 2 -3.3 mm 205 um -2.44 m 0 eV 88 keV 1.23 mm 1.37 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 68, Parent ID = 67 +* G4Track Information: Particle = e-, Track ID = 92, Parent ID = 72 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 8.79 mm 3.97 mm -2.44 m 590 keV 0 eV 0 fm 0 fm Target initStep - 1 8.81 mm 3.97 mm -2.44 m 0 eV 590 keV 378 um 378 um Target eIoni + 0 -3.3 mm 205 um -2.44 m 153 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.3 mm 204 um -2.44 m 0 eV 153 keV 54 um 54 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 66, Parent ID = 57 +* G4Track Information: Particle = e-, Track ID = 91, Parent ID = 72 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 6.17 mm 3.28 mm -2.44 m 1.2 MeV 0 eV 0 fm 0 fm Target initStep - 1 6.45 mm 6.59 mm -2.44 m 1.14 MeV 0 eV 3.34 mm 3.34 mm Target compt - 2 6.64 mm 1.31 cm -2.44 m 219 keV 0 eV 6.53 mm 9.86 mm Target compt - 3 6.66 mm 1.28 cm -2.44 m 0 eV 88 keV 372 um 1.02 cm Target phot + 0 -2.54 mm 1.16 mm -2.44 m 47.6 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.54 mm 1.16 mm -2.44 m 0 eV 47.6 keV 8.29 um 8.29 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 71, Parent ID = 66 +* G4Track Information: Particle = gamma, Track ID = 71, Parent ID = 69 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 6.66 mm 1.28 cm -2.44 m 131 keV 0 eV 0 fm 0 fm Target initStep - 1 6.66 mm 1.28 cm -2.44 m 0 eV 131 keV 42.7 um 42.7 um Target eIoni + 0 -1.12 mm 806 um -2.44 m 629 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.1 mm 937 um -2.44 m 0 eV 88 keV 5.79 mm 5.79 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 70, Parent ID = 66 +* G4Track Information: Particle = e-, Track ID = 93, Parent ID = 71 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 6.64 mm 1.31 cm -2.44 m 919 keV 0 eV 0 fm 0 fm Target initStep - 1 6.71 mm 1.31 cm -2.44 m 258 keV 293 keV 284 um 284 um Target eBrem - 2 6.72 mm 1.31 cm -2.44 m 0 eV 258 keV 120 um 404 um Target eIoni + 0 -1.1 mm 937 um -2.44 m 541 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.1 mm 945 um -2.44 m 0 eV 541 keV 337 um 337 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 72, Parent ID = 70 +* G4Track Information: Particle = gamma, Track ID = 70, Parent ID = 69 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 6.71 mm 1.31 cm -2.44 m 369 keV 0 eV 0 fm 0 fm Target initStep - 1 8.03 mm 1.39 cm -2.44 m 0 eV 88 keV 1.95 mm 1.95 mm Target phot + 0 -1.14 mm 863 um -2.44 m 33.4 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.62 mm -332 um -2.43 m 0 eV 0 eV 1.26 cm 1.26 cm Target conv ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 73, Parent ID = 72 +* G4Track Information: Particle = e+, Track ID = 95, Parent ID = 70 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 8.03 mm 1.39 cm -2.44 m 281 keV 0 eV 0 fm 0 fm Target initStep - 1 8.03 mm 1.39 cm -2.44 m 0 eV 281 keV 136 um 136 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 69, Parent ID = 66 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 6.45 mm 6.59 mm -2.44 m 63.5 keV 0 eV 0 fm 0 fm Target initStep - 1 6.45 mm 6.59 mm -2.44 m 0 eV 63.5 keV 13.2 um 13.2 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 47, Parent ID = 45 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 426 um 366 um -2.44 m 3.69 MeV 0 eV 0 fm 0 fm Target initStep - 1 807 um 397 um -2.44 m 443 keV 0 eV 639 um 639 um Target compt - 2 9.4 mm 6.62 mm -2.45 m 408 keV 0 eV 1.27 cm 1.33 cm Target compt - 3 1.02 cm 8.34 mm -2.45 m 0 eV 88 keV 2.88 mm 1.62 cm Target phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 76, Parent ID = 47 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.02 cm 8.34 mm -2.45 m 320 keV 0 eV 0 fm 0 fm Target initStep - 1 1.02 cm 8.34 mm -2.45 m 0 eV 320 keV 164 um 164 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 75, Parent ID = 47 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 9.4 mm 6.62 mm -2.45 m 35.4 keV 0 eV 0 fm 0 fm Target initStep - 1 9.4 mm 6.62 mm -2.45 m 0 eV 35.4 keV 5.12 um 5.12 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 74, Parent ID = 47 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 807 um 397 um -2.44 m 3.25 MeV 0 eV 0 fm 0 fm Target initStep - 1 485 um 490 um -2.44 m 1.54 MeV 1.71 MeV 1.43 mm 1.43 mm Target eBrem - 2 247 um 495 um -2.44 m 235 keV 1.3 MeV 1.1 mm 2.53 mm Target eBrem - 3 244 um 495 um -2.44 m 0 eV 235 keV 105 um 2.64 mm Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 46, Parent ID = 45 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -41.4 um -134 um -2.44 m 5.81 MeV 0 eV 0 fm 0 fm Target initStep - 1 1e+03 um 1.28 mm -2.44 m 382 keV 0 eV 2.94 mm 2.94 mm Target compt - 2 -8.31 mm -412 um -2.44 m 0 eV 88 keV 9.69 mm 1.26 cm Target phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 78, Parent ID = 46 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -8.31 mm -412 um -2.44 m 294 keV 0 eV 0 fm 0 fm Target initStep - 1 -8.31 mm -416 um -2.44 m 0 eV 294 keV 145 um 145 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 77, Parent ID = 46 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1e+03 um 1.28 mm -2.44 m 5.43 MeV 0 eV 0 fm 0 fm Target initStep - 1 368 um 2.02 mm -2.44 m 2.49 MeV 2.94 MeV 2.26 mm 2.26 mm Target eIoni - 2 -99.7 um 1.96 mm -2.44 m 887 keV 1.6 MeV 1.59 mm 3.85 mm Target eIoni - 3 -79 um 1.95 mm -2.44 m 0 eV 887 keV 630 um 4.47 mm Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 44, Parent ID = 6 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -632 um -70.2 um -2.44 m 48.9 MeV 0 eV 0 fm 0 fm Target initStep - 1 -631 um -70.5 um -2.44 m 47.1 MeV 26 keV 23.8 um 23.8 um Target eBrem - 2 -49.2 um -94.3 um -2.44 m 23.9 MeV 4.23 MeV 2.97 mm 2.99 mm Target eBrem - 3 214 um 786 um -2.44 m 22 MeV 1.24 MeV 937 um 3.93 mm Target eBrem - 4 943 um 2.56 mm -2.44 m 14.2 MeV 3.98 MeV 2.28 mm 6.21 mm Target eBrem - 5 1.09 mm 3.16 mm -2.44 m 11.1 MeV 748 keV 629 um 6.84 mm Target eBrem - 6 1.59 mm 3.72 mm -2.44 m 9.66 MeV 1.09 MeV 891 um 7.73 mm Target eBrem - 7 2.67 mm 4.17 mm -2.44 m 6.18 MeV 1.69 MeV 1.49 mm 9.22 mm Target eBrem - 8 2.13 mm 4.47 mm -2.44 m 3.38 MeV 2.79 MeV 2.39 mm 1.16 cm Target eIoni - 9 2.16 mm 4.76 mm -2.44 m 2.29 MeV 513 keV 392 um 1.2 cm Target eBrem - 10 2 mm 5.1 mm -2.44 m 303 keV 867 keV 807 um 1.28 cm Target eBrem - 11 1.99 mm 5.1 mm -2.44 m 0 eV 303 keV 152 um 1.3 cm Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 87, Parent ID = 44 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2 mm 5.1 mm -2.44 m 1.12 MeV 0 eV 0 fm 0 fm Target initStep - 1 1.21 mm 5.87 mm -2.44 m 344 keV 0 eV 1.25 mm 1.25 mm Target compt - 2 -3.7 mm -3.05 mm -2.44 m 0 eV 88 keV 1.11 cm 1.23 cm Target phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 89, Parent ID = 87 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -3.7 mm -3.05 mm -2.44 m 256 keV 0 eV 0 fm 0 fm Target initStep - 1 -3.7 mm -3.06 mm -2.44 m 0 eV 256 keV 119 um 119 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 88, Parent ID = 87 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.21 mm 5.87 mm -2.44 m 778 keV 0 eV 0 fm 0 fm Target initStep - 1 1.2 mm 5.9 mm -2.44 m 0 eV 778 keV 536 um 536 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 86, Parent ID = 44 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.16 mm 4.76 mm -2.44 m 577 keV 0 eV 0 fm 0 fm Target initStep - 1 3.12 mm 1 cm -2.44 m 0 eV 88 keV 7.27 mm 7.27 mm Target phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 90, Parent ID = 86 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 3.12 mm 1 cm -2.44 m 489 keV 0 eV 0 fm 0 fm Target initStep - 1 3.12 mm 1 cm -2.44 m 0 eV 489 keV 295 um 295 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 85, Parent ID = 44 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.67 mm 4.17 mm -2.44 m 1.79 MeV 0 eV 0 fm 0 fm Target initStep - 1 6.07 mm 3.29 mm -2.45 m 734 keV 0 eV 9.3 mm 9.3 mm Target compt - 2 7.36 mm 5.04 mm -2.45 m 734 keV 0 eV 2.52 mm 1.18 cm Target Transportation - 3 47.4 cm 63.7 cm -2.91 m 734 keV 0 eV 91.1 cm 92.2 cm OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 91, Parent ID = 85 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 6.07 mm 3.29 mm -2.45 m 1.05 MeV 0 eV 0 fm 0 fm Target initStep - 1 6.08 mm 3.26 mm -2.45 m 0 eV 1.05 MeV 770 um 770 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 84, Parent ID = 44 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.59 mm 3.72 mm -2.44 m 348 keV 0 eV 0 fm 0 fm Target initStep - 1 3.26 mm 6.85 mm -2.44 m 0 eV 88 keV 3.86 mm 3.86 mm Target phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 92, Parent ID = 84 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 3.26 mm 6.85 mm -2.44 m 260 keV 0 eV 0 fm 0 fm Target initStep - 1 3.26 mm 6.85 mm -2.44 m 0 eV 260 keV 121 um 121 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 83, Parent ID = 44 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.09 mm 3.16 mm -2.44 m 2.38 MeV 0 eV 0 fm 0 fm Target initStep - 1 6.93 mm 2.5 cm -2.45 m 2.38 MeV 0 eV 2.39 cm 2.39 cm Target Transportation - 2 35.8 cm 1.34 m -2.91 m 2.38 MeV 0 eV 1.44 m 1.46 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 82, Parent ID = 44 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 943 um 2.56 mm -2.44 m 3.76 MeV 0 eV 0 fm 0 fm Target initStep - 1 885 um 5.79 mm -2.44 m 1.93 MeV 0 eV 3.23 mm 3.23 mm Target compt - 2 8.39 mm 2.5 cm -2.43 m 1.93 MeV 0 eV 2.21 cm 2.53 cm Target Transportation - 3 3.8 cm 10.1 cm -2.4 m 1.93 MeV 0 eV 8.71 cm 11.2 cm World Transportation - 4 93.6 cm 2.4 m -1.45 m 1.93 MeV 0 eV 2.64 m 2.76 m Tracker Transportation - 5 1.14 m 2.91 m -1.24 m 1.93 MeV 0 eV 58.6 cm 3.34 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 93, Parent ID = 82 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 885 um 5.79 mm -2.44 m 1.83 MeV 0 eV 0 fm 0 fm Target initStep - 1 862 um 5.87 mm -2.44 m 1.58 MeV 254 keV 238 um 238 um Target eBrem - 2 721 um 5.74 mm -2.44 m 1.08 MeV 499 keV 477 um 715 um Target eBrem - 3 695 um 5.8 mm -2.44 m 0 eV 1.08 MeV 795 um 1.51 mm Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 81, Parent ID = 44 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 214 um 786 um -2.44 m 721 keV 0 eV 0 fm 0 fm Target initStep - 1 9.38 mm 2.5 cm -2.44 m 721 keV 0 eV 2.63 cm 2.63 cm Target Transportation - 2 7.74 cm 20.5 cm -2.4 m 721 keV 0 eV 19.5 cm 22.2 cm World Transportation - 3 90.8 cm 2.4 m -1.97 m 721 keV 0 eV 2.39 m 2.61 m Tracker Transportation - 4 1.1 m 2.91 m -1.87 m 721 keV 0 eV 55.5 cm 3.16 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 80, Parent ID = 44 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -49.2 um -94.3 um -2.44 m 18.9 MeV 0 eV 0 fm 0 fm Target initStep - 1 2.61 mm 2.34 cm -2.44 m 0 eV 0 eV 2.37 cm 2.37 cm Target conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 95, Parent ID = 80 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.61 mm 2.34 cm -2.44 m 12.4 MeV 0 eV 0 fm 0 fm Target initStep - 1 2.62 mm 2.38 cm -2.44 m 11.9 MeV 435 keV 403 um 403 um Target msc - 2 2.63 mm 2.38 cm -2.44 m 7.71 MeV 55.6 keV 49.6 um 452 um Target eBrem - 3 2.68 mm 2.42 cm -2.44 m 7.34 MeV 373 keV 403 um 855 um Target msc - 4 2.74 mm 2.43 cm -2.44 m 6.79 MeV 176 keV 134 um 989 um Target eBrem - 5 3.02 mm 2.44 cm -2.44 m 6.21 MeV 581 keV 403 um 1.39 mm Target msc - 6 3.34 mm 2.42 cm -2.44 m 5.73 MeV 483 keV 403 um 1.79 mm Target msc - 7 3.7 mm 2.43 cm -2.44 m 5.13 MeV 594 keV 403 um 2.2 mm Target msc - 8 4.01 mm 2.45 cm -2.44 m 4.71 MeV 427 keV 403 um 2.6 mm Target msc - 9 4.34 mm 2.45 cm -2.44 m 4.13 MeV 577 keV 403 um 3 mm Target msc - 10 4.7 mm 2.45 cm -2.44 m 3.67 MeV 459 keV 403 um 3.4 mm Target msc - 11 4.97 mm 2.43 cm -2.44 m 3.14 MeV 531 keV 403 um 3.81 mm Target msc - 12 5.22 mm 2.45 cm -2.44 m 2.77 MeV 374 keV 403 um 4.21 mm Target msc - 13 5.29 mm 2.48 cm -2.44 m 2.25 MeV 517 keV 403 um 4.61 mm Target msc - 14 5.4 mm 2.5 cm -2.44 m 1.78 MeV 467 keV 403 um 5.01 mm Target msc - 15 5.58 mm 2.49 cm -2.44 m 1.44 MeV 344 keV 403 um 5.42 mm Target msc - 16 5.62 mm 2.5 cm -2.44 m 1.33 MeV 107 keV 122 um 5.54 mm Target Transportation - 17 -14.3 cm 8.86 cm -2.6 m 1.25 MeV 34 keV 23 cm 23.6 cm World eIoni - 18 -27.2 cm 24.8 cm -2.8 m 1.18 MeV 43.5 keV 28.7 cm 52.3 cm World eBrem - 19 -34.5 cm 33.9 cm -2.91 m 1.14 MeV 39.1 keV 16.1 cm 68.5 cm OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 99, Parent ID = 95 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -27.2 cm 24.8 cm -2.8 m 22.1 keV 0 eV 0 fm 0 fm World initStep - 1 -33.5 cm 42.6 cm -2.91 m 22.1 keV 0 eV 21.7 cm 21.7 cm OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 98, Parent ID = 95 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -14.3 cm 8.86 cm -2.6 m 50.7 keV 0 eV 0 fm 0 fm World initStep - 1 -15.1 cm 9.22 cm -2.6 m 44 keV 6.7 keV 9.46 mm 9.46 mm World eIoni - 2 -15.7 cm 9.7 cm -2.6 m 38.5 keV 5.5 keV 7.74 mm 1.72 cm World eIoni - 3 -16.1 cm 9.94 cm -2.61 m 34.1 keV 4.41 keV 6.41 mm 2.36 cm World eIoni - 4 -15.8 cm 9.98 cm -2.61 m 30.5 keV 3.59 keV 5.48 mm 2.91 cm World eIoni - 5 -15.8 cm 10.4 cm -2.61 m 17.3 keV 13.2 keV 4.76 mm 3.39 cm World eIoni - 6 -15.6 cm 10.5 cm -2.61 m 11.7 keV 5.53 keV 2.65 mm 3.65 cm World eIoni - 7 -15.6 cm 10.7 cm -2.61 m 7.97 keV 3.77 keV 1.93 mm 3.84 cm World eIoni - 8 -15.5 cm 10.7 cm -2.61 m 955 eV 7.01 keV 1.38 mm 3.98 cm World eIoni - 9 -15.5 cm 10.7 cm -2.61 m 0 eV 955 eV 54.6 um 3.99 cm World eIoni + 0 -1.62 mm -332 um -2.43 m 1.34 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.8 mm -436 um -2.43 m 357 keV 983 keV 1.03 mm 1.03 mm Target eIoni + 2 -1.79 mm -451 um -2.43 m 0 eV 357 keV 188 um 1.22 mm Target eIoni + 3 -1.79 mm -451 um -2.43 m 0 eV 0 eV 0 fm 1.22 mm Target annihil ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 97, Parent ID = 95 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.74 mm 2.43 cm -2.44 m 369 keV 0 eV 0 fm 0 fm Target initStep - 1 3.72 mm 2.5 cm -2.44 m 369 keV 0 eV 1.45 mm 1.45 mm Target Transportation - 2 5.44 cm 6.11 cm -2.4 m 369 keV 0 eV 7.5 cm 7.64 cm World Transportation - 3 2.4 m 1.73 m -46.6 cm 369 keV 0 eV 3.47 m 3.55 m Tracker Transportation - 4 2.91 m 2.1 m -4.55 cm 369 keV 0 eV 75.4 cm 4.3 m OutOfWorld Transportation + 0 -1.79 mm -451 um -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.75 mm -423 um -2.43 m 327 keV 0 eV 1.36 mm 1.36 mm Target compt + 2 -354 um -5.51 mm -2.43 m 0 eV 88 keV 5.89 mm 7.25 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 99, Parent ID = 97 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -354 um -5.51 mm -2.43 m 239 keV 0 eV 0 fm 0 fm Target initStep + 1 -352 um -5.51 mm -2.43 m 0 eV 239 keV 107 um 107 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 98, Parent ID = 97 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.75 mm -423 um -2.43 m 184 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.75 mm -420 um -2.43 m 0 eV 184 keV 72.5 um 72.5 um Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 96, Parent ID = 95 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.63 mm 2.38 cm -2.44 m 4.17 MeV 0 eV 0 fm 0 fm Target initStep - 1 3.02 mm 2.5 cm -2.44 m 4.17 MeV 0 eV 1.24 mm 1.24 mm Target Transportation - 2 16.8 cm 53.1 cm -2.4 m 4.17 MeV 0 eV 53.4 cm 53.5 cm World Transportation - 3 77.8 cm 2.4 m -2.24 m 4.17 MeV 0 eV 1.97 m 2.51 m Tracker Transportation - 4 94.4 cm 2.91 m -2.2 m 4.17 MeV 0 eV 53.8 cm 3.05 m OutOfWorld Transportation + 0 -1.79 mm -451 um -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.83 mm -482 um -2.43 m 0 eV 88 keV 1.49 mm 1.49 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 94, Parent ID = 80 +* G4Track Information: Particle = e-, Track ID = 100, Parent ID = 96 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.61 mm 2.34 cm -2.44 m 5.51 MeV 0 eV 0 fm 0 fm Target initStep - 1 2.6 mm 2.38 cm -2.44 m 5.03 MeV 484 keV 403 um 403 um Target msc - 2 2.76 mm 2.41 cm -2.44 m 4.56 MeV 463 keV 403 um 805 um Target msc - 3 2.97 mm 2.43 cm -2.44 m 4.13 MeV 434 keV 403 um 1.21 mm Target msc - 4 3.11 mm 2.46 cm -2.44 m 3.75 MeV 377 keV 403 um 1.61 mm Target msc - 5 3.23 mm 2.49 cm -2.44 m 3.32 MeV 433 keV 403 um 2.01 mm Target msc - 6 3.11 mm 2.5 cm -2.44 m 3.07 MeV 245 keV 179 um 2.19 mm Target Transportation - 7 3.11 mm 2.5 cm -2.44 m 3.07 MeV 0 eV 0 fm 2.19 mm World Transportation - 8 3.07 mm 2.5 cm -2.44 m 3.02 MeV 57.6 keV 48.7 um 2.24 mm Target msc - 9 3.03 mm 2.5 cm -2.44 m 2.98 MeV 36.3 keV 48.7 um 2.29 mm Target msc - 10 3 mm 2.5 cm -2.44 m 2.95 MeV 28.4 keV 48.7 um 2.34 mm Target msc - 11 2.97 mm 2.49 cm -2.44 m 2.91 MeV 38.8 keV 48.7 um 2.39 mm Target msc - 12 2.93 mm 2.49 cm -2.44 m 2.84 MeV 77.2 keV 48.7 um 2.44 mm Target msc - 13 2.92 mm 2.49 cm -2.44 m 2.79 MeV 47.3 keV 48.7 um 2.48 mm Target msc - 14 2.9 mm 2.49 cm -2.44 m 2.74 MeV 48.1 keV 48.7 um 2.53 mm Target msc - 15 2.87 mm 2.49 cm -2.44 m 2.71 MeV 35.6 keV 48.7 um 2.58 mm Target msc - 16 2.82 mm 2.49 cm -2.44 m 2.63 MeV 71.8 keV 48.7 um 2.63 mm Target msc - 17 2.78 mm 2.49 cm -2.44 m 2.58 MeV 57 keV 48.7 um 2.68 mm Target msc - 18 2.74 mm 2.49 cm -2.44 m 2.51 MeV 63 keV 48.7 um 2.73 mm Target msc - 19 2.7 mm 2.49 cm -2.44 m 2.46 MeV 55.7 keV 48.7 um 2.78 mm Target msc - 20 2.69 mm 2.49 cm -2.44 m 2.41 MeV 49.4 keV 48.7 um 2.83 mm Target msc - 21 2.66 mm 2.49 cm -2.44 m 2.32 MeV 90.3 keV 48.7 um 2.87 mm Target msc - 22 2.68 mm 2.49 cm -2.44 m 2.27 MeV 45.9 keV 48.7 um 2.92 mm Target msc - 23 2.71 mm 2.49 cm -2.44 m 2.23 MeV 45.5 keV 48.7 um 2.97 mm Target msc - 24 2.74 mm 2.49 cm -2.44 m 2.18 MeV 50.6 keV 48.7 um 3.02 mm Target msc - 25 2.76 mm 2.5 cm -2.44 m 2.1 MeV 78.5 keV 48.7 um 3.07 mm Target msc - 26 2.77 mm 2.5 cm -2.44 m 2.04 MeV 61 keV 48.7 um 3.12 mm Target msc - 27 2.78 mm 2.5 cm -2.44 m 2.03 MeV 3.87 keV 10.7 um 3.13 mm Target Transportation - 28 1.19 cm 6.87 cm -2.4 m 2.02 MeV 15.6 keV 6.22 cm 6.54 cm World Transportation - 29 3.23 cm 57.3 cm -1.96 m 1.86 MeV 104 keV 68.3 cm 74.8 cm Tracker eIoni - 30 -26.4 cm 1.22 m -1.45 m 1.05 MeV 156 keV 89.5 cm 1.64 m Tracker eIoni - 31 -46.1 cm 1.44 m -60.9 cm 884 keV 170 keV 95.4 cm 2.6 m Tracker eIoni - 32 -52.8 cm 2.03 m -18.3 cm 742 keV 142 keV 76.3 cm 3.36 m Tracker eIoni - 33 -39.5 cm 2.15 m 34.9 cm 627 keV 115 keV 60.6 cm 3.97 m Tracker eIoni - 34 -34.4 cm 2.4 m 60.5 cm 549 keV 78 keV 39.1 cm 4.36 m Tracker Transportation - 35 -48.9 cm 2.73 m 73.7 cm 471 keV 77.9 keV 40.1 cm 4.76 m World eIoni - 36 -44.1 cm 2.91 m 83.5 cm 423 keV 48.3 keV 22.9 cm 4.99 m OutOfWorld Transportation + 0 -1.83 mm -482 um -2.43 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.82 mm -481 um -2.43 m 0 eV 423 keV 242 um 242 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 101, Parent ID = 94 +* G4Track Information: Particle = e-, Track ID = 94, Parent ID = 70 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -26.4 cm 1.22 m -1.45 m 651 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -54 cm 1.59 m -1.3 m 530 keV 121 keV 50.7 cm 50.7 cm Tracker eIoni - 2 -87.8 cm 1.73 m -1.3 m 448 keV 82.4 keV 38.2 cm 88.9 cm Tracker eIoni - 3 -97.7 cm 1.85 m -1.06 m 385 keV 63.3 keV 30 cm 1.19 m Tracker eIoni - 4 -98.6 cm 1.9 m -83.8 cm 336 keV 48.6 keV 23.9 cm 1.43 m Tracker eIoni - 5 -96.3 cm 2.03 m -70.3 cm 290 keV 46.1 keV 19.5 cm 1.62 m Tracker eIoni - 6 -97.7 cm 2.03 m -55.5 cm 226 keV 63.6 keV 15.6 cm 1.78 m Tracker eIoni - 7 -88.1 cm 2 m -55.7 cm 202 keV 24 keV 10.6 cm 1.89 m Tracker eIoni - 8 -81.6 cm 2 m -50.6 cm 186 keV 16.6 keV 8.8 cm 1.97 m Tracker eIoni - 9 -76.7 cm 1.97 m -47.3 cm 169 keV 16.4 keV 7.69 cm 2.05 m Tracker eIoni - 10 -72.7 cm 1.92 m -48 cm 151 keV 18.1 keV 6.62 cm 2.12 m Tracker eIoni - 11 -68.5 cm 1.9 m -49.4 cm 138 keV 13.7 keV 5.5 cm 2.17 m Tracker eIoni - 12 -65.5 cm 1.88 m -52.1 cm 123 keV 14.6 keV 4.71 cm 2.22 m Tracker eIoni - 13 -62 cm 1.87 m -52.7 cm 102 keV 20.8 keV 3.9 cm 2.26 m Tracker eIoni - 14 -59.7 cm 1.86 m -51.7 cm 93.1 keV 9.14 keV 2.88 cm 2.29 m Tracker eIoni - 15 -58.8 cm 1.84 m -50 cm 80.1 keV 12.9 keV 2.48 cm 2.31 m Tracker eIoni - 16 -57.2 cm 1.83 m -49.8 cm 72.8 keV 7.36 keV 1.93 cm 2.33 m Tracker eIoni - 17 -55.9 cm 1.83 m -50.1 cm 65.7 keV 7.09 keV 1.66 cm 2.35 m Tracker eIoni - 18 -55 cm 1.82 m -50.4 cm 55.7 keV 9.94 keV 1.41 cm 2.36 m Tracker eIoni - 19 -54.1 cm 1.82 m -50.9 cm 48.4 keV 7.31 keV 1.1 cm 2.37 m Tracker eIoni - 20 -54 cm 1.83 m -50.8 cm 43 keV 5.43 keV 8.86 mm 2.38 m Tracker eIoni - 21 -54.2 cm 1.83 m -50.6 cm 38.6 keV 4.38 keV 7.49 mm 2.39 m Tracker eIoni - 22 -54.3 cm 1.84 m -50.4 cm 34.1 keV 4.56 keV 6.44 mm 2.4 m Tracker eIoni - 23 -54.6 cm 1.84 m -50.8 cm 27.4 keV 6.63 keV 5.48 mm 2.4 m Tracker eIoni - 24 -54.8 cm 1.84 m -51 cm 23 keV 4.38 keV 4.21 mm 2.4 m Tracker eIoni - 25 -55.1 cm 1.84 m -51.2 cm 16.1 keV 6.91 keV 3.48 mm 2.41 m Tracker eIoni - 26 -55.2 cm 1.84 m -51.4 cm 10.3 keV 5.88 keV 2.49 mm 2.41 m Tracker eIoni - 27 -55.2 cm 1.84 m -51.4 cm 2.35 keV 7.91 keV 1.73 mm 2.41 m Tracker eIoni - 28 -55.2 cm 1.84 m -51.4 cm 0 eV 2.35 keV 201 um 2.41 m Tracker eIoni + 0 -1.62 mm -332 um -2.43 m 31.1 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.61 mm -339 um -2.43 m 23.8 MeV 649 keV 234 um 234 um Target eBrem + 2 -1.6 mm -389 um -2.43 m 19.7 MeV 968 keV 676 um 911 um Target eBrem + 3 -1.82 mm -307 um -2.43 m 3.7 MeV 1.07 MeV 833 um 1.74 mm Target eBrem + 4 -2.51 mm -572 um -2.43 m 1.63 MeV 2.07 MeV 1.91 mm 3.65 mm Target eIoni + 5 -2.3 mm -724 um -2.43 m 357 keV 1.28 MeV 1.22 mm 4.87 mm Target eIoni + 6 -2.31 mm -733 um -2.43 m 0 eV 357 keV 192 um 5.07 mm Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 100, Parent ID = 94 +* G4Track Information: Particle = gamma, Track ID = 103, Parent ID = 94 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 3.23 cm 57.3 cm -1.96 m 51.6 keV 0 eV 0 fm 0 fm Tracker initStep - 1 4.04 cm 56.9 cm -1.96 m 45.3 keV 6.26 keV 9.72 mm 9.72 mm Tracker eIoni - 2 4.44 cm 56.7 cm -1.97 m 36.5 keV 8.82 keV 8.07 mm 1.78 cm Tracker eIoni - 3 4.83 cm 57 cm -1.97 m 31.8 keV 4.67 keV 5.98 mm 2.38 cm Tracker eIoni - 4 4.89 cm 56.9 cm -1.97 m 23 keV 8.79 keV 5 mm 2.88 cm Tracker eIoni - 5 4.76 cm 56.9 cm -1.98 m 20.3 keV 2.72 keV 3.48 mm 3.22 cm Tracker eIoni - 6 4.59 cm 56.9 cm -1.98 m 14.6 keV 5.68 keV 3.06 mm 3.53 cm Tracker eIoni - 7 4.44 cm 56.8 cm -1.98 m 10.8 keV 3.79 keV 2.3 mm 3.76 cm Tracker eIoni - 8 4.29 cm 56.8 cm -1.98 m 7 keV 3.83 keV 1.82 mm 3.94 cm Tracker eIoni - 9 4.28 cm 56.8 cm -1.98 m 2.14 keV 4.86 keV 1.19 mm 4.06 cm Tracker eIoni - 10 4.28 cm 56.9 cm -1.98 m 0 eV 2.14 keV 174 um 4.08 cm Tracker eIoni + 0 -1.82 mm -307 um -2.43 m 15 MeV 0 eV 0 fm 0 fm Target initStep + 1 -5.78 mm -3.38 mm -2.41 m 0 eV 0 eV 2.05 cm 2.05 cm Target conv ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 79, Parent ID = 44 +* G4Track Information: Particle = e+, Track ID = 105, Parent ID = 103 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -631 um -70.5 um -2.44 m 1.84 MeV 0 eV 0 fm 0 fm Target initStep - 1 -69.9 um -760 um -2.42 m 0 eV 88 keV 1.9 cm 1.9 cm Target phot + 0 -5.78 mm -3.38 mm -2.41 m 1.16 MeV 0 eV 0 fm 0 fm Target initStep + 1 -5.8 mm -3.45 mm -2.41 m 0 eV 1.16 MeV 874 um 874 um Target eIoni + 2 -5.8 mm -3.45 mm -2.41 m 0 eV 0 eV 0 fm 874 um Target annihil ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 102, Parent ID = 79 +* G4Track Information: Particle = gamma, Track ID = 107, Parent ID = 105 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -69.9 um -760 um -2.42 m 1.75 MeV 0 eV 0 fm 0 fm Target initStep - 1 -8.96 um -926 um -2.42 m 60.8 keV 360 keV 308 um 308 um Target eBrem - 2 -8.3 um -926 um -2.42 m 0 eV 60.8 keV 12.4 um 321 um Target eIoni + 0 -5.8 mm -3.45 mm -2.41 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -5.77 mm -3.53 mm -2.41 m 301 keV 0 eV 262 um 262 um Target compt + 2 -4.75 mm -2.95 mm -2.41 m 0 eV 88 keV 1.26 mm 1.52 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 103, Parent ID = 102 +* G4Track Information: Particle = e-, Track ID = 109, Parent ID = 107 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -8.96 um -926 um -2.42 m 1.33 MeV 0 eV 0 fm 0 fm Target initStep - 1 -1.43 mm -6.8 mm -2.43 m 558 keV 0 eV 1.2 cm 1.2 cm Target compt - 2 -1.72 cm -6.76 mm -2.44 m 192 keV 0 eV 1.74 cm 2.94 cm Target compt - 3 -1.64 cm -6.38 mm -2.44 m 0 eV 88 keV 922 um 3.04 cm Target phot + 0 -4.75 mm -2.95 mm -2.41 m 213 keV 0 eV 0 fm 0 fm Target initStep + 1 -4.75 mm -2.95 mm -2.41 m 0 eV 213 keV 90.1 um 90.1 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 106, Parent ID = 103 +* G4Track Information: Particle = e-, Track ID = 108, Parent ID = 107 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.64 cm -6.38 mm -2.44 m 104 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.64 cm -6.38 mm -2.44 m 0 eV 104 keV 29.3 um 29.3 um Target eIoni + 0 -5.77 mm -3.53 mm -2.41 m 210 keV 0 eV 0 fm 0 fm Target initStep + 1 -5.78 mm -3.53 mm -2.41 m 0 eV 210 keV 88.5 um 88.5 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 105, Parent ID = 103 +* G4Track Information: Particle = gamma, Track ID = 106, Parent ID = 105 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.72 cm -6.76 mm -2.44 m 367 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.73 cm -6.76 mm -2.44 m 0 eV 367 keV 199 um 199 um Target eIoni + 0 -5.8 mm -3.45 mm -2.41 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -6.68 mm -941 um -2.4 m 511 keV 0 eV 8.37 mm 8.37 mm Target Transportation + 2 -18.4 cm 50.4 cm -80 cm 511 keV 0 eV 1.69 m 1.7 m Tracker Transportation + 3 -20.6 cm 56.7 cm -60 cm 511 keV 0 eV 21.1 cm 1.91 m Chamber Transportation + 4 -27.2 cm 75.7 cm 0 fm 511 keV 0 eV 63.3 cm 2.54 m Tracker Transportation + 5 -29.4 cm 82 cm 20 cm 511 keV 0 eV 21.1 cm 2.75 m Chamber Transportation + 6 -36 cm 1.01 m 80 cm 511 keV 0 eV 63.3 cm 3.38 m Tracker Transportation + 7 -38.3 cm 1.07 m 1 m 511 keV 0 eV 21.1 cm 3.59 m Chamber Transportation + 8 -44.9 cm 1.26 m 1.6 m 511 keV 0 eV 63.3 cm 4.23 m Tracker Transportation + 9 -47.1 cm 1.33 m 1.8 m 511 keV 0 eV 21.1 cm 4.44 m Chamber Transportation + 10 -53.7 cm 1.51 m 2.4 m 511 keV 0 eV 63.3 cm 5.07 m Tracker Transportation + 11 -59.4 cm 1.68 m 2.91 m 511 keV 0 eV 53.8 cm 5.61 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 104, Parent ID = 103 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.43 mm -6.8 mm -2.43 m 770 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.42 mm -6.82 mm -2.43 m 0 eV 770 keV 530 um 530 um Target eIoni + 0 -5.78 mm -3.38 mm -2.41 m 12.8 MeV 0 eV 0 fm 0 fm Target initStep + 1 -5.8 mm -3.4 mm -2.41 m 12.3 MeV 96.3 keV 97.7 um 97.7 um Target eBrem + 2 -5.81 mm -3.4 mm -2.41 m 11.3 MeV 58 keV 64.8 um 162 um Target eBrem + 3 -6.23 mm -4.46 mm -2.41 m 8.78 MeV 2.55 MeV 2 mm 2.17 mm Target msc + 4 -4.69 mm -4.39 mm -2.41 m 4.79 MeV 3.99 MeV 2 mm 4.17 mm Target msc + 5 -4.38 mm -4.29 mm -2.41 m 4.12 MeV 388 keV 360 um 4.53 mm Target eBrem + 6 -4.22 mm -4.47 mm -2.41 m 3.16 MeV 385 keV 298 um 4.83 mm Target eBrem + 7 -3.74 mm -4.45 mm -2.41 m 875 keV 2.28 MeV 1.64 mm 6.46 mm Target eBrem + 8 -3.75 mm -4.48 mm -2.41 m 0 eV 875 keV 619 um 7.08 mm Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 5, Parent ID = 1 +* G4Track Information: Particle = gamma, Track ID = 113, Parent ID = 104 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -753 um 7.26 um -2.45 m 4.46 MeV 0 eV 0 fm 0 fm Target initStep - 1 -716 um -50.9 um -2.44 m 0 eV 0 eV 4.61 mm 4.61 mm Target conv + 0 -4.22 mm -4.47 mm -2.41 m 571 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.6 mm -7.61 mm -2.41 m 0 eV 88 keV 4.09 mm 4.09 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 108, Parent ID = 5 +* G4Track Information: Particle = e-, Track ID = 114, Parent ID = 113 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -716 um -50.9 um -2.44 m 887 keV 0 eV 0 fm 0 fm Target initStep - 1 -740 um -72.4 um -2.44 m 0 eV 887 keV 635 um 635 um Target eIoni - 2 -740 um -72.4 um -2.44 m 0 eV 0 eV 0 fm 635 um Target annihil + 0 -1.6 mm -7.61 mm -2.41 m 483 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.58 mm -7.62 mm -2.41 m 0 eV 483 keV 290 um 290 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 110, Parent ID = 108 +* G4Track Information: Particle = gamma, Track ID = 112, Parent ID = 104 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -740 um -72.4 um -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 4.99 mm -1.24 cm -2.44 m 0 eV 88 keV 1.42 cm 1.42 cm Target phot + 0 -4.38 mm -4.29 mm -2.41 m 285 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.99 mm -4.49 mm -2.41 m 0 eV 88 keV 631 um 631 um Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 111, Parent ID = 110 +* G4Track Information: Particle = e-, Track ID = 115, Parent ID = 112 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 4.99 mm -1.24 cm -2.44 m 423 keV 0 eV 0 fm 0 fm Target initStep - 1 4.99 mm -1.24 cm -2.44 m 0 eV 423 keV 242 um 242 um Target eIoni + 0 -3.99 mm -4.49 mm -2.41 m 197 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.99 mm -4.49 mm -2.41 m 0 eV 197 keV 79.8 um 79.8 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 109, Parent ID = 108 +* G4Track Information: Particle = gamma, Track ID = 111, Parent ID = 104 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -740 um -72.4 um -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 -831 um 125 um -2.44 m 221 keV 0 eV 227 um 227 um Target compt - 2 566 um 381 um -2.44 m 0 eV 88 keV 1.49 mm 1.72 mm Target phot + 0 -5.81 mm -3.4 mm -2.41 m 925 keV 0 eV 0 fm 0 fm Target initStep + 1 -7.95 mm -3.51 mm -2.4 m 0 eV 88 keV 7.29 mm 7.29 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 113, Parent ID = 109 +* G4Track Information: Particle = e-, Track ID = 116, Parent ID = 111 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 566 um 381 um -2.44 m 133 keV 0 eV 0 fm 0 fm Target initStep - 1 568 um 382 um -2.44 m 0 eV 133 keV 43.4 um 43.4 um Target eIoni + 0 -7.95 mm -3.51 mm -2.4 m 837 keV 0 eV 0 fm 0 fm Target initStep + 1 -7.95 mm -3.5 mm -2.4 m 0 eV 837 keV 586 um 586 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 112, Parent ID = 109 +* G4Track Information: Particle = gamma, Track ID = 110, Parent ID = 104 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -831 um 125 um -2.44 m 290 keV 0 eV 0 fm 0 fm Target initStep - 1 -838 um 131 um -2.44 m 0 eV 290 keV 143 um 143 um Target eIoni + 0 -5.8 mm -3.4 mm -2.41 m 383 keV 0 eV 0 fm 0 fm Target initStep + 1 -5.88 mm -3.41 mm -2.41 m 339 keV 0 eV 262 um 262 um Target compt + 2 -5.03 mm -2.9 mm -2.4 m 0 eV 88 keV 3.1 mm 3.36 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 107, Parent ID = 5 +* G4Track Information: Particle = e-, Track ID = 118, Parent ID = 110 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -716 um -50.9 um -2.44 m 2.55 MeV 0 eV 0 fm 0 fm Target initStep - 1 -361 um 211 um -2.44 m 237 keV 986 keV 959 um 959 um Target eBrem - 2 -360 um 214 um -2.44 m 0 eV 237 keV 106 um 1.06 mm Target eIoni + 0 -5.03 mm -2.9 mm -2.4 m 251 keV 0 eV 0 fm 0 fm Target initStep + 1 -5.03 mm -2.9 mm -2.4 m 0 eV 251 keV 115 um 115 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 114, Parent ID = 107 +* G4Track Information: Particle = e-, Track ID = 117, Parent ID = 110 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -361 um 211 um -2.44 m 1.32 MeV 0 eV 0 fm 0 fm Target initStep - 1 -4.41 mm -5.15 mm -2.45 m 1.32 MeV 0 eV 9.63 mm 9.63 mm Target Transportation - 2 -27.5 cm -36.3 cm -2.91 m 1.32 MeV 0 eV 64.2 cm 65.2 cm OutOfWorld Transportation + 0 -5.88 mm -3.41 mm -2.41 m 43.9 keV 0 eV 0 fm 0 fm Target initStep + 1 -5.88 mm -3.41 mm -2.41 m 0 eV 43.9 keV 7.27 um 7.27 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 4, Parent ID = 1 +* G4Track Information: Particle = gamma, Track ID = 102, Parent ID = 94 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -732 um -53.2 um -2.45 m 19.5 MeV 0 eV 0 fm 0 fm Target initStep - 1 -567 um 93.2 um -2.42 m 0 eV 0 eV 3.01 cm 3.01 cm Target conv + 0 -1.6 mm -389 um -2.43 m 3.05 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.67 mm -186 um -2.43 m 732 keV 0 eV 708 um 708 um Target compt + 2 -5.12 mm 283 um -2.43 m 646 keV 0 eV 3.72 mm 4.42 mm Target compt + 3 -1.49 cm 3.09 mm -2.43 m 186 keV 0 eV 1.02 cm 1.46 cm Target compt + 4 -1.31 cm 3 mm -2.43 m 0 eV 88 keV 1.87 mm 1.65 cm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 116, Parent ID = 4 +* G4Track Information: Particle = e-, Track ID = 122, Parent ID = 102 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -567 um 93.2 um -2.42 m 9.36 MeV 0 eV 0 fm 0 fm Target initStep - 1 -813 um 392 um -2.42 m 6.2 MeV 1.18 MeV 947 um 947 um Target eBrem - 2 -1 mm 359 um -2.42 m 5.03 MeV 349 keV 296 um 1.24 mm Target eBrem - 3 -1.02 mm 790 um -2.42 m 3.71 MeV 786 keV 822 um 2.06 mm Target eBrem - 4 -1.11 mm 900 um -2.42 m 2.15 MeV 915 keV 890 um 2.95 mm Target eBrem - 5 -949 um 832 um -2.42 m 1.77 MeV 389 keV 342 um 3.3 mm Target eBrem - 6 -1.17 mm 792 um -2.42 m 0 eV 643 keV 352 um 3.65 mm Target annihil + 0 -1.31 cm 3 mm -2.43 m 98.1 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.31 cm 2.99 mm -2.43 m 0 eV 98.1 keV 26.8 um 26.8 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 122, Parent ID = 116 +* G4Track Information: Particle = e-, Track ID = 121, Parent ID = 102 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.17 mm 792 um -2.42 m 1.32 MeV 0 eV 0 fm 0 fm Target initStep - 1 -2.19 mm -2.5 cm -2.41 m 1.32 MeV 0 eV 2.68 cm 2.68 cm Target Transportation - 2 -3.46 mm -5.69 cm -2.4 m 1.32 MeV 0 eV 3.32 cm 6.01 cm World Transportation - 3 -9.64 cm -2.4 m -1.73 m 1.32 MeV 0 eV 2.44 m 2.5 m Tracker Transportation - 4 -11.7 cm -2.91 m -1.58 m 1.32 MeV 0 eV 53.1 cm 3.03 m OutOfWorld Transportation + 0 -1.49 cm 3.09 mm -2.43 m 460 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.49 cm 3.09 mm -2.43 m 0 eV 460 keV 272 um 272 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 121, Parent ID = 116 +* G4Track Information: Particle = e-, Track ID = 120, Parent ID = 102 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.17 mm 792 um -2.42 m 825 keV 0 eV 0 fm 0 fm Target initStep - 1 1.08 mm 96.6 um -2.42 m 233 keV 0 eV 3.21 mm 3.21 mm Target compt - 2 166 um 1.06 mm -2.42 m 0 eV 88 keV 1.33 mm 4.55 mm Target phot + 0 -5.12 mm 283 um -2.43 m 86.4 keV 0 eV 0 fm 0 fm Target initStep + 1 -5.12 mm 282 um -2.43 m 0 eV 86.4 keV 21.9 um 21.9 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 124, Parent ID = 121 +* G4Track Information: Particle = e-, Track ID = 119, Parent ID = 102 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 166 um 1.06 mm -2.42 m 145 keV 0 eV 0 fm 0 fm Target initStep - 1 169 um 1.06 mm -2.42 m 0 eV 145 keV 49.8 um 49.8 um Target eIoni + 0 -1.67 mm -186 um -2.43 m 2.32 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.32 mm 70.2 um -2.43 m 187 keV 1.18 MeV 1.25 mm 1.25 mm Target eBrem + 2 -1.32 mm 74.9 um -2.43 m 0 eV 187 keV 74.3 um 1.32 mm Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 123, Parent ID = 121 +* G4Track Information: Particle = gamma, Track ID = 123, Parent ID = 119 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.08 mm 96.6 um -2.42 m 593 keV 0 eV 0 fm 0 fm Target initStep - 1 1.1 mm 87.3 um -2.42 m 0 eV 593 keV 380 um 380 um Target eIoni + 0 -1.32 mm 70.2 um -2.43 m 957 keV 0 eV 0 fm 0 fm Target initStep + 1 -7.59 mm 3.23 mm -2.44 m 333 keV 0 eV 1.09 cm 1.09 cm Target compt + 2 -9.51 mm -1.55 mm -2.44 m 0 eV 88 keV 5.17 mm 1.61 cm Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 120, Parent ID = 116 +* G4Track Information: Particle = e-, Track ID = 125, Parent ID = 123 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.11 mm 900 um -2.42 m 644 keV 0 eV 0 fm 0 fm Target initStep - 1 -931 um 804 um -2.42 m 196 keV 0 eV 203 um 203 um Target compt - 2 -1.05 mm 1.04 mm -2.42 m 0 eV 88 keV 267 um 470 um Target phot + 0 -9.51 mm -1.55 mm -2.44 m 245 keV 0 eV 0 fm 0 fm Target initStep + 1 -9.52 mm -1.56 mm -2.44 m 0 eV 245 keV 111 um 111 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 126, Parent ID = 120 +* G4Track Information: Particle = e-, Track ID = 124, Parent ID = 123 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.05 mm 1.04 mm -2.42 m 108 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.05 mm 1.04 mm -2.42 m 0 eV 108 keV 31.4 um 31.4 um Target eIoni + 0 -7.59 mm 3.23 mm -2.44 m 623 keV 0 eV 0 fm 0 fm Target initStep + 1 -7.61 mm 3.25 mm -2.44 m 0 eV 623 keV 405 um 405 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 125, Parent ID = 120 +* G4Track Information: Particle = gamma, Track ID = 101, Parent ID = 94 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -931 um 804 um -2.42 m 448 keV 0 eV 0 fm 0 fm Target initStep - 1 -917 um 794 um -2.42 m 0 eV 448 keV 262 um 262 um Target eIoni + 0 -1.61 mm -339 um -2.43 m 6.67 MeV 0 eV 0 fm 0 fm Target initStep + 1 -4.83 mm 698 um -2.4 m 6.67 MeV 0 eV 2.95 cm 2.95 cm Target Transportation + 2 -9.29 cm 2.9 cm -1.6 m 6.67 MeV 0 eV 80.5 cm 83.5 cm Tracker Transportation + 3 -11.5 cm 3.61 cm -1.4 m 6.67 MeV 0 eV 20.1 cm 1.04 m Chamber Transportation + 4 -18.1 cm 5.73 cm -80 cm 6.67 MeV 0 eV 60.4 cm 1.64 m Tracker Transportation + 5 -20.3 cm 6.44 cm -60 cm 6.67 MeV 0 eV 20.1 cm 1.84 m Chamber Transportation + 6 -26.9 cm 8.57 cm 0.114 fm 6.67 MeV 0 eV 60.4 cm 2.45 m Tracker Transportation + 7 -29.1 cm 9.28 cm 20 cm 6.67 MeV 0 eV 20.1 cm 2.65 m Chamber Transportation + 8 -35.7 cm 11.4 cm 80 cm 6.67 MeV 0 eV 60.4 cm 3.25 m Tracker Transportation + 9 -37.9 cm 12.1 cm 1 m 6.67 MeV 0 eV 20.1 cm 3.45 m Chamber Transportation + 10 -44.5 cm 14.2 cm 1.6 m 6.67 MeV 0 eV 60.4 cm 4.06 m Tracker Transportation + 11 -46.7 cm 14.9 cm 1.8 m 6.67 MeV 0 eV 20.1 cm 4.26 m Chamber Transportation + 12 -53.3 cm 17.1 cm 2.4 m 6.67 MeV 0 eV 60.4 cm 4.86 m Tracker Transportation + 13 -59 cm 18.9 cm 2.91 m 6.67 MeV 0 eV 51.3 cm 5.37 m OutOfWorld Transportation ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 119, Parent ID = 116 +* G4Track Information: Particle = e-, Track ID = 68, Parent ID = 6 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.02 mm 790 um -2.42 m 535 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.27 mm 2.22 mm -2.42 m 190 keV 0 eV 1.49 mm 1.49 mm Target compt - 2 -706 um 1.35 mm -2.42 m 0 eV 88 keV 1.62 mm 3.1 mm Target phot + 0 -710 um 604 um -2.44 m 47.3 MeV 0 eV 0 fm 0 fm Target initStep + 1 -742 um 629 um -2.44 m 38.4 MeV 332 keV 283 um 283 um Target eBrem + 2 -757 um 652 um -2.44 m 27.1 MeV 198 keV 183 um 467 um Target eBrem + 3 -365 um 1.47 mm -2.44 m 16.9 MeV 5.3 MeV 2.9 mm 3.37 mm Target eBrem + 4 -316 um 1.82 mm -2.44 m 14.7 MeV 577 keV 467 um 3.84 mm Target eBrem + 5 -396 um 2.23 mm -2.44 m 13.4 MeV 786 keV 555 um 4.39 mm Target eBrem + 6 366 um 2.64 mm -2.44 m 8.85 MeV 2.3 MeV 1.48 mm 5.88 mm Target eBrem + 7 63.3 um 3.3 mm -2.44 m 6.82 MeV 1.19 MeV 1.05 mm 6.92 mm Target eBrem + 8 -234 um 3.48 mm -2.44 m 2.69 MeV 2.46 MeV 1.81 mm 8.74 mm Target eBrem + 9 -313 um 3.76 mm -2.44 m 705 keV 1.99 MeV 1.65 mm 1.04 cm Target eIoni + 10 -289 um 3.74 mm -2.44 m 0 eV 705 keV 475 um 1.09 cm Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 128, Parent ID = 119 +* G4Track Information: Particle = gamma, Track ID = 133, Parent ID = 68 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -706 um 1.35 mm -2.42 m 102 keV 0 eV 0 fm 0 fm Target initStep - 1 -706 um 1.35 mm -2.42 m 0 eV 102 keV 28.3 um 28.3 um Target eIoni + 0 -234 um 3.48 mm -2.44 m 1.66 MeV 0 eV 0 fm 0 fm Target initStep + 1 180 um 2.31 cm -2.44 m 360 keV 0 eV 1.97 cm 1.97 cm Target compt + 2 -1.02 mm 2.3 cm -2.44 m 0 eV 88 keV 1.59 mm 2.13 cm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 127, Parent ID = 119 +* G4Track Information: Particle = e-, Track ID = 135, Parent ID = 133 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.27 mm 2.22 mm -2.42 m 345 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.27 mm 2.23 mm -2.42 m 0 eV 345 keV 183 um 183 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 118, Parent ID = 116 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1 mm 359 um -2.42 m 820 keV 0 eV 0 fm 0 fm Target initStep - 1 -7.74 mm 3.95 mm -2.41 m 196 keV 0 eV 1.29 cm 1.29 cm Target compt - 2 -7.59 mm 3.84 mm -2.41 m 0 eV 88 keV 389 um 1.33 cm Target phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 130, Parent ID = 118 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -7.59 mm 3.84 mm -2.41 m 108 keV 0 eV 0 fm 0 fm Target initStep - 1 -7.59 mm 3.84 mm -2.41 m 0 eV 108 keV 31.2 um 31.2 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 129, Parent ID = 118 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -7.74 mm 3.95 mm -2.41 m 624 keV 0 eV 0 fm 0 fm Target initStep - 1 -7.76 mm 3.96 mm -2.41 m 0 eV 624 keV 406 um 406 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 117, Parent ID = 116 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -813 um 392 um -2.42 m 1.97 MeV 0 eV 0 fm 0 fm Target initStep - 1 -1.91 cm -514 um -2.41 m 277 keV 0 eV 2.04 cm 2.04 cm Target compt - 2 -1.86 cm -894 um -2.41 m 0 eV 88 keV 664 um 2.1 cm Target phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 132, Parent ID = 117 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.86 cm -894 um -2.41 m 189 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.86 cm -896 um -2.41 m 0 eV 189 keV 75.4 um 75.4 um Target eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 131, Parent ID = 117 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.91 cm -514 um -2.41 m 1.7 MeV 0 eV 0 fm 0 fm Target initStep - 1 -1.92 cm -420 um -2.41 m 1.16 MeV 157 keV 186 um 186 um Target eBrem - 2 -1.93 cm -406 um -2.41 m 0 eV 1.16 MeV 845 um 1.03 mm Target eBrem - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 133, Parent ID = 131 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.92 cm -420 um -2.41 m 383 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.96 cm -183 um -2.41 m 0 eV 88 keV 472 um 472 um Target phot + 0 -1.02 mm 2.3 cm -2.44 m 272 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.03 mm 2.3 cm -2.44 m 0 eV 272 keV 129 um 129 um Target eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 134, Parent ID = 133 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.96 cm -183 um -2.41 m 295 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.96 cm -174 um -2.41 m 0 eV 295 keV 146 um 146 um Target eIoni + 0 180 um 2.31 cm -2.44 m 1.3 MeV 0 eV 0 fm 0 fm Target initStep + 1 194 um 2.32 cm -2.44 m 0 eV 1.3 MeV 984 um 984 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 115, Parent ID = 4 +* G4Track Information: Particle = gamma, Track ID = 132, Parent ID = 68 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -567 um 93.2 um -2.42 m 9.1 MeV 0 eV 0 fm 0 fm Target initStep - 1 -1.03 mm -332 um -2.42 m 6.85 MeV 1.4 MeV 1.32 mm 1.32 mm Target eBrem - 2 -1.41 mm -835 um -2.42 m 4.84 MeV 1.34 MeV 765 um 2.08 mm Target eBrem - 3 -1.18 mm -1.01 mm -2.42 m 3.95 MeV 545 keV 502 um 2.58 mm Target eBrem - 4 -1.16 mm -908 um -2.42 m 2.27 MeV 118 keV 113 um 2.7 mm Target eBrem - 5 -1.16 mm -808 um -2.42 m 1.41 MeV 148 keV 117 um 2.81 mm Target eBrem - 6 -1.28 mm -820 um -2.42 m 35.2 keV 1.37 MeV 1.07 mm 3.88 mm Target eIoni - 7 -1.28 mm -820 um -2.42 m 0 eV 35.2 keV 5.07 um 3.89 mm Target eIoni + 0 63.3 um 3.3 mm -2.44 m 844 keV 0 eV 0 fm 0 fm Target initStep + 1 -306 um 3.11 mm -2.44 m 258 keV 0 eV 494 um 494 um Target compt + 2 668 um 2.4 mm -2.44 m 0 eV 88 keV 1.21 mm 1.7 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 139, Parent ID = 115 +* G4Track Information: Particle = e-, Track ID = 137, Parent ID = 132 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.16 mm -808 um -2.42 m 718 keV 0 eV 0 fm 0 fm Target initStep - 1 -4.97 mm 1.33 cm -2.43 m 0 eV 88 keV 1.64 cm 1.64 cm Target phot + 0 668 um 2.4 mm -2.44 m 170 keV 0 eV 0 fm 0 fm Target initStep + 1 669 um 2.4 mm -2.44 m 0 eV 170 keV 64.1 um 64.1 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 140, Parent ID = 139 +* G4Track Information: Particle = e-, Track ID = 136, Parent ID = 132 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -4.97 mm 1.33 cm -2.43 m 630 keV 0 eV 0 fm 0 fm Target initStep - 1 -4.98 mm 1.33 cm -2.43 m 0 eV 630 keV 411 um 411 um Target eIoni + 0 -306 um 3.11 mm -2.44 m 586 keV 0 eV 0 fm 0 fm Target initStep + 1 -328 um 3.11 mm -2.44 m 0 eV 586 keV 375 um 375 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 138, Parent ID = 115 +* G4Track Information: Particle = gamma, Track ID = 131, Parent ID = 68 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.16 mm -908 um -2.42 m 1.56 MeV 0 eV 0 fm 0 fm Target initStep - 1 -1.66 mm 1.83 cm -2.41 m 1.31 MeV 0 eV 2.2 cm 2.2 cm Target compt - 2 -2.39 mm 2.5 cm -2.41 m 1.31 MeV 0 eV 6.83 mm 2.89 cm Target Transportation - 3 -6.36 mm 6.15 cm -2.4 m 1.31 MeV 0 eV 3.72 cm 6.61 cm World Transportation - 4 -26.1 cm 2.4 m -2 m 1.31 MeV 0 eV 2.39 m 2.45 m Tracker Transportation - 5 -31.7 cm 2.91 m -1.92 m 1.31 MeV 0 eV 52 cm 2.97 m OutOfWorld Transportation + 0 366 um 2.64 mm -2.44 m 2.3 MeV 0 eV 0 fm 0 fm Target initStep + 1 5.67 mm 2.11 cm -2.42 m 235 keV 0 eV 2.95 cm 2.95 cm Target compt + 2 5.67 mm 2.07 cm -2.42 m 0 eV 88 keV 998 um 3.05 cm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 141, Parent ID = 138 +* G4Track Information: Particle = e-, Track ID = 139, Parent ID = 131 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.66 mm 1.83 cm -2.41 m 248 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.66 mm 1.83 cm -2.41 m 0 eV 248 keV 113 um 113 um Target eIoni + 0 5.67 mm 2.07 cm -2.42 m 147 keV 0 eV 0 fm 0 fm Target initStep + 1 5.67 mm 2.07 cm -2.42 m 0 eV 147 keV 51.1 um 51.1 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 137, Parent ID = 115 +* G4Track Information: Particle = e-, Track ID = 138, Parent ID = 131 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.18 mm -1.01 mm -2.42 m 342 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.67 mm 2.44 mm -2.42 m 0 eV 88 keV 3.75 mm 3.75 mm Target phot + 0 5.67 mm 2.11 cm -2.42 m 2.06 MeV 0 eV 0 fm 0 fm Target initStep + 1 5.5 mm 2.11 cm -2.42 m 783 keV 654 keV 650 um 650 um Target eBrem + 2 5.49 mm 2.11 cm -2.42 m 0 eV 783 keV 541 um 1.19 mm Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 142, Parent ID = 137 +* G4Track Information: Particle = gamma, Track ID = 140, Parent ID = 138 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.67 mm 2.44 mm -2.42 m 254 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.67 mm 2.45 mm -2.42 m 0 eV 254 keV 117 um 117 um Target eIoni + 0 5.5 mm 2.11 cm -2.42 m 623 keV 0 eV 0 fm 0 fm Target initStep + 1 5.23 mm 2.03 cm -2.42 m 193 keV 0 eV 1.15 mm 1.15 mm Target compt + 2 5.03 mm 2.06 cm -2.42 m 0 eV 88 keV 567 um 1.71 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 136, Parent ID = 115 +* G4Track Information: Particle = e-, Track ID = 142, Parent ID = 140 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.41 mm -835 um -2.42 m 669 keV 0 eV 0 fm 0 fm Target initStep - 1 -727 um -6.08 mm -2.42 m 558 keV 0 eV 8.26 mm 8.26 mm Target compt - 2 1.47 mm -9.49 mm -2.43 m 0 eV 88 keV 4.46 mm 1.27 cm Target phot + 0 5.03 mm 2.06 cm -2.42 m 105 keV 0 eV 0 fm 0 fm Target initStep + 1 5.03 mm 2.06 cm -2.42 m 0 eV 105 keV 30 um 30 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 144, Parent ID = 136 +* G4Track Information: Particle = e-, Track ID = 141, Parent ID = 140 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.47 mm -9.49 mm -2.43 m 470 keV 0 eV 0 fm 0 fm Target initStep - 1 1.47 mm -9.51 mm -2.43 m 0 eV 470 keV 280 um 280 um Target eIoni + 0 5.23 mm 2.03 cm -2.42 m 429 keV 0 eV 0 fm 0 fm Target initStep + 1 5.22 mm 2.02 cm -2.42 m 0 eV 429 keV 248 um 248 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 143, Parent ID = 136 +* G4Track Information: Particle = gamma, Track ID = 130, Parent ID = 68 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -727 um -6.08 mm -2.42 m 111 keV 0 eV 0 fm 0 fm Target initStep - 1 -728 um -6.08 mm -2.42 m 0 eV 111 keV 32.9 um 32.9 um Target eIoni + 0 -396 um 2.23 mm -2.44 m 426 keV 0 eV 0 fm 0 fm Target initStep + 1 -297 um 2.33 mm -2.44 m 0 eV 88 keV 521 um 521 um Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 135, Parent ID = 115 +* G4Track Information: Particle = e-, Track ID = 143, Parent ID = 130 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.03 mm -332 um -2.42 m 854 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.45 mm -1.27 mm -2.42 m 822 keV 0 eV 1.38 mm 1.38 mm Target compt - 2 -5.36 mm -2.41 cm -2.4 m 822 keV 0 eV 2.89 cm 3.02 cm Target Transportation - 3 -41.1 cm -2.4 m -61.8 cm 822 keV 0 eV 3 m 3.03 m Tracker Transportation - 4 -49.8 cm -2.91 m -23.5 cm 822 keV 0 eV 64.3 cm 3.67 m OutOfWorld Transportation + 0 -297 um 2.33 mm -2.44 m 338 keV 0 eV 0 fm 0 fm Target initStep + 1 -293 um 2.32 mm -2.44 m 0 eV 338 keV 177 um 177 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 145, Parent ID = 135 +* G4Track Information: Particle = gamma, Track ID = 129, Parent ID = 68 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.45 mm -1.27 mm -2.42 m 32.4 keV 0 eV 0 fm 0 fm Target initStep - 1 -1.45 mm -1.27 mm -2.42 m 0 eV 32.4 keV 4.43 um 4.43 um Target eIoni + 0 -316 um 1.82 mm -2.44 m 1.65 MeV 0 eV 0 fm 0 fm Target initStep + 1 -138 um 4.02 mm -2.44 m 0 eV 88 keV 2.57 mm 2.57 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 3, Parent ID = 1 +* G4Track Information: Particle = e-, Track ID = 144, Parent ID = 129 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -734 um -55.5 um -2.45 m 49.6 MeV 0 eV 0 fm 0 fm Target initStep - 1 -740 um -44.6 um -2.44 m 0 eV 88 keV 6.62 mm 6.62 mm Target phot + 0 -138 um 4.02 mm -2.44 m 1.56 MeV 0 eV 0 fm 0 fm Target initStep + 1 -179 um 3.93 mm -2.44 m 265 keV 1.29 MeV 1.17 mm 1.17 mm Target eIoni + 2 -175 um 3.93 mm -2.44 m 0 eV 265 keV 125 um 1.3 mm Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 146, Parent ID = 3 +* G4Track Information: Particle = gamma, Track ID = 128, Parent ID = 68 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -740 um -44.6 um -2.44 m 49.5 MeV 0 eV 0 fm 0 fm Target initStep - 1 -772 um -446 um -2.44 m 42.7 MeV 4.43 MeV 2.61 mm 2.61 mm Target eBrem - 2 -729 um -512 um -2.44 m 40.7 MeV 294 keV 230 um 2.84 mm Target eBrem - 3 -631 um -619 um -2.44 m 39.4 MeV 616 keV 507 um 3.35 mm Target eBrem - 4 -590 um -663 um -2.44 m 8.95 MeV 217 keV 182 um 3.53 mm Target eBrem - 5 -579 um -686 um -2.44 m 7.48 MeV 73.6 keV 45.7 um 3.58 mm Target eBrem - 6 306 um -2.12 mm -2.44 m 4.32 MeV 3.17 MeV 2.57 mm 6.14 mm Target eBrem - 7 738 um -1.33 mm -2.44 m 1.51 MeV 2.35 MeV 2.04 mm 8.18 mm Target eBrem - 8 664 um -1.14 mm -2.44 m 255 keV 1.25 MeV 1.14 mm 9.32 mm Target eIoni - 9 664 um -1.14 mm -2.44 m 0 eV 255 keV 118 um 9.44 mm Target eIoni + 0 -365 um 1.47 mm -2.44 m 4.94 MeV 0 eV 0 fm 0 fm Target initStep + 1 -355 um 1.7 mm -2.44 m 386 keV 0 eV 349 um 349 um Target compt + 2 408 um -731 um -2.44 m 328 keV 0 eV 2.85 mm 3.19 mm Target compt + 3 1.85 mm -3.67 mm -2.44 m 0 eV 88 keV 3.35 mm 6.55 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 152, Parent ID = 146 +* G4Track Information: Particle = e-, Track ID = 147, Parent ID = 128 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 738 um -1.33 mm -2.44 m 461 keV 0 eV 0 fm 0 fm Target initStep - 1 749 um -1.29 mm -2.44 m 194 keV 0 eV 45.8 um 45.8 um Target compt - 2 513 um -1.21 mm -2.44 m 0 eV 88 keV 519 um 565 um Target phot + 0 1.85 mm -3.67 mm -2.44 m 240 keV 0 eV 0 fm 0 fm Target initStep + 1 1.85 mm -3.68 mm -2.44 m 0 eV 240 keV 108 um 108 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 154, Parent ID = 152 +* G4Track Information: Particle = e-, Track ID = 146, Parent ID = 128 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 513 um -1.21 mm -2.44 m 106 keV 0 eV 0 fm 0 fm Target initStep - 1 511 um -1.2 mm -2.44 m 0 eV 106 keV 30.5 um 30.5 um Target eIoni + 0 408 um -731 um -2.44 m 57.8 keV 0 eV 0 fm 0 fm Target initStep + 1 408 um -731 um -2.44 m 0 eV 57.8 keV 11.4 um 11.4 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 153, Parent ID = 152 +* G4Track Information: Particle = e-, Track ID = 145, Parent ID = 128 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 749 um -1.29 mm -2.44 m 266 keV 0 eV 0 fm 0 fm Target initStep - 1 752 um -1.29 mm -2.44 m 0 eV 266 keV 126 um 126 um Target eIoni + 0 -355 um 1.7 mm -2.44 m 4.56 MeV 0 eV 0 fm 0 fm Target initStep + 1 -289 um 1.89 mm -2.44 m 3.84 MeV 269 keV 240 um 240 um Target eBrem + 2 37.7 um 2.27 mm -2.44 m 2.2 MeV 864 keV 839 um 1.08 mm Target eBrem + 3 -219 um 2.2 mm -2.44 m 245 keV 1.95 MeV 1.48 mm 2.56 mm Target eIoni + 4 -225 um 2.2 mm -2.44 m 0 eV 245 keV 111 um 2.67 mm Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 151, Parent ID = 146 +* G4Track Information: Particle = gamma, Track ID = 149, Parent ID = 145 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -579 um -686 um -2.44 m 1.39 MeV 0 eV 0 fm 0 fm Target initStep - 1 2.34 mm -4.38 mm -2.43 m 792 keV 0 eV 9.09 mm 9.09 mm Target compt - 2 6.15 mm -1.49 cm -2.43 m 0 eV 88 keV 1.17 cm 2.08 cm Target phot + 0 37.7 um 2.27 mm -2.44 m 780 keV 0 eV 0 fm 0 fm Target initStep + 1 -4.58 mm 1.15 cm -2.45 m 0 eV 88 keV 1.24 cm 1.24 cm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 156, Parent ID = 151 +* G4Track Information: Particle = e-, Track ID = 150, Parent ID = 149 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 6.15 mm -1.49 cm -2.43 m 704 keV 0 eV 0 fm 0 fm Target initStep - 1 6.16 mm -1.49 cm -2.43 m 0 eV 704 keV 474 um 474 um Target eIoni + 0 -4.58 mm 1.15 cm -2.45 m 692 keV 0 eV 0 fm 0 fm Target initStep + 1 -4.59 mm 1.16 cm -2.45 m 0 eV 692 keV 464 um 464 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 155, Parent ID = 151 +* G4Track Information: Particle = gamma, Track ID = 148, Parent ID = 145 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.34 mm -4.38 mm -2.43 m 601 keV 0 eV 0 fm 0 fm Target initStep - 1 2.34 mm -4.38 mm -2.43 m 0 eV 601 keV 387 um 387 um Target eIoni + 0 -289 um 1.89 mm -2.44 m 445 keV 0 eV 0 fm 0 fm Target initStep + 1 157 um 1.12 cm -2.44 m 0 eV 88 keV 9.34 mm 9.34 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 150, Parent ID = 146 +* G4Track Information: Particle = e-, Track ID = 151, Parent ID = 148 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -590 um -663 um -2.44 m 30.3 MeV 0 eV 0 fm 0 fm Target initStep - 1 1.9 mm -2.86 mm -2.43 m 0 eV 0 eV 9.16 mm 9.16 mm Target conv + 0 157 um 1.12 cm -2.44 m 357 keV 0 eV 0 fm 0 fm Target initStep + 1 152 um 1.12 cm -2.44 m 0 eV 357 keV 192 um 192 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 158, Parent ID = 150 +* G4Track Information: Particle = gamma, Track ID = 127, Parent ID = 68 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.9 mm -2.86 mm -2.43 m 24.4 MeV 0 eV 0 fm 0 fm Target initStep - 1 2.04 mm -3.08 mm -2.43 m 23.4 MeV 677 keV 575 um 575 um Target eBrem - 2 2.09 mm -3.16 mm -2.43 m 20.9 MeV 410 keV 273 um 848 um Target eBrem - 3 2.15 mm -3.19 mm -2.43 m 18.5 MeV 149 keV 140 um 988 um Target eBrem - 4 3.43 mm -1.73 mm -2.43 m 7.71 MeV 4.92 MeV 4.14 mm 5.12 mm Target eBrem - 5 5.11 mm -1.98 mm -2.43 m 4.51 MeV 3.19 MeV 2.65 mm 7.78 mm Target eIoni - 6 6.17 mm -1.5 mm -2.43 m 1.96 MeV 2.55 MeV 2.1 mm 9.87 mm Target eIoni - 7 6.51 mm -1.4 mm -2.43 m 744 keV 1.22 MeV 829 um 1.07 cm Target eBrem - 8 6.52 mm -1.28 mm -2.43 m 204 keV 540 keV 374 um 1.11 cm Target eBrem - 9 6.52 mm -1.28 mm -2.43 m 0 eV 204 keV 81.1 um 1.12 cm Target eIoni - 10 6.52 mm -1.28 mm -2.43 m 0 eV 0 eV 0 fm 1.12 cm Target annihil + 0 -757 um 652 um -2.44 m 11.1 MeV 0 eV 0 fm 0 fm Target initStep + 1 -2.64 mm 3.11 mm -2.42 m 0 eV 0 eV 1.94 cm 1.94 cm Target conv ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 164, Parent ID = 158 +* G4Track Information: Particle = e+, Track ID = 153, Parent ID = 127 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 6.52 mm -1.28 mm -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 7.91 mm -1.78 mm -2.43 m 201 keV 0 eV 1.67 mm 1.67 mm Target compt - 2 7.89 mm -1.78 mm -2.43 m 0 eV 88 keV 25.3 um 1.7 mm Target phot + 0 -2.64 mm 3.11 mm -2.42 m 7.31 MeV 0 eV 0 fm 0 fm Target initStep + 1 -2.64 mm 3.58 mm -2.42 m 3.32 MeV 1.26 MeV 1.11 mm 1.11 mm Target eBrem + 2 -3.2 mm 4.04 mm -2.42 m 1.49 MeV 1.83 MeV 1.83 mm 2.94 mm Target eIoni + 3 -3.25 mm 4.08 mm -2.42 m 477 eV 1.49 MeV 1.14 mm 4.09 mm Target eIoni + 4 -3.25 mm 4.08 mm -2.42 m 0 eV 477 eV 8.49 nm 4.09 mm Target eIoni + 5 -3.25 mm 4.08 mm -2.42 m 0 eV 0 eV 0 fm 4.09 mm Target annihil ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 166, Parent ID = 164 +* G4Track Information: Particle = gamma, Track ID = 156, Parent ID = 153 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 7.89 mm -1.78 mm -2.43 m 113 keV 0 eV 0 fm 0 fm Target initStep - 1 7.89 mm -1.79 mm -2.43 m 0 eV 113 keV 33.8 um 33.8 um Target eIoni + 0 -3.25 mm 4.08 mm -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.39 mm -434 um -2.43 m 0 eV 88 keV 7.71 mm 7.71 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 157, Parent ID = 156 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.39 mm -434 um -2.43 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.39 mm -444 um -2.43 m 0 eV 423 keV 242 um 242 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 155, Parent ID = 153 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.25 mm 4.08 mm -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.74 mm 6.64 mm -2.42 m 310 keV 0 eV 4.38 mm 4.38 mm Target compt + 2 -8.46 mm 4.91 mm -2.42 m 146 keV 0 eV 5.96 mm 1.03 cm Target compt + 3 -8.39 mm 4.96 mm -2.42 m 0 eV 88 keV 86.6 um 1.04 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 160, Parent ID = 155 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -8.39 mm 4.96 mm -2.42 m 57.6 keV 0 eV 0 fm 0 fm Target initStep + 1 -8.39 mm 4.96 mm -2.42 m 0 eV 57.6 keV 11.3 um 11.3 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 159, Parent ID = 155 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -8.46 mm 4.91 mm -2.42 m 164 keV 0 eV 0 fm 0 fm Target initStep + 1 -8.47 mm 4.91 mm -2.42 m 0 eV 164 keV 60.5 um 60.5 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 158, Parent ID = 155 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.74 mm 6.64 mm -2.42 m 201 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.74 mm 6.65 mm -2.42 m 0 eV 201 keV 82.7 um 82.7 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 154, Parent ID = 153 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.64 mm 3.58 mm -2.42 m 2.72 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.97 cm -3.33 mm -2.4 m 2.72 MeV 0 eV 3 cm 3 cm Target Transportation + 2 -2.4 m -96.5 cm 89.7 cm 2.72 MeV 0 eV 4.18 m 4.21 m Tracker Transportation + 3 -2.91 m -1.17 m 1.6 m 2.72 MeV 0 eV 89.5 cm 5.1 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 152, Parent ID = 127 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.64 mm 3.11 mm -2.42 m 2.75 MeV 0 eV 0 fm 0 fm Target initStep + 1 -2.62 mm 3.66 mm -2.42 m 1.05 MeV 1.7 MeV 1.67 mm 1.67 mm Target eIoni + 2 -2.66 mm 3.68 mm -2.42 m 0 eV 1.05 MeV 769 um 2.44 mm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 126, Parent ID = 68 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -742 um 629 um -2.44 m 8.58 MeV 0 eV 0 fm 0 fm Target initStep + 1 -785 um 660 um -2.44 m 0 eV 0 eV 368 um 368 um Target conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 162, Parent ID = 126 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -785 um 660 um -2.44 m 3.52 MeV 0 eV 0 fm 0 fm Target initStep + 1 -304 um 256 um -2.44 m 1.49 MeV 2.03 MeV 1.88 mm 1.88 mm Target eIoni + 2 -46.7 um 153 um -2.44 m 266 keV 1.23 MeV 1.15 mm 3.03 mm Target eIoni + 3 -37.9 um 156 um -2.44 m 0 eV 266 keV 122 um 3.15 mm Target eIoni + 4 -37.9 um 156 um -2.44 m 0 eV 0 eV 0 fm 3.15 mm Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 164, Parent ID = 162 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -37.9 um 156 um -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -951 um -705 um -2.45 m 0 eV 88 keV 3.13 mm 3.13 mm Target phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 165, Parent ID = 164 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 7.91 mm -1.78 mm -2.43 m 310 keV 0 eV 0 fm 0 fm Target initStep - 1 7.92 mm -1.78 mm -2.43 m 0 eV 310 keV 156 um 156 um Target eIoni + 0 -951 um -705 um -2.45 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 -945 um -701 um -2.45 m 0 eV 423 keV 242 um 242 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 163, Parent ID = 158 +* G4Track Information: Particle = gamma, Track ID = 163, Parent ID = 162 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 6.52 mm -1.28 mm -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 3.13 mm -52.5 um -2.42 m 0 eV 88 keV 4.1 mm 4.1 mm Target phot + 0 -37.9 um 156 um -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 461 um 626 um -2.44 m 324 keV 0 eV 1.71 mm 1.71 mm Target compt + 2 3.03 mm 483 um -2.44 m 0 eV 88 keV 2.61 mm 4.32 mm Target phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 167, Parent ID = 163 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 3.13 mm -52.5 um -2.42 m 423 keV 0 eV 0 fm 0 fm Target initStep - 1 3.12 mm -54.9 um -2.42 m 0 eV 423 keV 242 um 242 um Target eIoni + 0 3.03 mm 483 um -2.44 m 236 keV 0 eV 0 fm 0 fm Target initStep + 1 3.03 mm 481 um -2.44 m 0 eV 236 keV 105 um 105 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 162, Parent ID = 158 +* G4Track Information: Particle = e-, Track ID = 166, Parent ID = 163 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 3.43 mm -1.73 mm -2.43 m 5.84 MeV 0 eV 0 fm 0 fm Target initStep - 1 1.04 cm -1.88 mm -2.4 m 5.84 MeV 0 eV 2.76 cm 2.76 cm Target Transportation - 2 21.9 cm -6.28 mm -1.6 m 5.84 MeV 0 eV 82.7 cm 85.4 cm Tracker Transportation - 3 24 cm -6.72 mm -1.52 m 5.84 MeV 0 eV 8.41 cm 93.8 cm Chamber Transportation - 4 42.7 cm -1.07 cm -80 cm 5.84 MeV 0 eV 74.3 cm 1.68 m Tracker Transportation - 5 47.9 cm -1.18 cm -60 cm 5.84 MeV 0 eV 20.7 cm 1.89 m Chamber Transportation - 6 63.6 cm -1.51 cm 0 fm 5.84 MeV 0 eV 62 cm 2.51 m Tracker Transportation - 7 68.8 cm -1.62 cm 20 cm 5.84 MeV 0 eV 20.7 cm 2.71 m Chamber Transportation - 8 84.4 cm -1.95 cm 80 cm 5.84 MeV 0 eV 62 cm 3.33 m Tracker Transportation - 9 89.6 cm -2.06 cm 1 m 5.84 MeV 0 eV 20.7 cm 3.54 m Chamber Transportation - 10 1.05 m -2.39 cm 1.6 m 5.84 MeV 0 eV 62 cm 4.16 m Tracker Transportation - 11 1.1 m -2.5 cm 1.8 m 5.84 MeV 0 eV 20.7 cm 4.37 m Chamber Transportation - 12 1.26 m -2.83 cm 2.4 m 5.84 MeV 0 eV 62 cm 4.99 m Tracker Transportation - 13 1.39 m -3.11 cm 2.91 m 5.84 MeV 0 eV 52.7 cm 5.51 m OutOfWorld Transportation + 0 461 um 626 um -2.44 m 187 keV 0 eV 0 fm 0 fm Target initStep + 1 460 um 628 um -2.44 m 0 eV 187 keV 73.9 um 73.9 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 161, Parent ID = 158 +* G4Track Information: Particle = e-, Track ID = 161, Parent ID = 126 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.15 mm -3.19 mm -2.43 m 2.24 MeV 0 eV 0 fm 0 fm Target initStep - 1 2.28 mm -3.24 mm -2.43 m 0 eV 0 eV 366 um 366 um Target conv + 0 -785 um 660 um -2.44 m 4.03 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.16 mm -633 nm -2.44 m 1.73 MeV 2.3 MeV 1.99 mm 1.99 mm Target eIoni + 2 -1.17 mm -119 um -2.44 m 496 keV 1.23 MeV 1.08 mm 3.07 mm Target eBrem + 3 -1.18 mm -139 um -2.44 m 0 eV 496 keV 300 um 3.37 mm Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 169, Parent ID = 161 +* G4Track Information: Particle = gamma, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.28 mm -3.24 mm -2.43 m 811 keV 0 eV 0 fm 0 fm Target initStep - 1 2.31 mm -3.27 mm -2.43 m 0 eV 811 keV 569 um 569 um Target eIoni - 2 2.31 mm -3.27 mm -2.43 m 0 eV 0 eV 0 fm 569 um Target annihil + 0 -486 um 326 um -2.45 m 5.98 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.84 mm 1.65 mm -2.43 m 1.89 MeV 0 eV 1.78 cm 1.78 cm Target compt + 2 -975 um 9.11 mm -2.42 m 789 keV 0 eV 1.2 cm 2.97 cm Target compt + 3 -1.05 mm 2.5 cm -2.42 m 789 keV 0 eV 1.59 cm 4.56 cm Target Transportation + 4 -1.41 cm 2.91 m -2.42 m 789 keV 0 eV 2.89 m 2.93 m OutOfWorld Transportation ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 171, Parent ID = 169 +* G4Track Information: Particle = e-, Track ID = 169, Parent ID = 5 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.31 mm -3.27 mm -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 4.39 mm -1.76 cm -2.43 m 0 eV 88 keV 1.47 cm 1.47 cm Target phot + 0 -975 um 9.11 mm -2.42 m 1.1 MeV 0 eV 0 fm 0 fm Target initStep + 1 -969 um 9.13 mm -2.42 m 0 eV 1.1 MeV 810 um 810 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 172, Parent ID = 171 +* G4Track Information: Particle = e-, Track ID = 168, Parent ID = 5 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 4.39 mm -1.76 cm -2.43 m 423 keV 0 eV 0 fm 0 fm Target initStep - 1 4.39 mm -1.76 cm -2.43 m 0 eV 423 keV 242 um 242 um Target eIoni + 0 -1.84 mm 1.65 mm -2.43 m 4.1 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.97 mm 1.61 mm -2.43 m 3.29 MeV 269 keV 241 um 241 um Target eBrem + 2 -1.67 mm 1.74 mm -2.43 m 587 keV 1.11 MeV 485 um 726 um Target eBrem + 3 -1.67 mm 1.77 mm -2.43 m 0 eV 587 keV 375 um 1.1 mm Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 170, Parent ID = 169 +* G4Track Information: Particle = gamma, Track ID = 171, Parent ID = 168 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.31 mm -3.27 mm -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep - 1 2.02 mm -1.27 mm -2.43 m 306 keV 0 eV 2.05 mm 2.05 mm Target compt - 2 1.82 mm 98.3 um -2.43 m 0 eV 88 keV 2.83 mm 4.88 mm Target phot + 0 -1.67 mm 1.74 mm -2.43 m 1.6 MeV 0 eV 0 fm 0 fm Target initStep + 1 -393 um 2.5 cm -2.44 m 1.6 MeV 0 eV 2.5 cm 2.5 cm Target Transportation + 2 6.63 cm 1.24 m -2.91 m 1.6 MeV 0 eV 1.3 m 1.33 m OutOfWorld Transportation ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 174, Parent ID = 170 +* G4Track Information: Particle = gamma, Track ID = 170, Parent ID = 168 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.82 mm 98.3 um -2.43 m 218 keV 0 eV 0 fm 0 fm Target initStep - 1 1.82 mm 103 um -2.43 m 0 eV 218 keV 93.4 um 93.4 um Target eIoni + 0 -1.97 mm 1.61 mm -2.43 m 537 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.29 mm 1.88 mm -2.43 m 199 keV 0 eV 2.68 mm 2.68 mm Target compt + 2 -1.12 mm 2.34 mm -2.43 m 0 eV 88 keV 761 um 3.44 mm Target phot ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 173, Parent ID = 170 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.02 mm -1.27 mm -2.43 m 205 keV 0 eV 0 fm 0 fm Target initStep - 1 2.02 mm -1.27 mm -2.43 m 0 eV 205 keV 85.2 um 85.2 um Target eIoni + 0 -1.12 mm 2.34 mm -2.43 m 111 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.11 mm 2.34 mm -2.43 m 0 eV 111 keV 32.7 um 32.7 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 168, Parent ID = 161 +* G4Track Information: Particle = e-, Track ID = 172, Parent ID = 170 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.28 mm -3.24 mm -2.43 m 412 keV 0 eV 0 fm 0 fm Target initStep - 1 2.29 mm -3.24 mm -2.43 m 0 eV 412 keV 233 um 233 um Target eIoni + 0 -1.29 mm 1.88 mm -2.43 m 338 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.29 mm 1.88 mm -2.43 m 0 eV 338 keV 177 um 177 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 160, Parent ID = 158 +* G4Track Information: Particle = gamma, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.09 mm -3.16 mm -2.43 m 2.12 MeV 0 eV 0 fm 0 fm Target initStep - 1 1.36 cm -1.34 cm -2.41 m 282 keV 0 eV 2.57 cm 2.57 cm Target compt - 2 1.31 cm -1.34 cm -2.41 m 0 eV 88 keV 442 um 2.62 cm Target phot + 0 -426 um 333 um -2.45 m 33.3 MeV 0 eV 0 fm 0 fm Target initStep + 1 -446 um 330 um -2.45 m 0 eV 0 eV 190 um 190 um Target conv ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 176, Parent ID = 160 +* G4Track Information: Particle = e+, Track ID = 175, Parent ID = 4 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.31 cm -1.34 cm -2.41 m 194 keV 0 eV 0 fm 0 fm Target initStep - 1 1.31 cm -1.34 cm -2.41 m 0 eV 194 keV 78.2 um 78.2 um Target eIoni + 0 -446 um 330 um -2.45 m 30.3 MeV 0 eV 0 fm 0 fm Target initStep + 1 -419 um 377 um -2.45 m 26.9 MeV 2.17 MeV 913 um 913 um Target eBrem + 2 -333 um 555 um -2.45 m 24.7 MeV 1.39 MeV 1.14 mm 2.05 mm Target eBrem + 3 -274 um 746 um -2.45 m 22.6 MeV 1.12 MeV 851 um 2.9 mm Target eBrem + 4 -120 um 831 um -2.44 m 16 MeV 763 keV 692 um 3.6 mm Target eBrem + 5 -106 um 864 um -2.44 m 15.2 MeV 174 keV 114 um 3.71 mm Target eBrem + 6 1.37 mm 1.26 mm -2.44 m 11.1 MeV 4.06 MeV 3.13 mm 6.84 mm Target msc + 7 2.15 mm 2.86 mm -2.44 m 7.87 MeV 2.84 MeV 2.11 mm 8.95 mm Target eBrem + 8 2.57 mm 3.2 mm -2.44 m 2.16 MeV 1.27 MeV 910 um 9.86 mm Target eBrem + 9 2.77 mm 2.76 mm -2.44 m 279 keV 1.88 MeV 1.48 mm 1.13 cm Target eIoni + 10 2.77 mm 2.76 mm -2.44 m 0 eV 279 keV 131 um 1.15 cm Target eIoni + 11 2.77 mm 2.76 mm -2.44 m 0 eV 0 eV 0 fm 1.15 cm Target annihil ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 175, Parent ID = 160 +* G4Track Information: Particle = gamma, Track ID = 184, Parent ID = 175 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.36 cm -1.34 cm -2.41 m 1.84 MeV 0 eV 0 fm 0 fm Target initStep - 1 1.36 cm -1.34 cm -2.41 m 1.18 MeV 105 keV 97.1 um 97.1 um Target eBrem - 2 1.35 cm -1.32 cm -2.41 m 153 keV 1.02 MeV 526 um 623 um Target eBrem - 3 1.35 cm -1.32 cm -2.41 m 0 eV 153 keV 54.4 um 677 um Target eIoni + 0 2.77 mm 2.76 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 864 um 2.47 mm -2.44 m 313 keV 0 eV 2.36 mm 2.36 mm Target compt + 2 225 um 2.44 mm -2.44 m 0 eV 88 keV 762 um 3.12 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 186, Parent ID = 184 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 225 um 2.44 mm -2.44 m 225 keV 0 eV 0 fm 0 fm Target initStep + 1 223 um 2.45 mm -2.44 m 0 eV 225 keV 98.2 um 98.2 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 185, Parent ID = 184 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 864 um 2.47 mm -2.44 m 198 keV 0 eV 0 fm 0 fm Target initStep + 1 862 um 2.47 mm -2.44 m 0 eV 198 keV 80.5 um 80.5 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 183, Parent ID = 175 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 2.77 mm 2.76 mm -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 4.72 mm 3.05 mm -2.44 m 0 eV 88 keV 2.42 mm 2.42 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 187, Parent ID = 183 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 4.72 mm 3.05 mm -2.44 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 4.74 mm 3.06 mm -2.44 m 0 eV 423 keV 242 um 242 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 182, Parent ID = 175 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 2.57 mm 3.2 mm -2.44 m 4.44 MeV 0 eV 0 fm 0 fm Target initStep + 1 5.63 mm 5.87 mm -2.45 m 4.44 MeV 0 eV 8.49 mm 8.49 mm Target Transportation + 2 19.4 cm 17.1 cm -2.91 m 4.44 MeV 0 eV 52.4 cm 53.2 cm OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 181, Parent ID = 175 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 2.15 mm 2.86 mm -2.44 m 434 keV 0 eV 0 fm 0 fm Target initStep + 1 2.15 mm 2.87 mm -2.44 m 169 keV 0 eV 2.66 um 2.66 um Target compt + 2 1.88 mm 2.7 mm -2.44 m 0 eV 88 keV 573 um 575 um Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 189, Parent ID = 181 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.88 mm 2.7 mm -2.44 m 80.9 keV 0 eV 0 fm 0 fm Target initStep + 1 1.88 mm 2.7 mm -2.44 m 0 eV 80.9 keV 19.6 um 19.6 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 188, Parent ID = 181 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 2.15 mm 2.87 mm -2.44 m 265 keV 0 eV 0 fm 0 fm Target initStep + 1 2.15 mm 2.87 mm -2.44 m 0 eV 265 keV 125 um 125 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 180, Parent ID = 175 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -106 um 864 um -2.44 m 654 keV 0 eV 0 fm 0 fm Target initStep + 1 2.05 mm 1.25 cm -2.42 m 425 keV 0 eV 2.36 cm 2.36 cm Target compt + 2 2.05 mm 1.25 cm -2.42 m 423 keV 0 eV 7.55 um 2.36 cm Target compt + 3 4.3 mm 1.27 cm -2.42 m 191 keV 0 eV 2.93 mm 2.65 cm Target compt + 4 3.22 mm 1.38 cm -2.42 m 0 eV 88 keV 1.54 mm 2.81 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 193, Parent ID = 180 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 3.22 mm 1.38 cm -2.42 m 103 keV 0 eV 0 fm 0 fm Target initStep + 1 3.22 mm 1.38 cm -2.42 m 0 eV 103 keV 29.1 um 29.1 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 192, Parent ID = 180 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 4.3 mm 1.27 cm -2.42 m 232 keV 0 eV 0 fm 0 fm Target initStep + 1 4.31 mm 1.27 cm -2.42 m 0 eV 232 keV 103 um 103 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 191, Parent ID = 180 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 2.05 mm 1.25 cm -2.42 m 1.59 keV 0 eV 0 fm 0 fm Target initStep + 1 2.05 mm 1.25 cm -2.42 m 0 eV 1.59 keV 53.2 nm 53.2 nm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 190, Parent ID = 180 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 2.05 mm 1.25 cm -2.42 m 229 keV 0 eV 0 fm 0 fm Target initStep + 1 2.04 mm 1.25 cm -2.42 m 0 eV 229 keV 101 um 101 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 179, Parent ID = 175 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -120 um 831 um -2.44 m 5.82 MeV 0 eV 0 fm 0 fm Target initStep + 1 -116 um 4.41 mm -2.43 m 0 eV 0 eV 1.26 cm 1.26 cm Target conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 195, Parent ID = 179 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -116 um 4.41 mm -2.43 m 676 keV 0 eV 0 fm 0 fm Target initStep + 1 -75.4 um 4.43 mm -2.43 m 0 eV 676 keV 452 um 452 um Target eIoni + 2 -75.4 um 4.43 mm -2.43 m 0 eV 0 eV 0 fm 452 um Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 197, Parent ID = 195 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -75.4 um 4.43 mm -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 37.2 um 4.51 mm -2.43 m 465 keV 0 eV 139 um 139 um Target compt + 2 6.27 mm 1.36 cm -2.44 m 0 eV 88 keV 1.23 cm 1.24 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 199, Parent ID = 197 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 6.27 mm 1.36 cm -2.44 m 377 keV 0 eV 0 fm 0 fm Target initStep + 1 6.28 mm 1.36 cm -2.44 m 0 eV 377 keV 206 um 206 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 198, Parent ID = 197 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 37.2 um 4.51 mm -2.43 m 46.4 keV 0 eV 0 fm 0 fm Target initStep + 1 37.6 um 4.51 mm -2.43 m 0 eV 46.4 keV 7.97 um 7.97 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 196, Parent ID = 195 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -75.4 um 4.43 mm -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.55 mm 2 mm -2.43 m 0 eV 88 keV 4.3 mm 4.3 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 200, Parent ID = 196 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.55 mm 2 mm -2.43 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.56 mm 2 mm -2.43 m 0 eV 423 keV 242 um 242 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 194, Parent ID = 179 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -116 um 4.41 mm -2.43 m 4.12 MeV 0 eV 0 fm 0 fm Target initStep + 1 -408 um 4.43 mm -2.43 m 3.64 MeV 480 keV 412 um 412 um Target eBrem + 2 13.2 um 4.9 mm -2.43 m 730 keV 1.97 MeV 1.79 mm 2.2 mm Target eBrem + 3 -5.08 um 4.93 mm -2.43 m 0 eV 730 keV 495 um 2.7 mm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 201, Parent ID = 194 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 13.2 um 4.9 mm -2.43 m 937 keV 0 eV 0 fm 0 fm Target initStep + 1 -6.08 mm 1.23 cm -2.42 m 844 keV 0 eV 1.22 cm 1.22 cm Target compt + 2 -9.89 mm 2.5 cm -2.41 m 844 keV 0 eV 2.07 cm 3.29 cm Target Transportation + 3 -1.2 cm 3.19 cm -2.4 m 844 keV 0 eV 1.12 cm 4.41 cm World Transportation + 4 -72.2 cm 2.4 m 55.3 cm 844 keV 0 eV 3.85 m 3.9 m Tracker Transportation + 5 -87.5 cm 2.91 m 1.19 m 844 keV 0 eV 82.9 cm 4.72 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 202, Parent ID = 201 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -6.08 mm 1.23 cm -2.42 m 92.4 keV 0 eV 0 fm 0 fm Target initStep + 1 -6.08 mm 1.23 cm -2.42 m 0 eV 92.4 keV 24.4 um 24.4 um Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 178, Parent ID = 175 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -274 um 746 um -2.45 m 996 keV 0 eV 0 fm 0 fm Target initStep + 1 4.74 mm 9.45 mm -2.41 m 0 eV 88 keV 3.58 cm 3.58 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 203, Parent ID = 178 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 4.74 mm 9.45 mm -2.41 m 908 keV 0 eV 0 fm 0 fm Target initStep + 1 4.74 mm 9.46 mm -2.41 m 0 eV 908 keV 647 um 647 um Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 177, Parent ID = 175 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.36 cm -1.34 cm -2.41 m 556 keV 0 eV 0 fm 0 fm Target initStep - 1 1.39 cm -1.3 cm -2.41 m 0 eV 88 keV 1.13 mm 1.13 mm Target phot + 0 -333 um 555 um -2.45 m 780 keV 0 eV 0 fm 0 fm Target initStep + 1 3.24 mm 1.05 cm -2.42 m 711 keV 0 eV 2.61 cm 2.61 cm Target compt + 2 7.8 mm 1.51 cm -2.41 m 0 eV 88 keV 1.01 cm 3.62 cm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 178, Parent ID = 177 +* G4Track Information: Particle = e-, Track ID = 205, Parent ID = 177 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.39 cm -1.3 cm -2.41 m 468 keV 0 eV 0 fm 0 fm Target initStep - 1 1.39 cm -1.3 cm -2.41 m 0 eV 468 keV 279 um 279 um Target eIoni + 0 7.8 mm 1.51 cm -2.41 m 623 keV 0 eV 0 fm 0 fm Target initStep + 1 7.8 mm 1.51 cm -2.41 m 0 eV 623 keV 406 um 406 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 159, Parent ID = 158 +* G4Track Information: Particle = e-, Track ID = 204, Parent ID = 177 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.04 mm -3.08 mm -2.43 m 332 keV 0 eV 0 fm 0 fm Target initStep - 1 2.29 mm -3.4 mm -2.43 m 0 eV 88 keV 932 um 932 um Target phot + 0 3.24 mm 1.05 cm -2.42 m 68.9 keV 0 eV 0 fm 0 fm Target initStep + 1 3.24 mm 1.05 cm -2.42 m 0 eV 68.9 keV 15.2 um 15.2 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 179, Parent ID = 159 +* G4Track Information: Particle = gamma, Track ID = 176, Parent ID = 175 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.29 mm -3.4 mm -2.43 m 244 keV 0 eV 0 fm 0 fm Target initStep - 1 2.29 mm -3.4 mm -2.43 m 0 eV 244 keV 110 um 110 um Target eIoni + 0 -419 um 377 um -2.45 m 1.21 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.13 mm 8.94 mm -2.42 m 0 eV 88 keV 2.78 cm 2.78 cm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 157, Parent ID = 150 +* G4Track Information: Particle = e-, Track ID = 206, Parent ID = 176 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.9 mm -2.86 mm -2.43 m 4.84 MeV 0 eV 0 fm 0 fm Target initStep - 1 1.9 mm -2.86 mm -2.43 m 3.98 MeV 11.5 keV 4.07 um 4.07 um Target eBrem - 2 1.3 mm -3.32 mm -2.43 m 635 keV 3.34 MeV 1.97 mm 1.98 mm Target eIoni - 3 1.3 mm -3.33 mm -2.43 m 0 eV 635 keV 415 um 2.39 mm Target eIoni + 0 -1.13 mm 8.94 mm -2.42 m 1.12 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.25 mm 8.95 mm -2.42 m 441 keV 269 keV 291 um 291 um Target eBrem + 2 -1.25 mm 8.95 mm -2.42 m 0 eV 441 keV 257 um 547 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 180, Parent ID = 157 +* G4Track Information: Particle = gamma, Track ID = 207, Parent ID = 206 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.9 mm -2.86 mm -2.43 m 851 keV 0 eV 0 fm 0 fm Target initStep - 1 2.53 mm -3.41 mm -2.43 m 0 eV 88 keV 2.94 mm 2.94 mm Target phot + 0 -1.25 mm 8.95 mm -2.42 m 415 keV 0 eV 0 fm 0 fm Target initStep + 1 7.05 um 9.02 mm -2.42 m 0 eV 88 keV 1.98 mm 1.98 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 181, Parent ID = 180 +* G4Track Information: Particle = e-, Track ID = 208, Parent ID = 207 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 2.53 mm -3.41 mm -2.43 m 763 keV 0 eV 0 fm 0 fm Target initStep - 1 2.51 mm -3.42 mm -2.43 m 0 eV 763 keV 524 um 524 um Target eIoni + 0 7.05 um 9.02 mm -2.42 m 327 keV 0 eV 0 fm 0 fm Target initStep + 1 14.6 um 9.02 mm -2.42 m 0 eV 327 keV 169 um 169 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 149, Parent ID = 146 +* G4Track Information: Particle = e-, Track ID = 174, Parent ID = 4 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -631 um -619 um -2.44 m 671 keV 0 eV 0 fm 0 fm Target initStep - 1 7.9 mm -8.13 mm -2.41 m 0 eV 88 keV 3.44 cm 3.44 cm Target phot + 0 -446 um 330 um -2.45 m 2.03 MeV 0 eV 0 fm 0 fm Target initStep + 1 -539 um 1.72 um -2.45 m 566 keV 1.46 MeV 1.42 mm 1.42 mm Target eIoni + 2 -516 um -6.44 um -2.45 m 0 eV 566 keV 358 um 1.77 mm Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 182, Parent ID = 149 +* G4Track Information: Particle = gamma, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 7.9 mm -8.13 mm -2.41 m 583 keV 0 eV 0 fm 0 fm Target initStep - 1 7.88 mm -8.13 mm -2.41 m 0 eV 583 keV 372 um 372 um Target eIoni + 0 -405 um 323 um -2.45 m 9.21 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.05 mm 91.4 um -2.41 m 0 eV 0 eV 3.89 cm 3.89 cm Target conv ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 148, Parent ID = 146 +* G4Track Information: Particle = e+, Track ID = 210, Parent ID = 3 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -729 um -512 um -2.44 m 1.73 MeV 0 eV 0 fm 0 fm Target initStep - 1 -360 um -1.06 mm -2.44 m 1.27 MeV 0 eV 1.89 mm 1.89 mm Target compt - 2 3.39 mm 261 um -2.43 m 295 keV 0 eV 9.95 mm 1.18 cm Target compt - 3 6.53 mm 3.29 mm -2.43 m 190 keV 0 eV 5.79 mm 1.76 cm Target compt - 4 6.84 mm 4.55 mm -2.43 m 0 eV 88 keV 1.74 mm 1.94 cm Target phot + 0 -1.05 mm 91.4 um -2.41 m 6.96 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.05 mm 91 um -2.41 m 1.8 MeV 19.4 keV 7.08 um 7.08 um Target eBrem + 2 -808 um 369 um -2.41 m 562 keV 903 keV 828 um 835 um Target eBrem + 3 -830 um 396 um -2.41 m 0 eV 562 keV 355 um 1.19 mm Target eIoni + 4 -830 um 396 um -2.41 m 0 eV 0 eV 0 fm 1.19 mm Target annihil ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 186, Parent ID = 148 +* G4Track Information: Particle = gamma, Track ID = 214, Parent ID = 210 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 6.84 mm 4.55 mm -2.43 m 102 keV 0 eV 0 fm 0 fm Target initStep - 1 6.84 mm 4.55 mm -2.43 m 0 eV 102 keV 28.3 um 28.3 um Target eIoni + 0 -830 um 396 um -2.41 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.9 mm -1.22 mm -2.41 m 398 keV 0 eV 3 mm 3 mm Target compt + 2 -6.18 mm -5.29 mm -2.41 m 0 eV 88 keV 5.37 mm 8.38 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 185, Parent ID = 148 +* G4Track Information: Particle = e-, Track ID = 216, Parent ID = 214 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 6.53 mm 3.29 mm -2.43 m 106 keV 0 eV 0 fm 0 fm Target initStep - 1 6.53 mm 3.29 mm -2.43 m 0 eV 106 keV 30.3 um 30.3 um Target eIoni + 0 -6.18 mm -5.29 mm -2.41 m 310 keV 0 eV 0 fm 0 fm Target initStep + 1 -6.18 mm -5.28 mm -2.41 m 0 eV 310 keV 156 um 156 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 184, Parent ID = 148 +* G4Track Information: Particle = e-, Track ID = 215, Parent ID = 214 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 3.39 mm 261 um -2.43 m 979 keV 0 eV 0 fm 0 fm Target initStep - 1 3.4 mm 262 um -2.43 m 0 eV 979 keV 708 um 708 um Target eIoni + 0 -2.9 mm -1.22 mm -2.41 m 113 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.91 mm -1.22 mm -2.41 m 0 eV 113 keV 33.8 um 33.8 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 183, Parent ID = 148 +* G4Track Information: Particle = gamma, Track ID = 213, Parent ID = 210 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -360 um -1.06 mm -2.44 m 460 keV 0 eV 0 fm 0 fm Target initStep - 1 -363 um -1.08 mm -2.44 m 0 eV 460 keV 272 um 272 um Target eIoni + 0 -830 um 396 um -2.41 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 364 um 1.33 mm -2.41 m 0 eV 88 keV 1.73 mm 1.73 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 147, Parent ID = 146 +* G4Track Information: Particle = e-, Track ID = 217, Parent ID = 213 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -772 um -446 um -2.44 m 2.34 MeV 0 eV 0 fm 0 fm Target initStep - 1 1.06 mm -3.24 mm -2.43 m 1.09 MeV 0 eV 1.08 cm 1.08 cm Target compt - 2 -9.13 mm -2.35 cm -2.41 m 224 keV 0 eV 3.04 cm 4.11 cm Target compt - 3 -9.55 mm -2.15 cm -2.41 m 0 eV 88 keV 2.27 mm 4.34 cm Target phot + 0 364 um 1.33 mm -2.41 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 377 um 1.33 mm -2.41 m 0 eV 423 keV 242 um 242 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 189, Parent ID = 147 +* G4Track Information: Particle = gamma, Track ID = 212, Parent ID = 210 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -9.55 mm -2.15 cm -2.41 m 136 keV 0 eV 0 fm 0 fm Target initStep - 1 -9.55 mm -2.15 cm -2.41 m 0 eV 136 keV 45.2 um 45.2 um Target eIoni + 0 -808 um 369 um -2.41 m 339 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.04 mm 986 um -2.41 m 273 keV 0 eV 778 um 778 um Target compt + 2 -363 um 2.06 mm -2.41 m 164 keV 0 eV 1.32 mm 2.1 mm Target compt + 3 -725 um 2.16 mm -2.41 m 0 eV 88 keV 378 um 2.48 mm Target phot ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 188, Parent ID = 147 +* G4Track Information: Particle = e-, Track ID = 220, Parent ID = 212 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -9.13 mm -2.35 cm -2.41 m 862 keV 0 eV 0 fm 0 fm Target initStep - 1 -9.14 mm -2.35 cm -2.41 m 0 eV 862 keV 608 um 608 um Target eIoni + 0 -725 um 2.16 mm -2.41 m 76.2 keV 0 eV 0 fm 0 fm Target initStep + 1 -725 um 2.16 mm -2.41 m 0 eV 76.2 keV 17.8 um 17.8 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 187, Parent ID = 147 +* G4Track Information: Particle = e-, Track ID = 219, Parent ID = 212 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.06 mm -3.24 mm -2.43 m 1.25 MeV 0 eV 0 fm 0 fm Target initStep - 1 1.07 mm -3.24 mm -2.43 m 653 keV 13.5 keV 20.1 um 20.1 um Target eBrem - 2 1.12 mm -3.2 mm -2.43 m 464 keV 190 keV 168 um 188 um Target eBrem - 3 1.11 mm -3.19 mm -2.43 m 0 eV 464 keV 275 um 463 um Target eIoni + 0 -363 um 2.06 mm -2.41 m 109 keV 0 eV 0 fm 0 fm Target initStep + 1 -361 um 2.06 mm -2.41 m 0 eV 109 keV 32 um 32 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 190, Parent ID = 187 +* G4Track Information: Particle = e-, Track ID = 218, Parent ID = 212 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1.07 mm -3.24 mm -2.43 m 583 keV 0 eV 0 fm 0 fm Target initStep - 1 8.72 mm -7.72 mm -2.43 m 0 eV 88 keV 9.61 mm 9.61 mm Target phot + 0 -1.04 mm 986 um -2.41 m 65.1 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.04 mm 986 um -2.41 m 0 eV 65.1 keV 13.8 um 13.8 um Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 191, Parent ID = 190 +* G4Track Information: Particle = gamma, Track ID = 211, Parent ID = 210 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 8.72 mm -7.72 mm -2.43 m 495 keV 0 eV 0 fm 0 fm Target initStep - 1 8.74 mm -7.73 mm -2.43 m 0 eV 495 keV 300 um 300 um Target eIoni + 0 -1.05 mm 91 um -2.41 m 5.14 MeV 0 eV 0 fm 0 fm Target initStep + 1 -561 um -2.56 mm -2.4 m 5.14 MeV 0 eV 1.07 cm 1.07 cm Target Transportation + 2 3.71 cm -20.7 cm -1.6 m 5.14 MeV 0 eV 82.7 cm 83.7 cm Tracker Transportation + 3 4.32 cm -24 cm -1.47 m 5.14 MeV 0 eV 13.4 cm 97.1 cm Chamber Transportation + 4 7.48 cm -41.1 cm -80 cm 5.14 MeV 0 eV 69.3 cm 1.66 m Tracker Transportation + 5 8.43 cm -46.2 cm -60 cm 5.14 MeV 0 eV 20.7 cm 1.87 m Chamber Transportation + 6 11.3 cm -61.6 cm 0.114 fm 5.14 MeV 0 eV 62 cm 2.49 m Tracker Transportation + 7 12.2 cm -66.7 cm 20 cm 5.14 MeV 0 eV 20.7 cm 2.7 m Chamber Transportation + 8 15 cm -82 cm 80 cm 5.14 MeV 0 eV 62 cm 3.32 m Tracker Transportation + 9 16 cm -87.1 cm 1 m 5.14 MeV 0 eV 20.7 cm 3.52 m Chamber Transportation + 10 18.8 cm -1.02 m 1.6 m 5.14 MeV 0 eV 62 cm 4.14 m Tracker Transportation + 11 19.7 cm -1.08 m 1.8 m 5.14 MeV 0 eV 20.7 cm 4.35 m Chamber Transportation + 12 22.6 cm -1.23 m 2.4 m 5.14 MeV 0 eV 62 cm 4.97 m Tracker Transportation + 13 25 cm -1.36 m 2.91 m 5.14 MeV 0 eV 52.7 cm 5.5 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 209, Parent ID = 3 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.05 mm 91.4 um -2.41 m 1.23 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.07 mm 116 um -2.41 m 0 eV 1.23 MeV 921 um 921 um Target eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -126 um -4.99 um -2.81 m 21.5 keV 0 eV 0 fm 0 fm World initStep - 1 2.72 mm -688 um -2.81 m 18.4 keV 3.09 keV 3.24 mm 3.24 mm World eIoni - 2 3.15 mm -160 um -2.81 m 14.4 keV 3.97 keV 2.8 mm 6.04 mm World eIoni - 3 4.26 mm 1.41 mm -2.81 m 9.48 keV 4.91 keV 2.27 mm 8.31 mm World eIoni - 4 4.14 mm 2.64 mm -2.81 m 6.02 keV 3.46 keV 1.63 mm 9.94 mm World eIoni - 5 4.32 mm 3.01 mm -2.81 m 0 eV 6.02 keV 945 um 1.09 cm World eIoni + 0 -126 um 4.89 um -2.81 m 23 keV 0 eV 0 fm 0 fm World initStep + 1 1.01 mm -2.86 mm -2.81 m 20.2 keV 2.8 keV 3.48 mm 3.48 mm World eIoni + 2 2.26 mm -4.84 mm -2.81 m 17.4 keV 2.86 keV 3.05 mm 6.53 mm World eIoni + 3 4.17 mm -5.63 mm -2.81 m 13.9 keV 3.48 keV 2.66 mm 9.2 mm World eIoni + 4 5.84 mm -4.75 mm -2.81 m 6.81 keV 7.08 keV 2.21 mm 1.14 cm World eIoni + 5 6.02 mm -4.26 mm -2.81 m 0 eV 6.81 keV 1.15 mm 1.26 cm World eIoni >>> Event 0 0 trajectories stored in this event. ### Run 1 start. @@ -2033,138 +2228,78 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 0 fm 0 fm -2.91 m 1 TeV 0 eV 0 fm 0 fm World initStep - 1 -18.2 nm 79 nm -2.65 m 1e+03 GeV 90.6 keV 26.5 cm 26.5 cm World muIoni - 2 32.9 nm 61.9 nm -2.45 m 1e+03 GeV 47.9 keV 19.5 cm 46 cm World Transportation - 3 43.3 nm 47.5 nm -2.4 m 1e+03 GeV 73.9 MeV 5 cm 51 cm Target Transportation - 4 49.3 um 95.8 um -1.6 m 1e+03 GeV 202 keV 80 cm 1.31 m Tracker Transportation - 5 57.4 um 111 um -1.47 m 1e+03 GeV 139 keV 13 cm 1.44 m Chamber muIoni - 6 61.8 um 120 um -1.4 m 1e+03 GeV 40.7 keV 7.02 cm 1.51 m Chamber Transportation - 7 99.1 um 192 um -80 cm 1e+03 GeV 151 keV 60 cm 2.11 m Tracker Transportation - 8 112 um 216 um -60 cm 1e+03 GeV 185 keV 20 cm 2.31 m Chamber Transportation - 9 149 um 287 um -0.114 fm 1e+03 GeV 134 keV 60 cm 2.91 m Tracker Transportation - 10 149 um 288 um 684 um 1e+03 GeV 97.5 eV 684 um 2.91 m Chamber muIoni - 11 162 um 311 um 20 cm 1e+03 GeV 169 keV 19.9 cm 3.11 m Chamber Transportation - 12 176 um 339 um 43.6 cm 1e+03 GeV 47.7 keV 23.6 cm 3.35 m Tracker muIoni - 13 198 um 382 um 80 cm 1e+03 GeV 70.3 keV 36.4 cm 3.71 m Tracker Transportation - 14 210 um 406 um 1 m 1e+03 GeV 168 keV 20 cm 3.91 m Chamber Transportation - 15 235 um 455 um 1.42 m 1e+03 GeV 113 keV 42.1 cm 4.33 m Tracker muIoni - 16 246 um 476 um 1.6 m 1e+03 GeV 62.4 keV 17.9 cm 4.51 m Tracker Transportation - 17 259 um 500 um 1.8 m 1e+03 GeV 137 keV 20 cm 4.71 m Chamber Transportation - 18 278 um 537 um 2.12 m 1e+03 GeV 75.1 keV 32.2 cm 5.03 m Tracker muIoni - 19 295 um 570 um 2.4 m 1e+03 GeV 85.7 keV 27.8 cm 5.31 m Tracker Transportation - 20 326 um 629 um 2.91 m 1e+03 GeV 111 keV 51 cm 5.82 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 278 um 537 um 2.12 m 19.3 keV 0 eV 0 fm 0 fm Tracker initStep - 1 2.09 mm 2.39 mm 2.12 m 15 keV 4.29 keV 2.92 mm 2.92 mm Tracker eIoni - 2 2.3 mm 4.27 mm 2.12 m 11.9 keV 3.09 keV 2.35 mm 5.27 mm Tracker eIoni - 3 690 um 4.1 mm 2.12 m 3.95 keV 7.97 keV 1.96 mm 7.23 mm Tracker eIoni - 4 503 um 4.06 mm 2.12 m 0 eV 3.95 keV 464 um 7.69 mm Tracker eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 235 um 455 um 1.42 m 231 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -7.84 cm 2.95 mm 1.48 m 203 keV 28.2 keV 10.9 cm 10.9 cm Tracker eIoni - 2 -11.9 cm 1.57 cm 1.55 m 185 keV 17.6 keV 8.81 cm 19.7 cm Tracker eIoni - 3 -16.8 cm 1.64 cm 1.6 m 159 keV 26.1 keV 7.54 cm 27.2 cm Tracker Transportation - 4 -16.8 cm 1.64 cm 1.6 m 159 keV 0 eV 0 fm 27.2 cm Chamber Transportation - 5 -16 cm -1.89 cm 1.56 m 144 keV 14.5 keV 5.94 cm 33.2 cm Tracker eIoni - 6 -14.2 cm -6.38 cm 1.55 m 127 keV 17.3 keV 5.1 cm 38.3 cm Tracker eIoni - 7 -14.7 cm -9.86 cm 1.54 m 113 keV 13.7 keV 4.12 cm 42.4 cm Tracker eIoni - 8 -15.3 cm -11.9 cm 1.51 m 103 keV 10.3 keV 3.43 cm 45.8 cm Tracker eIoni - 9 -15.7 cm -13.5 cm 1.49 m 84.6 keV 18.6 keV 2.92 cm 48.8 cm Tracker eIoni - 10 -16.8 cm -14.5 cm 1.48 m 73.9 keV 10.7 keV 2.12 cm 50.9 cm Tracker eIoni - 11 -16.7 cm -14.9 cm 1.46 m 62.4 keV 11.4 keV 1.7 cm 52.6 cm Tracker eIoni - 12 -17.3 cm -15.8 cm 1.45 m 58.1 keV 4.31 keV 1.3 cm 53.9 cm Tracker eIoni - 13 -17.5 cm -16.8 cm 1.45 m 52.8 keV 5.28 keV 1.17 cm 55 cm Tracker eIoni - 14 -18 cm -17.7 cm 1.45 m 45.6 keV 7.25 keV 1.01 cm 56.1 cm Tracker eIoni - 15 -18.8 cm -17.7 cm 1.46 m 39.1 keV 6.53 keV 8.14 mm 56.9 cm Tracker eIoni - 16 -19.3 cm -17.4 cm 1.46 m 37.2 keV 1.91 keV 6.53 mm 57.5 cm Tracker eIoni - 17 -19.8 cm -17.2 cm 1.45 m 30.8 keV 6.38 keV 6.13 mm 58.1 cm Tracker eIoni - 18 -20 cm -16.8 cm 1.46 m 20.2 keV 10.6 keV 4.81 mm 58.6 cm Tracker eIoni - 19 -20.2 cm -16.6 cm 1.46 m 16.9 keV 3.28 keV 3.05 mm 58.9 cm Tracker eIoni - 20 -20.2 cm -16.5 cm 1.46 m 13.1 keV 3.87 keV 2.6 mm 59.2 cm Tracker eIoni - 21 -20.1 cm -16.5 cm 1.46 m 10.6 keV 2.45 keV 2.1 mm 59.4 cm Tracker eIoni - 22 -20.1 cm -16.5 cm 1.46 m 8.05 keV 2.58 keV 1.79 mm 59.6 cm Tracker eIoni - 23 -20 cm -16.5 cm 1.46 m 4.68 keV 3.37 keV 1.39 mm 59.7 cm Tracker eIoni - 24 -20 cm -16.6 cm 1.46 m 0 eV 4.68 keV 618 um 59.8 cm Tracker eIoni + 1 0 fm 0 fm -2.45 m 1e+03 GeV 117 keV 46 cm 46 cm World Transportation + 2 2.77 Ang -1.95 nm -2.4 m 1e+03 GeV 79.1 MeV 5 cm 51 cm Target Transportation + 3 8.97 um -6.45 um -1.6 m 1e+03 GeV 191 keV 80 cm 1.31 m Tracker Transportation + 4 11.2 um -8.1 um -1.4 m 1e+03 GeV 205 keV 20 cm 1.51 m Chamber Transportation + 5 17.7 um -12.5 um -80 cm 1e+03 GeV 147 keV 60 cm 2.11 m Tracker Transportation + 6 18 um -12.8 um -76.6 cm 1e+03 GeV 74.9 keV 3.36 cm 2.14 m Chamber muIoni + 7 19.9 um -14.1 um -60 cm 1e+03 GeV 139 keV 16.6 cm 2.31 m Chamber Transportation + 8 26.3 um -18.8 um 0 fm 1e+03 GeV 144 keV 60 cm 2.91 m Tracker Transportation + 9 28.4 um -20.2 um 20 cm 1e+03 GeV 212 keV 20 cm 3.11 m Chamber Transportation + 10 34.9 um -22.8 um 80 cm 1e+03 GeV 180 keV 60 cm 3.71 m Tracker Transportation + 11 37 um -23.7 um 1 m 1e+03 GeV 157 keV 20 cm 3.91 m Chamber Transportation + 12 38.7 um -25 um 1.2 m 1e+03 GeV 65.9 keV 19.8 cm 4.11 m Tracker muIoni + 13 42.2 um -27.8 um 1.6 m 1e+03 GeV 111 keV 40.2 cm 4.51 m Tracker Transportation + 14 43.9 um -28.9 um 1.78 m 1e+03 GeV 151 keV 18.3 cm 4.69 m Chamber muIoni + 15 44 um -29.1 um 1.8 m 1e+03 GeV 30.1 keV 1.68 cm 4.71 m Chamber Transportation + 16 48.3 um -33.8 um 2.39 m 1e+03 GeV 147 keV 59.4 cm 5.3 m Tracker muIoni + 17 48.3 um -33.8 um 2.4 m 1e+03 GeV 841 eV 5.74 mm 5.31 m Tracker Transportation + 18 51.5 um -38.2 um 2.91 m 1e+03 GeV 128 keV 51 cm 5.82 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 176 um 339 um 43.6 cm 36.1 keV 0 eV 0 fm 0 fm Tracker initStep - 1 504 um 5 mm 43.9 cm 30.9 keV 5.22 keV 5.91 mm 5.91 mm Tracker eIoni - 2 572 um 9.26 mm 44 cm 27.2 keV 3.65 keV 4.83 mm 1.07 cm Tracker eIoni - 3 2.99 mm 1.17 cm 44.2 cm 21.5 keV 5.74 keV 4.18 mm 1.49 cm Tracker eIoni - 4 4.45 mm 1.37 cm 44.3 cm 15.9 keV 5.64 keV 3.25 mm 1.82 cm Tracker eIoni - 5 5.37 mm 1.46 cm 44.2 cm 4.63 keV 11.2 keV 2.45 mm 2.06 cm Tracker eIoni - 6 5.35 mm 1.48 cm 44.2 cm 0 eV 4.63 keV 607 um 2.12 cm Tracker eIoni + 0 48.3 um -33.8 um 2.39 m 22.3 keV 0 eV 0 fm 0 fm Tracker initStep + 1 554 um -1.28 mm 2.39 m 20.9 keV 1.37 keV 1.42 mm 1.42 mm Tracker msc + 2 1.03 mm -2.43 mm 2.39 m 18 keV 2.87 keV 1.42 mm 2.84 mm Tracker msc + 3 901 um -3.55 mm 2.39 m 15.5 keV 2.54 keV 1.42 mm 4.27 mm Tracker msc + 4 574 um -3.98 mm 2.39 m 10.8 keV 4.65 keV 1.42 mm 5.69 mm Tracker msc + 5 954 um -4.2 mm 2.39 m 6.81 keV 4.03 keV 1.42 mm 7.11 mm Tracker msc + 6 1.41 mm -4.13 mm 2.39 m 0 eV 6.81 keV 1.15 mm 8.26 mm Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 149 um 288 um 684 um 125 keV 0 eV 0 fm 0 fm Chamber initStep - 1 -1.78 mm 2.9 mm 2.21 mm 124 keV 1.95 keV 4.01 mm 4.01 mm Chamber msc - 2 -3.67 mm 5.87 mm 2.86 mm 116 keV 7.4 keV 4.01 mm 8.02 mm Chamber msc - 3 -4.9 mm 8.74 mm 1.21 mm 115 keV 856 eV 4.01 mm 1.2 cm Chamber msc - 4 -5.13 mm 7.97 mm 0.00333 fm 113 keV 2.25 keV 1.64 mm 1.37 cm Chamber Transportation - 5 -1.53 mm -1.6 cm -2.13 cm 96.2 keV 16.8 keV 3.41 cm 4.77 cm Tracker eIoni - 6 2.02 mm -3.78 cm -3.26 cm 80.6 keV 15.6 keV 2.61 cm 7.38 cm Tracker eIoni - 7 1.35 cm -4.48 cm -4.53 cm 62.9 keV 17.7 keV 1.95 cm 9.33 cm Tracker eIoni - 8 1.52 cm -5.21 cm -3.54 cm 52.7 keV 10.2 keV 1.31 cm 10.6 cm Tracker eIoni - 9 1.35 cm -5.23 cm -2.61 cm 46.5 keV 6.26 keV 1.01 cm 11.7 cm Tracker eIoni - 10 1.05 cm -5.46 cm -1.92 cm 43.4 keV 3.09 keV 8.36 mm 12.5 cm Tracker eIoni - 11 5.94 mm -4.97 cm -1.68 cm 38.4 keV 4.93 keV 7.59 mm 13.2 cm Tracker eIoni - 12 -31.2 um -4.97 cm -1.64 cm 34.2 keV 4.24 keV 6.4 mm 13.9 cm Tracker eIoni - 13 -3.25 mm -5.33 cm -1.82 cm 28.6 keV 5.63 keV 5.51 mm 14.4 cm Tracker eIoni - 14 -3.96 mm -5.69 cm -2.01 cm 25.5 keV 3.03 keV 4.42 mm 14.9 cm Tracker eIoni - 15 -6.32 mm -5.81 cm -2.24 cm 21.4 keV 4.1 keV 3.88 mm 15.3 cm Tracker eIoni - 16 -6.32 mm -6.1 cm -2.19 cm 17.7 keV 3.77 keV 3.24 mm 15.6 cm Tracker eIoni - 17 -6.09 mm -6.34 cm -2.18 cm 8.83 keV 8.85 keV 2.7 mm 15.9 cm Tracker eIoni - 18 -6.94 mm -6.41 cm -2.2 cm 872 eV 7.95 keV 1.53 mm 16 cm Tracker eIoni - 19 -6.95 mm -6.41 cm -2.2 cm 0 eV 872 eV 48.8 um 16 cm Tracker eIoni + 0 43.9 um -28.9 um 1.78 m 42.3 keV 0 eV 0 fm 0 fm Chamber initStep + 1 -1.09 mm 393 um 1.79 m 37.4 keV 4.85 keV 3.9 mm 3.9 mm Chamber eIoni + 2 -907 um 1.66 mm 1.79 m 31.1 keV 6.31 keV 3.44 mm 7.34 mm Chamber eIoni + 3 320 um 1.99 mm 1.79 m 21.7 keV 9.4 keV 2.9 mm 1.02 cm Chamber eIoni + 4 795 um 2.7 mm 1.79 m 7.8 keV 13.9 keV 2.17 mm 1.24 cm Chamber eIoni + 5 820 um 2.75 mm 1.79 m 0 eV 7.8 keV 746 um 1.32 cm Chamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 57.4 um 111 um -1.47 m 49.1 keV 0 eV 0 fm 0 fm Chamber initStep - 1 -275 um -1.41 mm -1.47 m 41.9 keV 7.16 keV 4.57 mm 4.57 mm Chamber eIoni - 2 -1.73 mm -3.07 mm -1.47 m 35.4 keV 6.55 keV 3.86 mm 8.43 mm Chamber eIoni - 3 -1.96 mm -4.17 mm -1.47 m 22.3 keV 13.1 keV 3.27 mm 1.17 cm Chamber eIoni - 4 -1.59 mm -5.09 mm -1.47 m 11.8 keV 10.5 keV 2.22 mm 1.39 cm Chamber eIoni - 5 -1.62 mm -5.46 mm -1.47 m 3.74 keV 8.07 keV 1.33 mm 1.52 cm Chamber eIoni - 6 -1.61 mm -5.46 mm -1.47 m 0 eV 3.74 keV 249 um 1.55 cm Chamber eIoni + 0 38.7 um -25 um 1.2 m 18.3 keV 0 eV 0 fm 0 fm Tracker initStep + 1 1.94 mm 672 um 1.2 m 14.6 keV 3.71 keV 2.79 mm 2.79 mm Tracker eIoni + 2 2.59 mm -19 um 1.2 m 11.6 keV 2.99 keV 2.3 mm 5.09 mm Tracker eIoni + 3 1.94 mm 338 um 1.2 m 8.82 keV 2.82 keV 1.92 mm 7.02 mm Tracker eIoni + 4 2.36 mm -337 um 1.2 m 4.87 keV 3.95 keV 1.53 mm 8.54 mm Tracker eIoni + 5 2.48 mm -373 um 1.2 m 0 eV 4.87 keV 659 um 9.2 mm Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -18.2 nm 79 nm -2.65 m 62.2 keV 0 eV 0 fm 0 fm World initStep - 1 -5.69 mm -8.29 mm -2.64 m 53 keV 9.17 keV 1.29 cm 1.29 cm World eIoni - 2 -1.29 cm -7.61 mm -2.63 m 47.1 keV 5.94 keV 1.01 cm 2.31 cm World eIoni - 3 -1.99 cm -7.25 mm -2.63 m 35.9 keV 11.1 keV 8.51 mm 3.16 cm World eIoni - 4 -2.42 cm -1.06 cm -2.63 m 31.2 keV 4.72 keV 5.87 mm 3.74 cm World eIoni - 5 -2.6 cm -1.47 cm -2.63 m 25.3 keV 5.91 keV 4.89 mm 4.23 cm World eIoni - 6 -2.45 cm -1.77 cm -2.63 m 19.9 keV 5.36 keV 3.83 mm 4.62 cm World eIoni - 7 -2.34 cm -1.9 cm -2.62 m 15.1 keV 4.86 keV 3.01 mm 4.92 cm World eIoni - 8 -2.49 cm -1.87 cm -2.62 m 11.4 keV 3.69 keV 2.36 mm 5.15 cm World eIoni - 9 -2.47 cm -1.79 cm -2.62 m 7.1 keV 4.28 keV 1.89 mm 5.34 cm World eIoni - 10 -2.49 cm -1.82 cm -2.63 m 1.26 keV 5.85 keV 1.22 mm 5.46 cm World eIoni - 11 -2.49 cm -1.82 cm -2.63 m 0 eV 1.26 keV 78.8 um 5.47 cm World eIoni + 0 18 um -12.8 um -76.6 cm 97.7 keV 0 eV 0 fm 0 fm Chamber initStep + 1 4.57 mm 3.01 mm -76.9 cm 88.9 keV 8.76 keV 8.4 mm 8.4 mm Chamber msc + 2 -641 um 814 um -77 cm 75.1 keV 13.8 keV 8.4 mm 1.68 cm Chamber msc + 3 -1.72 mm 4.61 mm -76.7 cm 62.6 keV 12.5 keV 7.74 mm 2.45 cm Chamber eIoni + 4 -2.47 mm 7.24 mm -76.4 cm 55.8 keV 6.8 keV 6.1 mm 3.06 cm Chamber eIoni + 5 599 um 6.17 mm -76.4 cm 47.7 keV 8.18 keV 5.33 mm 3.6 cm Chamber eIoni + 6 728 um 5.58 mm -76.7 cm 44.2 keV 3.43 keV 4.43 mm 4.04 cm Chamber eIoni + 7 -8.69 um 7.84 mm -76.7 cm 35.2 keV 9 keV 4.09 mm 4.45 cm Chamber eIoni + 8 -96.2 um 9.57 mm -76.7 cm 24.1 keV 11.1 keV 3.25 mm 4.77 cm Chamber eIoni + 9 -1.1 mm 9.86 mm -76.7 cm 13.7 keV 10.3 keV 2.35 mm 5.01 cm Chamber eIoni + 10 -1.21 mm 9.77 mm -76.7 cm 0 eV 13.7 keV 1.53 mm 5.16 cm Chamber eIoni >>> Event 0 0 trajectories stored in this event. ### Run 2 start. @@ -2569,5 +2704,3 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng 0 trajectories stored in this event. >>> Event 99 0 trajectories stored in this event. -Graphics systems deleted. -Visualization Manager deleting... diff --git a/examples/novice/N02/include/ExN02ChamberParameterisation.hh b/examples/novice/N02/include/ExN02ChamberParameterisation.hh index b2b831c55e..3819e3bbcc 100644 --- a/examples/novice/N02/include/ExN02ChamberParameterisation.hh +++ b/examples/novice/N02/include/ExN02ChamberParameterisation.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02ChamberParameterisation.hh,v 1.10 2006/06/29 17:47:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A parameterisation that describes a series of boxes along Z diff --git a/examples/novice/N02/include/ExN02DetectorConstruction.hh b/examples/novice/N02/include/ExN02DetectorConstruction.hh index c19968a645..ddc8a880de 100644 --- a/examples/novice/N02/include/ExN02DetectorConstruction.hh +++ b/examples/novice/N02/include/ExN02DetectorConstruction.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN02DetectorConstruction.hh,v 1.8 2006/06/29 17:47:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN02DetectorConstruction.hh,v 1.9 2007/10/17 08:50:35 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -41,6 +41,8 @@ class G4Box; class G4LogicalVolume; class G4VPhysicalVolume; class G4Material; +class G4VPVParameterisation; +class G4UserLimits; class ExN02DetectorMessenger; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -85,7 +87,11 @@ class ExN02DetectorConstruction : public G4VUserDetectorConstruction G4VPhysicalVolume* physiChamber; // pointer to the physical Chamber G4Material* TargetMater; // pointer to the target material - G4Material* ChamberMater; // pointer to the chamber material + G4Material* ChamberMater; // pointer to the chamber material + + G4VPVParameterisation* chamberParam; // pointer to chamber parameterisation + G4UserLimits* stepLimit; // pointer to user step limits + ExN02MagneticField* fpMagField; // pointer to the magnetic field ExN02DetectorMessenger* detectorMessenger; // pointer to the Messenger diff --git a/examples/novice/N02/include/ExN02DetectorMessenger.hh b/examples/novice/N02/include/ExN02DetectorMessenger.hh index a401abecb7..6310795a69 100644 --- a/examples/novice/N02/include/ExN02DetectorMessenger.hh +++ b/examples/novice/N02/include/ExN02DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02DetectorMessenger.hh,v 1.8 2006/06/29 17:47:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/include/ExN02EventAction.hh b/examples/novice/N02/include/ExN02EventAction.hh index 5eb319e9e2..4dc492f8b0 100644 --- a/examples/novice/N02/include/ExN02EventAction.hh +++ b/examples/novice/N02/include/ExN02EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02EventAction.hh,v 1.8 2006/06/29 17:47:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/include/ExN02MagneticField.hh b/examples/novice/N02/include/ExN02MagneticField.hh index 4f81fa9c19..87245fe612 100644 --- a/examples/novice/N02/include/ExN02MagneticField.hh +++ b/examples/novice/N02/include/ExN02MagneticField.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN02MagneticField.hh,v 1.7 2006/06/29 17:47:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN02MagneticField.hh,v 1.8 2007/08/22 13:11:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A class for control of the Magnetic Field of the detector. @@ -53,8 +53,8 @@ class ExN02MagneticField: public G4UniformMagField ~ExN02MagneticField(); //Set the field (fieldValue,0,0) - void SetFieldValue(G4double fieldValue); - void SetFieldValue(G4ThreeVector fieldVector); + void SetMagFieldValue(G4double fieldValue); + void SetMagFieldValue(G4ThreeVector fieldVector); G4ThreeVector GetConstantFieldValue(); diff --git a/examples/novice/N02/include/ExN02PhysicsList.hh b/examples/novice/N02/include/ExN02PhysicsList.hh index 0fe00da30f..abd57dadff 100644 --- a/examples/novice/N02/include/ExN02PhysicsList.hh +++ b/examples/novice/N02/include/ExN02PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02PhysicsList.hh,v 1.11 2006/06/29 17:47:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/include/ExN02PrimaryGeneratorAction.hh b/examples/novice/N02/include/ExN02PrimaryGeneratorAction.hh index ab32770091..f0440c73a5 100644 --- a/examples/novice/N02/include/ExN02PrimaryGeneratorAction.hh +++ b/examples/novice/N02/include/ExN02PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02PrimaryGeneratorAction.hh,v 1.7 2006/06/29 17:47:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/include/ExN02RunAction.hh b/examples/novice/N02/include/ExN02RunAction.hh index 5ac50df6d0..2bc00a0f21 100644 --- a/examples/novice/N02/include/ExN02RunAction.hh +++ b/examples/novice/N02/include/ExN02RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02RunAction.hh,v 1.8 2006/06/29 17:47:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/include/ExN02SteppingAction.hh b/examples/novice/N02/include/ExN02SteppingAction.hh index 1f61b25ab9..965558c81d 100644 --- a/examples/novice/N02/include/ExN02SteppingAction.hh +++ b/examples/novice/N02/include/ExN02SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02SteppingAction.hh,v 1.8 2006/06/29 17:47:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/include/ExN02SteppingVerbose.hh b/examples/novice/N02/include/ExN02SteppingVerbose.hh index 9bbd021da1..11b5c2582d 100644 --- a/examples/novice/N02/include/ExN02SteppingVerbose.hh +++ b/examples/novice/N02/include/ExN02SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02SteppingVerbose.hh,v 1.8 2006/06/29 17:47:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/novice/N02/include/ExN02TrackerHit.hh b/examples/novice/N02/include/ExN02TrackerHit.hh index d25228a276..3eb2556439 100644 --- a/examples/novice/N02/include/ExN02TrackerHit.hh +++ b/examples/novice/N02/include/ExN02TrackerHit.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02TrackerHit.hh,v 1.8 2006/06/29 17:47:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/include/ExN02TrackerSD.hh b/examples/novice/N02/include/ExN02TrackerSD.hh index 3562aeef66..2cb2273a97 100644 --- a/examples/novice/N02/include/ExN02TrackerSD.hh +++ b/examples/novice/N02/include/ExN02TrackerSD.hh @@ -25,7 +25,7 @@ // // // $Id: ExN02TrackerSD.hh,v 1.7 2006/06/29 17:47:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02ChamberParameterisation.cc b/examples/novice/N02/src/ExN02ChamberParameterisation.cc index 72c3166976..bc20d65c7b 100644 --- a/examples/novice/N02/src/ExN02ChamberParameterisation.cc +++ b/examples/novice/N02/src/ExN02ChamberParameterisation.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02ChamberParameterisation.cc,v 1.9 2006/06/29 17:47:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02DetectorConstruction.cc b/examples/novice/N02/src/ExN02DetectorConstruction.cc index 0119ff7b02..f518a51947 100644 --- a/examples/novice/N02/src/ExN02DetectorConstruction.cc +++ b/examples/novice/N02/src/ExN02DetectorConstruction.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN02DetectorConstruction.cc,v 1.19 2007/05/11 14:35:01 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN02DetectorConstruction.cc,v 1.20 2007/10/17 08:50:35 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -59,7 +59,8 @@ ExN02DetectorConstruction::ExN02DetectorConstruction() solidTarget(0), logicTarget(0), physiTarget(0), solidTracker(0),logicTracker(0),physiTracker(0), solidChamber(0),logicChamber(0),physiChamber(0), - TargetMater(0), ChamberMater(0),fpMagField(0), + TargetMater(0), ChamberMater(0),chamberParam(0), + stepLimit(0), fpMagField(0), fWorldLength(0.), fTargetLength(0.), fTrackerLength(0.), NbOfChambers(0) , ChamberWidth(0.), ChamberSpacing(0.) { @@ -72,6 +73,8 @@ ExN02DetectorConstruction::ExN02DetectorConstruction() ExN02DetectorConstruction::~ExN02DetectorConstruction() { delete fpMagField; + delete stepLimit; + delete chamberParam; delete detectorMessenger; } @@ -199,7 +202,7 @@ G4VPhysicalVolume* ExN02DetectorConstruction::Construct() G4double firstLength = fTrackerLength/10; G4double lastLength = fTrackerLength; - G4VPVParameterisation* chamberParam = new ExN02ChamberParameterisation( + chamberParam = new ExN02ChamberParameterisation( NbOfChambers, // NoChambers firstPosition, // Z of center of first ChamberSpacing, // Z spacing of centers @@ -251,8 +254,9 @@ G4VPhysicalVolume* ExN02DetectorConstruction::Construct() // Sets a max Step length in the tracker region, with G4StepLimiter // - G4double maxStep = 0.5*ChamberWidth; - logicTracker->SetUserLimits(new G4UserLimits(maxStep)); + G4double maxStep = 0.5*ChamberWidth; + stepLimit = new G4UserLimits(maxStep); + logicTracker->SetUserLimits(stepLimit); // Set additional contraints on the track, with G4UserSpecialCuts // diff --git a/examples/novice/N02/src/ExN02DetectorMessenger.cc b/examples/novice/N02/src/ExN02DetectorMessenger.cc index 0d694d8fb9..bb33b3c8a9 100644 --- a/examples/novice/N02/src/ExN02DetectorMessenger.cc +++ b/examples/novice/N02/src/ExN02DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02DetectorMessenger.cc,v 1.11 2006/06/29 17:48:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02EventAction.cc b/examples/novice/N02/src/ExN02EventAction.cc index 574d205a23..d3510fe827 100644 --- a/examples/novice/N02/src/ExN02EventAction.cc +++ b/examples/novice/N02/src/ExN02EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02EventAction.cc,v 1.11 2006/06/29 17:48:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02MagneticField.cc b/examples/novice/N02/src/ExN02MagneticField.cc index 12766a78b8..fe1803be07 100644 --- a/examples/novice/N02/src/ExN02MagneticField.cc +++ b/examples/novice/N02/src/ExN02MagneticField.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN02MagneticField.cc,v 1.8 2006/06/29 17:48:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN02MagneticField.cc,v 1.9 2007/08/22 13:11:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // User Field class implementation. // @@ -34,6 +34,7 @@ #include "ExN02MagneticField.hh" #include "G4FieldManager.hh" +#include "G4TransportationManager.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -55,45 +56,42 @@ ExN02MagneticField::ExN02MagneticField(G4ThreeVector fieldVector) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +ExN02MagneticField::~ExN02MagneticField() +{ +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + // Set the value of the Global Field to fieldValue along X // -void ExN02MagneticField::SetFieldValue(G4double fieldValue) +void ExN02MagneticField::SetMagFieldValue(G4double fieldValue) { - G4UniformMagField::SetFieldValue(G4ThreeVector(fieldValue,0,0)); + SetMagFieldValue(G4ThreeVector(fieldValue,0,0)); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Set the value of the Global Field // -void ExN02MagneticField::SetFieldValue(G4ThreeVector fieldVector) +void ExN02MagneticField::SetMagFieldValue(G4ThreeVector fieldVector) { // Find the Field Manager for the global field G4FieldManager* fieldMgr= GetGlobalFieldManager(); if(fieldVector!=G4ThreeVector(0.,0.,0.)) { - G4UniformMagField::SetFieldValue(fieldVector); + SetFieldValue(fieldVector); fieldMgr->SetDetectorField(this); } else { // If the new field's value is Zero, then it is best to // insure that it is not used for propagation. - G4MagneticField* magField = NULL; + G4MagneticField* magField = 0; fieldMgr->SetDetectorField(magField); } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -ExN02MagneticField::~ExN02MagneticField() -{ - // GetGlobalFieldManager()->SetDetectorField(0); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -#include "G4TransportationManager.hh" - G4FieldManager* ExN02MagneticField::GetGlobalFieldManager() { return G4TransportationManager::GetTransportationManager()->GetFieldManager(); diff --git a/examples/novice/N02/src/ExN02PhysicsList.cc b/examples/novice/N02/src/ExN02PhysicsList.cc index c6e9e0e034..25f4b202a0 100644 --- a/examples/novice/N02/src/ExN02PhysicsList.cc +++ b/examples/novice/N02/src/ExN02PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02PhysicsList.cc,v 1.22 2006/06/29 17:48:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02PrimaryGeneratorAction.cc b/examples/novice/N02/src/ExN02PrimaryGeneratorAction.cc index 9e75ebaf2b..efd620a016 100644 --- a/examples/novice/N02/src/ExN02PrimaryGeneratorAction.cc +++ b/examples/novice/N02/src/ExN02PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02PrimaryGeneratorAction.cc,v 1.7 2006/06/29 17:48:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02RunAction.cc b/examples/novice/N02/src/ExN02RunAction.cc index 66531ee4f1..621c2a3729 100644 --- a/examples/novice/N02/src/ExN02RunAction.cc +++ b/examples/novice/N02/src/ExN02RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02RunAction.cc,v 1.9 2006/06/29 17:48:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02SteppingAction.cc b/examples/novice/N02/src/ExN02SteppingAction.cc index fa22ff3a4a..c3b98b67c3 100644 --- a/examples/novice/N02/src/ExN02SteppingAction.cc +++ b/examples/novice/N02/src/ExN02SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02SteppingAction.cc,v 1.9 2006/06/29 17:48:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02SteppingVerbose.cc b/examples/novice/N02/src/ExN02SteppingVerbose.cc index fd430bf176..b203f7fe8f 100644 --- a/examples/novice/N02/src/ExN02SteppingVerbose.cc +++ b/examples/novice/N02/src/ExN02SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02SteppingVerbose.cc,v 1.12 2006/06/29 17:48:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02TrackerHit.cc b/examples/novice/N02/src/ExN02TrackerHit.cc index 9dc7d83a52..c008be059b 100644 --- a/examples/novice/N02/src/ExN02TrackerHit.cc +++ b/examples/novice/N02/src/ExN02TrackerHit.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02TrackerHit.cc,v 1.10 2006/06/29 17:48:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02TrackerSD.cc b/examples/novice/N02/src/ExN02TrackerSD.cc index ceead7c980..e622d2e858 100644 --- a/examples/novice/N02/src/ExN02TrackerSD.cc +++ b/examples/novice/N02/src/ExN02TrackerSD.cc @@ -25,7 +25,7 @@ // // // $Id: ExN02TrackerSD.cc,v 1.9 2006/06/29 17:48:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/History b/examples/novice/N03/History index 016787ce01..60fe41b8be 100644 --- a/examples/novice/N03/History +++ b/examples/novice/N03/History @@ -1,4 +1,4 @@ -$Id: History,v 1.113 2007/06/13 10:36:39 maire Exp $ +$Id: History,v 1.117 2007/11/19 20:18:05 perl Exp $ -------------------------------------------------- ========================================================= @@ -15,6 +15,18 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +16-11-07 Laurent Garnier (exampleN03-V09-00-01) +- exampleN03 : Adding Qt render possibility +- visTutor/gui.mac : Adding menu for Qt render +- visTutor/exN03Vis14.mac,visTutor/exN03Vis15.mac : Adding file menu for + Qt render + +02-07-07 V.Ivant (exampleN03-V09-00-00) +- make destructors virtual, cleanup + +25-06-07 mma (exampleN03-V08-03-02) +- simplifications in exampleN03.cc + 13-06-07 mma (exampleN03-V08-03-01) - more verbose in rndmSeed.mac diff --git a/examples/novice/N03/exampleN03.cc b/examples/novice/N03/exampleN03.cc index d89668383f..baf3a42813 100644 --- a/examples/novice/N03/exampleN03.cc +++ b/examples/novice/N03/exampleN03.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: exampleN03.cc,v 1.30 2006/10/26 14:58:24 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: exampleN03.cc,v 1.33 2007/11/16 10:50:41 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -36,20 +36,8 @@ #include "G4UIterminal.hh" #include "G4UItcsh.hh" -#ifdef G4UI_USE_XM -#include "G4UIXm.hh" -#endif - -#ifdef G4UI_USE_WIN32 -#include "G4UIWin32.hh" -#endif - #include "Randomize.hh" -#ifdef G4VIS_USE -#include "G4VisExecutive.hh" -#endif - #include "ExN03DetectorConstruction.hh" #include "ExN03PhysicsList.hh" #include "ExN03PrimaryGeneratorAction.hh" @@ -58,6 +46,25 @@ #include "ExN03SteppingAction.hh" #include "ExN03SteppingVerbose.hh" +#ifdef G4VIS_USE +#include "G4VisExecutive.hh" +#endif + +#ifdef G4UI_USE_XM +#include "G4UIXm.hh" +#endif + +#ifdef G4UI_USE_WIN32 +#include "G4UIWin32.hh" +#endif + +#ifdef G4UI_USE_QT +#include "G4UIQt.hh" +#include "G4Qt.hh" +#include +#endif + + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... int main(int argc,char** argv) @@ -68,8 +75,7 @@ int main(int argc,char** argv) // User Verbose output class // - G4VSteppingVerbose* verbosity = new ExN03SteppingVerbose; - G4VSteppingVerbose::SetInstance(verbosity); + G4VSteppingVerbose::SetInstance(new ExN03SteppingVerbose); // Construct the default run manager // @@ -82,34 +88,11 @@ int main(int argc,char** argv) // G4VUserPhysicsList* physics = new ExN03PhysicsList; runManager->SetUserInitialization(physics); - - G4UIsession* session=0; - - if (argc==1) // Define UI session for interactive mode. - { - // G4UIterminal is a (dumb) terminal - // -#if defined(G4UI_USE_XM) - session = new G4UIXm(argc,argv); -#elif defined(G4UI_USE_WIN32) - session = new G4UIWin32(); -#elif defined(G4UI_USE_TCSH) - session = new G4UIterminal(new G4UItcsh); -#else - session = new G4UIterminal(); -#endif - } - -#ifdef G4VIS_USE - // Visualization manager - // - G4VisManager* visManager = new G4VisExecutive; - visManager->Initialize(); -#endif // Set user action classes // - G4VUserPrimaryGeneratorAction* gen_action = new ExN03PrimaryGeneratorAction(detector); + G4VUserPrimaryGeneratorAction* gen_action = + new ExN03PrimaryGeneratorAction(detector); runManager->SetUserAction(gen_action); // ExN03RunAction* run_action = new ExN03RunAction; @@ -119,50 +102,60 @@ int main(int argc,char** argv) runManager->SetUserAction(event_action); // G4UserSteppingAction* stepping_action = - new ExN03SteppingAction(detector, event_action); + new ExN03SteppingAction(detector, event_action); runManager->SetUserAction(stepping_action); // Initialize G4 kernel // runManager->Initialize(); - + // Get the pointer to the User Interface manager // - G4UImanager* UI = G4UImanager::GetUIpointer(); - - if (session) // Define UI session for interactive mode + G4UImanager* UI = G4UImanager::GetUIpointer(); + + if (argc!=1) // batch mode { - // G4UIterminal is a (dumb) terminal - // - UI->ApplyCommand("/control/execute vis.mac"); -#if defined(G4UI_USE_XM) || defined(G4UI_USE_WIN32) - // Customize the G4UIXm,Win32 menubar with a macro file - // - UI->ApplyCommand("/control/execute visTutor/gui.mac"); -#endif - session->SessionStart(); - delete session; - } - else // Batch mode - { -#ifdef G4VIS_USE - visManager->SetVerboseLevel("quiet"); -#endif G4String command = "/control/execute "; G4String fileName = argv[1]; - UI->ApplyCommand(command+fileName); + UI->ApplyCommand(command+fileName); + } + else // interactive mode : define visualization UI terminal + { +#ifdef G4VIS_USE + G4VisManager* visManager = new G4VisExecutive; + visManager->Initialize(); +#endif + + G4UIsession* session = 0; +#if defined(G4UI_USE_TCSH) + session = new G4UIterminal(new G4UItcsh); +#elif defined(G4UI_USE_XM) + session = new G4UIXm(argc,argv); + UI->ApplyCommand("/control/execute visTutor/gui.mac"); +#elif defined(G4UI_USE_WIN32) + session = new G4UIWin32(); + UI->ApplyCommand("/control/execute visTutor/gui.mac"); +#elif defined(G4UI_USE_QT) + session = new G4UIQt(argc,argv); + UI->ApplyCommand("/control/execute visTutor/gui.mac"); +#else + session = new G4UIterminal(); +#endif + + UI->ApplyCommand("/control/execute vis.mac"); + session->SessionStart(); + delete session; + +#ifdef G4VIS_USE + delete visManager; +#endif } // Job termination // Free the store: user actions, physics_list and detector_description are // owned and deleted by the run manager, so they should not // be deleted in the main() program ! - -#ifdef G4VIS_USE - delete visManager; -#endif delete runManager; - delete verbosity; return 0; } diff --git a/examples/novice/N03/exampleN03.out b/examples/novice/N03/exampleN03.out index c85ed99138..af617941bd 100644 --- a/examples/novice/N03/exampleN03.out +++ b/examples/novice/N03/exampleN03.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -9,88 +9,58 @@ ***** Table : Nb of materials = 13 ***** - Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm + Material: Aluminium density: 2.700 g/cm3 RadL: 8.893 cm Imean: 166.400 eV ---> Element: Aluminium ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm + Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Imean: 187.200 eV ---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm + Material: Lead density: 11.350 g/cm3 RadL: 5.612 mm Imean: 820.000 eV ---> Element: Lead ( ) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm + Material: Water density: 1.000 g/cm3 RadL: 36.092 cm Imean: 75.000 eV ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: Scintillator density: 1.032 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 42.549 cm + Material: Scintillator density: 1.032 g/cm3 RadL: 42.549 cm Imean: 63.913 eV ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 91.45 % ElmAbundance 47.37 % ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 8.55 % ElmAbundance 52.63 % - Material: Mylar density: 1.397 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 28.599 cm + Material: Mylar density: 1.397 g/cm3 RadL: 28.599 cm Imean: 75.075 eV ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 62.49 % ElmAbundance 45.45 % ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 4.20 % ElmAbundance 36.36 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 33.30 % ElmAbundance 18.18 % - Material: quartz density: 2.200 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 12.295 cm + Material: quartz density: 2.200 g/cm3 RadL: 12.295 cm Imean: 126.007 eV ---> Element: Silicon (Si) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 46.75 % ElmAbundance 33.33 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 53.25 % ElmAbundance 66.67 % - Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m + Material: Air density: 1.290 mg/cm3 RadL: 285.161 m Imean: 85.684 eV temperature: 273.15 K pressure: 1.00 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % - Material: Aerogel density: 200.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.493 m + Material: Aerogel density: 200.000 mg/cm3 RadL: 1.493 m Imean: 100.118 eV ---> Element: Silicon (Si) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 29.22 % ElmAbundance 11.12 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 66.49 % ElmAbundance 44.42 % ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 4.19 % ElmAbundance 44.37 % ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 0.10 % ElmAbundance 0.09 % - Material: CarbonicGas density: 27.000 mg/cm3 temperature: 325.00 K pressure: 50.00 atm RadLength: 13.406 m + Material: CarbonicGas density: 27.000 mg/cm3 RadL: 13.406 m Imean: 90.164 eV temperature: 325.00 K pressure: 50.00 atm ---> Element: Carbon (C) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 27.29 % ElmAbundance 33.33 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 72.71 % ElmAbundance 66.67 % - Material: WaterSteam density: 0.300 mg/cm3 temperature: 500.00 K pressure: 2.00 atm RadLength: 1.203 km + Material: WaterSteam density: 0.300 mg/cm3 RadL: 1.203 km Imean: 70.893 eV temperature: 500.00 K pressure: 2.00 atm ---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 % - Material: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 204727576.737 pc + Material: Galactic density: 0.000 mg/cm3 RadL: 204727576.737 pc Imean: 21.800 eV temperature: 2.73 K pressure: 0.00 atm ---> Element: Galactic ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 % - Material: Beam density: 0.010 mg/cm3 temperature: 273.15 K pressure: 0.02 atm RadLength: 36.786 km + Material: Beam density: 0.010 mg/cm3 RadL: 36.786 km Imean: 85.684 eV temperature: 273.15 K pressure: 0.02 atm ---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 % ---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 % -Visualization Manager instantiating... -Visualization Manager initialising... -Registering graphics systems... - -You have successfully registered the following graphics systems. -Current available graphics systems are: - ASCIITree (ATree) - DAWNFILE (DAWNFILE) - G4HepRep (HepRepXML) - G4HepRepFile (HepRepFile) - RayTracer (RayTracer) - VRML1FILE (VRML1FILE) - VRML2FILE (VRML2FILE) - -Registering model factories... - -You have successfully registered the following model factories. -Registered model factories: - generic - drawByCharge - drawByParticleID - drawByOriginVolume - drawByAttribute - -Registered filter factories: - chargeFilter - particleFilter - originVolumeFilter - attributeFilter - ------------------------------------------------------------ ---> The calorimeter is 10 layers of: [ 10mm of Lead + 5mm of liquidArgon ] @@ -120,7 +90,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -133,7 +103,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -156,7 +126,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -164,7 +134,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -176,7 +146,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -193,7 +163,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -211,7 +181,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -224,7 +194,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -260,16 +230,16 @@ Index : 2 used in the geometry : Yes recalculation needed : No Current couple of seeds = 9876, 54321 ---------------------------------------- ---> End of event: 0 - Absorber: total energy: 264.2675 MeV total track length: 18.045359 cm - Gap: total energy: 15.152322 MeV total track length: 6.8321887 cm + Absorber: total energy: 272.21636 MeV total track length: 18.48107 cm + Gap: total energy: 9.18773 MeV total track length: 4.6032016 cm --------------------End of Run------------------------------ - mean Energy in Absorber : 264.2675 MeV +- 0 eV - mean Energy in Gap : 15.152322 MeV +- 0 eV + mean Energy in Absorber : 272.21636 MeV +- 0 eV + mean Energy in Gap : 9.18773 MeV +- 0 eV - mean trackLength in Absorber : 18.045359 cm +- 0 fm - mean trackLength in Gap : 6.8321887 cm +- 0 fm + mean trackLength in Absorber : 18.48107 cm +- 0 fm + mean trackLength in Gap : 4.6032016 cm +- 0 fm ------------------------------------------------------------ Transportation, msc, hIoni, eIoni @@ -300,7 +270,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -313,7 +283,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -336,7 +306,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -344,7 +314,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -356,7 +326,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -373,7 +343,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -391,7 +361,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.29750425 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -404,26 +374,26 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.29750425 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ### Run 1 start. ---> Begin of event: 0 --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1253212525, 646045331 + Current couple of seeds = 1300673559, 29442236 ---------------------------------------- ---> End of event: 0 - Absorber: total energy: 284.30379 MeV total track length: 19.961055 cm - Gap: total energy: 16.718213 MeV total track length: 7.8970321 cm + Absorber: total energy: 279.69725 MeV total track length: 19.381005 cm + Gap: total energy: 15.528062 MeV total track length: 7.792854 cm --------------------End of Run------------------------------ - mean Energy in Absorber : 284.30379 MeV +- 0 eV - mean Energy in Gap : 16.718213 MeV +- 0 eV + mean Energy in Absorber : 279.69725 MeV +- 0 eV + mean Energy in Gap : 15.528062 MeV +- 0 eV - mean trackLength in Absorber : 19.961055 cm +- 0 fm - mean trackLength in Gap : 7.8970321 cm +- 0 fm + mean trackLength in Absorber : 19.381005 cm +- 0 fm + mean trackLength in Gap : 7.792854 cm +- 0 fm ------------------------------------------------------------ @@ -454,7 +424,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -467,7 +437,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -490,7 +460,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -498,7 +468,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -510,7 +480,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -527,7 +497,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -545,7 +515,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.29750425 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -558,25 +528,25 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.29750425 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ### Run 2 start. ---> Begin of event: 0 --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 881683015, 1721671407 + Current couple of seeds = 225743317, 1902422135 ---------------------------------------- ---> End of event: 0 - Absorber: total energy: 386.07202 MeV total track length: 91.831752 cm - Gap: total energy: 86.0874 MeV total track length: 2.4638487 m + Absorber: total energy: 396.03022 MeV total track length: 94.946029 cm + Gap: total energy: 101.82199 MeV total track length: 2.8245592 m --------------------End of Run------------------------------ - mean Energy in Absorber : 386.07202 MeV +- 0 eV - mean Energy in Gap : 86.0874 MeV +- 0 eV + mean Energy in Absorber : 396.03022 MeV +- 0 eV + mean Energy in Gap : 101.82199 MeV +- 0 eV - mean trackLength in Absorber : 91.831752 cm +- 0 fm - mean trackLength in Gap : 2.4638487 m +- 0 fm + mean trackLength in Absorber : 94.946029 cm +- 0 fm + mean trackLength in Gap : 2.8245592 m +- 0 fm ------------------------------------------------------------ diff --git a/examples/novice/N03/include/ExN03DetectorConstruction.hh b/examples/novice/N03/include/ExN03DetectorConstruction.hh index 1726543f66..b1cec6e85d 100644 --- a/examples/novice/N03/include/ExN03DetectorConstruction.hh +++ b/examples/novice/N03/include/ExN03DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03DetectorConstruction.hh,v 1.7 2006/06/29 17:48:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N03/include/ExN03DetectorMessenger.hh b/examples/novice/N03/include/ExN03DetectorMessenger.hh index dcb00d96b1..1e670d514c 100644 --- a/examples/novice/N03/include/ExN03DetectorMessenger.hh +++ b/examples/novice/N03/include/ExN03DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03DetectorMessenger.hh,v 1.7 2006/06/29 17:48:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N03/include/ExN03EventAction.hh b/examples/novice/N03/include/ExN03EventAction.hh index f628fd7723..d0bddf8672 100644 --- a/examples/novice/N03/include/ExN03EventAction.hh +++ b/examples/novice/N03/include/ExN03EventAction.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN03EventAction.hh,v 1.11 2006/10/26 14:30:05 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN03EventAction.hh,v 1.12 2007/07/02 13:22:08 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -45,20 +45,19 @@ class ExN03EventActionMessenger; class ExN03EventAction : public G4UserEventAction { - public: - ExN03EventAction(ExN03RunAction*); - ~ExN03EventAction(); +public: + ExN03EventAction(ExN03RunAction*); + virtual ~ExN03EventAction(); - public: - void BeginOfEventAction(const G4Event*); - void EndOfEventAction(const G4Event*); + void BeginOfEventAction(const G4Event*); + void EndOfEventAction(const G4Event*); - void AddAbs(G4double de, G4double dl) {EnergyAbs += de; TrackLAbs += dl;}; - void AddGap(G4double de, G4double dl) {EnergyGap += de; TrackLGap += dl;}; + void AddAbs(G4double de, G4double dl) {EnergyAbs += de; TrackLAbs += dl;}; + void AddGap(G4double de, G4double dl) {EnergyGap += de; TrackLGap += dl;}; - void SetPrintModulo(G4int val) {printModulo = val;}; + void SetPrintModulo(G4int val) {printModulo = val;}; - private: +private: ExN03RunAction* runAct; G4double EnergyAbs, EnergyGap; diff --git a/examples/novice/N03/include/ExN03EventActionMessenger.hh b/examples/novice/N03/include/ExN03EventActionMessenger.hh index 455cfba77c..fd904d2f52 100644 --- a/examples/novice/N03/include/ExN03EventActionMessenger.hh +++ b/examples/novice/N03/include/ExN03EventActionMessenger.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN03EventActionMessenger.hh,v 1.9 2006/10/26 14:28:00 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN03EventActionMessenger.hh,v 1.10 2007/07/02 13:22:08 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -46,16 +46,16 @@ class G4UIcmdWithAnInteger; class ExN03EventActionMessenger: public G4UImessenger { - public: - ExN03EventActionMessenger(ExN03EventAction*); - ~ExN03EventActionMessenger(); +public: + ExN03EventActionMessenger(ExN03EventAction*); + virtual ~ExN03EventActionMessenger(); - void SetNewValue(G4UIcommand*, G4String); + void SetNewValue(G4UIcommand*, G4String); - private: - ExN03EventAction* eventAction; - G4UIdirectory* eventDir; - G4UIcmdWithAnInteger* PrintCmd; +private: + ExN03EventAction* eventAction; + G4UIdirectory* eventDir; + G4UIcmdWithAnInteger* PrintCmd; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/include/ExN03PhysicsList.hh b/examples/novice/N03/include/ExN03PhysicsList.hh index c23cca433f..9a5a2027bb 100644 --- a/examples/novice/N03/include/ExN03PhysicsList.hh +++ b/examples/novice/N03/include/ExN03PhysicsList.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN03PhysicsList.hh,v 1.12 2006/06/29 17:48:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN03PhysicsList.hh,v 1.13 2007/07/02 13:22:08 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -42,29 +42,26 @@ class ExN03PhysicsList: public G4VUserPhysicsList { - public: - ExN03PhysicsList(); - ~ExN03PhysicsList(); +public: + ExN03PhysicsList(); + virtual ~ExN03PhysicsList(); - protected: - // Construct particle and physics - void ConstructParticle(); - void ConstructProcess(); + // Construct particle and physics + void ConstructParticle(); + void ConstructProcess(); - void SetCuts(); - + void SetCuts(); - protected: - // these methods Construct particles - void ConstructBosons(); - void ConstructLeptons(); - void ConstructMesons(); - void ConstructBaryons(); +private: + // these methods Construct particles + void ConstructBosons(); + void ConstructLeptons(); + void ConstructMesons(); + void ConstructBaryons(); - protected: - // these methods Construct physics processes and register them - void ConstructGeneral(); - void ConstructEM(); + // these methods Construct physics processes and register them + void ConstructDecay(); + void ConstructEM(); }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/include/ExN03PrimaryGeneratorAction.hh b/examples/novice/N03/include/ExN03PrimaryGeneratorAction.hh index f7462ae5d9..24c35239d7 100644 --- a/examples/novice/N03/include/ExN03PrimaryGeneratorAction.hh +++ b/examples/novice/N03/include/ExN03PrimaryGeneratorAction.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN03PrimaryGeneratorAction.hh,v 1.7 2006/06/29 17:48:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN03PrimaryGeneratorAction.hh,v 1.8 2007/07/02 13:22:08 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -47,20 +47,19 @@ class ExN03PrimaryGeneratorMessenger; class ExN03PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { - public: - ExN03PrimaryGeneratorAction(ExN03DetectorConstruction*); - ~ExN03PrimaryGeneratorAction(); +public: + ExN03PrimaryGeneratorAction(ExN03DetectorConstruction*); + virtual ~ExN03PrimaryGeneratorAction(); - public: - void GeneratePrimaries(G4Event*); - void SetRndmFlag(G4String val) { rndmFlag = val;} + void GeneratePrimaries(G4Event*); + void SetRndmFlag(G4String val) { rndmFlag = val;} - private: - G4ParticleGun* particleGun; //pointer a to G4 class - ExN03DetectorConstruction* ExN03Detector; //pointer to the geometry +private: + G4ParticleGun* particleGun; //pointer a to G4 class + ExN03DetectorConstruction* ExN03Detector; //pointer to the geometry - ExN03PrimaryGeneratorMessenger* gunMessenger; //messenger of this class - G4String rndmFlag; //flag for a rndm impact point + ExN03PrimaryGeneratorMessenger* gunMessenger; //messenger of this class + G4String rndmFlag; //flag for a rndm impact point }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/include/ExN03PrimaryGeneratorMessenger.hh b/examples/novice/N03/include/ExN03PrimaryGeneratorMessenger.hh index fd3a5a3f1e..485319d741 100644 --- a/examples/novice/N03/include/ExN03PrimaryGeneratorMessenger.hh +++ b/examples/novice/N03/include/ExN03PrimaryGeneratorMessenger.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN03PrimaryGeneratorMessenger.hh,v 1.7 2006/06/29 17:48:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN03PrimaryGeneratorMessenger.hh,v 1.8 2007/07/02 13:22:08 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -46,16 +46,16 @@ class G4UIcmdWithAString; class ExN03PrimaryGeneratorMessenger: public G4UImessenger { - public: - ExN03PrimaryGeneratorMessenger(ExN03PrimaryGeneratorAction*); - ~ExN03PrimaryGeneratorMessenger(); +public: + ExN03PrimaryGeneratorMessenger(ExN03PrimaryGeneratorAction*); + virtual ~ExN03PrimaryGeneratorMessenger(); - void SetNewValue(G4UIcommand*, G4String); + void SetNewValue(G4UIcommand*, G4String); - private: - ExN03PrimaryGeneratorAction* ExN03Action; - G4UIdirectory* gunDir; - G4UIcmdWithAString* RndmCmd; +private: + ExN03PrimaryGeneratorAction* ExN03Action; + G4UIdirectory* gunDir; + G4UIcmdWithAString* RndmCmd; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/include/ExN03RunAction.hh b/examples/novice/N03/include/ExN03RunAction.hh index b6f6a6185e..e74fff3a12 100644 --- a/examples/novice/N03/include/ExN03RunAction.hh +++ b/examples/novice/N03/include/ExN03RunAction.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN03RunAction.hh,v 1.10 2006/06/29 17:48:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN03RunAction.hh,v 1.11 2007/07/02 13:22:08 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -44,22 +44,21 @@ class G4Run; class ExN03RunAction : public G4UserRunAction { - public: - ExN03RunAction(); - ~ExN03RunAction(); +public: + ExN03RunAction(); + virtual ~ExN03RunAction(); - public: - void BeginOfRunAction(const G4Run*); - void EndOfRunAction(const G4Run*); + void BeginOfRunAction(const G4Run*); + void EndOfRunAction(const G4Run*); - void fillPerEvent(G4double, G4double, G4double, G4double); + void fillPerEvent(G4double, G4double, G4double, G4double); - private: - G4double sumEAbs, sum2EAbs; - G4double sumEGap, sum2EGap; +private: + G4double sumEAbs, sum2EAbs; + G4double sumEGap, sum2EGap; - G4double sumLAbs, sum2LAbs; - G4double sumLGap, sum2LGap; + G4double sumLAbs, sum2LAbs; + G4double sumLGap, sum2LGap; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/include/ExN03SteppingAction.hh b/examples/novice/N03/include/ExN03SteppingAction.hh index dc193c41ba..73f3de76bf 100644 --- a/examples/novice/N03/include/ExN03SteppingAction.hh +++ b/examples/novice/N03/include/ExN03SteppingAction.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN03SteppingAction.hh,v 1.9 2006/06/29 17:48:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN03SteppingAction.hh,v 1.10 2007/07/02 13:22:08 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -44,15 +44,15 @@ class ExN03EventAction; class ExN03SteppingAction : public G4UserSteppingAction { - public: - ExN03SteppingAction(ExN03DetectorConstruction*, ExN03EventAction*); - ~ExN03SteppingAction(); +public: + ExN03SteppingAction(ExN03DetectorConstruction*, ExN03EventAction*); + virtual ~ExN03SteppingAction(); - void UserSteppingAction(const G4Step*); + void UserSteppingAction(const G4Step*); - private: - ExN03DetectorConstruction* detector; - ExN03EventAction* eventaction; +private: + ExN03DetectorConstruction* detector; + ExN03EventAction* eventaction; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/include/ExN03SteppingVerbose.hh b/examples/novice/N03/include/ExN03SteppingVerbose.hh index 54cf40f8f1..5407e772b9 100644 --- a/examples/novice/N03/include/ExN03SteppingVerbose.hh +++ b/examples/novice/N03/include/ExN03SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: ExN03SteppingVerbose.hh,v 1.9 2006/06/29 17:48:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03DetectorConstruction.cc b/examples/novice/N03/src/ExN03DetectorConstruction.cc index 7b3c061d13..7201f4e063 100644 --- a/examples/novice/N03/src/ExN03DetectorConstruction.cc +++ b/examples/novice/N03/src/ExN03DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03DetectorConstruction.cc,v 1.23 2006/06/29 17:48:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N03/src/ExN03DetectorMessenger.cc b/examples/novice/N03/src/ExN03DetectorMessenger.cc index 0fcabc8fa5..8dd649153e 100644 --- a/examples/novice/N03/src/ExN03DetectorMessenger.cc +++ b/examples/novice/N03/src/ExN03DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03DetectorMessenger.cc,v 1.10 2006/06/29 17:48:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N03/src/ExN03EventAction.cc b/examples/novice/N03/src/ExN03EventAction.cc index 83ceaa87ba..8c20ae9299 100644 --- a/examples/novice/N03/src/ExN03EventAction.cc +++ b/examples/novice/N03/src/ExN03EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03EventAction.cc,v 1.28 2006/10/26 14:30:05 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N03/src/ExN03EventActionMessenger.cc b/examples/novice/N03/src/ExN03EventActionMessenger.cc index 2be7fd2859..2bcd3752fd 100644 --- a/examples/novice/N03/src/ExN03EventActionMessenger.cc +++ b/examples/novice/N03/src/ExN03EventActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03EventActionMessenger.cc,v 1.12 2006/10/26 14:28:00 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N03/src/ExN03PhysicsList.cc b/examples/novice/N03/src/ExN03PhysicsList.cc index b50b4404df..858c9454c6 100644 --- a/examples/novice/N03/src/ExN03PhysicsList.cc +++ b/examples/novice/N03/src/ExN03PhysicsList.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN03PhysicsList.cc,v 1.20 2006/06/29 17:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN03PhysicsList.cc,v 1.21 2007/07/02 13:22:08 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -41,8 +41,8 @@ ExN03PhysicsList::ExN03PhysicsList(): G4VUserPhysicsList() { - defaultCutValue = 1.0*mm; - SetVerboseLevel(1); + defaultCutValue = 1.0*mm; + SetVerboseLevel(1); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -118,7 +118,7 @@ void ExN03PhysicsList::ConstructMesons() void ExN03PhysicsList::ConstructBaryons() { -// barions + // barions G4Proton::ProtonDefinition(); G4AntiProton::AntiProtonDefinition(); G4Neutron::NeutronDefinition(); @@ -132,7 +132,7 @@ void ExN03PhysicsList::ConstructProcess() { AddTransportation(); ConstructEM(); - ConstructGeneral(); + ConstructDecay(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -204,10 +204,10 @@ void ExN03PhysicsList::ConstructEM() #include "G4Decay.hh" -void ExN03PhysicsList::ConstructGeneral() +void ExN03PhysicsList::ConstructDecay() { // Add Decay Process - G4Decay* theDecayProcess = new G4Decay(); + G4Decay* theDecayProcess = new G4Decay(); theParticleIterator->reset(); while( (*theParticleIterator)() ){ G4ParticleDefinition* particle = theParticleIterator->value(); diff --git a/examples/novice/N03/src/ExN03PrimaryGeneratorAction.cc b/examples/novice/N03/src/ExN03PrimaryGeneratorAction.cc index 3fb6141de3..428e3a4d3d 100644 --- a/examples/novice/N03/src/ExN03PrimaryGeneratorAction.cc +++ b/examples/novice/N03/src/ExN03PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03PrimaryGeneratorAction.cc,v 1.8 2006/06/29 17:49:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N03/src/ExN03PrimaryGeneratorMessenger.cc b/examples/novice/N03/src/ExN03PrimaryGeneratorMessenger.cc index d05cf66163..21c4e94bda 100644 --- a/examples/novice/N03/src/ExN03PrimaryGeneratorMessenger.cc +++ b/examples/novice/N03/src/ExN03PrimaryGeneratorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03PrimaryGeneratorMessenger.cc,v 1.9 2006/06/29 17:49:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N03/src/ExN03RunAction.cc b/examples/novice/N03/src/ExN03RunAction.cc index 787ce5a71c..04c3aaf09f 100644 --- a/examples/novice/N03/src/ExN03RunAction.cc +++ b/examples/novice/N03/src/ExN03RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03RunAction.cc,v 1.18 2006/06/29 17:49:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03SteppingAction.cc b/examples/novice/N03/src/ExN03SteppingAction.cc index 70f309dc15..5cc1537832 100644 --- a/examples/novice/N03/src/ExN03SteppingAction.cc +++ b/examples/novice/N03/src/ExN03SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03SteppingAction.cc,v 1.15 2006/06/29 17:49:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N03/src/ExN03SteppingVerbose.cc b/examples/novice/N03/src/ExN03SteppingVerbose.cc index fe05f7ef06..649b3b7af1 100644 --- a/examples/novice/N03/src/ExN03SteppingVerbose.cc +++ b/examples/novice/N03/src/ExN03SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: ExN03SteppingVerbose.cc,v 1.13 2006/06/29 17:49:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/visTutor/exN03Vis14.mac b/examples/novice/N03/visTutor/exN03Vis14.mac new file mode 100644 index 0000000000..a006c03b8d --- /dev/null +++ b/examples/novice/N03/visTutor/exN03Vis14.mac @@ -0,0 +1,156 @@ +####################################################################### +# MACRO FILE NAME: exN03Vis14.mac # +# # +# AUTHOR(S): Laurent Garnier # +# # +# DATE: July 13, 2007 # +# # +# CONTENTS: A basic macro for visualization of detector geometry # +# # +# USAGE: % gmake visclean # +# % $G4BINDIR/exampleN03 # +# Idle> /control/execute visTutor/exN03Vis14.mac # +# # +# REQUIRED PLATFORMS & SOFTWARES: Unix, X-window, OpenGL,Qt # +# DAWN (version 3.85 or after) # +# gv (Ghostview), Tcl/Tk # +# # +# ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # +# (See geant4/source/visualization/README for details.) # +# # +# % setenv OGLHOME ... (e.g. /usr/X11R6) # +# % setenv G4VIS_BUILD_OPENGLQT_DRIVER 1 # +# # +# ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # +# (See geant4/source/visualization/README for details.) # +# # +# % setenv G4VIS_USE_OPENGLQT 1 # +# # +# ADDITIONAL NOTES: # +# The compound command "/vis/open " # +# is equivalent to the following set of commands: # +# # +# /vis/sceneHandler/create $1 # +# /vis/viewer/create # +# # +# The compound command "/vis/drawVolume " # +# is equivalent to the following set of commands: # +# # +# /vis/scene/create # +# /vis/scene/add/volume $1 # +# /vis/sceneHandler/attach # +# # +####################################################################### + +########################################### +# Visualization of detector geometry +# with the OGLSQT (OpenGL Stored QT) driver +########################################### + +# Invoke the OGLSQT driver +/vis/open OGLSQT + +# Bird's-eye view of the detector geometry +# +# viewpoint : (theta,phi) = (20*deg, 70*deg), +# zoom factor: 0.8 of the full screen size +# +/vis/viewer/reset +/vis/viewer/set/viewpointThetaPhi 20 70 +/vis/viewer/zoom 0.8 +/vis/drawVolume + +# The following two commands "flush" +# the action of the current viewer. +# They are required for the post-processing drivers +# such as DAWNFILE, VRMLFILE, HepRep drivers, etc. +# For OpenGL drivers, these commands are not required +# but harmless even if they are described. +/vis/viewer/flush + +########################################################## +# Visualization with the DAWNFILE driver +# +# * Each visualized view is saved to a file "g4_XX.eps" +# with the "vectorized" PostScript format. +# +# * Set an environmental variable if you wish to +# skip DAWN GUI: +# % setenv G4DAWNFILE_VIEWER "dawn -d" +########################################################## + +# Invoke the DAWNFILE driver +/vis/open DAWNFILE + +# Bird's-eye view of a detector component (Absorber) +# viewpoint : (theta,phi) = (35*deg, 35*deg), +# zoom factor: 1.1 of the full screen size +# coordinate axes: +# x-axis:red, y-axis:green, z-axis:blue +# origin: (0,0,0), length: 500 +# Scale: length = 10 cm, Orientation = z, color = red, +# placing_algorithm = manual, +# center = (-2.5 cm , -5 cm, 0 cm) +# +/vis/viewer/reset +/vis/viewer/zoom 1.1 +/vis/viewer/set/viewpointThetaPhi 35 35 +/vis/drawVolume Absorber +/vis/scene/add/axes 0 0 0 500 mm +/vis/scene/add/text 0 0 0 mm 40 -100 -140 Absorber +/vis/scene/add/scale 10 cm z 1 0 0 manual -2.5 -5 0 cm + +# "Flush the action of all the existing viewers. +# Note: You should execute these commands, e.g., +# when the current scene is modified. +/vis/scene/notifyHandlers +/vis/viewer/update + +# FOR FUTURE UPDATION +#/vis/viewer/flushAll + +# Bird's-eye view of a detector component (Gap) +/vis/viewer/reset +/vis/viewer/zoom 1.1 +/vis/viewer/set/viewpointThetaPhi 35 35 +/vis/drawVolume Gap +/vis/scene/add/axes 0 0 0 500 mm +/vis/scene/add/text 0 0 0 mm 50 -100 -140 Gap +/vis/scene/add/scale 10 cm z 1 0 0 manual -2.5 -5 0 cm + +# "Flush the action of all the existing viewers. +/vis/scene/notifyHandlers +/vis/viewer/update + +# FOR FUTURE UPDATION +#/vis/viewer/flushAll + + +# Bird's-eye view of the whole detector components (world) +# * The argument "world" of the command +# "/vis/scene/add/volume" is omittable. +# * "/vis/viewer/set/culling false" makes the invisible +# world volume visible. +# (The invisibility of the world volume is set +# in ExN03DetectorConstruction.cc.) +/vis/viewer/reset +/vis/viewer/zoom 1.1 +/vis/viewer/set/viewpointThetaPhi 35 35 +/vis/viewer/set/culling global false +/vis/drawVolume +/vis/scene/add/axes 0 0 0 500 mm +/vis/scene/add/text 0 0 0 mm 50 -100 -240 World +/vis/scene/add/scale 10 cm x 1 0 0 + +# "Flush the action of all the existing viewers. +/vis/scene/notifyHandlers +/vis/viewer/update + +# FOR FUTURE UPDATION +#/vis/viewer/flushAll + + +# Make the culling on for next visualization +# Note: You may also use "/vis/viewer/reset" +# for this initialization. +/vis/viewer/set/culling global true diff --git a/examples/novice/N03/visTutor/exN03Vis15.mac b/examples/novice/N03/visTutor/exN03Vis15.mac new file mode 100644 index 0000000000..f6a2bb8cb5 --- /dev/null +++ b/examples/novice/N03/visTutor/exN03Vis15.mac @@ -0,0 +1,70 @@ +####################################################################### +# MACRO FILE NAME: exN03Vis12.mac # +# # +# AUTHOR(S): Laurent Garnier # +# # +# DATE: July 01, 2007 # +# # +# CONTENTS: A basic macro for demonstrating Inventor driver # +# # +# USAGE: % $G4BINDIR/exampleN03 visTutor/exN03Vis12.mac # +# # +# REQUIRED PLATFORMS & SOFTWARES: Unix, Motif, X-window, OpenGL,Qt # +# HEPVis # +# Inventor (TGS or SoFree) # +# # +# ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # +# (See geant4/source/visualization/README for details.) # +# # +# % setenv G4VIS_BUILD_OIX_DRIVER 1 # +# # +# ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # +# (See geant4/source/visualization/README for details.) # +# # +# % setenv G4VIS_USE_OIQT 1 # +# # +# ADDITIONAL NOTES: # +# # +####################################################################### + +# Create "scene-0" +/vis/scene/create + +# Invoke the OpenInventor driver +/vis/sceneHandler/create OGLIQT +/vis/viewer/create + +# Add the world volume to the current scene +/vis/scene/add/volume +#/vis/scene/add/volume Layer +# Name of the absorbers = name of their material (Lead) ! +#/vis/scene/add/volume Lead +# Name of the gaps = name of their material (liquidArgon) ! +#/vis/scene/add/volume liquidArgon +#/vis/scene/add/trajectories +/tracking/storeTrajectory 1 + +# Bird-eye view of events +/vis/viewer/reset +/vis/viewer/set/viewpointThetaPhi 45 45 + +/vis/scene/notifyHandlers + +/control/verbose 2 +####################################################################### +# Controls on an Inventor examiner viewer are : # +# - in picking mode (cursor is the upper left arrow) # +# Ctrl + pick a volume : see daughters. # +# Shift + pick a volume : see mother. # +# - in viewing mode (cursor is the hand) # +# Left-button + pointer move : rotate. # +# Ctrl+Left-button + pointer move : pane. # +# Ctrl+Shift+Left-button + pointer move : scale. # +# Middle-button + pointer move : pane. # +# # +####################################################################### + +/vis/viewer/update + +/run/beamOn 1 + diff --git a/examples/novice/N03/visTutor/gui.mac b/examples/novice/N03/visTutor/gui.mac index 83160a0b7a..9ed5cd8bc9 100644 --- a/examples/novice/N03/visTutor/gui.mac +++ b/examples/novice/N03/visTutor/gui.mac @@ -32,6 +32,8 @@ /gui/addButton vis Vis2(OGLSX) "/control/execute visTutor/exN03Vis2.mac" /gui/addButton vis Vis3(OGLSX) "/control/execute visTutor/exN03Vis3.mac" /gui/addButton vis Vis4(OGLIX) "/control/execute visTutor/exN03Vis4.mac" +/gui/addButton vis Vis15(OGLIQT) "/control/execute visTutor/exN03Vis15.mac" +/gui/addButton vis Vis14(OGLSQT) "/control/execute visTutor/exN03Vis14.mac" /gui/addButton vis Vis5(OIX) "/control/execute visTutor/exN03Vis5.mac" /gui/addButton vis Vis6(VRML2FILE) "/control/execute visTutor/exN03Vis6.mac" /gui/addButton vis Vis7(DAWNFILE) "/control/execute visTutor/exN03Vis7.mac" diff --git a/examples/novice/N04/History b/examples/novice/N04/History index 484334c3e9..e193acba50 100644 --- a/examples/novice/N04/History +++ b/examples/novice/N04/History @@ -1,4 +1,4 @@ -$Id: History,v 1.58 2007/06/14 10:06:20 gcosmo Exp $ +$Id: History,v 1.60 2007/07/02 13:28:34 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,10 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +02-07-07 V.Ivant (exampleN04-V09-00-00) +25-06-07 mma (exampleN04-V08-03-01) +- cosmetic in exampleN04.cc 14-06-07 G.Cosmo (exampleN04-V08-03-00) - Delete materials and elements when quitting application. diff --git a/examples/novice/N04/exampleN04.EMtest.out b/examples/novice/N04/exampleN04.EMtest.out index 5e4c029ecc..1b84945c2e 100644 --- a/examples/novice/N04/exampleN04.EMtest.out +++ b/examples/novice/N04/exampleN04.EMtest.out @@ -1,45 +1,15 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 ************************************************************* -<<< Geant4 Physics List engine packaging library: PACK 5.3 +<<< Geant4 Physics List engine packaging library: PACK 5.4 <<< Geant4 Physics List simulation engine: QGSP 3.3 -Visualization Manager instantiating... -Visualization Manager initialising... -Registering graphics systems... - -You have successfully registered the following graphics systems. -Current available graphics systems are: - ASCIITree (ATree) - DAWNFILE (DAWNFILE) - G4HepRep (HepRepXML) - G4HepRepFile (HepRepFile) - RayTracer (RayTracer) - VRML1FILE (VRML1FILE) - VRML2FILE (VRML2FILE) - -Registering model factories... - -You have successfully registered the following model factories. -Registered model factories: - generic - drawByCharge - drawByParticleID - drawByOriginVolume - drawByAttribute - -Registered filter factories: - chargeFilter - particleFilter - originVolumeFilter - attributeFilter - ### Adding Neutron tracking cut for neutron ### cut value is 10 microseconds @@ -66,7 +36,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -79,7 +49,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -102,7 +72,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for GenericIon LateralDisplacementFlag= 0 Skin= 0 @@ -116,7 +86,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -124,7 +94,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -136,7 +106,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -153,7 +123,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -173,7 +143,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -186,29 +156,27 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ### Run 0 start. Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 1 isolated muon found. >>> Event 0 - 6 hits are stored in ExN04TrackerHitsCollection. - 5 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.23087518 (GeV) + 54 hits are stored in ExN04TrackerHitsCollection. + 7 hits are stored in ExN04CalorimeterHitsCollection. + Total energy deposition in calorimeter : 0.34645851 (GeV) 1 hits are stored in ExN04MuonHitsCollection. ### Run 1 start. Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 1 isolated muon found. >>> Event 0 - 5 hits are stored in ExN04TrackerHitsCollection. - 45 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 31.077301 (GeV) + 41 hits are stored in ExN04TrackerHitsCollection. + 16 hits are stored in ExN04CalorimeterHitsCollection. + Total energy deposition in calorimeter : 4.3373563 (GeV) 1 hits are stored in ExN04MuonHitsCollection. Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 1 isolated muon found. >>> Event 1 - 5 hits are stored in ExN04TrackerHitsCollection. - 28 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 15.454959 (GeV) + 186 hits are stored in ExN04TrackerHitsCollection. + 12 hits are stored in ExN04CalorimeterHitsCollection. + Total energy deposition in calorimeter : 2.0797183 (GeV) 1 hits are stored in ExN04MuonHitsCollection. -Graphics systems deleted. -Visualization Manager deleting... diff --git a/examples/novice/N04/exampleN04.cc b/examples/novice/N04/exampleN04.cc index 7f0352b8b5..4a45e9fa14 100644 --- a/examples/novice/N04/exampleN04.cc +++ b/examples/novice/N04/exampleN04.cc @@ -24,13 +24,12 @@ // ******************************************************************** // // -// $Id: exampleN04.cc,v 1.14 2006/12/08 09:34:14 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: exampleN04.cc,v 1.16 2007/07/02 13:28:34 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// -// -------------------------------------------------------------- -// GEANT 4 - exampleN04 -// -------------------------------------------------------------- +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4RunManager.hh" #include "G4UImanager.hh" @@ -69,13 +68,6 @@ int main(int argc,char** argv) // G4VUserPhysicsList* physics = new QGSP; runManager->SetUserInitialization(physics); - -#ifdef G4VIS_USE - // Visualization, if you choose to have it! - // - G4VisManager* visManager = new G4VisExecutive; - visManager->Initialize(); -#endif runManager->Initialize(); @@ -100,37 +92,46 @@ int main(int argc,char** argv) runManager->SetUserAction(stepping_action); //get the pointer to the User Interface manager - G4UImanager* UImanager = G4UImanager::GetUIpointer(); + G4UImanager* UI = G4UImanager::GetUIpointer(); - if(argc==1) // Define (G)UI terminal for interactive mode - { - // G4UIterminal is a (dumb) terminal - // -#ifdef G4UI_USE_TCSH - G4UIsession* session = new G4UIterminal(new G4UItcsh); -#else - G4UIsession* session = new G4UIterminal(); + if (argc!=1) // batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + else // interactive mode : define visualization and UI terminal + { +#ifdef G4VIS_USE + G4VisManager* visManager = new G4VisExecutive; + visManager->Initialize(); #endif - UImanager->ApplyCommand("/control/execute vis.mac"); - session->SessionStart(); - delete session; - } - else // Batch mode - { - G4String command = "/control/execute "; - G4String fileName = argv[1]; - UImanager->ApplyCommand(command+fileName); - } + + G4UIsession * session = 0; +#ifdef G4UI_USE_TCSH + session = new G4UIterminal(new G4UItcsh); +#else + session = new G4UIterminal(); +#endif + UI->ApplyCommand("/control/execute vis.mac"); + session->SessionStart(); + delete session; + +#ifdef G4VIS_USE + delete visManager; +#endif + } + + // Job termination // Free the store: user actions, physics_list and detector_description are // owned and deleted by the run manager, so they should not // be deleted in the main() program ! - -#ifdef G4VIS_USE - delete visManager; -#endif delete runManager; delete verbosity; return 0; } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N04/exampleN04.out b/examples/novice/N04/exampleN04.out index 31567ab3c4..ec39f99726 100644 --- a/examples/novice/N04/exampleN04.out +++ b/examples/novice/N04/exampleN04.out @@ -1,48 +1,18 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 ************************************************************* -<<< Geant4 Physics List engine packaging library: PACK 5.3 +<<< Geant4 Physics List engine packaging library: PACK 5.4 <<< Geant4 Physics List simulation engine: QGSP 3.3 -Visualization Manager instantiating... -Visualization Manager initialising... -Registering graphics systems... - -You have successfully registered the following graphics systems. -Current available graphics systems are: - ASCIITree (ATree) - DAWNFILE (DAWNFILE) - G4HepRep (HepRepXML) - G4HepRepFile (HepRepFile) - RayTracer (RayTracer) - VRML1FILE (VRML1FILE) - VRML2FILE (VRML2FILE) - -Registering model factories... - -You have successfully registered the following model factories. -Registered model factories: - generic - drawByCharge - drawByParticleID - drawByOriginVolume - drawByAttribute - -Registered filter factories: - chargeFilter - particleFilter - originVolumeFilter - attributeFilter - ### Adding Neutron tracking cut for neutron ### cut value is 10 microseconds -/run/verbose 1 +/run/verbose 1 /tracking/verbose 0 /run/beamOn 3 @@ -69,7 +39,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -82,7 +52,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -105,7 +75,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for GenericIon LateralDisplacementFlag= 0 Skin= 0 @@ -119,7 +89,7 @@ ionIoni: tables are built for GenericIon Parametrisation from BraggIon for protons below. NuclearStopping 1 Stopping Power data for 8 ion/material pairs are used. - Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1 + Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -127,7 +97,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -139,7 +109,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -156,7 +126,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -176,7 +146,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -189,7 +159,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ========= Table of registered couples ============================== @@ -235,9 +205,9 @@ Start Run processing. Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 1 isolated muon found. >>> Event 0 - 70 hits are stored in ExN04TrackerHitsCollection. - 38 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.64504905 (GeV) + 126 hits are stored in ExN04TrackerHitsCollection. + 30 hits are stored in ExN04CalorimeterHitsCollection. + Total energy deposition in calorimeter : 0.48844005 (GeV) 1 hits are stored in ExN04MuonHitsCollection. Stage 0->1 : 0 hits found in the muon chamber. ++++++++ event aborted @@ -249,14 +219,12 @@ Stage 0->1 : 0 hits found in the muon chamber. Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 1 isolated muon found. >>> Event 2 - 42 hits are stored in ExN04TrackerHitsCollection. - 25 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.55887322 (GeV) + 79 hits are stored in ExN04TrackerHitsCollection. + 22 hits are stored in ExN04CalorimeterHitsCollection. + Total energy deposition in calorimeter : 0.50393446 (GeV) 1 hits are stored in ExN04MuonHitsCollection. Run terminated. Run Summary Number of events processed : 3 - User=10.12s Real=10.7s Sys=0.23s -Graphics systems deleted. -Visualization Manager deleting... + User=6.92s Real=7.44s Sys=0.15s G4 kernel has come to Quit state. diff --git a/examples/novice/N04/include/ExN04RunAction.hh b/examples/novice/N04/include/ExN04RunAction.hh index 62bbd0ead5..29984cfb82 100644 --- a/examples/novice/N04/include/ExN04RunAction.hh +++ b/examples/novice/N04/include/ExN04RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN04RunAction.hh,v 1.5 2006/06/29 17:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N04/include/ExN04SteppingVerbose.hh b/examples/novice/N04/include/ExN04SteppingVerbose.hh index 32d9f379de..4ce3e2f239 100644 --- a/examples/novice/N04/include/ExN04SteppingVerbose.hh +++ b/examples/novice/N04/include/ExN04SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: ExN04SteppingVerbose.hh,v 1.2 2006/06/29 17:50:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. diff --git a/examples/novice/N04/src/ExN04RunAction.cc b/examples/novice/N04/src/ExN04RunAction.cc index 5d46b8396c..1ddb55b9c1 100644 --- a/examples/novice/N04/src/ExN04RunAction.cc +++ b/examples/novice/N04/src/ExN04RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN04RunAction.cc,v 1.5 2006/06/29 17:51:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N04/src/ExN04SteppingVerbose.cc b/examples/novice/N04/src/ExN04SteppingVerbose.cc index 4ec0de246e..85e6ac9a21 100644 --- a/examples/novice/N04/src/ExN04SteppingVerbose.cc +++ b/examples/novice/N04/src/ExN04SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: ExN04SteppingVerbose.cc,v 1.4 2006/06/29 17:51:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N05/History b/examples/novice/N05/History index 85761714e3..7317b8a165 100644 --- a/examples/novice/N05/History +++ b/examples/novice/N05/History @@ -1,4 +1,4 @@ -$Id: History,v 1.46 2007/05/18 15:24:48 mverderi Exp $ +$Id: History,v 1.47 2007/11/30 18:08:41 mverderi Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,10 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +30th November 2007 +- modify ExN05PhysicsList.cc to account for Along method of G4FSMP +- tag as exampleN05-V09-00-00 + 18th May M. Verderi (exampleN05-V08-03-00) - remove exampleN05.ref diff --git a/examples/novice/N05/exampleN05.cc b/examples/novice/N05/exampleN05.cc index 43fab1c0d8..a6e7c552f2 100644 --- a/examples/novice/N05/exampleN05.cc +++ b/examples/novice/N05/exampleN05.cc @@ -25,7 +25,7 @@ // // // $Id: exampleN05.cc,v 1.16 2007/05/11 14:29:16 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N05/exampleN05.out b/examples/novice/N05/exampleN05.out index a80bf0ae81..0f4ffd0061 100644 --- a/examples/novice/N05/exampleN05.out +++ b/examples/novice/N05/exampleN05.out @@ -1,7 +1,7 @@ RunManager construction starting.... ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -72,7 +72,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -85,7 +85,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -103,7 +103,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for proton Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -120,14 +120,14 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muIoni: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -149,7 +149,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -167,7 +167,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for pi- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -175,7 +175,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -189,190 +189,205 @@ msc: Model variant of multiple scattering for pi- Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 -0.000733 51.7 86.1 1e+03 0.0261 100 100 WorldPhysical eIoni - 2 -0.000658 60 100 1e+03 0.00295 16.2 117 DriftChamberPhysical CoupledTransportation - 3 -0.0434 196 327 1e+03 0.00777 264 381 DriftChamberPhysical eIoni - 4 -0.144 540 900 1e+03 0.0217 669 1.05e+03 WorldPhysical CoupledTransportation - 5 -0.148 553 921 1e+03 0.00478 24.8 1.07e+03 WorldPhysical eIoni - 6 -0.151 557 929 1e+03 0.00288 8.96 1.08e+03 WorldPhysical eIoni - 7 -0.188 599 998 1e+03 0.0162 80.7 1.16e+03 WorldPhysical eIoni - 8 -0.189 600 1e+03 1e+03 0.000157 2.09 1.17e+03 Crystal CoupledTransportation - 9 -0.189 600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom + 1 -0.00388 51.7 86.1 1e+03 0.0261 100 100 WorldPhysical eIoni + 2 -0.00271 60 100 1e+03 0.00834 16.2 117 DriftChamberPhysical CoupledTransportation + 3 0.0734 540 900 1e+03 0.0293 933 1.05e+03 WorldPhysical CoupledTransportation + 4 0.11 591 985 1e+03 0.0164 99.3 1.15e+03 WorldPhysical eIoni + 5 0.112 600 1e+03 1e+03 0.0035 17.3 1.17e+03 Crystal CoupledTransportation + 6 0.112 600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.11 591 985 0.00126 0 0 0 WorldPhysical initStep + 1 0.136 591 985 0 0.00126 0.0795 0.0795 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.00388 51.7 86.1 0.00196 0 0 0 WorldPhysical initStep + 1 0.0582 51.7 86.1 0 0.00196 0.151 0.151 WorldPhysical eIoni +>>> Event 0 + 13 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9999131435617807 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0 60 100 1e+03 0.0306 117 117 DriftChamberPhysical CoupledTransportation + 2 0.00386 90.3 150 1e+03 0.00253 58.8 175 DriftChamberPhysical eIoni + 3 0.0799 540 900 1e+03 0.0311 874 1.05e+03 WorldPhysical CoupledTransportation + 4 0.0821 597 995 1e+03 0.0316 111 1.16e+03 WorldPhysical eIoni + 5 0.0812 600 1e+03 1e+03 0.000699 5.29 1.17e+03 Crystal CoupledTransportation + 6 0.0812 600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.0821 597 995 0.00537 0 0 0 WorldPhysical initStep + 1 0.0818 598 995 0 0.00537 0.823 0.823 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.00386 90.3 150 0.00101 0 0 0 DriftChamberPhysical initStep + 1 -0.179 90.2 151 0 0.00101 0.311 0.311 DriftChamberPhysical eIoni +>>> Event 1 + 11 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9998969864839985 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0 60 100 1e+03 0.0202 117 117 DriftChamberPhysical CoupledTransportation + 2 0.0345 540 900 1e+03 0.0301 933 1.05e+03 WorldPhysical CoupledTransportation + 3 0.033 553 921 1e+03 0.00407 24.3 1.07e+03 WorldPhysical eIoni + 4 0.0292 593 989 1e+03 0.011 79.1 1.15e+03 WorldPhysical eIoni + 5 0.0276 600 1e+03 1e+03 0.00426 13.3 1.17e+03 Crystal CoupledTransportation + 6 0.0276 600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.0292 593 989 0.00218 0 0 0 WorldPhysical initStep + 1 -0.00997 593 989 0 0.00218 0.18 0.18 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.033 553 921 0.00262 0 0 0 WorldPhysical initStep + 1 -0.00209 552 921 0 0.00262 0.24 0.24 WorldPhysical eIoni +>>> Event 2 + 12 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999925666604357 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0 60 100 1e+03 0.0218 117 117 DriftChamberPhysical CoupledTransportation + 2 -0.0105 362 603 1e+03 0.0196 586 703 DriftChamberPhysical eIoni + 3 -0.0377 540 900 1e+03 0.011 347 1.05e+03 WorldPhysical CoupledTransportation + 4 -0.0437 581 968 1e+03 0.0193 79.1 1.13e+03 WorldPhysical eIoni + 5 -0.0419 600 1e+03 1e+03 0.0073 37.5 1.17e+03 Crystal CoupledTransportation + 6 -0.0419 600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.0437 581 968 0.00174 0 0 0 WorldPhysical initStep + 1 -0.0279 581 968 0 0.00174 0.127 0.127 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.0105 362 603 0.019 0 0 0 DriftChamberPhysical initStep + 1 10 366 599 0.0173 0.00169 11.6 11.6 DriftChamberPhysical eIoni + 2 17.9 372 598 0.0152 0.00216 10.1 21.7 DriftChamberPhysical eIoni + 3 24.1 374 593 0.0124 0.00272 8.17 29.8 DriftChamberPhysical eIoni + 4 29.5 374 591 0.0109 0.00153 6.11 36 DriftChamberPhysical eIoni + 5 32.8 373 587 0.00903 0.00187 5.15 41.1 DriftChamberPhysical eIoni + 6 36.3 373 585 0.00745 0.00158 4.08 45.2 DriftChamberPhysical eIoni + 7 39.3 373 584 0.00573 0.00172 3.29 48.5 DriftChamberPhysical eIoni + 8 41.3 374 583 0.00304 0.0027 2.56 51 DriftChamberPhysical eIoni + 9 41.2 375 583 0.000699 0.00234 1.51 52.5 DriftChamberPhysical eIoni + 10 41.2 375 583 0 0.000699 0.194 52.7 DriftChamberPhysical eIoni +>>> Event 3 + 11 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999900315024109 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 -0.000775 6.88 11.5 1e+03 0.00328 13.4 13.4 WorldPhysical eIoni + 2 -0.00275 60 100 1e+03 0.0243 103 117 DriftChamberPhysical CoupledTransportation + 3 -0.0338 180 300 1e+03 0.00737 233 349 DriftChamberPhysical eIoni + 4 -0.0807 313 521 1e+03 0.00887 259 608 DriftChamberPhysical eIoni + 5 -0.147 488 813 1e+03 0.0101 340 948 DriftChamberPhysical eIoni + 6 -0.16 540 900 1e+03 0.00391 101 1.05e+03 WorldPhysical CoupledTransportation + 7 -0.195 600 999 1e+03 0.0223 116 1.17e+03 WorldPhysical eIoni + 8 -0.195 600 1e+03 1e+03 0.000118 1.06 1.17e+03 Crystal CoupledTransportation + 9 -0.195 600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.188 599 998 0.00158 0 0 0 WorldPhysical initStep - 1 -0.15 599 998 0 0.00158 0.11 0.11 WorldPhysical eIoni + 0 -0.195 600 999 0.0043 0 0 0 WorldPhysical initStep + 1 -0.414 600 999 0 0.0043 0.557 0.557 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.151 557 929 0.00763 0 0 0 WorldPhysical initStep - 1 0.438 557 929 0 0.00763 1.39 1.39 WorldPhysical eIoni + 0 -0.147 488 813 0.00246 0 0 0 DriftChamberPhysical initStep + 1 -1.24 488 813 0.0014 0.00105 1.2 1.2 DriftChamberPhysical eIoni + 2 -1.6 488 813 0 0.0014 0.507 1.71 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.148 553 921 0.00117 0 0 0 WorldPhysical initStep - 1 -0.173 553 921 0 0.00117 0.0719 0.0719 WorldPhysical eIoni + 0 -0.0807 313 521 0.0026 0 0 0 DriftChamberPhysical initStep + 1 -0.996 314 522 0.000926 0.00168 1.29 1.29 DriftChamberPhysical eIoni + 2 -0.842 314 522 0 0.000926 0.278 1.56 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0434 196 327 0.00471 0 0 0 DriftChamberPhysical initStep - 1 0.454 196 326 0.00449 0.000223 0.783 0.783 DriftChamberPhysical msc - 2 1.92 197 325 0.00305 0.00144 2.09 2.87 DriftChamberPhysical eIoni - 3 2.67 198 325 0 0.00305 1.51 4.38 DriftChamberPhysical eIoni + 0 -0.0338 180 300 0.00159 0 0 0 DriftChamberPhysical initStep + 1 -0.226 180 299 0 0.00159 0.609 0.609 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.000733 51.7 86.1 0.00135 0 0 0 WorldPhysical initStep - 1 -0.0345 51.7 86.1 0 0.00135 0.0878 0.0878 WorldPhysical eIoni ->>> Event 0 - 12 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999010337796921 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.0069 28.2 47.1 1e+03 0.0148 54.9 54.9 WorldPhysical eIoni - 2 0.0219 60 100 1e+03 0.0129 61.7 117 DriftChamberPhysical CoupledTransportation - 3 0.0837 363 605 1e+03 0.0214 589 706 DriftChamberPhysical eIoni - 4 0.134 540 900 1e+03 0.00953 344 1.05e+03 WorldPhysical CoupledTransportation - 5 0.135 547 911 1e+03 0.00569 13.2 1.06e+03 WorldPhysical eIoni - 6 0.151 579 965 1e+03 0.013 62.2 1.12e+03 WorldPhysical eIoni - 7 0.166 600 1e+03 1e+03 0.0105 41.3 1.17e+03 Crystal CoupledTransportation - 8 0.166 600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.151 579 965 0.00505 0 0 0 WorldPhysical initStep - 1 0.149 579 965 0 0.00505 0.733 0.733 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.135 547 911 0.00326 0 0 0 WorldPhysical initStep - 1 -0.0363 547 911 0.00105 0.00221 0.259 0.259 WorldPhysical eIoni - 2 -0.025 547 911 0 0.00105 0.0622 0.321 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0837 363 605 0.00114 0 0 0 DriftChamberPhysical initStep - 1 0.0908 363 605 0.00113 1.75e-05 0.0341 0.0341 DriftChamberPhysical msc - 2 0.0834 363 605 0 0.00113 0.367 0.401 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0069 28.2 47.1 0.00122 0 0 0 WorldPhysical initStep - 1 -0.000618 28.3 47.1 0 0.00122 0.0762 0.0762 WorldPhysical eIoni ->>> Event 1 - 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999015737586623 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.00904 36.6 61 1e+03 0.0125 71.2 71.2 WorldPhysical eIoni - 2 0.00136 60 100 1e+03 0.0125 45.4 117 DriftChamberPhysical CoupledTransportation - 3 -0.0997 540 900 1e+03 0.0311 933 1.05e+03 WorldPhysical CoupledTransportation - 4 -0.147 587 978 1e+03 0.0223 91.3 1.14e+03 WorldPhysical eIoni - 5 -0.156 600 1e+03 1e+03 0.00483 25.3 1.17e+03 Crystal CoupledTransportation - 6 -0.156 600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.147 587 978 0.00389 0 0 0 WorldPhysical initStep - 1 -0.17 587 978 0 0.00389 0.465 0.465 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00904 36.6 61 0.00958 0 0 0 WorldPhysical initStep - 1 0.503 37.8 61.5 0.00596 0.00363 1.72 1.72 WorldPhysical eIoni - 2 0.888 37.8 61.7 0 0.00596 0.988 2.71 WorldPhysical eIoni ->>> Event 2 - 11 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999033013096728 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 60 100 1e+03 0.0315 117 117 DriftChamberPhysical CoupledTransportation - 2 0.15 540 900 1e+03 0.0285 933 1.05e+03 WorldPhysical CoupledTransportation - 3 0.165 600 1e+03 1e+03 0.024 117 1.17e+03 Crystal CoupledTransportation - 4 0.165 600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom ->>> Event 3 - 9 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999159444074164 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 60 100 1e+03 0.0235 117 117 DriftChamberPhysical CoupledTransportation - 2 0.0923 540 900 1e+03 0.0314 933 1.05e+03 WorldPhysical CoupledTransportation - 3 0.0865 591 985 1e+03 0.0216 99.6 1.15e+03 WorldPhysical eIoni - 4 0.0874 600 1e+03 1e+03 0.00408 17 1.17e+03 Crystal CoupledTransportation - 5 0.0874 600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0865 591 985 0.00246 0 0 0 WorldPhysical initStep - 1 0.00866 591 985 0 0.00246 0.216 0.216 WorldPhysical eIoni + 0 -0.000775 6.88 11.5 0.00119 0 0 0 WorldPhysical initStep + 1 -0.0228 6.87 11.5 0 0.00119 0.0734 0.0734 WorldPhysical eIoni >>> Event 4 - 14 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999169090696226 (GeV) + 13 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9999076047925277 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) number of event = 5 @@ -384,101 +399,31 @@ number of event = 5 Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.0134 24 80 1e+03 0.027 83.6 83.6 WorldPhysical eIoni - 2 0.015 30 100 1e+03 0.00336 20.8 104 DriftChamberPhysical CoupledTransportation - 3 0.0568 175 583 1e+03 0.0137 504 609 DriftChamberPhysical eIoni - 4 0.0443 246 817 1e+03 0.00736 244 853 DriftChamberPhysical eIoni - 5 0.0352 271 900 1e+03 0.00247 87 940 WorldPhysical CoupledTransportation - 6 0.0255 286 951 1e+03 0.00792 53.3 993 WorldPhysical eIoni - 7 0.0247 290 966 1e+03 0.00363 15.6 1.01e+03 WorldPhysical eIoni - 8 0.0198 296 986 1e+03 0.00282 21 1.03e+03 WorldPhysical eIoni - 9 0.0169 301 1e+03 1e+03 0.00349 14.6 1.04e+03 Crystal CoupledTransportation - 10 0.0169 301 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0198 296 986 0.00114 0 0 0 WorldPhysical initStep - 1 0.0221 296 986 0 0.00114 0.0689 0.0689 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0247 290 966 0.00409 0 0 0 WorldPhysical initStep - 1 0.206 291 966 0 0.00409 0.509 0.509 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0255 286 951 0.00207 0 0 0 WorldPhysical initStep - 1 -0.0443 286 951 0 0.00207 0.165 0.165 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0443 246 817 0.00282 0 0 0 DriftChamberPhysical initStep - 1 0.13 245 817 0.00278 3.66e-05 0.174 0.174 DriftChamberPhysical msc - 2 0.425 244 816 0.000603 0.00218 1.39 1.56 DriftChamberPhysical eIoni - 3 0.451 244 816 0 0.000603 0.162 1.72 DriftChamberPhysical eIoni + 1 0 30 100 1e+03 0.0159 104 104 DriftChamberPhysical CoupledTransportation + 2 0.0123 149 495 1e+03 0.013 413 517 DriftChamberPhysical eIoni + 3 0.0841 270 900 1e+03 0.0135 422 940 WorldPhysical CoupledTransportation + 4 0.0869 294 981 1e+03 0.0179 84.4 1.02e+03 WorldPhysical eIoni + 5 0.0878 300 1e+03 1e+03 0.00257 20 1.04e+03 Crystal CoupledTransportation + 6 0.0878 300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0568 175 583 0.0373 0 0 0 DriftChamberPhysical initStep - 1 30.8 178 591 0.0311 0.00505 32.5 32.5 DriftChamberPhysical eIoni - 2 43.5 184 605 0.0286 0.00246 20.1 52.6 DriftChamberPhysical eIoni - 3 48.3 187 615 0.0256 0.00188 10.9 63.5 DriftChamberPhysical eIoni - 4 62.1 183 627 0.0217 0.00392 18.9 82.4 DriftChamberPhysical eIoni - 5 73.5 189 633 0.0182 0.00344 14.4 96.8 DriftChamberPhysical eIoni - 6 82.5 190 638 0.0157 0.00254 10.9 108 DriftChamberPhysical eIoni - 7 90.9 190 639 0.0148 0.000903 8.57 116 DriftChamberPhysical eIoni - 8 98.5 190 640 0.0131 0.00163 7.88 124 DriftChamberPhysical eIoni - 9 104 191 643 0.0105 0.0026 6.64 131 DriftChamberPhysical eIoni - 10 107 194 646 0.00953 0.00101 4.93 136 DriftChamberPhysical eIoni - 11 110 196 648 0.0075 0.00203 4.34 140 DriftChamberPhysical eIoni - 12 112 198 649 0.00585 0.00165 3.31 143 DriftChamberPhysical eIoni - 13 115 199 649 0.00398 0.00187 2.61 146 DriftChamberPhysical eIoni - 14 116 199 649 0.00243 0.00155 1.89 148 DriftChamberPhysical eIoni - 15 117 200 649 0 0.00243 1.19 149 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 3 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 48.3 187 615 0.00114 0 0 0 DriftChamberPhysical initStep - 1 48.3 187 615 0.000992 0.000151 0.0341 0.0341 DriftChamberPhysical msc - 2 48.3 187 615 0 0.000992 0.305 0.339 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 3 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 30.8 178 591 0.0012 0 0 0 DriftChamberPhysical initStep - 1 30.8 178 591 0.00111 8.18e-05 0.0372 0.0372 DriftChamberPhysical msc - 2 30.9 177 591 0 0.00111 0.361 0.398 DriftChamberPhysical eIoni + 0 0.0869 294 981 0.00122 0 0 0 WorldPhysical initStep + 1 0.078 294 981 0 0.00122 0.0759 0.0759 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0134 24 80 0.00157 0 0 0 WorldPhysical initStep - 1 -0.0187 24 80 0 0.00157 0.108 0.108 WorldPhysical eIoni + 0 0.0123 149 495 0.00193 0 0 0 DriftChamberPhysical initStep + 1 -0.555 148 496 0 0.00193 0.83 0.83 DriftChamberPhysical eIoni >>> Event 0 - 8 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9998792540044728 (GeV) + 9 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9999339795090061 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) @@ -488,466 +433,830 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 -1.77e-05 0.322 1.07 1e+03 0.000154 1.12 1.12 WorldPhysical eIoni - 2 -0.00572 30 100 1e+03 0.0146 103 104 DriftChamberPhysical CoupledTransportation - 3 0.0177 106 354 1e+03 0.00757 265 370 DriftChamberPhysical eIoni - 4 0.024 191 637 1e+03 0.0122 296 665 DriftChamberPhysical eIoni - 5 0.02 270 900 1e+03 0.00933 274 940 WorldPhysical CoupledTransportation - 6 0.0213 276 919 1e+03 0.00709 19.9 959 WorldPhysical eIoni - 7 0.0333 291 969 1e+03 0.0158 52.2 1.01e+03 WorldPhysical eIoni - 8 0.0401 300 1e+03 1e+03 0.00611 32.4 1.04e+03 Crystal CoupledTransportation - 9 0.0401 300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom + 1 0.0046 11.4 38.1 1e+03 0.00626 39.8 39.8 WorldPhysical eIoni + 2 0.00488 15.4 51.3 1e+03 0.00114 13.8 53.6 WorldPhysical eIoni + 3 0.00318 30 100 1e+03 0.00982 50.8 104 DriftChamberPhysical CoupledTransportation + 4 -0.0986 270 900 1e+03 0.0282 835 940 WorldPhysical CoupledTransportation + 5 -0.102 275 916 1e+03 0.00304 16.9 957 WorldPhysical eIoni + 6 -0.104 279 929 1e+03 0.00187 13.2 970 WorldPhysical eIoni + 7 -0.115 292 972 1e+03 0.0128 45 1.01e+03 WorldPhysical eIoni + 8 -0.135 300 1e+03 1e+03 0.00434 29.4 1.04e+03 Crystal CoupledTransportation + 9 -0.135 300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0333 291 969 0.00199 0 0 0 WorldPhysical initStep - 1 0.0568 291 969 0 0.00199 0.154 0.154 WorldPhysical eIoni + 0 -0.115 292 972 0.211 0 0 0 WorldPhysical initStep + 1 44 295 979 0.195 0.0138 46 46 WorldPhysical eIoni + 2 79.7 321 975 0.178 0.0126 45.4 91.4 WorldPhysical eIoni + 3 97.2 320 966 0.174 0.00262 20.2 112 WorldPhysical eIoni + 4 108 317 954 0.168 0.0032 16.9 128 WorldPhysical eIoni + 5 113 317 947 0.121 0.00166 8.38 137 WorldPhysical eIoni + 6 126 320 921 0.106 0.0131 30.5 167 WorldPhysical eIoni + 7 126 321 919 0.102 0.000395 2.09 169 WorldPhysical eIoni + 8 128 328 900 0.0941 0.00751 22.7 192 DriftChamberPhysical CoupledTransportation + 9 132 335 866 0.0898 0.00256 35.3 227 DriftChamberPhysical eIoni + 10 159 380 704 0.0775 0.0123 173 400 DriftChamberPhysical eIoni + 11 225 444 612 0.0665 0.011 133 533 DriftChamberPhysical eIoni + 12 220 476 531 0.0588 0.00521 88 621 DriftChamberPhysical eIoni + 13 225 479 523 0.0561 0.00064 9.37 630 DriftChamberPhysical eIoni + 14 245 497 473 0.051 0.00408 57.9 688 DriftChamberPhysical eIoni + 15 253 487 412 0.0454 0.00557 63.2 751 DriftChamberPhysical eIoni + 16 267 483 363 0.0397 0.00572 51.8 803 DriftChamberPhysical eIoni + 17 277 465 329 0.0328 0.00693 40.5 844 DriftChamberPhysical eIoni + 18 276 452 303 0.0289 0.00389 29.1 873 DriftChamberPhysical eIoni + 19 272 435 288 0.026 0.00295 23.5 896 DriftChamberPhysical eIoni + 20 267 427 272 0.0234 0.00258 19.4 916 DriftChamberPhysical eIoni + 21 263 421 258 0.0197 0.00367 16.3 932 DriftChamberPhysical eIoni + 22 259 422 246 0.0164 0.00334 12.3 944 DriftChamberPhysical eIoni + 23 256 424 238 0.0137 0.00264 9.18 954 DriftChamberPhysical eIoni + 24 254 424 237 0.00977 0.00128 1.83 955 DriftChamberPhysical eIoni + 25 252 425 233 0.00759 0.00218 4.46 960 DriftChamberPhysical eIoni + 26 250 426 231 0.00702 0.000566 3.35 963 DriftChamberPhysical eIoni + 27 248 427 230 0.00507 0.00195 3.1 966 DriftChamberPhysical eIoni + 28 248 426 231 0.00281 0.00226 2.3 969 DriftChamberPhysical eIoni + 29 249 426 233 0.000272 0.00254 1.4 970 DriftChamberPhysical eIoni + 30 249 426 233 0 0.000272 0.0794 970 DriftChamberPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +* G4Track Information: Particle = e-, Track ID = 18, Parent ID = 6 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0213 276 919 0.00287 0 0 0 WorldPhysical initStep - 1 0.00646 276 919 0 0.00287 0.28 0.28 WorldPhysical eIoni + 0 254 424 237 0.00268 0 0 0 DriftChamberPhysical initStep + 1 254 424 237 0.00124 0.000221 0.0997 0.0997 DriftChamberPhysical eIoni + 2 254 424 237 0 0.00124 0.422 0.521 DriftChamberPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +* G4Track Information: Particle = e-, Track ID = 19, Parent ID = 18 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.024 191 637 0.00138 0 0 0 DriftChamberPhysical initStep - 1 0.0668 191 637 0.00124 0.000144 0.048 0.048 DriftChamberPhysical msc - 2 0.356 191 637 0 0.00124 0.419 0.467 DriftChamberPhysical eIoni + 0 254 424 237 0.00122 0 0 0 DriftChamberPhysical initStep + 1 254 425 237 0 0.00122 0.409 0.409 DriftChamberPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +* G4Track Information: Particle = e-, Track ID = 17, Parent ID = 6 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0177 106 354 0.00797 0 0 0 DriftChamberPhysical initStep - 1 2.27 109 353 0.0051 0.00287 3.52 3.52 DriftChamberPhysical eIoni - 2 3.74 110 352 0.00251 0.00259 2.31 5.83 DriftChamberPhysical eIoni - 3 4.61 110 352 0 0.00251 1.23 7.05 DriftChamberPhysical eIoni + 0 245 497 473 0.00103 0 0 0 DriftChamberPhysical initStep + 1 245 497 473 0 0.00103 0.32 0.32 DriftChamberPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +* G4Track Information: Particle = e-, Track ID = 16, Parent ID = 6 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.77e-05 0.322 1.07 0.00148 0 0 0 WorldPhysical initStep - 1 0.0399 0.328 1.07 0 0.00148 0.0999 0.0999 WorldPhysical eIoni ->>> Event 1 - 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999115291241477 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) + 0 225 479 523 0.00204 0 0 0 DriftChamberPhysical initStep + 1 225 479 523 0 0.00204 0.912 0.912 DriftChamberPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +* G4Track Information: Particle = e-, Track ID = 15, Parent ID = 6 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.0152 27.5 91.6 990 0.0196 95.6 95.6 WorldPhysical eBrem - 2 0.0182 30 100 990 0.00172 8.77 104 DriftChamberPhysical CoupledTransportation - 3 0.297 260 867 990 0.0238 801 905 DriftChamberPhysical eIoni - 4 0.31 270 900 990 0.00119 34.4 940 WorldPhysical CoupledTransportation - 5 0.314 272 908 990 0.00254 8.04 948 WorldPhysical eIoni - 6 0.367 300 1e+03 990 0.0163 96.4 1.04e+03 Crystal CoupledTransportation - 7 0.367 300 1e+03 0 990 0 1.04e+03 Crystal G4FSMP_massGeom + 0 220 476 531 0.00246 0 0 0 DriftChamberPhysical initStep + 1 220 477 531 0 0.00246 1.2 1.2 DriftChamberPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +* G4Track Information: Particle = e-, Track ID = 14, Parent ID = 6 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.314 272 908 0.00167 0 0 0 WorldPhysical initStep - 1 0.288 272 908 0 0.00167 0.119 0.119 WorldPhysical eIoni + 0 132 335 866 0.00175 0 0 0 DriftChamberPhysical initStep + 1 132 335 866 0 0.00175 0.713 0.713 DriftChamberPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +* G4Track Information: Particle = e-, Track ID = 13, Parent ID = 6 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.297 260 867 0.00134 0 0 0 DriftChamberPhysical initStep - 1 0.265 260 867 0.00127 6.63e-05 0.0456 0.0456 DriftChamberPhysical msc - 2 0.0558 260 867 0 0.00127 0.436 0.481 DriftChamberPhysical eIoni + 0 126 321 919 0.0044 0 0 0 WorldPhysical initStep + 1 127 321 919 0 0.0044 0.581 0.581 WorldPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 2, Parent ID = 1 +* G4Track Information: Particle = e-, Track ID = 12, Parent ID = 6 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0152 27.5 91.6 10.1 0 0 0 WorldPhysical initStep - 1 0.0118 30 100 10.1 0 8.77 8.77 DriftChamberPhysical CoupledTransportation - 2 -0.314 270 900 10.1 0 835 844 WorldPhysical CoupledTransportation - 3 -0.355 300 1e+03 10.1 0 104 948 Crystal CoupledTransportation - 4 -0.355 300 1e+03 10.1 0 0.229 949 Crystal CoupledTransportation - 5 -0.395 329 1.1e+03 0 0 101 1.05e+03 Crystal conv + 0 126 320 921 0.00133 0 0 0 WorldPhysical initStep + 1 126 320 921 0 0.00133 0.0856 0.0856 WorldPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 6, Parent ID = 2 +* G4Track Information: Particle = e-, Track ID = 11, Parent ID = 6 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.395 329 1.1e+03 1.81 0 0 0 Crystal initStep - 1 -0.389 329 1.1e+03 1.79 0.0262 0.0661 0.0661 Crystal msc - 2 -0.417 329 1.1e+03 1.75 0.0357 0.0947 0.161 Crystal msc - 3 -0.375 329 1.1e+03 1.71 0.0378 0.0947 0.256 Crystal msc - 4 -0.326 329 1.1e+03 1.67 0.0419 0.0947 0.35 Crystal msc - 5 -0.329 329 1.1e+03 1.48 0.188 0.0947 0.445 Crystal msc - 6 -0.358 329 1.1e+03 1.46 0.0246 0.0947 0.54 Crystal msc - 7 -0.333 330 1.1e+03 1.43 0.034 0.0947 0.635 Crystal msc - 8 -0.325 330 1.1e+03 1.38 0.0402 0.0947 0.729 Crystal msc - 9 -0.284 330 1.1e+03 1.35 0.0342 0.0947 0.824 Crystal msc - 10 -0.289 330 1.1e+03 1.32 0.0331 0.0947 0.919 Crystal msc - 11 -0.364 330 1.1e+03 1.28 0.0397 0.0947 1.01 Crystal msc - 12 -0.4 330 1.1e+03 1.23 0.0475 0.0947 1.11 Crystal msc - 13 -0.425 330 1.1e+03 1.19 0.0403 0.0947 1.2 Crystal msc - 14 -0.362 330 1.1e+03 1.14 0.0461 0.0947 1.3 Crystal msc - 15 -0.307 330 1.1e+03 1.09 0.0518 0.0947 1.39 Crystal msc - 16 -0.247 330 1.1e+03 1.04 0.0501 0.0947 1.49 Crystal msc - 17 -0.161 330 1.1e+03 0.996 0.0462 0.0947 1.58 Crystal msc - 18 -0.0798 330 1.1e+03 0.964 0.0317 0.0947 1.68 Crystal msc - 19 -0.0203 330 1.1e+03 0.933 0.0316 0.0947 1.77 Crystal msc - 20 6.21e-16 330 1.1e+03 0.926 0.00711 0.034 1.81 Crystal CoupledTransportation - 21 0.0112 330 1.1e+03 0.914 0.0115 0.0301 1.84 Crystal msc - 22 0.029 330 1.1e+03 0.895 0.0196 0.0301 1.87 Crystal msc - 23 0.0454 330 1.1e+03 0.881 0.0134 0.0301 1.9 Crystal msc - 24 0.074 330 1.1e+03 0.865 0.0162 0.0301 1.93 Crystal msc - 25 0.102 330 1.1e+03 0.852 0.0132 0.0301 1.96 Crystal msc - 26 0.127 330 1.1e+03 0.83 0.0217 0.0301 1.99 Crystal msc - 27 0.154 330 1.1e+03 0.82 0.00988 0.0301 2.02 Crystal msc - 28 0.172 330 1.1e+03 0.815 0.00506 0.0301 2.05 Crystal msc - 29 0.2 330 1.1e+03 0.797 0.0183 0.0301 2.08 Crystal msc - 30 0.231 330 1.1e+03 0.786 0.0111 0.0339 2.11 Crystal msc - 31 0.263 330 1.1e+03 0.767 0.0189 0.0397 2.15 Crystal msc - 32 0.302 330 1.1e+03 0.75 0.0164 0.0457 2.2 Crystal msc - 33 0.349 330 1.1e+03 0.721 0.0294 0.0519 2.25 Crystal msc - 34 0.398 330 1.1e+03 0.71 0.0111 0.0597 2.31 Crystal msc - 35 0.389 330 1.1e+03 0.637 0.073 0.069 2.38 Crystal msc - 36 0.374 330 1.1e+03 0.61 0.0264 0.0783 2.45 Crystal msc - 37 0.372 330 1.1e+03 0.587 0.0235 0.0783 2.53 Crystal msc - 38 0.326 330 1.1e+03 0.555 0.0318 0.0783 2.61 Crystal msc - 39 0.274 330 1.1e+03 0.524 0.0315 0.0783 2.69 Crystal msc - 40 0.218 330 1.1e+03 0.469 0.0547 0.0783 2.77 Crystal msc - 41 0.22 330 1.1e+03 0.392 0.0775 0.0783 2.85 Crystal msc - 42 0.28 330 1.1e+03 0.342 0.0493 0.0783 2.92 Crystal msc - 43 0.321 330 1.1e+03 0.303 0.0389 0.0783 3 Crystal msc - 44 0.373 330 1.1e+03 0.262 0.0416 0.0783 3.08 Crystal msc - 45 0.327 330 1.1e+03 0.216 0.0461 0.0783 3.16 Crystal msc - 46 0.336 330 1.1e+03 0 0.216 0.193 3.35 Crystal eIoni - 47 0.336 330 1.1e+03 0 0 0 3.35 Crystal annihil + 0 113 317 947 0.0452 0 0 0 WorldPhysical initStep + 1 115 317 948 0.0418 0.00115 1.22 1.22 WorldPhysical eIoni + 2 117 317 948 0.0379 0.00106 2.07 3.29 WorldPhysical eIoni + 3 120 318 944 0.0329 0.00405 5.79 9.08 WorldPhysical eIoni + 4 125 320 942 0.0277 0.00517 5.99 15.1 WorldPhysical eIoni + 5 127 320 940 0.0236 0.00304 3.6 18.7 WorldPhysical eIoni + 6 128 320 939 0.0218 0.000608 0.776 19.4 WorldPhysical eIoni + 7 128 320 936 0.019 0.00274 3.62 23.1 WorldPhysical eIoni + 8 125 319 936 0.0158 0.0032 3.13 26.2 WorldPhysical eIoni + 9 124 319 936 0.0139 0.00189 0.529 26.7 WorldPhysical eIoni + 10 124 319 936 0.0129 8.32e-05 0.181 26.9 WorldPhysical eIoni + 11 124 321 936 0.00745 0.0038 2.04 28.9 WorldPhysical eIoni + 12 123 321 936 0 0.00745 1.35 30.3 WorldPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 8, Parent ID = 6 +* G4Track Information: Particle = e-, Track ID = 26, Parent ID = 11 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.336 330 1.1e+03 0.511 0 0 0 Crystal initStep - 1 4.92 330 1.09e+03 0 0.0332 11.6 11.6 Crystal phot + 0 124 321 936 0.00161 0 0 0 WorldPhysical initStep + 1 124 321 936 0 0.00161 0.113 0.113 WorldPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 8 +* G4Track Information: Particle = e-, Track ID = 25, Parent ID = 11 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 4.92 330 1.09e+03 0.478 0 0 0 Crystal initStep - 1 4.92 330 1.09e+03 0.477 0.00124 0.0128 0.0128 Crystal msc - 2 4.93 330 1.09e+03 0 0.477 0.637 0.65 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 7, Parent ID = 6 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.336 330 1.1e+03 0.511 0 0 0 Crystal initStep - 1 -1.22e-15 330 1.1e+03 0.511 0 0.855 0.855 Crystal CoupledTransportation - 2 -0.37 330 1.1e+03 0 0.0332 0.939 1.79 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 10, Parent ID = 7 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.37 330 1.1e+03 0.478 0 0 0 Crystal initStep - 1 -0.373 330 1.1e+03 0.473 0.00526 0.0128 0.0128 Crystal msc - 2 -0.415 330 1.1e+03 0.426 0.0465 0.0919 0.105 Crystal msc - 3 -0.446 330 1.1e+03 0.212 0.214 0.0919 0.197 Crystal msc - 4 -0.445 330 1.1e+03 0 0.212 0.197 0.394 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.395 329 1.1e+03 7.28 0 0 0 Crystal initStep - 1 -0.48 329 1.1e+03 6.99 0.292 0.592 0.592 Crystal msc - 2 -0.391 330 1.1e+03 6.28 0.708 0.592 1.18 Crystal msc - 3 -0.562 330 1.1e+03 5.96 0.32 0.592 1.77 Crystal msc - 4 -0.383 330 1.1e+03 5.71 0.25 0.592 2.37 Crystal msc - 5 -0.173 329 1.1e+03 5.45 0.261 0.592 2.96 Crystal msc - 6 1.61e-15 329 1.1e+03 5.26 0.191 0.459 3.42 Crystal CoupledTransportation - 7 0.0669 329 1.1e+03 5.14 0.063 0.223 3.64 Crystal eBrem - 8 0.0381 329 1.1e+03 4.95 0.188 0.31 3.95 Crystal msc - 9 1.53e-16 329 1.1e+03 4.86 0.09 0.19 4.14 Crystal CoupledTransportation - 10 1.53e-16 329 1.1e+03 4.86 0 0 4.14 Crystal CoupledTransportation - 11 0.0102 329 1.1e+03 4.72 0.143 0.267 4.41 Crystal msc - 12 0.239 329 1.1e+03 4.6 0.119 0.267 4.67 Crystal msc - 13 0.396 329 1.1e+03 4.47 0.128 0.267 4.94 Crystal msc - 14 0.518 330 1.1e+03 4.35 0.117 0.267 5.21 Crystal msc - 15 0.623 330 1.1e+03 4.25 0.106 0.267 5.47 Crystal msc - 16 0.653 330 1.1e+03 3.12 0.0283 0.0836 5.56 Crystal eBrem - 17 0.695 330 1.1e+03 2.25 0.118 0.245 5.8 Crystal eBrem - 18 0.882 330 1.1e+03 2.15 0.0972 0.267 6.07 Crystal msc - 19 0.993 330 1.1e+03 2.06 0.0983 0.267 6.34 Crystal msc - 20 0.909 330 1.1e+03 1.9 0.159 0.267 6.6 Crystal msc - 21 0.715 330 1.1e+03 1.7 0.193 0.267 6.87 Crystal msc - 22 0.685 330 1.1e+03 1.39 0.316 0.267 7.14 Crystal msc - 23 0.694 330 1.1e+03 1.28 0.106 0.267 7.41 Crystal msc - 24 0.56 330 1.1e+03 0.962 0.32 0.267 7.67 Crystal msc - 25 0.641 331 1.1e+03 0.857 0.105 0.267 7.94 Crystal msc - 26 0.682 331 1.1e+03 0.716 0.141 0.267 8.21 Crystal msc - 27 0.616 331 1.1e+03 0.566 0.149 0.267 8.47 Crystal msc - 28 0.51 331 1.1e+03 0.39 0.176 0.267 8.74 Crystal msc - 29 0.427 331 1.1e+03 0.235 0.155 0.267 9.01 Crystal msc - 30 0.392 331 1.1e+03 0.0642 0.171 0.136 9.14 Crystal eBrem - 31 0.392 331 1.1e+03 0 0.0642 0.0284 9.17 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 13, Parent ID = 5 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.695 330 1.1e+03 0.753 0 0 0 Crystal initStep - 1 12 350 1.1e+03 0.753 0 23 23 Crystal CoupledTransportation - 2 18.2 361 1.1e+03 0.561 0 12.4 35.4 Crystal compt - 3 46.5 372 1.11e+03 0.302 0 31.2 66.6 Crystal compt - 4 49.2 371 1.1e+03 0.243 0 5.26 71.8 Crystal compt - 5 50 372 1.1e+03 0.243 0 1.68 73.5 Crystal CoupledTransportation - 6 58.6 385 1.09e+03 0 0.0332 18.7 92.2 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 17, Parent ID = 13 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 58.6 385 1.09e+03 0.21 0 0 0 Crystal initStep - 1 58.6 385 1.09e+03 0.208 0.00216 0.00386 0.00386 Crystal msc - 2 58.6 385 1.09e+03 0 0.208 0.19 0.194 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 16, Parent ID = 13 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 49.2 371 1.1e+03 0.0588 0 0 0 Crystal initStep - 1 49.2 371 1.1e+03 0.0585 0.000234 0.000493 0.000493 Crystal msc - 2 49.2 371 1.1e+03 0 0.0585 0.0245 0.025 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 15, Parent ID = 13 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 46.5 372 1.11e+03 0.259 0 0 0 Crystal initStep - 1 46.6 372 1.11e+03 0.258 0.000524 0.00531 0.00531 Crystal msc - 2 46.6 372 1.11e+03 0 0.258 0.265 0.27 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 14, Parent ID = 13 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 18.2 361 1.1e+03 0.193 0 0 0 Crystal initStep - 1 18.2 361 1.1e+03 0.192 0.000556 0.00338 0.00338 Crystal msc - 2 18.2 361 1.1e+03 0 0.192 0.168 0.172 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 12, Parent ID = 5 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.653 330 1.1e+03 1.1 0 0 0 Crystal initStep - 1 7.67 347 1.08e+03 0.67 0 24.7 24.7 Crystal compt - 2 22.1 347 1.04e+03 0.64 0 47.8 72.5 Crystal compt - 3 28.1 344 1.03e+03 0.295 0 14.4 86.9 Crystal compt - 4 23.2 350 1.02e+03 0.295 0 9.04 95.9 Crystal CoupledTransportation - 5 22.2 351 1.02e+03 0.289 0 1.86 97.8 Crystal compt - 6 17.4 363 1.02e+03 0.151 0 13.7 112 Crystal compt - 7 15.9 361 1.02e+03 0 0.0332 2.8 114 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 23, Parent ID = 12 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 15.9 361 1.02e+03 0.118 0 0 0 Crystal initStep - 1 15.9 361 1.02e+03 0.117 0.000276 0.00155 0.00155 Crystal msc - 2 15.9 361 1.02e+03 0 0.117 0.077 0.0785 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 22, Parent ID = 12 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 17.4 363 1.02e+03 0.138 0 0 0 Crystal initStep - 1 17.4 363 1.02e+03 0.138 0.000255 0.002 0.002 Crystal msc - 2 17.4 363 1.02e+03 0 0.138 0.0998 0.102 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 21, Parent ID = 12 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 22.2 351 1.02e+03 0.00612 0 0 0 Crystal initStep - 1 22.2 351 1.02e+03 0.00612 0 1.24e-05 1.24e-05 Crystal msc - 2 22.2 351 1.02e+03 0 0.00612 0.000622 0.000635 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 20, Parent ID = 12 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 28.1 344 1.03e+03 0.345 0 0 0 Crystal initStep - 1 28.1 344 1.03e+03 0.336 0.00973 0.00813 0.00813 Crystal msc - 2 28.1 344 1.03e+03 0 0.336 0.39 0.398 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 19, Parent ID = 12 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 22.1 347 1.04e+03 0.0302 0 0 0 Crystal initStep - 1 22.1 347 1.04e+03 0.03 0.000179 0.000162 0.000162 Crystal msc - 2 22.1 347 1.04e+03 0 0.03 0.008 0.00817 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 18, Parent ID = 12 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 7.67 347 1.08e+03 0.426 0 0 0 Crystal initStep - 1 7.67 347 1.08e+03 0.417 0.00921 0.0109 0.0109 Crystal msc - 2 7.67 347 1.08e+03 0 0.417 0.529 0.54 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 11, Parent ID = 5 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0669 329 1.1e+03 0.0626 0 0 0 Crystal initStep - 1 0.103 329 1.1e+03 0 0.0332 0.314 0.314 Crystal phot + 0 124 319 936 0.001 0 0 0 WorldPhysical initStep + 1 124 319 936 0 0.001 0.0578 0.0578 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 24, Parent ID = 11 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.103 329 1.1e+03 0.0294 0 0 0 Crystal initStep - 1 0.103 329 1.1e+03 0.0293 0.000128 0.000155 0.000155 Crystal msc - 2 0.103 329 1.1e+03 0 0.0293 0.0077 0.00785 Crystal eIoni ->>> Event 2 - 11 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999931738278647 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) + 0 128 320 939 0.00124 0 0 0 WorldPhysical initStep + 1 128 320 939 0 0.00124 0.0776 0.0776 WorldPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +* G4Track Information: Particle = e-, Track ID = 23, Parent ID = 11 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 30 100 1e+03 0.0199 104 104 DriftChamberPhysical CoupledTransportation - 2 -0.115 270 900 1e+03 0.0309 835 940 WorldPhysical CoupledTransportation - 3 -0.151 298 994 1e+03 0.015 98.4 1.04e+03 WorldPhysical eIoni - 4 -0.155 300 1e+03 1e+03 0.000745 6 1.04e+03 Crystal CoupledTransportation - 5 -0.155 300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom + 0 127 320 940 0.00103 0 0 0 WorldPhysical initStep + 1 127 320 940 0 0.00103 0.0601 0.0601 WorldPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +* G4Track Information: Particle = e-, Track ID = 22, Parent ID = 11 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.151 298 994 0.0169 0 0 0 WorldPhysical initStep - 1 1.09 298 994 0.0152 0.00178 1.44 1.44 WorldPhysical msc - 2 2.4 298 994 0.0135 0.00165 1.44 2.87 WorldPhysical msc - 3 2.62 297 994 0.0107 0.000451 0.269 3.14 WorldPhysical eIoni - 4 3.49 296 995 0.00642 0.00424 1.88 5.03 WorldPhysical eIoni - 5 2.91 296 995 0.00329 0.00313 1.11 6.14 WorldPhysical eIoni - 6 2.98 296 995 0 0.00329 0.35 6.49 WorldPhysical eIoni + 0 120 318 944 0.000998 0 0 0 WorldPhysical initStep + 1 120 318 944 0 0.000998 0.0577 0.0577 WorldPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 2 +* G4Track Information: Particle = e-, Track ID = 21, Parent ID = 11 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 2.62 297 994 0.0024 0 0 0 WorldPhysical initStep - 1 2.62 297 994 0 0.0024 0.209 0.209 WorldPhysical eIoni ->>> Event 3 - 9 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999916604558161 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) + 0 117 317 948 0.00283 0 0 0 WorldPhysical initStep + 1 117 317 948 0 0.00283 0.274 0.274 WorldPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +* G4Track Information: Particle = e-, Track ID = 20, Parent ID = 11 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.000296 24.2 80.6 1e+03 0.021 84.1 84.1 WorldPhysical eIoni - 2 0.00219 30 100 1e+03 0.00745 20.3 104 DriftChamberPhysical CoupledTransportation - 3 0.00667 45.3 151 1e+03 0.00219 53.3 158 DriftChamberPhysical eIoni - 4 0.0175 74.4 248 1e+03 0.00304 101 259 DriftChamberPhysical eIoni - 5 0.071 223 744 1e+03 0.0175 518 777 DriftChamberPhysical eIoni - 6 0.0945 270 900 1e+03 0.00546 163 940 WorldPhysical CoupledTransportation - 7 0.1 300 1e+03 1e+03 0.0218 104 1.04e+03 Crystal CoupledTransportation - 8 0.1 300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom + 0 115 317 948 0.00227 0 0 0 WorldPhysical initStep + 1 115 317 948 0 0.00227 0.191 0.191 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 10, Parent ID = 6 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 108 317 954 0.0034 0 0 0 WorldPhysical initStep + 1 108 317 954 0 0.0034 0.373 0.373 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 6 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 97.2 320 966 0.00155 0 0 0 WorldPhysical initStep + 1 97.3 320 966 0 0.00155 0.107 0.107 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 6 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 79.7 321 975 0.00395 0 0 0 WorldPhysical initStep + 1 79.8 321 976 0 0.00395 0.477 0.477 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 6 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 44 295 979 0.00198 0 0 0 WorldPhysical initStep + 1 44 295 979 0 0.00198 0.153 0.153 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.071 223 744 0.00198 0 0 0 DriftChamberPhysical initStep - 1 0.131 223 744 0.00188 9.29e-05 0.0939 0.0939 DriftChamberPhysical msc - 2 0.637 224 744 0 0.00188 0.801 0.895 DriftChamberPhysical eIoni + 0 -0.104 279 929 0.00347 0 0 0 WorldPhysical initStep + 1 -0.145 278 929 0 0.00347 0.386 0.386 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0175 74.4 248 0.00255 0 0 0 DriftChamberPhysical initStep - 1 0.11 74.5 248 0.00248 6.78e-05 0.149 0.149 DriftChamberPhysical msc - 2 0.499 75.6 248 0.000682 0.0018 1.21 1.36 DriftChamberPhysical eIoni - 3 0.548 75.7 248 0 0.000682 0.188 1.55 DriftChamberPhysical eIoni + 0 -0.102 275 916 0.00294 0 0 0 WorldPhysical initStep + 1 -0.176 275 916 0 0.00294 0.292 0.292 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00667 45.3 151 0.00127 0 0 0 DriftChamberPhysical initStep - 1 -0.0218 45.3 151 0.00111 0.000157 0.0423 0.0423 DriftChamberPhysical msc - 2 -0.132 45.5 151 0 0.00111 0.36 0.403 DriftChamberPhysical eIoni + 0 0.00488 15.4 51.3 0.00114 0 0 0 WorldPhysical initStep + 1 -0.0109 15.4 51.3 0 0.00114 0.0689 0.0689 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.000296 24.2 80.6 0.00111 0 0 0 WorldPhysical initStep - 1 -0.0254 24.2 80.6 0 0.00111 0.0667 0.0667 WorldPhysical eIoni + 0 0.0046 11.4 38.1 0.00195 0 0 0 WorldPhysical initStep + 1 0.0355 11.4 38.1 0 0.00195 0.15 0.15 WorldPhysical eIoni +>>> Event 1 + 10 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9997123111293595 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0 30 100 1e+03 0.0163 104 104 DriftChamberPhysical CoupledTransportation + 2 -0.0362 84.1 280 1e+03 0.0062 188 293 DriftChamberPhysical eIoni + 3 -0.0393 91.1 304 999 0.000637 24.5 317 DriftChamberPhysical eIoni + 4 -0.0379 95.6 318 999 0.000424 15.4 332 DriftChamberPhysical eIoni + 5 -0.00505 259 861 999 0.0184 566 899 DriftChamberPhysical eIoni + 6 -0.00252 270 900 999 0.001 41.2 940 WorldPhysical CoupledTransportation + 7 0.00157 284 946 999 0.00813 48 988 WorldPhysical eIoni + 8 -0.00357 301 1e+03 999 0.00809 56.4 1.04e+03 Crystal CoupledTransportation + 9 -0.00357 301 1e+03 0 999 0 1.04e+03 Crystal G4FSMP_massGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.00157 284 946 0.00105 0 0 0 WorldPhysical initStep + 1 0.00791 284 946 0 0.00105 0.0622 0.0622 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.00505 259 861 0.00408 0 0 0 DriftChamberPhysical initStep + 1 -0.548 260 860 0.00244 0.00165 1.93 1.93 DriftChamberPhysical eIoni + 2 -0.76 261 859 0 0.00244 1.19 3.12 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.0379 95.6 318 0.0016 0 0 0 DriftChamberPhysical initStep + 1 0.406 95.6 318 0 0.0016 0.618 0.618 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.0393 91.1 304 0.714 0 0 0 DriftChamberPhysical initStep + 1 -15.2 52.7 367 0.709 0.00164 75.4 75.4 DriftChamberPhysical eIoni + 2 -110 -253 900 0.695 0.0138 625 700 WorldPhysical CoupledTransportation + 3 -114 -279 959 0.665 0.013 65.3 765 WorldPhysical eIoni + 4 -114 -279 959 0.663 0 0.317 766 WorldPhysical eIoni + 5 -129 -297 1e+03 0.658 0.00457 47.1 813 Crystal CoupledTransportation + 6 -129 -297 1e+03 0.642 0.0158 0.0195 813 Crystal msc + 7 -129 -297 1e+03 0.63 0.0121 0.0195 813 Crystal msc + 8 -129 -297 1e+03 0.621 0.00941 0.0195 813 Crystal msc + 9 -129 -297 1e+03 0.614 0.00696 0.0195 813 Crystal msc + 10 -129 -297 1e+03 0.609 0.00493 0.0195 813 Crystal msc + 11 -129 -297 1e+03 0.608 0.00155 0.0195 813 Crystal msc + 12 -129 -297 1e+03 0.599 0.00826 0.0195 813 Crystal msc + 13 -129 -297 1e+03 0.595 0.00472 0.0195 813 Crystal msc + 14 -129 -297 1e+03 0.587 0.00704 0.0195 813 Crystal msc + 15 -129 -297 1e+03 0.581 0.00622 0.0195 813 Crystal msc + 16 -129 -297 1e+03 0.572 0.00955 0.0195 813 Crystal msc + 17 -129 -297 1e+03 0.566 0.00544 0.00884 813 WorldPhysical CoupledTransportation + 18 -138 -278 976 0.557 0.00812 32.3 845 WorldPhysical eIoni + 19 -144 -263 957 0.551 0.00389 24.7 870 WorldPhysical eIoni + 20 -144 -262 956 0.526 1.29e-05 1.51 871 WorldPhysical eIoni + 21 -187 -196 900 0.511 0.0149 98.9 970 DriftChamberPhysical CoupledTransportation + 22 -390 246 724 0.483 0.0129 519 1.49e+03 DriftChamberPhysical eIoni + 23 -597 538 612 0.469 0.0122 375 1.86e+03 DriftChamberPhysical eIoni + 24 -1.03e+03 1.25e+03 328 0.445 0.0246 894 2.76e+03 WorldPhysical CoupledTransportation + 25 -1.08e+03 1.3e+03 325 0.433 0.0091 66.9 2.82e+03 WorldPhysical eIoni + 26 -1.08e+03 1.3e+03 326 0.431 0.00062 3.47 2.83e+03 WorldPhysical eIoni + 27 -1.08e+03 1.33e+03 331 0.419 0.00611 29.6 2.86e+03 WorldPhysical eIoni + 28 -1.11e+03 1.39e+03 337 0.406 0.0105 63.9 2.92e+03 WorldPhysical eIoni + 29 -1.14e+03 1.57e+03 322 0.375 0.0284 189 3.11e+03 WorldPhysical eIoni + 30 -1.14e+03 1.58e+03 320 0.37 0.00346 8.94 3.12e+03 WorldPhysical eIoni + 31 -1.18e+03 1.81e+03 290 0.327 0.0391 249 3.37e+03 WorldPhysical eIoni + 32 -1.18e+03 1.82e+03 289 0.324 0.00211 12.5 3.38e+03 WorldPhysical eIoni + 33 -1.32e+03 1.93e+03 322 0.279 0.0437 192 3.57e+03 WorldPhysical eIoni + 34 -1.33e+03 1.95e+03 319 0.271 0.00736 18.9 3.59e+03 WorldPhysical eIoni + 35 -1.34e+03 1.96e+03 319 0.267 0.00243 13.9 3.61e+03 WorldPhysical eIoni + 36 -1.36e+03 1.99e+03 319 0.253 0.0128 38.6 3.64e+03 WorldPhysical eIoni + 37 -1.4e+03 2.04e+03 314 0.238 0.0134 66.9 3.71e+03 WorldPhysical eIoni + 38 -1.4e+03 2.07e+03 317 0.232 0.00586 30.8 3.74e+03 WorldPhysical eIoni + 39 -1.4e+03 2.08e+03 318 0.23 0.00168 3.87 3.75e+03 WorldPhysical eIoni + 40 -1.41e+03 2.1e+03 329 0.223 0.00494 29.6 3.78e+03 WorldPhysical eIoni + 41 -1.44e+03 2.21e+03 371 0.197 0.0257 128 3.9e+03 WorldPhysical eIoni + 42 -1.49e+03 2.29e+03 398 0.173 0.0217 99.9 4e+03 WorldPhysical eIoni + 43 -1.54e+03 2.31e+03 425 0.157 0.0137 66.2 4.07e+03 WorldPhysical eIoni + 44 -1.58e+03 2.33e+03 459 0.139 0.0159 56.1 4.13e+03 WorldPhysical eIoni + 45 -1.58e+03 2.33e+03 462 0.136 0.00177 8.5 4.13e+03 WorldPhysical eIoni + 46 -1.61e+03 2.3e+03 481 0.123 0.0103 45.5 4.18e+03 WorldPhysical eIoni + 47 -1.64e+03 2.27e+03 465 0.105 0.0185 48.5 4.23e+03 WorldPhysical eIoni + 48 -1.66e+03 2.27e+03 461 0.0968 0.00656 23.1 4.25e+03 WorldPhysical eIoni + 49 -1.67e+03 2.25e+03 452 0.0866 0.00836 24 4.28e+03 WorldPhysical eIoni + 50 -1.68e+03 2.24e+03 458 0.083 0.0025 8.82 4.28e+03 WorldPhysical eIoni + 51 -1.69e+03 2.24e+03 476 0.0621 0.00786 22.8 4.31e+03 WorldPhysical eIoni + 52 -1.69e+03 2.24e+03 484 0.0348 0.00499 10.9 4.32e+03 WorldPhysical eIoni + 53 -1.69e+03 2.23e+03 488 0.0299 0.00486 6.5 4.33e+03 WorldPhysical eIoni + 54 -1.7e+03 2.24e+03 492 0.0233 0.00661 5.29 4.33e+03 WorldPhysical eIoni + 55 -1.7e+03 2.24e+03 493 0.0196 0.00374 3.9 4.33e+03 WorldPhysical eIoni + 56 -1.7e+03 2.24e+03 493 0.0149 0.0047 3.21 4.34e+03 WorldPhysical eIoni + 57 -1.7e+03 2.24e+03 491 0.0112 0.00367 2.48 4.34e+03 WorldPhysical eIoni + 58 -1.7e+03 2.24e+03 490 0.00738 0.0038 1.96 4.34e+03 WorldPhysical eIoni + 59 -1.7e+03 2.24e+03 490 0.00409 0.00216 0.581 4.34e+03 WorldPhysical eIoni + 60 -1.7e+03 2.24e+03 490 0.00152 0.00256 0.307 4.34e+03 WorldPhysical eIoni + 61 -1.7e+03 2.24e+03 490 0 0.00152 0.104 4.34e+03 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 39, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.7e+03 2.24e+03 490 0.00113 0 0 0 WorldPhysical initStep + 1 -1.7e+03 2.24e+03 490 0 0.00113 0.0686 0.0686 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 38, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.69e+03 2.24e+03 484 0.0223 0 0 0 WorldPhysical initStep + 1 -1.69e+03 2.24e+03 487 0.019 0.00336 3.72 3.72 WorldPhysical eIoni + 2 -1.69e+03 2.24e+03 487 0.0133 0.00565 3.12 6.84 WorldPhysical eIoni + 3 -1.69e+03 2.23e+03 488 0.00919 0.00314 2.01 8.85 WorldPhysical eIoni + 4 -1.69e+03 2.23e+03 487 0.00358 0.0056 1.66 10.5 WorldPhysical eIoni + 5 -1.69e+03 2.23e+03 487 0 0.00358 0.407 10.9 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 40, Parent ID = 38 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.69e+03 2.23e+03 488 0.001 0 0 0 WorldPhysical initStep + 1 -1.69e+03 2.24e+03 488 0 0.001 0.058 0.058 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 37, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.69e+03 2.24e+03 476 0.013 0 0 0 WorldPhysical initStep + 1 -1.69e+03 2.24e+03 478 0.00381 0.00923 2.22 2.22 WorldPhysical eIoni + 2 -1.69e+03 2.24e+03 478 0 0.00381 0.451 2.67 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 36, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.68e+03 2.24e+03 458 0.00107 0 0 0 WorldPhysical initStep + 1 -1.68e+03 2.24e+03 458 0 0.00107 0.0635 0.0635 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 35, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.67e+03 2.25e+03 452 0.00185 0 0 0 WorldPhysical initStep + 1 -1.67e+03 2.25e+03 452 0 0.00185 0.139 0.139 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 34, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.66e+03 2.27e+03 461 0.0015 0 0 0 WorldPhysical initStep + 1 -1.66e+03 2.27e+03 461 0 0.0015 0.101 0.101 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 33, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.61e+03 2.3e+03 481 0.00221 0 0 0 WorldPhysical initStep + 1 -1.61e+03 2.3e+03 481 0 0.00221 0.183 0.183 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 32, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.58e+03 2.33e+03 462 0.00157 0 0 0 WorldPhysical initStep + 1 -1.58e+03 2.33e+03 462 0 0.00157 0.108 0.108 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 31, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.58e+03 2.33e+03 459 0.00161 0 0 0 WorldPhysical initStep + 1 -1.58e+03 2.33e+03 459 0 0.00161 0.113 0.113 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 30, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.54e+03 2.31e+03 425 0.00213 0 0 0 WorldPhysical initStep + 1 -1.54e+03 2.31e+03 425 0 0.00213 0.173 0.173 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 29, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.49e+03 2.29e+03 398 0.00301 0 0 0 WorldPhysical initStep + 1 -1.49e+03 2.29e+03 398 0 0.00301 0.302 0.302 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 28, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.41e+03 2.1e+03 329 0.00212 0 0 0 WorldPhysical initStep + 1 -1.41e+03 2.1e+03 329 0 0.00212 0.171 0.171 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 27, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.4e+03 2.04e+03 314 0.00178 0 0 0 WorldPhysical initStep + 1 -1.4e+03 2.04e+03 314 0 0.00178 0.131 0.131 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 26, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.36e+03 1.99e+03 319 0.00173 0 0 0 WorldPhysical initStep + 1 -1.36e+03 1.99e+03 319 0 0.00173 0.126 0.126 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 25, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.34e+03 1.96e+03 319 0.00101 0 0 0 WorldPhysical initStep + 1 -1.34e+03 1.96e+03 319 0 0.00101 0.0588 0.0588 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 24, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.33e+03 1.95e+03 319 0.00101 0 0 0 WorldPhysical initStep + 1 -1.33e+03 1.95e+03 319 0 0.00101 0.0588 0.0588 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 23, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.32e+03 1.93e+03 322 0.00139 0 0 0 WorldPhysical initStep + 1 -1.32e+03 1.93e+03 322 0 0.00139 0.0916 0.0916 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 22, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.18e+03 1.82e+03 289 0.00106 0 0 0 WorldPhysical initStep + 1 -1.18e+03 1.82e+03 289 0 0.00106 0.0625 0.0625 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 21, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.18e+03 1.81e+03 290 0.00348 0 0 0 WorldPhysical initStep + 1 -1.18e+03 1.81e+03 290 0 0.00348 0.388 0.388 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 20, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.14e+03 1.58e+03 320 0.00156 0 0 0 WorldPhysical initStep + 1 -1.14e+03 1.58e+03 320 0 0.00156 0.108 0.108 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 19, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.14e+03 1.57e+03 322 0.00271 0 0 0 WorldPhysical initStep + 1 -1.14e+03 1.57e+03 322 0 0.00271 0.254 0.254 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 18, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.11e+03 1.39e+03 337 0.00303 0 0 0 WorldPhysical initStep + 1 -1.11e+03 1.39e+03 337 0.00166 0.00018 0.0105 0.0105 WorldPhysical eIoni + 2 -1.11e+03 1.39e+03 337 0 0.00166 0.118 0.129 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 41, Parent ID = 18 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.11e+03 1.39e+03 337 0.00119 0 0 0 WorldPhysical initStep + 1 -1.11e+03 1.39e+03 337 0 0.00119 0.0732 0.0732 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 17, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.08e+03 1.33e+03 331 0.00503 0 0 0 WorldPhysical initStep + 1 -1.08e+03 1.33e+03 331 0 0.00503 0.728 0.728 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 16, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.08e+03 1.3e+03 326 0.00146 0 0 0 WorldPhysical initStep + 1 -1.08e+03 1.3e+03 326 0 0.00146 0.0979 0.0979 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 15, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -1.08e+03 1.3e+03 325 0.0029 0 0 0 WorldPhysical initStep + 1 -1.07e+03 1.3e+03 325 0 0.0029 0.285 0.285 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 14, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -597 538 612 0.000999 0 0 0 DriftChamberPhysical initStep + 1 -597 538 612 0 0.000999 0.307 0.307 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 13, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -390 246 724 0.0157 0 0 0 DriftChamberPhysical initStep + 1 -385 253 723 0.0139 0.00181 8.6 8.6 DriftChamberPhysical eIoni + 2 -379 257 723 0.0125 0.00146 7.22 15.8 DriftChamberPhysical eIoni + 3 -375 261 724 0.00989 0.00256 6.13 22 DriftChamberPhysical eIoni + 4 -371 262 724 0.00887 0.00103 4.53 26.5 DriftChamberPhysical eIoni + 5 -367 264 724 0.0071 0.00177 3.99 30.5 DriftChamberPhysical eIoni + 6 -365 265 724 0.00585 0.00124 3.13 33.6 DriftChamberPhysical eIoni + 7 -362 265 723 0.00273 0.00313 2.61 36.2 DriftChamberPhysical eIoni + 8 -361 265 722 0.000665 0.00206 1.36 37.6 DriftChamberPhysical eIoni + 9 -361 265 722 0 0.000665 0.182 37.8 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 12, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -144 -262 956 0.0252 0 0 0 WorldPhysical initStep + 1 -142 -263 954 0.0177 0.00749 4.25 4.25 WorldPhysical eIoni + 2 -140 -265 953 0.0123 0.00546 2.92 7.18 WorldPhysical eIoni + 3 -139 -265 953 0.0075 0.00476 2.11 9.28 WorldPhysical eIoni + 4 -139 -266 953 0.00239 0.00511 1.36 10.6 WorldPhysical eIoni + 5 -139 -266 953 0 0.00239 0.207 10.9 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 11, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -144 -263 957 0.00144 0 0 0 WorldPhysical initStep + 1 -144 -263 957 0 0.00144 0.0965 0.0965 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 10, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -138 -278 976 0.00156 0 0 0 WorldPhysical initStep + 1 -139 -278 976 0 0.00156 0.108 0.108 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -114 -279 959 0.00193 0 0 0 WorldPhysical initStep + 1 -114 -280 959 0 0.00193 0.147 0.147 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -114 -279 959 0.0172 0 0 0 WorldPhysical initStep + 1 -113 -279 961 0.0134 0.00228 2.2 2.2 WorldPhysical eIoni + 2 -112 -278 962 0.0103 0.00309 2.27 4.47 WorldPhysical eIoni + 3 -111 -277 961 0.00503 0.00426 1.27 5.74 WorldPhysical eIoni + 4 -111 -277 961 0.00334 0.000505 0.093 5.84 WorldPhysical eIoni + 5 -111 -277 961 0 0.00334 0.361 6.2 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 44, Parent ID = 8 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -111 -277 961 0.00118 0 0 0 WorldPhysical initStep + 1 -111 -277 961 0 0.00118 0.0722 0.0722 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 43, Parent ID = 8 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -111 -277 961 0.00102 0 0 0 WorldPhysical initStep + 1 -111 -277 961 0 0.00102 0.0593 0.0593 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 42, Parent ID = 8 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -113 -279 961 0.00151 0 0 0 WorldPhysical initStep + 1 -113 -279 961 0 0.00151 0.102 0.102 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -15.2 52.7 367 0.00326 0 0 0 DriftChamberPhysical initStep + 1 -16.6 52.5 366 0.00128 0.00199 1.61 1.61 DriftChamberPhysical eIoni + 2 -16.9 52.5 366 0 0.00128 0.438 2.04 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.0362 84.1 280 0.00143 0 0 0 DriftChamberPhysical initStep + 1 0.176 84.4 280 0 0.00143 0.525 0.525 DriftChamberPhysical eIoni +>>> Event 2 + 13 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9993110101555794 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 -0.00286 9.71 32.4 1e+03 0.0076 33.8 33.8 WorldPhysical eIoni + 2 -0.00306 30 100 1e+03 0.0112 70.6 104 DriftChamberPhysical CoupledTransportation + 3 -0.0407 115 383 1e+03 0.00946 295 400 DriftChamberPhysical eIoni + 4 -0.108 270 900 1e+03 0.0193 540 940 WorldPhysical CoupledTransportation + 5 -0.108 271 903 1e+03 0.000584 2.73 942 WorldPhysical eIoni + 6 -0.118 294 980 1e+03 0.0143 80.8 1.02e+03 WorldPhysical eIoni + 7 -0.12 300 1e+03 1e+03 0.00513 20.8 1.04e+03 Crystal CoupledTransportation + 8 -0.12 300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.118 294 980 0.00194 0 0 0 WorldPhysical initStep + 1 -0.176 294 980 0 0.00194 0.149 0.149 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.108 271 903 0.00352 0 0 0 WorldPhysical initStep + 1 -0.00322 271 903 0 0.00352 0.394 0.394 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.0407 115 383 0.00258 0 0 0 DriftChamberPhysical initStep + 1 -0.453 116 383 0 0.00258 1.27 1.27 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.00286 9.71 32.4 0.00151 0 0 0 WorldPhysical initStep + 1 -0.0144 9.68 32.4 0 0.00151 0.103 0.103 WorldPhysical eIoni +>>> Event 3 + 8 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9999228345562295 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0.000227 4.03 13.4 1e+03 0.0019 14 14 WorldPhysical eIoni + 2 0.000635 6.57 21.9 1e+03 0.00516 8.84 22.9 WorldPhysical eIoni + 3 -0.000206 15.1 50.2 1e+03 0.00502 29.6 52.4 WorldPhysical eIoni + 4 0.00365 30 100 1e+03 0.00844 52 104 DriftChamberPhysical CoupledTransportation + 5 0.106 204 679 1e+03 0.0213 604 709 DriftChamberPhysical eIoni + 6 0.141 270 900 1e+03 0.0062 231 940 WorldPhysical CoupledTransportation + 7 0.143 275 917 1e+03 0.00636 18 958 WorldPhysical eIoni + 8 0.149 285 951 1e+03 0.0051 35.1 993 WorldPhysical eIoni + 9 0.15 300 1e+03 1e+03 0.0144 51.3 1.04e+03 Crystal CoupledTransportation + 10 0.15 300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.149 285 951 0.001 0 0 0 WorldPhysical initStep + 1 0.13 285 951 0 0.001 0.0578 0.0578 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.143 275 917 0.00265 0 0 0 WorldPhysical initStep + 1 0.0714 275 917 0 0.00265 0.245 0.245 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.106 204 679 0.00121 0 0 0 DriftChamberPhysical initStep + 1 -0.148 204 679 0 0.00121 0.405 0.405 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.000206 15.1 50.2 0.0027 0 0 0 WorldPhysical initStep + 1 -0.041 15 50.3 0 0.0027 0.254 0.254 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.000635 6.57 21.9 0.00431 0 0 0 WorldPhysical initStep + 1 -0.218 6.68 21.9 0 0.00431 0.56 0.56 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.000227 4.03 13.4 0.00212 0 0 0 WorldPhysical initStep + 1 -0.0547 4.08 13.4 0 0.00212 0.172 0.172 WorldPhysical eIoni >>> Event 4 6 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999914684685843 (GeV) + Total energy deposition in EM calorimeter crytals : 0.9999120925529089 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) number of event = 5 @@ -959,51 +1268,31 @@ number of event = 5 Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 -30 100 1e+03 0.0206 104 104 DriftChamberPhysical CoupledTransportation - 2 0.00951 -69.1 230 1e+03 0.00604 136 241 DriftChamberPhysical eIoni - 3 0.0603 -270 900 1e+03 0.0219 699 940 WorldPhysical CoupledTransportation - 4 0.0577 -280 932 1e+03 0.00747 33.2 973 WorldPhysical eIoni - 5 0.0463 -292 973 1e+03 0.00746 42.7 1.02e+03 WorldPhysical eIoni - 6 0.0397 -300 1e+03 1e+03 0.00564 28.5 1.04e+03 Crystal CoupledTransportation - 7 0.0397 -300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0463 -292 973 0.0011 0 0 0 WorldPhysical initStep - 1 0.0716 -292 973 0 0.0011 0.0657 0.0657 WorldPhysical eIoni + 1 0 -30 100 1e+03 0.0309 104 104 DriftChamberPhysical CoupledTransportation + 2 0.0324 -135 449 1e+03 0.0111 364 469 DriftChamberPhysical eIoni + 3 0.0641 -270 900 1e+03 0.0148 471 940 WorldPhysical CoupledTransportation + 4 0.0651 -274 912 1e+03 0.00326 12.3 952 WorldPhysical eIoni + 5 0.078 -300 1e+03 1e+03 0.0209 92.1 1.04e+03 Crystal CoupledTransportation + 6 0.078 -300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0577 -280 932 0.00431 0 0 0 WorldPhysical initStep - 1 0.258 -280 932 0.00205 0.000615 0.276 0.276 WorldPhysical eIoni - 2 0.301 -280 932 0 0.00205 0.162 0.438 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 3 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.258 -280 932 0.00165 0 0 0 WorldPhysical initStep - 1 0.225 -280 932 0 0.00165 0.117 0.117 WorldPhysical eIoni + 0 0.0651 -274 912 0.0011 0 0 0 WorldPhysical initStep + 1 0.0491 -274 912 0 0.0011 0.0664 0.0664 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00951 -69.1 230 0.00427 0 0 0 DriftChamberPhysical initStep - 1 -0.332 -68.7 230 0.00399 0.000276 0.571 0.571 DriftChamberPhysical msc - 2 -0.471 -66.9 230 0.0018 0.00219 1.89 2.46 DriftChamberPhysical eIoni - 3 -0.652 -66.6 230 0 0.0018 0.75 3.21 DriftChamberPhysical eIoni + 0 0.0324 -135 449 0.00118 0 0 0 DriftChamberPhysical initStep + 1 -0.123 -135 449 0 0.00118 0.389 0.389 DriftChamberPhysical eIoni >>> Event 0 8 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999211894740589 (GeV) + Total energy deposition in EM calorimeter crytals : 0.9999168462742849 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) @@ -1013,34 +1302,31 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 -30 100 1e+03 0.0206 104 104 DriftChamberPhysical CoupledTransportation - 2 0.00614 -42.8 143 1e+03 0.00112 44.5 149 DriftChamberPhysical eIoni - 3 0.0631 -186 620 1e+03 0.0156 499 647 DriftChamberPhysical eIoni - 4 0.111 -270 900 1e+03 0.0115 292 940 WorldPhysical CoupledTransportation - 5 0.138 -300 1e+03 1e+03 0.0234 104 1.04e+03 Crystal CoupledTransportation - 6 0.138 -300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom + 1 0 -30 100 1e+03 0.0228 104 104 DriftChamberPhysical CoupledTransportation + 2 0.00355 -30.8 103 1e+03 8e-05 2.69 107 DriftChamberPhysical eIoni + 3 0.64 -174 580 1e+03 0.0156 499 606 DriftChamberPhysical eIoni + 4 1.04 -270 900 1e+03 0.011 334 940 WorldPhysical CoupledTransportation + 5 1.17 -300 1e+03 1e+03 0.0203 104 1.04e+03 Crystal CoupledTransportation + 6 1.17 -300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0631 -186 620 0.00246 0 0 0 DriftChamberPhysical initStep - 1 0.157 -186 620 0.00246 4.36e-06 0.139 0.139 DriftChamberPhysical msc - 2 0.749 -187 620 0.000153 0.0023 1.2 1.34 DriftChamberPhysical eIoni - 3 0.745 -187 620 0 0.000153 0.058 1.4 DriftChamberPhysical eIoni + 0 0.64 -174 580 0.00131 0 0 0 DriftChamberPhysical initStep + 1 0.824 -174 580 0 0.00131 0.454 0.454 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00614 -42.8 143 0.002 0 0 0 DriftChamberPhysical initStep - 1 -0.0762 -42.7 143 0.00186 0.000133 0.0963 0.0963 DriftChamberPhysical msc - 2 -0.581 -42.5 143 0 0.00186 0.789 0.885 DriftChamberPhysical eIoni + 0 0.00355 -30.8 103 0.002 0 0 0 DriftChamberPhysical initStep + 1 -0.5 -30.4 103 0 0.002 0.876 0.876 DriftChamberPhysical eIoni >>> Event 1 - 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999234249825512 (GeV) + 11 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9999269533393694 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) @@ -1050,193 +1336,148 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 -0.00245 -8.63 28.8 1e+03 0.00648 30.1 30.1 WorldPhysical eIoni - 2 0.00533 -30 100 1e+03 0.0158 74.3 104 DriftChamberPhysical CoupledTransportation - 3 0.025 -270 900 1e+03 0.0292 835 940 WorldPhysical CoupledTransportation - 4 0.0244 -273 910 1e+03 0.00244 10.9 951 WorldPhysical eIoni - 5 0.0167 -292 974 1e+03 0.0133 66.7 1.02e+03 WorldPhysical eIoni - 6 0.017 -300 1e+03 1e+03 0.00879 26.9 1.04e+03 Crystal CoupledTransportation - 7 0.017 -300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0167 -292 974 0.00296 0 0 0 WorldPhysical initStep - 1 0.00824 -292 974 0.00131 0.000442 0.0536 0.0536 WorldPhysical eIoni - 2 -0.0143 -292 974 0 0.00131 0.0839 0.137 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00824 -292 974 0.00121 0 0 0 WorldPhysical initStep - 1 0.0192 -292 974 0 0.00121 0.0749 0.0749 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0244 -273 910 0.00294 0 0 0 WorldPhysical initStep - 1 0.133 -273 910 0 0.00294 0.291 0.291 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.00245 -8.63 28.8 0.00174 0 0 0 WorldPhysical initStep - 1 0.0114 -8.68 28.8 0 0.00174 0.127 0.127 WorldPhysical eIoni ->>> Event 2 - 6 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999162814876604 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.000166 -1.34 4.46 1e+03 0.000964 4.65 4.65 WorldPhysical eIoni - 2 -0.000846 -30 100 1e+03 0.0233 99.7 104 DriftChamberPhysical CoupledTransportation - 3 0.0331 -270 900 1e+03 0.027 835 940 WorldPhysical CoupledTransportation - 4 0.0474 -300 1e+03 1e+03 0.0235 104 1.04e+03 Crystal CoupledTransportation - 5 0.0474 -300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.000166 -1.34 4.46 0.006 0 0 0 WorldPhysical initStep - 1 0.428 -1.27 4.51 0 0.006 1 1 WorldPhysical eIoni ->>> Event 3 - 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999192513496675 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 -0.0109 -26.1 87.2 1e+03 0.0176 91 91 WorldPhysical eIoni - 2 -0.00974 -30 100 1e+03 0.0022 13.4 104 DriftChamberPhysical CoupledTransportation - 3 -0.0369 -237 791 1e+03 0.0266 721 826 DriftChamberPhysical eIoni - 4 -0.00587 -270 900 1e+03 0.00388 114 940 WorldPhysical CoupledTransportation - 5 -0.00111 -276 920 1e+03 0.00293 20.6 960 WorldPhysical eIoni - 6 0.00946 -285 950 1e+03 0.00523 32 992 WorldPhysical eIoni - 7 0.0113 -286 954 1e+03 0.00114 3.78 996 WorldPhysical eIoni - 8 0.0275 -300 1e+03 1e+03 0.00934 48 1.04e+03 Crystal CoupledTransportation - 9 0.0275 -300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0113 -286 954 0.0501 0 0 0 WorldPhysical initStep - 1 7.72 -284 956 0.0431 0.00394 8.74 8.74 WorldPhysical eIoni - 2 15.5 -286 957 0.0371 0.00593 8.85 17.6 WorldPhysical eIoni - 3 21.3 -289 959 0.0277 0.00946 7.12 24.7 WorldPhysical eIoni - 4 17.7 -291 960 0.0241 0.00357 4.8 29.5 WorldPhysical eIoni - 5 17.4 -292 960 0.0187 0.000951 1.16 30.7 WorldPhysical eIoni - 6 17.4 -292 960 0.0169 9.87e-05 0.115 30.8 WorldPhysical eIoni - 7 19.4 -293 960 0.0133 0.00367 2.8 33.6 WorldPhysical eIoni - 8 19.8 -294 960 0.0094 0.00287 1.29 34.9 WorldPhysical eIoni - 9 20.3 -295 959 0.00491 0.00449 1.69 36.6 WorldPhysical eIoni - 10 20.4 -296 959 0 0.00491 0.698 37.3 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 10, Parent ID = 6 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 19.8 -294 960 0.00101 0 0 0 WorldPhysical initStep - 1 19.8 -294 960 0 0.00101 0.0588 0.0588 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 6 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 17.4 -292 960 0.00167 0 0 0 WorldPhysical initStep - 1 17.4 -292 960 0 0.00167 0.12 0.12 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 6 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 17.4 -292 960 0.00445 0 0 0 WorldPhysical initStep - 1 17.2 -292 960 0 0.00445 0.593 0.593 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 6 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 7.72 -284 956 0.00311 0 0 0 WorldPhysical initStep - 1 7.72 -284 956 0 0.00311 0.318 0.318 WorldPhysical eIoni + 1 0 -30 100 1e+03 0.0217 104 104 DriftChamberPhysical CoupledTransportation + 2 -0.00423 -82.5 275 1e+03 0.00737 183 287 DriftChamberPhysical eIoni + 3 0.0373 -145 483 1e+03 0.00716 217 504 DriftChamberPhysical eIoni + 4 0.0833 -215 717 1e+03 0.00785 245 749 DriftChamberPhysical eIoni + 5 0.111 -270 900 1e+03 0.00784 191 940 WorldPhysical CoupledTransportation + 6 0.108 -287 956 1e+03 0.0116 58.9 999 WorldPhysical eIoni + 7 0.112 -300 1e+03 1e+03 0.00935 45.5 1.04e+03 Crystal CoupledTransportation + 8 0.112 -300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00946 -285 950 0.0015 0 0 0 WorldPhysical initStep - 1 -0.000151 -285 950 0 0.0015 0.101 0.101 WorldPhysical eIoni + 0 0.108 -287 956 0.00195 0 0 0 WorldPhysical initStep + 1 0.0777 -287 956 0 0.00195 0.15 0.15 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.00111 -276 920 0.0043 0 0 0 WorldPhysical initStep - 1 0.15 -276 920 0 0.0043 0.556 0.556 WorldPhysical eIoni + 0 0.0833 -215 717 0.00112 0 0 0 DriftChamberPhysical initStep + 1 0.336 -215 717 0 0.00112 0.366 0.366 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0369 -237 791 0.0153 0 0 0 DriftChamberPhysical initStep - 1 -6.83 -234 794 0.0141 0.00113 8.25 8.25 DriftChamberPhysical eIoni - 2 -11.3 -229 797 0.0125 0.00164 7.39 15.6 DriftChamberPhysical eIoni - 3 -15.8 -225 797 0.0112 0.00133 6.15 21.8 DriftChamberPhysical eIoni - 4 -16.4 -225 797 0.00962 0.000282 1.02 22.8 DriftChamberPhysical eIoni - 5 -19.3 -221 797 0.00819 0.00143 4.39 27.2 DriftChamberPhysical eIoni - 6 -22.7 -221 798 0.0058 0.00239 3.64 30.8 DriftChamberPhysical eIoni - 7 -25 -220 799 0.00431 0.00149 2.59 33.4 DriftChamberPhysical eIoni - 8 -26.8 -220 798 0.00161 0.0027 2.02 35.4 DriftChamberPhysical eIoni - 9 -27 -220 798 0 0.00161 0.624 36.1 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 11, Parent ID = 3 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -16.4 -225 797 0.00126 0 0 0 DriftChamberPhysical initStep - 1 -16.4 -225 797 0.00122 4.42e-05 0.0419 0.0419 DriftChamberPhysical msc - 2 -16.3 -224 798 0 0.00122 0.408 0.45 DriftChamberPhysical eIoni + 0 0.0373 -145 483 0.00154 0 0 0 DriftChamberPhysical initStep + 1 0.185 -144 483 0 0.00154 0.58 0.58 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0109 -26.1 87.2 0.00115 0 0 0 WorldPhysical initStep - 1 -0.0296 -26.1 87.2 0 0.00115 0.07 0.07 WorldPhysical eIoni ->>> Event 4 + 0 -0.00423 -82.5 275 0.00729 0 0 0 DriftChamberPhysical initStep + 1 -2.68 -81.7 276 0.0053 0.00198 3.22 3.22 DriftChamberPhysical eIoni + 2 -3.99 -80.4 278 0.00314 0.00216 2.39 5.61 DriftChamberPhysical eIoni + 3 -4.85 -79.2 278 0.00198 0.00116 1.55 7.16 DriftChamberPhysical eIoni + 4 -5.28 -78.8 278 0 0.00198 0.863 8.02 DriftChamberPhysical eIoni +>>> Event 2 + 7 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999915262404223 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 -0.000565 -5.19 17.3 1e+03 0.00501 18.1 18.1 WorldPhysical eIoni + 2 -0.00973 -30 100 1e+03 0.0163 86.3 104 DriftChamberPhysical CoupledTransportation + 3 -0.0032 -238 795 1e+03 0.0246 725 830 DriftChamberPhysical eIoni + 4 2.56e-05 -270 900 1e+03 0.00387 110 940 WorldPhysical CoupledTransportation + 5 0.00132 -277 922 1e+03 0.00555 23 963 WorldPhysical eIoni + 6 0.0138 -300 1e+03 1e+03 0.0165 81.4 1.04e+03 Crystal CoupledTransportation + 7 0.0138 -300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.00132 -277 922 0.0012 0 0 0 WorldPhysical initStep + 1 -0.0262 -277 922 0 0.0012 0.0738 0.0738 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.0032 -238 795 0.00527 0 0 0 DriftChamberPhysical initStep + 1 -1.56 -237 795 0.00374 0.00152 2.38 2.38 DriftChamberPhysical eIoni + 2 -2.11 -236 794 0.00152 0.00087 1.09 3.46 DriftChamberPhysical eIoni + 3 -2.15 -236 794 0 0.00152 0.569 4.03 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -2.11 -236 794 0.00136 0 0 0 DriftChamberPhysical initStep + 1 -2.4 -236 794 0 0.00136 0.483 0.483 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.000565 -5.19 17.3 0.00135 0 0 0 WorldPhysical initStep + 1 -0.0294 -5.21 17.3 0 0.00135 0.0879 0.0879 WorldPhysical eIoni +>>> Event 3 9 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9998587685583498 (GeV) + Total energy deposition in EM calorimeter crytals : 0.9999204154625679 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 -0.000607 -4.31 14.4 1e+03 0.00132 15 15 WorldPhysical eIoni + 2 -0.00156 -30 100 1e+03 0.0135 89.4 104 DriftChamberPhysical CoupledTransportation + 3 0.0593 -149 497 1e+03 0.0137 414 519 DriftChamberPhysical eIoni + 4 0.105 -270 900 1e+03 0.0131 421 940 WorldPhysical CoupledTransportation + 5 0.112 -294 978 1e+03 0.0228 81.6 1.02e+03 WorldPhysical eIoni + 6 0.116 -300 1e+03 1e+03 0.00447 22.8 1.04e+03 Crystal CoupledTransportation + 7 0.116 -300 1e+03 0 1e+03 0 1.04e+03 Crystal G4FSMP_massGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.112 -294 978 0.00303 0 0 0 WorldPhysical initStep + 1 -0.0193 -294 978 0 0.00303 0.305 0.305 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.0593 -149 497 0.00222 0 0 0 DriftChamberPhysical initStep + 1 0.189 -148 497 0 0.00222 1.05 1.05 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.000607 -4.31 14.4 0.00119 0 0 0 WorldPhysical initStep + 1 -0.0019 -4.34 14.4 0 0.00119 0.0735 0.0735 WorldPhysical eIoni +>>> Event 4 + 8 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9999247320922051 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) number of event = 5 @@ -1248,43 +1489,40 @@ number of event = 5 Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.0101 -34 56.7 1e+03 0.0136 66.1 66.1 WorldPhysical eIoni - 2 0.00905 -54.1 90.2 1e+03 0.00994 39.1 105 WorldPhysical eIoni - 3 0.00683 -60 100 1e+03 0.00269 11.4 117 DriftChamberPhysical CoupledTransportation - 4 -0.0858 -290 484 1e+03 0.0161 448 564 DriftChamberPhysical eIoni - 5 -0.198 -540 900 1e+03 0.0199 485 1.05e+03 WorldPhysical CoupledTransportation - 6 -0.212 -600 1e+03 1e+03 0.0259 117 1.17e+03 Crystal CoupledTransportation - 7 -0.212 -600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom + 1 0 -60 100 1e+03 0.032 117 117 DriftChamberPhysical CoupledTransportation + 2 -0.027 -182 303 1e+03 0.00801 236 353 DriftChamberPhysical eIoni + 3 -0.044 -227 378 1e+03 0.00261 88.1 441 DriftChamberPhysical eIoni + 4 -0.152 -540 900 1e+03 0.0226 608 1.05e+03 WorldPhysical CoupledTransportation + 5 -0.165 -598 996 1e+03 0.022 112 1.16e+03 WorldPhysical eIoni + 6 -0.165 -600 1e+03 1e+03 0.00181 4.55 1.17e+03 Crystal CoupledTransportation + 7 -0.165 -600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0858 -290 484 0.00105 0 0 0 DriftChamberPhysical initStep - 1 -0.0922 -290 484 0.00093 0.00012 0.0296 0.0296 DriftChamberPhysical msc - 2 -0.175 -290 484 0 0.00093 0.28 0.309 DriftChamberPhysical eIoni + 0 -0.165 -598 996 0.00216 0 0 0 WorldPhysical initStep + 1 -0.192 -598 996 0 0.00216 0.177 0.177 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00905 -54.1 90.2 0.0129 0 0 0 WorldPhysical initStep - 1 -0.0821 -55.7 89.2 0.00899 0.00393 2.2 2.2 WorldPhysical eIoni - 2 -0.514 -56.5 88.4 0.00465 0.00434 1.63 3.83 WorldPhysical eIoni - 3 -0.766 -56.6 88.3 0 0.00465 0.639 4.47 WorldPhysical eIoni + 0 -0.044 -227 378 0.00197 0 0 0 DriftChamberPhysical initStep + 1 0.508 -227 378 0 0.00197 0.86 0.86 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0101 -34 56.7 0.0044 0 0 0 WorldPhysical initStep - 1 0.101 -33.8 56.9 0 0.0044 0.579 0.579 WorldPhysical eIoni + 0 -0.027 -182 303 0.00184 0 0 0 DriftChamberPhysical initStep + 1 -0.107 -182 302 0 0.00184 0.772 0.772 DriftChamberPhysical eIoni >>> Event 0 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9998935297155903 (GeV) + Total energy deposition in EM calorimeter crytals : 0.999904934670246 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) @@ -1294,84 +1532,31 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 -60 100 1e+03 0.0227 117 117 DriftChamberPhysical CoupledTransportation - 2 -0.111 -540 900 1e+03 0.0293 933 1.05e+03 WorldPhysical CoupledTransportation - 3 -0.127 -570 950 1e+03 0.0106 58.1 1.11e+03 WorldPhysical eIoni - 4 -0.134 -600 1e+03 1e+03 0.0106 58.6 1.17e+03 Crystal CoupledTransportation - 5 -0.134 -600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.127 -570 950 0.00119 0 0 0 WorldPhysical initStep - 1 -0.142 -570 950 0 0.00119 0.073 0.073 WorldPhysical eIoni ->>> Event 1 - 12 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999255963219885 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 -60 100 1e+03 0.0181 117 117 DriftChamberPhysical CoupledTransportation - 2 -0.0359 -224 374 1e+03 0.0106 320 436 DriftChamberPhysical eIoni - 3 -0.0324 -540 900 1e+03 0.019 613 1.05e+03 WorldPhysical CoupledTransportation - 4 -0.032 -548 913 1e+03 0.00178 15.7 1.07e+03 WorldPhysical eIoni - 5 -0.0311 -600 1e+03 1e+03 0.0137 101 1.17e+03 Crystal CoupledTransportation - 6 -0.0311 -600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom + 1 0 -60 100 1e+03 0.0254 117 117 DriftChamberPhysical CoupledTransportation + 2 0.0536 -540 900 1e+03 0.0302 933 1.05e+03 WorldPhysical CoupledTransportation + 3 0.0567 -573 954 1e+03 0.0184 63.1 1.11e+03 WorldPhysical eIoni + 4 0.0553 -592 986 1e+03 0.00392 37.1 1.15e+03 WorldPhysical eIoni + 5 0.0575 -600 1e+03 1e+03 0.00411 16.4 1.17e+03 Crystal CoupledTransportation + 6 0.0575 -600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.032 -548 913 0.0011 0 0 0 WorldPhysical initStep - 1 -0.0256 -548 913 0 0.0011 0.0662 0.0662 WorldPhysical eIoni + 0 0.0553 -592 986 0.00367 0 0 0 WorldPhysical initStep + 1 -0.0735 -592 986 0 0.00367 0.424 0.424 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0359 -224 374 0.026 0 0 0 DriftChamberPhysical initStep - 1 -1.08 -213 389 0.0233 0.00267 19.5 19.5 DriftChamberPhysical eIoni - 2 0.25 -209 397 0.0198 0.00131 9.13 28.6 DriftChamberPhysical eIoni - 3 -2.63 -206 409 0.0171 0.00274 12.4 41 DriftChamberPhysical eIoni - 4 -3.22 -209 418 0.0153 0.00174 9.84 50.8 DriftChamberPhysical eIoni - 5 -1.9 -212 425 0.0115 0.00388 8.31 59.1 DriftChamberPhysical eIoni - 6 -2.2 -214 430 0.00992 0.00154 5.5 64.6 DriftChamberPhysical eIoni - 7 -4.58 -212 430 0.00735 0.000768 3 67.6 DriftChamberPhysical eIoni - 8 -5.41 -210 433 0.00614 0.00121 3.25 70.9 DriftChamberPhysical eIoni - 9 -6.43 -208 434 0.00465 0.00149 2.72 73.6 DriftChamberPhysical eIoni - 10 -7.19 -207 436 0.00301 0.00164 2.15 75.7 DriftChamberPhysical eIoni - 11 -7.05 -206 436 0 0.00301 1.49 77.2 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -4.58 -212 430 0.00181 0 0 0 DriftChamberPhysical initStep - 1 -4.62 -212 430 0.00173 7.4e-05 0.0775 0.0775 DriftChamberPhysical msc - 2 -4.54 -212 430 0 0.00173 0.703 0.78 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.25 -209 397 0.00217 0 0 0 DriftChamberPhysical initStep - 1 0.357 -209 397 0.00211 5.86e-05 0.109 0.109 DriftChamberPhysical msc - 2 1.01 -209 397 0 0.00211 0.967 1.08 DriftChamberPhysical eIoni ->>> Event 2 - 9 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999909705868702 (GeV) + 0 0.0567 -573 954 0.0014 0 0 0 WorldPhysical initStep + 1 0.0937 -573 954 0 0.0014 0.0927 0.0927 WorldPhysical eIoni +>>> Event 1 + 11 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9999128677591732 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) @@ -1381,66 +1566,113 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 -0.00909 -51.6 86.1 1e+03 0.0206 100 100 WorldPhysical eIoni - 2 -0.0136 -60 100 1e+03 0.00281 16.2 117 DriftChamberPhysical CoupledTransportation - 3 -0.265 -540 900 1e+03 0.0283 933 1.05e+03 WorldPhysical CoupledTransportation - 4 -0.302 -600 1e+03 1e+03 0.0205 117 1.17e+03 Crystal CoupledTransportation - 5 -0.302 -600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.00909 -51.6 86.1 0.00103 0 0 0 WorldPhysical initStep - 1 -0.0308 -51.6 86.1 0 0.00103 0.0601 0.0601 WorldPhysical eIoni ->>> Event 3 - 14 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999267141426049 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 -60 100 1e+03 0.0318 117 117 DriftChamberPhysical CoupledTransportation - 2 0.176 -526 876 1e+03 0.0277 905 1.02e+03 DriftChamberPhysical eIoni - 3 0.18 -540 900 1e+03 0.00066 27.7 1.05e+03 WorldPhysical CoupledTransportation - 4 0.182 -565 941 1e+03 0.00819 48.4 1.1e+03 WorldPhysical eIoni - 5 0.183 -575 958 1e+03 0.00429 19.3 1.12e+03 WorldPhysical eIoni - 6 0.179 -600 1e+03 1e+03 0.0106 48.9 1.17e+03 Crystal CoupledTransportation - 7 0.179 -600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom + 1 0.00942 -32.8 54.6 1e+03 0.0162 63.7 63.7 WorldPhysical eIoni + 2 0.0122 -60 100 1e+03 0.0114 52.9 117 DriftChamberPhysical CoupledTransportation + 3 0.0337 -261 435 1e+03 0.0122 390 507 DriftChamberPhysical eIoni + 4 0.0311 -540 900 1e+03 0.0127 543 1.05e+03 WorldPhysical CoupledTransportation + 5 0.0433 -568 947 1e+03 0.0065 54.6 1.1e+03 WorldPhysical eIoni + 6 0.0555 -600 1e+03 1e+03 0.0124 62 1.17e+03 Crystal CoupledTransportation + 7 0.0555 -600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.183 -575 958 0.00138 0 0 0 WorldPhysical initStep - 1 0.196 -575 958 0 0.00138 0.0904 0.0904 WorldPhysical eIoni + 0 0.0433 -568 947 0.00207 0 0 0 WorldPhysical initStep + 1 0.028 -568 947 0 0.00207 0.164 0.164 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.182 -565 941 0.00103 0 0 0 WorldPhysical initStep - 1 0.159 -565 941 0 0.00103 0.0605 0.0605 WorldPhysical eIoni + 0 0.0337 -261 435 0.0121 0 0 0 DriftChamberPhysical initStep + 1 5.57 -262 435 0.00967 0.00242 5.9 5.9 DriftChamberPhysical eIoni + 2 8.26 -266 435 0.00776 0.00191 4.41 10.3 DriftChamberPhysical eIoni + 3 8.41 -266 435 0.00471 0.000188 0.353 10.7 DriftChamberPhysical eIoni + 4 9.45 -267 433 0.00358 0.00113 2.17 12.8 DriftChamberPhysical eIoni + 5 9.95 -268 432 0 0.00358 1.74 14.6 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 3 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 8.41 -266 435 0.00286 0 0 0 DriftChamberPhysical initStep + 1 8.78 -267 435 0.000794 0.00207 1.42 1.42 DriftChamberPhysical eIoni + 2 8.81 -267 435 0 0.000794 0.226 1.65 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.176 -526 876 0.00131 0 0 0 DriftChamberPhysical initStep - 1 0.199 -526 876 0.0013 1.07e-05 0.0442 0.0442 DriftChamberPhysical msc - 2 0.426 -526 876 0 0.0013 0.451 0.495 DriftChamberPhysical eIoni ->>> Event 4 + 0 0.00942 -32.8 54.6 0.00133 0 0 0 WorldPhysical initStep + 1 -0.0242 -32.8 54.6 0 0.00133 0.0858 0.0858 WorldPhysical eIoni +>>> Event 2 + 10 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9999129993476222 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0 -60 100 1e+03 0.0277 117 117 DriftChamberPhysical CoupledTransportation + 2 0.00579 -103 172 1e+03 0.00199 84 201 DriftChamberPhysical eIoni + 3 0.135 -433 722 1e+03 0.0179 642 842 DriftChamberPhysical eIoni + 4 0.155 -540 900 1e+03 0.00679 207 1.05e+03 WorldPhysical CoupledTransportation + 5 0.155 -542 903 1e+03 0.00213 3.2 1.05e+03 WorldPhysical eIoni + 6 0.158 -600 1e+03 1e+03 0.0232 113 1.17e+03 Crystal CoupledTransportation + 7 0.158 -600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.155 -542 903 0.00123 0 0 0 WorldPhysical initStep + 1 0.185 -542 903 0 0.00123 0.0764 0.0764 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.135 -433 722 0.00133 0 0 0 DriftChamberPhysical initStep + 1 0.398 -433 722 0 0.00133 0.467 0.467 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.00579 -103 172 0.00367 0 0 0 DriftChamberPhysical initStep + 1 -1.64 -103 172 0.00103 0.00264 1.77 1.77 DriftChamberPhysical eIoni + 2 -1.8 -104 172 0 0.00103 0.32 2.09 DriftChamberPhysical eIoni +>>> Event 3 9 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.9999131222312778 (GeV) + Total energy deposition in EM calorimeter crytals : 0.999914118669137 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0 -60 100 1e+03 0.028 117 117 DriftChamberPhysical CoupledTransportation + 2 0.164 -540 900 1e+03 0.0295 933 1.05e+03 WorldPhysical CoupledTransportation + 3 0.187 -600 1e+03 1e+03 0.0238 117 1.17e+03 Crystal CoupledTransportation + 4 0.187 -600 1e+03 0 1e+03 0 1.17e+03 Crystal G4FSMP_massGeom +>>> Event 4 + 14 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.9999187147245469 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) number of event = 5 @@ -1452,1630 +1684,70 @@ number of event = 5 Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.00287 15.9 26.5 1e+03 0.00423 30.9 30.9 WorldPhysical hIoni - 2 -0.0124 60 100 1e+03 0.0132 85.7 117 DriftChamberPhysical CoupledTransportation - 3 -0.00984 146 244 1e+03 0.00409 168 284 DriftChamberPhysical hIoni - 4 -0.0215 263 438 1e+03 0.00566 227 511 DriftChamberPhysical hIoni - 5 -0.0331 540 900 1e+03 0.0127 538 1.05e+03 WorldPhysical CoupledTransportation - 6 -0.0361 563 938 1e+03 0.0085 44.2 1.09e+03 WorldPhysical hIoni - 7 -0.0359 570 950 1e+03 0.00495 14.5 1.11e+03 WorldPhysical hIoni - 8 -0.038 597 994 1e+03 0.00947 51.4 1.16e+03 WorldPhysical hIoni - 9 -0.0389 600 1e+03 1e+03 0.000782 6.43 1.17e+03 Crystal CoupledTransportation - 10 -0.0436 625 1.04e+03 974 24.2 48.2 1.21e+03 Crystal hIoni - 11 -0.452 633 1.05e+03 964 7.6 16 1.23e+03 Crystal hIoni - 12 -0.745 638 1.06e+03 959 4.08 8.12 1.24e+03 Crystal hIoni - 13 -0.997 647 1.08e+03 947 9.98 18.3 1.26e+03 Crystal hIoni - 14 -1.12 650 1.08e+03 945 2.31 4.88 1.26e+03 Crystal CoupledTransportation - 15 -1.27 657 1.09e+03 937 6.7 13 1.27e+03 Crystal hIoni - 16 -1.43 676 1.12e+03 917 19.1 36.6 1.31e+03 Crystal hIoni - 17 -1.87 696 1.15e+03 897 18.7 37.4 1.35e+03 Crystal hIoni - 18 -1.84 699 1.16e+03 892 2.78 4.67 1.35e+03 Crystal hIoni - 19 -1.83 700 1.16e+03 891 1.14 2.28 1.36e+03 Crystal CoupledTransportation - 20 -1.04 728 1.2e+03 854 28.1 51.4 1.41e+03 Crystal hIoni - 21 -1.66 750 1.24e+03 833 20.4 40.8 1.45e+03 Crystal CoupledTransportation - 22 -1.87 752 1.24e+03 830 2.16 4.17 1.45e+03 Crystal hIoni - 23 -3.04 762 1.26e+03 819 9.95 19.9 1.47e+03 Crystal hIoni - 24 -3.17 764 1.26e+03 817 1.32 2.82 1.47e+03 Crystal hIoni - 25 -4.27 774 1.28e+03 805 9.66 18.7 1.49e+03 Crystal hIoni - 26 -6.05 787 1.3e+03 790 13.5 26.4 1.52e+03 Crystal hIoni - 27 -6.28 789 1.3e+03 784 1.83 3.8 1.52e+03 Crystal hIoni - 28 -7.78 800 1.32e+03 772 12.2 22.3 1.55e+03 Crystal CoupledTransportation - 29 -9.86 821 1.36e+03 750 21 41.4 1.59e+03 Crystal hIoni - 30 -9.87 821 1.36e+03 749 0.116 0.291 1.59e+03 Crystal hIoni - 31 -9.98 822 1.36e+03 747 0.881 2.01 1.59e+03 Crystal hIoni - 32 -10.6 827 1.37e+03 742 4.2 9.12 1.6e+03 Crystal hIoni - 33 -10.8 829 1.37e+03 720 2.75 4.86 1.6e+03 Crystal hIoni - 34 -11.7 842 1.39e+03 708 11.5 24.8 1.63e+03 Crystal hIoni - 35 -11.9 847 1.4e+03 704 4.12 8.18 1.64e+03 WorldPhysical CoupledTransportation - 36 -12.3 853 1.41e+03 704 0.000965 12.6 1.65e+03 WorldPhysical hIoni - 37 -14.2 887 1.46e+03 704 0.00669 61.4 1.71e+03 WorldPhysical hIoni - 38 -15.6 911 1.5e+03 704 0.00601 44.9 1.76e+03 HadCaloPhysical CoupledTransportation - 39 -17.4 943 1.55e+03 704 0.00783 59.5 1.81e+03 Tower CoupledTransportation - 40 -17.8 950 1.56e+03 690 13.7 13 1.83e+03 Tower CoupledTransportation - 41 -21.7 1.01e+03 1.65e+03 555 135 112 1.94e+03 Tower hIoni - 42 -27.1 1.05e+03 1.71e+03 458 98 68.9 2.01e+03 Tower CoupledTransportation - 43 -29 1.08e+03 1.77e+03 369 88.4 71.5 2.08e+03 Tower hIoni - 44 -29.1 1.11e+03 1.82e+03 308 60.8 56.2 2.14e+03 Tower hIoni - 45 -31.6 1.13e+03 1.87e+03 243 64.9 45.7 2.18e+03 Tower hIoni - 46 -34.1 1.14e+03 1.9e+03 202 41.9 34.5 2.22e+03 Tower hIoni - 47 -34 1.15e+03 1.91e+03 184 18.1 16.6 2.23e+03 HadCaloPhysical CoupledTransportation - 48 -23.7 1.25e+03 2.15e+03 183 0.0392 263 2.5e+03 WorldPhysical CoupledTransportation - 49 -22 1.27e+03 2.19e+03 183 0.00757 43.8 2.54e+03 WorldPhysical hIoni - 50 -19.5 1.29e+03 2.26e+03 183 0.00987 66.6 2.61e+03 WorldPhysical hIoni - 51 -10.3 1.38e+03 2.47e+03 183 0.0372 231 2.84e+03 WorldPhysical hIoni - 52 -8.4 1.4e+03 2.52e+03 183 0.00595 49.6 2.89e+03 WorldPhysical hIoni - 53 -6.26 1.42e+03 2.57e+03 183 0.0133 56 2.94e+03 WorldPhysical hIoni - 54 -6.1 1.42e+03 2.57e+03 183 0.000575 4.08 2.95e+03 WorldPhysical hIoni - 55 -5.18 1.43e+03 2.59e+03 183 0.00306 24.2 2.97e+03 WorldPhysical hIoni - 56 -4.69 1.44e+03 2.61e+03 183 0.00215 12.9 2.98e+03 WorldPhysical hIoni - 57 -4.55 1.44e+03 2.61e+03 183 0.000618 3.78 2.99e+03 WorldPhysical hIoni - 58 -2.62 1.46e+03 2.66e+03 183 0.00861 50.9 3.04e+03 WorldPhysical hIoni - 59 1.11 1.49e+03 2.75e+03 183 0.0209 98 3.14e+03 WorldPhysical hIoni - 60 1.74 1.5e+03 2.76e+03 183 0.00218 16.6 3.15e+03 WorldPhysical hIoni - 61 4.91 1.53e+03 2.84e+03 183 0.0142 81.4 3.23e+03 WorldPhysical hIoni - 62 5.21 1.54e+03 2.84e+03 183 0.00124 7.78 3.24e+03 WorldPhysical hIoni - 63 11 1.59e+03 2.98e+03 183 0.0193 146 3.39e+03 WorldPhysical hIoni - 64 13.5 1.61e+03 3.04e+03 183 0.0165 62.1 3.45e+03 WorldPhysical hIoni - 65 15.1 1.63e+03 3.07e+03 183 0.00612 39.8 3.49e+03 WorldPhysical hIoni - 66 16.1 1.64e+03 3.1e+03 183 0.00961 26.1 3.52e+03 WorldPhysical hIoni - 67 17.1 1.65e+03 3.12e+03 183 0.00332 24.2 3.54e+03 WorldPhysical hIoni - 68 21 1.69e+03 3.21e+03 183 0.0132 100 3.64e+03 WorldPhysical hIoni - 69 25.3 1.73e+03 3.31e+03 183 0.0142 109 3.75e+03 WorldPhysical hIoni - 70 27.2 1.75e+03 3.36e+03 183 0.0126 48.5 3.8e+03 WorldPhysical hIoni - 71 29.9 1.77e+03 3.42e+03 183 0.00796 68.9 3.87e+03 WorldPhysical hIoni - 72 30 1.77e+03 3.42e+03 183 0.000855 2.09 3.87e+03 WorldPhysical hIoni - 73 36.5 1.84e+03 3.58e+03 183 0.0261 171 4.04e+03 WorldPhysical hIoni - 74 39.1 1.86e+03 3.64e+03 183 0.00972 66.8 4.11e+03 WorldPhysical hIoni - 75 40.5 1.88e+03 3.68e+03 183 0.00758 36.4 4.14e+03 WorldPhysical hIoni - 76 45.3 1.93e+03 3.79e+03 183 0.0178 124 4.27e+03 WorldPhysical hIoni - 77 49.8 1.97e+03 3.9e+03 183 0.0157 117 4.38e+03 WorldPhysical hIoni - 78 52.6 2e+03 3.96e+03 183 0.0116 71.6 4.46e+03 WorldPhysical hIoni - 79 53.1 2e+03 3.98e+03 183 0.00183 12.7 4.47e+03 WorldPhysical hIoni - 80 54.1 2.01e+03 4e+03 183 0.00529 25.6 4.49e+03 OutOfWorld CoupledTransportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 58, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 53.1 2e+03 3.98e+03 0.00233 0 0 0 WorldPhysical initStep - 1 53 2e+03 3.98e+03 0 0.00233 0.199 0.199 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 57, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 52.6 2e+03 3.96e+03 0.0204 0 0 0 WorldPhysical initStep - 1 50.4 2e+03 3.97e+03 0.0159 0.00449 3.35 3.35 WorldPhysical eIoni - 2 49.9 2e+03 3.97e+03 0.0102 0.00463 2.45 5.81 WorldPhysical eIoni - 3 49.1 1.99e+03 3.97e+03 0.00534 0.00487 1.81 7.62 WorldPhysical eIoni - 4 49.1 1.99e+03 3.97e+03 0 0.00534 0.816 8.43 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 59, Parent ID = 57 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 49.9 2e+03 3.97e+03 0.00104 0 0 0 WorldPhysical initStep - 1 49.8 2e+03 3.97e+03 0 0.00104 0.0608 0.0608 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 56, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 49.8 1.97e+03 3.9e+03 0.00116 0 0 0 WorldPhysical initStep - 1 49.8 1.97e+03 3.9e+03 0 0.00116 0.0711 0.0711 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 55, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 45.3 1.93e+03 3.79e+03 0.00434 0 0 0 WorldPhysical initStep - 1 45.1 1.93e+03 3.79e+03 0 0.00434 0.566 0.566 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 54, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 40.5 1.88e+03 3.68e+03 0.00115 0 0 0 WorldPhysical initStep - 1 40.5 1.88e+03 3.68e+03 0 0.00115 0.07 0.07 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 53, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 39.1 1.86e+03 3.64e+03 0.00171 0 0 0 WorldPhysical initStep - 1 39 1.86e+03 3.64e+03 0 0.00171 0.124 0.124 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 52, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 36.5 1.84e+03 3.58e+03 0.00139 0 0 0 WorldPhysical initStep - 1 36.4 1.84e+03 3.58e+03 0 0.00139 0.0916 0.0916 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 51, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 30 1.77e+03 3.42e+03 0.00111 0 0 0 WorldPhysical initStep - 1 30 1.77e+03 3.42e+03 0 0.00111 0.0671 0.0671 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 50, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 29.9 1.77e+03 3.42e+03 0.00153 0 0 0 WorldPhysical initStep - 1 30 1.77e+03 3.42e+03 0 0.00153 0.105 0.105 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 49, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 27.2 1.75e+03 3.36e+03 0.00115 0 0 0 WorldPhysical initStep - 1 27.2 1.75e+03 3.36e+03 0 0.00115 0.07 0.07 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 48, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 25.3 1.73e+03 3.31e+03 0.00315 0 0 0 WorldPhysical initStep - 1 25.4 1.73e+03 3.31e+03 0 0.00315 0.325 0.325 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 47, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 21 1.69e+03 3.21e+03 0.00635 0 0 0 WorldPhysical initStep - 1 20.4 1.69e+03 3.21e+03 0.000776 0.00558 1.09 1.09 WorldPhysical eIoni - 2 20.4 1.69e+03 3.21e+03 0 0.000776 0.0421 1.14 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 46, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 17.1 1.65e+03 3.12e+03 0.00114 0 0 0 WorldPhysical initStep - 1 17.1 1.65e+03 3.12e+03 0 0.00114 0.0696 0.0696 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 45, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 16.1 1.64e+03 3.1e+03 0.00326 0 0 0 WorldPhysical initStep - 1 16.1 1.64e+03 3.1e+03 0.00055 0.00271 0.301 0.301 WorldPhysical eIoni - 2 16.1 1.64e+03 3.1e+03 0 0.00055 0.0287 0.33 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 44, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 15.1 1.63e+03 3.07e+03 0.00632 0 0 0 WorldPhysical initStep - 1 15.1 1.63e+03 3.07e+03 0 0.00632 1.08 1.08 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 43, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 13.5 1.61e+03 3.04e+03 0.00133 0 0 0 WorldPhysical initStep - 1 13.5 1.61e+03 3.04e+03 0 0.00133 0.0855 0.0855 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 42, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 5.21 1.54e+03 2.84e+03 0.00789 0 0 0 WorldPhysical initStep - 1 4.38 1.54e+03 2.84e+03 0.00294 0.00495 1.43 1.43 WorldPhysical eIoni - 2 4.33 1.53e+03 2.84e+03 0 0.00294 0.29 1.72 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 41, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 4.91 1.53e+03 2.84e+03 0.00126 0 0 0 WorldPhysical initStep - 1 4.93 1.53e+03 2.84e+03 0 0.00126 0.0793 0.0793 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 40, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 1.74 1.5e+03 2.76e+03 0.00102 0 0 0 WorldPhysical initStep - 1 1.72 1.5e+03 2.76e+03 0 0.00102 0.0591 0.0591 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 39, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 1.11 1.49e+03 2.75e+03 0.00221 0 0 0 WorldPhysical initStep - 1 1.04 1.49e+03 2.75e+03 0 0.00221 0.183 0.183 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 38, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -2.62 1.46e+03 2.66e+03 0.00147 0 0 0 WorldPhysical initStep - 1 -2.62 1.46e+03 2.66e+03 0 0.00147 0.0987 0.0987 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 37, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -4.55 1.44e+03 2.61e+03 0.0016 0 0 0 WorldPhysical initStep - 1 -4.58 1.44e+03 2.61e+03 0 0.0016 0.111 0.111 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 36, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -4.69 1.44e+03 2.61e+03 0.00184 0 0 0 WorldPhysical initStep - 1 -4.75 1.44e+03 2.61e+03 0 0.00184 0.138 0.138 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 35, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -5.18 1.43e+03 2.59e+03 0.011 0 0 0 WorldPhysical initStep - 1 -4.8 1.43e+03 2.59e+03 0.00689 0.00409 1.93 1.93 WorldPhysical eIoni - 2 -4.87 1.43e+03 2.59e+03 0.00182 0.00507 1.23 3.16 WorldPhysical eIoni - 3 -4.9 1.43e+03 2.59e+03 0 0.00182 0.135 3.3 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 34, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -6.26 1.42e+03 2.57e+03 0.00264 0 0 0 WorldPhysical initStep - 1 -6.18 1.42e+03 2.57e+03 0 0.00264 0.244 0.244 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 33, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -8.4 1.4e+03 2.52e+03 0.00213 0 0 0 WorldPhysical initStep - 1 -8.39 1.4e+03 2.52e+03 0 0.00213 0.173 0.173 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 32, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -10.3 1.38e+03 2.47e+03 0.00483 0 0 0 WorldPhysical initStep - 1 -10.2 1.38e+03 2.47e+03 0 0.00483 0.679 0.679 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 31, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -22 1.27e+03 2.19e+03 0.00154 0 0 0 WorldPhysical initStep - 1 -22 1.27e+03 2.19e+03 0.00153 9.9e-06 0.00292 0.00292 WorldPhysical msc - 2 -22 1.27e+03 2.19e+03 0 0.00153 0.104 0.107 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 30, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -14.2 887 1.46e+03 0.00158 0 0 0 WorldPhysical initStep - 1 -14.2 887 1.46e+03 0.00138 0.000195 0.0031 0.0031 WorldPhysical msc - 2 -14.2 887 1.46e+03 0 0.00138 0.0905 0.0936 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 29, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -12.3 853 1.41e+03 0.0011 0 0 0 WorldPhysical initStep - 1 -12.3 853 1.41e+03 0.00109 1.61e-05 0.00165 0.00165 WorldPhysical msc - 2 -12.3 853 1.41e+03 0 0.00109 0.0648 0.0665 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 28, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -11.7 842 1.39e+03 0.899 0 0 0 Crystal initStep - 1 -11.6 842 1.39e+03 0.89 0.00871 0.0289 0.0289 Crystal msc - 2 -11.7 842 1.39e+03 0.637 0.0983 0.224 0.253 Crystal eBrem - 3 -11.8 842 1.39e+03 0 0.637 0.937 1.19 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 60, Parent ID = 28 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -11.7 842 1.39e+03 0.155 0 0 0 Crystal initStep - 1 -12.8 842 1.39e+03 0 0.0332 1.15 1.15 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 61, Parent ID = 60 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -12.8 842 1.39e+03 0.121 0 0 0 Crystal initStep - 1 -12.8 842 1.39e+03 0.121 0.000459 0.00163 0.00163 Crystal msc - 2 -12.8 842 1.39e+03 0 0.121 0.0808 0.0824 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 27, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -10.8 829 1.37e+03 19 0 0 0 Crystal initStep - 1 -10.8 829 1.37e+03 18.8 0.0916 0.197 0.197 Crystal eBrem - 2 -10.9 830 1.37e+03 17.9 0.192 0.359 0.556 Crystal eIoni - 3 -11.3 830 1.37e+03 15.9 1.65 2.34 2.9 Crystal eBrem - 4 -11.5 830 1.38e+03 14.9 0.909 1.73 4.62 Crystal eBrem - 5 -12.9 830 1.38e+03 12.6 1.3 2.81 7.43 Crystal eIoni - 6 -13 830 1.38e+03 11.5 0.0315 0.0663 7.5 Crystal eIoni - 7 -13.6 831 1.38e+03 11.1 0.313 0.737 8.23 Crystal eBrem - 8 -14.3 830 1.38e+03 10.5 0.468 0.891 9.12 Crystal eBrem - 9 -15.4 831 1.38e+03 9.79 0.635 1.36 10.5 Crystal eBrem - 10 -16.5 830 1.38e+03 8.7 0.993 1.57 12 Crystal eBrem - 11 -16.6 830 1.38e+03 8.33 0.0789 0.155 12.2 Crystal eBrem - 12 -18.3 830 1.38e+03 6.8 1.38 2.35 14.5 Crystal eBrem - 13 -19.3 830 1.38e+03 4.27 0.665 1.2 15.7 Crystal eBrem - 14 -19.9 830 1.38e+03 2.9 0.442 0.801 16.5 Crystal eBrem - 15 -20.2 830 1.38e+03 2.72 0.115 0.306 16.9 Crystal eBrem - 16 -20.7 830 1.38e+03 1.9 0.25 0.667 17.5 Crystal eBrem - 17 -20.9 830 1.38e+03 0.939 0.957 2.04 19.6 Crystal eIoni - 18 -21 829 1.38e+03 0.271 0.668 1.38 20.9 Crystal eIoni - 19 -20.9 830 1.38e+03 0.0743 0.197 0.157 21.1 Crystal eBrem - 20 -20.9 830 1.38e+03 0 0.0743 0.0364 21.1 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 77, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -20.7 830 1.38e+03 0.57 0 0 0 Crystal initStep - 1 -22 830 1.38e+03 0.291 0 1.65 1.65 Crystal compt - 2 -24.7 830 1.38e+03 0 0.0332 4.01 5.66 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 79, Parent ID = 77 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -24.7 830 1.38e+03 0.258 0 0 0 Crystal initStep - 1 -24.7 830 1.38e+03 0.255 0.00245 0.00528 0.00528 Crystal msc - 2 -24.7 830 1.38e+03 0 0.255 0.26 0.265 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 78, Parent ID = 77 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -22 830 1.38e+03 0.279 0 0 0 Crystal initStep - 1 -22 830 1.38e+03 0.277 0.00188 0.00594 0.00594 Crystal msc - 2 -22.1 830 1.38e+03 0 0.277 0.294 0.3 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 76, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -20.2 830 1.38e+03 0.0694 0 0 0 Crystal initStep - 1 -20.8 830 1.38e+03 0 0.0332 0.546 0.546 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 80, Parent ID = 76 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -20.8 830 1.38e+03 0.0362 0 0 0 Crystal initStep - 1 -20.8 830 1.38e+03 0.0362 2.26e-05 0.000219 0.000219 Crystal msc - 2 -20.8 830 1.38e+03 0 0.0362 0.011 0.0112 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 75, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -19.9 830 1.38e+03 0.933 0 0 0 Crystal initStep - 1 -50 822 1.38e+03 0.933 0 31.2 31.2 Crystal CoupledTransportation - 2 -100 809 1.39e+03 0.933 0 51.9 83.1 Crystal CoupledTransportation - 3 -107 807 1.39e+03 0.335 0 6.76 89.9 Crystal compt - 4 -108 805 1.38e+03 0 0.0332 15.5 105 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 82, Parent ID = 75 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -108 805 1.38e+03 0.302 0 0 0 Crystal initStep - 1 -108 805 1.38e+03 0.299 0.00318 0.00667 0.00667 Crystal msc - 2 -108 805 1.38e+03 0 0.299 0.329 0.335 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 81, Parent ID = 75 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -107 807 1.39e+03 0.598 0 0 0 Crystal initStep - 1 -107 807 1.39e+03 0.589 0.00918 0.0173 0.0173 Crystal msc - 2 -107 807 1.39e+03 0 0.589 0.847 0.864 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 74, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -19.3 830 1.38e+03 1.86 0 0 0 Crystal initStep - 1 -50 823 1.38e+03 1.86 0 31.5 31.5 Crystal CoupledTransportation - 2 -64.3 820 1.38e+03 0.303 0 14.7 46.2 Crystal compt - 3 -64.1 819 1.38e+03 0.229 0 0.499 46.7 Crystal compt - 4 -64.2 821 1.38e+03 0 0.0332 3.8 50.5 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 85, Parent ID = 74 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -64.2 821 1.38e+03 0.196 0 0 0 Crystal initStep - 1 -64.2 821 1.38e+03 0.194 0.00168 0.00346 0.00346 Crystal msc - 2 -64.2 821 1.38e+03 0 0.194 0.171 0.174 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 84, Parent ID = 74 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -64.1 819 1.38e+03 0.0747 0 0 0 Crystal initStep - 1 -64.1 819 1.38e+03 0.0725 0.00217 0.000733 0.000733 Crystal msc - 2 -64.1 819 1.38e+03 0 0.0725 0.0349 0.0357 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 83, Parent ID = 74 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -64.3 820 1.38e+03 1.56 0 0 0 Crystal initStep - 1 -64.4 820 1.38e+03 1.52 0.0318 0.0545 0.0545 Crystal msc - 2 -64.9 820 1.38e+03 0.55 0.974 1.83 1.89 Crystal eIoni - 3 -64.9 820 1.38e+03 0 0.55 0.773 2.66 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 73, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -18.3 830 1.38e+03 0.156 0 0 0 Crystal initStep - 1 -20.4 830 1.38e+03 0 0.0332 2.2 2.2 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 86, Parent ID = 73 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -20.4 830 1.38e+03 0.123 0 0 0 Crystal initStep - 1 -20.4 830 1.38e+03 0.121 0.00211 0.00165 0.00165 Crystal msc - 2 -20.4 830 1.38e+03 0 0.121 0.0804 0.082 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 72, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -16.6 830 1.38e+03 0.286 0 0 0 Crystal initStep - 1 -20.4 830 1.38e+03 0.225 0 4.67 4.67 Crystal compt - 2 -23.3 830 1.38e+03 0 0.0332 3.24 7.91 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 88, Parent ID = 72 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -23.3 830 1.38e+03 0.192 0 0 0 Crystal initStep - 1 -23.3 830 1.38e+03 0.189 0.00268 0.00335 0.00335 Crystal msc - 2 -23.3 830 1.38e+03 0 0.189 0.164 0.168 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 87, Parent ID = 72 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -20.4 830 1.38e+03 0.0612 0 0 0 Crystal initStep - 1 -20.4 830 1.38e+03 0.06 0.00117 0.000526 0.000526 Crystal msc - 2 -20.4 830 1.38e+03 0 0.06 0.0255 0.026 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 71, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -16.5 830 1.38e+03 0.102 0 0 0 Crystal initStep - 1 -17.2 830 1.38e+03 0.0936 0 0.948 0.948 Crystal compt - 2 -17.6 830 1.38e+03 0 0.0332 1.16 2.11 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 90, Parent ID = 71 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -17.6 830 1.38e+03 0.0605 0 0 0 Crystal initStep - 1 -17.6 830 1.38e+03 0.0603 0.000111 0.000516 0.000516 Crystal msc - 2 -17.6 830 1.38e+03 0 0.0603 0.0257 0.0262 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 89, Parent ID = 71 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -17.2 830 1.38e+03 0.00811 0 0 0 Crystal initStep - 1 -17.2 830 1.38e+03 0.00811 0 1.92e-05 1.92e-05 Crystal msc - 2 -17.2 830 1.38e+03 0 0.00811 0.000959 0.000978 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 70, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -15.4 831 1.38e+03 0.115 0 0 0 Crystal initStep - 1 -16.2 830 1.38e+03 0.111 0 0.879 0.879 Crystal compt - 2 -16.7 830 1.38e+03 0 0.0332 0.54 1.42 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 92, Parent ID = 70 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -16.7 830 1.38e+03 0.0775 0 0 0 Crystal initStep - 1 -16.7 830 1.38e+03 0.0775 8.05e-05 0.000779 0.000779 Crystal msc - 2 -16.7 830 1.38e+03 0 0.0775 0.0389 0.0396 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 91, Parent ID = 70 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -16.2 830 1.38e+03 0.0044 0 0 0 Crystal initStep - 1 -16.2 830 1.38e+03 0.00439 1.57e-05 7.66e-06 7.66e-06 Crystal msc - 2 -16.2 830 1.38e+03 0 0.00439 0.000381 0.000389 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 69, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -14.3 830 1.38e+03 0.106 0 0 0 Crystal initStep - 1 -14.4 830 1.38e+03 0 0.0332 0.24 0.24 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 93, Parent ID = 69 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -14.4 830 1.38e+03 0.0728 0 0 0 Crystal initStep - 1 -14.4 830 1.38e+03 0.0722 0.000621 0.000705 0.000705 Crystal msc - 2 -14.4 830 1.38e+03 0 0.0722 0.0347 0.0355 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 68, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -13.6 831 1.38e+03 0.0509 0 0 0 Crystal initStep - 1 -13.6 831 1.38e+03 0 0.0332 0.0217 0.0217 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 94, Parent ID = 68 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -13.6 831 1.38e+03 0.0177 0 0 0 Crystal initStep - 1 -13.6 831 1.38e+03 0.0171 0.000634 6.7e-05 6.7e-05 Crystal msc - 2 -13.6 831 1.38e+03 0 0.0171 0.00315 0.00322 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 67, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -13 830 1.38e+03 1.1 0 0 0 Crystal initStep - 1 -13 830 1.38e+03 1.09 0.00871 0.0366 0.0366 Crystal msc - 2 -12.8 831 1.38e+03 0.539 0.462 1.07 1.11 Crystal eBrem - 3 -12.8 831 1.38e+03 0 0.539 0.753 1.86 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 95, Parent ID = 67 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -12.8 831 1.38e+03 0.0873 0 0 0 Crystal initStep - 1 -13.2 831 1.38e+03 0 0.0332 0.421 0.421 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 96, Parent ID = 95 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -13.2 831 1.38e+03 0.0542 0 0 0 Crystal initStep - 1 -13.2 831 1.38e+03 0.0539 0.000276 0.00043 0.00043 Crystal msc - 2 -13.2 831 1.38e+03 0 0.0539 0.0213 0.0218 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 66, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -12.9 830 1.38e+03 0.949 0 0 0 Crystal initStep - 1 -12.9 830 1.38e+03 0.934 0.0149 0.0308 0.0308 Crystal msc - 2 -12.7 831 1.38e+03 0.53 0.354 0.708 0.739 Crystal eBrem - 3 -12.7 831 1.38e+03 0 0.53 0.735 1.47 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 97, Parent ID = 66 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -12.7 831 1.38e+03 0.0497 0 0 0 Crystal initStep - 1 -12.7 831 1.38e+03 0 0.0332 0.00942 0.00942 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 98, Parent ID = 97 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -12.7 831 1.38e+03 0.0166 0 0 0 Crystal initStep - 1 -12.7 831 1.38e+03 0.0157 0.000882 6e-05 6e-05 Crystal msc - 2 -12.7 831 1.38e+03 0 0.0157 0.00274 0.0028 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 65, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -11.5 830 1.38e+03 0.0879 0 0 0 Crystal initStep - 1 -11.5 830 1.38e+03 0 0.0332 0.075 0.075 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 99, Parent ID = 65 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -11.5 830 1.38e+03 0.0548 0 0 0 Crystal initStep - 1 -11.5 830 1.38e+03 0.0546 0.0002 0.000438 0.000438 Crystal msc - 2 -11.5 830 1.38e+03 0 0.0546 0.0218 0.0222 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 64, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -11.3 830 1.37e+03 0.39 0 0 0 Crystal initStep - 1 -14.6 830 1.39e+03 0.332 0 12.4 12.4 Crystal compt - 2 -15.3 833 1.39e+03 0.284 0 3.48 15.9 Crystal compt - 3 -32.6 839 1.4e+03 0.284 0 21.4 37.3 WorldPhysical CoupledTransportation - 4 -191 900 1.5e+03 0.284 0 197 234 HadCaloPhysical CoupledTransportation - 5 -270 931 1.55e+03 0.284 0 98.6 333 Tower CoupledTransportation - 6 -274 932 1.55e+03 0 0.00711 4.76 338 Tower phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 102, Parent ID = 64 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -274 932 1.55e+03 0.277 0 0 0 Tower initStep - 1 -274 932 1.55e+03 0.273 0.00426 0.00276 0.00276 Tower msc - 2 -274 932 1.55e+03 0 0.273 0.135 0.137 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 101, Parent ID = 64 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -15.3 833 1.39e+03 0.048 0 0 0 Crystal initStep - 1 -15.3 833 1.39e+03 0.0479 7.97e-05 0.00035 0.00035 Crystal msc - 2 -15.3 833 1.39e+03 0 0.0479 0.0175 0.0178 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 100, Parent ID = 64 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -14.6 830 1.39e+03 0.0579 0 0 0 Crystal initStep - 1 -14.6 830 1.39e+03 0.0578 2.38e-05 0.00048 0.00048 Crystal msc - 2 -14.6 830 1.39e+03 0 0.0578 0.024 0.0245 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 63, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -10.9 830 1.37e+03 0.715 0 0 0 Crystal initStep - 1 -10.9 830 1.37e+03 0.707 0.00799 0.0217 0.0217 Crystal msc - 2 -10.8 830 1.37e+03 0.597 0.061 0.149 0.171 Crystal eBrem - 3 -10.8 830 1.37e+03 0 0.597 0.861 1.03 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 103, Parent ID = 63 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -10.8 830 1.37e+03 0.0489 0 0 0 Crystal initStep - 1 -10.8 830 1.37e+03 0 0.0332 0.0611 0.0611 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 104, Parent ID = 103 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -10.8 830 1.37e+03 0.0158 0 0 0 Crystal initStep - 1 -10.8 830 1.37e+03 0.0157 1.6e-05 5.5e-05 5.5e-05 Crystal msc - 2 -10.8 830 1.37e+03 0 0.0157 0.00275 0.0028 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 62, Parent ID = 27 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -10.8 829 1.37e+03 0.0889 0 0 0 Crystal initStep - 1 -10.9 830 1.37e+03 0 0.0332 0.193 0.193 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 105, Parent ID = 62 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -10.9 830 1.37e+03 0.0558 0 0 0 Crystal initStep - 1 -10.9 830 1.37e+03 0.0552 0.000553 0.000452 0.000452 Crystal msc - 2 -10.9 830 1.37e+03 0 0.0552 0.0222 0.0227 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 26, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -10.6 827 1.37e+03 0.708 0 0 0 Crystal initStep - 1 -10.6 827 1.37e+03 0.695 0.0129 0.0215 0.0215 Crystal msc - 2 -10.6 827 1.37e+03 0.191 0.504 1.05 1.07 Crystal eIoni - 3 -10.7 827 1.37e+03 0 0.191 0.167 1.24 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 25, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -9.98 822 1.36e+03 1.07 0 0 0 Crystal initStep - 1 -9.97 822 1.36e+03 1.06 0.0101 0.0353 0.0353 Crystal msc - 2 -9.93 823 1.36e+03 0 1.06 1.49 1.53 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 24, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -9.87 821 1.36e+03 1.1 0 0 0 Crystal initStep - 1 -9.86 821 1.36e+03 1.08 0.0233 0.0368 0.0368 Crystal msc - 2 -10.1 821 1.36e+03 0.328 0.75 1.51 1.55 Crystal eIoni - 3 -10.1 821 1.36e+03 0 0.328 0.377 1.93 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 23, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -9.86 821 1.36e+03 0.83 0 0 0 Crystal initStep - 1 -9.87 821 1.36e+03 0.807 0.023 0.0262 0.0262 Crystal msc - 2 -9.94 821 1.36e+03 0.0911 0.716 1.22 1.25 Crystal eIoni - 3 -9.94 821 1.36e+03 0 0.0911 0.051 1.3 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 22, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -6.28 789 1.3e+03 4.08 0 0 0 Crystal initStep - 1 -6.2 789 1.3e+03 3.89 0.19 0.196 0.196 Crystal msc - 2 -5.14 790 1.3e+03 2.5 1.39 1.55 1.75 Crystal msc - 3 -4.65 791 1.3e+03 1.71 0.793 1.55 3.3 Crystal msc - 4 -3.83 791 1.3e+03 0.753 0.956 1.94 5.24 Crystal eIoni - 5 -3.93 791 1.3e+03 0.123 0.629 1.14 6.38 Crystal eIoni - 6 -3.93 791 1.3e+03 0 0.123 0.0834 6.46 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 21, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -6.05 787 1.3e+03 1.16 0 0 0 Crystal initStep - 1 -6.03 787 1.3e+03 1.15 0.018 0.0392 0.0392 Crystal msc - 2 -6.21 787 1.3e+03 0.428 0.718 1.57 1.61 Crystal eIoni - 3 -6.24 787 1.3e+03 0 0.428 0.549 2.16 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 20, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -4.27 774 1.28e+03 2.53 0 0 0 Crystal initStep - 1 -4.28 774 1.28e+03 2.5 0.0283 0.0927 0.0927 Crystal msc - 2 -3.67 774 1.28e+03 1.99 0.518 1.07 1.16 Crystal msc - 3 -3.64 774 1.28e+03 1.49 0.024 0.0779 1.24 Crystal eBrem - 4 -4.28 774 1.28e+03 0.749 0.743 1.81 3.05 Crystal eIoni - 5 -4.13 774 1.28e+03 0.0332 0.716 1.14 4.19 Crystal eIoni - 6 -4.13 774 1.28e+03 0 0.0332 0.0095 4.2 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 106, Parent ID = 20 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -3.64 774 1.28e+03 0.469 0 0 0 Crystal initStep - 1 -3.97 774 1.28e+03 0.183 0 0.426 0.426 Crystal compt - 2 -1.14 774 1.28e+03 0.133 0 2.84 3.26 Crystal compt - 3 -1.32 775 1.28e+03 0 0.0332 1.4 4.66 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 109, Parent ID = 106 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.32 775 1.28e+03 0.1 0 0 0 Crystal initStep - 1 -1.32 775 1.28e+03 0.1 8.3e-05 0.00118 0.00118 Crystal msc - 2 -1.32 775 1.28e+03 0 0.1 0.0591 0.0603 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 108, Parent ID = 106 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.14 774 1.28e+03 0.0498 0 0 0 Crystal initStep - 1 -1.14 774 1.28e+03 0.0497 0.000103 0.000372 0.000372 Crystal msc - 2 -1.14 774 1.28e+03 0 0.0497 0.0185 0.0189 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 107, Parent ID = 106 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -3.97 774 1.28e+03 0.286 0 0 0 Crystal initStep - 1 -3.97 774 1.28e+03 0.281 0.00472 0.00617 0.00617 Crystal msc - 2 -4 774 1.28e+03 0 0.281 0.301 0.307 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 19, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -3.17 764 1.26e+03 0.737 0 0 0 Crystal initStep - 1 -3.16 764 1.26e+03 0.726 0.0105 0.0226 0.0226 Crystal msc - 2 -2.95 764 1.26e+03 0.212 0.514 1.1 1.12 Crystal eIoni - 3 -2.94 764 1.26e+03 0 0.212 0.197 1.32 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 18, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -3.04 762 1.26e+03 0.775 0 0 0 Crystal initStep - 1 -3.02 762 1.26e+03 0.765 0.00975 0.024 0.024 Crystal msc - 2 -2.81 762 1.26e+03 0.167 0.598 1.16 1.18 Crystal eIoni - 3 -2.8 762 1.26e+03 0 0.167 0.135 1.32 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 17, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.87 752 1.24e+03 1.56 0 0 0 Crystal initStep - 1 -1.84 752 1.24e+03 1.53 0.0269 0.0545 0.0545 Crystal msc - 2 -1.85 752 1.24e+03 1.35 0.183 0.457 0.511 Crystal msc - 3 -1.75 753 1.24e+03 1.14 0.207 0.457 0.968 Crystal msc - 4 -1.71 753 1.24e+03 0.953 0.186 0.457 1.42 Crystal msc - 5 -1.78 753 1.24e+03 0.79 0.163 0.457 1.88 Crystal msc - 6 -1.89 753 1.24e+03 0 0.79 1.2 3.08 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 16, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.04 728 1.2e+03 8.76 0 0 0 Crystal initStep - 1 -1.17 729 1.2e+03 8.33 0.435 0.888 0.888 Crystal msc - 2 -1.19 729 1.21e+03 7.94 0.332 0.675 1.56 Crystal eBrem - 3 -1.52 730 1.21e+03 7.51 0.434 0.888 2.45 Crystal msc - 4 -1.66 730 1.21e+03 7.06 0.446 0.888 3.34 Crystal msc - 5 -1.73 730 1.21e+03 5.54 0.257 0.328 3.67 Crystal eBrem - 6 -1.53 730 1.21e+03 5.2 0.34 0.888 4.55 Crystal msc - 7 -1.36 729 1.2e+03 4.72 0.48 0.888 5.44 Crystal msc - 8 -1.63 729 1.2e+03 4.3 0.423 0.888 6.33 Crystal msc - 9 -2.01 728 1.2e+03 3.84 0.453 0.888 7.22 Crystal msc - 10 -2.18 728 1.2e+03 3.44 0.401 0.888 8.11 Crystal msc - 11 -2.94 728 1.2e+03 2.86 0.586 0.888 9 Crystal msc - 12 -2.97 728 1.2e+03 2.69 0.0152 0.0315 9.03 Crystal eBrem - 13 -3.67 728 1.2e+03 2.24 0.454 0.888 9.91 Crystal msc - 14 -4.05 728 1.2e+03 1.73 0.504 0.888 10.8 Crystal msc - 15 -3.86 728 1.2e+03 1.34 0.394 0.888 11.7 Crystal msc - 16 -4.01 728 1.2e+03 0.749 0.592 1.23 12.9 Crystal eBrem - 17 -4.09 728 1.2e+03 0.171 0.578 1.14 14.1 Crystal eIoni - 18 -4.09 728 1.2e+03 0 0.171 0.141 14.2 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 112, Parent ID = 16 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -2.97 728 1.2e+03 0.149 0 0 0 Crystal initStep - 1 -7.29 726 1.2e+03 0 0.0332 4.67 4.67 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 113, Parent ID = 112 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -7.29 726 1.2e+03 0.116 0 0 0 Crystal initStep - 1 -7.29 726 1.2e+03 0.111 0.00501 0.00151 0.00151 Crystal msc - 2 -7.28 726 1.2e+03 0 0.111 0.0701 0.0716 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 111, Parent ID = 16 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.73 730 1.21e+03 1.26 0 0 0 Crystal initStep - 1 -0.999 735 1.16e+03 0.914 0 50.5 50.5 Crystal compt - 2 -1.33e-15 735 1.15e+03 0.914 0 1.92 52.4 Crystal CoupledTransportation - 3 15.5 743 1.13e+03 0.266 0 29.7 82.1 Crystal compt - 4 17.4 742 1.13e+03 0 0.0332 3.12 85.2 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 116, Parent ID = 111 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 17.4 742 1.13e+03 0.232 0 0 0 Crystal initStep - 1 17.4 742 1.13e+03 0.23 0.00225 0.00452 0.00452 Crystal msc - 2 17.4 742 1.13e+03 0 0.23 0.223 0.227 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 115, Parent ID = 111 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 15.5 743 1.13e+03 0.649 0 0 0 Crystal initStep - 1 15.5 743 1.13e+03 0.634 0.0149 0.0192 0.0192 Crystal msc - 2 15.6 743 1.13e+03 0 0.634 0.93 0.95 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 114, Parent ID = 111 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.999 735 1.16e+03 0.35 0 0 0 Crystal initStep - 1 -1 735 1.16e+03 0.347 0.00253 0.00828 0.00828 Crystal msc - 2 -1.04 735 1.16e+03 0 0.347 0.41 0.418 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 110, Parent ID = 16 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.19 729 1.21e+03 0.0561 0 0 0 Crystal initStep - 1 -1.18 729 1.21e+03 0 0.0332 0.061 0.061 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 117, Parent ID = 110 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.18 729 1.21e+03 0.023 0 0 0 Crystal initStep - 1 -1.18 729 1.21e+03 0.023 0 0.000103 0.000103 Crystal msc - 2 -1.18 729 1.21e+03 0 0.023 0.00514 0.00525 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 15, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.84 699 1.16e+03 2.96 0 0 0 Crystal initStep - 1 -1.78 699 1.16e+03 2.9 0.0565 0.116 0.116 Crystal msc - 2 -1.58 699 1.16e+03 2.78 0.125 0.29 0.406 Crystal msc - 3 -1.35 699 1.16e+03 2.67 0.114 0.29 0.697 Crystal msc - 4 -1.32 699 1.16e+03 1.07 0.019 0.037 0.733 Crystal eBrem - 5 -1.13 698 1.16e+03 0.93 0.14 0.327 1.06 Crystal msc - 6 -1.04 699 1.16e+03 0.815 0.116 0.327 1.39 Crystal msc - 7 -0.861 698 1.16e+03 0.564 0.25 0.327 1.71 Crystal msc - 8 -0.879 698 1.16e+03 0.394 0.17 0.327 2.04 Crystal msc - 9 -0.902 698 1.16e+03 0 0.394 0.489 2.53 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 118, Parent ID = 15 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.32 699 1.16e+03 1.58 0 0 0 Crystal initStep - 1 6.66e-16 700 1.16e+03 1.58 0 2.01 2.01 Crystal CoupledTransportation - 2 0.422 700 1.16e+03 1.58 0 0.642 2.66 Crystal CoupledTransportation - 3 3.66 703 1.15e+03 0 0 4.93 7.58 Crystal conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 120, Parent ID = 118 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 3.66 703 1.15e+03 0.187 0 0 0 Crystal initStep - 1 3.66 703 1.15e+03 0.186 0.000515 0.00308 0.00308 Crystal msc - 2 3.66 703 1.15e+03 0 0.186 0.153 0.156 Crystal eIoni - 3 3.66 703 1.15e+03 0 0 0 0.156 Crystal annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 122, Parent ID = 120 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 3.66 703 1.15e+03 0.511 0 0 0 Crystal initStep - 1 -1.78e-15 701 1.16e+03 0.511 0 4.14 4.14 Crystal CoupledTransportation - 2 -1.44 700 1.16e+03 0.511 0 1.62 5.76 Crystal CoupledTransportation - 3 -17.3 692 1.16e+03 0 0.0332 18 23.8 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 123, Parent ID = 122 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -17.3 692 1.16e+03 0.478 0 0 0 Crystal initStep - 1 -17.4 692 1.16e+03 0.474 0.0037 0.0128 0.0128 Crystal msc - 2 -17.4 692 1.16e+03 0 0.474 0.633 0.646 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 121, Parent ID = 120 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 3.66 703 1.15e+03 0.511 0 0 0 Crystal initStep - 1 16.7 709 1.15e+03 0.373 0 14.8 14.8 Crystal compt - 2 25.2 706 1.15e+03 0.177 0 11.8 26.5 Crystal compt - 3 25.2 706 1.15e+03 0 0.0332 0.427 26.9 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 126, Parent ID = 121 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 25.2 706 1.15e+03 0.144 0 0 0 Crystal initStep - 1 25.2 706 1.15e+03 0.141 0.00324 0.00214 0.00214 Crystal msc - 2 25.2 706 1.15e+03 0 0.141 0.103 0.105 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 125, Parent ID = 121 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 25.2 706 1.15e+03 0.196 0 0 0 Crystal initStep - 1 25.2 706 1.15e+03 0.191 0.00434 0.00346 0.00346 Crystal msc - 2 25.2 706 1.15e+03 0 0.191 0.167 0.171 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 124, Parent ID = 121 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 16.7 709 1.15e+03 0.138 0 0 0 Crystal initStep - 1 16.7 709 1.15e+03 0.138 0.000105 0.00201 0.00201 Crystal msc - 2 16.7 709 1.15e+03 0 0.138 0.1 0.102 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 119, Parent ID = 118 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 3.66 703 1.15e+03 0.367 0 0 0 Crystal initStep - 1 3.67 703 1.15e+03 0.366 0.00142 0.00886 0.00886 Crystal msc - 2 3.7 703 1.15e+03 0 0.366 0.44 0.449 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 14, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.87 696 1.15e+03 0.77 0 0 0 Crystal initStep - 1 -1.88 696 1.15e+03 0.762 0.00762 0.0238 0.0238 Crystal msc - 2 -1.78 696 1.16e+03 0.0452 0.717 1.16 1.18 Crystal eIoni - 3 -1.78 696 1.16e+03 0 0.0452 0.0159 1.2 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 13, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.43 676 1.12e+03 1.54 0 0 0 Crystal initStep - 1 -1.41 676 1.12e+03 1.51 0.0317 0.0539 0.0539 Crystal msc - 2 -1.19 677 1.12e+03 1.33 0.181 0.347 0.401 Crystal msc - 3 -0.965 677 1.12e+03 1.19 0.136 0.347 0.748 Crystal msc - 4 -0.805 677 1.12e+03 1.06 0.129 0.347 1.1 Crystal msc - 5 -0.639 677 1.12e+03 0.874 0.115 0.263 1.36 Crystal eBrem - 6 -0.495 676 1.12e+03 0.725 0.149 0.347 1.7 Crystal msc - 7 -0.492 676 1.12e+03 0.614 0.111 0.347 2.05 Crystal msc - 8 -0.457 676 1.12e+03 0.467 0.147 0.347 2.4 Crystal msc - 9 -0.569 677 1.12e+03 0.286 0.182 0.347 2.75 Crystal msc - 10 -0.576 677 1.12e+03 0 0.286 0.308 3.05 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 127, Parent ID = 13 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.639 677 1.12e+03 0.0719 0 0 0 Crystal initStep - 1 -0.475 677 1.12e+03 0 0.0332 0.182 0.182 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 128, Parent ID = 127 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.475 677 1.12e+03 0.0387 0 0 0 Crystal initStep - 1 -0.475 677 1.12e+03 0.0386 9.13e-05 0.000244 0.000244 Crystal msc - 2 -0.474 677 1.12e+03 0 0.0386 0.0122 0.0124 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 12, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.27 657 1.09e+03 1 0 0 0 Crystal initStep - 1 -1.29 657 1.09e+03 0.995 0.00845 0.0329 0.0329 Crystal msc - 2 -1.2 657 1.09e+03 0.896 0.0565 0.143 0.176 Crystal eBrem - 3 -1.16 657 1.09e+03 0.734 0.162 0.32 0.496 Crystal msc - 4 -1.13 657 1.09e+03 0.597 0.137 0.32 0.816 Crystal msc - 5 -1.19 657 1.09e+03 0 0.597 0.862 1.68 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 129, Parent ID = 12 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.2 657 1.09e+03 0.0425 0 0 0 Crystal initStep - 1 -1.1 657 1.09e+03 0 0.0332 0.122 0.122 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 130, Parent ID = 129 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -1.1 657 1.09e+03 0.00938 0 0 0 Crystal initStep - 1 -1.1 657 1.09e+03 0.00938 0 2.41e-05 2.41e-05 Crystal msc - 2 -1.1 657 1.09e+03 0 0.00938 0.00121 0.00123 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 11, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.997 647 1.08e+03 1.29 0 0 0 Crystal initStep - 1 -0.971 647 1.08e+03 1.27 0.0179 0.044 0.044 Crystal msc - 2 -0.803 647 1.08e+03 1.17 0.0943 0.242 0.286 Crystal msc - 3 -0.719 648 1.08e+03 0.897 0.276 0.242 0.528 Crystal msc - 4 -0.608 648 1.08e+03 0.82 0.0773 0.242 0.77 Crystal msc - 5 -0.763 648 1.08e+03 0.717 0.103 0.242 1.01 Crystal msc - 6 -0.791 648 1.08e+03 0.601 0.115 0.242 1.25 Crystal msc - 7 -0.809 648 1.08e+03 0.497 0.104 0.242 1.5 Crystal msc - 8 -0.676 648 1.08e+03 0.353 0.144 0.242 1.74 Crystal msc - 9 -0.648 648 1.08e+03 0 0.353 0.42 2.16 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 10, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.745 638 1.06e+03 0.799 0 0 0 Crystal initStep - 1 -0.747 638 1.06e+03 0.794 0.00544 0.025 0.025 Crystal msc - 2 -0.738 638 1.06e+03 0.716 0.078 0.184 0.209 Crystal msc - 3 -0.747 638 1.06e+03 0.645 0.0705 0.184 0.392 Crystal msc - 4 -0.637 638 1.06e+03 0.567 0.0776 0.184 0.576 Crystal msc - 5 -0.536 638 1.06e+03 0.491 0.0765 0.184 0.759 Crystal msc - 6 -0.507 638 1.06e+03 0.399 0.0922 0.184 0.943 Crystal msc - 7 -0.524 638 1.06e+03 0.189 0.21 0.184 1.13 Crystal msc - 8 -0.54 638 1.06e+03 0 0.189 0.165 1.29 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.452 633 1.05e+03 3.1 0 0 0 Crystal initStep - 1 -0.445 633 1.05e+03 3.05 0.0489 0.125 0.125 Crystal msc - 2 -0.421 633 1.06e+03 2.99 0.0532 0.125 0.25 Crystal msc - 3 -0.365 634 1.06e+03 2.92 0.078 0.125 0.374 Crystal msc - 4 -0.297 634 1.06e+03 2.87 0.0408 0.125 0.499 Crystal msc - 5 -0.256 634 1.06e+03 2.8 0.0711 0.125 0.624 Crystal msc - 6 -0.227 634 1.06e+03 2.75 0.0514 0.125 0.749 Crystal msc - 7 -0.171 634 1.06e+03 2.71 0.0393 0.125 0.874 Crystal msc - 8 -0.159 634 1.06e+03 2.67 0.0442 0.125 0.999 Crystal msc - 9 -0.0856 634 1.06e+03 2.62 0.045 0.125 1.12 Crystal msc - 10 -0.0067 634 1.06e+03 2.58 0.0469 0.125 1.25 Crystal msc - 11 8.47e-16 634 1.06e+03 2.56 0.0188 0.0478 1.3 Crystal CoupledTransportation - 12 0.00438 634 1.06e+03 2.51 0.0437 0.0937 1.39 Crystal msc - 13 0.00174 634 1.06e+03 2.48 0.0356 0.0937 1.48 Crystal msc - 14 -3.43e-16 634 1.06e+03 2.47 0.0104 0.0211 1.5 Crystal CoupledTransportation - 15 -0.000924 634 1.06e+03 2.07 0.129 0.0481 1.55 Crystal eBrem - 16 -3.32e-16 634 1.06e+03 2.07 0.00137 0.0102 1.56 Crystal CoupledTransportation - 17 0.0128 634 1.06e+03 2.03 0.0375 0.0746 1.64 Crystal msc - 18 0.0388 634 1.06e+03 1.98 0.0529 0.0746 1.71 Crystal msc - 19 0.0249 634 1.06e+03 1.95 0.0287 0.0746 1.79 Crystal msc - 20 0.0301 634 1.06e+03 1.92 0.0349 0.0746 1.86 Crystal msc - 21 0.0251 634 1.06e+03 1.88 0.0337 0.0746 1.94 Crystal msc - 22 0.049 634 1.06e+03 1.86 0.0227 0.0746 2.01 Crystal msc - 23 0.0551 634 1.06e+03 1.84 0.0232 0.0746 2.09 Crystal msc - 24 0.0624 634 1.06e+03 1.71 0.13 0.0746 2.16 Crystal msc - 25 0.0667 634 1.06e+03 1.68 0.0296 0.0746 2.23 Crystal msc - 26 0.105 634 1.06e+03 1.64 0.0365 0.0746 2.31 Crystal msc - 27 0.131 634 1.06e+03 1.61 0.0344 0.0746 2.38 Crystal msc - 28 0.114 634 1.06e+03 1.56 0.048 0.0746 2.46 Crystal msc - 29 0.114 633 1.06e+03 1.53 0.031 0.0746 2.53 Crystal msc - 30 0.121 633 1.06e+03 1.5 0.0272 0.0746 2.61 Crystal msc - 31 0.133 633 1.06e+03 1.47 0.0304 0.0746 2.68 Crystal msc - 32 0.112 633 1.06e+03 1.43 0.0343 0.0746 2.76 Crystal msc - 33 0.132 633 1.06e+03 1.41 0.0292 0.0746 2.83 Crystal msc - 34 0.134 633 1.06e+03 1.19 0.000114 0.00469 2.84 Crystal eBrem - 35 0.149 633 1.06e+03 1.16 0.0286 0.0746 2.91 Crystal msc - 36 0.108 633 1.06e+03 1.14 0.0156 0.0746 2.99 Crystal msc - 37 0.0982 633 1.06e+03 1.12 0.0199 0.0746 3.06 Crystal msc - 38 0.0579 633 1.06e+03 1.07 0.0517 0.0746 3.13 Crystal msc - 39 0.0289 633 1.06e+03 1.04 0.0286 0.0746 3.21 Crystal msc - 40 0.00292 633 1.06e+03 1.01 0.0328 0.0746 3.28 Crystal msc - 41 3.78e-07 633 1.06e+03 0.962 0.0492 0.0746 3.36 Crystal msc - 42 0.00084 633 1.06e+03 0.921 0.0411 0.0746 3.43 Crystal msc - 43 0.0467 633 1.06e+03 0.813 0.107 0.0746 3.51 Crystal msc - 44 0.091 633 1.06e+03 0.623 0.0268 0.0521 3.56 Crystal eBrem - 45 0.12 633 1.06e+03 0.589 0.0345 0.0746 3.63 Crystal msc - 46 0.176 633 1.06e+03 0.546 0.0424 0.0746 3.71 Crystal msc - 47 0.233 633 1.06e+03 0.513 0.033 0.0746 3.78 Crystal msc - 48 0.262 633 1.06e+03 0.475 0.0381 0.0746 3.86 Crystal msc - 49 0.283 633 1.06e+03 0.448 0.0272 0.0746 3.93 Crystal msc - 50 0.314 633 1.06e+03 0.402 0.0465 0.0746 4.01 Crystal msc - 51 0.283 633 1.06e+03 0.372 0.03 0.0746 4.08 Crystal msc - 52 0.257 633 1.06e+03 0.243 0.129 0.0746 4.16 Crystal msc - 53 0.261 633 1.06e+03 0.188 0.0547 0.0746 4.23 Crystal msc - 54 0.254 633 1.06e+03 0 0.188 0.163 4.39 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 133, Parent ID = 9 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.091 633 1.06e+03 0.163 0 0 0 Crystal initStep - 1 5.95 638 1.06e+03 0 0.0332 9.52 9.52 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 134, Parent ID = 133 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 5.95 638 1.06e+03 0.13 0 0 0 Crystal initStep - 1 5.95 638 1.06e+03 0.127 0.00318 0.00182 0.00182 Crystal msc - 2 5.95 638 1.06e+03 0 0.127 0.0872 0.089 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 132, Parent ID = 9 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.134 633 1.06e+03 0.217 0 0 0 Crystal initStep - 1 1.48 632 1.06e+03 0.126 0 2.12 2.12 Crystal compt - 2 1.35 632 1.06e+03 0 0.0332 0.146 2.27 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 136, Parent ID = 132 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 1.35 632 1.06e+03 0.0933 0 0 0 Crystal initStep - 1 1.35 632 1.06e+03 0.0728 0.0206 0.00106 0.00106 Crystal msc - 2 1.35 632 1.06e+03 0 0.0728 0.0352 0.0362 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 135, Parent ID = 132 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 1.48 632 1.06e+03 0.0907 0 0 0 Crystal initStep - 1 1.48 632 1.06e+03 0.0905 0.0002 0.00101 0.00101 Crystal msc - 2 1.49 632 1.06e+03 0 0.0905 0.0505 0.0515 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 131, Parent ID = 9 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.000924 634 1.06e+03 0.267 0 0 0 Crystal initStep - 1 -3.32e-16 634 1.06e+03 0.267 0 0.00621 0.00621 Crystal CoupledTransportation - 2 2.29 639 1.07e+03 0.218 0 15.4 15.4 Crystal compt - 3 3.95 642 1.07e+03 0 0.0332 3.08 18.5 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 138, Parent ID = 131 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 3.95 642 1.07e+03 0.185 0 0 0 Crystal initStep - 1 3.95 642 1.07e+03 0.183 0.00179 0.00317 0.00317 Crystal msc - 2 3.95 642 1.07e+03 0 0.183 0.156 0.159 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 137, Parent ID = 131 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 2.29 639 1.07e+03 0.0493 0 0 0 Crystal initStep - 1 2.29 639 1.07e+03 0.0485 0.000819 0.000366 0.000366 Crystal msc - 2 2.29 639 1.07e+03 0 0.0485 0.0178 0.0182 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0436 625 1.04e+03 1.25 0 0 0 Crystal initStep - 1 -0.0592 625 1.04e+03 1.22 0.0227 0.0424 0.0424 Crystal msc - 2 -0.0692 625 1.04e+03 1.21 0.0182 0.0424 0.0848 Crystal msc - 3 -0.0904 625 1.04e+03 1.19 0.0156 0.0424 0.127 Crystal msc - 4 -0.102 625 1.04e+03 1.18 0.0123 0.0424 0.17 Crystal msc - 5 -0.108 625 1.04e+03 1.16 0.0191 0.0424 0.212 Crystal msc - 6 -0.112 625 1.04e+03 1.14 0.0234 0.0424 0.255 Crystal msc - 7 -0.102 625 1.04e+03 1.1 0.0308 0.0424 0.297 Crystal msc - 8 -0.0773 625 1.04e+03 1.09 0.0131 0.0424 0.339 Crystal msc - 9 -0.0497 625 1.04e+03 1.07 0.0211 0.0424 0.382 Crystal msc - 10 -0.0362 625 1.04e+03 1.05 0.0156 0.0424 0.424 Crystal msc - 11 -0.0195 625 1.04e+03 1.04 0.0177 0.0424 0.467 Crystal msc - 12 -9.82e-16 625 1.04e+03 1.03 0.0109 0.035 0.502 Crystal CoupledTransportation - 13 0.00654 625 1.04e+03 1.01 0.0147 0.0338 0.536 Crystal msc - 14 0.033 624 1.04e+03 0.999 0.0127 0.0338 0.569 Crystal msc - 15 0.056 624 1.04e+03 0.981 0.0181 0.0338 0.603 Crystal msc - 16 0.0789 624 1.04e+03 0.962 0.0191 0.0338 0.637 Crystal msc - 17 0.0865 624 1.04e+03 0.946 0.0152 0.0338 0.671 Crystal msc - 18 0.0921 624 1.04e+03 0.94 0.0067 0.0338 0.705 Crystal msc - 19 0.118 624 1.04e+03 0.934 0.00599 0.0338 0.738 Crystal msc - 20 0.135 624 1.04e+03 0.913 0.021 0.0338 0.772 Crystal msc - 21 0.143 624 1.04e+03 0.9 0.0126 0.0338 0.806 Crystal msc - 22 0.136 624 1.04e+03 0.89 0.0103 0.0338 0.84 Crystal msc - 23 0.132 624 1.04e+03 0.874 0.0161 0.0338 0.874 Crystal msc - 24 0.148 624 1.04e+03 0.857 0.0167 0.0338 0.908 Crystal msc - 25 0.173 624 1.04e+03 0.839 0.0179 0.0338 0.941 Crystal msc - 26 0.203 624 1.04e+03 0.826 0.0134 0.0338 0.975 Crystal msc - 27 0.232 624 1.04e+03 0.811 0.0152 0.0338 1.01 Crystal msc - 28 0.268 624 1.04e+03 0.787 0.0234 0.0404 1.05 Crystal msc - 29 0.3 624 1.04e+03 0.761 0.0259 0.0458 1.1 Crystal msc - 30 0.327 624 1.04e+03 0.737 0.0245 0.053 1.15 Crystal msc - 31 0.347 624 1.04e+03 0.718 0.0193 0.0588 1.21 Crystal msc - 32 0.389 624 1.04e+03 0.689 0.029 0.0638 1.27 Crystal msc - 33 0.381 624 1.04e+03 0.635 0.0534 0.0673 1.34 Crystal msc - 34 0.404 624 1.04e+03 0.602 0.0336 0.0768 1.42 Crystal msc - 35 0.418 624 1.04e+03 0.563 0.0384 0.0768 1.49 Crystal msc - 36 0.48 624 1.04e+03 0.543 0.0205 0.0783 1.57 Crystal msc - 37 0.488 624 1.04e+03 0.507 0.036 0.0816 1.65 Crystal msc - 38 0.52 624 1.04e+03 0.453 0.0539 0.0965 1.75 Crystal msc - 39 0.575 624 1.04e+03 0.401 0.0519 0.0965 1.84 Crystal msc - 40 0.574 624 1.04e+03 0.344 0.057 0.105 1.95 Crystal msc - 41 0.556 624 1.04e+03 0 0.344 0.403 2.35 Crystal eIoni + 1 -0.00104 11.8 19.7 1e+03 0.00228 23 23 WorldPhysical hIoni + 2 0.0005 18.1 30.2 1e+03 0.00491 12.3 35.3 WorldPhysical hIoni + 3 0.00957 41.7 69.5 1e+03 0.00394 45.9 81.1 WorldPhysical hIoni + 4 0.0131 59.7 99.5 1e+03 0.00273 34.9 116 WorldPhysical hIoni + 5 0.0132 60 100 1e+03 8.04e-05 0.618 117 DriftChamberPhysical CoupledTransportation + 6 0.105 444 739 1e+03 0.0155 745 862 DriftChamberPhysical hIoni + 7 0.12 492 819 1e+03 0.00202 92.9 955 DriftChamberPhysical hIoni + 8 0.139 540 900 1e+03 0.00186 94.8 1.05e+03 WorldPhysical CoupledTransportation + 9 0.139 541 902 1e+03 0.000121 1.96 1.05e+03 WorldPhysical hIoni + 10 0.147 570 950 1e+03 0.00768 56.4 1.11e+03 WorldPhysical G4FSMP_parallelGeom + 11 0.147 570 950 0 1e+03 0 1.11e+03 WorldPhysical G4FSMP_parallelGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.038 597 994 0.00119 0 0 0 WorldPhysical initStep - 1 -0.0364 597 994 0.00113 6.42e-05 0.0019 0.0019 WorldPhysical msc - 2 -0.0113 597 994 0 0.00113 0.0684 0.0703 WorldPhysical eIoni + 0 0.139 541 902 0.00482 0 0 0 WorldPhysical initStep + 1 0.285 541 902 0 0.00482 0.679 0.679 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0359 570 950 0.00259 0 0 0 WorldPhysical initStep - 1 -0.0403 570 950 0.00259 0 0.00719 0.00719 WorldPhysical msc - 2 -0.0619 570 950 0 0.00259 0.236 0.243 WorldPhysical eIoni + 0 0.105 444 739 0.00209 0 0 0 DriftChamberPhysical initStep + 1 0.29 444 739 0 0.00209 0.948 0.948 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0361 563 938 0.00843 0 0 0 WorldPhysical initStep - 1 -0.824 563 938 0 0.00843 1.54 1.54 WorldPhysical eIoni + 0 0.0131 59.7 99.5 0.00113 0 0 0 WorldPhysical initStep + 1 0.0184 59.7 99.5 0 0.00113 0.0684 0.0684 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0215 263 438 0.00132 0 0 0 DriftChamberPhysical initStep - 1 -0.063 263 438 0.00124 7.8e-05 0.0445 0.0445 DriftChamberPhysical msc - 2 -0.352 263 438 0 0.00124 0.419 0.464 DriftChamberPhysical eIoni + 0 0.00957 41.7 69.5 0.00115 0 0 0 WorldPhysical initStep + 1 0.0134 41.8 69.5 0 0.00115 0.0704 0.0704 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.00984 146 244 0.00921 0 0 0 DriftChamberPhysical initStep - 1 -0.994 150 243 0.00692 0.00229 4.17 4.17 DriftChamberPhysical eIoni - 2 -1.37 153 241 0.00508 0.00185 3.06 7.23 DriftChamberPhysical eIoni - 3 -2.21 155 241 0.00286 0.00222 2.3 9.53 DriftChamberPhysical eIoni - 4 -2.29 156 242 0.00137 0.00149 1.43 11 DriftChamberPhysical eIoni - 5 -2.02 156 242 0 0.00137 0.492 11.4 DriftChamberPhysical eIoni + 0 0.0005 18.1 30.2 0.00351 0 0 0 WorldPhysical initStep + 1 0.109 18 30.3 0 0.00351 0.394 0.394 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00287 15.9 26.5 0.0861 0 0 0 WorldPhysical initStep - 1 5.31 13.9 30.8 0.0831 0.00197 7.26 7.26 WorldPhysical eIoni - 2 8.21 12.9 32.2 0.0678 0.00168 3.41 10.7 WorldPhysical eIoni - 3 17.5 7.22 45.1 0.0559 0.0119 18.1 28.7 WorldPhysical eIoni - 4 17.5 6.72 45.8 0.0543 0.000405 0.872 29.6 WorldPhysical eIoni - 5 17.2 -1.45 54.3 0.0474 0.00689 12.7 42.3 WorldPhysical eIoni - 6 19.9 -3.2 54.2 0.045 0.00141 3.35 45.6 WorldPhysical eIoni - 7 22.5 -8.51 54.2 0.0369 0.00453 6.19 51.8 WorldPhysical eIoni - 8 24 -14.6 55.8 0.0336 0.00326 7.05 58.8 WorldPhysical eIoni - 9 24 -15.3 55.9 0.028 0.00022 0.666 59.5 WorldPhysical eIoni - 10 25.8 -17.3 59.4 0.0255 0.00252 4.87 64.4 WorldPhysical eIoni - 11 23.1 -16.3 62.1 0.0163 0.00917 4.32 68.7 WorldPhysical eIoni - 12 23 -16.4 62.2 0.0163 3.84e-05 0.204 68.9 WorldPhysical eIoni - 13 22.3 -17.9 63.9 0.0124 0.00385 2.69 71.6 WorldPhysical eIoni - 14 21.5 -19 63.1 0.00349 0.00791 1.78 73.4 WorldPhysical eIoni - 15 21.5 -19.1 63.1 0 0.00349 0.39 73.8 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 145, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 21.5 -19 63.1 0.00104 0 0 0 WorldPhysical initStep - 1 21.5 -18.9 63.1 0 0.00104 0.061 0.061 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 144, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24 -15.3 55.9 0.00536 0 0 0 WorldPhysical initStep - 1 23.9 -15.5 55.6 0 0.00536 0.82 0.82 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 143, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 22.5 -8.51 54.2 0.00357 0 0 0 WorldPhysical initStep - 1 22.4 -8.54 54.4 0 0.00357 0.404 0.404 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 142, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 19.9 -3.2 54.2 0.00105 0 0 0 WorldPhysical initStep - 1 19.9 -3.18 54.2 0 0.00105 0.0616 0.0616 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 141, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 17.5 6.72 45.8 0.00118 0 0 0 WorldPhysical initStep - 1 17.5 6.7 45.8 0 0.00118 0.0728 0.0728 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 140, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 8.21 12.9 32.2 0.0136 0 0 0 WorldPhysical initStep - 1 8.3 13.2 33.5 0.00917 0.00274 1.46 1.46 WorldPhysical eIoni - 2 8.41 13.1 33.5 0.00759 0.000321 0.214 1.67 WorldPhysical eIoni - 3 9.34 12.9 33.4 0.00307 0.00452 1.38 3.05 WorldPhysical eIoni - 4 9.43 12.8 33.5 0 0.00307 0.312 3.36 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 147, Parent ID = 140 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 8.41 13.1 33.5 0.00126 0 0 0 WorldPhysical initStep - 1 8.41 13 33.5 0 0.00126 0.0794 0.0794 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 146, Parent ID = 140 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 8.3 13.2 33.5 0.00166 0 0 0 WorldPhysical initStep - 1 8.33 13.3 33.5 0 0.00166 0.118 0.118 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 139, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 5.31 13.9 30.8 0.00108 0 0 0 WorldPhysical initStep - 1 5.3 13.9 30.8 0 0.00108 0.0646 0.0646 WorldPhysical eIoni + 0 -0.00104 11.8 19.7 0.00102 0 0 0 WorldPhysical initStep + 1 0.0155 11.8 19.7 0 0.00102 0.0597 0.0597 WorldPhysical eIoni >>> Event 0 - 9 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.2957190263561839 (GeV) - 4 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.5205553980331402 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 6.89e-06 0.32 0.534 1e+03 0.000126 0.622 0.622 WorldPhysical hIoni - 2 0.0155 56.6 94.3 1e+03 0.0208 109 110 WorldPhysical hIoni - 3 0.0165 60 100 1e+03 0.000701 6.6 117 DriftChamberPhysical CoupledTransportation - 4 0.0946 263 438 1e+03 0.00748 394 511 DriftChamberPhysical hIoni - 5 0.146 448 745 1e+03 0.00956 359 870 DriftChamberPhysical hIoni - 6 0.172 541 900 1e+03 0.00349 180 1.05e+03 WorldPhysical CoupledTransportation - 7 0.183 571 950 1e+03 0.0156 117 1.17e+03 WorldPhysical CoupledTransportation - 8 0.183 571 950 0 1e+03 0 1.17e+03 WorldPhysical G4FSMP_parallelGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.146 448 745 0.00115 0 0 0 DriftChamberPhysical initStep - 1 0.171 448 745 0.00101 0.000143 0.0344 0.0344 DriftChamberPhysical msc - 2 0.239 448 745 0 0.00101 0.311 0.345 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0946 263 438 0.00317 0 0 0 DriftChamberPhysical initStep - 1 -0.131 263 438 0.00295 0.000224 0.238 0.238 DriftChamberPhysical msc - 2 -1.15 263 437 0.00138 0.00157 1.47 1.7 DriftChamberPhysical eIoni - 3 -1 263 437 0 0.00138 0.497 2.2 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0155 56.6 94.3 0.00185 0 0 0 WorldPhysical initStep - 1 0.0352 56.7 94.3 0 0.00185 0.139 0.139 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 6.89e-06 0.32 0.534 0.00299 0 0 0 WorldPhysical initStep - 1 0.116 0.275 0.569 0 0.00299 0.3 0.3 WorldPhysical eIoni ->>> Event 1 - 4 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.1599892973883606 (GeV) + 10 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.3399813584038645 (GeV) 9 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.8399438112888934 (GeV) + Total energy deposition in HAD calorimeter towers : 0.6199660065011646 (GeV) ********************************************************************************************************* * G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 @@ -3083,186 +1755,33 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 -0.00185 13.3 22.1 1e+03 0.0063 25.8 25.8 WorldPhysical hIoni - 2 0.0229 60 100 1e+03 0.0163 90.8 117 DriftChamberPhysical CoupledTransportation - 3 0.128 174 290 1e+03 0.00617 221 338 DriftChamberPhysical hIoni - 4 0.234 292 486 1e+03 0.00497 229 567 DriftChamberPhysical hIoni - 5 0.428 500 834 1e+03 0.00827 406 973 DriftChamberPhysical hIoni - 6 0.455 540 900 1e+03 0.00193 76.6 1.05e+03 WorldPhysical CoupledTransportation - 7 0.479 567 945 1e+03 0.00844 53.1 1.1e+03 WorldPhysical hIoni - 8 0.481 570 950 1e+03 0.00403 30.8 1.13e+03 WorldPhysical hIoni - 9 0.481 570 950 0 1e+03 0 1.13e+03 WorldPhysical G4FSMP_parallelGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.481 570 950 0.00109 0 0 0 WorldPhysical initStep - 1 0.479 570 950 0.00109 0 0.00163 0.00163 WorldPhysical msc - 2 0.479 570 950 0.00109 0 0.00163 0.00325 WorldPhysical msc - 3 0.477 570 950 0.00109 0 0.00163 0.00488 WorldPhysical msc - 4 0.476 570 950 0.00109 0 0.00163 0.0065 WorldPhysical msc - 5 0.474 570 950 0.00109 0 0.00163 0.00813 WorldPhysical msc - 6 0.473 570 950 0.00109 0 0.00163 0.00975 WorldPhysical msc - 7 0.472 570 950 0.00109 0 0.00163 0.0114 WorldPhysical msc - 8 0.47 570 950 0.00109 0 0.00163 0.013 WorldPhysical msc - 9 0.469 570 950 0.00109 0 0.00163 0.0146 WorldPhysical msc - 10 0.467 570 950 0.00104 4.91e-05 0.00163 0.0163 WorldPhysical msc - 11 0.466 570 950 0.00102 1.58e-05 0.00163 0.0179 WorldPhysical msc - 12 0.464 570 950 0.00102 0 0.00163 0.0195 WorldPhysical msc - 13 0.463 570 950 0.00101 1.33e-05 0.00163 0.0211 WorldPhysical msc - 14 0.462 570 950 0.000962 4.86e-05 0.00163 0.0228 WorldPhysical msc - 15 0.462 570 950 0.000951 1.07e-05 0.00163 0.0244 WorldPhysical msc - 16 0.462 570 950 0.000951 0 0.00163 0.026 WorldPhysical msc - 17 0.461 570 950 0.000951 0 0.00163 0.0276 WorldPhysical msc - 18 0.462 570 950 0.000852 9.93e-05 0.00163 0.0293 WorldPhysical msc - 19 0.463 570 950 0.000852 0 0.00163 0.0309 WorldPhysical msc - 20 0.463 570 950 0.000852 0 0.00168 0.0326 WorldPhysical msc - 21 0.464 570 950 0.000852 0 0.00189 0.0344 WorldPhysical msc - 22 0.465 570 950 0.000852 0 0.0021 0.0365 WorldPhysical msc - 23 0.465 570 950 0.000781 7.14e-05 0.00233 0.0389 WorldPhysical msc - 24 0.464 570 950 0.000776 4.69e-06 0.00261 0.0415 WorldPhysical msc - 25 0.463 570 950 0.000675 0.000101 0.00306 0.0445 WorldPhysical msc - 26 0.464 570 950 0.000636 3.95e-05 0.00342 0.048 WorldPhysical msc - 27 0.466 570 950 0.000636 0 0.00397 0.0519 WorldPhysical msc - 28 0.468 570 950 0.000636 0 0.00423 0.0562 WorldPhysical msc - 29 0.468 570 950 0.000607 2.87e-05 0.00484 0.061 WorldPhysical msc - 30 0.471 570 950 0.000583 2.41e-05 0.00539 0.0664 WorldPhysical msc - 31 0.472 570 950 0.000496 8.7e-05 0.00606 0.0724 WorldPhysical msc - 32 0.469 570 950 0.000406 9.05e-05 0.00606 0.0785 WorldPhysical msc - 33 0.467 570 950 0.000339 6.69e-05 0.00606 0.0846 WorldPhysical msc - 34 0.468 570 950 0.000339 0 0.00606 0.0906 WorldPhysical msc - 35 0.465 570 950 0 0.000339 0.0184 0.109 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.479 567 945 0.00258 0 0 0 WorldPhysical initStep - 1 0.579 567 946 0 0.00258 0.234 0.234 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.428 500 834 0.00449 0 0 0 DriftChamberPhysical initStep - 1 0.932 500 834 0.00394 0.000546 0.664 0.664 DriftChamberPhysical msc - 2 2.58 500 835 0.00209 0.00186 1.87 2.54 DriftChamberPhysical eIoni - 3 3.1 500 835 0 0.00209 0.945 3.48 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.234 292 486 0.00103 0 0 0 DriftChamberPhysical initStep - 1 0.241 292 486 0.000941 8.42e-05 0.0286 0.0286 DriftChamberPhysical msc - 2 0.305 292 486 0 0.000941 0.284 0.313 DriftChamberPhysical eIoni + 1 0 60 100 1e+03 0.0147 117 117 DriftChamberPhysical CoupledTransportation + 2 -0.101 222 370 1e+03 0.00583 314 431 DriftChamberPhysical hIoni + 3 -0.271 540 900 1e+03 0.0135 619 1.05e+03 WorldPhysical CoupledTransportation + 4 -0.281 566 943 1e+03 0.0114 50.4 1.1e+03 WorldPhysical hIoni + 5 -0.283 570 950 1e+03 0.00279 7.91 1.11e+03 WorldPhysical G4FSMP_parallelGeom + 6 -0.283 570 950 0 1e+03 0 1.11e+03 WorldPhysical G4FSMP_parallelGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.128 174 290 0.0011 0 0 0 DriftChamberPhysical initStep - 1 0.159 174 290 0.00108 1.51e-05 0.0318 0.0318 DriftChamberPhysical msc - 2 0.388 174 290 0 0.00108 0.347 0.379 DriftChamberPhysical eIoni + 0 -0.281 566 943 0.00151 0 0 0 WorldPhysical initStep + 1 -0.251 566 943 0 0.00151 0.102 0.102 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.00185 13.3 22.1 0.107 0 0 0 WorldPhysical initStep - 1 -17.1 15 28.4 0.0936 0.0109 18.9 18.9 WorldPhysical eIoni - 2 -20.5 16.2 38.5 0.088 0.00436 11 29.8 WorldPhysical eIoni - 3 -32.7 19.8 48.3 0.072 0.0132 16.7 46.6 WorldPhysical eIoni - 4 -33.4 19.7 49.3 0.0702 2.92e-05 1.22 47.8 WorldPhysical eIoni - 5 -35.3 15.1 66.5 0.0605 0.00973 19.1 66.9 WorldPhysical eIoni - 6 -36.2 13.7 67.7 0.05 0.00077 2.15 69.1 WorldPhysical eIoni - 7 -38.8 3.89 69.6 0.0413 0.0087 11.1 80.1 WorldPhysical eIoni - 8 -39.5 -3.76 69.3 0.0352 0.00612 8.31 88.4 WorldPhysical eIoni - 9 -35.5 -7.44 71.2 0.0299 0.0029 6.26 94.7 WorldPhysical eIoni - 10 -36 -6.73 73 0.0287 0.00118 2.07 96.8 WorldPhysical eIoni - 11 -37.6 -3.85 76.2 0.0241 0.0046 5.03 102 WorldPhysical eIoni - 12 -38.7 -0.864 78 0.0189 0.00524 4.05 106 WorldPhysical eIoni - 13 -39.3 0.513 77.3 0.0147 0.00169 1.81 108 WorldPhysical eIoni - 14 -40.9 0.965 76.1 0.00997 0.00474 2.46 110 WorldPhysical eIoni - 15 -41.8 0.017 75.6 0.00734 0.00264 1.77 112 WorldPhysical eIoni - 16 -41.6 0.561 75.5 0 0.00734 1.33 113 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 14, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -39.3 0.513 77.3 0.00248 0 0 0 WorldPhysical initStep - 1 -39.3 0.55 77.4 0 0.00248 0.218 0.218 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 13, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -35.5 -7.44 71.2 0.00243 0 0 0 WorldPhysical initStep - 1 -35.5 -7.5 71.3 0 0.00243 0.213 0.213 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 12, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -36.2 13.7 67.7 0.00968 0 0 0 WorldPhysical initStep - 1 -35.6 13.5 68.2 0.00512 0.00262 0.817 0.817 WorldPhysical eIoni - 2 -35.4 13.6 68.4 0 0.00512 0.752 1.57 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 15, Parent ID = 12 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -35.6 13.5 68.2 0.00194 0 0 0 WorldPhysical initStep - 1 -35.7 13.5 68.2 0 0.00194 0.149 0.149 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 11, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -33.4 19.7 49.3 0.00169 0 0 0 WorldPhysical initStep - 1 -33.4 19.8 49.3 0 0.00169 0.122 0.122 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 10, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -32.7 19.8 48.3 0.0028 0 0 0 WorldPhysical initStep - 1 -32.7 19.9 48.3 0 0.0028 0.268 0.268 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -20.5 16.2 38.5 0.00123 0 0 0 WorldPhysical initStep - 1 -20.6 16.2 38.4 0 0.00123 0.0767 0.0767 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -17.1 15 28.4 0.00222 0 0 0 WorldPhysical initStep - 1 -17 15 28.4 0 0.00222 0.184 0.184 WorldPhysical eIoni ->>> Event 2 - 8 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.2399583746250777 (GeV) + 0 -0.101 222 370 0.00115 0 0 0 DriftChamberPhysical initStep + 1 0.0151 222 370 0 0.00115 0.377 0.377 DriftChamberPhysical eIoni +>>> Event 1 + 7 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.1999898148316487 (GeV) 11 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.7198751238752329 (GeV) + Total energy deposition in HAD calorimeter towers : 0.7599612963602655 (GeV) ********************************************************************************************************* * G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 @@ -3270,72 +1789,42 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 60 100 1e+03 0.0159 117 117 DriftChamberPhysical CoupledTransportation - 2 -0.0269 185 308 1e+03 0.00575 243 360 DriftChamberPhysical hIoni - 3 -0.0335 272 454 1e+03 0.00311 170 529 DriftChamberPhysical hIoni - 4 -0.087 540 900 1e+03 0.0132 520 1.05e+03 WorldPhysical CoupledTransportation - 5 -0.0971 570 950 1e+03 0.0108 70.9 1.12e+03 WorldPhysical hIoni - 6 -0.0971 570 950 0 1e+03 0 1.12e+03 WorldPhysical G4FSMP_parallelGeom + 1 0.00394 24.5 40.9 1e+03 0.00486 47.7 47.7 WorldPhysical hIoni + 2 0.0124 60 100 1e+03 0.0106 68.9 117 DriftChamberPhysical CoupledTransportation + 3 0.0141 93.1 155 1e+03 0.00138 64.3 181 DriftChamberPhysical hIoni + 4 0.0102 160 267 1e+03 0.00248 131 311 DriftChamberPhysical hIoni + 5 0.0039 540 900 1e+03 0.0174 738 1.05e+03 WorldPhysical CoupledTransportation + 6 -0.00203 570 950 1e+03 0.00706 58.3 1.11e+03 WorldPhysical G4FSMP_parallelGeom + 7 -0.00203 570 950 0 1e+03 0 1.11e+03 WorldPhysical G4FSMP_parallelGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0971 570 950 0.00129 0 0 0 WorldPhysical initStep - 1 -0.0992 570 950 0.000961 0.000327 0.00219 0.00219 WorldPhysical msc - 2 -0.101 570 950 0.000885 7.59e-05 0.00219 0.00438 WorldPhysical msc - 3 -0.101 570 950 0.000813 7.18e-05 0.00219 0.00658 WorldPhysical msc - 4 -0.102 570 950 0.000811 1.67e-06 0.00219 0.00877 WorldPhysical msc - 5 -0.104 570 950 0.000723 8.85e-05 0.00219 0.011 WorldPhysical msc - 6 -0.105 570 950 0.000723 0 0.00219 0.0132 WorldPhysical msc - 7 -0.105 570 950 0.000723 0 0.00219 0.0153 WorldPhysical msc - 8 -0.105 570 950 0.000678 4.44e-05 0.00219 0.0175 WorldPhysical msc - 9 -0.105 570 950 0.000601 7.73e-05 0.00219 0.0197 WorldPhysical msc - 10 -0.107 570 950 0.00053 7.08e-05 0.00219 0.0219 WorldPhysical msc - 11 -0.109 570 950 0.00051 2.01e-05 0.00219 0.0241 WorldPhysical msc - 12 -0.111 570 950 0.000466 4.41e-05 0.00219 0.0263 WorldPhysical msc - 13 -0.109 570 950 0.000466 0 0.00219 0.0285 WorldPhysical msc - 14 -0.108 570 950 0.000405 6.1e-05 0.00219 0.0307 WorldPhysical msc - 15 -0.106 570 950 0.000379 2.65e-05 0.00219 0.0329 WorldPhysical msc - 16 -0.105 570 950 0.000338 4.06e-05 0.00219 0.0351 WorldPhysical msc - 17 -0.104 570 950 0.000241 9.67e-05 0.00219 0.0373 WorldPhysical msc - 18 -0.103 570 950 0.000174 6.72e-05 0.00219 0.0395 WorldPhysical msc - 19 -0.105 570 950 4.75e-05 0.000127 0.00219 0.0417 WorldPhysical msc - 20 -0.106 570 950 0 4.75e-05 0.00637 0.048 WorldPhysical eIoni + 0 0.0102 160 267 0.00226 0 0 0 DriftChamberPhysical initStep + 1 -0.753 160 267 0 0.00226 1.08 1.08 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0335 272 454 0.00833 0 0 0 DriftChamberPhysical initStep - 1 3.02 271 456 0.00614 0.00219 3.71 3.71 DriftChamberPhysical eIoni - 2 5.36 271 455 0.00448 0.00166 2.72 6.43 DriftChamberPhysical eIoni - 3 6.49 270 453 0.00247 0.002 2.08 8.51 DriftChamberPhysical eIoni - 4 6.86 271 452 0 0.00247 1.21 9.72 DriftChamberPhysical eIoni + 0 0.0141 93.1 155 0.00121 0 0 0 DriftChamberPhysical initStep + 1 0.162 93.3 155 0 0.00121 0.406 0.406 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0269 185 308 0.0157 0 0 0 DriftChamberPhysical initStep - 1 -6.93 182 312 0.0145 0.00114 8.57 8.57 DriftChamberPhysical eIoni - 2 -14.5 183 312 0.0128 0.0017 7.7 16.3 DriftChamberPhysical eIoni - 3 -20.5 184 312 0.0111 0.00174 6.4 22.7 DriftChamberPhysical eIoni - 4 -24 184 308 0.00885 0.00225 5.28 27.9 DriftChamberPhysical eIoni - 5 -26.5 181 307 0.00698 0.00187 3.98 31.9 DriftChamberPhysical eIoni - 6 -27.9 179 306 0.00582 0.00116 3.08 35 DriftChamberPhysical eIoni - 7 -28.8 177 306 0.0038 0.00202 2.6 37.6 DriftChamberPhysical eIoni - 8 -29 175 306 0.00261 0.00119 1.82 39.4 DriftChamberPhysical eIoni - 9 -28.9 174 305 0.00065 0.00196 1.29 40.7 DriftChamberPhysical eIoni - 10 -29 174 305 0 0.00065 0.177 40.9 DriftChamberPhysical eIoni ->>> Event 3 - 5 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.09999259711680071 (GeV) - 8 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.8599363352044861 (GeV) + 0 0.00394 24.5 40.9 0.00681 0 0 0 WorldPhysical initStep + 1 -0.542 24.6 41 0 0.00681 1.21 1.21 WorldPhysical eIoni +>>> Event 2 + 7 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.2199881211313345 (GeV) + 11 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.6599643633940039 (GeV) ********************************************************************************************************* * G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 @@ -3343,51 +1832,77 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.00208 16.7 27.9 1e+03 0.0045 32.5 32.5 WorldPhysical hIoni - 2 0.0036 20.7 34.5 1e+03 0.00189 7.77 40.3 WorldPhysical hIoni - 3 0.0272 60 100 1e+03 0.00779 76.3 117 DriftChamberPhysical CoupledTransportation - 4 -0.584 540 900 1e+03 0.022 933 1.05e+03 WorldPhysical CoupledTransportation - 5 -0.588 545 907 1e+03 0.000989 7.95 1.06e+03 WorldPhysical hIoni - 6 -0.61 569 948 1e+03 0.0065 48.3 1.11e+03 WorldPhysical hIoni - 7 -0.612 570 950 1e+03 0.0144 60.4 1.17e+03 WorldPhysical CoupledTransportation - 8 -0.612 570 950 0 1e+03 0 1.17e+03 WorldPhysical G4FSMP_parallelGeom + 1 0 60 100 1e+03 0.0196 117 117 DriftChamberPhysical CoupledTransportation + 2 -0.00158 119 198 1e+03 0.00277 114 231 DriftChamberPhysical hIoni + 3 -0.00949 267 445 1e+03 0.00503 289 520 DriftChamberPhysical hIoni + 4 -0.013 427 711 1e+03 0.00711 309 829 DriftChamberPhysical hIoni + 5 -0.0122 461 768 1e+03 0.00142 66.6 896 DriftChamberPhysical hIoni + 6 -0.00838 540 900 1e+03 0.00381 154 1.05e+03 WorldPhysical CoupledTransportation + 7 -0.00579 570 950 1e+03 0.00819 58.3 1.11e+03 WorldPhysical G4FSMP_parallelGeom + 8 -0.00579 570 950 0 1e+03 0 1.11e+03 WorldPhysical G4FSMP_parallelGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.61 569 948 0.000995 0 0 0 WorldPhysical initStep - 1 -0.603 569 948 0 0.000995 0.0575 0.0575 WorldPhysical eIoni + 0 -0.0122 461 768 0.00107 0 0 0 DriftChamberPhysical initStep + 1 0.201 461 768 0 0.00107 0.34 0.34 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.588 545 907 0.00216 0 0 0 WorldPhysical initStep - 1 -0.514 545 907 0 0.00216 0.177 0.177 WorldPhysical eIoni + 0 -0.013 427 711 0.00119 0 0 0 DriftChamberPhysical initStep + 1 0.163 427 711 0 0.00119 0.395 0.395 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0036 20.7 34.5 0.00122 0 0 0 WorldPhysical initStep - 1 -0.0208 20.7 34.5 0 0.00122 0.076 0.076 WorldPhysical eIoni + 0 -0.00949 267 445 0.00362 0 0 0 DriftChamberPhysical initStep + 1 0.78 269 445 0.00127 0.00235 1.75 1.75 DriftChamberPhysical eIoni + 2 0.938 269 445 0 0.00127 0.432 2.19 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00208 16.7 27.9 0.00247 0 0 0 WorldPhysical initStep - 1 -0.0596 16.8 27.8 0 0.00247 0.217 0.217 WorldPhysical eIoni + 0 -0.00158 119 198 0.00105 0 0 0 DriftChamberPhysical initStep + 1 -0.107 118 198 0 0.00105 0.33 0.33 DriftChamberPhysical eIoni +>>> Event 3 + 7 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.2399868460417725 (GeV) + 9 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.7399594419621321 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0.00057 5.4 9 1e+03 0.00161 10.5 10.5 WorldPhysical hIoni + 2 0.00382 60 100 1e+03 0.0139 106 117 DriftChamberPhysical CoupledTransportation + 3 0.188 540 900 1e+03 0.0245 933 1.05e+03 WorldPhysical CoupledTransportation + 4 0.198 570 950 1e+03 0.0117 58.3 1.11e+03 WorldPhysical G4FSMP_parallelGeom + 5 0.198 570 950 0 1e+03 0 1.11e+03 WorldPhysical G4FSMP_parallelGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.00057 5.4 9 0.00123 0 0 0 WorldPhysical initStep + 1 -0.0258 5.39 9.01 0 0.00123 0.0765 0.0765 WorldPhysical eIoni >>> Event 4 - 8 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.2199857146747894 (GeV) - 10 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.6199597413562249 (GeV) + 6 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.1999894232854193 (GeV) + 8 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.7599598084845934 (GeV) number of event = 5 ### Run 5 start. @@ -3397,35 +1912,46 @@ number of event = 5 Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 30 100 1e+03 0.0124 104 104 DriftChamberPhysical CoupledTransportation - 2 -0.0819 118 392 1e+03 0.00709 305 409 DriftChamberPhysical hIoni - 3 -0.185 265 883 1e+03 0.0119 513 922 DriftChamberPhysical hIoni - 4 -0.188 270 900 1e+03 0.000526 17.5 940 WorldPhysical CoupledTransportation - 5 -0.198 285 950 1e+03 0.0115 104 1.04e+03 WorldPhysical CoupledTransportation - 6 -0.198 285 950 0 1e+03 0 1.04e+03 WorldPhysical G4FSMP_parallelGeom + 1 -0.00925 21.8 72.7 1e+03 0.00997 75.9 75.9 WorldPhysical hIoni + 2 -0.00968 30 100 1e+03 0.0023 28.5 104 DriftChamberPhysical CoupledTransportation + 3 0.0464 157 525 1e+03 0.0103 443 548 DriftChamberPhysical hIoni + 4 0.0555 192 640 1e+03 0.00314 120 668 DriftChamberPhysical hIoni + 5 0.0913 270 900 1e+03 0.00651 272 940 WorldPhysical CoupledTransportation + 6 0.095 285 950 1e+03 0.00735 52.2 992 WorldPhysical G4FSMP_parallelGeom + 7 0.095 285 950 0 1e+03 0 992 WorldPhysical G4FSMP_parallelGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.0555 192 640 0.00152 0 0 0 DriftChamberPhysical initStep + 1 -0.332 192 640 0 0.00152 0.57 0.57 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.185 265 883 0.00162 0 0 0 DriftChamberPhysical initStep - 1 -0.249 265 883 0.00153 8.68e-05 0.0652 0.0652 DriftChamberPhysical msc - 2 -0.651 265 883 0 0.00153 0.579 0.645 DriftChamberPhysical eIoni + 0 0.0464 157 525 0.00203 0 0 0 DriftChamberPhysical initStep + 1 0.597 158 525 0 0.00203 0.904 0.904 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0819 118 392 0.00234 0 0 0 DriftChamberPhysical initStep - 1 -0.0134 118 392 0.0022 0.000141 0.125 0.125 DriftChamberPhysical msc - 2 0.605 118 392 0 0.0022 1.03 1.16 DriftChamberPhysical eIoni + 0 -0.00925 21.8 72.7 0.0247 0 0 0 WorldPhysical initStep + 1 -2.93 19.6 73.6 0.019 0.00571 4.15 4.15 WorldPhysical eIoni + 2 -4.16 17.2 74.1 0.0125 0.00646 3.12 7.27 WorldPhysical eIoni + 3 -2.71 16.1 74 0.00858 0.00393 2.14 9.41 WorldPhysical eIoni + 4 -1.92 15.3 74.1 0.0039 0.00468 1.56 11 WorldPhysical eIoni + 5 -1.72 15.3 74.1 0 0.0039 0.467 11.4 WorldPhysical eIoni >>> Event 0 - 0 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0 (GeV) - 11 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.9999526895247572 (GeV) + 2 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.05999593506690591 (GeV) + 15 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.9399363160481925 (GeV) ********************************************************************************************************* * G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 @@ -3433,1572 +1959,139 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.00045 3.25 10.8 1e+03 0.00158 11.3 11.3 WorldPhysical hIoni - 2 -0.00153 8.67 28.9 1e+03 0.00342 18.9 30.2 WorldPhysical hIoni - 3 -0.0115 30 100 1e+03 0.00767 74.2 104 DriftChamberPhysical CoupledTransportation - 4 -0.0755 136 455 1e+03 0.00834 371 475 DriftChamberPhysical hIoni - 5 -0.163 254 847 1e+03 0.0104 409 884 DriftChamberPhysical hIoni - 6 -0.173 270 900 1e+03 0.00111 55.8 940 WorldPhysical CoupledTransportation - 7 -0.184 285 950 1e+03 0.0171 104 1.04e+03 WorldPhysical CoupledTransportation - 8 -0.184 285 950 0 1e+03 0 1.04e+03 WorldPhysical G4FSMP_parallelGeom + 1 0.00664 20.4 68 1e+03 0.00722 71 71 WorldPhysical hIoni + 2 0.015 30 100 1e+03 0.00352 33.4 104 DriftChamberPhysical CoupledTransportation + 3 0.0368 109 362 1e+03 0.0104 274 378 DriftChamberPhysical hIoni + 4 0.0935 179 598 1e+03 0.0061 246 625 DriftChamberPhysical hIoni + 5 0.174 270 900 1e+03 0.00653 315 940 WorldPhysical CoupledTransportation + 6 0.175 272 908 1e+03 0.00125 8.41 948 WorldPhysical hIoni + 7 0.186 285 950 1e+03 0.00526 43.8 992 WorldPhysical G4FSMP_parallelGeom + 8 0.186 285 950 0 1e+03 0 992 WorldPhysical G4FSMP_parallelGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.163 254 847 0.00437 0 0 0 DriftChamberPhysical initStep - 1 -0.0732 253 847 0.00404 0.000327 0.61 0.61 DriftChamberPhysical msc - 2 0.307 252 847 0.00211 0.00193 1.91 2.52 DriftChamberPhysical eIoni - 3 0.71 251 847 0 0.00211 0.961 3.48 DriftChamberPhysical eIoni + 0 0.175 272 908 0.00137 0 0 0 WorldPhysical initStep + 1 0.172 272 908 0 0.00137 0.0899 0.0899 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0755 136 455 0.00215 0 0 0 DriftChamberPhysical initStep - 1 -0.0612 137 455 0.00199 0.000159 0.107 0.107 DriftChamberPhysical msc - 2 0.0775 137 455 0 0.00199 0.872 0.979 DriftChamberPhysical eIoni + 0 0.0935 179 598 0.00105 0 0 0 DriftChamberPhysical initStep + 1 0.239 180 598 0 0.00105 0.333 0.333 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.00153 8.67 28.9 0.027 0 0 0 WorldPhysical initStep - 1 3.28 9.8 31.1 0.0198 0.00528 4.51 4.51 WorldPhysical eIoni - 2 3.32 9.84 31.2 0.0198 4.52e-05 0.0654 4.57 WorldPhysical eIoni - 3 5.14 10.2 33.2 0.0111 0.00761 3.06 7.63 WorldPhysical eIoni - 4 6.25 9.67 34.2 0.00484 0.00631 1.95 9.59 WorldPhysical eIoni - 5 6.21 9.42 34.4 0 0.00484 0.682 10.3 WorldPhysical eIoni + 0 0.0368 109 362 0.00197 0 0 0 DriftChamberPhysical initStep + 1 -0.409 108 362 0 0.00197 0.858 0.858 DriftChamberPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 3 +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 5.14 10.2 33.2 0.00103 0 0 0 WorldPhysical initStep - 1 5.14 10.2 33.2 0 0.00103 0.0605 0.0605 WorldPhysical eIoni + 0 0.00664 20.4 68 0.00106 0 0 0 WorldPhysical initStep + 1 0.00383 20.4 68 0 0.00106 0.0624 0.0624 WorldPhysical eIoni +>>> Event 1 + 3 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.07999634134284041 (GeV) + 16 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.9199579254426647 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0 30 100 1e+03 0.0193 104 104 DriftChamberPhysical CoupledTransportation + 2 -0.0748 204 680 1e+03 0.0162 606 710 DriftChamberPhysical hIoni + 3 -0.104 270 900 1e+03 0.00677 230 940 WorldPhysical CoupledTransportation + 4 -0.113 285 950 1e+03 0.00623 52.2 992 WorldPhysical G4FSMP_parallelGeom + 5 -0.113 285 950 0 1e+03 0 992 WorldPhysical G4FSMP_parallelGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.0748 204 680 0.00112 0 0 0 DriftChamberPhysical initStep + 1 0.0637 204 680 0 0.00112 0.362 0.362 DriftChamberPhysical eIoni +>>> Event 2 + 0 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0 (GeV) + 12 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.9599524007741056 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0 9.63 32.1 1e+03 0.00435 33.5 33.5 WorldPhysical hIoni + 2 -0.0103 24.7 82.3 1e+03 0.0164 52.4 85.9 WorldPhysical hIoni + 3 -0.0125 30 100 1e+03 0.00247 18.5 104 DriftChamberPhysical CoupledTransportation + 4 -0.135 257 858 1e+03 0.0162 791 895 DriftChamberPhysical hIoni + 5 -0.148 270 900 1e+03 0.000818 44.2 940 WorldPhysical CoupledTransportation + 6 -0.16 281 936 1e+03 0.00481 38 978 WorldPhysical hIoni + 7 -0.162 285 950 1e+03 0.00191 14.2 992 WorldPhysical G4FSMP_parallelGeom + 8 -0.162 285 950 0 1e+03 0 992 WorldPhysical G4FSMP_parallelGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.16 281 936 0.00105 0 0 0 WorldPhysical initStep + 1 -0.183 281 936 0 0.00105 0.062 0.062 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.135 257 858 0.00555 0 0 0 DriftChamberPhysical initStep + 1 -1.84 256 859 0.00323 0.00231 2.49 2.49 DriftChamberPhysical eIoni + 2 -2.29 255 859 0.00136 0.00188 1.59 4.08 DriftChamberPhysical eIoni + 3 -2.25 254 859 0 0.00136 0.482 4.56 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.0103 24.7 82.3 0.00358 0 0 0 WorldPhysical initStep + 1 0.00138 24.7 82.3 0.00181 0.000163 0.0615 0.0615 WorldPhysical eIoni + 2 0.0455 24.8 82.3 0 0.00181 0.135 0.197 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 3 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 3.28 9.8 31.1 0.00185 0 0 0 WorldPhysical initStep - 1 3.32 9.78 31.1 0 0.00185 0.139 0.139 WorldPhysical eIoni + 0 0.00138 24.7 82.3 0.0016 0 0 0 WorldPhysical initStep + 1 -0.0237 24.8 82.3 0 0.0016 0.112 0.112 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00045 3.25 10.8 0.0104 0 0 0 WorldPhysical initStep - 1 1.06 3.53 9.84 0.00656 0.00385 1.84 1.84 WorldPhysical eIoni - 2 1.38 3.87 9.79 0.00234 0.00239 0.551 2.39 WorldPhysical eIoni - 3 1.45 3.91 9.82 0 0.00234 0.201 2.6 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 1.38 3.87 9.79 0.00183 0 0 0 WorldPhysical initStep - 1 1.39 3.83 9.82 0 0.00183 0.137 0.137 WorldPhysical eIoni ->>> Event 1 - 0 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0 (GeV) - 13 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.9799083632614609 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.00146 5.71 19 1e+03 0.0029 19.9 19.9 WorldPhysical hIoni - 2 0.00571 30 100 1e+03 0.0143 84.5 104 DriftChamberPhysical CoupledTransportation - 3 0.0321 106 354 1e+03 0.00481 265 369 DriftChamberPhysical Decay - -********************************************************************************************************* -* G4Track Information: Particle = mu-, Track ID = 4, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0321 106 354 983 0 0 0 DriftChamberPhysical initStep - 1 8 244 818 983 0.00824 485 485 DriftChamberPhysical muIoni - 2 9.39 268 900 983 0.00181 85 570 WorldPhysical CoupledTransportation - 3 9.94 278 932 983 0.0042 33.9 604 WorldPhysical muIoni - 4 10.2 283 950 983 0.012 70.4 674 WorldPhysical CoupledTransportation - 5 11.1 298 1e+03 983 0.0062 52.2 726 Crystal CoupledTransportation - 6 11.2 300 1.01e+03 979 3.69 7.26 734 Crystal CoupledTransportation - 7 11.4 306 1.03e+03 966 10.5 19.7 753 Crystal muIoni - 8 11.4 307 1.03e+03 958 2.87 4.99 758 Crystal muIoni - 9 13.2 326 1.1e+03 899 38.4 73.9 832 Crystal muIoni - 10 13.5 328 1.11e+03 893 3.64 6.75 839 Crystal muIoni - 11 15.1 341 1.16e+03 866 27 52 891 Crystal muIoni - 12 15.7 344 1.17e+03 860 4.58 9.75 901 Crystal muIoni - 13 16.4 346 1.18e+03 854 5.4 10.5 911 Crystal muIoni - 14 17.7 350 1.19e+03 846 8.08 16.2 927 Crystal CoupledTransportation - 15 17.7 350 1.2e+03 841 0.597 1.18 929 Crystal muIoni - 16 19.3 358 1.23e+03 825 14.7 31.4 960 Crystal muIoni - 17 23.1 379 1.32e+03 773 51.1 93.2 1.05e+03 Crystal muIoni - 18 24.2 385 1.34e+03 754 10.7 23.1 1.08e+03 Crystal muIoni - 19 24.3 386 1.34e+03 752 1.09 2.41 1.08e+03 Crystal muIoni - 20 24.5 395 1.37e+03 735 15.9 29.1 1.11e+03 Crystal muIoni - 21 24.5 395 1.37e+03 733 0.863 1.27 1.11e+03 Crystal muIoni - 22 24.4 400 1.39e+03 724 9.05 18.6 1.13e+03 Crystal CoupledTransportation - 23 24.7 404 1.4e+03 718 6.33 12.9 1.14e+03 WorldPhysical CoupledTransportation - 24 26.2 434 1.5e+03 718 0.017 105 1.25e+03 HadCaloPhysical CoupledTransportation - 25 26.9 449 1.55e+03 718 0.0156 52.3 1.3e+03 Tower CoupledTransportation - 26 26.9 450 1.55e+03 714 4.16 3.17 1.3e+03 Tower CoupledTransportation - 27 34 482 1.67e+03 571 143 118 1.42e+03 Tower muIoni - 28 38.6 506 1.76e+03 473 98.3 93.2 1.51e+03 Tower muIoni - 29 38.6 518 1.83e+03 381 76.3 75 1.59e+03 Tower muIoni - 30 43.8 525 1.89e+03 312 69.1 60.5 1.65e+03 Tower muIoni - 31 50 530 1.93e+03 258 53.6 40.7 1.69e+03 Tower CoupledTransportation - 32 57.3 540 1.97e+03 214 44 39.3 1.73e+03 Tower muIoni - 33 59.7 550 2e+03 177 37.1 31.1 1.76e+03 Tower CoupledTransportation - 34 60.3 560 2.02e+03 149 28.4 25.3 1.78e+03 Tower muIoni - 35 64.7 569 2.04e+03 124 24.8 20.5 1.8e+03 Tower muIoni - 36 67.2 578 2.05e+03 103 20.8 16.4 1.82e+03 Tower muIoni - 37 69 581 2.06e+03 87.2 16 13.1 1.83e+03 Tower muIoni - 38 70.9 584 2.07e+03 70.7 16.5 10.7 1.84e+03 Tower muIoni - 39 72.7 586 2.08e+03 58.8 11.9 8.29 1.85e+03 Tower muIoni - 40 74.5 587 2.09e+03 47.2 11.6 6.65 1.86e+03 Tower muIoni - 41 76.7 589 2.09e+03 37.8 9.44 5.18 1.86e+03 Tower muIoni - 42 78 589 2.1e+03 29.8 7.95 4.08 1.87e+03 Tower muIoni - 43 78.7 590 2.1e+03 22.7 7.11 3.23 1.87e+03 Tower muIoni - 44 79.7 591 2.1e+03 16 6.7 2.55 1.87e+03 Tower muIoni - 45 80.5 591 2.1e+03 8.33 7.69 1.94 1.88e+03 Tower muIoni - 46 80.9 591 2.1e+03 0 8.33 0.968 1.88e+03 Tower muIoni - 47 80.9 591 2.1e+03 0 0 0 1.88e+03 Tower Decay - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 24, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 80.9 591 2.1e+03 12.8 0 0 0 Tower initStep - 1 80.8 591 2.1e+03 12.3 0.474 0.382 0.382 Tower eBrem - 2 80.9 589 2.1e+03 2.35 1.97 1.69 2.07 Tower eBrem - 3 80.8 589 2.1e+03 1.82 0.278 0.338 2.41 Tower eBrem - 4 81.5 589 2.1e+03 0.598 1.22 1.4 3.81 Tower eIoni - 5 81.5 589 2.1e+03 0 0.598 0.408 4.22 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 26, Parent ID = 24 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 80.8 589 2.1e+03 0.252 0 0 0 Tower initStep - 1 80.9 589 2.1e+03 0.197 0 0.463 0.463 Tower compt - 2 82.6 587 2.1e+03 0.169 0 2.88 3.34 Tower compt - 3 82.3 579 2.12e+03 0.126 0 19.7 23 Tower compt - 4 79.2 568 2.12e+03 0.112 0 11.8 34.8 Tower compt - 5 80.2 567 2.12e+03 0 0.00711 1.63 36.5 Tower phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 31, Parent ID = 26 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 80.2 567 2.12e+03 0.105 0 0 0 Tower initStep - 1 80.2 567 2.12e+03 0.105 0.000197 0.000594 0.000594 Tower msc - 2 80.2 567 2.12e+03 0 0.105 0.0296 0.0302 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 30, Parent ID = 26 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 79.2 568 2.12e+03 0.0138 0 0 0 Tower initStep - 1 79.2 568 2.12e+03 0.0138 2.44e-05 1.92e-05 1.92e-05 Tower msc - 2 79.2 568 2.12e+03 0 0.0138 0.000958 0.000978 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 29, Parent ID = 26 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 82.3 579 2.12e+03 0.0425 0 0 0 Tower initStep - 1 82.3 579 2.12e+03 0.0424 0.000133 0.000129 0.000129 Tower msc - 2 82.3 579 2.12e+03 0 0.0424 0.00641 0.00654 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 28, Parent ID = 26 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 82.6 587 2.1e+03 0.0287 0 0 0 Tower initStep - 1 82.6 587 2.1e+03 0.0287 1.18e-05 6.61e-05 6.61e-05 Tower msc - 2 82.6 587 2.1e+03 0 0.0287 0.0033 0.00337 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 27, Parent ID = 26 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 80.9 589 2.1e+03 0.0547 0 0 0 Tower initStep - 1 80.9 589 2.1e+03 0.0542 0.000498 0.000198 0.000198 Tower msc - 2 80.9 589 2.1e+03 0 0.0542 0.00974 0.00993 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 25, Parent ID = 24 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 80.9 589 2.1e+03 7.99 0 0 0 Tower initStep - 1 74.9 550 2.11e+03 7.99 0 41.3 41.3 Tower CoupledTransportation - 2 72.5 534 2.12e+03 0 0 17 58.2 Tower conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 33, Parent ID = 25 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 72.5 534 2.12e+03 4.58 0 0 0 Tower initStep - 1 72.5 534 2.12e+03 4.48 0.0982 0.127 0.127 Tower msc - 2 72.8 532 2.12e+03 1.55 2.94 2.22 2.34 Tower eIoni - 3 73 531 2.12e+03 0.368 1.18 1.26 3.6 Tower eIoni - 4 73 531 2.12e+03 0 0.368 0.205 3.81 Tower eIoni - 5 73 531 2.12e+03 0 0 0 3.81 Tower annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 35, Parent ID = 33 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 73 531 2.12e+03 0.511 0 0 0 Tower initStep - 1 83.2 538 2.12e+03 0.312 0 12 12 Tower compt - 2 82.4 548 2.12e+03 0.151 0 11.7 23.7 Tower compt - 3 96.9 535 2.12e+03 0.096 0 20.6 44.3 Tower compt - 4 94.6 536 2.12e+03 0.0873 0 3.02 47.3 Tower compt - 5 92.8 549 2.12e+03 0 0.00711 13.1 60.5 Tower phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 40, Parent ID = 35 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 92.8 549 2.12e+03 0.0802 0 0 0 Tower initStep - 1 92.8 549 2.12e+03 0.0767 0.00345 0.000376 0.000376 Tower msc - 2 92.8 549 2.12e+03 0 0.0767 0.0175 0.0179 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 39, Parent ID = 35 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 94.6 536 2.12e+03 0.00873 0 0 0 Tower initStep - 1 94.6 536 2.12e+03 0.00873 0 8.98e-06 8.98e-06 Tower msc - 2 94.6 536 2.12e+03 0 0.00873 0.000449 0.000458 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 38, Parent ID = 35 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 96.9 535 2.12e+03 0.0547 0 0 0 Tower initStep - 1 96.9 535 2.12e+03 0.0546 7.55e-05 0.000198 0.000198 Tower msc - 2 96.9 535 2.12e+03 0 0.0546 0.00988 0.0101 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 37, Parent ID = 35 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 82.4 548 2.12e+03 0.162 0 0 0 Tower initStep - 1 82.4 548 2.12e+03 0.16 0.00164 0.00119 0.00119 Tower msc - 2 82.4 548 2.12e+03 0 0.16 0.0586 0.0598 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 36, Parent ID = 35 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 83.2 538 2.12e+03 0.199 0 0 0 Tower initStep - 1 83.2 538 2.12e+03 0.198 0.000838 0.00165 0.00165 Tower msc - 2 83.2 538 2.12e+03 0 0.198 0.0817 0.0834 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 34, Parent ID = 33 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 73 531 2.12e+03 0.511 0 0 0 Tower initStep - 1 50 517 2.12e+03 0.511 0 27 27 Tower CoupledTransportation - 2 36.3 509 2.12e+03 0.496 0 16.1 43 Tower compt - 3 31.6 504 2.12e+03 0.26 0 6.7 49.8 Tower compt - 4 35 500 2.12e+03 0.14 0 5.91 55.7 Tower compt - 5 35.2 501 2.12e+03 0 0.00711 2.08 57.7 Tower phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 44, Parent ID = 34 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 35.2 501 2.12e+03 0.133 0 0 0 Tower initStep - 1 35.2 501 2.12e+03 0.13 0.00295 0.00087 0.00087 Tower msc - 2 35.2 501 2.12e+03 0 0.13 0.0419 0.0428 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 43, Parent ID = 34 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 35 500 2.12e+03 0.119 0 0 0 Tower initStep - 1 35 500 2.12e+03 0.118 0.000998 0.000731 0.000731 Tower msc - 2 35 500 2.12e+03 0 0.118 0.0361 0.0368 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 42, Parent ID = 34 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 31.6 504 2.12e+03 0.237 0 0 0 Tower initStep - 1 31.6 504 2.12e+03 0.235 0.00225 0.00217 0.00217 Tower msc - 2 31.6 504 2.12e+03 0 0.235 0.107 0.109 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 41, Parent ID = 34 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 36.3 509 2.12e+03 0.0146 0 0 0 Tower initStep - 1 36.3 509 2.12e+03 0.0145 3.17e-05 2.09e-05 2.09e-05 Tower msc - 2 36.3 509 2.12e+03 0 0.0145 0.00104 0.00106 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 32, Parent ID = 25 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 72.5 534 2.12e+03 2.39 0 0 0 Tower initStep - 1 72.5 534 2.12e+03 2.35 0.0332 0.0421 0.0421 Tower msc - 2 73.1 533 2.12e+03 0.461 1.89 1.63 1.67 Tower eIoni - 3 73.1 533 2.12e+03 0 0.461 0.286 1.96 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = anti_nu_e, Track ID = 23, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 80.9 591 2.1e+03 44.1 0 0 0 Tower initStep - 1 50 575 2.18e+03 44.1 0 86.7 86.7 Tower CoupledTransportation - 2 1.6 550 2.31e+03 44.1 0 136 223 Tower CoupledTransportation - 3 -50 523 2.44e+03 44.1 0 145 367 Tower CoupledTransportation - 4 -53.9 521 2.45e+03 44.1 0 11 378 HadCaloPhysical CoupledTransportation - 5 -73.4 511 2.5e+03 44.1 0 54.6 433 WorldPhysical CoupledTransportation - 6 -92.8 501 2.55e+03 44.1 0 1.64e+03 2.07e+03 WorldPhysical CoupledTransportation - 7 -657 206 4e+03 44.1 0 1.58e+03 3.65e+03 OutOfWorld CoupledTransportation - -********************************************************************************************************* -* G4Track Information: Particle = nu_mu, Track ID = 22, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 80.9 591 2.1e+03 47.8 0 0 0 Tower initStep - 1 134 650 1.99e+03 47.8 0 136 136 Tower CoupledTransportation - 2 150 667 1.96e+03 47.8 0 40.4 177 Tower CoupledTransportation - 3 225 750 1.8e+03 47.8 0 192 369 Tower CoupledTransportation - 4 250 777 1.75e+03 47.8 0 63.3 432 Tower CoupledTransportation - 5 316 850 1.61e+03 47.8 0 169 602 Tower CoupledTransportation - 6 347 884 1.55e+03 47.8 0 78.6 680 HadCaloPhysical CoupledTransportation - 7 371 910 1.5e+03 47.8 0 61.4 742 WorldPhysical CoupledTransportation - 8 419 963 1.4e+03 47.8 0 123 865 Crystal CoupledTransportation - 9 450 997 1.34e+03 47.8 0 78.8 943 Crystal CoupledTransportation - 10 453 1e+03 1.33e+03 47.8 0 7.18 951 Crystal CoupledTransportation - 11 498 1.05e+03 1.24e+03 47.8 0 116 1.07e+03 Crystal CoupledTransportation - 12 500 1.05e+03 1.23e+03 47.8 0 4.28 1.07e+03 Crystal CoupledTransportation - 13 544 1.1e+03 1.14e+03 47.8 0 112 1.18e+03 Crystal CoupledTransportation - 14 550 1.11e+03 1.13e+03 47.8 0 15.7 1.2e+03 Crystal CoupledTransportation - 15 589 1.15e+03 1.05e+03 47.8 0 101 1.3e+03 Crystal CoupledTransportation - 16 600 1.16e+03 1.02e+03 47.8 0 27.2 1.33e+03 Crystal CoupledTransportation - 17 611 1.17e+03 1e+03 47.8 0 29.3 1.36e+03 WorldPhysical CoupledTransportation - 18 636 1.2e+03 950 47.8 0 123 1.48e+03 WorldPhysical CoupledTransportation - 19 660 1.23e+03 900 47.8 0 61.4 1.54e+03 DriftChamberPhysical CoupledTransportation - 20 680 1.25e+03 857 47.8 0 53.2 1.59e+03 WorldPhysical CoupledTransportation - 21 3.02e+03 3.82e+03 -4e+03 47.8 0 5.97e+03 7.56e+03 OutOfWorld CoupledTransportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 21, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 38.6 518 1.83e+03 15.2 0 0 0 Tower initStep - 1 38.6 518 1.83e+03 12.1 0.222 0.221 0.221 Tower eBrem - 2 37.8 519 1.83e+03 9.35 2.3 2.03 2.25 Tower eBrem - 3 38.5 520 1.83e+03 4.56 4.36 2.35 4.6 Tower eBrem - 4 39.1 519 1.84e+03 2.45 2.05 2.18 6.78 Tower eBrem - 5 39.2 519 1.84e+03 1.55 0.25 0.127 6.91 Tower eBrem - 6 39 520 1.83e+03 0.341 1.21 1.25 8.16 Tower eIoni - 7 39 520 1.83e+03 0 0.341 0.187 8.35 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 49, Parent ID = 21 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 39.2 519 1.84e+03 0.646 0 0 0 Tower initStep - 1 39.7 520 1.83e+03 0.505 0 0.652 0.652 Tower compt - 2 40.1 520 1.83e+03 0.424 0 1.01 1.66 Tower compt - 3 40.2 528 1.82e+03 0.233 0 14 15.6 Tower compt - 4 33.6 527 1.82e+03 0.139 0 6.8 22.4 Tower compt - 5 37.1 524 1.82e+03 0 0.00711 5.22 27.6 Tower phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 54, Parent ID = 49 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 37.1 524 1.82e+03 0.132 0 0 0 Tower initStep - 1 37.1 524 1.82e+03 0.131 0.00152 0.000864 0.000864 Tower msc - 2 37.1 524 1.82e+03 0 0.131 0.0423 0.0432 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 53, Parent ID = 49 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 33.6 527 1.82e+03 0.0934 0 0 0 Tower initStep - 1 33.6 527 1.82e+03 0.0933 0.000114 0.000487 0.000487 Tower msc - 2 33.6 527 1.82e+03 0 0.0933 0.0243 0.0248 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 52, Parent ID = 49 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 40.2 528 1.82e+03 0.191 0 0 0 Tower initStep - 1 40.2 528 1.82e+03 0.191 0.000395 0.00155 0.00155 Tower msc - 2 40.2 528 1.82e+03 0 0.191 0.0774 0.079 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 51, Parent ID = 49 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 40.1 520 1.83e+03 0.081 0 0 0 Tower initStep - 1 40.1 520 1.83e+03 0.0803 0.000657 0.000382 0.000382 Tower msc - 2 40.1 520 1.83e+03 0 0.0803 0.0188 0.0192 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 50, Parent ID = 49 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 39.7 520 1.83e+03 0.141 0 0 0 Tower initStep - 1 39.7 520 1.83e+03 0.133 0.00781 0.00096 0.00096 Tower msc - 2 39.8 520 1.83e+03 0 0.133 0.0437 0.0447 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 48, Parent ID = 21 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 39.1 519 1.84e+03 0.0638 0 0 0 Tower initStep - 1 40.3 520 1.83e+03 0 0.00711 1.26 1.26 Tower phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 55, Parent ID = 48 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 40.3 520 1.83e+03 0.0567 0 0 0 Tower initStep - 1 40.3 520 1.83e+03 0.0547 0.00193 0.00021 0.00021 Tower msc - 2 40.3 520 1.83e+03 0 0.0547 0.00992 0.0101 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 47, Parent ID = 21 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 38.5 520 1.83e+03 0.425 0 0 0 Tower initStep - 1 16.4 513 1.88e+03 0.21 0 56.2 56.2 Tower compt - 2 16.6 512 1.88e+03 0.173 0 0.274 56.4 Tower compt - 3 16.6 512 1.88e+03 0.114 0 0.698 57.1 Tower compt - 4 16.2 512 1.88e+03 0 0.00711 0.451 57.6 Tower phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 59, Parent ID = 47 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 16.2 512 1.88e+03 0.107 0 0 0 Tower initStep - 1 16.2 512 1.88e+03 0.105 0.00133 0.000608 0.000608 Tower msc - 2 16.2 512 1.88e+03 0 0.105 0.0297 0.0303 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 58, Parent ID = 47 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 16.6 512 1.88e+03 0.059 0 0 0 Tower initStep - 1 16.6 512 1.88e+03 0.0578 0.0012 0.000225 0.000225 Tower msc - 2 16.6 512 1.88e+03 0 0.0578 0.0109 0.0111 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 57, Parent ID = 47 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 16.6 512 1.88e+03 0.037 0 0 0 Tower initStep - 1 16.6 512 1.88e+03 0.037 3.28e-05 0.000102 0.000102 Tower msc - 2 16.6 512 1.88e+03 0 0.037 0.00509 0.00519 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 56, Parent ID = 47 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 16.4 513 1.88e+03 0.215 0 0 0 Tower initStep - 1 16.4 513 1.88e+03 0.212 0.00283 0.00187 0.00187 Tower msc - 2 16.3 513 1.88e+03 0 0.212 0.0915 0.0934 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 46, Parent ID = 21 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 37.8 519 1.83e+03 0.43 0 0 0 Tower initStep - 1 37.2 522 1.84e+03 0.309 0 7.71 7.71 Tower compt - 2 50 520 1.85e+03 0.309 0 17.3 25 Tower CoupledTransportation - 3 54.8 520 1.85e+03 0.238 0 6.39 31.4 Tower compt - 4 55.6 508 1.86e+03 0.138 0 15.6 46.9 Tower compt - 5 59.1 513 1.86e+03 0 0.00711 6.37 53.3 Tower phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 63, Parent ID = 46 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 59.1 513 1.86e+03 0.131 0 0 0 Tower initStep - 1 59.1 513 1.86e+03 0.13 0.00122 0.000852 0.000852 Tower msc - 2 59.1 513 1.86e+03 0 0.13 0.0419 0.0428 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 62, Parent ID = 46 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 55.6 508 1.86e+03 0.0992 0 0 0 Tower initStep - 1 55.6 508 1.86e+03 0.099 0.00013 0.000536 0.000536 Tower msc - 2 55.6 508 1.86e+03 0 0.099 0.0267 0.0273 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 61, Parent ID = 46 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 54.8 520 1.85e+03 0.0717 0 0 0 Tower initStep - 1 54.8 520 1.85e+03 0.0716 0.000164 0.000313 0.000313 Tower msc - 2 54.8 520 1.85e+03 0 0.0716 0.0156 0.0159 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 60, Parent ID = 46 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 37.2 522 1.84e+03 0.12 0 0 0 Tower initStep - 1 37.2 522 1.84e+03 0.118 0.00245 0.000739 0.000739 Tower msc - 2 37.2 522 1.84e+03 0 0.118 0.0358 0.0365 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 45, Parent ID = 21 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 38.6 518 1.83e+03 2.94 0 0 0 Tower initStep - 1 35 527 1.85e+03 0.358 0 22.4 22.4 Tower compt - 2 36.7 516 1.85e+03 0.208 0 10.9 33.4 Tower compt - 3 50 516 1.83e+03 0.208 0 22.2 55.5 Tower CoupledTransportation - 4 50.1 516 1.83e+03 0 0.00711 0.136 55.7 Tower phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 66, Parent ID = 45 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 50.1 516 1.83e+03 0.201 0 0 0 Tower initStep - 1 50.1 516 1.83e+03 0.199 0.00185 0.00167 0.00167 Tower msc - 2 50.1 516 1.83e+03 0.175 0.0237 0.0203 0.022 Tower msc - 3 50.1 516 1.83e+03 0.142 0.033 0.0203 0.0423 Tower msc - 4 50.1 516 1.83e+03 0 0.142 0.0486 0.0908 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 65, Parent ID = 45 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 36.7 516 1.85e+03 0.15 0 0 0 Tower initStep - 1 36.7 516 1.85e+03 0.148 0.0019 0.00106 0.00106 Tower msc - 2 36.7 516 1.85e+03 0 0.148 0.0517 0.0528 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 64, Parent ID = 45 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 35 527 1.85e+03 2.58 0 0 0 Tower initStep - 1 34.9 527 1.85e+03 2.42 0.0384 0.0308 0.0308 Tower eBrem - 2 34.7 528 1.85e+03 1.13 1.22 1.37 1.4 Tower eBrem - 3 34.5 528 1.85e+03 0 1.13 0.908 2.31 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 68, Parent ID = 64 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 34.7 528 1.85e+03 0.0672 0 0 0 Tower initStep - 1 34.5 528 1.85e+03 0 0.00711 0.223 0.223 Tower phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 69, Parent ID = 68 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 34.5 528 1.85e+03 0.0601 0 0 0 Tower initStep - 1 34.5 528 1.85e+03 0.0591 0.001 0.000232 0.000232 Tower msc - 2 34.5 528 1.85e+03 0 0.0591 0.0113 0.0115 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 67, Parent ID = 64 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 34.9 527 1.85e+03 0.126 0 0 0 Tower initStep - 1 29.8 536 1.86e+03 0.115 0 16.5 16.5 Tower compt - 2 29.8 537 1.86e+03 0 0.00711 0.359 16.9 Tower phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 71, Parent ID = 67 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 29.8 537 1.86e+03 0.108 0 0 0 Tower initStep - 1 29.8 537 1.86e+03 0.107 0.00117 0.00062 0.00062 Tower msc - 2 29.8 537 1.86e+03 0 0.107 0.0304 0.0311 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 70, Parent ID = 67 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 29.8 536 1.86e+03 0.0107 0 0 0 Tower initStep - 1 29.8 536 1.86e+03 0.0105 0.00023 1.25e-05 1.25e-05 Tower msc - 2 29.8 536 1.86e+03 0 0.0105 0.000604 0.000616 Tower eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 20, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.5 395 1.37e+03 0.951 0 0 0 Crystal initStep - 1 24.5 395 1.37e+03 0.939 0.0116 0.0309 0.0309 Crystal msc - 2 24.8 395 1.37e+03 0.462 0.433 0.906 0.937 Crystal eBrem - 3 24.7 395 1.37e+03 0.29 0.127 0.202 1.14 Crystal eBrem - 4 24.7 395 1.37e+03 0 0.29 0.315 1.45 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 73, Parent ID = 20 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.7 395 1.37e+03 0.0448 0 0 0 Crystal initStep - 1 24.5 395 1.37e+03 0 0.0332 0.188 0.188 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 74, Parent ID = 73 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.5 395 1.37e+03 0.0116 0 0 0 Crystal initStep - 1 24.5 395 1.37e+03 0.0114 0.000229 3.38e-05 3.38e-05 Crystal msc - 2 24.5 395 1.37e+03 0 0.0114 0.00164 0.00167 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 72, Parent ID = 20 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.8 395 1.37e+03 0.0439 0 0 0 Crystal initStep - 1 24.7 395 1.37e+03 0 0.0332 0.232 0.232 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 75, Parent ID = 72 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.7 395 1.37e+03 0.0108 0 0 0 Crystal initStep - 1 24.7 395 1.37e+03 0.0093 0.00145 2.99e-05 2.99e-05 Crystal msc - 2 24.7 395 1.37e+03 0 0.0093 0.00119 0.00122 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 19, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.5 395 1.37e+03 0.97 0 0 0 Crystal initStep - 1 24.5 395 1.37e+03 0.96 0.0095 0.0316 0.0316 Crystal msc - 2 24.7 394 1.37e+03 0.261 0.699 1.37 1.4 Crystal eBrem - 3 24.7 394 1.37e+03 0 0.261 0.269 1.67 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 18, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.3 386 1.34e+03 1.15 0 0 0 Crystal initStep - 1 24.3 386 1.34e+03 1.14 0.0128 0.0387 0.0387 Crystal msc - 2 24.4 386 1.34e+03 0.97 0.127 0.299 0.338 Crystal eBrem - 3 24.4 386 1.34e+03 0.858 0.00117 0.00793 0.346 Crystal eBrem - 4 24.7 386 1.34e+03 0.252 0.606 1.29 1.63 Crystal eIoni - 5 24.7 386 1.34e+03 0 0.252 0.254 1.89 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 77, Parent ID = 18 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.4 386 1.34e+03 0.111 0 0 0 Crystal initStep - 1 24.2 384 1.34e+03 0.0803 0 1.58 1.58 Crystal compt - 2 25 385 1.34e+03 0 0.0332 1.09 2.67 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 79, Parent ID = 77 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 25 385 1.34e+03 0.0472 0 0 0 Crystal initStep - 1 25 385 1.34e+03 0.047 0.000122 0.000341 0.000341 Crystal msc - 2 25 385 1.34e+03 0 0.047 0.017 0.0173 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 78, Parent ID = 77 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.2 384 1.34e+03 0.0305 0 0 0 Crystal initStep - 1 24.2 384 1.34e+03 0.0304 2.48e-05 0.000164 0.000164 Crystal msc - 2 24.2 384 1.34e+03 0 0.0304 0.00819 0.00835 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 76, Parent ID = 18 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.4 386 1.34e+03 0.0422 0 0 0 Crystal initStep - 1 24.5 386 1.34e+03 0 0.0332 0.0467 0.0467 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 80, Parent ID = 76 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.5 386 1.34e+03 0.00902 0 0 0 Crystal initStep - 1 24.5 386 1.34e+03 0.00902 0 2.27e-05 2.27e-05 Crystal msc - 2 24.5 386 1.34e+03 0 0.00902 0.00114 0.00116 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 17, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.2 385 1.34e+03 7.79 0 0 0 Crystal initStep - 1 24.4 386 1.34e+03 7.51 0.284 0.693 0.693 Crystal msc - 2 24.1 387 1.34e+03 6.22 1.21 2.35 3.04 Crystal eBrem - 3 23.6 388 1.34e+03 5.16 0.687 1.68 4.72 Crystal eBrem - 4 23.5 390 1.34e+03 3.18 1.41 2.75 7.47 Crystal eBrem - 5 23 392 1.34e+03 1.87 1.31 2.64 10.1 Crystal eIoni - 6 23.5 391 1.34e+03 0.748 1.12 2.03 12.1 Crystal eIoni - 7 23.5 391 1.34e+03 0.0718 0.677 1.14 13.3 Crystal eIoni - 8 23.5 391 1.34e+03 0 0.0718 0.0344 13.3 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 83, Parent ID = 17 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 23.5 390 1.34e+03 0.571 0 0 0 Crystal initStep - 1 16.9 390 1.35e+03 0.525 0 7.82 7.82 Crystal compt - 2 0 400 1.36e+03 0.525 0 23.8 31.6 Crystal CoupledTransportation - 3 -0.676 400 1.36e+03 0.525 0 0.951 32.6 Crystal CoupledTransportation - 4 -7.4 404 1.37e+03 0.52 0 9.47 42.1 Crystal compt - 5 -33.2 420 1.38e+03 0.228 0 35.2 77.3 Crystal compt - 6 -37 416 1.38e+03 0 0.0332 8 85.3 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 87, Parent ID = 83 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -37 416 1.38e+03 0.195 0 0 0 Crystal initStep - 1 -37 416 1.38e+03 0.194 0.00105 0.00345 0.00345 Crystal msc - 2 -37 416 1.38e+03 0 0.194 0.171 0.175 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 86, Parent ID = 83 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -33.2 420 1.38e+03 0.292 0 0 0 Crystal initStep - 1 -33.2 420 1.38e+03 0.285 0.00729 0.00636 0.00636 Crystal msc - 2 -33.2 420 1.38e+03 0 0.285 0.306 0.313 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 85, Parent ID = 83 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -7.4 404 1.37e+03 0.00492 0 0 0 Crystal initStep - 1 -7.4 404 1.37e+03 0.00488 3.71e-05 8.97e-06 8.97e-06 Crystal msc - 2 -7.4 404 1.37e+03 0 0.00488 0.000444 0.000453 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 84, Parent ID = 83 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 16.9 390 1.35e+03 0.0456 0 0 0 Crystal initStep - 1 16.9 390 1.35e+03 0.0451 0.000539 0.000323 0.000323 Crystal msc - 2 16.9 390 1.35e+03 0 0.0451 0.0158 0.0161 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 82, Parent ID = 17 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 23.6 388 1.34e+03 0.377 0 0 0 Crystal initStep - 1 15 393 1.36e+03 0.276 0 21.5 21.5 Crystal compt - 2 11.7 392 1.36e+03 0.138 0 3.59 25.1 Crystal compt - 3 17 394 1.36e+03 0 0.0332 5.79 30.9 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 90, Parent ID = 82 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 17 394 1.36e+03 0.105 0 0 0 Crystal initStep - 1 17 394 1.36e+03 0.104 7.55e-05 0.00127 0.00127 Crystal msc - 2 17 394 1.36e+03 0 0.104 0.0637 0.0649 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 89, Parent ID = 82 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 11.7 392 1.36e+03 0.138 0 0 0 Crystal initStep - 1 11.7 392 1.36e+03 0.138 0.000198 0.002 0.002 Crystal msc - 2 11.7 392 1.36e+03 0 0.138 0.0998 0.102 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 88, Parent ID = 82 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 15 393 1.36e+03 0.102 0 0 0 Crystal initStep - 1 15 393 1.36e+03 0.102 0.000116 0.00122 0.00122 Crystal msc - 2 15 393 1.36e+03 0 0.102 0.0608 0.062 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 81, Parent ID = 17 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.1 387 1.34e+03 0.0758 0 0 0 Crystal initStep - 1 24.1 387 1.34e+03 0 0.0332 0.241 0.241 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 91, Parent ID = 81 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 24.1 387 1.34e+03 0.0426 0 0 0 Crystal initStep - 1 24.1 387 1.34e+03 0.0424 0.000188 0.000288 0.000288 Crystal msc - 2 24.1 387 1.34e+03 0 0.0424 0.0143 0.0146 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 16, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 23.1 379 1.32e+03 1.02 0 0 0 Crystal initStep - 1 23.2 379 1.32e+03 1.01 0.0123 0.0336 0.0336 Crystal msc - 2 23.3 380 1.32e+03 0.385 0.624 1.45 1.48 Crystal eIoni - 3 23.3 380 1.32e+03 0.252 0.0913 0.224 1.71 Crystal eBrem - 4 23.2 380 1.32e+03 0 0.252 0.254 1.96 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 92, Parent ID = 16 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 23.3 380 1.32e+03 0.0421 0 0 0 Crystal initStep - 1 23.2 380 1.32e+03 0 0.0332 0.0609 0.0609 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 93, Parent ID = 92 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 23.2 380 1.32e+03 0.00896 0 0 0 Crystal initStep - 1 23.2 380 1.32e+03 0.00884 0.000115 2.25e-05 2.25e-05 Crystal msc - 2 23.2 380 1.32e+03 0 0.00884 0.0011 0.00112 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 15, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 19.3 358 1.23e+03 1.25 0 0 0 Crystal initStep - 1 19.3 358 1.23e+03 1.24 0.0145 0.0427 0.0427 Crystal msc - 2 18.8 358 1.23e+03 0.37 0.868 1.64 1.68 Crystal eIoni - 3 18.8 358 1.23e+03 0 0.37 0.449 2.13 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 14, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 17.7 350 1.2e+03 4.67 0 0 0 Crystal initStep - 1 17.8 350 1.2e+03 4.58 0.0899 0.247 0.247 Crystal msc - 2 18 350 1.2e+03 4.48 0.0975 0.247 0.494 Crystal msc - 3 18.1 351 1.2e+03 4.36 0.123 0.247 0.741 Crystal msc - 4 18.2 351 1.2e+03 4.11 0.252 0.247 0.988 Crystal msc - 5 18.2 351 1.2e+03 4.01 0.0977 0.247 1.23 Crystal msc - 6 18.2 351 1.2e+03 3.88 0.124 0.247 1.48 Crystal msc - 7 18.2 351 1.2e+03 3.79 0.0895 0.247 1.73 Crystal msc - 8 18.1 350 1.2e+03 3.69 0.107 0.247 1.98 Crystal msc - 9 18.3 350 1.2e+03 3.59 0.0982 0.247 2.22 Crystal msc - 10 18.4 350 1.2e+03 3.47 0.124 0.247 2.47 Crystal msc - 11 18.6 350 1.2e+03 3.37 0.0977 0.247 2.72 Crystal msc - 12 18.6 350 1.2e+03 3.37 0 0.00059 2.72 Crystal CoupledTransportation - 13 18.6 350 1.2e+03 3.32 0.0517 0.142 2.86 Crystal msc - 14 18.7 350 1.2e+03 3.25 0.0689 0.142 3 Crystal msc - 15 18.8 350 1.2e+03 3.04 0.208 0.142 3.14 Crystal msc - 16 18.8 350 1.2e+03 2.97 0.0669 0.142 3.28 Crystal msc - 17 18.9 350 1.2e+03 2.88 0.0906 0.142 3.43 Crystal msc - 18 18.9 350 1.2e+03 2.83 0.053 0.142 3.57 Crystal msc - 19 19 350 1.2e+03 2.78 0.053 0.142 3.71 Crystal msc - 20 19.1 350 1.2e+03 2.73 0.0498 0.142 3.85 Crystal msc - 21 19.2 350 1.2e+03 2.67 0.053 0.142 4 Crystal msc - 22 19.3 350 1.2e+03 2.53 0.14 0.142 4.14 Crystal msc - 23 19.3 350 1.2e+03 2.52 0.00867 0.0177 4.15 Crystal CoupledTransportation - 24 19.4 350 1.2e+03 2.5 0.0258 0.0923 4.25 Crystal msc - 25 19.5 350 1.2e+03 2.46 0.0385 0.0923 4.34 Crystal msc - 26 19.6 350 1.2e+03 2.42 0.0377 0.0923 4.43 Crystal msc - 27 19.7 350 1.2e+03 2.37 0.0564 0.0923 4.52 Crystal msc - 28 19.7 350 1.2e+03 2.33 0.0323 0.0923 4.62 Crystal msc - 29 19.8 350 1.2e+03 2.3 0.0372 0.0923 4.71 Crystal msc - 30 19.8 350 1.2e+03 2.26 0.0346 0.0923 4.8 Crystal msc - 31 19.9 350 1.2e+03 2.22 0.0417 0.0923 4.89 Crystal msc - 32 20 350 1.2e+03 2.19 0.0279 0.0923 4.99 Crystal msc - 33 20 350 1.2e+03 2.16 0.0272 0.0923 5.08 Crystal msc - 34 20 350 1.2e+03 2.12 0.000579 0.00631 5.08 Crystal eBrem - 35 20.1 350 1.2e+03 2.08 0.0412 0.109 5.19 Crystal msc - 36 20.2 350 1.2e+03 2.02 0.061 0.109 5.3 Crystal msc - 37 20.2 350 1.2e+03 1.97 0.0519 0.109 5.41 Crystal msc - 38 20.3 350 1.2e+03 1.93 0.0343 0.109 5.52 Crystal msc - 39 20.4 350 1.2e+03 1.89 0.0414 0.109 5.63 Crystal msc - 40 20.5 350 1.2e+03 1.84 0.0536 0.109 5.74 Crystal msc - 41 20.5 350 1.2e+03 1.8 0.0322 0.109 5.85 Crystal msc - 42 20.5 350 1.2e+03 1.76 0.0425 0.109 5.96 Crystal msc - 43 20.5 350 1.2e+03 1.75 0.0162 0.0201 5.98 Crystal CoupledTransportation - 44 20.5 350 1.2e+03 1.72 0.0222 0.0619 6.04 Crystal msc - 45 20.5 350 1.2e+03 1.68 0.0398 0.0619 6.1 Crystal msc - 46 20.5 350 1.2e+03 1.67 0.0181 0.0619 6.17 Crystal msc - 47 20.5 350 1.2e+03 1.65 0.0165 0.0619 6.23 Crystal msc - 48 20.5 350 1.2e+03 1.61 0.0381 0.0619 6.29 Crystal msc - 49 20.4 350 1.2e+03 1.58 0.0323 0.0619 6.35 Crystal msc - 50 20.4 350 1.2e+03 1.54 0.0349 0.0619 6.41 Crystal msc - 51 20.4 350 1.2e+03 1.52 0.0204 0.0648 6.48 Crystal msc - 52 20.4 349 1.2e+03 1.49 0.032 0.0776 6.56 Crystal msc - 53 20.4 349 1.2e+03 1.46 0.0328 0.087 6.64 Crystal msc - 54 20.4 349 1.2e+03 1.42 0.0409 0.102 6.74 Crystal msc - 55 20.4 349 1.2e+03 1.37 0.0474 0.111 6.86 Crystal msc - 56 20.4 349 1.2e+03 1.35 0.0211 0.117 6.97 Crystal msc - 57 20.5 349 1.2e+03 1.31 0.0401 0.123 7.1 Crystal msc - 58 20.5 349 1.2e+03 1.24 0.0662 0.123 7.22 Crystal msc - 59 20.5 349 1.2e+03 1.18 0.0623 0.123 7.34 Crystal msc - 60 20.6 349 1.2e+03 1.11 0.0658 0.123 7.47 Crystal msc - 61 20.7 349 1.2e+03 1.06 0.0559 0.123 7.59 Crystal msc - 62 20.7 350 1.2e+03 0.937 0.0301 0.0542 7.64 Crystal eBrem - 63 20.7 350 1.2e+03 0.876 0.0612 0.123 7.77 Crystal msc - 64 20.6 350 1.2e+03 0.837 0.0391 0.123 7.89 Crystal msc - 65 20.6 350 1.2e+03 0.797 0.0403 0.123 8.01 Crystal msc - 66 20.7 349 1.2e+03 0.724 0.073 0.123 8.14 Crystal msc - 67 20.6 349 1.2e+03 0.659 0.0642 0.123 8.26 Crystal msc - 68 20.6 349 1.2e+03 0.624 0.0358 0.123 8.38 Crystal msc - 69 20.6 349 1.2e+03 0.59 0.0336 0.129 8.51 Crystal msc - 70 20.6 349 1.2e+03 0.506 0.0839 0.151 8.66 Crystal msc - 71 20.5 349 1.2e+03 0.419 0.0874 0.172 8.84 Crystal msc - 72 20.5 349 1.2e+03 0 0.419 0.533 9.37 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 95, Parent ID = 14 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 20.7 350 1.2e+03 0.0911 0 0 0 Crystal initStep - 1 20.1 350 1.2e+03 0 0.0332 0.617 0.617 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 96, Parent ID = 95 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 20.1 350 1.2e+03 0.0579 0 0 0 Crystal initStep - 1 20.1 350 1.2e+03 0.0573 0.000654 0.000481 0.000481 Crystal msc - 2 20.1 350 1.2e+03 0 0.0573 0.0236 0.0241 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 94, Parent ID = 14 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 20 350 1.2e+03 0.0441 0 0 0 Crystal initStep - 1 20.1 350 1.2e+03 0 0.0332 0.151 0.151 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 97, Parent ID = 94 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 20.1 350 1.2e+03 0.0109 0 0 0 Crystal initStep - 1 20.1 350 1.2e+03 0.0109 0 3.08e-05 3.08e-05 Crystal msc - 2 20.1 350 1.2e+03 0 0.0109 0.00154 0.00157 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 13, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 16.4 346 1.18e+03 0.758 0 0 0 Crystal initStep - 1 16.5 346 1.18e+03 0.755 0.00284 0.0234 0.0234 Crystal msc - 2 16.7 346 1.18e+03 0.113 0.508 0.351 0.374 Crystal eBrem - 3 16.7 346 1.18e+03 0 0.113 0.073 0.447 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 98, Parent ID = 13 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 16.7 346 1.18e+03 0.134 0 0 0 Crystal initStep - 1 16.7 346 1.18e+03 0 0.0332 0.0235 0.0235 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 99, Parent ID = 98 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 16.7 346 1.18e+03 0.101 0 0 0 Crystal initStep - 1 16.7 346 1.18e+03 0.0991 0.00172 0.0012 0.0012 Crystal msc - 2 16.7 346 1.18e+03 0 0.0991 0.0582 0.0594 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 12, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 15.7 344 1.17e+03 0.752 0 0 0 Crystal initStep - 1 15.7 344 1.17e+03 0.749 0.00342 0.0232 0.0232 Crystal msc - 2 15.7 344 1.17e+03 0.00729 0.741 1.14 1.16 Crystal eIoni - 3 15.7 344 1.17e+03 0 0.00729 0.000815 1.16 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 11, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 15.1 341 1.16e+03 0.694 0 0 0 Crystal initStep - 1 15.1 341 1.16e+03 0.614 0.0803 0.0209 0.0209 Crystal msc - 2 15 341 1.16e+03 0.0179 0.596 0.852 0.873 Crystal eBrem - 3 15 341 1.16e+03 0 0.0179 0.00341 0.877 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 10, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 13.5 328 1.11e+03 2.42 0 0 0 Crystal initStep - 1 13.6 328 1.11e+03 2.35 0.0682 0.0884 0.0884 Crystal msc - 2 13.5 327 1.11e+03 1.34 1.01 2.27 2.36 Crystal eIoni - 3 13.7 327 1.11e+03 1.05 0.2 0.453 2.81 Crystal eBrem - 4 13.8 327 1.11e+03 0.427 0.625 1.49 4.3 Crystal eIoni - 5 13.7 327 1.11e+03 0 0.427 0.547 4.85 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 100, Parent ID = 10 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 13.7 327 1.11e+03 0.0923 0 0 0 Crystal initStep - 1 13.7 327 1.11e+03 0 0.0332 0.0201 0.0201 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 101, Parent ID = 100 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 13.7 327 1.11e+03 0.0591 0 0 0 Crystal initStep - 1 13.7 327 1.11e+03 0.059 5.27e-05 0.000497 0.000497 Crystal msc - 2 13.7 327 1.11e+03 0 0.059 0.0248 0.0253 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 13.2 326 1.1e+03 20.6 0 0 0 Crystal initStep - 1 14.2 326 1.11e+03 1.97 3.15 3.71 3.71 Crystal eBrem - 2 14.7 326 1.11e+03 1.23 0.742 1.29 5 Crystal eBrem - 3 15 327 1.11e+03 0.551 0.677 1.63 6.63 Crystal eIoni - 4 14.9 327 1.11e+03 0 0.551 0.774 7.41 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 102, Parent ID = 9 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 14.2 326 1.11e+03 15.5 0 0 0 Crystal initStep - 1 50 317 1.19e+03 15.5 0 95.2 95.2 Crystal CoupledTransportation - 2 61.2 315 1.22e+03 0 0 29.8 125 Crystal conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 104, Parent ID = 102 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 61.2 315 1.22e+03 2.99 0 0 0 Crystal initStep - 1 61.3 315 1.22e+03 2.93 0.0668 0.131 0.131 Crystal msc - 2 62.8 315 1.22e+03 1.91 1.01 2.56 2.69 Crystal eIoni - 3 63.1 315 1.22e+03 1.45 0.408 0.956 3.65 Crystal eBrem - 4 63.1 315 1.22e+03 1.35 0.0367 0.0964 3.75 Crystal eBrem - 5 63.9 315 1.22e+03 0.4 0.955 1.74 5.48 Crystal eIoni - 6 63.9 315 1.22e+03 0 0.4 0.489 5.97 Crystal eIoni - 7 63.9 315 1.22e+03 0 0 0 5.97 Crystal annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 108, Parent ID = 104 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 63.9 315 1.22e+03 0.511 0 0 0 Crystal initStep - 1 61.6 310 1.21e+03 0.175 0 8.46 8.46 Crystal compt - 2 61 313 1.22e+03 0 0.0332 4.29 12.7 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 110, Parent ID = 108 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 61 313 1.22e+03 0.142 0 0 0 Crystal initStep - 1 61 313 1.22e+03 0.142 0.000533 0.0021 0.0021 Crystal msc - 2 61 313 1.22e+03 0 0.142 0.105 0.107 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 109, Parent ID = 108 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 61.6 310 1.21e+03 0.336 0 0 0 Crystal initStep - 1 61.6 310 1.21e+03 0.333 0.00285 0.00779 0.00779 Crystal msc - 2 61.6 310 1.21e+03 0.202 0.00686 0.0132 0.021 Crystal eBrem - 3 61.6 310 1.21e+03 0 0.202 0.182 0.203 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 111, Parent ID = 109 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 61.6 310 1.21e+03 0.123 0 0 0 Crystal initStep - 1 59.6 312 1.22e+03 0 0.0332 3.39 3.39 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 112, Parent ID = 111 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 59.6 312 1.22e+03 0.0903 0 0 0 Crystal initStep - 1 59.6 312 1.22e+03 0.0873 0.003 0.00101 0.00101 Crystal msc - 2 59.6 312 1.22e+03 0 0.0873 0.0475 0.0485 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 107, Parent ID = 104 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 63.9 315 1.22e+03 0.511 0 0 0 Crystal initStep - 1 76 342 1.25e+03 0.302 0 44.8 44.8 Crystal compt - 2 77.2 325 1.28e+03 0 0.0332 32.5 77.3 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 114, Parent ID = 107 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 77.2 325 1.28e+03 0.268 0 0 0 Crystal initStep - 1 77.2 325 1.28e+03 0.265 0.00376 0.00561 0.00561 Crystal msc - 2 77.2 325 1.28e+03 0 0.265 0.275 0.28 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 113, Parent ID = 107 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 76 342 1.25e+03 0.209 0 0 0 Crystal initStep - 1 76 342 1.25e+03 0.204 0.00579 0.00385 0.00385 Crystal msc - 2 76 342 1.25e+03 0 0.204 0.184 0.188 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 106, Parent ID = 104 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 63.1 315 1.22e+03 0.0632 0 0 0 Crystal initStep - 1 63.2 315 1.22e+03 0 0.0332 0.0457 0.0457 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 115, Parent ID = 106 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 63.2 315 1.22e+03 0.03 0 0 0 Crystal initStep - 1 63.2 315 1.22e+03 0.0299 0.000116 0.00016 0.00016 Crystal msc - 2 63.2 315 1.22e+03 0 0.0299 0.00796 0.00812 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 105, Parent ID = 104 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 63.1 315 1.22e+03 0.0497 0 0 0 Crystal initStep - 1 63.3 315 1.22e+03 0 0.0332 0.315 0.315 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 116, Parent ID = 105 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 63.3 315 1.22e+03 0.0165 0 0 0 Crystal initStep - 1 63.3 315 1.22e+03 0.0159 0.00063 5.97e-05 5.97e-05 Crystal msc - 2 63.3 315 1.22e+03 0 0.0159 0.00279 0.00285 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 103, Parent ID = 102 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 61.2 315 1.22e+03 11.5 0 0 0 Crystal initStep - 1 62.2 315 1.22e+03 10.3 1.18 1.68 1.68 Crystal msc - 2 64 315 1.22e+03 8.98 1.34 2.85 4.53 Crystal msc - 3 63 318 1.22e+03 7.43 1.55 2.85 7.37 Crystal msc - 4 61.8 320 1.22e+03 5.7 1.74 2.85 10.2 Crystal msc - 5 61.3 320 1.23e+03 4.8 0.621 1.38 11.6 Crystal eBrem - 6 61.1 320 1.23e+03 4.06 0.597 1.54 13.1 Crystal eBrem - 7 61.1 319 1.23e+03 2.59 1.47 3.01 16.2 Crystal eIoni - 8 62.4 319 1.23e+03 1.39 1.2 2.38 18.5 Crystal eIoni - 9 62.9 318 1.23e+03 0.52 0.873 1.75 20.3 Crystal eIoni - 10 63 318 1.23e+03 0 0.52 0.717 21 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 118, Parent ID = 103 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 61.1 320 1.23e+03 0.141 0 0 0 Crystal initStep - 1 61.3 321 1.23e+03 0 0.0332 1.43 1.43 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 119, Parent ID = 118 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 61.3 321 1.23e+03 0.108 0 0 0 Crystal initStep - 1 61.3 321 1.23e+03 0.106 0.00178 0.00135 0.00135 Crystal msc - 2 61.3 321 1.23e+03 0 0.106 0.0655 0.0668 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 117, Parent ID = 103 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 61.3 320 1.23e+03 0.278 0 0 0 Crystal initStep - 1 59.7 318 1.24e+03 0.189 0 16.9 16.9 Crystal compt - 2 59.1 328 1.25e+03 0 0.0332 10.5 27.3 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 121, Parent ID = 117 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 59.1 328 1.25e+03 0.156 0 0 0 Crystal initStep - 1 59.1 328 1.25e+03 0.155 0.000272 0.00242 0.00242 Crystal msc - 2 59.1 328 1.25e+03 0 0.155 0.121 0.123 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 120, Parent ID = 117 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 59.7 318 1.24e+03 0.0888 0 0 0 Crystal initStep - 1 59.7 318 1.24e+03 0.0876 0.00119 0.000978 0.000978 Crystal msc - 2 59.7 318 1.24e+03 0 0.0876 0.0478 0.0488 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 11.4 307 1.03e+03 4.38 0 0 0 Crystal initStep - 1 11.3 307 1.03e+03 4.27 0.109 0.22 0.22 Crystal msc - 2 11.2 307 1.03e+03 2.52 0.138 0.15 0.37 Crystal eBrem - 3 10.5 307 1.03e+03 2.06 0.452 1.02 1.39 Crystal eBrem - 4 9.65 306 1.03e+03 1.03 1.03 2.13 3.52 Crystal eIoni - 5 9.71 307 1.03e+03 0.194 0.837 1.47 4.98 Crystal eIoni - 6 9.72 307 1.03e+03 0.102 0.00719 0.00679 4.99 Crystal eBrem - 7 9.72 307 1.03e+03 0 0.102 0.0611 5.05 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 123, Parent ID = 8 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 9.72 307 1.03e+03 0.0845 0 0 0 Crystal initStep - 1 9.78 307 1.03e+03 0 0.0332 0.16 0.16 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 124, Parent ID = 123 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 9.78 307 1.03e+03 0.0513 0 0 0 Crystal initStep - 1 9.78 307 1.03e+03 0.0513 6.2e-05 0.000392 0.000392 Crystal msc - 2 9.78 307 1.03e+03 0 0.0513 0.0195 0.0199 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 122, Parent ID = 8 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 11.2 307 1.03e+03 1.62 0 0 0 Crystal initStep - 1 9.74 308 1.06e+03 1.57 0 29.1 29.1 Crystal compt - 2 10.7 310 1.08e+03 0.96 0 15.8 44.9 Crystal compt - 3 10.5 314 1.08e+03 0.949 0 5.88 50.8 Crystal compt - 4 10.3 316 1.08e+03 0.215 0 3.75 54.5 Crystal compt - 5 8.29 315 1.08e+03 0 0.0332 5.93 60.5 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 129, Parent ID = 122 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 8.29 315 1.08e+03 0.182 0 0 0 Crystal initStep - 1 8.29 315 1.08e+03 0.178 0.00407 0.0031 0.0031 Crystal msc - 2 8.29 315 1.08e+03 0 0.178 0.15 0.153 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 128, Parent ID = 122 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 10.3 316 1.08e+03 0.734 0 0 0 Crystal initStep - 1 10.4 316 1.08e+03 0.729 0.00477 0.0224 0.0224 Crystal msc - 2 10.4 316 1.08e+03 0 0.729 1.1 1.13 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 127, Parent ID = 122 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 10.5 314 1.08e+03 0.0118 0 0 0 Crystal initStep - 1 10.5 314 1.08e+03 0.0118 0 3.49e-05 3.49e-05 Crystal msc - 2 10.5 314 1.08e+03 0 0.0118 0.00175 0.00178 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 126, Parent ID = 122 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 10.7 310 1.08e+03 0.608 0 0 0 Crystal initStep - 1 10.7 310 1.08e+03 0.596 0.0126 0.0176 0.0176 Crystal msc - 2 10.7 310 1.08e+03 0 0.596 0.859 0.876 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 125, Parent ID = 122 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 9.74 308 1.06e+03 0.048 0 0 0 Crystal initStep - 1 9.74 308 1.06e+03 0.048 1.02e-05 0.000351 0.000351 Crystal msc - 2 9.73 308 1.06e+03 0 0.048 0.0175 0.0179 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 11.4 306 1.03e+03 3.21 0 0 0 Crystal initStep - 1 11.5 306 1.03e+03 3.16 0.0498 0.132 0.132 Crystal msc - 2 12.2 306 1.03e+03 2.57 0.586 1.39 1.52 Crystal msc - 3 12.4 307 1.03e+03 1.99 0.584 1.39 2.92 Crystal msc - 4 12.8 307 1.03e+03 0.0713 0.23 0.574 3.49 Crystal eBrem - 5 12.8 307 1.03e+03 0 0.0713 0.034 3.52 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 130, Parent ID = 7 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 12.8 307 1.03e+03 1.68 0 0 0 Crystal initStep - 1 12.2 300 1.03e+03 1.68 0 6.88 6.88 Crystal CoupledTransportation - 2 12.1 300 1.03e+03 0.286 0 0.487 7.37 Crystal compt - 3 11.5 300 1.03e+03 0.286 0 0.789 8.16 Crystal CoupledTransportation - 4 2.58 307 1.02e+03 0 0.0332 11.5 19.7 Crystal phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 132, Parent ID = 130 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 2.58 307 1.02e+03 0.252 0 0 0 Crystal initStep - 1 2.57 307 1.02e+03 0.249 0.00382 0.00511 0.00511 Crystal msc - 2 2.57 307 1.02e+03 0 0.249 0.25 0.255 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 131, Parent ID = 130 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 12.1 300 1.03e+03 1.4 0 0 0 Crystal initStep - 1 12.1 299 1.03e+03 1.38 0.0193 0.0484 0.0484 Crystal msc - 2 12.1 299 1.03e+03 1.33 0.0484 0.127 0.176 Crystal msc - 3 12.1 299 1.03e+03 1.26 0.0726 0.127 0.303 Crystal msc - 4 12 299 1.03e+03 1.21 0.0452 0.127 0.431 Crystal msc - 5 12 299 1.03e+03 1.17 0.0426 0.149 0.58 Crystal msc - 6 12.1 299 1.03e+03 1.11 0.0623 0.167 0.747 Crystal msc - 7 12.2 299 1.03e+03 1.04 0.067 0.167 0.914 Crystal msc - 8 12.1 299 1.03e+03 0.975 0.0671 0.167 1.08 Crystal msc - 9 12.1 300 1.03e+03 0.895 0.0796 0.167 1.25 Crystal msc - 10 12 300 1.03e+03 0.832 0.0629 0.167 1.41 Crystal msc - 11 12.1 299 1.03e+03 0.754 0.078 0.167 1.58 Crystal msc - 12 12.1 299 1.03e+03 0.688 0.0654 0.167 1.75 Crystal msc - 13 12 299 1.03e+03 0.27 0.418 0.167 1.92 Crystal msc - 14 12.1 299 1.03e+03 0 0.27 0.283 2.2 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 9.94 278 932 0.00109 0 0 0 WorldPhysical initStep - 1 9.91 278 932 0 0.00109 0.0654 0.0654 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 8 244 818 0.00266 0 0 0 DriftChamberPhysical initStep - 1 8.15 244 818 0.00266 0 0.158 0.158 DriftChamberPhysical msc - 2 9 245 819 3.09e-06 0.00265 1.32 1.48 DriftChamberPhysical eIoni - 3 9 245 819 0 3.09e-06 0.00823 1.48 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = anti_nu_mu, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0321 106 354 50.9 0 0 0 DriftChamberPhysical initStep - 1 -216 320 900 50.9 0 625 625 WorldPhysical CoupledTransportation - 2 -236 339 950 50.9 0 114 740 WorldPhysical CoupledTransportation - 3 -255 359 1e+03 50.9 0 57.2 797 Crystal CoupledTransportation - 4 -297 400 1.11e+03 50.9 0 120 917 Crystal CoupledTransportation - 5 -300 403 1.11e+03 50.9 0 8.65 926 Crystal CoupledTransportation - 6 -348 450 1.23e+03 50.9 0 138 1.06e+03 Crystal CoupledTransportation - 7 -350 452 1.24e+03 50.9 0 7.03 1.07e+03 Crystal CoupledTransportation - 8 -398 500 1.36e+03 50.9 0 139 1.21e+03 Crystal CoupledTransportation - 9 -400 502 1.37e+03 50.9 0 5.41 1.21e+03 Crystal CoupledTransportation - 10 -414 515 1.4e+03 50.9 0 39.4 1.25e+03 WorldPhysical CoupledTransportation - 11 -453 554 1.5e+03 50.9 0 114 1.37e+03 HadCaloPhysical CoupledTransportation - 12 -473 574 1.55e+03 50.9 0 57.2 1.43e+03 Tower CoupledTransportation - 13 -550 650 1.74e+03 50.9 0 223 1.65e+03 Tower CoupledTransportation - 14 -550 650 1.74e+03 50.9 0 0.567 1.65e+03 Tower CoupledTransportation - 15 -650 749 2e+03 50.9 0 289 1.94e+03 Tower CoupledTransportation - 16 -651 750 2e+03 50.9 0 2.66 1.94e+03 Tower CoupledTransportation - 17 -750 848 2.25e+03 50.9 0 287 2.23e+03 Tower CoupledTransportation - 18 -752 850 2.26e+03 50.9 0 5.9 2.23e+03 Tower CoupledTransportation - 19 -829 926 2.45e+03 50.9 0 222 2.46e+03 HadCaloPhysical CoupledTransportation - 20 -848 945 2.5e+03 50.9 0 57.2 2.51e+03 WorldPhysical CoupledTransportation - 21 -868 965 2.55e+03 50.9 0 1.72e+03 4.23e+03 WorldPhysical CoupledTransportation - 22 -1.44e+03 1.53e+03 4e+03 50.9 0 1.66e+03 5.89e+03 OutOfWorld CoupledTransportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00146 5.71 19 0.00139 0 0 0 WorldPhysical initStep - 1 0.0118 5.68 19 0 0.00139 0.0915 0.0915 WorldPhysical eIoni ->>> Event 2 - 6 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.2650677129597008 (GeV) - 4 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.7306737604949242 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 30 100 1e+03 0.0201 104 104 DriftChamberPhysical CoupledTransportation - 2 -0.332 270 900 1e+03 0.0196 835 940 WorldPhysical CoupledTransportation - 3 -0.352 285 950 1e+03 0.0182 94.2 1.03e+03 WorldPhysical hIoni - 4 -0.352 285 950 0 1e+03 0 1.03e+03 WorldPhysical G4FSMP_parallelGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.352 285 950 0.059 0 0 0 WorldPhysical initStep - 1 -11.4 285 956 0.0493 0.00969 14.4 14.4 WorldPhysical eIoni - 2 -15.1 288 959 0.0342 0.00709 5.28 19.7 WorldPhysical eIoni - 3 -14.6 288 960 0.0255 0.00127 0.877 20.6 WorldPhysical eIoni - 4 -13.5 291 962 0.0173 0.00824 4.33 24.9 WorldPhysical eIoni - 5 -13.4 291 962 0.0168 0.000468 0.424 25.3 WorldPhysical eIoni - 6 -13.4 291 964 0.0124 0.00447 2.78 28.1 WorldPhysical eIoni - 7 -13.3 292 966 0.00391 0.00845 2.12 30.2 WorldPhysical eIoni - 8 -13.2 292 966 0 0.00391 0.47 30.7 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -14.6 288 960 0.00744 0 0 0 WorldPhysical initStep - 1 -14.7 288 960 0.00731 0.00013 0.0456 0.0456 WorldPhysical msc - 2 -14.4 288 960 0.00353 0.00378 1.33 1.37 WorldPhysical eIoni - 3 -14.4 288 961 0 0.00353 0.397 1.77 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -15.1 288 959 0.00801 0 0 0 WorldPhysical initStep - 1 -15.2 288 959 0.00801 0 0.0533 0.0533 WorldPhysical msc - 2 -16 287 959 0.00243 0.00559 1.46 1.51 WorldPhysical eIoni - 3 -16 287 959 0 0.00243 0.212 1.72 WorldPhysical eIoni + 0 0 9.63 32.1 0.0077 0 0 0 WorldPhysical initStep + 1 0.662 9.79 32.1 0 0.0077 1.4 1.4 WorldPhysical eIoni >>> Event 3 2 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.03999532023253878 (GeV) - 14 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.9598876855809306 (GeV) + Total energy deposition in EM calorimeter crytals : 0.03999740851330164 (GeV) + 15 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.9399391000625886 (GeV) ********************************************************************************************************* * G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 @@ -5006,133 +2099,55 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 30 100 1e+03 0.016 104 104 DriftChamberPhysical CoupledTransportation - 2 -0.00276 101 335 1e+03 0.00527 246 350 DriftChamberPhysical hIoni - 3 0.00139 122 407 1e+03 0.00158 74.9 425 DriftChamberPhysical hIoni - 4 0.0249 270 900 1e+03 0.00979 515 940 WorldPhysical CoupledTransportation - 5 0.025 271 903 1e+03 0.000449 2.93 943 WorldPhysical hIoni - 6 0.0244 275 918 999 0.00247 15.7 958 WorldPhysical hIoni - 7 0.00716 285 950 999 0.0138 85.8 1.04e+03 WorldPhysical CoupledTransportation - 8 0.00716 285 950 0 999 0 1.04e+03 WorldPhysical G4FSMP_parallelGeom + 1 0.0024 8.91 29.7 1e+03 0.00533 31 31 WorldPhysical hIoni + 2 0.00297 17.3 57.8 1e+03 0.00418 29.4 60.4 WorldPhysical hIoni + 3 0.00659 30 100 1e+03 0.00498 44 104 DriftChamberPhysical CoupledTransportation + 4 0.0202 197 657 1e+03 0.014 582 686 DriftChamberPhysical hIoni + 5 0.028 236 787 1e+03 0.00423 136 822 DriftChamberPhysical hIoni + 6 0.0261 270 900 1e+03 0.00209 118 940 WorldPhysical CoupledTransportation + 7 0.024 285 950 1e+03 0.00593 52.2 992 WorldPhysical G4FSMP_parallelGeom + 8 0.024 285 950 0 1e+03 0 992 WorldPhysical G4FSMP_parallelGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0244 275 918 0.519 0 0 0 WorldPhysical initStep - 1 11 291 926 0.516 0.0017 20.7 20.7 WorldPhysical eIoni - 2 12.2 293 927 0.514 0.000458 2.74 23.4 WorldPhysical eIoni - 3 13 294 928 0.512 0.000372 1.71 25.1 WorldPhysical eIoni - 4 34 331 950 0.485 0.027 162 187 WorldPhysical CoupledTransportation - 5 39.6 333 955 0.483 0.000986 7.8 195 WorldPhysical eIoni - 6 46.8 337 961 0.48 0.00121 10.3 205 WorldPhysical eIoni - 7 92.8 369 1e+03 0.471 0.00915 69.7 275 Crystal CoupledTransportation - 8 92.8 369 1e+03 0.468 0.00215 0.0125 275 Crystal msc - 9 92.8 369 1e+03 0.466 0.00281 0.0125 275 Crystal msc - 10 92.8 369 1e+03 0.458 0.00769 0.0125 275 Crystal msc - 11 92.8 369 1e+03 0.452 0.00577 0.0125 275 Crystal msc - 12 92.8 369 1e+03 0.446 0.0063 0.0125 275 Crystal msc - 13 92.9 369 1e+03 0.439 0.00727 0.0125 275 Crystal msc - 14 92.9 369 1e+03 0.436 0.00241 0.0125 275 Crystal msc - 15 92.9 369 1e+03 0.431 0.00484 0.0125 275 Crystal msc - 16 92.9 369 1e+03 0.427 0.00432 0.0125 275 Crystal msc - 17 92.9 369 1e+03 0.414 0.0134 0.0125 275 Crystal msc - 18 92.9 369 1e+03 0.412 0.00164 0.0125 275 Crystal msc - 19 92.9 369 1e+03 0.408 0.00442 0.0125 275 Crystal msc - 20 92.9 369 1e+03 0.4 0.00767 0.0125 275 Crystal msc - 21 92.9 369 1e+03 0.372 0.0276 0.0125 275 Crystal msc - 22 92.9 369 1e+03 0.206 0.166 0.0125 275 Crystal msc - 23 92.9 369 1e+03 0.199 0.0069 0.0125 275 Crystal msc - 24 92.9 369 1e+03 0.191 0.00822 0.0125 275 Crystal msc - 25 92.9 369 1e+03 0.185 0.00642 0.0125 275 Crystal msc - 26 92.9 369 1e+03 0.179 0.00532 0.0125 275 Crystal msc - 27 92.9 369 1e+03 0.17 0.00913 0.0125 275 Crystal msc - 28 92.9 369 1e+03 0.166 0.00398 0.0125 275 Crystal msc - 29 92.9 369 1e+03 0.148 0.0179 0.0125 275 Crystal msc - 30 92.9 369 1e+03 0.141 0.00684 0.0125 275 Crystal msc - 31 92.9 369 1e+03 0.135 0.00693 0.0125 275 Crystal msc - 32 92.9 369 1e+03 0.109 0.0258 0.0125 275 Crystal msc - 33 92.9 369 1e+03 0.0934 0.0154 0.0125 275 Crystal msc - 34 92.9 369 1e+03 0.079 0.0144 0.0125 275 Crystal msc - 35 92.9 369 1e+03 0.0666 0.0124 0.0125 275 Crystal msc - 36 92.9 369 1e+03 0.0504 0.0162 0.0125 275 Crystal msc - 37 92.9 369 1e+03 0.0226 0.0277 0.0125 275 Crystal msc - 38 92.9 369 1e+03 0 0.0226 0.00502 275 Crystal eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 10, Parent ID = 5 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 46.8 337 961 0.00193 0 0 0 WorldPhysical initStep - 1 46.8 337 961 0.00186 6.85e-05 0.0043 0.0043 WorldPhysical msc - 2 46.8 337 961 0 0.00186 0.14 0.145 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 5 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 39.6 333 955 0.00119 0 0 0 WorldPhysical initStep - 1 39.6 333 955 0.0011 9.81e-05 0.0019 0.0019 WorldPhysical msc - 2 39.6 333 955 0 0.0011 0.0656 0.0675 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 5 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 13 294 928 0.00142 0 0 0 WorldPhysical initStep - 1 13 294 928 0 0.00142 0.094 0.094 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 5 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 12.2 293 927 0.00123 0 0 0 WorldPhysical initStep - 1 12.2 293 927 0 0.00123 0.0768 0.0768 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 5 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 11 291 926 0.00179 0 0 0 WorldPhysical initStep - 1 11 291 926 0 0.00179 0.133 0.133 WorldPhysical eIoni + 0 0.028 236 787 0.00181 0 0 0 DriftChamberPhysical initStep + 1 0.00228 237 787 0 0.00181 0.753 0.753 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.025 271 903 0.00748 0 0 0 WorldPhysical initStep - 1 0.806 271 902 0.00184 0.00564 1.36 1.36 WorldPhysical eIoni - 2 0.84 271 902 0 0.00184 0.138 1.5 WorldPhysical eIoni + 0 0.0202 197 657 0.00864 0 0 0 DriftChamberPhysical initStep + 1 -2.22 200 657 0.00685 0.0018 3.88 3.88 DriftChamberPhysical eIoni + 2 -4.4 202 656 0.00522 0.00162 3.02 6.9 DriftChamberPhysical eIoni + 3 -5.88 203 655 0.00358 0.00164 2.36 9.26 DriftChamberPhysical eIoni + 4 -7.47 203 654 0.00141 0.00217 1.74 11 DriftChamberPhysical eIoni + 5 -7.72 203 654 0 0.00141 0.513 11.5 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00139 122 407 0.00123 0 0 0 DriftChamberPhysical initStep - 1 0.0317 122 407 0.00108 0.000157 0.0397 0.0397 DriftChamberPhysical msc - 2 0.2 122 407 0 0.00108 0.343 0.383 DriftChamberPhysical eIoni + 0 0.00297 17.3 57.8 0.00163 0 0 0 WorldPhysical initStep + 1 0.0501 17.3 57.8 0 0.00163 0.114 0.114 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.00276 101 335 0.00177 0 0 0 DriftChamberPhysical initStep - 1 -0.074 101 335 0.00157 0.0002 0.075 0.075 DriftChamberPhysical msc - 2 -0.503 101 335 0 0.00157 0.6 0.675 DriftChamberPhysical eIoni + 0 0.0024 8.91 29.7 0.00374 0 0 0 WorldPhysical initStep + 1 0.176 8.98 29.7 0 0.00374 0.437 0.437 WorldPhysical eIoni >>> Event 4 - 1 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.0004705997596578213 (GeV) - 13 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.9794326508950655 (GeV) + 3 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.05999660695779151 (GeV) + 14 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.9399468423387337 (GeV) number of event = 5 ### Run 6 start. @@ -5142,54 +2157,34 @@ number of event = 5 Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 -30 100 1e+03 0.0181 104 104 DriftChamberPhysical CoupledTransportation - 2 -0.0119 -72.7 242 1e+03 0.00469 148 253 DriftChamberPhysical hIoni - 3 -0.0131 -189 630 1e+03 0.0116 405 658 DriftChamberPhysical hIoni - 4 -0.0126 -270 900 1e+03 0.00626 282 940 WorldPhysical CoupledTransportation - 5 -0.0126 -271 901 1e+03 0.000449 1.49 941 WorldPhysical hIoni - 6 -0.0124 -285 950 1e+03 0.0162 103 1.04e+03 WorldPhysical CoupledTransportation - 7 -0.0124 -285 950 0 1e+03 0 1.04e+03 WorldPhysical G4FSMP_parallelGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0126 -271 901 0.00638 0 0 0 WorldPhysical initStep - 1 -0.000902 -271 901 0.00466 0.00039 0.229 0.229 WorldPhysical eIoni - 2 0.037 -271 901 0 0.00466 0.64 0.869 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 4 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.000902 -271 901 0.00133 0 0 0 WorldPhysical initStep - 1 -0.024 -271 901 0 0.00133 0.0859 0.0859 WorldPhysical eIoni + 1 0 -30 100 1e+03 0.0213 104 104 DriftChamberPhysical CoupledTransportation + 2 0.0432 -75.3 251 1e+03 0.00384 158 262 DriftChamberPhysical hIoni + 3 0.0545 -86 287 1e+03 0.00104 37.3 299 DriftChamberPhysical hIoni + 4 0.261 -270 900 1e+03 0.0181 640 940 WorldPhysical CoupledTransportation + 5 0.276 -285 950 1e+03 0.0123 52.2 992 WorldPhysical G4FSMP_parallelGeom + 6 0.276 -285 950 0 1e+03 0 992 WorldPhysical G4FSMP_parallelGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0131 -189 630 0.00141 0 0 0 DriftChamberPhysical initStep - 1 -0.0565 -189 630 0.00124 0.000174 0.0499 0.0499 DriftChamberPhysical msc - 2 -0.319 -189 630 0 0.00124 0.42 0.469 DriftChamberPhysical eIoni + 0 0.0545 -86 287 0.0026 0 0 0 DriftChamberPhysical initStep + 1 -0.82 -85.9 287 0.000181 0.00242 1.29 1.29 DriftChamberPhysical eIoni + 2 -0.824 -85.9 287 0 0.000181 0.0629 1.35 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0119 -72.7 242 0.00392 0 0 0 DriftChamberPhysical initStep - 1 -0.405 -72.6 242 0.00373 0.000186 0.448 0.448 DriftChamberPhysical msc - 2 -1.99 -72.3 243 0.0017 0.00203 1.8 2.25 DriftChamberPhysical eIoni - 3 -2.16 -72.4 243 0 0.0017 0.682 2.93 DriftChamberPhysical eIoni + 0 0.0432 -75.3 251 0.00173 0 0 0 DriftChamberPhysical initStep + 1 -0.457 -75.4 251 0 0.00173 0.702 0.702 DriftChamberPhysical eIoni >>> Event 0 2 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.0399972413033802 (GeV) - 12 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.9399351706294345 (GeV) + Total energy deposition in EM calorimeter crytals : 0.0399975637383238 (GeV) + 14 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.9599415297197712 (GeV) ********************************************************************************************************* * G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 @@ -5197,196 +2192,258 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.000155 -3.79 12.6 1e+03 0.0014 13.2 13.2 WorldPhysical hIoni - 2 -0.000212 -14 46.8 1e+03 0.00508 35.7 48.9 WorldPhysical hIoni - 3 -0.00562 -30 100 1e+03 0.00488 55.5 104 DriftChamberPhysical CoupledTransportation - 4 -0.0469 -118 393 1e+03 0.00686 306 410 DriftChamberPhysical hIoni - 5 -0.16 -270 900 1e+03 0.0129 530 940 WorldPhysical CoupledTransportation - 6 -0.174 -285 950 1e+03 0.0155 104 1.04e+03 WorldPhysical CoupledTransportation - 7 -0.174 -285 950 0 1e+03 0 1.04e+03 WorldPhysical G4FSMP_parallelGeom + 1 -0.00955 -27.2 90.6 1e+03 0.0181 94.6 94.6 WorldPhysical hIoni + 2 -0.00976 -30 100 1e+03 0.000594 9.85 104 DriftChamberPhysical CoupledTransportation + 3 -0.0145 -48.8 162 1e+03 0.00264 65.2 170 DriftChamberPhysical hIoni + 4 -0.0147 -64.5 215 1e+03 0.00162 54.9 224 DriftChamberPhysical hIoni + 5 -0.0106 -101 337 1e+03 0.00263 128 352 DriftChamberPhysical hIoni + 6 -0.0103 -105 350 1e+03 0.000166 13.5 366 DriftChamberPhysical hIoni + 7 0.0528 -255 849 1e+03 0.00969 521 887 DriftChamberPhysical hIoni + 8 0.0619 -270 900 1e+03 0.000968 53 940 WorldPhysical CoupledTransportation + 9 0.0715 -285 950 1e+03 0.00911 52.2 992 WorldPhysical G4FSMP_parallelGeom + 10 0.0715 -285 950 0 1e+03 0 992 WorldPhysical G4FSMP_parallelGeom ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0469 -118 393 0.00128 0 0 0 DriftChamberPhysical initStep - 1 -0.0162 -118 393 0.00118 9.46e-05 0.0427 0.0427 DriftChamberPhysical msc - 2 0.0632 -118 393 0 0.00118 0.394 0.436 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.000212 -14 46.8 0.00145 0 0 0 WorldPhysical initStep - 1 0.0134 -14.1 46.8 0 0.00145 0.097 0.097 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.000155 -3.79 12.6 0.00774 0 0 0 WorldPhysical initStep - 1 0.58 -4.59 12.7 0.00244 0.0053 1.41 1.41 WorldPhysical eIoni - 2 0.634 -4.64 12.6 0 0.00244 0.213 1.62 WorldPhysical eIoni ->>> Event 1 - 3 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.05999657106031937 (GeV) - 11 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.9199474229248972 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 -30 100 1e+03 0.0248 104 104 DriftChamberPhysical CoupledTransportation - 2 0.0151 -75.5 251 1e+03 0.00392 158 263 DriftChamberPhysical hIoni - 3 0.063 -179 597 1e+03 0.0098 361 624 DriftChamberPhysical hIoni - 4 0.0777 -270 900 1e+03 0.00659 316 940 WorldPhysical CoupledTransportation - 5 0.0786 -285 950 1e+03 0.0114 80.7 1.02e+03 WorldPhysical hIoni - 6 0.0786 -285 950 0 1e+03 0 1.02e+03 WorldPhysical G4FSMP_parallelGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0786 -285 950 0.0019 0 0 0 WorldPhysical initStep - 1 0.0819 -285 950 0.0019 0 0.00417 0.00417 WorldPhysical msc - 2 0.0859 -285 950 0.00181 8.9e-05 0.00417 0.00834 WorldPhysical msc - 3 0.0897 -285 950 0.00175 6.46e-05 0.00417 0.0125 WorldPhysical msc - 4 0.0932 -285 950 0.00155 0.000197 0.00417 0.0167 WorldPhysical msc - 5 0.097 -285 950 0.00147 8.09e-05 0.00417 0.0208 WorldPhysical msc - 6 0.101 -285 950 0.00139 8.13e-05 0.00417 0.025 WorldPhysical msc - 7 0.104 -285 950 0.00137 1.63e-05 0.00417 0.0292 WorldPhysical msc - 8 0.107 -285 950 0.00133 3.66e-05 0.00417 0.0333 WorldPhysical msc - 9 0.11 -285 950 0.00133 0 0.00417 0.0375 WorldPhysical msc - 10 0.114 -285 950 0.00128 5.94e-05 0.00417 0.0417 WorldPhysical msc - 11 0.116 -285 950 0.00126 1.23e-05 0.00417 0.0459 WorldPhysical msc - 12 0.12 -285 950 0.00126 0 0.00417 0.05 WorldPhysical msc - 13 0.124 -285 950 0.00123 3.53e-05 0.00417 0.0542 WorldPhysical msc - 14 0.127 -285 950 0.0011 0.000125 0.00417 0.0584 WorldPhysical msc - 15 0.129 -285 950 0.0011 0 0.00417 0.0625 WorldPhysical msc - 16 0.13 -285 950 0.0011 1.09e-06 0.0046 0.0671 WorldPhysical msc - 17 0.131 -285 950 0.0011 2.64e-06 0.00521 0.0723 WorldPhysical msc - 18 0.131 -285 950 0.0011 0 0.00612 0.0785 WorldPhysical msc - 19 0.129 -285 950 0.000984 0.000116 0.00703 0.0855 WorldPhysical msc - 20 0.125 -285 950 0.000839 0.000145 0.0082 0.0937 WorldPhysical msc - 21 0.125 -285 950 0.000737 0.000101 0.00934 0.103 WorldPhysical msc - 22 0.124 -285 950 0 0.000737 0.0398 0.143 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.063 -179 597 0.00122 0 0 0 DriftChamberPhysical initStep - 1 0.0866 -179 597 0.00122 0 0.0386 0.0386 DriftChamberPhysical msc - 2 0.253 -180 597 0 0.00122 0.409 0.448 DriftChamberPhysical eIoni ->>> Event 2 - 2 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.03999761638074826 (GeV) - 15 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.939943984947584 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 2.65e-05 -5.2 17.3 1e+03 0.00165 18.1 18.1 WorldPhysical hIoni - 2 -0.00404 -30 100 1e+03 0.0115 86.3 104 DriftChamberPhysical CoupledTransportation - 3 -0.00889 -88 294 1e+03 0.00499 202 306 DriftChamberPhysical hIoni - 4 -0.0553 -270 900 1e+03 0.017 633 940 WorldPhysical CoupledTransportation - 5 -0.0578 -285 950 1e+03 0.0217 104 1.04e+03 WorldPhysical CoupledTransportation - 6 -0.0578 -285 950 0 1e+03 0 1.04e+03 WorldPhysical G4FSMP_parallelGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.00889 -88 294 0.00164 0 0 0 DriftChamberPhysical initStep - 1 -0.0708 -88.1 294 0.00154 0.000101 0.0662 0.0662 DriftChamberPhysical msc - 2 -0.45 -88.2 293 0 0.00154 0.581 0.647 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 2.65e-05 -5.2 17.3 0.00125 0 0 0 WorldPhysical initStep - 1 0.0295 -5.21 17.3 0 0.00125 0.0782 0.0782 WorldPhysical eIoni ->>> Event 3 - 2 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.03999761069793511 (GeV) - 12 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.9599426567504429 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.000137 -1.98 6.6 1e+03 0.000698 6.89 6.89 WorldPhysical hIoni - 2 0.0015 -9.59 32 1e+03 0.00927 26.5 33.4 WorldPhysical hIoni - 3 0.00198 -13.3 44.2 1e+03 0.00286 12.8 46.2 WorldPhysical hIoni - 4 0.00124 -24.8 82.8 1e+03 0.00406 40.2 86.4 WorldPhysical hIoni - 5 -0.000247 -29 96.6 1e+03 0.00191 14.5 101 WorldPhysical hIoni - 6 -0.00086 -30 100 1e+03 0.0005 3.5 104 DriftChamberPhysical CoupledTransportation - 7 -0.127 -270 900 1e+03 0.0236 835 940 WorldPhysical CoupledTransportation - 8 -0.136 -285 950 1e+03 0.0143 104 1.04e+03 WorldPhysical CoupledTransportation - 9 -0.136 -285 950 0 1e+03 0 1.04e+03 WorldPhysical G4FSMP_parallelGeom + 0 0.0528 -255 849 0.00149 0 0 0 DriftChamberPhysical initStep + 1 0.0943 -255 849 0 0.00149 0.553 0.553 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.000247 -29 96.6 0.00127 0 0 0 WorldPhysical initStep - 1 -0.0309 -29 96.7 0 0.00127 0.0799 0.0799 WorldPhysical eIoni + 0 -0.0103 -105 350 0.00788 0 0 0 DriftChamberPhysical initStep + 1 -3.14 -104 351 0.00663 0.00126 3.48 3.48 DriftChamberPhysical eIoni + 2 -5.84 -103 351 0.00433 0.00229 2.92 6.4 DriftChamberPhysical eIoni + 3 -7.28 -102 351 0.00287 0.00146 2.03 8.43 DriftChamberPhysical eIoni + 4 -8.4 -102 351 0.000985 0.00189 1.43 9.86 DriftChamberPhysical eIoni + 5 -8.49 -101 351 0 0.000985 0.302 10.2 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00124 -24.8 82.8 0.00137 0 0 0 WorldPhysical initStep - 1 0.0232 -24.8 82.8 0 0.00137 0.0894 0.0894 WorldPhysical eIoni + 0 -0.0106 -101 337 0.00365 0 0 0 DriftChamberPhysical initStep + 1 -1.12 -102 338 0.00226 0.00139 1.77 1.77 DriftChamberPhysical eIoni + 2 -1.19 -103 338 0.000421 0.00184 1.08 2.85 DriftChamberPhysical eIoni + 3 -1.24 -103 338 0 0.000421 0.112 2.96 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00198 -13.3 44.2 0.00362 0 0 0 WorldPhysical initStep - 1 -0.0321 -13.1 44.3 0 0.00362 0.414 0.414 WorldPhysical eIoni + 0 -0.0147 -64.5 215 0.00345 0 0 0 DriftChamberPhysical initStep + 1 -0.967 -63.3 215 0.00233 0.00111 1.69 1.69 DriftChamberPhysical eIoni + 2 -1.62 -62.8 215 0 0.00233 1.13 2.81 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.0015 -9.59 32 0.00142 0 0 0 WorldPhysical initStep - 1 -0.036 -9.59 32 0 0.00142 0.0939 0.0939 WorldPhysical eIoni + 0 -0.0145 -48.8 162 0.0135 0 0 0 DriftChamberPhysical initStep + 1 -3.39 -44.1 166 0.0118 0.00172 6.94 6.94 DriftChamberPhysical eIoni + 2 -4.84 -39.8 169 0.0098 0.00203 5.73 12.7 DriftChamberPhysical eIoni + 3 -6.25 -36 171 0.00858 0.00122 4.48 17.2 DriftChamberPhysical eIoni + 4 -7.06 -33 173 0.00684 0.00174 3.84 21 DriftChamberPhysical eIoni + 5 -6.9 -30.1 173 0.00455 0.00229 3.02 24 DriftChamberPhysical eIoni + 6 -7.19 -28.3 174 0.00337 0.00118 2.11 26.1 DriftChamberPhysical eIoni + 7 -6.16 -27.1 174 0.000814 0.00256 1.65 27.8 DriftChamberPhysical eIoni + 8 -6.12 -27 174 0 0.000814 0.234 28 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.000137 -1.98 6.6 0.00171 0 0 0 WorldPhysical initStep - 1 0.0312 -2.02 6.59 0 0.00171 0.124 0.124 WorldPhysical eIoni ->>> Event 4 + 0 -0.00955 -27.2 90.6 0.0287 0 0 0 WorldPhysical initStep + 1 -0.239 -29.4 90.5 0.0268 0.00192 2.36 2.36 WorldPhysical msc + 2 0.393 -29.5 92.7 0.0253 0.00149 2.36 4.72 WorldPhysical msc + 3 1.56 -31.4 93.2 0.0227 0.00261 2.36 7.08 WorldPhysical msc + 4 2.66 -32.5 94.8 0.0211 0.00159 2.36 9.44 WorldPhysical msc + 5 3.4 -34.4 94.1 0.019 0.00213 2.36 11.8 WorldPhysical msc + 6 3.44 -35 93.9 0.0162 0.000819 0.65 12.4 WorldPhysical eIoni + 7 2.83 -36.8 92.9 0.0116 0.00454 2.36 14.8 WorldPhysical msc + 8 2.86 -38.4 93.4 0.00503 0.00659 2.02 16.8 WorldPhysical eIoni + 9 2.93 -38.5 93.7 0 0.00503 0.728 17.6 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 2 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 3.44 -35 93.9 0.00199 0 0 0 WorldPhysical initStep + 1 3.47 -35.1 93.8 0 0.00199 0.155 0.155 WorldPhysical eIoni +>>> Event 1 1 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.01999866846345113 (GeV) + Total energy deposition in EM calorimeter crytals : 0.01999791585088299 (GeV) 12 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.9799347547091055 (GeV) + Total energy deposition in HAD calorimeter towers : 0.9798978766932663 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 -5.93e-05 -0.913 3.04 1e+03 0.000366 3.18 3.18 WorldPhysical hIoni + 2 -0.00198 -30 100 1e+03 0.0177 101 104 DriftChamberPhysical CoupledTransportation + 3 0.127 -270 900 1e+03 0.0226 835 940 WorldPhysical CoupledTransportation + 4 0.142 -285 950 1e+03 0.00454 52.2 992 WorldPhysical G4FSMP_parallelGeom + 5 0.142 -285 950 0 1e+03 0 992 WorldPhysical G4FSMP_parallelGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -5.93e-05 -0.913 3.04 0.0235 0 0 0 WorldPhysical initStep + 1 -0.0559 -0.297 3.46 0.023 0.000489 0.761 0.761 WorldPhysical msc + 2 0.166 0.275 3.89 0.0219 0.00114 0.761 1.52 WorldPhysical msc + 3 0.16 1.02 3.97 0.0213 0.000591 0.761 2.28 WorldPhysical msc + 4 0.226 1.73 4.15 0.0208 0.000523 0.761 3.04 WorldPhysical msc + 5 0.0857 2.47 4.12 0.0201 0.00067 0.767 3.81 WorldPhysical msc + 6 0.0684 3.19 4.46 0.0192 0.000842 0.811 4.62 WorldPhysical msc + 7 0.243 3.76 4.96 0.0182 0.00106 0.811 5.43 WorldPhysical msc + 8 0.239 4.1 5.14 0.0156 0.000302 0.387 5.82 WorldPhysical eIoni + 9 -0.283 4.8 5.75 0.0146 0.001 1.13 6.95 WorldPhysical msc + 10 -0.893 5.5 6.25 0.0136 0.00107 1.13 8.08 WorldPhysical msc + 11 -1.74 6.06 6 0.0107 0.00286 1.13 9.21 WorldPhysical msc + 12 -2.41 6.83 5.91 0.00818 0.00151 1.16 10.4 WorldPhysical eIoni + 13 -2.14 7.45 5.07 0.00169 0.00649 1.49 11.9 WorldPhysical eIoni + 14 -2.18 7.46 5.04 0 0.00169 0.121 12 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 2 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -2.41 6.83 5.91 0.00101 0 0 0 WorldPhysical initStep + 1 -2.43 6.83 5.9 0 0.00101 0.0584 0.0584 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 2 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.239 4.1 5.14 0.00224 0 0 0 WorldPhysical initStep + 1 0.304 4.09 5.19 0 0.00224 0.187 0.187 WorldPhysical eIoni +>>> Event 2 + 1 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.01999862698479665 (GeV) + 13 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.9599340952702389 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0 -9.57 31.9 1e+03 0.00358 33.3 33.3 WorldPhysical hIoni + 2 -0.000409 -18.5 61.8 1e+03 0.00521 31.2 64.5 WorldPhysical hIoni + 3 -0.00121 -30 100 1e+03 0.00389 39.9 104 DriftChamberPhysical CoupledTransportation + 4 -0.123 -269 898 1e+03 0.0178 833 938 DriftChamberPhysical hIoni + 5 -0.123 -270 900 1e+03 1.7e-05 1.66 940 WorldPhysical CoupledTransportation + 6 -0.124 -280 935 1e+03 0.00538 36 976 WorldPhysical hIoni + 7 -0.128 -285 950 1e+03 0.00121 16.2 992 WorldPhysical G4FSMP_parallelGeom + 8 -0.128 -285 950 0 1e+03 0 992 WorldPhysical G4FSMP_parallelGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.124 -280 935 0.00135 0 0 0 WorldPhysical initStep + 1 -0.125 -280 935 0 0.00135 0.0877 0.0877 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.123 -269 898 0.00106 0 0 0 DriftChamberPhysical initStep + 1 -0.331 -269 898 0 0.00106 0.337 0.337 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.000409 -18.5 61.8 0.00379 0 0 0 WorldPhysical initStep + 1 -0.13 -18.7 61.8 0 0.00379 0.447 0.447 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 -9.57 31.9 0.00751 0 0 0 WorldPhysical initStep + 1 -0.0861 -10.1 31.2 0.00163 0.00589 1.37 1.37 WorldPhysical eIoni + 2 -0.0388 -10.2 31.2 0 0.00163 0.114 1.48 WorldPhysical eIoni +>>> Event 3 + 2 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.03999796820012434 (GeV) + 13 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.9599512368029843 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 -0.012 -27 89.9 1e+03 0.0208 93.9 93.9 WorldPhysical hIoni + 2 -0.0136 -30 100 1e+03 0.00197 10.5 104 DriftChamberPhysical CoupledTransportation + 3 -0.0607 -83.1 277 1e+03 0.00522 185 289 DriftChamberPhysical hIoni + 4 -0.0907 -109 365 1e+03 0.00203 92.1 382 DriftChamberPhysical hIoni + 5 -0.249 -270 900 1e+03 0.0121 558 940 WorldPhysical CoupledTransportation + 6 -0.255 -274 916 1e+03 0.00663 16.7 956 WorldPhysical hIoni + 7 -0.265 -285 950 1e+03 0.00481 35.4 992 WorldPhysical G4FSMP_parallelGeom + 8 -0.265 -285 950 0 1e+03 0 992 WorldPhysical G4FSMP_parallelGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.255 -274 916 0.000999 0 0 0 WorldPhysical initStep + 1 -0.236 -274 916 0 0.000999 0.0578 0.0578 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.0907 -109 365 0.00112 0 0 0 DriftChamberPhysical initStep + 1 -0.341 -110 365 0 0.00112 0.362 0.362 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.0607 -83.1 277 0.00111 0 0 0 DriftChamberPhysical initStep + 1 0.0744 -83.3 277 0 0.00111 0.357 0.357 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.012 -27 89.9 0.00233 0 0 0 WorldPhysical initStep + 1 0.0546 -27 89.9 0 0.00233 0.199 0.199 WorldPhysical eIoni +>>> Event 4 + 2 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.03999763667633896 (GeV) + 13 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.9599432802321352 (GeV) number of event = 5 ### Run 7 start. @@ -5396,72 +2453,27 @@ number of event = 5 Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 -0.000634 -7.42 12.4 1e+03 0.00239 14.4 14.4 WorldPhysical hIoni - 2 0.00504 -60 100 1e+03 0.0168 102 117 DriftChamberPhysical CoupledTransportation - 3 0.153 -540 900 1e+03 0.0221 933 1.05e+03 WorldPhysical CoupledTransportation - 4 0.164 -570 950 1e+03 0.0125 108 1.16e+03 WorldPhysical hIoni - 5 0.164 -570 950 0 1e+03 0 1.16e+03 WorldPhysical G4FSMP_parallelGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.164 -570 950 0.0012 0 0 0 WorldPhysical initStep - 1 0.166 -570 950 0.00112 7.77e-05 0.00191 0.00191 WorldPhysical msc - 2 0.168 -570 950 0.00112 0 0.00191 0.00381 WorldPhysical msc - 3 0.168 -570 950 0.00112 0 0.00191 0.00572 WorldPhysical msc - 4 0.168 -570 950 0.00112 0 0.00191 0.00763 WorldPhysical msc - 5 0.17 -570 950 0.00102 0.000101 0.00191 0.00954 WorldPhysical msc - 6 0.172 -570 950 0.000945 7.1e-05 0.00191 0.0114 WorldPhysical msc - 7 0.173 -570 950 0.000945 0 0.00191 0.0134 WorldPhysical msc - 8 0.174 -570 950 0.000945 0 0.00191 0.0153 WorldPhysical msc - 9 0.174 -570 950 0.000945 0 0.00191 0.0172 WorldPhysical msc - 10 0.176 -570 950 0.000945 0 0.00191 0.0191 WorldPhysical msc - 11 0.176 -570 950 0.000945 0 0.00191 0.021 WorldPhysical msc - 12 0.176 -570 950 0.000945 0 0.00191 0.0229 WorldPhysical msc - 13 0.176 -570 950 0.000857 8.85e-05 0.00191 0.0248 WorldPhysical msc - 14 0.175 -570 950 0.000829 2.8e-05 0.00191 0.0267 WorldPhysical msc - 15 0.174 -570 950 0.000777 5.13e-05 0.00191 0.0286 WorldPhysical msc - 16 0.172 -570 950 0.000747 3.04e-05 0.00191 0.0305 WorldPhysical msc - 17 0.171 -570 950 0.000724 2.31e-05 0.00191 0.0324 WorldPhysical msc - 18 0.17 -570 950 0.000724 0 0.00191 0.0343 WorldPhysical msc - 19 0.169 -570 950 0.000724 0 0.00191 0.0362 WorldPhysical msc - 20 0.171 -570 950 0.000571 0.000153 0.00191 0.0381 WorldPhysical msc - 21 0.172 -570 950 0.000571 0 0.00191 0.0401 WorldPhysical msc - 22 0.173 -570 950 0.000571 0 0.00191 0.042 WorldPhysical msc - 23 0.174 -570 950 0.000571 0 0.00191 0.0439 WorldPhysical msc - 24 0.173 -570 950 0.000571 0 0.00191 0.0458 WorldPhysical msc - 25 0.172 -570 950 0.000571 0 0.00191 0.0477 WorldPhysical msc - 26 0.17 -570 950 0.000559 1.21e-05 0.00191 0.0496 WorldPhysical msc - 27 0.169 -570 950 0.000559 0 0.00191 0.0515 WorldPhysical msc - 28 0.169 -570 950 0.000559 0 0.00191 0.0534 WorldPhysical msc - 29 0.169 -570 950 0.000547 1.18e-05 0.00215 0.0556 WorldPhysical msc - 30 0.168 -570 950 0.000537 9.67e-06 0.00249 0.0581 WorldPhysical msc - 31 0.168 -570 950 0.000507 3.01e-05 0.00249 0.0605 WorldPhysical msc - 32 0.167 -570 950 0.000507 0 0.00301 0.0636 WorldPhysical msc - 33 0.166 -570 950 0.000455 5.24e-05 0.00333 0.0669 WorldPhysical msc - 34 0.164 -570 950 0.000455 0 0.00333 0.0702 WorldPhysical msc - 35 0.166 -570 950 0.000341 0.000114 0.00352 0.0737 WorldPhysical msc - 36 0.163 -570 950 0.000308 3.23e-05 0.00382 0.0775 WorldPhysical msc - 37 0.161 -570 950 0.000188 0.00012 0.00382 0.0814 WorldPhysical msc - 38 0.16 -570 950 2.97e-05 0.000159 0.00382 0.0852 WorldPhysical msc - 39 0.161 -570 950 0 2.97e-05 0.00504 0.0902 WorldPhysical eIoni + 1 0 -60 100 1e+03 0.0157 117 117 DriftChamberPhysical CoupledTransportation + 2 0.177 -361 601 1e+03 0.0144 584 701 DriftChamberPhysical hIoni + 3 0.257 -540 900 1e+03 0.00725 349 1.05e+03 WorldPhysical CoupledTransportation + 4 0.262 -570 950 1e+03 0.00917 58.3 1.11e+03 WorldPhysical G4FSMP_parallelGeom + 5 0.262 -570 950 0 1e+03 0 1.11e+03 WorldPhysical G4FSMP_parallelGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.000634 -7.42 12.4 0.00722 0 0 0 WorldPhysical initStep - 1 -0.105 -7.54 12.3 0.007 0.000227 0.205 0.205 WorldPhysical eIoni - 2 -0.433 -8.29 12.2 0.000345 0.00665 1.26 1.46 WorldPhysical eIoni - 3 -0.434 -8.29 12.2 0 0.000345 0.0186 1.48 WorldPhysical eIoni + 0 0.177 -361 601 0.00701 0 0 0 DriftChamberPhysical initStep + 1 -1.95 -359 602 0.00489 0.00213 3.1 3.1 DriftChamberPhysical eIoni + 2 -4.02 -358 602 0.00334 0.00154 2.23 5.33 DriftChamberPhysical eIoni + 3 -4.94 -359 602 0.00125 0.00209 1.64 6.97 DriftChamberPhysical eIoni + 4 -4.97 -360 602 0 0.00125 0.426 7.39 DriftChamberPhysical eIoni >>> Event 0 - 5 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.1399912885054167 (GeV) - 9 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.8399477310325001 (GeV) + 4 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.0799957184088541 (GeV) + 11 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.8599539728951814 (GeV) ********************************************************************************************************* * G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 @@ -5469,442 +2481,171 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.00167 -11.8 19.6 1e+03 0.00231 22.9 22.9 WorldPhysical hIoni - 2 0.000585 -26 43.4 1e+03 0.00317 27.7 50.6 WorldPhysical hIoni - 3 -0.0011 -34.7 57.9 1e+03 0.00234 17 67.5 WorldPhysical hIoni - 4 -0.00259 -39.2 65.4 1e+03 0.00159 8.74 76.3 WorldPhysical hIoni - 5 -0.00916 -60 100 1e+03 0.00373 40.4 117 DriftChamberPhysical CoupledTransportation - 6 -0.037 -107 179 1e+03 0.00163 91.8 208 DriftChamberPhysical hIoni - 7 -0.191 -356 593 1e+03 0.0114 483 692 DriftChamberPhysical hIoni - 8 -0.283 -540 900 1e+03 0.00877 358 1.05e+03 WorldPhysical CoupledTransportation - 9 -0.298 -570 950 1e+03 0.0158 117 1.17e+03 WorldPhysical CoupledTransportation - 10 -0.298 -570 950 0 1e+03 0 1.17e+03 WorldPhysical G4FSMP_parallelGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.191 -356 593 0.00109 0 0 0 DriftChamberPhysical initStep - 1 -0.178 -356 593 0.00103 5.53e-05 0.0314 0.0314 DriftChamberPhysical msc - 2 -0.116 -356 593 0 0.00103 0.324 0.355 DriftChamberPhysical eIoni + 1 0 -18.4 30.7 1e+03 0.00686 35.8 35.8 WorldPhysical hIoni + 2 -0.000657 -60 100 1e+03 0.0143 80.8 117 DriftChamberPhysical CoupledTransportation + 3 0.106 -288 481 1e+03 0.0116 444 561 DriftChamberPhysical hIoni + 4 0.129 -323 539 1e+03 0.00111 68.1 629 DriftChamberPhysical hIoni + 5 0.148 -349 582 1e+03 0.00125 50.1 679 DriftChamberPhysical hIoni + 6 0.224 -439 731 1e+03 0.00415 174 853 DriftChamberPhysical hIoni + 7 0.301 -540 900 1e+03 0.00418 197 1.05e+03 WorldPhysical CoupledTransportation + 8 0.328 -570 950 1e+03 0.00904 58.3 1.11e+03 WorldPhysical G4FSMP_parallelGeom + 9 0.328 -570 950 0 1e+03 0 1.11e+03 WorldPhysical G4FSMP_parallelGeom ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.037 -107 179 0.00641 0 0 0 DriftChamberPhysical initStep - 1 -1.32 -106 180 0.00523 0.00117 2.28 2.28 DriftChamberPhysical msc - 2 -3.02 -105 181 0.00382 0.00142 2.36 4.64 DriftChamberPhysical eIoni - 3 -4.6 -105 182 0.00185 0.00197 1.83 6.47 DriftChamberPhysical eIoni - 4 -5.05 -105 182 0 0.00185 0.779 7.25 DriftChamberPhysical eIoni + 0 0.224 -439 731 0.00246 0 0 0 DriftChamberPhysical initStep + 1 0.2 -440 731 0 0.00246 1.2 1.2 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.00259 -39.2 65.4 0.00234 0 0 0 WorldPhysical initStep - 1 -0.0363 -39.2 65.4 0 0.00234 0.2 0.2 WorldPhysical eIoni + 0 0.148 -349 582 0.000994 0 0 0 DriftChamberPhysical initStep + 1 -0.0615 -349 582 0 0.000994 0.305 0.305 DriftChamberPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0011 -34.7 57.9 0.0127 0 0 0 WorldPhysical initStep - 1 -0.00593 -34.9 57.8 0.0112 0.000247 0.178 0.178 WorldPhysical eIoni - 2 -0.159 -35 56.2 0.00797 0.00322 1.96 2.14 WorldPhysical eIoni - 3 -0.161 -35.4 55.9 0.00539 0.0011 0.481 2.62 WorldPhysical eIoni - 4 0.028 -35.7 55.9 0 0.00539 0.828 3.45 WorldPhysical eIoni + 0 0.129 -323 539 0.00459 0 0 0 DriftChamberPhysical initStep + 1 -0.903 -322 539 0.00324 0.00136 2.13 2.13 DriftChamberPhysical eIoni + 2 -1.24 -320 539 0.00195 0.00129 1.59 3.72 DriftChamberPhysical eIoni + 3 -1.68 -320 539 0 0.00195 0.843 4.56 DriftChamberPhysical eIoni ********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 4 +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.161 -35.4 55.9 0.00148 0 0 0 WorldPhysical initStep - 1 -0.15 -35.4 55.9 0 0.00148 0.1 0.1 WorldPhysical eIoni + 0 0.106 -288 481 0.00184 0 0 0 DriftChamberPhysical initStep + 1 0.576 -288 481 0 0.00184 0.774 0.774 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 -18.4 30.7 0.00145 0 0 0 WorldPhysical initStep + 1 0.0302 -18.4 30.7 0 0.00145 0.0973 0.0973 WorldPhysical eIoni +>>> Event 1 + 7 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.1399910617278345 (GeV) + 10 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.7999489241590539 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0 -60 100 1e+03 0.0185 117 117 DriftChamberPhysical CoupledTransportation + 2 -0.0111 -540 900 1e+03 0.0206 933 1.05e+03 WorldPhysical CoupledTransportation + 3 -0.0196 -557 929 1e+03 0.0034 34.3 1.08e+03 WorldPhysical hIoni + 4 -0.0228 -570 950 1e+03 0.00334 24.1 1.11e+03 WorldPhysical G4FSMP_parallelGeom + 5 -0.0228 -570 950 0 1e+03 0 1.11e+03 WorldPhysical G4FSMP_parallelGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.0196 -557 929 0.00132 0 0 0 WorldPhysical initStep + 1 -0.021 -557 929 0 0.00132 0.0852 0.0852 WorldPhysical eIoni +>>> Event 2 + 16 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.4799773472472533 (GeV) + 7 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.5199754595178576 (GeV) + +********************************************************************************************************* +* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep + 1 0.000378 -15.3 25.6 1e+03 0.00907 29.8 29.8 WorldPhysical hIoni + 2 0.000449 -19 31.6 1e+03 0.000853 7.05 36.9 WorldPhysical hIoni + 3 0.000125 -21.5 35.8 1e+03 0.000504 4.84 41.7 WorldPhysical hIoni + 4 0.000997 -46.1 76.8 1e+03 0.00679 47.9 89.6 WorldPhysical hIoni + 5 0.00269 -60 100 1e+03 0.00356 27.1 117 DriftChamberPhysical CoupledTransportation + 6 0.0319 -240 400 1e+03 0.00794 350 467 DriftChamberPhysical hIoni + 7 0.056 -540 900 1e+03 0.015 583 1.05e+03 WorldPhysical CoupledTransportation + 8 0.0511 -570 950 1e+03 0.00621 58.3 1.11e+03 WorldPhysical G4FSMP_parallelGeom + 9 0.0511 -570 950 0 1e+03 0 1.11e+03 WorldPhysical G4FSMP_parallelGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.0319 -240 400 0.00345 0 0 0 DriftChamberPhysical initStep + 1 -0.509 -241 399 0.00156 0.00189 1.69 1.69 DriftChamberPhysical eIoni + 2 -0.399 -241 399 0 0.00156 0.595 2.28 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.000997 -46.1 76.8 0.00142 0 0 0 WorldPhysical initStep + 1 -0.0264 -46.1 76.8 0 0.00142 0.0942 0.0942 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.000125 -21.5 35.8 0.0324 0 0 0 WorldPhysical initStep + 1 -4.01 -19.3 38.7 0.0267 0.00567 5.87 5.87 WorldPhysical eIoni + 2 -4.54 -19.5 42.8 0.0246 0.0021 4.59 10.5 WorldPhysical eIoni + 3 -4.44 -19.1 44.3 0.013 0.00368 1.63 12.1 WorldPhysical eIoni + 4 -5.28 -17.7 45.1 0.00804 0.00492 2.21 14.3 WorldPhysical eIoni + 5 -5.5 -17.1 45.5 0.00507 0.00168 0.852 15.1 WorldPhysical eIoni + 6 -5.21 -17.1 45.3 0 0.00507 0.738 15.9 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 8, Parent ID = 4 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.00593 -34.9 57.8 0.00127 0 0 0 WorldPhysical initStep - 1 -0.0129 -34.9 57.8 0 0.00127 0.0804 0.0804 WorldPhysical eIoni + 0 -5.5 -17.1 45.5 0.00129 0 0 0 WorldPhysical initStep + 1 -5.52 -17.1 45.4 0 0.00129 0.0819 0.0819 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 4 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -4.44 -19.1 44.3 0.00798 0 0 0 WorldPhysical initStep + 1 -3.75 -18.8 45 0.00486 0.00312 1.45 1.45 WorldPhysical eIoni + 2 -3.46 -18.7 45.1 0 0.00486 0.688 2.14 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.000585 -26 43.4 0.00264 0 0 0 WorldPhysical initStep - 1 0.104 -26 43.4 0 0.00264 0.243 0.243 WorldPhysical eIoni + 0 0.000449 -19 31.6 0.00284 0 0 0 WorldPhysical initStep + 1 -0.0786 -18.9 31.7 0 0.00284 0.276 0.276 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.00167 -11.8 19.6 0.00394 0 0 0 WorldPhysical initStep - 1 -0.0206 -11.6 19.7 0 0.00394 0.475 0.475 WorldPhysical eIoni ->>> Event 1 - 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.2999760524750308 (GeV) - 9 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.5599552979533907 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 -0.00276 -20.7 34.5 1e+03 0.00623 40.2 40.2 WorldPhysical hIoni - 2 -0.0351 -60 100 1e+03 0.012 76.4 117 DriftChamberPhysical CoupledTransportation - 3 -0.252 -410 683 1e+03 0.0172 680 797 DriftChamberPhysical hIoni - 4 -0.321 -540 900 1e+03 0.00506 253 1.05e+03 WorldPhysical CoupledTransportation - 5 -0.33 -552 920 1e+03 0.00254 23.7 1.07e+03 WorldPhysical hIoni - 6 -0.333 -562 937 1e+03 0.00781 19.5 1.09e+03 WorldPhysical hIoni - 7 -0.336 -570 950 1e+03 0.00969 73.4 1.17e+03 WorldPhysical CoupledTransportation - 8 -0.336 -570 950 0 1e+03 0 1.17e+03 WorldPhysical G4FSMP_parallelGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.333 -562 937 0.00217 0 0 0 WorldPhysical initStep - 1 -0.299 -562 937 0 0.00217 0.179 0.179 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.33 -552 920 0.00261 0 0 0 WorldPhysical initStep - 1 -0.422 -552 920 0 0.00261 0.238 0.238 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.252 -410 683 0.00118 0 0 0 DriftChamberPhysical initStep - 1 -0.286 -410 683 0.00112 5.7e-05 0.0361 0.0361 DriftChamberPhysical msc - 2 -0.528 -410 683 0 0.00112 0.364 0.4 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.00276 -20.7 34.5 0.225 0 0 0 WorldPhysical initStep - 1 13 -26.3 39.4 0.219 0.00346 15.1 15.1 WorldPhysical eIoni - 2 29.5 -32 35.6 0.214 0.00348 18 33.1 WorldPhysical eIoni - 3 38.8 -32.7 36.1 0.21 0.00145 9.42 42.5 WorldPhysical eIoni - 4 81.9 -26.8 26.1 0.187 0.0119 45.8 88.3 WorldPhysical eIoni - 5 85.6 -27.5 26.4 0.17 0.000749 3.74 92 WorldPhysical eIoni - 6 92.9 -37.5 26.3 0.165 0.00216 12.4 104 WorldPhysical eIoni - 7 120 -58.7 28.6 0.156 0.00773 35.4 140 WorldPhysical eIoni - 8 144 -72.8 37.6 0.147 0.00721 29.7 170 WorldPhysical eIoni - 9 180 -89.9 64.3 0.126 0.0128 50.5 220 WorldPhysical eIoni - 10 215 -111 69.4 0.107 0.016 43.9 264 WorldPhysical eIoni - 11 227 -117 86.9 0.0969 0.00867 22.9 287 WorldPhysical eIoni - 12 229 -117 90.2 0.0946 0.000702 3.68 291 WorldPhysical eIoni - 13 234 -118 99.2 0.09 0.00289 11 302 WorldPhysical eIoni - 14 235 -118 100 0.0898 0.000266 1.25 303 WorldPhysical eIoni - 15 235 -118 100 0.0898 0 0.0441 303 DriftChamberPhysical CoupledTransportation - 16 308 -143 166 0.0814 0.00617 102 405 DriftChamberPhysical eIoni - 17 396 -168 240 0.0694 0.00581 119 525 DriftChamberPhysical eIoni - 18 441 -168 280 0.0634 0.00459 60.9 586 DriftChamberPhysical eIoni - 19 516 -151 330 0.0547 0.00868 92.8 678 DriftChamberPhysical eIoni - 20 579 -146 361 0.0483 0.00639 72 750 DriftChamberPhysical eIoni - 21 631 -169 368 0.043 0.00529 57.5 808 DriftChamberPhysical eIoni - 22 652 -176 373 0.0388 0.00298 23.1 831 DriftChamberPhysical eIoni - 23 689 -186 374 0.0343 0.00453 39.1 870 DriftChamberPhysical eIoni - 24 684 -156 380 0.0296 0.00467 31.6 902 DriftChamberPhysical eIoni - 25 684 -132 382 0.0251 0.00449 24.5 926 DriftChamberPhysical eIoni - 26 681 -114 383 0.0227 0.00249 18.3 945 DriftChamberPhysical eIoni - 27 669 -104 384 0.0187 0.00395 15.5 960 DriftChamberPhysical eIoni - 28 660 -99.8 388 0.0165 0.00219 11.3 971 DriftChamberPhysical eIoni - 29 656 -92.3 392 0.0146 0.00193 9.31 981 DriftChamberPhysical eIoni - 30 655 -84.9 393 0.0132 0.00141 7.73 988 DriftChamberPhysical eIoni - 31 652 -80.7 397 0.011 0.00221 6.66 995 DriftChamberPhysical eIoni - 32 649 -77.8 400 0.00902 0.00194 5.19 1e+03 DriftChamberPhysical eIoni - 33 650 -76.1 403 0.00707 0.000918 3.49 1e+03 DriftChamberPhysical eIoni - 34 650 -73.2 404 0.00577 0.00129 3.12 1.01e+03 DriftChamberPhysical eIoni - 35 651 -70.8 404 0.0043 0.00148 2.58 1.01e+03 DriftChamberPhysical eIoni - 36 652 -69.6 402 0.00277 0.00153 2.01 1.01e+03 DriftChamberPhysical eIoni - 37 651 -69.1 401 0.000479 0.00229 1.38 1.01e+03 DriftChamberPhysical eIoni - 38 651 -69.1 401 0 0.000479 0.127 1.01e+03 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 23, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 650 -76.1 403 0.00104 0 0 0 DriftChamberPhysical initStep - 1 650 -76.1 403 0.00104 0 0.0292 0.0292 DriftChamberPhysical msc - 2 650 -76.2 403 0 0.00104 0.325 0.355 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 22, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 652 -176 373 0.00121 0 0 0 DriftChamberPhysical initStep - 1 652 -176 373 0.00119 2.57e-05 0.0385 0.0385 DriftChamberPhysical msc - 2 652 -176 373 0 0.00119 0.396 0.434 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 21, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 441 -168 280 0.00143 0 0 0 DriftChamberPhysical initStep - 1 441 -168 280 0.00137 6.53e-05 0.0511 0.0511 DriftChamberPhysical msc - 2 441 -168 280 0 0.00137 0.488 0.539 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 20, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 396 -168 240 0.00622 0 0 0 DriftChamberPhysical initStep - 1 395 -170 241 0.00561 0.000609 2.05 2.05 DriftChamberPhysical msc - 2 394 -172 242 0.00462 0.00099 2.51 4.56 DriftChamberPhysical eIoni - 3 394 -172 244 0.0029 0.00172 2.13 6.7 DriftChamberPhysical eIoni - 4 395 -174 245 0.000505 0.0024 1.44 8.14 DriftChamberPhysical eIoni - 5 395 -174 245 0 0.000505 0.134 8.28 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 19, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 308 -143 166 0.00214 0 0 0 DriftChamberPhysical initStep - 1 308 -143 166 0.002 0.000145 0.107 0.107 DriftChamberPhysical msc - 2 308 -143 166 0 0.002 0.876 0.983 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 18, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 234 -118 99.2 0.00169 0 0 0 WorldPhysical initStep - 1 234 -118 99.3 0 0.00169 0.122 0.122 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 17, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 229 -117 90.2 0.00162 0 0 0 WorldPhysical initStep - 1 229 -117 90.3 0 0.00162 0.114 0.114 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 16, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 227 -117 86.9 0.0013 0 0 0 WorldPhysical initStep - 1 227 -117 86.9 0 0.0013 0.0826 0.0826 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 15, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 215 -111 69.4 0.00285 0 0 0 WorldPhysical initStep - 1 215 -111 69.3 0 0.00285 0.276 0.276 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 14, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 180 -89.9 64.3 0.00802 0 0 0 WorldPhysical initStep - 1 180 -90.2 63.8 0.00434 0.00224 0.689 0.689 WorldPhysical eIoni - 2 180 -90.4 63.8 0 0.00434 0.566 1.26 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 24, Parent ID = 14 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 180 -90.2 63.8 0.00144 0 0 0 WorldPhysical initStep - 1 180 -90.2 63.8 0 0.00144 0.0961 0.0961 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 13, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 144 -72.8 37.6 0.00185 0 0 0 WorldPhysical initStep - 1 144 -72.7 37.6 0 0.00185 0.139 0.139 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 12, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 120 -58.7 28.6 0.0012 0 0 0 WorldPhysical initStep - 1 120 -58.7 28.6 0 0.0012 0.074 0.074 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 11, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 92.9 -37.5 26.3 0.00331 0 0 0 WorldPhysical initStep - 1 92.8 -37.5 26.3 0 0.00331 0.356 0.356 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 10, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 85.6 -27.5 26.4 0.0164 0 0 0 WorldPhysical initStep - 1 87.9 -27.2 26.6 0.0101 0.00621 2.7 2.7 WorldPhysical eIoni - 2 88.4 -25.9 26.4 0.0043 0.0041 1.74 4.44 WorldPhysical eIoni - 3 88.3 -25.7 26.5 0 0.0043 0.556 5 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 25, Parent ID = 10 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 88.4 -25.9 26.4 0.00174 0 0 0 WorldPhysical initStep - 1 88.4 -25.9 26.4 0 0.00174 0.127 0.127 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 81.9 -26.8 26.1 0.0106 0 0 0 WorldPhysical initStep - 1 81.3 -25.9 25 0.00542 0.00519 1.87 1.87 WorldPhysical eIoni - 2 81 -25.8 25.1 0 0.00542 0.837 2.71 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 38.8 -32.7 36.1 0.00318 0 0 0 WorldPhysical initStep - 1 38.8 -32.9 36.1 0 0.00318 0.33 0.33 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 29.5 -32 35.6 0.00161 0 0 0 WorldPhysical initStep - 1 29.5 -32 35.6 0 0.00161 0.113 0.113 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 13 -26.3 39.4 0.00269 0 0 0 WorldPhysical initStep - 1 13 -26.3 39.5 0 0.00269 0.251 0.251 WorldPhysical eIoni ->>> Event 2 - 7 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.2199357763005814 (GeV) - 9 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.6997956518654862 (GeV) - -********************************************************************************************************* -* G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0.000151 -2.4 4 1e+03 0.000549 4.67 4.67 WorldPhysical hIoni - 2 -0.0124 -55.9 93.2 1e+03 0.0169 104 109 WorldPhysical hIoni - 3 -0.0137 -60 100 1e+03 0.000426 7.9 117 DriftChamberPhysical CoupledTransportation - 4 -0.0186 -73.1 122 1e+03 0.000352 25.4 142 DriftChamberPhysical hIoni - 5 -0.135 -387 645 1e+03 0.0166 610 752 DriftChamberPhysical hIoni - 6 -0.188 -540 900 1e+03 0.0055 298 1.05e+03 WorldPhysical CoupledTransportation - 7 -0.2 -570 950 1e+03 0.0193 111 1.16e+03 WorldPhysical hIoni - 8 -0.2 -570 950 0 1e+03 0 1.16e+03 WorldPhysical G4FSMP_parallelGeom - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.2 -570 950 0.001 0 0 0 WorldPhysical initStep - 1 -0.201 -570 950 0.000945 5.75e-05 0.00145 0.00145 WorldPhysical msc - 2 -0.201 -570 950 0.000945 0 0.00145 0.0029 WorldPhysical msc - 3 -0.202 -570 950 0.000945 0 0.00145 0.00435 WorldPhysical msc - 4 -0.203 -570 950 0.000945 0 0.00145 0.0058 WorldPhysical msc - 5 -0.204 -570 950 0.000945 0 0.00145 0.00725 WorldPhysical msc - 6 -0.205 -570 950 0.000945 0 0.00145 0.0087 WorldPhysical msc - 7 -0.206 -570 950 0.000945 0 0.00145 0.0102 WorldPhysical msc - 8 -0.207 -570 950 0.000945 0 0.00145 0.0116 WorldPhysical msc - 9 -0.207 -570 950 0.000926 1.87e-05 0.00145 0.0131 WorldPhysical msc - 10 -0.208 -570 950 0.00083 9.63e-05 0.00145 0.0145 WorldPhysical msc - 11 -0.208 -570 950 0.000805 2.46e-05 0.00145 0.016 WorldPhysical msc - 12 -0.208 -570 950 0.000791 1.39e-05 0.00145 0.0174 WorldPhysical msc - 13 -0.208 -570 950 0.000776 1.53e-05 0.00145 0.0189 WorldPhysical msc - 14 -0.208 -570 950 0.000776 0 0.00145 0.0203 WorldPhysical msc - 15 -0.208 -570 950 0.000776 0 0.00145 0.0218 WorldPhysical msc - 16 -0.207 -570 950 0.00065 0.000126 0.00145 0.0232 WorldPhysical msc - 17 -0.207 -570 950 0.000634 1.61e-05 0.00145 0.0247 WorldPhysical msc - 18 -0.207 -570 950 0.000634 0 0.00145 0.0261 WorldPhysical msc - 19 -0.206 -570 950 0.000634 0 0.00145 0.0276 WorldPhysical msc - 20 -0.205 -570 950 0.000634 0 0.00145 0.029 WorldPhysical msc - 21 -0.203 -570 950 0.000543 9.12e-05 0.00145 0.0305 WorldPhysical msc - 22 -0.202 -570 950 0.000491 5.17e-05 0.00145 0.0319 WorldPhysical msc - 23 -0.201 -570 950 0.000491 0 0.00145 0.0334 WorldPhysical msc - 24 -0.202 -570 950 0.000466 2.55e-05 0.00145 0.0348 WorldPhysical msc - 25 -0.202 -570 950 0.000441 2.44e-05 0.00145 0.0363 WorldPhysical msc - 26 -0.202 -570 950 0.000441 0 0.00145 0.0377 WorldPhysical msc - 27 -0.203 -570 950 0.000441 0 0.00145 0.0392 WorldPhysical msc - 28 -0.204 -570 950 0.000441 0 0.00145 0.0406 WorldPhysical msc - 29 -0.204 -570 950 0.000341 0.0001 0.00145 0.0421 WorldPhysical msc - 30 -0.204 -570 950 0.000276 6.54e-05 0.00145 0.0435 WorldPhysical msc - 31 -0.204 -570 950 0.000276 0 0.00145 0.045 WorldPhysical msc - 32 -0.204 -570 950 0.000198 7.73e-05 0.0017 0.0466 WorldPhysical msc - 33 -0.205 -570 950 2.59e-05 0.000172 0.0017 0.0483 WorldPhysical msc - 34 -0.204 -570 950 0 2.59e-05 0.00471 0.0531 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.135 -387 645 0.00107 0 0 0 DriftChamberPhysical initStep - 1 -0.126 -387 645 0.000969 9.87e-05 0.0304 0.0304 DriftChamberPhysical msc - 2 -0.0676 -387 645 0 0.000969 0.295 0.326 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.0186 -73.1 122 0.00268 0 0 0 DriftChamberPhysical initStep - 1 0.122 -73.1 122 0.00263 4.92e-05 0.16 0.16 DriftChamberPhysical msc - 2 0.799 -73.6 121 0.000872 0.00176 1.3 1.46 DriftChamberPhysical eIoni - 3 0.754 -73.5 121 0 0.000872 0.257 1.72 DriftChamberPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.000151 -2.4 4 0.00181 0 0 0 WorldPhysical initStep - 1 -0.044 -2.37 4.02 0 0.00181 0.134 0.134 WorldPhysical eIoni + 0 0.000378 -15.3 25.6 0.00242 0 0 0 WorldPhysical initStep + 1 -0.0807 -15.4 25.6 0 0.00242 0.211 0.211 WorldPhysical eIoni >>> Event 3 - 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.2599827982374899 (GeV) - 8 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.6799550107749737 (GeV) + 6 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.1999815067066985 (GeV) + 7 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.679937122802775 (GeV) ********************************************************************************************************* * G4Track Information: Particle = pi-, Track ID = 1, Parent ID = 0 @@ -5912,44 +2653,50 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName 0 0 0 0 1e+03 0 0 0 WorldPhysical initStep - 1 0 -60 100 1e+03 0.0144 117 117 DriftChamberPhysical CoupledTransportation - 2 -0.169 -540 900 1e+03 0.0229 933 1.05e+03 WorldPhysical CoupledTransportation - 3 -0.173 -552 919 1e+03 0.0033 22.6 1.07e+03 WorldPhysical hIoni - 4 -0.184 -570 950 1e+03 0.0129 94.1 1.17e+03 WorldPhysical CoupledTransportation - 5 -0.184 -570 950 0 1e+03 0 1.17e+03 WorldPhysical G4FSMP_parallelGeom + 1 -1.19e-06 -0.228 0.38 1e+03 0 0.443 0.443 WorldPhysical hIoni + 2 -0.00401 -46.3 77.2 1e+03 0.0124 89.5 90 WorldPhysical hIoni + 3 -0.00286 -48.3 80.4 1e+03 0.00108 3.82 93.8 WorldPhysical hIoni + 4 0.00304 -60 100 1e+03 0.000756 22.8 117 DriftChamberPhysical CoupledTransportation + 5 0.248 -493 821 1e+03 0.0205 841 957 DriftChamberPhysical hIoni + 6 0.284 -541 900 1e+03 0.00112 92.6 1.05e+03 WorldPhysical CoupledTransportation + 7 0.308 -571 950 1e+03 0.00647 58.3 1.11e+03 WorldPhysical G4FSMP_parallelGeom + 8 0.308 -571 950 0 1e+03 0 1.11e+03 WorldPhysical G4FSMP_parallelGeom + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 0.248 -493 821 0.00264 0 0 0 DriftChamberPhysical initStep + 1 0.819 -492 821 0.000384 0.00226 1.31 1.31 DriftChamberPhysical eIoni + 2 0.844 -492 821 0 0.000384 0.103 1.41 DriftChamberPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.00286 -48.3 80.4 0.00537 0 0 0 WorldPhysical initStep + 1 0.34 -48.4 80.4 0 0.00537 0.824 0.824 WorldPhysical eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName + 0 -0.00401 -46.3 77.2 0.00169 0 0 0 WorldPhysical initStep + 1 -0.0523 -46.3 77.2 0 0.00169 0.122 0.122 WorldPhysical eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 -0.173 -552 919 0.0306 0 0 0 WorldPhysical initStep - 1 0.302 -551 920 0.0281 0.00124 0.559 0.559 WorldPhysical eIoni - 2 4.67 -551 920 0.0232 0.00488 4.89 5.45 WorldPhysical eIoni - 3 7.57 -549 920 0.0187 0.00448 3.88 9.33 WorldPhysical eIoni - 4 9.53 -548 921 0.0134 0.00293 2.7 12 WorldPhysical eIoni - 5 10.1 -547 920 0.00863 0.00474 2.27 14.3 WorldPhysical eIoni - 6 10.9 -547 920 0.00482 0.00381 1.57 15.9 WorldPhysical eIoni - 7 11.1 -547 920 0 0.00482 0.678 16.5 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 9.53 -548 921 0.00243 0 0 0 WorldPhysical initStep - 1 9.59 -548 921 0 0.00243 0.213 0.213 WorldPhysical eIoni - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 2 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0.302 -551 920 0.00129 0 0 0 WorldPhysical initStep - 1 0.301 -551 920 0 0.00129 0.0816 0.0816 WorldPhysical eIoni + 0 -1.19e-06 -0.228 0.38 0.00127 0 0 0 WorldPhysical initStep + 1 -0.0295 -0.217 0.387 0 0.00127 0.0799 0.0799 WorldPhysical eIoni >>> Event 4 - 8 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.1799848603919574 (GeV) - 9 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.7799343950318154 (GeV) + 4 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.07999573726959824 (GeV) + 11 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.8399552413307814 (GeV) number of event = 5 diff --git a/examples/novice/N05/include/ExN05CalorimeterHit.hh b/examples/novice/N05/include/ExN05CalorimeterHit.hh index e11f9587dc..1f585a092b 100644 --- a/examples/novice/N05/include/ExN05CalorimeterHit.hh +++ b/examples/novice/N05/include/ExN05CalorimeterHit.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05CalorimeterHit.hh,v 1.8 2006/06/29 17:52:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN05CalorimeterHit_h diff --git a/examples/novice/N05/include/ExN05CalorimeterSD.hh b/examples/novice/N05/include/ExN05CalorimeterSD.hh index 705a95fdb4..2cdeb63a04 100644 --- a/examples/novice/N05/include/ExN05CalorimeterSD.hh +++ b/examples/novice/N05/include/ExN05CalorimeterSD.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05CalorimeterSD.hh,v 1.5 2006/06/29 17:52:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN05CalorimeterSD_h diff --git a/examples/novice/N05/include/ExN05DetectorConstruction.hh b/examples/novice/N05/include/ExN05DetectorConstruction.hh index 301fe89923..4146cbded1 100644 --- a/examples/novice/N05/include/ExN05DetectorConstruction.hh +++ b/examples/novice/N05/include/ExN05DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05DetectorConstruction.hh,v 1.6 2006/11/03 17:58:49 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN05DetectorConstruction_h #define ExN05DetectorConstruction_h 1 diff --git a/examples/novice/N05/include/ExN05EMShowerModel.hh b/examples/novice/N05/include/ExN05EMShowerModel.hh index 5011ca1a51..54ab32920c 100644 --- a/examples/novice/N05/include/ExN05EMShowerModel.hh +++ b/examples/novice/N05/include/ExN05EMShowerModel.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05EMShowerModel.hh,v 1.10 2006/06/29 17:52:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //---------------------------------------------- diff --git a/examples/novice/N05/include/ExN05EnergySpot.hh b/examples/novice/N05/include/ExN05EnergySpot.hh index 3bce49f87e..68d0cbb9e5 100644 --- a/examples/novice/N05/include/ExN05EnergySpot.hh +++ b/examples/novice/N05/include/ExN05EnergySpot.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05EnergySpot.hh,v 1.8 2006/06/29 17:52:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN05EnergySpot_h #define ExN05EnergySpot_h diff --git a/examples/novice/N05/include/ExN05EventAction.hh b/examples/novice/N05/include/ExN05EventAction.hh index b09d92d3d1..d8afde8ad3 100644 --- a/examples/novice/N05/include/ExN05EventAction.hh +++ b/examples/novice/N05/include/ExN05EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05EventAction.hh,v 1.6 2006/06/29 17:52:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN05EventAction_h diff --git a/examples/novice/N05/include/ExN05EventActionMessenger.hh b/examples/novice/N05/include/ExN05EventActionMessenger.hh index 375931398e..5c52dd1456 100644 --- a/examples/novice/N05/include/ExN05EventActionMessenger.hh +++ b/examples/novice/N05/include/ExN05EventActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05EventActionMessenger.hh,v 1.5 2006/06/29 17:52:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN05EventActionMessenger_h diff --git a/examples/novice/N05/include/ExN05ParallelWorldForPion.hh b/examples/novice/N05/include/ExN05ParallelWorldForPion.hh index df087e3e2d..70664dcf03 100644 --- a/examples/novice/N05/include/ExN05ParallelWorldForPion.hh +++ b/examples/novice/N05/include/ExN05ParallelWorldForPion.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05ParallelWorldForPion.hh,v 1.1 2006/11/03 17:58:49 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN05ParallelWorldForPion_hh #define ExN05ParallelWorldForPion_hh diff --git a/examples/novice/N05/include/ExN05PhysicsList.hh b/examples/novice/N05/include/ExN05PhysicsList.hh index c8e6ca62ec..0d77edb1e9 100644 --- a/examples/novice/N05/include/ExN05PhysicsList.hh +++ b/examples/novice/N05/include/ExN05PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05PhysicsList.hh,v 1.8 2006/06/29 17:52:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // #ifndef ExN05PhysicsList_h diff --git a/examples/novice/N05/include/ExN05PiModel.hh b/examples/novice/N05/include/ExN05PiModel.hh index 2600df5e07..bbe4019d44 100644 --- a/examples/novice/N05/include/ExN05PiModel.hh +++ b/examples/novice/N05/include/ExN05PiModel.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05PiModel.hh,v 1.6 2006/06/29 17:52:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //---------------------------------------- diff --git a/examples/novice/N05/include/ExN05PionShowerModel.hh b/examples/novice/N05/include/ExN05PionShowerModel.hh index a727e1cd41..753c1c1bba 100644 --- a/examples/novice/N05/include/ExN05PionShowerModel.hh +++ b/examples/novice/N05/include/ExN05PionShowerModel.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05PionShowerModel.hh,v 1.10 2006/06/29 17:52:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //---------------------------------------------- diff --git a/examples/novice/N05/include/ExN05PrimaryGeneratorAction.hh b/examples/novice/N05/include/ExN05PrimaryGeneratorAction.hh index 295889cdd2..0e2b054eda 100644 --- a/examples/novice/N05/include/ExN05PrimaryGeneratorAction.hh +++ b/examples/novice/N05/include/ExN05PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05PrimaryGeneratorAction.hh,v 1.5 2006/06/29 17:52:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN05PrimaryGeneratorAction_h diff --git a/examples/novice/N05/include/ExN05RunAction.hh b/examples/novice/N05/include/ExN05RunAction.hh index 272c2ef9b3..17fd605eb7 100644 --- a/examples/novice/N05/include/ExN05RunAction.hh +++ b/examples/novice/N05/include/ExN05RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05RunAction.hh,v 1.9 2006/06/29 17:52:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN05RunAction_h diff --git a/examples/novice/N05/include/ExN05SteppingAction.hh b/examples/novice/N05/include/ExN05SteppingAction.hh index 51b2404d6c..414f6cbdd5 100644 --- a/examples/novice/N05/include/ExN05SteppingAction.hh +++ b/examples/novice/N05/include/ExN05SteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05SteppingAction.hh,v 1.6 2006/06/29 17:52:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN05SteppingAction_h diff --git a/examples/novice/N05/include/ExN05SteppingActionMessenger.hh b/examples/novice/N05/include/ExN05SteppingActionMessenger.hh index f19e77b03e..5f4e24a141 100644 --- a/examples/novice/N05/include/ExN05SteppingActionMessenger.hh +++ b/examples/novice/N05/include/ExN05SteppingActionMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: ExN05SteppingActionMessenger.hh,v 1.5 2006/06/29 17:52:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN05SteppingActionMessenger_h diff --git a/examples/novice/N05/src/ExN05CalorimeterHit.cc b/examples/novice/N05/src/ExN05CalorimeterHit.cc index c2527250fe..da7a62063d 100644 --- a/examples/novice/N05/src/ExN05CalorimeterHit.cc +++ b/examples/novice/N05/src/ExN05CalorimeterHit.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05CalorimeterHit.cc,v 1.6 2006/06/29 17:53:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN05CalorimeterHit.hh" diff --git a/examples/novice/N05/src/ExN05CalorimeterSD.cc b/examples/novice/N05/src/ExN05CalorimeterSD.cc index 41b7350e1c..6e99ab82a8 100644 --- a/examples/novice/N05/src/ExN05CalorimeterSD.cc +++ b/examples/novice/N05/src/ExN05CalorimeterSD.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05CalorimeterSD.cc,v 1.8 2006/11/20 18:39:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN05CalorimeterSD.hh" diff --git a/examples/novice/N05/src/ExN05DetectorConstruction.cc b/examples/novice/N05/src/ExN05DetectorConstruction.cc index 9f53680ab4..abdb4aced3 100644 --- a/examples/novice/N05/src/ExN05DetectorConstruction.cc +++ b/examples/novice/N05/src/ExN05DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05DetectorConstruction.cc,v 1.10 2006/11/03 17:58:49 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN05DetectorConstruction.hh" #include "ExN05CalorimeterSD.hh" diff --git a/examples/novice/N05/src/ExN05EMShowerModel.cc b/examples/novice/N05/src/ExN05EMShowerModel.cc index 9f2bdea43b..ce842a39c3 100644 --- a/examples/novice/N05/src/ExN05EMShowerModel.cc +++ b/examples/novice/N05/src/ExN05EMShowerModel.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05EMShowerModel.cc,v 1.15 2006/11/14 09:21:44 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN05EMShowerModel.hh" #include "ExN05EnergySpot.hh" diff --git a/examples/novice/N05/src/ExN05EnergySpot.cc b/examples/novice/N05/src/ExN05EnergySpot.cc index 029a2bc78a..f8c757c5ab 100644 --- a/examples/novice/N05/src/ExN05EnergySpot.cc +++ b/examples/novice/N05/src/ExN05EnergySpot.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05EnergySpot.cc,v 1.7 2006/06/29 17:53:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN05EnergySpot.hh" diff --git a/examples/novice/N05/src/ExN05EventAction.cc b/examples/novice/N05/src/ExN05EventAction.cc index 88dac6e5c0..d8d367be13 100644 --- a/examples/novice/N05/src/ExN05EventAction.cc +++ b/examples/novice/N05/src/ExN05EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05EventAction.cc,v 1.9 2006/06/29 17:53:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN05EventAction.hh" diff --git a/examples/novice/N05/src/ExN05EventActionMessenger.cc b/examples/novice/N05/src/ExN05EventActionMessenger.cc index c4b4e00de4..aa8a3c8805 100644 --- a/examples/novice/N05/src/ExN05EventActionMessenger.cc +++ b/examples/novice/N05/src/ExN05EventActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05EventActionMessenger.cc,v 1.7 2006/06/29 17:53:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN05EventActionMessenger.hh" diff --git a/examples/novice/N05/src/ExN05PhysicsList.cc b/examples/novice/N05/src/ExN05PhysicsList.cc index 6919a10a3d..c28216737b 100644 --- a/examples/novice/N05/src/ExN05PhysicsList.cc +++ b/examples/novice/N05/src/ExN05PhysicsList.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN05PhysicsList.cc,v 1.13 2007/05/11 14:29:16 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN05PhysicsList.cc,v 1.14 2007/11/30 18:08:42 mverderi Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -260,19 +260,27 @@ void ExN05PhysicsList::ConstructGeneral() void ExN05PhysicsList::AddParameterisation() { - G4FastSimulationManagerProcess* fastSimProcess_parallelGeom = new G4FastSimulationManagerProcess("G4FSMP_parallelGeom", "pionGhostWorld"); + // -- Fast simulation manager process for "mass geometry": G4FastSimulationManagerProcess* fastSimProcess_massGeom = new G4FastSimulationManagerProcess("G4FSMP_massGeom"); + // -- Fast simulation manager process for "parallel geometry": + G4FastSimulationManagerProcess* fastSimProcess_parallelGeom = new G4FastSimulationManagerProcess("G4FSMP_parallelGeom", "pionGhostWorld"); theParticleIterator->reset(); while( (*theParticleIterator)() ) { G4ParticleDefinition* particle = theParticleIterator->value(); G4ProcessManager* pmanager = particle->GetProcessManager(); - // -- G4FSMP is a PostStep process, ordering does not matter - if (particle->GetParticleName() == "pi+" || - particle->GetParticleName() == "pi-") pmanager->AddDiscreteProcess(fastSimProcess_parallelGeom); + // -- For the mass geometry, G4FSMP is a PostStep process, ordering does not matter: if (particle->GetParticleName() == "e+" || particle->GetParticleName() == "e-" || particle->GetParticleName() == "gamma") pmanager->AddDiscreteProcess(fastSimProcess_massGeom); + // -- For the parallel geometry, G4FSMP is an Along+PostStep process, and ordering matters: + if (particle->GetParticleName() == "pi+" || + particle->GetParticleName() == "pi-") + { + pmanager->AddProcess(fastSimProcess_parallelGeom); + pmanager->SetProcessOrdering(fastSimProcess_parallelGeom, idxAlongStep, 1); + pmanager->SetProcessOrdering(fastSimProcess_parallelGeom, idxPostStep); + } } } diff --git a/examples/novice/N05/src/ExN05PiModel.cc b/examples/novice/N05/src/ExN05PiModel.cc index 82af0f7ba8..f1972ecd3f 100644 --- a/examples/novice/N05/src/ExN05PiModel.cc +++ b/examples/novice/N05/src/ExN05PiModel.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05PiModel.cc,v 1.7 2006/06/29 17:53:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN05PiModel.hh" diff --git a/examples/novice/N05/src/ExN05PionShowerModel.cc b/examples/novice/N05/src/ExN05PionShowerModel.cc index 7ad3a2f10e..7f09f31429 100644 --- a/examples/novice/N05/src/ExN05PionShowerModel.cc +++ b/examples/novice/N05/src/ExN05PionShowerModel.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05PionShowerModel.cc,v 1.19 2007/05/18 14:32:35 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN05PionShowerModel.hh" #include "ExN05EnergySpot.hh" diff --git a/examples/novice/N05/src/ExN05PrimaryGeneratorAction.cc b/examples/novice/N05/src/ExN05PrimaryGeneratorAction.cc index 73fd5aca2e..e75565623d 100644 --- a/examples/novice/N05/src/ExN05PrimaryGeneratorAction.cc +++ b/examples/novice/N05/src/ExN05PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05PrimaryGeneratorAction.cc,v 1.5 2006/06/29 17:53:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN05PrimaryGeneratorAction.hh" diff --git a/examples/novice/N05/src/ExN05RunAction.cc b/examples/novice/N05/src/ExN05RunAction.cc index b3901f5da7..b82218448c 100644 --- a/examples/novice/N05/src/ExN05RunAction.cc +++ b/examples/novice/N05/src/ExN05RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05RunAction.cc,v 1.8 2006/06/29 17:53:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Make this appear first! diff --git a/examples/novice/N05/src/ExN05SteppingAction.cc b/examples/novice/N05/src/ExN05SteppingAction.cc index b7cde07fe1..e7b98a8497 100644 --- a/examples/novice/N05/src/ExN05SteppingAction.cc +++ b/examples/novice/N05/src/ExN05SteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05SteppingAction.cc,v 1.7 2006/06/29 17:53:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN05SteppingAction.hh" diff --git a/examples/novice/N05/src/ExN05SteppingActionMessenger.cc b/examples/novice/N05/src/ExN05SteppingActionMessenger.cc index 4df0307960..78941b4743 100644 --- a/examples/novice/N05/src/ExN05SteppingActionMessenger.cc +++ b/examples/novice/N05/src/ExN05SteppingActionMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN05SteppingActionMessenger.cc,v 1.7 2006/06/29 17:53:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN05SteppingActionMessenger.hh" diff --git a/examples/novice/N06/History b/examples/novice/N06/History index e403aa9e15..d158ed66b9 100644 --- a/examples/novice/N06/History +++ b/examples/novice/N06/History @@ -1,4 +1,4 @@ -$Id: History,v 1.34 2006/10/18 16:18:02 allison Exp $ +$Id: History,v 1.35 2007/09/30 22:49:55 gum Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,9 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +30 Sept 2007 Peter Gumplinger (exampleN06-V09-00-00) +- adjust to the G4Cerenkov process now being a G4VDiscreteProcess + October 18th 2006 J.Allison (exampleN06-V08-01-00) - Migrate to new trajectory modeling commands. diff --git a/examples/novice/N06/exampleN06.cc b/examples/novice/N06/exampleN06.cc index 72a2ef0bb2..6932d0b712 100644 --- a/examples/novice/N06/exampleN06.cc +++ b/examples/novice/N06/exampleN06.cc @@ -25,7 +25,7 @@ // // // $Id: exampleN06.cc,v 1.14 2006/06/29 17:53:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/exampleN06.out b/examples/novice/N06/exampleN06.out index 99f249db66..dd0a4a99df 100644 --- a/examples/novice/N06/exampleN06.out +++ b/examples/novice/N06/exampleN06.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -47,6 +47,12 @@ Equal ----------------- 1 +G4Cerenkov::G4Cerenkov constructor +NOTE: this is now a G4VDiscreteProcess! +Required change in UserPhysicsList: +change: pmanager->AddContinuousProcess(theCerenkovProcess); +to: pmanager->AddProcess(theCerenkovProcess); + pmanager->SetProcessOrdering(theCerenkovProcess,idxPostStep); AddDiscreteProcess to OpticalPhoton /tracking/verbose 1 # @@ -65,7 +71,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -78,7 +84,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -101,7 +107,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -109,7 +115,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -121,7 +127,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -138,7 +144,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -156,7 +162,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -169,7 +175,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ### Run 0 start. ********************************************************************************************************* @@ -179,872 +185,594 @@ hIoni: tables are built for pi- Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 0 fm 0 fm 0 fm 500 keV 0 eV 0 fm 0 fm Tank initStep - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 3 - - Exiting from G4Scintillation::DoIt -- NumberOfSecondaries = 1 - 1 88.9 um -8.93 um -10.1 um 489 keV 11.4 keV 90.8 um 90.8 um Tank msc - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 5, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 81.1 um -8.14 um -9.19 um 3.52 eV 0 eV 0 fm 0 fm Tank initStep - -** Photon absorbed! ** - 1 -64.5 cm -4.08 m 63.9 cm 3.52 eV 0 eV 4.18 m 4.18 m Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 4, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 70.2 um 0 fm 0 fm 3.51 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.85358,0.116025,-0.507877) - Old Polarization: (-0.520961,0.190104,-0.832142) - New Momentum Direction: (0.706887,0.157531,-0.689561) - New Polarization: (0.707327,-0.157433,0.689133) - *** FresnelRefraction *** - 1 5 m 68 cm -2.97 m 3.51 eV 0 eV 5.86 m 5.86 m Tank Transportation - 2 10 m 1.79 m -7.85 m 3.51 eV 0 eV 7.07 m 12.9 m OutOfWorld Transportation + Exiting from G4Scintillation::DoIt -- NumberOfSecondaries = 2 + 1 88.9 um -2.93 um 13.1 um 474 keV 25.7 keV 90.8 um 90.8 um Tank msc ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 88.7 um 0 fm 0 fm 3.81 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.85264928,-0.21025121,-0.47831332) - Old Polarization: (-0.52248369,-0.34311223,-0.78056697) - New Momentum Direction: (0.70403242,-0.28577666,-0.65013079) - New Polarization: (0.71016783,0.28330773,0.64451407) - *** FresnelRefraction *** - 1 5 m -1.23 m -2.8 m 3.81 eV 0 eV 5.86 m 5.86 m Tank Transportation - 2 10 m -3.26 m -7.42 m 3.81 eV 0 eV 7.1 m 13 m OutOfWorld Transportation + 0 81.1 um -2.67 um 12 um 3.52 eV 0 eV 0 fm 0 fm Tank initStep + +** Photon absorbed! ** + 1 -64.5 cm -4.08 m 63.9 cm 3.52 eV 0 eV 4.18 m 4.18 m Tank OpAbsorption ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 49 um 0 fm 0 fm 3.84 eV 0 eV 0 fm 0 fm Tank initStep + 0 78.7 um -2.59 um 11.6 um 3.42 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.85256898,-0.017226951,-0.52233071) - Old Polarization: (-0.52261471,-0.028103235,-0.85210567) - New Momentum Direction: (0.7037852,-0.023417342,-0.71002677) - New Polarization: (0.71041283,0.023198875,0.70340275) + Old Momentum Direction: (0.0205271,-0.629897,-0.776408) + Old Polarization: (0.123288,0.772239,-0.623255) + New Momentum Direction: (0.0278569,-0.854821,-0.518175) + New Polarization: (0.123061,0.517366,-0.84687) *** FresnelRefraction *** - 1 5 m -10.1 cm -3.06 m 3.84 eV 0 eV 5.86 m 5.86 m Tank Transportation - 2 10 m -26.7 cm -8.11 m 3.84 eV 0 eV 7.1 m 13 m OutOfWorld Transportation + 1 13.2 cm -4.06 m -5 m 3.42 eV 0 eV 6.44 m 6.44 m Tank Transportation + 2 32.6 cm -10 m -8.6 m 3.42 eV 0 eV 6.95 m 13.4 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = e+, Track ID = 1, Parent ID = 0 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 1 88.9 um -8.93 um -10.1 um 489 keV 0 eV 0 fm 90.8 um Tank initStep + 1 88.9 um -2.93 um 13.1 um 474 keV 0 eV 0 fm 90.8 um Tank initStep +CAImin = 4.8936995e-07 +ge = 6.572938e-07 - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 32 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 1 - Exiting from G4Scintillation::DoIt -- NumberOfSecondaries = 15 - 2 916 um -190 um -864 um 183 keV 305 keV 1.46 mm 1.56 mm Tank eIoni - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 52, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 705 um -144 um -646 um 2.4 eV 0 eV 0 fm 0 fm Tank initStep - -** Photon absorbed! ** - 1 1 m 25.7 cm 3.94 m 2.4 eV 0 eV 4.07 m 4.07 m Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 51, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 719 um -147 um -660 um 3.3 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (-0.91651046,0.39929502,-0.023917913) - Old Polarization: (-0.38071066,-0.88907794,-0.25416493) - New Momentum Direction: (-0.8400188,0.54158655,-0.032441226) - New Polarization: (-0.51701282,-0.81716804,-0.25482177) - *** FresnelRefraction *** - 1 -5 m 2.18 m -13.1 cm 3.3 eV 0 eV 5.46 m 5.46 m Tank Transportation - 2 -10 m 5.4 m -32.4 cm 3.3 eV 0 eV 5.95 m 11.4 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 50, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 717 um -147 um -658 um 4.11 eV 0 eV 0 fm 0 fm Tank initStep - -** Photon absorbed! ** - 1 2.61 m -1.94 m 3.62 m 4.11 eV 0 eV 4.87 m 4.87 m Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 49, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 785 um -161 um -728 um 2.08 eV 0 eV 0 fm 0 fm Tank initStep - -** Photon absorbed! ** - 1 -4.01 m 8.66 cm 1.65 m 2.08 eV 0 eV 4.34 m 4.34 m Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 48, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 748 um -153 um -690 um 3.42 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.93223719,-0.34418171,-0.11168158) - Old Polarization: (-0.13262043,-0.6121575,0.77953513) - New Momentum Direction: (0.87112591,-0.46708526,-0.15156186) - New Polarization: (0.18158237,0.019629273,0.98317981) - *** FresnelRefraction *** - 1 5 m -1.85 m -60 cm 3.42 eV 0 eV 5.36 m 5.36 m Tank Transportation - 2 10 m -4.53 m -1.47 m 3.42 eV 0 eV 5.74 m 11.1 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 47, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 202 um -33.8 um -127 um 3.04 eV 0 eV 0 fm 0 fm Tank initStep - -** Photon absorbed! ** - 1 -2.37 m -82.3 cm -94.9 cm 3.04 eV 0 eV 2.69 m 2.69 m Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 46, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 318 um -59.1 um -246 um 2.94 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (-0.72324813,0.34181074,-0.60006464) - Old Polarization: (0.57900716,-0.17343744,-0.79666189) - New Momentum Direction: (-0.35468808,0.46277619,-0.81242511) - New Polarization: (-0.80651241,-0.59101523,0.015450732) - *** FresnelRefraction *** - 1 -5 m 2.36 m -4.15 m 2.94 eV 0 eV 6.91 m 6.91 m Tank Transportation - 2 -7.55 m 5.7 m -10 m 2.94 eV 0 eV 7.2 m 14.1 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 45, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 448 um -87.6 um -380 um 3.71 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.49333598,-0.48347526,-0.7230984) - Old Polarization: (0.63046498,-0.37398024,0.68018578) - New Momentum Direction: (0.6703324,-0.65693391,-0.34509754) - New Polarization: (-0.13363454,0.35058072,-0.92694928) - *** FresnelRefraction *** - 1 3.41 m -3.34 m -5 m 3.71 eV 0 eV 6.91 m 6.91 m Tank Transportation - 2 10 m -9.8 m -8.39 m 3.71 eV 0 eV 9.83 m 16.7 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 44, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 529 um -105 um -465 um 2.34 eV 0 eV 0 fm 0 fm Tank initStep - -** Photon absorbed! ** - 1 88 cm 69.1 cm -2.92 m 2.34 eV 0 eV 3.12 m 3.12 m Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 43, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 292 um -53.4 um -220 um 3.66 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.49446429,-0.81554908,-0.30064058) - Old Polarization: (0.10145537,-0.28936546,0.9518269) - New Momentum Direction: (0.6717432,-0.61801885,-0.40842842) - New Polarization: (0.1726772,-0.40552382,0.89762632) - *** FresnelRefraction *** - 1 3.03 m -5 m -1.84 m 3.66 eV 0 eV 6.13 m 6.13 m Tank Transportation - 2 8.47 m -10 m -5.15 m 3.66 eV 0 eV 8.09 m 14.2 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 42, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 550 um -110 um -485 um 3.46 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (-0.07319133,0.95694471,-0.28089118) - Old Polarization: (-0.8164578,-0.21923893,-0.53416379) - New Momentum Direction: (-0.099342969,0.91911673,-0.38125504) - New Polarization: (-0.45649711,0.29835371,0.83820967) - *** FresnelRefraction *** - 1 -38.2 cm 5 m -1.47 m 3.46 eV 0 eV 5.23 m 5.23 m Tank Transportation - 2 -92.2 cm 10 m -3.54 m 3.46 eV 0 eV 5.44 m 10.7 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 41, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 307 um -56.7 um -235 um 3.08 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.96920646,-0.093367717,-0.22786248) - Old Polarization: (0.23128359,0.027479532,0.97249821) - New Momentum Direction: (0.94270301,-0.12649997,-0.30872122) - New Polarization: (0.31351011,0.019375165,0.94938718) - *** FresnelRefraction *** - 1 5 m -48.2 cm -1.18 m 3.08 eV 0 eV 5.16 m 5.16 m Tank Transportation - 2 10 m -1.15 m -2.81 m 3.08 eV 0 eV 5.3 m 10.5 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 40, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 667 um -136 um -607 um 3.17 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.88761222,-0.1130393,-0.44650495) - Old Polarization: (0.44985382,0.42086355,0.78772166) - New Momentum Direction: (0.78117338,-0.15322044,-0.60522033) - New Polarization: (0.61029094,0.39172324,0.68854765) - *** FresnelRefraction *** - 1 5 m -63.7 cm -2.52 m 3.17 eV 0 eV 5.63 m 5.63 m Tank Transportation - 2 10 m -1.62 m -6.39 m 3.17 eV 0 eV 6.4 m 12 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 39, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 388 um -74.5 um -319 um 3.78 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (-0.41188485,0.28439427,-0.8657198) - Old Polarization: (-0.86203603,0.18634613,0.47134807) - New Momentum Direction: (-0.55979489,0.38652177,-0.73296017) - New Polarization: (0.38266178,-0.66399028,-0.64240709) - *** FresnelRefraction *** - 1 -2.38 m 1.64 m -5 m 3.78 eV 0 eV 5.78 m 5.78 m Tank Transportation - 2 -6.2 m 4.28 m -10 m 3.78 eV 0 eV 6.82 m 12.6 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 38, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 185 um -30 um -109 um 3.96 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (-0.3790989,-0.92390724,0.051763177) - Old Polarization: (-0.29459942,0.067474096,-0.95323577) - New Momentum Direction: (-0.51551774,-0.85398283,0.07039017) - New Polarization: (0.017841364,-0.092826844,-0.99552241) - *** FresnelRefraction *** - 1 -2.05 m -5 m 28 cm 3.96 eV 0 eV 5.41 m 5.41 m Tank Transportation - 2 -5.07 m -10 m 69.2 cm 3.96 eV 0 eV 5.85 m 11.3 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 37, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 898 um 6.27 um -111 um 3.15 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.90095378,-0.36831537,0.22940372) - Old Polarization: (-0.4263193,-0.65287133,0.62610772) - New Momentum Direction: (0.8087964,-0.49918094,0.3109128) - New Polarization: (0.57811527,0.77183248,-0.2646835) - *** FresnelRefraction *** - 1 5 m -2.04 m 1.27 m 3.15 eV 0 eV 5.55 m 5.55 m Tank Transportation - 2 10 m -5.13 m 3.19 m 3.15 eV 0 eV 6.18 m 11.7 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 36, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 689 um 2.34 um -85.2 um 2.21 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.83574659,0.50807759,-0.20829018) - Old Polarization: (-0.53633865,0.83664478,-0.11120415) - New Momentum Direction: (0.67362237,0.68384143,-0.28034587) - New Polarization: (0.7229005,-0.53071435,0.4424445) - *** FresnelRefraction *** - 1 5 m 3.04 m -1.25 m 2.21 eV 0 eV 5.98 m 5.98 m Tank Transportation - 2 10 m 8.12 m -3.33 m 2.21 eV 0 eV 7.42 m 13.4 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 35, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 200 um -6.85 um -23.9 um 3.46 eV 0 eV 0 fm 0 fm Tank initStep -Scattering Photon! -Old Momentum Direction: (0.89885645,0.29669616,0.32253447) -Old Polarization: (-0.43027236,0.45774008,0.7780358) -New Polarization: (-0.62942731,0.6455167,0.43258462) -Polarization Change: (-0.62942731,0.6455167,0.43258462) -New Momentum Direction: (0.32103922,-0.29093757,0.90127085) -Momentum Change: (0.32103922,-0.29093757,0.90127085) - 1 1.76 m 58.1 cm 63.1 cm 3.46 eV 0 eV 1.96 m 1.96 m Tank OpRayleigh - Photon at Boundary! - Old Momentum Direction: (0.32103922,-0.29093757,0.90127085) - Old Polarization: (-0.62942731,0.6455167,0.43258462) - New Momentum Direction: (0.43574454,-0.39488777,0.80882034) - New Polarization: (-0.56166394,0.58288987,0.58717375) - *** FresnelRefraction *** - 2 3.32 m -83 cm 5 m 3.46 eV 0 eV 4.85 m 6.8 m Tank Transportation - 3 6.01 m -3.27 m 10 m 3.46 eV 0 eV 6.18 m 13 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 34, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 237 um -6.16 um -28.6 um 2.46 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.90777826,-0.33160917,0.25685401) - Old Polarization: (-0.41324052,-0.60206623,0.68318997) - New Momentum Direction: (0.82453024,-0.44732442,0.34648339) - New Polarization: (0.55767185,0.74600745,-0.36397114) - *** FresnelRefraction *** - 1 5 m -1.83 m 1.41 m 2.46 eV 0 eV 5.51 m 5.51 m Tank Transportation - 2 10 m -4.54 m 3.52 m 2.46 eV 0 eV 6.06 m 11.6 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 33, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 612 um 896 nm -75.6 um 2.41 eV 0 eV 0 fm 0 fm Tank initStep - -** Photon absorbed! ** - 1 21.7 cm 12 cm 2.05 cm 2.41 eV 0 eV 24.8 cm 24.8 cm Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 32, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 151 um -7.76 um -17.9 um 3.36 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.79988761,0.38920028,-0.45684019) - Old Polarization: (-0.59513936,0.61255734,-0.52017559) - New Momentum Direction: (0.58045313,0.52807366,-0.61984866) - New Polarization: (0.80811237,-0.27995496,0.51824668) - *** FresnelRefraction *** - 1 5 m 2.43 m -2.86 m 3.36 eV 0 eV 6.25 m 6.25 m Tank Transportation - 2 10 m 6.98 m -8.19 m 3.36 eV 0 eV 8.61 m 14.9 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 31, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 313 um -4.72 um -38.2 um 3.1 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.88787212,-0.446387,0.11145289) - Old Polarization: (-0.4481609,-0.7842876,0.4290044) - New Momentum Direction: (0.78189472,-0.60484286,0.15101579) - New Polarization: (0.60783078,0.79346611,0.030875158) - *** FresnelRefraction *** - 1 5 m -2.51 m 62.8 cm 3.1 eV 0 eV 5.63 m 5.63 m Tank Transportation - 2 10 m -6.38 m 1.59 m 3.1 eV 0 eV 6.39 m 12 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 30, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 906 um 6.42 um -112 um 3.5 eV 0 eV 0 fm 0 fm Tank initStep -Scattering Photon! -Old Momentum Direction: (0.89116075,0.36249642,0.27281653) -Old Polarization: (-0.4431541,0.56667975,0.69461392) -New Polarization: (-0.3914729,0.58563924,0.70977155) -Polarization Change: (-0.3914729,0.58563924,0.70977155) -New Momentum Direction: (-0.916684,-0.31546184,-0.24530445) -Momentum Change: (-0.916684,-0.31546184,-0.24530445) - 1 1.67 m 68 cm 51.2 cm 3.5 eV 0 eV 1.88 m 1.88 m Tank OpRayleigh - Photon at Boundary! - Old Momentum Direction: (-0.916684,-0.31546184,-0.24530445) - Old Polarization: (-0.3914729,0.58563924,0.70977155) - New Momentum Direction: (-0.84002891,-0.42829248,-0.33304202) - New Polarization: (-0.53177052,0.52825856,0.66193882) - *** FresnelRefraction *** - 2 -5 m -1.62 m -1.27 m 3.5 eV 0 eV 7.28 m 9.16 m Tank Transportation - 3 -10 m -4.17 m -3.26 m 3.5 eV 0 eV 5.95 m 15.1 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 29, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 691 um 2.37 um -85.4 um 2.09 eV 0 eV 0 fm 0 fm Tank initStep - -** Photon absorbed! ** - 1 45.6 cm -10.3 cm 16.7 cm 2.09 eV 0 eV 49.6 cm 49.6 cm Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 28, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 185 um -7.12 um -22.1 um 2.93 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.91092238,-0.26411888,0.31695684) - Old Polarization: (-0.40921181,-0.48045371,0.77569963) - New Momentum Direction: (0.82947406,-0.35756251,0.42909422) - New Polarization: (0.55411336,0.62337432,-0.5516909) - *** FresnelRefraction *** - 1 5 m -1.45 m 1.74 m 2.93 eV 0 eV 5.49 m 5.49 m Tank Transportation - 2 10 m -3.61 m 4.33 m 2.93 eV 0 eV 6.03 m 11.5 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 27, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 522 um -794 nm -64.3 um 2.48 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.80118021,-0.17893213,-0.57104603) - Old Polarization: (-0.59489363,-0.34163285,-0.72759093) - New Momentum Direction: (0.5900623,-0.24140482,-0.77042209) - New Polarization: (0.80300342,0.076507434,0.59104325) - *** FresnelRefraction *** - 1 5 m -1.12 m -3.56 m 2.48 eV 0 eV 6.24 m 6.24 m Tank Transportation - 2 9.93 m -3.13 m -10 m 2.48 eV 0 eV 8.35 m 14.6 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 26, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 344 um -4.15 um -42 um 3.11 eV 0 eV 0 fm 0 fm Tank initStep - -** Photon absorbed! ** - 1 60 cm 15.9 cm 23.3 cm 3.11 eV 0 eV 66.3 cm 66.3 cm Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 25, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 879 um 5.91 um -109 um 3.03 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.8776269,0.45115,0.16197132) - Old Polarization: (-0.46527335,0.72048824,0.51421533) - New Momentum Direction: (0.76054487,0.6110953,0.21939468) - New Polarization: (0.63099524,-0.77528373,-0.027931145) - *** FresnelRefraction *** - 1 5 m 2.57 m 92.3 cm 3.03 eV 0 eV 5.7 m 5.7 m Tank Transportation - 2 10 m 6.59 m 2.36 m 3.03 eV 0 eV 6.57 m 12.3 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 24, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 163 um -7.55 um -19.3 um 3.99 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.80408797,0.44007007,-0.39972599) - Old Polarization: (-0.58748089,0.69125527,-0.42075213) - New Momentum Direction: (0.58848899,0.59847396,-0.54360797) - New Polarization: (0.79979344,-0.3324824,0.49978586) - *** FresnelRefraction *** - 1 5 m 2.74 m -2.49 m 3.99 eV 0 eV 6.22 m 6.22 m Tank Transportation - 2 10 m 7.82 m -7.1 m 3.99 eV 0 eV 8.5 m 14.7 m OutOfWorld Transportation + Exiting from G4Scintillation::DoIt -- NumberOfSecondaries = 19 + 2 978 um 444 um 613 um 142 keV 332 keV 1.43 mm 1.52 mm Tank eIoni ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 23, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 892 um 6.14 um -111 um 2.07 eV 0 eV 0 fm 0 fm Tank initStep + 0 691 um 300 um 420 um 2.45 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.91748452,0.12536152,0.37750052) - Old Polarization: (-0.39520183,0.17958578,0.90086873) - New Momentum Direction: (0.84509657,0.16848866,0.50736906) - New Polarization: (0.5312415,-0.37108647,-0.76162806) - *** FresnelRefraction *** - 1 5 m 68.3 cm 2.06 m 2.07 eV 0 eV 5.45 m 5.45 m Tank Transportation - 2 10 m 1.68 m 5.06 m 2.07 eV 0 eV 5.92 m 11.4 m OutOfWorld Transportation + Old Momentum Direction: (-0.53906468,-0.51233467,0.6685226) + Old Polarization: (0.32811584,-0.85875565,-0.39354635) + New Momentum Direction: (0.53906468,0.51233467,-0.6685226) + New Polarization: (-0.32811584,0.85875565,0.39354635) + *** BackScattering *** + 1 -4.03 m -3.83 m 5 m 2.45 eV 0 eV 7.48 m 7.48 m Tank Transportation + 2 -4.03 m -3.83 m 5 m 2.45 eV 0 eV 0 fm 7.48 m World Transportation + Photon at Boundary! + Old Momentum Direction: (0.53906468,0.51233467,-0.6685226) + Old Polarization: (-0.32811584,0.85875565,0.39354635) + New Momentum Direction: (-0.53906468,-0.51233467,0.6685226) + New Polarization: (0.32811584,-0.85875565,-0.39354635) + *** BackScattering *** + 3 4.03 m 3.83 m -5 m 2.45 eV 0 eV 15 m 22.4 m Tank Transportation + 4 4.03 m 3.83 m -5 m 2.45 eV 0 eV 0 fm 22.4 m World Transportation + +** Photon absorbed! ** + 5 3.24 m 3.08 m -4.02 m 2.45 eV 0 eV 1.47 m 23.9 m Tank OpAbsorption ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 22, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 889 um 6.09 um -110 um 2.47 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.81067577,-0.28497012,-0.51146537) - Old Polarization: (-0.57873328,-0.52239386,-0.62623673) - New Momentum Direction: (0.61327124,-0.38444375,-0.69000101) - New Polarization: (0.78146009,0.16815696,0.60086884) - *** FresnelRefraction *** - 1 5 m -1.76 m -3.15 m 2.47 eV 0 eV 6.17 m 6.17 m Tank Transportation - 2 10 m -4.89 m -8.78 m 2.47 eV 0 eV 8.15 m 14.3 m OutOfWorld Transportation + 0 366 um 136 um 200 um 2.35 eV 0 eV 0 fm 0 fm Tank initStep + +** Photon absorbed! ** + 1 76.3 cm 1.6 m 3.03 m 2.35 eV 0 eV 3.51 m 3.51 m Tank OpAbsorption ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 21, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 986 um 7.91 um -122 um 3.12 eV 0 eV 0 fm 0 fm Tank initStep + 0 649 um 278 um 391 um 3.35 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.8595413,0.51022239,0.029357633) - Old Polarization: (-0.49563575,0.81820381,0.29135498) - New Momentum Direction: (0.72136231,0.69141428,0.039783215) - New Polarization: (0.67267566,-0.71316165,0.19725091) + Old Momentum Direction: (-0.35833645,-0.75490345,-0.5492866) + Old Polarization: (0.91033841,-0.41303267,-0.026229732) + New Momentum Direction: (-0.48618827,-0.45628556,-0.74526804) + New Polarization: (0.79476087,-0.58544116,-0.16004317) *** FresnelRefraction *** - 1 5 m 2.97 m 17.1 cm 3.12 eV 0 eV 5.82 m 5.82 m Tank Transportation - 2 10 m 7.76 m 44.6 cm 3.12 eV 0 eV 6.93 m 12.7 m OutOfWorld Transportation + 1 -2.37 m -5 m -3.64 m 3.35 eV 0 eV 6.62 m 6.62 m Tank Transportation + 2 -6.52 m -8.9 m -10 m 3.35 eV 0 eV 8.54 m 15.2 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 20, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 258 um -5.76 um -31.2 um 2.46 eV 0 eV 0 fm 0 fm Tank initStep + 0 430 um 168 um 243 um 3.45 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.88355475,-0.46637789,0.042692666) - Old Polarization: (-0.45452123,-0.83196484,0.31819013) - New Momentum Direction: (0.77519928,-0.62908648,0.057587161) - New Polarization: (0.61377233,0.77161633,0.16700827) + Old Momentum Direction: (-0.29726426,-0.90136946,-0.31490803) + Old Polarization: (-0.33380386,-0.21089389,0.91874847) + New Momentum Direction: (-0.40345385,-0.80904506,-0.42740038) + New Polarization: (-0.35879375,-0.28981051,0.88728626) *** FresnelRefraction *** - 1 5 m -2.64 m 24.2 cm 2.46 eV 0 eV 5.66 m 5.66 m Tank Transportation - 2 10 m -6.7 m 61.3 cm 2.46 eV 0 eV 6.45 m 12.1 m OutOfWorld Transportation + 1 -1.65 m -5 m -1.75 m 3.45 eV 0 eV 5.55 m 5.55 m Tank Transportation + 2 -4.14 m -10 m -4.39 m 3.45 eV 0 eV 6.18 m 11.7 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 19, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 386 um -3.36 um -47.2 um 2.74 eV 0 eV 0 fm 0 fm Tank initStep + 0 112 um 8.83 um 28.9 um 2.93 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.79620436,-0.13658489,-0.58940918) - Old Polarization: (-0.60253684,-0.26731154,-0.75199328) - New Momentum Direction: (0.5751614,-0.18467235,-0.79692251) - New Polarization: (0.81498019,0.045177326,0.5777251) + Old Momentum Direction: (-0.6895524,-0.4540972,0.56419253) + Old Polarization: (-0.034816033,-0.75733277,-0.65210039) + New Momentum Direction: (-0.19668889,-0.61475399,0.76380037) + New Polarization: (-0.055706728,-0.77075248,-0.63469471) *** FresnelRefraction *** - 1 5 m -85.8 cm -3.7 m 2.74 eV 0 eV 6.28 m 6.28 m Tank Transportation - 2 9.55 m -2.32 m -10 m 2.74 eV 0 eV 7.9 m 14.2 m OutOfWorld Transportation + 1 -5 m -3.29 m 4.09 m 2.93 eV 0 eV 7.25 m 7.25 m Tank Transportation + 2 -6.52 m -8.05 m 10 m 2.93 eV 0 eV 7.74 m 15 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 18, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1 mm 8.21 um -124 um 3.15 eV 0 eV 0 fm 0 fm Tank initStep - -** Photon absorbed! ** - 1 4.42 m 52.9 cm 1.91 m 3.15 eV 0 eV 4.85 m 4.85 m Tank OpAbsorption + 0 923 um 416 um 576 um 2.93 eV 0 eV 0 fm 0 fm Tank initStep + Photon at Boundary! + Old Momentum Direction: (0.21874766,0.86910968,0.44361901) + Old Polarization: (-0.64959203,-0.20954336,0.73083635) + New Momentum Direction: (0.21874766,-0.86910968,0.44361901) + New Polarization: (-0.94410001,-0.073601936,0.32133771) + *** SpikeReflection *** + 1 1.26 m 5 m 2.55 m 2.93 eV 0 eV 5.75 m 5.75 m Tank Transportation + 2 1.26 m 5 m 2.55 m 2.93 eV 0 eV 0 fm 5.75 m World Transportation + Photon at Boundary! + Old Momentum Direction: (0.21874766,-0.86910968,0.44361901) + Old Polarization: (-0.94410001,-0.073601936,0.32133771) + New Momentum Direction: (0.21874766,-0.86910968,-0.44361901) + New Polarization: (0.94410001,0.073601936,0.32133771) + *** LobeReflection *** + 3 2.47 m 20.5 cm 5 m 2.93 eV 0 eV 5.52 m 11.3 m Tank Transportation + 4 2.47 m 20.5 cm 5 m 2.93 eV 0 eV 0 fm 11.3 m World Transportation + Photon at Boundary! + Old Momentum Direction: (0.21874766,-0.86910968,-0.44361901) + Old Polarization: (0.94410001,0.073601936,0.32133771) + New Momentum Direction: (0.29615288,-0.74268263,-0.60059635) + New Polarization: (0.83641478,-0.10196997,0.53852804) + *** FresnelRefraction *** + 5 3.78 m -5 m 2.34 m 2.93 eV 0 eV 5.99 m 17.3 m Tank Transportation + 6 5.77 m -10 m -1.7 m 2.93 eV 0 eV 6.73 m 24 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 17, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 330 um -4.4 um -40.3 um 2.43 eV 0 eV 0 fm 0 fm Tank initStep + 0 545 um 226 um 321 um 3.03 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.89173676,0.38715797,0.23433791) - Old Polarization: (-0.44050957,0.6239011,0.64552206) - New Momentum Direction: (0.79218376,0.52209359,0.31601136) - New Polarization: (0.59457846,-0.77698212,-0.20682173) + Old Momentum Direction: (-0.35201719,0.56511873,-0.74613988) + Old Polarization: (0.900738,-0.012196349,-0.43419156) + New Momentum Direction: (0.35201719,-0.56511873,0.74613988) + New Polarization: (-0.900738,0.012196349,0.43419156) + *** BackScattering *** + 1 -2.36 m 3.79 m -5 m 3.03 eV 0 eV 6.7 m 6.7 m Tank Transportation + 2 -2.36 m 3.79 m -5 m 3.03 eV 0 eV 0 fm 6.7 m World Transportation + Photon at Boundary! + Old Momentum Direction: (0.35201719,-0.56511873,0.74613988) + Old Polarization: (-0.900738,0.012196349,0.43419156) + New Momentum Direction: (0.47681713,-0.76546913,0.43209076) + New Polarization: (-0.77664944,-0.13666732,0.61492901) *** FresnelRefraction *** - 1 5 m 2.17 m 1.31 m 2.43 eV 0 eV 5.61 m 5.61 m Tank Transportation - 2 10 m 5.47 m 3.31 m 2.43 eV 0 eV 6.31 m 11.9 m OutOfWorld Transportation + 3 2.36 m -3.79 m 5 m 3.03 eV 0 eV 13.4 m 20.1 m Tank Transportation + 4 6.23 m -10 m 8.51 m 3.03 eV 0 eV 8.12 m 28.2 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 16, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 149 um -7.81 um -17.5 um 2.41 eV 0 eV 0 fm 0 fm Tank initStep + 0 225 um 65.5 um 105 um 3.01 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.91747997,0.071748086,0.39125787) - Old Polarization: (-0.39648819,0.085681253,0.91403273) - New Momentum Direction: (0.84402269,0.096733979,0.52751137) - New Polarization: (0.53460553,-0.23005209,-0.81318692) + Old Momentum Direction: (0.59609138,-0.27828072,-0.75314999) + Old Polarization: (0.76599519,-0.084078977,0.63732417) + New Momentum Direction: (0.80734853,-0.37690451,-0.45401689) + New Polarization: (-0.30254922,0.39617976,-0.86689421) *** FresnelRefraction *** - 1 5 m 39.1 cm 2.13 m 2.41 eV 0 eV 5.45 m 5.45 m Tank Transportation - 2 10 m 96.4 cm 5.26 m 2.41 eV 0 eV 5.92 m 11.4 m OutOfWorld Transportation + 1 3.96 m -1.85 m -5 m 3.01 eV 0 eV 6.64 m 6.64 m Tank Transportation + 2 10 m -4.67 m -8.4 m 3.01 eV 0 eV 7.48 m 14.1 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 15, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 168 um -7.45 um -19.9 um 3.47 eV 0 eV 0 fm 0 fm Tank initStep -Scattering Photon! -Old Momentum Direction: (0.87461078,-0.48467705,0.012005908) -Old Polarization: (-0.4706443,-0.84282202,0.26104594) -New Polarization: (-0.98311186,-0.068296999,0.16978393) -Polarization Change: (-0.98311186,-0.068296999,0.16978393) -New Momentum Direction: (0.10225685,-0.97441697,0.20013772) -Momentum Change: (0.10225685,-0.97441697,0.20013772) - 1 94.3 cm -52.2 cm 1.29 cm 3.47 eV 0 eV 1.08 m 1.08 m Tank OpRayleigh + 0 104 um 4.62 um 23.3 um 2.47 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.10225685,-0.97441697,0.20013772) - Old Polarization: (-0.98311186,-0.068296999,0.16978393) - New Momentum Direction: (0.13880154,-0.95233043,0.2716632) - New Polarization: (-0.98020092,-0.092997893,0.17480716) + Old Momentum Direction: (0.468927,-0.34534806,0.812922) + Old Polarization: (0.036616398,-0.91199702,-0.40855927) + New Momentum Direction: (0.6326139,-0.46589764,0.61865907) + New Polarization: (-0.77067187,-0.29970954,0.56235136) *** FresnelRefraction *** - 2 1.41 m -5 m 93.3 cm 3.47 eV 0 eV 4.6 m 5.67 m Tank Transportation - 3 2.14 m -10 m 2.36 m 3.47 eV 0 eV 5.25 m 10.9 m OutOfWorld Transportation + 1 2.88 m -2.12 m 5 m 2.47 eV 0 eV 6.15 m 6.15 m Tank Transportation + 2 8 m -5.89 m 10 m 2.47 eV 0 eV 8.08 m 14.2 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 14, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 207 um -6.72 um -24.8 um 2.83 eV 0 eV 0 fm 0 fm Tank initStep + 0 350 um 128 um 189 um 3.51 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.89448251,-0.41787149,0.15901086) - Old Polarization: (-0.43671315,-0.74034978,0.51104191) - New Momentum Direction: (0.79624197,-0.565425,0.21515877) - New Polarization: (0.59138556,0.80242952,-0.079812162) + Old Momentum Direction: (-0.77104056,-0.084438551,0.63116288) + Old Polarization: (0.20693502,0.9041488,0.37375505) + New Momentum Direction: (-0.50251086,-0.11464308,0.85693629) + New Polarization: (-0.29739096,0.95360734,-0.046815265) *** FresnelRefraction *** - 1 5 m -2.34 m 88.9 cm 2.83 eV 0 eV 5.59 m 5.59 m Tank Transportation - 2 10 m -5.89 m 2.24 m 2.83 eV 0 eV 6.28 m 11.9 m OutOfWorld Transportation + 1 -5 m -54.7 cm 4.09 m 3.51 eV 0 eV 6.49 m 6.49 m Tank Transportation + 2 -8.46 m -1.34 m 10 m 3.51 eV 0 eV 6.89 m 13.4 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 13, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 423 um -2.66 um -51.8 um 2.27 eV 0 eV 0 fm 0 fm Tank initStep + 0 269 um 87.4 um 134 um 2.74 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.91417803,0.16429447,0.37052107) - Old Polarization: (-0.40166964,0.24493832,0.88242094) - New Momentum Direction: (0.83790629,0.22124695,0.49896176) - New Polarization: (0.54103091,-0.45743017,-0.70572176) + Old Momentum Direction: (0.95466944,-0.29741057,-0.012377858) + Old Polarization: (0.27100868,0.85121639,0.44942736) + New Momentum Direction: (0.91543404,-0.40211993,-0.016735732) + New Polarization: (0.36681467,0.81650598,0.44583067) *** FresnelRefraction *** - 1 5 m 89.9 cm 2.03 m 2.27 eV 0 eV 5.47 m 5.47 m Tank Transportation - 2 10 m 2.22 m 5 m 2.27 eV 0 eV 5.97 m 11.4 m OutOfWorld Transportation + 1 5 m -1.56 m -6.47 cm 2.74 eV 0 eV 5.24 m 5.24 m Tank Transportation + 2 10 m -3.75 m -15.6 cm 2.74 eV 0 eV 5.46 m 10.7 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 12, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 89.1 um -8.93 um -10.1 um 3.98 eV 0 eV 0 fm 0 fm Tank initStep + 0 508 um 208 um 296 um 2.81 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.78631655,0.23016625,-0.57334962) - Old Polarization: (-0.61685595,0.34440348,-0.70772521) - New Momentum Direction: (0.54228397,0.31300928,-0.77971359) - New Polarization: (0.83901829,-0.15263789,0.52225471) + Old Momentum Direction: (-0.86515614,-0.16651013,0.4730531) + Old Polarization: (0.085319225,-0.97838982,-0.18834539) + New Momentum Direction: (-0.73462887,-0.22526701,0.63998062) + New Polarization: (-0.1182001,-0.88635292,-0.44766868) *** FresnelRefraction *** - 1 5 m 1.46 m -3.65 m 3.98 eV 0 eV 6.36 m 6.36 m Tank Transportation - 2 9.42 m 4.01 m -10 m 3.98 eV 0 eV 8.15 m 14.5 m OutOfWorld Transportation + 1 -5 m -96.2 cm 2.73 m 2.81 eV 0 eV 5.78 m 5.78 m Tank Transportation + 2 -10 m -2.5 m 7.09 m 2.81 eV 0 eV 6.81 m 12.6 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 11, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 772 um 3.9 um -95.6 um 3.53 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.87783002,-0.47718614,0.041326095) - Old Polarization: (-0.46534839,-0.82924841,0.30951243) - New Momentum Direction: (0.75960821,-0.64795558,0.056115365) - New Polarization: (0.63264273,0.75614884,0.16733833) - *** FresnelRefraction *** - 1 5 m -2.72 m 23.5 cm 3.53 eV 0 eV 5.69 m 5.69 m Tank Transportation - 2 10 m -6.98 m 60.5 cm 3.53 eV 0 eV 6.58 m 12.3 m OutOfWorld Transportation + 0 259 um 82.3 um 128 um 2.41 eV 0 eV 0 fm 0 fm Tank initStep + +** Photon absorbed! ** + 1 -1.09 m 11.9 cm -70.9 cm 2.41 eV 0 eV 1.31 m 1.31 m Tank OpAbsorption ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 10, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 976 um 7.73 um -121 um 2.16 eV 0 eV 0 fm 0 fm Tank initStep + 0 723 um 316 um 441 um 3.43 eV 0 eV 0 fm 0 fm Tank initStep +Scattering Photon! +Old Momentum Direction: (-0.27582851,-0.61003095,0.74281955) +Old Polarization: (-0.0077967375,-0.77135347,-0.6363592) +New Polarization: (-0.53327585,-0.12978305,-0.83592657) +Polarization Change: (-0.53327585,-0.12978305,-0.83592657) +New Momentum Direction: (-0.42965282,0.892772,0.13548654) +Momentum Change: (-0.42965282,0.892772,0.13548654) + 1 -1.59 m -3.51 m 4.27 m 3.43 eV 0 eV 5.75 m 5.75 m Tank OpRayleigh Photon at Boundary! - Old Momentum Direction: (0.79656339,0.19813496,-0.57116486) - Old Polarization: (-0.6039151,0.30424464,-0.73669651) - New Momentum Direction: (0.58182779,0.26655233,-0.76839201) - New Polarization: (0.8125265,-0.1489895,0.56356261) + Old Momentum Direction: (-0.42965282,0.892772,0.13548654) + Old Polarization: (-0.53327585,-0.12978305,-0.83592657) + New Momentum Direction: (0.42965282,-0.892772,-0.13548654) + New Polarization: (0.53327585,0.12978305,0.83592657) + *** BackScattering *** + 2 -3.89 m 1.27 m 5 m 3.43 eV 0 eV 5.36 m 11.1 m Tank Transportation + 3 -3.89 m 1.27 m 5 m 3.43 eV 0 eV 0 fm 11.1 m World Transportation + Photon at Boundary! + Old Momentum Direction: (0.42965282,-0.892772,-0.13548654) + Old Polarization: (0.53327585,0.12978305,0.83592657) + New Momentum Direction: (0.58308733,-0.7913285,-0.18387052) + New Polarization: (0.066471111,-0.17909848,0.98158307) *** FresnelRefraction *** - 1 5 m 1.24 m -3.58 m 2.16 eV 0 eV 6.28 m 6.28 m Tank Transportation - 2 9.86 m 3.47 m -10 m 2.16 eV 0 eV 8.35 m 14.6 m OutOfWorld Transportation + 4 -86.9 cm -5 m 4.05 m 3.43 eV 0 eV 7.02 m 18.1 m Tank Transportation + 5 2.82 m -10 m 2.89 m 3.43 eV 0 eV 6.32 m 24.5 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 9, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 919 um 6.65 um -114 um 2.65 eV 0 eV 0 fm 0 fm Tank initStep + 0 427 um 167 um 242 um 2.27 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.82752484,0.50390731,-0.2475481) - Old Polarization: (-0.54973746,0.81678781,-0.17506113) - New Momentum Direction: (0.65155884,0.68087516,-0.33448482) - New Polarization: (0.74385309,-0.48692395,0.45780744) + Old Momentum Direction: (-0.67372036,0.20582155,0.70974529) + Old Polarization: (0.2273276,-0.85613546,0.46406276) + New Momentum Direction: (-0.90726473,0.27716935,0.31630344) + New Polarization: (0.0032142429,-0.74750882,0.66424411) *** FresnelRefraction *** - 1 5 m 3.04 m -1.5 m 2.65 eV 0 eV 6.04 m 6.04 m Tank Transportation - 2 10 m 8.27 m -4.06 m 2.65 eV 0 eV 7.67 m 13.7 m OutOfWorld Transportation + 1 -4.75 m 1.45 m 5 m 2.27 eV 0 eV 7.04 m 7.04 m Tank Transportation + 2 -10 m 3.06 m 6.83 m 2.27 eV 0 eV 5.79 m 12.8 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 8, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 934 um 6.94 um -116 um 3.36 eV 0 eV 0 fm 0 fm Tank initStep + 0 150 um 27.6 um 54.1 um 3.51 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.87723777,0.44884796,0.17026275) - Old Polarization: (-0.46620425,0.71195674,0.52513921) - New Momentum Direction: (0.75877284,0.6090111,0.23101787) - New Polarization: (0.63333393,-0.77266884,-0.043255039) + Old Momentum Direction: (0.78164245,-0.38255173,-0.49263501) + Old Polarization: (-0.32174701,-0.92392829,0.2069671) + New Momentum Direction: (0.5318204,-0.51940479,-0.66886899) + New Polarization: (0.45545363,-0.49044516,0.74298421) *** FresnelRefraction *** - 1 5 m 2.56 m 97 cm 3.36 eV 0 eV 5.7 m 5.7 m Tank Transportation - 2 10 m 6.57 m 2.49 m 3.36 eV 0 eV 6.59 m 12.3 m OutOfWorld Transportation + 1 5 m -2.45 m -3.15 m 3.51 eV 0 eV 6.4 m 6.4 m Tank Transportation + 2 10 m -7.33 m -9.44 m 3.51 eV 0 eV 9.4 m 15.8 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 7, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 1e+03 um 8.17 um -124 um 3.4 eV 0 eV 0 fm 0 fm Tank initStep + 0 721 um 315 um 440 um 2.16 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.89450028,-0.40909938,0.18029683) - Old Polarization: (-0.43746277,-0.7178027,0.54165082) - New Momentum Direction: (0.79495606,-0.55514472,0.24466141) - New Polarization: (0.59407654,0.7940815,-0.12848203) + Old Momentum Direction: (0.84438292,0.3308607,0.42136526) + Old Polarization: (0.45521554,-0.028384061,-0.88992874) + New Momentum Direction: (0.69321083,0.44510916,0.56686557) + New Polarization: (0.61725107,0.039418332,-0.78577816) *** FresnelRefraction *** - 1 5 m -2.29 m 1.01 m 3.4 eV 0 eV 5.59 m 5.59 m Tank Transportation - 2 10 m -5.78 m 2.55 m 3.4 eV 0 eV 6.29 m 11.9 m OutOfWorld Transportation + 1 5 m 1.96 m 2.5 m 2.16 eV 0 eV 5.92 m 5.92 m Tank Transportation + 2 10 m 5.17 m 6.58 m 2.16 eV 0 eV 7.21 m 13.1 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 6, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 724 um 2.99 um -89.5 um 2.94 eV 0 eV 0 fm 0 fm Tank initStep + 0 271 um 88.7 um 136 um 2.75 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.91500246,-0.1752017,0.36342106) - Old Polarization: (-0.40238288,-0.33088043,0.8535843) - New Momentum Direction: (0.83763728,-0.23720483,0.49203421) - New Polarization: (0.54482209,0.42737911,-0.72146793) + Old Momentum Direction: (-0.14802158,0.51213545,-0.84605372) + Old Polarization: (0.59149741,-0.63976296,-0.49074859) + New Momentum Direction: (-0.20014903,0.69248966,-0.69310781) + New Polarization: (0.54380412,-0.50993562,-0.66651537) *** FresnelRefraction *** - 1 5 m -95.7 cm 1.99 m 2.94 eV 0 eV 5.46 m 5.46 m Tank Transportation - 2 10 m -2.37 m 4.92 m 2.94 eV 0 eV 5.97 m 11.4 m OutOfWorld Transportation + 1 -87.5 cm 3.03 m -5 m 2.75 eV 0 eV 5.91 m 5.91 m Tank Transportation + 2 -2.32 m 8.02 m -10 m 2.75 eV 0 eV 7.21 m 13.1 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 650 um 279 um 392 um 3.4 eV 0 eV 0 fm 0 fm Tank initStep + Photon at Boundary! + Old Momentum Direction: (-0.5090884,-0.75014009,-0.4220413) + Old Polarization: (0.2082534,0.36841748,-0.90603481) + New Momentum Direction: (-0.69082904,-0.44131867,-0.57270679) + New Polarization: (0.71608496,-0.52705996,-0.45763537) + *** FresnelRefraction *** + 1 -3.39 m -5 m -2.81 m 3.4 eV 0 eV 6.67 m 6.67 m Tank Transportation + 2 -10 m -9.22 m -8.29 m 3.4 eV 0 eV 9.56 m 16.2 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 588 um 248 um 350 um 3.75 eV 0 eV 0 fm 0 fm Tank initStep + Photon at Boundary! + Old Momentum Direction: (0.78787162,0.3025434,0.53640079) + Old Polarization: (0.22524227,-0.95222428,0.20623977) + New Momentum Direction: (0.54735234,0.41114487,0.72894809) + New Polarization: (0.32087116,-0.90754219,0.27094074) + *** FresnelRefraction *** + 1 5 m 1.92 m 3.4 m 3.75 eV 0 eV 6.35 m 6.35 m Tank Transportation + 2 9.95 m 5.64 m 10 m 3.75 eV 0 eV 9.05 m 15.4 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = e+, Track ID = 1, Parent ID = 0 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 2 916 um -190 um -864 um 183 keV 0 eV 0 fm 1.56 mm Tank initStep + 2 978 um 444 um 613 um 142 keV 0 eV 0 fm 1.52 mm Tank initStep - Exiting from G4Scintillation::DoIt -- NumberOfSecondaries = 6 - 3 977 um -71.4 um -1.02 mm 0 eV 183 keV 376 um 1.93 mm Tank eIoni - 4 977 um -71.4 um -1.02 mm 0 eV 0 eV 0 fm 1.93 mm Tank Scintillation + Exiting from G4Scintillation::DoIt -- NumberOfSecondaries = 13 + 3 1.05 mm 418 um 721 um 0 eV 142 keV 246 um 1.77 mm Tank eIoni + 4 1.05 mm 418 um 721 um 0 eV 0 eV 0 fm 1.77 mm Tank Scintillation ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 60, Parent ID = 1 +* G4Track Information: Particle = gamma, Track ID = 38, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 977 um -71.4 um -1.02 mm 511 keV 0 eV 0 fm 0 fm Tank initStep - 1 4.68 m -1.43 m -5 m 511 keV 0 eV 6.99 m 6.99 m Tank Transportation - 2 9.36 m -2.86 m -10 m 511 keV 0 eV 6.99 m 14 m OutOfWorld Transportation + 0 1.05 mm 418 um 721 um 511 keV 0 eV 0 fm 0 fm Tank initStep + 1 5 m 27.8 cm 2.01 m 511 keV 0 eV 5.4 m 5.4 m Tank Transportation + 2 10 m 55.5 cm 4.03 m 511 keV 0 eV 5.4 m 10.8 m OutOfWorld Transportation ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 59, Parent ID = 1 +* G4Track Information: Particle = gamma, Track ID = 37, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 977 um -71.4 um -1.02 mm 511 keV 0 eV 0 fm 0 fm Tank initStep - 1 -4.68 m 1.43 m 5 m 511 keV 0 eV 7 m 7 m Tank Transportation - 2 -9.35 m 2.86 m 10 m 511 keV 0 eV 6.99 m 14 m OutOfWorld Transportation + 0 1.05 mm 418 um 721 um 511 keV 0 eV 0 fm 0 fm Tank initStep + 1 -5 m -27.7 cm -2.01 m 511 keV 0 eV 5.4 m 5.4 m Tank Transportation + 2 -10 m -55.5 cm -4.03 m 511 keV 0 eV 5.4 m 10.8 m OutOfWorld Transportation ********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 58, Parent ID = 1 +* G4Track Information: Particle = opticalphoton, Track ID = 36, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 963 um -98.8 um -982 um 3.37 eV 0 eV 0 fm 0 fm Tank initStep + 0 1.03 mm 424 um 694 um 2.28 eV 0 eV 0 fm 0 fm Tank initStep + Photon at Boundary! + Old Momentum Direction: (-0.92716917,-0.053231997,0.37084186) + Old Polarization: (0.34667989,0.25333534,0.90312472) + New Momentum Direction: (-0.86338074,-0.07169056,0.49943383) + New Polarization: (-0.46759411,0.4855581,-0.73864002) + *** FresnelRefraction *** + 1 -5 m -28.7 cm 2 m 2.28 eV 0 eV 5.39 m 5.39 m Tank Transportation + 2 -10 m -70.2 cm 4.89 m 2.28 eV 0 eV 5.79 m 11.2 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 35, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.04 mm 420 um 710 um 3.11 eV 0 eV 0 fm 0 fm Tank initStep + Photon at Boundary! + Old Momentum Direction: (0.23962668,-0.51003615,-0.82610059) + Old Polarization: (0.80954836,0.57466334,-0.1199729) + New Momentum Direction: (0.32470105,-0.69111365,-0.64570206) + New Polarization: (0.82225061,0.54364238,-0.16839506) + *** FresnelRefraction *** + 1 1.45 m -3.09 m -5 m 3.11 eV 0 eV 6.05 m 6.05 m Tank Transportation + 2 3.97 m -8.44 m -10 m 3.11 eV 0 eV 7.74 m 13.8 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 34, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 984 um 442 um 622 um 3.76 eV 0 eV 0 fm 0 fm Tank initStep + Photon at Boundary! + Old Momentum Direction: (-0.95933524,-0.12699365,-0.25208831) + Old Polarization: (0.25104586,-0.79214425,-0.55631239) + New Momentum Direction: (-0.92349699,-0.17258519,-0.34258965) + New Polarization: (-0.3415844,-0.036439897,0.93914441) + *** FresnelRefraction *** + 1 -5 m -66.2 cm -1.31 m 3.76 eV 0 eV 5.21 m 5.21 m Tank Transportation + 2 -10 m -1.6 m -3.17 m 3.76 eV 0 eV 5.41 m 10.6 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 33, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 992 um 439 um 634 um 4.13 eV 0 eV 0 fm 0 fm Tank initStep + Photon at Boundary! + Old Momentum Direction: (-0.38341559,-0.88707829,-0.25706923) + Old Polarization: (-0.7368076,0.461619,-0.4939863) + New Momentum Direction: (-0.52172844,-0.77809804,-0.34980406) + New Polarization: (0.64626947,-0.62814285,0.43332704) + *** FresnelRefraction *** + 1 -2.16 m -5 m -1.45 m 4.13 eV 0 eV 5.64 m 5.64 m Tank Transportation + 2 -5.51 m -10 m -3.7 m 4.13 eV 0 eV 6.43 m 12.1 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 32, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.05 mm 418 um 719 um 3.13 eV 0 eV 0 fm 0 fm Tank initStep + Photon at Boundary! + Old Momentum Direction: (-0.98119001,-0.13629756,-0.13670826) + Old Polarization: (-0.14100443,0.022334848,0.98975699) + New Momentum Direction: (-0.96517489,-0.18470452,-0.18526109) + New Polarization: (-0.19130411,0.015292165,0.98141168) + *** FresnelRefraction *** + 1 -5 m -69.4 cm -69.6 cm 3.13 eV 0 eV 5.1 m 5.1 m Tank Transportation + 2 -10 m -1.65 m -1.66 m 3.13 eV 0 eV 5.18 m 10.3 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 31, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.02 mm 429 um 677 um 3.19 eV 0 eV 0 fm 0 fm Tank initStep + Photon at Boundary! + Old Momentum Direction: (-0.97672423,-0.21306127,0.024792671) + Old Polarization: (-0.18758346,0.79238222,-0.58046779) + New Momentum Direction: (-0.95679568,-0.28881234,0.033607372) + New Polarization: (-0.25446195,0.77581149,-0.57737825) + *** FresnelRefraction *** + 1 -5 m -1.09 m 12.8 cm 3.19 eV 0 eV 5.12 m 5.12 m Tank Transportation + 2 -10 m -2.6 m 30.3 cm 3.19 eV 0 eV 5.23 m 10.3 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 30, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 996 um 437 um 640 um 3.79 eV 0 eV 0 fm 0 fm Tank initStep + Photon at Boundary! + Old Momentum Direction: (-0.9286127,0.25160949,-0.27271068) + Old Polarization: (-0.34716951,-0.84857786,0.39923547) + New Momentum Direction: (-0.86352842,0.34196617,-0.37064511) + New Polarization: (-0.47248731,-0.80553033,0.35759841) + *** FresnelRefraction *** + 1 -5 m 1.36 m -1.47 m 3.79 eV 0 eV 5.39 m 5.39 m Tank Transportation + 2 -10 m 3.34 m -3.61 m 3.79 eV 0 eV 5.79 m 11.2 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 29, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.05 mm 418 um 720 um 2.11 eV 0 eV 0 fm 0 fm Tank initStep ** Photon absorbed! ** - 1 3.67 m -2.85 m -43.9 cm 3.37 eV 0 eV 4.67 m 4.67 m Tank OpAbsorption + 1 2.38 m 1.61 m -3.49 m 2.11 eV 0 eV 4.52 m 4.52 m Tank OpAbsorption ********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 57, Parent ID = 1 +* G4Track Information: Particle = opticalphoton, Track ID = 28, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 973 um -79.8 um -1.01 mm 3.15 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (0.32542364,-0.29232257,-0.899248) - Old Polarization: (0.44002995,0.88857959,-0.12961466) - New Momentum Direction: (0.44105787,-0.39619485,-0.80529348) - New Polarization: (0.4570851,0.87135728,-0.17835273) - *** FresnelRefraction *** - 1 1.81 m -1.63 m -5 m 3.15 eV 0 eV 5.56 m 5.56 m Tank Transportation - 2 4.55 m -4.09 m -10 m 3.15 eV 0 eV 6.21 m 11.8 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 56, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 975 um -75.1 um -1.01 mm 4.11 eV 0 eV 0 fm 0 fm Tank initStep - Photon at Boundary! - Old Momentum Direction: (-0.13655382,0.903506,0.40623879) - Old Polarization: (-0.38027612,-0.4264713,0.82067795) - New Momentum Direction: (-0.18580149,0.81237187,0.55274745) - New Polarization: (0.16529319,0.58036752,-0.7974031) - *** FresnelRefraction *** - 1 -75.5 cm 5 m 2.25 m 4.11 eV 0 eV 5.53 m 5.53 m Tank Transportation - 2 -1.9 m 10 m 5.65 m 4.11 eV 0 eV 6.15 m 11.7 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 55, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 925 um -173 um -885 um 2.13 eV 0 eV 0 fm 0 fm Tank initStep + 0 1.02 mm 428 um 679 um 2.27 eV 0 eV 0 fm 0 fm Tank initStep ** Photon absorbed! ** - 1 -38.6 cm -1.1 m 65.8 cm 2.13 eV 0 eV 1.34 m 1.34 m Tank OpAbsorption + 1 58.1 cm 78.3 cm -33.9 cm 2.27 eV 0 eV 1.03 m 1.03 m Tank OpAbsorption ********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 54, Parent ID = 1 +* G4Track Information: Particle = opticalphoton, Track ID = 27, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 925 um -172 um -887 um 2.58 eV 0 eV 0 fm 0 fm Tank initStep + 0 1 mm 434 um 653 um 2.5 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.76561847,-0.61186273,0.19862616) - Old Polarization: (0.36860684,0.16421331,-0.91496611) - New Momentum Direction: (0.49529415,-0.82627833,0.2682309) - New Polarization: (0.51914979,0.033960022,-0.85400832) + Old Momentum Direction: (0.81353929,0.15044674,0.56171131) + Old Polarization: (0.42454948,-0.8137592,-0.39693035) + New Momentum Direction: (0.61982826,0.20302524,0.75801957) + New Polarization: (0.58354736,-0.76508478,-0.27224578) *** FresnelRefraction *** - 1 5 m -4 m 1.3 m 2.58 eV 0 eV 6.53 m 6.53 m Tank Transportation - 2 8.6 m -10 m 3.25 m 2.58 eV 0 eV 7.27 m 13.8 m OutOfWorld Transportation + 1 5 m 92.5 cm 3.45 m 2.5 eV 0 eV 6.14 m 6.14 m Tank Transportation + 2 10 m 2.56 m 9.57 m 2.5 eV 0 eV 8.07 m 14.2 m OutOfWorld Transportation ********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 53, Parent ID = 1 +* G4Track Information: Particle = opticalphoton, Track ID = 26, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 935 um -153 um -911 um 3.84 eV 0 eV 0 fm 0 fm Tank initStep + 0 1.02 mm 428 um 678 um 2.24 eV 0 eV 0 fm 0 fm Tank initStep Photon at Boundary! - Old Momentum Direction: (0.042044124,0.81506388,0.57784355) - Old Polarization: (0.31372676,0.53833261,-0.78215952) - New Momentum Direction: (0.057152583,0.61622933,0.78549029) - New Polarization: (0.3135993,0.7358733,-0.60012163) + Old Momentum Direction: (-0.73895476,-0.48079834,-0.47199452) + Old Polarization: (0.41626454,0.22505027,-0.88095188) + New Momentum Direction: (-0.42087531,-0.64732883,-0.63547569) + New Polarization: (-0.58830674,0.72802158,-0.35196558) *** FresnelRefraction *** - 1 25.9 cm 5 m 3.54 m 3.84 eV 0 eV 6.13 m 6.13 m Tank Transportation - 2 72.3 cm 10 m 9.92 m 3.84 eV 0 eV 8.11 m 14.2 m OutOfWorld Transportation -Number of optical photons produces in this event : 57 -number of event = 1 User=0.18s Real=0.34s Sys=0.09s + 1 -5 m -3.25 m -3.19 m 2.24 eV 0 eV 6.77 m 6.77 m Tank Transportation + 2 -9.39 m -10 m -9.82 m 2.24 eV 0 eV 10.4 m 17.2 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 25, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.03 mm 424 um 696 um 3.96 eV 0 eV 0 fm 0 fm Tank initStep + +** Photon absorbed! ** + 1 -1.76 m -31.6 cm 82.9 cm 3.96 eV 0 eV 1.97 m 1.97 m Tank OpAbsorption + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 24, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 999 um 436 um 644 um 3.36 eV 0 eV 0 fm 0 fm Tank initStep + +** Photon absorbed! ** + 1 -6.05 cm -51.1 cm -1.02 m 3.36 eV 0 eV 1.14 m 1.14 m Tank OpAbsorption +Number of optical photons produces in this event : 35 +number of event = 1 User=0.15s Real=0.23s Sys=0.05s # /process/inactivate Scintillation /run/physicsModified @@ -1062,7 +790,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1075,7 +803,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1098,7 +826,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for anti_proton dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1106,7 +834,7 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -1118,7 +846,7 @@ muIoni: tables are built for mu+ Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1135,7 +863,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1153,7 +881,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.29750425 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -1166,7 +894,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.29750425 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 ### Run 1 start. ********************************************************************************************************* @@ -1175,267 +903,143 @@ hIoni: tables are built for pi- Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process 0 0 fm 0 fm 0 fm 500 keV 0 eV 0 fm 0 fm Tank initStep - 1 88.9 um -12.1 um 5.99 um 483 keV 16.6 keV 90.8 um 90.8 um Tank msc - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 2, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 73.9 um 0 fm 0 fm 2.35 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -2.23 m -1.96 m 2.35 eV 0 eV 5.81 m 5.81 m Tank Transportation - 2 10 m -5.78 m -5.09 m 2.35 eV 0 eV 6.89 m 12.7 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 1 88.9 um -12.1 um 5.99 um 483 keV 0 eV 0 fm 90.8 um Tank initStep - 2 839 um -675 um 645 um 76.9 keV 406 keV 1.45 mm 1.54 mm Tank eIoni - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 26, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 914 um -199 um 48.9 um 3.99 eV 0 eV 0 fm 0 fm Tank initStep - 1 29.7 cm -23.1 cm -10.5 cm 3.99 eV 0 eV 39 cm 39 cm Tank OpRayleigh - 2 71.3 cm 63 cm 2.01 cm 3.99 eV 0 eV 96.4 cm 1.35 m Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 25, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 838 um -182 um 44.9 um 3.97 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -1.14 m -2.74 m 3.97 eV 0 eV 5.81 m 5.81 m Tank Transportation - 2 10 m -2.98 m -7.18 m 3.97 eV 0 eV 6.94 m 12.8 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 24, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 96.7 um -13.8 um 6.39 um 3.79 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -3.5 m 2.88 m 3.79 eV 0 eV 6.75 m 6.75 m Tank Transportation - 2 8.76 m -10 m 8.21 m 3.79 eV 0 eV 9.21 m 16 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 23, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 522 um -110 um 28.5 um 4.12 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -4.53 m -86.1 cm 4.12 eV 0 eV 6.8 m 6.8 m Tank Transportation - 2 7.34 m -10 m -1.9 m 4.12 eV 0 eV 6.04 m 12.8 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 22, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 313 um -62.8 um 17.7 um 2.41 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m 1.53 m 78.8 cm 2.41 eV 0 eV 5.29 m 5.29 m Tank Transportation - 2 10 m 3.71 m 1.91 m 2.41 eV 0 eV 5.57 m 10.9 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 21, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 863 um -187 um 46.2 um 3.81 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -1.02 m -2.72 m 3.81 eV 0 eV 5.78 m 5.78 m Tank Transportation - 2 10 m -2.67 m -7.08 m 3.81 eV 0 eV 6.84 m 12.6 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 20, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 953 um -208 um 50.9 um 2.33 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m 1.23 m -1.05 m 2.33 eV 0 eV 5.25 m 5.25 m Tank Transportation - 2 10 m 2.96 m -2.53 m 2.33 eV 0 eV 5.49 m 10.7 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 19, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 552 um -117 um 30 um 3.93 eV 0 eV 0 fm 0 fm Tank initStep - 1 1.51 m 49.7 cm 8.15 cm 3.93 eV 0 eV 1.59 m 1.59 m Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 18, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 210 um -39.5 um 12.3 um 3.13 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -76.1 cm 3.33 m 3.13 eV 0 eV 6.05 m 6.05 m Tank Transportation - 2 10 m -2.08 m 9.09 m 3.13 eV 0 eV 7.75 m 13.8 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 17, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 701 um -151 um 37.8 um 2.85 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -1.15 m 3.39 m 2.85 eV 0 eV 6.15 m 6.15 m Tank Transportation - 2 10 m -3.2 m 9.43 m 2.85 eV 0 eV 8.11 m 14.3 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 16, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 788 um -170 um 42.4 um 2.2 eV 0 eV 0 fm 0 fm Tank initStep - 1 1.35 m -1.15 m 48.7 cm 2.2 eV 0 eV 1.84 m 1.84 m Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 15, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 496 um -104 um 27.2 um 3.77 eV 0 eV 0 fm 0 fm Tank initStep - 1 6.73 cm -4.7 cm -2.79 cm 3.77 eV 0 eV 8.62 cm 8.62 cm Tank OpRayleigh - 2 1.97 m 3.2 m -5 m 3.77 eV 0 eV 6.24 m 6.32 m Tank Transportation - 3 5.58 m 9.4 m -10 m 3.77 eV 0 eV 8.74 m 15.1 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 14, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 135 um -22.4 um 8.36 um 2.05 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -2.71 m 3.12 m 2.05 eV 0 eV 6.48 m 6.48 m Tank Transportation - 2 10 m -8.14 m 9.35 m 2.05 eV 0 eV 9.66 m 16.1 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 13, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 285 um -56.5 um 16.2 um 2.24 eV 0 eV 0 fm 0 fm Tank initStep - 1 4.64 m -11.7 cm -2.17 m 2.24 eV 0 eV 5.12 m 5.12 m Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 12, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 667 um -143 um 36.1 um 2.79 eV 0 eV 0 fm 0 fm Tank initStep - 1 2.63 m -1.09 m 1.77 m 2.79 eV 0 eV 3.35 m 3.35 m Tank OpRayleigh - 2 5 m -8.33 cm 4.43 m 2.79 eV 0 eV 3.7 m 7.05 m Tank Transportation - 3 5 m -8.33 cm 4.43 m 2.79 eV 0 eV 0 fm 7.05 m World Transportation - 4 -3.43 m -3.65 m -5 m 2.79 eV 0 eV 13.1 m 20.2 m Tank Transportation - 5 -10 m -6.44 m -7.54 m 2.79 eV 0 eV 7.58 m 27.8 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 11, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 497 um -105 um 27.2 um 3.42 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m 16.5 cm 2.94 m 3.42 eV 0 eV 5.8 m 5.8 m Tank Transportation - 2 10 m 43 cm 7.67 m 3.42 eV 0 eV 6.89 m 12.7 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 10, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 227 um -43.3 um 13.2 um 3.11 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -1.36 m 3.43 m 3.11 eV 0 eV 6.21 m 6.21 m Tank Transportation - 2 10 m -3.86 m 9.71 m 3.11 eV 0 eV 8.41 m 14.6 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 9, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 249 um -48.4 um 14.3 um 2.77 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -3.78 m 2.55 m 2.77 eV 0 eV 6.77 m 6.77 m Tank Transportation - 2 8.4 m -10 m 6.77 m 2.77 eV 0 eV 8.25 m 15 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 8, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 843 um -183 um 45.2 um 2.97 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -76.4 cm 3.32 m 2.97 eV 0 eV 6.05 m 6.05 m Tank Transportation - 2 10 m -2.08 m 9.05 m 2.97 eV 0 eV 7.72 m 13.8 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 7, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 731 um -157 um 39.4 um 3.63 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -4.02 m -1.6 m 3.63 eV 0 eV 6.61 m 6.61 m Tank Transportation - 2 8.31 m -10 m -3.99 m 3.63 eV 0 eV 7.24 m 13.9 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 6, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 747 um -161 um 40.2 um 2.11 eV 0 eV 0 fm 0 fm Tank initStep - 1 2.6 m 44 cm 1.15 m 2.11 eV 0 eV 2.88 m 2.88 m Tank OpAbsorption - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 5, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 330 um -66.5 um 18.5 um 3.83 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m 51.1 cm 2.7 m 3.83 eV 0 eV 5.71 m 5.71 m Tank Transportation - 2 10 m 1.32 m 6.97 m 3.83 eV 0 eV 6.62 m 12.3 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = opticalphoton, Track ID = 4, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 310 um -62 um 17.5 um 3.27 eV 0 eV 0 fm 0 fm Tank initStep - 1 5 m -3.49 m -2.07 m 3.27 eV 0 eV 6.44 m 6.44 m Tank Transportation - 2 9.61 m -10 m -5.93 m 3.27 eV 0 eV 8.86 m 15.3 m OutOfWorld Transportation + 1 88.9 um -11.5 um -7.09 um 487 keV 13.4 keV 90.8 um 90.8 um Tank msc ********************************************************************************************************* * G4Track Information: Particle = opticalphoton, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 126 um -20.5 um 7.94 um 2.21 eV 0 eV 0 fm 0 fm Tank initStep - 1 4.47 m 90.2 cm 1.8 m 2.21 eV 0 eV 4.9 m 4.9 m Tank OpAbsorption + 0 58.4 um -7.52 um -4.65 um 3.49 eV 0 eV 0 fm 0 fm Tank initStep + 1 5 m -3.38 m -2.42 m 3.49 eV 0 eV 6.5 m 6.5 m Tank Transportation + 2 9.65 m -10 m -7.15 m 3.49 eV 0 eV 9.37 m 15.9 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 50.6 um -6.52 um -4.03 um 4.09 eV 0 eV 0 fm 0 fm Tank initStep + 1 5 m 2.21 m -10.4 cm 4.09 eV 0 eV 5.47 m 5.47 m Tank Transportation + 2 10 m 5.52 m -26 cm 4.09 eV 0 eV 5.99 m 11.5 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = e+, Track ID = 1, Parent ID = 0 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 2 839 um -675 um 645 um 76.9 keV 0 eV 0 fm 1.54 mm Tank initStep - 3 858 um -717 um 648 um 0 eV 76.9 keV 85.6 um 1.63 mm Tank eIoni - 4 858 um -717 um 648 um 0 eV 0 eV 0 fm 1.63 mm Tank annihil + 1 88.9 um -11.5 um -7.09 um 487 keV 0 eV 0 fm 90.8 um Tank initStep + 2 1.08 mm 564 um 348 um 163 keV 323 keV 1.46 mm 1.55 mm Tank eIoni ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 28, Parent ID = 1 +* G4Track Information: Particle = opticalphoton, Track ID = 11, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 858 um -717 um 648 um 511 keV 0 eV 0 fm 0 fm Tank initStep - 1 5 m 3.48 m 1.28 m 511 keV 0 eV 6.23 m 6.23 m Tank Transportation - 2 10 m 6.97 m 2.56 m 511 keV 0 eV 6.23 m 12.5 m OutOfWorld Transportation + 0 122 um 8.01 um 4.94 um 3.13 eV 0 eV 0 fm 0 fm Tank initStep + 1 5 m 2.08 m 69.8 cm 3.13 eV 0 eV 5.46 m 5.46 m Tank Transportation + 2 10 m 5.16 m 1.73 m 3.13 eV 0 eV 5.96 m 11.4 m OutOfWorld Transportation ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 27, Parent ID = 1 +* G4Track Information: Particle = opticalphoton, Track ID = 10, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 858 um -717 um 648 um 511 keV 0 eV 0 fm 0 fm Tank initStep - 1 -5 m -3.48 m -1.28 m 511 keV 0 eV 6.23 m 6.23 m Tank Transportation - 2 -10 m -6.97 m -2.56 m 511 keV 0 eV 6.23 m 12.5 m OutOfWorld Transportation -Number of optical photons produces in this event : 25 -number of event = 1 User=0.07s Real=0.1s Sys=0.03s + 0 772 um 387 um 239 um 3.89 eV 0 eV 0 fm 0 fm Tank initStep + 1 90.7 cm 41.5 cm 9.2 cm 3.89 eV 0 eV 1 m 1 m Tank OpAbsorption + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 9, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.03 mm 535 um 330 um 4.07 eV 0 eV 0 fm 0 fm Tank initStep + 1 5 m 4.07 m 3.41 m 4.07 eV 0 eV 7.29 m 7.29 m Tank Transportation + 2 5 m 4.07 m 3.41 m 4.07 eV 0 eV 0 fm 7.29 m World Transportation + 3 3.85 m 5 m 4.19 m 4.07 eV 0 eV 1.67 m 8.96 m Tank Transportation + 4 3.85 m 5 m 4.19 m 4.07 eV 0 eV 0 fm 8.96 m World Transportation + 5 2.67 m 4.04 m 5 m 4.07 eV 0 eV 1.73 m 10.7 m Tank Transportation + 6 2.67 m 4.04 m 5 m 4.07 eV 0 eV 0 fm 10.7 m World Transportation + 7 3.07 m 4.36 m 4.73 m 4.07 eV 0 eV 57.7 cm 11.3 m Tank OpRayleigh + 8 3.19 m 4.23 m 5 m 4.07 eV 0 eV 32.3 cm 11.6 m Tank Transportation + 9 7.24 m 34.9 cm 10 m 4.07 eV 0 eV 7.51 m 19.1 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 8, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 511 um 235 um 145 um 4.11 eV 0 eV 0 fm 0 fm Tank initStep + 1 5 m 4.88 m 2.38 m 4.11 eV 0 eV 7.38 m 7.38 m Tank Transportation + 2 5 m 4.88 m 2.38 m 4.11 eV 0 eV 0 fm 7.38 m World Transportation + 3 4.23 m 5 m 2.57 m 4.11 eV 0 eV 80.1 cm 8.18 m Tank Transportation + 4 4.23 m 5 m 2.57 m 4.11 eV 0 eV 0 fm 8.18 m World Transportation + 5 1.08 m -5 m -2.62 m 4.11 eV 0 eV 11.7 m 19.9 m Tank Transportation + 6 -1.5 m -10 m -6.88 m 4.11 eV 0 eV 7.06 m 26.9 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 7, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.04 mm 545 um 337 um 2.13 eV 0 eV 0 fm 0 fm Tank initStep + 1 5 m 1.81 m 1.98 m 2.13 eV 0 eV 5.67 m 5.67 m Tank Transportation + 2 10 m 4.59 m 5.02 m 2.13 eV 0 eV 6.48 m 12.2 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 6, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 147 um 22.1 um 13.6 um 2.58 eV 0 eV 0 fm 0 fm Tank initStep + 1 5 m 2.13 m 78.3 cm 2.58 eV 0 eV 5.49 m 5.49 m Tank Transportation + 2 10 m 5.27 m 1.94 m 2.58 eV 0 eV 6.02 m 11.5 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 297 um 110 um 67.9 um 3.11 eV 0 eV 0 fm 0 fm Tank initStep + 1 5 m 1.88 m 86.3 cm 3.11 eV 0 eV 5.41 m 5.41 m Tank Transportation + 2 10 m 4.62 m 2.13 m 3.11 eV 0 eV 5.84 m 11.3 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = opticalphoton, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 268 um 92.9 um 57.4 um 2.48 eV 0 eV 0 fm 0 fm Tank initStep + 1 5 m 2.93 m 3.15 m 2.48 eV 0 eV 6.6 m 6.6 m Tank Transportation + 2 10 m 9.26 m 9.93 m 2.48 eV 0 eV 10.5 m 17.1 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 2 1.08 mm 564 um 348 um 163 keV 0 eV 0 fm 1.55 mm Tank initStep + 3 1.2 mm 598 um 460 um 0 eV 163 keV 310 um 1.86 mm Tank eIoni + 4 1.2 mm 598 um 460 um 0 eV 0 eV 0 fm 1.86 mm Tank annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 13, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.2 mm 598 um 460 um 511 keV 0 eV 0 fm 0 fm Tank initStep + 1 2.7 m 5 m 64 cm 511 keV 0 eV 5.72 m 5.72 m Tank Transportation + 2 5.4 m 10 m 1.28 m 511 keV 0 eV 5.72 m 11.4 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 12, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.2 mm 598 um 460 um 511 keV 0 eV 0 fm 0 fm Tank initStep + 1 -2.7 m -5 m -63.9 cm 511 keV 0 eV 5.72 m 5.72 m Tank Transportation + 2 -5.4 m -10 m -1.28 m 511 keV 0 eV 5.72 m 11.4 m OutOfWorld Transportation +Number of optical photons produces in this event : 10 +number of event = 1 User=0.04s Real=0.07s Sys=0.03s Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/novice/N06/include/ExN06DetectorConstruction.hh b/examples/novice/N06/include/ExN06DetectorConstruction.hh index bbb4d65435..a7f2042f15 100644 --- a/examples/novice/N06/include/ExN06DetectorConstruction.hh +++ b/examples/novice/N06/include/ExN06DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN06DetectorConstruction.hh,v 1.5 2006/06/29 17:53:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/include/ExN06EventAction.hh b/examples/novice/N06/include/ExN06EventAction.hh index a49e449ab5..ae02efd87a 100644 --- a/examples/novice/N06/include/ExN06EventAction.hh +++ b/examples/novice/N06/include/ExN06EventAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN06EventAction.hh,v 1.2 2006/06/29 17:53:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/include/ExN06PhysicsList.hh b/examples/novice/N06/include/ExN06PhysicsList.hh index 0235ed5179..30b03e82df 100644 --- a/examples/novice/N06/include/ExN06PhysicsList.hh +++ b/examples/novice/N06/include/ExN06PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: ExN06PhysicsList.hh,v 1.7 2006/06/29 17:53:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/include/ExN06PhysicsListMessenger.hh b/examples/novice/N06/include/ExN06PhysicsListMessenger.hh index aa7772b831..1fe6a7e762 100644 --- a/examples/novice/N06/include/ExN06PhysicsListMessenger.hh +++ b/examples/novice/N06/include/ExN06PhysicsListMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: ExN06PhysicsListMessenger.hh,v 1.2 2006/06/29 17:54:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N06/include/ExN06PrimaryGeneratorAction.hh b/examples/novice/N06/include/ExN06PrimaryGeneratorAction.hh index 080e08ce56..0144d956fc 100644 --- a/examples/novice/N06/include/ExN06PrimaryGeneratorAction.hh +++ b/examples/novice/N06/include/ExN06PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN06PrimaryGeneratorAction.hh,v 1.6 2006/06/29 17:54:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/include/ExN06PrimaryGeneratorMessenger.hh b/examples/novice/N06/include/ExN06PrimaryGeneratorMessenger.hh index 891f098216..6be806c405 100644 --- a/examples/novice/N06/include/ExN06PrimaryGeneratorMessenger.hh +++ b/examples/novice/N06/include/ExN06PrimaryGeneratorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: ExN06PrimaryGeneratorMessenger.hh,v 1.2 2006/06/29 17:54:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N06/include/ExN06RunAction.hh b/examples/novice/N06/include/ExN06RunAction.hh index 9324a7e5d5..7fb14fc256 100644 --- a/examples/novice/N06/include/ExN06RunAction.hh +++ b/examples/novice/N06/include/ExN06RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN06RunAction.hh,v 1.9 2006/06/29 17:54:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/include/ExN06StackingAction.hh b/examples/novice/N06/include/ExN06StackingAction.hh index 0f3d43e6f8..00d472680e 100644 --- a/examples/novice/N06/include/ExN06StackingAction.hh +++ b/examples/novice/N06/include/ExN06StackingAction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ExN06StackingAction.hh,v 1.5 2006/06/29 17:54:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/include/ExN06SteppingVerbose.hh b/examples/novice/N06/include/ExN06SteppingVerbose.hh index 2adb7b2fb7..f728e530fc 100644 --- a/examples/novice/N06/include/ExN06SteppingVerbose.hh +++ b/examples/novice/N06/include/ExN06SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: ExN06SteppingVerbose.hh,v 1.2 2006/06/29 17:54:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/src/ExN06DetectorConstruction.cc b/examples/novice/N06/src/ExN06DetectorConstruction.cc index aacd30d38c..d8177b8460 100644 --- a/examples/novice/N06/src/ExN06DetectorConstruction.cc +++ b/examples/novice/N06/src/ExN06DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN06DetectorConstruction.cc,v 1.15 2006/06/29 17:54:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/src/ExN06EventAction.cc b/examples/novice/N06/src/ExN06EventAction.cc index d952015cc1..da1f3e08e8 100644 --- a/examples/novice/N06/src/ExN06EventAction.cc +++ b/examples/novice/N06/src/ExN06EventAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN06EventAction.cc,v 1.3 2006/06/29 17:54:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/src/ExN06PhysicsList.cc b/examples/novice/N06/src/ExN06PhysicsList.cc index 98572de2d3..aa2dfad616 100644 --- a/examples/novice/N06/src/ExN06PhysicsList.cc +++ b/examples/novice/N06/src/ExN06PhysicsList.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: ExN06PhysicsList.cc,v 1.13 2006/06/29 17:54:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: ExN06PhysicsList.cc,v 1.14 2007/09/30 22:51:03 gum Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -272,7 +272,8 @@ void ExN06PhysicsList::ConstructOp() G4ProcessManager* pmanager = particle->GetProcessManager(); G4String particleName = particle->GetParticleName(); if (theCerenkovProcess->IsApplicable(*particle)) { - pmanager->AddContinuousProcess(theCerenkovProcess); + pmanager->AddProcess(theCerenkovProcess); + pmanager->SetProcessOrdering(theCerenkovProcess,idxPostStep); } if (theScintillationProcess->IsApplicable(*particle)) { pmanager->AddProcess(theScintillationProcess); diff --git a/examples/novice/N06/src/ExN06PhysicsListMessenger.cc b/examples/novice/N06/src/ExN06PhysicsListMessenger.cc index d5289448cf..b8b6eb9c4a 100644 --- a/examples/novice/N06/src/ExN06PhysicsListMessenger.cc +++ b/examples/novice/N06/src/ExN06PhysicsListMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN06PhysicsListMessenger.cc,v 1.3 2006/06/29 17:54:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N06/src/ExN06PrimaryGeneratorMessenger.cc b/examples/novice/N06/src/ExN06PrimaryGeneratorMessenger.cc index db82123ed8..7da6c57009 100644 --- a/examples/novice/N06/src/ExN06PrimaryGeneratorMessenger.cc +++ b/examples/novice/N06/src/ExN06PrimaryGeneratorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN06PrimaryGeneratorMessenger.cc,v 1.3 2006/06/29 17:54:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N06/src/ExN06PrimaryGeneratoraction.cc b/examples/novice/N06/src/ExN06PrimaryGeneratoraction.cc index 41dd0e7aa3..1842030939 100644 --- a/examples/novice/N06/src/ExN06PrimaryGeneratoraction.cc +++ b/examples/novice/N06/src/ExN06PrimaryGeneratoraction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN06PrimaryGeneratorAction.cc,v 1.6 2006/06/29 17:54:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/src/ExN06RunAction.cc b/examples/novice/N06/src/ExN06RunAction.cc index 6c5c9d0580..eea30de2d1 100644 --- a/examples/novice/N06/src/ExN06RunAction.cc +++ b/examples/novice/N06/src/ExN06RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN06RunAction.cc,v 1.10 2006/06/29 17:54:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/src/ExN06StackingAction.cc b/examples/novice/N06/src/ExN06StackingAction.cc index 99fd3665b0..ba492162fe 100644 --- a/examples/novice/N06/src/ExN06StackingAction.cc +++ b/examples/novice/N06/src/ExN06StackingAction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: ExN06StackingAction.cc,v 1.5 2006/06/29 17:54:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N06/src/ExN06SteppingVerbose.cc b/examples/novice/N06/src/ExN06SteppingVerbose.cc index 3a0f47bb3f..d289b1beee 100644 --- a/examples/novice/N06/src/ExN06SteppingVerbose.cc +++ b/examples/novice/N06/src/ExN06SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: ExN06SteppingVerbose.cc,v 1.4 2006/06/29 17:54:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N07/exampleN07.cc b/examples/novice/N07/exampleN07.cc index 55daac0d5c..b461e65ffd 100644 --- a/examples/novice/N07/exampleN07.cc +++ b/examples/novice/N07/exampleN07.cc @@ -25,7 +25,7 @@ // // // $Id: exampleN07.cc,v 1.10 2007/05/04 01:49:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N07/exampleN07.out b/examples/novice/N07/exampleN07.out index 794cbbee71..1fce947f10 100644 --- a/examples/novice/N07/exampleN07.out +++ b/examples/novice/N07/exampleN07.out @@ -1,6 +1,6 @@ ************************************************************* - Geant4 version Name: geant4-09-00-cand-03 (29-June-2007) + Geant4 version Name: global-V09-00-02 (14-December-2007) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -182,7 +182,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -195,7 +195,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -213,7 +213,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for proton Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -226,14 +226,14 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muIoni: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -255,7 +255,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -273,7 +273,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for pi- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -281,7 +281,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -345,7 +345,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10 - User=121.41s Real=123.44s Sys=2.02s + User=78.55s Real=80.12s Sys=1.51s ############################################################ Run Summary - Number of events : 10 ############################################################ @@ -353,118 +353,118 @@ Region : Calor-A Production thresholds : gamma 1 mm e- 1 mm e+ 1 mm Energy deposition in an event : - Absorber 4.0627106 GeV Gap 449.82043 MeV + Absorber 3.8910245 GeV Gap 471.19841 MeV Number of secondaries in an event : - gamma in Absorber 1618.9 in Gap 81.3 - e- in Absorber 2612.6 in Gap 246.3 - e+ in Absorber 155.1 in Gap 4.5 + gamma in Absorber 1550 in Gap 90.8 + e- in Absorber 2288.9 in Gap 223.4 + e+ in Absorber 141 in Gap 5.7 Minimum kinetic energy of generated secondaries : - gamma in Absorber 100.5108 keV in Gap 6.1848901 keV - e- in Absorber 90.143566 eV in Gap 32.685814 eV - e+ in Absorber 1.6101952 keV in Gap 209.17615 keV + gamma in Absorber 100.52652 keV in Gap 6.2903494 keV + e- in Absorber 55.146315 eV in Gap 81.936028 eV + e+ in Absorber 4.5054834 keV in Gap 437.98161 keV Total track length of e+/e- in an event : - Absorber 1.8416067 m Gap 1.1823356 m + Absorber 1.7299984 m Gap 1.301154 m Total number of steps of e+/e- in an event : - Absorber 11192.2 Gap 1595.4 + Absorber 8921.4 Gap 1251.9 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt - 0 4097.6797 1523 2128.6 134.3 2590.6804 9665.2 - 1 238.94688 106.4 399.4 14.3 256.81992 1702.6 - 2 92.016039 38.8 165.5 5.9 100.25876 718.2 - 3 38.118818 16.2 74 2.7 32.075011 317.4 - 4 22.613973 9.5 39.3 1.3 21.419214 175.7 - 5 9.4327172 2.2 20 0.4 8.723358 71.7 - 6 5.1712519 1.7 11.8 0.3 5.9909382 46 - 7 2.3390393 0.5 4 0.1 1.9521456 23 - 8 1.8171714 0.4 4.8 0.1 1.2327131 19.3 - 9 1.2437485 0.2 3.7 0 1.7099968 12 - 10 1.5013475 1 3.6 0.2 0.99395971 14 - 11 0.29611596 0 0.9 0 0.86052906 5.1 - 12 0.27032291 0 0.4 0 0.22277143 4.9 - 13 0.45309003 0.3 1 0 0.27199286 3.3 - 14 0.14598688 0 0.3 0 0.16267671 0.9 - 15 0.29815934 0 0.9 0 0.14526014 2.7 - 16 0.018498628 0 0.1 0 0.0036838111 3.6 - 17 0 0 0 0 0 0 + 0 4105.4795 1532.5 2052.8 131.8 2737.7168 8414.6 + 1 166.21952 75.3 269.1 9.9 201.60661 1074.9 + 2 52.857946 21.1 101.2 3.1 49.568112 353.3 + 3 19.293874 6.5 42.3 1 20.766427 133 + 4 7.8926076 2.2 21.8 0.2 7.8533863 83.5 + 5 4.4271716 1.8 9 0.4 4.259923 47.8 + 6 1.2638171 0 4.9 0 1.0876671 21.7 + 7 1.6511765 0.3 4.2 0 3.9934262 18.4 + 8 0.46494056 0.1 1.4 0 1.6398359 5.6 + 9 0.64202491 0.2 1.7 0.1 0.79451233 6.4 + 10 0.73764248 0.1 1.8 0 0.83370555 5.1 + 11 0.6791088 0.2 1.2 0.1 0.51208438 5.6 + 12 0.34664406 0.4 0.6 0.1 0.20748896 2.2 + 13 0 0 0 0 0 0 + 14 0 0 0 0 0 0 + 15 0.016565653 0 0.1 0 0.033827835 0.2 + 16 0.20420107 0 0.1 0 0.097415923 0.5 + 17 0.046189057 0.1 0.1 0 0.181151 0.5 18 0 0 0 0 0 0 - 19 0.16813365 0 0.6 0 0.4189173 2 + 19 0 0 0 0 0 0 ############################################################ Region : Calor-B Production thresholds : gamma 1 cm e- 1 cm e+ 1 cm Energy deposition in an event : - Absorber 3.197075 GeV Gap 379.25824 MeV + Absorber 2.5935879 GeV Gap 332.20259 MeV Number of secondaries in an event : - gamma in Absorber 709.6 in Gap 48.3 - e- in Absorber 1289.2 in Gap 118.2 - e+ in Absorber 98.4 in Gap 3.2 + gamma in Absorber 429.2 in Gap 34.5 + e- in Absorber 780.1 in Gap 81.2 + e+ in Absorber 57.5 in Gap 2.4 Minimum kinetic energy of generated secondaries : - gamma in Absorber 282.54595 keV in Gap 19.157175 keV - e- in Absorber 20.935115 eV in Gap 72.591333 eV - e+ in Absorber 26.169363 keV in Gap 66.435081 keV + gamma in Absorber 262.01925 keV in Gap 19.693122 keV + e- in Absorber 11.859679 eV in Gap 182.70707 eV + e+ in Absorber 17.431187 keV in Gap 433.88577 keV Total track length of e+/e- in an event : - Absorber 1.0594274 m Gap 73.321137 cm + Absorber 65.809583 cm Gap 51.637055 cm Total number of steps of e+/e- in an event : - Absorber 5677.9 Gap 780 + Absorber 3068.8 Gap 504.3 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt - 0 3291.9897 673.3 970.1 83 1505.8864 4576.6 - 1 170.41275 56.2 238.1 11.7 182.71988 1046.7 - 2 62.059655 15.8 99.8 3.6 56.944373 424.7 - 3 25.191451 6.1 45 1.5 21.754692 187 - 4 11.506891 1.9 22.2 0.5 12.507423 101.4 - 5 7.4442563 3 14.1 0.9 5.0259501 50.3 - 6 2.8831469 0.2 7.5 0 2.2797757 24.8 - 7 1.8318769 0.6 3.6 0.2 1.2245512 15.1 - 8 0.90742091 0.1 2.2 0 1.7359606 8.6 - 9 0.45658492 0.1 1.5 0 0.47562732 4.7 - 10 0.14854508 0 0.5 0 0.064767207 3.7 - 11 0.73183568 0.4 0.8 0.1 1.0769124 7.8 - 12 0.090477579 0 0.5 0 0.13714934 1.5 - 13 0.054302461 0 0.2 0 0.020139891 0.6 - 14 0.11652951 0.2 0.6 0.1 0.045136362 2.1 - 15 0.039089479 0 0.2 0 0.011238472 0.6 + 0 2775.2678 420.6 614.3 51.2 1001.3694 2592.8 + 1 79.031755 23.1 124.8 4.5 96.747725 483.1 + 2 33.110327 9.6 54.8 1.8 31.012076 203.8 + 3 18.272657 6.1 29.9 1.4 20.303343 133.3 + 4 8.4648244 1.6 16.4 0.3 8.9374338 63.7 + 5 4.478975 1.2 8.6 0.3 4.371966 42.4 + 6 3.9656592 0.8 5.2 0.2 8.8705843 30.5 + 7 1.9577749 0.4 2.8 0.1 1.6888404 10.6 + 8 0.34040556 0.2 1.2 0.1 0.2747958 3.7 + 9 0.3151896 0.1 1.1 0 0.26787144 3.3 + 10 0.15163027 0 0.3 0 0.10668954 0.8 + 11 0.17382136 0 0.7 0 0.25309217 1.7 + 12 0.079631332 0 0.6 0 0.038274993 1.4 + 13 0.098991624 0 0.3 0 0.18223547 1.3 + 14 0.0037690618 0 0.1 0 0.0027943672 0.2 + 15 0 0 0 0 0 0 16 0 0 0 0 0 0 17 0 0 0 0 0 0 - 18 0.13265768 0 0.2 0 0.084899817 0.6 - 19 0.20006437 0 0.2 0 0.10526661 0.6 + 18 0 0 0 0 0 0 + 19 0 0 0 0 0 0 ############################################################ Region : Calor-C Production thresholds : gamma 10 cm e- 10 cm e+ 10 cm Energy deposition in an event : - Absorber 2.6240797 GeV Gap 283.73383 MeV + Absorber 2.3477538 GeV Gap 251.65552 MeV Number of secondaries in an event : - gamma in Absorber 86.9 in Gap 9.5 - e- in Absorber 150.8 in Gap 16.5 - e+ in Absorber 22.4 in Gap 1 + gamma in Absorber 22 in Gap 1 + e- in Absorber 37 in Gap 3 + e+ in Absorber 6.1 in Gap 0.1 Minimum kinetic energy of generated secondaries : - gamma in Absorber 285.40289 keV in Gap 59.470833 keV - e- in Absorber 1.8004593 keV in Gap 357.25119 eV - e+ in Absorber 147.33392 keV in Gap 1.0478157 MeV + gamma in Absorber 391.58927 keV in Gap 57.001301 keV + e- in Absorber 1.3600008 keV in Gap 8.6671043 keV + e+ in Absorber 209.85903 keV in Gap 141.09272 MeV Total track length of e+/e- in an event : - Absorber 23.39152 cm Gap 15.650909 cm + Absorber 5.6518575 cm Gap 2.5907678 cm Total number of steps of e+/e- in an event : - Absorber 824.7 Gap 119.4 + Absorber 166.3 Gap 15.6 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt - 0 2854.5075 85.3 109.3 19 336.70966 654.1 - 1 31.160807 7.3 28 2.7 34.444636 144.3 - 2 8.7689497 1.1 13.3 0.4 7.6806487 67.8 - 3 7.6663017 1.3 9.3 0.7 6.3263266 39.5 - 4 2.8714189 1 3.1 0.4 3.0991174 14.8 - 5 1.0385221 0 1.6 0 0.68536375 5.3 - 6 0.7449161 0.2 0.8 0.1 0.51403199 3.2 - 7 0.27686827 0 0.9 0 0.41178396 10.6 - 8 0.61915243 0.2 0.5 0.1 0.4746013 3 - 9 0.076148703 0 0.2 0 0.035301349 0.6 + 0 2588.5174 21.4 27.8 5.5 72.733529 128.6 + 1 4.3719434 0.6 6.4 0.3 4.6477971 30.2 + 2 2.5393548 0.4 2.5 0.2 1.669667 10.5 + 3 1.8810023 0.3 1.2 0.1 1.1882144 4.7 + 4 1.2354648 0.2 0.5 0.1 0.85788387 2.2 + 5 0.48856592 0 0.7 0 0.32223646 2.2 + 6 0.24116322 0.1 0.6 0 0.80418184 2.3 + 7 0 0 0 0 0 0 + 8 0.050120483 0 0.1 0 0.16059534 0.7 + 9 0.08421326 0 0.2 0 0.042147549 0.5 10 0 0 0 0 0 0 11 0 0 0 0 0 0 12 0 0 0 0 0 0 - 13 0.025321797 0 0.2 0 0.013415793 0.6 + 13 0 0 0 0 0 0 14 0 0 0 0 0 0 15 0 0 0 0 0 0 16 0 0 0 0 0 0 @@ -474,20 +474,20 @@ layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt ############################################################ Region - All particles : User=0.04 Real=0.04 Sys=0 + All particles : User=0.01 Real=0.03 Sys=0 e+ / e- : User=0 Real=0 Sys=0 Region - All particles : User=54.31 Real=54.89 Sys=0.61 - e+ / e- : User=40.69 Real=41.07 Sys=0.38 + All particles : User=37.81 Real=38.28 Sys=0.49 + e+ / e- : User=26.39 Real=26.75 Sys=0.35 Region - All particles : User=27.32 Real=27.79 Sys=0.47 - e+ / e- : User=19.86 Real=20.24 Sys=0.39 + All particles : User=13.58 Real=13.72 Sys=0.16 + e+ / e- : User=9.11 Real=9.23 Sys=0.13 Region - All particles : User=4.62 Real=4.67 Sys=0.05 - e+ / e- : User=3.2 Real=3.24 Sys=0.04 + All particles : User=0.86 Real=0.87 Sys=0.01 + e+ / e- : User=0.38 Real=0.39 Sys=0.01 /run/dumpCouples @@ -600,7 +600,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -613,7 +613,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -631,7 +631,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for proton Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -644,14 +644,14 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muIoni: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -673,7 +673,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -691,7 +691,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.29750425 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for pi- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -699,7 +699,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.29750425 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -763,7 +763,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10 - User=140.88s Real=142.8s Sys=1.89s + User=107.2s Real=108.59s Sys=1.36s ############################################################ Run Summary - Number of events : 10 ############################################################ @@ -771,78 +771,78 @@ Region : Calor-A Production thresholds : gamma 200 um e- 200 um e+ 200 um Energy deposition in an event : - Absorber 3.2192122 GeV Gap 387.16934 MeV + Absorber 3.28383 GeV Gap 398.50698 MeV Number of secondaries in an event : - gamma in Absorber 1409.4 in Gap 69.5 - e- in Absorber 2314.4 in Gap 279.6 - e+ in Absorber 101.5 in Gap 3.5 + gamma in Absorber 1465.3 in Gap 75.9 + e- in Absorber 2422.5 in Gap 285.3 + e+ in Absorber 103.6 in Gap 3.2 Minimum kinetic energy of generated secondaries : - gamma in Absorber 47.185952 keV in Gap 2.8098227 keV - e- in Absorber 17.18202 eV in Gap 5.4541711 eV - e+ in Absorber 494.93941 eV in Gap 52.666097 keV + gamma in Absorber 47.189499 keV in Gap 2.8011515 keV + e- in Absorber 13.795331 eV in Gap 51.011131 eV + e+ in Absorber 116.0017 eV in Gap 156.54207 keV Total track length of e+/e- in an event : - Absorber 1.3564015 m Gap 91.840972 cm + Absorber 1.4037887 m Gap 98.656176 cm Total number of steps of e+/e- in an event : - Absorber 9718.3 Gap 1572.2 + Absorber 9016.9 Gap 1287.1 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt - 0 3339.5532 1328.7 2071.1 88.9 1989.2668 9054.2 - 1 156.97818 90.8 290.8 9.8 173.17209 1260.2 - 2 55.191238 30.6 113.4 3.2 54.291905 466.4 - 3 27.092796 14.2 55.3 1.3 28.088423 237.4 - 4 11.32168 6.5 25.4 1 10.662899 105.6 - 5 5.8640207 2.9 14.5 0.2 4.2327056 59.2 - 6 4.3038086 2.8 9.3 0.4 3.9041986 35.9 - 7 1.7098474 0.8 4.5 0.2 1.1390006 27 - 8 1.7434041 1 4 0 4.0307939 17.1 - 9 1.2113668 0.3 2.1 0 3.192693 12.3 - 10 0.57058494 0.1 1.8 0 1.1390084 6.8 - 11 0.18106695 0 0.5 0 0.43822814 3.3 - 12 0.3894825 0 0.4 0 0.79845475 1.9 - 13 0.2708012 0.2 0.9 0 0.4540155 3.2 + 0 3393.44 1370.3 2155.9 87.7 2082.4015 8227.2 + 1 179.52692 111.3 320.9 12.2 202.36895 1253.3 + 2 59.253334 32.2 115.3 3.6 59.982454 439.7 + 3 19.245346 9.7 43.9 1.1 15.06719 140.4 + 4 15.397258 10.5 35.4 1.2 15.710582 112.7 + 5 7.6989539 3.7 17.2 0.7 8.4287157 56.4 + 6 3.2324945 1.1 7.9 0.1 2.3254584 25.6 + 7 1.1427249 1 3 0 0.99833006 10 + 8 0.73497724 0.3 2.3 0 0.43092902 8.9 + 9 1.0053203 0.4 2.4 0.1 0.73269449 10.9 + 10 1.02117 0.4 2.3 0 0.68138667 6.7 + 11 0.31431201 0 0.6 0 1.0457239 9.9 + 12 0.28074279 0.3 0.5 0.1 0.15885322 1.8 + 13 0 0 0 0 0 0 14 0 0 0 0 0 0 15 0 0 0 0 0 0 16 0 0 0 0 0 0 17 0 0 0 0 0 0 - 18 0 0 0 0 0 0 + 18 0.043401516 0 0.2 0 0.017659462 0.5 19 0 0 0 0 0 0 ############################################################ Region : Calor-B Production thresholds : gamma 2 mm e- 2 mm e+ 2 mm Energy deposition in an event : - Absorber 3.1392071 GeV Gap 376.63338 MeV + Absorber 2.6104169 GeV Gap 339.46148 MeV Number of secondaries in an event : - gamma in Absorber 970.8 in Gap 56.4 - e- in Absorber 1589.4 in Gap 141 - e+ in Absorber 99.5 in Gap 3 + gamma in Absorber 659.8 in Gap 39.8 + e- in Absorber 1093.4 in Gap 112.1 + e+ in Absorber 64.4 in Gap 1.6 Minimum kinetic energy of generated secondaries : - gamma in Absorber 120.69478 keV in Gap 8.6904698 keV - e- in Absorber 2.6232579 eV in Gap 73.428132 eV - e+ in Absorber 5.2162257 keV in Gap 86.727097 keV + gamma in Absorber 120.59013 keV in Gap 8.7652449 keV + e- in Absorber 40.738727 eV in Gap 50.468818 eV + e+ in Absorber 6.4114566 keV in Gap 1.3569283 MeV Total track length of e+/e- in an event : - Absorber 1.1540164 m Gap 80.613374 cm + Absorber 78.90567 cm Gap 62.98074 cm Total number of steps of e+/e- in an event : - Absorber 6909.7 Gap 949 + Absorber 4268.6 Gap 639.2 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt - 0 3239.4223 917 1279.4 85.3 1666.8935 5888.6 - 1 162.71332 71.1 246.4 10.7 181.22806 1106.7 - 2 58.697837 21.3 102.2 3.3 56.33738 411.2 - 3 27.517989 8 50.1 1.7 25.827371 207.7 - 4 13.073044 4.5 21.9 0.6 12.516232 100.7 - 5 7.6535474 3 14.1 0.8 6.6294315 56.3 - 6 4.1999938 1.9 9 0.1 6.9720013 37.2 - 7 1.1329438 0 2.6 0 0.80375203 23 - 8 0.72576411 0.1 1.6 0 1.8858611 11.2 - 9 0.066548655 0 0.5 0 0.19943906 2.9 - 10 0.21218592 0.1 0.8 0 0.31909647 4.6 - 11 0.13945936 0 0.5 0 0.20460465 3.2 - 12 0.15514855 0.2 0.4 0 0.27517208 2.7 - 13 0.11915486 0 0.7 0 0.045894096 2.1 - 14 0.011182337 0 0.2 0 0.012313678 0.6 + 0 2785.9143 636.8 909.5 56.7 1245.5694 3791.9 + 1 98.25835 38.3 162.4 5.9 107.9807 625.6 + 2 32.460775 11.2 61.9 1.6 33.703546 215.2 + 3 16.327085 7 32.4 1 16.392098 131.7 + 4 6.819177 3.1 18.1 0.2 6.0822378 68.2 + 5 4.0641957 1.3 7.3 0.2 3.429209 25.8 + 6 2.342444 0.6 5.1 0.2 1.8730427 15.5 + 7 1.2547259 0.5 2.8 0 1.1781553 11.5 + 8 1.1119566 0.2 2.6 0 0.79908681 9.9 + 9 0.5580495 0.4 1.6 0.2 0.51864165 5 + 10 0.13564887 0 0.5 0 0.29120616 1.1 + 11 0.31131621 0.2 0.7 0 0.26208732 2.8 + 12 0.11794 0 0.2 0 0.077092242 2.5 + 13 0 0 0 0 0 0 + 14 0 0 0 0 0 0 15 0 0 0 0 0 0 16 0 0 0 0 0 0 17 0 0 0 0 0 0 @@ -853,38 +853,38 @@ Region : Calor-C Production thresholds : gamma 2 cm e- 2 cm e+ 2 cm Energy deposition in an event : - Absorber 2.8533855 GeV Gap 354.76373 MeV + Absorber 2.852601 GeV Gap 336.89099 MeV Number of secondaries in an event : - gamma in Absorber 449.5 in Gap 37.1 - e- in Absorber 824.7 in Gap 82.1 - e+ in Absorber 70.1 in Gap 2 + gamma in Absorber 455.7 in Gap 30.5 + e- in Absorber 858.6 in Gap 84.9 + e+ in Absorber 76.2 in Gap 2.1 Minimum kinetic energy of generated secondaries : - gamma in Absorber 275.68574 keV in Gap 27.087273 keV - e- in Absorber 75.75109 eV in Gap 88.438575 eV - e+ in Absorber 13.44609 keV in Gap 1.012656 MeV + gamma in Absorber 315.45652 keV in Gap 27.223849 keV + e- in Absorber 128.71901 eV in Gap 256.03303 eV + e+ in Absorber 15.450424 keV in Gap 613.08395 keV Total track length of e+/e- in an event : - Absorber 75.165151 cm Gap 57.589179 cm + Absorber 75.177768 cm Gap 48.951106 cm Total number of steps of e+/e- in an event : - Absorber 3690.3 Gap 553.2 + Absorber 3422.8 Gap 476.2 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt - 0 3033.9672 445.8 617.6 62.3 1151.4176 2985.6 - 1 103.3075 26.4 155.4 6 108.06072 674.4 - 2 31.174106 5.1 60.7 1.4 27.830461 259.3 - 3 14.707618 3.5 27.4 0.8 15.145763 105.5 - 4 9.6584905 1.7 17.9 0.5 10.549566 90.3 - 5 6.3458367 1.6 9.4 0.5 5.1379193 44.4 - 6 3.6196408 1.1 7.2 0.2 2.4884659 30.2 - 7 2.5128906 0.6 5.2 0.2 3.5272325 19.8 - 8 0.64633585 0.3 1.6 0.1 0.4130386 5.3 - 9 1.055822 0 1.9 0 1.3689543 12.3 - 10 0.37182566 0.3 0.6 0 0.60707954 5.6 - 11 0.12263441 0 0.4 0 0.052687972 4.2 - 12 0.1709684 0 0.3 0 0.25048636 1 - 13 0.1190396 0 0.6 0 0.12411396 2 - 14 0.14258767 0.2 0.2 0.1 0.081631597 1.6 - 15 0.22674157 0 0.4 0 0.487571 2 + 0 2993.4595 439.5 630.5 66.5 1048.8109 2687 + 1 108.29645 27.4 162.7 6.6 111.03007 632 + 2 48.136252 11 76.1 2.7 46.957553 301 + 3 16.054872 3.8 33.2 1.2 12.010763 123.3 + 4 11.062776 2 18.5 0.5 10.482682 76 + 5 3.5401566 0.8 6.8 0.3 3.0078122 22.2 + 6 3.7107887 1 7.4 0.3 4.1516113 24.1 + 7 1.9154434 0.4 2.6 0.1 2.1934144 16.7 + 8 0.45247077 0 1.6 0 0.33242476 3.7 + 9 1.0701478 0 1.4 0 0.72121759 4.4 + 10 1.0117769 0.2 0.7 0.1 0.72673192 2.2 + 11 0.19687448 0.1 0.5 0 0.5615854 2.4 + 12 0.019171576 0 0.3 0 0.0067723912 0.6 + 13 0.29462094 0 0.4 0 0.16539416 1.5 + 14 0.03234347 0 0.1 0 0.010232132 0.3 + 15 0.2382977 0 0.7 0 0.11953067 1.6 16 0 0 0 0 0 0 17 0 0 0 0 0 0 18 0 0 0 0 0 0 @@ -892,20 +892,20 @@ layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt ############################################################ Region - All particles : User=0.02 Real=0.02 Sys=0 + All particles : User=0.01 Real=0.01 Sys=0 e+ / e- : User=0 Real=0 Sys=0 Region - All particles : User=46.68 Real=47.2 Sys=0.51 - e+ / e- : User=34.47 Real=34.87 Sys=0.41 + All particles : User=37.61 Real=37.99 Sys=0.35 + e+ / e- : User=26.44 Real=26.69 Sys=0.27 Region - All particles : User=33.45 Real=33.76 Sys=0.31 - e+ / e- : User=24.45 Real=24.73 Sys=0.25 + All particles : User=18.63 Real=18.86 Sys=0.23 + e+ / e- : User=12.74 Real=13 Sys=0.28 Region - All particles : User=18.94 Real=19.14 Sys=0.18 - e+ / e- : User=13.32 Real=13.5 Sys=0.16 + All particles : User=14.8 Real=14.91 Sys=0.13 + e+ / e- : User=9.64 Real=9.75 Sys=0.11 /run/dumpCouples @@ -1017,7 +1017,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1030,7 +1030,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1048,7 +1048,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for proton Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -1061,14 +1061,14 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muIoni: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -1090,7 +1090,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1108,7 +1108,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.29750425 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for pi- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1116,7 +1116,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.29750425 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -1210,7 +1210,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10 - User=153.77s Real=156.76s Sys=2.99s + User=28.66s Real=29.04s Sys=0.38s ############################################################ Run Summary - Number of events : 10 ############################################################ @@ -1218,141 +1218,141 @@ Region : Calor-A Production thresholds : gamma 200 um e- 200 um e+ 200 um Energy deposition in an event : - Absorber 559.07811 MeV Gap 239.64951 MeV + Absorber 576.44813 MeV Gap 257.57054 MeV Number of secondaries in an event : - gamma in Absorber 40.9 in Gap 7.5 - e- in Absorber 260.7 in Gap 132.3 - e+ in Absorber 0.7 in Gap 0.3 + gamma in Absorber 45 in Gap 11.4 + e- in Absorber 293.2 in Gap 139.4 + e+ in Absorber 1.1 in Gap 0.4 Minimum kinetic energy of generated secondaries : - gamma in Absorber 3.2377965 keV in Gap 1.5318062 keV - e- in Absorber 27.084815 eV in Gap 4.4707033 eV - e+ in Absorber 868.60666 keV in Gap 203.95688 keV + gamma in Absorber 3.2785533 keV in Gap 1.4887411 keV + e- in Absorber 10.025667 eV in Gap 36.85286 eV + e+ in Absorber 301.50436 keV in Gap 1.0027784 MeV Total track length of e+/e- in an event : - Absorber 37.050396 cm Gap 31.832852 cm + Absorber 41.15305 cm Gap 41.607519 cm Total number of steps of e+/e- in an event : - Absorber 1081.7 Gap 560.2 + Absorber 951.1 Gap 502.6 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt - 0 773.04816 43.4 260.5 0.8 612.91302 1189.5 - 1 16.08247 4 38.3 0.1 53.202561 147.7 - 2 3.2808549 0.4 22.2 0 9.7681303 76.9 - 3 1.7399653 0.1 15.2 0.1 3.9486994 49.4 - 4 1.086386 0.3 10.8 0 1.9691431 34.1 - 5 0.54158933 0 9.1 0 0.82539744 29.6 - 6 0.96092417 0.2 6.5 0 2.0057678 20.1 - 7 0.28419324 0 7.1 0 0.25603267 21.3 - 8 0.12103484 0 3.2 0 0.090113672 9.6 - 9 0.27747965 0 4.2 0 0.37605611 12.7 - 10 0.14703241 0 3.9 0 0.11276265 11.7 - 11 0.1144801 0 2.8 0 0.0819111 8.8 - 12 0.12300888 0 3.2 0 0.12126806 11.1 - 13 0.11895986 0 2.1 0 0.11047758 6.3 - 14 0.17598005 0 1.2 0 0.28742402 4.1 - 15 0.068278857 0 0.5 0 0.15244309 1.6 - 16 0.44536586 0 0.6 0 2.4803549 2.6 - 17 0 0 0 0 0 0 - 18 0.037679029 0 0.5 0 0.040052968 1.5 - 19 0.0031623205 0 0.2 0 0.00077654384 0.6 + 0 800.55216 49.3 278.3 0.9 728.095 1046.1 + 1 15.241343 3.8 33.6 0.2 48.774858 108.4 + 2 6.6349926 1.3 27.8 0.3 20.796625 79 + 3 4.5137588 1.3 23 0 13.525527 59.1 + 4 1.9088203 0.3 16.3 0 4.6527631 35.4 + 5 1.4771605 0.2 15.1 0.1 3.1314752 34.2 + 6 0.43609775 0.1 9.6 0 0.46933543 21.1 + 7 1.3437713 0 5.5 0 4.1048071 17.2 + 8 0.22044547 0 4.7 0 0.27504521 10 + 9 0.26544414 0 3.2 0 0.45047337 6.7 + 10 0.32909694 0.1 3.1 0 1.2653407 7.2 + 11 0.31147655 0 3.1 0 0.62959078 7.1 + 12 0.084325042 0 1.7 0 0.089180224 4.2 + 13 0.082682476 0 1.8 0 0.086157412 3.7 + 14 0.10644928 0 2 0 0.07366632 4.2 + 15 0.003446776 0 0.2 0 0.0011349384 0.4 + 16 0.05868877 0 0.6 0 0.10258631 1.3 + 17 0.13713636 0 0.5 0 0.53509143 2.6 + 18 0.087406711 0 0.5 0 0.15221856 1 + 19 0.15319814 0 1.2 0 0.33016072 3.2 ############################################################ Region : Calor-B Production thresholds : gamma 2 mm e- 2 mm e+ 2 mm Energy deposition in an event : - Absorber 731.38357 MeV Gap 320.15378 MeV + Absorber 586.42887 MeV Gap 259.2186 MeV Number of secondaries in an event : - gamma in Absorber 77.8 in Gap 22 - e- in Absorber 408.2 in Gap 174.5 - e+ in Absorber 4.5 in Gap 1.2 + gamma in Absorber 37 in Gap 11.7 + e- in Absorber 202.4 in Gap 85.2 + e+ in Absorber 1.4 in Gap 0.1 Minimum kinetic energy of generated secondaries : - gamma in Absorber 9.566338 keV in Gap 4.1269872 keV - e- in Absorber 8.3602395 eV in Gap 25.404177 eV - e+ in Absorber 257.1495 keV in Gap 2.0173827 MeV + gamma in Absorber 9.6338404 keV in Gap 3.9527506 keV + e- in Absorber 14.862375 eV in Gap 7.4401022 eV + e+ in Absorber 948.60295 keV in Gap 2.3538057 MeV Total track length of e+/e- in an event : - Absorber 70.476485 cm Gap 69.539972 cm + Absorber 36.728944 cm Gap 37.947686 cm Total number of steps of e+/e- in an event : - Absorber 1621.3 Gap 750.5 + Absorber 693.9 Gap 335.1 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt - 0 892.46453 62.7 134.5 3.1 913.50233 778.3 - 1 104.79657 27.6 101.8 1.9 340.20306 454.2 - 2 27.885463 6.1 74.9 0.4 85.240139 277.1 - 3 7.20871 1 61.2 0 18.62182 191.9 - 4 4.9163943 0.7 46.4 0.1 11.089719 145.1 - 5 3.6166616 0.7 36.4 0.1 8.9073039 115.9 - 6 1.4457895 0.1 25.9 0 2.8238043 78.8 - 7 1.33606 0.2 24.9 0 2.0291105 75.7 - 8 1.2157171 0.1 15.1 0 2.9393667 48.1 - 9 1.1293038 0 12.4 0 1.8753314 39.8 - 10 0.44764295 0 9 0 0.42287895 27.1 - 11 0.34861191 0 7.7 0 0.32149365 23.4 - 12 1.2734134 0.1 5.7 0 4.0536758 19.2 - 13 0.43996438 0 5.6 0 0.90833372 20.1 - 14 0.15718783 0 4.5 0 0.11210469 13.5 - 15 0.82327286 0 2.2 0 1.9480714 7.1 - 16 0.15415562 0 2.1 0 0.21469479 6.3 - 17 0.11192547 0 3.5 0 0.07258611 10.5 - 18 0.24375785 0.1 1.6 0 0.45861499 5.6 - 19 1.316359 0.4 1.8 0.1 4.1474148 12.9 + 0 800.45376 39.9 95.2 0.7 618.06471 521.9 + 1 27.68905 5.6 48.7 0.5 87.736333 158.1 + 2 7.7848563 1.7 36.4 0.1 22.009187 92.5 + 3 3.4700797 0.7 24.9 0.1 7.2415254 63.5 + 4 1.1122977 0.1 15.9 0 1.750773 35.6 + 5 1.3553934 0.4 13.7 0.1 2.5028392 33.4 + 6 0.52286005 0 9.9 0 0.8388748 24.5 + 7 0.76994058 0 9.5 0 1.7514468 21.2 + 8 0.93646014 0.2 10.5 0 1.6751954 24.9 + 9 0.34893051 0 5.4 0 0.82884961 12.8 + 10 0.20263985 0 2.9 0 0.55399586 6.4 + 11 0.30316546 0 3.5 0 0.61965001 9 + 12 0.22247672 0.1 3.9 0 0.39668695 9.2 + 13 0.050461527 0 2.2 0 0.028784434 4.5 + 14 0.026888247 0 0.8 0 0.012320902 1.9 + 15 0 0 0 0 0 0 + 16 0.041115377 0 1.8 0 0.015766167 3.8 + 17 0.031717721 0 0.7 0 0.025439089 1.5 + 18 0.003654642 0 0.6 0 0.00069245882 1.2 + 19 0.10557826 0 0.3 0 0.20776601 0.8 ############################################################ Region : Calor-C Production thresholds : gamma 2 cm e- 2 cm e+ 2 cm Energy deposition in an event : - Absorber 2.9151793 GeV Gap 1.2461451 GeV + Absorber 788.33925 MeV Gap 332.95571 MeV Number of secondaries in an event : - gamma in Absorber 575.3 in Gap 172.8 - e- in Absorber 3498.9 in Gap 1384.2 - e+ in Absorber 48.1 in Gap 12.2 + gamma in Absorber 72.3 in Gap 20.6 + e- in Absorber 395.4 in Gap 158.8 + e+ in Absorber 5.5 in Gap 1.2 Minimum kinetic energy of generated secondaries : - gamma in Absorber 28.197434 keV in Gap 10.314335 keV - e- in Absorber 0.35978918 eV in Gap 0.030762519 eV - e+ in Absorber 19.325632 keV in Gap 200.297 keV + gamma in Absorber 28.192273 keV in Gap 10.508072 keV + e- in Absorber 2.4217079 eV in Gap 8.0419448 eV + e+ in Absorber 492.26284 keV in Gap 4.536074 MeV Total track length of e+/e- in an event : - Absorber 5.3048921 m Gap 5.1303281 m + Absorber 67.709179 cm Gap 64.391572 cm Total number of steps of e+/e- in an event : - Absorber 12904.4 Gap 5392.2 + Absorber 1181.9 Gap 477.4 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt - 0 3061.1302 535.5 830.4 40.3 7332.6633 4318.7 - 1 554.33994 120.9 761.7 10.1 1709.4804 3078.6 - 2 221.53142 43.5 673 3.8 626.82558 2375.6 - 3 100.38795 17.1 544.7 1.7 254.83559 1833.8 - 4 57.326845 9.6 454 1.1 133.91446 1476.4 - 5 46.94377 6.7 371.4 1.2 115.65442 1213 - 6 32.645495 5.2 288.5 0.4 75.928666 928.7 - 7 19.346338 1.9 221.9 0.2 41.005741 704.8 - 8 17.790127 2.6 163.1 0.6 39.601966 535.9 - 9 12.608128 1.5 135.2 0.3 29.307225 427.2 - 10 8.097949 0.6 104.6 0.1 15.304469 326.4 - 11 5.5828298 0.4 79.9 0 8.3760495 251.4 - 12 5.0372188 0.8 64.8 0.2 11.424089 211.8 - 13 2.951699 0.2 52.5 0 4.7227594 161.4 - 14 2.85127 0.5 35.2 0.1 5.2250833 111.9 - 15 2.6213509 0.1 29.5 0.1 7.135983 97.2 - 16 4.0987801 0.7 22.3 0.1 9.6103183 77.1 - 17 2.1890372 0.1 18.3 0 4.7431235 63.7 - 18 1.5208105 0 12.5 0 4.0433372 40.4 - 19 1.2389767 0.1 10.2 0 3.3315262 32.8 + 0 992.37169 68.8 96.9 4.3 959.88071 463.5 + 1 64.523254 12.7 85.4 1.2 187.74417 268.5 + 2 22.971318 3.8 73.7 0.4 65.881194 199.3 + 3 12.469383 3 58.7 0.1 36.129723 156.3 + 4 6.612243 1.2 50.8 0.1 16.542473 115.9 + 5 4.3217987 0.9 39.6 0.2 9.3977507 103.4 + 6 4.7067932 0.3 37.7 0 11.374435 85.3 + 7 3.9265164 0.9 24.9 0.2 10.032739 61.2 + 8 0.67404442 0.1 18.7 0 0.565004 40.7 + 9 1.6102784 0.3 14.7 0.1 4.8548172 37.7 + 10 1.1823116 0.3 13 0 2.5379226 31.2 + 11 0.58848889 0 10.2 0 1.1708202 23.3 + 12 0.40711545 0 7.9 0 0.45599112 20.9 + 13 0.15249662 0.1 4.2 0 0.15001844 9 + 14 0.72103255 0 3.8 0 1.2923133 9.6 + 15 0.15435487 0.1 2 0 0.16774415 4.4 + 16 0.084551299 0 2 0 0.061748291 4.2 + 17 0.063421343 0 2.6 0 0.040764855 5.6 + 18 2.736537 0.2 1.6 0.1 10.519997 5.3 + 19 0.86119689 0.2 1.3 0 2.0689795 4.1 ############################################################ Region - All particles : User=0.01 Real=0.01 Sys=0 + All particles : User=0.03 Real=0.03 Sys=0 e+ / e- : User=0 Real=0 Sys=0 Region - All particles : User=7.76 Real=7.79 Sys=0.04 - e+ / e- : User=5.23 Real=5.25 Sys=0.02 + All particles : User=6.45 Real=6.49 Sys=0.05 + e+ / e- : User=3.6 Real=3.63 Sys=0.02 Region - All particles : User=12.46 Real=12.64 Sys=0.18 - e+ / e- : User=7.33 Real=7.44 Sys=0.11 + All particles : User=4.98 Real=5.07 Sys=0.09 + e+ / e- : User=2.35 Real=2.38 Sys=0.03 Region - All particles : User=97.63 Real=98.99 Sys=1.36 - e+ / e- : User=53.29 Real=54.24 Sys=0.93 + All particles : User=9.16 Real=9.25 Sys=0.09 + e+ / e- : User=3.88 Real=3.92 Sys=0.04 /run/dumpCouples @@ -1495,7 +1495,7 @@ eIoni: tables are built for e- Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1508,7 +1508,7 @@ eIoni: tables are built for e+ Lambda tables from threshold to 100 TeV in 120 bins. Delta cross sections and sampling from MollerBhabha model Good description from 1 KeV to 100 GeV. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 eBrem: tables are built for e+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1526,7 +1526,7 @@ hIoni: tables are built for proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for proton Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -1539,14 +1539,14 @@ hIoni: tables are built for anti_proton Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muIoni: tables are built for mu+ dE/dx and range tables from 100 eV to 100 TeV in 120 bins. Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for mu+ Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -1568,7 +1568,7 @@ muIoni: tables are built for mu- Lambda tables from threshold to 100 TeV in 120 bins. Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below, radiative corrections for E > 1 GeV - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 muBrems: tables are built for mu- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1586,7 +1586,7 @@ hIoni: tables are built for pi+ Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.29750425 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 hIoni: tables are built for pi- dE/dx and range tables from 100 eV to 100 TeV in 120 bins. @@ -1594,7 +1594,7 @@ hIoni: tables are built for pi- Scaling relation is used from proton dE/dx and range. Delta cross sections and sampling from BetheBloch model for scaled energy > 0.29750425 MeV Parametrisation from Bragg for protons below. - Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1 + Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1 msc: Model variant of multiple scattering for pi- Lambda tables from 100 eV to 100 TeV in 120 bins. @@ -1688,7 +1688,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10 - User=70.42s Real=71.19s Sys=0.77s + User=46.28s Real=47.31s Sys=1.03s ############################################################ Run Summary - Number of events : 10 ############################################################ @@ -1696,141 +1696,141 @@ Region : Calor-A Production thresholds : gamma 10 um e- 10 um e+ 10 um Energy deposition in an event : - Absorber 545.76559 MeV Gap 240.10265 MeV + Absorber 550.83244 MeV Gap 245.98974 MeV Number of secondaries in an event : - gamma in Absorber 47.7 in Gap 11.5 - e- in Absorber 910.2 in Gap 878.2 - e+ in Absorber 0.8 in Gap 0.1 + gamma in Absorber 51.3 in Gap 13.8 + e- in Absorber 958.5 in Gap 937.5 + e+ in Absorber 0.7 in Gap 0.3 Minimum kinetic energy of generated secondaries : - gamma in Absorber 1.0133838 keV in Gap 1.0325838 keV - e- in Absorber 3.9260058 eV in Gap 10.253441 eV - e+ in Absorber 897.09069 keV in Gap 12.875319 MeV + gamma in Absorber 1.0299209 keV in Gap 1.0031547 keV + e- in Absorber 20.665715 eV in Gap 74.030044 eV + e+ in Absorber 1.1027445 MeV in Gap 2.3987841 MeV Total track length of e+/e- in an event : - Absorber 36.838351 cm Gap 34.555424 cm + Absorber 37.925219 cm Gap 37.147107 cm Total number of steps of e+/e- in an event : - Absorber 3242.7 Gap 3010.5 + Absorber 2478.5 Gap 2315.5 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt - 0 761.51756 52.2 1642.6 0.4 637.45094 5730 - 1 12.2777 4.1 43.2 0.3 39.22202 173.4 - 2 6.1570313 1.5 28.2 0.1 22.061384 108.2 - 3 0.56664001 0 14 0 0.52398259 42.3 - 4 1.091724 0.2 15.3 0 2.7492706 48.9 - 5 0.30746546 0.2 6.6 0 0.29825136 20.1 - 6 0.77875187 0.2 6.8 0 1.5345913 22.7 - 7 1.5486847 0.4 10.1 0.1 6.0508901 36.9 - 8 0.40454049 0.1 6.2 0 1.4281914 19.5 - 9 0.13473159 0.1 4.3 0 0.068323498 13 - 10 0.16304443 0.1 2.3 0 0.23696546 8.9 - 11 0.18113637 0 2 0 0.31981378 6.5 - 12 0.39273671 0.1 2.7 0 0.76759929 9.2 - 13 0.26961443 0 1.7 0 1.1589617 6.1 - 14 0.010630493 0 0.8 0 0.0039894486 2.4 - 15 0.033382028 0 0.9 0 0.030213051 3 - 16 0.0060948328 0 0.3 0 0.0014211836 0.9 - 17 0.014195118 0 0.3 0 0.0083310305 0.9 - 18 0.012575127 0 0.1 0 0.022613578 0.3 + 0 762.2099 56 1686.1 0.4 641.59259 4212.7 + 1 15.473211 4 59.3 0.2 54.292118 184.3 + 2 6.0253303 2.5 34.5 0.3 20.258503 99.6 + 3 4.2641809 1.1 28 0 10.893425 72.2 + 4 1.8831476 0.2 20.1 0 5.2755368 47.7 + 5 1.5692076 0.4 16.4 0 4.188729 42.6 + 6 2.1066057 0.3 13.1 0 6.981688 39.4 + 7 1.0143553 0.1 8.9 0 3.3016257 23.1 + 8 0.35770849 0 6.2 0 0.49908513 14.6 + 9 1.0914258 0.4 6.5 0.1 2.4340614 19.2 + 10 0.37165486 0.1 4.2 0 0.59239523 11 + 11 0.14430533 0 2.5 0 0.1321842 5.3 + 12 0.04866709 0 2 0 0.036141824 4.1 + 13 0.086492482 0 3.2 0 0.055642062 6.7 + 14 0.082616514 0 1.9 0 0.11075342 4.8 + 15 0.016545055 0 1 0 0.0059604374 2.1 + 16 0.022908357 0 0.9 0 0.012213725 2 + 17 0.0028222345 0 0.1 0 0.0015784948 0.2 + 18 0.010500082 0 0.5 0 0.0079257249 1.1 19 0 0 0 0 0 0 ############################################################ Region : Calor-B Production thresholds : gamma 100 um e- 100 um e+ 100 um Energy deposition in an event : - Absorber 608.64425 MeV Gap 262.78924 MeV + Absorber 613.28606 MeV Gap 275.36962 MeV Number of secondaries in an event : - gamma in Absorber 61 in Gap 16 - e- in Absorber 436.1 in Gap 228 - e+ in Absorber 2.7 in Gap 0.5 + gamma in Absorber 60.2 in Gap 17.9 + e- in Absorber 436.9 in Gap 233.3 + e+ in Absorber 1.9 in Gap 0.1 Minimum kinetic energy of generated secondaries : - gamma in Absorber 2.3539828 keV in Gap 1.0987413 keV - e- in Absorber 13.713073 eV in Gap 11.372196 eV - e+ in Absorber 154.09987 keV in Gap 3.7327144 MeV + gamma in Absorber 2.3169525 keV in Gap 1.1880252 keV + e- in Absorber 4.4895783 eV in Gap 35.731491 eV + e+ in Absorber 836.3652 keV in Gap 15.157171 MeV Total track length of e+/e- in an event : - Absorber 50.237565 cm Gap 44.389341 cm + Absorber 51.475054 cm Gap 51.877996 cm Total number of steps of e+/e- in an event : - Absorber 1751.1 Gap 911.8 + Absorber 1364.4 Gap 743.3 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt - 0 810.51717 58.4 409.1 2.1 766.0299 1776 - 1 18.471467 6.1 44.4 0.3 56.360497 166.6 - 2 17.154914 5.9 42.1 0.3 54.90027 152.6 - 3 6.2791582 1.2 31.1 0.1 19.273152 109 - 4 5.5188594 2 26.7 0.2 15.260183 90 - 5 3.4344566 0.6 18.9 0 9.877544 67.4 - 6 2.3040996 0.4 17.5 0.1 6.3302434 58.4 - 7 2.7335042 0.6 14 0 8.562871 46.9 - 8 0.6986591 0.1 11.4 0 0.97388199 34.7 - 9 0.83202953 0.2 9.7 0.1 1.8606168 31.2 - 10 1.8502445 1.1 10.5 0 4.1688023 36 - 11 0.46329114 0 6.9 0 0.89078513 25 - 12 0.18524236 0 3.5 0 0.32222639 10.6 - 13 0.17608604 0 3 0 0.18584045 10 - 14 0.37070531 0.4 3.9 0 0.89136279 13.8 - 15 0.15662133 0 3.3 0 0.14512499 9.9 - 16 0.047450282 0 1.2 0 0.03554748 3.6 - 17 0.055727743 0 1.5 0 0.044284755 4.5 - 18 0.061681355 0 1.3 0 0.066415888 3.9 - 19 0.01583949 0 1.2 0 0.0054451566 3.6 + 0 832.93858 63.7 434.5 1.3 856.35889 1471.6 + 1 32.106347 9.1 62 0.4 109.6777 209.2 + 2 7.6150695 2 40 0.1 23.612539 105.4 + 3 4.8799267 1.1 34.1 0.1 15.582726 85 + 4 4.403535 1 24.5 0 12.626325 62.5 + 5 1.2577519 0.2 15 0.1 2.2688669 34.6 + 6 0.9468235 0.1 13 0 2.3522265 30.8 + 7 1.0611747 0.4 9.2 0 3.4401646 20.7 + 8 0.39579904 0.1 7.6 0 0.70145916 16.5 + 9 0.95452648 0.2 7.8 0 2.2504333 18.4 + 10 0.20953595 0 5.6 0 0.18131921 11.8 + 11 0.49119016 0 4.6 0 1.0153139 10.9 + 12 0.69565187 0.1 3.6 0 1.6030896 8.4 + 13 0.27760326 0.1 2.8 0 0.72026488 6.4 + 14 0.037701671 0 1.4 0 0.018311326 3 + 15 0.24970034 0 1 0 1.0101621 3.9 + 16 0.056525531 0 1.7 0 0.037642051 4.6 + 17 0.06105798 0 1.6 0 0.059403355 3.5 + 18 0.017179332 0 0.2 0 0.013663573 0.5 + 19 0 0 0 0 0 0 ############################################################ Region : Calor-C Production thresholds : gamma 1 mm e- 1 mm e+ 1 mm Energy deposition in an event : - Absorber 770.98951 MeV Gap 330.6829 MeV + Absorber 599.58846 MeV Gap 261.55332 MeV Number of secondaries in an event : - gamma in Absorber 98.8 in Gap 24 - e- in Absorber 520.8 in Gap 213.7 - e+ in Absorber 5.7 in Gap 1.6 + gamma in Absorber 42.6 in Gap 13.2 + e- in Absorber 235.8 in Gap 107 + e+ in Absorber 1.8 in Gap 0.4 Minimum kinetic energy of generated secondaries : - gamma in Absorber 6.8987448 keV in Gap 2.9193982 keV - e- in Absorber 5.2387235 eV in Gap 5.929055 eV - e+ in Absorber 139.06047 keV in Gap 1.0697799 MeV + gamma in Absorber 7.0092316 keV in Gap 2.9141771 keV + e- in Absorber 2.1288974 eV in Gap 2.7943955 eV + e+ in Absorber 195.392 keV in Gap 44.642329 keV Total track length of e+/e- in an event : - Absorber 82.982671 cm Gap 78.205277 cm + Absorber 42.290444 cm Gap 40.523051 cm Total number of steps of e+/e- in an event : - Absorber 2116.2 Gap 910.5 + Absorber 807.5 Gap 388 ------------------------------------------------------------ Scores in parallel geometry layer eDep/evt nGamma/evt nElec/evt nPosi/evt stepLen/evt nStep/evt - 0 958.57312 87.9 197.9 4.6 1201.7528 1146.1 - 1 63.212128 16.9 105.5 0.9 200.84746 430.1 - 2 28.027666 7.4 94.2 0.6 87.020955 342.3 - 3 18.492409 5.1 67.5 0.6 46.628921 235.1 - 4 12.631926 3.3 56.4 0.4 29.991035 195.4 - 5 3.2577914 0.2 52.8 0.1 4.7322078 163.3 - 6 3.5252575 0.1 38.2 0 6.9906899 123.5 - 7 1.4280184 0.1 28.7 0 1.5991341 90.5 - 8 2.9250048 0.2 21.1 0 7.9381702 69.8 - 9 2.0751366 0.3 17.3 0.1 7.4407671 53.7 - 10 3.4715613 0.8 13.8 0 9.8713447 46.2 - 11 1.0453686 0.3 12 0 1.6842227 36.9 - 12 0.61217642 0.1 7.4 0 0.92582762 22.7 - 13 0.91278141 0.1 5.1 0 1.9518043 16 - 14 0.22262242 0 4.1 0 0.39819771 12.4 - 15 0.30812694 0 3.4 0 0.48162216 11 - 16 0.099781281 0 2.6 0 0.052501653 7.8 - 17 0.31523603 0 2.4 0 0.51212804 7.4 - 18 0.1198703 0 1.9 0 0.14043961 5.8 - 19 0.079482328 0 1.1 0 0.097964484 3.3 + 0 807.29621 44.3 128.1 1.4 669.77506 648.7 + 1 25.003203 6.1 44.1 0.4 82.366137 131.4 + 2 12.968431 2.9 37.9 0 39.501523 96.8 + 3 6.4345752 1.6 29 0.4 16.844056 78.1 + 4 2.4755984 0.4 22 0 5.227016 51.5 + 5 1.5698325 0.1 16.5 0 3.6773602 37.3 + 6 1.574739 0 19.5 0 2.9835085 48.1 + 7 0.66949759 0 13.3 0 0.80720331 29.3 + 8 1.1363255 0.1 8.2 0 3.1767412 18.2 + 9 0.46989403 0 7.4 0 0.50974305 15.6 + 10 0.16887053 0 5.4 0 0.15612532 11.6 + 11 0.22353031 0.2 2 0 0.37854306 4.5 + 12 0.46623127 0 1.2 0 1.1292427 3.1 + 13 0.030219923 0 0.7 0 0.015010692 1.7 + 14 0.052949954 0 1.1 0 0.046253238 2.4 + 15 0.02760359 0 1.7 0 0.011927078 3.6 + 16 0.021562719 0.1 0.7 0 0.015179666 1.7 + 17 0.011574198 0 0.4 0 0.0099146252 0.8 + 18 0.041931694 0 0.7 0 0.065184182 1.5 + 19 0.064748732 0 0.2 0 0.11951395 0.6 ############################################################ Region - All particles : User=0.05 Real=0.05 Sys=0 + All particles : User=0.01 Real=0.01 Sys=0 e+ / e- : User=0 Real=0 Sys=0 Region - All particles : User=24.83 Real=25.02 Sys=0.17 - e+ / e- : User=18.05 Real=18.14 Sys=0.1 + All particles : User=16.74 Real=17.03 Sys=0.29 + e+ / e- : User=10.27 Real=10.44 Sys=0.17 Region - All particles : User=12.09 Real=12.25 Sys=0.15 - e+ / e- : User=7.95 Real=8.05 Sys=0.1 + All particles : User=8.59 Real=8.74 Sys=0.15 + e+ / e- : User=4.95 Real=5.14 Sys=0.19 Region - All particles : User=15.53 Real=15.71 Sys=0.18 - e+ / e- : User=9.3 Real=9.38 Sys=0.08 + All particles : User=5.91 Real=5.94 Sys=0.03 + e+ / e- : User=2.95 Real=2.96 Sys=0.01 /run/dumpCouples diff --git a/examples/novice/N07/include/ExN07DetectorConstruction.hh b/examples/novice/N07/include/ExN07DetectorConstruction.hh index b8331ada68..6aaac0720f 100644 --- a/examples/novice/N07/include/ExN07DetectorConstruction.hh +++ b/examples/novice/N07/include/ExN07DetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN07DetectorConstruction.hh,v 1.5 2006/06/29 17:54:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N07/include/ExN07DetectorMessenger.hh b/examples/novice/N07/include/ExN07DetectorMessenger.hh index 23612b56e0..8bd4176f1d 100644 --- a/examples/novice/N07/include/ExN07DetectorMessenger.hh +++ b/examples/novice/N07/include/ExN07DetectorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: ExN07DetectorMessenger.hh,v 1.6 2006/06/29 17:54:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN07DetectorMessenger_h diff --git a/examples/novice/N07/include/ExN07ParallelWorld.hh b/examples/novice/N07/include/ExN07ParallelWorld.hh index 3432153c29..bcfb92cd53 100644 --- a/examples/novice/N07/include/ExN07ParallelWorld.hh +++ b/examples/novice/N07/include/ExN07ParallelWorld.hh @@ -25,7 +25,7 @@ // // // $Id: ExN07ParallelWorld.hh,v 1.1 2007/05/04 01:49:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N07/include/ExN07PhysicsList.hh b/examples/novice/N07/include/ExN07PhysicsList.hh index 588ea4c6bc..b545f7b151 100644 --- a/examples/novice/N07/include/ExN07PhysicsList.hh +++ b/examples/novice/N07/include/ExN07PhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: ExN07PhysicsList.hh,v 1.4 2007/05/04 01:49:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN07PhysicsList_h diff --git a/examples/novice/N07/include/ExN07PrimaryGeneratorAction.hh b/examples/novice/N07/include/ExN07PrimaryGeneratorAction.hh index 478ce7dd87..13c66055bc 100644 --- a/examples/novice/N07/include/ExN07PrimaryGeneratorAction.hh +++ b/examples/novice/N07/include/ExN07PrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN07PrimaryGeneratorAction.hh,v 1.3 2006/06/29 17:54:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN07PrimaryGeneratorAction_h diff --git a/examples/novice/N07/include/ExN07Run.hh b/examples/novice/N07/include/ExN07Run.hh index 84f9778198..2d6f570e1e 100644 --- a/examples/novice/N07/include/ExN07Run.hh +++ b/examples/novice/N07/include/ExN07Run.hh @@ -25,7 +25,7 @@ // // // $Id: ExN07Run.hh,v 1.6 2007/05/04 01:49:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN07Run_h diff --git a/examples/novice/N07/include/ExN07RunAction.hh b/examples/novice/N07/include/ExN07RunAction.hh index 4dcd3eabfd..8abb36a365 100644 --- a/examples/novice/N07/include/ExN07RunAction.hh +++ b/examples/novice/N07/include/ExN07RunAction.hh @@ -25,7 +25,7 @@ // // // $Id: ExN07RunAction.hh,v 1.4 2006/11/04 19:23:07 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef ExN07RunAction_h diff --git a/examples/novice/N07/include/ExN07SteppingVerbose.hh b/examples/novice/N07/include/ExN07SteppingVerbose.hh index eaa6437b2a..c582541f65 100644 --- a/examples/novice/N07/include/ExN07SteppingVerbose.hh +++ b/examples/novice/N07/include/ExN07SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: ExN07SteppingVerbose.hh,v 1.1 2006/11/04 19:23:07 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N07/src/ExN07DetectorConstruction.cc b/examples/novice/N07/src/ExN07DetectorConstruction.cc index ae704e02f7..f2c3b2694b 100644 --- a/examples/novice/N07/src/ExN07DetectorConstruction.cc +++ b/examples/novice/N07/src/ExN07DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN07DetectorConstruction.cc,v 1.8 2007/05/04 01:49:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N07/src/ExN07DetectorMessenger.cc b/examples/novice/N07/src/ExN07DetectorMessenger.cc index 0ca1b14db5..1d12fd047e 100644 --- a/examples/novice/N07/src/ExN07DetectorMessenger.cc +++ b/examples/novice/N07/src/ExN07DetectorMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: ExN07DetectorMessenger.cc,v 1.6 2006/06/29 17:54:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN07DetectorMessenger.hh" diff --git a/examples/novice/N07/src/ExN07ParallelWorld.cc b/examples/novice/N07/src/ExN07ParallelWorld.cc index b805e8432b..14c1e28971 100644 --- a/examples/novice/N07/src/ExN07ParallelWorld.cc +++ b/examples/novice/N07/src/ExN07ParallelWorld.cc @@ -25,7 +25,7 @@ // // // $Id: ExN07ParallelWorld.cc,v 1.1 2007/05/04 01:49:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/examples/novice/N07/src/ExN07PhysicsList.cc b/examples/novice/N07/src/ExN07PhysicsList.cc index c5eafafc19..fbbc4207b3 100644 --- a/examples/novice/N07/src/ExN07PhysicsList.cc +++ b/examples/novice/N07/src/ExN07PhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: ExN07PhysicsList.cc,v 1.7 2007/05/04 01:49:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN07PhysicsList.hh" diff --git a/examples/novice/N07/src/ExN07PrimaryGeneratorAction.cc b/examples/novice/N07/src/ExN07PrimaryGeneratorAction.cc index f6c8b5fd75..2aaae877e0 100644 --- a/examples/novice/N07/src/ExN07PrimaryGeneratorAction.cc +++ b/examples/novice/N07/src/ExN07PrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN07PrimaryGeneratorAction.cc,v 1.3 2006/06/29 17:55:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN07PrimaryGeneratorAction.hh" diff --git a/examples/novice/N07/src/ExN07Run.cc b/examples/novice/N07/src/ExN07Run.cc index 91dc1d7bef..3cc218da1d 100644 --- a/examples/novice/N07/src/ExN07Run.cc +++ b/examples/novice/N07/src/ExN07Run.cc @@ -25,7 +25,7 @@ // // // $Id: ExN07Run.cc,v 1.6 2007/05/04 01:49:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN07Run.hh" diff --git a/examples/novice/N07/src/ExN07RunAction.cc b/examples/novice/N07/src/ExN07RunAction.cc index dc0e6e3a12..992674c959 100644 --- a/examples/novice/N07/src/ExN07RunAction.cc +++ b/examples/novice/N07/src/ExN07RunAction.cc @@ -25,7 +25,7 @@ // // // $Id: ExN07RunAction.cc,v 1.7 2007/05/04 01:49:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN07RunAction.hh" diff --git a/examples/novice/N07/src/ExN07SteppingVerbose.cc b/examples/novice/N07/src/ExN07SteppingVerbose.cc index 70ead3c057..55bbeed72b 100644 --- a/examples/novice/N07/src/ExN07SteppingVerbose.cc +++ b/examples/novice/N07/src/ExN07SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: ExN07SteppingVerbose.cc,v 1.1 2006/11/04 19:23:07 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "ExN07SteppingVerbose.hh" diff --git a/source/GNUmakefile b/source/GNUmakefile index 2a84b2077d..4ab0ecdbdd 100644 --- a/source/GNUmakefile +++ b/source/GNUmakefile @@ -149,7 +149,7 @@ endif banner: @$(ECHO) "*************************************************************" - @$(ECHO) " Installation Geant4 version $$Name: geant4-09-00 $ " + @$(ECHO) " Installation Geant4 version $$Name: geant4-09-01 $ " @$(ECHO) " Copyright (C) 1994-2007 Geant4 Collaboration " @$(ECHO) "*************************************************************" diff --git a/source/digits_hits/GNUmakefile b/source/digits_hits/GNUmakefile index 921d853137..a8aeae5b6d 100644 --- a/source/digits_hits/GNUmakefile +++ b/source/digits_hits/GNUmakefile @@ -1,15 +1,16 @@ -# $Id: GNUmakefile,v 1.4 2005/11/16 22:59:01 asaim Exp $ +# $Id: GNUmakefile,v 1.6 2007/12/11 13:26:13 gcosmo Exp $ # -------------------------------------------------------------- # GNUmakefile for digits+hits library. Makoto Asai, 1/11/96. # -------------------------------------------------------------- name := G4digits_hits -SUBDIRS := detector hits digits utils -SUBLIBS = G4detector G4digits G4hits G4detutils +SUBDIRS := detector hits digits utils scorer +SUBLIBS = G4detector G4digits G4hits G4detutils G4detscorer GLOBLIBS = libG4track.lib libG4particles.lib libG4geometry.lib -GLOBLIBS += libG4materials.lib libG4intercoms.lib libG4global.lib +GLOBLIBS += libG4materials.lib libG4graphics_reps.lib libG4intercoms.lib +GLOBLIBS += libG4global.lib ifndef G4INSTALL G4INSTALL = ../.. diff --git a/source/digits_hits/History b/source/digits_hits/History index 56c8dc3448..18f0050aed 100644 --- a/source/digits_hits/History +++ b/source/digits_hits/History @@ -1,4 +1,4 @@ -$Id: History,v 1.25 2007/06/05 16:46:55 ahoward Exp $ +$Id: History,v 1.32 2007/12/11 13:26:13 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,30 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Dec 11, 2007, G.Cosmo (digits_hits-V09-00-05) +- Added "graphics_reps" to GLOBLIBS list to allow for building DLLs on + WIN32-VC platform. +- Changes for disclaimer and std namespace. + +Nov 14, 2007, M.Asai (digits_hits-V09-00-04) +- Minor corrections and fixes. + +Nov 09, 2007, M.Asai (digits_hits-V09-00-03) +- Introducing Command-base scoring mechanism. This is a preliminary release + with Geant4 9.1. This time, shape of scoring cell is limited to box. + +Sep 24, 2007, M.Asai (digits_hits-V09-00-02) +- Introducing 3D scorers to be used in command-base scoring. + +Aug 30, 2007, M.Asai (digits_hits-V09-00-01) +- First implementation of interactive parallel world scoring. +- Co-working with run-V09-00-01, procman-V09-00-00, config-V09-00-00 + +July 11, 2007, M.Asai (digits_hits-V09-00-00) +- Create new sub-directory "scorer" and move all scorer and filter classes + to this new directory. "utils" sub-directory will be used for interactive + scoring utilities. + June 4, 2007, A.Howard (digits_hits-V08-03-04) - Removed G4PSPopulation class to obviate circular dependency diff --git a/source/digits_hits/detector/include/G4CellScoreComposer.hh b/source/digits_hits/detector/include/G4CellScoreComposer.hh index 351730870c..77baa092c5 100644 --- a/source/digits_hits/detector/include/G4CellScoreComposer.hh +++ b/source/digits_hits/detector/include/G4CellScoreComposer.hh @@ -25,7 +25,7 @@ // // // $Id: G4CellScoreComposer.hh,v 1.2 2006/06/29 18:05:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4CellScoreComposer diff --git a/source/digits_hits/detector/include/G4CellScoreValues.hh b/source/digits_hits/detector/include/G4CellScoreValues.hh index 9ee92d41ec..e4d6796eae 100644 --- a/source/digits_hits/detector/include/G4CellScoreValues.hh +++ b/source/digits_hits/detector/include/G4CellScoreValues.hh @@ -25,7 +25,7 @@ // // // $Id: G4CellScoreValues.hh,v 1.2 2006/06/29 18:05:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4CellScoreValues diff --git a/source/digits_hits/detector/include/G4CollectionNameVector.hh b/source/digits_hits/detector/include/G4CollectionNameVector.hh index 4f658fa1a2..87061b1c29 100644 --- a/source/digits_hits/detector/include/G4CollectionNameVector.hh +++ b/source/digits_hits/detector/include/G4CollectionNameVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4CollectionNameVector.hh,v 1.2 2006/06/29 18:05:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4CollectionNameVector_H diff --git a/source/digits_hits/detector/include/G4HCtable.hh b/source/digits_hits/detector/include/G4HCtable.hh index 97e830d7bf..5f8e9cdd58 100644 --- a/source/digits_hits/detector/include/G4HCtable.hh +++ b/source/digits_hits/detector/include/G4HCtable.hh @@ -25,7 +25,7 @@ // // // $Id: G4HCtable.hh,v 1.3 2006/06/29 18:05:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4HCtable_H diff --git a/source/digits_hits/detector/include/G4MultiFunctionalDetector.hh b/source/digits_hits/detector/include/G4MultiFunctionalDetector.hh index 1b20f4279d..460af51a61 100644 --- a/source/digits_hits/detector/include/G4MultiFunctionalDetector.hh +++ b/source/digits_hits/detector/include/G4MultiFunctionalDetector.hh @@ -25,7 +25,7 @@ // // // $Id: G4MultiFunctionalDetector.hh,v 1.3 2006/06/29 18:05:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4MultiFunctionalDetector_h diff --git a/source/digits_hits/detector/include/G4SDManager.hh b/source/digits_hits/detector/include/G4SDManager.hh index 10af60289a..de591a38d4 100644 --- a/source/digits_hits/detector/include/G4SDManager.hh +++ b/source/digits_hits/detector/include/G4SDManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4SDManager.hh,v 1.4 2006/06/29 18:05:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4SDManager_h diff --git a/source/digits_hits/detector/include/G4SDStructure.hh b/source/digits_hits/detector/include/G4SDStructure.hh index 7c90472b37..fb7e2794a3 100644 --- a/source/digits_hits/detector/include/G4SDStructure.hh +++ b/source/digits_hits/detector/include/G4SDStructure.hh @@ -25,7 +25,7 @@ // // // $Id: G4SDStructure.hh,v 1.3 2006/06/29 18:05:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4SDStructure_h diff --git a/source/digits_hits/detector/include/G4SDmessenger.hh b/source/digits_hits/detector/include/G4SDmessenger.hh index 6b9376ec95..ea3880431d 100644 --- a/source/digits_hits/detector/include/G4SDmessenger.hh +++ b/source/digits_hits/detector/include/G4SDmessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4SDmessenger.hh,v 1.2 2006/06/29 18:05:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4SDmessenger_h diff --git a/source/digits_hits/detector/include/G4SensitiveVolumeList.hh b/source/digits_hits/detector/include/G4SensitiveVolumeList.hh index 2aa43d22ad..67ab6151c0 100644 --- a/source/digits_hits/detector/include/G4SensitiveVolumeList.hh +++ b/source/digits_hits/detector/include/G4SensitiveVolumeList.hh @@ -25,7 +25,7 @@ // // // $Id: G4SensitiveVolumeList.hh,v 1.2 2006/06/29 18:05:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1996 diff --git a/source/digits_hits/detector/include/G4SensitiveVolumeList.icc b/source/digits_hits/detector/include/G4SensitiveVolumeList.icc index c6efd30c8e..a060adf4b7 100644 --- a/source/digits_hits/detector/include/G4SensitiveVolumeList.icc +++ b/source/digits_hits/detector/include/G4SensitiveVolumeList.icc @@ -25,7 +25,7 @@ // // // $Id: G4SensitiveVolumeList.icc,v 1.2 2006/06/29 18:05:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------- // Inline functions of GEANT 4 class header file. diff --git a/source/digits_hits/detector/include/G4TrackLogger.hh b/source/digits_hits/detector/include/G4TrackLogger.hh index 48d7e8c225..a4a962925a 100644 --- a/source/digits_hits/detector/include/G4TrackLogger.hh +++ b/source/digits_hits/detector/include/G4TrackLogger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrackLogger.hh,v 1.2 2006/06/29 18:05:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4TrackLogger diff --git a/source/digits_hits/detector/include/G4VPrimitiveScorer.hh b/source/digits_hits/detector/include/G4VPrimitiveScorer.hh index 72090b11f7..690c97397e 100644 --- a/source/digits_hits/detector/include/G4VPrimitiveScorer.hh +++ b/source/digits_hits/detector/include/G4VPrimitiveScorer.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VPrimitiveScorer.hh,v 1.2 2006/06/29 18:05:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VPrimitiveScorer.hh,v 1.3 2007/08/28 07:51:45 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VPrimitiveScorer_h @@ -109,6 +109,11 @@ class G4VPrimitiveScorer return ProcessHits(aStep,ROhis); } + protected: + G4int fNi, fNj, fNk; // used for 3D scorers + public: + inline void SetNijk(G4int i,G4int j,G4int k) + { fNi = i; fNj = j; fNk = k; } }; diff --git a/source/digits_hits/detector/include/G4VReadOutGeometry.hh b/source/digits_hits/detector/include/G4VReadOutGeometry.hh index cab408b1bb..a53e7e7720 100644 --- a/source/digits_hits/detector/include/G4VReadOutGeometry.hh +++ b/source/digits_hits/detector/include/G4VReadOutGeometry.hh @@ -25,7 +25,7 @@ // // // $Id: G4VReadOutGeometry.hh,v 1.2 2006/06/29 18:05:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ diff --git a/source/digits_hits/detector/include/G4VSDFilter.hh b/source/digits_hits/detector/include/G4VSDFilter.hh index 68790d04da..f35c084196 100644 --- a/source/digits_hits/detector/include/G4VSDFilter.hh +++ b/source/digits_hits/detector/include/G4VSDFilter.hh @@ -25,7 +25,7 @@ // // // $Id: G4VSDFilter.hh,v 1.2 2006/06/29 18:05:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VSDFilter_h diff --git a/source/digits_hits/detector/include/G4VSensitiveDetector.hh b/source/digits_hits/detector/include/G4VSensitiveDetector.hh index 5468a9b7c8..af2e456945 100644 --- a/source/digits_hits/detector/include/G4VSensitiveDetector.hh +++ b/source/digits_hits/detector/include/G4VSensitiveDetector.hh @@ -25,7 +25,7 @@ // // // $Id: G4VSensitiveDetector.hh,v 1.4 2006/06/29 18:05:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VSensitiveDetector_h diff --git a/source/digits_hits/detector/src/G4CellScoreComposer.cc b/source/digits_hits/detector/src/G4CellScoreComposer.cc index 70bfb3fda2..a83708177c 100644 --- a/source/digits_hits/detector/src/G4CellScoreComposer.cc +++ b/source/digits_hits/detector/src/G4CellScoreComposer.cc @@ -25,7 +25,7 @@ // // // $Id: G4CellScoreComposer.cc,v 1.3 2006/06/29 18:05:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/digits_hits/detector/src/G4HCtable.cc b/source/digits_hits/detector/src/G4HCtable.cc index 373c31d2fe..7700a2105c 100644 --- a/source/digits_hits/detector/src/G4HCtable.cc +++ b/source/digits_hits/detector/src/G4HCtable.cc @@ -25,7 +25,7 @@ // // // $Id: G4HCtable.cc,v 1.4 2006/06/29 18:05:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4HCtable.hh" diff --git a/source/digits_hits/detector/src/G4MultiFunctionalDetector.cc b/source/digits_hits/detector/src/G4MultiFunctionalDetector.cc index 3115cdfaed..1064901d92 100644 --- a/source/digits_hits/detector/src/G4MultiFunctionalDetector.cc +++ b/source/digits_hits/detector/src/G4MultiFunctionalDetector.cc @@ -25,7 +25,7 @@ // // // $Id: G4MultiFunctionalDetector.cc,v 1.4 2006/06/29 18:05:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4MultiFunctionalDetector #include "G4MultiFunctionalDetector.hh" diff --git a/source/digits_hits/detector/src/G4SDManager.cc b/source/digits_hits/detector/src/G4SDManager.cc index df02a8786c..d3560a50ea 100644 --- a/source/digits_hits/detector/src/G4SDManager.cc +++ b/source/digits_hits/detector/src/G4SDManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4SDManager.cc,v 1.4 2006/06/29 18:05:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4SDManager.hh" diff --git a/source/digits_hits/detector/src/G4SDStructure.cc b/source/digits_hits/detector/src/G4SDStructure.cc index 7522a5b94a..38c9cdd70d 100644 --- a/source/digits_hits/detector/src/G4SDStructure.cc +++ b/source/digits_hits/detector/src/G4SDStructure.cc @@ -25,7 +25,7 @@ // // // $Id: G4SDStructure.cc,v 1.3 2006/06/29 18:05:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4SDStructure diff --git a/source/digits_hits/detector/src/G4SDmessenger.cc b/source/digits_hits/detector/src/G4SDmessenger.cc index 20e2b2857d..0fb081e83b 100644 --- a/source/digits_hits/detector/src/G4SDmessenger.cc +++ b/source/digits_hits/detector/src/G4SDmessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4SDmessenger.cc,v 1.2 2006/06/29 18:05:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // --------------------------------------------------------------------- diff --git a/source/digits_hits/detector/src/G4SensitiveVolumeList.cc b/source/digits_hits/detector/src/G4SensitiveVolumeList.cc index 2724f21862..49560650a2 100644 --- a/source/digits_hits/detector/src/G4SensitiveVolumeList.cc +++ b/source/digits_hits/detector/src/G4SensitiveVolumeList.cc @@ -25,7 +25,7 @@ // // // $Id: G4SensitiveVolumeList.cc,v 1.2 2006/06/29 18:05:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/digits_hits/detector/src/G4TrackLogger.cc b/source/digits_hits/detector/src/G4TrackLogger.cc index 17767a6deb..56ef320d42 100644 --- a/source/digits_hits/detector/src/G4TrackLogger.cc +++ b/source/digits_hits/detector/src/G4TrackLogger.cc @@ -25,7 +25,7 @@ // // // $Id: G4TrackLogger.cc,v 1.3 2006/06/29 18:06:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/digits_hits/detector/src/G4VPrimitiveScorer.cc b/source/digits_hits/detector/src/G4VPrimitiveScorer.cc index 6a1dbf13c2..f6931ce203 100644 --- a/source/digits_hits/detector/src/G4VPrimitiveScorer.cc +++ b/source/digits_hits/detector/src/G4VPrimitiveScorer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VPrimitiveScorer.cc,v 1.2 2006/06/29 18:06:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VPrimitiveScorer #include "G4VPrimitiveScorer.hh" diff --git a/source/digits_hits/detector/src/G4VReadOutGeometry.cc b/source/digits_hits/detector/src/G4VReadOutGeometry.cc index 2a6a819120..193ec11f43 100644 --- a/source/digits_hits/detector/src/G4VReadOutGeometry.cc +++ b/source/digits_hits/detector/src/G4VReadOutGeometry.cc @@ -25,7 +25,7 @@ // // // $Id: G4VReadOutGeometry.cc,v 1.2 2006/06/29 18:06:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4VReadOutGeometry.hh" diff --git a/source/digits_hits/detector/src/G4VSDFilter.cc b/source/digits_hits/detector/src/G4VSDFilter.cc index 51b977b590..e7662ee688 100644 --- a/source/digits_hits/detector/src/G4VSDFilter.cc +++ b/source/digits_hits/detector/src/G4VSDFilter.cc @@ -25,7 +25,7 @@ // // // $Id: G4VSDFilter.cc,v 1.2 2006/06/29 18:06:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VSensitiveDetector #include "G4VSDFilter.hh" diff --git a/source/digits_hits/detector/src/G4VSensitiveDetector.cc b/source/digits_hits/detector/src/G4VSensitiveDetector.cc index 2e5b44a13d..cd4c42e4d4 100644 --- a/source/digits_hits/detector/src/G4VSensitiveDetector.cc +++ b/source/digits_hits/detector/src/G4VSensitiveDetector.cc @@ -25,7 +25,7 @@ // // // $Id: G4VSensitiveDetector.cc,v 1.3 2006/06/29 18:06:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VSensitiveDetector #include "G4VSensitiveDetector.hh" diff --git a/source/digits_hits/digits/include/G4DCofThisEvent.hh b/source/digits_hits/digits/include/G4DCofThisEvent.hh index c54e1bcf88..2f250b7693 100644 --- a/source/digits_hits/digits/include/G4DCofThisEvent.hh +++ b/source/digits_hits/digits/include/G4DCofThisEvent.hh @@ -25,7 +25,7 @@ // // // $Id: G4DCofThisEvent.hh,v 1.5 2006/06/29 18:06:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4DCofThisEvent_h diff --git a/source/digits_hits/digits/include/G4TDigiCollection.hh b/source/digits_hits/digits/include/G4TDigiCollection.hh index 92bc036d75..275918b808 100644 --- a/source/digits_hits/digits/include/G4TDigiCollection.hh +++ b/source/digits_hits/digits/include/G4TDigiCollection.hh @@ -25,7 +25,7 @@ // // // $Id: G4TDigiCollection.hh,v 1.6 2006/06/29 18:06:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4TDigiCollection_h diff --git a/source/digits_hits/digits/include/G4VDigi.hh b/source/digits_hits/digits/include/G4VDigi.hh index 0f14ac4ba6..0edd656254 100644 --- a/source/digits_hits/digits/include/G4VDigi.hh +++ b/source/digits_hits/digits/include/G4VDigi.hh @@ -25,7 +25,7 @@ // // // $Id: G4VDigi.hh,v 1.4 2006/06/29 18:06:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VDigi_h diff --git a/source/digits_hits/digits/include/G4VDigiCollection.hh b/source/digits_hits/digits/include/G4VDigiCollection.hh index e0b719ea31..847c8beb5e 100644 --- a/source/digits_hits/digits/include/G4VDigiCollection.hh +++ b/source/digits_hits/digits/include/G4VDigiCollection.hh @@ -25,7 +25,7 @@ // // // $Id: G4VDigiCollection.hh,v 1.3 2006/06/29 18:06:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VDigiCollection_h diff --git a/source/digits_hits/digits/src/G4DCofThisEvent.cc b/source/digits_hits/digits/src/G4DCofThisEvent.cc index 91716584a1..2abc7f34ed 100644 --- a/source/digits_hits/digits/src/G4DCofThisEvent.cc +++ b/source/digits_hits/digits/src/G4DCofThisEvent.cc @@ -25,7 +25,7 @@ // // // $Id: G4DCofThisEvent.cc,v 1.4 2006/06/29 18:06:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4DCofThisEvent.hh" diff --git a/source/digits_hits/digits/src/G4TDigiCollection.cc b/source/digits_hits/digits/src/G4TDigiCollection.cc index f64afb4c12..276f19bf58 100644 --- a/source/digits_hits/digits/src/G4TDigiCollection.cc +++ b/source/digits_hits/digits/src/G4TDigiCollection.cc @@ -25,7 +25,7 @@ // // // $Id: G4TDigiCollection.cc,v 1.4 2006/06/29 18:06:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4TDigiCollection.hh" diff --git a/source/digits_hits/digits/src/G4VDigi.cc b/source/digits_hits/digits/src/G4VDigi.cc index a96b222677..de689271d3 100644 --- a/source/digits_hits/digits/src/G4VDigi.cc +++ b/source/digits_hits/digits/src/G4VDigi.cc @@ -25,7 +25,7 @@ // // // $Id: G4VDigi.cc,v 1.2 2006/06/29 18:06:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VDigi diff --git a/source/digits_hits/digits/src/G4VDigiCollection.cc b/source/digits_hits/digits/src/G4VDigiCollection.cc index 88408c4524..aae06d0d2e 100644 --- a/source/digits_hits/digits/src/G4VDigiCollection.cc +++ b/source/digits_hits/digits/src/G4VDigiCollection.cc @@ -25,7 +25,7 @@ // // // $Id: G4VDigiCollection.cc,v 1.2 2006/06/29 18:06:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VDigiCollection diff --git a/source/digits_hits/hits/include/G4HCofThisEvent.hh b/source/digits_hits/hits/include/G4HCofThisEvent.hh index 670c12327b..77327accfb 100644 --- a/source/digits_hits/hits/include/G4HCofThisEvent.hh +++ b/source/digits_hits/hits/include/G4HCofThisEvent.hh @@ -25,7 +25,7 @@ // // // $Id: G4HCofThisEvent.hh,v 1.5 2006/06/29 18:06:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4HCofThisEvent_h diff --git a/source/digits_hits/hits/include/G4THitsCollection.hh b/source/digits_hits/hits/include/G4THitsCollection.hh index 2ebb951835..256e8ea995 100644 --- a/source/digits_hits/hits/include/G4THitsCollection.hh +++ b/source/digits_hits/hits/include/G4THitsCollection.hh @@ -25,7 +25,7 @@ // // // $Id: G4THitsCollection.hh,v 1.5 2006/06/29 18:06:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4THitsCollection_h diff --git a/source/digits_hits/hits/include/G4THitsMap.hh b/source/digits_hits/hits/include/G4THitsMap.hh index c2941db158..2a9501e3cf 100644 --- a/source/digits_hits/hits/include/G4THitsMap.hh +++ b/source/digits_hits/hits/include/G4THitsMap.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4THitsMap.hh,v 1.6 2006/06/29 18:06:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4THitsMap.hh,v 1.9 2007/08/30 05:13:03 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4THitsMap_h #define G4THitsMap_h 1 @@ -192,7 +192,17 @@ template void G4THitsMap::DrawAllHits() {;} template void G4THitsMap::PrintAllHits() -{;} +{ + G4cout << "G4THitsMap " << SDname << " / " << collectionName << " --- " << entries() << " entries" << G4endl; + std::map * theHitsMap = GetMap(); + typename std::map::iterator itr = theHitsMap->begin(); + G4double sum = 0.; + for(; itr != theHitsMap->end(); itr++) { + ///////////////////////////////G4cout << " " << itr->first << " : " << *(itr->second) << G4endl; + sum += *(itr->second); + } + G4cout << " Total : " << sum << G4endl; +} template void G4THitsMap::clear() { diff --git a/source/digits_hits/hits/include/G4VHit.hh b/source/digits_hits/hits/include/G4VHit.hh index c731f2e397..4ba75ec68e 100644 --- a/source/digits_hits/hits/include/G4VHit.hh +++ b/source/digits_hits/hits/include/G4VHit.hh @@ -25,7 +25,7 @@ // // // $Id: G4VHit.hh,v 1.3 2006/06/29 18:06:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VHit_h diff --git a/source/digits_hits/hits/include/G4VHitsCollection.hh b/source/digits_hits/hits/include/G4VHitsCollection.hh index f8b579859b..38ce7d3704 100644 --- a/source/digits_hits/hits/include/G4VHitsCollection.hh +++ b/source/digits_hits/hits/include/G4VHitsCollection.hh @@ -25,7 +25,7 @@ // // // $Id: G4VHitsCollection.hh,v 1.2 2006/06/29 18:06:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VHitsCollection_h diff --git a/source/digits_hits/hits/src/G4HCofThisEvent.cc b/source/digits_hits/hits/src/G4HCofThisEvent.cc index 8afffc7240..be058f41af 100644 --- a/source/digits_hits/hits/src/G4HCofThisEvent.cc +++ b/source/digits_hits/hits/src/G4HCofThisEvent.cc @@ -25,7 +25,7 @@ // // // $Id: G4HCofThisEvent.cc,v 1.4 2006/06/29 18:06:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4HCofThisEvent.hh" diff --git a/source/digits_hits/hits/src/G4THitsCollection.cc b/source/digits_hits/hits/src/G4THitsCollection.cc index d405514c56..aa932596fc 100644 --- a/source/digits_hits/hits/src/G4THitsCollection.cc +++ b/source/digits_hits/hits/src/G4THitsCollection.cc @@ -25,7 +25,7 @@ // // // $Id: G4THitsCollection.cc,v 1.4 2006/06/29 18:06:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4THitsCollection.hh" diff --git a/source/digits_hits/hits/src/G4VHit.cc b/source/digits_hits/hits/src/G4VHit.cc index 45a188d6cc..fec3d25608 100644 --- a/source/digits_hits/hits/src/G4VHit.cc +++ b/source/digits_hits/hits/src/G4VHit.cc @@ -25,7 +25,7 @@ // // // $Id: G4VHit.cc,v 1.2 2006/06/29 18:06:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VHit diff --git a/source/digits_hits/hits/src/G4VHitsCollection.cc b/source/digits_hits/hits/src/G4VHitsCollection.cc index c30356c841..39f4cbb9ae 100644 --- a/source/digits_hits/hits/src/G4VHitsCollection.cc +++ b/source/digits_hits/hits/src/G4VHitsCollection.cc @@ -25,7 +25,7 @@ // // // $Id: G4VHitsCollection.cc,v 1.2 2006/06/29 18:06:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VHitsCollection diff --git a/source/digits_hits/scorer/GNUmakefile b/source/digits_hits/scorer/GNUmakefile new file mode 100644 index 0000000000..0f43ee759d --- /dev/null +++ b/source/digits_hits/scorer/GNUmakefile @@ -0,0 +1,32 @@ +# $Id: GNUmakefile,v 1.1 2007/07/11 01:27:26 asaim Exp $ +# -------------------------------------------------------------- +# GNUmakefile for digits+hits library. Makoto Asai, 1/11/96. +# -------------------------------------------------------------- + +name := G4detscorer + +ifndef G4INSTALL + G4INSTALL = ../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +CPPFLAGS += -DG4DIGI_ALLOC_EXPORT +CPPFLAGS += \ + -I$(G4BASE)/global/HEPRandom/include \ + -I$(G4BASE)/global/management/include \ + -I$(G4BASE)/global/HEPGeometry/include \ + -I$(G4BASE)/track/include \ + -I$(G4BASE)/particles/management/include \ + -I$(G4BASE)/materials/include \ + -I$(G4BASE)/geometry/management/include \ + -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/navigation/include \ + -I$(G4BASE)/geometry/solids/CSG/include \ + -I$(G4BASE)/digits_hits/hits/include \ + -I$(G4BASE)/digits_hits/detector/include \ + -I$(G4BASE)/digits_hits/digits/include \ + -I$(G4BASE)/intercoms/include \ + +include $(G4INSTALL)/config/common.gmk + diff --git a/source/digits_hits/scorer/History b/source/digits_hits/scorer/History new file mode 100644 index 0000000000..b081a89893 --- /dev/null +++ b/source/digits_hits/scorer/History @@ -0,0 +1,42 @@ +$Id: History,v 1.1 2007/07/11 01:27:26 asaim Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + Category History file + --------------------- +This file should be used by G4 developers and category coordinators +to briefly summarize all major modifications introduced in the code +and keep track of all category-tags. +It DOES NOT substitute the CVS log-message one should put at every +committal in the CVS repository ! + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +July 11, 2007 M.Asai (detscorer-V09-00-00) +- Moved from digits_hits/utilis. + +June 06, 2007 A.Howard (detutils-V08-03-02) +- Added modified G4PSPopulation removing event (circular) dependency + (file form T.Aso). + +June 05, 2007 M.Asai (detutils-V08-03-01) +- Drop G4PSPopulation from the release. + +May 17, 2007 M.Asai (detutils-V08-03-00) +- New scorers for event biasing. +- kCarTolerance now becomes a local data member obtained from G4GeometryTolerance class. + +November 17, 2006 M.Asai (detutils-V08-01-00) +- G4PSCellCharge is introduced. + +November 18, 2005 M.Asai (detutils-V07-01-01) +- Introducing concrete primitive scorer and filter classes. + +November 16, 2005 M.Asai (detutils-V07-01-00) +- Created. + diff --git a/source/digits_hits/utils/include/G4PSCellCharge.hh b/source/digits_hits/scorer/include/G4PSCellCharge.hh old mode 100755 new mode 100644 similarity index 96% rename from source/digits_hits/utils/include/G4PSCellCharge.hh rename to source/digits_hits/scorer/include/G4PSCellCharge.hh index 40f060fbc2..573178eb8f --- a/source/digits_hits/utils/include/G4PSCellCharge.hh +++ b/source/digits_hits/scorer/include/G4PSCellCharge.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSCellCharge.hh,v 1.3 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSCellCharge.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSCellCharge_h diff --git a/source/digits_hits/scorer/include/G4PSCellCharge3D.hh b/source/digits_hits/scorer/include/G4PSCellCharge3D.hh new file mode 100644 index 0000000000..7c3d3926b1 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSCellCharge3D.hh @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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: G4PSCellCharge3D.hh,v 1.2 2007/08/28 08:01:55 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSCellCharge3D_h +#define G4PSCellCharge3D_h 1 + +#include "G4PSCellCharge.hh" +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring cell charge. +// The Cell Charge is defined by a sum of deposited charge in the cell. +// +// Created: 2007-08-20 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSCellCharge3D : public G4PSCellCharge +{ + public: // with description + G4PSCellCharge3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + + virtual ~G4PSCellCharge3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; + +}; +#endif + diff --git a/source/digits_hits/utils/include/G4PSCellFlux.hh b/source/digits_hits/scorer/include/G4PSCellFlux.hh similarity index 96% rename from source/digits_hits/utils/include/G4PSCellFlux.hh rename to source/digits_hits/scorer/include/G4PSCellFlux.hh index 722ba0713f..0dfef337fa 100644 --- a/source/digits_hits/utils/include/G4PSCellFlux.hh +++ b/source/digits_hits/scorer/include/G4PSCellFlux.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSCellFlux.hh,v 1.4 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSCellFlux.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSCellFlux_h diff --git a/examples/extended/medical/DICOM/include/DicomPatientConstructor.hh b/source/digits_hits/scorer/include/G4PSCellFlux3D.hh similarity index 59% rename from examples/extended/medical/DICOM/include/DicomPatientConstructor.hh rename to source/digits_hits/scorer/include/G4PSCellFlux3D.hh index 6bc94d4c53..73aa857a56 100644 --- a/examples/extended/medical/DICOM/include/DicomPatientConstructor.hh +++ b/source/digits_hits/scorer/include/G4PSCellFlux3D.hh @@ -23,45 +23,45 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca // +// $Id: G4PSCellFlux3D.hh,v 1.2 2007/08/28 08:01:55 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 -// -// + Université Laval, Québec (QC) Canada -//*******************************************************// -#ifndef DicomPatientConstructor_h -#define DicomPatientConstructor_h 1 -#include "globals.hh" +#ifndef G4PSCellFlux3D_h +#define G4PSCellFlux3D_h 1 -class DicomPatientConstructor +#include "G4PSCellFlux.hh" +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for 3D scoring cell flux. +// The Cell Flux is defined by a sum of track length divided +// by the geometry volume, where all of the tracks in the geometry +// are taken into account. e.g. the unit of Cell Flux is mm/mm3. +// +// +// If you want to score only tracks passing through the geometry volume, +// please use G4PSPassageCellFlux3D. +// +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSCellFlux3D : public G4PSCellFlux { -public: + public: // with description + G4PSCellFlux3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + virtual ~G4PSCellFlux3D(); - DicomPatientConstructor() {;} - ~DicomPatientConstructor() {;} + protected: // with description + virtual G4int GetIndex(G4Step*); - G4int FindingNbOfVoxels(G4double maxDensity, G4double minDensity); - - // Functions to use ROI (region of interest), contour usually drawn by the - // physician to identify tumor volume and organ at risk - // under development ... - // void readContour(); - //G4bool isWithin(G4double,G4double,G4double); - -private: - G4double pixelSpacingX; - G4double pixelSpacingY; - G4double sliceThickness; - G4double sliceLocation; - G4int lenc,lenr; + private: + G4int fDepthi, fDepthj, fDepthk; }; #endif + diff --git a/source/digits_hits/scorer/include/G4PSCylinderSurfaceCurrent.hh b/source/digits_hits/scorer/include/G4PSCylinderSurfaceCurrent.hh new file mode 100644 index 0000000000..53867d69e7 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSCylinderSurfaceCurrent.hh @@ -0,0 +1,92 @@ +// +// ******************************************************************** +// * 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: G4PSCylinderSurfaceCurrent.hh,v 1.1 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSCylinderSurfaceCurrent_h +#define G4PSCylinderSurfaceCurrent_h 1 + +#include "G4VPrimitiveScorer.hh" +#include "G4THitsMap.hh" + +#include "G4Tubs.hh" +#include "G4PSDirectionFlag.hh" +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Current. +// Current version assumes only for G4Tubs shape, and the surface +// is defined at the inner plane of the tubs. +// The current is given in the unit of area. +// e.g. (Number of tracks)/mm2. +// +// Surface is defined at the inner surface of the tube. +// Direction R R+dR +// 0 IN || OUT ->|<- | fCurrent_InOut +// 1 IN ->| | fCurrent_In +// 2 OUT |<- | fCurrent_Out +// +// +// Created: 2007-03-21 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +class G4PSCylinderSurfaceCurrent : public G4VPrimitiveScorer +{ + + public: // with description + G4PSCylinderSurfaceCurrent(G4String name ,G4int direction, G4int depth=0); + virtual ~G4PSCylinderSurfaceCurrent(); + + inline void Weighted(G4bool flg=true) { weighted = flg; } + // Multiply track weight + + inline void DivideByArea(G4bool flg=true) { divideByArea = flg; } + // Divided by Area. + + + protected: // with description + virtual G4bool ProcessHits(G4Step*,G4TouchableHistory*); + G4int IsSelectedSurface(G4Step*,G4Tubs*); + + public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void clear(); + virtual void DrawAll(); + virtual void PrintAll(); + + private: + G4int HCID; + G4int fDirection; + G4THitsMap* EvtMap; + G4bool weighted; + G4bool divideByArea; +}; + +#endif + diff --git a/source/digits_hits/scorer/include/G4PSCylinderSurfaceCurrent3D.hh b/source/digits_hits/scorer/include/G4PSCylinderSurfaceCurrent3D.hh new file mode 100644 index 0000000000..294ff05200 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSCylinderSurfaceCurrent3D.hh @@ -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: G4PSCylinderSurfaceCurrent3D.hh,v 1.2 2007/08/28 08:01:55 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSCylinderSurfaceCurrent3D_h +#define G4PSCylinderSurfaceCurrent3D_h 1 + +#include "G4PSCylinderSurfaceCurrent.hh" +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Current. +// Current version assumes only for G4Tubs shape, and the surface +// is defined at the Rmin plane of the Tubs. +// The current is given in the unit of area. +// e.g. (Number of tracks)/mm2. +// +// Surface is defined at the -Z surface. +// Direction Rmin Rmax +// 0 IN || OUT ->|<- | fCurrent_InOut +// 1 IN ->| | fCurrent_In +// 2 OUT |<- | fCurrent_Out +// +// +// Created: 2008-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSCylinderSurfaceCurrent3D : public G4PSCylinderSurfaceCurrent +{ + public: // with description + G4PSCylinderSurfaceCurrent3D(G4String name, G4int direction, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + virtual ~G4PSCylinderSurfaceCurrent3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; +}; +#endif + diff --git a/source/digits_hits/scorer/include/G4PSCylinderSurfaceFlux.hh b/source/digits_hits/scorer/include/G4PSCylinderSurfaceFlux.hh new file mode 100644 index 0000000000..c49b31ad41 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSCylinderSurfaceFlux.hh @@ -0,0 +1,83 @@ +// +// ******************************************************************** +// * 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: G4PSCylinderSurfaceFlux.hh,v 1.1 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSCylinderSurfaceFlux_h +#define G4PSCylinderSurfaceFlux_h 1 + +#include "G4VPrimitiveScorer.hh" +#include "G4THitsMap.hh" +#include "G4Tubs.hh" +#include "G4PSDirectionFlag.hh" +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Flux. +// Current version assumes only for G4Tubs shape, and the surface +// is defined at the inner plane of the tube. +// The surface flux is given in the unit of area. +// e.g. sum of 1/cos(T)/mm2, where T is a incident angle of the +// track on the surface. +// +// +// Surface is defined at the inner surface of the tubs. +// Direction R R+dR +// 0 IN || OUT ->|<- | fFlux_InOut +// 1 IN ->| | fFlux_In +// 2 OUT |<- | fFlux_Out +// +// Created: 2007-03-29 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +class G4PSCylinderSurfaceFlux : public G4VPrimitiveScorer +{ + public: // with description + G4PSCylinderSurfaceFlux(G4String name,G4int direction, G4int depth=0); + virtual ~G4PSCylinderSurfaceFlux(); + + protected: // with description + virtual G4bool ProcessHits(G4Step*,G4TouchableHistory*); + G4int IsSelectedSurface(G4Step*,G4Tubs*); + + public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void clear(); + virtual void DrawAll(); + virtual void PrintAll(); + + private: + G4int HCID; + G4int fDirection; + G4THitsMap* EvtMap; + +}; + +#endif + diff --git a/source/digits_hits/scorer/include/G4PSCylinderSurfaceFlux3D.hh b/source/digits_hits/scorer/include/G4PSCylinderSurfaceFlux3D.hh new file mode 100644 index 0000000000..9cd9025889 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSCylinderSurfaceFlux3D.hh @@ -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: G4PSCylinderSurfaceFlux3D.hh,v 1.2 2007/08/28 08:01:55 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSCylinderSurfaceFlux3D_h +#define G4PSCylinderSurfaceFlux3D_h 1 + +#include "G4PSCylinderSurfaceFlux.hh" +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Flux. +// This Flux version assumes only for G4Tubs shape, and the surface +// is defined at the Rmin plane of the box. +// The current is given in the unit of area. +// e.g. (Number of tracks)/mm2. +// +// Surface is defined at the -Z surface. +// Direction Rmin Rmax +// 0 IN || OUT ->|<- | fFlux_InOut +// 1 IN ->| | fFlux_In +// 2 OUT |<- | fFlux_Out +// +// +// Created: 2008-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSCylinderSurfaceFlux3D : public G4PSCylinderSurfaceFlux +{ + public: // with description + G4PSCylinderSurfaceFlux3D(G4String name, G4int direction, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int di=2, G4int dj=1, G4int dk=0); + virtual ~G4PSCylinderSurfaceFlux3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; +}; +#endif + diff --git a/source/digits_hits/utils/include/G4PSDirectionFlag.hh b/source/digits_hits/scorer/include/G4PSDirectionFlag.hh similarity index 96% rename from source/digits_hits/utils/include/G4PSDirectionFlag.hh rename to source/digits_hits/scorer/include/G4PSDirectionFlag.hh index 71c4b6f388..4bc0e2c6b8 100644 --- a/source/digits_hits/utils/include/G4PSDirectionFlag.hh +++ b/source/digits_hits/scorer/include/G4PSDirectionFlag.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSDirectionFlag.hh,v 1.3 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSDirectionFlag.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/digits_hits/utils/include/G4PSDoseDeposit.hh b/source/digits_hits/scorer/include/G4PSDoseDeposit.hh similarity index 96% rename from source/digits_hits/utils/include/G4PSDoseDeposit.hh rename to source/digits_hits/scorer/include/G4PSDoseDeposit.hh index b41eee3254..0e5a40c349 100644 --- a/source/digits_hits/utils/include/G4PSDoseDeposit.hh +++ b/source/digits_hits/scorer/include/G4PSDoseDeposit.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSDoseDeposit.hh,v 1.4 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSDoseDeposit.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSDoseDeposit_h diff --git a/source/digits_hits/scorer/include/G4PSDoseDeposit3D.hh b/source/digits_hits/scorer/include/G4PSDoseDeposit3D.hh new file mode 100644 index 0000000000..7e5ba5430d --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSDoseDeposit3D.hh @@ -0,0 +1,60 @@ +// +// ******************************************************************** +// * 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: G4PSDoseDeposit3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSDoseDeposit3D_h +#define G4PSDoseDeposit3D_h 1 + +#include "G4PSDoseDeposit.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// Primitive scorer class for scoring dose deposit in the geometry volume. +// +// Created: 2008-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +class G4PSDoseDeposit3D : public G4PSDoseDeposit +{ + public: // with description + G4PSDoseDeposit3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + + virtual ~G4PSDoseDeposit3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; + +}; +#endif diff --git a/source/digits_hits/utils/include/G4PSEnergyDeposit.hh b/source/digits_hits/scorer/include/G4PSEnergyDeposit.hh similarity index 96% rename from source/digits_hits/utils/include/G4PSEnergyDeposit.hh rename to source/digits_hits/scorer/include/G4PSEnergyDeposit.hh index d54be3f591..b2941cdbac 100644 --- a/source/digits_hits/utils/include/G4PSEnergyDeposit.hh +++ b/source/digits_hits/scorer/include/G4PSEnergyDeposit.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSEnergyDeposit.hh,v 1.3 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSEnergyDeposit.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSEnergyDeposit_h diff --git a/source/digits_hits/scorer/include/G4PSEnergyDeposit3D.hh b/source/digits_hits/scorer/include/G4PSEnergyDeposit3D.hh new file mode 100644 index 0000000000..2bcc62ade3 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSEnergyDeposit3D.hh @@ -0,0 +1,58 @@ +// +// ******************************************************************** +// * 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: G4PSEnergyDeposit3D.hh,v 1.2 2007/08/28 08:01:55 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSEnergyDeposit3D_h +#define G4PSEnergyDeposit3D_h 1 + +#include "G4PSEnergyDeposit.hh" +/////////////////////////////////////////////////////////////////////////////// +// Description: +// This is a primitive scorer class for 3D scoring energy deposit. +// +// Created: 2007-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSEnergyDeposit3D : public G4PSEnergyDeposit +{ + public: // with description + G4PSEnergyDeposit3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + virtual ~G4PSEnergyDeposit3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; +}; +#endif + diff --git a/source/digits_hits/utils/include/G4PSFlatSurfaceCurrent.hh b/source/digits_hits/scorer/include/G4PSFlatSurfaceCurrent.hh similarity index 88% rename from source/digits_hits/utils/include/G4PSFlatSurfaceCurrent.hh rename to source/digits_hits/scorer/include/G4PSFlatSurfaceCurrent.hh index 9a6e497b83..d78d493a63 100644 --- a/source/digits_hits/utils/include/G4PSFlatSurfaceCurrent.hh +++ b/source/digits_hits/scorer/include/G4PSFlatSurfaceCurrent.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSFlatSurfaceCurrent.hh,v 1.4 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSFlatSurfaceCurrent.hh,v 1.2 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSFlatSurfaceCurrent_h @@ -53,6 +53,7 @@ // // Created: 2005-11-14 Tsukasa ASO, Akinori Kimura. // 17-Nov-2005 T.Aso, Bug fix for area definition. +// 31-Mar-2007 T.Aso, Add option for normalizing by the area. // /////////////////////////////////////////////////////////////////////////////// @@ -63,6 +64,12 @@ class G4PSFlatSurfaceCurrent : public G4VPrimitiveScorer G4PSFlatSurfaceCurrent(G4String name ,G4int direction, G4int depth=0); virtual ~G4PSFlatSurfaceCurrent(); + // Scoring options + inline void Weighted(G4bool flg=true) { weighted = flg; } + // Multiply track weight + inline void DivideByArea(G4bool flg=true) { divideByArea = flg; } + // Divided By Area + protected: // with description virtual G4bool ProcessHits(G4Step*,G4TouchableHistory*); G4int IsSelectedSurface(G4Step*,G4Box*); @@ -78,6 +85,8 @@ class G4PSFlatSurfaceCurrent : public G4VPrimitiveScorer G4int HCID; G4int fDirection; G4THitsMap* EvtMap; + G4bool weighted; + G4bool divideByArea; }; diff --git a/source/digits_hits/scorer/include/G4PSFlatSurfaceCurrent3D.hh b/source/digits_hits/scorer/include/G4PSFlatSurfaceCurrent3D.hh new file mode 100644 index 0000000000..97543f25f1 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSFlatSurfaceCurrent3D.hh @@ -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: G4PSFlatSurfaceCurrent3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSFlatSurfaceCurrent3D_h +#define G4PSFlatSurfaceCurrent3D_h 1 + +#include "G4PSFlatSurfaceCurrent.hh" +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Current. +// Current version assumes only for G4Box shape, and the surface +// is defined at the -Z plane of the box. +// The current is given in the unit of area. +// e.g. (Number of tracks)/mm2. +// +// Surface is defined at the -Z surface. +// Direction -Z +Z +// 0 IN || OUT ->|<- | fCurrent_InOut +// 1 IN ->| | fCurrent_In +// 2 OUT |<- | fCurrent_Out +// +// +// Created: 2008-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSFlatSurfaceCurrent3D : public G4PSFlatSurfaceCurrent +{ + public: // with description + G4PSFlatSurfaceCurrent3D(G4String name, G4int direction, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + virtual ~G4PSFlatSurfaceCurrent3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; +}; +#endif + diff --git a/source/digits_hits/utils/include/G4PSFlatSurfaceFlux.hh b/source/digits_hits/scorer/include/G4PSFlatSurfaceFlux.hh similarity index 97% rename from source/digits_hits/utils/include/G4PSFlatSurfaceFlux.hh rename to source/digits_hits/scorer/include/G4PSFlatSurfaceFlux.hh index e87cd47d4a..74743abfb6 100644 --- a/source/digits_hits/utils/include/G4PSFlatSurfaceFlux.hh +++ b/source/digits_hits/scorer/include/G4PSFlatSurfaceFlux.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSFlatSurfaceFlux.hh,v 1.5 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSFlatSurfaceFlux.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSFlatSurfaceFlux_h diff --git a/source/digits_hits/scorer/include/G4PSFlatSurfaceFlux3D.hh b/source/digits_hits/scorer/include/G4PSFlatSurfaceFlux3D.hh new file mode 100644 index 0000000000..0dfa4364b1 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSFlatSurfaceFlux3D.hh @@ -0,0 +1,71 @@ +// +// ******************************************************************** +// * 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: G4PSFlatSurfaceFlux3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSFlatSurfaceFlux3D_h +#define G4PSFlatSurfaceFlux3D_h 1 + +#include "G4PSFlatSurfaceFlux.hh" +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Flux. +// Current version assumes only for G4Box shape, and the surface +// is defined at the -Z plane of the box. +// The surface flux is given in the unit of area. +// e.g. sum of 1/cos(T)/mm2, where T is a incident angle of the +// track on the surface. +// +// +// Surface is defined at the -Z surface. +// Direction -Z +Z +// 0 IN || OUT ->|<- | fFlux_InOut +// 1 IN ->| | fFlux_In +// 2 OUT |<- | fFlux_Out +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSFlatSurfaceFlux3D : public G4PSFlatSurfaceFlux +{ + public: // with description + G4PSFlatSurfaceFlux3D(G4String name, G4int direction, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + virtual ~G4PSFlatSurfaceFlux3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; +}; +#endif + diff --git a/source/digits_hits/utils/include/G4PSMinKinEAtGeneration.hh b/source/digits_hits/scorer/include/G4PSMinKinEAtGeneration.hh old mode 100755 new mode 100644 similarity index 90% rename from source/digits_hits/utils/include/G4PSMinKinEAtGeneration.hh rename to source/digits_hits/scorer/include/G4PSMinKinEAtGeneration.hh index 9d760347e0..049015cfb4 --- a/source/digits_hits/utils/include/G4PSMinKinEAtGeneration.hh +++ b/source/digits_hits/scorer/include/G4PSMinKinEAtGeneration.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSMinKinEAtGeneration.hh,v 1.3 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSMinKinEAtGeneration.hh,v 1.2 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSMinKinEAtGeneration_h @@ -36,10 +36,11 @@ //////////////////////////////////////////////////////////////////////////////// // (Description) -// This is a primitive scorer class for scoring Number of particles -// generated in the geometry. -// -// Created: 2005-11-18 Tsukasa ASO, Akinori Kimura. +// This is a primitive scorer class for scoring minimum energy of +// newly produced particles in the geometry. +// +// Created: 2005-11-17 Tsukasa ASO, Akinori Kimura. +// // /////////////////////////////////////////////////////////////////////////////// diff --git a/source/digits_hits/scorer/include/G4PSMinKinEAtGeneration3D.hh b/source/digits_hits/scorer/include/G4PSMinKinEAtGeneration3D.hh new file mode 100644 index 0000000000..3ea55fd6fc --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSMinKinEAtGeneration3D.hh @@ -0,0 +1,61 @@ +// +// ******************************************************************** +// * 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: G4PSMinKinEAtGeneration3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSMinKinEAtGeneration3D_h +#define G4PSMinKinEAtGeneration3D_h 1 + +#include "G4PSMinKinEAtGeneration.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring minimum energy of +// newly produced particles in the geometry. +// +// Created: 2007-08-14 Tsukasa ASO +// +// +/////////////////////////////////////////////////////////////////////////////// + +class G4PSMinKinEAtGeneration3D : public G4PSMinKinEAtGeneration +{ + public: // with description + G4PSMinKinEAtGeneration3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + virtual ~G4PSMinKinEAtGeneration3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; +}; +#endif + diff --git a/source/digits_hits/utils/include/G4PSNofCollision.hh b/source/digits_hits/scorer/include/G4PSNofCollision.hh similarity index 96% rename from source/digits_hits/utils/include/G4PSNofCollision.hh rename to source/digits_hits/scorer/include/G4PSNofCollision.hh index a61f2addba..df1bc24003 100644 --- a/source/digits_hits/utils/include/G4PSNofCollision.hh +++ b/source/digits_hits/scorer/include/G4PSNofCollision.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSNofCollision.hh,v 1.2 2007/06/21 15:03:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSNofCollision.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSNofCollision_h diff --git a/source/digits_hits/scorer/include/G4PSNofCollision3D.hh b/source/digits_hits/scorer/include/G4PSNofCollision3D.hh new file mode 100644 index 0000000000..5194237408 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSNofCollision3D.hh @@ -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: G4PSNofCollision3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSNofCollision3D_h +#define G4PSNofCollision3D_h 1 + +#include "G4PSNofCollision.hh" + +////////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Number of Steps in the cell. +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSNofCollision3D : public G4PSNofCollision +{ + + public: // with description + G4PSNofCollision3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + + public: + virtual ~G4PSNofCollision3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; +}; + + + +#endif diff --git a/source/digits_hits/utils/include/G4PSNofSecondary.hh b/source/digits_hits/scorer/include/G4PSNofSecondary.hh old mode 100755 new mode 100644 similarity index 82% rename from source/digits_hits/utils/include/G4PSNofSecondary.hh rename to source/digits_hits/scorer/include/G4PSNofSecondary.hh index d748f037b1..59bd25ca74 --- a/source/digits_hits/utils/include/G4PSNofSecondary.hh +++ b/source/digits_hits/scorer/include/G4PSNofSecondary.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSNofSecondary.hh,v 1.3 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSNofSecondary.hh,v 1.2 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSNofSecondary_h @@ -33,6 +33,7 @@ #include "G4VPrimitiveScorer.hh" #include "G4THitsMap.hh" +#include "G4ParticleTable.hh" //////////////////////////////////////////////////////////////////////////////// // (Description) @@ -40,6 +41,11 @@ // generated in the geometry. // // Created: 2005-11-18 Tsukasa ASO, Akinori Kimura. +// Modified: 2007-03-23 Tsukasa ASO, Introduce SetSecondary() method for +// specifying a particluar secondary. If the pointer +// particleDef is not set, it accepts all secondaies. +// But onece user sets it, it accepts only the particle. +// // /////////////////////////////////////////////////////////////////////////////// @@ -50,6 +56,9 @@ class G4PSNofSecondary : public G4VPrimitiveScorer public: // with description G4PSNofSecondary(G4String name, G4int depth=0); + // Scoring option + void SetParticle(const G4String& particleName); + protected: // with description virtual G4bool ProcessHits(G4Step*,G4TouchableHistory*); @@ -68,6 +77,7 @@ class G4PSNofSecondary : public G4VPrimitiveScorer private: G4int HCID; G4THitsMap* EvtMap; + G4ParticleDefinition* particleDef; public: diff --git a/source/digits_hits/scorer/include/G4PSNofSecondary3D.hh b/source/digits_hits/scorer/include/G4PSNofSecondary3D.hh new file mode 100644 index 0000000000..ec313382b6 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSNofSecondary3D.hh @@ -0,0 +1,58 @@ +// +// ******************************************************************** +// * 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: G4PSNofSecondary3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSNofSecondary3D_h +#define G4PSNofSecondary3D_h 1 + +#include "G4PSNofSecondary.hh" +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Number of particles +// generated in the geometry. +// +// Created: 2007-08-14 Tsukasa ASO +//////////////////////////////////////////////////////////////////////////////// + +class G4PSNofSecondary3D : public G4PSNofSecondary +{ + public: // with description + G4PSNofSecondary3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + virtual ~G4PSNofSecondary3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; +}; +#endif + diff --git a/source/digits_hits/utils/include/G4PSNofStep.hh b/source/digits_hits/scorer/include/G4PSNofStep.hh similarity index 92% rename from source/digits_hits/utils/include/G4PSNofStep.hh rename to source/digits_hits/scorer/include/G4PSNofStep.hh index fa2cf439b7..a655517454 100644 --- a/source/digits_hits/utils/include/G4PSNofStep.hh +++ b/source/digits_hits/scorer/include/G4PSNofStep.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSNofStep.hh,v 1.3 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSNofStep.hh,v 1.2 2007/08/29 06:36:41 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSNofStep_h @@ -64,10 +64,16 @@ class G4PSNofStep : public G4VPrimitiveScorer virtual void DrawAll(); virtual void PrintAll(); + public: + void SetBoundaryFlag(G4bool flg=true) + {boundaryFlag = flg;} + private: G4int HCID; G4THitsMap* EvtMap; + G4bool boundaryFlag; + public: diff --git a/source/digits_hits/scorer/include/G4PSNofStep3D.hh b/source/digits_hits/scorer/include/G4PSNofStep3D.hh new file mode 100644 index 0000000000..1b05ddd355 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSNofStep3D.hh @@ -0,0 +1,59 @@ +// +// ******************************************************************** +// * 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: G4PSNofStep3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSNofStep3D_h +#define G4PSNofStep3D_h 1 + +#include "G4PSNofStep.hh" +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Number of Steps in the cell. +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSNofStep3D : public G4PSNofStep +{ + public: // with description + G4PSNofStep3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + virtual ~G4PSNofStep3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; +}; +#endif + diff --git a/source/digits_hits/utils/include/G4PSPassageCurrent.hh b/source/digits_hits/scorer/include/G4PSPassageCellCurrent.hh similarity index 85% rename from source/digits_hits/utils/include/G4PSPassageCurrent.hh rename to source/digits_hits/scorer/include/G4PSPassageCellCurrent.hh index ba84d4e64a..60e2e7c3d3 100644 --- a/source/digits_hits/utils/include/G4PSPassageCurrent.hh +++ b/source/digits_hits/scorer/include/G4PSPassageCellCurrent.hh @@ -24,12 +24,12 @@ // ******************************************************************** // // -// $Id: G4PSPassageCurrent.hh,v 1.4 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSPassageCellCurrent.hh,v 1.1 2007/08/14 21:30:45 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -#ifndef G4PSPassageCurrent_h -#define G4PSPassageCurrent_h 1 +#ifndef G4PSPassageCellCurrent_h +#define G4PSPassageCellCurrent_h 1 #include "G4VPrimitiveScorer.hh" #include "G4THitsMap.hh" @@ -45,14 +45,15 @@ /////////////////////////////////////////////////////////////////////////////// -class G4PSPassageCurrent : public G4VPrimitiveScorer +class G4PSPassageCellCurrent : public G4VPrimitiveScorer { public: // with description - G4PSPassageCurrent(G4String name, G4int depth=0); + G4PSPassageCellCurrent(G4String name, G4int depth=0); + virtual ~G4PSPassageCellCurrent(); - public: - virtual ~G4PSPassageCurrent(); + inline void Weighted(G4bool flg=true) { weighted = flg; } + // Multiply track weight protected: // with description virtual G4bool ProcessHits(G4Step*,G4TouchableHistory*); @@ -72,8 +73,8 @@ class G4PSPassageCurrent : public G4VPrimitiveScorer G4int HCID; G4int fCurrentTrkID; G4double fCurrent; - G4double fCurrentSquare; G4THitsMap* EvtMap; + G4bool weighted; }; diff --git a/source/digits_hits/scorer/include/G4PSPassageCellCurrent3D.hh b/source/digits_hits/scorer/include/G4PSPassageCellCurrent3D.hh new file mode 100644 index 0000000000..5780b53568 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSPassageCellCurrent3D.hh @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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: G4PSPassageCellCurrent3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSPassageCellCurrent3D_h +#define G4PSPassageCellCurrent3D_h 1 + +#include "G4PSPassageCellCurrent.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring a current. +// The number of tracks passing through the geometry are taken +// into account. +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSPassageCellCurrent3D : public G4PSPassageCellCurrent +{ + public: // with description + G4PSPassageCellCurrent3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + virtual ~G4PSPassageCellCurrent3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; +}; +#endif + diff --git a/source/digits_hits/utils/include/G4PSPassageCellFlux.hh b/source/digits_hits/scorer/include/G4PSPassageCellFlux.hh similarity index 96% rename from source/digits_hits/utils/include/G4PSPassageCellFlux.hh rename to source/digits_hits/scorer/include/G4PSPassageCellFlux.hh index 4562804960..6e54e83687 100644 --- a/source/digits_hits/utils/include/G4PSPassageCellFlux.hh +++ b/source/digits_hits/scorer/include/G4PSPassageCellFlux.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSPassageCellFlux.hh,v 1.4 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSPassageCellFlux.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSPassageCellFlux_h diff --git a/source/digits_hits/scorer/include/G4PSPassageCellFlux3D.hh b/source/digits_hits/scorer/include/G4PSPassageCellFlux3D.hh new file mode 100644 index 0000000000..0d57997956 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSPassageCellFlux3D.hh @@ -0,0 +1,64 @@ +// +// ******************************************************************** +// * 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: G4PSPassageCellFlux3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSPassageCellFlux3D_h +#define G4PSPassageCellFlux3D_h 1 + +#include "G4PSPassageCellFlux.hh" +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring cell flux. +// The Cell Flux is defined by a track length divided by a geometry +// volume, where only tracks passing through the geometry are taken +// into account. e.g. the unit of Cell Flux is mm/mm3. +// +// If you want to score all tracks in the geometry volume, +// please use G4PSCellFlux. +// +// Created: 2007-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSPassageCellFlux3D : public G4PSPassageCellFlux +{ + public: // with description + G4PSPassageCellFlux3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + virtual ~G4PSPassageCellFlux3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; +}; +#endif + diff --git a/source/digits_hits/utils/include/G4PSPassageTrackLength.hh b/source/digits_hits/scorer/include/G4PSPassageTrackLength.hh similarity index 96% rename from source/digits_hits/utils/include/G4PSPassageTrackLength.hh rename to source/digits_hits/scorer/include/G4PSPassageTrackLength.hh index f49484e1e2..76b246885e 100644 --- a/source/digits_hits/utils/include/G4PSPassageTrackLength.hh +++ b/source/digits_hits/scorer/include/G4PSPassageTrackLength.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSPassageTrackLength.hh,v 1.4 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSPassageTrackLength.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSPassageTrackLength_h diff --git a/source/digits_hits/scorer/include/G4PSPassageTrackLength3D.hh b/source/digits_hits/scorer/include/G4PSPassageTrackLength3D.hh new file mode 100644 index 0000000000..bf07155607 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSPassageTrackLength3D.hh @@ -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: G4PSPassageTrackLength3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSPassageTrackLength3D_h +#define G4PSPassageTrackLength3D_h 1 + +#include "G4PSPassageTrackLength.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring only track length. +// The tracks which passed a geometry is taken into account. +// +// +// Created: 2008-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +class G4PSPassageTrackLength3D : public G4PSPassageTrackLength +{ + + public: // with description + G4PSPassageTrackLength3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + + virtual ~G4PSPassageTrackLength3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; + +}; + +#endif + diff --git a/source/digits_hits/utils/include/G4PSPopulation.hh b/source/digits_hits/scorer/include/G4PSPopulation.hh similarity index 93% rename from source/digits_hits/utils/include/G4PSPopulation.hh rename to source/digits_hits/scorer/include/G4PSPopulation.hh index ee2c163ef0..07209c1f55 100644 --- a/source/digits_hits/utils/include/G4PSPopulation.hh +++ b/source/digits_hits/scorer/include/G4PSPopulation.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSPopulation.hh,v 1.2 2007/06/21 15:03:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSPopulation.hh,v 1.2 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSPopulation_h @@ -37,12 +37,12 @@ #include "G4TrackLogger.hh" -////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// // (Description) -// This is a primitive scorer class for scoring Number of Steps in the cell. -// +// This is a primitive scorer class for scoring population in a cell. +// // Created: 2007-02-02 Tsukasa ASO, Akinori Kimura. -// +// /////////////////////////////////////////////////////////////////////////////// diff --git a/source/digits_hits/scorer/include/G4PSPopulation3D.hh b/source/digits_hits/scorer/include/G4PSPopulation3D.hh new file mode 100644 index 0000000000..e62f7507e4 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSPopulation3D.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * 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: G4PSPopulation3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSPopulation3D_h +#define G4PSPopulation3D_h 1 + +#include "G4PSPopulation.hh" + +////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring population in a cell. +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +class G4PSPopulation3D : public G4PSPopulation +{ + + public: // with description + G4PSPopulation3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + + public: + virtual ~G4PSPopulation3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; + + +}; + + + +#endif diff --git a/source/digits_hits/utils/include/G4PSSphereSurfaceCurrent.hh b/source/digits_hits/scorer/include/G4PSSphereSurfaceCurrent.hh similarity index 89% rename from source/digits_hits/utils/include/G4PSSphereSurfaceCurrent.hh rename to source/digits_hits/scorer/include/G4PSSphereSurfaceCurrent.hh index f0b3840454..2ea39da950 100644 --- a/source/digits_hits/utils/include/G4PSSphereSurfaceCurrent.hh +++ b/source/digits_hits/scorer/include/G4PSSphereSurfaceCurrent.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSSphereSurfaceCurrent.hh,v 1.4 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSSphereSurfaceCurrent.hh,v 1.2 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSSphereSurfaceCurrent_h @@ -52,6 +52,7 @@ // // Created: 2005-11-14 Tsukasa ASO, Akinori Kimura. // 17-Nov-2005 Bug fix. square definition. +// 31-Mar-2007 T.Aso, Add option for normalizing by the area. // /////////////////////////////////////////////////////////////////////////////// @@ -62,6 +63,11 @@ class G4PSSphereSurfaceCurrent : public G4VPrimitiveScorer G4PSSphereSurfaceCurrent(G4String name, G4int direction, G4int depth=0); virtual ~G4PSSphereSurfaceCurrent(); + inline void Weighted(G4bool flg=true) { weighted = flg; } + // Multiply track weight + inline void DivideByArea(G4bool flg=true) { divideByArea = flg; } + // Divided by Area. + protected: // with description virtual G4bool ProcessHits(G4Step*,G4TouchableHistory*); G4int IsSelectedSurface(G4Step*,G4Sphere*); @@ -77,6 +83,8 @@ class G4PSSphereSurfaceCurrent : public G4VPrimitiveScorer G4int HCID; G4int fDirection; G4THitsMap* EvtMap; + G4bool weighted; + G4bool divideByArea; }; diff --git a/source/digits_hits/scorer/include/G4PSSphereSurfaceCurrent3D.hh b/source/digits_hits/scorer/include/G4PSSphereSurfaceCurrent3D.hh new file mode 100644 index 0000000000..7071af6a12 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSSphereSurfaceCurrent3D.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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: G4PSSphereSurfaceCurrent3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSSphereSurfaceCurrent3D_h +#define G4PSSphereSurfaceCurrent3D_h 1 + +#include "G4PSSphereSurfaceCurrent.hh" +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Current. +// Current version assumes only for G4Sphere shape, and the surface +// is defined at the inside of the sphere. +// The current is given in the unit of area. +// e.g. (Number of tracks)/mm2. +// +// Surface is defined at the inside of sphere. +// Direction -Rmin +Rmax +// 0 IN || OUT ->|<- | fCurrent_InOut +// 1 IN ->| | fCurrent_In +// 2 OUT |<- | fCurrent_Out +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +class G4PSSphereSurfaceCurrent3D : public G4PSSphereSurfaceCurrent +{ + + public: // with description + G4PSSphereSurfaceCurrent3D(G4String name, G4int direction, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + + virtual ~G4PSSphereSurfaceCurrent3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; + + +}; + +#endif + diff --git a/source/digits_hits/utils/include/G4PSSphereSurfaceFlux.hh b/source/digits_hits/scorer/include/G4PSSphereSurfaceFlux.hh similarity index 97% rename from source/digits_hits/utils/include/G4PSSphereSurfaceFlux.hh rename to source/digits_hits/scorer/include/G4PSSphereSurfaceFlux.hh index 8ec71d0be1..e08aaa61a8 100644 --- a/source/digits_hits/utils/include/G4PSSphereSurfaceFlux.hh +++ b/source/digits_hits/scorer/include/G4PSSphereSurfaceFlux.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSSphereSurfaceFlux.hh,v 1.2 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSSphereSurfaceFlux.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSSphereSurfaceFlux_h diff --git a/source/digits_hits/scorer/include/G4PSSphereSurfaceFlux3D.hh b/source/digits_hits/scorer/include/G4PSSphereSurfaceFlux3D.hh new file mode 100644 index 0000000000..832b7823c2 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSSphereSurfaceFlux3D.hh @@ -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: G4PSSphereSurfaceFlux3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSSphereSurfaceFlux3D_h +#define G4PSSphereSurfaceFlux3D_h 1 + +#include "G4PSSphereSurfaceFlux.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Flux. +// Flux version assumes only for G4Sphere shape, and the surface +// is defined at the inside of the sphere. +// The current is given in the unit of area. +// e.g. (Number of tracks)/mm2. +// +// Surface is defined at the inside of sphere. +// Direction -Rmin +Rmax +// 0 IN || OUT ->|<- | fFlux_InOut +// 1 IN ->| | fFlux_In +// 2 OUT |<- | fFlux_Out +// +// Created: 2007-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + +class G4PSSphereSurfaceFlux3D : public G4PSSphereSurfaceFlux +{ + + public: // with description + G4PSSphereSurfaceFlux3D(G4String name, G4int direction, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + + virtual ~G4PSSphereSurfaceFlux3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; + +}; + +#endif + diff --git a/source/digits_hits/scorer/include/G4PSTermination.hh b/source/digits_hits/scorer/include/G4PSTermination.hh new file mode 100644 index 0000000000..d99e818d89 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSTermination.hh @@ -0,0 +1,83 @@ +// +// ******************************************************************** +// * 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: G4PSTermination.hh,v 1.2 2007/12/10 16:29:35 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSTermination_h +#define G4PSTermination_h 1 + +#include "G4VPrimitiveScorer.hh" +#include "G4THitsMap.hh" + + +////////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Number of Steps in the cell. +// +// Created: 2007-2-2 Tsukasa ASO, Akinori Kimura. +// +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSTermination : public G4VPrimitiveScorer +{ + + public: // with description + G4PSTermination(G4String name, G4int depth=0); + + protected: // with description + virtual G4bool ProcessHits(G4Step*,G4TouchableHistory*); + + public: + virtual ~G4PSTermination(); + + inline void Weighted(G4bool flg=true) { weighted = flg; } + // Multiply track weight + + public: + virtual void Initialize(G4HCofThisEvent*); + virtual void EndOfEvent(G4HCofThisEvent*); + virtual void clear(); + + public: + virtual void DrawAll(); + virtual void PrintAll(); + + private: + G4int HCID; + G4THitsMap* EvtMap; + G4bool weighted; + + public: + + +}; + + + +#endif diff --git a/source/digits_hits/scorer/include/G4PSTermination3D.hh b/source/digits_hits/scorer/include/G4PSTermination3D.hh new file mode 100644 index 0000000000..49f732fdd0 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSTermination3D.hh @@ -0,0 +1,64 @@ +// +// ******************************************************************** +// * 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: G4PSTermination3D.hh,v 1.3 2007/12/10 16:29:37 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSTermination3D_h +#define G4PSTermination3D_h 1 + +#include "G4PSTermination.hh" +////////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Number of tracks +// which stops(terminated) in the cell. +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSTermination3D : public G4PSTermination +{ + + public: // with description + G4PSTermination3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int di=2, G4int dj=1, G4int dk=0); + virtual ~G4PSTermination3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; + +}; + + + +#endif diff --git a/source/digits_hits/utils/include/G4PSTrackCounter.hh b/source/digits_hits/scorer/include/G4PSTrackCounter.hh similarity index 91% rename from source/digits_hits/utils/include/G4PSTrackCounter.hh rename to source/digits_hits/scorer/include/G4PSTrackCounter.hh index ee2539d98b..8248eb005c 100644 --- a/source/digits_hits/utils/include/G4PSTrackCounter.hh +++ b/source/digits_hits/scorer/include/G4PSTrackCounter.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSTrackCounter.hh,v 1.2 2007/06/21 15:03:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSTrackCounter.hh,v 1.2 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSTrackCounter_h @@ -36,15 +36,13 @@ #include "G4PSDirectionFlag.hh" - -////////////////////////////////////////////////////////////////////////////////// -// (Description) -// This is a primitive scorer class for scoring Number of Steps in the cell. -// -// Created: 2007-02-02 Tsukasa ASO, Akinori Kimura. -// /////////////////////////////////////////////////////////////////////////////// - +// (Description) +// This is a primitive scorer class for scoring number of tracks in a cell. +// +// Created: 2007-02-02 Tsukasa ASO, Akinori Kimura. +// +/////////////////////////////////////////////////////////////////////////////// class G4PSTrackCounter : public G4VPrimitiveScorer { diff --git a/source/digits_hits/scorer/include/G4PSTrackCounter3D.hh b/source/digits_hits/scorer/include/G4PSTrackCounter3D.hh new file mode 100644 index 0000000000..2cb76060f7 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSTrackCounter3D.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * 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: G4PSTrackCounter3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSTrackCounter3D_h +#define G4PSTrackCounter3D_h 1 + +#include "G4PSTrackCounter.hh" + + +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring number of tracks in a cell. +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + + +class G4PSTrackCounter3D : public G4PSTrackCounter +{ + + public: // with description + G4PSTrackCounter3D(G4String name, G4int direction, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int di=2, G4int dj=1, G4int dk=0); + public: + virtual ~G4PSTrackCounter3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; + +}; + + + +#endif diff --git a/source/digits_hits/utils/include/G4PSTrackLength.hh b/source/digits_hits/scorer/include/G4PSTrackLength.hh similarity index 94% rename from source/digits_hits/utils/include/G4PSTrackLength.hh rename to source/digits_hits/scorer/include/G4PSTrackLength.hh index 9dc0dc4e6b..3022ab7a6f 100644 --- a/source/digits_hits/utils/include/G4PSTrackLength.hh +++ b/source/digits_hits/scorer/include/G4PSTrackLength.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSTrackLength.hh,v 1.5 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSTrackLength.hh,v 1.2 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PSTrackLength_h @@ -40,7 +40,7 @@ // // // Created: 2005-11-14 Tsukasa ASO, Akinori Kimura. -// Modified: 2007-02-02 Tsukasa ASO, Add MultiolyKineticEnergy() +// Modified: 2007-02-02 Tsukasa ASO, Add MultiplyKineticEnergy() // and DivideByVelocity(). // // diff --git a/source/digits_hits/scorer/include/G4PSTrackLength3D.hh b/source/digits_hits/scorer/include/G4PSTrackLength3D.hh new file mode 100644 index 0000000000..9e20a871f9 --- /dev/null +++ b/source/digits_hits/scorer/include/G4PSTrackLength3D.hh @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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: G4PSTrackLength3D.hh,v 1.2 2007/08/28 10:11:29 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4PSTrackLength3D_h +#define G4PSTrackLength3D_h 1 + +#include "G4PSTrackLength.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring track length. +// +// +// Created: 2008-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +class G4PSTrackLength3D : public G4PSTrackLength +{ + + public: // with description + G4PSTrackLength3D(G4String name, + G4int ni=1,G4int nj=1, G4int nk=1, + G4int depi=2, G4int depj=1, G4int depk=0); + + virtual ~G4PSTrackLength3D(); + + protected: // with description + virtual G4int GetIndex(G4Step*); + + private: + G4int fDepthi, fDepthj, fDepthk; + +}; +#endif diff --git a/source/digits_hits/utils/include/G4SDChargedFilter.hh b/source/digits_hits/scorer/include/G4SDChargedFilter.hh similarity index 96% rename from source/digits_hits/utils/include/G4SDChargedFilter.hh rename to source/digits_hits/scorer/include/G4SDChargedFilter.hh index 1cc9565893..4e8cb204e7 100644 --- a/source/digits_hits/utils/include/G4SDChargedFilter.hh +++ b/source/digits_hits/scorer/include/G4SDChargedFilter.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SDChargedFilter.hh,v 1.4 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SDChargedFilter.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4SDChargedFilter_h diff --git a/source/digits_hits/utils/include/G4SDKineticEnergyFilter.hh b/source/digits_hits/scorer/include/G4SDKineticEnergyFilter.hh similarity index 96% rename from source/digits_hits/utils/include/G4SDKineticEnergyFilter.hh rename to source/digits_hits/scorer/include/G4SDKineticEnergyFilter.hh index f8ca0017ec..4a49cf0a6c 100644 --- a/source/digits_hits/utils/include/G4SDKineticEnergyFilter.hh +++ b/source/digits_hits/scorer/include/G4SDKineticEnergyFilter.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SDKineticEnergyFilter.hh,v 1.4 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SDKineticEnergyFilter.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4SDKineticEnergyFilter_h diff --git a/source/digits_hits/utils/include/G4SDNeutralFilter.hh b/source/digits_hits/scorer/include/G4SDNeutralFilter.hh similarity index 96% rename from source/digits_hits/utils/include/G4SDNeutralFilter.hh rename to source/digits_hits/scorer/include/G4SDNeutralFilter.hh index 8112dbcb5a..99bf0301ed 100644 --- a/source/digits_hits/utils/include/G4SDNeutralFilter.hh +++ b/source/digits_hits/scorer/include/G4SDNeutralFilter.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SDNeutralFilter.hh,v 1.4 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SDNeutralFilter.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4SDNeutralFilter_h diff --git a/source/digits_hits/utils/include/G4SDParticleFilter.hh b/source/digits_hits/scorer/include/G4SDParticleFilter.hh similarity index 96% rename from source/digits_hits/utils/include/G4SDParticleFilter.hh rename to source/digits_hits/scorer/include/G4SDParticleFilter.hh index 8d33153d33..fb82d976db 100644 --- a/source/digits_hits/utils/include/G4SDParticleFilter.hh +++ b/source/digits_hits/scorer/include/G4SDParticleFilter.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SDParticleFilter.hh,v 1.4 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SDParticleFilter.hh,v 1.2 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4SDParticleFilter_h diff --git a/source/digits_hits/utils/include/G4SDParticleWithEnergyFilter.hh b/source/digits_hits/scorer/include/G4SDParticleWithEnergyFilter.hh similarity index 96% rename from source/digits_hits/utils/include/G4SDParticleWithEnergyFilter.hh rename to source/digits_hits/scorer/include/G4SDParticleWithEnergyFilter.hh index 40ec925f5d..6b7b8da572 100644 --- a/source/digits_hits/utils/include/G4SDParticleWithEnergyFilter.hh +++ b/source/digits_hits/scorer/include/G4SDParticleWithEnergyFilter.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SDParticleWithEnergyFilter.hh,v 1.4 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SDParticleWithEnergyFilter.hh,v 1.1 2007/07/11 01:29:28 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4SDParticleWithEnergyFilter_h diff --git a/source/digits_hits/utils/src/G4PSCellCharge.cc b/source/digits_hits/scorer/src/G4PSCellCharge.cc old mode 100755 new mode 100644 similarity index 97% rename from source/digits_hits/utils/src/G4PSCellCharge.cc rename to source/digits_hits/scorer/src/G4PSCellCharge.cc index ab37bf637a..15d52f4385 --- a/source/digits_hits/utils/src/G4PSCellCharge.cc +++ b/source/digits_hits/scorer/src/G4PSCellCharge.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4PSCellCharge.cc,v 1.3 2007/05/18 00:00:37 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSCellCharge.cc,v 1.1 2007/07/11 01:31:02 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSCellCharge #include "G4PSCellCharge.hh" diff --git a/source/digits_hits/scorer/src/G4PSCellCharge3D.cc b/source/digits_hits/scorer/src/G4PSCellCharge3D.cc new file mode 100644 index 0000000000..406c5e86c9 --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSCellCharge3D.cc @@ -0,0 +1,67 @@ +// +// ******************************************************************** +// * 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: G4PSCellCharge3D.cc,v 1.3 2007/08/29 06:36:41 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSCellCharge3D +#include "G4PSCellCharge3D.hh" + +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for 3D scoring cell charge. +// The Cell Charge is defined by a sum of charge inside the cell +// which calculates the deposited charge in the cell. +// +// +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSCellCharge3D::G4PSCellCharge3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSCellCharge(name), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSCellCharge3D::~G4PSCellCharge3D() +{;} + +G4int G4PSCellCharge3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSCellFlux.cc b/source/digits_hits/scorer/src/G4PSCellFlux.cc similarity index 97% rename from source/digits_hits/utils/src/G4PSCellFlux.cc rename to source/digits_hits/scorer/src/G4PSCellFlux.cc index 88b4a71ffa..9ccaeeeefd 100644 --- a/source/digits_hits/utils/src/G4PSCellFlux.cc +++ b/source/digits_hits/scorer/src/G4PSCellFlux.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSCellFlux.cc,v 1.5 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSCellFlux.cc,v 1.1 2007/07/11 01:31:02 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSCellFlux #include "G4PSCellFlux.hh" diff --git a/source/digits_hits/scorer/src/G4PSCellFlux3D.cc b/source/digits_hits/scorer/src/G4PSCellFlux3D.cc new file mode 100644 index 0000000000..0a4a307c53 --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSCellFlux3D.cc @@ -0,0 +1,71 @@ +// +// ******************************************************************** +// * 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: G4PSCellFlux3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSCellFlux3D +#include "G4PSCellFlux3D.hh" + +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for 3D scoring cell flux. +// The Cell Flux is defined by a sum of track length divided +// by the geometry volume, where all of the tracks in the geometry +// are taken into account. e.g. the unit of Cell Flux is mm/mm3. +// +// +// If you want to score only tracks passing through the geometry volume, +// please use G4PSPassageCellFlux3D. +// +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSCellFlux3D::G4PSCellFlux3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSCellFlux(name), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSCellFlux3D::~G4PSCellFlux3D() +{;} + +G4int G4PSCellFlux3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/scorer/src/G4PSCylinderSurfaceCurrent.cc b/source/digits_hits/scorer/src/G4PSCylinderSurfaceCurrent.cc new file mode 100644 index 0000000000..f56e6d112f --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSCylinderSurfaceCurrent.cc @@ -0,0 +1,161 @@ +// +// ******************************************************************** +// * 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: G4PSCylinderSurfaceCurrent.cc,v 1.1 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSCylinderSurfaceCurrent +#include "G4PSCylinderSurfaceCurrent.hh" +#include "G4StepStatus.hh" +#include "G4Track.hh" +#include "G4UnitsTable.hh" +#include "G4GeometryTolerance.hh" +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring only Surface Current. +// Current version assumes only for G4Tubs shape. +// +// Surface is defined at the inner surface of the tube. +// Direction R R+dR +// 0 IN || OUT ->|<- | +// 1 IN ->| | +// 2 OUT |<- | +// +// Created: 2007-03-21 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + + +G4PSCylinderSurfaceCurrent::G4PSCylinderSurfaceCurrent(G4String name, + G4int direction, G4int depth) + :G4VPrimitiveScorer(name,depth),HCID(-1),fDirection(direction), + weighted(true),divideByArea(true) +{;} + +G4PSCylinderSurfaceCurrent::~G4PSCylinderSurfaceCurrent() +{;} + +G4bool G4PSCylinderSurfaceCurrent::ProcessHits(G4Step* aStep,G4TouchableHistory*) +{ + G4StepPoint* preStep = aStep->GetPreStepPoint(); + G4VSolid * solid = + preStep->GetPhysicalVolume()->GetLogicalVolume()->GetSolid(); + if( solid->GetEntityType() != "G4Tubs" ){ + G4Exception("G4PSCylinderSurfaceCurrentScorer. - Solid type is not supported."); + return FALSE; + } + G4Tubs* tubsSolid = (G4Tubs*)(solid); + + G4int dirFlag =IsSelectedSurface(aStep,tubsSolid); + if ( dirFlag > 0 ) { + if ( fDirection == fCurrent_InOut || fDirection == dirFlag ){ + G4TouchableHandle theTouchable = preStep->GetTouchableHandle(); + // + G4double current = 1.0; + if ( weighted ) current = preStep->GetWeight(); // Current (Particle Weight) + // + if ( divideByArea ){ + G4double square = 2.*tubsSolid->GetZHalfLength() + *tubsSolid->GetInnerRadius()* tubsSolid->GetDeltaPhiAngle()/radian; + current = current/square; // Current normalized by Area + } + + G4int index = GetIndex(aStep); + EvtMap->add(index,current); + } + + } + + return TRUE; +} + +G4int G4PSCylinderSurfaceCurrent::IsSelectedSurface(G4Step* aStep, G4Tubs* tubsSolid){ + + G4TouchableHandle theTouchable = + aStep->GetPreStepPoint()->GetTouchableHandle(); + G4double kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); + + if (aStep->GetPreStepPoint()->GetStepStatus() == fGeomBoundary ){ + // Entering Geometry + G4ThreeVector stppos1= aStep->GetPreStepPoint()->GetPosition(); + G4ThreeVector localpos1 = + theTouchable->GetHistory()->GetTopTransform().TransformPoint(stppos1); + if ( std::fabs(localpos1.z()) > tubsSolid->GetZHalfLength() ) return -1; + if(std::fabs( (localpos1.x()*localpos1.x()+localpos1.y()*localpos1.y()) + -(tubsSolid->GetInnerRadius()*tubsSolid->GetInnerRadius()) ) + < kCarTolerance ){ + return fCurrent_In; + } + } + + if (aStep->GetPostStepPoint()->GetStepStatus() == fGeomBoundary ){ + // Exiting Geometry + G4ThreeVector stppos2= aStep->GetPostStepPoint()->GetPosition(); + G4ThreeVector localpos2 = + theTouchable->GetHistory()->GetTopTransform().TransformPoint(stppos2); + if ( std::fabs(localpos2.z()) > tubsSolid->GetZHalfLength() ) return -1; + if(std::fabs( (localpos2.x()*localpos2.x()+localpos2.y()*localpos2.y()) + - (tubsSolid->GetInnerRadius()*tubsSolid->GetInnerRadius()) ) + (detector->GetName(), GetName()); + if ( HCID < 0 ) HCID = GetCollectionID(0); + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void G4PSCylinderSurfaceCurrent::EndOfEvent(G4HCofThisEvent*) +{;} + +void G4PSCylinderSurfaceCurrent::clear(){ + EvtMap->clear(); +} + +void G4PSCylinderSurfaceCurrent::DrawAll() +{;} + +void G4PSCylinderSurfaceCurrent::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() <entries() << G4endl; + std::map::iterator itr = EvtMap->GetMap()->begin(); + for(; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " current : " ; + if ( divideByArea ) G4cout << *(itr->second)*cm*cm << " [/cm2]"; + else G4cout << *(itr->second) << " [track]"; + G4cout << G4endl; + } +} + diff --git a/source/digits_hits/scorer/src/G4PSCylinderSurfaceCurrent3D.cc b/source/digits_hits/scorer/src/G4PSCylinderSurfaceCurrent3D.cc new file mode 100644 index 0000000000..9f65d9e9a7 --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSCylinderSurfaceCurrent3D.cc @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * 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: G4PSCylinderSurfaceCurrent3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSCylinderSurfaceCurrent3D +#include "G4PSCylinderSurfaceCurrent3D.hh" + +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Current. +// Current version assumes only for G4Tubs shape, and the surface +// is defined at the Rmin plane of the Tubs. +// The current is given in the unit of area. +// e.g. (Number of tracks)/mm2. +// +// Surface is defined at the -Z surface. +// Direction Rmin Rmax +// 0 IN || OUT ->|<- | fCurrent_InOut +// 1 IN ->| | fCurrent_In +// 2 OUT |<- | fCurrent_Out +// +// +// Created: 2008-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + +G4PSCylinderSurfaceCurrent3D::G4PSCylinderSurfaceCurrent3D(G4String name, + G4int direction, + G4int ni, G4int nj, G4int nk, + G4int di, G4int dj, G4int dk) + :G4PSCylinderSurfaceCurrent(name,direction), + fDepthi(di),fDepthj(dj),fDepthk(dk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSCylinderSurfaceCurrent3D::~G4PSCylinderSurfaceCurrent3D() +{;} + +G4int G4PSCylinderSurfaceCurrent3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/scorer/src/G4PSCylinderSurfaceFlux.cc b/source/digits_hits/scorer/src/G4PSCylinderSurfaceFlux.cc new file mode 100644 index 0000000000..11be485013 --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSCylinderSurfaceFlux.cc @@ -0,0 +1,180 @@ +// // +// // ******************************************************************** +// // * 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: G4PSCylinderSurfaceFlux.cc,v 1.1 2007/08/14 21:23:51 taso Exp $ +// // GEANT4 tag $Name: geant4-09-01 $ +// // +// // G4PSCylinderSurfaceFlux +#include "G4PSCylinderSurfaceFlux.hh" +#include "G4StepStatus.hh" +#include "G4Track.hh" +#include "G4UnitsTable.hh" +#include "G4GeometryTolerance.hh" +// //////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Flux. +// Current version assumes only for G4Tubs shape, and the surface +// is fixed on inner plane of the tube. +// +// Surface is defined at the innner surface of the tube. +// Direction R R+dR +// 0 IN || OUT ->|<- | +// 1 IN ->| | +// 2 OUT |<- | +// +// Created: 2007-03-29 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + +G4PSCylinderSurfaceFlux::G4PSCylinderSurfaceFlux(G4String name, + G4int direction, G4int depth) + :G4VPrimitiveScorer(name,depth),HCID(-1),fDirection(direction) +{;} + +G4PSCylinderSurfaceFlux::~G4PSCylinderSurfaceFlux() +{;} + +G4bool G4PSCylinderSurfaceFlux::ProcessHits(G4Step* aStep,G4TouchableHistory*) +{ + G4StepPoint* preStep = aStep->GetPreStepPoint(); + G4StepPoint* postStep = aStep->GetPreStepPoint(); + G4VSolid * solid = + preStep->GetPhysicalVolume()->GetLogicalVolume()->GetSolid(); + if( solid->GetEntityType() != "G4Tubs" ){ + G4Exception("G4PSCylinderSurfaceFluxScorer. - Solid type is not supported."); + return FALSE; + } + G4Tubs* tubsSolid = (G4Tubs*)(solid); + + G4int dirFlag =IsSelectedSurface(aStep,tubsSolid); + + if ( dirFlag > 0 ){ + if (fDirection == fFlux_InOut || dirFlag == fDirection ){ + + G4StepPoint* thisStep=0; + if ( dirFlag == fFlux_In ){ + thisStep = preStep; + }else if ( dirFlag == fFlux_Out ){ + thisStep = postStep; + }else{ + return FALSE; + } + + G4TouchableHandle theTouchable = thisStep->GetTouchableHandle(); + G4ThreeVector pdirection = thisStep->GetMomentumDirection(); + G4ThreeVector localdir = + theTouchable->GetHistory()->GetTopTransform().TransformAxis(pdirection); + G4ThreeVector position = thisStep->GetPosition(); + G4ThreeVector localpos = + theTouchable->GetHistory()->GetTopTransform().TransformAxis(position); + G4double angleFactor = (localdir.x()*localpos.x()+localdir.y()*localpos.y()) + /std::sqrt(localdir.x()*localdir.x() + +localdir.y()*localdir.y()+localdir.z()*localdir.z()) + /std::sqrt(localpos.x()*localpos.x()+localpos.y()*localpos.y()); + + if ( angleFactor < 0 ) angleFactor *= -1.; + G4double square = 2.*tubsSolid->GetZHalfLength() + *tubsSolid->GetInnerRadius()* tubsSolid->GetDeltaPhiAngle()/radian; + + G4double flux = preStep->GetWeight(); + // Current (Particle Weight) + + flux = flux/angleFactor/square; + //Flux with angle. + G4int index = GetIndex(aStep); + EvtMap->add(index,flux); + return TRUE; + }else{ + return FALSE; + } + }else{ + return FALSE; + } +} + +G4int G4PSCylinderSurfaceFlux::IsSelectedSurface(G4Step* aStep, G4Tubs* tubsSolid){ + + G4TouchableHandle theTouchable = + aStep->GetPreStepPoint()->GetTouchableHandle(); + G4double kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); + + if (aStep->GetPreStepPoint()->GetStepStatus() == fGeomBoundary ){ + // Entering Geometry + G4ThreeVector stppos1= aStep->GetPreStepPoint()->GetPosition(); + G4ThreeVector localpos1 = + theTouchable->GetHistory()->GetTopTransform().TransformPoint(stppos1); + if ( std::fabs(localpos1.z()) > tubsSolid->GetZHalfLength() ) return -1; + if(std::fabs( localpos1.x()*localpos1.x()+localpos1.y()*localpos1.y() ) + - (tubsSolid->GetInnerRadius()*tubsSolid->GetInnerRadius())GetPostStepPoint()->GetStepStatus() == fGeomBoundary ){ + // Exiting Geometry + G4ThreeVector stppos2= aStep->GetPostStepPoint()->GetPosition(); + G4ThreeVector localpos2 = + theTouchable->GetHistory()->GetTopTransform().TransformPoint(stppos2); + if ( std::fabs(localpos2.z()) > tubsSolid->GetZHalfLength() ) return -1; + if(std::fabs( localpos2.x()*localpos2.x()+localpos2.y()*localpos2.y() ) + - (tubsSolid->GetInnerRadius()*tubsSolid->GetInnerRadius())(GetMultiFunctionalDetector()->GetName(), + GetName()); + if ( HCID < 0 ) HCID = GetCollectionID(0); + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void G4PSCylinderSurfaceFlux::EndOfEvent(G4HCofThisEvent*) +{;} + +void G4PSCylinderSurfaceFlux::clear(){ + EvtMap->clear(); +} + +void G4PSCylinderSurfaceFlux::DrawAll() +{;} + +void G4PSCylinderSurfaceFlux::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer" << GetName() <entries() << G4endl; + std::map::iterator itr = EvtMap->GetMap()->begin(); + for(; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " flux : " << *(itr->second)*cm*cm << " [cm^-2]" + << G4endl; + } +} + diff --git a/source/digits_hits/scorer/src/G4PSCylinderSurfaceFlux3D.cc b/source/digits_hits/scorer/src/G4PSCylinderSurfaceFlux3D.cc new file mode 100644 index 0000000000..dd63cba8c6 --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSCylinderSurfaceFlux3D.cc @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * 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: G4PSCylinderSurfaceFlux3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSCylinderSurfaceFlux3D +#include "G4PSCylinderSurfaceFlux3D.hh" + +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Flux. +// This Flux version assumes only for G4Tubs shape, and the surface +// is defined at the Rmin plane of the box. +// The current is given in the unit of area. +// e.g. (Number of tracks)/mm2. +// +// Surface is defined at the -Z surface. +// Direction Rmin Rmax +// 0 IN || OUT ->|<- | fFlux_InOut +// 1 IN ->| | fFlux_In +// 2 OUT |<- | fFlux_Out +// +// +// Created: 2008-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + +G4PSCylinderSurfaceFlux3D::G4PSCylinderSurfaceFlux3D(G4String name, + G4int direction, + G4int ni, G4int nj, G4int nk, + G4int di, G4int dj, G4int dk) + :G4PSCylinderSurfaceFlux(name,direction), + fDepthi(di),fDepthj(dj),fDepthk(dk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSCylinderSurfaceFlux3D::~G4PSCylinderSurfaceFlux3D() +{;} + +G4int G4PSCylinderSurfaceFlux3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSDoseDeposit.cc b/source/digits_hits/scorer/src/G4PSDoseDeposit.cc similarity index 97% rename from source/digits_hits/utils/src/G4PSDoseDeposit.cc rename to source/digits_hits/scorer/src/G4PSDoseDeposit.cc index a0ba80b1df..5e0674adcd 100644 --- a/source/digits_hits/utils/src/G4PSDoseDeposit.cc +++ b/source/digits_hits/scorer/src/G4PSDoseDeposit.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSDoseDeposit.cc,v 1.5 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSDoseDeposit.cc,v 1.1 2007/07/11 01:31:02 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSDoseDeposit #include "G4PSDoseDeposit.hh" diff --git a/source/digits_hits/scorer/src/G4PSDoseDeposit3D.cc b/source/digits_hits/scorer/src/G4PSDoseDeposit3D.cc new file mode 100644 index 0000000000..00a01df1f0 --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSDoseDeposit3D.cc @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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: G4PSDoseDeposit3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSDoseDeposit3D +#include "G4PSDoseDeposit3D.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// Primitive scorer class for scoring dose deposit in the geometry volume. +// +// Created: 2008-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSDoseDeposit3D::G4PSDoseDeposit3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int di, G4int dj, G4int dk) + :G4PSDoseDeposit(name), + fDepthi(di),fDepthj(dj),fDepthk(dk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSDoseDeposit3D::~G4PSDoseDeposit3D() +{;} + +G4int G4PSDoseDeposit3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSEnergyDeposit.cc b/source/digits_hits/scorer/src/G4PSEnergyDeposit.cc similarity index 97% rename from source/digits_hits/utils/src/G4PSEnergyDeposit.cc rename to source/digits_hits/scorer/src/G4PSEnergyDeposit.cc index 95a23820b2..b20d11a7d5 100644 --- a/source/digits_hits/utils/src/G4PSEnergyDeposit.cc +++ b/source/digits_hits/scorer/src/G4PSEnergyDeposit.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSEnergyDeposit.cc,v 1.5 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSEnergyDeposit.cc,v 1.1 2007/07/11 01:31:02 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSEnergyDeposit #include "G4PSEnergyDeposit.hh" diff --git a/source/digits_hits/scorer/src/G4PSEnergyDeposit3D.cc b/source/digits_hits/scorer/src/G4PSEnergyDeposit3D.cc new file mode 100644 index 0000000000..3f9a56a76d --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSEnergyDeposit3D.cc @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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: G4PSEnergyDeposit3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSEnergyDeposit3D +#include "G4PSEnergyDeposit3D.hh" + +/////////////////////////////////////////////////////////////////////////////// +// Description: +// This is a primitive scorer class for 3D scoring energy deposit. +// +// Created: 2007-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + +G4PSEnergyDeposit3D::G4PSEnergyDeposit3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSEnergyDeposit(name), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSEnergyDeposit3D::~G4PSEnergyDeposit3D() +{;} + +G4int G4PSEnergyDeposit3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSFlatSurfaceCurrent.cc b/source/digits_hits/scorer/src/G4PSFlatSurfaceCurrent.cc similarity index 82% rename from source/digits_hits/utils/src/G4PSFlatSurfaceCurrent.cc rename to source/digits_hits/scorer/src/G4PSFlatSurfaceCurrent.cc index e56b4764bb..8faded2ebe 100644 --- a/source/digits_hits/utils/src/G4PSFlatSurfaceCurrent.cc +++ b/source/digits_hits/scorer/src/G4PSFlatSurfaceCurrent.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSFlatSurfaceCurrent.cc,v 1.7 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSFlatSurfaceCurrent.cc,v 1.2 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSFlatSurfaceCurrent #include "G4PSFlatSurfaceCurrent.hh" @@ -45,13 +45,16 @@ // 2 OUT |<- | // // Created: 2005-11-14 Tsukasa ASO, Akinori Kimura. +// 17-Nov-2005 T.Aso, Bug fix for area definition. +// 31-Mar-2007 T.Aso, Add option for normalizing by the area. // /////////////////////////////////////////////////////////////////////////////// G4PSFlatSurfaceCurrent::G4PSFlatSurfaceCurrent(G4String name, G4int direction, G4int depth) - :G4VPrimitiveScorer(name,depth),HCID(-1),fDirection(direction) + :G4VPrimitiveScorer(name,depth),HCID(-1),fDirection(direction), + weighted(true),divideByArea(true) {;} G4PSFlatSurfaceCurrent::~G4PSFlatSurfaceCurrent() @@ -70,19 +73,17 @@ G4bool G4PSFlatSurfaceCurrent::ProcessHits(G4Step* aStep,G4TouchableHistory*) G4int dirFlag =IsSelectedSurface(aStep,boxSolid); if ( dirFlag > 0 ) { - G4int index = GetIndex(aStep); - G4double square = 4.*boxSolid->GetXHalfLength()*boxSolid->GetYHalfLength(); - G4TouchableHandle theTouchable = preStep->GetTouchableHandle(); - G4ThreeVector pdirection = preStep->GetMomentumDirection(); - G4ThreeVector localdir = - theTouchable->GetHistory()->GetTopTransform().TransformAxis(pdirection); - G4double current = preStep->GetWeight(); // Current (Particle Weight) - current = current/square; // Current with angle. - - if ( fDirection == fCurrent_InOut || fDirection == dirFlag ){ - EvtMap->add(index,current); - } - + if ( fDirection == fCurrent_InOut || fDirection == dirFlag ){ + G4int index = GetIndex(aStep); + G4TouchableHandle theTouchable = preStep->GetTouchableHandle(); + G4double current = 1.0; + if ( weighted ) current=preStep->GetWeight(); // Current (Particle Weight) + if ( divideByArea ){ + G4double square = 4.*boxSolid->GetXHalfLength()*boxSolid->GetYHalfLength(); + current = current/square; // Normalized by Area + } + EvtMap->add(index,current); + } } return TRUE; @@ -141,9 +142,10 @@ void G4PSFlatSurfaceCurrent::PrintAll() G4cout << " Number of entries " << EvtMap->entries() << G4endl; std::map::iterator itr = EvtMap->GetMap()->begin(); for(; itr != EvtMap->GetMap()->end(); itr++) { - G4cout << " copy no.: " << itr->first - << " current : " << *(itr->second)*cm*cm << " [cm^-2]" - << G4endl; + G4cout << " copy no.: " << itr->first << " current : " ; + if ( divideByArea ) G4cout << *(itr->second)*cm*cm << " [/cm2] "; + else G4cout << *(itr->second) << " [track]"; + G4cout << G4endl; } } diff --git a/source/digits_hits/scorer/src/G4PSFlatSurfaceCurrent3D.cc b/source/digits_hits/scorer/src/G4PSFlatSurfaceCurrent3D.cc new file mode 100644 index 0000000000..c356200a9c --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSFlatSurfaceCurrent3D.cc @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * 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: G4PSFlatSurfaceCurrent3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSFlatSurfaceCurrent3D +#include "G4PSFlatSurfaceCurrent3D.hh" + +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Current. +// Current version assumes only for G4Box shape, and the surface +// is defined at the -Z plane of the box. +// The current is given in the unit of area. +// e.g. (Number of tracks)/mm2. +// +// Surface is defined at the -Z surface. +// Direction -Z +Z +// 0 IN || OUT ->|<- | fCurrent_InOut +// 1 IN ->| | fCurrent_In +// 2 OUT |<- | fCurrent_Out +// +// +// Created: 2008-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + + +G4PSFlatSurfaceCurrent3D::G4PSFlatSurfaceCurrent3D(G4String name, G4int direction, + G4int ni, G4int nj, G4int nk, + G4int di, G4int dj, G4int dk) + + :G4PSFlatSurfaceCurrent(name,direction), + fDepthi(di),fDepthj(dj),fDepthk(dk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSFlatSurfaceCurrent3D::~G4PSFlatSurfaceCurrent3D() +{;} + +G4int G4PSFlatSurfaceCurrent3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSFlatSurfaceFlux.cc b/source/digits_hits/scorer/src/G4PSFlatSurfaceFlux.cc similarity index 98% rename from source/digits_hits/utils/src/G4PSFlatSurfaceFlux.cc rename to source/digits_hits/scorer/src/G4PSFlatSurfaceFlux.cc index 7bbc5d71ca..2ae0d93397 100644 --- a/source/digits_hits/utils/src/G4PSFlatSurfaceFlux.cc +++ b/source/digits_hits/scorer/src/G4PSFlatSurfaceFlux.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSFlatSurfaceFlux.cc,v 1.8 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSFlatSurfaceFlux.cc,v 1.1 2007/07/11 01:31:02 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSFlatSurfaceFlux #include "G4PSFlatSurfaceFlux.hh" diff --git a/source/digits_hits/scorer/src/G4PSFlatSurfaceFlux3D.cc b/source/digits_hits/scorer/src/G4PSFlatSurfaceFlux3D.cc new file mode 100644 index 0000000000..e8a607dd3f --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSFlatSurfaceFlux3D.cc @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * 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: G4PSFlatSurfaceFlux3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSFlatSurfaceFlux3D +#include "G4PSFlatSurfaceFlux3D.hh" + +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Flux. +// Current version assumes only for G4Box shape, and the surface +// is defined at the -Z plane of the box. +// The surface flux is given in the unit of area. +// e.g. sum of 1/cos(T)/mm2, where T is a incident angle of the +// track on the surface. +// +// +// Surface is defined at the -Z surface. +// Direction -Z +Z +// 0 IN || OUT ->|<- | fFlux_InOut +// 1 IN ->| | fFlux_In +// 2 OUT |<- | fFlux_Out +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSFlatSurfaceFlux3D::G4PSFlatSurfaceFlux3D(G4String name, G4int direction, + G4int ni, G4int nj, G4int nk, + G4int di, G4int dj, G4int dk) + :G4PSFlatSurfaceFlux(name,direction), + fDepthi(di),fDepthj(dj),fDepthk(dk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSFlatSurfaceFlux3D::~G4PSFlatSurfaceFlux3D() +{;} + +G4int G4PSFlatSurfaceFlux3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSMinKinEAtGeneration.cc b/source/digits_hits/scorer/src/G4PSMinKinEAtGeneration.cc old mode 100755 new mode 100644 similarity index 97% rename from source/digits_hits/utils/src/G4PSMinKinEAtGeneration.cc rename to source/digits_hits/scorer/src/G4PSMinKinEAtGeneration.cc index 262930affb..72380e2cea --- a/source/digits_hits/utils/src/G4PSMinKinEAtGeneration.cc +++ b/source/digits_hits/scorer/src/G4PSMinKinEAtGeneration.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSMinKinEAtGeneration.cc,v 1.6 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSMinKinEAtGeneration.cc,v 1.1 2007/07/11 01:31:02 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSMinKinEAtGeneration #include "G4PSMinKinEAtGeneration.hh" diff --git a/source/digits_hits/scorer/src/G4PSMinKinEAtGeneration3D.cc b/source/digits_hits/scorer/src/G4PSMinKinEAtGeneration3D.cc new file mode 100644 index 0000000000..b60f1e629d --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSMinKinEAtGeneration3D.cc @@ -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: G4PSMinKinEAtGeneration3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSMinKinEAtGeneration3D +#include "G4PSMinKinEAtGeneration3D.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring minimum energy of +// newly produced particles in the geometry. +// +// Created: 2007-08-14 Tsukasa ASO +// +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSMinKinEAtGeneration3D::G4PSMinKinEAtGeneration3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSMinKinEAtGeneration(name), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSMinKinEAtGeneration3D::~G4PSMinKinEAtGeneration3D() +{;} + +G4int G4PSMinKinEAtGeneration3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSNofCollision.cc b/source/digits_hits/scorer/src/G4PSNofCollision.cc similarity index 97% rename from source/digits_hits/utils/src/G4PSNofCollision.cc rename to source/digits_hits/scorer/src/G4PSNofCollision.cc index 71b9e987c4..d7315aca01 100644 --- a/source/digits_hits/utils/src/G4PSNofCollision.cc +++ b/source/digits_hits/scorer/src/G4PSNofCollision.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSNofCollision.cc,v 1.2 2007/06/21 15:03:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSNofCollision.cc,v 1.1 2007/07/11 01:31:02 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSNofCollision #include "G4PSNofCollision.hh" diff --git a/source/digits_hits/scorer/src/G4PSNofCollision3D.cc b/source/digits_hits/scorer/src/G4PSNofCollision3D.cc new file mode 100644 index 0000000000..38daa4dc0d --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSNofCollision3D.cc @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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: G4PSNofCollision3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSNofCollision3D +#include "G4PSNofCollision3D.hh" + +////////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Number of Steps in the cell. +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSNofCollision3D::G4PSNofCollision3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSNofCollision(name), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSNofCollision3D::~G4PSNofCollision3D() +{;} + +G4int G4PSNofCollision3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSNofSecondary.cc b/source/digits_hits/scorer/src/G4PSNofSecondary.cc old mode 100755 new mode 100644 similarity index 82% rename from source/digits_hits/utils/src/G4PSNofSecondary.cc rename to source/digits_hits/scorer/src/G4PSNofSecondary.cc index e89e81f682..5dd1053990 --- a/source/digits_hits/utils/src/G4PSNofSecondary.cc +++ b/source/digits_hits/scorer/src/G4PSNofSecondary.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSNofSecondary.cc,v 1.4 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSNofSecondary.cc,v 1.2 2007/08/14 21:23:51 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSNofSecondary #include "G4PSNofSecondary.hh" @@ -38,7 +38,7 @@ // G4PSNofSecondary::G4PSNofSecondary(G4String name, G4int depth) - :G4VPrimitiveScorer(name,depth),HCID(-1) + :G4VPrimitiveScorer(name,depth),HCID(-1),particleDef(0) {;} G4PSNofSecondary::~G4PSNofSecondary() @@ -50,6 +50,9 @@ G4bool G4PSNofSecondary::ProcessHits(G4Step* aStep,G4TouchableHistory*) if ( aStep->GetTrack()->GetCurrentStepNumber() != 1) return FALSE; //- check for this is not a primary particle. e.g. ParentID > 0 . if ( aStep->GetTrack()->GetParentID() == 0 ) return FALSE; + //- check the particle if the partifle definition is given. + if ( particleDef && particleDef != aStep->GetTrack()->GetDefinition() ) + return FALSE; // //- This is a newly produced secondary particle. G4int index = GetIndex(aStep); @@ -58,6 +61,19 @@ G4bool G4PSNofSecondary::ProcessHits(G4Step* aStep,G4TouchableHistory*) return TRUE; } +void G4PSNofSecondary::SetParticle(const G4String& particleName){ + G4ParticleDefinition* pd = + G4ParticleTable::GetParticleTable()->FindParticle(particleName); + if(!pd) { + G4String msg = "Particle <"; + msg += particleName; + msg += "> not found."; + G4Exception("G4SDParticleFilter::add()", + "DetUtil0002",FatalException,msg); + } + particleDef = pd; +} + void G4PSNofSecondary::Initialize(G4HCofThisEvent* HCE) { EvtMap = new G4THitsMap(detector->GetName(),GetName()); diff --git a/source/digits_hits/scorer/src/G4PSNofSecondary3D.cc b/source/digits_hits/scorer/src/G4PSNofSecondary3D.cc new file mode 100644 index 0000000000..5f2bfd79a5 --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSNofSecondary3D.cc @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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: G4PSNofSecondary3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSNofSecondary3D +#include "G4PSNofSecondary3D.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Number of particles +// generated in the geometry. +// +// Created: 2007-08-14 Tsukasa ASO +//////////////////////////////////////////////////////////////////////////////// + +G4PSNofSecondary3D::G4PSNofSecondary3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSNofSecondary(name), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSNofSecondary3D::~G4PSNofSecondary3D() +{;} + +G4int G4PSNofSecondary3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSNofStep.cc b/source/digits_hits/scorer/src/G4PSNofStep.cc similarity index 92% rename from source/digits_hits/utils/src/G4PSNofStep.cc rename to source/digits_hits/scorer/src/G4PSNofStep.cc index 5454603b9e..33adb49125 100644 --- a/source/digits_hits/utils/src/G4PSNofStep.cc +++ b/source/digits_hits/scorer/src/G4PSNofStep.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSNofStep.cc,v 1.6 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSNofStep.cc,v 1.2 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSNofStep #include "G4PSNofStep.hh" @@ -38,7 +38,7 @@ // G4PSNofStep::G4PSNofStep(G4String name, G4int depth) - :G4VPrimitiveScorer(name,depth),HCID(-1) + :G4VPrimitiveScorer(name,depth),HCID(-1),boundaryFlag(false) {;} G4PSNofStep::~G4PSNofStep() @@ -46,6 +46,9 @@ G4PSNofStep::~G4PSNofStep() G4bool G4PSNofStep::ProcessHits(G4Step* aStep,G4TouchableHistory*) { + if ( boundaryFlag ) { + if ( aStep->GetStepLength() == 0. ) return FALSE; + } G4int index = GetIndex(aStep); G4double val = 1.0; EvtMap->add(index,val); diff --git a/source/digits_hits/scorer/src/G4PSNofStep3D.cc b/source/digits_hits/scorer/src/G4PSNofStep3D.cc new file mode 100644 index 0000000000..31f53f1d59 --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSNofStep3D.cc @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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: G4PSNofStep3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSNofStep3D +#include "G4PSNofStep3D.hh" + +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Number of Steps in the cell. +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSNofStep3D::G4PSNofStep3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSNofStep(name), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSNofStep3D::~G4PSNofStep3D() +{;} + +G4int G4PSNofStep3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSPassageCurrent.cc b/source/digits_hits/scorer/src/G4PSPassageCellCurrent.cc similarity index 81% rename from source/digits_hits/utils/src/G4PSPassageCurrent.cc rename to source/digits_hits/scorer/src/G4PSPassageCellCurrent.cc index 71cd1bc55c..d23ab9de8c 100644 --- a/source/digits_hits/utils/src/G4PSPassageCurrent.cc +++ b/source/digits_hits/scorer/src/G4PSPassageCellCurrent.cc @@ -24,11 +24,11 @@ // ******************************************************************** // // -// $Id: G4PSPassageCurrent.cc,v 1.5 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSPassageCellCurrent.cc,v 1.1 2007/08/14 21:30:46 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// G4PSPassageCurrent -#include "G4PSPassageCurrent.hh" +// G4PSPassageCellCurrent +#include "G4PSPassageCellCurrent.hh" #include "G4StepStatus.hh" #include "G4Track.hh" #include "G4VSolid.hh" @@ -43,18 +43,19 @@ // /////////////////////////////////////////////////////////////////////////////// -G4PSPassageCurrent::G4PSPassageCurrent(G4String name, G4int depth) - :G4VPrimitiveScorer(name,depth),HCID(-1),fCurrentTrkID(-1),fCurrent(0) +G4PSPassageCellCurrent::G4PSPassageCellCurrent(G4String name, G4int depth) + :G4VPrimitiveScorer(name,depth),HCID(-1),fCurrentTrkID(-1),fCurrent(0), + weighted(true) {;} -G4PSPassageCurrent::~G4PSPassageCurrent() +G4PSPassageCellCurrent::~G4PSPassageCellCurrent() {;} -G4bool G4PSPassageCurrent::ProcessHits(G4Step* aStep,G4TouchableHistory*) +G4bool G4PSPassageCellCurrent::ProcessHits(G4Step* aStep,G4TouchableHistory*) { if ( IsPassed(aStep) ) { - fCurrent = aStep->GetPreStepPoint()->GetWeight(); + if(weighted) fCurrent = aStep->GetPreStepPoint()->GetWeight(); G4int index = GetIndex(aStep); EvtMap->add(index,fCurrent); } @@ -62,7 +63,7 @@ G4bool G4PSPassageCurrent::ProcessHits(G4Step* aStep,G4TouchableHistory*) return TRUE; } -G4bool G4PSPassageCurrent::IsPassed(G4Step* aStep){ +G4bool G4PSPassageCellCurrent::IsPassed(G4Step* aStep){ G4bool Passed = FALSE; G4bool IsEnter = aStep->GetPreStepPoint()->GetStepStatus() == fGeomBoundary; @@ -85,7 +86,7 @@ G4bool G4PSPassageCurrent::IsPassed(G4Step* aStep){ return Passed; } -void G4PSPassageCurrent::Initialize(G4HCofThisEvent* HCE) +void G4PSPassageCellCurrent::Initialize(G4HCofThisEvent* HCE) { fCurrentTrkID = -1; @@ -96,18 +97,18 @@ void G4PSPassageCurrent::Initialize(G4HCofThisEvent* HCE) } -void G4PSPassageCurrent::EndOfEvent(G4HCofThisEvent*) +void G4PSPassageCellCurrent::EndOfEvent(G4HCofThisEvent*) { } -void G4PSPassageCurrent::clear(){ +void G4PSPassageCellCurrent::clear(){ EvtMap->clear(); } -void G4PSPassageCurrent::DrawAll() +void G4PSPassageCellCurrent::DrawAll() {;} -void G4PSPassageCurrent::PrintAll() +void G4PSPassageCellCurrent::PrintAll() { G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; G4cout << " PrimitiveScorer " << GetName() <GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSPassageCellFlux.cc b/source/digits_hits/scorer/src/G4PSPassageCellFlux.cc similarity index 98% rename from source/digits_hits/utils/src/G4PSPassageCellFlux.cc rename to source/digits_hits/scorer/src/G4PSPassageCellFlux.cc index 26c513df18..253a1c7d18 100644 --- a/source/digits_hits/utils/src/G4PSPassageCellFlux.cc +++ b/source/digits_hits/scorer/src/G4PSPassageCellFlux.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSPassageCellFlux.cc,v 1.6 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSPassageCellFlux.cc,v 1.1 2007/07/11 01:31:03 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSPassageCellFlux #include "G4PSPassageCellFlux.hh" diff --git a/source/digits_hits/scorer/src/G4PSPassageCellFlux3D.cc b/source/digits_hits/scorer/src/G4PSPassageCellFlux3D.cc new file mode 100644 index 0000000000..e248de758f --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSPassageCellFlux3D.cc @@ -0,0 +1,68 @@ +// +// ******************************************************************** +// * 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: G4PSPassageCellFlux3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSPassageCellFlux3D +#include "G4PSPassageCellFlux3D.hh" + +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring cell flux. +// The Cell Flux is defined by a track length divided by a geometry +// volume, where only tracks passing through the geometry are taken +// into account. e.g. the unit of Cell Flux is mm/mm3. +// +// If you want to score all tracks in the geometry volume, +// please use G4PSCellFlux. +// +// Created: 2007-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + +G4PSPassageCellFlux3D::G4PSPassageCellFlux3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int di, G4int dj, G4int dk) + :G4PSPassageCellFlux(name), + fDepthi(di),fDepthj(dj),fDepthk(dk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSPassageCellFlux3D::~G4PSPassageCellFlux3D() +{;} + +G4int G4PSPassageCellFlux3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSPassageTrackLength.cc b/source/digits_hits/scorer/src/G4PSPassageTrackLength.cc similarity index 97% rename from source/digits_hits/utils/src/G4PSPassageTrackLength.cc rename to source/digits_hits/scorer/src/G4PSPassageTrackLength.cc index 80f098771e..4272b4f9af 100644 --- a/source/digits_hits/utils/src/G4PSPassageTrackLength.cc +++ b/source/digits_hits/scorer/src/G4PSPassageTrackLength.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSPassageTrackLength.cc,v 1.4 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSPassageTrackLength.cc,v 1.1 2007/07/11 01:31:03 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSPassageTrackLength #include "G4PSPassageTrackLength.hh" diff --git a/source/digits_hits/scorer/src/G4PSPassageTrackLength3D.cc b/source/digits_hits/scorer/src/G4PSPassageTrackLength3D.cc new file mode 100644 index 0000000000..62dd239fd6 --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSPassageTrackLength3D.cc @@ -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: G4PSPassageTrackLength3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSPassageTrackLength3D +#include "G4PSPassageTrackLength3D.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring only track length. +// The tracks which passed a geometry is taken into account. +// +// +// Created: 2008-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSPassageTrackLength3D::G4PSPassageTrackLength3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSPassageTrackLength(name), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSPassageTrackLength3D::~G4PSPassageTrackLength3D() +{;} + +G4int G4PSPassageTrackLength3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSPopulation.cc b/source/digits_hits/scorer/src/G4PSPopulation.cc similarity index 97% rename from source/digits_hits/utils/src/G4PSPopulation.cc rename to source/digits_hits/scorer/src/G4PSPopulation.cc index c7fc643c5e..062fd19da9 100644 --- a/source/digits_hits/utils/src/G4PSPopulation.cc +++ b/source/digits_hits/scorer/src/G4PSPopulation.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSPopulation.cc,v 1.3 2007/06/21 15:04:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSPopulation.cc,v 1.1 2007/07/11 01:31:03 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSPopulation #include "G4PSPopulation.hh" diff --git a/source/digits_hits/scorer/src/G4PSPopulation3D.cc b/source/digits_hits/scorer/src/G4PSPopulation3D.cc new file mode 100644 index 0000000000..861bfaa853 --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSPopulation3D.cc @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * 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: G4PSPopulation3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSPopulation3D +#include "G4PSPopulation3D.hh" +////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring population in a cell. +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSPopulation3D::G4PSPopulation3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSPopulation(name), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSPopulation3D::~G4PSPopulation3D() +{;} + +G4int G4PSPopulation3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSSphereSurfaceCurrent.cc b/source/digits_hits/scorer/src/G4PSSphereSurfaceCurrent.cc similarity index 84% rename from source/digits_hits/utils/src/G4PSSphereSurfaceCurrent.cc rename to source/digits_hits/scorer/src/G4PSSphereSurfaceCurrent.cc index bc5bd460c9..5a631503dc 100644 --- a/source/digits_hits/utils/src/G4PSSphereSurfaceCurrent.cc +++ b/source/digits_hits/scorer/src/G4PSSphereSurfaceCurrent.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSSphereSurfaceCurrent.cc,v 1.7 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSSphereSurfaceCurrent.cc,v 1.2 2007/08/14 21:23:52 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSSphereSurfaceCurrent #include "G4PSSphereSurfaceCurrent.hh" @@ -50,7 +50,8 @@ G4PSSphereSurfaceCurrent::G4PSSphereSurfaceCurrent(G4String name, G4int direction, G4int depth) - :G4VPrimitiveScorer(name,depth),HCID(-1),fDirection(direction) + :G4VPrimitiveScorer(name,depth),HCID(-1),fDirection(direction), + weighted(true),divideByArea(true) {;} G4PSSphereSurfaceCurrent::~G4PSSphereSurfaceCurrent() @@ -69,18 +70,20 @@ G4bool G4PSSphereSurfaceCurrent::ProcessHits(G4Step* aStep,G4TouchableHistory*) G4int dirFlag =IsSelectedSurface(aStep,sphereSolid); if ( dirFlag > 0 ) { - - G4double radi = sphereSolid->GetInsideRadius(); - G4double dph = sphereSolid->GetDeltaPhiAngle()/radian; - G4double stth = sphereSolid->GetStartThetaAngle()/radian; - G4double enth = stth+sphereSolid->GetDeltaThetaAngle()/radian; - G4double square = radi*radi*dph*( -std::cos(enth) + std::cos(stth) ); - - G4double current = preStep->GetWeight(); // Current (Particle Weight) - current = current/square; // Current with angle. if ( fDirection == fCurrent_InOut || fDirection == dirFlag ){ - G4int index = GetIndex(aStep); - EvtMap->add(index,current); + G4double radi = sphereSolid->GetInsideRadius(); + G4double dph = sphereSolid->GetDeltaPhiAngle()/radian; + G4double stth = sphereSolid->GetStartThetaAngle()/radian; + G4double enth = stth+sphereSolid->GetDeltaThetaAngle()/radian; + G4double current = 1.0; + if ( weighted) current = preStep->GetWeight(); // Current (Particle Weight) + if ( divideByArea ){ + G4double square = radi*radi*dph*( -std::cos(enth) + std::cos(stth) ); + current = current/square; // Current with angle. + } + + G4int index = GetIndex(aStep); + EvtMap->add(index,current); } } @@ -150,9 +153,10 @@ void G4PSSphereSurfaceCurrent::PrintAll() G4cout << " Number of entries " << EvtMap->entries() << G4endl; std::map::iterator itr = EvtMap->GetMap()->begin(); for(; itr != EvtMap->GetMap()->end(); itr++) { - G4cout << " copy no.: " << itr->first - << " current : " << *(itr->second) - << G4endl; + G4cout << " copy no.: " << itr->first << " current : " ; + if ( divideByArea ) G4cout << *(itr->second)*cm*cm << " [/cm2]" ; + else G4cout << *(itr->second)*cm*cm << " [track]" ; + G4cout << G4endl; } } diff --git a/source/digits_hits/scorer/src/G4PSSphereSurfaceCurrent3D.cc b/source/digits_hits/scorer/src/G4PSSphereSurfaceCurrent3D.cc new file mode 100644 index 0000000000..7df803a58e --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSSphereSurfaceCurrent3D.cc @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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: G4PSSphereSurfaceCurrent3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSSphereSurfaceCurrent3D +#include "G4PSSphereSurfaceCurrent3D.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Current. +// Current version assumes only for G4Sphere shape, and the surface +// is defined at the inside of the sphere. +// The current is given in the unit of area. +// e.g. (Number of tracks)/mm2. +// +// Surface is defined at the inside of sphere. +// Direction -Rmin +Rmax +// 0 IN || OUT ->|<- | fCurrent_InOut +// 1 IN ->| | fCurrent_In +// 2 OUT |<- | fCurrent_Out +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSSphereSurfaceCurrent3D::G4PSSphereSurfaceCurrent3D(G4String name, G4int direction, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSSphereSurfaceCurrent(name,direction), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSSphereSurfaceCurrent3D::~G4PSSphereSurfaceCurrent3D() +{;} + +G4int G4PSSphereSurfaceCurrent3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSSphereSurfaceFlux.cc b/source/digits_hits/scorer/src/G4PSSphereSurfaceFlux.cc similarity index 98% rename from source/digits_hits/utils/src/G4PSSphereSurfaceFlux.cc rename to source/digits_hits/scorer/src/G4PSSphereSurfaceFlux.cc index 892ce3a6e7..eb235ba8b2 100644 --- a/source/digits_hits/utils/src/G4PSSphereSurfaceFlux.cc +++ b/source/digits_hits/scorer/src/G4PSSphereSurfaceFlux.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSSphereSurfaceFlux.cc,v 1.3 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSSphereSurfaceFlux.cc,v 1.1 2007/07/11 01:31:03 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSSphereSurfaceFlux #include "G4PSSphereSurfaceFlux.hh" diff --git a/source/digits_hits/scorer/src/G4PSSphereSurfaceFlux3D.cc b/source/digits_hits/scorer/src/G4PSSphereSurfaceFlux3D.cc new file mode 100644 index 0000000000..1d291b337e --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSSphereSurfaceFlux3D.cc @@ -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: G4PSSphereSurfaceFlux3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSSphereSurfaceFlux3D +#include "G4PSSphereSurfaceFlux3D.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Flux. +// Flux version assumes only for G4Sphere shape, and the surface +// is defined at the inside of the sphere. +// The current is given in the unit of area. +// e.g. (Number of tracks)/mm2. +// +// Surface is defined at the inside of sphere. +// Direction -Rmin +Rmax +// 0 IN || OUT ->|<- | fFlux_InOut +// 1 IN ->| | fFlux_In +// 2 OUT |<- | fFlux_Out +// +// Created: 2007-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + +G4PSSphereSurfaceFlux3D::G4PSSphereSurfaceFlux3D(G4String name, G4int direction, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSSphereSurfaceFlux(name,direction), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSSphereSurfaceFlux3D::~G4PSSphereSurfaceFlux3D() +{;} + +G4int G4PSSphereSurfaceFlux3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/scorer/src/G4PSTermination.cc b/source/digits_hits/scorer/src/G4PSTermination.cc new file mode 100644 index 0000000000..9b7bb7be40 --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSTermination.cc @@ -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: G4PSTermination.cc,v 1.2 2007/12/10 16:29:42 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSTermination +#include "G4PSTermination.hh" + +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring only terminated traks inside +// the cell. +// +// Created: 2007-02-02 Tsukasa ASO, Akinori Kimura. +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSTermination::G4PSTermination(G4String name, G4int depth) + :G4VPrimitiveScorer(name,depth),HCID(-1),weighted(false) +{;} + +G4PSTermination::~G4PSTermination() +{;} + +G4bool G4PSTermination::ProcessHits(G4Step* aStep,G4TouchableHistory*) +{ + if ( aStep->GetTrack()->GetTrackStatus() != fStopAndKill ) return FALSE; + + G4int index = GetIndex(aStep); + G4double val = 1.0; + if(weighted) val *= aStep->GetPreStepPoint()->GetWeight(); + EvtMap->add(index,val); + return TRUE; +} + +void G4PSTermination::Initialize(G4HCofThisEvent* HCE) +{ + EvtMap = new G4THitsMap(detector->GetName(),GetName()); + if(HCID < 0) {HCID = GetCollectionID(0);} + HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap); +} + +void G4PSTermination::EndOfEvent(G4HCofThisEvent*) +{;} + +void G4PSTermination::clear(){ + EvtMap->clear(); +} + +void G4PSTermination::DrawAll() +{;} + +void G4PSTermination::PrintAll() +{ + G4cout << " MultiFunctionalDet " << detector->GetName() << G4endl; + G4cout << " PrimitiveScorer " << GetName() << G4endl; + G4cout << " Number of entries " << EvtMap->entries() << G4endl; + std::map::iterator itr = EvtMap->GetMap()->begin(); + for(; itr != EvtMap->GetMap()->end(); itr++) { + G4cout << " copy no.: " << itr->first + << " collisions: " << *(itr->second) + << G4endl; + } +} + diff --git a/source/digits_hits/scorer/src/G4PSTermination3D.cc b/source/digits_hits/scorer/src/G4PSTermination3D.cc new file mode 100644 index 0000000000..d2228e17bf --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSTermination3D.cc @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * 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: G4PSTermination3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSTermination3D +#include "G4PSTermination3D.hh" + +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring Surface Current. +// Current version assumes only for G4Box shape, and the surface +// is defined at the -Z plane of the box. +// The current is given in the unit of area. +// e.g. (Number of tracks)/mm2. +// +// Surface is defined at the -Z surface. +// Direction -Z +Z +// 0 IN || OUT ->|<- | fCurrent_InOut +// 1 IN ->| | fCurrent_In +// 2 OUT |<- | fCurrent_Out +// +// +// Created: 2008-08-14 Tsukasa ASO +/////////////////////////////////////////////////////////////////////////////// + + +G4PSTermination3D::G4PSTermination3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int di, G4int dj, G4int dk) + :G4PSTermination(name), + fDepthi(di),fDepthj(dj),fDepthk(dk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSTermination3D::~G4PSTermination3D() +{;} + +G4int G4PSTermination3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSTrackCounter.cc b/source/digits_hits/scorer/src/G4PSTrackCounter.cc similarity index 97% rename from source/digits_hits/utils/src/G4PSTrackCounter.cc rename to source/digits_hits/scorer/src/G4PSTrackCounter.cc index 8d466622a3..9ff0c92ca4 100644 --- a/source/digits_hits/utils/src/G4PSTrackCounter.cc +++ b/source/digits_hits/scorer/src/G4PSTrackCounter.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSTrackCounter.cc,v 1.2 2007/06/21 15:04:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSTrackCounter.cc,v 1.1 2007/07/11 01:31:03 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSTrackCounter #include "G4PSTrackCounter.hh" diff --git a/source/digits_hits/scorer/src/G4PSTrackCounter3D.cc b/source/digits_hits/scorer/src/G4PSTrackCounter3D.cc new file mode 100644 index 0000000000..e28099242b --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSTrackCounter3D.cc @@ -0,0 +1,64 @@ +// +// ******************************************************************** +// * 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: G4PSTrackCounter3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSTrackCounter3D +#include "G4PSTrackCounter3D.hh" + + +/////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring number of tracks in a cell. +// +// Created: 2007-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSTrackCounter3D::G4PSTrackCounter3D(G4String name,G4int direction, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSTrackCounter(name,direction), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSTrackCounter3D::~G4PSTrackCounter3D() +{;} + +G4int G4PSTrackCounter3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4PSTrackLength.cc b/source/digits_hits/scorer/src/G4PSTrackLength.cc similarity index 97% rename from source/digits_hits/utils/src/G4PSTrackLength.cc rename to source/digits_hits/scorer/src/G4PSTrackLength.cc index 34afa4ee56..4898e2efbe 100644 --- a/source/digits_hits/utils/src/G4PSTrackLength.cc +++ b/source/digits_hits/scorer/src/G4PSTrackLength.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PSTrackLength.cc,v 1.6 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PSTrackLength.cc,v 1.1 2007/07/11 01:31:03 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4PSTrackLength #include "G4PSTrackLength.hh" diff --git a/source/digits_hits/scorer/src/G4PSTrackLength3D.cc b/source/digits_hits/scorer/src/G4PSTrackLength3D.cc new file mode 100644 index 0000000000..25c70f153f --- /dev/null +++ b/source/digits_hits/scorer/src/G4PSTrackLength3D.cc @@ -0,0 +1,64 @@ +// +// ******************************************************************** +// * 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: G4PSTrackLength3D.cc,v 1.3 2007/08/29 06:36:42 taso Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// G4PSTrackLength3D +#include "G4PSTrackLength3D.hh" + +//////////////////////////////////////////////////////////////////////////////// +// (Description) +// This is a primitive scorer class for scoring track length. +// +// +// Created: 2008-08-14 Tsukasa ASO +// +/////////////////////////////////////////////////////////////////////////////// + +G4PSTrackLength3D::G4PSTrackLength3D(G4String name, + G4int ni, G4int nj, G4int nk, + G4int depi, G4int depj, G4int depk) + :G4PSTrackLength(name), + fDepthi(depi),fDepthj(depj),fDepthk(depk) +{ + fNi=ni; + fNj=nj; + fNk=nk; +} + +G4PSTrackLength3D::~G4PSTrackLength3D() +{;} + +G4int G4PSTrackLength3D::GetIndex(G4Step* aStep) +{ + const G4VTouchable* touchable = aStep->GetPreStepPoint()->GetTouchable(); + G4int i = touchable->GetReplicaNumber(fDepthi); + G4int j = touchable->GetReplicaNumber(fDepthj); + G4int k = touchable->GetReplicaNumber(fDepthk); + + return i*fNj*fNk+j*fNk+k; +} diff --git a/source/digits_hits/utils/src/G4SDChargedFilter.cc b/source/digits_hits/scorer/src/G4SDChargedFilter.cc similarity index 96% rename from source/digits_hits/utils/src/G4SDChargedFilter.cc rename to source/digits_hits/scorer/src/G4SDChargedFilter.cc index 4174837d52..4c4a7427fa 100644 --- a/source/digits_hits/utils/src/G4SDChargedFilter.cc +++ b/source/digits_hits/scorer/src/G4SDChargedFilter.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SDChargedFilter.cc,v 1.3 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SDChargedFilter.cc,v 1.1 2007/07/11 01:31:03 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VSensitiveDetector #include "G4SDChargedFilter.hh" diff --git a/source/digits_hits/utils/src/G4SDKineticEnergyFilter.cc b/source/digits_hits/scorer/src/G4SDKineticEnergyFilter.cc similarity index 96% rename from source/digits_hits/utils/src/G4SDKineticEnergyFilter.cc rename to source/digits_hits/scorer/src/G4SDKineticEnergyFilter.cc index 58cafefa8e..fea72d494d 100644 --- a/source/digits_hits/utils/src/G4SDKineticEnergyFilter.cc +++ b/source/digits_hits/scorer/src/G4SDKineticEnergyFilter.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SDKineticEnergyFilter.cc,v 1.6 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SDKineticEnergyFilter.cc,v 1.1 2007/07/11 01:31:03 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VSensitiveDetector #include "G4SDKineticEnergyFilter.hh" diff --git a/source/digits_hits/utils/src/G4SDNeutralFilter.cc b/source/digits_hits/scorer/src/G4SDNeutralFilter.cc similarity index 96% rename from source/digits_hits/utils/src/G4SDNeutralFilter.cc rename to source/digits_hits/scorer/src/G4SDNeutralFilter.cc index 4141762ed3..553943fd2a 100644 --- a/source/digits_hits/utils/src/G4SDNeutralFilter.cc +++ b/source/digits_hits/scorer/src/G4SDNeutralFilter.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SDNeutralFilter.cc,v 1.3 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SDNeutralFilter.cc,v 1.1 2007/07/11 01:31:03 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VSensitiveDetector #include "G4SDNeutralFilter.hh" diff --git a/source/digits_hits/utils/src/G4SDParticleFilter.cc b/source/digits_hits/scorer/src/G4SDParticleFilter.cc similarity index 97% rename from source/digits_hits/utils/src/G4SDParticleFilter.cc rename to source/digits_hits/scorer/src/G4SDParticleFilter.cc index 6a6ee67ffc..1a6f24d9d7 100644 --- a/source/digits_hits/utils/src/G4SDParticleFilter.cc +++ b/source/digits_hits/scorer/src/G4SDParticleFilter.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SDParticleFilter.cc,v 1.4 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SDParticleFilter.cc,v 1.1 2007/07/11 01:31:03 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VSensitiveDetector #include "G4SDParticleFilter.hh" diff --git a/source/digits_hits/utils/src/G4SDParticleWithEnergyFilter.cc b/source/digits_hits/scorer/src/G4SDParticleWithEnergyFilter.cc similarity index 96% rename from source/digits_hits/utils/src/G4SDParticleWithEnergyFilter.cc rename to source/digits_hits/scorer/src/G4SDParticleWithEnergyFilter.cc index fd7dd650c4..88720ff08d 100644 --- a/source/digits_hits/utils/src/G4SDParticleWithEnergyFilter.cc +++ b/source/digits_hits/scorer/src/G4SDParticleWithEnergyFilter.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SDParticleWithEnergyFilter.cc,v 1.3 2007/05/18 00:00:38 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SDParticleWithEnergyFilter.cc,v 1.1 2007/07/11 01:31:03 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VSensitiveDetector #include "G4SDParticleWithEnergyFilter.hh" diff --git a/source/digits_hits/utils/GNUmakefile b/source/digits_hits/utils/GNUmakefile index dfe579323a..7035136907 100644 --- a/source/digits_hits/utils/GNUmakefile +++ b/source/digits_hits/utils/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.4 2007/06/05 14:26:53 asaim Exp $ +# $Id: GNUmakefile,v 1.9 2007/11/14 20:41:17 asaim Exp $ # -------------------------------------------------------------- # GNUmakefile for digits+hits library. Makoto Asai, 1/11/96. # -------------------------------------------------------------- @@ -21,12 +21,15 @@ CPPFLAGS += \ -I$(G4BASE)/materials/include \ -I$(G4BASE)/geometry/management/include \ -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/divisions/include \ -I$(G4BASE)/geometry/navigation/include \ -I$(G4BASE)/geometry/solids/CSG/include \ -I$(G4BASE)/digits_hits/hits/include \ -I$(G4BASE)/digits_hits/detector/include \ -I$(G4BASE)/digits_hits/digits/include \ + -I$(G4BASE)/digits_hits/scorer/include \ -I$(G4BASE)/intercoms/include \ + -I$(G4BASE)/graphics_reps/include include $(G4INSTALL)/config/common.gmk diff --git a/source/digits_hits/utils/History b/source/digits_hits/utils/History index 8be04e1f0e..ca9d4e1587 100644 --- a/source/digits_hits/utils/History +++ b/source/digits_hits/utils/History @@ -1,4 +1,4 @@ -$Id: History,v 1.7 2007/06/06 07:48:45 ahoward Exp $ +$Id: History,v 1.14 2007/11/06 06:18:47 asaim Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,30 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +November 06, 2007 M.Asai (detutils-V09-00-06) +- Tntroducing DrawColumn() method and related UI commands. + +November 04, 2007 M.Asai (detutils-V09-00-05) +- Introducing G4VScoreColorMap and its concrete class G4DefaultLinearColorMap. + +November 03, 2007 M.Asai (detutils-V09-00-04) +- Split messenger class. +- Command name changed. +- Commands for cylindrical and spharic mesh disabled. + +November 01, 2007 M.Asai (detutils-V09-00-03) +- Temporary tag after removing G4ScoringTubs. + +November 01, 2007 M.Asai (detutils-V09-00-02) +- Temporary tag before removing G4ScoringTubs. + +July 13, 2007 M.Asai (detutils-V09-00-01) +- First implementation of basic classes +- test/test1 + +July 11, 2007 M.Asai (detutils-V09-00-00) +- Move all scorers and filters to digits_hits/scorer. + June 06, 2007 A.Howard (detutils-V08-03-02) - Added modified G4PSPopulation removing event (circular) dependency (file form T.Aso). diff --git a/source/digits_hits/utils/include/G4DefaultLinearColorMap.hh b/source/digits_hits/utils/include/G4DefaultLinearColorMap.hh new file mode 100644 index 0000000000..0f8ffd3a2e --- /dev/null +++ b/source/digits_hits/utils/include/G4DefaultLinearColorMap.hh @@ -0,0 +1,48 @@ +// +// ******************************************************************** +// * 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: G4DefaultLinearColorMap.hh,v 1.1 2007/11/04 04:06:08 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4DefaultLinearColorMap_h +#define G4DefaultLinearColorMap_h 1 + +#include "globals.hh" +#include "G4VScoreColorMap.hh" + +class G4DefaultLinearColorMap : public G4VScoreColorMap +{ + public: + G4DefaultLinearColorMap(G4String mName); + virtual ~G4DefaultLinearColorMap(); + + public: + virtual void GetMapColor(G4double val, G4double color[4]); +}; + +#endif + diff --git a/source/digits_hits/utils/include/G4ScoreQuantityMessenger.hh b/source/digits_hits/utils/include/G4ScoreQuantityMessenger.hh new file mode 100644 index 0000000000..9bd21db41b --- /dev/null +++ b/source/digits_hits/utils/include/G4ScoreQuantityMessenger.hh @@ -0,0 +1,126 @@ +// +// ******************************************************************** +// * 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: G4ScoreQuantityMessenger.hh,v 1.4 2007/11/06 17:17:14 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// (HISTORY) +// 03-Sep-2007 T.Aso Command definitions are introduced. +// 01-Nov-2007 M.Asai Class is splited into two. + + +#ifndef G4ScoreQuantityMessenger_h +#define G4ScoreQuantityMessenger_h 1 + +#include "G4UImessenger.hh" + +#include +#include "G4String.hh" + +class G4ScoringManager; +class G4VScoringMesh; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcommand; + +typedef std::vector G4TokenVec; + +// class description: +// +// This is a concrete class of G4UImessenger which handles the commands for +// G4ScoringManager. +// + +class G4ScoreQuantityMessenger: public G4UImessenger +{ + + public: + G4ScoreQuantityMessenger(G4ScoringManager * SManager); + + ~G4ScoreQuantityMessenger(); + + void SetNewValue(G4UIcommand * command,G4String newValues); + + G4String GetCurrentValue(G4UIcommand * ); + + protected: + + void FillTokenVec(G4String newValues,G4TokenVec& token); + + void FParticleCommand(G4VScoringMesh* mesh,G4TokenVec& token); + void FParticleWithEnergyCommand(G4VScoringMesh* mesh,G4TokenVec& token); + + private: + void QuantityCommands(); + void FilterCommands(); + + private: + G4ScoringManager* fSMan; + // + // Quantity commands + G4UIdirectory* quantityDir; + G4UIcmdWithAString* qTouchCmd; + // + G4UIcmdWithAString* qCellChgCmd; + G4UIcmdWithAString* qCellFluxCmd; + G4UIcmdWithAString* qPassCellFluxCmd; + G4UIcmdWithAString* qeDepCmd; + G4UIcmdWithAString* qdoseDepCmd; + G4UIcmdWithAString* qnOfStepCmd; + G4UIcmdWithAString* qnOfSecondaryCmd; + // + G4UIcommand* qTrackLengthCmd; + G4UIcommand* qPassCellCurrCmd; + G4UIcommand* qPassTrackLengthCmd; + G4UIcommand* qFlatSurfCurrCmd; + G4UIcommand* qFlatSurfFluxCmd; +// G4UIcommand* qSphereSurfCurrCmd; +// G4UIcommand* qSphereSurfFluxCmd; +// G4UIcommand* qCylSurfCurrCmd; +// G4UIcommand* qCylSurfFluxCmd; + G4UIcommand* qNofCollisionCmd; + G4UIcommand* qPopulationCmd; + G4UIcommand* qTrackCountCmd; + G4UIcommand* qTerminationCmd; + + // + // Filter commands + G4UIdirectory* filterDir; + G4UIcmdWithAString* fchargedCmd; + G4UIcmdWithAString* fneutralCmd; + G4UIcommand* fkinECmd; + G4UIcommand* fparticleCmd; + G4UIcommand* fparticleKinECmd; + // + + +}; + + + + +#endif + diff --git a/source/digits_hits/utils/include/G4ScoringBox.hh b/source/digits_hits/utils/include/G4ScoringBox.hh new file mode 100644 index 0000000000..40a054b32f --- /dev/null +++ b/source/digits_hits/utils/include/G4ScoringBox.hh @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * 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: G4ScoringBox.hh,v 1.18 2007/11/06 09:41:34 akimura Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4ScoringBox_h +#define G4ScoringBox_h 1 + +#include "globals.hh" +#include "G4VScoringMesh.hh" +#include "G4RotationMatrix.hh" +class G4VPhysicalVolume; +class G4LogicalVolume; +class G4VPrimitiveScorer; +class G4VScoreColorMap; + +#include + +class G4ScoringBox : public G4VScoringMesh +{ +public: + G4ScoringBox(G4String wName); + ~G4ScoringBox(); + +public: + virtual void Construct(G4VPhysicalVolume* fWorldPhys); + virtual void List() const; + virtual void Draw(std::map * map, G4VScoreColorMap* colorMap, G4int axflg=111); + virtual void DrawColumn(std::map * map, G4VScoreColorMap* colorMap, + G4int idxProj, G4int idxColumn); + + // set a direction to segment this mesh + void SetSegmentDirection(G4int dir) {fSegmentDirection = dir;} + +private: + // construct this mesh + void SetupGeometry(G4VPhysicalVolume * fWorldPhys); + // get replicated position from 3D index (x,y,z) + G4ThreeVector GetReplicaPosition(G4int x, G4int y, G4int z); + // get 3D index (x,y,z) from sequential index + void GetXYZ(G4int index, G4int q[3]) const; + // get sequential index from 3D index (x,y,z) + G4int GetIndex(G4int x, G4int y, G4int z) const; + +private: + G4int fSegmentDirection; // =1: x, =2: y, =3: z + G4LogicalVolume * fMeshElementLogical; + +}; + + + + +#endif + diff --git a/source/digits_hits/utils/include/G4ScoringBoxParameterisation.hh b/source/digits_hits/utils/include/G4ScoringBoxParameterisation.hh new file mode 100644 index 0000000000..85dedb2a4c --- /dev/null +++ b/source/digits_hits/utils/include/G4ScoringBoxParameterisation.hh @@ -0,0 +1,88 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// + +#ifndef G4ScoringBoxParametrisation_H +#define G4ScoringBoxParametrisation_H 1 + +#include "globals.hh" +#include "geomdefs.hh" +#include "G4VPVParameterisation.hh" +#include + +class G4VPhysicalVolume; +class G4Box; + +// Dummy declarations to get rid of warnings ... +class G4Tubs; +class G4Trd; +class G4Trap; +class G4Cons; +class G4Orb; +class G4Sphere; +class G4Torus; +class G4Para; +class G4Hype; +class G4Polycone; +class G4Polyhedra; + + + +class G4ScoringBoxParameterisation : public G4VPVParameterisation { +public: + + G4ScoringBoxParameterisation(EAxis segaxis, + G4double motherDimension[3], + std::vector & segpos); + virtual ~G4ScoringBoxParameterisation(); + + void ComputeTransformation(const G4int copyNo, + G4VPhysicalVolume *physVol) const; + void ComputeDimensions(G4Box & meshElement, + const G4int copyNo, + const G4VPhysicalVolume * physVol) const; + + private: // Dummy declarations to get rid of warnings ... + + void ComputeDimensions (G4Trd&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Trap&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Cons&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Orb&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Sphere&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Torus&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Para&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Hype&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Tubs&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Polycone&,const G4int,const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Polyhedra&,const G4int,const G4VPhysicalVolume*) const {} + + private: + EAxis fSegmentAxis; + G4double fMotherDimensions[3]; + std::vector fSegmentPositions; + +}; + +#endif diff --git a/source/digits_hits/utils/include/G4ScoringManager.hh b/source/digits_hits/utils/include/G4ScoringManager.hh new file mode 100644 index 0000000000..47b9b6729d --- /dev/null +++ b/source/digits_hits/utils/include/G4ScoringManager.hh @@ -0,0 +1,154 @@ +// +// ******************************************************************** +// * 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: G4ScoringManager.hh,v 1.23 2007/11/14 20:41:17 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4ScoringManager_h +#define G4ScoringManager_h 1 + +#include "globals.hh" +#include "G4VScoringMesh.hh" +#include +#include +class G4ScoringMessenger; +class G4ScoreQuantityMessenger; +class G4VHitsCollection; +class G4VScoreColorMap; +#include "G4VScoreWriter.hh" + +// class description: +// +// This is a singleton class which manages the interactive scoring. +// The user cannot access to the constructor. The pointer of the +// only existing object can be got via G4ScoringManager::GetScoringManager() +// static method. The first invokation of this static method makes +// the singleton object. +// + +typedef std::vector MeshVec; +typedef std::vector::iterator MeshVecItr; +typedef std::vector::const_iterator MeshVecConstItr; +typedef std::map ColorMapDict; +typedef std::map::iterator ColorMapDictItr; +typedef std::map::const_iterator ColorMapDictConstItr; + + +class G4ScoringManager +{ + public: // with description + static G4ScoringManager* GetScoringManager(); + // Returns the pointer to the singleton object. + public: + static G4ScoringManager* GetScoringManagerIfExist(); + + public: + static void SetReplicaLevel(G4int); + static G4int GetReplicaLevel(); + + protected: + G4ScoringManager(); + + public: + ~G4ScoringManager(); + + public: // with description + void RegisterScoreColorMap(G4VScoreColorMap* colorMap); + // Register a color map. Once registered, it is available by /score/draw and /score/drawColumn + // commands. + + public: + void Accumulate(G4VHitsCollection* map); + G4VScoringMesh* FindMesh(G4String); + void List() const; + void Dump() const; + void DrawMesh(G4String meshName,G4String psName,G4String colorMapName,G4int axflg=111); + void DrawMesh(G4String meshName,G4String psName,G4int idxPlane,G4int iColumn,G4String colorMapName); + void DumpQuantityToFile(G4String meshName, G4String psName,G4String fileName, G4String option = ""); + void DumpAllQuantitiesToFile(G4String meshName, G4String fileName, G4String option = ""); + G4VScoreColorMap* GetScoreColorMap(G4String mapName); + void ListScoreColorMaps(); + + private: + static G4ScoringManager * fSManager; + static G4int replicaLevel; + G4int verboseLevel; + G4ScoringMessenger* fMessenger; + G4ScoreQuantityMessenger* fQuantityMessenger; + + MeshVec fMeshVec; + G4VScoringMesh* fCurrentMesh; + + G4VScoreWriter * writer; + G4VScoreColorMap * fDefaultLinearColorMap; + ColorMapDict * fColorMapDict; + + public: + inline void SetCurrentMesh(G4VScoringMesh* cm) + { fCurrentMesh = cm; } + inline G4VScoringMesh* GetCurrentMesh() const + { return fCurrentMesh; } + inline void CloseCurrentMesh() + { fCurrentMesh = 0; } + inline void SetVerboseLevel(G4int vl) + { + verboseLevel = vl; + for(MeshVecItr itr = fMeshVec.begin(); itr != fMeshVec.end(); itr++) { + (*itr)->SetVerboseLevel(vl); + } + if(writer) writer->SetVerboseLevel(vl); + } + inline G4int GetVerboseLevel() const + { return verboseLevel; } + inline size_t GetNumberOfMesh() const + { return fMeshVec.size(); } + inline void RegisterScoringMesh(G4VScoringMesh * sm) + { + sm->SetVerboseLevel(verboseLevel); + fMeshVec.push_back(sm); + SetCurrentMesh(sm); + } + inline G4VScoringMesh* GetMesh(G4int i) const + { return fMeshVec[i]; } + inline G4String GetWorldName(G4int i) const + { return fMeshVec[i]->GetWorldName(); } + + public: // with description + inline void SetScoreWriter(G4VScoreWriter * sw) + { + if(writer) { delete writer; } + writer = sw; + if(writer) writer->SetVerboseLevel(verboseLevel); + } + // Replace score writers. +}; + + + + +#endif + diff --git a/source/digits_hits/utils/include/G4ScoringMessenger.hh b/source/digits_hits/utils/include/G4ScoringMessenger.hh new file mode 100644 index 0000000000..7bc97eab51 --- /dev/null +++ b/source/digits_hits/utils/include/G4ScoringMessenger.hh @@ -0,0 +1,138 @@ +// +// ******************************************************************** +// * 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: G4ScoringMessenger.hh,v 1.21 2007/11/07 04:12:07 akimura Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// (HISTORY) +// 03-Sep-2007 T.Aso Command definitions are introduced. +// 01-Nov-2007 M.Asai Class is splitted into two. + + +#ifndef G4ScoringMessenger_h +#define G4ScoringMessenger_h 1 + +#include "G4UImessenger.hh" + +#include +#include "G4String.hh" + +class G4ScoringManager; +class G4VScoringMesh; +class G4UIdirectory; +class G4UIcmdWithoutParameter; +class G4UIcmdWithAString; +class G4UIcmdWithABool; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWith3VectorAndUnit; +class G4UIcommand; + +typedef std::vector G4TokenVec; + +// class description: +// +// This is a concrete class of G4UImessenger which handles the commands for +// G4ScoringManager. +// + +class G4ScoringMessenger: public G4UImessenger +{ + + public: + G4ScoringMessenger(G4ScoringManager * SManager); + + ~G4ScoringMessenger(); + + void SetNewValue(G4UIcommand * command,G4String newValues); + + G4String GetCurrentValue(G4UIcommand * command); + + + protected: + + void FillTokenVec(G4String newValues,G4TokenVec& token); + + void MeshBinCommand(G4VScoringMesh* mesh, G4TokenVec& token); + + private: + + G4ScoringManager* fSMan; + G4UIdirectory* scoreDir; + G4UIcmdWithoutParameter* listCmd; + G4UIcmdWithoutParameter* dumpCmd; + G4UIcmdWithAnInteger* verboseCmd; + // + G4UIdirectory* meshCreateDir; + G4UIcmdWithAString* meshBoxCreateCmd; +// G4UIcmdWithAString* meshTubsCreateCmd; +// G4UIcmdWithAString* meshSphereCreateCmd; + // + // Mesh commands + G4UIdirectory* meshDir; + G4UIcmdWithAString* meshOpnCmd; + // + G4UIcmdWithoutParameter* meshClsCmd; +// G4UIcmdWithABool* meshActCmd; + // + // Size commands + G4UIcmdWith3VectorAndUnit* mBoxSizeCmd; + G4UIcmdWith3VectorAndUnit* mTubsSizeCmd; + G4UIcmdWith3VectorAndUnit* mSphereSizeCmd; + // + // Division command + G4UIcommand* mBinCmd; + // + // Placement command + G4UIdirectory* mTransDir; + G4UIcmdWithoutParameter* mTResetCmd; + G4UIcmdWith3VectorAndUnit* mTXyzCmd; + G4UIdirectory* mRotDir; + G4UIcmdWithoutParameter* mRResetCmd; + G4UIcmdWithADoubleAndUnit* mRotXCmd; + G4UIcmdWithADoubleAndUnit* mRotYCmd; + G4UIcmdWithADoubleAndUnit* mRotZCmd; + // + // Draw Command + G4UIcommand * drawCmd; + G4UIcommand * drawColumnCmd; + G4UIdirectory * colorMapDir; + G4UIcmdWithoutParameter * listColorMapCmd; + G4UIcmdWithAString * floatMinMaxCmd; + G4UIcommand * colorMapMinMaxCmd; + // + // Dump scoring result to file + G4UIcommand * dumpQtyToFileCmd; + G4UIcommand * dumpAllQtsToFileCmd; + // + +}; + + + + +#endif + diff --git a/source/digits_hits/utils/include/G4VScoreColorMap.hh b/source/digits_hits/utils/include/G4VScoreColorMap.hh new file mode 100644 index 0000000000..6a41dfd53a --- /dev/null +++ b/source/digits_hits/utils/include/G4VScoreColorMap.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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: G4VScoreColorMap.hh,v 1.3 2007/11/06 17:17:14 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4VScoreColorMap_h +#define G4VScoreColorMap_h 1 + +#include "globals.hh" + +class G4VScoreColorMap +{ + public: + G4VScoreColorMap(G4String mName); + virtual ~G4VScoreColorMap(); + + public: + virtual void GetMapColor(G4double val, G4double color[4]) = 0; + + public: + inline G4String GetName() const + { return fName; } + inline void SetFloatingMinMax(G4bool vl=true) + { ifFloat = vl; } + inline G4bool IfFloatMinMax() const + { return ifFloat; } + inline void SetMinMax(G4double minVal, G4double maxVal) + { + if(fMinVal >= fMaxVal) + { G4cerr << "G4VScoreColoMap::SetMinMax() : minimum is larger than maximum. Verify values you set, [" + << fMinVal << ", " << fMaxVal << "]" << G4endl; } + else + { fMinVal = minVal; fMaxVal = maxVal; } + } + inline G4double GetMin() const + { return fMinVal; } + inline G4double GetMax() const + { return fMaxVal; } + + protected: + G4String fName; + G4bool ifFloat; + G4double fMinVal; + G4double fMaxVal; +}; + +#endif + diff --git a/source/digits_hits/utils/include/G4VScoreWriter.hh b/source/digits_hits/utils/include/G4VScoreWriter.hh new file mode 100644 index 0000000000..61f459b4bc --- /dev/null +++ b/source/digits_hits/utils/include/G4VScoreWriter.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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: G4VScoreWriter.hh,v 1.2 2007/11/06 09:41:34 akimura Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4VScoreWriter_h +#define G4VScoreWriter_h 1 + +#include "globals.hh" +class G4VScoringMesh; + +// class description: +// +// This class represents storing the scored quantity into a file. +// + +class G4VScoreWriter { + +public: + G4VScoreWriter(); + virtual ~G4VScoreWriter(); + +public: + // store a quantity into a file + virtual void DumpQuantityToFile(G4String & psName, G4String & fileName, G4String & option); + // store all quantities into a file + virtual void DumpAllQuantitiesToFile(G4String & fileName, G4String & option); + + // set a socring mesh to retrieve its quantities + void SetScoringMesh(G4VScoringMesh * sm); + // set a verbose level + inline void SetVerboseLevel(G4int vl) { + verboseLevel = vl; + } + +protected: + // get an index from (x,y,z) + G4int GetIndex(G4int x, G4int y, G4int z) const; + +protected: + G4int fNMeshSegments[3]; // number of segments of the mesh + G4VScoringMesh * fScoringMesh; + G4int verboseLevel; + +}; + +#endif + diff --git a/source/digits_hits/utils/include/G4VScoringMesh.hh b/source/digits_hits/utils/include/G4VScoringMesh.hh new file mode 100644 index 0000000000..6aa4358682 --- /dev/null +++ b/source/digits_hits/utils/include/G4VScoringMesh.hh @@ -0,0 +1,202 @@ +// +// ******************************************************************** +// * 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: G4VScoringMesh.hh,v 1.27 2007/11/06 17:17:14 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#ifndef G4VScoringMesh_h +#define G4VScoringMesh_h 1 + +#include "globals.hh" +#include "G4THitsMap.hh" +#include "G4RotationMatrix.hh" + +class G4VPhysicalVolume; +class G4MultiFunctionalDetector; +class G4VPrimitiveScorer; +class G4VSDFilter; +class G4VScoreColorMap; + +#include + +enum MeshShape { boxMesh, cylinderMesh, sphereMesh }; +typedef std::map* > MeshScoreMap; +// class description: +// +// This class represents a parallel world for interactive scoring purposes. +// + +class G4VScoringMesh +{ + public: + G4VScoringMesh(G4String wName); + ~G4VScoringMesh(); + + public: // with description + // a pure virtual function to construct this mesh geometry + virtual void Construct(G4VPhysicalVolume* fWorldPhys)=0; + // list infomration of this mesh + virtual void List() const; + + public: // with description + // get the world name + inline const G4String& GetWorldName() const + { return fWorldName; } + // get whether this mesh is active or not + inline G4bool IsActive() const + { return fActive; } + // set an activity of this mesh + inline void Activate(G4bool vl = true) + { fActive = vl; } + // get the shape of this mesh + inline MeshShape GetShape() const + { return fShape; } + // accumulate hits in a registered primitive scorer + inline void Accumulate(G4THitsMap * map); + // dump information of primitive socrers registered in this mesh + void Dump(); + // draw a projected quantity on a current viewer + inline void DrawMesh(G4String psName,G4VScoreColorMap* colorMap,G4int axflg=111); + // draw a column of a quantity on a current viewer + inline void DrawMesh(G4String psName,G4int idxPlane,G4int iColumn,G4VScoreColorMap* colorMap); + // draw a projected quantity on a current viewer + virtual void Draw(std::map * map, G4VScoreColorMap* colorMap, G4int axflg=111) = 0; + // draw a column of a quantity on a current viewer + virtual void DrawColumn(std::map * map, G4VScoreColorMap* colorMap, + G4int idxProj, G4int idxColumn) = 0; + // reset registered primitive scorers + void ResetScore(); + + // set size of this mesh + void SetSize(G4double size[3]); + // set position of center of this mesh + void SetCenterPosition(G4double centerPosition[3]); + // set a rotation angle around the x axis + void RotateX(G4double delta); + // set a rotation angle around the y axis + void RotateY(G4double delta); + // set a rotation angle around the z axis + void RotateZ(G4double delta); + // set number of segments of this mesh + void SetNumberOfSegments(G4int nSegment[3]); + // get number of segments of this mesh + void GetNumberOfSegments(G4int nSegment[3]); + // set positions to segment this mesh + inline void SetSegmentPositions(std::vector & sp) {fSegmentPositions = sp;} + + // register a primitive scorer to the MFD & set it to the current primitive scorer + void SetPrimitiveScorer(G4VPrimitiveScorer * ps); + // register a filter to a current primtive scorer + void SetFilter(G4VSDFilter * filter); + // set a primitive scorer to the current one by the name + void SetCurrentPrimitiveScorer(G4String & name); + // find registered primitive scorer by the name + G4bool FindPrimitiveScorer(G4String & psname); + // get whether current primitive scorer is set or not + G4bool IsCurrentPrimitiveScorerNull() { + if(fCurrentPS == NULL) return true; + else return false; + } + // set current primitive scorer to NULL + void SetNullToCurrentPrimitiveScorer() {fCurrentPS = NULL;} + // set verbose level + inline void SetVerboseLevel(G4int vl) + { verboseLevel = vl; } + // get the primitive scorer map + MeshScoreMap GetScoreMap() {return fMap;} + // get whether this mesh setup has been ready + inline G4bool ReadyForQuantity() const + { return (sizeIsSet && nMeshIsSet); } + +protected: + // get registered primitive socrer by the name + G4VPrimitiveScorer * GetPrimitiveScorer(G4String & name); + +protected: + G4String fWorldName; + G4VPrimitiveScorer * fCurrentPS; + G4bool fConstructed; + G4bool fActive; + MeshShape fShape; + + G4double fSize[3]; + G4ThreeVector fCenterPosition; + G4RotationMatrix * fRotationMatrix; + G4int fNSegment[3]; + std::vector fSegmentPositions; + + std::map* > fMap; + G4MultiFunctionalDetector * fMFD; + + G4int verboseLevel; + + G4bool sizeIsSet; + G4bool nMeshIsSet; + +}; + +void G4VScoringMesh::Accumulate(G4THitsMap * map) +{ + G4String psName = map->GetName(); + std::map* >::const_iterator fMapItr = fMap.find(psName); + *(fMapItr->second) += *map; + + if(verboseLevel > 9) { + G4cout << G4endl; + G4cout << "G4VScoringMesh::Accumulate()" << G4endl; + G4cout << " PS name : " << psName << G4endl; + if(fMapItr == fMap.end()) { + G4cout << " " + << psName << " was not found." << G4endl; + } else { + G4cout << " map size : " << map->GetSize() << G4endl; + map->PrintAllHits(); + } + G4cout << G4endl; + } +} + +void G4VScoringMesh::DrawMesh(G4String psName,G4VScoreColorMap* colorMap,G4int axflg) +{ + std::map* >::const_iterator fMapItr = fMap.find(psName); + if(fMapItr!=fMap.end()) + { Draw(fMapItr->second->GetMap(),colorMap,axflg); } + else + { G4cerr << "Scorer <" << psName << "> is not defined. Method ignored." << G4endl; } +} + +void G4VScoringMesh::DrawMesh(G4String psName,G4int idxPlane,G4int iColumn,G4VScoreColorMap* colorMap) +{ + std::map* >::const_iterator fMapItr = fMap.find(psName); + if(fMapItr!=fMap.end()) + { DrawColumn(fMapItr->second->GetMap(),colorMap,idxPlane,iColumn); } + else + { G4cerr << "Scorer <" << psName << "> is not defined. Method ignored." << G4endl; } +} + +#endif + diff --git a/source/digits_hits/utils/src/G4DefaultLinearColorMap.cc b/source/digits_hits/utils/src/G4DefaultLinearColorMap.cc new file mode 100644 index 0000000000..6ee7166ccd --- /dev/null +++ b/source/digits_hits/utils/src/G4DefaultLinearColorMap.cc @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * 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: G4DefaultLinearColorMap.cc,v 1.2 2007/11/06 17:17:14 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4DefaultLinearColorMap.hh" + +G4DefaultLinearColorMap::G4DefaultLinearColorMap(G4String mName) +:G4VScoreColorMap(mName) +{;} + +G4DefaultLinearColorMap::~G4DefaultLinearColorMap() +{;} + +void G4DefaultLinearColorMap::GetMapColor(G4double val, G4double color[4]) +{ + G4double value = (val-fMinVal)/(fMaxVal-fMinVal); + + if(value > 1.) {value=1.;} + if(value < 0.) {value=0.;} + + // color map + const int NCOLOR = 6; + struct ColorMap { + G4double val; + G4double rgb[4]; + } colormap[NCOLOR] = {{0.0, {1., 1., 1., 1.}}, // value, r, g, b, alpha + {0.2, {0., 0., 1., 1.}}, + {0.4, {0., 1., 1., 1.}}, + {0.6, {0., 1., 0., 1.}}, + {0.8, {1., 1., 0., 1.}}, + {1.0, {1., 0., 0., 1.}}}; + + // search + G4int during[2] = {0, 0}; + for(int i = 1; i < NCOLOR; i++) { + if(colormap[i].val >= value) { + during[0] = i-1; + during[1] = i; + break; + } + } + + // interpolate + G4double a = std::fabs(value - colormap[during[0]].val); + G4double b = std::fabs(value - colormap[during[1]].val); + for(int i = 0; i < 4; i++) { + color[i] = (b*colormap[during[0]].rgb[i] + a*colormap[during[1]].rgb[i]) + /(colormap[during[1]].val - colormap[during[0]].val); + } + +} + + diff --git a/source/digits_hits/utils/src/G4ScoreQuantityMessenger.cc b/source/digits_hits/utils/src/G4ScoreQuantityMessenger.cc new file mode 100644 index 0000000000..cfeaf62a84 --- /dev/null +++ b/source/digits_hits/utils/src/G4ScoreQuantityMessenger.cc @@ -0,0 +1,490 @@ +// +// ******************************************************************** +// * 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: G4ScoreQuantityMessenger.cc,v 1.8 2007/11/07 04:12:07 akimura Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// --------------------------------------------------------------------- + +#include "G4ScoreQuantityMessenger.hh" +#include "G4ScoringManager.hh" +#include "G4VScoringMesh.hh" + +#include "G4PSCellCharge3D.hh" +#include "G4PSCellFlux3D.hh" +#include "G4PSPassageCellFlux3D.hh" +#include "G4PSEnergyDeposit3D.hh" +#include "G4PSDoseDeposit3D.hh" +#include "G4PSNofStep3D.hh" +#include "G4PSNofSecondary3D.hh" +// +#include "G4PSTrackLength3D.hh" +#include "G4PSPassageCellCurrent3D.hh" +#include "G4PSPassageTrackLength3D.hh" +#include "G4PSFlatSurfaceCurrent3D.hh" +#include "G4PSFlatSurfaceFlux3D.hh" +#include "G4PSSphereSurfaceCurrent3D.hh" +#include "G4PSSphereSurfaceFlux3D.hh" +#include "G4PSCylinderSurfaceCurrent3D.hh" +#include "G4PSCylinderSurfaceFlux3D.hh" +#include "G4PSNofCollision3D.hh" +#include "G4PSPopulation3D.hh" +#include "G4PSTrackCounter3D.hh" +#include "G4PSTermination3D.hh" + +#include "G4SDChargedFilter.hh" +#include "G4SDNeutralFilter.hh" +#include "G4SDKineticEnergyFilter.hh" +#include "G4SDParticleFilter.hh" +#include "G4SDParticleWithEnergyFilter.hh" + +#include "G4UIdirectory.hh" +#include "G4UIcmdWithoutParameter.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithABool.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWith3VectorAndUnit.hh" +#include "G4UIcommand.hh" +#include "G4Tokenizer.hh" +#include "G4UnitsTable.hh" + +G4ScoreQuantityMessenger::G4ScoreQuantityMessenger(G4ScoringManager* SManager) +:fSMan(SManager) +{ + QuantityCommands(); + FilterCommands(); +} + +void G4ScoreQuantityMessenger::FilterCommands() +{ + G4UIparameter* param; + + // + // Filter commands + filterDir = new G4UIdirectory("/score/filter/"); + filterDir->SetGuidance(" Scoring filter commands."); + // + fchargedCmd = new G4UIcmdWithAString("/score/filter/charged",this); + fchargedCmd->SetGuidance("Charged particle filter."); + fchargedCmd->SetParameterName("fname",false); + // + fneutralCmd = new G4UIcmdWithAString("/score/filter/neutral",this); + fneutralCmd->SetGuidance("Neutral particle filter."); + fneutralCmd->SetParameterName("fname",false); + // + fkinECmd = new G4UIcommand("/score/filter/kineticEnergy",this); + fkinECmd->SetGuidance("Kinetic energy filter."); + fkinECmd->SetGuidance("[usage] /score/filter/kineticEnergy fname Elow Ehigh unit"); + fkinECmd->SetGuidance(" fname :(String) Filter Name "); + fkinECmd->SetGuidance(" Elow :(Double) Lower edge of kinetic energy"); + fkinECmd->SetGuidance(" Ehigh :(Double) Higher edge of kinetic energy"); + fkinECmd->SetGuidance(" unit :(String) unit of given kinetic energy"); + param = new G4UIparameter("fname",'s',false); + fkinECmd->SetParameter(param); + param = new G4UIparameter("elow",'d',true); + param->SetDefaultValue("0.0"); + fkinECmd->SetParameter(param); + param = new G4UIparameter("ehigh",'d',false); + fkinECmd->SetParameter(param); + G4String smax = DtoS(DBL_MAX); + param->SetDefaultValue(smax); + param = new G4UIparameter("unit",'s',false); + param->SetDefaultValue("keV"); + fkinECmd->SetParameter(param); + // + fparticleCmd = new G4UIcommand("/score/filter/particle",this); + fparticleCmd->SetGuidance("Particle filter."); + fparticleCmd->SetGuidance("[usage] /score/filter/particle fname p0 .. pn"); + fparticleCmd->SetGuidance(" fname :(String) Filter Name "); + fparticleCmd->SetGuidance(" p0 .. pn :(String) particle names"); + param = new G4UIparameter("fname",'s',false); + fparticleCmd->SetParameter(param); + param = new G4UIparameter("particlelist",'s',false); + param->SetDefaultValue(""); + fparticleCmd->SetParameter(param); + // + // + // + fparticleKinECmd = new G4UIcommand("/score/filter/particleWithKineticEnergy",this); + fparticleKinECmd->SetGuidance("Particle with kinetic energy filter."); + fparticleKinECmd->SetGuidance("[usage] /score/filter/particleWithKineticEnergy fname Elow Ehigh unit p0 .. pn"); + fparticleKinECmd->SetGuidance(" fname :(String) Filter Name "); + fparticleKinECmd->SetGuidance(" Elow :(Double) Lower edge of kinetic energy"); + fparticleKinECmd->SetGuidance(" Ehigh :(Double) Higher edge of kinetic energy"); + fparticleKinECmd->SetGuidance(" unit :(String) unit of given kinetic energy"); + fparticleKinECmd->SetGuidance(" p0 .. pn :(String) particle names"); + param = new G4UIparameter("fname",'s',false); + fparticleKinECmd->SetParameter(param); + param = new G4UIparameter("elow",'d',false); + param->SetDefaultValue("0.0"); + fparticleKinECmd->SetParameter(param); + param = new G4UIparameter("ehigh",'d',true); + param->SetDefaultValue(smax); + fparticleKinECmd->SetParameter(param); + param = new G4UIparameter("unit",'s',true); + param->SetDefaultValue("keV"); + fparticleKinECmd->SetParameter(param); + param = new G4UIparameter("particlelist",'s',false); + param->SetDefaultValue(""); + fparticleKinECmd->SetParameter(param); + // + // +} + +G4ScoreQuantityMessenger::~G4ScoreQuantityMessenger() +{ + delete quantityDir; + delete qTouchCmd; + // + delete qCellChgCmd; + delete qCellFluxCmd; + delete qPassCellFluxCmd; + delete qeDepCmd; + delete qdoseDepCmd; + delete qnOfStepCmd; + delete qnOfSecondaryCmd; + // + delete qTrackLengthCmd; + delete qPassCellCurrCmd; + delete qPassTrackLengthCmd; + delete qFlatSurfCurrCmd; + delete qFlatSurfFluxCmd; +// delete qSphereSurfCurrCmd; +// delete qSphereSurfFluxCmd; +// delete qCylSurfCurrCmd; +// delete qCylSurfFluxCmd; + delete qNofCollisionCmd; + delete qPopulationCmd; + delete qTrackCountCmd; + delete qTerminationCmd; + // + delete filterDir; + delete fchargedCmd; + delete fneutralCmd; + delete fkinECmd; + delete fparticleCmd; + delete fparticleKinECmd; +} + +void G4ScoreQuantityMessenger::SetNewValue(G4UIcommand * command,G4String newVal) +{ + // + // Get Current Mesh + // + G4VScoringMesh* mesh = fSMan->GetCurrentMesh(); + if(!mesh) + { + G4cerr << "ERROR : No mesh is currently open. Open/create a mesh first. Command ignored." << G4endl; + return; + } + // Tokens + G4TokenVec token; + FillTokenVec(newVal,token); + // + // Commands for Current Mesh + if(command==qTouchCmd) { + mesh->SetCurrentPrimitiveScorer(newVal); + } else if(command== qCellChgCmd) { + if(!mesh->FindPrimitiveScorer(newVal)) { + mesh->SetPrimitiveScorer(new G4PSCellCharge3D(newVal)); + } else { + G4cout << "WARNING[" << qTouchCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qCellFluxCmd) { + if(!mesh->FindPrimitiveScorer(newVal)) { + mesh->SetPrimitiveScorer(new G4PSCellFlux3D(newVal)); + } else { + G4cout << "WARNING[" << qCellFluxCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qPassCellFluxCmd) { + if(!mesh->FindPrimitiveScorer(newVal)) { + mesh->SetPrimitiveScorer(new G4PSPassageCellFlux3D(newVal)); + } else { + G4cout << "WARNING[" << qPassCellFluxCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command==qeDepCmd) { + if(!mesh->FindPrimitiveScorer(newVal)) { + mesh->SetPrimitiveScorer(new G4PSEnergyDeposit3D(newVal)); + } else { + G4cout << "WARNING[" << qeDepCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qdoseDepCmd) { + if(!mesh->FindPrimitiveScorer(newVal)) { + mesh->SetPrimitiveScorer(new G4PSDoseDeposit3D(newVal)); + } else { + G4cout << "WARNING[" << qdoseDepCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qnOfStepCmd) { + if(!mesh->FindPrimitiveScorer(newVal)) { + mesh->SetPrimitiveScorer(new G4PSNofStep3D(newVal)); + } else { + G4cout << "WARNING[" << qnOfStepCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qnOfSecondaryCmd) { + if(!mesh->FindPrimitiveScorer(newVal)) { + mesh->SetPrimitiveScorer(new G4PSNofSecondary3D(newVal)); + } else { + G4cout << "WARNING[" << qnOfSecondaryCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qTrackLengthCmd) { + if(!mesh->FindPrimitiveScorer(newVal)) { + G4PSTrackLength3D* ps = new G4PSTrackLength3D(token[0]); + ps->Weighted(StoB(token[1])); + ps->MultiplyKineticEnergy(StoB(token[2])); + ps->DivideByVelocity(StoB(token[3])); + mesh->SetPrimitiveScorer(ps); + } else { + G4cout << "WARNING[" << qTrackLengthCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qPassCellCurrCmd){ + if(!mesh->FindPrimitiveScorer(newVal)) { + G4PSPassageCellCurrent* ps = new G4PSPassageCellCurrent3D(token[0]); + ps->Weighted(StoB(token[1])); + mesh->SetPrimitiveScorer(ps); + } else { + G4cout << "WARNING[" << qPassCellCurrCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qPassTrackLengthCmd){ + if(!mesh->FindPrimitiveScorer(newVal)) { + G4PSPassageTrackLength* ps = new G4PSPassageTrackLength3D(token[0]); + ps->Weighted(StoB(token[1])); + mesh->SetPrimitiveScorer(ps); + } else { + G4cout << "WARNING[" << qPassTrackLengthCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qFlatSurfCurrCmd){ + if(!mesh->FindPrimitiveScorer(newVal)) { + G4PSFlatSurfaceCurrent3D* ps = + new G4PSFlatSurfaceCurrent3D(token[0],StoI(token[1])); + ps->Weighted(StoB(token[2])); + ps->DivideByArea(StoB(token[3])); + mesh->SetPrimitiveScorer(ps); + } else { + G4cout << "WARNING[" << qFlatSurfCurrCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qFlatSurfFluxCmd){ + if(!mesh->FindPrimitiveScorer(newVal)) { + mesh->SetPrimitiveScorer( + new G4PSFlatSurfaceFlux3D(token[0],StoI(token[1]))); + } else { + G4cout << "WARNING[" << qFlatSurfFluxCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } +// } else if(command== qSphereSurfCurrCmd){ +// if(!mesh->FindPrimitiveScorer(newVal)) { +// G4PSSphereSurfaceCurrent3D* ps = +// new G4PSSphereSurfaceCurrent3D(token[0],StoI(token[1])); +// ps->Weighted(StoB(token[2])); +// ps->DivideByArea(StoB(token[3])); +// mesh->SetPrimitiveScorer(ps); +// } else { +// G4cout << "WARNING[" << qSphereSurfCurrCmd->GetCommandPath() +// << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; +// mesh->SetNullToCurrentPrimitiveScorer(); +// } +// } else if(command== qSphereSurfFluxCmd){ +// if(!mesh->FindPrimitiveScorer(newVal)) { +// mesh->SetPrimitiveScorer( +// new G4PSSphereSurfaceFlux3D(token[0], StoI(token[1]))); +// } else { +// G4cout << "WARNING[" << qSphereSurfFluxCmd->GetCommandPath() +// << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; +// mesh->SetNullToCurrentPrimitiveScorer(); +// } +// } else if(command== qCylSurfCurrCmd){ +// if(!mesh->FindPrimitiveScorer(newVal)) { +// G4PSCylinderSurfaceCurrent3D* ps = +// new G4PSCylinderSurfaceCurrent3D(token[0],StoI(token[1])); +// ps->Weighted(StoB(token[2])); +// ps->DivideByArea(StoB(token[3])); +// mesh->SetPrimitiveScorer(ps); +// } else { +// G4cout << "WARNING[" << qCylSurfCurrCmd->GetCommandPath() +// << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; +// mesh->SetNullToCurrentPrimitiveScorer(); +// } +// } else if(command== qCylSurfFluxCmd){ +// if(!mesh->FindPrimitiveScorer(newVal)) { +// mesh->SetPrimitiveScorer( +// new G4PSCylinderSurfaceFlux3D(token[0], StoI(token[1]))); +// } else { +// G4cout << "WARNING[" << qCylSurfFluxCmd->GetCommandPath() +// << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; +// mesh->SetNullToCurrentPrimitiveScorer(); +// } + } else if(command== qNofCollisionCmd){ + if(!mesh->FindPrimitiveScorer(newVal)) { + G4PSNofCollision3D* ps =new G4PSNofCollision3D(token[0]); + ps->Weighted(StoB(token[1])); + mesh->SetPrimitiveScorer(ps); + } else { + G4cout << "WARNING[" << qNofCollisionCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qPopulationCmd){ + if(!mesh->FindPrimitiveScorer(newVal)) { + G4PSPopulation3D* ps =new G4PSPopulation3D(token[0]); + ps->Weighted(StoB(token[1])); + mesh->SetPrimitiveScorer(ps); + } else { + G4cout << "WARNING[" << qPopulationCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qTrackCountCmd){ + if(!mesh->FindPrimitiveScorer(newVal)) { + G4PSTrackCounter3D* ps =new G4PSTrackCounter3D(token[0],StoI(token[1])); + mesh->SetPrimitiveScorer(ps); + } else { + G4cout << "WARNING[" << qTrackCountCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + } else if(command== qTerminationCmd){ + if(!mesh->FindPrimitiveScorer(newVal)) { + G4PSTermination3D* ps =new G4PSTermination3D(token[0]); + ps->Weighted(StoB(token[1])); + mesh->SetPrimitiveScorer(ps); + } else { + G4cout << "WARNING[" << qTerminationCmd->GetCommandPath() + << "] : Quantity name, \"" << newVal << "\", is already existing." << G4endl; + mesh->SetNullToCurrentPrimitiveScorer(); + } + + // + // Filters + // + }else if(command== fchargedCmd){ + if(!mesh->IsCurrentPrimitiveScorerNull()) { + mesh->SetFilter(new G4SDChargedFilter(token[0])); + } else { + G4cout << "WARNING[" << fchargedCmd->GetCommandPath() + << "] : Current quantity is not set. Set or touch a quantity first." << G4endl; + } + }else if(command== fneutralCmd){ + if(!mesh->IsCurrentPrimitiveScorerNull()) { + mesh->SetFilter(new G4SDNeutralFilter(token[0])); + } else { + G4cout << "WARNING[" << fneutralCmd->GetCommandPath() + << "] : Current quantity is not set. Set or touch a quantity first." << G4endl; + } + }else if(command== fkinECmd){ + if(!mesh->IsCurrentPrimitiveScorerNull()) { + G4String& name = token[0]; + G4double elow = StoD(token[1]); + G4double ehigh = StoD(token[2]); + mesh->SetFilter(new G4SDKineticEnergyFilter(name,elow,ehigh)); + } else { + G4cout << "WARNING[" << fkinECmd->GetCommandPath() + << "] : Current quantity is not set. Set or touch a quantity first." << G4endl; + } + }else if(command== fparticleKinECmd){ + if(!mesh->IsCurrentPrimitiveScorerNull()) { + FParticleWithEnergyCommand(mesh,token); + } else { + G4cout << "WARNING[" << fparticleKinECmd->GetCommandPath() + << "] : Current quantity is not set. Set or touch a quantity first." << G4endl; + } + } else if(command==fparticleCmd) { + if(!mesh->IsCurrentPrimitiveScorerNull()) { + FParticleCommand(mesh,token); + } else { + G4cout << "WARNING[" << fparticleCmd->GetCommandPath() + << "] : Current quantity is not set. Set or touch a quantity first." << G4endl; + } + } +} + +G4String G4ScoreQuantityMessenger::GetCurrentValue(G4UIcommand * /*command*/) +{ + G4String val; + + return val; +} + +void G4ScoreQuantityMessenger::FillTokenVec(G4String newValues, G4TokenVec& token){ + + G4Tokenizer next(newValues); + G4String val; + while ( !(val = next()).isNull() ) { + token.push_back(val); + } +} + + +void G4ScoreQuantityMessenger::FParticleCommand(G4VScoringMesh* mesh, G4TokenVec& token){ + // + // Filter name + G4String name = token[0]; + // + // particle list + std::vector pnames; + for ( G4int i = 1; i<(G4int)token.size(); i++){ + pnames.push_back(token[i]); + } + // + // Attach Filter + mesh->SetFilter(new G4SDParticleFilter(name,pnames)); +} + +void G4ScoreQuantityMessenger::FParticleWithEnergyCommand(G4VScoringMesh* mesh,G4TokenVec& token){ + G4String& name = token[0]; + G4double elow = StoD(token[1]); + G4double ehigh= StoD(token[2]); + G4double unitVal = G4UnitDefinition::GetValueOf(token[3]); + G4SDParticleWithEnergyFilter* filter = + new G4SDParticleWithEnergyFilter(name,elow*unitVal,ehigh*unitVal); + for ( G4int i = 4; i < (G4int)token.size(); i++){ + filter->add(token[i]); + } + mesh->SetFilter(filter); +} + diff --git a/source/digits_hits/utils/src/G4ScoreQuantityMessengerQCmd.cc b/source/digits_hits/utils/src/G4ScoreQuantityMessengerQCmd.cc new file mode 100644 index 0000000000..866d73a255 --- /dev/null +++ b/source/digits_hits/utils/src/G4ScoreQuantityMessengerQCmd.cc @@ -0,0 +1,333 @@ +// +// ******************************************************************** +// * 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: G4ScoreQuantityMessengerQCmd.cc,v 1.6 2007/11/07 04:12:07 akimura Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// --------------------------------------------------------------------- + +#include "G4ScoreQuantityMessenger.hh" +#include "G4ScoringManager.hh" +#include "G4VScoringMesh.hh" + +#include "G4PSCellCharge3D.hh" +#include "G4PSCellFlux3D.hh" +#include "G4PSPassageCellFlux3D.hh" +#include "G4PSEnergyDeposit3D.hh" +#include "G4PSDoseDeposit3D.hh" +#include "G4PSNofStep3D.hh" +#include "G4PSNofSecondary3D.hh" +// +#include "G4PSTrackLength3D.hh" +#include "G4PSPassageCellCurrent3D.hh" +#include "G4PSPassageTrackLength3D.hh" +#include "G4PSFlatSurfaceCurrent3D.hh" +#include "G4PSFlatSurfaceFlux3D.hh" +#include "G4PSSphereSurfaceCurrent3D.hh" +#include "G4PSSphereSurfaceFlux3D.hh" +#include "G4PSCylinderSurfaceCurrent3D.hh" +#include "G4PSCylinderSurfaceFlux3D.hh" +#include "G4PSNofCollision3D.hh" +#include "G4PSPopulation3D.hh" +#include "G4PSTrackCounter3D.hh" +#include "G4PSTermination3D.hh" + +#include "G4SDChargedFilter.hh" +#include "G4SDNeutralFilter.hh" +#include "G4SDKineticEnergyFilter.hh" +#include "G4SDParticleFilter.hh" +#include "G4SDParticleWithEnergyFilter.hh" + +#include "G4UIdirectory.hh" +#include "G4UIcmdWithoutParameter.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithABool.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWith3VectorAndUnit.hh" +#include "G4UIcommand.hh" +#include "G4Tokenizer.hh" +#include "G4UnitsTable.hh" + +void G4ScoreQuantityMessenger::QuantityCommands() +{ + G4UIparameter* param; + + // + // Quantity commands + quantityDir = new G4UIdirectory("/score/quantity/"); + quantityDir->SetGuidance("Scoring quantity of the mesh."); + // + qTouchCmd= new G4UIcmdWithAString("/score/quantity/touch",this); + qTouchCmd->SetGuidance("Assign previously defined quantity to the current quantity."); + qTouchCmd->SetParameterName("qname",false); + // + qeDepCmd = new G4UIcmdWithAString("/score/quantity/energyDeposit",this); + qeDepCmd->SetGuidance("Energy deposit scorer."); + qeDepCmd->SetParameterName("qname",false); + // + qCellChgCmd = new G4UIcmdWithAString("/score/quantity/cellCharge",this); + qCellChgCmd->SetGuidance("Cell charge scorer."); + qCellChgCmd->SetParameterName("qname",false); + // + qCellFluxCmd = new G4UIcmdWithAString("/score/quantity/cellFlux",this); + qCellFluxCmd->SetGuidance("Cell flux scorer."); + qCellFluxCmd->SetParameterName("qname",false); + // + qPassCellFluxCmd = new G4UIcmdWithAString("/score/quantity/passageCellFlux",this); + qPassCellFluxCmd->SetGuidance("Passage cell flux scorer"); + qPassCellFluxCmd->SetParameterName("qname",false); + // + qdoseDepCmd = new G4UIcmdWithAString("/score/quantity/doseDeposit",this); + qdoseDepCmd->SetGuidance("Dose deposit scorer."); + qdoseDepCmd->SetParameterName("qname",false); + // + qnOfStepCmd = new G4UIcmdWithAString("/score/quantity/nOfStep",this); + qnOfStepCmd->SetGuidance("Number of step scorer."); + qnOfStepCmd->SetParameterName("qname",false); + // + qnOfSecondaryCmd = new G4UIcmdWithAString("/score/quantity/nOfSecondary",this); + qnOfSecondaryCmd->SetGuidance("Number of secondary scorer."); + qnOfSecondaryCmd->SetParameterName("qname",false); + // + qTrackLengthCmd = new G4UIcommand("/score/quantity/trackLength",this); + qTrackLengthCmd->SetGuidance("Track length scorer."); + qTrackLengthCmd-> + SetGuidance("[usage] /score/quantiy/trackLength qname wflag kflag vflag "); + qTrackLengthCmd->SetGuidance(" qname :(String) scorer name"); + qTrackLengthCmd->SetGuidance(" wflag :(Bool) weighted"); + qTrackLengthCmd->SetGuidance(" kflag :(Bool) multiply kinetic energy"); + qTrackLengthCmd->SetGuidance(" vflag :(Bool) divide by velocity"); + param = new G4UIparameter("qname",'s',false); + qTrackLengthCmd->SetParameter(param); + param = new G4UIparameter("wflag",'b',true); + param->SetDefaultValue("false"); + qTrackLengthCmd->SetParameter(param); + param = new G4UIparameter("kflag",'b',true); + param->SetDefaultValue("false"); + qTrackLengthCmd->SetParameter(param); + param = new G4UIparameter("vflag",'b',true); + param->SetDefaultValue("false"); + qTrackLengthCmd->SetParameter(param); + // + qPassCellCurrCmd = new G4UIcommand("/score/quantity/passageCellCurrent",this); + qPassCellCurrCmd->SetGuidance("Passage cell current scorer."); + qPassCellCurrCmd-> + SetGuidance("[usage] /score/quantiy/passageCellCurrent qname wflag"); + qPassCellCurrCmd->SetGuidance(" qname :(String) scorer name"); + qPassCellCurrCmd->SetGuidance(" wflag :(Bool) weighted"); + param = new G4UIparameter("qname",'s',false); + qPassCellCurrCmd->SetParameter(param); + param = new G4UIparameter("wflag",'b',true); + param->SetDefaultValue("true"); + qPassCellCurrCmd->SetParameter(param); + // + qPassTrackLengthCmd = new G4UIcommand("/score/quantity/passageTrackLength",this); + qPassTrackLengthCmd->SetGuidance("Passage track length scorer."); + qPassTrackLengthCmd-> + SetGuidance("[usage] /score/quantiy/passageTrackLength qname wflag"); + qPassTrackLengthCmd->SetGuidance(" qname :(String) scorer name"); + qPassTrackLengthCmd->SetGuidance(" wflag :(Bool) weighted"); + param = new G4UIparameter("qname",'s',false); + qPassTrackLengthCmd->SetParameter(param); + param = new G4UIparameter("wflag",'b',true); + param->SetDefaultValue("true"); + qPassTrackLengthCmd->SetParameter(param); + // + qFlatSurfCurrCmd = new G4UIcommand("/score/quantity/flatSurfaceCurrent",this); + qFlatSurfCurrCmd->SetGuidance("Flat surface current Scorer."); + qFlatSurfCurrCmd-> + SetGuidance("[usage] /score/quantiy/flatSurfaceCurrent qname dflag wflag aflag"); + qFlatSurfCurrCmd->SetGuidance(" qname :(String) scorer name"); + qFlatSurfCurrCmd->SetGuidance(" dflag :(Int) direction flag"); + qFlatSurfCurrCmd->SetGuidance(" : 0 = Both In and Out"); + qFlatSurfCurrCmd->SetGuidance(" : 1 = In only"); + qFlatSurfCurrCmd->SetGuidance(" : 2 = Out only"); + qFlatSurfCurrCmd->SetGuidance(" wflag :(Bool) weighted"); + qFlatSurfCurrCmd->SetGuidance(" aflag :(Bool) divide by area"); + param = new G4UIparameter("qname",'s',false); + qFlatSurfCurrCmd->SetParameter(param); + param = new G4UIparameter("dflag",'i',true); + param->SetDefaultValue("0"); + qFlatSurfCurrCmd->SetParameter(param); + param = new G4UIparameter("wflag",'b',true); + param->SetDefaultValue("true"); + qFlatSurfCurrCmd->SetParameter(param); + param = new G4UIparameter("aflag",'b',true); + param->SetDefaultValue("true"); + qFlatSurfCurrCmd->SetParameter(param); + // + qFlatSurfFluxCmd = new G4UIcommand("/score/quantity/flatSurfaceFlux",this); + qFlatSurfFluxCmd->SetGuidance("Flat surface flux scorer."); + qFlatSurfFluxCmd-> + SetGuidance("[usage] /score/quantiy/flatSurfaceFlux qname dflag"); + qFlatSurfFluxCmd->SetGuidance(" qname :(String) scorer name"); + qFlatSurfFluxCmd->SetGuidance(" dflag :(Int) direction flag"); + qFlatSurfFluxCmd->SetGuidance(" : 0 = Both In and Out"); + qFlatSurfFluxCmd->SetGuidance(" : 1 = In only"); + qFlatSurfFluxCmd->SetGuidance(" : 2 = Out only"); + param = new G4UIparameter("qname",'s',false); + qFlatSurfFluxCmd->SetParameter(param); + param = new G4UIparameter("dflag",'i',true); + param->SetDefaultValue("0"); + qFlatSurfFluxCmd->SetParameter(param); + // +// qSphereSurfCurrCmd = new G4UIcommand("/score/quantity/sphereSurfaceCurrent",this); +// qSphereSurfCurrCmd->SetGuidance("Sphere surface current Scorer."); +// qSphereSurfCurrCmd-> +// SetGuidance("[usage] /score/quantiy/sphereSurfaceCurrent qname dflag wflag aflag"); +// qSphereSurfCurrCmd->SetGuidance(" qname :(String) scorer name"); +// qSphereSurfCurrCmd->SetGuidance(" dflag :(Int) direction flag"); +// qSphereSurfCurrCmd->SetGuidance(" : 0 = Both In and Out"); +// qSphereSurfCurrCmd->SetGuidance(" : 1 = In only"); +// qSphereSurfCurrCmd->SetGuidance(" : 2 = Out only"); +// qSphereSurfCurrCmd->SetGuidance(" wflag :(Bool) Weighted"); +// qSphereSurfCurrCmd->SetGuidance(" aflag :(Bool) DivideByArea"); +// param = new G4UIparameter("qname",'s',false); +// qSphereSurfCurrCmd->SetParameter(param); +// param = new G4UIparameter("dflag",'i',true); +// param->SetDefaultValue("0"); +// qSphereSurfCurrCmd->SetParameter(param); +// param = new G4UIparameter("wflag",'b',true); +// param->SetDefaultValue("true"); +// qSphereSurfCurrCmd->SetParameter(param); +// param = new G4UIparameter("aflag",'b',true); +// param->SetDefaultValue("true"); +// qSphereSurfCurrCmd->SetParameter(param); + + // +// qSphereSurfFluxCmd = new G4UIcommand("/score/quantity/sphereSurfaceFlux",this); +// qSphereSurfFluxCmd->SetGuidance("Sphere surface Flux Scorer."); +// qSphereSurfFluxCmd-> +// SetGuidance("[usage] /score/quantiy/sphereSurfaceFlux qname dflag"); +// qSphereSurfFluxCmd->SetGuidance(" qname :(String) scorer name"); +// qSphereSurfFluxCmd->SetGuidance(" dflag :(Int) direction flag"); +// qSphereSurfFluxCmd->SetGuidance(" : 0 = Both In and Out"); +// qSphereSurfFluxCmd->SetGuidance(" : 1 = In only"); +// qSphereSurfFluxCmd->SetGuidance(" : 2 = Out only"); +// param = new G4UIparameter("qname",'s',false); +// qSphereSurfFluxCmd->SetParameter(param); +// param = new G4UIparameter("dflag",'i',true); +// param->SetDefaultValue("0"); +// qSphereSurfFluxCmd->SetParameter(param); + + // +// qCylSurfCurrCmd = new G4UIcommand("/score/quantity/cylinderSurfaceCurrent",this); +// qCylSurfCurrCmd->SetGuidance("Cylinder surface current Scorer."); +// qCylSurfCurrCmd-> +// SetGuidance("[usage] /score/quantiy/cylinderSurfaceCurrent qname dflag wflag aflag"); +// qCylSurfCurrCmd->SetGuidance(" qname :(String) scorer name"); +// qCylSurfCurrCmd->SetGuidance(" dflag :(Int) direction flag"); +// qCylSurfCurrCmd->SetGuidance(" : 0 = Both In and Out"); +// qCylSurfCurrCmd->SetGuidance(" : 1 = In only"); +// qCylSurfCurrCmd->SetGuidance(" : 2 = Out only"); +// qCylSurfCurrCmd->SetGuidance(" wflag :(Bool) Weighted"); +// qCylSurfCurrCmd->SetGuidance(" aflag :(Bool) DivideByArea"); +// param = new G4UIparameter("qname",'s',false); +// qCylSurfCurrCmd->SetParameter(param); +// param = new G4UIparameter("dflag",'i',true); +// param->SetDefaultValue("0"); +// qCylSurfCurrCmd->SetParameter(param); +// param = new G4UIparameter("wflag",'b',true); +// param->SetDefaultValue("true"); +// qCylSurfCurrCmd->SetParameter(param); +// param = new G4UIparameter("aflag",'b',true); +// param->SetDefaultValue("true"); +// qCylSurfCurrCmd->SetParameter(param); + // +// qCylSurfFluxCmd = new G4UIcommand("/score/quantity/cylinderSurfaceFlux",this); +// qCylSurfFluxCmd->SetGuidance("Cylinder surface Flux Scorer."); +// qCylSurfFluxCmd-> +// SetGuidance("[usage] /score/quantiy/cylinderSurfaceFlux qname dflag"); +// qCylSurfFluxCmd->SetGuidance(" qname :(String) scorer name"); +// qCylSurfFluxCmd->SetGuidance(" dflag :(Int) direction flag"); +// qCylSurfFluxCmd->SetGuidance(" : 0 = Both In and Out"); +// qCylSurfFluxCmd->SetGuidance(" : 1 = In only"); +// qCylSurfFluxCmd->SetGuidance(" : 2 = Out only"); +// param = new G4UIparameter("qname",'s',false); +// qCylSurfFluxCmd->SetParameter(param); +// param = new G4UIparameter("dflag",'i',true); +// param->SetDefaultValue("0"); +// qCylSurfFluxCmd->SetParameter(param); + // + qNofCollisionCmd = new G4UIcommand("/score/quantity/nOfCollision",this); + qNofCollisionCmd->SetGuidance("Number of collision scorer."); + qNofCollisionCmd-> + SetGuidance("[usage] /score/quantiy/nOfCollision qname wflag"); + qNofCollisionCmd->SetGuidance(" qname :(String) scorer name"); + qNofCollisionCmd->SetGuidance(" wflag :(Bool) weighted"); + param = new G4UIparameter("qname",'s',false); + qNofCollisionCmd->SetParameter(param); + param = new G4UIparameter("wflag",'b',true); + param->SetDefaultValue("false"); + qNofCollisionCmd->SetParameter(param); + // + qPopulationCmd = new G4UIcommand("/score/quantity/population",this); + qPopulationCmd->SetGuidance("Population scorer."); + qPopulationCmd-> + SetGuidance("[usage] /score/quantiy/population qname wflag"); + qPopulationCmd->SetGuidance(" qname :(String) scorer name"); + qPopulationCmd->SetGuidance(" wflag :(Bool) weighted"); + param = new G4UIparameter("qname",'s',false); + qPopulationCmd->SetParameter(param); + param = new G4UIparameter("wflag",'b',true); + param->SetDefaultValue("false"); + qPopulationCmd->SetParameter(param); + + // + qTrackCountCmd = new G4UIcommand("/score/quantity/nOfTrack",this); + qTrackCountCmd->SetGuidance("Number of track scorer."); + qTrackCountCmd-> + SetGuidance("[usage] /score/quantiy/nOfTrack qname dflag wflag"); + qTrackCountCmd->SetGuidance(" qname :(String) scorer name"); + qTrackCountCmd->SetGuidance(" dflag :(Int) direction"); + qTrackCountCmd->SetGuidance(" : 0 = Both In and Out"); + qTrackCountCmd->SetGuidance(" : 1 = In only"); + qTrackCountCmd->SetGuidance(" : 2 = Out only"); + qTrackCountCmd->SetGuidance(" wflag :(Bool) weighted"); + param = new G4UIparameter("qname",'s',false); + qTrackCountCmd->SetParameter(param); + param = new G4UIparameter("dflag",'i',true); + param->SetDefaultValue("0"); + qTrackCountCmd->SetParameter(param); + param = new G4UIparameter("wflag",'b',true); + param->SetDefaultValue("false"); + qTrackCountCmd->SetParameter(param); + + // + qTerminationCmd = new G4UIcommand("/score/quantity/nOfTerminatedTrack",this); + qTerminationCmd->SetGuidance("Number of terminated tracks scorer."); + qTerminationCmd-> + SetGuidance("[usage] /score/quantiy/nOfTerminatedTrack qname wflag"); + qTerminationCmd->SetGuidance(" qname :(String) scorer name"); + qTerminationCmd->SetGuidance(" wflag :(Bool) weighted"); + param = new G4UIparameter("qname",'s',false); + qTerminationCmd->SetParameter(param); + param = new G4UIparameter("wflag",'b',true); + param->SetDefaultValue("false"); + qTerminationCmd->SetParameter(param); +} + diff --git a/source/digits_hits/utils/src/G4ScoringBox.cc b/source/digits_hits/utils/src/G4ScoringBox.cc new file mode 100644 index 0000000000..5982c564a0 --- /dev/null +++ b/source/digits_hits/utils/src/G4ScoringBox.cc @@ -0,0 +1,546 @@ +// +// ******************************************************************** +// * 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: G4ScoringBox.cc,v 1.48 2007/11/14 20:41:17 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4ScoringBox.hh" + +#include "G4Box.hh" +#include "G4LogicalVolume.hh" +#include "G4VPhysicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4PVReplica.hh" +#include "G4PVDivision.hh" +#include "G4PVParameterised.hh" +#include "G4VisAttributes.hh" +#include "G4ScoringBoxParameterisation.hh" +#include "G4VVisManager.hh" +#include "G4VScoreColorMap.hh" + +#include "G4MultiFunctionalDetector.hh" +#include "G4SDParticleFilter.hh" +#include "G4VPrimitiveScorer.hh" + +#include "G4ScoringManager.hh" + +#include +#include + +G4ScoringBox::G4ScoringBox(G4String wName) + :G4VScoringMesh(wName), fSegmentDirection(-1), + fMeshElementLogical(0) +{ + fShape = boxMesh; +} + +G4ScoringBox::~G4ScoringBox() +{ +} + +void G4ScoringBox::Construct(G4VPhysicalVolume* fWorldPhys) +{ + if(fConstructed) { + + if(verboseLevel > 0) + G4cout << fWorldPhys->GetName() << " --- All quantities are reset." << G4endl; + ResetScore(); + + } else { + fConstructed = true; + SetupGeometry(fWorldPhys); + } +} + + + +void G4ScoringBox::SetupGeometry(G4VPhysicalVolume * fWorldPhys) { + + if(verboseLevel > 9) G4cout << "G4ScoringBox::SetupGeometry() ..." << G4endl; + + // World + G4VPhysicalVolume * scoringWorld = fWorldPhys; + G4LogicalVolume * worldLogical = scoringWorld->GetLogicalVolume(); + + // Scoring Mesh + if(verboseLevel > 9) G4cout << fWorldName << G4endl; + G4String boxName = fWorldName; + + if(verboseLevel > 9) G4cout << fSize[0] << ", " << fSize[1] << ", " << fSize[2] << G4endl; + G4VSolid * boxSolid = new G4Box(boxName+"0", fSize[0], fSize[1], fSize[2]); + G4LogicalVolume * boxLogical = new G4LogicalVolume(boxSolid, 0, boxName); + new G4PVPlacement(fRotationMatrix, fCenterPosition, + boxLogical, boxName+"0", worldLogical, false, 0); + + //G4double fsegment[3][3]; + //G4int segOrder[3]; + //GetSegmentOrder(fSegmentDirection, fNSegment, segOrder, fsegment); + //EAxis axis[3] = {kXAxis, kYAxis, kZAxis}; + + G4String layerName[2] = {boxName + "1", boxName + "2"}; + G4VSolid * layerSolid[2]; + G4LogicalVolume * layerLogical[2]; + + // fisrt nested layer (replicated to x direction) + if(verboseLevel > 9) G4cout << "layer 1 :" << G4endl; + layerSolid[0] = new G4Box(layerName[0], + fSize[0]/fNSegment[0], + fSize[1], + fSize[2]); + layerLogical[0] = new G4LogicalVolume(layerSolid[0], 0, layerName[0]); + if(fNSegment[0] > 1) { + if(verboseLevel > 9) G4cout << "G4ScoringBox::Construct() : Replicate to x direction" << G4endl; + if(G4ScoringManager::GetReplicaLevel()>0) + { + new G4PVReplica(layerName[0], layerLogical[0], boxLogical, kXAxis, + fNSegment[0], fSize[0]/fNSegment[0]*2.); + } + else + { + new G4PVDivision(layerName[0], layerLogical[0], boxLogical, kXAxis, + fNSegment[0], fSize[0]/fNSegment[0]*2.); + } + } else if(fNSegment[0] == 1) { + if(verboseLevel > 9) G4cout << "G4ScoringBox::Construct() : Placement" << G4endl; + new G4PVPlacement(0, G4ThreeVector(0.,0.,0.), layerLogical[0], layerName[0], boxLogical, false, 0); + } else + G4cerr << "ERROR : G4ScoringBox::SetupGeometry() : invalid parameter (" + << fNSegment[0] << ") " + << "in placement of the first nested layer." << G4endl; + + if(verboseLevel > 9) { + G4cout << fSize[0]/fNSegment[0] << ", " + << fSize[1] << ", " + << fSize[2] << G4endl; + G4cout << layerName[0] << ": kXAxis, " + << fNSegment[0] << ", " + << 2.*fSize[0]/fNSegment[0] << G4endl; + } + + // second nested layer (replicated to y direction) + if(verboseLevel > 9) G4cout << "layer 2 :" << G4endl; + layerSolid[1] = new G4Box(layerName[1], + fSize[0]/fNSegment[0], + fSize[1]/fNSegment[1], + fSize[2]); + layerLogical[1] = new G4LogicalVolume(layerSolid[1], 0, layerName[1]); + if(fNSegment[1] > 1) { + if(verboseLevel > 9) G4cout << "G4ScoringBox::Construct() : Replicate to y direction" << G4endl; + if(G4ScoringManager::GetReplicaLevel()>1) + { + new G4PVReplica(layerName[1], layerLogical[1], layerLogical[0], kYAxis, + fNSegment[1], fSize[1]/fNSegment[1]*2.); + } + else + { + new G4PVDivision(layerName[1], layerLogical[1], layerLogical[0], kYAxis, + fNSegment[1], fSize[1]/fNSegment[1]*2.); + } + } else if(fNSegment[1] == 1) { + if(verboseLevel > 9) G4cout << "G4ScoringBox::Construct() : Placement" << G4endl; + new G4PVPlacement(0, G4ThreeVector(0.,0.,0.), layerLogical[1], layerName[1], layerLogical[0], false, 0); + } else + G4cerr << "ERROR : G4ScoringBox::SetupGeometry() : invalid parameter (" + << fNSegment[1] << ") " + << "in placement of the second nested layer." << G4endl; + + if(verboseLevel > 9) { + G4cout << fSize[0]/fNSegment[0] << ", " + << fSize[1]/fNSegment[1] << ", " + << fSize[2] << G4endl; + G4cout << layerName[1] << ": kYAxis, " + << fNSegment[1] << ", " + << 2.*fSize[1]/fNSegment[1] << G4endl; + } + + // mesh elements (replicated to z direction) + if(verboseLevel > 9) G4cout << "mesh elements :" << G4endl; + G4String elementName = boxName +"3"; + G4VSolid * elementSolid = new G4Box(elementName, + fSize[0]/fNSegment[0], + fSize[1]/fNSegment[1], + fSize[2]/fNSegment[2]); + fMeshElementLogical = new G4LogicalVolume(elementSolid, 0, elementName); + if(fNSegment[2] > 1) + if(fSegmentPositions.size() > 0) { + if(verboseLevel > 9) G4cout << "G4ScoringBox::Construct() : Parameterise to z direction" << G4endl; + G4double motherDims[3] ={fSize[0]/fNSegment[0], + fSize[1]/fNSegment[1], + fSize[2]/fNSegment[2]}; + G4int nelement = fNSegment[2]; + fSegmentPositions.push_back(fSize[2]*2.); + //G4ScoringBoxParameterisation * param = + G4VPVParameterisation * param = + new G4ScoringBoxParameterisation(kZAxis, motherDims, fSegmentPositions); + new G4PVParameterised(elementName, + fMeshElementLogical, + layerLogical[1], + kZAxis, + nelement, + param); + + if(verboseLevel > 9) { + G4cout << motherDims[0] << ", " << motherDims[1] << ", " << motherDims[2] << G4endl; + for(int i = 0; i < (int)fSegmentPositions.size(); i++) + G4cout << fSegmentPositions[i] << ", "; + G4cout << G4endl; + } + + } else { + if(verboseLevel > 9) G4cout << "G4ScoringBox::Construct() : Replicate to z direction" << G4endl; + + if(G4ScoringManager::GetReplicaLevel()>2) + { + new G4PVReplica(elementName, fMeshElementLogical, layerLogical[1], kZAxis, + fNSegment[2], 2.*fSize[2]/fNSegment[2]); + } + else + { + new G4PVDivision(elementName, fMeshElementLogical, layerLogical[1], kZAxis, + fNSegment[2], 2.*fSize[2]/fNSegment[2]); + } + } + else if(fNSegment[2] == 1) { + if(verboseLevel > 9) G4cout << "G4ScoringBox::Construct() : Placement" << G4endl; + new G4PVPlacement(0, G4ThreeVector(0.,0.,0.), fMeshElementLogical, elementName, layerLogical[1], false, 0); + } else + G4cerr << "ERROR : G4ScoringBox::SetupGeometry() : " + << "invalid parameter (" << fNSegment[2] << ") " + << "in mesh element placement." << G4endl; + + if(verboseLevel > 9) { + G4cout << fSize[0]/fNSegment[0] << ", " + << fSize[1]/fNSegment[1] << ", " + << fSize[2]/fNSegment[2] << G4endl; + G4cout << elementName << ": kZAxis, " + << fNSegment[2] << ", " + << 2.*fSize[2]/fNSegment[2] << G4endl; + } + + + // set the sensitive detector + fMeshElementLogical->SetSensitiveDetector(fMFD); + + + // vis. attributes + G4VisAttributes * visatt = new G4VisAttributes(G4Colour(.5,.5,.5)); + visatt->SetVisibility(false); + layerLogical[0]->SetVisAttributes(visatt); + layerLogical[1]->SetVisAttributes(visatt); + visatt->SetVisibility(true); + fMeshElementLogical->SetVisAttributes(visatt); +} + + +void G4ScoringBox::List() const { + G4cout << "G4ScoringBox : " << fWorldName << " --- Shape: Box mesh" << G4endl; + + G4VScoringMesh::List(); +} + +void G4ScoringBox::Draw(std::map * map, G4VScoreColorMap* colorMap, G4int axflg) { + + G4VVisManager * pVisManager = G4VVisManager::GetConcreteInstance(); + if(pVisManager) { + + // cell vectors + std::vector > > cell; // cell[X][Y][Z] + std::vector ez; + for(int z = 0; z < fNSegment[2]; z++) ez.push_back(0.); + std::vector > eyz; + for(int y = 0; y < fNSegment[1]; y++) eyz.push_back(ez); + for(int x = 0; x < fNSegment[0]; x++) cell.push_back(eyz); + + std::vector > xycell; // xycell[X][Y] + std::vector ey; + for(int y = 0; y < fNSegment[1]; y++) ey.push_back(0.); + for(int x = 0; x < fNSegment[0]; x++) xycell.push_back(ey); + + std::vector > yzcell; // yzcell[Y][Z] + for(int y = 0; y < fNSegment[1]; y++) yzcell.push_back(ez); + + std::vector > xzcell; // xzcell[X][Z] + for(int x = 0; x < fNSegment[0]; x++) xzcell.push_back(ez); + + G4double xymax = 0., yzmax = 0., xzmax = 0.; + G4int q[3]; + std::map::iterator itr = map->begin(); + for(; itr != map->end(); itr++) { + GetXYZ(itr->first, q); + + xycell[q[0]][q[1]] += *(itr->second); + if(xymax < xycell[q[0]][q[1]]) xymax = xycell[q[0]][q[1]]; + + yzcell[q[1]][q[2]] += *(itr->second); + if(yzmax < yzcell[q[1]][q[2]]) yzmax = yzcell[q[1]][q[2]]; + + xzcell[q[0]][q[2]] += *(itr->second); + if(xzmax < xzcell[q[0]][q[2]]) xzmax = xzcell[q[0]][q[2]]; + } + + G4VisAttributes att; + att.SetForceSolid(true); + att.SetForceAuxEdgeVisible(true); + + + G4Scale3D scale; + if(axflg/100==1) { + // xy plane + if(colorMap->IfFloatMinMax()) { colorMap->SetMinMax(0.,xymax); } + G4ThreeVector zhalf(0., 0., fSize[2]/fNSegment[2]*0.98); + G4Box xyplate("xy", fSize[0]/fNSegment[0], fSize[1]/fNSegment[1], fSize[2]/fNSegment[2]*0.01); + for(int x = 0; x < fNSegment[0]; x++) { + for(int y = 0; y < fNSegment[1]; y++) { + G4ThreeVector pos(GetReplicaPosition(x, y, 0) - zhalf); + G4ThreeVector pos2(GetReplicaPosition(x, y, fNSegment[2]-1) + zhalf); + G4Transform3D trans, trans2; + if(fRotationMatrix) { + trans = G4Rotate3D(*fRotationMatrix).inverse()*G4Translate3D(pos); + trans = G4Translate3D(fCenterPosition)*trans; + trans2 = G4Rotate3D(*fRotationMatrix).inverse()*G4Translate3D(pos2); + trans2 = G4Translate3D(fCenterPosition)*trans2; + } else { + trans = G4Translate3D(pos)*G4Translate3D(fCenterPosition); + trans2 = G4Translate3D(pos2)*G4Translate3D(fCenterPosition); + } + G4double c[4]; + colorMap->GetMapColor(xycell[x][y], c); + att.SetColour(c[0], c[1], c[2]);//, c[3]); + pVisManager->Draw(xyplate, att, trans); + pVisManager->Draw(xyplate, att, trans2); + + } + } + } + axflg = axflg%100; + if(axflg/10==1) { + // yz plane + if(colorMap->IfFloatMinMax()) { colorMap->SetMinMax(0.,yzmax); } + G4ThreeVector xhalf(fSize[0]/fNSegment[0]*0.98, 0., 0.); + G4Box yzplate("yz", fSize[0]/fNSegment[0]*0.01, fSize[1]/fNSegment[1], fSize[2]/fNSegment[2]); + for(int y = 0; y < fNSegment[1]; y++) { + for(int z = 0; z < fNSegment[2]; z++) { + G4ThreeVector pos(GetReplicaPosition(0, y, z) - xhalf); + G4ThreeVector pos2(GetReplicaPosition(fNSegment[0]-1, y, z) + xhalf); + G4Transform3D trans, trans2; + if(fRotationMatrix) { + trans = G4Rotate3D(*fRotationMatrix).inverse()*G4Translate3D(pos); + trans = G4Translate3D(fCenterPosition)*trans; + trans2 = G4Rotate3D(*fRotationMatrix).inverse()*G4Translate3D(pos2); + trans2 = G4Translate3D(fCenterPosition)*trans2; + } else { + trans = G4Translate3D(pos)*G4Translate3D(fCenterPosition); + trans2 = G4Translate3D(pos2)*G4Translate3D(fCenterPosition); + } + G4double c[4]; + colorMap->GetMapColor(yzcell[y][z], c); + att.SetColour(c[0], c[1], c[2]);//, c[3]); + pVisManager->Draw(yzplate, att, trans); + pVisManager->Draw(yzplate, att, trans2); + + } + } + } + axflg = axflg%10; + if(axflg==1) { + // xz plane + if(colorMap->IfFloatMinMax()) { colorMap->SetMinMax(0.,xzmax); } + G4ThreeVector yhalf(0., fSize[1]/fNSegment[1]*0.98, 0.); + G4Box xzplate("xz", fSize[0]/fNSegment[0], fSize[1]/fNSegment[1]*0.01, fSize[2]/fNSegment[2]); + for(int x = 0; x < fNSegment[0]; x++) { + for(int z = 0; z < fNSegment[2]; z++) { + G4ThreeVector pos(GetReplicaPosition(x, 0, z) - yhalf); + G4ThreeVector pos2(GetReplicaPosition(x, fNSegment[1]-1, z) + yhalf); + G4Transform3D trans, trans2; + if(fRotationMatrix) { + trans = G4Rotate3D(*fRotationMatrix).inverse()*G4Translate3D(pos); + trans = G4Translate3D(fCenterPosition)*trans; + trans2 = G4Rotate3D(*fRotationMatrix).inverse()*G4Translate3D(pos2); + trans2 = G4Translate3D(fCenterPosition)*trans2; + } else { + trans = G4Translate3D(pos)*G4Translate3D(fCenterPosition); + trans2 = G4Translate3D(pos2)*G4Translate3D(fCenterPosition); + } + G4double c[4]; + colorMap->GetMapColor(xzcell[x][z], c); + att.SetColour(c[0], c[1], c[2]);//, c[3]); + pVisManager->Draw(xzplate, att, trans); + pVisManager->Draw(xzplate, att, trans2); + + } + } + } + } +} + +G4ThreeVector G4ScoringBox::GetReplicaPosition(G4int x, G4int y, G4int z) { + + G4ThreeVector width(fSize[0]/fNSegment[0], fSize[1]/fNSegment[1], fSize[2]/fNSegment[2]); + G4ThreeVector pos(-fSize[0] + 2*(x+0.5)*width.x(), + -fSize[1] + 2*(y+0.5)*width.y(), + -fSize[2] + 2*(z+0.5)*width.z()); + + return pos; +} + +void G4ScoringBox::GetXYZ(G4int index, G4int q[3]) const { + + q[0] = index/(fNSegment[2]*fNSegment[1]); + q[1] = (index - q[0]*fNSegment[2]*fNSegment[1])/fNSegment[2]; + q[2] = index - q[1]*fNSegment[2] - q[0]*fNSegment[2]*fNSegment[1]; + +} + +G4int G4ScoringBox::GetIndex(G4int x, G4int y, G4int z) const { + return x + y*fNSegment[0] + z*fNSegment[0]*fNSegment[1]; +} + +void G4ScoringBox::DrawColumn(std::map * map, G4VScoreColorMap* colorMap, + G4int idxProj, G4int idxColumn) +{ + if(idxColumn<0 || idxColumn>=fNSegment[idxProj]) + { + G4cerr << "ERROR : Column number " << idxColumn << " is out of scoring mesh [0," << fNSegment[idxProj]-1 << + "]. Method ignored." << G4endl; + return; + } + G4VVisManager * pVisManager = G4VVisManager::GetConcreteInstance(); + if(pVisManager) { + + // cell vectors + std::vector > > cell; // cell[X][Y][Z] + std::vector ez; + for(int z = 0; z < fNSegment[2]; z++) ez.push_back(0.); + std::vector > eyz; + for(int y = 0; y < fNSegment[1]; y++) eyz.push_back(ez); + for(int x = 0; x < fNSegment[0]; x++) cell.push_back(eyz); + + std::vector > xycell; // xycell[X][Y] + std::vector ey; + for(int y = 0; y < fNSegment[1]; y++) ey.push_back(0.); + for(int x = 0; x < fNSegment[0]; x++) xycell.push_back(ey); + + std::vector > yzcell; // yzcell[Y][Z] + for(int y = 0; y < fNSegment[1]; y++) yzcell.push_back(ez); + + std::vector > xzcell; // xzcell[X][Z] + for(int x = 0; x < fNSegment[0]; x++) xzcell.push_back(ez); + + G4double xymax = 0., yzmax = 0., xzmax = 0.; + G4int q[3]; + std::map::iterator itr = map->begin(); + for(; itr != map->end(); itr++) { + GetXYZ(itr->first, q); + + if(idxProj == 0 && q[2] == idxColumn) { // xy plane + xycell[q[0]][q[1]] += *(itr->second); + if(xymax < xycell[q[0]][q[1]]) xymax = xycell[q[0]][q[1]]; + } + if(idxProj == 1 && q[0] == idxColumn) { // yz plane + yzcell[q[1]][q[2]] += *(itr->second); + if(yzmax < yzcell[q[1]][q[2]]) yzmax = yzcell[q[1]][q[2]]; + } + if(idxProj == 2 && q[1] == idxColumn) { // zx plane + xzcell[q[0]][q[2]] += *(itr->second); + if(xzmax < xzcell[q[0]][q[2]]) xzmax = xzcell[q[0]][q[2]]; + } + } + + G4VisAttributes att; + att.SetForceSolid(true); + att.SetForceAuxEdgeVisible(true); + + + G4Scale3D scale; + // xy plane + if(idxProj == 0) { + if(colorMap->IfFloatMinMax()) { colorMap->SetMinMax(0.,xymax); } + G4Box xyplate("xy", fSize[0]/fNSegment[0], fSize[1]/fNSegment[1], fSize[2]/fNSegment[2]); + for(int x = 0; x < fNSegment[0]; x++) { + for(int y = 0; y < fNSegment[1]; y++) { + G4ThreeVector pos(GetReplicaPosition(x, y, idxColumn)); + G4Transform3D trans; + if(fRotationMatrix) { + trans = G4Rotate3D(*fRotationMatrix).inverse()*G4Translate3D(pos); + trans = G4Translate3D(fCenterPosition)*trans; + } else { + trans = G4Translate3D(pos)*G4Translate3D(fCenterPosition); + } + G4double c[4]; + colorMap->GetMapColor(xycell[x][y], c); + att.SetColour(c[0], c[1], c[2]);//, c[3]); + pVisManager->Draw(xyplate, att, trans); + + } + } + } else + // yz plane + if(idxProj == 1) { + if(colorMap->IfFloatMinMax()) { colorMap->SetMinMax(0.,yzmax); } + G4Box yzplate("yz", fSize[0]/fNSegment[0], fSize[1]/fNSegment[1], fSize[2]/fNSegment[2]); + for(int y = 0; y < fNSegment[1]; y++) { + for(int z = 0; z < fNSegment[2]; z++) { + G4ThreeVector pos(GetReplicaPosition(idxColumn, y, z)); + G4Transform3D trans; + if(fRotationMatrix) { + trans = G4Rotate3D(*fRotationMatrix).inverse()*G4Translate3D(pos); + trans = G4Translate3D(fCenterPosition)*trans; + } else { + trans = G4Translate3D(pos)*G4Translate3D(fCenterPosition); + } + G4double c[4]; + colorMap->GetMapColor(yzcell[y][z], c); + att.SetColour(c[0], c[1], c[2]);//, c[3]); + pVisManager->Draw(yzplate, att, trans); + } + } + } else + // xz plane + if(idxProj == 2) { + if(colorMap->IfFloatMinMax()) { colorMap->SetMinMax(0.,xzmax);} + G4Box xzplate("xz", fSize[0]/fNSegment[0], fSize[1]/fNSegment[1], fSize[2]/fNSegment[2]); + for(int x = 0; x < fNSegment[0]; x++) { + for(int z = 0; z < fNSegment[2]; z++) { + G4ThreeVector pos(GetReplicaPosition(x, idxColumn, z)); + G4Transform3D trans; + if(fRotationMatrix) { + trans = G4Rotate3D(*fRotationMatrix).inverse()*G4Translate3D(pos); + trans = G4Translate3D(fCenterPosition)*trans; + } else { + trans = G4Translate3D(pos)*G4Translate3D(fCenterPosition); + } + G4double c[4]; + colorMap->GetMapColor(xzcell[x][z], c); + att.SetColour(c[0], c[1], c[2]);//, c[3]); + pVisManager->Draw(xzplate, att, trans); + } + } + } + } +} + + diff --git a/source/digits_hits/utils/src/G4ScoringBoxParameterisation.cc b/source/digits_hits/utils/src/G4ScoringBoxParameterisation.cc new file mode 100644 index 0000000000..32e1e2ecca --- /dev/null +++ b/source/digits_hits/utils/src/G4ScoringBoxParameterisation.cc @@ -0,0 +1,94 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// + +#include "G4ScoringBoxParameterisation.hh" + +#include "G4VPhysicalVolume.hh" +#include "G4ThreeVector.hh" +#include "G4Box.hh" + +G4ScoringBoxParameterisation::G4ScoringBoxParameterisation(EAxis segaxis, + G4double motherDimension[3], + std::vector & segpos) + : fSegmentAxis(segaxis), fSegmentPositions(segpos) { + + for(int i = 0; i < 3; i++) fMotherDimensions[i] = motherDimension[i]; +} + +G4ScoringBoxParameterisation::~G4ScoringBoxParameterisation() { + ; +} + +void G4ScoringBoxParameterisation::ComputeTransformation(const G4int copyNo, + G4VPhysicalVolume *physVol) const { + G4ThreeVector trans; + + G4double pos; + if(copyNo == 0) + pos = fSegmentPositions[copyNo]/2.; + else + pos = (fSegmentPositions[copyNo-1] + fSegmentPositions[copyNo])/2.; + + if(fSegmentAxis == kXAxis) { + trans[0] = pos - fMotherDimensions[0]; + } + if(fSegmentAxis == kYAxis) { + trans[1] = pos - fMotherDimensions[1]; + } + if(fSegmentAxis == kZAxis) { + trans[2] = pos - fMotherDimensions[2]; + } + + physVol->SetTranslation(trans); + +} + +void G4ScoringBoxParameterisation::ComputeDimensions(G4Box & meshElement, + const G4int copyNo, + const G4VPhysicalVolume*) const { + + G4double dims[3] = {fMotherDimensions[0],fMotherDimensions[1],fMotherDimensions[2]}; + + G4double dim; + if(copyNo == 0) + dim = fSegmentPositions[copyNo]/2.; + else + dim = (fSegmentPositions[copyNo] - fSegmentPositions[copyNo-1])/2.; + + if(fSegmentAxis == kXAxis) { + dims[0] = dim; + } + if(fSegmentAxis == kYAxis) { + dims[1] = dim; + } + if(fSegmentAxis == kZAxis) { + dims[2] = dim; + } + + meshElement.SetXHalfLength(dims[0]); + meshElement.SetYHalfLength(dims[1]); + meshElement.SetZHalfLength(dims[2]); +} diff --git a/source/digits_hits/utils/src/G4ScoringManager.cc b/source/digits_hits/utils/src/G4ScoringManager.cc new file mode 100644 index 0000000000..0c8a0da0e5 --- /dev/null +++ b/source/digits_hits/utils/src/G4ScoringManager.cc @@ -0,0 +1,209 @@ +// +// ******************************************************************** +// * 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: G4ScoringManager.cc,v 1.30 2007/11/14 22:08:15 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4ScoringManager.hh" +#include "G4ScoringMessenger.hh" +#include "G4ScoreQuantityMessenger.hh" +#include "G4VScoringMesh.hh" +#include "G4THitsMap.hh" +#include "G4VScoreColorMap.hh" +#include "G4DefaultLinearColorMap.hh" + +G4ScoringManager* G4ScoringManager::fSManager = 0; + +G4int G4ScoringManager::replicaLevel = 2; + +G4ScoringManager* G4ScoringManager::GetScoringManager() +{ + if(!fSManager) + { + fSManager = new G4ScoringManager; + } + return fSManager; +} + +G4ScoringManager* G4ScoringManager::GetScoringManagerIfExist() +{ return fSManager; } + +G4ScoringManager::G4ScoringManager() +:verboseLevel(0),fCurrentMesh(0) +{ + fMessenger = new G4ScoringMessenger(this); + fQuantityMessenger = new G4ScoreQuantityMessenger(this); + fColorMapDict = new ColorMapDict(); + fDefaultLinearColorMap = new G4DefaultLinearColorMap("defaultLinearColorMap"); + (*fColorMapDict)[fDefaultLinearColorMap->GetName()] = fDefaultLinearColorMap; + writer = new G4VScoreWriter(); +} + +G4ScoringManager::~G4ScoringManager() +{ + delete fMessenger; + fSManager = 0; + if(writer) delete writer; +} + +void G4ScoringManager::SetReplicaLevel(G4int lvl) +{ replicaLevel = lvl; } +G4int G4ScoringManager::GetReplicaLevel() +{ return replicaLevel; } + +void G4ScoringManager::Accumulate(G4VHitsCollection* map) +{ + G4String wName = map->GetSDname(); + G4VScoringMesh* sm = FindMesh(wName); + if(sm == NULL) return; + if(verboseLevel>9) + { G4cout << "G4ScoringManager::Accumulate() for " << map->GetSDname() << " / " << map->GetName() << G4endl; + G4cout << " is calling G4VScoringMesh::Accumulate() of " << sm->GetWorldName() << G4endl; } + sm->Accumulate(static_cast*>(map)); +} + +G4VScoringMesh* G4ScoringManager::FindMesh(G4String wName) +{ + G4VScoringMesh* sm = 0; + for(MeshVecItr itr = fMeshVec.begin(); itr != fMeshVec.end(); itr++) { + G4String smName = (*itr)->GetWorldName(); + if(wName == smName) { + sm = *itr; + break; + } + } + if(!sm && verboseLevel>9) + { G4cout << "WARNING : G4ScoringManager::FindMesh() --- <" << wName << "> is not found. Null returned." << G4endl; } + + return sm; +} + +void G4ScoringManager::List() const +{ + G4cout << "G4ScoringManager has " << GetNumberOfMesh() << " scoring meshes." << G4endl; + for(MeshVecConstItr itr = fMeshVec.begin(); itr != fMeshVec.end(); itr++) { + (*itr)->List(); + } +} + +void G4ScoringManager::Dump() const +{ + for(MeshVecConstItr itr = fMeshVec.begin(); itr != fMeshVec.end(); itr++) { + (*itr)->Dump(); + } +} + +void G4ScoringManager::DrawMesh(G4String meshName,G4String psName,G4String colorMapName,G4int axflg) +{ + G4VScoringMesh* mesh = FindMesh(meshName); + if(mesh) + { + G4VScoreColorMap* colorMap = GetScoreColorMap(colorMapName); + if(!colorMap) + { + G4cerr << "WARNING : Score color map <" << colorMapName << "> is not found. Default linear color map is used." << G4endl; + colorMap = fDefaultLinearColorMap; + } + mesh->DrawMesh(psName,colorMap,axflg); + } else { + G4cerr << "ERROR : G4ScoringManager::DrawMesh() --- <" + << meshName << "> is not found. Nothing is done." << G4endl; + } +} + +void G4ScoringManager::DrawMesh(G4String meshName,G4String psName,G4int idxPlane,G4int iColumn,G4String colorMapName) +{ + G4VScoringMesh* mesh = FindMesh(meshName); + if(mesh) + { + G4VScoreColorMap* colorMap = GetScoreColorMap(colorMapName); + if(!colorMap) + { + G4cerr << "WARNING : Score color map <" << colorMapName << "> is not found. Default linear color map is used." << G4endl; + colorMap = fDefaultLinearColorMap; + } + mesh->DrawMesh(psName,idxPlane,iColumn,colorMap); + } else { + G4cerr << "ERROR : G4ScoringManager::DrawMesh() --- <" + << meshName << "> is not found. Nothing is done." << G4endl; + } +} + +void G4ScoringManager::DumpQuantityToFile(G4String meshName,G4String psName,G4String fileName, G4String option) +{ + G4VScoringMesh* mesh = FindMesh(meshName); + if(mesh) { + writer->SetScoringMesh(mesh); + writer->DumpQuantityToFile(psName, fileName, option); + } else { + G4cerr << "ERROR : G4ScoringManager::DrawQuantityToFile() --- <" + << meshName << "> is not found. Nothing is done." << G4endl; + } +} + +void G4ScoringManager::DumpAllQuantitiesToFile(G4String meshName,G4String fileName, G4String option) +{ + G4VScoringMesh* mesh = FindMesh(meshName); + if(mesh) { + writer->SetScoringMesh(mesh); + writer->DumpAllQuantitiesToFile(fileName, option); + } else { + G4cerr << "ERROR : G4ScoringManager::DrawAllQuantitiesToFile() --- <" + << meshName << "> is not found. Nothing is done." << G4endl; + } +} + +void G4ScoringManager::RegisterScoreColorMap(G4VScoreColorMap* colorMap) +{ + if(fColorMapDict->find(colorMap->GetName()) != fColorMapDict->end()) + { + G4cerr << "ERROR : G4ScoringManager::RegisterScoreColorMap -- " + << colorMap->GetName() << " has already been registered. Method ignored." << G4endl; + } + else + { + (*fColorMapDict)[colorMap->GetName()] = colorMap; + } +} + +G4VScoreColorMap* G4ScoringManager::GetScoreColorMap(G4String mapName) +{ + ColorMapDictItr mItr = fColorMapDict->find(mapName); + if(mItr == fColorMapDict->end()) { return 0; } + return (mItr->second); +} + +void G4ScoringManager::ListScoreColorMaps() +{ + G4cout << "Registered Score Color Maps -------------------------------------------------------" << G4endl; + ColorMapDictItr mItr = fColorMapDict->begin(); + for(;mItr!=fColorMapDict->end();mItr++) + { G4cout << " " << mItr->first; } + G4cout << G4endl; +} + + diff --git a/source/digits_hits/utils/src/G4ScoringMessenger.cc b/source/digits_hits/utils/src/G4ScoringMessenger.cc new file mode 100644 index 0000000000..8fddafc0e3 --- /dev/null +++ b/source/digits_hits/utils/src/G4ScoringMessenger.cc @@ -0,0 +1,465 @@ +// +// ******************************************************************** +// * 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: G4ScoringMessenger.cc,v 1.36 2007/11/12 13:27:31 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// --------------------------------------------------------------------- + +#include "G4ScoringMessenger.hh" +#include "G4ScoringManager.hh" +#include "G4VScoringMesh.hh" +#include "G4ScoringBox.hh" + +#include "G4UIdirectory.hh" +#include "G4UIcmdWithoutParameter.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithABool.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWith3VectorAndUnit.hh" +#include "G4UIcommand.hh" +#include "G4Tokenizer.hh" +#include "G4UnitsTable.hh" +#include "G4VScoreColorMap.hh" + +G4ScoringMessenger::G4ScoringMessenger(G4ScoringManager* SManager) +:fSMan(SManager) +{ + G4UIparameter* param; + + scoreDir = new G4UIdirectory("/score/"); + scoreDir->SetGuidance("Interactive scoring commands."); + + listCmd = new G4UIcmdWithoutParameter("/score/list",this); + listCmd->SetGuidance("List scoring worlds."); + + dumpCmd = new G4UIcmdWithoutParameter("/score/dump",this); + dumpCmd->SetGuidance("Dump results of scorers."); + + verboseCmd = new G4UIcmdWithAnInteger("/score/verbose",this); + verboseCmd->SetGuidance("Verbosity."); + verboseCmd->SetGuidance(" 0) errors or warnings,"); + verboseCmd->SetGuidance(" 1) information with 0)"); + + meshDir = new G4UIdirectory("/score/mesh/"); + meshDir->SetGuidance(" Mesh processing commands."); + + meshCreateDir = new G4UIdirectory("/score/create/"); + meshCreateDir->SetGuidance(" Mesh creation commands."); + // + // Mesh commands + meshBoxCreateCmd = new G4UIcmdWithAString("/score/create/boxMesh",this); + meshBoxCreateCmd->SetGuidance("Create scoring box mesh."); + meshBoxCreateCmd->SetParameterName("MeshName",false); + // +// meshTubsCreateCmd = new G4UIcmdWithAString("/score/create/tubsMesh",this); +// meshTubsCreateCmd->SetGuidance("Create scoring mesh."); +// meshTubsCreateCmd->SetParameterName("MeshName",false); + // +// meshSphereCreateCmd = new G4UIcmdWithAString("/score/create/sphereMesh",this); +// meshSphereCreateCmd->SetGuidance("Create scoring mesh."); +// meshSphereCreateCmd->SetParameterName("MeshName",false); + // + meshOpnCmd = new G4UIcmdWithAString("/score/open",this); + meshOpnCmd->SetGuidance("Open scoring mesh."); + meshOpnCmd->SetParameterName("MeshName",false); + // + meshClsCmd = new G4UIcmdWithoutParameter("/score/close",this); + meshClsCmd->SetGuidance("Close scoring mesh."); + // +// meshActCmd = new G4UIcmdWithABool("/score/mesh/activate",this); +// meshActCmd->SetGuidance("Activate scoring mesh."); +// meshActCmd->SetParameterName("MeshName",false); + // + mBoxSizeCmd = new G4UIcmdWith3VectorAndUnit("/score/mesh/boxSize",this); + mBoxSizeCmd->SetGuidance("Define size of the scoring mesh."); + mBoxSizeCmd->SetParameterName("Di","Dj","Dk",false,false); + mBoxSizeCmd->SetRange("Di>0. && Dj>0. && Dk>0."); + mBoxSizeCmd->SetDefaultUnit("mm"); + // + // Division command + mBinCmd = new G4UIcommand("/score/mesh/nBin",this); + mBinCmd->SetGuidance("Define segments of the scoring mesh."); + mBinCmd->SetGuidance("[usage] /score/mesh/nBin"); + mBinCmd->SetGuidance(" Ni :(int) Number of bins i "); + mBinCmd->SetGuidance(" Nj :(int) Number of bins j "); + mBinCmd->SetGuidance(" Nk :(int) Number of bins k "); + //mBinCmd->SetGuidance(" Axis:(int) Axis of division "); +// mBinCmd->SetGuidance(" P1..Pn-1 :(double) \"paramter from P1 to Pn-1 for division.\""); + param = new G4UIparameter("Ni",'i',false); + param->SetDefaultValue("1"); + param->SetParameterRange("Ni>0"); + mBinCmd->SetParameter(param); + param = new G4UIparameter("Nj",'i',false); + param->SetDefaultValue("1"); + param->SetParameterRange("Nj>0"); + mBinCmd->SetParameter(param); + param = new G4UIparameter("Nk",'i',false); + param->SetDefaultValue("1"); + mBinCmd->SetParameter(param); + param->SetParameterRange("Nk>0"); + //param = new G4UIparameter("Axis",'i',true); + //param->SetDefaultValue("3"); + //mBinCmd->SetParameter(param); + // + // Placement command + mTransDir = new G4UIdirectory("/score/mesh/translate/"); + mTransDir->SetGuidance("Mesh translation commands."); + // + mTResetCmd = new G4UIcmdWithoutParameter("/score/mesh/translate/reset",this); + mTResetCmd->SetGuidance("Reset translated position of the scoring mesh."); + // + mTXyzCmd = new G4UIcmdWith3VectorAndUnit("/score/mesh/translate/xyz",this); + mTXyzCmd->SetGuidance("Translate the scoring mesh."); + mTXyzCmd->SetParameterName("X","Y","Z",false,false); + mTXyzCmd->SetDefaultUnit("mm"); + // + mRotDir = new G4UIdirectory("/score/mesh/rotate/"); + mRotDir->SetGuidance("Mesh rotation commands."); + // + mRResetCmd = new G4UIcmdWithoutParameter("/score/mesh/rotate/reset",this); + mRResetCmd->SetGuidance("Reset rotation angles of the scoring mesh."); + // + mRotXCmd = new G4UIcmdWithADoubleAndUnit("/score/mesh/rotate/rotateX",this); + mRotXCmd->SetGuidance("Rotate the scoring mesh in X axis."); + mRotXCmd->SetParameterName("Rx",false); + mRotXCmd->SetDefaultUnit("deg"); + // + mRotYCmd = new G4UIcmdWithADoubleAndUnit("/score/mesh/rotate/rotateY",this); + mRotYCmd->SetGuidance("Rotate the scoring mesh in Y axis."); + mRotYCmd->SetParameterName("Ry",false); + mRotYCmd->SetDefaultUnit("deg"); + // + mRotZCmd = new G4UIcmdWithADoubleAndUnit("/score/mesh/rotate/rotateZ",this); + mRotZCmd->SetGuidance("Rotate the scoring mesh in Z axis."); + mRotZCmd->SetParameterName("Rz",false); + mRotZCmd->SetDefaultUnit("deg"); + // + + // Draw Scoring result + drawCmd = new G4UIcommand("/score/drawProjection",this); + drawCmd->SetGuidance("Draw projection(s) of scored quantities."); + drawCmd->SetGuidance("Parameter specified which projection(s) to be drawn."); + drawCmd->SetGuidance(" 100 : xy-plane, 010 : yz-place, 001 : zx-plane -- default 111"); + param = new G4UIparameter("meshName",'s',false); + drawCmd->SetParameter(param); + param = new G4UIparameter("psName",'s',false); + drawCmd->SetParameter(param); + param = new G4UIparameter("colorMapName",'s',true); + param->SetDefaultValue("defaultLinearColorMap"); + drawCmd->SetParameter(param); + param = new G4UIparameter("proj",'i',true); + param->SetDefaultValue(111); + drawCmd->SetParameter(param); + + // Draw column + drawColumnCmd = new G4UIcommand("/score/drawColumn",this); + drawColumnCmd->SetGuidance("Draw a cell column."); + drawColumnCmd->SetGuidance(" plane = 0 : xy, 1: yz, 2: zx"); + param = new G4UIparameter("meshName",'s',false); + drawColumnCmd->SetParameter(param); + param = new G4UIparameter("psName",'s',false); + drawColumnCmd->SetParameter(param); + param = new G4UIparameter("plane",'i',false); + param->SetParameterRange("plane>=0 && plane<=2"); + drawColumnCmd->SetParameter(param); + param = new G4UIparameter("column",'i',false); + drawColumnCmd->SetParameter(param); + param = new G4UIparameter("colorMapName",'s',true); + param->SetDefaultValue("defaultLinearColorMap"); + drawColumnCmd->SetParameter(param); + + colorMapDir = new G4UIdirectory("/score/colorMap/"); + colorMapDir->SetGuidance("Color map commands."); + + listColorMapCmd = new G4UIcmdWithoutParameter("/score/colorMap/listScoreColorMaps",this); + listColorMapCmd->SetGuidance("List registered score color maps."); + + floatMinMaxCmd = new G4UIcmdWithAString("/score/colorMap/floatMinMax",this); + floatMinMaxCmd->SetGuidance("Min/Max of the color map is calculated accorging to the actual scores."); + floatMinMaxCmd->SetParameterName("colorMapName",true,false); + floatMinMaxCmd->SetDefaultValue("defaultLinearColorMap"); + + colorMapMinMaxCmd = new G4UIcommand("/score/colorMap/setMinMax",this); + colorMapMinMaxCmd->SetGuidance("Define min/max value of the color map."); + param = new G4UIparameter("colorMapMame",'s',true); + param->SetDefaultValue("defaultLinearColorMap"); + colorMapMinMaxCmd->SetParameter(param); + param = new G4UIparameter("minValue",'d',false); + colorMapMinMaxCmd->SetParameter(param); + param = new G4UIparameter("maxValue",'d',false); + colorMapMinMaxCmd->SetParameter(param); + + // Dump a scored quantity + dumpQtyToFileCmd = new G4UIcommand("/score/dumpQuantityToFile", this); + dumpQtyToFileCmd->SetGuidance("Dump one scored quantity to file."); + param = new G4UIparameter("meshName", 's', false); + dumpQtyToFileCmd->SetParameter(param); + param = new G4UIparameter("psName", 's', false); + dumpQtyToFileCmd->SetParameter(param); + param = new G4UIparameter("fileName", 's', false); + dumpQtyToFileCmd->SetParameter(param); + param = new G4UIparameter("option", 's', true); + dumpQtyToFileCmd->SetParameter(param); + + // Dump all scored quantities + dumpAllQtsToFileCmd = new G4UIcommand("/score/dumpAllQuantitiesToFile", this); + dumpAllQtsToFileCmd->SetGuidance("Dump all quantities of the mesh to file."); + param = new G4UIparameter("meshName", 's', false); + dumpAllQtsToFileCmd->SetParameter(param); + param = new G4UIparameter("fileName", 's', false); + dumpAllQtsToFileCmd->SetParameter(param); + param = new G4UIparameter("option", 's', true); + dumpAllQtsToFileCmd->SetParameter(param); + +} + +G4ScoringMessenger::~G4ScoringMessenger() +{ + delete listCmd; + delete verboseCmd; + // + delete meshCreateDir; + delete meshBoxCreateCmd; +// delete meshTubsCreateCmd; +// delete meshSphereCreateCmd; + // + delete meshOpnCmd; + // + delete meshClsCmd; +// delete meshActCmd; + delete meshDir; + // + delete mBoxSizeCmd; + delete mTubsSizeCmd; + delete mSphereSizeCmd; + // + delete mBinCmd; + // + delete mTResetCmd; + delete mTXyzCmd; + delete mTransDir; + delete mRResetCmd; + delete mRotXCmd; + delete mRotYCmd; + delete mRotZCmd; + delete mRotDir; + // + delete dumpCmd; + delete drawCmd; + delete drawColumnCmd; + delete listColorMapCmd; + delete floatMinMaxCmd; + delete colorMapMinMaxCmd; + delete colorMapDir; + delete dumpQtyToFileCmd; + delete dumpAllQtsToFileCmd; + // + delete scoreDir; +} + +void G4ScoringMessenger::SetNewValue(G4UIcommand * command,G4String newVal) +{ + if(command==listCmd) { + fSMan->List(); + } else if(command==dumpCmd) { + fSMan->Dump(); + } else if(command==drawCmd) { + G4Tokenizer next(newVal); + G4String meshName = next(); + G4String psName = next(); + G4String colorMapName = next(); + G4int axflg = StoI(next()); + fSMan->DrawMesh(meshName,psName,colorMapName,axflg); + } else if(command==drawColumnCmd) { + G4Tokenizer next(newVal); + G4String meshName = next(); + G4String psName = next(); + G4int iPlane = StoI(next()); + G4int iColumn = StoI(next()); + G4String colorMapName = next(); + fSMan->DrawMesh(meshName,psName,iPlane,iColumn,colorMapName); + } else if(command==dumpQtyToFileCmd) { + G4Tokenizer next(newVal); + G4String meshName = next(); + G4String psName = next(); + G4String fileName = next(); + G4String option = next("\n"); + fSMan->DumpQuantityToFile(meshName, psName, fileName, option); + } else if(command==dumpAllQtsToFileCmd) { + G4Tokenizer next(newVal); + G4String meshName = next(); + G4String fileName = next(); + G4String option = next("\n"); + fSMan->DumpAllQuantitiesToFile(meshName, fileName, option); + } else if(command==verboseCmd) { + fSMan->SetVerboseLevel(verboseCmd->GetNewIntValue(newVal)); + } else if(command==meshBoxCreateCmd) { + G4VScoringMesh* currentmesh = fSMan->GetCurrentMesh(); + if ( currentmesh ){ + G4cerr << "ERROR[" << meshBoxCreateCmd->GetCommandPath() + << "] : Mesh <" << currentmesh->GetWorldName() << "> is still open. Close it first. Command ignored." << G4endl; + } else { + + G4VScoringMesh* mesh = fSMan->FindMesh(newVal); + if ( !mesh ){ + mesh = new G4ScoringBox(newVal); + fSMan->RegisterScoringMesh(mesh); + }else{ + G4cerr << "ERROR[" << meshBoxCreateCmd->GetCommandPath() + << "] : Scoring mesh <" << newVal + << "> already exists. Command ignored." << G4endl; + } + } + } else if(command==listColorMapCmd) { + fSMan->ListScoreColorMaps(); + } else if(command==floatMinMaxCmd) { + G4VScoreColorMap* colorMap = fSMan->GetScoreColorMap(newVal); + if(colorMap) + { colorMap->SetFloatingMinMax(true); } + else + { G4cerr << "ERROR[" << floatMinMaxCmd->GetCommandPath() + << "] : color map <" << newVal << "> is not defined. Command ignored." << G4endl; } + } else if(command==colorMapMinMaxCmd) { + G4Tokenizer next(newVal); + G4String mapName = next(); + G4double minVal = StoD(next()); + G4double maxVal = StoD(next()); + G4VScoreColorMap* colorMap = fSMan->GetScoreColorMap(mapName); + if(colorMap) + { colorMap->SetFloatingMinMax(false); + colorMap->SetMinMax(minVal,maxVal); } + else + { G4cerr << "ERROR[" << colorMapMinMaxCmd->GetCommandPath() + << "] : color map <" << newVal << "> is not defined. Command ignored." << G4endl; } + } else if(command==meshOpnCmd) { + G4VScoringMesh* currentmesh = fSMan->GetCurrentMesh(); + if ( currentmesh ){ + G4cerr << "ERROR[" << meshOpnCmd->GetCommandPath() + << "] : Mesh <" << currentmesh->GetWorldName() << "> is still open. Close it first. Command ignored." << G4endl; + } else { + G4VScoringMesh* mesh = fSMan->FindMesh(newVal); + if ( !mesh ){ + G4cerr << "ERROR[" << meshOpnCmd->GetCommandPath() + << "] : Scoring mesh <" << newVal << "> does not exist. Command ignored." << G4endl; + } else { + fSMan->SetCurrentMesh(mesh); + } + } + } else if(command==meshClsCmd) { + fSMan->CloseCurrentMesh(); + } else { + // + // Get Current Mesh + // + G4VScoringMesh* mesh = fSMan->GetCurrentMesh(); + // + // Commands for Current Mesh + if ( mesh ){ + // Tokens + G4TokenVec token; + FillTokenVec(newVal,token); + // + // Mesh Geometry + // +// if(command==meshActCmd) { +// mesh->Activate(meshActCmd->GetNewBoolValue(newVal)); +// } else + if(command==mBoxSizeCmd) { + MeshShape shape = mesh->GetShape(); + if ( shape == boxMesh ){ + G4ThreeVector size = mBoxSizeCmd->GetNew3VectorValue(newVal); + G4double vsize[3]; + vsize[0] = size.x(); + vsize[1] = size.y(); + vsize[2] = size.z(); + mesh->SetSize(vsize); + } else { + G4cerr << "ERROR[" << mBoxSizeCmd->GetCommandPath() + << "] : This mesh is not Box. Command ignored." << G4endl; + } + } else if(command==mBinCmd) { + MeshBinCommand(mesh,token); + } else if(command==mTResetCmd) { + G4double centerPosition[3] ={ 0., 0., 0.}; + mesh->SetCenterPosition(centerPosition); + } else if(command==mTXyzCmd) { + G4ThreeVector xyz = mTXyzCmd->GetNew3VectorValue(newVal); + G4double centerPosition[3]; + centerPosition[0] = xyz.x(); + centerPosition[1] = xyz.y(); + centerPosition[2] = xyz.z(); + mesh->SetCenterPosition(centerPosition); + } else if(command==mRResetCmd) { + } else if(command==mRotXCmd) { + G4double value = mRotXCmd->GetNewDoubleValue(newVal); + mesh->RotateX(value); + } else if(command==mRotYCmd) { + G4double value = mRotYCmd->GetNewDoubleValue(newVal); + mesh->RotateY(value); + } else if(command==mRotZCmd) { + G4double value = mRotZCmd->GetNewDoubleValue(newVal); + mesh->RotateZ(value); + } + }else{ + G4cerr << "ERROR: No mesh is currently open. Open/create a mesh first. Command ignored." << G4endl; + } + } +} + +G4String G4ScoringMessenger::GetCurrentValue(G4UIcommand * command) +{ + G4String val; + if(command==verboseCmd) + { val = verboseCmd->ConvertToString(fSMan->GetVerboseLevel()); } + + return val; +} + +void G4ScoringMessenger::FillTokenVec(G4String newValues, G4TokenVec& token){ + + G4Tokenizer next(newValues); + G4String val; + while ( !(val = next()).isNull() ) { + token.push_back(val); + } +} + + +void G4ScoringMessenger::MeshBinCommand(G4VScoringMesh* mesh,G4TokenVec& token){ + G4int Ni = StoI(token[0]); + G4int Nj = StoI(token[1]); + G4int Nk = StoI(token[2]); + G4int nSegment[3]; + nSegment[0] = Ni; + nSegment[1] = Nj; + nSegment[2] = Nk; + // + mesh->SetNumberOfSegments(nSegment); +} + + diff --git a/source/digits_hits/utils/src/G4VScoreColorMap.cc b/source/digits_hits/utils/src/G4VScoreColorMap.cc new file mode 100644 index 0000000000..ca826fcd69 --- /dev/null +++ b/source/digits_hits/utils/src/G4VScoreColorMap.cc @@ -0,0 +1,39 @@ +// +// ******************************************************************** +// * 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: G4VScoreColorMap.cc,v 1.1 2007/11/04 04:06:09 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4VScoreColorMap.hh" + +G4VScoreColorMap::G4VScoreColorMap(G4String mName) +:fName(mName),ifFloat(true),fMinVal(0.),fMaxVal(DBL_MAX) +{;} + +G4VScoreColorMap::~G4VScoreColorMap() +{;} + diff --git a/source/digits_hits/utils/src/G4VScoreWriter.cc b/source/digits_hits/utils/src/G4VScoreWriter.cc new file mode 100644 index 0000000000..0a77b4a03a --- /dev/null +++ b/source/digits_hits/utils/src/G4VScoreWriter.cc @@ -0,0 +1,211 @@ +// +// ******************************************************************** +// * 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: G4VScoreWriter.cc,v 1.4 2007/11/11 01:00:44 akimura Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4VScoreWriter.hh" + +#include "G4MultiFunctionalDetector.hh" +#include "G4SDParticleFilter.hh" +#include "G4VPrimitiveScorer.hh" +#include "G4VScoringMesh.hh" + +#include +#include + +G4VScoreWriter::G4VScoreWriter() + : fScoringMesh(0), verboseLevel(0) { + ; +} + +G4VScoreWriter::~G4VScoreWriter() { +} + +void G4VScoreWriter::SetScoringMesh(G4VScoringMesh * sm) { + fScoringMesh = sm; + fScoringMesh->GetNumberOfSegments(fNMeshSegments); +} + +void G4VScoreWriter::DumpQuantityToFile(G4String & psName, G4String & fileName, G4String & option) { + + // change the option string into lowercase to the case-insensitive. + G4String opt = option; + std::transform(opt.begin(), opt.end(), opt.begin(), (int (*)(int))(tolower)); + + // confirm the option + if(opt.size() == 0) opt = "csv"; + if(opt.find("csv") == std::string::npos && + opt.find("sequence") == std::string::npos) { + G4cerr << "ERROR : DumpToFile : Unknown option -> " + << option << G4endl; + return; + } + + // open the file + std::ofstream ofile(fileName); + if(!ofile) { + G4cerr << "ERROR : DumpToFile : File open error -> " + << fileName << G4endl; + return; + } + ofile << "# mesh name: " << fScoringMesh->GetWorldName() << G4endl; + + + // retrieve the map + MeshScoreMap fSMap = fScoringMesh->GetScoreMap(); + + + MeshScoreMap::const_iterator msMapItr = fSMap.find(psName); + if(msMapItr == fSMap.end()) { + G4cerr << "ERROR : DumpToFile : Unknown quantity, \"" + << psName << "\"." << G4endl; + return; + } + std::map * score = msMapItr->second->GetMap(); + ofile << "# primitive scorer name: " << msMapItr->first << G4endl; + + // "sequence" option: write header info + if(opt.find("sequence") != std::string::npos) { + ofile << fNMeshSegments[0] << " " << fNMeshSegments[1] << " " << fNMeshSegments[2] + << G4endl; + } + + // write quantity + long count = 0; + ofile << std::setprecision(16); // for double value with 8 bytes + for(int x = 0; x < fNMeshSegments[0]; x++) { + for(int y = 0; y < fNMeshSegments[1]; y++) { + for(int z = 0; z < fNMeshSegments[2]; z++) { + G4int idx = GetIndex(x, y, z); + + if(opt.find("csv") != std::string::npos) + ofile << x << "," << y << "," << z << ","; + + std::map::iterator value = score->find(idx); + if(value == score->end()) { + ofile << 0.; + } else { + ofile << *(value->second); + } + + if(opt.find("csv") != std::string::npos) { + ofile << G4endl; + } else if(opt.find("sequence") != std::string::npos) { + ofile << " "; + if(count++%5 == 4) ofile << G4endl; + } + + } // z + } // y + } // x + ofile << std::setprecision(6); + + // close the file + ofile.close(); + +} + +void G4VScoreWriter::DumpAllQuantitiesToFile(G4String & fileName, G4String & option) { + + // change the option string into lowercase to the case-insensitive. + G4String opt = option; + std::transform(opt.begin(), opt.end(), opt.begin(), (int (*)(int))(tolower)); + + // confirm the option + if(opt.size() == 0) opt = "csv"; + if(opt.find("csv") == std::string::npos && + opt.find("sequence") == std::string::npos) { + G4cerr << "ERROR : DumpToFile : Unknown option -> " + << option << G4endl; + return; + } + + // open the file + std::ofstream ofile(fileName); + if(!ofile) { + G4cerr << "ERROR : DumpToFile : File open error -> " + << fileName << G4endl; + return; + } + ofile << "# mesh name: " << fScoringMesh->GetWorldName() << G4endl; + + // retrieve the map + MeshScoreMap fSMap = fScoringMesh->GetScoreMap(); + MeshScoreMap::const_iterator msMapItr = fSMap.begin(); + std::map * score; + for(; msMapItr != fSMap.end(); msMapItr++) { + score = msMapItr->second->GetMap(); + ofile << "# primitive scorer name: " << msMapItr->first << G4endl; + + // "sequence" option: write header info + if(opt.find("sequence") != std::string::npos) { + ofile << fNMeshSegments[0] << " " << fNMeshSegments[1] << " " << fNMeshSegments[2] + << G4endl; + } + + // write quantity + long count = 0; + ofile << std::setprecision(16); // for double value with 8 bytes + for(int x = 0; x < fNMeshSegments[0]; x++) { + for(int y = 0; y < fNMeshSegments[1]; y++) { + for(int z = 0; z < fNMeshSegments[2]; z++) { + G4int idx = GetIndex(x, y, z); + + if(opt.find("csv") != std::string::npos) + ofile << x << "," << y << "," << z << ","; + + std::map::iterator value = score->find(idx); + if(value == score->end()) { + ofile << 0.; + } else { + ofile << *(value->second); + } + + if(opt.find("csv") != std::string::npos) { + ofile << G4endl; + } else if(opt.find("sequence") != std::string::npos) { + ofile << " "; + if(count++%5 == 4) ofile << G4endl; + } + + } // z + } // y + } // x + ofile << std::setprecision(6); + + } // for(; msMapItr ....) + + // close the file + ofile.close(); + +} + +G4int G4VScoreWriter::GetIndex(G4int x, G4int y, G4int z) const { + return x + y*fNMeshSegments[0] + z*fNMeshSegments[0]*fNMeshSegments[1]; +} + diff --git a/source/digits_hits/utils/src/G4VScoringMesh.cc b/source/digits_hits/utils/src/G4VScoringMesh.cc new file mode 100644 index 0000000000..2f6399a077 --- /dev/null +++ b/source/digits_hits/utils/src/G4VScoringMesh.cc @@ -0,0 +1,216 @@ +// +// ******************************************************************** +// * 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: G4VScoringMesh.cc,v 1.34 2007/11/07 04:12:07 akimura Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4VScoringMesh.hh" +#include "G4VPhysicalVolume.hh" +#include "G4MultiFunctionalDetector.hh" +#include "G4VPrimitiveScorer.hh" +#include "G4VSDFilter.hh" +#include "G4SDManager.hh" + +G4VScoringMesh::G4VScoringMesh(G4String wName) + : fWorldName(wName),fConstructed(false),fActive(true), + fRotationMatrix(NULL), fMFD(new G4MultiFunctionalDetector(wName)), + verboseLevel(0),sizeIsSet(false),nMeshIsSet(false) +{ + G4SDManager::GetSDMpointer()->AddNewDetector(fMFD); + + fSize[0] = fSize[1] = fSize[2] = 0.; + fNSegment[0] = fNSegment[1] = fNSegment[2] = 1; +} + +G4VScoringMesh::~G4VScoringMesh() +{ + ; +} + +void G4VScoringMesh::ResetScore() { + if(verboseLevel > 9) G4cout << "G4VScoringMesh::ResetScore() is called." << G4endl; + std::map* >::iterator itr = fMap.begin(); + for(; itr != fMap.end(); itr++) { + if(verboseLevel > 9) G4cout << "G4VScoringMesh::ResetScore()" << itr->first << G4endl; + itr->second->clear(); + } +} +void G4VScoringMesh::SetSize(G4double size[3]) { + for(int i = 0; i < 3; i++) fSize[i] = size[i]; + sizeIsSet = true; +} +void G4VScoringMesh::SetCenterPosition(G4double centerPosition[3]) { + fCenterPosition = G4ThreeVector(centerPosition[0], centerPosition[1], centerPosition[2]); +} +void G4VScoringMesh::SetNumberOfSegments(G4int nSegment[3]) { + for(int i = 0; i < 3; i++) fNSegment[i] = nSegment[i]; + nMeshIsSet = true; +} +void G4VScoringMesh::GetNumberOfSegments(G4int nSegment[3]) { + for(int i = 0; i < 3; i++) nSegment[i] = fNSegment[i]; +} +void G4VScoringMesh::RotateX(G4double delta) { + if(fRotationMatrix == NULL) fRotationMatrix = new G4RotationMatrix(); + fRotationMatrix->rotateX(delta); +} + +void G4VScoringMesh::RotateY(G4double delta) { + if(fRotationMatrix == NULL) fRotationMatrix = new G4RotationMatrix(); + fRotationMatrix->rotateY(delta); +} + +void G4VScoringMesh::RotateZ(G4double delta) { + if(fRotationMatrix == NULL) fRotationMatrix = new G4RotationMatrix(); + fRotationMatrix->rotateZ(delta); +} + +void G4VScoringMesh::SetPrimitiveScorer(G4VPrimitiveScorer * ps) { + + if(!ReadyForQuantity()) + { + G4cerr << "ERROR : G4VScoringMesh::SetPrimitiveScorer() : " << ps->GetName() + << " does not yet have mesh size or number of bins. Set them first." << G4endl + << "This Method is ignored." << G4endl; + return; + } + if(verboseLevel > 0) G4cout << "G4VScoringMesh::SetPrimitiveScorer() : " + << ps->GetName() << " is registered." + << " 3D size: (" + << fNSegment[0] << ", " + << fNSegment[1] << ", " + << fNSegment[2] << ")" << G4endl; + + ps->SetNijk(fNSegment[0], fNSegment[1], fNSegment[2]); + fCurrentPS = ps; + fMFD->RegisterPrimitive(ps); + G4THitsMap * map = new G4THitsMap(fWorldName, ps->GetName()); + fMap[ps->GetName()] = map; +} + +void G4VScoringMesh::SetFilter(G4VSDFilter * filter) { + + if(fCurrentPS == NULL) { + G4cerr << "ERROR : G4VScoringMesh::SetSDFilter() : a quantity must be defined first. This method is ignored." << G4endl; + return; + } + if(verboseLevel > 0) G4cout << "G4VScoringMesh::SetFilter() : " + << filter->GetName() + << " is set to " + << fCurrentPS->GetName() << G4endl; + + G4VSDFilter* oldFilter = fCurrentPS->GetFilter(); + if(oldFilter) + { + G4cout << "WARNING : G4VScoringMesh::SetFilter() : " << oldFilter->GetName() + << " is overwritten by " << filter->GetName() << G4endl; + } + fCurrentPS->SetFilter(filter); +} + +void G4VScoringMesh::SetCurrentPrimitiveScorer(G4String & name) { + fCurrentPS = GetPrimitiveScorer(name); + if(fCurrentPS == NULL) { + G4cerr << "ERROR : G4VScoringMesh::SetCurrentPrimitiveScorer() : The primitive scorer <" + << name << "> does not found." << G4endl; + } +} + +G4bool G4VScoringMesh::FindPrimitiveScorer(G4String & psname) { + std::map* >::iterator itr = fMap.find(psname);; + if(itr == fMap.end()) return false; + return true; +} + +G4VPrimitiveScorer * G4VScoringMesh::GetPrimitiveScorer(G4String & name) { + if(fMFD == NULL) return NULL; + + G4int nps = fMFD->GetNumberOfPrimitives(); + for(G4int i = 0; i < nps; i++) { + G4VPrimitiveScorer * ps = fMFD->GetPrimitive(i); + if(name == ps->GetName()) return ps; + } + + return NULL; +} +void G4VScoringMesh::List() const { + G4cout << " Size: (" + << fSize[0]/cm << ", " + << fSize[1]/cm << ", " + << fSize[2]/cm << ") [cm]" + << G4endl; + G4cout << " # of segments: (" + << fNSegment[0] << ", " + << fNSegment[1] << ", " + << fNSegment[2] << ")" + << G4endl; + G4cout << " displacement: (" + << fCenterPosition.x()/cm << ", " + << fCenterPosition.y()/cm << ", " + << fCenterPosition.z()/cm << ") [cm]" + << G4endl; + if(fRotationMatrix != 0) { + G4cout << " rotation matrix: " + << fRotationMatrix->xx() << " " + << fRotationMatrix->xy() << " " + << fRotationMatrix->xz() << G4endl + << " " + << fRotationMatrix->yx() << " " + << fRotationMatrix->yy() << " " + << fRotationMatrix->yz() << G4endl + << " " + << fRotationMatrix->zx() << " " + << fRotationMatrix->zy() << " " + << fRotationMatrix->zz() << G4endl; + } + + + G4cout << " registered primitve scorers : " << G4endl; + G4int nps = fMFD->GetNumberOfPrimitives(); + G4VPrimitiveScorer * ps; + for(int i = 0; i < nps; i++) { + ps = fMFD->GetPrimitive(i); + G4cout << " " << i << " " << ps->GetName(); + if(ps->GetFilter() != NULL) G4cout << " with " << ps->GetFilter()->GetName(); + G4cout << G4endl; + } + + +} + +void G4VScoringMesh::Dump() { + G4cout << "scoring mesh name: " << fWorldName << G4endl; + + G4cout << "# of G4THitsMap : " << fMap.size() << G4endl; + std::map* >::iterator itr = fMap.begin(); + for(; itr != fMap.end(); itr++) { + G4cout << "[" << itr->first << "]" << G4endl; + itr->second->PrintAllHits(); + } + G4cout << G4endl; + +} + diff --git a/source/error_propagation/History b/source/error_propagation/History index 2b2f0b2e42..3b75268bc0 100644 --- a/source/error_propagation/History +++ b/source/error_propagation/History @@ -1,4 +1,4 @@ -$Id: History,v 1.9 2007/06/05 13:37:36 gcosmo Exp $ +$Id: History,v 1.13 2007/11/14 17:03:06 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,14 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +14 November 2007 - G.Cosmo (error_propagation-V09-00-02) +- G4ErrorPropagator: removed call to exit() and some cleanup. + +24 September 2007 - P.Arce (error_propagation-V09-00-01) +- G4ErrorFreeTrajState: corrected bug in one of the transformation matrix + terms. Addresses problem report #971. +- G4ErrorFreeTrajParam: corrected normalization of Y and Z coordinates. + 5 June 2007 - G.Cosmo (error_propagation-V08-03-09) - Added missing definition of GLOBLIBS in GNUmakefile to allow for building DLLs on Windows. diff --git a/source/error_propagation/include/G4ErrorFreeTrajParam.hh b/source/error_propagation/include/G4ErrorFreeTrajParam.hh index bb22aec11d..6317fa6680 100644 --- a/source/error_propagation/include/G4ErrorFreeTrajParam.hh +++ b/source/error_propagation/include/G4ErrorFreeTrajParam.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorFreeTrajParam.hh,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description: // diff --git a/source/error_propagation/include/G4ErrorFreeTrajState.hh b/source/error_propagation/include/G4ErrorFreeTrajState.hh index 348de4a391..f115bcae13 100644 --- a/source/error_propagation/include/G4ErrorFreeTrajState.hh +++ b/source/error_propagation/include/G4ErrorFreeTrajState.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorFreeTrajState.hh,v 1.4 2007/05/31 20:27:06 arce Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description: // diff --git a/source/error_propagation/include/G4ErrorGeomVolumeTarget.hh b/source/error_propagation/include/G4ErrorGeomVolumeTarget.hh index 66c177a529..8a38ea55de 100644 --- a/source/error_propagation/include/G4ErrorGeomVolumeTarget.hh +++ b/source/error_propagation/include/G4ErrorGeomVolumeTarget.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorGeomVolumeTarget.hh,v 1.3 2007/05/31 15:28:51 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description: // diff --git a/source/error_propagation/include/G4ErrorMagFieldLimitProcess.hh b/source/error_propagation/include/G4ErrorMagFieldLimitProcess.hh index 7db84e5991..a592c69631 100644 --- a/source/error_propagation/include/G4ErrorMagFieldLimitProcess.hh +++ b/source/error_propagation/include/G4ErrorMagFieldLimitProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorMagFieldLimitProcess.hh,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/error_propagation/include/G4ErrorMatrix.hh b/source/error_propagation/include/G4ErrorMatrix.hh index a2602ea6b2..37538b0077 100755 --- a/source/error_propagation/include/G4ErrorMatrix.hh +++ b/source/error_propagation/include/G4ErrorMatrix.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorMatrix.hh,v 1.2 2007/06/01 12:43:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description: // diff --git a/source/error_propagation/include/G4ErrorMatrix.icc b/source/error_propagation/include/G4ErrorMatrix.icc index b5ee2b77a8..0e781be866 100644 --- a/source/error_propagation/include/G4ErrorMatrix.icc +++ b/source/error_propagation/include/G4ErrorMatrix.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorMatrix.icc,v 1.2 2007/06/01 12:43:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class inline implementation diff --git a/source/error_propagation/include/G4ErrorMessenger.hh b/source/error_propagation/include/G4ErrorMessenger.hh index 41150e3fcc..d671276fb5 100644 --- a/source/error_propagation/include/G4ErrorMessenger.hh +++ b/source/error_propagation/include/G4ErrorMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorMessenger.hh,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description: // diff --git a/source/error_propagation/include/G4ErrorPhysicsList.hh b/source/error_propagation/include/G4ErrorPhysicsList.hh index 27837f1a70..fdb13859d5 100644 --- a/source/error_propagation/include/G4ErrorPhysicsList.hh +++ b/source/error_propagation/include/G4ErrorPhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorPhysicsList.hh,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class Description: diff --git a/source/error_propagation/include/G4ErrorPropagator.hh b/source/error_propagation/include/G4ErrorPropagator.hh index 642fc9d499..1dddccb5b0 100644 --- a/source/error_propagation/include/G4ErrorPropagator.hh +++ b/source/error_propagation/include/G4ErrorPropagator.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorPropagator.hh,v 1.3 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class Description: diff --git a/source/error_propagation/include/G4ErrorPropagatorManager.hh b/source/error_propagation/include/G4ErrorPropagatorManager.hh index 87bea16200..8e010d2fbc 100644 --- a/source/error_propagation/include/G4ErrorPropagatorManager.hh +++ b/source/error_propagation/include/G4ErrorPropagatorManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorPropagatorManager.hh,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description: // diff --git a/source/error_propagation/include/G4ErrorRunManagerHelper.hh b/source/error_propagation/include/G4ErrorRunManagerHelper.hh index db9ec2fcde..15fbd50daf 100644 --- a/source/error_propagation/include/G4ErrorRunManagerHelper.hh +++ b/source/error_propagation/include/G4ErrorRunManagerHelper.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorRunManagerHelper.hh,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class Description: diff --git a/source/error_propagation/include/G4ErrorStepLengthLimitProcess.hh b/source/error_propagation/include/G4ErrorStepLengthLimitProcess.hh index 22e8e937d5..73c35b5070 100644 --- a/source/error_propagation/include/G4ErrorStepLengthLimitProcess.hh +++ b/source/error_propagation/include/G4ErrorStepLengthLimitProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorStepLengthLimitProcess.hh,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class Description: diff --git a/source/error_propagation/include/G4ErrorSurfaceTrajParam.hh b/source/error_propagation/include/G4ErrorSurfaceTrajParam.hh index 0803812495..004dc75d5b 100644 --- a/source/error_propagation/include/G4ErrorSurfaceTrajParam.hh +++ b/source/error_propagation/include/G4ErrorSurfaceTrajParam.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorSurfaceTrajParam.hh,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class Description: diff --git a/source/error_propagation/include/G4ErrorSurfaceTrajState.hh b/source/error_propagation/include/G4ErrorSurfaceTrajState.hh index 2de790ed2d..52dee44d7d 100644 --- a/source/error_propagation/include/G4ErrorSurfaceTrajState.hh +++ b/source/error_propagation/include/G4ErrorSurfaceTrajState.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorSurfaceTrajState.hh,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class description: diff --git a/source/error_propagation/include/G4ErrorSymMatrix.hh b/source/error_propagation/include/G4ErrorSymMatrix.hh index 0dceb36a8e..fae8482938 100755 --- a/source/error_propagation/include/G4ErrorSymMatrix.hh +++ b/source/error_propagation/include/G4ErrorSymMatrix.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorSymMatrix.hh,v 1.2 2007/06/01 12:43:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description: // diff --git a/source/error_propagation/include/G4ErrorSymMatrix.icc b/source/error_propagation/include/G4ErrorSymMatrix.icc index 3b0f712805..98d04f7939 100755 --- a/source/error_propagation/include/G4ErrorSymMatrix.icc +++ b/source/error_propagation/include/G4ErrorSymMatrix.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorSymMatrix.icc,v 1.2 2007/06/01 12:43:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class inline implementation diff --git a/source/error_propagation/include/G4ErrorTrackLengthTarget.hh b/source/error_propagation/include/G4ErrorTrackLengthTarget.hh index f877200c3d..1305454c15 100644 --- a/source/error_propagation/include/G4ErrorTrackLengthTarget.hh +++ b/source/error_propagation/include/G4ErrorTrackLengthTarget.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorTrackLengthTarget.hh,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class Description: diff --git a/source/error_propagation/include/G4ErrorTrajErr.hh b/source/error_propagation/include/G4ErrorTrajErr.hh index cb917b2134..db151a9a1c 100644 --- a/source/error_propagation/include/G4ErrorTrajErr.hh +++ b/source/error_propagation/include/G4ErrorTrajErr.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorTrajErr.hh,v 1.3 2007/05/31 20:27:07 arce Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class Description: diff --git a/source/error_propagation/include/G4ErrorTrajState.hh b/source/error_propagation/include/G4ErrorTrajState.hh index 655c4b292e..3c6efb40ca 100644 --- a/source/error_propagation/include/G4ErrorTrajState.hh +++ b/source/error_propagation/include/G4ErrorTrajState.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorTrajState.hh,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class Description: diff --git a/source/error_propagation/include/G4VErrorLimitProcess.hh b/source/error_propagation/include/G4VErrorLimitProcess.hh index 2d5911b35b..3c086b6a20 100644 --- a/source/error_propagation/include/G4VErrorLimitProcess.hh +++ b/source/error_propagation/include/G4VErrorLimitProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4VErrorLimitProcess.hh,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class description: diff --git a/source/error_propagation/src/G4ErrorFreeTrajParam.cc b/source/error_propagation/src/G4ErrorFreeTrajParam.cc index 0932bc3a81..85a642276d 100644 --- a/source/error_propagation/src/G4ErrorFreeTrajParam.cc +++ b/source/error_propagation/src/G4ErrorFreeTrajParam.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4ErrorFreeTrajParam.cc,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ErrorFreeTrajParam.cc,v 1.3 2007/09/24 16:24:45 arce Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file @@ -53,11 +53,13 @@ void G4ErrorFreeTrajParam::SetParameters( const G4Point3D& pos, fLambda = 90.*deg - mom.theta(); fPhi = mom.phi(); G4Vector3D vxPerp(0.,0.,0.); - if( mom.mag() > 0.) { - vxPerp = mom/mom.mag(); - } + if( mom.mag() > 0.) { + vxPerp = mom/mom.mag(); + } G4Vector3D vyPerp = G4Vector3D( -vxPerp.y(), vxPerp.x(), 0.); + vyPerp /= vyPerp.mag(); G4Vector3D vzPerp = vxPerp.cross( vyPerp ); + vzPerp /= vzPerp.mag(); // check if right handed // fXPerp = pos.proj( mom ); G4ThreeVector posv(pos); diff --git a/source/error_propagation/src/G4ErrorFreeTrajState.cc b/source/error_propagation/src/G4ErrorFreeTrajState.cc index 1bfcd52d64..6e47d757d1 100644 --- a/source/error_propagation/src/G4ErrorFreeTrajState.cc +++ b/source/error_propagation/src/G4ErrorFreeTrajState.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4ErrorFreeTrajState.cc,v 1.6 2007/06/21 15:04:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ErrorFreeTrajState.cc,v 1.7 2007/09/24 16:25:57 arce Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file @@ -440,7 +440,7 @@ G4int G4ErrorFreeTrajState::PropagateError( const G4Track* aTrack ) ANV*( -sinThetaAver*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ) + OMcosThetaAver*(vUPre.x()*AN2.x()+vUPre.y()*AN2.y() ) - TMSINT*gamma*(vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() ) ); - transf[1][2] = sinpPre*transf[1][3]; + transf[1][2] = sinpPre*transf[1][2]; transf[1][3] = -QAver*ANV*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ); diff --git a/source/error_propagation/src/G4ErrorGeomVolumeTarget.cc b/source/error_propagation/src/G4ErrorGeomVolumeTarget.cc index b68dc11b27..6132f30c16 100644 --- a/source/error_propagation/src/G4ErrorGeomVolumeTarget.cc +++ b/source/error_propagation/src/G4ErrorGeomVolumeTarget.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorGeomVolumeTarget.cc,v 1.3 2007/05/31 15:28:51 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4ErrorMagFieldLimitProcess.cc b/source/error_propagation/src/G4ErrorMagFieldLimitProcess.cc index d147fe9372..ff39628087 100644 --- a/source/error_propagation/src/G4ErrorMagFieldLimitProcess.cc +++ b/source/error_propagation/src/G4ErrorMagFieldLimitProcess.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorMagFieldLimitProcess.cc,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4ErrorMatrix.cc b/source/error_propagation/src/G4ErrorMatrix.cc index 3a9105bc9d..d13a00dc99 100644 --- a/source/error_propagation/src/G4ErrorMatrix.cc +++ b/source/error_propagation/src/G4ErrorMatrix.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorMatrix.cc,v 1.3 2007/06/21 15:04:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4ErrorMessenger.cc b/source/error_propagation/src/G4ErrorMessenger.cc index d63e8a2693..03d9e13911 100644 --- a/source/error_propagation/src/G4ErrorMessenger.cc +++ b/source/error_propagation/src/G4ErrorMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorMessenger.cc,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4ErrorPhysicsList.cc b/source/error_propagation/src/G4ErrorPhysicsList.cc index cf31bd904b..cb8d60c9ac 100644 --- a/source/error_propagation/src/G4ErrorPhysicsList.cc +++ b/source/error_propagation/src/G4ErrorPhysicsList.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorPhysicsList.cc,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4ErrorPropagator.cc b/source/error_propagation/src/G4ErrorPropagator.cc index cf21c11522..412a47bd3e 100644 --- a/source/error_propagation/src/G4ErrorPropagator.cc +++ b/source/error_propagation/src/G4ErrorPropagator.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4ErrorPropagator.cc,v 1.6 2007/06/04 14:59:32 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ErrorPropagator.cc,v 1.7 2007/11/14 17:01:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file @@ -58,42 +58,54 @@ G4ErrorPropagator::G4ErrorPropagator() { verbose = G4ErrorPropagatorData::verbose(); #ifdef G4EVERBOSE - if(verbose >= 5) G4cout << "G4ErrorPropagator " << this << G4endl; + if(verbose >= 5) { G4cout << "G4ErrorPropagator " << this << G4endl; } #endif - //t theTrackingGeometry = 0; //by default set it to 0, and when propagation it will be set to the world theG4Track = 0; - - fpSteppingManager = G4EventManager::GetEventManager()->GetTrackingManager()->GetSteppingManager(); - + fpSteppingManager = G4EventManager::GetEventManager() + ->GetTrackingManager()->GetSteppingManager(); thePropIsInitialized = false; - } //----------------------------------------------------------------------- -G4int G4ErrorPropagator::Propagate( G4ErrorTrajState* currentTS, const G4ErrorTarget* target, G4ErrorMode mode ) +G4int G4ErrorPropagator::Propagate( G4ErrorTrajState* currentTS, + const G4ErrorTarget* target, G4ErrorMode mode ) { // to start ierror is set to 1 (= OK) + // G4int ierr = 1; - G4ErrorPropagatorData* g4edata = G4ErrorPropagatorData::GetErrorPropagatorData(); + G4ErrorPropagatorData* g4edata = + G4ErrorPropagatorData::GetErrorPropagatorData(); - //--- Do not propagate zero or too low energy particles - if( currentTS->GetMomentum().mag() < 1.E-9*MeV ) { - G4cerr << " !! G4ErrorPropagator::Propagate: energy too low to be propagated " << G4BestUnit(currentTS->GetMomentum().mag(),"Energy") << G4endl; + //----- Do not propagate zero or too low energy particles + // + if( currentTS->GetMomentum().mag() < 1.E-9*MeV ) + { + G4cerr << "ERROR - G4ErrorPropagator::Propagate()" << G4endl + << " Energy too low to be propagated: " + << G4BestUnit(currentTS->GetMomentum().mag(),"Energy") << G4endl; return -3; } g4edata->SetMode( mode ); #ifdef G4EVERBOSE - if( verbose >= 1 ) G4cout << " =====> starting GEANT4E tracking for " << currentTS->GetParticleType() << " Forwards= " << g4edata->GetMode() << G4endl; - if(verbose >= 1 ) G4cout << G4endl << "@@@@@@@@@@@@@@@@@@@@@@@@@ NEW STEP " << G4endl; + if( verbose >= 1 ) + { + G4cout << " =====> starting GEANT4E tracking for " + << currentTS->GetParticleType() + << " Forwards= " << g4edata->GetMode() << G4endl; + } + if(verbose >= 1 ) + { + G4cout << G4endl << "@@@@@@@@@@@@@@@@@@@@@@@@@ NEW STEP " << G4endl; + } - if( verbose >= 3 ){ + if( verbose >= 3 ) + { G4cout << " G4ErrorPropagator::Propagate initialTS "; - // initialTS.Dump(); G4cout << *currentTS << G4endl; target->Dump(G4String(" to target ")); } @@ -102,39 +114,60 @@ G4int G4ErrorPropagator::Propagate( G4ErrorTrajState* currentTS, const G4ErrorTa g4edata->SetTarget( target ); //----- Create a track - if( theG4Track != 0 ) delete theG4Track; + // + if( theG4Track != 0 ) { delete theG4Track; } theG4Track = InitG4Track( *currentTS ); //----- Create a G4ErrorFreeTrajState + // G4ErrorFreeTrajState* currentTS_FREE = InitFreeTrajState( currentTS ); //----- Track the particle + // ierr = MakeSteps( currentTS_FREE ); //------ Tracking ended, check if target has been reached - // if target not found - if( g4edata->GetState() != G4ErrorState_StoppedAtTarget ){ - if( theG4Track->GetKineticEnergy() > 0. ) { + // if target not found + // + if( g4edata->GetState() != G4ErrorState_StoppedAtTarget ) + { + if( theG4Track->GetKineticEnergy() > 0. ) + { ierr = -ierr - 10; - } else { + } + else + { ierr = -ierr - 20; } *currentTS = *currentTS_FREE; - if(verbose >= 0 ) G4cerr << " !!ERROR G4ErrorPropagator: particle does not reach target " << *currentTS << G4endl; - } else { + if(verbose >= 0 ) + { + G4cerr << "ERROR - G4ErrorPropagator::Propagate()" << G4endl + << " Particle does not reach target: " << *currentTS + << G4endl; + } + } + else + { GetFinalTrajState( currentTS, currentTS_FREE, target ); } #ifdef G4EVERBOSE - if( verbose >= 1 ) G4cout << " G4ErrorPropagator: propagation ended " << G4endl; - if( verbose >= 2 ) G4cout << " Current TrajState " << currentTS << G4endl; + if( verbose >= 1 ) + { + G4cout << " G4ErrorPropagator: propagation ended " << G4endl; + } + if( verbose >= 2 ) + { + G4cout << " Current TrajState " << currentTS << G4endl; + } #endif - // Inform end of tracking to physics processes + // Inform end of tracking to physics processes + // theG4Track->GetDefinition()->GetProcessManager()->EndTracking(); - InvokePostUserTrackingAction( theG4Track ); - + InvokePostUserTrackingAction( theG4Track ); return ierr; } @@ -143,45 +176,67 @@ G4int G4ErrorPropagator::Propagate( G4ErrorTrajState* currentTS, const G4ErrorTa //----------------------------------------------------------------------- G4int G4ErrorPropagator::PropagateOneStep( G4ErrorTrajState* currentTS ) { - G4ErrorPropagatorData* g4edata = G4ErrorPropagatorData::GetErrorPropagatorData(); + G4ErrorPropagatorData* g4edata = + G4ErrorPropagatorData::GetErrorPropagatorData(); - if( g4edata->GetState() == G4ErrorState_PreInit || G4StateManager::GetStateManager()->GetCurrentState() != G4State_GeomClosed) { - //G4cout << g4edata << " G4ErrorState " << g4edata->GetState() << " <> " << G4ErrorState_Propagating - // << " G4State " << G4StateManager::GetStateManager()->GetCurrentState()<< " <> " << G4State_GeomClosed << G4endl; - G4Exception("!!! G4ErrorPropagator::PropagateOneStep called before initialization is done for this track, please call G4ErrorPropagatorManager::InitGeant4e() " ); + if ( (g4edata->GetState() == G4ErrorState_PreInit) + || (G4StateManager::GetStateManager()->GetCurrentState() + != G4State_GeomClosed) ) + { + G4cout << "ERROR - G4ErrorPropagator::PropagateOneStep()" << G4endl + << " Called before initialization is done for this track." + << G4endl + << " Please call G4ErrorPropagatorManager::InitGeant4e()." + << G4endl; + G4Exception("G4ErrorPropagator::PropagateOneStep()", + "InvalidCall", FatalException, + "Called before initialization is done for this track!"); } // to start ierror is set to 0 (= OK) + // G4int ierr = 0; //--- Do not propagate zero or too low energy particles - if( currentTS->GetMomentum().mag() < 1.E-9*MeV ) { - G4cerr << " !! G4ErrorPropagator::PropagateOneStep: energy too low to be propagated " << G4BestUnit(currentTS->GetMomentum().mag(),"Energy") << G4endl; + // + if( currentTS->GetMomentum().mag() < 1.E-9*MeV ) + { + G4cerr << "ERROR - G4ErrorPropagator::PropagateOneStep()" << G4endl + << " Energy too low to be propagated: " + << G4BestUnit(currentTS->GetMomentum().mag(),"Energy") << G4endl; return -3; } #ifdef G4EVERBOSE - if( verbose >= 1 ) G4cout << " =====> starting GEANT4E tracking for " << currentTS->GetParticleType() << " Forwards= " << g4edata->GetMode() << G4endl; - - if( verbose >= 3 ){ + if( verbose >= 1 ) + { + G4cout << " =====> starting GEANT4E tracking for " + << currentTS->GetParticleType() + << " Forwards= " << g4edata->GetMode() << G4endl; + } + if( verbose >= 3 ) + { G4cout << " G4ErrorPropagator::Propagate initialTS "; G4cout << *currentTS << G4endl; } #endif - // SetTargetToNavigator( (G4ErrorTarget*)0 ); - //----- If it is the first step, create a track - if( theStepN == 0 ) theG4Track = InitG4Track( *currentTS ); // set to 0 by the initialization in G4ErrorPropagatorManager + // + if( theStepN == 0 ) { theG4Track = InitG4Track( *currentTS ); } + // set to 0 by the initialization in G4ErrorPropagatorManager theStepN++; //----- Create a G4ErrorFreeTrajState + // G4ErrorFreeTrajState* currentTS_FREE = InitFreeTrajState( currentTS ); //----- Track the particle one step + // ierr = MakeOneStep( currentTS_FREE ); //----- Get the state on target + // GetFinalTrajState( currentTS, currentTS_FREE, g4edata->GetTarget() ); return ierr; @@ -191,63 +246,73 @@ G4int G4ErrorPropagator::PropagateOneStep( G4ErrorTrajState* currentTS ) //--------------------------------------------------------------------------- G4Track* G4ErrorPropagator::InitG4Track( G4ErrorTrajState& initialTS ) { - if( verbose >= 5 ) G4cout << "InitG4Track " << G4endl; - - //----- Close geometry - //- G4bool geometryToBeOptimized = true; - // if(verboseLevel>1) - //- G4GeometryManager* geomManager = G4GeometryManager::GetInstance(); - //- geomManager->OpenGeometry(); - //- geomManager->CloseGeometry(geometryToBeOptimized); + if( verbose >= 5 ) { G4cout << "InitG4Track " << G4endl; } //----- Create Particle + // const G4String partType = initialTS.GetParticleType(); G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); G4ParticleDefinition* particle = particleTable->FindParticle(partType); - if( particle == 0) { - G4Exception( "!!! G4ErrorPropagator::InitG4Track: particle type not defined " + partType ); - } else { - + if( particle == 0) + { + G4cerr << "ERROR - G4ErrorPropagator::InitG4Track()" << G4endl + << " Particle type not defined " + partType << G4endl; + G4Exception( "G4ErrorPropagator::InitG4Track()", "InvalidSetup", + FatalException, "Particle type not defined !" ); } G4DynamicParticle* DP = - new G4DynamicParticle(particle,initialTS.GetMomentum()); + new G4DynamicParticle(particle,initialTS.GetMomentum()); + DP->SetPolarization(0.,0.,0.); + // Set Charge - // if (abs(primaryParticle->GetCharge()-DP->GetPDGCharge())>eplus) { - // DP->SetCharge(primaryParticle->GetCharge()); - if( particle->GetPDGCharge() < 0 ) { + // + if( particle->GetPDGCharge() < 0 ) + { DP->SetCharge(-eplus); - } else { + } + else + { DP->SetCharge(eplus); } - // Set decay products to the DynamicParticle - //?? SetDecayProducts( primaryParticle, DP ); - + //----- Create Track + // theG4Track = new G4Track(DP, 0., initialTS.GetPosition() ); theG4Track->SetParentID(0); + #ifdef G4EVERBOSE - if(verbose >= 3) G4cout << " G4ErrorPropagator new track of energy: " << theG4Track->GetKineticEnergy() << G4endl; + if(verbose >= 3) + { + G4cout << " G4ErrorPropagator new track of energy: " + << theG4Track->GetKineticEnergy() << G4endl; + } #endif //---- Reproduce G4TrackingManager::ProcessOneTrack initialization InvokePreUserTrackingAction( theG4Track ); - if( fpSteppingManager == 0 ) { - // G4cerr << " event manager " << G4EventManager::GetEventManager() << G4endl; - G4Exception( "G4ErrorPropagator::InitG4Track. GEANT4e error: G4SteppingManager not initialized yet " ); - } else { + if( fpSteppingManager == 0 ) + { + G4Exception("G4ErrorPropagator::InitG4Track()", "InvalidSetup", + FatalException, "G4SteppingManager not initialized yet!"); + } + else + { fpSteppingManager->SetInitialStep(theG4Track); } - // Give SteppingManger the maximum number of processes + // Give SteppingManger the maximum number of processes + // fpSteppingManager->GetProcessNumber(); // Give track the pointer to the Step + // theG4Track->SetStep(fpSteppingManager->GetStep()); - // Inform beginning of tracking to physics processes + // Inform beginning of tracking to physics processes + // theG4Track->GetDefinition()->GetProcessManager()->StartTracking(theG4Track); initialTS.SetG4Track( theG4Track ); @@ -260,88 +325,113 @@ G4Track* G4ErrorPropagator::InitG4Track( G4ErrorTrajState& initialTS ) G4int G4ErrorPropagator::MakeSteps( G4ErrorFreeTrajState* currentTS_FREE ) { G4int ierr = 0; + //----- Track the particle Step-by-Step while it is alive + // theStepLength = 0.; while( (theG4Track->GetTrackStatus() == fAlive) || - (theG4Track->GetTrackStatus() == fStopButAlive) ){ + (theG4Track->GetTrackStatus() == fStopButAlive) ) + { ierr = MakeOneStep( currentTS_FREE ); - if( ierr != 0 ) break; - //----- Check if last step for GEANT4e - if( CheckIfLastStep( theG4Track ) ) { - if( verbose >= 5 ) G4cout << "!!!! Last Step reached " << G4endl; + if( ierr != 0 ) { break; } + + //----- Check if last step for error propagation + // + if( CheckIfLastStep( theG4Track ) ) + { break; } } - return ierr; - } //----------------------------------------------------------------------- G4int G4ErrorPropagator::MakeOneStep( G4ErrorFreeTrajState* currentTS_FREE ) { - G4ErrorPropagatorData* g4edata = G4ErrorPropagatorData::GetErrorPropagatorData(); + G4ErrorPropagatorData* g4edata = + G4ErrorPropagatorData::GetErrorPropagatorData(); G4int ierr = 0; //---------- Track one step #ifdef G4EVERBOSE - if(verbose >= 2 ) G4cout << G4endl << "@@@@@@@@@@@@@@@@@@@@@@@@@ NEW STEP " << G4endl; + if(verbose >= 2 ) + { + G4cout << G4endl + << "@@@@@@@@@@@@@@@@@@@@@@@@@ NEW STEP " << G4endl; + } #endif theG4Track->IncrementCurrentStepNumber(); - //- G4StepStatus stepStatus = - fpSteppingManager->Stepping(); //t + + fpSteppingManager->Stepping(); //---------- Check if Target has been reached (and then set G4ErrorState) -#ifdef G4EVERBOSE - // if(verbose >= 5 ) G4cout << " process = " << theG4Track->GetStep()->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName() << " g4estate " << g4edata->PrintG4ErrorState() << G4endl; -#endif - - // G4ErrorPropagationNavigator limits the step if target is closer than boundary (but the winner process is always "Transportation": then geant4e will stop the track - if( theG4Track->GetStep()->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName() == "Transportation" ){ - if( g4edata->GetState() == G4ErrorState(G4ErrorState_TargetCloserThanBoundary) ){ // target or step length reached + + // G4ErrorPropagationNavigator limits the step if target is closer than + // boundary (but the winner process is always "Transportation": then + // error propagator will stop the track + + if( theG4Track->GetStep()->GetPostStepPoint() + ->GetProcessDefinedStep()->GetProcessName() == "Transportation" ) + { + if( g4edata->GetState() + == G4ErrorState(G4ErrorState_TargetCloserThanBoundary) ) + { // target or step length reached #ifdef G4EVERBOSE - if(verbose >= 5 ) G4cout << " transportation determined by geant4e " << G4endl; -#endif - + if(verbose >= 5 ) + { + G4cout << " transportation determined by geant4e " << G4endl; + } +#endif g4edata->SetState( G4ErrorState_StoppedAtTarget ); - } else if( g4edata->GetTarget()->GetType() == G4ErrorTarget_GeomVolume ) { - G4ErrorGeomVolumeTarget* target = (G4ErrorGeomVolumeTarget*)(g4edata->GetTarget()); - if( static_cast( target )->TargetReached( theG4Track->GetStep() ) ) { + } + else if( g4edata->GetTarget()->GetType() == G4ErrorTarget_GeomVolume ) + { + G4ErrorGeomVolumeTarget* target = + (G4ErrorGeomVolumeTarget*)(g4edata->GetTarget()); + if( static_cast( target ) + ->TargetReached( theG4Track->GetStep() ) ) + { g4edata->SetState( G4ErrorState_StoppedAtTarget ); } } - }else if( theG4Track->GetStep()->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName() == "G4ErrorTrackLengthTarget" ){ + } + else if( theG4Track->GetStep()->GetPostStepPoint()->GetProcessDefinedStep() + ->GetProcessName() == "G4ErrorTrackLengthTarget" ) + { g4edata->SetState( G4ErrorState_StoppedAtTarget ); } - /*if( g4edata->GetState() == G4ErrorState_StoppedAtTarget ) { - G4cout << " Run termination " << g4edata->GetState() << G4endl; - g4emgr->RunTermination(); - }*/ - - //---------- Propagate error + #ifdef G4EVERBOSE - if(verbose >= 2 ) G4cout << " propagating error " << *currentTS_FREE << G4endl; + if(verbose >= 2 ) + { + G4cout << " propagating error " << *currentTS_FREE << G4endl; + } #endif const G4Track* cTrack = const_cast(theG4Track); ierr = currentTS_FREE->PropagateError( cTrack ); #ifdef G4EVERBOSE - if(verbose >= 3 ) G4cout << " PropagateError returns " << ierr << G4endl; + if(verbose >= 3 ) + { + G4cout << " PropagateError returns " << ierr << G4endl; + } #endif currentTS_FREE->Update( cTrack ); theStepLength += theG4Track->GetStepLength(); - if(ierr != 0 ) { - G4cerr << "!!! G4ErrorPropagator:MakeOneStep returns an error " << ierr << G4endl; - G4cerr << "!!! GEANT4 tracking will be stopped " << G4endl; + if(ierr != 0 ) + { + G4cerr << "ERROR - G4ErrorPropagator:MakeOneStep()" << G4endl + << " Error returned: " << ierr << G4endl + << " Geant4 tracking will be stopped !" << G4endl; } return ierr; @@ -349,47 +439,74 @@ G4int G4ErrorPropagator::MakeOneStep( G4ErrorFreeTrajState* currentTS_FREE ) //----------------------------------------------------------------------- -G4ErrorFreeTrajState* G4ErrorPropagator::InitFreeTrajState( G4ErrorTrajState* currentTS ) +G4ErrorFreeTrajState* +G4ErrorPropagator::InitFreeTrajState( G4ErrorTrajState* currentTS ) { G4ErrorFreeTrajState* currentTS_FREE = 0; - //----- Transform the TrajState to Free coordinates if it is OnSurface - if( currentTS->GetTSType() == G4eTS_OS ){ - G4ErrorSurfaceTrajState* tssd = static_cast(currentTS); - //t if( theCurrentTS_FREE != 0 ) delete theCurrentTS_FREE; - currentTS_FREE = new G4ErrorFreeTrajState( *tssd ); - }else if( currentTS->GetTSType() == G4eTS_FREE ){ - currentTS_FREE = static_cast(currentTS); - } else { - G4Exception("G4ErrorPropagator::InitFreeTrajState WRONG TrajState " + currentTS->GetTSType()); - } + //----- Transform the TrajState to Free coordinates if it is OnSurface + // + if( currentTS->GetTSType() == G4eTS_OS ) + { + G4ErrorSurfaceTrajState* tssd = + static_cast(currentTS); + currentTS_FREE = new G4ErrorFreeTrajState( *tssd ); + } + else if( currentTS->GetTSType() == G4eTS_FREE ) + { + currentTS_FREE = static_cast(currentTS); + } + else + { + G4cerr << "ERROR - G4ErrorPropagator::InitFreeTrajState()" << G4endl + << "WRONG TrajState " + currentTS->GetTSType() << G4endl; + G4Exception("G4ErrorPropagator::InitFreeTrajState()", "InvalidState", + FatalException, "WRONG trajectory state !"); + } return currentTS_FREE; } - //----------------------------------------------------------------------- -void G4ErrorPropagator::GetFinalTrajState( G4ErrorTrajState* currentTS, G4ErrorFreeTrajState* currentTS_FREE, const G4ErrorTarget* target ) +void G4ErrorPropagator::GetFinalTrajState( G4ErrorTrajState* currentTS, + G4ErrorFreeTrajState* currentTS_FREE, + const G4ErrorTarget* target ) { + G4ErrorPropagatorData* g4edata = + G4ErrorPropagatorData::GetErrorPropagatorData(); - G4ErrorPropagatorData* g4edata = G4ErrorPropagatorData::GetErrorPropagatorData(); #ifdef G4EVERBOSE - if(verbose >= 1 ) G4cout << " G4ErrorPropagator::Propagate: final state " << int(g4edata->GetState()) << " TSType " << currentTS->GetTSType() << G4endl; + if(verbose >= 1 ) + { + G4cout << " G4ErrorPropagator::Propagate: final state " + << G4int(g4edata->GetState()) << " TSType " + << currentTS->GetTSType() << G4endl; + } #endif if( (currentTS->GetTSType() == G4eTS_FREE) || - (g4edata->GetState() != G4ErrorState_StoppedAtTarget) ){ + (g4edata->GetState() != G4ErrorState_StoppedAtTarget) ) + { currentTS = currentTS_FREE; - } else if( currentTS->GetTSType() == G4eTS_OS ){ - if( target->GetType() == G4ErrorTarget_TrkL ){ - G4Exception("G4ErrorPropagator:GetFinalTrajState !! Using a G4ErrorSurfaceTrajState with a target of type G4ErrorTargetTrackLength "); + } + else if( currentTS->GetTSType() == G4eTS_OS ) + { + if( target->GetType() == G4ErrorTarget_TrkL ) + { + G4Exception("G4ErrorPropagator:GetFinalTrajState()", + "InvalidSetup", FatalException, + "Using a G4ErrorSurfaceTrajState with wrong target"); } - //- G4ErrorSurfaceTrajState* tssd = static_cast(currentTS); - // delete currentTS; - const G4ErrorTanPlaneTarget* targetWTP = static_cast(target); - *currentTS = G4ErrorSurfaceTrajState( *(static_cast(currentTS_FREE)), targetWTP->GetTangentPlane( currentTS_FREE->GetPosition() ) ); + const G4ErrorTanPlaneTarget* targetWTP = + static_cast(target); + *currentTS = G4ErrorSurfaceTrajState( + *(static_cast(currentTS_FREE)), + targetWTP->GetTangentPlane( currentTS_FREE->GetPosition() ) ); #ifdef G4EVERBOSE - if(verbose >= 1 ) G4cout << currentTS << " returning tssd " << *currentTS << G4endl; + if(verbose >= 1 ) + { + G4cout << currentTS << " returning tssd " << *currentTS << G4endl; + } #endif delete currentTS_FREE; } @@ -401,59 +518,111 @@ G4bool G4ErrorPropagator::CheckIfLastStep( G4Track* aTrack ) { G4bool exception = 0; G4bool lastG4eStep = false; - G4ErrorPropagatorData* g4edata = G4ErrorPropagatorData::GetErrorPropagatorData(); + G4ErrorPropagatorData* g4edata = + G4ErrorPropagatorData::GetErrorPropagatorData(); - if( verbose >= 4 ) G4cout << " G4ErrorPropagator::CheckIfLastStep G4ErrorState= " << int(g4edata->GetState()) << G4endl; +#ifdef G4EVERBOSE + if( verbose >= 4 ) + { + G4cout << " G4ErrorPropagator::CheckIfLastStep G4ErrorState= " + << G4int(g4edata->GetState()) << G4endl; + } +#endif - //----- Check if this is the last step: track has reached the target or the end of world - if(g4edata->GetState() == G4ErrorState(G4ErrorState_StoppedAtTarget) ) { + //----- Check if this is the last step: track has reached the target + // or the end of world + // + if(g4edata->GetState() == G4ErrorState(G4ErrorState_StoppedAtTarget) ) + { lastG4eStep = true; #ifdef G4EVERBOSE - if(verbose >= 5 ) G4cout << " G4ErrorPropagator::CheckIfLastStep " << lastG4eStep << " " << int(g4edata->GetState()) << G4endl; -#endif - } else if( aTrack->GetNextVolume() == 0 ) { - //----- If particle is out of world, without finding the G4ErrorTarget, give a n error/warning - lastG4eStep = true; - if( exception ){ - G4Exception(" !!!EXITING: G4ErrorPropagator::CheckIfLastStep: track extrapolated until end of World without finding the defined target "); - } else { - if( verbose >= 1 ) G4cerr << " !!!WARNING: G4ErrorPropagator::CheckIfLastStep: track extrapolated until end of World without finding the defined target " << G4endl; + if(verbose >= 5 ) + { + G4cout << " G4ErrorPropagator::CheckIfLastStep " << lastG4eStep + << " " << G4int(g4edata->GetState()) << G4endl; } - //----- not last step from G4e, but track is stopped (energy exhausted) - } else if( aTrack->GetTrackStatus() == fStopAndKill ) { - if( exception ){ - G4cerr << " !!!EXITING: G4ErrorPropagator::CheckIfLastStep: track extrapolated until energy is exhausted without finding the defined target " << G4endl; - exit(1); - } else { - if( verbose >= 1 ) G4cerr << " !!!WARNING: G4ErrorPropagator::CheckIfLastStep: track extrapolated until energy is exhausted without finding the defined target " << G4endl; +#endif + } + else if( aTrack->GetNextVolume() == 0 ) + { + //----- If particle is out of world, without finding the G4ErrorTarget, + // give a n error/warning + // + lastG4eStep = true; + if( exception ) + { + G4cerr << "ERROR - G4ErrorPropagator::CheckIfLastStep()" << G4endl + << " Track extrapolated until end of World" << G4endl + << " without finding the defined target " << G4endl; + G4Exception("G4ErrorPropagator::CheckIfLastStep()", + "InvalidSetup", FatalException, + "Track extrapolated without finding the defined target."); + } + else + { + if( verbose >= 1 ) + { + G4cerr << "ERROR - G4ErrorPropagator::CheckIfLastStep()" << G4endl + << " Track extrapolated until end of World" << G4endl + << " without finding the defined target " << G4endl; + } + } + } //----- not last step from G4e, but track is stopped (energy exhausted) + else if( aTrack->GetTrackStatus() == fStopAndKill ) + { + if( exception ) + { + G4cerr << "ERROR - G4ErrorPropagator::CheckIfLastStep()" << G4endl + << " Track extrapolated until energy is exhausted" << G4endl + << " without finding the defined target !" << G4endl; + G4Exception("G4ErrorPropagator::CheckIfLastStep()", + "InvalidSetup", FatalException, + "Track extrapolated without finding the defined target."); + } + else + { + if( verbose >= 1 ) + { + G4cerr << "ERROR - G4ErrorPropagator::CheckIfLastStep()" << G4endl + << " Track extrapolated until energy is exhausted" << G4endl + << " without finding the defined target !" << G4endl; + } lastG4eStep = 1; } } - if( verbose >= 5 ) G4cout << " return CheckIfLastStep " << lastG4eStep << G4endl; +#ifdef G4EVERBOSE + if( verbose >= 5 ) + { + G4cout << " return CheckIfLastStep " << lastG4eStep << G4endl; + } +#endif + return lastG4eStep; } - //--------------------------------------------------------------------------- void G4ErrorPropagator::InvokePreUserTrackingAction( G4Track* fpTrack ) { - const G4UserTrackingAction* fpUserTrackingAction = G4EventManager::GetEventManager()->GetUserTrackingAction(); - if( fpUserTrackingAction != NULL ) { - const_cast(fpUserTrackingAction)->PreUserTrackingAction((fpTrack) ); + const G4UserTrackingAction* fpUserTrackingAction = + G4EventManager::GetEventManager()->GetUserTrackingAction(); + if( fpUserTrackingAction != 0 ) + { + const_cast(fpUserTrackingAction) + ->PreUserTrackingAction((fpTrack) ); } - } //--------------------------------------------------------------------------- void G4ErrorPropagator::InvokePostUserTrackingAction( G4Track* fpTrack ) { - const G4UserTrackingAction* fpUserTrackingAction = G4EventManager::GetEventManager()->GetUserTrackingAction(); - if( fpUserTrackingAction != NULL ) { - const_cast(fpUserTrackingAction)->PostUserTrackingAction((fpTrack) ); + const G4UserTrackingAction* fpUserTrackingAction = + G4EventManager::GetEventManager()->GetUserTrackingAction(); + if( fpUserTrackingAction != 0 ) + { + const_cast(fpUserTrackingAction) + ->PostUserTrackingAction((fpTrack) ); } - } - diff --git a/source/error_propagation/src/G4ErrorPropagatorManager.cc b/source/error_propagation/src/G4ErrorPropagatorManager.cc index 9a5e0afe01..792432325d 100644 --- a/source/error_propagation/src/G4ErrorPropagatorManager.cc +++ b/source/error_propagation/src/G4ErrorPropagatorManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorPropagatorManager.cc,v 1.3 2007/05/31 15:28:51 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4ErrorRunManagerHelper.cc b/source/error_propagation/src/G4ErrorRunManagerHelper.cc index fba432009b..666b4f544b 100644 --- a/source/error_propagation/src/G4ErrorRunManagerHelper.cc +++ b/source/error_propagation/src/G4ErrorRunManagerHelper.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorRunManagerHelper.cc,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4ErrorStepLengthLimitProcess.cc b/source/error_propagation/src/G4ErrorStepLengthLimitProcess.cc index 381c3047dd..2d0cdbe0b6 100644 --- a/source/error_propagation/src/G4ErrorStepLengthLimitProcess.cc +++ b/source/error_propagation/src/G4ErrorStepLengthLimitProcess.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorStepLengthLimitProcess.cc,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4ErrorSurfaceTrajParam.cc b/source/error_propagation/src/G4ErrorSurfaceTrajParam.cc index d5f8d5f6b7..1a0af2ceea 100644 --- a/source/error_propagation/src/G4ErrorSurfaceTrajParam.cc +++ b/source/error_propagation/src/G4ErrorSurfaceTrajParam.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorSurfaceTrajParam.cc,v 1.3 2007/05/31 20:22:45 arce Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4ErrorSurfaceTrajState.cc b/source/error_propagation/src/G4ErrorSurfaceTrajState.cc index fa4afc1d38..4f24d362ea 100644 --- a/source/error_propagation/src/G4ErrorSurfaceTrajState.cc +++ b/source/error_propagation/src/G4ErrorSurfaceTrajState.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorSurfaceTrajState.cc,v 1.6 2007/06/21 15:04:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4ErrorSymMatrix.cc b/source/error_propagation/src/G4ErrorSymMatrix.cc index fa85abc0cd..df03d730df 100644 --- a/source/error_propagation/src/G4ErrorSymMatrix.cc +++ b/source/error_propagation/src/G4ErrorSymMatrix.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorSymMatrix.cc,v 1.3 2007/06/21 15:04:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4ErrorTrackLengthTarget.cc b/source/error_propagation/src/G4ErrorTrackLengthTarget.cc index ea7a01e5fe..e4c89a95c3 100644 --- a/source/error_propagation/src/G4ErrorTrackLengthTarget.cc +++ b/source/error_propagation/src/G4ErrorTrackLengthTarget.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorTrackLengthTarget.cc,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4ErrorTrajState.cc b/source/error_propagation/src/G4ErrorTrajState.cc index 6ce2aee23d..2442bfb7e4 100644 --- a/source/error_propagation/src/G4ErrorTrajState.cc +++ b/source/error_propagation/src/G4ErrorTrajState.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorTrajState.cc,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/error_propagation/src/G4VErrorLimitProcess.cc b/source/error_propagation/src/G4VErrorLimitProcess.cc index 1fd2161abd..96e676c949 100644 --- a/source/error_propagation/src/G4VErrorLimitProcess.cc +++ b/source/error_propagation/src/G4VErrorLimitProcess.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VErrorLimitProcess.cc,v 1.2 2007/05/29 14:41:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/event/History b/source/event/History index 2f0dc87d1b..1fb4ed307a 100644 --- a/source/event/History +++ b/source/event/History @@ -1,4 +1,4 @@ -$Id: History,v 1.113 2007/06/12 08:49:18 gcosmo Exp $ +$Id: History,v 1.118 2007/12/04 17:28:31 flei Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,19 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +December 4, 2007, F. Lei (event-V09-00-03) +- Fixed the problem in bug report #988 + +November 7, 2007, M.Asai (event-V09-00-02) +- Added private copy constructor and =, ==, += operators to G4ParticleGun. Addressing to Bug Report 984. + +October 1, 2007, P.Gumplinger and M.Asai (event-V09-00-01) +- Add UI commands /gun/momentum and /gun/momentumAmp + for example: /gun/momentumAmp 1.0 GeV (not GeV/c)! + +September 28, 2007, P.Gumplinger (event-V09-00-00) +- Add class member particle_momentum and + method SetParticleMomentum(G4double) June 11, 2007, G.Santin (event-V08-03-02) - Fix to normalisation of source intensities with multiple sources: diff --git a/source/event/include/G4CellScorer.hh b/source/event/include/G4CellScorer.hh index 3de2fd5c6e..f1e7552a24 100644 --- a/source/event/include/G4CellScorer.hh +++ b/source/event/include/G4CellScorer.hh @@ -25,7 +25,7 @@ // // // $Id: G4CellScorer.hh,v 1.2 2006/06/29 18:08:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4CellScorer diff --git a/source/event/include/G4CellScorerStore.hh b/source/event/include/G4CellScorerStore.hh index f74e9279e4..92f1305137 100644 --- a/source/event/include/G4CellScorerStore.hh +++ b/source/event/include/G4CellScorerStore.hh @@ -25,7 +25,7 @@ // // // $Id: G4CellScorerStore.hh,v 1.3 2006/06/29 18:08:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4CellScorerStore diff --git a/source/event/include/G4ClassificationOfNewTrack.hh b/source/event/include/G4ClassificationOfNewTrack.hh index 4099e4dd03..672504b978 100644 --- a/source/event/include/G4ClassificationOfNewTrack.hh +++ b/source/event/include/G4ClassificationOfNewTrack.hh @@ -25,7 +25,7 @@ // // // $Id: G4ClassificationOfNewTrack.hh,v 1.6 2006/06/29 18:08:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/event/include/G4EvManMessenger.hh b/source/event/include/G4EvManMessenger.hh index eee3cc15e6..774f4ba4dc 100644 --- a/source/event/include/G4EvManMessenger.hh +++ b/source/event/include/G4EvManMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4EvManMessenger.hh,v 1.6 2006/11/03 03:11:13 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4EvManMessenger_h diff --git a/source/event/include/G4Event.hh b/source/event/include/G4Event.hh index eda8ed4c80..98dc820c0e 100644 --- a/source/event/include/G4Event.hh +++ b/source/event/include/G4Event.hh @@ -25,7 +25,7 @@ // // // $Id: G4Event.hh,v 1.17 2007/03/08 23:56:12 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4Event_h diff --git a/source/event/include/G4EventManager.hh b/source/event/include/G4EventManager.hh index 1671665456..5eb5c8ca96 100644 --- a/source/event/include/G4EventManager.hh +++ b/source/event/include/G4EventManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4EventManager.hh,v 1.22 2007/03/08 23:56:12 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/event/include/G4HEPEvtInterface.hh b/source/event/include/G4HEPEvtInterface.hh index f66afbed7d..e1cb95dde1 100644 --- a/source/event/include/G4HEPEvtInterface.hh +++ b/source/event/include/G4HEPEvtInterface.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEPEvtInterface.hh,v 1.8 2006/06/29 18:08:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4HEPEvtInterface_h diff --git a/source/event/include/G4HEPEvtParticle.hh b/source/event/include/G4HEPEvtParticle.hh index af5aa68c78..95cca5a7bf 100644 --- a/source/event/include/G4HEPEvtParticle.hh +++ b/source/event/include/G4HEPEvtParticle.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEPEvtParticle.hh,v 1.9 2006/06/29 18:08:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/event/include/G4ParticleGun.hh b/source/event/include/G4ParticleGun.hh index 34718d41d6..1162f1374d 100644 --- a/source/event/include/G4ParticleGun.hh +++ b/source/event/include/G4ParticleGun.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ParticleGun.hh,v 1.8 2006/06/29 18:08:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ParticleGun.hh,v 1.11 2007/11/07 17:13:19 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4ParticleGun_h @@ -45,7 +45,7 @@ class G4ParticleGunMessenger; // class description: // // This is a concrete class of G4VPrimaryGenerator. It shoots a particle of given type -// to a given direction with a given kinetic energy. +// into a given direction with either a given kinetic energy or momentum. // The position and time of the primary particle must be set by the corresponding // set methods of G4VPrimaryGenerator base class, otherwise zero will be set. // @@ -73,11 +73,12 @@ class G4ParticleGun:public G4VPrimaryGenerator public: virtual ~G4ParticleGun(); - G4ParticleGun(const G4ParticleGun &right); - const G4ParticleGun & operator=(const G4ParticleGun &right); - G4int operator==(const G4ParticleGun &right) const; - G4int operator!=(const G4ParticleGun &right) const; + private: + G4ParticleGun(const G4ParticleGun&); + const G4ParticleGun & operator=(const G4ParticleGun&); + G4int operator==(const G4ParticleGun&) const; + G4int operator!=(const G4ParticleGun&) const; public: // with description virtual void GeneratePrimaryVertex(G4Event* evt); @@ -89,12 +90,12 @@ class G4ParticleGun:public G4VPrimaryGenerator // void SetParticleDefinition (G4ParticleDefinition * aParticleDefinition); + void SetParticleEnergy(G4double aKineticEnergy); + void SetParticleMomentum(G4double aMomentum); void SetParticleMomentum(G4ParticleMomentum aMomentum); inline void SetParticleMomentumDirection (G4ParticleMomentum aMomentumDirection) { particle_momentum_direction = aMomentumDirection.unit(); } - inline void SetParticleEnergy(G4double aKineticEnergy) - { particle_energy = aKineticEnergy; } inline void SetParticleCharge(G4double aCharge) { particle_charge = aCharge; } inline void SetParticlePolarization(G4ThreeVector aVal) @@ -109,6 +110,8 @@ class G4ParticleGun:public G4VPrimaryGenerator { return particle_momentum_direction; } inline G4double GetParticleEnergy() { return particle_energy; } + inline G4double GetParticleMomentum() + { return particle_momentum; } inline G4double GetParticleCharge() { return particle_charge; } inline G4ThreeVector GetParticlePolarization() @@ -123,6 +126,7 @@ class G4ParticleGun:public G4VPrimaryGenerator G4ParticleDefinition* particle_definition; G4ParticleMomentum particle_momentum_direction; G4double particle_energy; + G4double particle_momentum; G4double particle_charge; G4ThreeVector particle_polarization; diff --git a/source/event/include/G4ParticleGunMessenger.hh b/source/event/include/G4ParticleGunMessenger.hh index be772bfaea..72010727a1 100644 --- a/source/event/include/G4ParticleGunMessenger.hh +++ b/source/event/include/G4ParticleGunMessenger.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ParticleGunMessenger.hh,v 1.8 2006/06/29 18:08:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ParticleGunMessenger.hh,v 1.10 2007/10/02 00:45:17 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -75,6 +75,8 @@ class G4ParticleGunMessenger: public G4UImessenger G4UIcmdWithAString * particleCmd; G4UIcmdWith3Vector * directionCmd; G4UIcmdWithADoubleAndUnit * energyCmd; + G4UIcmdWithADoubleAndUnit * momAmpCmd; + G4UIcmdWith3VectorAndUnit * momCmd; G4UIcmdWith3VectorAndUnit * positionCmd; G4UIcmdWithADoubleAndUnit * timeCmd; G4UIcmdWith3Vector * polCmd; diff --git a/source/event/include/G4PrimaryTransformer.hh b/source/event/include/G4PrimaryTransformer.hh index b066bd36d4..81218ca67a 100644 --- a/source/event/include/G4PrimaryTransformer.hh +++ b/source/event/include/G4PrimaryTransformer.hh @@ -25,7 +25,7 @@ // // // $Id: G4PrimaryTransformer.hh,v 1.12 2006/06/29 18:08:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PromaryTransformer_h diff --git a/source/event/include/G4RayShooter.hh b/source/event/include/G4RayShooter.hh index 220f0ed831..a9b3c86b70 100644 --- a/source/event/include/G4RayShooter.hh +++ b/source/event/include/G4RayShooter.hh @@ -25,7 +25,7 @@ // // // $Id: G4RayShooter.hh,v 1.2 2006/06/29 18:08:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class description: diff --git a/source/event/include/G4StackChecker.hh b/source/event/include/G4StackChecker.hh index 9aab6b7a38..750b7219bb 100644 --- a/source/event/include/G4StackChecker.hh +++ b/source/event/include/G4StackChecker.hh @@ -25,7 +25,7 @@ // // // $Id: G4StackChecker.hh,v 1.2 2006/06/29 18:09:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4StackChecker_h diff --git a/source/event/include/G4StackManager.hh b/source/event/include/G4StackManager.hh index 30e54c1ee6..88b326bcba 100644 --- a/source/event/include/G4StackManager.hh +++ b/source/event/include/G4StackManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4StackManager.hh,v 1.12 2006/06/29 18:09:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/event/include/G4StackedTrack.hh b/source/event/include/G4StackedTrack.hh index d686d597cc..5dbd054ba0 100644 --- a/source/event/include/G4StackedTrack.hh +++ b/source/event/include/G4StackedTrack.hh @@ -25,7 +25,7 @@ // // // $Id: G4StackedTrack.hh,v 1.10 2006/06/29 18:09:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Last Modification : 02/Feb/96 M.Asai diff --git a/source/event/include/G4StackingMessenger.hh b/source/event/include/G4StackingMessenger.hh index 243c936180..546ddecf5b 100644 --- a/source/event/include/G4StackingMessenger.hh +++ b/source/event/include/G4StackingMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4StackingMessenger.hh,v 1.5 2006/06/29 18:09:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4StackingMessenger_h diff --git a/source/event/include/G4TrackStack.hh b/source/event/include/G4TrackStack.hh index bb3c7debb7..ea2ef209bf 100644 --- a/source/event/include/G4TrackStack.hh +++ b/source/event/include/G4TrackStack.hh @@ -25,7 +25,7 @@ // // // $Id: G4TrackStack.hh,v 1.6 2006/06/29 18:09:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Last Modification : 09/Dec/96 M.Asai diff --git a/source/event/include/G4TrajectoryContainer.hh b/source/event/include/G4TrajectoryContainer.hh index eba2b6f1a0..7d9f464bbb 100644 --- a/source/event/include/G4TrajectoryContainer.hh +++ b/source/event/include/G4TrajectoryContainer.hh @@ -25,7 +25,7 @@ // // // $Id: G4TrajectoryContainer.hh,v 1.15 2006/06/29 18:09:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4TrajectoryContainer diff --git a/source/event/include/G4UserEventAction.hh b/source/event/include/G4UserEventAction.hh index 8d799c7b60..8f541d9c4c 100644 --- a/source/event/include/G4UserEventAction.hh +++ b/source/event/include/G4UserEventAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4UserEventAction.hh,v 1.6 2006/06/29 18:09:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/event/include/G4UserStackingAction.hh b/source/event/include/G4UserStackingAction.hh index c58d35f3dc..b59bc6037c 100644 --- a/source/event/include/G4UserStackingAction.hh +++ b/source/event/include/G4UserStackingAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4UserStackingAction.hh,v 1.6 2006/06/29 18:09:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UserStackingAction_h diff --git a/source/event/include/G4VPrimaryGenerator.hh b/source/event/include/G4VPrimaryGenerator.hh index 3e46d085ba..9aa5065561 100644 --- a/source/event/include/G4VPrimaryGenerator.hh +++ b/source/event/include/G4VPrimaryGenerator.hh @@ -25,7 +25,7 @@ // // // $Id: G4VPrimaryGenerator.hh,v 1.8 2006/06/29 18:09:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VPrimaryGenerator_h diff --git a/source/event/include/G4VUserEventInformation.hh b/source/event/include/G4VUserEventInformation.hh index ece7d6c97a..88d7bdcbb9 100644 --- a/source/event/include/G4VUserEventInformation.hh +++ b/source/event/include/G4VUserEventInformation.hh @@ -25,7 +25,7 @@ // // // $Id: G4VUserEventInformation.hh,v 1.2 2006/06/29 18:09:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/event/include/eventgendefs.hh b/source/event/include/eventgendefs.hh index 8e8aa47cf3..a872303247 100644 --- a/source/event/include/eventgendefs.hh +++ b/source/event/include/eventgendefs.hh @@ -25,7 +25,7 @@ // // // $Id: eventgendefs.hh,v 1.4 2006/06/29 18:09:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef EventGenerator_DEBUG #define EventGenerator_DEBUG diff --git a/source/event/include/evmandefs.hh b/source/event/include/evmandefs.hh index 38ea328576..2d963c56f4 100644 --- a/source/event/include/evmandefs.hh +++ b/source/event/include/evmandefs.hh @@ -25,7 +25,7 @@ // // // $Id: evmandefs.hh,v 1.4 2006/06/29 18:09:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ///#define G4EVENTMANAGER_DEBUG 1 diff --git a/source/event/include/trajectoryControl.hh b/source/event/include/trajectoryControl.hh index f315613794..6a7abe5d09 100644 --- a/source/event/include/trajectoryControl.hh +++ b/source/event/include/trajectoryControl.hh @@ -25,7 +25,7 @@ // // // $Id: trajectoryControl.hh,v 1.4 2006/06/29 18:09:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ////#define G4_STORE_TRAJECTORY 1 diff --git a/source/event/src/G4CellScorer.cc b/source/event/src/G4CellScorer.cc index 3ebbb2f35d..62148b7a26 100644 --- a/source/event/src/G4CellScorer.cc +++ b/source/event/src/G4CellScorer.cc @@ -25,7 +25,7 @@ // // // $Id: G4CellScorer.cc,v 1.4 2006/06/29 18:09:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/event/src/G4CellScorerStore.cc b/source/event/src/G4CellScorerStore.cc index 55458d5b8b..9e889cc071 100644 --- a/source/event/src/G4CellScorerStore.cc +++ b/source/event/src/G4CellScorerStore.cc @@ -25,7 +25,7 @@ // // // $Id: G4CellScorerStore.cc,v 1.4 2006/06/29 18:09:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/event/src/G4EvManMessenger.cc b/source/event/src/G4EvManMessenger.cc index 18c159cf58..94ce79e8e8 100644 --- a/source/event/src/G4EvManMessenger.cc +++ b/source/event/src/G4EvManMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4EvManMessenger.cc,v 1.6 2006/11/03 03:11:13 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- diff --git a/source/event/src/G4Event.cc b/source/event/src/G4Event.cc index 127ad142e7..5e3dd01057 100644 --- a/source/event/src/G4Event.cc +++ b/source/event/src/G4Event.cc @@ -25,7 +25,7 @@ // // // $Id: G4Event.cc,v 1.14 2007/03/07 02:44:16 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4Event diff --git a/source/event/src/G4EventManager.cc b/source/event/src/G4EventManager.cc index db250fcd2a..54b840f5aa 100644 --- a/source/event/src/G4EventManager.cc +++ b/source/event/src/G4EventManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4EventManager.cc,v 1.30 2007/03/08 23:56:12 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/event/src/G4HEPEvtInterface.cc b/source/event/src/G4HEPEvtInterface.cc index 7c0b93f83a..cc8c0a82ef 100644 --- a/source/event/src/G4HEPEvtInterface.cc +++ b/source/event/src/G4HEPEvtInterface.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEPEvtInterface.cc,v 1.11 2006/06/29 18:09:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/event/src/G4HEPEvtParticle.cc b/source/event/src/G4HEPEvtParticle.cc index 10d01fb82b..efd91384d9 100644 --- a/source/event/src/G4HEPEvtParticle.cc +++ b/source/event/src/G4HEPEvtParticle.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEPEvtParticle.cc,v 1.8 2006/06/29 18:09:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/event/src/G4ParticleGun.cc b/source/event/src/G4ParticleGun.cc index ba07c0b788..d22f4b6b8c 100644 --- a/source/event/src/G4ParticleGun.cc +++ b/source/event/src/G4ParticleGun.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ParticleGun.cc,v 1.12 2006/06/29 18:09:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ParticleGun.cc,v 1.14 2007/11/07 17:13:19 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4ParticleGun @@ -61,6 +61,7 @@ void G4ParticleGun::SetInitialValues() G4ThreeVector zero; particle_momentum_direction = (G4ParticleMomentum)zero; particle_energy = 0.0; + particle_momentum = 0.0; particle_position = zero; particle_time = 0.0; particle_polarization = zero; @@ -73,6 +74,19 @@ G4ParticleGun::~G4ParticleGun() delete theMessenger; } +G4ParticleGun::G4ParticleGun(const G4ParticleGun& /*right*/) +:G4VPrimaryGenerator() +{ G4Exception("G4ParticleGun : Copy constructor should not be used."); } + +const G4ParticleGun& G4ParticleGun::operator=(const G4ParticleGun& right) +{ G4Exception("G4ParticleGun : Equal operator should not be used."); return right; } + +G4int G4ParticleGun::operator==(const G4ParticleGun& /*right*/) const +{ G4Exception("G4ParticleGun : == operator should not be used."); return true; } + +G4int G4ParticleGun::operator!=(const G4ParticleGun& /*right*/) const +{ G4Exception("G4ParticleGun : == operator should not be used."); return false; } + void G4ParticleGun::SetParticleDefinition (G4ParticleDefinition * aParticleDefinition) { @@ -93,33 +107,91 @@ void G4ParticleGun::SetParticleDefinition } particle_definition = aParticleDefinition; particle_charge = particle_definition->GetPDGCharge(); + if(particle_momentum>0.0) + { + G4double mass = particle_definition->GetPDGMass(); + particle_energy = + std::sqrt(particle_momentum*particle_momentum+mass*mass)-mass; + } +} + +void G4ParticleGun::SetParticleEnergy(G4double aKineticEnergy) +{ + particle_energy = aKineticEnergy; + if(particle_momentum>0.0){ + if(particle_definition){ + G4cout << "G4ParticleGun::" << particle_definition->GetParticleName() + << G4endl; + }else{ + G4cout << "G4ParticleGun::" << " " << G4endl; + } + G4cout << " was defined in terms of Momentum: " + << particle_momentum/GeV << "GeV/c" << G4endl; + G4cout << " is now defined in terms of KineticEnergy: " + << particle_energy/GeV << "GeV" << G4endl; + particle_momentum = 0.0; + } +} + +void G4ParticleGun::SetParticleMomentum(G4double aMomentum) +{ + if(particle_energy>0.0){ + if(particle_definition){ + G4cout << "G4ParticleGun::" << particle_definition->GetParticleName() + << G4endl; + }else{ + G4cout << "G4ParticleGun::" << " " << G4endl; + } + G4cout << " was defined in terms of KineticEnergy: " + << particle_energy/GeV << "GeV" << G4endl; + G4cout << " is now defined in terms Momentum: " + << aMomentum/GeV << "GeV/c" << G4endl; + } + if(particle_definition==0) + { + G4cout <<"Particle Definition not defined yet for G4ParticleGun"<< G4endl; + G4cout <<"Zero Mass is assumed"<GetPDGMass(); + particle_momentum = aMomentum; + particle_energy = + std::sqrt(particle_momentum*particle_momentum+mass*mass)-mass; + } } void G4ParticleGun::SetParticleMomentum(G4ParticleMomentum aMomentum) { + if(particle_energy>0.0){ + if(particle_definition){ + G4cout << "G4ParticleGun::" << particle_definition->GetParticleName() + << G4endl; + }else{ + G4cout << "G4ParticleGun::" << " " << G4endl; + } + G4cout << " was defined in terms of KineticEnergy: " + << particle_energy/GeV << "GeV" << G4endl; + G4cout << " is now defined in terms Momentum: " + << aMomentum.mag()/GeV << "GeV/c" << G4endl; + } if(particle_definition==0) { G4cout <<"Particle Definition not defined yet for G4ParticleGun"<< G4endl; G4cout <<"Zero Mass is assumed"<GetPDGMass(); - G4double p = aMomentum.mag(); + particle_momentum = aMomentum.mag(); particle_momentum_direction = aMomentum.unit(); - if ((particle_energy>0.0)&&(std::abs(particle_energy+mass-std::sqrt(p*p+mass*mass))>keV)) - { - G4cout << "G4ParticleGun::" << particle_definition->GetParticleName() << G4endl; - G4cout << " KineticEnergy and Momentum could be inconsistent" << G4endl; - G4cout << " (Momentum:" << p/GeV << " GeV/c"; - G4cout << " Mass:" << mass/GeV << " GeV/c/c)" << G4endl; - G4cout << " KineticEnergy is overwritten!! "; - G4cout << particle_energy/GeV << "->"; - G4cout << (std::sqrt(p*p+mass*mass)-mass)/GeV << "GeV" << G4endl; - } - particle_energy = std::sqrt(p*p+mass*mass)-mass; + particle_energy = + std::sqrt(particle_momentum*particle_momentum+mass*mass)-mass; } } diff --git a/source/event/src/G4ParticleGunMessenger.cc b/source/event/src/G4ParticleGunMessenger.cc index b42c6a82c9..98cfe56618 100644 --- a/source/event/src/G4ParticleGunMessenger.cc +++ b/source/event/src/G4ParticleGunMessenger.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ParticleGunMessenger.cc,v 1.14 2006/06/29 18:09:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ParticleGunMessenger.cc,v 1.16 2007/10/02 00:45:17 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4ParticleGunMessenger.hh" @@ -79,8 +79,8 @@ G4ParticleGunMessenger::G4ParticleGunMessenger(G4ParticleGun * fPtclGun) directionCmd = new G4UIcmdWith3Vector("/gun/direction",this); directionCmd->SetGuidance("Set momentum direction."); directionCmd->SetGuidance("Direction needs not to be a unit vector."); - directionCmd->SetParameterName("Px","Py","Pz",true,true); - directionCmd->SetRange("Px != 0 || Py != 0 || Pz != 0"); + directionCmd->SetParameterName("ex","ey","ez",true,true); + directionCmd->SetRange("ex != 0 || ey != 0 || ez != 0"); energyCmd = new G4UIcmdWithADoubleAndUnit("/gun/energy",this); energyCmd->SetGuidance("Set kinetic energy."); @@ -89,6 +89,19 @@ G4ParticleGunMessenger::G4ParticleGunMessenger(G4ParticleGun * fPtclGun) //energyCmd->SetUnitCategory("Energy"); //energyCmd->SetUnitCandidates("eV keV MeV GeV TeV"); + momCmd = new G4UIcmdWith3VectorAndUnit("/gun/momentum",this); + momCmd->SetGuidance("Set momentum. This command is equivalent to two commands /gun/direction and /gun/momentumAmp"); + momCmd->SetParameterName("px","py","pz",true,true); + momCmd->SetRange("px != 0 || py != 0 || pz != 0"); + momCmd->SetDefaultUnit("GeV"); + + momAmpCmd = new G4UIcmdWithADoubleAndUnit("/gun/momentumAmp",this); + momAmpCmd->SetGuidance("Set absolute value of momentum."); + momAmpCmd->SetGuidance("Direction should be set by /gun/direction command."); + momAmpCmd->SetGuidance("This command should be used alternatively with /gun/energy."); + momAmpCmd->SetParameterName("Momentum",true,true); + momAmpCmd->SetDefaultUnit("GeV"); + positionCmd = new G4UIcmdWith3VectorAndUnit("/gun/position",this); positionCmd->SetGuidance("Set starting position of the particle."); positionCmd->SetParameterName("X","Y","Z",true,true); @@ -149,6 +162,8 @@ G4ParticleGunMessenger::~G4ParticleGunMessenger() delete particleCmd; delete directionCmd; delete energyCmd; + delete momCmd; + delete momAmpCmd; delete positionCmd; delete timeCmd; delete polCmd; @@ -176,6 +191,10 @@ void G4ParticleGunMessenger::SetNewValue(G4UIcommand * command,G4String newValue { fParticleGun->SetParticleMomentumDirection(directionCmd->GetNew3VectorValue(newValues)); } else if( command==energyCmd ) { fParticleGun->SetParticleEnergy(energyCmd->GetNewDoubleValue(newValues)); } + else if( command==momCmd ) + { fParticleGun->SetParticleMomentum(momCmd->GetNew3VectorValue(newValues)); } + else if( command==momAmpCmd ) + { fParticleGun->SetParticleMomentum(momAmpCmd->GetNewDoubleValue(newValues)); } else if( command==positionCmd ) { fParticleGun->SetParticlePosition(positionCmd->GetNew3VectorValue(newValues)); } else if( command==timeCmd ) @@ -197,7 +216,26 @@ G4String G4ParticleGunMessenger::GetCurrentValue(G4UIcommand * command) else if( command==particleCmd ) { cv = fParticleGun->GetParticleDefinition()->GetParticleName(); } else if( command==energyCmd ) - { cv = energyCmd->ConvertToString(fParticleGun->GetParticleEnergy(),"GeV"); } + { + G4double ene = fParticleGun->GetParticleEnergy(); + if(ene == 0.) + { G4cerr << " G4ParticleGun: was defined in terms of momentum." << G4endl; } + else + { cv = energyCmd->ConvertToString(ene,"GeV"); } + } + else if( command==momCmd || command==momAmpCmd ) + { + G4double mom = fParticleGun->GetParticleMomentum(); + if(mom == 0.) + { G4cerr << " G4ParticleGun: was defined in terms of kinetic energy." << G4endl; } + else + { + if( command==momCmd ) + { cv = momCmd->ConvertToString(mom*(fParticleGun->GetParticleMomentumDirection()),"GeV"); } + else + { cv = momAmpCmd->ConvertToString(mom,"GeV"); } + } + } else if( command==positionCmd ) { cv = positionCmd->ConvertToString(fParticleGun->GetParticlePosition(),"cm"); } else if( command==timeCmd ) diff --git a/source/event/src/G4PrimaryTransformer.cc b/source/event/src/G4PrimaryTransformer.cc index b941c94507..8fa5893978 100644 --- a/source/event/src/G4PrimaryTransformer.cc +++ b/source/event/src/G4PrimaryTransformer.cc @@ -25,7 +25,7 @@ // // // $Id: G4PrimaryTransformer.cc,v 1.27 2006/06/29 18:09:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4PrimaryTransformer.hh" diff --git a/source/event/src/G4RayShooter.cc b/source/event/src/G4RayShooter.cc index 6b081ff300..fbd5333175 100644 --- a/source/event/src/G4RayShooter.cc +++ b/source/event/src/G4RayShooter.cc @@ -25,7 +25,7 @@ // // // $Id: G4RayShooter.cc,v 1.2 2006/06/29 18:10:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4RayShooter.hh" diff --git a/source/event/src/G4SPSEneDistribution.cc b/source/event/src/G4SPSEneDistribution.cc index f594681bc0..7b53ec5c3f 100644 --- a/source/event/src/G4SPSEneDistribution.cc +++ b/source/event/src/G4SPSEneDistribution.cc @@ -225,7 +225,7 @@ void G4SPSEneDistribution::CalculateCdgSpectrum() { omalpha = 1. - spind[i]; CDGhist[i+1] = CDGhist[i] + (pfact[i]/omalpha)* - (std::pow(ene_line[i+1],omalpha)-std::pow(ene_line[i],omalpha)); + (std::pow(ene_line[i+1]/keV,omalpha)-std::pow(ene_line[i]/keV,omalpha)); i++; } @@ -893,7 +893,7 @@ void G4SPSEneDistribution::GenerateCdgEnergies() omalpha[0] = 1. - 1.4; omalpha[1] = 1. - 2.3; ene_line[0] = Emin; - ene_line[1] = 18.; + ene_line[1] = 18.*keV; ene_line[2] = Emax; } if(Emin > 18*keV) diff --git a/source/event/src/G4StackChecker.cc b/source/event/src/G4StackChecker.cc index 6d104839d6..308b416312 100644 --- a/source/event/src/G4StackChecker.cc +++ b/source/event/src/G4StackChecker.cc @@ -25,7 +25,7 @@ // // // $Id: G4StackChecker.cc,v 1.2 2006/06/29 18:10:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4StackChecker.hh" diff --git a/source/event/src/G4StackManager.cc b/source/event/src/G4StackManager.cc index fabb67b7e1..ba6ebdba7d 100644 --- a/source/event/src/G4StackManager.cc +++ b/source/event/src/G4StackManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4StackManager.cc,v 1.10 2006/06/29 18:10:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Last Modification : 09/Dec/96 M.Asai diff --git a/source/event/src/G4StackedTrack.cc b/source/event/src/G4StackedTrack.cc index 40049c1cd0..a30ab2314d 100644 --- a/source/event/src/G4StackedTrack.cc +++ b/source/event/src/G4StackedTrack.cc @@ -25,7 +25,7 @@ // // // $Id: G4StackedTrack.cc,v 1.9 2006/06/29 18:10:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Last Modification : 02/Feb/96 M.Asai diff --git a/source/event/src/G4StackingMessenger.cc b/source/event/src/G4StackingMessenger.cc index 248eac3e37..4fbbca5f1c 100644 --- a/source/event/src/G4StackingMessenger.cc +++ b/source/event/src/G4StackingMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4StackingMessenger.cc,v 1.5 2006/06/29 18:10:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- diff --git a/source/event/src/G4TrackStack.cc b/source/event/src/G4TrackStack.cc index a01ca1b7e8..bddc0ba444 100644 --- a/source/event/src/G4TrackStack.cc +++ b/source/event/src/G4TrackStack.cc @@ -25,7 +25,7 @@ // // // $Id: G4TrackStack.cc,v 1.6 2006/06/29 18:10:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4TrackStack.hh" diff --git a/source/event/src/G4TrajectoryContainer.cc b/source/event/src/G4TrajectoryContainer.cc index 1591eea0f1..0725d37f19 100644 --- a/source/event/src/G4TrajectoryContainer.cc +++ b/source/event/src/G4TrajectoryContainer.cc @@ -25,7 +25,7 @@ // // // $Id: G4TrajectoryContainer.cc,v 1.5 2006/06/29 18:10:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4TrajectoryContainer.hh" diff --git a/source/event/src/G4UserEventAction.cc b/source/event/src/G4UserEventAction.cc index ca2dc811de..568b165f13 100644 --- a/source/event/src/G4UserEventAction.cc +++ b/source/event/src/G4UserEventAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4UserEventAction.cc,v 1.7 2006/06/29 18:10:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4UserEventAction.hh" diff --git a/source/event/src/G4UserStackingAction.cc b/source/event/src/G4UserStackingAction.cc index 8874184ac3..0cb57dce58 100644 --- a/source/event/src/G4UserStackingAction.cc +++ b/source/event/src/G4UserStackingAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4UserStackingAction.cc,v 1.7 2006/06/29 18:10:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4UserStackingAction.hh" diff --git a/source/event/src/G4VPrimaryGenerator.cc b/source/event/src/G4VPrimaryGenerator.cc index 981f025a33..3681c7134e 100644 --- a/source/event/src/G4VPrimaryGenerator.cc +++ b/source/event/src/G4VPrimaryGenerator.cc @@ -25,7 +25,7 @@ // // // $Id: G4VPrimaryGenerator.cc,v 1.5 2006/06/29 18:10:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VPrimaryGenerator diff --git a/source/g3tog4/include/G3DetTable.hh b/source/g3tog4/include/G3DetTable.hh index df6601fc56..3072cc162c 100644 --- a/source/g3tog4/include/G3DetTable.hh +++ b/source/g3tog4/include/G3DetTable.hh @@ -25,7 +25,7 @@ // // // $Id: G3DetTable.hh,v 1.9 2006/06/29 18:11:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G3DetTable class diff --git a/source/g3tog4/include/G3DetTableEntry.hh b/source/g3tog4/include/G3DetTableEntry.hh index 0250341ab5..2e806956cd 100644 --- a/source/g3tog4/include/G3DetTableEntry.hh +++ b/source/g3tog4/include/G3DetTableEntry.hh @@ -25,7 +25,7 @@ // // // $Id: G3DetTableEntry.hh,v 1.6 2006/06/29 18:11:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G3DetTableEntry class diff --git a/source/g3tog4/include/G3Division.hh b/source/g3tog4/include/G3Division.hh index 52a0b4cc03..fa604fc0aa 100644 --- a/source/g3tog4/include/G3Division.hh +++ b/source/g3tog4/include/G3Division.hh @@ -25,7 +25,7 @@ // // // $Id: G3Division.hh,v 1.8 2006/06/29 18:11:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3EleTable.hh b/source/g3tog4/include/G3EleTable.hh index 2c5a2bfdb6..2dbd24b664 100644 --- a/source/g3tog4/include/G3EleTable.hh +++ b/source/g3tog4/include/G3EleTable.hh @@ -25,7 +25,7 @@ // // // $Id: G3EleTable.hh,v 1.8 2006/06/29 18:11:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3G4Interface.hh b/source/g3tog4/include/G3G4Interface.hh index 7976dc5f8b..5c460a1cd1 100644 --- a/source/g3tog4/include/G3G4Interface.hh +++ b/source/g3tog4/include/G3G4Interface.hh @@ -25,7 +25,7 @@ // // // $Id: G3G4Interface.hh,v 1.10 2006/06/29 18:11:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Interfaces for G3 equivalent routines // diff --git a/source/g3tog4/include/G3MatTable.hh b/source/g3tog4/include/G3MatTable.hh index f0a1fd0fe0..8569f43ac6 100644 --- a/source/g3tog4/include/G3MatTable.hh +++ b/source/g3tog4/include/G3MatTable.hh @@ -25,7 +25,7 @@ // // // $Id: G3MatTable.hh,v 1.13 2006/06/29 18:11:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3MatTableEntry.hh b/source/g3tog4/include/G3MatTableEntry.hh index ef17e40bf9..1269cfc946 100644 --- a/source/g3tog4/include/G3MatTableEntry.hh +++ b/source/g3tog4/include/G3MatTableEntry.hh @@ -25,7 +25,7 @@ // // // $Id: G3MatTableEntry.hh,v 1.6 2006/06/29 18:11:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3MedTable.hh b/source/g3tog4/include/G3MedTable.hh index 7272c1c4cb..f08e254dce 100644 --- a/source/g3tog4/include/G3MedTable.hh +++ b/source/g3tog4/include/G3MedTable.hh @@ -25,7 +25,7 @@ // // // $Id: G3MedTable.hh,v 1.13 2006/06/29 18:12:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3MedTableEntry.hh b/source/g3tog4/include/G3MedTableEntry.hh index 9da9669bd7..b26e93a50f 100644 --- a/source/g3tog4/include/G3MedTableEntry.hh +++ b/source/g3tog4/include/G3MedTableEntry.hh @@ -25,7 +25,7 @@ // // // $Id: G3MedTableEntry.hh,v 1.6 2006/06/29 18:12:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3PartTable.hh b/source/g3tog4/include/G3PartTable.hh index d7ebcb3efb..e037b30613 100644 --- a/source/g3tog4/include/G3PartTable.hh +++ b/source/g3tog4/include/G3PartTable.hh @@ -25,7 +25,7 @@ // // // $Id: G3PartTable.hh,v 1.10 2006/06/29 18:12:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3Pos.hh b/source/g3tog4/include/G3Pos.hh index 02d3d24f40..b732a0c63c 100644 --- a/source/g3tog4/include/G3Pos.hh +++ b/source/g3tog4/include/G3Pos.hh @@ -25,7 +25,7 @@ // // // $Id: G3Pos.hh,v 1.11 2006/06/29 18:12:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3RotTable.hh b/source/g3tog4/include/G3RotTable.hh index 5546a9647f..746f0bffb4 100644 --- a/source/g3tog4/include/G3RotTable.hh +++ b/source/g3tog4/include/G3RotTable.hh @@ -25,7 +25,7 @@ // // // $Id: G3RotTable.hh,v 1.15 2006/06/29 18:12:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3RotTableEntry.hh b/source/g3tog4/include/G3RotTableEntry.hh index ef331a0cb1..c3bd3401e0 100644 --- a/source/g3tog4/include/G3RotTableEntry.hh +++ b/source/g3tog4/include/G3RotTableEntry.hh @@ -25,7 +25,7 @@ // // // $Id: G3RotTableEntry.hh,v 1.6 2006/06/29 18:12:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3SensVolVector.hh b/source/g3tog4/include/G3SensVolVector.hh index 8938ae1802..1148323abe 100644 --- a/source/g3tog4/include/G3SensVolVector.hh +++ b/source/g3tog4/include/G3SensVolVector.hh @@ -25,7 +25,7 @@ // // // $Id: G3SensVolVector.hh,v 1.7 2006/06/29 18:12:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // vector of logical volumes that were defined with // tracking medium with ISVOL=1 diff --git a/source/g3tog4/include/G3VolTable.hh b/source/g3tog4/include/G3VolTable.hh index 39f747a8a4..77c34926ca 100644 --- a/source/g3tog4/include/G3VolTable.hh +++ b/source/g3tog4/include/G3VolTable.hh @@ -25,7 +25,7 @@ // // // $Id: G3VolTable.hh,v 1.18 2006/06/29 18:12:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3VolTableEntry.hh b/source/g3tog4/include/G3VolTableEntry.hh index 84277dd71e..e08e003999 100644 --- a/source/g3tog4/include/G3VolTableEntry.hh +++ b/source/g3tog4/include/G3VolTableEntry.hh @@ -25,7 +25,7 @@ // // // $Id: G3VolTableEntry.hh,v 1.9 2006/06/29 18:12:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3toG4.hh b/source/g3tog4/include/G3toG4.hh index fd25953658..95cefb0b23 100644 --- a/source/g3tog4/include/G3toG4.hh +++ b/source/g3tog4/include/G3toG4.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4.hh,v 1.9 2006/06/29 18:12:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // modified by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/include/G3toG4.inc b/source/g3tog4/include/G3toG4.inc index 305751b182..8d1feed8ed 100644 --- a/source/g3tog4/include/G3toG4.inc +++ b/source/g3tog4/include/G3toG4.inc @@ -25,7 +25,7 @@ * * * $Id: G3toG4.inc,v 1.4 2006/06/29 18:12:35 gunter Exp $ -* GEANT4 tag $Name: geant4-09-00 $ +* GEANT4 tag $Name: geant4-09-01 $ * integer maxlines parameter (maxlines = 750) ! max no. of cmd lines per C++ source file diff --git a/source/g3tog4/include/G3toG4BuildTree.hh b/source/g3tog4/include/G3toG4BuildTree.hh index 7065c02b86..c11f95a79c 100644 --- a/source/g3tog4/include/G3toG4BuildTree.hh +++ b/source/g3tog4/include/G3toG4BuildTree.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4BuildTree.hh,v 1.8 2006/06/29 18:12:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class Description: diff --git a/source/g3tog4/include/G3toG4MANY.hh b/source/g3tog4/include/G3toG4MANY.hh index 3f3477bbe8..95c0f44e8a 100644 --- a/source/g3tog4/include/G3toG4MANY.hh +++ b/source/g3tog4/include/G3toG4MANY.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4MANY.hh,v 1.3 2006/06/29 18:12:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class Description: diff --git a/source/g3tog4/include/G3toG4MakeSolid.hh b/source/g3tog4/include/G3toG4MakeSolid.hh index 1863960c58..d0daf29434 100644 --- a/source/g3tog4/include/G3toG4MakeSolid.hh +++ b/source/g3tog4/include/G3toG4MakeSolid.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4MakeSolid.hh,v 1.7 2006/06/29 18:12:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------- // Class Description: diff --git a/source/g3tog4/include/G3toG4RotationMatrix.hh b/source/g3tog4/include/G3toG4RotationMatrix.hh index e80e509c1f..81d3173b9a 100644 --- a/source/g3tog4/include/G3toG4RotationMatrix.hh +++ b/source/g3tog4/include/G3toG4RotationMatrix.hh @@ -25,7 +25,7 @@ // // // $Id: G3toG4RotationMatrix.hh,v 1.6 2006/06/29 18:12:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ---------------------- // Class description: // diff --git a/source/g3tog4/include/gcbank.inc b/source/g3tog4/include/gcbank.inc index fc8778a9ca..54b2683c44 100644 --- a/source/g3tog4/include/gcbank.inc +++ b/source/g3tog4/include/gcbank.inc @@ -25,7 +25,7 @@ * * * $Id: gcbank.inc,v 1.4 2006/06/29 18:12:46 gunter Exp $ -* GEANT4 tag $Name: geant4-09-00 $ +* GEANT4 tag $Name: geant4-09-01 $ * INTEGER IQ,LQ,NZEBRA,IXSTOR,IXDIV,IXCONS,LMAIN,LR1,JCG INTEGER KWBANK,KWWORK,IWS diff --git a/source/g3tog4/src/G3DetTable.cc b/source/g3tog4/src/G3DetTable.cc index 03c2d017df..803313a074 100644 --- a/source/g3tog4/src/G3DetTable.cc +++ b/source/g3tog4/src/G3DetTable.cc @@ -25,7 +25,7 @@ // // // $Id: G3DetTable.cc,v 1.12 2006/06/29 18:12:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" #include "G3DetTable.hh" diff --git a/source/g3tog4/src/G3DetTableEntry.cc b/source/g3tog4/src/G3DetTableEntry.cc index 3d885b573b..4dbd4f3c83 100644 --- a/source/g3tog4/src/G3DetTableEntry.cc +++ b/source/g3tog4/src/G3DetTableEntry.cc @@ -25,7 +25,7 @@ // // // $Id: G3DetTableEntry.cc,v 1.5 2006/06/29 18:12:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" #include "G3DetTableEntry.hh" diff --git a/source/g3tog4/src/G3Division.cc b/source/g3tog4/src/G3Division.cc index d26fac5a38..cb90324183 100644 --- a/source/g3tog4/src/G3Division.cc +++ b/source/g3tog4/src/G3Division.cc @@ -25,7 +25,7 @@ // // // $Id: G3Division.cc,v 1.17 2006/06/29 18:12:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, V.Berejnoi 13.10.99 diff --git a/source/g3tog4/src/G3EleTable.cc b/source/g3tog4/src/G3EleTable.cc index ee5596cc2b..bb17a2d039 100644 --- a/source/g3tog4/src/G3EleTable.cc +++ b/source/g3tog4/src/G3EleTable.cc @@ -25,7 +25,7 @@ // // // $Id: G3EleTable.cc,v 1.16 2006/06/29 18:12:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4Types.hh" diff --git a/source/g3tog4/src/G3MatTable.cc b/source/g3tog4/src/G3MatTable.cc index d252bbf74b..02e867cc9a 100644 --- a/source/g3tog4/src/G3MatTable.cc +++ b/source/g3tog4/src/G3MatTable.cc @@ -25,7 +25,7 @@ // // // $Id: G3MatTable.cc,v 1.16 2006/06/29 18:12:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3MatTableEntry.cc b/source/g3tog4/src/G3MatTableEntry.cc index cf667ab109..2adf1bdfd7 100644 --- a/source/g3tog4/src/G3MatTableEntry.cc +++ b/source/g3tog4/src/G3MatTableEntry.cc @@ -25,7 +25,7 @@ // // // $Id: G3MatTableEntry.cc,v 1.4 2006/06/29 18:13:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3MedTable.cc b/source/g3tog4/src/G3MedTable.cc index 98b3b18c16..52aec2decd 100644 --- a/source/g3tog4/src/G3MedTable.cc +++ b/source/g3tog4/src/G3MedTable.cc @@ -25,7 +25,7 @@ // // // $Id: G3MedTable.cc,v 1.15 2006/06/29 18:13:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3MedTableEntry.cc b/source/g3tog4/src/G3MedTableEntry.cc index e48f1f7515..4f516e0c07 100644 --- a/source/g3tog4/src/G3MedTableEntry.cc +++ b/source/g3tog4/src/G3MedTableEntry.cc @@ -25,7 +25,7 @@ // // // $Id: G3MedTableEntry.cc,v 1.4 2006/06/29 18:13:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3NegVolPars.cc b/source/g3tog4/src/G3NegVolPars.cc index ae681c9371..1598662114 100644 --- a/source/g3tog4/src/G3NegVolPars.cc +++ b/source/g3tog4/src/G3NegVolPars.cc @@ -25,7 +25,7 @@ // // // $Id: G3NegVolPars.cc,v 1.13 2006/06/29 18:13:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // modified by I. Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G3PartTable.cc b/source/g3tog4/src/G3PartTable.cc index cf30b1067b..83e4de65ed 100644 --- a/source/g3tog4/src/G3PartTable.cc +++ b/source/g3tog4/src/G3PartTable.cc @@ -25,7 +25,7 @@ // // // $Id: G3PartTable.cc,v 1.14 2006/06/29 18:13:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4Types.hh" diff --git a/source/g3tog4/src/G3Pos.cc b/source/g3tog4/src/G3Pos.cc index 4f3781360b..2045071b62 100644 --- a/source/g3tog4/src/G3Pos.cc +++ b/source/g3tog4/src/G3Pos.cc @@ -25,7 +25,7 @@ // // // $Id: G3Pos.cc,v 1.9 2006/06/29 18:13:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // modified by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G3RotTable.cc b/source/g3tog4/src/G3RotTable.cc index 2b298444ee..98bcb2a7ac 100644 --- a/source/g3tog4/src/G3RotTable.cc +++ b/source/g3tog4/src/G3RotTable.cc @@ -25,7 +25,7 @@ // // // $Id: G3RotTable.cc,v 1.16 2006/06/29 18:13:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3RotTableEntry.cc b/source/g3tog4/src/G3RotTableEntry.cc index ba9e24a421..3e92cccc08 100644 --- a/source/g3tog4/src/G3RotTableEntry.cc +++ b/source/g3tog4/src/G3RotTableEntry.cc @@ -25,7 +25,7 @@ // // // $Id: G3RotTableEntry.cc,v 1.4 2006/06/29 18:13:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3VolTable.cc b/source/g3tog4/src/G3VolTable.cc index a10cc98221..862eb4e665 100644 --- a/source/g3tog4/src/G3VolTable.cc +++ b/source/g3tog4/src/G3VolTable.cc @@ -25,7 +25,7 @@ // // // $Id: G3VolTable.cc,v 1.22 2006/06/29 18:13:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // modified by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G3VolTableEntry.cc b/source/g3tog4/src/G3VolTableEntry.cc index 52d1f208b9..8a97ffaade 100644 --- a/source/g3tog4/src/G3VolTableEntry.cc +++ b/source/g3tog4/src/G3VolTableEntry.cc @@ -25,7 +25,7 @@ // // // $Id: G3VolTableEntry.cc,v 1.12 2006/06/29 18:13:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // modified by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G3fillParams.cc.archive b/source/g3tog4/src/G3fillParams.cc.archive index 146fc6050e..5510de1dcd 100644 --- a/source/g3tog4/src/G3fillParams.cc.archive +++ b/source/g3tog4/src/G3fillParams.cc.archive @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3fillParams.cc.archive,v 1.2 2003/06/16 16:50:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // extracted from clparse.cc by I. Hrivnacova, 30.7.99 diff --git a/source/g3tog4/src/G3toG4BuildTree.cc b/source/g3tog4/src/G3toG4BuildTree.cc index cde0cf35f2..432171a71b 100644 --- a/source/g3tog4/src/G3toG4BuildTree.cc +++ b/source/g3tog4/src/G3toG4BuildTree.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4BuildTree.cc,v 1.20 2006/06/29 18:13:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // modified by I. Hrivnacova, 2.8.99 diff --git a/source/g3tog4/src/G3toG4MANY.cc b/source/g3tog4/src/G3toG4MANY.cc index dc44601067..fb27eddb03 100644 --- a/source/g3tog4/src/G3toG4MANY.cc +++ b/source/g3tog4/src/G3toG4MANY.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4MANY.cc,v 1.2 2006/06/29 18:13:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // By I. Hrivnacova, 22.10.01 diff --git a/source/g3tog4/src/G3toG4MakeSolid.cc b/source/g3tog4/src/G3toG4MakeSolid.cc index 286265e92d..43f3e10590 100644 --- a/source/g3tog4/src/G3toG4MakeSolid.cc +++ b/source/g3tog4/src/G3toG4MakeSolid.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4MakeSolid.cc,v 1.10 2006/06/29 18:13:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // modified by I.Hrivnacova, V.Berejnoi 27 Sep 99 diff --git a/source/g3tog4/src/G3toG4RotationMatrix.cc b/source/g3tog4/src/G3toG4RotationMatrix.cc index 90c0763ee7..8e6cebdf72 100644 --- a/source/g3tog4/src/G3toG4RotationMatrix.cc +++ b/source/g3tog4/src/G3toG4RotationMatrix.cc @@ -25,7 +25,7 @@ // // // $Id: G3toG4RotationMatrix.cc,v 1.4 2006/06/29 18:13:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G3toG4RotationMatrix.hh" diff --git a/source/g3tog4/src/G4BuildGeom.cc b/source/g3tog4/src/G4BuildGeom.cc index 77b568b8d5..3c0ab43d27 100644 --- a/source/g3tog4/src/G4BuildGeom.cc +++ b/source/g3tog4/src/G4BuildGeom.cc @@ -25,7 +25,7 @@ // // // $Id: G4BuildGeom.cc,v 1.17 2006/06/29 18:13:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // modified by I. Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G4ggclos.cc b/source/g3tog4/src/G4ggclos.cc index 8c3bf53ffe..b8fd0f37cf 100644 --- a/source/g3tog4/src/G4ggclos.cc +++ b/source/g3tog4/src/G4ggclos.cc @@ -25,7 +25,7 @@ // // // $Id: G4ggclos.cc,v 1.8 2006/06/29 18:13:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G3toG4.hh" #include "G3VolTable.hh" diff --git a/source/g3tog4/src/G4gsatt.cc b/source/g3tog4/src/G4gsatt.cc index efe27885c2..f358078233 100644 --- a/source/g3tog4/src/G4gsatt.cc +++ b/source/g3tog4/src/G4gsatt.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsatt.cc,v 1.13 2006/06/29 18:13:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "globals.hh" #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsbool.cc b/source/g3tog4/src/G4gsbool.cc index 1b3980a1c8..2546eddb49 100644 --- a/source/g3tog4/src/G4gsbool.cc +++ b/source/g3tog4/src/G4gsbool.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsbool.cc,v 1.2 2006/06/29 18:13:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, 13.10.01 diff --git a/source/g3tog4/src/G4gsdet.cc b/source/g3tog4/src/G4gsdet.cc index 90b7881c34..8cc94eb41f 100644 --- a/source/g3tog4/src/G4gsdet.cc +++ b/source/g3tog4/src/G4gsdet.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsdet.cc,v 1.5 2006/06/29 18:13:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "globals.hh" #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsdeta.cc b/source/g3tog4/src/G4gsdeta.cc index ccadbe2ea5..91d1b397ef 100644 --- a/source/g3tog4/src/G4gsdeta.cc +++ b/source/g3tog4/src/G4gsdeta.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsdeta.cc,v 1.6 2006/06/29 18:13:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // modified by I.Hrivnacova, 6 Oct 99 diff --git a/source/g3tog4/src/G4gsdetd.cc b/source/g3tog4/src/G4gsdetd.cc index 363ec5b277..965dd86c27 100644 --- a/source/g3tog4/src/G4gsdetd.cc +++ b/source/g3tog4/src/G4gsdetd.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsdetd.cc,v 1.8 2006/06/29 18:13:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G3toG4.hh" #include "G3DetTable.hh" diff --git a/source/g3tog4/src/G4gsdeth.cc b/source/g3tog4/src/G4gsdeth.cc index 157ec82449..9a97cb4884 100644 --- a/source/g3tog4/src/G4gsdeth.cc +++ b/source/g3tog4/src/G4gsdeth.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsdeth.cc,v 1.8 2006/06/29 18:13:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G3toG4.hh" #include "G3DetTable.hh" diff --git a/source/g3tog4/src/G4gsdetu.cc b/source/g3tog4/src/G4gsdetu.cc index bc754a652c..75a1e02292 100644 --- a/source/g3tog4/src/G4gsdetu.cc +++ b/source/g3tog4/src/G4gsdetu.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsdetu.cc,v 1.6 2006/06/29 18:13:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsdetv.cc b/source/g3tog4/src/G4gsdetv.cc index 2f66e12169..a2647a1660 100644 --- a/source/g3tog4/src/G4gsdetv.cc +++ b/source/g3tog4/src/G4gsdetv.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsdetv.cc,v 1.10 2006/06/29 18:13:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4ios.hh" #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsdk.cc b/source/g3tog4/src/G4gsdk.cc index 54c68e1853..8d1e8052d0 100644 --- a/source/g3tog4/src/G4gsdk.cc +++ b/source/g3tog4/src/G4gsdk.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsdk.cc,v 1.7 2006/06/29 18:13:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4Decay.hh" #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsdvn.cc b/source/g3tog4/src/G4gsdvn.cc index 962bfa104d..ab211899e3 100644 --- a/source/g3tog4/src/G4gsdvn.cc +++ b/source/g3tog4/src/G4gsdvn.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsdvn.cc,v 1.10 2006/06/29 18:13:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, V.Berejnoi, 29 Oct 99 diff --git a/source/g3tog4/src/G4gsdvn2.cc b/source/g3tog4/src/G4gsdvn2.cc index 75f1431b71..25a7405702 100644 --- a/source/g3tog4/src/G4gsdvn2.cc +++ b/source/g3tog4/src/G4gsdvn2.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsdvn2.cc,v 1.8 2006/06/29 18:14:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, V.Berejnoi, 29 Oct 99 diff --git a/source/g3tog4/src/G4gsdvt.cc b/source/g3tog4/src/G4gsdvt.cc index 45fcc51d8f..2e00ec5914 100644 --- a/source/g3tog4/src/G4gsdvt.cc +++ b/source/g3tog4/src/G4gsdvt.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsdvt.cc,v 1.7 2006/06/29 18:14:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, V.Berejnoi, 29 Oct 99 diff --git a/source/g3tog4/src/G4gsdvt2.cc b/source/g3tog4/src/G4gsdvt2.cc index 64790310e5..dce8927b52 100644 --- a/source/g3tog4/src/G4gsdvt2.cc +++ b/source/g3tog4/src/G4gsdvt2.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsdvt2.cc,v 1.7 2006/06/29 18:14:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, V.Berejnoi, 29 Oct 99 diff --git a/source/g3tog4/src/G4gsdvx.cc b/source/g3tog4/src/G4gsdvx.cc index cb83537263..fdf20aecb3 100644 --- a/source/g3tog4/src/G4gsdvx.cc +++ b/source/g3tog4/src/G4gsdvx.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsdvx.cc,v 1.5 2006/06/29 18:14:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, V.Berejnoi, 27 Sep 99 diff --git a/source/g3tog4/src/G4gsmate.cc b/source/g3tog4/src/G4gsmate.cc index 6a0107978e..db4ecc848b 100644 --- a/source/g3tog4/src/G4gsmate.cc +++ b/source/g3tog4/src/G4gsmate.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsmate.cc,v 1.12 2006/06/29 18:14:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G4gsmixt.cc b/source/g3tog4/src/G4gsmixt.cc index 991a068b04..5772a2c0b9 100644 --- a/source/g3tog4/src/G4gsmixt.cc +++ b/source/g3tog4/src/G4gsmixt.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsmixt.cc,v 1.13 2006/06/29 18:14:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G4gspart.cc b/source/g3tog4/src/G4gspart.cc index 2f4b9d905b..d4464aa6e3 100644 --- a/source/g3tog4/src/G4gspart.cc +++ b/source/g3tog4/src/G4gspart.cc @@ -25,7 +25,7 @@ // // // $Id: G4gspart.cc,v 1.7 2006/06/29 18:14:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4ProcessManager.hh" #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gspos.cc b/source/g3tog4/src/G4gspos.cc index 25b11ba645..48f87326ec 100644 --- a/source/g3tog4/src/G4gspos.cc +++ b/source/g3tog4/src/G4gspos.cc @@ -25,7 +25,7 @@ // // // $Id: G4gspos.cc,v 1.13 2006/06/29 18:14:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G4gsposp.cc b/source/g3tog4/src/G4gsposp.cc index d95b4db2be..895e2764d7 100644 --- a/source/g3tog4/src/G4gsposp.cc +++ b/source/g3tog4/src/G4gsposp.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsposp.cc,v 1.16 2006/06/29 18:14:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G4gsrotm.cc b/source/g3tog4/src/G4gsrotm.cc index 5dd3523aed..9a07fdb877 100644 --- a/source/g3tog4/src/G4gsrotm.cc +++ b/source/g3tog4/src/G4gsrotm.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsrotm.cc,v 1.12 2006/06/29 18:14:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G3toG4.hh" #include "G3RotTable.hh" diff --git a/source/g3tog4/src/G4gstmed.cc b/source/g3tog4/src/G4gstmed.cc index 6aa7700a2d..0882048f5f 100644 --- a/source/g3tog4/src/G4gstmed.cc +++ b/source/g3tog4/src/G4gstmed.cc @@ -25,7 +25,7 @@ // // // $Id: G4gstmed.cc,v 1.7 2006/06/29 18:15:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // The last G4int argument of G4gstmed(..) is used for sending // info whether the Geant3 tracking medium parameters should diff --git a/source/g3tog4/src/G4gstpar.cc b/source/g3tog4/src/G4gstpar.cc index 0b082fadf0..0ea3208765 100644 --- a/source/g3tog4/src/G4gstpar.cc +++ b/source/g3tog4/src/G4gstpar.cc @@ -25,7 +25,7 @@ // // // $Id: G4gstpar.cc,v 1.8 2006/06/29 18:15:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G3toG4.hh" #include "G3VolTable.hh" diff --git a/source/g3tog4/src/G4gsvolu.cc b/source/g3tog4/src/G4gsvolu.cc index f0bcb85e61..a06742fe95 100644 --- a/source/g3tog4/src/G4gsvolu.cc +++ b/source/g3tog4/src/G4gsvolu.cc @@ -25,7 +25,7 @@ // // // $Id: G4gsvolu.cc,v 1.10 2006/06/29 18:15:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/clparse.cc b/source/g3tog4/src/clparse.cc index 5d88f8b96d..d0be213a99 100644 --- a/source/g3tog4/src/clparse.cc +++ b/source/g3tog4/src/clparse.cc @@ -25,7 +25,7 @@ // // // $Id: clparse.cc,v 1.18 2006/06/29 18:15:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // modified by I.Hrivnacova // added G3SensVol diff --git a/source/g3tog4/src/g3routines.F b/source/g3tog4/src/g3routines.F index 51b0e3e2c9..7176c10fd1 100644 --- a/source/g3tog4/src/g3routines.F +++ b/source/g3tog4/src/g3routines.F @@ -25,7 +25,7 @@ * * * $Id: g3routines.F,v 1.5 2006/06/29 18:15:10 gunter Exp $ -* GEANT4 tag $Name: geant4-09-00 $ +* GEANT4 tag $Name: geant4-09-01 $ * #define CALL_GEANT diff --git a/source/g3tog4/src/g3test.F.main b/source/g3tog4/src/g3test.F.main index f6f739dddc..30e8102f7e 100644 --- a/source/g3tog4/src/g3test.F.main +++ b/source/g3tog4/src/g3test.F.main @@ -6,7 +6,7 @@ * and all its terms. * * $Id: g3test.F.main,v 1.2 1999/12/05 17:50:16 gcosmo Exp $ -* GEANT4 tag $Name: geant4-09-00 $ +* GEANT4 tag $Name: geant4-09-01 $ * * * g3test diff --git a/source/g3tog4/src/g3tog4.F b/source/g3tog4/src/g3tog4.F index 6dfff2e1d3..02d1f9046a 100644 --- a/source/g3tog4/src/g3tog4.F +++ b/source/g3tog4/src/g3tog4.F @@ -25,7 +25,7 @@ * * * $Id: g3tog4.F,v 1.5 2006/06/29 18:15:12 gunter Exp $ -* GEANT4 tag $Name: geant4-09-00 $ +* GEANT4 tag $Name: geant4-09-01 $ * * * G3toG4 diff --git a/source/g3tog4/src/g4geom.cc.main b/source/g3tog4/src/g4geom.cc.main index fddc199e28..b2df775579 100644 --- a/source/g3tog4/src/g4geom.cc.main +++ b/source/g3tog4/src/g4geom.cc.main @@ -6,7 +6,7 @@ // and all its terms. // // $Id: g4geom.cc.main,v 1.2 1999/12/05 17:50:17 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // g4geom // diff --git a/source/g3tog4/src/jshape.F b/source/g3tog4/src/jshape.F index 2310c234c8..ea77949caa 100644 --- a/source/g3tog4/src/jshape.F +++ b/source/g3tog4/src/jshape.F @@ -25,7 +25,7 @@ * * * $Id: jshape.F,v 1.4 2006/06/29 18:15:14 gunter Exp $ -* GEANT4 tag $Name: geant4-09-00 $ +* GEANT4 tag $Name: geant4-09-01 $ * * *-- Author : Jouko Vuoskoski, CERN, Jouko.Vuoskoski@cern.ch diff --git a/source/g3tog4/src/mztog4.F b/source/g3tog4/src/mztog4.F index 56b24577d1..f073de10c6 100644 --- a/source/g3tog4/src/mztog4.F +++ b/source/g3tog4/src/mztog4.F @@ -25,7 +25,7 @@ * * * $Id: mztog4.F,v 1.4 2006/06/29 18:15:16 gunter Exp $ -* GEANT4 tag $Name: geant4-09-00 $ +* GEANT4 tag $Name: geant4-09-01 $ * subroutine mztog4 ************************************************************************ diff --git a/source/g3tog4/src/rztog4.F b/source/g3tog4/src/rztog4.F index 1cf063567c..2480071d0d 100644 --- a/source/g3tog4/src/rztog4.F +++ b/source/g3tog4/src/rztog4.F @@ -25,7 +25,7 @@ * * * $Id: rztog4.F,v 1.4 2006/06/29 18:15:18 gunter Exp $ -* GEANT4 tag $Name: geant4-09-00 $ +* GEANT4 tag $Name: geant4-09-01 $ * program rztog4 ************************************************************************ diff --git a/source/g3tog4/src/tog4.F b/source/g3tog4/src/tog4.F index 6172f3ab78..f7faf5d1b0 100644 --- a/source/g3tog4/src/tog4.F +++ b/source/g3tog4/src/tog4.F @@ -25,7 +25,7 @@ * * * $Id: tog4.F,v 1.5 2006/06/29 18:15:21 gunter Exp $ -* GEANT4 tag $Name: geant4-09-00 $ +* GEANT4 tag $Name: geant4-09-01 $ * subroutine tog4 ************************************************************************ diff --git a/source/geometry/biasing/History b/source/geometry/biasing/History index 7f11c74317..4f84a36715 100644 --- a/source/geometry/biasing/History +++ b/source/geometry/biasing/History @@ -1,4 +1,4 @@ -$Id: History,v 1.43 2007/06/04 13:05:14 ahoward Exp $ +$Id: History,v 1.45 2007/11/09 15:22:38 ahoward Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,15 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +November 9th, 2007 A.Howard geombias-V09-00-01 + - Revised search algorithm to Weight/UpperBound + 1. + +November 9th, 2007 A.Howard geombias-V09-00-00 + - Modified WeightWindow algorithm according to Thomas Booth's + recommendation (MCNP author). In order to not introduce extra variance + in the case of splitting to the survival weight when the weight is + above the upper weight window - modified G4WeightWindowAlgorithm.cc + June 4th, 2007 A.Howard geombias-V08-03-02 - Put back some missing store and scoring classes: G4IStore, G4VCellScorerstore, G4VCellScorer diff --git a/source/geometry/biasing/include/G4GeometryCell.hh b/source/geometry/biasing/include/G4GeometryCell.hh index 73d1d89b94..8a4411baba 100644 --- a/source/geometry/biasing/include/G4GeometryCell.hh +++ b/source/geometry/biasing/include/G4GeometryCell.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeometryCell.hh,v 1.6 2006/06/29 18:15:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4GeometryCell diff --git a/source/geometry/biasing/include/G4GeometryCellComp.hh b/source/geometry/biasing/include/G4GeometryCellComp.hh index 126ff8873e..ce1a072465 100644 --- a/source/geometry/biasing/include/G4GeometryCellComp.hh +++ b/source/geometry/biasing/include/G4GeometryCellComp.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeometryCellComp.hh,v 1.2 2006/06/29 18:15:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4GeometryCellComp diff --git a/source/geometry/biasing/include/G4GeometryCellImportance.hh b/source/geometry/biasing/include/G4GeometryCellImportance.hh index 7ffbb51436..ac8e87eece 100644 --- a/source/geometry/biasing/include/G4GeometryCellImportance.hh +++ b/source/geometry/biasing/include/G4GeometryCellImportance.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeometryCellImportance.hh,v 1.4 2006/06/29 18:15:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4GeometryCellImportance diff --git a/source/geometry/biasing/include/G4GeometryCellStep.hh b/source/geometry/biasing/include/G4GeometryCellStep.hh index 0647c3f1bf..972f31aad2 100644 --- a/source/geometry/biasing/include/G4GeometryCellStep.hh +++ b/source/geometry/biasing/include/G4GeometryCellStep.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeometryCellStep.hh,v 1.2 2006/06/29 18:15:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4GeometryCellStep diff --git a/source/geometry/biasing/include/G4GeometryCellStepStream.hh b/source/geometry/biasing/include/G4GeometryCellStepStream.hh index bdce6484fd..3486e154ac 100644 --- a/source/geometry/biasing/include/G4GeometryCellStepStream.hh +++ b/source/geometry/biasing/include/G4GeometryCellStepStream.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeometryCellStepStream.hh,v 1.3 2006/06/29 18:15:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Declarations diff --git a/source/geometry/biasing/include/G4GeometryCellWeight.hh b/source/geometry/biasing/include/G4GeometryCellWeight.hh index 003edac325..242835c784 100644 --- a/source/geometry/biasing/include/G4GeometryCellWeight.hh +++ b/source/geometry/biasing/include/G4GeometryCellWeight.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeometryCellWeight.hh,v 1.3 2006/06/29 18:16:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4GeometryCellWeight diff --git a/source/geometry/biasing/include/G4IStore.hh b/source/geometry/biasing/include/G4IStore.hh index d05482257a..f86b2c0982 100644 --- a/source/geometry/biasing/include/G4IStore.hh +++ b/source/geometry/biasing/include/G4IStore.hh @@ -25,7 +25,7 @@ // // // $Id: G4IStore.hh,v 1.10 2006/06/29 18:16:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4IStore diff --git a/source/geometry/biasing/include/G4ImportanceAlgorithm.hh b/source/geometry/biasing/include/G4ImportanceAlgorithm.hh index d139f6c5ba..baf1a517a8 100644 --- a/source/geometry/biasing/include/G4ImportanceAlgorithm.hh +++ b/source/geometry/biasing/include/G4ImportanceAlgorithm.hh @@ -25,7 +25,7 @@ // // // $Id: G4ImportanceAlgorithm.hh,v 1.7 2006/06/29 18:16:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4ImportanceAlgorithm diff --git a/source/geometry/biasing/include/G4Nsplit_Weight.hh b/source/geometry/biasing/include/G4Nsplit_Weight.hh index 32eedd8a76..72105e8a14 100644 --- a/source/geometry/biasing/include/G4Nsplit_Weight.hh +++ b/source/geometry/biasing/include/G4Nsplit_Weight.hh @@ -25,7 +25,7 @@ // // // $Id: G4Nsplit_Weight.hh,v 1.11 2006/06/29 18:16:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Nsplit_Weight diff --git a/source/geometry/biasing/include/G4VCellScorer.hh b/source/geometry/biasing/include/G4VCellScorer.hh index 4dff1de650..6aeb73b7ca 100644 --- a/source/geometry/biasing/include/G4VCellScorer.hh +++ b/source/geometry/biasing/include/G4VCellScorer.hh @@ -25,7 +25,7 @@ // // // $Id: G4VCellScorer.hh,v 1.7 2006/06/29 18:16:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4VCellScorer diff --git a/source/geometry/biasing/include/G4VCellScorerStore.hh b/source/geometry/biasing/include/G4VCellScorerStore.hh index a6da90b1c3..02212ce275 100644 --- a/source/geometry/biasing/include/G4VCellScorerStore.hh +++ b/source/geometry/biasing/include/G4VCellScorerStore.hh @@ -25,7 +25,7 @@ // // // $Id: G4VCellScorerStore.hh,v 1.7 2006/06/29 18:16:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4VCellScorerStore diff --git a/source/geometry/biasing/include/G4VGCellFinder.hh b/source/geometry/biasing/include/G4VGCellFinder.hh index 9e9ef8f6ba..3a47b8dfcf 100644 --- a/source/geometry/biasing/include/G4VGCellFinder.hh +++ b/source/geometry/biasing/include/G4VGCellFinder.hh @@ -25,7 +25,7 @@ // // // $Id: G4VGCellFinder.hh,v 1.2 2006/06/29 18:16:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4VGCellFinder diff --git a/source/geometry/biasing/include/G4VIStore.hh b/source/geometry/biasing/include/G4VIStore.hh index 05f53d12e7..22c66cdc43 100644 --- a/source/geometry/biasing/include/G4VIStore.hh +++ b/source/geometry/biasing/include/G4VIStore.hh @@ -25,7 +25,7 @@ // // // $Id: G4VIStore.hh,v 1.9 2006/06/29 18:16:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4VIStore diff --git a/source/geometry/biasing/include/G4VImportanceAlgorithm.hh b/source/geometry/biasing/include/G4VImportanceAlgorithm.hh index f4ed37d2d4..557ffa740d 100644 --- a/source/geometry/biasing/include/G4VImportanceAlgorithm.hh +++ b/source/geometry/biasing/include/G4VImportanceAlgorithm.hh @@ -25,7 +25,7 @@ // // // $Id: G4VImportanceAlgorithm.hh,v 1.8 2006/06/29 18:16:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4VImportanceAlgorithm diff --git a/source/geometry/biasing/include/G4VImportanceSplitExaminer.hh b/source/geometry/biasing/include/G4VImportanceSplitExaminer.hh index bc8474f381..1b600a7821 100644 --- a/source/geometry/biasing/include/G4VImportanceSplitExaminer.hh +++ b/source/geometry/biasing/include/G4VImportanceSplitExaminer.hh @@ -25,7 +25,7 @@ // // // $Id: G4VImportanceSplitExaminer.hh,v 1.5 2006/06/29 18:16:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4VImportanceSplitExaminer diff --git a/source/geometry/biasing/include/G4VWeightWindowAlgorithm.hh b/source/geometry/biasing/include/G4VWeightWindowAlgorithm.hh index ad25b99e22..c540c9f70a 100644 --- a/source/geometry/biasing/include/G4VWeightWindowAlgorithm.hh +++ b/source/geometry/biasing/include/G4VWeightWindowAlgorithm.hh @@ -25,7 +25,7 @@ // // // $Id: G4VWeightWindowAlgorithm.hh,v 1.8 2006/06/29 18:16:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4VWeightWindowAlgorithm diff --git a/source/geometry/biasing/include/G4VWeightWindowStore.hh b/source/geometry/biasing/include/G4VWeightWindowStore.hh index 798d6e0669..0f89eb2a9e 100644 --- a/source/geometry/biasing/include/G4VWeightWindowStore.hh +++ b/source/geometry/biasing/include/G4VWeightWindowStore.hh @@ -25,7 +25,7 @@ // // // $Id: G4VWeightWindowStore.hh,v 1.3 2006/06/29 18:16:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4VWeightWindowStore diff --git a/source/geometry/biasing/include/G4WeightWindowAlgorithm.hh b/source/geometry/biasing/include/G4WeightWindowAlgorithm.hh index 4d327904e5..a97d43983e 100644 --- a/source/geometry/biasing/include/G4WeightWindowAlgorithm.hh +++ b/source/geometry/biasing/include/G4WeightWindowAlgorithm.hh @@ -25,7 +25,7 @@ // // // $Id: G4WeightWindowAlgorithm.hh,v 1.7 2006/06/29 18:16:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4WeightWindowAlgorithm diff --git a/source/geometry/biasing/include/G4WeightWindowStore.hh b/source/geometry/biasing/include/G4WeightWindowStore.hh index c801b3ab9f..cf0ba9c9f3 100644 --- a/source/geometry/biasing/include/G4WeightWindowStore.hh +++ b/source/geometry/biasing/include/G4WeightWindowStore.hh @@ -25,7 +25,7 @@ // // // $Id: G4WeightWindowStore.hh,v 1.3 2006/06/29 18:17:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4WeightWindowStore diff --git a/source/geometry/biasing/src/G4GeometryCell.cc b/source/geometry/biasing/src/G4GeometryCell.cc index ad82ca21a1..1cd61c2e5c 100644 --- a/source/geometry/biasing/src/G4GeometryCell.cc +++ b/source/geometry/biasing/src/G4GeometryCell.cc @@ -25,7 +25,7 @@ // // // $Id: G4GeometryCell.cc,v 1.6 2006/06/29 18:17:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4GeometryCellComp.cc b/source/geometry/biasing/src/G4GeometryCellComp.cc index c310f921fe..9f1ec081be 100644 --- a/source/geometry/biasing/src/G4GeometryCellComp.cc +++ b/source/geometry/biasing/src/G4GeometryCellComp.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4GeometryCellComp.cc,v 1.4 2006/06/29 18:17:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4GeometryCellImportance.cc b/source/geometry/biasing/src/G4GeometryCellImportance.cc index 3e1fd62857..90c71123e2 100644 --- a/source/geometry/biasing/src/G4GeometryCellImportance.cc +++ b/source/geometry/biasing/src/G4GeometryCellImportance.cc @@ -25,7 +25,7 @@ // // // $Id: G4GeometryCellImportance.cc,v 1.5 2006/06/29 18:17:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4GeometryCellStep.cc b/source/geometry/biasing/src/G4GeometryCellStep.cc index dc88a4db0f..2f4526f5d2 100644 --- a/source/geometry/biasing/src/G4GeometryCellStep.cc +++ b/source/geometry/biasing/src/G4GeometryCellStep.cc @@ -25,7 +25,7 @@ // // // $Id: G4GeometryCellStep.cc,v 1.2 2006/06/29 18:17:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4GeometryCellStepStream.cc b/source/geometry/biasing/src/G4GeometryCellStepStream.cc index bfd2a536f1..09fbfa76b3 100644 --- a/source/geometry/biasing/src/G4GeometryCellStepStream.cc +++ b/source/geometry/biasing/src/G4GeometryCellStepStream.cc @@ -25,7 +25,7 @@ // // // $Id: G4GeometryCellStepStream.cc,v 1.3 2006/06/29 18:17:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4IStore.cc b/source/geometry/biasing/src/G4IStore.cc index acf63949de..dea5a1d1a6 100644 --- a/source/geometry/biasing/src/G4IStore.cc +++ b/source/geometry/biasing/src/G4IStore.cc @@ -25,7 +25,7 @@ // // // $Id: G4IStore.cc,v 1.14 2006/06/29 18:17:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4ImportanceAlgorithm.cc b/source/geometry/biasing/src/G4ImportanceAlgorithm.cc index 9e1db8bf4d..e93d567926 100644 --- a/source/geometry/biasing/src/G4ImportanceAlgorithm.cc +++ b/source/geometry/biasing/src/G4ImportanceAlgorithm.cc @@ -25,7 +25,7 @@ // // // $Id: G4ImportanceAlgorithm.cc,v 1.14 2006/06/29 18:17:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4Nsplit_Weight.cc b/source/geometry/biasing/src/G4Nsplit_Weight.cc index 63bc3033bb..fc74bde744 100644 --- a/source/geometry/biasing/src/G4Nsplit_Weight.cc +++ b/source/geometry/biasing/src/G4Nsplit_Weight.cc @@ -25,7 +25,7 @@ // // // $Id: G4Nsplit_Weight.cc,v 1.10 2006/06/29 18:17:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4VCellScorer.cc b/source/geometry/biasing/src/G4VCellScorer.cc index 738323eed8..418295c7c5 100644 --- a/source/geometry/biasing/src/G4VCellScorer.cc +++ b/source/geometry/biasing/src/G4VCellScorer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VCellScorer.cc,v 1.6 2006/06/29 18:17:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4VCellScorerStore.cc b/source/geometry/biasing/src/G4VCellScorerStore.cc index dbf5430bbd..62fde6c54d 100644 --- a/source/geometry/biasing/src/G4VCellScorerStore.cc +++ b/source/geometry/biasing/src/G4VCellScorerStore.cc @@ -25,7 +25,7 @@ // // // $Id: G4VCellScorerStore.cc,v 1.4 2006/06/29 18:17:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4VGCellFinder.cc b/source/geometry/biasing/src/G4VGCellFinder.cc index 5f13eef621..c7d0827a4c 100644 --- a/source/geometry/biasing/src/G4VGCellFinder.cc +++ b/source/geometry/biasing/src/G4VGCellFinder.cc @@ -25,7 +25,7 @@ // // // $Id: G4VGCellFinder.cc,v 1.2 2006/06/29 18:17:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4VIStore.cc b/source/geometry/biasing/src/G4VIStore.cc index ded50d3633..21742f1da0 100644 --- a/source/geometry/biasing/src/G4VIStore.cc +++ b/source/geometry/biasing/src/G4VIStore.cc @@ -25,7 +25,7 @@ // // // $Id: G4VIStore.cc,v 1.2 2006/06/29 18:17:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4VImportanceAlgorithm.cc b/source/geometry/biasing/src/G4VImportanceAlgorithm.cc index dc37b76586..4680b6de60 100644 --- a/source/geometry/biasing/src/G4VImportanceAlgorithm.cc +++ b/source/geometry/biasing/src/G4VImportanceAlgorithm.cc @@ -25,7 +25,7 @@ // // // $Id: G4VImportanceAlgorithm.cc,v 1.2 2006/06/29 18:17:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4VImportanceSplitExaminer.cc b/source/geometry/biasing/src/G4VImportanceSplitExaminer.cc index 6b432a730b..1dd552dd49 100644 --- a/source/geometry/biasing/src/G4VImportanceSplitExaminer.cc +++ b/source/geometry/biasing/src/G4VImportanceSplitExaminer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VImportanceSplitExaminer.cc,v 1.2 2006/06/29 18:17:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4VWeightWindowAlgorithm.cc b/source/geometry/biasing/src/G4VWeightWindowAlgorithm.cc index 61ed48e85d..b90eaab180 100644 --- a/source/geometry/biasing/src/G4VWeightWindowAlgorithm.cc +++ b/source/geometry/biasing/src/G4VWeightWindowAlgorithm.cc @@ -25,7 +25,7 @@ // // // $Id: G4VWeightWindowAlgorithm.cc,v 1.2 2006/06/29 18:17:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4VWeightWindowStore.cc b/source/geometry/biasing/src/G4VWeightWindowStore.cc index 9caa742cb8..5453ab63aa 100644 --- a/source/geometry/biasing/src/G4VWeightWindowStore.cc +++ b/source/geometry/biasing/src/G4VWeightWindowStore.cc @@ -25,7 +25,7 @@ // // // $Id: G4VWeightWindowStore.cc,v 1.3 2006/06/29 18:17:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/biasing/src/G4WeightWindowAlgorithm.cc b/source/geometry/biasing/src/G4WeightWindowAlgorithm.cc index 69bc42ce1d..206de80ff2 100644 --- a/source/geometry/biasing/src/G4WeightWindowAlgorithm.cc +++ b/source/geometry/biasing/src/G4WeightWindowAlgorithm.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4WeightWindowAlgorithm.cc,v 1.8 2006/06/29 18:18:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4WeightWindowAlgorithm.cc,v 1.11 2007/11/09 15:43:07 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -66,29 +66,38 @@ G4WeightWindowAlgorithm::Calculate(G4double init_w, if (init_w > upperWeight) { // splitting - G4double wi_ws = init_w/survivalWeight; - G4int int_wi_ws = static_cast(wi_ws); + //TB G4double wi_ws = init_w/survivalWeight; + //TB + G4double temp_wi_ws = init_w/upperWeight; + G4int split_i = static_cast(temp_wi_ws); + if(split_i != temp_wi_ws) split_i++; + G4double wi_ws = init_w/split_i; + + //TB +//TB G4int int_wi_ws = static_cast(wi_ws); // values in case integer mode or in csae of double // mode and the lower number of splits will be diced - nw.fN = int_wi_ws; - nw.fW = survivalWeight; + //TB nw.fN = int_wi_ws; + //TB nw.fW = survivalWeight; + nw.fN = split_i; + nw.fW = wi_ws; - if (wi_ws <= fMaxNumberOfSplits) { - if (wi_ws > int_wi_ws) { - // double mode - G4double p2 = wi_ws - int_wi_ws; - G4double r = G4UniformRand(); - if (r int_wi_ws) { +//TB // double mode +//TB G4double p2 = wi_ws - int_wi_ws; +//TB G4double r = G4UniformRand(); +//TB if (r 2 pi !! + // If( h/R < pi) use G4LineSection::DistLine + // Else DistChord=R_helix + // + G4double distChord; + G4double Ang_curve=GetAngCurve(); + + + if(Ang_curve<=pi){ + distChord=GetRadHelix()*(1-std::cos(0.5*Ang_curve)); + } + else + if(Ang_curve0){ PrintCalls();}; } void G4HelixMixedStepper::Stepper( const G4double yInput[7], const G4double dydx[7], @@ -74,33 +91,34 @@ void G4HelixMixedStepper::Stepper( const G4double yInput[7], R_1=std::abs(GetInverseCurve(velocityVal,Bmag)); Ang_curve=R_1*Step; SetAngCurve(Ang_curve); - fLastStepSize=Step; + SetCurve(std::abs(1/R_1)); + if(Ang_curve<0.33*pi){ + fNumCallsRK4++; + fRK4Stepper->Stepper(yInput,dydx,Step,yOut,yErr); - fRK4Stepper->Stepper(yInput,dydx,Step,yOut,yErr); } else{ + fNumCallsHelix++; const G4int nvar = 6 ; G4int i; G4double yTemp[7], yIn[7] ; + G4double yTemp2[7]; G4ThreeVector Bfld_midpoint; // Saving yInput because yInput and yOut can be aliases for same array for(i=0;i0)G4cout<<"G4ExplicitEuler"<0)G4cout<<"G4ImplicitEuler"<0)G4cout<<"G4SimpleRunge"<0)G4cout<<"G4SimpleHeum"<0)G4cout<<"G4ClassicalRK4"<0)G4cout<<"G4HelixExplicitEuler"<0)G4cout<<"G4HelixImplicitEuler"<0)G4cout<<"G4HelixSimpleRunge"<0)G4cout<<"G4CashKarpRKF45"<0)G4cout<<"G4ExactHelixStepper"<0)G4cout<<"G4RKG3_Stepper"< approc_limit ) { - SinT2 = std::sin(0.5 * Theta); - CosT2 = std::cos(0.5 * Theta); - // SinT = std::sin(Theta); - // CosT = std::cos(Theta); - SinT = 2.0 * SinT2 * CosT2; - CosT = 1.0 - 2.0 * SinT2 * SinT2; - } else { - G4double Theta2 = Theta*Theta; - G4double Theta3 = Theta2 * Theta; - G4double Theta4 = Theta2 * Theta2; - SinT = Theta - 1.0/6.0 * Theta3; - CosT = 1 - 0.5 * Theta2 + 1.0/24.0 * Theta4; - SinT2 = 0.5 * Theta - 1.0/48.0 * Theta3; - CosT2 = 1 - 0.125 * Theta2 + 1.0/384 * Theta4; - } + if( std::fabs(Theta) > approc_limit ) + { + SinT = std::sin(Theta); + CosT = std::cos(Theta); + } + else + { + G4double Theta2 = Theta*Theta; + G4double Theta3 = Theta2 * Theta; + G4double Theta4 = Theta2 * Theta2; + SinT = Theta - 1.0/6.0 * Theta3; + CosT = 1 - 0.5 * Theta2 + 1.0/24.0 * Theta4; + } - // the actual "rotation" + // the actual "rotation" - G4double R = 1.0 / R_1; - // positionMove = h * ( CosT2 * vperp + SinT2 * B_x_P + vpar ); - positionMove = R * ( SinT * vperp + (1-CosT) * B_x_P) + h * vpar; - endTangent = (CosT * vperp + SinT * B_x_P + vpar); + G4double R = 1.0 / R_1; - // Store the resulting position and tangent - yHelix[0] = yIn[0] + positionMove.x(); - yHelix[1] = yIn[1] + positionMove.y(); - yHelix[2] = yIn[2] + positionMove.z(); - - yHelix[3] = velocityVal * endTangent.x(); - yHelix[4] = velocityVal * endTangent.y(); - yHelix[5] = velocityVal * endTangent.z(); + positionMove = R * ( SinT * vperp + (1-CosT) * B_x_P) + h * vpar; + endTangent = CosT * vperp + SinT * B_x_P + vpar; - // Store and/or calculate parameters for chord distance. - - G4ThreeVector B_x_P_x_B = B_x_P.cross(Bnorm); - G4double ptan=B_x_P_x_B.dot(initVelocity); - G4double particleCharge = fPtrMagEqOfMot->FCof() / (eplus*c_light); - R_Helix =std::abs( ptan/(fUnitConstant * particleCharge*Bmag)); + // Store the resulting position and tangent + + yHelix[0] = yIn[0] + positionMove.x(); + yHelix[1] = yIn[1] + positionMove.y(); + yHelix[2] = yIn[2] + positionMove.z(); + yHelix[3] = velocityVal * endTangent.x(); + yHelix[4] = velocityVal * endTangent.y(); + yHelix[5] = velocityVal * endTangent.z(); + + // Store 2*h step Helix if exist + + if(yHelix2) + { + SinT2 = 2.0 * SinT * CosT; + CosT2 = 1.0 - 2.0 * SinT * SinT; + endTangent = (CosT2 * vperp + SinT2 * B_x_P + vpar); + positionMove = R * ( SinT2 * vperp + (1-CosT2) * B_x_P) + h*2 * vpar; + + yHelix2[0] = yIn[0] + positionMove.x(); + yHelix2[1] = yIn[1] + positionMove.y(); + yHelix2[2] = yIn[2] + positionMove.z(); + yHelix2[3] = velocityVal * endTangent.x(); + yHelix2[4] = velocityVal * endTangent.y(); + yHelix2[5] = velocityVal * endTangent.z(); + } + + // Store and/or calculate parameters for chord distance + + G4double ptan=velocityVal*B_v_P; + + G4double particleCharge = fPtrMagEqOfMot->FCof() / (eplus*c_light); + R_Helix =std::abs( ptan/(fUnitConstant * particleCharge*Bmag)); - SetAngCurve(std::abs(Theta)); - SetCurve(std::abs(R)); - SetRadHelix(R_Helix); - - + SetAngCurve(std::abs(Theta)); + SetCurve(std::abs(R)); + SetRadHelix(R_Helix); } } @@ -172,14 +189,15 @@ G4MagHelicalStepper::AdvanceHelix( const G4double yIn[], void G4MagHelicalStepper::Stepper( const G4double yInput[], - const G4double*, - G4double hstep, - G4double yOut[], - G4double yErr[] ) + const G4double*, + G4double hstep, + G4double yOut[], + G4double yErr[] ) { - const G4int nvar = 6 ; + const G4int nvar = 6; G4int i; + // correction for Richardson Extrapolation. // G4double correction = 1. / ( (1 << IntegratorOrder()) -1 ); @@ -188,63 +206,53 @@ G4MagHelicalStepper::Stepper( const G4double yInput[], // Saving yInput because yInput and yOut can be aliases for same array - for(i=0;i 1 ) { - // It is unclear whether it is possible to - // use the Richardson Extrapolation to increase accuracey by 1 order - for(i=0;i pi !! - // Method DistLine is good only for < pi + // Method DistLine is good only for < pi G4double Ang=GetAngCurve(); - - if(Ang 0 - if( hstep <= 0.0 ) { - if(hstep==0.0){ G4cerr << " G4MagIntegratorDriver::AccurateAdvance(): Hstep is " << hstep << G4endl; + if( hstep <= 0.0 ) + { + if(hstep==0.0) + { + G4cerr << "WARNING - G4MagIntegratorDriver::AccurateAdvance()" << G4endl + << " Proposed step is zero; hstep = " << hstep + << " !" << G4endl; return succeeded; } - else{ - G4Exception("G4MagInt_Driver::AccurateAdvance()", - "Requested Integration Step is negative: it must be positive", - FatalException, "Requested-Step-is-Negative"); + else + { + G4cerr << "ERROR - G4MagIntegratorDriver::AccurateAdvance()" << G4endl + << " Proposed step is negative; hstep = " << hstep + << " !" << G4endl; + G4Exception("G4MagInt_Driver::AccurateAdvance()", + "InvalidCall", EventMustBeAborted, + "Requested step cannot be negative! Aborting event."); + return false; } } diff --git a/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc b/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc index 09333cc516..8b4d7d074c 100644 --- a/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc +++ b/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc @@ -25,7 +25,7 @@ // // // $Id: G4MagIntegratorStepper.cc,v 1.11 2006/06/29 18:24:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- diff --git a/source/geometry/magneticfield/src/G4Mag_EqRhs.cc b/source/geometry/magneticfield/src/G4Mag_EqRhs.cc index fc314eaec3..148f424cc8 100644 --- a/source/geometry/magneticfield/src/G4Mag_EqRhs.cc +++ b/source/geometry/magneticfield/src/G4Mag_EqRhs.cc @@ -25,7 +25,7 @@ // // // $Id: G4Mag_EqRhs.cc,v 1.11 2006/06/29 18:24:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This is the standard right-hand side for equation of motion // in a pure Magnetic Field . diff --git a/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc b/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc index ab41381864..6d63dc7fa8 100644 --- a/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc +++ b/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc @@ -25,7 +25,7 @@ // // // $Id: G4Mag_SpinEqRhs.cc,v 1.12 2006/06/29 18:24:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // This is the standard right-hand side for equation of motion. // This version of the right-hand side includes the three components diff --git a/source/geometry/magneticfield/src/G4Mag_UsualEqRhs.cc b/source/geometry/magneticfield/src/G4Mag_UsualEqRhs.cc index 5f7ee25163..115360de86 100644 --- a/source/geometry/magneticfield/src/G4Mag_UsualEqRhs.cc +++ b/source/geometry/magneticfield/src/G4Mag_UsualEqRhs.cc @@ -25,7 +25,7 @@ // // // $Id: G4Mag_UsualEqRhs.cc,v 1.12 2006/06/29 18:24:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // This is the 'standard' right-hand side for the equation of motion diff --git a/source/geometry/magneticfield/src/G4MagneticField.cc b/source/geometry/magneticfield/src/G4MagneticField.cc index 6fb8ee1bcc..cf2e3d2801 100644 --- a/source/geometry/magneticfield/src/G4MagneticField.cc +++ b/source/geometry/magneticfield/src/G4MagneticField.cc @@ -25,7 +25,7 @@ // // // $Id: G4MagneticField.cc,v 1.3 2006/06/29 18:24:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- diff --git a/source/geometry/magneticfield/src/G4QuadrupoleMagField.cc b/source/geometry/magneticfield/src/G4QuadrupoleMagField.cc index eb5edce233..31b76836d9 100644 --- a/source/geometry/magneticfield/src/G4QuadrupoleMagField.cc +++ b/source/geometry/magneticfield/src/G4QuadrupoleMagField.cc @@ -25,7 +25,7 @@ // // // $Id: G4QuadrupoleMagField.cc,v 1.4 2006/06/29 18:24:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- diff --git a/source/geometry/magneticfield/src/G4RKG3_Stepper.cc b/source/geometry/magneticfield/src/G4RKG3_Stepper.cc index 5d7fe6da80..2227a39818 100644 --- a/source/geometry/magneticfield/src/G4RKG3_Stepper.cc +++ b/source/geometry/magneticfield/src/G4RKG3_Stepper.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4RKG3_Stepper.cc,v 1.14 2007/05/18 12:44:28 tnikitin Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4RKG3_Stepper.cc,v 1.15 2007/08/21 10:17:41 tnikitin Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- @@ -65,6 +65,7 @@ void G4RKG3_Stepper::Stepper( const G4double yInput[7], // Do two half steps StepNoErr(yIn, dydx,h, yTemp,B) ; + //Store Bfld for DistChord Calculation for(i=0;i<3;i++)BfldIn[i]=B[i]; @@ -136,25 +137,23 @@ void G4RKG3_Stepper::StepNoErr(const G4double tIn[7], // Copy and edit the routine above, to delete alpha2, beta2, ... G4double K1[7],K2[7],K3[7],K4[7] ; G4double tTemp[7], yderiv[6] ; + // Need Momentum value to give correct values to the coefficients in equation // Integration on unit velocity, but tIn[3,4,5] is momentum - G4double mom; + G4double mom,inverse_mom; G4int i ; - -#ifdef END_CODE_G3STEPPER - G4Exception(" G4RKG3_Stepper::StepNoErr(): method to be no longer used."); -#else + const G4double c1=0.5,c2=0.125,c3=1./6.; // GetEquationOfMotion()->EvaluateRhsReturnB(tIn,dydx,B1) ; // Correction for momentum not a velocity // Need the protection !!! must be not zero mom=std::sqrt(tIn[3]*tIn[3]+tIn[4]*tIn[4]+tIn[5]*tIn[5]); - + inverse_mom=1./mom; for(i=0;i<3;i++) { - K1[i] = Step * dydx[i+3]/mom; - tTemp[i] = tIn[i] + Step*(0.5*tIn[i+3]/mom + 0.125*K1[i]) ; - tTemp[i+3] = tIn[i+3] + 0.5*K1[i]*mom ; + K1[i] = Step * dydx[i+3]*inverse_mom; + tTemp[i] = tIn[i] + Step*(c1*tIn[i+3]*inverse_mom + c2*K1[i]) ; + tTemp[i+3] = tIn[i+3] + c1*K1[i]*mom ; } @@ -163,8 +162,8 @@ void G4RKG3_Stepper::StepNoErr(const G4double tIn[7], for(i=0;i<3;i++) { - K2[i] = Step * yderiv[i+3]/mom; - tTemp[i+3] = tIn[i+3] + 0.5*K2[i]*mom ; + K2[i] = Step * yderiv[i+3]*inverse_mom; + tTemp[i+3] = tIn[i+3] + c1*K2[i]*mom ; } // Given B, calculate yderiv ! @@ -172,8 +171,8 @@ void G4RKG3_Stepper::StepNoErr(const G4double tIn[7], for(i=0;i<3;i++) { - K3[i] = Step * yderiv[i+3]/mom; - tTemp[i] = tIn[i] + Step*(tIn[i+3]/mom + 0.5*K3[i]) ; + K3[i] = Step * yderiv[i+3]*inverse_mom; + tTemp[i] = tIn[i] + Step*(tIn[i+3]*inverse_mom + c1*K3[i]) ; tTemp[i+3] = tIn[i+3] + K3[i]*mom ; } @@ -184,80 +183,35 @@ void G4RKG3_Stepper::StepNoErr(const G4double tIn[7], for(i=0;i<3;i++) // Output trajectory vector { - K4[i] = Step * yderiv[i+3]/mom; - tOut[i] = tIn[i] + Step*(tIn[i+3]/mom + (K1[i] + K2[i] + K3[i])/6.0) ; - tOut[i+3] = tIn[i+3] + mom*(K1[i] + 2*K2[i] + 2*K3[i] +K4[i])/6.0 ; + K4[i] = Step * yderiv[i+3]*inverse_mom; + tOut[i] = tIn[i] + Step*(tIn[i+3]*inverse_mom+ (K1[i] + K2[i] + K3[i])*c3) ; + tOut[i+3] = tIn[i+3] + mom*(K1[i] + 2*K2[i] + 2*K3[i] +K4[i])*c3 ; } // NormaliseTangentVector( tOut ); -#endif + } + // --------------------------------------------------------------------------- - -G4double G4RKG3_Stepper::DistChord() const -{ - // Implementation : must check whether h/R > pi !! - // If( h/R < pi) use G4LineSection::DistLine - // Else use DistChord=R_helix - G4double distChord,distLine; - - //Calculation of R_helix and R_curv - G4double R_helix; - G4double R_curv; - G4double H_helix=hStep; - G4double Bmag=BfldIn.mag(); - - G4ThreeVector initVelocity= fpInitial; - G4double velocityVal = initVelocity.mag(); - G4ThreeVector initTangent = (1.0/velocityVal) * initVelocity; // .unit(); - - const G4double fUnitConstant = 0.299792458 * (GeV/(tesla*m)); - G4double particleCharge = fPtrMagEqOfMot->FCof() / (eplus*c_light); - G4double fCoefficient = (fUnitConstant ) * particleCharge; - - // for too small field there is no curvature - - if( Bmag>1e-12 ) { - - // Bnorm = Bfld.unit(); - G4ThreeVector Bnorm = (1.0/Bmag)*BfldIn; - - // calculate the direction of the force + + G4double G4RKG3_Stepper::DistChord() const + { + // Soon: must check whether h/R > 2 pi !! + // Method below is good only for < 2 pi + G4double distChord,distLine; - G4ThreeVector B_x_P = Bnorm.cross(initTangent); - - // parallel and perp vectors - - G4ThreeVector B_x_P_x_B = B_x_P.cross(Bnorm); - G4double ptan=B_x_P_x_B.dot(initVelocity); - - R_helix =std::abs(( 1./fCoefficient)* ptan/Bmag); - R_curv=std::abs(( 1./fCoefficient)* velocityVal/Bmag); - - // G4cout<<"Bfld="<DistanceToOut() instead + of ComputeStep() in ComputeStepSkippingEqualMaterials(). +- Some cleanup and proper formatting of error/warning messages. + +November 2nd, 2007 - J.Apostolakis (geomnav-V09-00-06) +---------------------------------- +- Merging fixes in "geomnav-V09-00-03b" and "geomnav-V09-00-03c" on top + of tag "geomnav-V09-00-05". + +November 2nd, 2007 - J.Apostolakis (geomnav-V09-00-03c) +---------------------------------- +- G4PathFinder: + o Added setting of 'fNoGeometriesLimiting' in DoNextCurvedStep(). + o Check to verify that 'fNoGeometriesLimiting' is set by DoNext*Step methods. + o Revised data type of 'fNoGeometriesLimiting' to be a int, so that < 0 + shows 'unset'. +- G4PropagatorInField: + o Fixes for compilation of code under G4DEBUG_FIELD (problem report #982). + o Added extra check of method LocateIntersectionPoint() arguments. +- Tag based on "geomnav-V09-00-03b". + +October 29th, 2007 - J.Apostolakis (geomnav-V09-00-03b) +---------------------------------- +- G4PathFinder: first fix for problem of another process shortening steps + (between calls to ComputeStep by different processes in same step.) + I.e. First call to ComputeStep (geom 1) has proposed Step = 3.0 cm + Next call to ComputeStep (geom 2) has proposed Step = 1.0 cm + (e.g. Multiple Scattering) +- Tag based on "geomnav-V09-00-03a". + +October 24th, 2007 - J.Apostolakis (geomnav-V09-00-05) +---------------------------------- +- Merging fixes introduced in "geomnav-V09-00-03a" on top of + "geomnav-V09-00-04". + +October 24th, 2007 - J.Apostolakis (geomnav-V09-00-03a) +---------------------------------- +- G4PathFinder: fix to now set 'fNoGeometriesLimiting' in DoNextLinearStep() + when WhichLimited() is not called, i.e. in case of one navigator + optimisation. +- Tag based on "geomnav-V09-00-03". + +October 18th, 2007 - G.Cosmo (geomnav-V09-00-04) +---------------------------- +- Added new specific navigation for regular structures and phantoms. + New classes: G4RegularNavigation, G4PhantomParameterisation (by P.Arce). + Added cases to G4Navigator. Added dependency on "materials" module. + +October 12th, 2007 - J.Apostolakis (geomnav-V09-00-03) +---------------------------------- +- G4PathFinder: added new methods GetNumberGeometriesLimitingStep() + and GetMinimumStep() needed by G4CoupledTransportation to see whether + to relocate. + +September 25th, 2007 - G.Cosmo (geomnav-V09-00-02) +------------------------------ +- Some code cleanup in G4PathFinder. Switch off additional optimisation + for safety in method DoNextLinearStep(). +- Set 'fRecomputeFactor' in G4SafetyHelper to 0.0, to switch off internal + optimisation and allow for reproducibility of steps (A.Howard). + +July 12th, 2007 - J.Apostolakis (geomnav-V09-00-01) +------------------------------- +- Restores fixes/improvements of geomnav-V08-03-07 +- G4PathFinder: includes fix for result of ObtainSafety(), used in + CoupledTransportation. + +July 12th, 2007 - J.Apostolakis (geomnav-V09-00-00) +------------------------------- +- G4PathFinder: + o Include correction to signature of method PrepareNewTrack(). + (This was done on a branch for this class in order to keep only + development of geomnav-V08-03-06) +- G4PropagatorInField: + o Included revisions and fixes for G4PropagatorInField of June 8th. +- This tag is based on "geomnav-V08-03-06" and does NOT include the + revisions of "geomnav-V08-03-07". + +July 5th, 2007 - G.Cosmo +------------------------ +- G4PathFinder: + o Corrected signature to method PrepareNewTrack(). + Resolves linking problems detected on SUN-CC platform. +- Changes included in tag "geomnav-V08-03-02c", included in relase 9.0.p01. + +June 8th, 2007 - T.Nikitina --------------------------- - G4PropagatorInField: o Put in the constructor creation of array of FieldTracks used in LocateInterSectionPoint(). o Change in ReEstimateNewPoint() in order to handle cases with zero step caused by diffCurve=0. + o In case of proposed step less than tolerance, now return 'kInfinity' + as per convention of geometry instead of 'DBL_MAX'. + (by J.Apostolakis, May 18th 2007) +- Changes included in tag "geomnav-V08-03-02b", included in release 9.0. -May 18th, 2007 - J.Apostolakis +June 5th, 2007 - J.Apostolakis (geomnav-V08-03-07) ------------------------------ -- G4PropagatorInField: in case of proposed step less than tolerance, - now return 'kInfinity' as per convention of geometry instead of 'DBL_MAX'. +- G4PathFinder: + o New method to return the safety sphere last calculated for + a PreStep point (it could be a previous one - due to optimasation). + >> If last step(s) were smaller than safety, then for a linear + track (no field or no charge) Navigator's ComputeSafety is not + called. The older PreStep (previous step or some steps back + in case of many small steps) is stored for this - and provided. + o ComputeStep() still returns current PreStep point's safety (must). + o Revisions are to make this (used by CoupledTransportation) more + compatible with the old direct use of G4Navigator by G4Transportation. -May 30th, 2007 - G.Cosmo (geomnav-V08-03-02a) +May 29th, 2007 - J.Apostolakis (geomnav-V08-03-06) +------------------------------ +- G4Navigator + o Fixed **ComputeSafety**: wrong coordinates used (last tag only). + For certainty reinstated LocateGlobalPointWithinVolume (for now). + o Corrected calculation of fStepEndPoint (in ComputeStep) + for case of step not limited by geometry +- G4PathFinder + o PrepareNewTrack: calls to re-initialise SafetyHelper (reset safety) + o ReLocate: Corrected check of move (avoid one side effect on stored safety) + --> ComputeSafety still results individual navigators' values. + +May 24th, 2007 - J.Apostolakis (geomnav-V08-03-05) +------------------------------ +- G4PathFinder: 1 correction and 2 optimisations: + o PrepareNewTrack() clear safety - to avoid potential problems in overlaps. + o DoNextLinearStep() only calls ComputeStep() for a navigator whose safety + greater than the step. + o DoNextCurvedStep(), if there's one geometry, no longer calls + ComputeSafety() at start. +- G4Navigator ComputeSafety: + o Corrected it to address use at non-endpoint + o Replaced call to LocateGlobalPointWithinVolume() with calls to + sub-navigators. + +May 21st, 2007 - G.Cosmo ------------------------ +- Made 'fVerbose' protected in G4Navigator, reused in G4MultipleNavigator. +- Some cleanup in G4MultipleNavigator implementation. +- Make G4PathFinder singleton definition canonical. - Added method CheckPointExiting() in G4AuxiliaryNavServices utility class (by P.Arce). -- Added G4DEBUG_PATHFINDER flag to GNUmakefile. + +May 19th, 2007 - J.Apostolakis (geomnav-V08-03-04) +------------------------------ +- Corrections and additions in G4PathFinder: + 1) Added calculation of start-point safety in DoNextCurvedStep + 2) Corrected GetCurrentSafety() - uses mininum of 1) + 3) Added method to obtain safety of one navigator (after call to all). + 4) Deleted obsolete data member 'fMinSafety'. + 5) If only one geometry, do not call WhichLimited in DoNextLinearStep (optimisation) + 6) ComputeSafety: save the values of isotropic safety for each navigator + +May 18th, 2007 - A.Howard (geomnav-V08-03-03) +------------------------ +- Fixed return value for G4PathFinder::ComputeStep in case of + step smaller than tolerance (now kInfinity): fixes one PathFinder issue (JA). +- Added compiler flags for verbosity in G4PathFinder.cc +- Added compiler flags for verbosity in G4MultiNavigator.cc May 18th, 2007 - G.Cosmo (geomnav-V08-03-02) ------------------------ diff --git a/source/geometry/navigation/include/G4AuxiliaryNavServices.hh b/source/geometry/navigation/include/G4AuxiliaryNavServices.hh index 61366d7c73..85bb305bee 100644 --- a/source/geometry/navigation/include/G4AuxiliaryNavServices.hh +++ b/source/geometry/navigation/include/G4AuxiliaryNavServices.hh @@ -25,7 +25,7 @@ // // // $Id: G4AuxiliaryNavServices.hh,v 1.4 2007/05/22 07:48:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4AuxiliaryNavServices diff --git a/source/geometry/navigation/include/G4AuxiliaryNavServices.icc b/source/geometry/navigation/include/G4AuxiliaryNavServices.icc index d68eaf5815..131fcd5a2b 100644 --- a/source/geometry/navigation/include/G4AuxiliaryNavServices.icc +++ b/source/geometry/navigation/include/G4AuxiliaryNavServices.icc @@ -25,7 +25,7 @@ // // // $Id: G4AuxiliaryNavServices.icc,v 1.4 2007/05/22 07:48:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4AuxiliaryNavServices Inline implementation diff --git a/source/geometry/navigation/include/G4DrawVoxels.hh b/source/geometry/navigation/include/G4DrawVoxels.hh index 25170de0e8..a191dcdb6e 100644 --- a/source/geometry/navigation/include/G4DrawVoxels.hh +++ b/source/geometry/navigation/include/G4DrawVoxels.hh @@ -25,7 +25,7 @@ // // // $Id: G4DrawVoxels.hh,v 1.3 2006/06/29 18:35:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4DrawVoxels diff --git a/source/geometry/navigation/include/G4ErrorPropagationNavigator.hh b/source/geometry/navigation/include/G4ErrorPropagationNavigator.hh index 1bdea39448..1c14d7afb7 100644 --- a/source/geometry/navigation/include/G4ErrorPropagationNavigator.hh +++ b/source/geometry/navigation/include/G4ErrorPropagationNavigator.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorPropagationNavigator.hh,v 1.1 2007/05/16 12:49:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/navigation/include/G4GeomTestErrorList.hh b/source/geometry/navigation/include/G4GeomTestErrorList.hh index 300ddef7bf..2e2586ef72 100644 --- a/source/geometry/navigation/include/G4GeomTestErrorList.hh +++ b/source/geometry/navigation/include/G4GeomTestErrorList.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestErrorList.hh,v 1.3 2006/06/29 18:35:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/navigation/include/G4GeomTestLogger.hh b/source/geometry/navigation/include/G4GeomTestLogger.hh index 24e21011ab..174fd025d2 100644 --- a/source/geometry/navigation/include/G4GeomTestLogger.hh +++ b/source/geometry/navigation/include/G4GeomTestLogger.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestLogger.hh,v 1.3 2006/06/29 18:35:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/navigation/include/G4GeomTestOverlapList.hh b/source/geometry/navigation/include/G4GeomTestOverlapList.hh index b1b9fc1d0a..805b3319ce 100644 --- a/source/geometry/navigation/include/G4GeomTestOverlapList.hh +++ b/source/geometry/navigation/include/G4GeomTestOverlapList.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestOverlapList.hh,v 1.3 2006/06/29 18:35:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/navigation/include/G4GeomTestOvershootList.hh b/source/geometry/navigation/include/G4GeomTestOvershootList.hh index 8e2513d16e..90427ddcba 100644 --- a/source/geometry/navigation/include/G4GeomTestOvershootList.hh +++ b/source/geometry/navigation/include/G4GeomTestOvershootList.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestOvershootList.hh,v 1.3 2006/06/29 18:35:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/navigation/include/G4GeomTestPoint.hh b/source/geometry/navigation/include/G4GeomTestPoint.hh index 8b152413ae..d2ffbb1caf 100644 --- a/source/geometry/navigation/include/G4GeomTestPoint.hh +++ b/source/geometry/navigation/include/G4GeomTestPoint.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestPoint.hh,v 1.3 2006/06/29 18:35:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/navigation/include/G4GeomTestSegment.hh b/source/geometry/navigation/include/G4GeomTestSegment.hh index 6e607b8d73..6a617674a3 100644 --- a/source/geometry/navigation/include/G4GeomTestSegment.hh +++ b/source/geometry/navigation/include/G4GeomTestSegment.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestSegment.hh,v 1.4 2007/05/11 13:43:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/navigation/include/G4GeomTestStreamLogger.hh b/source/geometry/navigation/include/G4GeomTestStreamLogger.hh index 0e5a82bc49..41b0e48bed 100644 --- a/source/geometry/navigation/include/G4GeomTestStreamLogger.hh +++ b/source/geometry/navigation/include/G4GeomTestStreamLogger.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestStreamLogger.hh,v 1.3 2006/06/29 18:35:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/navigation/include/G4GeomTestVolPoint.hh b/source/geometry/navigation/include/G4GeomTestVolPoint.hh index c89c6f2078..32a3853172 100644 --- a/source/geometry/navigation/include/G4GeomTestVolPoint.hh +++ b/source/geometry/navigation/include/G4GeomTestVolPoint.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestVolPoint.hh,v 1.3 2006/06/29 18:35:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/navigation/include/G4GeomTestVolume.hh b/source/geometry/navigation/include/G4GeomTestVolume.hh index 6f24b6876f..edd8cc3239 100644 --- a/source/geometry/navigation/include/G4GeomTestVolume.hh +++ b/source/geometry/navigation/include/G4GeomTestVolume.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestVolume.hh,v 1.3 2006/06/29 18:35:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/navigation/include/G4GeometryMessenger.hh b/source/geometry/navigation/include/G4GeometryMessenger.hh index d8dda240e1..fe8967dbdc 100644 --- a/source/geometry/navigation/include/G4GeometryMessenger.hh +++ b/source/geometry/navigation/include/G4GeometryMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeometryMessenger.hh,v 1.4 2006/06/29 18:35:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/navigation/include/G4MultiNavigator.hh b/source/geometry/navigation/include/G4MultiNavigator.hh index 782b7e9d0c..d9720768e8 100644 --- a/source/geometry/navigation/include/G4MultiNavigator.hh +++ b/source/geometry/navigation/include/G4MultiNavigator.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4MultiNavigator.hh,v 1.3 2006/11/13 17:34:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4MultiNavigator.hh,v 1.4 2007/05/21 15:36:25 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4MultiNavigator @@ -82,7 +82,7 @@ class G4MultiNavigator : public G4Navigator // Get values for a single geometry void PrepareNavigators(); - // Find which geometries are registered for this particles - and keep info + // Find which geometries are registered for this particles, and keep info void PrepareNewTrack( const G4ThreeVector position, const G4ThreeVector direction ); // Prepare Navigators and locate @@ -97,9 +97,9 @@ class G4MultiNavigator : public G4Navigator // Important Note: In order to call this the geometries MUST be closed. G4VPhysicalVolume* LocateGlobalPointAndSetup(const G4ThreeVector& point, - const G4ThreeVector* direction=0, - const G4bool pRelativeSearch=true, - const G4bool ignoreDirection=true); + const G4ThreeVector* direction=0, + const G4bool pRelativeSearch=true, + const G4bool ignoreDirection=true); // Locate in all geometries. // Return the volume in the first (mass) geometry // Maintain vector of other volumes, to be returned separately @@ -114,8 +114,8 @@ class G4MultiNavigator : public G4Navigator G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength = DBL_MAX); // Calculate the isotropic distance to the nearest boundary - // in any geometry from the specified point in the global coordinate system. - // The geometry must be closed. + // in any geometry from the specified point in the global coordinate + // system. The geometry must be closed. G4TouchableHistoryHandle CreateTouchableHistoryHandle() const; // Returns a reference counted handle to a touchable history. @@ -161,7 +161,7 @@ class G4MultiNavigator : public G4Navigator G4double fNewSafety[ fMaxNav ]; // Safety for starting point // Lowest values - determine step length, and safety - G4double fMinStep; // As reported by Navigators -- can be kInfinity + G4double fMinStep; // As reported by Navigators. Can be kInfinity G4double fMinSafety; G4double fTrueMinStep; // Corrected in case fMinStep >= proposed @@ -175,8 +175,6 @@ class G4MultiNavigator : public G4Navigator G4ThreeVector fPreStepLocation; // point where last ComputeStep called G4double fMinSafety_PreStepPt; // /\ corresponding value of safety - // STATE Auxiliary variables - G4int fVerboseLevel; G4TransportationManager* pTransportManager; // Cache for frequent use }; diff --git a/source/geometry/navigation/include/G4Navigator.hh b/source/geometry/navigation/include/G4Navigator.hh index f7f00196b8..1eb0580cee 100644 --- a/source/geometry/navigation/include/G4Navigator.hh +++ b/source/geometry/navigation/include/G4Navigator.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Navigator.hh,v 1.23 2007/05/11 13:43:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Navigator.hh,v 1.26 2007/10/18 14:18:36 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4Navigator @@ -65,6 +65,7 @@ #include "G4VoxelNavigation.hh" #include "G4ParameterisedNavigation.hh" #include "G4ReplicaNavigation.hh" +#include "G4RegularNavigation.hh" #include @@ -298,6 +299,9 @@ class G4Navigator inline EVolume CharacteriseDaughters(const G4LogicalVolume *pLog) const; // Characterise daughter of logical volume. + inline G4int GetDaughtersRegularStructureId(const G4LogicalVolume *pLog) const; + // Get regular structure ID of first daughter + virtual void SetupHierarchy(); // Renavigate & reset hierarchy described by current history // o Reset volumes @@ -330,6 +334,13 @@ class G4Navigator G4bool fWasLimitedByGeometry; // Set true if last Step was limited by geometry. + G4ThreeVector fStepEndPoint; + // Endpoint of last ComputeStep + // - can be used for optimisation (eg when computing safety) + + G4int fVerbose; + // Verbose(ness) level [if > 0, printout can occur]. + private: G4bool fActive; @@ -422,8 +433,6 @@ class G4Navigator // Check-mode flag [if true, more strict checks are performed]. G4bool fPushed; // Push flag [if true, means a stuck particle has been pushed]. - G4int fVerbose; - // Verbose(ness) level [if > 0, printout can occur]. // Helpers/Utility classes // @@ -431,6 +440,7 @@ class G4Navigator G4VoxelNavigation fvoxelNav; G4ParameterisedNavigation fparamNav; G4ReplicaNavigation freplicaNav; + G4RegularNavigation fregularNav; }; #include "G4Navigator.icc" diff --git a/source/geometry/navigation/include/G4Navigator.icc b/source/geometry/navigation/include/G4Navigator.icc index d11c60b944..a0c9ddfd01 100644 --- a/source/geometry/navigation/include/G4Navigator.icc +++ b/source/geometry/navigation/include/G4Navigator.icc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Navigator.icc,v 1.12 2006/10/27 09:13:46 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Navigator.icc,v 1.15 2007/10/18 14:18:36 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4Navigator Inline implementation @@ -157,7 +157,7 @@ EVolume G4Navigator::VolumeType(const G4VPhysicalVolume *pVol) const } // ******************************************************************** -// CharacteriseDahghters +// CharacteriseDaughters // ******************************************************************** // inline @@ -190,6 +190,26 @@ EVolume G4Navigator::CharacteriseDaughters(const G4LogicalVolume *pLog) const return type; } + +// ******************************************************************** +// GetDaughtersRegularStructureId +// ******************************************************************** +// +inline +G4int G4Navigator:: +GetDaughtersRegularStructureId(const G4LogicalVolume *pLog) const +{ + G4int regId = 0; + G4VPhysicalVolume *pVol; + + if ( pLog->GetNoDaughters()==1 ) + { + pVol = pLog->GetDaughter(0); + regId = pVol->GetRegularStructureId(); + } + return regId; +} + // ******************************************************************** // GetGlobalToLocalTransform // @@ -368,6 +388,7 @@ void G4Navigator::SetVerboseLevel(G4int level) fvoxelNav.SetVerboseLevel(level); fparamNav.SetVerboseLevel(level); freplicaNav.SetVerboseLevel(level); + fregularNav.SetVerboseLevel(level); } // ******************************************************************** @@ -424,6 +445,7 @@ void G4Navigator::CheckMode(G4bool mode) fvoxelNav.CheckMode(mode); fparamNav.CheckMode(mode); freplicaNav.CheckMode(mode); + fregularNav.CheckMode(mode); } // ******************************************************************** diff --git a/source/geometry/navigation/include/G4NormalNavigation.hh b/source/geometry/navigation/include/G4NormalNavigation.hh index 9729e17d55..176ecee015 100644 --- a/source/geometry/navigation/include/G4NormalNavigation.hh +++ b/source/geometry/navigation/include/G4NormalNavigation.hh @@ -25,7 +25,7 @@ // // // $Id: G4NormalNavigation.hh,v 1.4 2006/06/29 18:36:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4NormalNavigation diff --git a/source/geometry/navigation/include/G4NormalNavigation.icc b/source/geometry/navigation/include/G4NormalNavigation.icc index 54e625e112..b03886106c 100644 --- a/source/geometry/navigation/include/G4NormalNavigation.icc +++ b/source/geometry/navigation/include/G4NormalNavigation.icc @@ -25,7 +25,7 @@ // // // $Id: G4NormalNavigation.icc,v 1.4 2006/06/29 18:36:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4NormalNavigation Inline Implementation diff --git a/source/geometry/navigation/include/G4ParameterisedNavigation.hh b/source/geometry/navigation/include/G4ParameterisedNavigation.hh index 34a778d53c..341d82a5b2 100644 --- a/source/geometry/navigation/include/G4ParameterisedNavigation.hh +++ b/source/geometry/navigation/include/G4ParameterisedNavigation.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ParameterisedNavigation.hh,v 1.5 2006/06/29 18:36:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ParameterisedNavigation.hh,v 1.6 2007/11/09 16:06:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4ParameterisedNavigation @@ -63,8 +63,8 @@ class G4ParameterisedNavigation : public G4VoxelNavigation G4ParameterisedNavigation(); ~G4ParameterisedNavigation(); - G4SmartVoxelNode* ParamVoxelLocate( G4SmartVoxelHeader* pHead, - const G4ThreeVector& localPoint ); + inline G4SmartVoxelNode* ParamVoxelLocate( G4SmartVoxelHeader* pHead, + const G4ThreeVector& localPoint ); G4bool LevelLocate( G4NavigationHistory& history, const G4VPhysicalVolume* blockedVol, @@ -102,7 +102,7 @@ class G4ParameterisedNavigation : public G4VoxelNavigation // Necessary to resolve cases with nested parameterisations - G4VSolid* IdentifyAndPlaceSolid( G4int num, + inline G4VSolid* IdentifyAndPlaceSolid( G4int num, G4VPhysicalVolume* apparentPhys, G4VPVParameterisation* curParam ); // Call virtual 'Compute' methods, and copy information if nested. diff --git a/source/geometry/navigation/include/G4ParameterisedNavigation.icc b/source/geometry/navigation/include/G4ParameterisedNavigation.icc index 11983f9395..4b35d58d7d 100644 --- a/source/geometry/navigation/include/G4ParameterisedNavigation.icc +++ b/source/geometry/navigation/include/G4ParameterisedNavigation.icc @@ -24,14 +24,33 @@ // ******************************************************************** // // -// $Id: G4ParameterisedNavigation.icc,v 1.6 2006/06/29 18:36:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ParameterisedNavigation.icc,v 1.7 2007/11/09 16:06:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4ParameterisedNavigation Inline implementation // // -------------------------------------------------------------------- +// ******************************************************************** +// IdentifyAndPlaceSolid +// ******************************************************************** +// +inline +G4VSolid* G4ParameterisedNavigation:: +IdentifyAndPlaceSolid( G4int num, + G4VPhysicalVolume *apparentPhys, // PhysV or PhysT + G4VPVParameterisation *curParam ) +{ + G4VSolid *sampleSolid; + + sampleSolid = curParam->ComputeSolid(num, apparentPhys); + sampleSolid->ComputeDimensions(curParam, num, apparentPhys); + curParam->ComputeTransformation(num, apparentPhys); + + return sampleSolid; +} + // ******************************************************************** // ParamVoxelLocate // ******************************************************************** diff --git a/source/geometry/navigation/include/G4PathFinder.hh b/source/geometry/navigation/include/G4PathFinder.hh index 45bdcbfca5..0f8fae0ba0 100644 --- a/source/geometry/navigation/include/G4PathFinder.hh +++ b/source/geometry/navigation/include/G4PathFinder.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4PathFinder.hh,v 1.23 2007/05/16 15:59:06 japost Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PathFinder.hh,v 1.34 2007/11/02 12:28:31 japost Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4PathFinder // @@ -68,16 +68,19 @@ class G4PathFinder // // Retrieve singleton instance - G4double ComputeStep( const G4FieldTrack &pFieldTrack,// Or update non-c - G4double pCurrentProposedStepLength, - G4int navigatorId, - G4int stepNo, // See next step/check - G4double &pNewSafety, // for this geom - ELimited &limitedStep, + G4double ComputeStep( const G4FieldTrack &pFieldTrack, + G4double pCurrentProposedStepLength, + G4int navigatorId, // Identifies the geometry + G4int stepNo, // See next step/check + G4double &pNewSafety, // Only for this geometry + ELimited &limitedStep, G4FieldTrack &EndState, G4VPhysicalVolume* currentVolume ); // // Compute the next geometric Step -- Curved or linear + // If it is called with a larger 'stepNo' it will execute a new step; + // if 'stepNo' is same as last call, then the results for + // the geometry with Id. number 'navigatorId' will be returned. void Locate( const G4ThreeVector& position, const G4ThreeVector& direction, @@ -91,7 +94,9 @@ class G4PathFinder // Make secondary relocation of global point (within safety only) // in all navigators, and update them. - void PrepareNewTrack( G4ThreeVector position, G4ThreeVector direction); + void PrepareNewTrack( const G4ThreeVector& position, + const G4ThreeVector& direction, + G4VPhysicalVolume* massStartVol=0); // // Check and cache set of active navigators. @@ -107,13 +112,20 @@ class G4PathFinder inline G4bool IsParticleLooping() const; inline G4double GetCurrentSafety() const; - // // Minimum value of safety after last ComputeStep + inline G4double GetMinimumStep() const; + // Get the minimum step size from the last ComputeStep call + // - in case full step is taken, this is kInfinity + inline unsigned int GetNumberGeometriesLimitingStep() const; - G4double ComputeSafety( const G4ThreeVector& pGlobalPoint ); - // - // Recompute safety for the relevant point - // the endpoint of the last step!! + G4double ComputeSafety( const G4ThreeVector& globalPoint); + // Recompute safety for the relevant point the endpoint of the last step!! + // Maintain vector of individual safety values (for next method) + + G4double ObtainSafety( G4int navId, G4ThreeVector& globalCenterPoint ); + // Obtain safety for navigator/geometry navId for last point 'computed' + // --> last point for which ComputeSafety was called + // Returns the point (center) for which this safety is valid void EnableParallelNavigation( G4bool enableChoice=true ); // @@ -137,6 +149,17 @@ class G4PathFinder // // Signal that location will be moved -- internal use primarily + // To provide best compatibility between Coupled and Old Transportation + // the next two methods are provided: + G4double LastPreSafety( G4int navId, G4ThreeVector& globalCenterPoint, G4double& minSafety ); + // Obtain last safety needed in ComputeStep (for geometry navId) + // --> last point at which ComputeStep recalculated safety + // Returns the point (center) for which this safety is valid + // and also the minimum safety over all navigators (ie full) + + void PushPostSafetyToPreSafety(); + // Tell PathFinder to copy PostStep Safety to PreSafety (for use at next step) + G4String& LimitedString( ELimited lim ); // Convert ELimited to string @@ -154,7 +177,7 @@ class G4PathFinder // // Print key details out - for debugging - void ClearState(); + // void ClearState(); // // Clear all the State of this class and its current associates @@ -162,6 +185,9 @@ class G4PathFinder // // Whether use safety to discard unneccesary calls to navigator + void ReportMove( const G4ThreeVector& OldV, const G4ThreeVector& NewV, const G4String& Quantity ) const; + // Helper method to report movement (likely of initial point) + protected: G4PathFinder(); // Singleton @@ -175,8 +201,9 @@ class G4PathFinder // DATA Members // ---------------------------------------------------------------------- - G4MultiNavigator *fpMultiNavigator; - // Object that enables G4PropagatorInField to see many geometries + G4MultiNavigator *fpMultiNavigator; + // + // Object that enables G4PropagatorInField to see many geometries G4int fNoActiveNavigators; G4bool fNewTrack; // Flag a new track (ensure first step) @@ -187,13 +214,25 @@ class G4PathFinder G4Navigator* fpNavigator[fMaxNav]; - // State after a step computation + // State changed in a step computation ELimited fLimitedStep[fMaxNav]; G4bool fLimitTruth[fMaxNav]; G4double fCurrentStepSize[fMaxNav]; - G4double fNewSafety[ fMaxNav ]; // Safety for starting point - G4double fMinSafety; + G4int fNoGeometriesLimiting; // How many processes contribute to limit + + G4ThreeVector fPreSafetyLocation; // last initial position for which safety evaluated + G4double fPreSafetyMinValue; // /\ corresponding value of full safety + G4double fPreSafetyValues[ fMaxNav ]; // Safeties for the above point + // This part of the state can be retained for severall calls --> CARE + + G4ThreeVector fPreStepLocation; // point where last ComputeStep called + G4double fMinSafety_PreStepPt; // /\ corresponding value of full safety + G4double fCurrentPreStepSafety[ fMaxNav ]; // Safeties for the above point + // This changes at each step, + // so it can differ when steps inside min-safety are made + + G4bool fPreStepCenterRenewed; // Whether PreSafety coincides with PreStep point G4double fMinStep; // As reported by Navigators -- can be kInfinity G4double fTrueMinStep; // Corrected in case >= proposed @@ -203,29 +242,35 @@ class G4PathFinder G4VPhysicalVolume* fLocatedVolume[fMaxNav]; G4ThreeVector fLastLocatedPosition; - G4FieldTrack fEndState; - // End point storage + // State after calling 'ComputeStep' (others member variables will be affected) + G4FieldTrack fEndState; // Point, velocity, ... at proposed step end + G4bool fFieldExertedForce; // In current proposed step + G4bool fRelocatedPoint; // Signals that point was or is being moved // from the position of the last location // or the endpoint resulting from ComputeStep // -- invalidates fEndState + // State for 'ComputeSafety' and related methods G4ThreeVector fSafetyLocation; // point where ComputeSafety is called G4double fMinSafety_atSafLocation; // /\ corresponding value of safety - G4ThreeVector fPreStepLocation; // point where last ComputeStep called - G4double fMinSafety_PreStepPt; // /\ corresponding value of safety + G4double fNewSafetyComputed[ fMaxNav ]; // Safeties for last ComputeSafety - G4int fLastStepNo, fCurrentStepNo; - G4bool fParticleIsLooping; - G4int fVerboseLevel; - // For debuging purposes - G4int fMax_loop_count; + // State for Step numbers + G4int fLastStepNo, fCurrentStepNo; + G4bool fParticleIsLooping; + + G4int fVerboseLevel; // For debuging purposes + + G4int fMax_loop_count; // Limit for the number of sub-steps taken in one call to ComputeStep G4TransportationManager* fpTransportManager; // Cache for frequent use G4PropagatorInField* fpFieldPropagator; G4double kCarTolerance; + + static G4PathFinder* fpPathFinder; }; // ******************************************************************** @@ -244,9 +289,20 @@ inline G4int G4PathFinder::SetVerboseLevel(G4int newLevel) G4int old= fVerboseLevel; fVerboseLevel= newLevel; return old; } +inline G4double G4PathFinder::GetMinimumStep() const +{ + return fMinStep; +} + +inline unsigned int G4PathFinder::GetNumberGeometriesLimitingStep() const +{ + unsigned int noGeometries=fNoGeometriesLimiting; + return noGeometries; +} + inline G4double G4PathFinder::GetCurrentSafety() const { - return fMinSafety; + return fMinSafety_PreStepPt; } inline void G4PathFinder::MovePoint() @@ -260,4 +316,20 @@ inline G4Navigator* G4PathFinder::GetNavigator(G4int n) const return fpNavigator[n]; } +inline G4double G4PathFinder::ObtainSafety( G4int navId, G4ThreeVector& globalCenterPoint ) +{ + globalCenterPoint= fSafetyLocation; + // navId = std::min( navId, fMaxNav-1 ); + return fNewSafetyComputed[ navId ]; +} + +inline G4double G4PathFinder::LastPreSafety( G4int navId, + G4ThreeVector& globalCenterPoint, + G4double& minSafety ) +{ + globalCenterPoint= fPreSafetyLocation; + minSafety= fPreSafetyMinValue; + // navId = std::min( navId, fMaxNav-1 ); + return fPreSafetyValues[ navId ]; +} #endif diff --git a/source/geometry/navigation/include/G4PhantomParameterisation.hh b/source/geometry/navigation/include/G4PhantomParameterisation.hh new file mode 100755 index 0000000000..e384c946f6 --- /dev/null +++ b/source/geometry/navigation/include/G4PhantomParameterisation.hh @@ -0,0 +1,200 @@ +// +// ******************************************************************** +// * 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: G4PhantomParameterisation.hh,v 1.2 2007/10/18 14:29:37 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// class G4PhantomParameterisation +// +// Class description: +// +// Describes regular parameterisations: a set of boxes of equal dimension +// in the x, y and z dimensions. The G4PVParameterised volume using this +// class must be placed inside a volume that is completely filled by these +// boxes. + +// History: +// - Created. P. Arce, May 2007 +// ********************************************************************* + +#ifndef G4PhantomParameterisation_HH +#define G4PhantomParameterisation_HH + +#include + +#include "G4Types.hh" +#include "G4VPVParameterisation.hh" +#include "G4AffineTransform.hh" + +class G4VPhysicalVolume; +class G4VTouchable; +class G4VSolid; +class G4Material; + +// Dummy forward declarations ... + +class G4Box; +class G4Tubs; +class G4Trd; +class G4Trap; +class G4Cons; +class G4Orb; +class G4Sphere; +class G4Torus; +class G4Para; +class G4Hype; +class G4Polycone; +class G4Polyhedra; + +class G4PhantomParameterisation : public G4VPVParameterisation +{ + public: // with description + + G4PhantomParameterisation(); + ~G4PhantomParameterisation(); + + virtual void ComputeTransformation(const G4int, G4VPhysicalVolume *) const; + + virtual G4VSolid* ComputeSolid(const G4int, G4VPhysicalVolume *); + + virtual G4Material* ComputeMaterial(const G4int repNo, + G4VPhysicalVolume *currentVol, + const G4VTouchable *parentTouch=0); + // Dummy declarations ... + + void ComputeDimensions (G4Box &, const G4int, + const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Tubs&, const G4int, + const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Trd&, const G4int, + const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Trap&, const G4int, + const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Cons&, const G4int, + const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Orb&, const G4int, + const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Sphere&, const G4int, + const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Torus&, const G4int, + const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Para&, const G4int, + const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Hype&, const G4int, + const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Polycone&, const G4int, + const G4VPhysicalVolume*) const {} + void ComputeDimensions (G4Polyhedra&, const G4int, + const G4VPhysicalVolume*) const {} + + void BuildContainerSolid( G4VPhysicalVolume *pPhysicalVol ); + // Save as container solid the parent of the voxels. Check that the + // voxels fill it completely. + + G4int GetReplicaNo( const G4ThreeVector& localPoint, + const G4ThreeVector& localDir ); + // Get the voxel number corresponding to the point in the container + // frame. Use 'localDir' to avoid precision problems at the surfaces. + + // Set and Get methods + + inline void SetMaterials(std::vector& mates ); + + inline void SetMaterialIndices( size_t* matInd ); + + void SetVoxelDimensions( G4double halfx, G4double halfy, G4double halfz ); + void SetNoVoxel( size_t nx, size_t ny, size_t nz ); + + inline G4double GetVoxelHalfX() const; + inline G4double GetVoxelHalfY() const; + inline G4double GetVoxelHalfZ() const; + inline size_t GetNoVoxelX() const; + inline size_t GetNoVoxelY() const; + inline size_t GetNoVoxelZ() const; + inline size_t GetNoVoxel() const; + + inline std::vector GetMaterials() const; + inline size_t* GetMaterialIndices() const; + inline G4VSolid* GetContainerSolid() const; + + G4ThreeVector GetTranslation(const G4int copyNo ) const; + + G4bool SkipEqualMaterials() const; + void SetSkipEqualMaterials( G4bool skip ); + + size_t GetMaterialIndex( size_t nx, size_t ny, size_t nz) const; + size_t GetMaterialIndex( size_t copyNo) const; + + G4Material* GetMaterial( size_t nx, size_t ny, size_t nz) const; + G4Material* GetMaterial( size_t copyNo ) const; + + private: + + void ComputeVoxelIndices(const G4int copyNo, size_t& nx, + size_t& ny, size_t& nz ) const; + // Convert the copyNo to voxel numbers in x, y and z. + + void CheckVoxelsFillContainer( G4double contX, G4double contY, + G4double contZ ) const; + // Check that the voxels fill it completely. + + void CheckCopyNo( const G4int copyNo ) const; + // Check that the copy number is within limits. + + private: + + G4double fVoxelHalfX,fVoxelHalfY,fVoxelHalfZ; + // Half dimension of voxels (assume they are boxes). + size_t fNoVoxelX,fNoVoxelY,fNoVoxelZ; + // Number of voxel in x, y and z dimensions. + size_t fNoVoxelXY; + // Number of voxels in x times number of voxels in y (for speed-up). + size_t fNoVoxel; + // Total number of voxels (for speed-up). + + std::vector fMaterials; + // List of materials of the voxels. + size_t* fMaterialIndices; + // Index in fMaterials that correspond to each voxel. + + G4VSolid* fContainerSolid; + // Save as container solid the parent of the voxels. + // Check that the voxels fill it completely. + + G4double fContainerWallX, fContainerWallY, fContainerWallZ; + // Save position of container wall for speed-up. + + G4double kCarTolerance; + // Relative surface tolerance. + + G4bool bSkipEqualMaterials; + // Flag to skip surface when two voxel have same material or not +}; + +#include "G4PhantomParameterisation.icc" + +#endif diff --git a/source/geometry/navigation/include/G4PhantomParameterisation.icc b/source/geometry/navigation/include/G4PhantomParameterisation.icc new file mode 100755 index 0000000000..377ce2bbf8 --- /dev/null +++ b/source/geometry/navigation/include/G4PhantomParameterisation.icc @@ -0,0 +1,148 @@ +// +// ******************************************************************** +// * 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: G4PhantomParameterisation.icc,v 1.1 2007/10/17 19:13:58 arce Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//-------------------------------------------------------------------- +inline +void G4PhantomParameterisation:: +SetVoxelDimensions( G4double halfx, G4double halfy, G4double halfz ) +{ + fVoxelHalfX = halfx; + fVoxelHalfY = halfy; + fVoxelHalfZ = halfz; +} + + +//-------------------------------------------------------------------- +inline +void G4PhantomParameterisation::SetNoVoxel( size_t nx, size_t ny, size_t nz ) +{ + fNoVoxelX = nx; + fNoVoxelY = ny; + fNoVoxelZ = nz; + fNoVoxelXY = nx*ny; + fNoVoxel = nx*ny*nz; +} + +//-------------------------------------------------------------------- +inline +void G4PhantomParameterisation::SetMaterials(std::vector& mates ) +{ + fMaterials = mates; +} + +//-------------------------------------------------------------------- +inline +void G4PhantomParameterisation::SetMaterialIndices( size_t* matInd ) +{ + fMaterialIndices = matInd; +} + +//-------------------------------------------------------------------- +inline +G4double G4PhantomParameterisation::GetVoxelHalfX() const +{ + return fVoxelHalfX; +} + +//-------------------------------------------------------------------- +inline +G4double G4PhantomParameterisation::GetVoxelHalfY() const +{ + return fVoxelHalfY; +} + +//-------------------------------------------------------------------- +inline +G4double G4PhantomParameterisation::GetVoxelHalfZ() const +{ + return fVoxelHalfZ; +} + +//-------------------------------------------------------------------- +inline +size_t G4PhantomParameterisation::GetNoVoxelX() const +{ + return fNoVoxelX; +} + +//-------------------------------------------------------------------- +inline +size_t G4PhantomParameterisation::GetNoVoxelY() const +{ + return fNoVoxelY; +} + +//-------------------------------------------------------------------- +inline +size_t G4PhantomParameterisation::GetNoVoxelZ() const +{ + return fNoVoxelZ; +} + +//-------------------------------------------------------------------- +inline +size_t G4PhantomParameterisation::GetNoVoxel() const +{ + return fNoVoxel; +} + +//-------------------------------------------------------------------- +inline +std::vector G4PhantomParameterisation::GetMaterials() const +{ + return fMaterials; +} + +//-------------------------------------------------------------------- +inline +size_t* G4PhantomParameterisation::GetMaterialIndices() const +{ + return fMaterialIndices; +} + +//-------------------------------------------------------------------- +inline +G4VSolid* G4PhantomParameterisation::GetContainerSolid() const +{ + return fContainerSolid; +} + +//-------------------------------------------------------------------- +inline +G4bool G4PhantomParameterisation::SkipEqualMaterials() const +{ + return bSkipEqualMaterials; +} + +//-------------------------------------------------------------------- +inline +void G4PhantomParameterisation::SetSkipEqualMaterials( G4bool skip ) +{ + bSkipEqualMaterials = skip; +} diff --git a/source/geometry/navigation/include/G4PropagatorInField.hh b/source/geometry/navigation/include/G4PropagatorInField.hh index 0b08a8a83e..192b5b496c 100644 --- a/source/geometry/navigation/include/G4PropagatorInField.hh +++ b/source/geometry/navigation/include/G4PropagatorInField.hh @@ -25,7 +25,7 @@ // // // $Id: G4PropagatorInField.hh,v 1.13 2007/06/08 09:49:34 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4PropagatorInField // diff --git a/source/geometry/navigation/include/G4PropagatorInField.icc b/source/geometry/navigation/include/G4PropagatorInField.icc index b46fd3449e..6153797b48 100644 --- a/source/geometry/navigation/include/G4PropagatorInField.icc +++ b/source/geometry/navigation/include/G4PropagatorInField.icc @@ -25,7 +25,7 @@ // // // $Id: G4PropagatorInField.icc,v 1.10 2006/11/13 17:34:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------------------ diff --git a/source/geometry/navigation/include/G4RegularNavigation.hh b/source/geometry/navigation/include/G4RegularNavigation.hh new file mode 100755 index 0000000000..7c14035cbf --- /dev/null +++ b/source/geometry/navigation/include/G4RegularNavigation.hh @@ -0,0 +1,132 @@ +// +// ******************************************************************** +// * 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: G4RegularNavigation.hh,v 1.2 2007/10/18 14:18:36 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// class G4RegularNavigation +// +// Class description: +// +// Utility for fast navigation in volumes containing a regular +// parameterisation. If two contiguous voxels have the same material, +// navigation does not stop at the surface + +// History: +// - Created. P. Arce, May 2007 +// -------------------------------------------------------------------- +#ifndef G4RegularNavigation_HH +#define G4RegularNavigation_HH + +#include + +#include "G4Types.hh" +#include "G4ThreeVector.hh" + +class G4NormalNavigation; +class G4VPhysicalVolume; +class G4Navigator; +class G4NavigationHistory; + +class G4RegularNavigation +{ + public: // with description + + G4RegularNavigation(); + ~G4RegularNavigation(); + + G4bool LevelLocate( G4NavigationHistory& history, + const G4VPhysicalVolume* blockedVol, + const G4int blockedNum, + const G4ThreeVector& globalPoint, + const G4ThreeVector* globalDirection, + const G4bool pLocatedOnEdge, + G4ThreeVector& localPoint ); + // Locate point using its position with respect to regular + // parameterisation container volume. + + G4double ComputeStep( const G4ThreeVector& globalPoint, + const G4ThreeVector& globalDirection, + const G4double currentProposedStepLength, + G4double& newSafety, + G4NavigationHistory& history, + G4bool& validExitNormal, + G4ThreeVector& exitNormal, + G4bool& exiting, + G4bool& entering, + G4VPhysicalVolume *(*pBlockedPhysical), + G4int& blockedReplicaNo ); + // Method never called because to be called the daughter has to be a + // 'regular' volume. This would only happen if the track is in the + // mother of voxels volume. But the voxels fill completely their mother, + // so when a track enters the mother it automatically enters a voxel. + + G4double ComputeStepSkippingEqualMaterials( + const G4ThreeVector localPoint, + const G4ThreeVector& globalDirection, + const G4double currentProposedStepLength, + G4double& newSafety, + G4NavigationHistory& history, + G4bool& validExitNormal, + G4ThreeVector& exitNormal, + G4bool& exiting, + G4bool& entering, + G4VPhysicalVolume *(*pBlockedPhysical), + G4int& blockedReplicaNo, + G4VPhysicalVolume* pCurrentPhysical); + // Compute the step skipping surfaces when they separate voxels with + // equal materials. Loop to voxels until a different material is found: + // invokes G4NormalNavigation::ComputeStep() in each voxel and move the + // point to the next voxel. + + G4double ComputeSafety( const G4ThreeVector& localPoint, + const G4NavigationHistory& history, + const G4double pProposedMaxLength=DBL_MAX ); + // Method never called because to be called the daughter has to be a + // 'regular' volume. This would only happen if the track is in the + // mother of voxels volume. But the voxels fill completely their mother, + // so when a track enters the mother it automatically enters a voxel. + + public: // without description + + // Set and Get methods + + void SetVerboseLevel(G4int level) { fVerbose = level; } + void CheckMode(G4bool mode) { fCheck = mode; } + void SetNormalNavigation( G4NormalNavigation* fnormnav ) + { fnormalNav = fnormnav; } + + private: + + G4int fVerbose; + G4bool fCheck; + + G4NormalNavigation* fnormalNav; + G4double kCarTolerance; +}; + +#endif diff --git a/source/geometry/navigation/include/G4ReplicaNavigation.hh b/source/geometry/navigation/include/G4ReplicaNavigation.hh index 8a3a5e2c80..241d8a3e3b 100644 --- a/source/geometry/navigation/include/G4ReplicaNavigation.hh +++ b/source/geometry/navigation/include/G4ReplicaNavigation.hh @@ -25,7 +25,7 @@ // // // $Id: G4ReplicaNavigation.hh,v 1.6 2007/05/18 07:31:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4ReplicaNavigation diff --git a/source/geometry/navigation/include/G4ReplicaNavigation.icc b/source/geometry/navigation/include/G4ReplicaNavigation.icc index c49bb1a925..d459899e57 100644 --- a/source/geometry/navigation/include/G4ReplicaNavigation.icc +++ b/source/geometry/navigation/include/G4ReplicaNavigation.icc @@ -25,7 +25,7 @@ // // // $Id: G4ReplicaNavigation.icc,v 1.5 2006/06/29 18:36:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4ReplicaNavigation Inline implementation diff --git a/source/geometry/navigation/include/G4SafetyHelper.hh b/source/geometry/navigation/include/G4SafetyHelper.hh index 5057e05ebc..6069dfc34a 100644 --- a/source/geometry/navigation/include/G4SafetyHelper.hh +++ b/source/geometry/navigation/include/G4SafetyHelper.hh @@ -25,7 +25,7 @@ // // // $Id: G4SafetyHelper.hh,v 1.7 2007/05/02 15:32:13 japost Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4SafetyHelper diff --git a/source/geometry/navigation/include/G4TransportationManager.hh b/source/geometry/navigation/include/G4TransportationManager.hh index 55d521ddfa..25f9907356 100644 --- a/source/geometry/navigation/include/G4TransportationManager.hh +++ b/source/geometry/navigation/include/G4TransportationManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4TransportationManager.hh,v 1.12 2007/04/20 15:28:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4TransportationManager // diff --git a/source/geometry/navigation/include/G4TransportationManager.icc b/source/geometry/navigation/include/G4TransportationManager.icc index 1442866611..89e319bf52 100644 --- a/source/geometry/navigation/include/G4TransportationManager.icc +++ b/source/geometry/navigation/include/G4TransportationManager.icc @@ -25,7 +25,7 @@ // // // $Id: G4TransportationManager.icc,v 1.10 2007/04/20 15:28:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 inlined function members implementation // ------------------------------------------------------------ diff --git a/source/geometry/navigation/include/G4VoxelNavigation.hh b/source/geometry/navigation/include/G4VoxelNavigation.hh index b4d6be2de3..da708a323d 100644 --- a/source/geometry/navigation/include/G4VoxelNavigation.hh +++ b/source/geometry/navigation/include/G4VoxelNavigation.hh @@ -25,7 +25,7 @@ // // // $Id: G4VoxelNavigation.hh,v 1.5 2007/05/11 13:43:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4VoxelNavigation diff --git a/source/geometry/navigation/include/G4VoxelNavigation.icc b/source/geometry/navigation/include/G4VoxelNavigation.icc index 4b92b20f34..bf8cbafffc 100644 --- a/source/geometry/navigation/include/G4VoxelNavigation.icc +++ b/source/geometry/navigation/include/G4VoxelNavigation.icc @@ -25,7 +25,7 @@ // // // $Id: G4VoxelNavigation.icc,v 1.4 2006/06/29 18:36:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4VoxelNavigation Inline implementation diff --git a/source/geometry/navigation/src/G4AuxiliaryNavServices.cc b/source/geometry/navigation/src/G4AuxiliaryNavServices.cc index 5516d6babd..ae39c642e6 100644 --- a/source/geometry/navigation/src/G4AuxiliaryNavServices.cc +++ b/source/geometry/navigation/src/G4AuxiliaryNavServices.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4AuxiliaryNavServices.cc,v 1.3 2006/06/29 18:36:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- diff --git a/source/geometry/navigation/src/G4DrawVoxels.cc b/source/geometry/navigation/src/G4DrawVoxels.cc index d89f5bc775..1e9bbb5f06 100644 --- a/source/geometry/navigation/src/G4DrawVoxels.cc +++ b/source/geometry/navigation/src/G4DrawVoxels.cc @@ -25,7 +25,7 @@ // // // $Id: G4DrawVoxels.cc,v 1.4 2006/06/29 18:36:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4DrawVoxels diff --git a/source/geometry/navigation/src/G4ErrorPropagationNavigator.cc b/source/geometry/navigation/src/G4ErrorPropagationNavigator.cc index befa135262..c157dfa2bf 100644 --- a/source/geometry/navigation/src/G4ErrorPropagationNavigator.cc +++ b/source/geometry/navigation/src/G4ErrorPropagationNavigator.cc @@ -25,7 +25,7 @@ // // // $Id: G4ErrorPropagationNavigator.cc,v 1.1 2007/05/16 12:49:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/navigation/src/G4GeomTestErrorList.cc b/source/geometry/navigation/src/G4GeomTestErrorList.cc index bbe45ac077..9c4097889b 100644 --- a/source/geometry/navigation/src/G4GeomTestErrorList.cc +++ b/source/geometry/navigation/src/G4GeomTestErrorList.cc @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestErrorList.cc,v 1.3 2006/06/29 18:36:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/navigation/src/G4GeomTestOverlapList.cc b/source/geometry/navigation/src/G4GeomTestOverlapList.cc index 76df094d0b..7e4c38bb2c 100644 --- a/source/geometry/navigation/src/G4GeomTestOverlapList.cc +++ b/source/geometry/navigation/src/G4GeomTestOverlapList.cc @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestOverlapList.cc,v 1.3 2006/06/29 18:36:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/navigation/src/G4GeomTestOvershootList.cc b/source/geometry/navigation/src/G4GeomTestOvershootList.cc index a688252959..10cc9769c2 100644 --- a/source/geometry/navigation/src/G4GeomTestOvershootList.cc +++ b/source/geometry/navigation/src/G4GeomTestOvershootList.cc @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestOvershootList.cc,v 1.3 2006/06/29 18:36:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/navigation/src/G4GeomTestPoint.cc b/source/geometry/navigation/src/G4GeomTestPoint.cc index adbd8556ff..8bed05ff45 100644 --- a/source/geometry/navigation/src/G4GeomTestPoint.cc +++ b/source/geometry/navigation/src/G4GeomTestPoint.cc @@ -25,7 +25,7 @@ // // // $Id: G4GeomTestPoint.cc,v 1.3 2006/06/29 18:36:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/navigation/src/G4GeomTestSegment.cc b/source/geometry/navigation/src/G4GeomTestSegment.cc index 1f422159e3..95c78cbc04 100644 --- a/source/geometry/navigation/src/G4GeomTestSegment.cc +++ b/source/geometry/navigation/src/G4GeomTestSegment.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4GeomTestSegment.cc,v 1.10 2007/05/18 07:30:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4GeomTestSegment.cc,v 1.11 2007/11/16 09:39:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class source file @@ -366,7 +366,6 @@ void G4GeomTestSegment::FindSomePoints( G4GeomTestLogger *logger, // // Find next intersection // - G4double dist; if (entering) { dist = solid->DistanceToOut(p,vSearch); //G4cout<<"if entering distToOut="<GetNavigatorForTracking(); - if( massNav ) { - G4VPhysicalVolume* pWorld= massNav->GetWorldVolume(); - if( pWorld ) { - this->SetWorldVolume( pWorld ); - fLastMassWorld= pWorld; - } - } + G4Navigator* massNav= pTransportManager->GetNavigatorForTracking(); + if( massNav ) + { + G4VPhysicalVolume* pWorld= massNav->GetWorldVolume(); + if( pWorld ) + { + SetWorldVolume( pWorld ); + fLastMassWorld = pWorld; + } + } } G4MultiNavigator::~G4MultiNavigator() { - // delete[] fpNavigator; } -// static G4int lastStepNo= -1; - // To find the field do not forget to call - // G4FieldManager* FindAndSetFieldManager(G4VPhysicalVolume* pCurrentPhysVol); - // which sets and returns the correct field manager (global or local), if any. - // Need to call it before PropagatorInField::ComputeStep is called. - G4double G4MultiNavigator::ComputeStep(const G4ThreeVector &pGlobalPoint, - const G4ThreeVector &pDirection, - const G4double proposedStepLength, - G4double &pNewSafety) + const G4ThreeVector &pDirection, + const G4double proposedStepLength, + G4double &pNewSafety) { G4double safety= 0.0, step=0.0; G4double minSafety= DBL_MAX, minStep= DBL_MAX; - if( fVerboseLevel > 2 ){ +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 2 ) + { G4cout << " G4MultiNavigator::ComputeStep : entered " << G4endl; G4cout << " Input position= " << pGlobalPoint << " direction= " << pDirection << G4endl; G4cout << " Requested step= " << proposedStepLength << G4endl; } +#endif std::vector::iterator pNavigatorIter; pNavigatorIter= pTransportManager-> GetActiveNavigatorsIterator(); - G4ThreeVector initialPosition= pGlobalPoint; + G4ThreeVector initialPosition = pGlobalPoint; G4ThreeVector initialDirection= pDirection; - G4int num=0; - for( num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) { + for( register int num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) + { safety= DBL_MAX; step= (*pNavigatorIter)->ComputeStep( initialPosition, @@ -132,191 +122,191 @@ G4double G4MultiNavigator::ComputeStep(const G4ThreeVector &pGlobalPoint, safety ); if( safety < minSafety ){ minSafety = safety; } if( step < minStep ) { minStep= step; } - // Later could reduce the proposed step to the latest minStep value ? - // if( step == kInfinity ) { step = proposedStepLength; } + fCurrentStepSize[num] = step; fNewSafety[num]= safety; // This is currently the safety from the last sub-step - if( fVerboseLevel > 2 ){ - G4cout << "G4MultiNavigator::ComputeStep : Navigator [" << num << "] -- step size " << step << " safety= " << safety << G4endl; +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 2 ) + { + G4cout << "G4MultiNavigator::ComputeStep : Navigator [" + << num << "] -- step size " << step + << " safety= " << safety << G4endl; } +#endif } - // fWasLimitedByGeometry= false; // <----- Could reset(?), but navigator leaves it as is - // Whether any geometry limited the step - // G4bool StepLimited = ( minStep <= proposedStepLength); - // G4cout << "G4MultiNavigator::ComputeStep - StepLimited is " << StepLimited - // << " given minStep= " << minStep << " and proposed Step= " << proposedStepLength << G4endl; - // Save safety value, related position - fPreStepLocation= initialPosition; - fMinSafety_PreStepPt= minSafety; + // + fPreStepLocation = initialPosition; + fMinSafety_PreStepPt = minSafety; + fMinStep = minStep; - fMinStep= minStep; - - G4double trueMinStep= minStep; - if( fMinStep == kInfinity ){ - trueMinStep = proposedStepLength; // Use this below for endpoint !! + if( fMinStep == kInfinity ) + { + fTrueMinStep = proposedStepLength; // Use this below for endpoint !! + } + else + { + fTrueMinStep = minStep; } - fTrueMinStep = trueMinStep; - if( fVerboseLevel > 1 ){ - G4ThreeVector endPosition; - endPosition= initialPosition + trueMinStep * initialDirection ; +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 1 ) + { + G4ThreeVector endPosition = initialPosition+fTrueMinStep*initialDirection; - int oldPrec= G4cout.precision(8); + G4int oldPrec = G4cout.precision(8); G4cout << "G4MultiNavigator::ComputeStep : " << " initialPosition = " << initialPosition - << " and endPosition = " << endPosition<< G4endl; + << " and endPosition = " << endPosition << G4endl; G4cout.precision( oldPrec ); } +#endif - pNewSafety= minSafety; - // Set the EndState - // fEndState= initialState; - // fEndState.SetPosition( endPosition ); - // fEndState.SetProperTimeOfFlight( -1.000 ); // Not defined YET - // fEndState.SetMomentum( initialState.GetMomentum ); + pNewSafety = minSafety; this->WhichLimited(); - if( fVerboseLevel > 2 ){ - G4cout << " G4MultiNavigator::ComputeStep : exits returning " << minStep << G4endl; +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 2 ) + { + G4cout << " G4MultiNavigator::ComputeStep : exits returning " + << minStep << G4endl; } +#endif return minStep; // must return kInfinity if do not limit step } +// ---------------------------------------------------------------------- + G4double -G4MultiNavigator::ObtainFinalStep( G4int navigatorId, - G4double &pNewSafety, // for this geom - G4double &minStep, - ELimited &limitedStep) +G4MultiNavigator::ObtainFinalStep( G4int navigatorId, + G4double &pNewSafety, // for this geometry + G4double &minStep, + ELimited &limitedStep) { G4int navigatorNo=-1; - if( navigatorId <= fNoActiveNavigators ){ + if( navigatorId <= fNoActiveNavigators ) + { navigatorNo= navigatorId; - } else { - G4cerr << " Navigator Id = " << navigatorId - << " No Active = " << fNoActiveNavigators << " . " << G4endl; - G4Exception( "G4MultiNavigator::ObtainFinalStep : Bad Navigator Id" ); } - // if( ! ){ G4Exception( "G4MultiNavigator::ObtainFinalStep Called without call to ComputeStep"); } + else + { + G4cerr << "ERROR - G4MultiNavigator::ObtainFinalStep()" + << " Navigator Id = " << navigatorId + << " No Active = " << fNoActiveNavigators << " . " + << G4endl; + G4Exception("G4MultiNavigator::ObtainFinalStep()", "InvalidSetup", + FatalException, "Bad Navigator Id" ); + } // Prepare the information to return pNewSafety = fNewSafety[ navigatorNo ]; limitedStep = fLimitedStep[ navigatorNo ]; minStep= fMinStep; - // if( (minStep==kInfinity) || (fVerboseLevel > 1) ){ - if( fVerboseLevel > 1 ){ + // if( (minStep==kInfinity) || (fVerbose > 1) ){ +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 1 ){ G4cout << " G4MultiNavigator::ComputeStep returns " << fCurrentStepSize[ navigatorNo ] << " for Navigator " << navigatorNo << " Limited step = " << limitedStep << " Safety(mm) = " << pNewSafety / mm << G4endl; } +#endif return fCurrentStepSize[ navigatorNo ]; } // ---------------------------------------------------------------------- -void -G4MultiNavigator::PrepareNewTrack( const G4ThreeVector position, - const G4ThreeVector direction ) +void G4MultiNavigator::PrepareNewTrack( const G4ThreeVector position, + const G4ThreeVector direction ) { - if( fVerboseLevel > 1 ) +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 1 ) + { G4cout << " Entered G4MultiNavigator::PrepareNewTrack() " << G4endl; + } +#endif G4MultiNavigator::PrepareNavigators(); - //*********************************** - if( fVerboseLevel > 1 ) { - G4cout << " Calling MultiNavigator::Locate() from G4MultiNavigator::PrepareNewTrack() " - << G4endl; - } - - this->LocateGlobalPointAndSetup( position, &direction, false, false ); - // ========================= + LocateGlobalPointAndSetup( position, &direction, false, false ); + // // The first location for each Navigator must be non-relative - // or else call ResetStackAndState() for each Navigator + // or else call ResetStackAndState() for each Navigator // Use direction to get correct side of boundary (ignore dir= false) - - // fRelocatedPoint= false; - - if( fVerboseLevel > 0 ) { - G4cout << " G4MultiNavigator::PrepareNewTrack : exiting. " << G4endl; - } - } -void -G4MultiNavigator::PrepareNavigators() +// ---------------------------------------------------------------------- + +void G4MultiNavigator::PrepareNavigators() { // Key purposes: // - Check and cache set of active navigators // - Reset state for new track - G4int num=0; - if( fVerboseLevel > 1 ) - G4cout << " G4MultiNavigator::PrepareNavigators - entered " << G4endl; - // static G4TransportationManager* pTransportManager= - // G4TransportationManager::GetTransportationManager(); +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 1 ) + { + G4cout << " Entered G4MultiNavigator::PrepareNavigators() " << G4endl; + } +#endif - // fNavigators= true; - // this->MovePoint(); // Signal further that the last status is wiped + // Message the transportation-manager to find active navigators - // Message the G4NavigatorPanel / Dispatcher to find active navigators std::vector::iterator pNavigatorIter; - fNoActiveNavigators= pTransportManager-> GetNoActiveNavigators(); - if( fNoActiveNavigators > fMaxNav ){ - G4cerr << "Too many active Navigators (worlds). G4MultiNavigator fails." - << G4endl; - G4cout << " Fatal error: Transportation Manager reports " << fNoActiveNavigators - << " which is more than the number allowed = " << fMaxNav << G4endl; - G4Exception("G4MultiNavigator::PrepareNavigators()", "TooManyNavigators", - FatalException, "Too many active Navigators / worlds"); + + if( fNoActiveNavigators > fMaxNav ) + { + G4cerr << "ERROR - G4MultiNavigator::PrepareNavigators()" + << " Too many active Navigators (worlds): " + << fNoActiveNavigators << G4endl + << " which is more than the number allowed: " + << fMaxNav << " !" << G4endl; + G4Exception("G4MultiNavigator::PrepareNavigators()", "InvalidSetup", + FatalException, "Too many active Navigators / worlds !"); } pNavigatorIter= pTransportManager-> GetActiveNavigatorsIterator(); - for( num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) { - - // Keep information in carray ... for returning information stored + for( register int num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) + { fpNavigator[num] = *pNavigatorIter; fLimitTruth[num] = false; fLimitedStep[num] = kDoNot; fCurrentStepSize[num] = 0.0; fLocatedVolume[num] = 0; } - fWasLimitedByGeometry= false; + fWasLimitedByGeometry = false; - // Check the world volume of the mass navigator (in case a SetWorldVolume changed it) - G4VPhysicalVolume* massWorld = this-> GetWorldVolume(); - // fpNavigator[0] -> GetWorldVolume(); - if( (massWorld != fLastMassWorld) && (massWorld!=0) ) { + // Check the world volume of the mass navigator + // in case a call to SetWorldVolume() changed it + + G4VPhysicalVolume* massWorld = GetWorldVolume(); + + if( (massWorld != fLastMassWorld) && (massWorld!=0) ) + { // Pass along change to Mass Navigator - fpNavigator[0] -> SetWorldVolume( massWorld ); - if( fVerboseLevel > 0 ) { - G4cout << "G4MultiNavigator::PrepareNavigators changed world volume " + fpNavigator[0] -> SetWorldVolume( massWorld ); + +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 0 ) + { + G4cout << " G4MultiNavigator::PrepareNavigators() changed world volume " << " for mass geometry to " << massWorld->GetName() << G4endl; } - fLastMassWorld= massWorld; - }else{ - if( fVerboseLevel > 2 ) { - G4cout << "G4MultiNavigator::PrepareNavigators retained world volume " - << " Pointer= " << massWorld << G4endl; - if( massWorld ) - G4cout << " Name= " << massWorld->GetName() << G4endl; - } - } +#endif - if( fVerboseLevel > 2 ) { - G4cout << " G4MultiNavigator::PrepareNavigators : exiting. " << G4endl; + fLastMassWorld = massWorld; } } +// ---------------------------------------------------------------------- G4VPhysicalVolume* G4MultiNavigator::LocateGlobalPointAndSetup(const G4ThreeVector& position, @@ -327,368 +317,357 @@ G4MultiNavigator::LocateGlobalPointAndSetup(const G4ThreeVector& position, // Locate the point in each geometry G4ThreeVector direction(0.0, 0.0, 0.0); - G4bool relative= pRelativeSearch; - std::vector::iterator pNavIter= pTransportManager->GetActiveNavigatorsIterator(); - G4int num=0; + G4bool relative = pRelativeSearch; + std::vector::iterator pNavIter + = pTransportManager->GetActiveNavigatorsIterator(); - if( pDirection ) direction = *pDirection; + if( pDirection ) { direction = *pDirection; } -#if 0 - G4ThreeVector lastEndPosition= fEndState.GetPosition(); - G4ThreeVector moveVec = (position - lastEndPosition ); - G4double moveLenSq= moveVec.mag2(); - if( (!fNewTrack) && (!fRelocatedPoint) && ( moveLenSq> 0.0) ){ - ReportMove( position, lastEndPosition, "Position" ); - G4Exception( "G4MultiNavigator::LocateGlobalPointAndSetup", - "211-LocateUnexpectedPoint", - JustWarning, - // FatalException, - "Location is not where last ComputeStep ended."); +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 2 ) + { + G4cout << " Entered G4MultiNavigator::LocateGlobalPointAndSetup() " + << G4endl; + G4cout << " Locating at position: " << position + << ", with direction: " << direction << G4endl + << " Relative: " << relative + << ", ignore direction: " << ignoreDirection << G4endl; + G4cout << " Number of active navigators: " << fNoActiveNavigators + << G4endl; } - fLastLocatedPosition= position; #endif - if( fVerboseLevel > 2 ){ - G4cout << " G4MultiNavigator::LocateGlobalPointAndSetup : entered " << " ---------------" << G4endl; - G4cout << " Locating at position " << position << " with direction " << direction - << " relative= " << relative << " ignore direction= " << ignoreDirection<< G4endl; - G4cout << " Number of active navigators= " << fNoActiveNavigators << G4endl; - } - - for ( num=0; num< fNoActiveNavigators ; ++pNavIter,++num ) { - // ... who limited the step .... - - // G4cout << " -- Navigator id= " << num << " NavigatorPtr " << *pNavIter << G4endl; - // G4VPhysicalVolume* world= (*pNavIter)->GetWorldVolume(); - // if( world ) { G4cout << " Navigator world= " << world->GetName() << G4endl; } - // else{ G4cout << " No world set in Navigator. " << G4endl; } - - if( fWasLimitedByGeometry && fLimitTruth[num] ) { + for ( register int num=0; num< fNoActiveNavigators ; ++pNavIter,++num ) + { + if( fWasLimitedByGeometry && fLimitTruth[num] ) + { (*pNavIter)->SetGeometricallyLimitedStep(); } - G4VPhysicalVolume *pLocated= - (*pNavIter)->LocateGlobalPointAndSetup( position, &direction, - //*************************************// - relative, - ignoreDirection); + G4VPhysicalVolume *pLocated + = (*pNavIter)->LocateGlobalPointAndSetup( position, &direction, + relative, ignoreDirection ); // Set the state related to the location + // fLocatedVolume[num] = pLocated; // Clear state related to the step + // fLimitedStep[num] = kDoNot; fCurrentStepSize[num] = 0.0; fLimitTruth[ num ] = false; // Always clear on locating (see Navigator) - if( fVerboseLevel > 2 ){ - G4cout << " Located in world " << num << " at " << position - << " used geomLimStp " << fLimitTruth[num] - << " - found in volume " << pLocated ; - G4cout << " name = '" ; - if( pLocated ){ +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 2 ) + { + G4cout << " Located in world: " << num << ", at: " << position << G4endl + << " Used geomLimStp: " << fLimitTruth[num] + << ", found in volume: " << pLocated << G4endl; + G4cout << " Name = '" ; + if( pLocated ) + { G4cout << pLocated->GetName() << "'"; G4cout << " - CopyNo= " << pLocated->GetCopyNo(); - } else { + } + else + { G4cout << "Null' Id: Not-Set "; } - G4cout << G4endl; + G4cout << G4endl; } - } // ending for (num= .... - fWasLimitedByGeometry= false; // Clear on locating - - if( fVerboseLevel > 2 ){ - G4cout << " G4MultiNavigator::Locate : exiting. " << G4endl << G4endl; +#endif } - // fRelocatedPoint= false; + fWasLimitedByGeometry = false; // Clear on locating G4VPhysicalVolume* volMassLocated= fLocatedVolume[0]; + return volMassLocated; } +// ---------------------------------------------------------------------- + void G4MultiNavigator::LocateGlobalPointWithinVolume(const G4ThreeVector& position) { // Relocate the point in each geometry - std::vector::iterator pNavIter= pTransportManager->GetActiveNavigatorsIterator(); - // const G4double cErrorTolerance=1e-12; - // Maximum relative error from roundoff of arithmetic - G4int num=0; - if( fVerboseLevel > 2 ){ - G4cout << G4endl; - G4cout << " G4MultiNavigator::ReLocate : entered " << G4endl; - G4cout << " ---------------------- -------" << G4endl; - G4cout << " *Re*Locating at position " << position << G4endl; + std::vector::iterator pNavIter + = pTransportManager->GetActiveNavigatorsIterator(); + +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 2 ) + { + G4cout << " Entered G4MultiNavigator::ReLocate() " << G4endl + << " Re-locating at position: " << position << G4endl; } +#endif - for ( num=0; num< fNoActiveNavigators ; ++pNavIter,++num ) { + for ( register int num=0; num< fNoActiveNavigators ; ++pNavIter,++num ) + { // ... none limited the step - // G4VPhysicalVolume physVolume= (*pNavIter)->LocateGlobalPointWithinVolume( position ); - //*************************************// // Clear state related to the step - fLimitedStep[num] = kDoNot; + // + fLimitedStep[num] = kDoNot; fCurrentStepSize[num] = 0.0; fLimitTruth[ num ] = false; // Always clear on locating (see Navigator) - // fLocatedVolume[num]= physVolume; - - // G4cout << " ReLocated in world " << num << " at " << position << G4endl; } - fWasLimitedByGeometry= false; // Clear on locating - - fLastLocatedPosition= position; - // fRelocatedPoint= false; - - if( fVerboseLevel > 2 ){ - G4cout << " G4MultiNavigator::LocateGlobalPointWithinVolume : exiting " - << " at position " << position << G4endl; - G4cout << G4endl; - } - + fWasLimitedByGeometry = false; // Clear on locating + fLastLocatedPosition = position; } -// ----------------------------------------------------------------------------- +// ---------------------------------------------------------------------- -G4double G4MultiNavigator::ComputeSafety( const G4ThreeVector& position, - G4double maxDistance) - // Recompute safety for the relevant point +G4double G4MultiNavigator::ComputeSafety( const G4ThreeVector& position, + G4double maxDistance) { - G4double minSafety= DBL_MAX; - // G4cout << " G4MultiNavigator::ComputeSafety - called at " << position << G4endl; + // Recompute safety for the relevant point + + G4double minSafety = DBL_MAX, safety = DBL_MAX; std::vector::iterator pNavigatorIter; pNavigatorIter= pTransportManager-> GetActiveNavigatorsIterator(); - G4int num=0; - for( num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) { - - G4double safety; - safety= (*pNavigatorIter)->ComputeSafety( position, maxDistance ); - - if( safety < minSafety ){ minSafety = safety; } - // fNewSafety[num]= safety; + for( register int num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) + { + safety = (*pNavigatorIter)->ComputeSafety( position, maxDistance ); + if( safety < minSafety ) { minSafety = safety; } } - fSafetyLocation= position; + fSafetyLocation = position; fMinSafety_atSafLocation = minSafety; - if( fVerboseLevel > 1 ) { - G4cout << " G4MultiNavigator::ComputeSafety - returns " - << minSafety << " at location " << position - << G4endl; +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 1 ) + { + G4cout << " G4MultiNavigator::ComputeSafety - returns: " + << minSafety << ", at location: " << position << G4endl; } +#endif return minSafety; } - -// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------- G4TouchableHistoryHandle G4MultiNavigator::CreateTouchableHistoryHandle() const { - G4Exception( "G4MultiNavigator::CreateTouchableHistoryHandle", - "215-TouchableFromWrongNavigator", - FatalException, + G4Exception( "G4MultiNavigator::CreateTouchableHistoryHandle()", + "215-TouchableFromWrongNavigator", FatalException, "Getting a touchable from G4MultiNavigator is not defined."); - if( fVerboseLevel > 2 ){ - G4cout << "G4MultiNavigator::CreateTouchableHandle : navId = " << 0 ; - // << " -- " << GetNavigator(navId) << G4endl; - } - G4TouchableHistory* touchHist; touchHist= fpNavigator[0] -> CreateTouchableHistory(); - // G4TouchableHistory* touchHist= new G4TouchableHistory(); - G4VPhysicalVolume* locatedVolume= fLocatedVolume[0]; if( locatedVolume == 0 ) - { - // Workaround to ensure that the touchable is fixed !! // TODO: fix - touchHist->UpdateYourself( locatedVolume, - touchHist->GetHistory() ); - } + { + // Workaround to ensure that the touchable is fixed !! // TODO: fix + // + touchHist->UpdateYourself( locatedVolume, touchHist->GetHistory() ); + } return G4TouchableHistoryHandle(touchHist); } -void -G4MultiNavigator::WhichLimited() // Flag which processes limited the step +// ----------------------------------------------------------------------- + +void G4MultiNavigator::WhichLimited() { - G4int num=-1, last=-1; - const G4int IdTransport= 0; // Id of Mass Navigator !! + // Flag which processes limited the step + + G4int last=-1; + const G4int IdTransport= 0; // Id of Mass Navigator !! G4int noLimited=0; ELimited shared= kSharedOther; - if( fVerboseLevel > 2 ) - G4cout << " G4MultiNavigator::WhichLimited - entered " << G4endl; +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 2 ) + { + G4cout << " Entered G4MultiNavigator::WhichLimited() " << G4endl; + } +#endif // Assume that [IdTransport] is Mass / Transport - // G4bool transportLimited = (fCurrentStepSize[IdTransport] == fMinStep); + // G4bool transportLimited = (fCurrentStepSize[IdTransport] == fMinStep) - && ( fMinStep!= kInfinity) ; - if( transportLimited ){ + && ( fMinStep!= kInfinity); + if( transportLimited ) + { shared= kSharedTransport; } - for ( num= 0; num < fNoActiveNavigators; num++ ) { + for ( register int num= 0; num < fNoActiveNavigators; num++ ) + { G4bool limitedStep; G4double step= fCurrentStepSize[num]; limitedStep = ( step == fMinStep ) && ( step != kInfinity); - // if( step == kInfinity ) { fCurrentStepSize[num] = proposedStepLength; } fLimitTruth[ num ] = limitedStep; - if( limitedStep ) { + if( limitedStep ) + { noLimited++; fLimitedStep[num] = shared; last= num; - }else{ + } + else + { fLimitedStep[num] = kDoNot; } } - if( (last > -1) && (noLimited == 1 ) ){ + if( (last > -1) && (noLimited == 1 ) ) + { fLimitedStep[ last ] = kUnique; } - -#ifndef G4NO_VERBOSE - if( fVerboseLevel > 1 ){ - this->PrintLimited(); // --> for tracing - G4cout << " G4MultiNavigator::WhichLimited - exiting. " << G4endl; - } -#endif - } +// ----------------------------------------------------------------------- + void G4MultiNavigator::PrintLimited() { - static G4String StrDoNot("DoNot"), StrUnique("Unique"), StrUndefined("Undefined"), - StrSharedTransport("SharedTransport"), StrSharedOther("SharedOther"); // Report results -- for checking - G4cout << "G4MultiNavigator::PrintLimited reports: " ; - G4cout << " Minimum step (true)= " << fTrueMinStep - << " reported min = " << fMinStep - << G4endl; - if( // (fCurrentStepNo <= 2) || - (fVerboseLevel>=2) ) { - G4cout // << std::setw(5) << " Step#" << " " - << std::setw(5) << " NavId" << " " - << std::setw(12) << " step-size " << " " - << std::setw(12) << " raw-size " << " " - << std::setw(12) << " pre-safety " << " " - << std::setw(15) << " Limited / flag" << " " - << std::setw(15) << " World " << " " - << G4endl; + + static G4String StrDoNot("DoNot"), StrUnique("Unique"), + StrUndefined("Undefined"), + StrSharedTransport("SharedTransport"), + StrSharedOther("SharedOther"); + G4cout << "### G4MultiNavigator::PrintLimited() reports: " << G4endl; + G4cout << " Minimum step (true): " << fTrueMinStep + << ", reported min: " << fMinStep << G4endl; + +#ifdef G4DEBUG_NAVIGATION + if(fVerbose>=2) + { + G4cout << std::setw(5) << " NavId" << " " + << std::setw(12) << " step-size " << " " + << std::setw(12) << " raw-size " << " " + << std::setw(12) << " pre-safety " << " " + << std::setw(15) << " Limited / flag" << " " + << std::setw(15) << " World " << " " + << G4endl; } - int num; - for ( num= 0; num < fNoActiveNavigators; num++ ) { +#endif + + for ( register int num= 0; num < fNoActiveNavigators; num++ ) + { G4double rawStep = fCurrentStepSize[num]; G4double stepLen = fCurrentStepSize[num]; - if( stepLen > fTrueMinStep ) { + if( stepLen > fTrueMinStep ) + { stepLen = fTrueMinStep; // did not limit (went as far as asked) } G4int oldPrec= G4cout.precision(9); - // const char *BooleanValue[2] = { " NO", "YES" } ; - G4cout // << std::setw(5) << fCurrentStepNo << " " - << std::setw(5) << num << " " + + G4cout << std::setw(5) << num << " " << std::setw(12) << stepLen << " " << std::setw(12) << rawStep << " " << std::setw(12) << fNewSafety[num] << " " << std::setw(5) << (fLimitTruth[num] ? "YES" : " NO") << " "; G4String limitedStr; - switch ( fLimitedStep[num] ) { - case kDoNot: limitedStr= StrDoNot; break; - case kUnique: limitedStr = StrUnique; break; - case kSharedTransport: limitedStr= StrSharedTransport; break; - case kSharedOther: limitedStr = StrSharedOther; break; - default: limitedStr = StrUndefined; break; + switch ( fLimitedStep[num] ) + { + case kDoNot : limitedStr= StrDoNot; break; + case kUnique : limitedStr = StrUnique; break; + case kSharedTransport: limitedStr= StrSharedTransport; break; + case kSharedOther : limitedStr = StrSharedOther; break; + default : limitedStr = StrUndefined; break; } G4cout << " " << std::setw(15) << limitedStr << " "; G4cout.precision(oldPrec); G4Navigator *pNav= fpNavigator[ num ]; G4String WorldName( "Not-Set" ); - if (pNav) { + if (pNav) + { G4VPhysicalVolume *pWorld= pNav->GetWorldVolume(); - if( pWorld ) { + if( pWorld ) + { WorldName = pWorld->GetName(); } } G4cout << " " << WorldName ; G4cout << G4endl; } - - if( fVerboseLevel > 2 ) - G4cout << " G4MultiNavigator::PrintLimited - exiting. " << G4endl; } -void -G4MultiNavigator::ResetState() +// ----------------------------------------------------------------------- + +void G4MultiNavigator::ResetState() { - G4int num; fWasLimitedByGeometry= false; - G4Exception( "G4MultiNavigator::ResetState", - "217-CannotImplement", + G4Exception("G4MultiNavigator::ResetState()", "217-NotImplemented", FatalException, - "Cannot call ResetState for active navigators of G4MultiNavigator."); + "Cannot call ResetState() for navigators of G4MultiNavigator."); + std::vector::iterator pNavigatorIter; pNavigatorIter= pTransportManager-> GetActiveNavigatorsIterator(); - for( num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) { + for( register int num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) + { // (*pNavigatorIter)->ResetState(); // KEEP THIS comment !!! } } -void -G4MultiNavigator::SetupHierarchy() +// ----------------------------------------------------------------------- + +void G4MultiNavigator::SetupHierarchy() { - // G4Navigator::SetupHierarchy(); - G4Exception( "G4MultiNavigator::SetupHierarchy", - "217-CannotImplement", - FatalException, - "Cannot call SetupHierarchy for active navigators of G4MultiNavigator."); + G4Exception( "G4MultiNavigator::SetupHierarchy()", + "217-NotImplemented", FatalException, + "Cannot call SetupHierarchy() for navigators of G4MultiNavigator."); } -void -G4MultiNavigator::CheckMassWorld() +// ----------------------------------------------------------------------- + +void G4MultiNavigator::CheckMassWorld() { - // - G4VPhysicalVolume* navTrackWorld= pTransportManager->GetNavigatorForTracking() - ->GetWorldVolume(); - if( navTrackWorld != fLastMassWorld ) { - G4Exception( "G4MultiNavigator::CheckMassWorld", "MultiNav-220", FatalException, + G4VPhysicalVolume* navTrackWorld= + pTransportManager->GetNavigatorForTracking()->GetWorldVolume(); + + if( navTrackWorld != fLastMassWorld ) + { + G4Exception( "G4MultiNavigator::CheckMassWorld()", + "220-InvalidSetup", FatalException, "Mass world pointer has been changed." ); - } + } } -G4VPhysicalVolume* G4MultiNavigator::ResetHierarchyAndLocate(const G4ThreeVector &point, - const G4ThreeVector &direction, - const G4TouchableHistory &MassHistory) - // Reset geometry for all -- and use the touchable for the mass history +// ----------------------------------------------------------------------- + +G4VPhysicalVolume* +G4MultiNavigator::ResetHierarchyAndLocate(const G4ThreeVector &point, + const G4ThreeVector &direction, + const G4TouchableHistory &MassHistory) { + // Reset geometry for all -- and use the touchable for the mass history + G4VPhysicalVolume* massVolume=0; - G4int num; G4Navigator* pMassNavigator= fpNavigator[0]; - if( pMassNavigator ){ - massVolume= pMassNavigator->ResetHierarchyAndLocate( point, direction, MassHistory); - }else{ - G4Exception("G4MultiNavigator::ResetHierarchyAndLocate", - "218-TooEarlyToReset", - FatalException, - "Cannot reset hierarchy before object is initialised with valid navigators, including a mass Navigator" ); + if( pMassNavigator ) + { + massVolume= pMassNavigator->ResetHierarchyAndLocate( point, direction, + MassHistory); + } + else + { + G4Exception("G4MultiNavigator::ResetHierarchyAndLocate()", + "218-TooEarlyToReset", FatalException, + "Cannot reset hierarchy before navigators are initialised."); } std::vector::iterator pNavIter= pTransportManager->GetActiveNavigatorsIterator(); - for ( num=0; num< fNoActiveNavigators ; ++pNavIter,++num ) { + for ( register int num=0; num< fNoActiveNavigators ; ++pNavIter,++num ) + { G4bool relativeSearch, ignoreDirection; (*pNavIter)-> LocateGlobalPointAndSetup( point, diff --git a/source/geometry/navigation/src/G4Navigator.cc b/source/geometry/navigation/src/G4Navigator.cc index 8ee92da29f..62289c06c5 100644 --- a/source/geometry/navigation/src/G4Navigator.cc +++ b/source/geometry/navigation/src/G4Navigator.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4Navigator.cc,v 1.31 2007/05/11 13:43:59 gcosmo Exp $ +// $Id: G4Navigator.cc,v 1.37 2007/10/18 14:18:36 gcosmo Exp $ // GEANT4 tag $ Name: $ // // class G4Navigator Implementation @@ -45,8 +45,8 @@ // ******************************************************************** // G4Navigator::G4Navigator() - : fWasLimitedByGeometry(false), fTopPhysical(0), - fCheck(false), fPushed(false), fVerbose(0) + : fWasLimitedByGeometry(false), fVerbose(0), + fTopPhysical(0), fCheck(false), fPushed(false) { fActive= false; ResetStackAndState(); @@ -55,6 +55,9 @@ G4Navigator::G4Navigator() fAbandonThreshold_NoZeroSteps = 25; kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); + fregularNav.SetNormalNavigation( &fnormalNav ); + + fStepEndPoint = G4ThreeVector( kInfinity, kInfinity, kInfinity ); } // ******************************************************************** @@ -116,8 +119,11 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, } #ifdef G4DEBUG_NAVIGATION - G4cerr << "Upon entering LocateGlobalPointAndSetup():" << G4endl; - G4cerr << " History = " << G4endl << fHistory << G4endl << G4endl; + if( fVerbose > 2 ) + { + G4cout << "Upon entering LocateGlobalPointAndSetup():" << G4endl; + G4cout << " History = " << G4endl << fHistory << G4endl << G4endl; + } #endif #ifdef G4VERBOSE @@ -188,29 +194,32 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, fBlockedPhysicalVolume->SetCopyNo(fBlockedReplicaNo); break; case kParameterised: - G4VSolid *pSolid; - G4VPVParameterisation *pParam; - G4TouchableHistory parentTouchable( fHistory ); - pParam = fBlockedPhysicalVolume->GetParameterisation(); - pSolid = pParam->ComputeSolid(fBlockedReplicaNo, - fBlockedPhysicalVolume); - pSolid->ComputeDimensions(pParam, fBlockedReplicaNo, - fBlockedPhysicalVolume); - pParam->ComputeTransformation(fBlockedReplicaNo, - fBlockedPhysicalVolume); - fHistory.NewLevel(fBlockedPhysicalVolume, kParameterised, - fBlockedReplicaNo); - fBlockedPhysicalVolume->SetCopyNo(fBlockedReplicaNo); - // - // Set the correct solid and material in Logical Volume - // - G4LogicalVolume *pLogical; - pLogical = fBlockedPhysicalVolume->GetLogicalVolume(); - pLogical->SetSolid( pSolid ); - pLogical->UpdateMaterial(pParam -> - ComputeMaterial(fBlockedReplicaNo, - fBlockedPhysicalVolume, - &parentTouchable)); + if( fBlockedPhysicalVolume->GetRegularStructureId() != 1 ) + { + G4VSolid *pSolid; + G4VPVParameterisation *pParam; + G4TouchableHistory parentTouchable( fHistory ); + pParam = fBlockedPhysicalVolume->GetParameterisation(); + pSolid = pParam->ComputeSolid(fBlockedReplicaNo, + fBlockedPhysicalVolume); + pSolid->ComputeDimensions(pParam, fBlockedReplicaNo, + fBlockedPhysicalVolume); + pParam->ComputeTransformation(fBlockedReplicaNo, + fBlockedPhysicalVolume); + fHistory.NewLevel(fBlockedPhysicalVolume, kParameterised, + fBlockedReplicaNo); + fBlockedPhysicalVolume->SetCopyNo(fBlockedReplicaNo); + // + // Set the correct solid and material in Logical Volume + // + G4LogicalVolume *pLogical; + pLogical = fBlockedPhysicalVolume->GetLogicalVolume(); + pLogical->SetSolid( pSolid ); + pLogical->UpdateMaterial(pParam -> + ComputeMaterial(fBlockedReplicaNo, + fBlockedPhysicalVolume, + &parentTouchable)); + } break; } fEntering = false; @@ -385,13 +394,26 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, localPoint); break; case kParameterised: - noResult = fparamNav.LevelLocate(fHistory, - fBlockedPhysicalVolume, - fBlockedReplicaNo, - globalPoint, - pGlobalDirection, - considerDirection, - localPoint); + if( GetDaughtersRegularStructureId(targetLogical) != 1 ) + { + noResult = fparamNav.LevelLocate(fHistory, + fBlockedPhysicalVolume, + fBlockedReplicaNo, + globalPoint, + pGlobalDirection, + considerDirection, + localPoint); + } + else // Regular structure + { + noResult = fregularNav.LevelLocate(fHistory, + fBlockedPhysicalVolume, + fBlockedReplicaNo, + globalPoint, + pGlobalDirection, + considerDirection, + localPoint); + } break; } @@ -412,11 +434,11 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, // fEntering = false; fEnteredDaughter = true; -#ifdef G4VERBOSE - if( fVerbose > 1 ) +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 2 ) { G4VPhysicalVolume* enteredPhysical = fHistory.GetTopVolume(); - G4cout << "*** G4Navigator::LocateGlobalPointAndSetup: ***" << G4endl; + G4cout << "*** G4Navigator::LocateGlobalPointAndSetup() ***" << G4endl; G4cout << " Entering volume: " << enteredPhysical->GetName() << G4endl; } @@ -432,13 +454,15 @@ G4Navigator::LocateGlobalPointAndSetup( const G4ThreeVector& globalPoint, G4cout.precision(6); G4String curPhysVol_Name("None"); if (targetPhysical!=0) + { curPhysVol_Name = targetPhysical->GetName(); + } G4cout << " Return value = new volume = " << curPhysVol_Name << G4endl; G4cout << " ----- Upon exiting:" << G4endl; PrintState(); #ifdef G4DEBUG_NAVIGATION - G4cerr << "Upon exiting LocateGlobalPointAndSetup():" << G4endl; - G4cerr << " History = " << G4endl << fHistory << G4endl << G4endl; + G4cout << "Upon exiting LocateGlobalPointAndSetup():" << G4endl; + G4cout << " History = " << G4endl << fHistory << G4endl << G4endl; #endif } G4cout.precision(oldcoutPrec); @@ -467,6 +491,14 @@ G4Navigator::LocateGlobalPointWithinVolume(const G4ThreeVector& pGlobalpoint) { fLastLocatedPointLocal = ComputeLocalPoint(pGlobalpoint); +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 2 ) + { + G4cout << "Entering LocateGlobalWithinVolume(): History = " << G4endl; + G4cout << fHistory << G4endl; + } +#endif + // For the case of Voxel (or Parameterised) volume the respective // Navigator must be messaged to update its voxel information etc @@ -486,15 +518,15 @@ G4Navigator::LocateGlobalPointWithinVolume(const G4ThreeVector& pGlobalpoint) { fvoxelNav.VoxelLocate( pVoxelHeader, fLastLocatedPointLocal ); } - // else { fnormalNav. nothing !? } break; - case kParameterised: - // Resets state & returns voxel node - // - fparamNav.ParamVoxelLocate( pVoxelHeader, fLastLocatedPointLocal ); + if( GetDaughtersRegularStructureId(motherLogical) != 1 ) + { + // Resets state & returns voxel node + // + fparamNav.ParamVoxelLocate( pVoxelHeader, fLastLocatedPointLocal ); + } break; - case kReplica: G4Exception("G4Navigator::LocateGlobalPointWithinVolume()", "NotApplicable", FatalException, @@ -610,16 +642,16 @@ G4double G4Navigator::ComputeStep( const G4ThreeVector &pGlobalpoint, G4cout << " Volume = " << motherPhysical->GetName() << " - Proposed step length = " << pCurrentProposedStepLength << G4endl; - if( fVerbose == 4 ) +#ifdef G4DEBUG_NAVIGATION + if( fVerbose >= 4 ) { - G4cout << " Called with the arguments: " << G4endl - << " Globalpoint = " << std::setw(25) << pGlobalpoint - << G4endl - << " Direction = " << std::setw(25) << pDirection - << G4endl; - G4cout << " ----- Upon entering :" << G4endl; + G4cout << " Called with the arguments: " << G4endl + << " Globalpoint = " << std::setw(25) << pGlobalpoint << G4endl + << " Direction = " << std::setw(25) << pDirection << G4endl; + G4cout << " ---- Upon entering :" << G4endl; PrintState(); } +#endif } static G4double fAccuracyForWarning = kCarTolerance, @@ -751,31 +783,98 @@ G4double G4Navigator::ComputeStep( const G4ThreeVector &pGlobalpoint, } else { - Step = fnormalNav.ComputeStep(fLastLocatedPointLocal, - localDirection, - pCurrentProposedStepLength, - pNewSafety, - fHistory, - fValidExitNormal, - fExitNormal, - fExiting, - fEntering, - &fBlockedPhysicalVolume, - fBlockedReplicaNo); + if( motherPhysical->GetRegularStructureId() != 1 ) + { + Step = fnormalNav.ComputeStep(fLastLocatedPointLocal, + localDirection, + pCurrentProposedStepLength, + pNewSafety, + fHistory, + fValidExitNormal, + fExitNormal, + fExiting, + fEntering, + &fBlockedPhysicalVolume, + fBlockedReplicaNo); + } + else // Regular (non-voxelised) structure + { + LocateGlobalPointAndSetup( pGlobalpoint, &pDirection, true, true ); + // + // if physical process limits the step, the voxel will not be the + // one given by ComputeStepSkippingEqualMaterials() and the local + // point will be wrongly calculated. + + // There is a problem: when msc limits the step and the point is + // assigned wrongly to phantom in previous step (while it is out + // of the container volume). Then LocateGlobalPointAndSetup() has + // reset the history topvolume to world. + // + if(fHistory.GetTopVolume()->GetRegularStructureId() != 1 ) + { + G4Exception("G4Navigator::ComputeStep()", + "Bad-location-of-point", JustWarning, + "Point is relocated in voxels, while it should be outside!"); + Step = fnormalNav.ComputeStep(fLastLocatedPointLocal, + localDirection, + pCurrentProposedStepLength, + pNewSafety, + fHistory, + fValidExitNormal, + fExitNormal, + fExiting, + fEntering, + &fBlockedPhysicalVolume, + fBlockedReplicaNo); + } + else + { + Step = fregularNav. + ComputeStepSkippingEqualMaterials(fLastLocatedPointLocal, + localDirection, + pCurrentProposedStepLength, + pNewSafety, + fHistory, + fValidExitNormal, + fExitNormal, + fExiting, + fEntering, + &fBlockedPhysicalVolume, + fBlockedReplicaNo, + motherPhysical); + } + } } break; case kParameterised: - Step = fparamNav.ComputeStep(fLastLocatedPointLocal, - localDirection, - pCurrentProposedStepLength, - pNewSafety, - fHistory, - fValidExitNormal, - fExitNormal, - fExiting, - fEntering, - &fBlockedPhysicalVolume, - fBlockedReplicaNo); + if( GetDaughtersRegularStructureId(motherLogical) != 1 ) + { + Step = fparamNav.ComputeStep(fLastLocatedPointLocal, + localDirection, + pCurrentProposedStepLength, + pNewSafety, + fHistory, + fValidExitNormal, + fExitNormal, + fExiting, + fEntering, + &fBlockedPhysicalVolume, + fBlockedReplicaNo); + } + else // Regular structure + { + Step = fregularNav.ComputeStep(fLastLocatedPointLocal, + localDirection, + pCurrentProposedStepLength, + pNewSafety, + fHistory, + fValidExitNormal, + fExitNormal, + fExiting, + fEntering, + &fBlockedPhysicalVolume, + fBlockedReplicaNo); + } break; case kReplica: G4Exception("G4Navigator::ComputeStep()", "NotApplicable", @@ -832,7 +931,8 @@ G4double G4Navigator::ComputeStep( const G4ThreeVector &pGlobalpoint, #ifdef G4DEBUG_NAVIGATION if( fNumberZeroSteps > 1 ) { - G4cout << "G4Nav - CompStep: another zero step, # " << fNumberZeroSteps + G4cout << "G4Navigator::ComputeStep(): another zero step, # " + << fNumberZeroSteps << " at " << pGlobalpoint << " in volume " << motherPhysical->GetName() << " nav-comp-step calls # " << sNavCScalls @@ -888,9 +988,12 @@ G4double G4Navigator::ComputeStep( const G4ThreeVector &pGlobalpoint, if( fExiting ) { #ifdef G4DEBUG_NAVIGATION - G4cout << " At G4Nav CompStep End - if(exiting) - fExiting= " << fExiting - << " fValidExitNormal = " << fValidExitNormal << G4endl; - G4cout << " fExitNormal= " << fExitNormal << G4endl; + if( fVerbose > 2 ) + { + G4cout << " At G4Nav CompStep End - if(exiting) - fExiting= " << fExiting + << " fValidExitNormal = " << fValidExitNormal << G4endl; + G4cout << " fExitNormal= " << fExitNormal << G4endl; + } #endif if(fValidExitNormal) @@ -917,10 +1020,8 @@ G4double G4Navigator::ComputeStep( const G4ThreeVector &pGlobalpoint, fGrandMotherExitNormal *= (*mRot); } } -#ifdef G4DEBUG_NAVIGATION - G4cout << " fGrandMotherExitNormal= " << fGrandMotherExitNormal << G4endl; -#endif } + fStepEndPoint= pGlobalpoint+Step*pDirection; if( (Step == pCurrentProposedStepLength) && (!fExiting) && (!fEntering) ) { @@ -931,15 +1032,19 @@ G4double G4Navigator::ComputeStep( const G4ThreeVector &pGlobalpoint, } #ifdef G4VERBOSE - if( fVerbose > 1 ) { - if( fVerbose >= 4 ) { + if( fVerbose > 1 ) + { + if( fVerbose >= 4 ) + { G4cout << " ----- Upon exiting :" << G4endl; PrintState(); } G4cout <<" Returned step = " << Step << G4endl; if( Step == kInfinity ) + { G4cout << " Original proposed step = " << pCurrentProposedStepLength << G4endl; + } G4cout << " Safety = " << pNewSafety << G4endl; } G4cout.precision(oldcoutPrec); @@ -1112,42 +1217,51 @@ G4double G4Navigator::ComputeSafety( const G4ThreeVector &pGlobalpoint, { G4double newSafety = 0.0; -#ifdef G4VERBOSE +#ifdef G4DEBUG_NAVIGATION G4int oldcoutPrec = G4cout.precision(8); if( fVerbose > 0 ) { G4cout << "*** G4Navigator::ComputeSafety: ***" << G4endl - << " Called at point: " - << pGlobalpoint << G4endl - << " for Navigator: " << this << G4endl; + << " Called at point: " << pGlobalpoint << G4endl; G4VPhysicalVolume *motherPhysical = fHistory.GetTopVolume(); G4cout << " Volume = " << motherPhysical->GetName() << " - Maximum length = " << pMaxLength << G4endl; - if( fVerbose == 4 ) + if( fVerbose >= 4 ) { - G4cout << " Called with the arguments: " << G4endl - << " Globalpoint = " << pGlobalpoint << G4endl; - G4cout << " ----- Upon entering :" << G4endl; - PrintState(); + G4cout << " ----- Upon entering Compute Safety:" << G4endl; + PrintState(); } } #endif - if( !(fEnteredDaughter || fExitedMother) ) + G4double distEndpointSq = (pGlobalpoint-fStepEndPoint).mag2(); + G4bool stayedOnEndpoint = distEndpointSq < kCarTolerance*kCarTolerance; + G4bool endpointOnSurface = fEnteredDaughter || fExitedMother; + + if( !(endpointOnSurface && stayedOnEndpoint) ) { // Pseudo-relocate to this point (updates voxel information only) // LocateGlobalPointWithinVolume( pGlobalpoint ); + // --->> Danger: Side effects on sub-navigator voxel information <<--- + // Could be replaced again by 'granular' calls to sub-navigator + // locates (similar side-effects, but faster. + // Solutions: + // 1) Re-locate (to where?) + // 2) Insure that the methods using (G4ComputeStep?) + // does a relocation (if information is disturbed only ?) +#ifdef G4DEBUG_NAVIGATION if( fVerbose >= 2 ) { - G4cout << " ComputeSafety() relocates-in-volume to point: " + G4cout << " G4Navigator::ComputeSafety() relocates-in-volume to point: " << pGlobalpoint << G4endl; } - +#endif G4VPhysicalVolume *motherPhysical = fHistory.GetTopVolume(); G4LogicalVolume *motherLogical = motherPhysical->GetLogicalVolume(); + G4SmartVoxelHeader* pVoxelHeader = motherLogical->GetVoxelHeader(); G4ThreeVector localPoint = ComputeLocalPoint(pGlobalpoint); if ( fHistory.GetTopVolumeType()!=kReplica ) @@ -1155,7 +1269,7 @@ G4double G4Navigator::ComputeSafety( const G4ThreeVector &pGlobalpoint, switch(CharacteriseDaughters(motherLogical)) { case kNormal: - if ( motherLogical->GetVoxelHeader() ) + if ( pVoxelHeader ) { newSafety=fvoxelNav.ComputeSafety(localPoint,fHistory,pMaxLength); } @@ -1165,7 +1279,14 @@ G4double G4Navigator::ComputeSafety( const G4ThreeVector &pGlobalpoint, } break; case kParameterised: - newSafety = fparamNav.ComputeSafety(localPoint,fHistory,pMaxLength); + if( GetDaughtersRegularStructureId(motherLogical) != 1 ) + { + newSafety = fparamNav.ComputeSafety(localPoint,fHistory,pMaxLength); + } + else // Regular structure + { + newSafety = fregularNav.ComputeSafety(localPoint,fHistory,pMaxLength); + } break; case kReplica: G4Exception("G4Navigator::ComputeSafety()", "NotApplicable", @@ -1179,22 +1300,20 @@ G4double G4Navigator::ComputeSafety( const G4ThreeVector &pGlobalpoint, fHistory, pMaxLength); } } - else + else // if( endpointOnSurface && stayedOnEndpoint ) { +#ifdef G4DEBUG_NAVIGATION if( fVerbose >= 2 ) { - G4cout << " ComputeSafety() finds that point - " + G4cout << " G4Navigator::ComputeSafety() finds that point - " << pGlobalpoint << " - is on surface " << G4endl; - if( fEnteredDaughter ) - { - G4cout << " entered new daughter volume" << G4endl; - } - if( fExitedMother ) - { - G4cout << " and exited previous volume."; - } + if( fEnteredDaughter ) { G4cout << " entered new daughter volume"; } + if( fExitedMother ) { G4cout << " and exited previous volume."; } G4cout << G4endl; + G4cout << " EndPoint was = " << fStepEndPoint << G4endl; } +#endif + newSafety = 0.0; } // Remember last safety origin & value @@ -1202,11 +1321,11 @@ G4double G4Navigator::ComputeSafety( const G4ThreeVector &pGlobalpoint, fPreviousSftOrigin = pGlobalpoint; fPreviousSafety = newSafety; -#ifdef G4VERBOSE - if( fVerbose > 1 ) +#ifdef G4DEBUG_NAVIGATION + if( fVerbose > 1 ) { - G4cout << " ----- Upon exiting :" << G4endl; - PrintState(); + G4cout << " ---- Exiting ComputeSafety " << G4endl; + if( fVerbose > 2 ) { PrintState(); } G4cout << " Returned value of Safety = " << newSafety << G4endl; } G4cout.precision(oldcoutPrec); diff --git a/source/geometry/navigation/src/G4NormalNavigation.cc b/source/geometry/navigation/src/G4NormalNavigation.cc index 69085930d3..02ba5bb698 100644 --- a/source/geometry/navigation/src/G4NormalNavigation.cc +++ b/source/geometry/navigation/src/G4NormalNavigation.cc @@ -25,7 +25,7 @@ // // // $Id: G4NormalNavigation.cc,v 1.9 2007/05/11 13:43:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4NormalNavigation Implementation diff --git a/source/geometry/navigation/src/G4ParameterisedNavigation.cc b/source/geometry/navigation/src/G4ParameterisedNavigation.cc index 33775a9b05..8a262ea8ae 100644 --- a/source/geometry/navigation/src/G4ParameterisedNavigation.cc +++ b/source/geometry/navigation/src/G4ParameterisedNavigation.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ParameterisedNavigation.cc,v 1.11 2007/05/11 13:43:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ParameterisedNavigation.cc,v 1.12 2007/11/09 16:06:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4ParameterisedNavigation Implementation @@ -34,20 +34,19 @@ // Revisions: // J. Apostolakis 24 Nov 2005, Revised/fixed treatment of nested params // J. Apostolakis 4 Feb 2005, Reintroducting multi-level parameterisation -// for materials only - see note 1 below +// for materials only - see note 1 below // G. Cosmo 11 Mar 2004, Added Check mode // G. Cosmo 15 May 2002, Extended to 3-d voxelisation, made subclass -// J. Apostolakis 5 Mar 1998, Enabled parameterisation of material & solid type +// J. Apostolakis 5 Mar 1998, Enabled parameterisation of mat & solid type // -------------------------------------------------------------------- -// Note 1: Design/implementation note for extensions -// J. Apostolakis, March 1st, 2005 -// We cannot make the solid, dimensions and transformation dependant on parent -// because the voxelisation will not have access to this. +// Note 1: Design/implementation note for extensions - JAp, March 1st, 2005 +// We cannot make the solid, dimensions and transformation dependent on +// parent because the voxelisation will not have access to this. // So the following can NOT be done: -// sampleSolid = curParam->ComputeSolid(num, curPhysical, pParentTouch); -// sampleSolid->ComputeDimensions(curParam, num, curPhysical, pParentTouch); -// curParam->ComputeTransformation(num, curPhysical, pParentTouch); +// sampleSolid = curParam->ComputeSolid(num, curPhysical, pParentTouch); +// sampleSolid->ComputeDimensions(curParam, num, curPhysical, pParentTouch); +// curParam->ComputeTransformation(num, curPhysical, pParentTouch); #include "G4ParameterisedNavigation.hh" #include "G4TouchableHistory.hh" @@ -68,28 +67,6 @@ G4ParameterisedNavigation::G4ParameterisedNavigation() // G4ParameterisedNavigation::~G4ParameterisedNavigation() { -#ifdef G4DEBUG_NAVIGATION - G4cout << "G4ParameterisedNavigation::~G4ParameterisedNavigation() called." - << G4endl; -#endif -} - -// *************************************************************************** -// IdentifyAndPlaceSolid -// *************************************************************************** -// -G4VSolid* G4ParameterisedNavigation:: -IdentifyAndPlaceSolid( G4int num, - G4VPhysicalVolume *apparentPhys, // PhysV or PhysT - G4VPVParameterisation *curParam ) -{ - G4VSolid *sampleSolid; - - sampleSolid = curParam->ComputeSolid(num, apparentPhys); - sampleSolid->ComputeDimensions(curParam, num, apparentPhys); - curParam->ComputeTransformation(num, apparentPhys); - - return sampleSolid; } // *************************************************************************** @@ -140,9 +117,6 @@ G4double G4ParameterisedNavigation:: motherSafety = motherSolid->DistanceToOut(localPoint); ourSafety = motherSafety; // Working isotropic safety - // G4cout << "DebugLOG - G4ParameterisedNavigation::ComputeStep()" << G4endl - // << " Current solid " << motherSolid->GetName() << G4endl; - #ifdef G4VERBOSE if ( fCheck ) { @@ -204,7 +178,7 @@ G4double G4ParameterisedNavigation:: if (localDirection.dot(exitNormal)>=kMinExitingNormalCosine) { assert( (0 <= blockedReplicaNo)&&(blockedReplicaNo zero safety // fBList.BlockVolume(blockedReplicaNo); @@ -216,8 +190,6 @@ G4double G4ParameterisedNavigation:: sampleParam = samplePhysical->GetParameterisation(); - // G4cerr << " Attaching parent touchable information to Phys Volume " << G4endl; - do { curVoxelNode = fVoxelNode; @@ -229,12 +201,11 @@ G4double G4ParameterisedNavigation:: if ( !fBList.IsBlocked(sampleNo) ) { fBList.BlockVolume(sampleNo); - // sampleSolid = sampleParam->ComputeSolid(sampleNo, samplePhysical); - // sampleSolid->ComputeDimensions(sampleParam, sampleNo, samplePhysical); - // sampleParam->ComputeTransformation(sampleNo, samplePhysical); // Call virtual methods, and copy information if needed - sampleSolid= IdentifyAndPlaceSolid( sampleNo, samplePhysical, sampleParam ); + // + sampleSolid = IdentifyAndPlaceSolid( sampleNo, samplePhysical, + sampleParam ); G4AffineTransform sampleTf(samplePhysical->GetRotation(), samplePhysical->GetTranslation()); @@ -345,7 +316,8 @@ G4double G4ParameterisedNavigation:: << " Problem in Navigation" << G4endl << " Point (local coordinates): " << localPoint << G4endl - << " Local Direction: " << localDirection << G4endl + << " Local Direction: " + << localDirection << G4endl << " Solid: " << motherSolid->GetName() << G4endl; motherSolid->DumpInfo(); G4Exception("G4ParameterisedNavigation::ComputeStep()", @@ -432,13 +404,10 @@ G4ParameterisedNavigation::ComputeSafety(const G4ThreeVector& localPoint, // daughter of the mother volume // samplePhysical = motherLogical->GetDaughter(0); - samplePhysical->GetReplicationData(axis, nReplicas, width, offset, consuming); + samplePhysical->GetReplicationData(axis, nReplicas, + width, offset, consuming); sampleParam = samplePhysical->GetParameterisation(); - // Check development - // G4cerr << "DebugLOG - G4ParameterisedNavigation::ComputeSafety()" << G4endl - // << " Current solid " << motherSolid->GetName() << G4endl; - // Look inside the current Voxel only at the current point // if ( axis==kUndefined ) // 3D case: current voxel node is retrieved @@ -447,8 +416,8 @@ G4ParameterisedNavigation::ComputeSafety(const G4ThreeVector& localPoint, } else // 1D case: current voxel node is computed here. { - curVoxelNodeNo = G4int((localPoint(fVoxelAxis)-fVoxelHeader->GetMinExtent()) - / fVoxelSliceWidth ); + curVoxelNodeNo = G4int((localPoint(fVoxelAxis) + -fVoxelHeader->GetMinExtent()) / fVoxelSliceWidth ); curVoxelNode = fVoxelHeader->GetSlice(curVoxelNodeNo)->GetNode(); fVoxelNodeNo = curVoxelNodeNo; fVoxelNode = curVoxelNode; @@ -460,10 +429,8 @@ G4ParameterisedNavigation::ComputeSafety(const G4ThreeVector& localPoint, sampleNo = curVoxelNode->GetVolume(contentNo); // Call virtual methods, and copy information if needed - sampleSolid= IdentifyAndPlaceSolid( sampleNo, samplePhysical, sampleParam ); - // sampleSolid = sampleParam->ComputeSolid(sampleNo, samplePhysical); - // sampleSolid->ComputeDimensions(sampleParam, sampleNo, samplePhysical); - // sampleParam->ComputeTransformation(sampleNo, samplePhysical); + // + sampleSolid= IdentifyAndPlaceSolid( sampleNo,samplePhysical,sampleParam ); G4AffineTransform sampleTf(samplePhysical->GetRotation(), samplePhysical->GetTranslation()); @@ -496,14 +463,13 @@ G4double G4ParameterisedNavigation:: ComputeVoxelSafety(const G4ThreeVector& localPoint, const EAxis pAxis) const { - // Check development - // G4cout << "DebugLOG - G4ParameterisedNavigation::ComputeVoxelSafety()" << G4endl; - // If no best axis is specified, adopt default // strategy as for placements // if ( pAxis==kUndefined ) + { return G4VoxelNavigation::ComputeVoxelSafety(localPoint); + } G4double voxelSafety, plusVoxelSafety, minusVoxelSafety; G4double curNodeOffset, minCurCommonDelta, maxCurCommonDelta; @@ -551,9 +517,12 @@ LocateNextVoxel( const G4ThreeVector& localPoint, // location strategy as for placements // if ( pAxis==kUndefined ) + { return G4VoxelNavigation::LocateNextVoxel(localPoint, localDirection, currentStep); + } + G4bool isNewVoxel; G4int newNodeNo; G4double minVal, maxVal, curMinExtent, curCoord; @@ -626,20 +595,14 @@ G4ParameterisedNavigation::LevelLocate( G4NavigationHistory& history, motherVoxelNode = ParamVoxelLocate(motherVoxelHeader,localPoint); voxelNoDaughters = motherVoxelNode->GetNoContained(); - if ( voxelNoDaughters==0 ) return false; + if ( voxelNoDaughters==0 ) { return false; } pPhysical = motherLogical->GetDaughter(0); pParam = pPhysical->GetParameterisation(); - // Check development - // G4cerr << "DebugLOG - G4ParameterisedNavigation::LevelLocate() " - // << " Current solid " - // << motherLogical->GetSolid()->GetName() << G4endl; - // G4cerr << " Attaching parent touchable information to Phys Volume " - // << G4endl; - // Save parent history in touchable history // ... for use as parent t-h in ComputeMaterial method of param + // G4TouchableHistory parentTouchable( history ); // Search replicated daughter volume @@ -651,21 +614,14 @@ G4ParameterisedNavigation::LevelLocate( G4NavigationHistory& history, { // Obtain solid (as it can vary) and obtain its parameters // - - // pSolid = pParam->ComputeSolid(replicaNo, pPhysical); - // pSolid->ComputeDimensions(pParam, replicaNo, pPhysical); - // pParam->ComputeTransformation(replicaNo, pPhysical); - - // Call virtual methods, and copy information if needed - pSolid= IdentifyAndPlaceSolid( replicaNo, pPhysical, pParam ); + pSolid = IdentifyAndPlaceSolid( replicaNo, pPhysical, pParam ); // Setup history // history.NewLevel(pPhysical, kParameterised, replicaNo); samplePoint = history.GetTopTransform().TransformPoint(globalPoint); - if ( !G4AuxiliaryNavServices::CheckPointOnSurface(pSolid, - samplePoint, globalDirection, - history.GetTopTransform(), pLocatedOnEdge) ) + if ( !G4AuxiliaryNavServices::CheckPointOnSurface( pSolid, samplePoint, + globalDirection, history.GetTopTransform(), pLocatedOnEdge) ) { history.BackLevel(); } @@ -683,14 +639,11 @@ G4ParameterisedNavigation::LevelLocate( G4NavigationHistory& history, // G4LogicalVolume *pLogical = pPhysical->GetLogicalVolume(); pLogical->SetSolid(pSolid); - - pLogical->UpdateMaterial( - pParam->ComputeMaterial(replicaNo, pPhysical, &parentTouchable) ); - + pLogical->UpdateMaterial(pParam->ComputeMaterial(replicaNo, + pPhysical, &parentTouchable) ); return true; } } } - return false; } diff --git a/source/geometry/navigation/src/G4PathFinder.cc b/source/geometry/navigation/src/G4PathFinder.cc index c864061f7b..01eb218e6c 100644 --- a/source/geometry/navigation/src/G4PathFinder.cc +++ b/source/geometry/navigation/src/G4PathFinder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4PathFinder.cc,v 1.32 2007/05/18 07:31:03 gcosmo Exp $ +// $Id: G4PathFinder.cc,v 1.58 2007/11/14 10:04:21 gcosmo Exp $ // GEANT4 tag $ Name: $ // // class G4PathFinder Implementation @@ -35,34 +35,38 @@ #include "G4PathFinder.hh" -class G4FieldManager; +#include #include "G4GeometryTolerance.hh" #include "G4Navigator.hh" #include "G4PropagatorInField.hh" #include "G4TransportationManager.hh" #include "G4MultiNavigator.hh" +#include "G4SafetyHelper.hh" -#include - -// ******************************************************************** -// Constructor -// ******************************************************************** +// Initialise the static instance of the singleton // +G4PathFinder* G4PathFinder::fpPathFinder=0; -G4PathFinder* -G4PathFinder::GetInstance() +// ---------------------------------------------------------------------------- +// GetInstance() +// +// Retrieve the static instance of the singleton +// +G4PathFinder* G4PathFinder::GetInstance() { - static G4PathFinder* fpInstance= 0; - if( ! fpInstance ) { - fpInstance= new G4PathFinder(); + static G4PathFinder theInstance; + if( ! fpPathFinder ) + { + fpPathFinder = &theInstance; } - return fpInstance; + return fpPathFinder; } - +// ---------------------------------------------------------------------------- +// Constructor +// G4PathFinder::G4PathFinder() - // : fpActiveNavigators() : fEndState( G4ThreeVector(), G4ThreeVector(), 0., 0., 0., 0., 0.), fRelocatedPoint(true), fLastStepNo(-1), @@ -71,152 +75,166 @@ G4PathFinder::G4PathFinder() fpMultiNavigator= new G4MultiNavigator(); fpTransportManager= G4TransportationManager::GetTransportationManager(); - fpFieldPropagator = fpTransportManager->GetPropagatorInField() ; + fpFieldPropagator = fpTransportManager->GetPropagatorInField(); kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); fNoActiveNavigators= 0; - G4ThreeVector Big3Vector( DBL_MAX, DBL_MAX, DBL_MAX ); + G4ThreeVector Big3Vector( kInfinity, kInfinity, kInfinity ); fLastLocatedPosition= Big3Vector; - fSafetyLocation= G4ThreeVector( DBL_MAX, DBL_MAX, DBL_MAX ); + fSafetyLocation= Big3Vector; + fPreSafetyLocation= Big3Vector; fPreStepLocation= Big3Vector; - fMinSafety_PreStepPt= -1.0; + fPreSafetyMinValue= -1.0; + fMinSafety_PreStepPt= -1.0; fMinSafety_atSafLocation= -1.0; - fMinSafety= -1.0; // Invalid value - fMinStep= -1.0; // + fMinStep= -1.0; fNewTrack= false; + fNoGeometriesLimiting= 0; - G4int num; - for( num=0; num<= fMaxNav; ++num ) { + for( register int num=0; num<= fMaxNav; ++num ) + { fpNavigator[num] = 0; fLimitTruth[num] = false; fLimitedStep[num] = kUndefLimited; fCurrentStepSize[num] = -1.0; - fLocatedVolume[num] = 0; + fLocatedVolume[num] = 0; + fPreSafetyValues[num]= -1.0; + fCurrentPreStepSafety[num] = -1.0; + fNewSafetyComputed[num]= -1.0; } - // fpNavigator= new[MaxNav] (G4Navigator*); - } +// ---------------------------------------------------------------------------- +// Destructor +// G4PathFinder::~G4PathFinder() { - // delete[] fpNavigator; delete fpMultiNavigator; } -#include "G4SafetyHelper.hh" - +// ---------------------------------------------------------------------------- +// void G4PathFinder::EnableParallelNavigation(G4bool enableChoice) { G4Navigator *navigatorForPropagation=0, *massNavigator=0; massNavigator= fpTransportManager->GetNavigatorForTracking(); - if( enableChoice ){ - // - navigatorForPropagation= fpMultiNavigator; + if( enableChoice ) + { + navigatorForPropagation= fpMultiNavigator; + // Enable SafetyHelper to use PF + // fpTransportManager->GetSafetyHelper()->EnableParallelNavigation(true); - }else{ - // fpNavigator[0]; // must be mass Navigator - navigatorForPropagation= massNavigator; + } + else + { + navigatorForPropagation= massNavigator; + // Disable SafetyHelper to use PF + // fpTransportManager->GetSafetyHelper()->EnableParallelNavigation(false); } fpFieldPropagator->SetNavigatorForPropagating(navigatorForPropagation); } +// ---------------------------------------------------------------------------- +// G4double G4PathFinder::ComputeStep( const G4FieldTrack &InitialFieldTrack, G4double proposedStepLength, - G4int navigatorId, + G4int navigatorNo, G4int stepNo, // find next step G4double &pNewSafety, // for this geom ELimited &limitedStep, G4FieldTrack &EndState, G4VPhysicalVolume* currentVolume) { - // --- - G4int navigatorNo=-1; + G4double possibleStep= -1.0; - if( fVerboseLevel > 2 ){ +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { G4cout << " -------------------------" << G4endl; G4cout << " G4PathFinder::ComputeStep - entered " << G4endl; G4cout << " - stepNo = " << std::setw(4) << stepNo << " " - << " navigatorId = " << std::setw(2) << navigatorId << " " - << " proposed step len = " << proposedStepLength << " " + << " navigatorId = " << std::setw(2) << navigatorNo << " " + << " proposed step len = " << proposedStepLength << " " << G4endl; + G4cout << " PF::ComputeStep requested step " + << " from " << InitialFieldTrack.GetPosition() + << " dir " << InitialFieldTrack.GetMomentumDirection() << G4endl; + } +#endif +#ifdef G4VERBOSE + if( navigatorNo >= fNoActiveNavigators ) + { + G4cerr << "ERROR - G4PathFinder::ComputeStep()" << G4endl + << " Requested Navigator ID = " << navigatorNo << G4endl + << " Number of active navigators = " << fNoActiveNavigators << G4endl; - G4cout << " PF::ComputeStep: step= " << stepNo - << " nav = " << navigatorId - << " trial-step-len " << proposedStepLength - << " from " << InitialFieldTrack.GetPosition() - << " dir " << InitialFieldTrack.GetMomentumDirection() - << G4endl; + G4Exception("G4PathFinder::ComputeStep()", "InvalidSetup", + FatalException, "Bad Navigator ID !"); } +#endif - if( navigatorId <= fNoActiveNavigators ){ - navigatorNo= navigatorId; - } else { - G4cerr << " Navigator Id = " << navigatorId - << " No Active = " << fNoActiveNavigators << " . " << G4endl; - G4Exception( "G4PathFinder::ComputeStep: Bad Navigator Id" ); - } - - if( fNewTrack || (stepNo != fLastStepNo) ){ - + if( fNewTrack || (stepNo != fLastStepNo) ) + { // This is a new track or a new step, so we must make the step - // ( else we can simply retrieve its results for this Navigator Id ) + // ( else we can simply retrieve its results for this Navigator Id ) - // G4cout << " initial = " << InitialFieldTrack << G4endl; G4FieldTrack currentState= InitialFieldTrack; - if( fVerboseLevel > 1 ) - G4cout << " current = " << currentState << G4endl; fCurrentStepNo = stepNo; // Check whether a process shifted the position - // since the last step -- by physics processes + // since the last step -- by physics processes + // G4ThreeVector newPosition = InitialFieldTrack.GetPosition(); G4ThreeVector moveVector= newPosition - fLastLocatedPosition; G4double moveLenSq= moveVector.mag2(); - if( moveLenSq > kCarTolerance * kCarTolerance ){ + if( moveLenSq > kCarTolerance * kCarTolerance ) + { G4ThreeVector newDirection = InitialFieldTrack.GetMomentumDirection(); - if( fVerboseLevel > 2 ) { +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { G4double moveLen= std::sqrt( moveLenSq ); G4cout << " G4PathFinder::ComputeStep : Point moved since last step " << " -- at step # = " << stepNo << G4endl - << " by " << moveLen - << " to " << newPosition << G4endl; + << " by " << moveLen << " to " << newPosition << G4endl; } - - // fRelocatedPoint= true; // It has moved !! - this->MovePoint(); - -#ifdef G4VERBOSE - if( fVerboseLevel > 2 ) { - G4cout << " Calling PathFinder::Locate() from G4PathFinder::ComputeStep() " << G4endl; - } #endif - // Relocate to cope with this move -- else could abort !? + MovePoint(); // Unintentional changed -- ???? + + // Relocate to cope with this move -- else could abort !? + // Locate( newPosition, newDirection ); } // Check whether the particle have an (EM) field force exerting upon it // G4double particleCharge= currentState.GetCharge(); - // G4double magDipoleMoment= currentState.GetMagneticDipoleMoment(); G4FieldManager* fieldMgr=0; G4bool fieldExertsForce = false ; - if( (particleCharge != 0.0) ) { // || ( magDipoleMoment != 0.0 ) ) { - fieldMgr= fpFieldPropagator->FindAndSetFieldManager( currentVolume ); + if( (particleCharge != 0.0) ) + { + fieldMgr= fpFieldPropagator->FindAndSetFieldManager( currentVolume ); + // Protect for case where field manager has no field (= field is zero) - fieldExertsForce = (fieldMgr != 0) - && (fieldMgr->GetDetectorField() != 0); + // + fieldExertsForce = (fieldMgr != 0) + && (fieldMgr->GetDetectorField() != 0); } - // G4cout << "G4PF::CS> Field exerts force = " << fieldExertsForce << G4endl; - if( fieldExertsForce ) { + fFieldExertedForce = fieldExertsForce; // Store for use in later calls + // referring to this 'step'. + + fNoGeometriesLimiting= -1; // At start of track, no process limited step + if( fieldExertsForce ) + { DoNextCurvedStep( currentState, proposedStepLength, currentVolume ); //-------------- }else{ @@ -224,118 +242,217 @@ G4PathFinder::ComputeStep( const G4FieldTrack &InitialFieldTrack, //-------------- } fLastStepNo= stepNo; - } - else{ - // This is neither a new track nor a new step -- just another - // client accessing information for the current track, step - // We will simply retrieve the results of the synchronous - // stepping for this Navigator Id below. -#ifdef G4VERBOSE - if( fVerboseLevel > 1 ){ - G4cout << " G4P::CS -> Not calling DoNextLinearStep: " - << " stepNo= " << stepNo << " last= " << fLastStepNo - << " new= " << fNewTrack << " Step already done" << G4endl; + + if ( (fNoGeometriesLimiting < 0) + || (fNoGeometriesLimiting > fNoActiveNavigators) ) + { + G4cout << "ERROR - G4PathFinder::ComputeStep()" << G4endl + << " Number of geometries limiting step = " + << fNoGeometriesLimiting << G4endl; + G4Exception("G4PathFinder::ComputeStep()", + "NumGeometriesOutOfRange", FatalException, + "Number of geometries limiting the step not set."); } + } + else + { + if( proposedStepLength < fTrueMinStep ) // For 2nd+ geometry + { + G4cout << "ERROR - G4PathFinder::ComputeStep()" << G4endl + << " Problem in step size request." << G4endl + << " Being requested to make a step which is shorter" + << " than the minimum Step " << G4endl + << " already computed for any Navigator/geometry during" + << " this tracking-step: " << G4endl; + G4cout << " This can happen due to an error in process ordering." + << G4endl; + G4cout << " Check that all physics processes are registered" + << G4endl + << " before all processes with a navigator/geometry." + << G4endl; + G4cout << " If using pre-packaged physics list and/or" + << G4endl + << " functionality, please report this error." + << G4endl << G4endl; + G4cout << " Additional information for problem: " << G4endl + << " Steps request/proposed = " << proposedStepLength + << G4endl + << " MinimumStep (true) = " << fTrueMinStep + << G4endl + << " MinimumStep (navraw) = " << fMinStep + << G4endl + << " Navigator raw return value" << G4endl + << " Requested step now = " << proposedStepLength + << G4endl + << " Difference min-req = " + << fTrueMinStep-proposedStepLength << G4endl; + G4cout << " -- Step info> stepNo= " << stepNo + << " last= " << fLastStepNo + << " newTr= " << fNewTrack << G4endl; + G4cerr << "ERROR - G4PathFinder::ComputeStep()" << G4endl + << " Problem in step size request. " << G4endl + << " Error can be caused by incorrect process ordering." + << G4endl + << " Please see more information in standard output." + << G4endl; + G4Exception("G4PathFinder::ComputeStep()", + "ReductionOfRequestedStepSizeBelowMinimum", + FatalException, + "Not part of specification - not implemented."); + } + else + { + // This is neither a new track nor a new step -- just another + // client accessing information for the current track, step + // We will simply retrieve the results of the synchronous + // stepping for this Navigator Id below. +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 1 ) + { + G4cout << " G4P::CS -> Not calling DoNextLinearStep: " + << " stepNo= " << stepNo << " last= " << fLastStepNo + << " new= " << fNewTrack << " Step already done" << G4endl; + } #endif - } + } + } fNewTrack= false; // Prepare the information to return - pNewSafety = fNewSafety[ navigatorNo ]; + + pNewSafety = fCurrentPreStepSafety[ navigatorNo ]; limitedStep = fLimitedStep[ navigatorNo ]; - EndState = fEndState; // set in DoNextLinearStep ( right ? ) fRelocatedPoint= false; + possibleStep= std::min(proposedStepLength, fCurrentStepSize[ navigatorNo ]); + EndState = fEndState; // now corrected for smaller step, if needed - if( fVerboseLevel > 0 ){ - G4cout << " G4PathFinder::ComputeStep returns " << fCurrentStepSize[ navigatorNo ] +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 0 ) + { + G4cout << " G4PathFinder::ComputeStep returns " + << fCurrentStepSize[ navigatorNo ] << " for Navigator " << navigatorNo << " Limited step = " << limitedStep << " Safety(mm) = " << pNewSafety / mm << G4endl; } +#endif - return fCurrentStepSize[ navigatorNo ]; + return possibleStep; } // ---------------------------------------------------------------------- void -G4PathFinder::PrepareNewTrack( const G4ThreeVector position, - const G4ThreeVector direction ) +G4PathFinder::PrepareNewTrack( const G4ThreeVector& position, + const G4ThreeVector& direction, + G4VPhysicalVolume* massStartVol) { // Key purposes: // - Check and cache set of active navigators // - Reset state for new track + G4int num=0; EnableParallelNavigation(true); // Switch PropagatorInField to use MultiNavigator - if( fVerboseLevel > 1 ) - G4cout << " G4PathFinder::PrepareNewTrack - entered " << G4endl; - // static G4TransportationManager* fpTransportManager= - // G4TransportationManager::GetTransportationManager(); + fpTransportManager->GetSafetyHelper()->InitialiseHelper(); + // Reinitialise state of safety helper -- avoid problems with overlaps fNewTrack= true; this->MovePoint(); // Signal further that the last status is wiped // Message the G4NavigatorPanel / Dispatcher to find active navigators - // G4ThreeVector point(0.0, 0.0, 0.0); + // std::vector::iterator pNavigatorIter; fNoActiveNavigators= fpTransportManager-> GetNoActiveNavigators(); - if( fNoActiveNavigators > fMaxNav ){ - G4cerr << "Too many active Navigators (worlds). G4PathFinder fails." << G4endl; - G4cout << " Fatal error: Transportation Manager has "<< fNoActiveNavigators - << " active navigators. " - << " This is more than the number allowed = " << fMaxNav << G4endl; - G4Exception("G4PathFinder::PrepareNewTrack()", "TooManyNavigators", + if( fNoActiveNavigators > fMaxNav ) + { + G4cerr << "ERROR - G4PathFinder::PrepareNewTrack()" << G4endl + << " Too many active Navigators. G4PathFinder fails." + << G4endl + << " Transportation Manager has " + << fNoActiveNavigators << " active navigators." << G4endl + << " This is more than the number allowed = " + << fMaxNav << " !" << G4endl; + G4Exception("G4PathFinder::PrepareNewTrack()", "TooManyNavigators", FatalException, "Too many active Navigators / worlds"); } fpMultiNavigator->PrepareNavigators(); //------------------------------------ - pNavigatorIter= fpTransportManager-> GetActiveNavigatorsIterator(); - for( num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) { - - // Keep information in carray ... for creating touchables - at least + pNavigatorIter= fpTransportManager->GetActiveNavigatorsIterator(); + for( num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) + { + // Keep information in C-array ... for creating touchables - at least + fpNavigator[num] = *pNavigatorIter; fLimitTruth[num] = false; fLimitedStep[num] = kDoNot; fCurrentStepSize[num] = 0.0; fLocatedVolume[num] = 0; } + fNoGeometriesLimiting= 0; // At start of track, no process limited step - if( fVerboseLevel > 1 ) - G4cout << " Calling PathFinder::Locate() from G4PathFinder::PrepareNewTrack() " << G4endl; + // In case of one geometry, the tracking will have done the locating!! + + if( fNoActiveNavigators > 1 ) + { + Locate( position, direction, false ); + } + else + { + // Update state -- depending on the tracking's call to Mass Navigator + + fLastLocatedPosition= position; + fLocatedVolume[0]= massStartVol; // This information must be given + // by transportation + fLimitedStep[0] = kDoNot; + fCurrentStepSize[0] = 0.0; + } + + // Reset Safety Information -- as in case of overlaps this can cause + // inconsistencies ... + // + fMinSafety_PreStepPt= fPreSafetyMinValue= fMinSafety_atSafLocation= 0.0; + + for( num=0; num< fNoActiveNavigators; ++num ) + { + fPreSafetyValues[num]= 0.0; + fNewSafetyComputed[num]= 0.0; + fCurrentPreStepSafety[num] = 0.0; + } - Locate( position, direction, false ); // The first location for each Navigator must be non-relative - // or else call ResetStackAndState() for each Navigator + // or else call ResetStackAndState() for each Navigator fRelocatedPoint= false; - - if( fVerboseLevel > 0 ) { - G4cout << " G4PathFinder::PrepareNewTrack : exiting. " << G4endl; - } } -static -void ReportMove( G4ThreeVector OldVector, G4ThreeVector NewVector, G4String Quantity ) +void G4PathFinder::ReportMove( const G4ThreeVector& OldVector, + const G4ThreeVector& NewVector, + const G4String& Quantity ) const { G4ThreeVector moveVec = ( NewVector - OldVector ); + G4int prc= G4cerr.precision(12); G4cerr << G4endl - << "**************************************************************" << G4endl; - G4cerr << "Endpoint has moved between value returned by ComputeStep" - << " and call to Locate. " << G4endl - << "Change of " << Quantity << " is " << moveVec.mag() / mm << " mm long, " - << " and its vector is " << (1.0/mm) * moveVec << " mm " << G4endl - << "Endpoint of ComputeStep was " << OldVector - << " and current position to locate is " << NewVector << G4endl; + << "WARNING - G4PathFinder::ReportMove()" << G4endl + << " Endpoint moved between value returned by ComputeStep()" + << " and call to Locate(). " << G4endl + << " Change of " << Quantity << " is " + << moveVec.mag() / mm << " mm long" << G4endl + << " and its vector is " + << (1.0/mm) * moveVec << " mm " << G4endl + << " Endpoint of ComputeStep() was " << OldVector << G4endl + << " and current position to locate is " << NewVector + << G4endl; + G4cerr.precision(prc); } void @@ -344,146 +461,164 @@ G4PathFinder::Locate( const G4ThreeVector& position, G4bool relative) { // Locate the point in each geometry - std::vector::iterator pNavIter= fpTransportManager->GetActiveNavigatorsIterator(); - G4int num=0; + + std::vector::iterator pNavIter= + fpTransportManager->GetActiveNavigatorsIterator(); G4ThreeVector lastEndPosition= fEndState.GetPosition(); G4ThreeVector moveVec = (position - lastEndPosition ); G4double moveLenSq= moveVec.mag2(); - if( (!fNewTrack) && (!fRelocatedPoint) && ( moveLenSq> kCarTolerance*kCarTolerance ) ){ // ( moveLenSq> 0.0) ){ + if( (!fNewTrack) && (!fRelocatedPoint) + && ( moveLenSq> kCarTolerance*kCarTolerance ) ) + { ReportMove( position, lastEndPosition, "Position" ); - G4Exception( "G4PathFinder::Locate", "201-LocateUnexpectedPoint", - JustWarning, // FatalException, - "Location is not where last ComputeStep ended."); + G4Exception("G4PathFinder::Locate", "201-LocateUnexpectedPoint", + JustWarning, + "Location is not where last ComputeStep() ended."); } fLastLocatedPosition= position; - if( fVerboseLevel > 2 ){ +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { G4cout << G4endl; G4cout << " G4PathFinder::Locate : entered " << G4endl; G4cout << " -------------------- -------" << G4endl; - G4cout << " Locating at position " << position << " with direction " << direction + G4cout << " Locating at position " << position + << " with direction " << direction << " relative= " << relative << G4endl; - if ( (fVerboseLevel > 1) || ( moveLenSq > 0.0) ){ + if ( (fVerboseLevel > 1) || ( moveLenSq > 0.0) ) + { G4cout << " lastEndPosition = " << lastEndPosition << " moveVec = " << moveVec << " newTr = " << fNewTrack << " relocated = " << fRelocatedPoint << G4endl; } - } - if( fVerboseLevel > 2 ) { G4cout << " Located at " << position ; - if( fNoActiveNavigators > 1 ) G4cout << G4endl; + if( fNoActiveNavigators > 1 ) { G4cout << G4endl; } } +#endif - for ( num=0; num< fNoActiveNavigators ; ++pNavIter,++num ) { + for ( register G4int num=0; num< fNoActiveNavigators ; ++pNavIter,++num ) + { // ... who limited the step .... - // G4Navigator pNav= *pNavIter; - // if( fGeometryLimitedStep ) { if( fLimitTruth[num] ) { (*pNavIter)->SetGeometricallyLimitedStep(); } G4VPhysicalVolume *pLocated= (*pNavIter)->LocateGlobalPointAndSetup( position, &direction, - //*************************************// relative, false); // Set the state related to the location + // fLocatedVolume[num] = pLocated; // Clear state related to the step + // fLimitedStep[num] = kDoNot; fCurrentStepSize[num] = 0.0; - if( fVerboseLevel > 2 ){ - G4cout << " - In world " << num - << " geomLimStp= " << fLimitTruth[num] +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { + G4cout << " - In world " << num << " geomLimStep= " << fLimitTruth[num] << " gives volume= " << pLocated ; - if( pLocated ){ + if( pLocated ) + { G4cout << " name = '" << pLocated->GetName() << "'"; G4cout << " - CopyNo= " << pLocated->GetCopyNo(); } G4cout << G4endl; } - } // ending for (num= .... - - if( fVerboseLevel > 2 ){ - G4cout << " G4PathFinder::Locate : exiting. " << G4endl << G4endl; +#endif } + fRelocatedPoint= false; } -void -G4PathFinder::ReLocate( const G4ThreeVector& position ) - // const G4ThreeVector& direction, G4bool relative ) +void G4PathFinder::ReLocate( const G4ThreeVector& position ) { - - static const G4double kRadTolerance = - G4GeometryTolerance::GetInstance()->GetRadialTolerance(); - // Locate the point in each geometry - std::vector::iterator pNavIter= fpTransportManager->GetActiveNavigatorsIterator(); - const G4double cErrorTolerance=1e-12; - // Maximum relative error from roundoff of arithmetic - G4int num=0; + + std::vector::iterator pNavIter= + fpTransportManager->GetActiveNavigatorsIterator(); // Check that this relocation does not violate safety // - at endpoint (computed from start point) AND // - at last safety location (likely just called) - G4ThreeVector lastEndPosition= fEndState.GetPosition(); - // calculate end-point safety - G4double DistanceStartEnd= (lastEndPosition - fPreStepLocation).mag(); - G4double endPointSafety_raw = fMinSafety_PreStepPt - - DistanceStartEnd; - // - fTrueMinStep; // OK for linear only - G4double endPointSafety_Est1 = std::max( 0.0, endPointSafety_raw ); + G4ThreeVector lastEndPosition= fEndState.GetPosition(); - // and check move from endpoint against this endpoint safety - G4ThreeVector moveVecEndPos = (position - lastEndPosition ); + // Calculate end-point safety ... + // + G4double DistanceStartEnd= (lastEndPosition - fPreStepLocation).mag(); + G4double endPointSafety_raw = fMinSafety_PreStepPt - DistanceStartEnd; + G4double endPointSafety_Est1 = std::max( 0.0, endPointSafety_raw ); + + // ... and check move from endpoint against this endpoint safety + // + G4ThreeVector moveVecEndPos = position - lastEndPosition; G4double moveLenEndPosSq = moveVecEndPos.mag2(); // Check that move from endpoint of last step is within safety - // -- or check against last location or relocation ?? - // G4ThreeVector moveVecStepStart = (position - fLastPrestepPosition ); - // G4double moveLenStartSq= moveVecStepStart.mag2(); - G4ThreeVector moveVecSafety= (position - fSafetyLocation ); + // -- or check against last location or relocation ?? + // + G4ThreeVector moveVecSafety= position - fSafetyLocation; G4double moveLenSafSq= moveVecSafety.mag2(); - // G4double distCheckStart_sq= ( moveLenStartSq - fMinSafety*fMinSafety ); G4double distCheckEnd_sq= ( moveLenEndPosSq - endPointSafety_Est1 *endPointSafety_Est1 ); G4double distCheckSaf_sq= ( moveLenSafSq - fMinSafety_atSafLocation *fMinSafety_atSafLocation ); - // G4bool longMoveStart = distCheckStart_sq > 0.0; + G4bool longMoveEnd = distCheckEnd_sq > 0.0; G4bool longMoveSaf = distCheckSaf_sq > 0.0; - G4double revisedSafety= 0.0; - if( (!fNewTrack) && ( longMoveEnd && longMoveSaf ) ){ - // Used to use ( longMoveEnd || longMoveSaf ) for extra checking + G4double revisedSafety= 0.0; + + if( (!fNewTrack) && ( longMoveEnd && longMoveSaf ) ) + { + G4ThreeVector LastSafetyLocation; + // Copy to keep last value - and restore + + LastSafetyLocation= fSafetyLocation; // Recompute ComputeSafety for end position + // revisedSafety= ComputeSafety(lastEndPosition); - G4double distCheckRevisedEnd= - ( moveLenEndPosSq - revisedSafety * revisedSafety ); + // Reset the state of last call to ComputeSafety + // + ComputeSafety( LastSafetyLocation ); + +#ifdef G4DEBUG_PATHFINDER + + const G4double kRadTolerance = + G4GeometryTolerance::GetInstance()->GetRadialTolerance(); + const G4double cErrorTolerance=1e-12; + // Maximum relative error from roundoff of arithmetic + + G4double distCheckRevisedEnd= moveLenEndPosSq-revisedSafety*revisedSafety; + G4bool longMoveRevisedEnd= ( distCheckRevisedEnd > 0. ) ; G4double moveMinusSafety= 0.0; G4double moveLenEndPosition= std::sqrt( moveLenEndPosSq ); moveMinusSafety = moveLenEndPosition - revisedSafety; - // moveMinusSafety = distCheckRevisedEnd / (moveLenEndPosition + revisedSafety); - if( longMoveRevisedEnd && (moveMinusSafety > 0.0 ) && (revisedSafety > 0.0) ){ + if ( longMoveRevisedEnd && (moveMinusSafety > 0.0 ) + && ( revisedSafety > 0.0 ) ) + { // Take into account possibility of roundoff error causing - // this apparent move further than safety + // this apparent move further than safety - if( fVerboseLevel > 0 ) + if( fVerboseLevel > 0 ) + { G4cout << " G4PF:Relocate> Ratio to revised safety is " << std::fabs(moveMinusSafety)/revisedSafety << G4endl; - // + } + G4double absMoveMinusSafety= std::fabs(moveMinusSafety); G4bool smallRatio= absMoveMinusSafety < kRadTolerance * revisedSafety ; G4double maxCoordPos = std::max( @@ -491,72 +626,93 @@ G4PathFinder::ReLocate( const G4ThreeVector& position ) std::fabs(position.y())), std::fabs(position.z()) ); G4bool smallValue= absMoveMinusSafety < cErrorTolerance * maxCoordPos; - if( ! (smallRatio || smallValue) ) { - G4cout << " G4PF:Relocate> Ratio to revised safety is " + if( ! (smallRatio || smallValue) ) + { + G4cout << " G4PF:Relocate> Ratio to revised safety is " << std::fabs(moveMinusSafety)/revisedSafety << G4endl; - G4cout << " Difference of move and safety is not very small." << G4endl; - }else{ + G4cout << " Difference of move and safety is not very small." + << G4endl; + } + else + { moveMinusSafety = 0.0; longMoveRevisedEnd = false; // Numerical issue -- not too long! -#ifdef G4DEBUG_PATHFINDER - G4cout << " Difference of move and safety is very small in magnitude, " + + G4cout << " Difference of move & safety is very small in magnitude, " << absMoveMinusSafety << G4endl; - if( smallRatio ) { + if( smallRatio ) + { G4cout << " ratio to safety " << revisedSafety << " is " << absMoveMinusSafety / revisedSafety << "smaller than " << kRadTolerance << " of safety "; - }else{ + } + else + { G4cout << " as fraction " << absMoveMinusSafety / maxCoordPos << " of position vector max-coord " << maxCoordPos << " smaller than " << cErrorTolerance ; } - G4cout << " -- reset moveMinusSafety to " << moveMinusSafety << G4endl; -#endif + G4cout << " -- reset moveMinusSafety to " + << moveMinusSafety << G4endl; } } - if ( longMoveEnd && longMoveSaf && longMoveRevisedEnd && (moveMinusSafety>0.0)) { - // if( (moveMinusSafety>0.0) ){ // Eventually ? + if ( longMoveEnd && longMoveSaf + && longMoveRevisedEnd && (moveMinusSafety>0.0) ) + { G4int oldPrec= G4cout.precision(9); G4cout << " Problem in G4PathFinder::Relocate() " << G4endl; G4cout << " Moved from last endpoint by " << moveLenEndPosition - // << " Moved from last located by " << std::sqrt(moveLenStartSq) << " compared to end safety (from preStep point) = " << endPointSafety_Est1 << G4endl; - G4cout << " --> last PreStep Location was " << fPreStepLocation << G4endl; + G4cout << " --> last PreSafety Location was " << fPreSafetyLocation + << G4endl; + G4cout << " safety value = " << fPreSafetyMinValue << G4endl; + G4cout << " --> last PreStep Location was " << fPreStepLocation + << G4endl; G4cout << " safety value = " << fMinSafety_PreStepPt << G4endl; - G4cout << " --> last EndStep Location was " << lastEndPosition << G4endl; + G4cout << " --> last EndStep Location was " << lastEndPosition + << G4endl; G4cout << " safety value = " << endPointSafety_Est1 << " raw-value = " << endPointSafety_raw << G4endl; G4cout << " --> Calling again at this endpoint, we get " << revisedSafety << " as safety value." << G4endl; - G4cout << " --> last position for safety " << fSafetyLocation << G4endl; - G4cout << " its safety value = " << fMinSafety_atSafLocation << G4endl; - G4cout << " move from safety location = " << std::sqrt(moveLenSafSq) << G4endl; - // moveVecSafety.mag() *** (position-fSafetyLocation).mag() << G4endl; + G4cout << " --> last position for safety " << fSafetyLocation + << G4endl; + G4cout << " its safety value = " << fMinSafety_atSafLocation + << G4endl; + G4cout << " move from safety location = " + << std::sqrt(moveLenSafSq) << G4endl + << " again= " << moveVecSafety.mag() << G4endl; G4cout << " safety - Move-from-end= " - << revisedSafety - moveLenEndPosition << " (negative is Bad.)" << G4endl; + << revisedSafety - moveLenEndPosition + << " (negative is Bad.)" << G4endl; - G4cout << " Debub: distCheckRevisedEnd = " << distCheckRevisedEnd << G4endl; + G4cout << " Debug: distCheckRevisedEnd = " + << distCheckRevisedEnd << G4endl; ReportMove( lastEndPosition, position, "Position" ); G4Exception( "G4PathFinder::ReLocate", "205-RelocatePointTooFar", FatalException, - "ReLocation is further than end-safety value from step-end point (and the other-safety-value around the last-called safety 'check' point.)"); + "ReLocation is further than end-safety value."); G4cout.precision(oldPrec); } + +#endif } -#ifdef G4VERBOSE - if( fVerboseLevel > 2 ){ +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { G4cout << G4endl; G4cout << " G4PathFinder::ReLocate : entered " << G4endl; G4cout << " ---------------------- -------" << G4endl; G4cout << " *Re*Locating at position " << position << G4endl; // << " with direction " << direction // << " relative= " << relative << G4endl; - if ( (fVerboseLevel > -1) || ( moveLenEndPosSq > 0.0) ){ + if ( (fVerboseLevel > -1) || ( moveLenEndPosSq > 0.0) ) + { G4cout << " lastEndPosition = " << lastEndPosition << " moveVec from step-end = " << moveVecEndPos << " is new Track = " << fNewTrack @@ -565,63 +721,60 @@ G4PathFinder::ReLocate( const G4ThreeVector& position ) } #endif - for ( num=0; num< fNoActiveNavigators ; ++pNavIter,++num ) { - + for ( register G4int num=0; num< fNoActiveNavigators ; ++pNavIter,++num ) + { // ... none limited the step (*pNavIter)->LocateGlobalPointWithinVolume( position ); - //*************************************// // Clear state related to the step + // fLimitedStep[num] = kDoNot; fCurrentStepSize[num] = 0.0; fLimitTruth[num] = false; - // G4cout << " ReLocated in world " << num << " at " << position << G4endl; } fLastLocatedPosition= position; fRelocatedPoint= false; - if( fVerboseLevel > 2 ){ +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { G4cout << " G4PathFinder::ReLocate : exiting " - << " at position " << fLastLocatedPosition << G4endl; - G4cout << G4endl; + << " at position " << fLastLocatedPosition << G4endl << G4endl; } - +#endif } // ----------------------------------------------------------------------------- G4double G4PathFinder::ComputeSafety( const G4ThreeVector& position ) - // Recompute safety for the relevant point { - G4double minSafety= DBL_MAX; - // G4cout << " G4PathFinder::ComputeSafety - called at " << position << G4endl; + // Recompute safety for the relevant point + + G4double minSafety= kInfinity; - std::vector::iterator pNavigatorIter; - pNavigatorIter= fpTransportManager-> GetActiveNavigatorsIterator(); + std::vector::iterator pNavigatorIter; + pNavigatorIter= fpTransportManager-> GetActiveNavigatorsIterator(); - G4int num=0; - for( num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) { + for( register G4int num=0; numComputeSafety( position ); + if( safety < minSafety ) { minSafety = safety; } + fNewSafetyComputed[num]= safety; + } - G4double safety; - safety= (*pNavigatorIter)->ComputeSafety( position ); - - if( safety < minSafety ){ minSafety = safety; } - // fNewSafety[num]= safety; - - // G4cout << " Navigator # " << num << " gives safety = " << safety << G4endl; - } + fSafetyLocation= position; + fMinSafety_atSafLocation = minSafety; - fSafetyLocation= position; - fMinSafety_atSafLocation = minSafety; - - if( fVerboseLevel > 1 ) { - G4cout << " G4PathFinder::ComputeSafety - returns " - << minSafety << " at location " << position - << G4endl; - } - return minSafety; +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 1 ) + { + G4cout << " G4PathFinder::ComputeSafety - returns " + << minSafety << " at location " << position << G4endl; + } +#endif + return minSafety; } @@ -629,208 +782,350 @@ G4double G4PathFinder::ComputeSafety( const G4ThreeVector& position ) G4TouchableHandle G4PathFinder::CreateTouchableHandle( G4int navId ) const - // Also? G4TouchableCreator& GetTouchableCreator( navId ) const; { - if( fVerboseLevel > 2 ){ - G4cout << "G4PathFinder::CreateTouchableHandle : navId = " << navId << " -- " << GetNavigator(navId) << G4endl; +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { + G4cout << "G4PathFinder::CreateTouchableHandle : navId = " + << navId << " -- " << GetNavigator(navId) << G4endl; } +#endif G4TouchableHistory* touchHist; touchHist= GetNavigator(navId) -> CreateTouchableHistory(); - // return G4TouchableHandle(touchHist); - //--------> Problem with out of world !! - - // G4TouchableHistory* touchHist= new G4TouchableHistory(); - G4VPhysicalVolume* locatedVolume= fLocatedVolume[navId]; if( locatedVolume == 0 ) - { - // Workaround to ensure that the touchable is fixed !! // TODO: fix - touchHist->UpdateYourself( locatedVolume, - touchHist->GetHistory() ); - } + { + // Workaround to ensure that the touchable is fixed !! // TODO: fix + + touchHist->UpdateYourself( locatedVolume, touchHist->GetHistory() ); + } - if( fVerboseLevel > 2 ) { +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { G4String VolumeName("None"); if( locatedVolume ) { VolumeName= locatedVolume->GetName(); } G4cout << " Touchable History created at address " << touchHist << " volume = " << locatedVolume << " name= " << VolumeName << G4endl; } +#endif return G4TouchableHandle(touchHist); } G4double G4PathFinder::DoNextLinearStep( const G4FieldTrack &initialState, - G4double proposedStepLength - ) + G4double proposedStepLength ) { - // --- - // G4Navigator* navigator; + std::vector::iterator pNavigatorIter; G4double safety= 0.0, step=0.0; - G4double minSafety= DBL_MAX, minStep= DBL_MAX; + G4double minSafety= kInfinity, minStep; - if( fVerboseLevel > 2 ){ + const G4int IdTransport= 0; // Id of Mass Navigator !! + register G4int num=0; + +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { G4cout << " G4PathFinder::DoNextLinearStep : entered " << G4endl; G4cout << " Input field track= " << initialState << G4endl; G4cout << " Requested step= " << proposedStepLength << G4endl; } - - std::vector::iterator pNavigatorIter; - - pNavigatorIter= fpTransportManager-> GetActiveNavigatorsIterator(); +#endif G4ThreeVector initialPosition= initialState.GetPosition(); G4ThreeVector initialDirection= initialState.GetMomentumDirection(); + + G4ThreeVector OriginShift = initialPosition - fPreSafetyLocation; + G4double MagSqShift = OriginShift.mag2() ; + G4double MagShift; // Only given value if it larger than minimum safety - G4int num=0; - for( num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) { - // navigator= this->GetNavigator(num); - safety= DBL_MAX; + G4double fullSafety; // For all geometries, for prestep point - step= - (*pNavigatorIter)->ComputeStep( initialPosition, - initialDirection, - proposedStepLength, - safety ); - if( safety < minSafety ){ minSafety = safety; } - if( step < minStep ) { minStep= step; } - // Later can reduce the proposed step to the latest minStep value + // Potential optimisation using Maximum Value of safety! + // if( MagSqShift >= sqr(fPreSafetyMaxValue ) ){ + // MagShift= kInfinity; // Not a useful value -- all will not use/ignore + // else + // MagShift= std::sqrt(MagSqShift) ; - // if( step == kInfinity ) { step = proposedStepLength; } - fCurrentStepSize[num] = step; - fNewSafety[num]= safety; + MagShift= std::sqrt(MagSqShift) ; + if( MagSqShift >= sqr(fPreSafetyMinValue ) ) + { + fullSafety = 0.0 ; + } + else + { + fullSafety = fPreSafetyMinValue - MagShift; + } - if( fVerboseLevel > 2 ){ - G4cout << "G4PathFinder::DoNextLinearStep : Navigator [" << num << "] -- step size " << step << G4endl; +#ifdef G4PATHFINDER_OPTIMISATION + + if( proposedStepLength < fullSafety ) + { + // Move is smaller than all safeties + // -> so we do not have to move the safety center + + fPreStepCenterRenewed= false; + + for( num=0; num< fNoActiveNavigators; ++num ) + { + fCurrentStepSize[num]= kInfinity; + safety = std::max( 0.0, fPreSafetyValues[num] - MagShift); + minSafety= std::min( safety, minSafety ); + fCurrentPreStepSafety[num]= safety; } - } + minStep= kInfinity; - // Save safety value, related position - fPreStepLocation= initialPosition; - fMinSafety_PreStepPt= minSafety; +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { + G4cout << "G4PathFinder::DoNextLinearStep : Quick Stepping. " << G4endl + << " proposedStepLength " << proposedStepLength + << " < (full) safety = " << fullSafety + << " at " << initialPosition + << G4endl; + } +#endif + } + else +#endif // End of G4PATHFINDER_OPTIMISATION 1 + { + // Move is larger than at least one of the safeties + // -> so we must move the safety center! - // Also store in simple 'safety' status ? - // fMinSafety= minSafety; - // fMinSafety_atSafLocation = minSafety; + fPreStepCenterRenewed= true; + pNavigatorIter= fpTransportManager-> GetActiveNavigatorsIterator(); + + minStep= kInfinity; // Not proposedStepLength; + + for( num=0; num< fNoActiveNavigators; ++pNavigatorIter,++num ) + { + safety = std::max( 0.0, fPreSafetyValues[num] - MagShift); + +#ifdef G4PATHFINDER_OPTIMISATION + if( proposedStepLength <= safety ) // Should be just < safety ? + { + // The Step is guaranteed to be taken + + step= kInfinity; // ComputeStep Would return this + +#ifdef G4DEBUG_PATHFINDER + G4cout.precision(8); + G4cout << "PathFinder::ComputeStep> small proposed step = " + << proposedStepLength + << " <= safety = " << safety << " for nav " << num + << " Step fully taken. " << G4endl; +#endif + } + else +#endif // End of G4PATHFINDER_OPTIMISATION 2 + { +#ifdef G4DEBUG_PATHFINDER + G4double previousSafety= safety; +#endif + step= (*pNavigatorIter)->ComputeStep( initialPosition, + initialDirection, + proposedStepLength, + safety ); + minStep = std::min( step, minStep); + + // TODO: consider whether/how to reduce the proposed step + // to the latest minStep value - to reduce calculations + +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 0) + { + G4cout.precision(8); + G4cout << "PathFinder::ComputeStep> long proposed step = " + << proposedStepLength + << " > safety = " << previousSafety + << " for nav " << num + << " . New safety = " << safety << " step= " << step + << G4endl; + } +#endif + } + fCurrentStepSize[num] = step; + + // Save safety value, must be done for all geometries "together" + // (even if not recomputed using call to ComputeStep) + // since they share the fPreSafetyLocation + + fPreSafetyValues[num]= safety; + fCurrentPreStepSafety[num]= safety; + + minSafety= std::min( safety, minSafety ); + +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { + G4cout << "G4PathFinder::DoNextLinearStep : Navigator [" + << num << "] -- step size " << step << G4endl; + } +#endif + } + + // Only change these when safety is recalculated + // it is good/relevant only for safety calculations + + fPreSafetyLocation= initialPosition; + fPreSafetyMinValue= minSafety; + } // end of else for if( proposedStepLength <= fullSafety) + + // For use in Relocation, need PreStep point location, min-safety + // + fPreStepLocation= initialPosition; + fMinSafety_PreStepPt= minSafety; fMinStep= minStep; - if( fMinStep == kInfinity ){ + if( fMinStep == kInfinity ) + { minStep = proposedStepLength; // Use this below for endpoint !! } fTrueMinStep = minStep; // Set the EndState + G4ThreeVector endPosition; fEndState= initialState; endPosition= initialPosition + minStep * initialDirection ; - if( fVerboseLevel > 1 ){ +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 1 ) + { G4cout << "G4PathFinder::DoNextLinearStep : " << " initialPosition = " << initialPosition << " and endPosition = " << endPosition<< G4endl; } +#endif fEndState.SetPosition( endPosition ); fEndState.SetProperTimeOfFlight( -1.000 ); // Not defined YET - // fEndState.SetMomentum( initialState.GetMomentum ); - this->WhichLimited(); - if( fVerboseLevel > 2 ){ - G4cout << " G4PathFinder::DoNextLinearStep : exits returning " << minStep << G4endl; + if( fNoActiveNavigators == 1 ) + { + G4bool transportLimited = (fMinStep!= kInfinity); + fLimitTruth[IdTransport] = transportLimited; + fLimitedStep[IdTransport] = transportLimited ? kUnique : kDoNot; + + // Set fNoGeometriesLimiting - as WhichLimited does + fNoGeometriesLimiting = transportLimited ? 1 : 0; + } + else + { + WhichLimited(); + } + +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { + G4cout << " G4PathFinder::DoNextLinearStep : exits returning " + << minStep << G4endl; G4cout << " Endpoint values = " << fEndState << G4endl; G4cout << G4endl; } +#endif return minStep; } -void -G4PathFinder::WhichLimited() // Flag which processes limited the step +void G4PathFinder::WhichLimited() { + // Flag which processes limited the step + G4int num=-1, last=-1; - const G4int IdTransport= 0; // Id of Mass Navigator !! G4int noLimited=0; ELimited shared= kSharedOther; - if( fVerboseLevel > 4 ) - G4cout << " G4PathFinder::WhichLimited - entered " << G4endl; + const G4int IdTransport= 0; // Id of Mass Navigator !! // Assume that [IdTransport] is Mass / Transport + // G4bool transportLimited = (fCurrentStepSize[IdTransport] == fMinStep) && ( fMinStep!= kInfinity) ; - if( transportLimited ){ + + if( transportLimited ) { shared= kSharedTransport; } - for ( num= 0; num < fNoActiveNavigators; num++ ) { + for ( num= 0; num < fNoActiveNavigators; num++ ) + { G4bool limitedStep; G4double step= fCurrentStepSize[num]; - // limitedStep = ( step == fMinStep ); limitedStep = ( step == fMinStep ) && ( step != kInfinity); - // if( step == kInfinity ) { fCurrentStepSize[num] = proposedStepLength; } fLimitTruth[ num ] = limitedStep; - if( limitedStep ) { + if( limitedStep ) + { noLimited++; fLimitedStep[num] = shared; last= num; - }else{ + } + else + { fLimitedStep[num] = kDoNot; } } - if( (last > -1) && (noLimited == 1 ) ){ + fNoGeometriesLimiting= noLimited; // Save # processes limiting step + + if( (last > -1) && (noLimited == 1 ) ) + { fLimitedStep[ last ] = kUnique; } -#ifdef G4VERBOSE - if( fVerboseLevel > 1 ){ - this->PrintLimited(); // --> for tracing - if( fVerboseLevel > 4 ) +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 1 ) + { + PrintLimited(); // --> for tracing + if( fVerboseLevel > 4 ) { G4cout << " G4PathFinder::WhichLimited - exiting. " << G4endl; + } } #endif - } -void -G4PathFinder::PrintLimited() +void G4PathFinder::PrintLimited() { // Report results -- for checking + G4cout << "G4PathFinder::PrintLimited reports: " ; G4cout << " Minimum step (true)= " << fTrueMinStep << " reported min = " << fMinStep << G4endl; - if( (fCurrentStepNo <= 2) || (fVerboseLevel>=2) ) { - G4cout << std::setw(5) << " Step#" << " " - << std::setw(5) << " NavId" << " " - << std::setw(12) << " step-size " << " " - << std::setw(12) << " raw-size " << " " - << std::setw(12) << " pre-safety " << " " - << std::setw(15) << " Limited / flag" << " " - << std::setw(15) << " World " << " " - << G4endl; + if( (fCurrentStepNo <= 2) || (fVerboseLevel>=2) ) + { + G4cout << std::setw(5) << " Step#" << " " + << std::setw(5) << " NavId" << " " + << std::setw(12) << " step-size " << " " + << std::setw(12) << " raw-size " << " " + << std::setw(12) << " pre-safety " << " " + << std::setw(15) << " Limited / flag" << " " + << std::setw(15) << " World " << " " + << G4endl; } - int num; - for ( num= 0; num < fNoActiveNavigators; num++ ) { + G4int num; + for ( num= 0; num < fNoActiveNavigators; num++ ) + { G4double rawStep = fCurrentStepSize[num]; G4double stepLen = fCurrentStepSize[num]; - if( stepLen > fTrueMinStep ) { + if( stepLen > fTrueMinStep ) + { stepLen = fTrueMinStep; // did not limit (went as far as asked) } G4int oldPrec= G4cout.precision(9); - // const char *BooleanValue[2] = { " NO", "YES" } ; + G4cout << std::setw(5) << fCurrentStepNo << " " << std::setw(5) << num << " " << std::setw(12) << stepLen << " " << std::setw(12) << rawStep << " " - << std::setw(12) << fNewSafety[num] << " " + << std::setw(12) << fCurrentPreStepSafety[num] << " " << std::setw(5) << (fLimitTruth[num] ? "YES" : " NO") << " "; G4String limitedStr= LimitedString(fLimitedStep[num]); G4cout << " " << std::setw(15) << limitedStr << " "; @@ -838,9 +1133,11 @@ G4PathFinder::PrintLimited() G4Navigator *pNav= GetNavigator( num ); G4String WorldName( "Not-Set" ); - if (pNav) { + if (pNav) + { G4VPhysicalVolume *pWorld= pNav->GetWorldVolume(); - if( pWorld ) { + if( pWorld ) + { WorldName = pWorld->GetName(); } } @@ -849,147 +1146,217 @@ G4PathFinder::PrintLimited() } if( fVerboseLevel > 4 ) + { G4cout << " G4PathFinder::PrintLimited - exiting. " << G4endl; + } } - G4double G4PathFinder::DoNextCurvedStep( const G4FieldTrack &initialState, G4double proposedStepLength, G4VPhysicalVolume* pCurrentPhysicalVolume ) { const G4double toleratedRelativeError= 1.0e-10; - if( fVerboseLevel > 2 ) - G4cout << " G4PathFinder::DoNextCurvedStep ****** " << G4endl; - G4double minStep= DBL_MAX, newSafety=0.0; + G4double minStep= kInfinity, newSafety=0.0; G4int numNav; G4FieldTrack fieldTrack= initialState; + G4ThreeVector startPoint= initialState.GetPosition(); +#ifdef G4DEBUG_PATHFINDER + G4int prc= G4cout.precision(9); if( fVerboseLevel > 2 ) + { + G4cout << " G4PathFinder::DoNextCurvedStep ****** " << G4endl; G4cout << " Initial value of field track is " << fieldTrack << " and proposed step= " << proposedStepLength << G4endl; + } +#endif + + fPreStepCenterRenewed= true; // Always update PreSafety with PreStep point + + if( fNoActiveNavigators > 1 ) + { + // Calculate the safety values before making the step + + G4double minSafety= kInfinity, safety; + for( numNav=0; numNav < fNoActiveNavigators; ++numNav ) + { + safety= fpNavigator[numNav]->ComputeSafety( startPoint ); + fPreSafetyValues[numNav]= safety; + fCurrentPreStepSafety[numNav]= safety; + minSafety = std::min( safety, minSafety ); + } + + // Save safety value, related position + + fPreSafetyLocation= startPoint; + fPreSafetyMinValue= minSafety; + fPreStepLocation= startPoint; + fMinSafety_PreStepPt= minSafety; + } // Allow Propagator In Field to do the hard work, calling G4MultiNavigator + // minStep= fpFieldPropagator->ComputeStep( fieldTrack, proposedStepLength, newSafety, pCurrentPhysicalVolume ); + // fieldTrack now contains the endpoint information + // fEndState= fieldTrack; fMinStep= minStep; fTrueMinStep = std::min( minStep, proposedStepLength ); - if( fVerboseLevel > 2 ){ + if( fNoActiveNavigators== 1 ) + { + // Update the 'PreSafety' sphere - as any ComputeStep was called + // (must be done anyway in field) + + fPreSafetyValues[0]= newSafety; + fPreSafetyLocation= startPoint; + fPreSafetyMinValue= newSafety; + + // Update the current 'PreStep' point's values - mandatory + // + fCurrentPreStepSafety[0]= newSafety; + fPreStepLocation= startPoint; + fMinSafety_PreStepPt= newSafety; + } + +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { G4cout << "G4PathFinder::DoNextCurvedStep : " << G4endl << " initialState = " << initialState << G4endl << " and endState = " << fEndState << G4endl; - G4cout << "G4PathFinder::DoNextCurvedStep : " - << " minStep = " << minStep - << " proposedStepLength " << proposedStepLength - << " safety = " << newSafety << G4endl; + << " minStep = " << minStep + << " proposedStepLength " << proposedStepLength + << " safety = " << newSafety << G4endl; } - G4double currentStepSize = 0; - if( minStep < proposedStepLength ) { // if == , then a boundary found at end ?? - +#endif + G4double currentStepSize; // = 0.0; + if( minStep < proposedStepLength ) // if == , then a boundary found at end ?? + { // Recover the remaining information from MultiNavigator - // especially regarding which Navigator limited the step - for( numNav=0; numNav < fNoActiveNavigators; ++numNav ) { + // especially regarding which Navigator limited the step + + G4int noLimited= 0; // No geometries limiting step + for( numNav=0; numNav < fNoActiveNavigators; ++numNav ) + { G4double finalStep, lastPreSafety=0.0, minStepLast; ELimited didLimit; + G4bool limited; finalStep= fpMultiNavigator->ObtainFinalStep( numNav, lastPreSafety, minStepLast, didLimit ); + + // Calculate the step for this geometry, using the + // final step (the only one which can differ.) + currentStepSize = fTrueMinStep; G4double diffStep= 0.0; - if( (minStepLast != kInfinity) ){ + if( (minStepLast != kInfinity) ) + { diffStep = (finalStep-minStepLast); if ( std::abs(diffStep) <= toleratedRelativeError * finalStep ) - { diffStep = 0.0; } + { + diffStep = 0.0; + } currentStepSize += diffStep; } fCurrentStepSize[numNav] = currentStepSize; - // if( (currentStepSize < 0) || (diffStep < 0) ) { } - - // fNewSafety[numNav]= preSafety; - fNewSafety[numNav]= 0.0; - // TODO: improve this safety !! - // Currently would need to call ComputeSafety at start or endpoint - // endSafety= fpNavigator[numNav]->ComputeSafety( endPoint ); - // ... - // else + // TODO: could refine the way to obtain safeties for > 1 geometries // - for pre step safety // notify MultiNavigator about new set of sub-steps // allow it to return this value in ObtainFinalStep // instead of lastPreSafety (or as well?) // - for final step start (available) // get final Step start from MultiNavigator + // and corresponding safety values + // and/or ALSO calculate ComputeSafety at endpoint + // endSafety= fpNavigator[numNav]->ComputeSafety( endPoint ); + fLimitedStep[numNav] = didLimit; - fLimitTruth[numNav] = (didLimit != kDoNot ); - + fLimitTruth[numNav] = limited = (didLimit != kDoNot ); + if( limited ) { noLimited++; } + +#ifdef G4DEBUG_PATHFINDER G4bool StepError= (currentStepSize < 0) || ( (minStepLast != kInfinity) && (diffStep < 0) ) ; - if( StepError || (fVerboseLevel > 2) ){ - - // G4String& LimitedString( ELimited lim ); + if( StepError || (fVerboseLevel > 2) ) + { G4String limitedString= LimitedString( fLimitedStep[numNav] ); - G4cout << " G4PathFinder::ComputeStep. Geometry " << numNav << " step= " << fCurrentStepSize[numNav] + G4cout << " G4PathFinder::ComputeStep. Geometry " << numNav + << " step= " << fCurrentStepSize[numNav] << " from final-step= " << finalStep << " fTrueMinStep= " << fTrueMinStep << " minStepLast= " << minStepLast - << " limited = " << (fLimitTruth[numNav] ? "YES" : " NO") << " "; - G4cout << " status = " << limitedString << " #= " << didLimit << G4endl; + << " limited = " << (fLimitTruth[numNav] ? "YES" : " NO") + << " "; + G4cout << " status = " << limitedString << " #= " << didLimit + << G4endl; - if( StepError ) { - G4cerr << " currentStepSize = " << currentStepSize + if( StepError ) + { + G4cerr << " currentStepSize = " << currentStepSize << " diffStep= " << diffStep << G4endl; - G4cerr << "ERROR in computing step size for this navigator." << G4endl; - G4Exception( "G4PathFinder::DoNextCurvedStep", "207-StepGoingBackwards", - FatalException, - "Incorrect calculation of step size for one navigator" ); - } + G4cerr << "ERROR in computing step size for this navigator." + << G4endl; + G4Exception("G4PathFinder::DoNextCurvedStep", + "207-StepGoingBackwards", FatalException, + "Incorrect calculation of step size for one navigator"); + } } - +#endif } // for num Navigators + fNoGeometriesLimiting= noLimited; // Save # processes limiting step } - // else if ( minStep > proposedStepLength ) { // ie minStep == kInfinity else if ( (minStep == proposedStepLength) || (minStep == kInfinity) - || ( std::abs(minStep-proposedStepLength) < toleratedRelativeError * proposedStepLength ) - ) { + || ( std::abs(minStep-proposedStepLength) + < toleratedRelativeError * proposedStepLength ) ) + { // In case the step was not limited, use default responses // --> all Navigators // Also avoid problems in case of PathFinder using safety to optimise // - it is possible that the Navigators were not called // if the safety was already satisfactory. // (In that case calling ObtainFinalStep gives invalid results.) - currentStepSize= minStep; - for( numNav=0; numNav < fNoActiveNavigators; ++numNav ) { + + currentStepSize= minStep; + for( numNav=0; numNav < fNoActiveNavigators; ++numNav ) + { fCurrentStepSize[numNav] = minStep; - fNewSafety[numNav]= 0.0; - // Improve it -- see TODO above + // Safety for endpoint ?? // Can eventuall improve it -- see TODO above fLimitedStep[numNav] = kDoNot; fLimitTruth[numNav] = false; } + fNoGeometriesLimiting= 0; // Save # processes limiting step } - else{ // (minStep > proposedStepLength) and not (minStep == kInfinity) + else // (minStep > proposedStepLength) and not (minStep == kInfinity) + { G4cerr << G4endl; - G4cerr << "ERROR in G4PathFinder::DoNextCurvedStep " - << " currentStepSize = " << minStep << " is larger than " - << " proposed StepSize = " << proposedStepLength - << G4endl; - G4Exception( "G4PathFinder::DoNextCurvedStep", "208-StepLongerThanRequested", - FatalException, - "Incorrect calculation of step size for one navigator" ); + G4cerr << "ERROR - G4PathFinder::DoNextCurvedStep()" << G4endl + << " currentStepSize = " << minStep << " is larger than " + << " proposed StepSize = " << proposedStepLength << "." << G4endl; + G4Exception("G4PathFinder::DoNextCurvedStep()", + "208-StepLongerThanRequested", FatalException, + "Incorrect calculation of step size for one navigator."); } - if( fVerboseLevel > 2 ){ +#ifdef G4DEBUG_PATHFINDER + if( fVerboseLevel > 2 ) + { G4cout << " Exiting G4PathFinder::DoNextCurvedStep " << G4endl; PrintLimited(); } + G4cout.precision(prc); +#endif return minStep; } @@ -1003,7 +1370,8 @@ G4String& G4PathFinder::LimitedString( ELimited lim ) StrSharedOther("SharedOther"); G4String* limitedStr; - switch ( lim ) { + switch ( lim ) + { case kDoNot: limitedStr= &StrDoNot; break; case kUnique: limitedStr = &StrUnique; break; case kSharedTransport: limitedStr= &StrSharedTransport; break; @@ -1013,26 +1381,12 @@ G4String& G4PathFinder::LimitedString( ELimited lim ) return *limitedStr; } -#if 0 -// Potential extension ..... ?? - // Return relevant step - // When no field exists or the particle has no charge or EM moment - -G4double -G4PathFinder::ComputeLinearStep(const G4ThreeVector &pGlobalPoint, - const G4ThreeVector &pDirection, - G4double pCurrentProposedStepLength, - G4double &pNewSafety, - G4bool &limitedStep, - G4int stepNo, // See next step/check - G4int navId ) +void G4PathFinder::PushPostSafetyToPreSafety() { - G4cout << pGlobalPoint << pDirection << pCurrentProposedStepLength - << pNewSafety << limitedStep << stepNo << navId << G4endl; - - G4cout << " G4PathFinder::ComputeLinearStep" << G4endl; - G4Exception( " G4PathFinder::ComputeLinearStep is Null", "203-No Method", - FatalException, "G4PathFinder::ComputeLinearStep is Null" ); - return 0.500 * pCurrentProposedStepLength; + fPreSafetyLocation= fSafetyLocation; + fPreSafetyMinValue= fMinSafety_atSafLocation; + for( register G4int nav=0; nav < fNoActiveNavigators; ++nav ) + { + fPreSafetyValues[nav]= fNewSafetyComputed[nav]; + } } -#endif diff --git a/source/geometry/navigation/src/G4PhantomParameterisation.cc b/source/geometry/navigation/src/G4PhantomParameterisation.cc new file mode 100755 index 0000000000..5eca150df4 --- /dev/null +++ b/source/geometry/navigation/src/G4PhantomParameterisation.cc @@ -0,0 +1,378 @@ +// +// ******************************************************************** +// * 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: G4PhantomParameterisation.cc,v 1.2 2007/12/10 16:29:59 gunter Exp $ +// GEANT4 tag $ Name:$ +// +// class G4PhantomParameterisation implementation +// +// Author: Pedro Arce, May 2007 +// +// -------------------------------------------------------------------- + +#include "G4PhantomParameterisation.hh" + +#include "globals.hh" +#include "G4VSolid.hh" +#include "G4VPhysicalVolume.hh" +#include "G4LogicalVolume.hh" +#include "G4VVolumeMaterialScanner.hh" +#include "G4GeometryTolerance.hh" + +//------------------------------------------------------------------ +G4PhantomParameterisation::G4PhantomParameterisation() +{ + // Initialise data + // + fMaterialIndices = 0; + fContainerWallX = 0.; + fContainerWallY = 0.; + fContainerWallZ = 0.; + + kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); + + bSkipEqualMaterials = 1; +} + + +//------------------------------------------------------------------ +G4PhantomParameterisation::~G4PhantomParameterisation() +{ +} + + +//------------------------------------------------------------------ +void G4PhantomParameterisation:: +BuildContainerSolid( G4VPhysicalVolume *pMotherPhysical ) +{ + fContainerSolid = pMotherPhysical->GetLogicalVolume()->GetSolid(); + fContainerWallX = fNoVoxelX * fVoxelHalfX; + fContainerWallY = fNoVoxelY * fVoxelHalfY; + fContainerWallZ = fNoVoxelZ * fVoxelHalfZ; + + // CheckVoxelsFillContainer(); +} + + +//------------------------------------------------------------------ +void G4PhantomParameterisation:: +ComputeTransformation(const G4int copyNo, G4VPhysicalVolume *physVol ) const +{ + // Voxels cannot be rotated, return translation + // + G4ThreeVector trans = GetTranslation( copyNo ); + + physVol->SetTranslation( trans ); +} + + +//------------------------------------------------------------------ +G4ThreeVector G4PhantomParameterisation:: +GetTranslation(const G4int copyNo ) const +{ + CheckCopyNo( copyNo ); + + size_t nx; + size_t ny; + size_t nz; + + ComputeVoxelIndices( copyNo, nx, ny, nz ); + + G4ThreeVector trans( (2*nx+1)*fVoxelHalfX - fContainerWallX, + (2*ny+1)*fVoxelHalfY - fContainerWallY, + (2*nz+1)*fVoxelHalfZ - fContainerWallZ); + return trans; +} + + +//------------------------------------------------------------------ +G4VSolid* G4PhantomParameterisation:: +ComputeSolid(const G4int, G4VPhysicalVolume *pPhysicalVol) +{ + return pPhysicalVol->GetLogicalVolume()->GetSolid(); +} + + +//------------------------------------------------------------------ +G4Material* G4PhantomParameterisation:: +ComputeMaterial(const G4int copyNo, G4VPhysicalVolume *, const G4VTouchable *) +{ + CheckCopyNo( copyNo ); + size_t matIndex = GetMaterialIndex(copyNo); + + return fMaterials[ matIndex ]; +} + + +//------------------------------------------------------------------ +size_t G4PhantomParameterisation:: +GetMaterialIndex( size_t copyNo ) const +{ + CheckCopyNo( copyNo ); + + return *(fMaterialIndices+copyNo); +} + + +//------------------------------------------------------------------ +size_t G4PhantomParameterisation:: +GetMaterialIndex( size_t nx, size_t ny, size_t nz ) const +{ + size_t copyNo = nx + fNoVoxelX*ny + fNoVoxelXY*nz; + return GetMaterialIndex( copyNo ); +} + + +//------------------------------------------------------------------ +G4Material* G4PhantomParameterisation::GetMaterial( size_t nx, size_t ny, size_t nz) const +{ + return fMaterials[GetMaterialIndex(nx,ny,nz)]; +} + +//------------------------------------------------------------------ +G4Material* G4PhantomParameterisation::GetMaterial( size_t copyNo ) const +{ + return fMaterials[GetMaterialIndex(copyNo)]; +} + +//------------------------------------------------------------------ +void G4PhantomParameterisation:: +ComputeVoxelIndices(const G4int copyNo, size_t& nx, + size_t& ny, size_t& nz ) const +{ + CheckCopyNo( copyNo ); + nx = size_t(copyNo%fNoVoxelX); + ny = size_t( (copyNo/fNoVoxelX)%fNoVoxelY ); + nz = size_t(copyNo/fNoVoxelXY); +} + + +//------------------------------------------------------------------ +void G4PhantomParameterisation:: +CheckVoxelsFillContainer( G4double contX, G4double contY, G4double contZ ) const +{ + G4double toleranceForWarning = 0.25*kCarTolerance; + + // Any bigger value than 0.25*kCarTolerance will give a warning in + // G4NormalNavigation::ComputeStep(), because the Inverse of a container + // translation that is Z+epsilon gives -Z+epsilon (and the maximum tolerance + // in G4Box::Inside is 0.5*kCarTolerance + // + G4double toleranceForError = 1.*kCarTolerance; + + // Any bigger value than kCarTolerance will give an error in GetReplicaNo() + // + if( std::fabs(contX-fNoVoxelX*fVoxelHalfX) >= toleranceForError + || std::fabs(contY-fNoVoxelY*fVoxelHalfY) >= toleranceForError + || std::fabs(contZ-fNoVoxelZ*fVoxelHalfZ) >= toleranceForError ) + { + G4cerr << "ERROR - G4PhantomParameterisation::CheckVoxelsFillContainer()" + << G4endl + << " Voxels do not fully fill the container: " + << fContainerSolid->GetName() << G4endl + << " DiffX= " << contX-fNoVoxelX*fVoxelHalfX << G4endl + << " DiffY= " << contY-fNoVoxelY*fVoxelHalfY << G4endl + << " DiffZ= " << contZ-fNoVoxelZ*fVoxelHalfZ << G4endl + << " Maximum difference is: " << toleranceForError << G4endl; + G4Exception("G4PhantomParameterisation::CheckVoxelsFillContainer()", + "InvalidSetup", FatalException, + "Voxels do not fully fill the container!"); + + } + else if( std::fabs(contX-fNoVoxelX*fVoxelHalfX) >= toleranceForWarning + || std::fabs(contY-fNoVoxelY*fVoxelHalfY) >= toleranceForWarning + || std::fabs(contZ-fNoVoxelZ*fVoxelHalfZ) >= toleranceForWarning ) + { + G4cerr << "WARNING - G4PhantomParameterisation::CheckVoxelsFillContainer()" + << G4endl + << " Voxels do not fully fill the container: " + << fContainerSolid->GetName() << G4endl + << " DiffX= " << contX-fNoVoxelX*fVoxelHalfX << G4endl + << " DiffY= " << contY-fNoVoxelY*fVoxelHalfY << G4endl + << " DiffZ= " << contZ-fNoVoxelZ*fVoxelHalfZ << G4endl + << " Maximum difference is: " << toleranceForWarning + << G4endl; + G4Exception("G4PhantomParameterisation::CheckVoxelsFillContainer()", + "InvalidSetup", JustWarning, + "Voxels do not fully fill the container!"); + } +} + + +//------------------------------------------------------------------ +G4int G4PhantomParameterisation:: +GetReplicaNo( const G4ThreeVector& localPoint, const G4ThreeVector& localDir ) +{ + + // Check first that point is really inside voxels + // + if( fContainerSolid->Inside( localPoint ) == kOutside ) + { + G4cerr << "ERROR - G4PhantomParameterisation::GetReplicaNo()" << G4endl + << " localPoint - " << localPoint + << " - is outside container solid: " + << fContainerSolid->GetName() << G4endl; + G4Exception("G4PhantomParameterisation::GetReplicaNo()", "InvalidSetup", + FatalErrorInArgument, "Point outside voxels!"); + } + + // Check the voxel numbers corresponding to localPoint + // When a particle is on a surface, it may be between -kCarTolerance and + // +kCartolerance. By a simple distance as: + // G4int nx = G4int( (localPoint.x()+)/fVoxelHalfX/2.); + // those between -kCartolerance and 0 will be placed on voxel N-1 and those + // between 0 and kCarTolerance on voxel N. + // To avoid precision problems place the tracks that are on the surface on + // voxel N-1 if they have negative direction and on voxel N if they have + // positive direction. + // Add +kCarTolerance so that they are first placed on voxel N, and then + // if the direction is negative substract 1 + + G4double fx = (localPoint.x()+fContainerWallX+kCarTolerance)/fVoxelHalfX/2.; + G4int nx = G4int(fx); + + G4double fy = (localPoint.y()+fContainerWallY+kCarTolerance)/fVoxelHalfY/2.; + G4int ny = G4int(fy); + + G4double fz = (localPoint.z()+fContainerWallZ+kCarTolerance)/fVoxelHalfZ/2.; + G4int nz = G4int(fz); + + // If it is on the surface side, check the direction: if direction is + // negative place it on the previous voxel (if direction is positive it is + // already in the next voxel...). + // NOTE: Sometimes this algorithm gives nx = -1, it is always traced to be + // due to multiple scattering: track is entering a voxel but multiple + // scattering changes the angle towards outside + // + if( fx - nx < kCarTolerance/fVoxelHalfX ) + { + if( localDir.x() < 0 ) + { + if( nx != 0 ) + { + nx -= 1; + } + else + { + } + } + } + if( fy - ny < kCarTolerance/fVoxelHalfY ) + { + if( localDir.y() < 0 ) + { + if( ny != 0 ) + { + ny -= 1; + } + else + { + } + } + } + if( fz - nz < kCarTolerance/fVoxelHalfZ ) + { + if( localDir.z() < 0 ) + { + if( nz != 0 ) + { + nz -= 1; + } + else + { + } + } + } + + G4int copyNo = nx + fNoVoxelX*ny + fNoVoxelXY*nz; + + // Correct precision problems + // + if( copyNo < 0 || copyNo >= G4int(fNoVoxel) ) + { + G4bool isOK = true; + if( nx < 0 ) + { + nx = 0; + isOK = false; + } + else if( nx >= G4int(fNoVoxelX) ) + { + nx = fNoVoxelX-1; + isOK = false; + } + if( ny < 0 ) + { + ny = 0; + isOK = false; + } + else if( ny >= G4int(fNoVoxelY) ) + { + ny = fNoVoxelY-1; + isOK = false; + } + if( nz < 0 ) + { + nz = 0; + isOK = false; + } + else if( nz >= G4int(fNoVoxelZ) ) + { + nz = fNoVoxelZ-1; + isOK = false; + } + if( !isOK ) + { + G4cerr << "WARNING - G4PhantomParameterisation::GetReplicaNo()" << G4endl + << " LocalPoint: " << localPoint << G4endl + << " Voxel container size: " << fContainerWallX + << " " << fContainerWallY << " " << fContainerWallZ << G4endl; + G4Exception("G4PhantomParameterisation::GetReplicaNo()", + "Wrong-copy-number", JustWarning, + "Corrected the copy numbe! It was negative or too big"); + copyNo = nx + fNoVoxelX*ny + fNoVoxelXY*nz; + } + } + + CheckCopyNo( copyNo ); // not needed, just for debugging code + + return copyNo; +} + + +//------------------------------------------------------------------ +void G4PhantomParameterisation::CheckCopyNo( const G4int copyNo ) const +{ + if( copyNo < 0 || copyNo >= G4int(fNoVoxel) ) + { + G4cerr << "ERROR - G4PhantomParameterisation::CheckCopyNo()" << G4endl + << " Copy number: " << copyNo << G4endl + << " Total number of voxels: " << fNoVoxel << G4endl; + G4Exception("G4PhantomParameterisation::CheckCopyNo()", + "Wrong-copy-number", FatalErrorInArgument, + "Copy number is negative or too big!"); + } +} diff --git a/source/geometry/navigation/src/G4PropagatorInField.cc b/source/geometry/navigation/src/G4PropagatorInField.cc index a62030951a..8334430326 100644 --- a/source/geometry/navigation/src/G4PropagatorInField.cc +++ b/source/geometry/navigation/src/G4PropagatorInField.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PropagatorInField.cc,v 1.35 2007/06/08 10:05:46 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PropagatorInField.cc,v 1.40 2007/11/16 09:39:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // This class implements an algorithm to track a particle in a @@ -506,6 +506,21 @@ G4PropagatorInField::LocateIntersectionPoint( G4int depth=0; // Depth counts how many subdivisions of initial step made +#ifdef G4DEBUG_FIELD + static G4double tolerance= 1.0e-8; + G4ThreeVector StartPosition= CurveStartPointVelocity.GetPosition(); + if( (TrialPoint - StartPosition).mag() < tolerance * mm ) + { + G4cerr << "WARNING - G4PropagatorInField::LocateIntersectionPoint()" + << G4endl + << " Intermediate F point is on top of starting point A." + << G4endl; + G4Exception("G4PropagatorInField::LocateIntersectionPoint()", + "IntersectionPointIsAtStart", JustWarning, + "Intersection point F is exactly at start point A." ); + } +#endif + // Intermediates Points on the Track = Subdivided Points must be stored. // Give the initial values to 'InterMedFt' // Important is 'ptrInterMedFT[0]', it saves the 'EndCurvePoint' @@ -520,7 +535,6 @@ G4PropagatorInField::LocateIntersectionPoint( // G4FieldTrack SubStart_PointVelocity = CurveStartPointVelocity; - do { G4int substep_no_p = 0; @@ -542,11 +556,13 @@ G4PropagatorInField::LocateIntersectionPoint( // The above method is the key & most intuitive part ... #ifdef G4DEBUG_FIELD -`` if( ApproxIntersecPointV.GetCurveLength() > - CurrentB_PointVelocity.GetCurveLength() * (1.0 + kAngTolerance) ) + if( ApproxIntersecPointV.GetCurveLength() > + CurrentB_PointVelocity.GetCurveLength() * (1.0 + tolerance) ) { - G4cerr << "Error - Intermediate F point is more advanced than endpoint B." - << G4endl; + G4cerr << "ERROR - G4PropagatorInField::LocateIntersectionPoint()" + << G4endl + << " Intermediate F point is more advanced than" + << " endpoint B." << G4endl; G4Exception("G4PropagatorInField::LocateIntersectionPoint()", "IntermediatePointConfusion", FatalException, "Intermediate F point is past end B point" ); @@ -723,14 +739,17 @@ G4PropagatorInField::LocateIntersectionPoint( } if( curveDist < 0.0 ) { - G4cerr << "G4PropagatorInField::LocateIntersectionPoint():" << G4endl - << "Error in advancing propagation." << G4endl; + G4cerr << "ERROR - G4PropagatorInField::LocateIntersectionPoint()" + << G4endl + << " Error in advancing propagation." << G4endl; fVerboseLevel = 5; // Print out a maximum of information printStatus( CurrentA_PointVelocity, CurrentB_PointVelocity, -1.0, NewSafety, substep_no, 0 ); - G4cerr << " Point A (start) is " << CurrentA_PointVelocity << G4endl; - G4cerr << " Point B (end) is " << CurrentB_PointVelocity << G4endl; - G4cerr << " curveDist is " << curveDist << G4endl; + G4cerr << " Point A (start) is " << CurrentA_PointVelocity + << G4endl; + G4cerr << " Point B (end) is " << CurrentB_PointVelocity + << G4endl; + G4cerr << " Curve distance is " << curveDist << G4endl; G4cerr << G4endl << "The final curve point is not further along" << " than the original!" << G4endl; @@ -1248,15 +1267,15 @@ ReEstimateEndpoint( const G4FieldTrack &CurrentStateA, #endif #ifdef G4DEBUG_FIELD - G4double lengthDone= newEndPoint.GetCurveLength() - - CurrentStateA.GetCurveLength(); + G4double lengthDone = newEndPoint.GetCurveLength() + - CurrentStateA.GetCurveLength(); if( !goodAdvance ) { if( fVerboseLevel >= 3 ) { G4cout << MethodName << "> AccurateAdvance failed " ; - G4cout << " in " << itrial << " integration trials/steps. " << G4endl - G4cout << " It went only " << lengthDone << " instead of " << curveDist + G4cout << " in " << itrial << " integration trials/steps. " << G4endl; + G4cout << " It went only " << lengthDone << " instead of " << curveDist << " -- a difference of " << curveDist - lengthDone << G4endl; G4cout << " ReEstimateEndpoint> Reset endPoint to original value!" << G4endl; @@ -1366,17 +1385,17 @@ FindAndSetFieldManager( G4VPhysicalVolume* pCurrentPhysicalVolume) return currentFieldMgr; } -G4int G4PropagatorInField::SetVerboseLevel( G4int Verbose ) +G4int G4PropagatorInField::SetVerboseLevel( G4int level ) { G4int oldval= fVerboseLevel; - fVerboseLevel= Verbose; + fVerboseLevel= level; // Forward the verbose level 'reduced' to ChordFinder, // MagIntegratorDriver ... ? // G4MagInt_Driver* integrDriver= GetChordFinder()->GetIntegrationDriver(); - integrDriver->SetVerboseLevel( Verbose - 2 ); - G4cout << "Set Driver verbosity to " << Verbose - 2 << G4endl; + integrDriver->SetVerboseLevel( fVerboseLevel - 2 ); + G4cout << "Set Driver verbosity to " << fVerboseLevel - 2 << G4endl; return oldval; } diff --git a/source/geometry/navigation/src/G4RegularNavigation.cc b/source/geometry/navigation/src/G4RegularNavigation.cc new file mode 100755 index 0000000000..169a391208 --- /dev/null +++ b/source/geometry/navigation/src/G4RegularNavigation.cc @@ -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: G4RegularNavigation.cc,v 1.7 2007/12/10 16:30:01 gunter Exp $ +// GEANT4 tag $ Name:$ +// +// class G4RegularNavigation implementation +// +// Author: Pedro Arce, May 2007 +// +// -------------------------------------------------------------------- + +#include "G4RegularNavigation.hh" +#include "G4TouchableHistory.hh" +#include "G4PhantomParameterisation.hh" +#include "G4Material.hh" +#include "G4NormalNavigation.hh" +#include "G4Navigator.hh" +#include "G4GeometryTolerance.hh" + +//------------------------------------------------------------------ +G4RegularNavigation::G4RegularNavigation() + : fVerbose(1), fCheck(true) +{ + kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); +} + + +//------------------------------------------------------------------ +G4RegularNavigation::~G4RegularNavigation() +{ +} + + +//------------------------------------------------------------------ +G4double G4RegularNavigation:: + ComputeStep(const G4ThreeVector& localPoint, + const G4ThreeVector& localDirection, + const G4double currentProposedStepLength, + G4double& newSafety, + G4NavigationHistory& history, + G4bool& validExitNormal, + G4ThreeVector& exitNormal, + G4bool& exiting, + G4bool& entering, + G4VPhysicalVolume *(*pBlockedPhysical), + G4int& blockedReplicaNo) +{ + // This method is never called because to be called the daughter has to be + // a regular structure. This would only happen if the track is in the mother + // of voxels volume. But the voxels fill completely their mother, so when a + // track enters the mother it automatically enters a voxel. Only precision + // problems would make this method to be called + + G4ThreeVector globalPoint = + history.GetTopTransform().Inverse().TransformPoint(localPoint); + G4ThreeVector globalDirection = + history.GetTopTransform().Inverse().TransformAxis(localDirection); + + G4ThreeVector localPoint2 = localPoint; // take away constantness + + LevelLocate( history, *pBlockedPhysical, blockedReplicaNo, + globalPoint, &globalDirection, true, localPoint2 ); + + + // Get in which voxel it is + // + G4VPhysicalVolume *motherPhysical, *daughterPhysical; + G4LogicalVolume *motherLogical; + motherPhysical = history.GetTopVolume(); + motherLogical = motherPhysical->GetLogicalVolume(); + daughterPhysical = motherLogical->GetDaughter(0); + + G4PhantomParameterisation * daughterParam = + (G4PhantomParameterisation*)(daughterPhysical->GetParameterisation()); + G4int copyNo = daughterParam ->GetReplicaNo(localPoint,localDirection); + + G4ThreeVector voxelTranslation = daughterParam->GetTranslation( copyNo ); + G4ThreeVector daughterPoint = localPoint - voxelTranslation; + + + // Compute step in voxel + // + return fnormalNav->ComputeStep(daughterPoint, + localDirection, + currentProposedStepLength, + newSafety, + history, + validExitNormal, + exitNormal, + exiting, + entering, + pBlockedPhysical, + blockedReplicaNo); +} + + +//------------------------------------------------------------------ +G4double G4RegularNavigation::ComputeStepSkippingEqualMaterials( + G4ThreeVector localPoint, + const G4ThreeVector& localDirection, + const G4double currentProposedStepLength, + G4double& newSafety, + G4NavigationHistory& history, + G4bool& validExitNormal, + G4ThreeVector& exitNormal, + G4bool& exiting, + G4bool& entering, + G4VPhysicalVolume *(*pBlockedPhysical), + G4int& blockedReplicaNo, + G4VPhysicalVolume* pCurrentPhysical) +{ + G4PhantomParameterisation *param = + (G4PhantomParameterisation*)(pCurrentPhysical->GetParameterisation()); + + if( !param->SkipEqualMaterials() ) { + return fnormalNav->ComputeStep(localPoint, + localDirection, + currentProposedStepLength, + newSafety, + history, + validExitNormal, + exitNormal, + exiting, + entering, + pBlockedPhysical, + blockedReplicaNo); + } + + + G4double ourStep = 0.; + + // To get replica No: transform local point to the reference system of the + // param container volume + // + G4int ide = history.GetDepth(); + G4ThreeVector containerPoint = history.GetTransform(ide).Inverse().TransformPoint(localPoint); + + // Point in global frame + // + containerPoint = history.GetTransform(ide).Inverse().TransformPoint(localPoint); + + // Point in voxel parent volume frame + // + containerPoint = history.GetTransform(ide-1).TransformPoint(containerPoint); + + // Store previous voxel translation to move localPoint by the difference + // with the new one + // + G4ThreeVector prevVoxelTranslation = containerPoint - localPoint; + + // Do not use the expression below: There are cases where the + // fLastLocatedPointLocal does not give the correct answer + // (particle reaching a wall and bounced back, particle travelling through + // the wall that is deviated in an step, ...; these are pathological cases + // that give wrong answers in G4PhantomParameterisation::GetReplicaNo() + // + // G4ThreeVector prevVoxelTranslation = param->GetTranslation( copyNo ); + + G4int copyNo = param->GetReplicaNo(containerPoint,localDirection); + + G4Material* currentMate = param->ComputeMaterial( copyNo, 0, 0 ); + G4VSolid* voxelBox = pCurrentPhysical->GetLogicalVolume()->GetSolid(); + + G4VSolid* containerSolid = param->GetContainerSolid(); + G4Material* nextMate; + G4bool bLocatedOnEdge = false; + G4bool bFirstStep = true; + G4double newStep; + G4double totalNewStep = 0.; + + // Loop while same material is found + // + for( ;; ) + { + newStep = voxelBox->DistanceToOut( localPoint, localDirection ); + if( (bFirstStep) && (newStep < currentProposedStepLength) ) + { + exiting = true; + } + bFirstStep = false; + + newStep += kCarTolerance; // Avoid precision problems + ourStep += newStep; + totalNewStep += newStep; + + // Physical process is limiting the step, don't continue + // + if(std::fabs(totalNewStep-currentProposedStepLength) < kCarTolerance) + { + return currentProposedStepLength; + } + + // Move container point until wall of voxel + // + containerPoint += newStep*localDirection; + if( containerSolid->Inside( containerPoint ) != kInside ) + { + bLocatedOnEdge = true; // NEEDED?? + break; + } + + // Get copyNo and translation of new voxel + // + copyNo = param->GetReplicaNo(containerPoint,localDirection); + G4ThreeVector voxelTranslation = param->GetTranslation( copyNo ); + + // Move local point until wall of voxel and then put it in the new voxel + // local coordinates + // + localPoint += newStep*localDirection; + localPoint += prevVoxelTranslation - voxelTranslation; + + prevVoxelTranslation = voxelTranslation; + + // Check if material of next voxel is the same as that of the current voxel + nextMate = param->ComputeMaterial( copyNo, 0, 0 ); + + if( currentMate != nextMate ) { break; } + } + + return ourStep; +} + + +//------------------------------------------------------------------ +G4double +G4RegularNavigation::ComputeSafety(const G4ThreeVector& localPoint, + const G4NavigationHistory& history, + const G4double pMaxLength) +{ + // This method is never called because to be called the daughter has to be a + // regular structure. This would only happen if the track is in the mother of + // voxels volume. But the voxels fill completely their mother, so when a + // track enters the mother it automatically enters a voxel. Only precision + // problems would make this method to be called + + // Compute step in voxel + // + return fnormalNav->ComputeSafety(localPoint, + history, + pMaxLength ); +} + + +//------------------------------------------------------------------ +G4bool +G4RegularNavigation::LevelLocate( G4NavigationHistory& history, + const G4VPhysicalVolume* , + const G4int , + const G4ThreeVector& globalPoint, + const G4ThreeVector* globalDirection, + const G4bool pLocatedOnEdge, + G4ThreeVector& localPoint ) +{ + G4SmartVoxelHeader *motherVoxelHeader; + G4VPhysicalVolume *motherPhysical, *pPhysical; + G4PhantomParameterisation *pParam; + G4LogicalVolume *motherLogical; + G4VSolid *pSolid; + G4ThreeVector localDir; + G4int replicaNo; + + motherPhysical = history.GetTopVolume(); + motherLogical = motherPhysical->GetLogicalVolume(); + motherVoxelHeader = motherLogical->GetVoxelHeader(); + + pPhysical = motherLogical->GetDaughter(0); + pParam = (G4PhantomParameterisation*)(pPhysical->GetParameterisation()); + + pSolid = pParam->GetContainerSolid(); + + // Save parent history in touchable history + // ... for use as parent t-h in ComputeMaterial method of param + // + G4TouchableHistory parentTouchable( history ); + + // Get local direction + // + if( globalDirection ) + { + localDir = history.GetTopTransform().TransformAxis(*globalDirection); + } + else + { + localDir = G4ThreeVector(0.,0.,0.); + } + + // Check that track is not on the surface and check that track is not + // exiting the voxel parent volume + // + if ( !G4AuxiliaryNavServices::CheckPointOnSurface(pSolid, localPoint, + globalDirection, history.GetTopTransform(), pLocatedOnEdge) + || G4AuxiliaryNavServices::CheckPointExiting(pSolid, localPoint, + globalDirection, history.GetTopTransform() ) ) + { + } + else + { + // Enter this daughter + // + replicaNo = pParam->GetReplicaNo( localPoint, localDir ); + + if( replicaNo < 0 || replicaNo >= G4int(pParam->GetNoVoxel()) ) + { + return false; + } + + // Set the correct copy number in physical + // + pPhysical->SetCopyNo(replicaNo); + pParam->ComputeTransformation(replicaNo,pPhysical); + + history.NewLevel(pPhysical, kParameterised, replicaNo ); + localPoint = history.GetTopTransform().TransformPoint(globalPoint); + + // Set the correct solid and material in Logical Volume + // + G4LogicalVolume *pLogical = pPhysical->GetLogicalVolume(); + + pLogical->UpdateMaterial(pParam->ComputeMaterial(replicaNo, + pPhysical, &parentTouchable) ); + return true; + } + + return false; +} diff --git a/source/geometry/navigation/src/G4ReplicaNavigation.cc b/source/geometry/navigation/src/G4ReplicaNavigation.cc index a7007dad55..2d7b3526a5 100644 --- a/source/geometry/navigation/src/G4ReplicaNavigation.cc +++ b/source/geometry/navigation/src/G4ReplicaNavigation.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ReplicaNavigation.cc,v 1.13 2007/05/18 07:31:03 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ReplicaNavigation.cc,v 1.17 2007/11/16 09:39:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4ReplicaNavigation Implementation @@ -206,11 +206,13 @@ G4ReplicaNavigation::DistanceToOut(const G4VPhysicalVolume *pVol, case kPhi: if ( localPoint.y()<=0 ) { - safety = localPoint.x()*std::sin(width*0.5)+localPoint.y()*std::cos(width*0.5); + safety = localPoint.x()*std::sin(width*0.5) + + localPoint.y()*std::cos(width*0.5); } else { - safety = localPoint.x()*std::sin(width*0.5)-localPoint.y()*std::cos(width*0.5); + safety = localPoint.x()*std::sin(width*0.5) + - localPoint.y()*std::cos(width*0.5); } break; case kRho: @@ -268,12 +270,12 @@ G4ReplicaNavigation::DistanceToOut(const G4VPhysicalVolume *pVol, if ( Comp>0 ) { lindist = width*0.5-coord; - Dist = (lindist>kCarTolerance*0.5) ? lindist/Comp : 0; + Dist = (lindist>0) ? lindist/Comp : 0; } else if ( Comp<0 ) { lindist = width*0.5+coord; - Dist = (lindist>kCarTolerance*0.5) ? -lindist/Comp : 0; + Dist = (lindist>0) ? -lindist/Comp : 0; } else { @@ -757,6 +759,13 @@ G4ReplicaNavigation::ComputeStep(const G4ThreeVector &globalPoint, motherStep = motherSolid->DistanceToOut(repPoint,repDirection,true, &validExitNormal,&exitNormal); + // Push in principle no longer necessary. G4Navigator now takes care of ... + // Removing this will however generate warnings for pushed particles from + // G4Navigator, particularly for the case of 3D replicas (Cartesian or + // combined Radial/Phi cases). + // Requires further investigation and eventually reimplementation of + // LevelLocate() to take into account point and direction ... + // if ( ( !ourStep && (sampleSafety<0.5*kCarTolerance) ) && ( repLogical->GetSolid()->Inside(localPoint)==kSurface ) ) { @@ -833,20 +842,20 @@ G4ReplicaNavigation::ComputeStep(const G4ThreeVector &globalPoint, sampleTf.TransformPoint(localPoint); const G4VSolid* sampleSolid = samplePhysical->GetLogicalVolume()->GetSolid(); - const G4double sampleSafety = + const G4double sampleSafetyDistance = sampleSolid->DistanceToIn(samplePoint); - if ( sampleSafetyDistanceToIn(samplePoint,sampleDirection); - if ( sampleStep<=ourStep ) + if ( sampleStepDistance<=ourStep ) { - ourStep = sampleStep; + ourStep = sampleStepDistance; entering = true; exiting = false; *pBlockedPhysical = samplePhysical; @@ -855,10 +864,11 @@ G4ReplicaNavigation::ComputeStep(const G4ThreeVector &globalPoint, // Check to see that the resulting point is indeed in/on volume. // This check could eventually be made only for successful candidate. - if ( ( fCheck ) && ( sampleStep < kInfinity ) ) + if ( ( fCheck ) && ( sampleStepDistance < kInfinity ) ) { G4ThreeVector intersectionPoint; - intersectionPoint= samplePoint + sampleStep * sampleDirection; + intersectionPoint= samplePoint + + sampleStepDistance * sampleDirection; EInside insideIntPt= sampleSolid->Inside(intersectionPoint); if ( insideIntPt != kSurface ) { @@ -867,8 +877,8 @@ G4ReplicaNavigation::ComputeStep(const G4ThreeVector &globalPoint, << G4endl << " Inaccurate DistanceToIn for solid " << sampleSolid->GetName() << G4endl; - G4cout << " Solid gave DistanceToIn = " << sampleStep - << " yet returns " ; + G4cout << " Solid gave DistanceToIn = " + << sampleStepDistance << " yet returns " ; if ( insideIntPt == kInside ) G4cout << "-kInside-"; else if ( insideIntPt == kOutside ) @@ -979,11 +989,11 @@ G4ReplicaNavigation::ComputeSafety(const G4ThreeVector &globalPoint, sampleTf.TransformPoint(localPoint); const G4VSolid *sampleSolid = samplePhysical->GetLogicalVolume()->GetSolid(); - const G4double sampleSafety = + const G4double sampleSafetyDistance = sampleSolid->DistanceToIn(samplePoint); - if ( sampleSafetyGetNavigatorForTracking(); // Check + // G4VPhysicalVolume* worldPV = fpMassNavigator->GetWorldVolume(); if( worldPV == 0 ) { @@ -84,7 +86,8 @@ void G4SafetyHelper::InitialiseHelper() } G4SafetyHelper::~G4SafetyHelper() -{} +{ +} G4double G4SafetyHelper::CheckNextStep(const G4ThreeVector &position, @@ -103,6 +106,7 @@ G4SafetyHelper::CheckNextStep(const G4ThreeVector &position, // TO-DO: Can replace this with a call to PathFinder // giving id of Mass Geometry --> this avoid doing the work twice + return linstep; } @@ -110,10 +114,13 @@ G4double G4SafetyHelper::ComputeSafety( const G4ThreeVector& position ) { G4double newSafety; - // return last value if position is not significantly changed + // Only recompute (calling Navigator/PathFinder) if 'position' + // is *not* the safety location and has moved 'significantly' // - G4double moveLen = (position-fLastSafetyPosition).mag(); - if(moveLen >= fRecomputeFactor*fLastSafety) + G4double moveLengthSq = (position-fLastSafetyPosition).mag2(); + G4double safeDistance = fRecomputeFactor*fLastSafety; + if( (moveLengthSq > 0.0 ) + && (moveLengthSq >= safeDistance*safeDistance)) { fLastSafetyPosition = position; @@ -131,7 +138,14 @@ G4double G4SafetyHelper::ComputeSafety( const G4ThreeVector& position ) } else { - newSafety = fLastSafety-moveLen; + // return last value if position is not significantly changed + // + G4double moveLength = 0; + if( moveLengthSq > 0.0 ) + { + moveLength= std::sqrt(moveLengthSq); + } + newSafety = fLastSafety-moveLength; } return newSafety; } diff --git a/source/geometry/navigation/src/G4TransportationManager.cc b/source/geometry/navigation/src/G4TransportationManager.cc index 192a3d0a55..0ac88f7fad 100644 --- a/source/geometry/navigation/src/G4TransportationManager.cc +++ b/source/geometry/navigation/src/G4TransportationManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4TransportationManager.cc,v 1.15 2007/04/12 11:51:48 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4TransportationManager diff --git a/source/geometry/navigation/src/G4VoxelNavigation.cc b/source/geometry/navigation/src/G4VoxelNavigation.cc index ec3e92007e..576e31b0b8 100644 --- a/source/geometry/navigation/src/G4VoxelNavigation.cc +++ b/source/geometry/navigation/src/G4VoxelNavigation.cc @@ -25,7 +25,7 @@ // // // $Id: G4VoxelNavigation.cc,v 1.7 2007/05/11 13:43:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4VoxelNavigation Implementation diff --git a/source/geometry/solids/BREPS/History b/source/geometry/solids/BREPS/History index f00dc3f336..7ededa0aef 100644 --- a/source/geometry/solids/BREPS/History +++ b/source/geometry/solids/BREPS/History @@ -1,4 +1,4 @@ -$Id: History,v 1.66 2007/05/18 07:33:48 gcosmo Exp $ +$Id: History,v 1.67 2007/07/16 08:07:29 gcosmo Exp $ ---------------------------------------------------------------------------- ========================================================= @@ -17,6 +17,11 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +16/07/2007 : G. Cosmo breps-V09-00-00 +- Added missing initialisations of kCarTolerance in alternative constructors + for G4BoundingBox3D, G4Curve, G4CurveRayIntersection, G4KnotVector. + Addressing problem report #959. + 18/05/2007 : G. Cosmo breps-V08-03-01 - Use kAngTolerance and kRadTolerance from G4GeometryTolerance class. - Coworks with tag "global-V08-03-03". diff --git a/source/geometry/solids/BREPS/include/G4Assembly.hh b/source/geometry/solids/BREPS/include/G4Assembly.hh index c08a60c617..afc6180ffe 100644 --- a/source/geometry/solids/BREPS/include/G4Assembly.hh +++ b/source/geometry/solids/BREPS/include/G4Assembly.hh @@ -25,7 +25,7 @@ // // // $Id: G4Assembly.hh,v 1.10 2006/06/29 18:37:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Assembly diff --git a/source/geometry/solids/BREPS/include/G4Assembly.icc b/source/geometry/solids/BREPS/include/G4Assembly.icc index 19f0c4ed09..213dd5f865 100644 --- a/source/geometry/solids/BREPS/include/G4Assembly.icc +++ b/source/geometry/solids/BREPS/include/G4Assembly.icc @@ -25,7 +25,7 @@ // // // $Id: G4Assembly.icc,v 1.4 2006/06/29 18:37:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Axis2Placement3D.hh b/source/geometry/solids/BREPS/include/G4Axis2Placement3D.hh index 34411dc9a7..61e3a6c44f 100644 --- a/source/geometry/solids/BREPS/include/G4Axis2Placement3D.hh +++ b/source/geometry/solids/BREPS/include/G4Axis2Placement3D.hh @@ -25,7 +25,7 @@ // // // $Id: G4Axis2Placement3D.hh,v 1.5 2006/06/29 18:37:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Axis2Placement3D diff --git a/source/geometry/solids/BREPS/include/G4Axis2Placement3D.icc b/source/geometry/solids/BREPS/include/G4Axis2Placement3D.icc index 49caf73eb8..fc1cc55b00 100644 --- a/source/geometry/solids/BREPS/include/G4Axis2Placement3D.icc +++ b/source/geometry/solids/BREPS/include/G4Axis2Placement3D.icc @@ -25,7 +25,7 @@ // // // $Id: G4Axis2Placement3D.icc,v 1.9 2006/06/29 18:37:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4BREPSolid.hh b/source/geometry/solids/BREPS/include/G4BREPSolid.hh index 389edf2639..1f0c0d72c0 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolid.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolid.hh @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolid.hh,v 1.17 2006/10/19 15:35:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BREPSolid diff --git a/source/geometry/solids/BREPS/include/G4BREPSolid.icc b/source/geometry/solids/BREPS/include/G4BREPSolid.icc index fe2748af82..b9560e0dd9 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolid.icc +++ b/source/geometry/solids/BREPS/include/G4BREPSolid.icc @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolid.icc,v 1.9 2006/10/20 14:23:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidBox.hh b/source/geometry/solids/BREPS/include/G4BREPSolidBox.hh index 35a9446cf7..a70437cdf9 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidBox.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidBox.hh @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolidBox.hh,v 1.9 2006/06/29 18:37:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidBox diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidCone.hh b/source/geometry/solids/BREPS/include/G4BREPSolidCone.hh index 3d9f085ee9..048d5f7045 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidCone.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidCone.hh @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolidCone.hh,v 1.11 2006/06/29 18:37:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidCone diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidCylinder.hh b/source/geometry/solids/BREPS/include/G4BREPSolidCylinder.hh index a8d62a1bcc..7806b092ce 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidCylinder.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidCylinder.hh @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolidCylinder.hh,v 1.10 2006/06/29 18:37:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidCylinder diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidOpenPCone.hh b/source/geometry/solids/BREPS/include/G4BREPSolidOpenPCone.hh index f763e15f2d..5e55f50c3c 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidOpenPCone.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidOpenPCone.hh @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolidOpenPCone.hh,v 1.9 2006/06/29 18:37:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidOpenPCone diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidPCone.hh b/source/geometry/solids/BREPS/include/G4BREPSolidPCone.hh index 26e0ef4cb5..bccfbd424e 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidPCone.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidPCone.hh @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolidPCone.hh,v 1.14 2006/06/29 18:37:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidPCone diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidPolyhedra.hh b/source/geometry/solids/BREPS/include/G4BREPSolidPolyhedra.hh index 3aa358cfef..51ac774cb6 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidPolyhedra.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidPolyhedra.hh @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolidPolyhedra.hh,v 1.14 2006/06/29 18:37:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidPolyhedra diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidSphere.hh b/source/geometry/solids/BREPS/include/G4BREPSolidSphere.hh index dbf81c7501..66024e1fdb 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidSphere.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidSphere.hh @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolidSphere.hh,v 1.11 2006/06/29 18:38:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidSphere diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidTorus.hh b/source/geometry/solids/BREPS/include/G4BREPSolidTorus.hh index a4f6d0e1f5..bb8ec40d2d 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidTorus.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidTorus.hh @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolidTorus.hh,v 1.10 2006/06/29 18:38:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidTorus diff --git a/source/geometry/solids/BREPS/include/G4BSplineCurve.hh b/source/geometry/solids/BREPS/include/G4BSplineCurve.hh index ee8e516ef0..75cb25603a 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineCurve.hh +++ b/source/geometry/solids/BREPS/include/G4BSplineCurve.hh @@ -25,7 +25,7 @@ // // // $Id: G4BSplineCurve.hh,v 1.13 2006/06/29 18:38:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BSplineCurve diff --git a/source/geometry/solids/BREPS/include/G4BSplineCurve.icc b/source/geometry/solids/BREPS/include/G4BSplineCurve.icc index 009c267708..b786bd4425 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineCurve.icc +++ b/source/geometry/solids/BREPS/include/G4BSplineCurve.icc @@ -25,7 +25,7 @@ // // // $Id: G4BSplineCurve.icc,v 1.7 2006/06/29 18:38:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4BSplineCurveWithKnots.hh b/source/geometry/solids/BREPS/include/G4BSplineCurveWithKnots.hh index a33af5fa03..be0029ed3a 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineCurveWithKnots.hh +++ b/source/geometry/solids/BREPS/include/G4BSplineCurveWithKnots.hh @@ -25,7 +25,7 @@ // // // $Id: G4BSplineCurveWithKnots.hh,v 1.5 2006/06/29 18:38:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BSplineCurveWithKnots diff --git a/source/geometry/solids/BREPS/include/G4BSplineSurface.hh b/source/geometry/solids/BREPS/include/G4BSplineSurface.hh index 43e027469a..c74b7604d2 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineSurface.hh +++ b/source/geometry/solids/BREPS/include/G4BSplineSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4BSplineSurface.hh,v 1.11 2006/06/29 18:38:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BSplineSurface diff --git a/source/geometry/solids/BREPS/include/G4BSplineSurface.icc b/source/geometry/solids/BREPS/include/G4BSplineSurface.icc index 576a78fee2..4e4abb25cb 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineSurface.icc +++ b/source/geometry/solids/BREPS/include/G4BSplineSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4BSplineSurface.icc,v 1.6 2006/06/29 18:38:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4BSplineSurfaceWithKnots.hh b/source/geometry/solids/BREPS/include/G4BSplineSurfaceWithKnots.hh index a113dce9f4..33b3e053b2 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineSurfaceWithKnots.hh +++ b/source/geometry/solids/BREPS/include/G4BSplineSurfaceWithKnots.hh @@ -25,7 +25,7 @@ // // // $Id: G4BSplineSurfaceWithKnots.hh,v 1.4 2006/06/29 18:38:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BSplineSurfaceWithKnots diff --git a/source/geometry/solids/BREPS/include/G4BezierSurface.hh b/source/geometry/solids/BREPS/include/G4BezierSurface.hh index 36d8aeed06..140dcae92b 100644 --- a/source/geometry/solids/BREPS/include/G4BezierSurface.hh +++ b/source/geometry/solids/BREPS/include/G4BezierSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4BezierSurface.hh,v 1.7 2006/06/29 18:38:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BezierSurface diff --git a/source/geometry/solids/BREPS/include/G4BezierSurface.icc b/source/geometry/solids/BREPS/include/G4BezierSurface.icc index 2025d6bc1d..91350790b4 100644 --- a/source/geometry/solids/BREPS/include/G4BezierSurface.icc +++ b/source/geometry/solids/BREPS/include/G4BezierSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4BezierSurface.icc,v 1.4 2006/06/29 18:38:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4BoundingBox3D.hh b/source/geometry/solids/BREPS/include/G4BoundingBox3D.hh index 6a884ddb33..4ae3adfb95 100644 --- a/source/geometry/solids/BREPS/include/G4BoundingBox3D.hh +++ b/source/geometry/solids/BREPS/include/G4BoundingBox3D.hh @@ -25,7 +25,7 @@ // // // $Id: G4BoundingBox3D.hh,v 1.7 2007/05/11 13:49:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BoundingBox3D diff --git a/source/geometry/solids/BREPS/include/G4BoundingBox3D.icc b/source/geometry/solids/BREPS/include/G4BoundingBox3D.icc index 451ee5e1aa..4680415e7a 100644 --- a/source/geometry/solids/BREPS/include/G4BoundingBox3D.icc +++ b/source/geometry/solids/BREPS/include/G4BoundingBox3D.icc @@ -25,7 +25,7 @@ // // // $Id: G4BoundingBox3D.icc,v 1.4 2006/06/29 18:38:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4CircularCurve.hh b/source/geometry/solids/BREPS/include/G4CircularCurve.hh index b13239e9dd..813e8aadba 100644 --- a/source/geometry/solids/BREPS/include/G4CircularCurve.hh +++ b/source/geometry/solids/BREPS/include/G4CircularCurve.hh @@ -25,7 +25,7 @@ // // // $Id: G4CircularCurve.hh,v 1.9 2006/06/29 18:38:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4CircularCurve diff --git a/source/geometry/solids/BREPS/include/G4CircularCurve.icc b/source/geometry/solids/BREPS/include/G4CircularCurve.icc index 93be5688da..f579b67366 100644 --- a/source/geometry/solids/BREPS/include/G4CircularCurve.icc +++ b/source/geometry/solids/BREPS/include/G4CircularCurve.icc @@ -25,7 +25,7 @@ // // // $Id: G4CircularCurve.icc,v 1.6 2006/06/29 18:38:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4CompositeCurve.hh b/source/geometry/solids/BREPS/include/G4CompositeCurve.hh index 9c30a7befd..a8c888c1d5 100644 --- a/source/geometry/solids/BREPS/include/G4CompositeCurve.hh +++ b/source/geometry/solids/BREPS/include/G4CompositeCurve.hh @@ -25,7 +25,7 @@ // // // $Id: G4CompositeCurve.hh,v 1.8 2006/06/29 18:38:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4CompositeCurve diff --git a/source/geometry/solids/BREPS/include/G4CompositeCurve.icc b/source/geometry/solids/BREPS/include/G4CompositeCurve.icc index 45aa9465c3..98a43070f3 100644 --- a/source/geometry/solids/BREPS/include/G4CompositeCurve.icc +++ b/source/geometry/solids/BREPS/include/G4CompositeCurve.icc @@ -25,7 +25,7 @@ // // // $Id: G4CompositeCurve.icc,v 1.5 2006/06/29 18:38:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Conic.hh b/source/geometry/solids/BREPS/include/G4Conic.hh index e811da0a7b..238f7e3a5c 100644 --- a/source/geometry/solids/BREPS/include/G4Conic.hh +++ b/source/geometry/solids/BREPS/include/G4Conic.hh @@ -25,7 +25,7 @@ // // // $Id: G4Conic.hh,v 1.7 2006/06/29 18:38:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Conic diff --git a/source/geometry/solids/BREPS/include/G4Conic.icc b/source/geometry/solids/BREPS/include/G4Conic.icc index 47b542fdd8..0090994afa 100644 --- a/source/geometry/solids/BREPS/include/G4Conic.icc +++ b/source/geometry/solids/BREPS/include/G4Conic.icc @@ -25,7 +25,7 @@ // // // $Id: G4Conic.icc,v 1.4 2006/06/29 18:38:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4ConicalSurface.hh b/source/geometry/solids/BREPS/include/G4ConicalSurface.hh index 9f383ec5b0..198b5a8db5 100644 --- a/source/geometry/solids/BREPS/include/G4ConicalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4ConicalSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4ConicalSurface.hh,v 1.10 2006/06/29 18:38:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4ConicalSurface diff --git a/source/geometry/solids/BREPS/include/G4ConicalSurface.icc b/source/geometry/solids/BREPS/include/G4ConicalSurface.icc index ce27214585..01df48b335 100644 --- a/source/geometry/solids/BREPS/include/G4ConicalSurface.icc +++ b/source/geometry/solids/BREPS/include/G4ConicalSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4ConicalSurface.icc,v 1.4 2006/06/29 18:38:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4ControlPoints.hh b/source/geometry/solids/BREPS/include/G4ControlPoints.hh index 59e7e055a5..e52ad411e7 100644 --- a/source/geometry/solids/BREPS/include/G4ControlPoints.hh +++ b/source/geometry/solids/BREPS/include/G4ControlPoints.hh @@ -25,7 +25,7 @@ // // // $Id: G4ControlPoints.hh,v 1.7 2006/06/29 18:38:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4ControlPoints diff --git a/source/geometry/solids/BREPS/include/G4ControlPoints.icc b/source/geometry/solids/BREPS/include/G4ControlPoints.icc index 95744016b6..fb86e53299 100644 --- a/source/geometry/solids/BREPS/include/G4ControlPoints.icc +++ b/source/geometry/solids/BREPS/include/G4ControlPoints.icc @@ -25,7 +25,7 @@ // // // $Id: G4ControlPoints.icc,v 1.3 2006/06/29 18:38:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4ConvexHull.hh b/source/geometry/solids/BREPS/include/G4ConvexHull.hh index d5a99bae4f..57d3761c2b 100644 --- a/source/geometry/solids/BREPS/include/G4ConvexHull.hh +++ b/source/geometry/solids/BREPS/include/G4ConvexHull.hh @@ -25,7 +25,7 @@ // // // $Id: G4ConvexHull.hh,v 1.7 2006/06/29 18:38:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4ConvexHull diff --git a/source/geometry/solids/BREPS/include/G4Curve.hh b/source/geometry/solids/BREPS/include/G4Curve.hh index 871076aff4..089879841f 100644 --- a/source/geometry/solids/BREPS/include/G4Curve.hh +++ b/source/geometry/solids/BREPS/include/G4Curve.hh @@ -25,7 +25,7 @@ // // // $Id: G4Curve.hh,v 1.11 2007/05/11 13:49:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Curve diff --git a/source/geometry/solids/BREPS/include/G4Curve.icc b/source/geometry/solids/BREPS/include/G4Curve.icc index a67c9527c0..d917f2ee0e 100644 --- a/source/geometry/solids/BREPS/include/G4Curve.icc +++ b/source/geometry/solids/BREPS/include/G4Curve.icc @@ -25,7 +25,7 @@ // // // $Id: G4Curve.icc,v 1.7 2006/06/29 18:38:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4CurvePoint.hh b/source/geometry/solids/BREPS/include/G4CurvePoint.hh index e019485f8f..5f7ead053a 100644 --- a/source/geometry/solids/BREPS/include/G4CurvePoint.hh +++ b/source/geometry/solids/BREPS/include/G4CurvePoint.hh @@ -25,7 +25,7 @@ // // // $Id: G4CurvePoint.hh,v 1.6 2006/06/29 18:39:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4CurvePoint diff --git a/source/geometry/solids/BREPS/include/G4CurvePoint.icc b/source/geometry/solids/BREPS/include/G4CurvePoint.icc index 96efea155a..b1f07f5d20 100644 --- a/source/geometry/solids/BREPS/include/G4CurvePoint.icc +++ b/source/geometry/solids/BREPS/include/G4CurvePoint.icc @@ -25,7 +25,7 @@ // // // $Id: G4CurvePoint.icc,v 1.4 2006/06/29 18:39:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4CurveRayIntersection.hh b/source/geometry/solids/BREPS/include/G4CurveRayIntersection.hh index 78aee85e47..490a2fc07f 100644 --- a/source/geometry/solids/BREPS/include/G4CurveRayIntersection.hh +++ b/source/geometry/solids/BREPS/include/G4CurveRayIntersection.hh @@ -25,7 +25,7 @@ // // // $Id: G4CurveRayIntersection.hh,v 1.6 2007/05/11 13:49:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4CurveRayIntersection diff --git a/source/geometry/solids/BREPS/include/G4CurveRayIntersection.icc b/source/geometry/solids/BREPS/include/G4CurveRayIntersection.icc index 54d0a9516d..509a01faf7 100644 --- a/source/geometry/solids/BREPS/include/G4CurveRayIntersection.icc +++ b/source/geometry/solids/BREPS/include/G4CurveRayIntersection.icc @@ -25,7 +25,7 @@ // // // $Id: G4CurveRayIntersection.icc,v 1.4 2006/06/29 18:39:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4CurveVector.hh b/source/geometry/solids/BREPS/include/G4CurveVector.hh index 5a4356e2c4..b2321c37dc 100644 --- a/source/geometry/solids/BREPS/include/G4CurveVector.hh +++ b/source/geometry/solids/BREPS/include/G4CurveVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4CurveVector.hh,v 1.7 2006/06/29 18:39:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4CurveVector diff --git a/source/geometry/solids/BREPS/include/G4CylindricalSurface.hh b/source/geometry/solids/BREPS/include/G4CylindricalSurface.hh index 5bcbc3ebca..d42afaf401 100644 --- a/source/geometry/solids/BREPS/include/G4CylindricalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4CylindricalSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4CylindricalSurface.hh,v 1.10 2006/06/29 18:39:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4CylindricalSurface diff --git a/source/geometry/solids/BREPS/include/G4CylindricalSurface.icc b/source/geometry/solids/BREPS/include/G4CylindricalSurface.icc index 331768f1d2..d3bb436da2 100644 --- a/source/geometry/solids/BREPS/include/G4CylindricalSurface.icc +++ b/source/geometry/solids/BREPS/include/G4CylindricalSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4CylindricalSurface.icc,v 1.4 2006/06/29 18:39:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Ellipse.hh b/source/geometry/solids/BREPS/include/G4Ellipse.hh index 30297292e5..fd729f1bd9 100644 --- a/source/geometry/solids/BREPS/include/G4Ellipse.hh +++ b/source/geometry/solids/BREPS/include/G4Ellipse.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ellipse.hh,v 1.10 2006/06/29 18:39:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Ellipse diff --git a/source/geometry/solids/BREPS/include/G4Ellipse.icc b/source/geometry/solids/BREPS/include/G4Ellipse.icc index 724459ce6c..207b30f5af 100644 --- a/source/geometry/solids/BREPS/include/G4Ellipse.icc +++ b/source/geometry/solids/BREPS/include/G4Ellipse.icc @@ -25,7 +25,7 @@ // // // $Id: G4Ellipse.icc,v 1.8 2006/06/29 18:39:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4FConicalSurface.hh b/source/geometry/solids/BREPS/include/G4FConicalSurface.hh index 23906d9fcd..65771511bf 100644 --- a/source/geometry/solids/BREPS/include/G4FConicalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4FConicalSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4FConicalSurface.hh,v 1.13 2006/06/29 18:39:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4FConicalSurface diff --git a/source/geometry/solids/BREPS/include/G4FConicalSurface.icc b/source/geometry/solids/BREPS/include/G4FConicalSurface.icc index 0681a44158..2dd10166a9 100644 --- a/source/geometry/solids/BREPS/include/G4FConicalSurface.icc +++ b/source/geometry/solids/BREPS/include/G4FConicalSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4FConicalSurface.icc,v 1.4 2006/06/29 18:39:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4FCylindricalSurface.hh b/source/geometry/solids/BREPS/include/G4FCylindricalSurface.hh index ecd1ebd032..278fff7332 100644 --- a/source/geometry/solids/BREPS/include/G4FCylindricalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4FCylindricalSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4FCylindricalSurface.hh,v 1.13 2006/06/29 18:39:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4FCylindricalSurface diff --git a/source/geometry/solids/BREPS/include/G4FCylindricalSurface.icc b/source/geometry/solids/BREPS/include/G4FCylindricalSurface.icc index d58019f1ab..2fa9807ce9 100644 --- a/source/geometry/solids/BREPS/include/G4FCylindricalSurface.icc +++ b/source/geometry/solids/BREPS/include/G4FCylindricalSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4FCylindricalSurface.icc,v 1.4 2006/06/29 18:39:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4FPlane.hh b/source/geometry/solids/BREPS/include/G4FPlane.hh index a9d137ed67..ca125c1d0e 100644 --- a/source/geometry/solids/BREPS/include/G4FPlane.hh +++ b/source/geometry/solids/BREPS/include/G4FPlane.hh @@ -25,7 +25,7 @@ // // // $Id: G4FPlane.hh,v 1.13 2006/06/29 18:39:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4FPlane diff --git a/source/geometry/solids/BREPS/include/G4FPlane.icc b/source/geometry/solids/BREPS/include/G4FPlane.icc index 2f96e91eef..91b306730b 100644 --- a/source/geometry/solids/BREPS/include/G4FPlane.icc +++ b/source/geometry/solids/BREPS/include/G4FPlane.icc @@ -25,7 +25,7 @@ // // // $Id: G4FPlane.icc,v 1.6 2006/06/29 18:39:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Globals.hh b/source/geometry/solids/BREPS/include/G4Globals.hh index 3a9d27daf5..99f0bf1284 100644 --- a/source/geometry/solids/BREPS/include/G4Globals.hh +++ b/source/geometry/solids/BREPS/include/G4Globals.hh @@ -25,7 +25,7 @@ // // // $Id: G4Globals.hh,v 1.5 2006/06/29 18:39:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: A.Breakstone // Adaptation: J.Sulkimo, P.Urban. diff --git a/source/geometry/solids/BREPS/include/G4Hyperbola.hh b/source/geometry/solids/BREPS/include/G4Hyperbola.hh index f5c8f087f2..db23914553 100644 --- a/source/geometry/solids/BREPS/include/G4Hyperbola.hh +++ b/source/geometry/solids/BREPS/include/G4Hyperbola.hh @@ -25,7 +25,7 @@ // // // $Id: G4Hyperbola.hh,v 1.10 2006/06/29 18:39:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Hyperbola diff --git a/source/geometry/solids/BREPS/include/G4Hyperbola.icc b/source/geometry/solids/BREPS/include/G4Hyperbola.icc index d0fca2ecd5..e2d40528b4 100644 --- a/source/geometry/solids/BREPS/include/G4Hyperbola.icc +++ b/source/geometry/solids/BREPS/include/G4Hyperbola.icc @@ -25,7 +25,7 @@ // // // $Id: G4Hyperbola.icc,v 1.9 2006/06/29 18:39:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4KnotVector.hh b/source/geometry/solids/BREPS/include/G4KnotVector.hh index 4875e8aa60..9f773be71f 100644 --- a/source/geometry/solids/BREPS/include/G4KnotVector.hh +++ b/source/geometry/solids/BREPS/include/G4KnotVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4KnotVector.hh,v 1.10 2007/05/11 13:49:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4KnotVector diff --git a/source/geometry/solids/BREPS/include/G4KnotVector.icc b/source/geometry/solids/BREPS/include/G4KnotVector.icc index 580208cfa1..c8c04d0cd6 100644 --- a/source/geometry/solids/BREPS/include/G4KnotVector.icc +++ b/source/geometry/solids/BREPS/include/G4KnotVector.icc @@ -25,7 +25,7 @@ // // // $Id: G4KnotVector.icc,v 1.5 2006/06/29 18:39:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Line.hh b/source/geometry/solids/BREPS/include/G4Line.hh index 4cb08c67ea..c874139093 100644 --- a/source/geometry/solids/BREPS/include/G4Line.hh +++ b/source/geometry/solids/BREPS/include/G4Line.hh @@ -25,7 +25,7 @@ // // // $Id: G4Line.hh,v 1.9 2006/06/29 18:39:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Line diff --git a/source/geometry/solids/BREPS/include/G4Line.icc b/source/geometry/solids/BREPS/include/G4Line.icc index 7b149f8bd0..ab378d5c3a 100644 --- a/source/geometry/solids/BREPS/include/G4Line.icc +++ b/source/geometry/solids/BREPS/include/G4Line.icc @@ -25,7 +25,7 @@ // // // $Id: G4Line.icc,v 1.9 2006/06/29 18:39:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4OsloMatrix.hh b/source/geometry/solids/BREPS/include/G4OsloMatrix.hh index a5085730f2..1a1b6696ea 100644 --- a/source/geometry/solids/BREPS/include/G4OsloMatrix.hh +++ b/source/geometry/solids/BREPS/include/G4OsloMatrix.hh @@ -25,7 +25,7 @@ // // // $Id: G4OsloMatrix.hh,v 1.6 2006/06/29 18:39:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4OsloMatrix diff --git a/source/geometry/solids/BREPS/include/G4OsloMatrix.icc b/source/geometry/solids/BREPS/include/G4OsloMatrix.icc index 271c97fcd0..939f72b9b1 100644 --- a/source/geometry/solids/BREPS/include/G4OsloMatrix.icc +++ b/source/geometry/solids/BREPS/include/G4OsloMatrix.icc @@ -25,7 +25,7 @@ // // // $Id: G4OsloMatrix.icc,v 1.4 2006/06/29 18:39:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Parabola.hh b/source/geometry/solids/BREPS/include/G4Parabola.hh index 321942e940..3ef73ee787 100644 --- a/source/geometry/solids/BREPS/include/G4Parabola.hh +++ b/source/geometry/solids/BREPS/include/G4Parabola.hh @@ -25,7 +25,7 @@ // // // $Id: G4Parabola.hh,v 1.10 2006/06/29 18:39:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Parabola diff --git a/source/geometry/solids/BREPS/include/G4Parabola.icc b/source/geometry/solids/BREPS/include/G4Parabola.icc index 1fca323ce6..e19724e0e7 100644 --- a/source/geometry/solids/BREPS/include/G4Parabola.icc +++ b/source/geometry/solids/BREPS/include/G4Parabola.icc @@ -25,7 +25,7 @@ // // // $Id: G4Parabola.icc,v 1.8 2006/06/29 18:39:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4PlacedSolid.hh b/source/geometry/solids/BREPS/include/G4PlacedSolid.hh index 76ccf20ede..d56570c0c2 100644 --- a/source/geometry/solids/BREPS/include/G4PlacedSolid.hh +++ b/source/geometry/solids/BREPS/include/G4PlacedSolid.hh @@ -25,7 +25,7 @@ // // // $Id: G4PlacedSolid.hh,v 1.10 2006/06/29 18:39:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4PlacedSolid diff --git a/source/geometry/solids/BREPS/include/G4PlacedSolid.icc b/source/geometry/solids/BREPS/include/G4PlacedSolid.icc index 123ac0f2c4..13fdfbd35e 100644 --- a/source/geometry/solids/BREPS/include/G4PlacedSolid.icc +++ b/source/geometry/solids/BREPS/include/G4PlacedSolid.icc @@ -25,7 +25,7 @@ // // // $Id: G4PlacedSolid.icc,v 1.8 2006/06/29 18:40:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4PlacementVector.hh b/source/geometry/solids/BREPS/include/G4PlacementVector.hh index 76e29e253a..7a34d87e02 100644 --- a/source/geometry/solids/BREPS/include/G4PlacementVector.hh +++ b/source/geometry/solids/BREPS/include/G4PlacementVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4PlacementVector.hh,v 1.7 2006/06/29 18:40:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4PlacementVector diff --git a/source/geometry/solids/BREPS/include/G4Plane.hh b/source/geometry/solids/BREPS/include/G4Plane.hh index 10334dc375..5a5f848ab5 100644 --- a/source/geometry/solids/BREPS/include/G4Plane.hh +++ b/source/geometry/solids/BREPS/include/G4Plane.hh @@ -25,7 +25,7 @@ // // // $Id: G4Plane.hh,v 1.6 2006/06/29 18:40:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Plane diff --git a/source/geometry/solids/BREPS/include/G4Point3DVector.hh b/source/geometry/solids/BREPS/include/G4Point3DVector.hh index 2e0b40d2f8..dae253e327 100644 --- a/source/geometry/solids/BREPS/include/G4Point3DVector.hh +++ b/source/geometry/solids/BREPS/include/G4Point3DVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4Point3DVector.hh,v 1.8 2006/06/29 18:40:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Point3DVector diff --git a/source/geometry/solids/BREPS/include/G4PointRat.hh b/source/geometry/solids/BREPS/include/G4PointRat.hh index 4a28111155..6dbf12198f 100644 --- a/source/geometry/solids/BREPS/include/G4PointRat.hh +++ b/source/geometry/solids/BREPS/include/G4PointRat.hh @@ -25,7 +25,7 @@ // // // $Id: G4PointRat.hh,v 1.10 2006/06/29 18:40:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4PointRat diff --git a/source/geometry/solids/BREPS/include/G4PointRat.icc b/source/geometry/solids/BREPS/include/G4PointRat.icc index b1150d4f5a..bb0f06a962 100644 --- a/source/geometry/solids/BREPS/include/G4PointRat.icc +++ b/source/geometry/solids/BREPS/include/G4PointRat.icc @@ -25,7 +25,7 @@ // // // $Id: G4PointRat.icc,v 1.4 2006/06/29 18:40:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4ProjectedSurface.hh b/source/geometry/solids/BREPS/include/G4ProjectedSurface.hh index 8baf923a19..288750b98c 100644 --- a/source/geometry/solids/BREPS/include/G4ProjectedSurface.hh +++ b/source/geometry/solids/BREPS/include/G4ProjectedSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProjectedSurface.hh,v 1.7 2006/06/29 18:40:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4ProjectedSurface diff --git a/source/geometry/solids/BREPS/include/G4ProjectedSurface.icc b/source/geometry/solids/BREPS/include/G4ProjectedSurface.icc index 04fc27871a..21134fd5e1 100644 --- a/source/geometry/solids/BREPS/include/G4ProjectedSurface.icc +++ b/source/geometry/solids/BREPS/include/G4ProjectedSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4ProjectedSurface.icc,v 1.5 2006/06/29 18:40:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Ray.hh b/source/geometry/solids/BREPS/include/G4Ray.hh index 96ae3c7686..4cf0363aba 100644 --- a/source/geometry/solids/BREPS/include/G4Ray.hh +++ b/source/geometry/solids/BREPS/include/G4Ray.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ray.hh,v 1.9 2006/06/29 18:40:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Ray diff --git a/source/geometry/solids/BREPS/include/G4Ray.icc b/source/geometry/solids/BREPS/include/G4Ray.icc index b786f32f7a..33f42c8743 100644 --- a/source/geometry/solids/BREPS/include/G4Ray.icc +++ b/source/geometry/solids/BREPS/include/G4Ray.icc @@ -25,7 +25,7 @@ // // // $Id: G4Ray.icc,v 1.7 2006/06/29 18:40:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4RectangularTrimmedSurface.hh b/source/geometry/solids/BREPS/include/G4RectangularTrimmedSurface.hh index 875f1281d2..5406afa607 100644 --- a/source/geometry/solids/BREPS/include/G4RectangularTrimmedSurface.hh +++ b/source/geometry/solids/BREPS/include/G4RectangularTrimmedSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4RectangularTrimmedSurface.hh,v 1.8 2006/06/29 18:40:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4BezierSurface diff --git a/source/geometry/solids/BREPS/include/G4STEPEntity.hh b/source/geometry/solids/BREPS/include/G4STEPEntity.hh index 12c598d19e..dbdf4eeebf 100644 --- a/source/geometry/solids/BREPS/include/G4STEPEntity.hh +++ b/source/geometry/solids/BREPS/include/G4STEPEntity.hh @@ -25,7 +25,7 @@ // // // $Id: G4STEPEntity.hh,v 1.7 2006/06/29 18:40:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4STEPEntity diff --git a/source/geometry/solids/BREPS/include/G4Sort.hh b/source/geometry/solids/BREPS/include/G4Sort.hh index 843358b456..ef430b85ca 100644 --- a/source/geometry/solids/BREPS/include/G4Sort.hh +++ b/source/geometry/solids/BREPS/include/G4Sort.hh @@ -25,7 +25,7 @@ // // // $Id: G4Sort.hh,v 1.5 2006/06/29 18:40:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/source/geometry/solids/BREPS/include/G4SphericalSurface.hh b/source/geometry/solids/BREPS/include/G4SphericalSurface.hh index c58e0a3132..07fdc6db21 100644 --- a/source/geometry/solids/BREPS/include/G4SphericalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4SphericalSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4SphericalSurface.hh,v 1.10 2006/06/29 18:40:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4SphericalSurface diff --git a/source/geometry/solids/BREPS/include/G4SphericalSurface.icc b/source/geometry/solids/BREPS/include/G4SphericalSurface.icc index c90ecf1422..962df34082 100644 --- a/source/geometry/solids/BREPS/include/G4SphericalSurface.icc +++ b/source/geometry/solids/BREPS/include/G4SphericalSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4SphericalSurface.icc,v 1.4 2006/06/29 18:40:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Surface.hh b/source/geometry/solids/BREPS/include/G4Surface.hh index 6d2cd4afc4..bb2b36f3bb 100644 --- a/source/geometry/solids/BREPS/include/G4Surface.hh +++ b/source/geometry/solids/BREPS/include/G4Surface.hh @@ -25,7 +25,7 @@ // // // $Id: G4Surface.hh,v 1.10 2007/05/11 13:49:32 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4Surface diff --git a/source/geometry/solids/BREPS/include/G4Surface.icc b/source/geometry/solids/BREPS/include/G4Surface.icc index b1e5d2f82d..57bc21c254 100644 --- a/source/geometry/solids/BREPS/include/G4Surface.icc +++ b/source/geometry/solids/BREPS/include/G4Surface.icc @@ -25,7 +25,7 @@ // // // $Id: G4Surface.icc,v 1.5 2006/06/29 18:40:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4SurfaceBoundary.hh b/source/geometry/solids/BREPS/include/G4SurfaceBoundary.hh index 2631f0a66b..c882e179dd 100644 --- a/source/geometry/solids/BREPS/include/G4SurfaceBoundary.hh +++ b/source/geometry/solids/BREPS/include/G4SurfaceBoundary.hh @@ -25,7 +25,7 @@ // // // $Id: G4SurfaceBoundary.hh,v 1.8 2006/06/29 18:40:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4SurfaceBoundary diff --git a/source/geometry/solids/BREPS/include/G4SurfaceBoundary.icc b/source/geometry/solids/BREPS/include/G4SurfaceBoundary.icc index 2eac1b0158..be5ebbf3ef 100644 --- a/source/geometry/solids/BREPS/include/G4SurfaceBoundary.icc +++ b/source/geometry/solids/BREPS/include/G4SurfaceBoundary.icc @@ -25,7 +25,7 @@ // // // $Id: G4SurfaceBoundary.icc,v 1.5 2006/06/29 18:40:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4SurfaceList.hh b/source/geometry/solids/BREPS/include/G4SurfaceList.hh index 0975989395..77e2774cd9 100644 --- a/source/geometry/solids/BREPS/include/G4SurfaceList.hh +++ b/source/geometry/solids/BREPS/include/G4SurfaceList.hh @@ -25,7 +25,7 @@ // // // $Id: G4SurfaceList.hh,v 1.6 2006/06/29 18:40:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4SurfaceList diff --git a/source/geometry/solids/BREPS/include/G4SurfaceOfLinearExtrusion.hh b/source/geometry/solids/BREPS/include/G4SurfaceOfLinearExtrusion.hh index 44c4d985f7..ed76fa1f2a 100644 --- a/source/geometry/solids/BREPS/include/G4SurfaceOfLinearExtrusion.hh +++ b/source/geometry/solids/BREPS/include/G4SurfaceOfLinearExtrusion.hh @@ -25,7 +25,7 @@ // // // $Id: G4SurfaceOfLinearExtrusion.hh,v 1.5 2006/06/29 18:40:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4SurfaceOfLinearExtrusion diff --git a/source/geometry/solids/BREPS/include/G4SurfaceOfRevolution.hh b/source/geometry/solids/BREPS/include/G4SurfaceOfRevolution.hh index 59d9dfb2e6..654f4fbace 100644 --- a/source/geometry/solids/BREPS/include/G4SurfaceOfRevolution.hh +++ b/source/geometry/solids/BREPS/include/G4SurfaceOfRevolution.hh @@ -25,7 +25,7 @@ // // // $Id: G4SurfaceOfRevolution.hh,v 1.5 2006/06/29 18:40:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4SurfaceOfRevolution diff --git a/source/geometry/solids/BREPS/include/G4ThreeMat.hh b/source/geometry/solids/BREPS/include/G4ThreeMat.hh index d1ace67a34..cd1e59eace 100644 --- a/source/geometry/solids/BREPS/include/G4ThreeMat.hh +++ b/source/geometry/solids/BREPS/include/G4ThreeMat.hh @@ -25,7 +25,7 @@ // // // $Id: G4ThreeMat.hh,v 1.10 2006/06/29 18:40:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4ThreeMat diff --git a/source/geometry/solids/BREPS/include/G4ToroidalSurface.hh b/source/geometry/solids/BREPS/include/G4ToroidalSurface.hh index d629b39690..448417d978 100644 --- a/source/geometry/solids/BREPS/include/G4ToroidalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4ToroidalSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4ToroidalSurface.hh,v 1.7 2006/06/29 18:41:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4ToroidalSurface diff --git a/source/geometry/solids/BREPS/include/G4ToroidalSurface.icc b/source/geometry/solids/BREPS/include/G4ToroidalSurface.icc index e80b94b943..a02e96b7cc 100644 --- a/source/geometry/solids/BREPS/include/G4ToroidalSurface.icc +++ b/source/geometry/solids/BREPS/include/G4ToroidalSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4ToroidalSurface.icc,v 1.4 2006/06/29 18:41:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4UVHit.hh b/source/geometry/solids/BREPS/include/G4UVHit.hh index be8b6460c0..8dceb6fda0 100644 --- a/source/geometry/solids/BREPS/include/G4UVHit.hh +++ b/source/geometry/solids/BREPS/include/G4UVHit.hh @@ -25,7 +25,7 @@ // // // $Id: G4UVHit.hh,v 1.7 2006/06/29 18:41:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4UVHit diff --git a/source/geometry/solids/BREPS/src/G4Assembly.cc b/source/geometry/solids/BREPS/src/G4Assembly.cc index e3d67368a7..1ce083a0e6 100644 --- a/source/geometry/solids/BREPS/src/G4Assembly.cc +++ b/source/geometry/solids/BREPS/src/G4Assembly.cc @@ -25,7 +25,7 @@ // // // $Id: G4Assembly.cc,v 1.6 2006/06/29 18:41:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Axis2Placement3D.cc b/source/geometry/solids/BREPS/src/G4Axis2Placement3D.cc index 5dca9db74e..cc6a8fa0f5 100644 --- a/source/geometry/solids/BREPS/src/G4Axis2Placement3D.cc +++ b/source/geometry/solids/BREPS/src/G4Axis2Placement3D.cc @@ -25,7 +25,7 @@ // // // $Id: G4Axis2Placement3D.cc,v 1.9 2006/06/29 18:41:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BREPSolid.cc b/source/geometry/solids/BREPS/src/G4BREPSolid.cc index 4488b716b0..dd5ecf7e63 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolid.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolid.cc @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolid.cc,v 1.36 2006/10/19 15:35:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidBox.cc b/source/geometry/solids/BREPS/src/G4BREPSolidBox.cc index 5707dd75d5..b64a0d6971 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidBox.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidBox.cc @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolidBox.cc,v 1.10 2006/06/29 18:41:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidCone.cc b/source/geometry/solids/BREPS/src/G4BREPSolidCone.cc index 2e6b0ff641..52d141180c 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidCone.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidCone.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BREPSolidCone.cc,v 1.15 2006/06/29 18:41:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidCylinder.cc b/source/geometry/solids/BREPS/src/G4BREPSolidCylinder.cc index e65601b41e..6bbd159980 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidCylinder.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidCylinder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BREPSolidCylinder.cc,v 1.11 2006/06/29 18:41:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidOpenPCone.cc b/source/geometry/solids/BREPS/src/G4BREPSolidOpenPCone.cc index e71df2d49c..bc5df0d741 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidOpenPCone.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidOpenPCone.cc @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolidOpenPCone.cc,v 1.11 2006/06/29 18:41:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidPCone.cc b/source/geometry/solids/BREPS/src/G4BREPSolidPCone.cc index bb8f1a4ace..b89be64a09 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidPCone.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidPCone.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BREPSolidPCone.cc,v 1.38 2006/06/29 18:41:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidPolyhedra.cc b/source/geometry/solids/BREPS/src/G4BREPSolidPolyhedra.cc index 7eb3a8bbb9..fb66745c5b 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidPolyhedra.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidPolyhedra.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BREPSolidPolyhedra.cc,v 1.34 2006/06/29 18:41:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidSphere.cc b/source/geometry/solids/BREPS/src/G4BREPSolidSphere.cc index 90cb998cc1..1522c2718c 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidSphere.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidSphere.cc @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolidSphere.cc,v 1.11 2006/06/29 18:41:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidTorus.cc b/source/geometry/solids/BREPS/src/G4BREPSolidTorus.cc index 3dd774b29e..86ebe9edff 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidTorus.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidTorus.cc @@ -25,7 +25,7 @@ // // // $Id: G4BREPSolidTorus.cc,v 1.9 2006/06/29 18:41:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BSplineCurve.cc b/source/geometry/solids/BREPS/src/G4BSplineCurve.cc index 5de1f2032a..c77de9e461 100644 --- a/source/geometry/solids/BREPS/src/G4BSplineCurve.cc +++ b/source/geometry/solids/BREPS/src/G4BSplineCurve.cc @@ -25,7 +25,7 @@ // // // $Id: G4BSplineCurve.cc,v 1.12 2006/06/29 18:41:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BSplineCurveWithKnots.cc b/source/geometry/solids/BREPS/src/G4BSplineCurveWithKnots.cc index bd61c6c612..d33e29bbc9 100644 --- a/source/geometry/solids/BREPS/src/G4BSplineCurveWithKnots.cc +++ b/source/geometry/solids/BREPS/src/G4BSplineCurveWithKnots.cc @@ -25,7 +25,7 @@ // // // $Id: G4BSplineCurveWithKnots.cc,v 1.5 2006/06/29 18:41:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BSplineSurface.cc b/source/geometry/solids/BREPS/src/G4BSplineSurface.cc index fb91755888..238ad9dfec 100644 --- a/source/geometry/solids/BREPS/src/G4BSplineSurface.cc +++ b/source/geometry/solids/BREPS/src/G4BSplineSurface.cc @@ -25,7 +25,7 @@ // // // $Id: G4BSplineSurface.cc,v 1.14 2006/06/29 18:41:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BSplineSurfaceWithKnots.cc b/source/geometry/solids/BREPS/src/G4BSplineSurfaceWithKnots.cc index 94ce3fda8c..4a5a91a2c7 100644 --- a/source/geometry/solids/BREPS/src/G4BSplineSurfaceWithKnots.cc +++ b/source/geometry/solids/BREPS/src/G4BSplineSurfaceWithKnots.cc @@ -25,7 +25,7 @@ // // // $Id: G4BSplineSurfaceWithKnots.cc,v 1.4 2006/06/29 18:41:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BezierSurface.cc b/source/geometry/solids/BREPS/src/G4BezierSurface.cc index d7e79c4686..fe5fc9d73b 100644 --- a/source/geometry/solids/BREPS/src/G4BezierSurface.cc +++ b/source/geometry/solids/BREPS/src/G4BezierSurface.cc @@ -25,7 +25,7 @@ // // // $Id: G4BezierSurface.cc,v 1.9 2006/06/29 18:41:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BoundingBox3D.cc b/source/geometry/solids/BREPS/src/G4BoundingBox3D.cc index 29814c76de..b4c14476e2 100644 --- a/source/geometry/solids/BREPS/src/G4BoundingBox3D.cc +++ b/source/geometry/solids/BREPS/src/G4BoundingBox3D.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4BoundingBox3D.cc,v 1.11 2007/05/11 13:49:32 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4BoundingBox3D.cc,v 1.12 2007/07/16 08:06:55 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -44,7 +44,11 @@ const G4BoundingBox3D G4BoundingBox3D:: ///////////////////////////////////////////////////////////////////////////// -G4BoundingBox3D::G4BoundingBox3D() { distance =0; } +G4BoundingBox3D::G4BoundingBox3D() +{ + distance =0; + kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); +} G4BoundingBox3D::G4BoundingBox3D(const G4Point3D& p1, const G4Point3D& p2) { @@ -56,12 +60,15 @@ G4BoundingBox3D::G4BoundingBox3D(const G4Point3D& p) Init(p); } -G4BoundingBox3D::~G4BoundingBox3D() {} +G4BoundingBox3D::~G4BoundingBox3D() +{ +} G4BoundingBox3D::G4BoundingBox3D(const G4BoundingBox3D& right) : box_min(right.box_min), box_max(right.box_max), distance(right.distance), test_result(right.test_result), - MiddlePoint(right.MiddlePoint), GeantBox(right.GeantBox) + MiddlePoint(right.MiddlePoint), GeantBox(right.GeantBox), + kCarTolerance(right.kCarTolerance) { } @@ -74,6 +81,7 @@ G4BoundingBox3D& G4BoundingBox3D::operator=(const G4BoundingBox3D& right) test_result = right.test_result; MiddlePoint = right.MiddlePoint; GeantBox = right.GeantBox; + kCarTolerance = right.kCarTolerance; return *this; } @@ -105,6 +113,7 @@ void G4BoundingBox3D::Init(const G4Point3D& p) box_min= box_max= MiddlePoint= p; GeantBox= G4Point3D(0, 0, 0); distance= 0; + kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); } diff --git a/source/geometry/solids/BREPS/src/G4CircularCurve.cc b/source/geometry/solids/BREPS/src/G4CircularCurve.cc index 02997e036e..4829ce5c0c 100644 --- a/source/geometry/solids/BREPS/src/G4CircularCurve.cc +++ b/source/geometry/solids/BREPS/src/G4CircularCurve.cc @@ -25,7 +25,7 @@ // // // $Id: G4CircularCurve.cc,v 1.10 2006/06/29 18:41:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4CompositeCurve.cc b/source/geometry/solids/BREPS/src/G4CompositeCurve.cc index 5ba565e3d2..7def5f8c98 100644 --- a/source/geometry/solids/BREPS/src/G4CompositeCurve.cc +++ b/source/geometry/solids/BREPS/src/G4CompositeCurve.cc @@ -25,7 +25,7 @@ // // // $Id: G4CompositeCurve.cc,v 1.13 2006/06/29 18:41:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Conic.cc b/source/geometry/solids/BREPS/src/G4Conic.cc index 7a40a7bba4..ce01002b71 100644 --- a/source/geometry/solids/BREPS/src/G4Conic.cc +++ b/source/geometry/solids/BREPS/src/G4Conic.cc @@ -25,7 +25,7 @@ // // // $Id: G4Conic.cc,v 1.8 2006/06/29 18:41:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4ConicalSurface.cc b/source/geometry/solids/BREPS/src/G4ConicalSurface.cc index 8b1968a411..a193badb64 100644 --- a/source/geometry/solids/BREPS/src/G4ConicalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4ConicalSurface.cc @@ -25,7 +25,7 @@ // // // $Id: G4ConicalSurface.cc,v 1.11 2006/06/29 18:41:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4ControlPoints.cc b/source/geometry/solids/BREPS/src/G4ControlPoints.cc index 0c571a7508..2f9ac0bce5 100644 --- a/source/geometry/solids/BREPS/src/G4ControlPoints.cc +++ b/source/geometry/solids/BREPS/src/G4ControlPoints.cc @@ -25,7 +25,7 @@ // // // $Id: G4ControlPoints.cc,v 1.8 2006/06/29 18:42:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Curve.cc b/source/geometry/solids/BREPS/src/G4Curve.cc index 1126168f97..f7b2f3c755 100644 --- a/source/geometry/solids/BREPS/src/G4Curve.cc +++ b/source/geometry/solids/BREPS/src/G4Curve.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Curve.cc,v 1.8 2007/05/11 13:49:32 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Curve.cc,v 1.9 2007/07/16 08:06:55 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -49,7 +49,8 @@ G4Curve::~G4Curve() G4Curve::G4Curve(const G4Curve& c) : start(c.start), end(c.end), pStart(c.pStart), pEnd(c.pEnd), - pRange(c.pRange), bounded(c.bounded), sameSense(c.sameSense) + pRange(c.pRange), bounded(c.bounded), sameSense(c.sameSense), + kCarTolerance(c.kCarTolerance) { } @@ -63,6 +64,7 @@ G4Curve& G4Curve::operator=(const G4Curve& c) pRange = c.pRange; bounded = c.bounded; sameSense = c.sameSense; + kCarTolerance = c.kCarTolerance; return *this; } diff --git a/source/geometry/solids/BREPS/src/G4CurvePoint.cc b/source/geometry/solids/BREPS/src/G4CurvePoint.cc index 068191a824..b7c89cb403 100644 --- a/source/geometry/solids/BREPS/src/G4CurvePoint.cc +++ b/source/geometry/solids/BREPS/src/G4CurvePoint.cc @@ -25,7 +25,7 @@ // // // $Id: G4CurvePoint.cc,v 1.5 2006/06/29 18:42:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4CurveRayIntersection.cc b/source/geometry/solids/BREPS/src/G4CurveRayIntersection.cc index 05fe245461..3f7a22459a 100644 --- a/source/geometry/solids/BREPS/src/G4CurveRayIntersection.cc +++ b/source/geometry/solids/BREPS/src/G4CurveRayIntersection.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4CurveRayIntersection.cc,v 1.7 2007/05/11 13:49:32 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4CurveRayIntersection.cc,v 1.8 2007/07/16 08:06:55 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -48,6 +48,7 @@ G4CurveRayIntersection::G4CurveRayIntersection() G4CurveRayIntersection::G4CurveRayIntersection(G4Curve& c0, const G4Ray& r0) { Init(c0, r0); + kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); } G4CurveRayIntersection::~G4CurveRayIntersection() @@ -61,6 +62,7 @@ G4CurveRayIntersection::G4CurveRayIntersection(const G4CurveRayIntersection& cr) p = cr.p; u = cr.u; notComputed = cr.notComputed; + kCarTolerance = cr.kCarTolerance; } G4CurveRayIntersection& @@ -73,6 +75,7 @@ G4CurveRayIntersection::operator=(const G4CurveRayIntersection& cr) r = cr.r; d = cr.d; notComputed = cr.notComputed; + kCarTolerance = cr.kCarTolerance; return *this; } diff --git a/source/geometry/solids/BREPS/src/G4CylindricalSurface.cc b/source/geometry/solids/BREPS/src/G4CylindricalSurface.cc index 8d198ed470..8c194279d9 100644 --- a/source/geometry/solids/BREPS/src/G4CylindricalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4CylindricalSurface.cc @@ -25,7 +25,7 @@ // // // $Id: G4CylindricalSurface.cc,v 1.8 2006/06/29 18:42:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Ellipse.cc b/source/geometry/solids/BREPS/src/G4Ellipse.cc index d2040c26d2..865b76a106 100644 --- a/source/geometry/solids/BREPS/src/G4Ellipse.cc +++ b/source/geometry/solids/BREPS/src/G4Ellipse.cc @@ -25,7 +25,7 @@ // // // $Id: G4Ellipse.cc,v 1.12 2007/05/18 07:33:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4FConicalSurface.cc b/source/geometry/solids/BREPS/src/G4FConicalSurface.cc index b11c9e885f..5dbf806610 100644 --- a/source/geometry/solids/BREPS/src/G4FConicalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4FConicalSurface.cc @@ -25,7 +25,7 @@ // // // $Id: G4FConicalSurface.cc,v 1.19 2006/06/29 18:42:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4FCylindricalSurface.cc b/source/geometry/solids/BREPS/src/G4FCylindricalSurface.cc index 265ccf7d9d..4468b27bfc 100644 --- a/source/geometry/solids/BREPS/src/G4FCylindricalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4FCylindricalSurface.cc @@ -25,7 +25,7 @@ // // // $Id: G4FCylindricalSurface.cc,v 1.16 2006/06/29 18:42:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4FPlane.cc b/source/geometry/solids/BREPS/src/G4FPlane.cc index 6ed762d808..afa107bd20 100644 --- a/source/geometry/solids/BREPS/src/G4FPlane.cc +++ b/source/geometry/solids/BREPS/src/G4FPlane.cc @@ -25,7 +25,7 @@ // // // $Id: G4FPlane.cc,v 1.16 2006/06/29 18:42:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Hyperbola.cc b/source/geometry/solids/BREPS/src/G4Hyperbola.cc index c497367c52..2c8968a29f 100644 --- a/source/geometry/solids/BREPS/src/G4Hyperbola.cc +++ b/source/geometry/solids/BREPS/src/G4Hyperbola.cc @@ -25,7 +25,7 @@ // // // $Id: G4Hyperbola.cc,v 1.12 2007/05/18 07:33:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4KnotVector.cc b/source/geometry/solids/BREPS/src/G4KnotVector.cc index 922811c5e4..49b2371596 100644 --- a/source/geometry/solids/BREPS/src/G4KnotVector.cc +++ b/source/geometry/solids/BREPS/src/G4KnotVector.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4KnotVector.cc,v 1.9 2007/05/11 13:49:32 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4KnotVector.cc,v 1.10 2007/07/16 08:06:55 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -48,7 +48,8 @@ G4KnotVector::G4KnotVector(G4int sz) k_size=sz; knots = new G4double[k_size]; for(G4int a=0;aGetSurfaceTolerance(); } @@ -63,7 +64,8 @@ G4KnotVector::G4KnotVector(const G4KnotVector& orig) k_size = orig.k_size; knots = new G4double[k_size]; for(register G4int a=0; a < orig.k_size; a++) - knots[a] = orig.knots[a]; + { knots[a] = orig.knots[a]; } + kCarTolerance = orig.kCarTolerance; } G4KnotVector& G4KnotVector::operator=(const G4KnotVector& right) @@ -74,6 +76,7 @@ G4KnotVector& G4KnotVector::operator=(const G4KnotVector& right) knots = new G4double[k_size]; for(register G4int a=0; a < right.k_size; a++) knots[a] = right.knots[a]; + kCarTolerance = right.kCarTolerance; return *this; } diff --git a/source/geometry/solids/BREPS/src/G4Line.cc b/source/geometry/solids/BREPS/src/G4Line.cc index ca7c3b1244..7daa2d0154 100644 --- a/source/geometry/solids/BREPS/src/G4Line.cc +++ b/source/geometry/solids/BREPS/src/G4Line.cc @@ -25,7 +25,7 @@ // // // $Id: G4Line.cc,v 1.10 2006/06/29 18:42:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4OsloMatrix.cc b/source/geometry/solids/BREPS/src/G4OsloMatrix.cc index 65ea05da09..d1cd1e6f30 100644 --- a/source/geometry/solids/BREPS/src/G4OsloMatrix.cc +++ b/source/geometry/solids/BREPS/src/G4OsloMatrix.cc @@ -25,7 +25,7 @@ // // // $Id: G4OsloMatrix.cc,v 1.6 2006/06/29 18:42:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Parabola.cc b/source/geometry/solids/BREPS/src/G4Parabola.cc index e199b5f223..dcecde055f 100644 --- a/source/geometry/solids/BREPS/src/G4Parabola.cc +++ b/source/geometry/solids/BREPS/src/G4Parabola.cc @@ -25,7 +25,7 @@ // // // $Id: G4Parabola.cc,v 1.9 2007/05/18 07:33:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4PlacedSolid.cc b/source/geometry/solids/BREPS/src/G4PlacedSolid.cc index 94e73c95e3..13ce4e2eb9 100644 --- a/source/geometry/solids/BREPS/src/G4PlacedSolid.cc +++ b/source/geometry/solids/BREPS/src/G4PlacedSolid.cc @@ -25,7 +25,7 @@ // // // $Id: G4PlacedSolid.cc,v 1.6 2007/05/11 13:49:32 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4PointRat.cc b/source/geometry/solids/BREPS/src/G4PointRat.cc index dfc815d8df..fcb0619d0c 100644 --- a/source/geometry/solids/BREPS/src/G4PointRat.cc +++ b/source/geometry/solids/BREPS/src/G4PointRat.cc @@ -25,7 +25,7 @@ // // // $Id: G4PointRat.cc,v 1.6 2006/06/29 18:42:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4ProjectedSurface.cc b/source/geometry/solids/BREPS/src/G4ProjectedSurface.cc index 366f48e1f5..68d7b55528 100644 --- a/source/geometry/solids/BREPS/src/G4ProjectedSurface.cc +++ b/source/geometry/solids/BREPS/src/G4ProjectedSurface.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProjectedSurface.cc,v 1.11 2006/06/29 18:42:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Ray.cc b/source/geometry/solids/BREPS/src/G4Ray.cc index c5c6748cea..ce8d204b19 100644 --- a/source/geometry/solids/BREPS/src/G4Ray.cc +++ b/source/geometry/solids/BREPS/src/G4Ray.cc @@ -25,7 +25,7 @@ // // // $Id: G4Ray.cc,v 1.11 2006/06/29 18:42:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4RectangularTrimmedSurface.cc b/source/geometry/solids/BREPS/src/G4RectangularTrimmedSurface.cc index 7ee81fcb32..abd303bbf3 100644 --- a/source/geometry/solids/BREPS/src/G4RectangularTrimmedSurface.cc +++ b/source/geometry/solids/BREPS/src/G4RectangularTrimmedSurface.cc @@ -25,7 +25,7 @@ // // // $Id: G4RectangularTrimmedSurface.cc,v 1.7 2006/06/29 18:42:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Sort.cc b/source/geometry/solids/BREPS/src/G4Sort.cc index 93b9c6dd5c..a2c2a29126 100644 --- a/source/geometry/solids/BREPS/src/G4Sort.cc +++ b/source/geometry/solids/BREPS/src/G4Sort.cc @@ -25,7 +25,7 @@ // // // $Id: G4Sort.cc,v 1.5 2006/06/29 18:42:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 source file diff --git a/source/geometry/solids/BREPS/src/G4SphericalSurface.cc b/source/geometry/solids/BREPS/src/G4SphericalSurface.cc index 186b7eb37a..b632f38011 100644 --- a/source/geometry/solids/BREPS/src/G4SphericalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4SphericalSurface.cc @@ -25,7 +25,7 @@ // // // $Id: G4SphericalSurface.cc,v 1.10 2006/06/29 18:42:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Surface.cc b/source/geometry/solids/BREPS/src/G4Surface.cc index acac86c92c..63c9b25994 100644 --- a/source/geometry/solids/BREPS/src/G4Surface.cc +++ b/source/geometry/solids/BREPS/src/G4Surface.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Surface.cc,v 1.16 2007/05/11 13:49:32 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Surface.cc,v 1.17 2007/07/16 08:06:55 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -44,8 +44,8 @@ G4Surface::G4Surface() AdvancedFace=0; active = 1; distance = 1.0e20; - Type=0; - bbox = (G4BoundingBox3D*)0; + Type = 0; + bbox = 0; kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); } diff --git a/source/geometry/solids/BREPS/src/G4SurfaceBoundary.cc b/source/geometry/solids/BREPS/src/G4SurfaceBoundary.cc index 4e781391a4..e6f22f9113 100644 --- a/source/geometry/solids/BREPS/src/G4SurfaceBoundary.cc +++ b/source/geometry/solids/BREPS/src/G4SurfaceBoundary.cc @@ -25,7 +25,7 @@ // // // $Id: G4SurfaceBoundary.cc,v 1.14 2006/06/29 18:42:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4SurfaceList.cc b/source/geometry/solids/BREPS/src/G4SurfaceList.cc index 1768050606..3ee3bd91b0 100644 --- a/source/geometry/solids/BREPS/src/G4SurfaceList.cc +++ b/source/geometry/solids/BREPS/src/G4SurfaceList.cc @@ -25,7 +25,7 @@ // // // $Id: G4SurfaceList.cc,v 1.7 2006/06/29 18:42:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4SurfaceOfLinearExtrusion.cc b/source/geometry/solids/BREPS/src/G4SurfaceOfLinearExtrusion.cc index 6cf87cc2f0..9cf6db06b7 100644 --- a/source/geometry/solids/BREPS/src/G4SurfaceOfLinearExtrusion.cc +++ b/source/geometry/solids/BREPS/src/G4SurfaceOfLinearExtrusion.cc @@ -25,7 +25,7 @@ // // // $Id: G4SurfaceOfLinearExtrusion.cc,v 1.4 2006/06/29 18:42:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4SurfaceOfRevolution.cc b/source/geometry/solids/BREPS/src/G4SurfaceOfRevolution.cc index c2198f3680..e153ae6195 100644 --- a/source/geometry/solids/BREPS/src/G4SurfaceOfRevolution.cc +++ b/source/geometry/solids/BREPS/src/G4SurfaceOfRevolution.cc @@ -28,7 +28,7 @@ // and all its terms. // // $Id: G4SurfaceOfRevolution.cc,v 1.4 2006/06/29 18:42:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4ThreeMat.cc b/source/geometry/solids/BREPS/src/G4ThreeMat.cc index e651fac956..48bb86c51a 100644 --- a/source/geometry/solids/BREPS/src/G4ThreeMat.cc +++ b/source/geometry/solids/BREPS/src/G4ThreeMat.cc @@ -25,7 +25,7 @@ // // // $Id: G4ThreeMat.cc,v 1.8 2006/06/29 18:42:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4ToroidalSurface.cc b/source/geometry/solids/BREPS/src/G4ToroidalSurface.cc index a58717d89d..8705ba520b 100644 --- a/source/geometry/solids/BREPS/src/G4ToroidalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4ToroidalSurface.cc @@ -25,7 +25,7 @@ // // // $Id: G4ToroidalSurface.cc,v 1.10 2006/06/29 18:42:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/Boolean/History b/source/geometry/solids/Boolean/History index 30e55802cc..bf67990973 100644 --- a/source/geometry/solids/Boolean/History +++ b/source/geometry/solids/Boolean/History @@ -1,5 +1,5 @@ -$Id: History,v 1.61 2007/05/18 07:36:34 gcosmo Exp $ +$Id: History,v 1.62 2007/10/24 08:19:11 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -20,6 +20,10 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + Oct 24, 2007 V.Grichine geom-bool-V09-00-00 + - Improved response of Inside() for G4SubtractionSolid and G4UnionSolid + according to suggestion in problem report #979. + May 18, 2007 G.Cosmo geom-bool-V08-03-00 - Use kAngTolerance and kRadTolerance from G4GeometryTolerance class. - Updated unit tests. diff --git a/source/geometry/solids/Boolean/include/G4BooleanSolid.hh b/source/geometry/solids/Boolean/include/G4BooleanSolid.hh index 92ea4415f0..0ea1623bce 100644 --- a/source/geometry/solids/Boolean/include/G4BooleanSolid.hh +++ b/source/geometry/solids/Boolean/include/G4BooleanSolid.hh @@ -25,7 +25,7 @@ // // // $Id: G4BooleanSolid.hh,v 1.15 2006/10/19 15:34:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4BooleanSolid diff --git a/source/geometry/solids/Boolean/include/G4BooleanSolid.icc b/source/geometry/solids/Boolean/include/G4BooleanSolid.icc index 6b4c7fbfe1..8b281b2db4 100644 --- a/source/geometry/solids/Boolean/include/G4BooleanSolid.icc +++ b/source/geometry/solids/Boolean/include/G4BooleanSolid.icc @@ -25,7 +25,7 @@ // // // $Id: G4BooleanSolid.icc,v 1.4 2006/10/20 14:20:54 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/Boolean/include/G4DisplacedSolid.hh b/source/geometry/solids/Boolean/include/G4DisplacedSolid.hh index 8b203e5e51..a5ad3a0683 100644 --- a/source/geometry/solids/Boolean/include/G4DisplacedSolid.hh +++ b/source/geometry/solids/Boolean/include/G4DisplacedSolid.hh @@ -25,7 +25,7 @@ // // // $Id: G4DisplacedSolid.hh,v 1.19 2006/06/29 18:43:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4DisplacedSolid diff --git a/source/geometry/solids/Boolean/include/G4IntersectionSolid.hh b/source/geometry/solids/Boolean/include/G4IntersectionSolid.hh index 3f86d2d487..51ad4dde0e 100644 --- a/source/geometry/solids/Boolean/include/G4IntersectionSolid.hh +++ b/source/geometry/solids/Boolean/include/G4IntersectionSolid.hh @@ -25,7 +25,7 @@ // // // $Id: G4IntersectionSolid.hh,v 1.9 2006/06/29 18:43:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4IntersectionSolid diff --git a/source/geometry/solids/Boolean/include/G4SubtractionSolid.hh b/source/geometry/solids/Boolean/include/G4SubtractionSolid.hh index 45d6289971..e6d3326f94 100644 --- a/source/geometry/solids/Boolean/include/G4SubtractionSolid.hh +++ b/source/geometry/solids/Boolean/include/G4SubtractionSolid.hh @@ -25,7 +25,7 @@ // // // $Id: G4SubtractionSolid.hh,v 1.9 2006/06/29 18:43:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4SubtractionSolid diff --git a/source/geometry/solids/Boolean/include/G4UnionSolid.hh b/source/geometry/solids/Boolean/include/G4UnionSolid.hh index 0b24882242..2a5015e584 100644 --- a/source/geometry/solids/Boolean/include/G4UnionSolid.hh +++ b/source/geometry/solids/Boolean/include/G4UnionSolid.hh @@ -25,7 +25,7 @@ // // // $Id: G4UnionSolid.hh,v 1.10 2006/06/29 18:43:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4UnionSolid diff --git a/source/geometry/solids/Boolean/src/G4BooleanSolid.cc b/source/geometry/solids/Boolean/src/G4BooleanSolid.cc index 66e16a9b55..fd66e90c13 100644 --- a/source/geometry/solids/Boolean/src/G4BooleanSolid.cc +++ b/source/geometry/solids/Boolean/src/G4BooleanSolid.cc @@ -25,7 +25,7 @@ // // // $Id: G4BooleanSolid.cc,v 1.21 2006/10/19 15:34:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Implementation for the abstract base class for solids created by boolean // operations between other solids diff --git a/source/geometry/solids/Boolean/src/G4DisplacedSolid.cc b/source/geometry/solids/Boolean/src/G4DisplacedSolid.cc index 7ab917ca32..9b4264e3d7 100644 --- a/source/geometry/solids/Boolean/src/G4DisplacedSolid.cc +++ b/source/geometry/solids/Boolean/src/G4DisplacedSolid.cc @@ -25,7 +25,7 @@ // // // $Id: G4DisplacedSolid.cc,v 1.27 2006/06/29 18:43:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Implementation for G4DisplacedSolid class for boolean // operations between other solids diff --git a/source/geometry/solids/Boolean/src/G4IntersectionSolid.cc b/source/geometry/solids/Boolean/src/G4IntersectionSolid.cc index dc2376f871..5c7987e2f4 100644 --- a/source/geometry/solids/Boolean/src/G4IntersectionSolid.cc +++ b/source/geometry/solids/Boolean/src/G4IntersectionSolid.cc @@ -25,7 +25,7 @@ // // // $Id: G4IntersectionSolid.cc,v 1.30 2006/11/08 09:37:41 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Implementation of methods for the class G4IntersectionSolid // diff --git a/source/geometry/solids/Boolean/src/G4SubtractionSolid.cc b/source/geometry/solids/Boolean/src/G4SubtractionSolid.cc index db3ce36b03..83983bced4 100644 --- a/source/geometry/solids/Boolean/src/G4SubtractionSolid.cc +++ b/source/geometry/solids/Boolean/src/G4SubtractionSolid.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SubtractionSolid.cc,v 1.30 2007/05/18 07:35:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SubtractionSolid.cc,v 1.31 2007/10/23 14:42:31 grichine Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Implementation of methods for the class G4IntersectionSolid // @@ -132,6 +132,8 @@ G4SubtractionSolid::CalculateExtent( const EAxis pAxis, EInside G4SubtractionSolid::Inside( const G4ThreeVector& p ) const { EInside positionA = fPtrSolidA->Inside(p); + if (positionA == kOutside) return kOutside; + EInside positionB = fPtrSolidB->Inside(p); if(positionA == kInside && positionB == kOutside) diff --git a/source/geometry/solids/Boolean/src/G4UnionSolid.cc b/source/geometry/solids/Boolean/src/G4UnionSolid.cc index 5e2fab8714..bf471e041e 100644 --- a/source/geometry/solids/Boolean/src/G4UnionSolid.cc +++ b/source/geometry/solids/Boolean/src/G4UnionSolid.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4UnionSolid.cc,v 1.34 2007/05/18 07:35:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4UnionSolid.cc,v 1.35 2007/10/23 14:42:31 grichine Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Implementation of methods for the class G4IntersectionSolid // @@ -146,6 +146,8 @@ G4UnionSolid::CalculateExtent( const EAxis pAxis, EInside G4UnionSolid::Inside( const G4ThreeVector& p ) const { EInside positionA = fPtrSolidA->Inside(p); + if (positionA == kInside) return kInside; + EInside positionB = fPtrSolidB->Inside(p); if( positionA == kInside || positionB == kInside || diff --git a/source/geometry/solids/CSG/History b/source/geometry/solids/CSG/History index bc30d9dfed..d0b3a2a290 100644 --- a/source/geometry/solids/CSG/History +++ b/source/geometry/solids/CSG/History @@ -1,4 +1,4 @@ -$Id: History,v 1.96 2007/05/18 07:38:17 gcosmo Exp $ +$Id: History,v 1.99 2007/11/23 09:32:28 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,25 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Nov 23, 2007 T.Nikitina geom-csg-V09-00-02 +- Fixed problem of undefined side for valid surface normal in case of Phi + section and direction through the center of either A G4Tubs or G4Cons shape. + +Oct 2, 2007 T.Nikitina geom-csg-V09-00-01 +- G4Torus: + o Fixed bug in CalculateExtent() for case of non-rotated full-phi + torus definition: added protection against negative value for sqrt() + and corrected formula for 'delta'. Fixes problem of NaN detected in + initialisation by CMS. + o Fixed bug in SolveNumericJT(): corrected handling of complex roots, + 'rootsrefined' is used only if the number of refined roots is the same + as for primary roots. Addresses problem report #969. + +Aug 16, 2007 T.Nikitina geom-csg-V09-00-00 +- 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. + May 18, 2007 G.Cosmo geom-csg-V08-03-01 - Use kAngTolerance and kRadTolerance from G4GeometryTolerance class. - Coworks with tag "global-V08-03-03". diff --git a/source/geometry/solids/CSG/include/G4Box.hh b/source/geometry/solids/CSG/include/G4Box.hh index d225ecd0eb..f64ce2fab6 100644 --- a/source/geometry/solids/CSG/include/G4Box.hh +++ b/source/geometry/solids/CSG/include/G4Box.hh @@ -25,7 +25,7 @@ // // // $Id: G4Box.hh,v 1.17 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/solids/CSG/include/G4Box.icc b/source/geometry/solids/CSG/include/G4Box.icc index 73eec9bc53..9fad7c5dc3 100644 --- a/source/geometry/solids/CSG/include/G4Box.icc +++ b/source/geometry/solids/CSG/include/G4Box.icc @@ -25,7 +25,7 @@ // // // $Id: G4Box.icc,v 1.6 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/CSG/include/G4CSGSolid.hh b/source/geometry/solids/CSG/include/G4CSGSolid.hh index c2212ba88a..4a40bbf0f4 100644 --- a/source/geometry/solids/CSG/include/G4CSGSolid.hh +++ b/source/geometry/solids/CSG/include/G4CSGSolid.hh @@ -25,7 +25,7 @@ // // // $Id: G4CSGSolid.hh,v 1.12 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Cons.hh b/source/geometry/solids/CSG/include/G4Cons.hh index 6cb443be2a..7c945c2e4d 100644 --- a/source/geometry/solids/CSG/include/G4Cons.hh +++ b/source/geometry/solids/CSG/include/G4Cons.hh @@ -25,7 +25,7 @@ // // // $Id: G4Cons.hh,v 1.18 2007/05/18 07:38:00 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Cons.icc b/source/geometry/solids/CSG/include/G4Cons.icc index 0f3c9e3b98..195340ccfc 100644 --- a/source/geometry/solids/CSG/include/G4Cons.icc +++ b/source/geometry/solids/CSG/include/G4Cons.icc @@ -25,7 +25,7 @@ // // // $Id: G4Cons.icc,v 1.6 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/CSG/include/G4Orb.hh b/source/geometry/solids/CSG/include/G4Orb.hh index 82cc0c9e42..767ca52dde 100644 --- a/source/geometry/solids/CSG/include/G4Orb.hh +++ b/source/geometry/solids/CSG/include/G4Orb.hh @@ -25,7 +25,7 @@ // // // $Id: G4Orb.hh,v 1.11 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Orb.icc b/source/geometry/solids/CSG/include/G4Orb.icc index d94cadbfff..98602f4a8e 100644 --- a/source/geometry/solids/CSG/include/G4Orb.icc +++ b/source/geometry/solids/CSG/include/G4Orb.icc @@ -25,7 +25,7 @@ // // // $Id: G4Orb.icc,v 1.5 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/CSG/include/G4Para.hh b/source/geometry/solids/CSG/include/G4Para.hh index 37c5035867..d98537e0c3 100644 --- a/source/geometry/solids/CSG/include/G4Para.hh +++ b/source/geometry/solids/CSG/include/G4Para.hh @@ -25,7 +25,7 @@ // // // $Id: G4Para.hh,v 1.18 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Para.icc b/source/geometry/solids/CSG/include/G4Para.icc index 55c1ebbdcf..aa242f74b3 100644 --- a/source/geometry/solids/CSG/include/G4Para.icc +++ b/source/geometry/solids/CSG/include/G4Para.icc @@ -25,7 +25,7 @@ // // // $Id: G4Para.icc,v 1.7 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/CSG/include/G4Sphere.hh b/source/geometry/solids/CSG/include/G4Sphere.hh index f3b2847a1e..5591f7b465 100644 --- a/source/geometry/solids/CSG/include/G4Sphere.hh +++ b/source/geometry/solids/CSG/include/G4Sphere.hh @@ -25,7 +25,7 @@ // // // $Id: G4Sphere.hh,v 1.20 2007/05/18 07:38:00 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Sphere.icc b/source/geometry/solids/CSG/include/G4Sphere.icc index 7f636c58f1..600fe09822 100644 --- a/source/geometry/solids/CSG/include/G4Sphere.icc +++ b/source/geometry/solids/CSG/include/G4Sphere.icc @@ -25,7 +25,7 @@ // // // $Id: G4Sphere.icc,v 1.7 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/CSG/include/G4Torus.hh b/source/geometry/solids/CSG/include/G4Torus.hh index 77d20c8131..ef92e1409f 100644 --- a/source/geometry/solids/CSG/include/G4Torus.hh +++ b/source/geometry/solids/CSG/include/G4Torus.hh @@ -25,7 +25,7 @@ // // // $Id: G4Torus.hh,v 1.27 2007/05/18 07:38:00 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Torus.icc b/source/geometry/solids/CSG/include/G4Torus.icc index f30ec1e438..74e4e72f20 100644 --- a/source/geometry/solids/CSG/include/G4Torus.icc +++ b/source/geometry/solids/CSG/include/G4Torus.icc @@ -25,7 +25,7 @@ // // // $Id: G4Torus.icc,v 1.6 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/CSG/include/G4Trap.hh b/source/geometry/solids/CSG/include/G4Trap.hh index 8f8dc9f3e5..08cb2e7292 100644 --- a/source/geometry/solids/CSG/include/G4Trap.hh +++ b/source/geometry/solids/CSG/include/G4Trap.hh @@ -25,7 +25,7 @@ // // // $Id: G4Trap.hh,v 1.17 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Trap.icc b/source/geometry/solids/CSG/include/G4Trap.icc index d2372cf697..74abc20340 100644 --- a/source/geometry/solids/CSG/include/G4Trap.icc +++ b/source/geometry/solids/CSG/include/G4Trap.icc @@ -25,7 +25,7 @@ // // // $Id: G4Trap.icc,v 1.8 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/CSG/include/G4Trd.hh b/source/geometry/solids/CSG/include/G4Trd.hh index a932c530c7..547dd7ecb5 100644 --- a/source/geometry/solids/CSG/include/G4Trd.hh +++ b/source/geometry/solids/CSG/include/G4Trd.hh @@ -25,7 +25,7 @@ // // // $Id: G4Trd.hh,v 1.16 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Trd.icc b/source/geometry/solids/CSG/include/G4Trd.icc index 29650beae3..91cfe63bfe 100644 --- a/source/geometry/solids/CSG/include/G4Trd.icc +++ b/source/geometry/solids/CSG/include/G4Trd.icc @@ -25,7 +25,7 @@ // // // $Id: G4Trd.icc,v 1.7 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/CSG/include/G4Tubs.hh b/source/geometry/solids/CSG/include/G4Tubs.hh index 395caeb8d7..19b125be6a 100644 --- a/source/geometry/solids/CSG/include/G4Tubs.hh +++ b/source/geometry/solids/CSG/include/G4Tubs.hh @@ -25,7 +25,7 @@ // // // $Id: G4Tubs.hh,v 1.17 2007/05/18 07:38:00 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Tubs.icc b/source/geometry/solids/CSG/include/G4Tubs.icc index 06f9eedd07..bba1e3fed4 100644 --- a/source/geometry/solids/CSG/include/G4Tubs.icc +++ b/source/geometry/solids/CSG/include/G4Tubs.icc @@ -25,7 +25,7 @@ // // // $Id: G4Tubs.icc,v 1.7 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/CSG/src/G4Box.cc b/source/geometry/solids/CSG/src/G4Box.cc index b38c1c05e5..a7436f2fde 100644 --- a/source/geometry/solids/CSG/src/G4Box.cc +++ b/source/geometry/solids/CSG/src/G4Box.cc @@ -25,7 +25,7 @@ // // // $Id: G4Box.cc,v 1.44 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/geometry/solids/CSG/src/G4CSGSolid.cc b/source/geometry/solids/CSG/src/G4CSGSolid.cc index 994e253296..f8faab64ec 100644 --- a/source/geometry/solids/CSG/src/G4CSGSolid.cc +++ b/source/geometry/solids/CSG/src/G4CSGSolid.cc @@ -25,7 +25,7 @@ // // // $Id: G4CSGSolid.cc,v 1.13 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/src/G4Cons.cc b/source/geometry/solids/CSG/src/G4Cons.cc index 74c9f13bcf..024e951dab 100644 --- a/source/geometry/solids/CSG/src/G4Cons.cc +++ b/source/geometry/solids/CSG/src/G4Cons.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Cons.cc,v 1.53 2007/05/18 07:38:00 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Cons.cc,v 1.54 2007/11/23 09:08:17 tnikitin Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4Cons @@ -1789,6 +1789,7 @@ G4double G4Cons::DistanceToOut( const G4ThreeVector& p, // (if not -> no intersect) // if((std::abs(xi)<=kCarTolerance)&&(std::abs(yi)<=kCarTolerance)){ + sidephi= kSPhi; if(((fSPhi-0.5*kAngTolerance)<=vphi)&&((ePhi+0.5*kAngTolerance)>=vphi)) { sphi = kInfinity; } diff --git a/source/geometry/solids/CSG/src/G4Orb.cc b/source/geometry/solids/CSG/src/G4Orb.cc index 1c627c7b1e..7de160c2cc 100644 --- a/source/geometry/solids/CSG/src/G4Orb.cc +++ b/source/geometry/solids/CSG/src/G4Orb.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4Orb.cc,v 1.24 2007/05/18 07:38:01 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4Orb // diff --git a/source/geometry/solids/CSG/src/G4Para.cc b/source/geometry/solids/CSG/src/G4Para.cc index eed638c0d4..f6c5f87364 100644 --- a/source/geometry/solids/CSG/src/G4Para.cc +++ b/source/geometry/solids/CSG/src/G4Para.cc @@ -25,7 +25,7 @@ // // // $Id: G4Para.cc,v 1.39 2006/10/19 15:33:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4Para // diff --git a/source/geometry/solids/CSG/src/G4Sphere.cc b/source/geometry/solids/CSG/src/G4Sphere.cc index c6142fb247..dda311571d 100644 --- a/source/geometry/solids/CSG/src/G4Sphere.cc +++ b/source/geometry/solids/CSG/src/G4Sphere.cc @@ -25,7 +25,7 @@ // // // $Id: G4Sphere.cc,v 1.57 2007/05/18 07:38:01 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4Sphere // diff --git a/source/geometry/solids/CSG/src/G4Torus.cc b/source/geometry/solids/CSG/src/G4Torus.cc index 4fb4bd2834..a88fe9517e 100644 --- a/source/geometry/solids/CSG/src/G4Torus.cc +++ b/source/geometry/solids/CSG/src/G4Torus.cc @@ -24,14 +24,20 @@ // ******************************************************************** // // -// $Id: G4Torus.cc,v 1.61 2007/05/18 07:38:01 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Torus.cc,v 1.63 2007/10/02 09:34:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4Torus // // Implementation // +// 02.10.07 T.Nikitina: Bug fixed in SolveNumericJT(), b.969:segmentation fault. +// rootsrefined is used only if the number of refined roots +// is the same as for primary roots. +// 02.10.07 T.Nikitina: Bug fixed in CalculateExtent() for case of non-rotated +// full-phi torus:protect against negative value for sqrt, +// correct formula for delta. // 20.11.05 V.Grichine: Bug fixed in Inside(p) for phi sections, b.810 // 25.08.05 O.Link: new methods for DistanceToIn/Out using JTPolynomialSolver // 07.06.05 V.Grichine: SurfaceNormal(p) for rho=0, Constructor as G4Cons @@ -268,7 +274,10 @@ G4double G4Torus::SolveNumericJT( const G4ThreeVector& p, { ptmp = p + t*v ; rootsrefined = TorusRootsJT(ptmp,v,r) ; - t = t + rootsrefined[k] ; + if ( rootsrefined.size()==roots.size() ) + { + t = t + rootsrefined[k] ; + } } ptmp = p + t*v ; // calculate the position of the proposed intersection @@ -361,7 +370,7 @@ G4bool G4Torus::CalculateExtent( const EAxis pAxis, G4double yoffset,yMin,yMax; G4double zoffset,zMin,zMax; - G4double diff1,diff2,maxDiff,newMin,newMax; + G4double RTorus,delta,diff1,diff2,maxDiff,newMin,newMax; G4double xoff1,xoff2,yoff1,yoff2; xoffset = pTransform.NetTranslation().x(); @@ -451,8 +460,11 @@ G4bool G4Torus::CalculateExtent( const EAxis pAxis, // Y limits don't cross max/min x => compute max delta x, // hence new mins/maxs // - diff1 = std::sqrt(fRmax*fRmax - yoff1*yoff1) ; - diff2 = std::sqrt(fRmax*fRmax - yoff2*yoff2) ; + RTorus=fRmax+fRtor; + delta = RTorus*RTorus - yoff1*yoff1; + diff1 = (delta>0.) ? std::sqrt(delta) : 0.; + delta = RTorus*RTorus - yoff2*yoff2; + diff2 = (delta>0.) ? std::sqrt(delta) : 0.; maxDiff = (diff1 > diff2) ? diff1:diff2 ; newMin = xoffset - maxDiff ; newMax = xoffset + maxDiff ; @@ -476,8 +488,11 @@ G4bool G4Torus::CalculateExtent( const EAxis pAxis, // X limits don't cross max/min y => compute max delta y, // hence new mins/maxs // - diff1 = std::sqrt(fRmax*fRmax - xoff1*xoff1) ; - diff2 = std::sqrt(fRmax*fRmax - xoff2*xoff2) ; + RTorus=fRmax+fRtor; + delta = RTorus*RTorus - xoff1*xoff1; + diff1 = (delta>0.) ? std::sqrt(delta) : 0.; + delta = RTorus*RTorus - xoff2*xoff2; + diff2 = (delta>0.) ? std::sqrt(delta) : 0.; maxDiff = (diff1 > diff2) ? diff1 : diff2 ; newMin = yoffset - maxDiff ; newMax = yoffset + maxDiff ; diff --git a/source/geometry/solids/CSG/src/G4Trap.cc b/source/geometry/solids/CSG/src/G4Trap.cc index bfab121d5d..88597f6066 100644 --- a/source/geometry/solids/CSG/src/G4Trap.cc +++ b/source/geometry/solids/CSG/src/G4Trap.cc @@ -25,7 +25,7 @@ // // // $Id: G4Trap.cc,v 1.42 2006/10/19 15:33:38 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4Trap // diff --git a/source/geometry/solids/CSG/src/G4Trd.cc b/source/geometry/solids/CSG/src/G4Trd.cc index 108401adb6..e7e5dca787 100644 --- a/source/geometry/solids/CSG/src/G4Trd.cc +++ b/source/geometry/solids/CSG/src/G4Trd.cc @@ -25,7 +25,7 @@ // // // $Id: G4Trd.cc,v 1.34 2006/10/19 15:33:38 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Implementation for G4Trd class diff --git a/source/geometry/solids/CSG/src/G4Tubs.cc b/source/geometry/solids/CSG/src/G4Tubs.cc index c31f285a24..e0a129b836 100644 --- a/source/geometry/solids/CSG/src/G4Tubs.cc +++ b/source/geometry/solids/CSG/src/G4Tubs.cc @@ -24,15 +24,16 @@ // ******************************************************************** // // -// $Id: G4Tubs.cc,v 1.63 2007/05/18 07:38:01 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Tubs.cc,v 1.66 2007/11/23 09:07:43 tnikitin Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4Tubs // // History: // -// +// 02.08.07 T.Nikitina: bug fixed in DistanceToOut(p,v,..) for negative value under sqrt +// for the case: p on the surface and v is tangent to the surface // 11.05.07 T.Nikitina: bug fixed in DistanceToOut(p,v,..) for phi < 2pi // 03.05.05 V.Grichine: SurfaceNormal(p) according to J. Apostolakis proposal // 16.03.05 V.Grichine: SurfaceNormal(p) with edges/corners for boolean @@ -424,63 +425,69 @@ EInside G4Tubs::Inside( const G4ThreeVector& p ) const { G4double r2,pPhi,tolRMin,tolRMax; EInside in = kOutside ; - + if (std::fabs(p.z()) <= fDz - kCarTolerance*0.5) { r2 = p.x()*p.x() + p.y()*p.y() ; - if (fRMin) tolRMin = fRMin + kRadTolerance*0.5 ; - else tolRMin = 0 ; + if (fRMin) { tolRMin = fRMin + kRadTolerance*0.5 ; } + else { tolRMin = 0 ; } tolRMax = fRMax - kRadTolerance*0.5 ; if (r2 >= tolRMin*tolRMin && r2 <= tolRMax*tolRMax) { - // if ( fDPhi == twopi || r2 == 0 ) in = kInside ; - if ( fDPhi == twopi ) in = kInside ; + if ( fDPhi == twopi ) + { + in = kInside ; + } else { // Try inner tolerant phi boundaries (=>inside) // if not inside, try outer tolerant phi boundaries pPhi = std::atan2(p.y(),p.x()) ; - if((tolRMin==0)&&(p.x()==0)&&(p.y()==0)){in=kSurface;} - else{ - if ( pPhi < -kAngTolerance*0.5 ) pPhi += twopi ; // 0<=pPhi<2pi + if ((tolRMin==0)&&(p.x()==0)&&(p.y()==0)) + { + in=kSurface; + } + else + { + if ( pPhi < -kAngTolerance*0.5 ) { pPhi += twopi; } // 0<=pPhi<2pi - if ( fSPhi >= 0 ) - { - if ( (std::abs(pPhi) < kAngTolerance*0.5) - && (std::abs(fSPhi + fDPhi - twopi) < kAngTolerance*0.5) ) - { - pPhi += twopi ; // 0 <= pPhi < 2pi - } - if ( (pPhi >= fSPhi + kAngTolerance*0.5) - && (pPhi <= fSPhi + fDPhi - kAngTolerance*0.5) ) + if ( fSPhi >= 0 ) { - in = kInside ; + if ( (std::abs(pPhi) < kAngTolerance*0.5) + && (std::abs(fSPhi + fDPhi - twopi) < kAngTolerance*0.5) ) + { + pPhi += twopi ; // 0 <= pPhi < 2pi + } + if ( (pPhi >= fSPhi + kAngTolerance*0.5) + && (pPhi <= fSPhi + fDPhi - kAngTolerance*0.5) ) + { + in = kInside ; + } + else if ( (pPhi >= fSPhi - kAngTolerance*0.5) + && (pPhi <= fSPhi + fDPhi + kAngTolerance*0.5) ) + { + in = kSurface ; + } } - else if ( (pPhi >= fSPhi - kAngTolerance*0.5) - && (pPhi <= fSPhi + fDPhi + kAngTolerance*0.5) ) + else // fSPhi < 0 { - in = kSurface ; + if ( (pPhi <= fSPhi + twopi - kAngTolerance*0.5) + && (pPhi >= fSPhi + fDPhi + kAngTolerance*0.5) ) {;} + else if ( (pPhi <= fSPhi + twopi + kAngTolerance*0.5) + && (pPhi >= fSPhi + fDPhi - kAngTolerance*0.5) ) + { + in = kSurface ; + } + else + { + in = kInside ; + } } - } - else // fSPhi < 0 - { - if ( (pPhi <= fSPhi + twopi - kAngTolerance*0.5) - && (pPhi >= fSPhi + fDPhi + kAngTolerance*0.5) ) ; - else if ( (pPhi <= fSPhi + twopi + kAngTolerance*0.5) - && (pPhi >= fSPhi + fDPhi - kAngTolerance*0.5) ) - { - in = kSurface ; - } - else - { - in = kInside ; - } - } - } + } } } else // Try generous boundaries @@ -488,7 +495,7 @@ EInside G4Tubs::Inside( const G4ThreeVector& p ) const tolRMin = fRMin - kRadTolerance*0.5 ; tolRMax = fRMax + kRadTolerance*0.5 ; - if ( tolRMin < 0 ) tolRMin = 0 ; + if ( tolRMin < 0 ) { tolRMin = 0; } if ( (r2 >= tolRMin*tolRMin) && (r2 <= tolRMax*tolRMax) ) { @@ -500,7 +507,7 @@ EInside G4Tubs::Inside( const G4ThreeVector& p ) const { pPhi = std::atan2(p.y(),p.x()) ; - if ( pPhi < -kAngTolerance*0.5 ) pPhi += twopi ; // 0<=pPhi<2pi + if ( pPhi < -kAngTolerance*0.5 ) { pPhi += twopi; } // 0<=pPhi<2pi if ( fSPhi >= 0 ) { if ( (std::abs(pPhi) < kAngTolerance*0.5) @@ -517,7 +524,7 @@ EInside G4Tubs::Inside( const G4ThreeVector& p ) const else // fSPhi < 0 { if ( (pPhi <= fSPhi + twopi - kAngTolerance*0.5) - && (pPhi >= fSPhi + fDPhi + kAngTolerance*0.5) ) ; + && (pPhi >= fSPhi + fDPhi + kAngTolerance*0.5) ) {;} else { in = kSurface ; @@ -533,7 +540,7 @@ EInside G4Tubs::Inside( const G4ThreeVector& p ) const tolRMin = fRMin - kRadTolerance*0.5 ; tolRMax = fRMax + kRadTolerance*0.5 ; - if ( tolRMin < 0 ) tolRMin = 0 ; + if ( tolRMin < 0 ) { tolRMin = 0; } if ( (r2 >= tolRMin*tolRMin) && (r2 <= tolRMax*tolRMax) ) { @@ -545,7 +552,7 @@ EInside G4Tubs::Inside( const G4ThreeVector& p ) const { pPhi = std::atan2(p.y(),p.x()) ; - if ( pPhi < -kAngTolerance*0.5 ) pPhi += twopi ; // 0<=pPhi<2pi + if ( pPhi < -kAngTolerance*0.5 ) { pPhi += twopi; } // 0<=pPhi<2pi if ( fSPhi >= 0 ) { if ( (std::abs(pPhi) < kAngTolerance*0.5) @@ -562,7 +569,7 @@ EInside G4Tubs::Inside( const G4ThreeVector& p ) const else // fSPhi < 0 { if ( (pPhi <= fSPhi + twopi - kAngTolerance*0.5) - && (pPhi >= fSPhi + fDPhi + kAngTolerance*0.5) ) ; + && (pPhi >= fSPhi + fDPhi + kAngTolerance*0.5) ) {;} else { in = kSurface ; @@ -571,7 +578,7 @@ EInside G4Tubs::Inside( const G4ThreeVector& p ) const } } } - return in ; + return in; } /////////////////////////////////////////////////////////////////////////// @@ -581,8 +588,7 @@ EInside G4Tubs::Inside( const G4ThreeVector& p ) const // - unsafe if point close to z axis a rmin=0 - no explicit checks G4ThreeVector G4Tubs::SurfaceNormal( const G4ThreeVector& p ) const -{ - G4int noSurfaces = 0; +{ G4int noSurfaces = 0; G4double rho, pPhi; G4double delta = 0.5*kCarTolerance, dAngle = 0.5*kAngTolerance; G4double distZ, distRMin, distRMax; @@ -603,8 +609,8 @@ G4ThreeVector G4Tubs::SurfaceNormal( const G4ThreeVector& p ) const { pPhi = std::atan2(p.y(),p.x()); - if(pPhi < fSPhi-delta) pPhi += twopi; - else if(pPhi > fSPhi+fDPhi+delta) pPhi -= twopi; + if(pPhi < fSPhi-delta) { pPhi += twopi; } + else if(pPhi > fSPhi+fDPhi+delta) { pPhi -= twopi; } distSPhi = std::fabs( pPhi - fSPhi ); distEPhi = std::fabs(pPhi - fSPhi - fDPhi); @@ -617,7 +623,7 @@ G4ThreeVector G4Tubs::SurfaceNormal( const G4ThreeVector& p ) const nPs = G4ThreeVector(std::sin(fSPhi),-std::cos(fSPhi),0); nPe = G4ThreeVector(-std::sin(fSPhi+fDPhi),std::cos(fSPhi+fDPhi),0); } - if ( rho > delta ) nR = G4ThreeVector(p.x()/rho,p.y()/rho,0); + if ( rho > delta ) { nR = G4ThreeVector(p.x()/rho,p.y()/rho,0); } if( distRMax <= delta ) { @@ -645,32 +651,32 @@ G4ThreeVector G4Tubs::SurfaceNormal( const G4ThreeVector& p ) const if (distZ <= delta) { noSurfaces ++; - if ( p.z() >= 0.) sumnorm += nZ; - else sumnorm -= nZ; + if ( p.z() >= 0.) { sumnorm += nZ; } + else { sumnorm -= nZ; } } if ( noSurfaces == 0 ) { #ifdef G4CSGDEBUG - G4Exception("G4Tube::SurfaceNormal(p)", "Notification", JustWarning, - "Point p is not on surface !?" ); + G4Exception("G4Tube::SurfaceNormal(p)", "Notification", + JustWarning, "Point p is not on surface !?" ); G4cout.precision(20); - G4cout<<"G4Tubs::SN ( "<= cosHDPhiIT) return s ; } - else return s ; + else + { + return s ; + } } } else { - if ( snxt cannot intersect } @@ -973,7 +982,7 @@ G4double G4Tubs::DistanceToIn( const G4ThreeVector& p, inum = p.x()*cosCPhi + p.y()*sinCPhi ; iden = std::sqrt(t3) ; cosPsi = inum/iden ; - if (cosPsi >= cosHDPhiIT) return 0.0 ; + if (cosPsi >= cosHDPhiIT) { return 0.0; } } else { @@ -995,7 +1004,7 @@ G4double G4Tubs::DistanceToIn( const G4ThreeVector& p, { // Check z intersection // - if(s < 0.0) s = 0.0 ; + if(s < 0.0) { s = 0.0; } zi = p.z() + s*v.z() ; if (std::fabs(zi) <= tolODz) { @@ -1035,7 +1044,7 @@ G4double G4Tubs::DistanceToIn( const G4ThreeVector& p, // if ( seg ) { - // First phi surface (`S'tarting phi) + // First phi surface (Starting phi) sinSPhi = std::sin(fSPhi) ; cosSPhi = std::cos(fSPhi) ; @@ -1051,7 +1060,7 @@ G4double G4Tubs::DistanceToIn( const G4ThreeVector& p, if (s < snxt) { - if ( s < 0 ) s = 0.0 ; + if ( s < 0 ) { s = 0.0; } zi = p.z() + s*v.z() ; if ( std::fabs(zi) <= tolODz ) { @@ -1094,7 +1103,7 @@ G4double G4Tubs::DistanceToIn( const G4ThreeVector& p, if (s < snxt) { - if ( s < 0 ) s = 0 ; + if ( s < 0 ) { s = 0; } zi = p.z() + s*v.z() ; if ( std::fabs(zi) <= tolODz ) { @@ -1112,14 +1121,14 @@ G4double G4Tubs::DistanceToIn( const G4ThreeVector& p, // z and r intersections good // - check intersecting with correct half-plane // - if ( (yi*cosCPhi-xi*sinCPhi) >= 0 ) snxt = s ; + if ( (yi*cosCPhi-xi*sinCPhi) >= 0 ) { snxt = s; } } } } } } // Comp < 0 } // seg != 0 - if ( snxt safe2 ) safe = safe1 ; - else safe = safe2 ; - if ( safe3 > safe ) safe = safe3 ; + if ( safe1 > safe2 ) { safe = safe1; } + else { safe = safe2; } + if ( safe3 > safe ) { safe = safe3; } if (fDPhi < twopi && rho) { @@ -1186,10 +1195,10 @@ G4double G4Tubs::DistanceToIn( const G4ThreeVector& p ) const ePhi = fSPhi + fDPhi ; safePhi = std::fabs(p.x()*std::sin(ePhi) - p.y()*std::cos(ePhi)) ; } - if ( safePhi > safe ) safe = safePhi ; + if ( safePhi > safe ) { safe = safePhi; } } } - if ( safe < 0 ) safe = 0 ; + if ( safe < 0 ) { safe = 0; } return safe ; } @@ -1203,7 +1212,7 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, const G4bool calcNorm, G4bool *validNorm, G4ThreeVector *n ) const -{ +{ ESide side = kNull , sider = kNull, sidephi = kNull ; G4double snxt, sr = kInfinity, sphi = kInfinity, pdist ; G4double deltaR, t1, t2, t3, b, c, d2, roMin2 ; @@ -1213,7 +1222,7 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, G4double sinSPhi, cosSPhi, ePhi, sinEPhi, cosEPhi ; G4double cPhi, sinCPhi, cosCPhi ; G4double pDistS, compS, pDistE, compE, sphi2, xi, yi, vphi, roi2 ; - + // Z plane intersection if (v.z() > 0 ) @@ -1274,8 +1283,8 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, t2 = p.x()*v.x() + p.y()*v.y() ; t3 = p.x()*p.x() + p.y()*p.y() ; - if ( snxt > 10*(fDz+fRMax) ) roi2 = 2*fRMax*fRMax; - else roi2 = snxt*snxt*t1 + 2*snxt*t2 + t3 ; // radius^2 on +-fDz + if ( snxt > 10*(fDz+fRMax) ) { roi2 = 2*fRMax*fRMax; } + else { roi2 = snxt*snxt*t1 + 2*snxt*t2 + t3; } // radius^2 on +-fDz if ( t1 > 0 ) // Check not parallel { @@ -1294,7 +1303,9 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, { b = t2/t1 ; c = deltaR/t1 ; - sr = -b + std::sqrt(b*b - c); + d2= b*b-c; + if(d2>=0.){sr = -b + std::sqrt(d2);} + else{sr=0.;}; sider = kRMax ; } else @@ -1341,16 +1352,30 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, } else { - if ( calcNorm ) *validNorm = false ; // Concave side - return snxt = 0.0 ; + if ( calcNorm ) { *validNorm = false; } // Concave side + return snxt = 0.0; } } else // No rmin intersect -> must be rmax intersect { deltaR = t3 - fRMax*fRMax ; - c = deltaR/t1 ; - sr = -b + std::sqrt(b*b - c) ; - sider = kRMax ; + c = deltaR/t1 ; + d2 = b*b-c; + if(d2>=0.) + { + sr = -b + std::sqrt(d2) ; + sider = kRMax ; + } + else // Case: On the border+t2 fRMax*(fRMax + kRadTolerance) ) @@ -1359,8 +1384,22 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, deltaR = t3 - fRMax*fRMax ; b = t2/t1 ; c = deltaR/t1; - sr = -b + std::sqrt(b*b - c) ; - sider = kRMax ; + d2 = b*b-c; + if(d2>=0.) + { + sr = -b + std::sqrt(d2) ; + sider = kRMax ; + } + else // Case: On the border+t2 fSPhi + fDPhi + kAngTolerance*0.5 ) vphi -= twopi; + // add angle calculation with correction + // of the difference in domain of atan2 and Sphi + // + vphi = std::atan2(v.y(),v.x()) ; + + if ( vphi < fSPhi - kAngTolerance*0.5 ) { vphi += twopi; } + else if ( vphi > fSPhi + fDPhi + kAngTolerance*0.5 ) { vphi -= twopi; } if ( p.x() || p.y() ) // Check if on z axis (rho not needed later) @@ -1397,38 +1438,37 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, compE = sinEPhi*v.x() - cosEPhi*v.y() ; sidephi = kNull; - // if ( pDistS <= 0 && pDistE <= 0 ) - if( ( (fDPhi <= pi) && ( (pDistS <= 0.5*kCarTolerance) && (pDistE <= 0.5*kCarTolerance) ) ) || ( (fDPhi > pi) && !((pDistS > 0.5*kCarTolerance) && (pDistE > 0.5*kCarTolerance) ) ) ) { // Inside both phi *full* planes - + if ( compS < 0 ) { sphi = pDistS/compS ; - + if (sphi >= -0.5*kCarTolerance) { xi = p.x() + sphi*v.x() ; yi = p.y() + sphi*v.y() ; - + // Check intersecting with correct half-plane // (if not -> no intersect) // - if((std::abs(xi)<=kCarTolerance)&&(std::abs(yi)<=kCarTolerance)){ - if(((fSPhi-0.5*kAngTolerance)<=vphi)&&((ePhi+0.5*kAngTolerance)>=vphi)) - { sphi = kInfinity; } - + if((std::abs(xi)<=kCarTolerance)&&(std::abs(yi)<=kCarTolerance)) + { sidephi = kSPhi; + if (((fSPhi-0.5*kAngTolerance)<=vphi) + &&((ePhi+0.5*kAngTolerance)>=vphi)) + { + sphi = kInfinity; + } } - else - if ((yi*cosCPhi-xi*sinCPhi)>=0) - { + else if ((yi*cosCPhi-xi*sinCPhi)>=0) + { sphi = kInfinity ; - } - + } else { sidephi = kSPhi ; @@ -1458,25 +1498,28 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, { xi = p.x() + sphi2*v.x() ; yi = p.y() + sphi2*v.y() ; - - if((std::abs(xi)<=kCarTolerance)&&(std::abs(yi)<=kCarTolerance)){ - // Leaving via ending phi - if(!(((fSPhi-0.5*kAngTolerance)<=vphi)&&((ePhi+0.5*kAngTolerance)>=vphi))){ + + if ((std::abs(xi)<=kCarTolerance)&&(std::abs(yi)<=kCarTolerance)) + { + // Leaving via ending phi + // + if(!(((fSPhi-0.5*kAngTolerance)<=vphi) + &&((ePhi+0.5*kAngTolerance)>=vphi))) + { sidephi = kEPhi ; - if ( pDistE <= -kCarTolerance*0.5 ) sphi = sphi2 ; - else sphi = 0.0 ; - } - } - + if ( pDistE <= -kCarTolerance*0.5 ) { sphi = sphi2 ; } + else { sphi = 0.0 ; } + } + } else // Check intersecting with correct half-plane if ( (yi*cosCPhi-xi*sinCPhi) >= 0) { // Leaving via ending phi - + // sidephi = kEPhi ; - if ( pDistE <= -kCarTolerance*0.5 ) sphi = sphi2 ; - else sphi = 0.0 ; + if ( pDistE <= -kCarTolerance*0.5 ) { sphi = sphi2 ; } + else { sphi = 0.0 ; } } } } @@ -1492,12 +1535,13 @@ G4double G4Tubs::DistanceToOut( const G4ThreeVector& p, // within phi of shape, Step limited by rmax, else Step =0 // vphi = std::atan2(v.y(),v.x()) ;//defined previosly - //G4cout<<"In axis vphi="< r1 +// +// Equation for the solid: +// rho^2 <= k1 * z + k2; +// -dz <= z <= dz +// r1^2 = k1 * (-dz) + k2 +// r2^2 = k1 * ( dz) + k2 + +// History: +// ------- +// 10.07.2007 L.Lindroos (CERN) - First implementation +// -------------------------------------------------------------------- +#ifndef G4Paraboloid_HH +#define G4Paraboloid_HH + +#include "G4VSolid.hh" + +class G4Paraboloid : public G4VSolid +{ + public: // with description + + G4Paraboloid(const G4String& pName, + G4double pR1, + G4double pR2, + G4double pDz); + + virtual ~G4Paraboloid(); + + // Access functions + + inline G4double GetZHalfLength() const; + inline G4double GetRadiusMinusZ() const; + inline G4double GetRadiusPlusZ() const; + + inline G4double GetCubicVolume(); + inline G4double GetSurfaceArea(); + inline G4double CalculateSurfaceArea() const; + + // Modifiers functions + + inline void SetZHalfLength(G4double dz); + inline void SetRadiusMinusZ(G4double R1); + inline void SetRadiusPlusZ(G4double R2); + + // Solid standard methods + + //void ComputeDimensions( G4VPVParamerisation p, + // const G4Int n, + // const G4VPhysicalVolume* pRep ); + G4bool CalculateExtent(const EAxis pAxis, + const G4VoxelLimits& pVoxelLimit, + const G4AffineTransform& pTransform, + G4double& pmin, G4double& pmax) const; + EInside Inside(const G4ThreeVector& p) const; + G4ThreeVector SurfaceNormal( const G4ThreeVector& p) const; + G4double DistanceToIn(const G4ThreeVector& p, + const G4ThreeVector& v) const; + G4double DistanceToIn(const G4ThreeVector& p) const; + G4double DistanceToOut(const G4ThreeVector& p, + const G4ThreeVector& v, + const G4bool calcNorm=G4bool(false), + G4bool *validNorm=0, + G4ThreeVector *n=0) const; + G4double DistanceToOut(const G4ThreeVector& p) const; + + G4GeometryType GetEntityType() const; + + std::ostream& StreamInfo(std::ostream& os) const; + + G4ThreeVector GetPointOnSurface() const; + + // Visualisation functions + + void DescribeYourselfTo(G4VGraphicsScene& scene) const; + G4Polyhedron* CreatePolyhedron() const; + G4Polyhedron* GetPolyhedron () const; + G4NURBS* CreateNURBS() const; + + public: // without description + + G4Paraboloid(__void__&); + // Fake default constructor for usage restricted to direct object + // persistency for clients requiring preallocation of memory for + // persistifiable objects. + + protected: // without description + + mutable G4Polyhedron* fpPolyhedron; + + private: + + G4ThreeVectorList* + CreateRotatedVertices(const G4AffineTransform& pTransform, + G4int& noPolygonVertices) const; + // Making this mutable to allow GetPointOnSurface to have access to + // area function. + mutable G4double fSurfaceArea; + G4double fCubicVolume; + + G4double dz, r1, r2; + G4double k1, k2; + // Defined to make some calculations easier to follow +}; + +#include "G4Paraboloid.icc" + +#endif diff --git a/source/geometry/solids/specific/include/G4Paraboloid.icc b/source/geometry/solids/specific/include/G4Paraboloid.icc new file mode 100644 index 0000000000..407e80a041 --- /dev/null +++ b/source/geometry/solids/specific/include/G4Paraboloid.icc @@ -0,0 +1,170 @@ +// +// ******************************************************************** +// * 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: G4Paraboloid.icc,v 1.4 2007/08/21 12:58:36 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// -------------------------------------------------------------------- +// GEANT 4 inline definitions file +// +// G4Paraboloid.icc +// +// Implementation of inline methods of G4Paraboloid +// -------------------------------------------------------------------- + +inline +G4double G4Paraboloid::GetZHalfLength() const +{ + return dz; +} + +inline +G4double G4Paraboloid::GetRadiusPlusZ() const +{ + return r2; +} + +inline +G4double G4Paraboloid::GetRadiusMinusZ() const +{ + return r1; +} + +inline +void G4Paraboloid::SetZHalfLength(G4double pDz) +{ + if(pDz <= 0) + { + G4Exception("G4Paraboloid::SetZHalfLength()", "InvalidSetup", + FatalException, "Invalid dimensions."); + } + else + { + dz = pDz; + k1 = (sqr(r2) - sqr(r1)) / (2 * dz); + k2 = (sqr(r2) + sqr(r1)) / 2; + + // This informs GetSurfaceArea() and GetCubicVolume() that it needs + // to recalculate buffered value. + // + fSurfaceArea = 0.; + fCubicVolume = 0.; + } +} + +inline +void G4Paraboloid::SetRadiusPlusZ(G4double pR2) +{ + if(pR2 <= 0 || pR2 <= r1) + { + G4Exception("G4Paraboloid::SetRadiusPlusZ()", "InvalidSetup", + FatalException, "Invalid dimensions."); + } + else + { + r2 = pR2; + k1 = (sqr(r2) - sqr(r1)) / (2 * dz); + k2 = (sqr(r2) + sqr(r1)) / 2; + + // This informs GetSurfaceArea() and GetCubicVolume() that it needs + // to recalculate buffered value. + // + fSurfaceArea = 0.; + fCubicVolume = 0.; + } +} + +inline +void G4Paraboloid::SetRadiusMinusZ(G4double pR1) +{ + if(pR1 < 0 || pR1 >= r2) + { + G4Exception("G4Paraboloid::SetRadiusMinusZ()", "InvalidSetup", + FatalException, "Invalid dimensions."); + } + else + { + r1 = pR1; + k1 = (sqr(r2) - sqr(r1)) / (2 * dz); + k2 = (sqr(r2) + sqr(r1)) / 2; + + // This informs GetSurfaceArea() and GetCubicVolume() that it needs + // to recalculate buffered value. + // + fSurfaceArea = 0.; + fCubicVolume = 0.; + } +} + +inline +G4double G4Paraboloid::GetCubicVolume() +{ + if(fCubicVolume != 0 ) {;} + else + { + fCubicVolume = pi * 2. * k2 * dz; + } + return fCubicVolume; +} + + +inline +G4double G4Paraboloid::CalculateSurfaceArea() const +{ + G4double h1, h2, A1, A2; + + h1 = k2/k1 + dz; + h2 = k2/k1 - dz; + + // Calculate surface area for the paraboloid full paraboloid + // cutoff at z = dz (not the cutoff area though). + + A1 = sqr(r2) + 4 * sqr(h1); + A1 *= sqr(A1); // Sets A1 = A1^3 + A1 = pi * r2 /6 / sqr(h1) * ( std::sqrt(A1) - r2 * r2 * r2); + + // Calculate surface area for the paraboloid full paraboloid + // cutoff at z = -dz (not the cutoff area though). + + A2 = sqr(r1) + 4 * sqr(h2); + A2 *= sqr(A2);// Sets A2 = A2^3 + + if(h2 != 0) + { A2 = pi * r1 /6 / sqr(h2) * ( std::sqrt(A2) - r1 * r1 * r1); } + else + { A2 = 0.; } + + return fSurfaceArea = A1 - A2 + (sqr(r1) + sqr(r2))*pi; +} + +inline +G4double G4Paraboloid::GetSurfaceArea() +{ + if(fSurfaceArea == 0.) CalculateSurfaceArea(); + + return fSurfaceArea; +} diff --git a/source/geometry/solids/specific/include/G4PolyPhiFace.hh b/source/geometry/solids/specific/include/G4PolyPhiFace.hh index d31fd9552a..3f7daf5f37 100644 --- a/source/geometry/solids/specific/include/G4PolyPhiFace.hh +++ b/source/geometry/solids/specific/include/G4PolyPhiFace.hh @@ -25,7 +25,7 @@ // // // $Id: G4PolyPhiFace.hh,v 1.10 2007/05/11 13:54:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4PolyPhiFace.icc b/source/geometry/solids/specific/include/G4PolyPhiFace.icc index 14468c0508..b1926b277f 100644 --- a/source/geometry/solids/specific/include/G4PolyPhiFace.icc +++ b/source/geometry/solids/specific/include/G4PolyPhiFace.icc @@ -25,7 +25,7 @@ // // // $Id: G4PolyPhiFace.icc,v 1.6 2006/06/29 18:47:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4Polycone.hh b/source/geometry/solids/specific/include/G4Polycone.hh index f8a90884ef..7321ecc10f 100644 --- a/source/geometry/solids/specific/include/G4Polycone.hh +++ b/source/geometry/solids/specific/include/G4Polycone.hh @@ -25,7 +25,7 @@ // // // $Id: G4Polycone.hh,v 1.20 2007/04/26 06:18:20 tnikitin Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4Polycone.icc b/source/geometry/solids/specific/include/G4Polycone.icc index b3c851692b..0e03f21fe2 100644 --- a/source/geometry/solids/specific/include/G4Polycone.icc +++ b/source/geometry/solids/specific/include/G4Polycone.icc @@ -25,7 +25,7 @@ // // // $Id: G4Polycone.icc,v 1.10 2006/06/29 18:47:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/specific/include/G4PolyconeSide.hh b/source/geometry/solids/specific/include/G4PolyconeSide.hh index d70fc847f5..0e642b6155 100644 --- a/source/geometry/solids/specific/include/G4PolyconeSide.hh +++ b/source/geometry/solids/specific/include/G4PolyconeSide.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PolyconeSide.hh,v 1.9 2007/05/11 13:54:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PolyconeSide.hh,v 1.10 2007/08/13 10:33:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- @@ -129,8 +129,10 @@ class G4PolyconeSide : public G4VCSGface G4double rNormEdge[2], zNormEdge[2]; // Normal to edges + //(WP) + int ncorners; G4ThreeVector *corners; // The coordinates of the corners (if phiIsOpen) - + G4double DistanceAway( const G4ThreeVector &p, G4bool opposite, G4double &distOutside2, G4double *rzNorm=0 ); diff --git a/source/geometry/solids/specific/include/G4Polyhedra.hh b/source/geometry/solids/specific/include/G4Polyhedra.hh index 1a0e16611a..335a062991 100644 --- a/source/geometry/solids/specific/include/G4Polyhedra.hh +++ b/source/geometry/solids/specific/include/G4Polyhedra.hh @@ -25,7 +25,7 @@ // // // $Id: G4Polyhedra.hh,v 1.17 2007/01/22 12:58:53 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4Polyhedra.icc b/source/geometry/solids/specific/include/G4Polyhedra.icc index 01e5159440..214474419d 100644 --- a/source/geometry/solids/specific/include/G4Polyhedra.icc +++ b/source/geometry/solids/specific/include/G4Polyhedra.icc @@ -25,7 +25,7 @@ // // // $Id: G4Polyhedra.icc,v 1.11 2007/01/22 12:58:53 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/specific/include/G4PolyhedraSide.hh b/source/geometry/solids/specific/include/G4PolyhedraSide.hh index f76203105f..9e5d751204 100644 --- a/source/geometry/solids/specific/include/G4PolyhedraSide.hh +++ b/source/geometry/solids/specific/include/G4PolyhedraSide.hh @@ -25,7 +25,7 @@ // // // $Id: G4PolyhedraSide.hh,v 1.9 2007/05/11 13:54:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4QuadrangularFacet.hh b/source/geometry/solids/specific/include/G4QuadrangularFacet.hh index a320fb0926..1cb41effa5 100644 --- a/source/geometry/solids/specific/include/G4QuadrangularFacet.hh +++ b/source/geometry/solids/specific/include/G4QuadrangularFacet.hh @@ -25,7 +25,7 @@ // ******************************************************************** // // $Id: G4QuadrangularFacet.hh,v 1.5 2007/02/26 08:39:13 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // diff --git a/source/geometry/solids/specific/include/G4ReduciblePolygon.hh b/source/geometry/solids/specific/include/G4ReduciblePolygon.hh index 291298e0cc..efb3ad7de0 100644 --- a/source/geometry/solids/specific/include/G4ReduciblePolygon.hh +++ b/source/geometry/solids/specific/include/G4ReduciblePolygon.hh @@ -25,7 +25,7 @@ // // // $Id: G4ReduciblePolygon.hh,v 1.9 2006/06/29 18:47:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4SolidExtentList.hh b/source/geometry/solids/specific/include/G4SolidExtentList.hh index c46c5cd62c..52659f6ac5 100644 --- a/source/geometry/solids/specific/include/G4SolidExtentList.hh +++ b/source/geometry/solids/specific/include/G4SolidExtentList.hh @@ -25,7 +25,7 @@ // // // $Id: G4SolidExtentList.hh,v 1.7 2006/06/29 18:47:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4TessellatedGeometryAlgorithms.hh b/source/geometry/solids/specific/include/G4TessellatedGeometryAlgorithms.hh new file mode 100644 index 0000000000..28615e3765 --- /dev/null +++ b/source/geometry/solids/specific/include/G4TessellatedGeometryAlgorithms.hh @@ -0,0 +1,118 @@ +// +// ******************************************************************** +// * 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 and of QinetiQ Ltd, * +// * 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: +// GEANT4 tag $Name: geant4-09-01 $ +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: G4TessellatedGeometryAlgorithms.hh +// +// Date: 07/08/2005 +// Author: Rickard Holmberg & Pete Truscott +// Organisation: QinetiQ Ltd, UK (PT) +// Customer: ESA-ESTEC / TEC-EES +// Contract: +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 07 August 2007, P R Truscott, QinetiQ Ltd, UK - Created, with member +// functions based on the work of Rickard Holmberg. +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// Class description: +// +// The G4TessellatedGeometryAlgorithms class is used to contain standard +// routines to determine whether (and if so where) simple geometric shapes +// intersect. +// +// The constructor doesn't need to do anything, and neither does the +// destructor. +// +// IntersectLineAndTriangle2D +// Determines whether there is an intersection between a line defined +// by r = p + s.v and a triangle defined by verticies P0, P0+E0 and P0+E1. +// Here: +// p = 2D vector +// s = scaler on [0,infinity) +// v = 2D vector +// P0, E0 and E1 are 2D vectors +// Information about where the intersection occurs is returned in the +// variable location. +// +// IntersectLineAndLineSegment2D +// Determines whether there is an intersection between a line defined +// by r = P0 + s.D0 and a line-segment with endpoints P1 and P1+D1. +// Here: +// P0 = 2D vector +// s = scaler on [0,infinity) +// D0 = 2D vector +// P1 and D1 are 2D vectors +// Information about where the intersection occurs is returned in the +// variable location. + +/////////////////////////////////////////////////////////////////////////////// +#ifndef G4TessellatedGeometryAlgorithms_hh +#define G4TessellatedGeometryAlgorithms_hh 1 + +#include "globals.hh" +#include "G4TwoVector.hh" + +class G4TessellatedGeometryAlgorithms +{ + public: // with description + + static G4TessellatedGeometryAlgorithms* GetInstance(); + G4bool IntersectLineAndTriangle2D (const G4TwoVector p, + const G4TwoVector v, + const G4TwoVector P0, + const G4TwoVector E0, + const G4TwoVector E1, + G4TwoVector location[2]); + + G4int IntersectLineAndLineSegment2D (const G4TwoVector P0, + const G4TwoVector D0, + const G4TwoVector P1, + const G4TwoVector D1, + G4TwoVector location[2]); + + inline G4double cross(const G4TwoVector v1, const G4TwoVector v2) const; + + protected: + + G4TessellatedGeometryAlgorithms(); + + private: + + static G4TessellatedGeometryAlgorithms *fInstance; +}; + +#include "G4TessellatedGeometryAlgorithms.icc" + +#endif diff --git a/source/geometry/solids/specific/include/G4TessellatedGeometryAlgorithms.icc b/source/geometry/solids/specific/include/G4TessellatedGeometryAlgorithms.icc new file mode 100644 index 0000000000..a2b821d419 --- /dev/null +++ b/source/geometry/solids/specific/include/G4TessellatedGeometryAlgorithms.icc @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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 and of QinetiQ Ltd, * +// * 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: +// GEANT4 tag $Name: geant4-09-01 $ +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: G4TessellatedGeometryAlgorithms.icc +// +// Date: 07/08/2005 +// Author: Rickard Holmberg & Pete Truscott +// Organisation: QinetiQ Ltd, UK (PT) +// Customer: ESA-ESTEC / TEC-EES +// Contract: +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 07 August 2007, P R Truscott, QinetiQ Ltd, UK - Created, with member +// functions based on the work of Rickard Holmberg. +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// + +/////////////////////////////////////////////////////////////////////////////// +// +// CrossProduct +// +// This is just a ficticious "cross-product" function for two 2D vectors... +// "ficticious" because such an operation is not relevant to 2D space compared +// with 3D space. +// +inline G4double +G4TessellatedGeometryAlgorithms::cross(const G4TwoVector v1, + const G4TwoVector v2) const +{ + return v1.x()*v2.y() - v1.y()*v2.x(); +} diff --git a/source/geometry/solids/specific/include/G4TessellatedSolid.hh b/source/geometry/solids/specific/include/G4TessellatedSolid.hh index 4a6a464218..ce17e816a6 100644 --- a/source/geometry/solids/specific/include/G4TessellatedSolid.hh +++ b/source/geometry/solids/specific/include/G4TessellatedSolid.hh @@ -17,15 +17,15 @@ // * * // * This code implementation is the result of the scientific and * // * technical work of the GEANT4 collaboration and of QinetiQ Ltd, * -// * subject DEFCON 705 IPR conditions. * +// * subject to DEFCON 705 IPR conditions. * // * 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: G4TessellatedSolid.hh,v 1.7 2007/02/12 11:51:25 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4TessellatedSolid.hh,v 1.10 2007/12/10 16:30:13 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // @@ -121,6 +121,7 @@ #include #include +#include #include class G4TessellatedSolid : public G4VSolid @@ -147,6 +148,7 @@ class G4TessellatedSolid : public G4VSolid // const G4VPhysicalVolume* pRep) const; virtual EInside Inside (const G4ThreeVector &p) const; + void SetRandomVectorSet (); virtual G4ThreeVector SurfaceNormal (const G4ThreeVector &p) const; virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const; @@ -202,11 +204,13 @@ class G4TessellatedSolid : public G4VSolid // Create the List of transformed vertices in the format required // for G4VSolid:: ClipCrossSection and ClipBetweenSections. - private: + private: mutable G4Polyhedron* fpPolyhedron; std::vector facets; + std::set extremeFacets; // Does all other facets lie + // on or behind this surface? G4GeometryType geometryType; G4double cubicVolume; G4double surfaceArea; @@ -219,7 +223,9 @@ class G4TessellatedSolid : public G4VSolid G4double zMaxExtent; G4bool solidClosed; - G4double dirTolerance; + G4double dirTolerance; + G4ThreeVector randir[20]; + G4int maxTries; }; #endif diff --git a/source/geometry/solids/specific/include/G4Tet.hh b/source/geometry/solids/specific/include/G4Tet.hh index ef26d1f213..8d65fa7c29 100644 --- a/source/geometry/solids/specific/include/G4Tet.hh +++ b/source/geometry/solids/specific/include/G4Tet.hh @@ -29,7 +29,7 @@ // // // $Id: G4Tet.hh,v 1.9 2006/11/13 08:58:03 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4TriangularFacet.hh b/source/geometry/solids/specific/include/G4TriangularFacet.hh index 60d40b31ee..f614e78c8e 100644 --- a/source/geometry/solids/specific/include/G4TriangularFacet.hh +++ b/source/geometry/solids/specific/include/G4TriangularFacet.hh @@ -17,15 +17,15 @@ // * * // * This code implementation is the result of the scientific and * // * technical work of the GEANT4 collaboration and of QinetiQ Ltd, * -// * subject DEFCON 705 IPR conditions. * +// * subject to DEFCON 705 IPR conditions. * // * 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: G4TriangularFacet.hh,v 1.6 2007/02/26 08:39:40 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4TriangularFacet.hh,v 1.8 2007/12/10 16:30:18 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // @@ -68,9 +68,10 @@ #ifndef G4TriangularFacet_hh #define G4TriangularFacet_hh 1 +#include "globals.hh" #include "G4VFacet.hh" #include "G4ThreeVector.hh" -#include "globals.hh" +#include "G4TessellatedGeometryAlgorithms.hh" class G4TriangularFacet : public G4VFacet { @@ -106,6 +107,10 @@ class G4TriangularFacet : public G4VFacet G4double sMin, sMax; G4double tMin; + + G4double sqrDist; + + G4TessellatedGeometryAlgorithms *tGeomAlg; }; #endif diff --git a/source/geometry/solids/specific/include/G4TwistTrapFlatSide.hh b/source/geometry/solids/specific/include/G4TwistTrapFlatSide.hh index 109f0392e4..22a45b5b07 100644 --- a/source/geometry/solids/specific/include/G4TwistTrapFlatSide.hh +++ b/source/geometry/solids/specific/include/G4TwistTrapFlatSide.hh @@ -25,7 +25,7 @@ // // // $Id: G4TwistTrapFlatSide.hh,v 1.5 2006/06/29 18:47:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4TwistTubsFlatSide.hh b/source/geometry/solids/specific/include/G4TwistTubsFlatSide.hh index 6f18bf68df..feb59fb0cd 100644 --- a/source/geometry/solids/specific/include/G4TwistTubsFlatSide.hh +++ b/source/geometry/solids/specific/include/G4TwistTubsFlatSide.hh @@ -25,7 +25,7 @@ // // // $Id: G4TwistTubsFlatSide.hh,v 1.5 2006/06/29 18:47:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4TwistTubsHypeSide.hh b/source/geometry/solids/specific/include/G4TwistTubsHypeSide.hh index 5e7483ea6e..1ff31a1fd2 100644 --- a/source/geometry/solids/specific/include/G4TwistTubsHypeSide.hh +++ b/source/geometry/solids/specific/include/G4TwistTubsHypeSide.hh @@ -25,7 +25,7 @@ // // // $Id: G4TwistTubsHypeSide.hh,v 1.5 2006/06/29 18:47:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4TwistTubsSide.hh b/source/geometry/solids/specific/include/G4TwistTubsSide.hh index 261d3160d7..5cffb71da6 100644 --- a/source/geometry/solids/specific/include/G4TwistTubsSide.hh +++ b/source/geometry/solids/specific/include/G4TwistTubsSide.hh @@ -25,7 +25,7 @@ // // // $Id: G4TwistTubsSide.hh,v 1.5 2006/06/29 18:47:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4TwistedBox.hh b/source/geometry/solids/specific/include/G4TwistedBox.hh index 9585be4d62..8a8276aeba 100644 --- a/source/geometry/solids/specific/include/G4TwistedBox.hh +++ b/source/geometry/solids/specific/include/G4TwistedBox.hh @@ -25,7 +25,7 @@ // // // $Id: G4TwistedBox.hh,v 1.10 2006/06/29 18:48:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4TwistedTrap.hh b/source/geometry/solids/specific/include/G4TwistedTrap.hh index e8bb639eb3..3c7d5fe625 100644 --- a/source/geometry/solids/specific/include/G4TwistedTrap.hh +++ b/source/geometry/solids/specific/include/G4TwistedTrap.hh @@ -25,7 +25,7 @@ // // // $Id: G4TwistedTrap.hh,v 1.10 2006/06/29 18:48:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4TwistedTrd.hh b/source/geometry/solids/specific/include/G4TwistedTrd.hh index 9e5141da17..c8a32b6176 100644 --- a/source/geometry/solids/specific/include/G4TwistedTrd.hh +++ b/source/geometry/solids/specific/include/G4TwistedTrd.hh @@ -25,7 +25,7 @@ // // // $Id: G4TwistedTrd.hh,v 1.6 2006/06/29 18:48:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4TwistedTubs.hh b/source/geometry/solids/specific/include/G4TwistedTubs.hh index 5084be090f..37005de6f8 100644 --- a/source/geometry/solids/specific/include/G4TwistedTubs.hh +++ b/source/geometry/solids/specific/include/G4TwistedTubs.hh @@ -25,7 +25,7 @@ // // // $Id: G4TwistedTubs.hh,v 1.14 2007/05/23 09:32:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4VCSGface.hh b/source/geometry/solids/specific/include/G4VCSGface.hh index 2886de96f6..cd139a6d04 100644 --- a/source/geometry/solids/specific/include/G4VCSGface.hh +++ b/source/geometry/solids/specific/include/G4VCSGface.hh @@ -25,7 +25,7 @@ // // // $Id: G4VCSGface.hh,v 1.7 2006/06/29 18:48:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4VCSGfaceted.hh b/source/geometry/solids/specific/include/G4VCSGfaceted.hh index 061ade5b08..4bf00b6748 100644 --- a/source/geometry/solids/specific/include/G4VCSGfaceted.hh +++ b/source/geometry/solids/specific/include/G4VCSGfaceted.hh @@ -25,7 +25,7 @@ // // // $Id: G4VCSGfaceted.hh,v 1.13 2006/10/20 13:45:20 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4VFacet.hh b/source/geometry/solids/specific/include/G4VFacet.hh index f9a1e32db4..65856e7e37 100644 --- a/source/geometry/solids/specific/include/G4VFacet.hh +++ b/source/geometry/solids/specific/include/G4VFacet.hh @@ -24,8 +24,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VFacet.hh,v 1.5 2007/05/11 13:54:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VFacet.hh,v 1.6 2007/08/23 14:45:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // @@ -83,7 +83,7 @@ class G4VFacet inline G4bool IsDefined () const; inline void SetVertexIndex (const size_t i, const size_t j); inline size_t GetVertexIndex (const size_t i) const; - inline G4ThreeVector GetCentroid () const; + inline G4ThreeVector GetCircumcentre () const; inline G4double GetRadius () const; inline G4double GetRadiusSquared() const; @@ -112,7 +112,7 @@ class G4VFacet G4ThreeVectorList E; std::vector I; G4ThreeVector surfaceNormal; - G4ThreeVector centroid; + G4ThreeVector circumcentre; G4double radius; G4double radiusSqr; diff --git a/source/geometry/solids/specific/include/G4VFacet.icc b/source/geometry/solids/specific/include/G4VFacet.icc index 828bde4e50..d1bedcba09 100644 --- a/source/geometry/solids/specific/include/G4VFacet.icc +++ b/source/geometry/solids/specific/include/G4VFacet.icc @@ -24,8 +24,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VFacet.icc,v 1.4 2007/02/12 09:34:44 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VFacet.icc,v 1.5 2007/08/23 14:45:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // @@ -88,7 +88,7 @@ inline size_t G4VFacet::GetNumberOfVertices () const return nVertices; } - /////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// // inline void G4VFacet::SetVertexIndex (const size_t i, const size_t j) {I[i] = j;} @@ -104,8 +104,8 @@ inline G4ThreeVector G4VFacet::GetVertex (size_t i) const /////////////////////////////////////////////////////////////////////////////// // -inline G4ThreeVector G4VFacet::GetCentroid () const - {return centroid;} +inline G4ThreeVector G4VFacet::GetCircumcentre () const + {return circumcentre;} /////////////////////////////////////////////////////////////////////////////// // diff --git a/source/geometry/solids/specific/include/G4VTwistSurface.hh b/source/geometry/solids/specific/include/G4VTwistSurface.hh index 2ded6ff0c2..db9c6770a5 100644 --- a/source/geometry/solids/specific/include/G4VTwistSurface.hh +++ b/source/geometry/solids/specific/include/G4VTwistSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4VTwistSurface.hh,v 1.6 2007/05/11 13:54:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4VTwistSurface.icc b/source/geometry/solids/specific/include/G4VTwistSurface.icc index ec2fb375e7..ce60799a5b 100644 --- a/source/geometry/solids/specific/include/G4VTwistSurface.icc +++ b/source/geometry/solids/specific/include/G4VTwistSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4VTwistSurface.icc,v 1.3 2006/06/29 18:48:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4VTwistedFaceted.hh b/source/geometry/solids/specific/include/G4VTwistedFaceted.hh index 77b29e2aa4..963b1a46d4 100644 --- a/source/geometry/solids/specific/include/G4VTwistedFaceted.hh +++ b/source/geometry/solids/specific/include/G4VTwistedFaceted.hh @@ -25,7 +25,7 @@ // // // $Id: G4VTwistedFaceted.hh,v 1.10 2006/10/20 13:45:20 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/solids/specific/src/G4ClippablePolygon.cc b/source/geometry/solids/specific/src/G4ClippablePolygon.cc index 976e24f79c..a1706b9249 100644 --- a/source/geometry/solids/specific/src/G4ClippablePolygon.cc +++ b/source/geometry/solids/specific/src/G4ClippablePolygon.cc @@ -25,7 +25,7 @@ // // // $Id: G4ClippablePolygon.cc,v 1.12 2007/05/11 13:54:28 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4Ellipsoid.cc b/source/geometry/solids/specific/src/G4Ellipsoid.cc index 39defc5b6e..c33beace8d 100644 --- a/source/geometry/solids/specific/src/G4Ellipsoid.cc +++ b/source/geometry/solids/specific/src/G4Ellipsoid.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4Ellipsoid.cc,v 1.14 2007/05/18 07:39:56 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4Ellipsoid // diff --git a/source/geometry/solids/specific/src/G4EllipticalCone.cc b/source/geometry/solids/specific/src/G4EllipticalCone.cc index bacc3d9ec1..314d84a2e1 100644 --- a/source/geometry/solids/specific/src/G4EllipticalCone.cc +++ b/source/geometry/solids/specific/src/G4EllipticalCone.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4EllipticalCone.cc,v 1.13 2007/05/18 07:39:56 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4EllipticalCone.cc,v 1.15 2007/08/21 12:58:36 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Implementation of G4EllipticalCone class // @@ -458,9 +458,9 @@ G4double G4EllipticalCone::DistanceToIn( const G4ThreeVector& p, // return (sigz < -halfTol) ? s : 0; } - else if (xi/(xSemiAxis*xSemiAxis)*v.x() + yi/(ySemiAxis*ySemiAxis)*v.y() >= 0) + else if (xi/(xSemiAxis*xSemiAxis)*v.x() + + yi/(ySemiAxis*ySemiAxis)*v.y() >= 0) { - // // Else, if we are traveling outwards, we know // we must miss @@ -498,7 +498,8 @@ G4double G4EllipticalCone::DistanceToIn( const G4ThreeVector& p, { return (sigz > -halfTol) ? s : 0; } - else if (xi/(xSemiAxis*xSemiAxis)*v.x() + yi/(ySemiAxis*ySemiAxis)*v.y() >= 0) + else if (xi/(xSemiAxis*xSemiAxis)*v.x() + + yi/(ySemiAxis*ySemiAxis)*v.y() >= 0) { // return kInfinity; } @@ -540,18 +541,20 @@ G4double G4EllipticalCone::DistanceToIn( const G4ThreeVector& p, } } - if (p.z() > zTopCut - 0.5*kCarTolerance && p.z() < zTopCut + 0.5*kCarTolerance ) + if (p.z() > zTopCut - 0.5*kCarTolerance + && p.z() < zTopCut + 0.5*kCarTolerance ) { if (v.z() > 0.) - return kInfinity; - + { return kInfinity; } + return distMin = 0.; } - if (p.z() < -zTopCut + 0.5*kCarTolerance && p.z() > -zTopCut - 0.5*kCarTolerance) + if (p.z() < -zTopCut + 0.5*kCarTolerance + && p.z() > -zTopCut - 0.5*kCarTolerance) { if (v.z() < 0.) - return distMin = kInfinity; + { return distMin = kInfinity; } return distMin = 0.; } @@ -638,17 +641,18 @@ G4double G4EllipticalCone::DistanceToIn(const G4ThreeVector& p) const G4double distR, distR2, distZ, maxDim; G4double distRad; - // check if the point lies either below z=-zTopCut in bottom elliptical region - // or on top within cut elliptical region + // check if the point lies either below z=-zTopCut in bottom elliptical + // region or on top within cut elliptical region // - if( (p.z() < -zTopCut) && (sqr(p.x()/xSemiAxis) + sqr(p.y()/ySemiAxis) - < sqr(zTopCut + zheight + 0.5*kCarTolerance )) ) + if( (p.z() <= -zTopCut) && (sqr(p.x()/xSemiAxis) + sqr(p.y()/ySemiAxis) + <= sqr(zTopCut + zheight + 0.5*kCarTolerance )) ) { - return distZ = std::fabs(zTopCut - p.z()); + //return distZ = std::fabs(zTopCut - p.z()); + return distZ = std::fabs(zTopCut + p.z()); } - if( (p.z() > zTopCut) && (sqr(p.x()/xSemiAxis)+sqr(p.y()/ySemiAxis) - < sqr(zheight - zTopCut + kCarTolerance/2.0 )) ) + if( (p.z() >= zTopCut) && (sqr(p.x()/xSemiAxis)+sqr(p.y()/ySemiAxis) + <= sqr(zheight - zTopCut + kCarTolerance/2.0 )) ) { return distZ = std::fabs(p.z() - zTopCut); } @@ -702,9 +706,9 @@ G4double G4EllipticalCone::DistanceToOut(const G4ThreeVector& p, distMin = kInfinity; surface = kNoSurf; -#ifdef G4SPECSDEBUG + #ifdef G4SPECSDEBUG G4cout << "DToOut: vz < 0" << G4endl ; -#endif + #endif if (v.z() < 0.0) { @@ -722,9 +726,9 @@ G4double G4EllipticalCone::DistanceToOut(const G4ThreeVector& p, surface = kPlaneSurf; } -#ifdef G4SPECSDEBUG + #ifdef G4SPECSDEBUG G4cout << "DToOut: vz > 0" << G4endl ; -#endif + #endif if (v.z() > 0.0) { @@ -744,12 +748,6 @@ G4double G4EllipticalCone::DistanceToOut(const G4ThreeVector& p, // if we are here then it either intersects or grazes the // curved surface... // - -#ifdef G4SPECSDEBUG - G4cout << " distMin = " << distMin << G4endl ; - G4cout << " if we are here then it either intersects or grazes the curved surface..." << G4endl ; -#endif - G4double A = sqr(v.x()/xSemiAxis) + sqr(v.y()/ySemiAxis) - sqr(v.z()); G4double B = 2.*(v.x()*p.x()/sqr(xSemiAxis) + v.y()*p.y()/sqr(ySemiAxis) + v.z()*(zheight-p.z())); @@ -768,18 +766,22 @@ G4double G4EllipticalCone::DistanceToOut(const G4ThreeVector& p, G4double plus = (-B+std::sqrt(discr))/(2.*A); G4double minus = (-B-std::sqrt(discr))/(2.*A); - if ( plus > 0.5*kCarTolerance && minus > 0.5*kCarTolerance ) { // take the shorter distance - lambda = std::fabs(plus) < std::fabs(minus) ? plus:minus; + if ( plus > 0.5*kCarTolerance && minus > 0.5*kCarTolerance ) + { + // take the shorter distance + // + lambda = std::fabs(plus) < std::fabs(minus) ? plus : minus; } - else { // at least one solution is close to zero or negaive -> take the longer distance - lambda = std::fabs(plus) > std::fabs(minus) ? plus:minus; + else + { + // at least one solution is close to zero or negative + // so, take small positive solution or zero + // + lambda = plus > -0.5*kCarTolerance ? plus : 0; } -#ifdef G4SPECSDEBUG - G4cout << "plus,minus, lambda = " << plus << ", " << minus << ", " << lambda << G4endl ; -#endif - - if ( std::fabs(lambda) < distMin ) { + if ( std::fabs(lambda) < distMin ) + { distMin = std::fabs(lambda); surface = kCurvedSurf; } @@ -846,7 +848,7 @@ G4double G4EllipticalCone::DistanceToOut(const G4ThreeVector& p, // G4double G4EllipticalCone::DistanceToOut(const G4ThreeVector& p) const { - G4double rad, distR, distZ, distMin=0.; + G4double rad,roo,roo1, distR, distZ, distMin=0.; G4double minAxis = xSemiAxis < ySemiAxis ? xSemiAxis : ySemiAxis; #ifdef G4SPECSDEBUG @@ -871,15 +873,20 @@ G4double G4EllipticalCone::DistanceToOut(const G4ThreeVector& p) const if( sqr(p.x()/minAxis)+sqr(p.y()/minAxis) < sqr(zheight - p.z()) ) { rad = std::sqrt(sqr(p.x()) + sqr(p.y())); - distZ = p.z() + (distMin*(rad-distMin*zheight)-p.z())/(1+sqr(distMin)); - distR = rad-(distMin*(zheight-distZ )); - distMin = std::sqrt(sqr(distR) + sqr(distZ)); - distMin = distMin < std::fabs(p.z() + zTopCut) - ? distMin : std::fabs(p.z() + zTopCut); - distMin = distMin < std::fabs(zTopCut - p.z()) - ? distMin : std::fabs(zTopCut - p.z()); + roo = minAxis*(zheight-p.z()); // radius of cone at z= p.z() + roo1 = minAxis*(zheight-zTopCut); // radius of cone at z=+zTopCut + + distZ=zTopCut - std::fabs(p.z()) ; + distR=(roo-rad)/(std::sqrt(1+sqr(minAxis))); + + if(rad>roo1) + { + distMin=(zTopCut-p.z())*(roo-rad)/(roo-roo1); + distMin=std::min(distMin,distR); + } + distMin=std::min(distR,distZ); } - + return distMin; } diff --git a/source/geometry/solids/specific/src/G4EllipticalTube.cc b/source/geometry/solids/specific/src/G4EllipticalTube.cc index 9c49c70b65..b0bd416b4b 100644 --- a/source/geometry/solids/specific/src/G4EllipticalTube.cc +++ b/source/geometry/solids/specific/src/G4EllipticalTube.cc @@ -25,7 +25,7 @@ // // // $Id: G4EllipticalTube.cc,v 1.27 2006/10/20 13:45:21 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4EnclosingCylinder.cc b/source/geometry/solids/specific/src/G4EnclosingCylinder.cc index 71c7432a39..53e883bb8a 100644 --- a/source/geometry/solids/specific/src/G4EnclosingCylinder.cc +++ b/source/geometry/solids/specific/src/G4EnclosingCylinder.cc @@ -25,7 +25,7 @@ // // // $Id: G4EnclosingCylinder.cc,v 1.10 2007/05/11 13:54:29 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4ExtrudedSolid.cc b/source/geometry/solids/specific/src/G4ExtrudedSolid.cc index 98ab5f55b5..121825492d 100644 --- a/source/geometry/solids/specific/src/G4ExtrudedSolid.cc +++ b/source/geometry/solids/specific/src/G4ExtrudedSolid.cc @@ -25,7 +25,7 @@ // // // $Id: G4ExtrudedSolid.cc,v 1.7 2007/05/02 14:59:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4Hype.cc b/source/geometry/solids/specific/src/G4Hype.cc index fa9972d842..e7238b2906 100644 --- a/source/geometry/solids/specific/src/G4Hype.cc +++ b/source/geometry/solids/specific/src/G4Hype.cc @@ -26,7 +26,7 @@ // // $Id: G4Hype.cc,v 1.25 2006/10/20 13:45:21 gcosmo Exp $ // $Original: G4Hype.cc,v 1.0 1998/06/09 16:57:50 safai Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4IntersectingCone.cc b/source/geometry/solids/specific/src/G4IntersectingCone.cc index d378c674fc..d33c1e64e2 100644 --- a/source/geometry/solids/specific/src/G4IntersectingCone.cc +++ b/source/geometry/solids/specific/src/G4IntersectingCone.cc @@ -25,7 +25,7 @@ // // // $Id: G4IntersectingCone.cc,v 1.8 2006/06/29 18:48:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4Paraboloid.cc b/source/geometry/solids/specific/src/G4Paraboloid.cc new file mode 100644 index 0000000000..10b8cde9c3 --- /dev/null +++ b/source/geometry/solids/specific/src/G4Paraboloid.cc @@ -0,0 +1,1085 @@ +// +// ******************************************************************** +// * 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: G4Paraboloid.cc,v 1.5 2007/12/10 16:30:23 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// class G4Paraboloid +// +// Implementation for G4Paraboloid class +// +// History: +// +// Author : Lukas Lindroos (CERN), July 2007 +// Revised: Tatiana Nikitina (CERN) +// -------------------------------------------------------------------- + +#include "globals.hh" + +#include "G4Paraboloid.hh" + +#include "G4VoxelLimits.hh" +#include "G4AffineTransform.hh" + +#include "meshdefs.hh" + +#include "Randomize.hh" + +#include "G4VGraphicsScene.hh" +#include "G4Polyhedron.hh" +#include "G4NURBS.hh" +#include "G4NURBSbox.hh" +#include "G4VisExtent.hh" + +using namespace CLHEP; + +/////////////////////////////////////////////////////////////////////////////// +// +// constructor - check parameters + +G4Paraboloid::G4Paraboloid(const G4String& pName, + G4double pDz, + G4double pR1, + G4double pR2) + : G4VSolid(pName),fpPolyhedron(0), fCubicVolume(0.) + +{ + if(pDz > 0. && pR2 > pR1 && pR1 >= 0.) + { + r1 = pR1; + r2 = pR2; + dz = pDz; + } + else + { + G4cerr << "Error - G4Paraboloid::G4Paraboloid(): " << GetName() << G4endl + << "Z half-length must be larger than zero or R1>=R2 " << G4endl; + G4Exception("G4Paraboloid::G4Paraboloid()", "InvalidSetup", + FatalException, + "Invalid dimensions. Negative Input Values or R1>=R2."); + } + +// r1^2 = k1 * (-dz) + k2 +// r2^2 = k1 * ( dz) + k2 +// => r1^2 + r2^2 = k2 + k2 => k2 = (r2^2 + r1^2) / 2 +// and r2^2 - r1^2 = k1 * dz - k1 * (-dz) => k1 = (r2^2 - r1^2) / 2 / dz + + k1 = (r2 * r2 - r1 * r1) / 2 / dz; + k2 = (r2 * r2 + r1 * r1) / 2; + + fSurfaceArea = 0.; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Fake default constructor - sets only member data and allocates memory +// for usage restricted to object persistency. +// +G4Paraboloid::G4Paraboloid( __void__& a ) + : G4VSolid(a), fpPolyhedron(0), fCubicVolume(0.) +{ + fSurfaceArea = 0.; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Destructor + +G4Paraboloid::~G4Paraboloid() +{ +} + +///////////////////////////////////////////////////////////////////////// +// +// Dispatch to parameterisation for replication mechanism dimension +// computation & modification. + +//void ComputeDimensions( G4VPVParamerisation p, +// const G4Int n, +// const G4VPhysicalVolume* pRep ) +//{ +// p->ComputeDimensions(*this,n,pRep) ; +//} + + +/////////////////////////////////////////////////////////////////////////////// +// +// Calculate extent under transform and specified limit + +G4bool +G4Paraboloid::CalculateExtent(const EAxis pAxis, + const G4VoxelLimits& pVoxelLimit, + const G4AffineTransform& pTransform, + G4double& pMin, G4double& pMax) const +{ + G4double xMin = -r2 + pTransform.NetTranslation().x(), + xMax = r2 + pTransform.NetTranslation().x(), + yMin = -r2 + pTransform.NetTranslation().y(), + yMax = r2 + pTransform.NetTranslation().y(), + zMin = -dz + pTransform.NetTranslation().z(), + zMax = dz + pTransform.NetTranslation().z(); + + if(!pTransform.IsRotated() + || pTransform.NetRotation()(G4ThreeVector(0, 0, 1)) == G4ThreeVector(0, 0, 1)) + { + if(pVoxelLimit.IsXLimited()) + { + if(pVoxelLimit.GetMaxXExtent() < xMin - 0.5 * kCarTolerance + || pVoxelLimit.GetMinXExtent() > xMax + 0.5 * kCarTolerance) + { + return false; + } + else + { + if(pVoxelLimit.GetMinXExtent() > xMin) + { + xMin = pVoxelLimit.GetMinXExtent(); + } + if(pVoxelLimit.GetMaxXExtent() < xMax) + { + xMax = pVoxelLimit.GetMaxXExtent(); + } + } + } + if(pVoxelLimit.IsYLimited()) + { + if(pVoxelLimit.GetMaxYExtent() < yMin - 0.5 * kCarTolerance + || pVoxelLimit.GetMinYExtent() > yMax + 0.5 * kCarTolerance) + { + return false; + } + else + { + if(pVoxelLimit.GetMinYExtent() > yMin) + { + yMin = pVoxelLimit.GetMinYExtent(); + } + if(pVoxelLimit.GetMaxYExtent() < yMax) + { + yMax = pVoxelLimit.GetMaxYExtent(); + } + } + } + if(pVoxelLimit.IsZLimited()) + { + if(pVoxelLimit.GetMaxZExtent() < zMin - 0.5 * kCarTolerance + || pVoxelLimit.GetMinZExtent() > zMax + 0.5 * kCarTolerance) + { + return false; + } + else + { + if(pVoxelLimit.GetMinZExtent() > zMin) + { + zMin = pVoxelLimit.GetMinZExtent(); + } + if(pVoxelLimit.GetMaxZExtent() < zMax) + { + zMax = pVoxelLimit.GetMaxZExtent(); + } + } + } + switch(pAxis) + { + case kXAxis: + pMin = xMin; + pMax = xMax; + break; + case kYAxis: + pMin = yMin; + pMax = yMax; + break; + case kZAxis: + pMin = zMin; + pMax = zMax; + break; + default: + pMin = 0; + pMax = 0; + return false; + } + } + else + { + G4bool existsAfterClip=true; + + // Calculate rotated vertex coordinates + + G4int noPolygonVertices=0; + G4ThreeVectorList* vertices + = CreateRotatedVertices(pTransform,noPolygonVertices); + + if(pAxis == kXAxis || pAxis == kYAxis || pAxis == kZAxis) + { + pMin = kInfinity; + pMax = -kInfinity; + + for(G4ThreeVectorList::iterator it = vertices->begin(); + it < vertices->end(); it++) + { + if(pMin > (*it)[pAxis]) pMin = (*it)[pAxis]; + if((*it)[pAxis] < pVoxelLimit.GetMinExtent(pAxis)) + { + pMin = pVoxelLimit.GetMinExtent(pAxis); + } + if(pMax < (*it)[pAxis]) + { + pMax = (*it)[pAxis]; + } + if((*it)[pAxis] > pVoxelLimit.GetMaxExtent(pAxis)) + { + pMax = pVoxelLimit.GetMaxExtent(pAxis); + } + } + + if(pMin > pVoxelLimit.GetMaxExtent(pAxis) + || pMax < pVoxelLimit.GetMinExtent(pAxis)) { existsAfterClip = false; } + } + else + { + pMin = 0; + pMax = 0; + existsAfterClip = false; + } + delete vertices; + return existsAfterClip; + } + return true; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Return whether point inside/outside/on surface + +EInside G4Paraboloid::Inside(const G4ThreeVector& p) const +{ + // First check is the point is above or below the solid. + // + if(std::fabs(p.z()) > dz + 0.5 * kCarTolerance) { return kOutside; } + + G4double rho2 = p.perp2(), + rhoSurfTimesTol2 = (k1 * p.z() + k2) * sqr(kCarTolerance), + A = rho2 - ((k1 *p.z() + k2) + 0.25 * kCarTolerance * kCarTolerance); + + if(A < 0 && sqr(A) > rhoSurfTimesTol2) + { + // Actually checking rho < radius of paraboloid at z = p.z(). + // We're either inside or in lower/upper cutoff area. + + if(std::fabs(p.z()) > dz - 0.5 * kCarTolerance) + { + // We're in the upper/lower cutoff area, sides have a paraboloid shape + // maybe further checks should be made to make these nicer + + return kSurface; + } + else + { + return kInside; + } + } + else if(A <= 0 || sqr(A) < rhoSurfTimesTol2) + { + // We're in the parabolic surface. + + return kSurface; + } + else + { + return kOutside; + } +} + +/////////////////////////////////////////////////////////////////////////////// +// + +G4ThreeVector G4Paraboloid::SurfaceNormal( const G4ThreeVector& p) const +{ + G4ThreeVector n(0, 0, 0); + if(std::fabs(p.z()) > dz + 0.5 * kCarTolerance) + { + // If above or below just return normal vector for the cutoff plane. + + n = G4ThreeVector(0, 0, p.z()/std::fabs(p.z())); + } + else if(std::fabs(p.z()) > dz - 0.5 * kCarTolerance) + { + // This means we're somewhere in the plane z = dz or z = -dz. + // (As far as the program is concerned anyway. + + if(p.z() < 0) // Are we in upper or lower plane? + { + if(p.perp2() > sqr(r1 + 0.5 * kCarTolerance)) + { + n = G4ThreeVector(p.x(), p.y(), -k1 / 2).unit(); + } + else if(r1 < 0.5 * kCarTolerance + || p.perp2() > sqr(r1 - 0.5 * kCarTolerance)) + { + n = G4ThreeVector(p.x(), p.y(), 0.).unit() + + G4ThreeVector(0., 0., -1.).unit(); + n = n.unit(); + } + else + { + n = G4ThreeVector(0., 0., -1.); + } + } + else + { + if(p.perp2() > sqr(r2 + 0.5 * kCarTolerance)) + { + n = G4ThreeVector(p.x(), p.y(), 0.).unit(); + } + else if(r2 < 0.5 * kCarTolerance + || p.perp2() > sqr(r2 - 0.5 * kCarTolerance)) + { + n = G4ThreeVector(p.x(), p.y(), 0.).unit() + + G4ThreeVector(0., 0., 1.).unit(); + n = n.unit(); + } + else + { + n = G4ThreeVector(0., 0., 1.); + } + } + } + else + { + G4double rho2 = p.perp2(); + G4double rhoSurfTimesTol2 = (k1 * p.z() + k2) * sqr(kCarTolerance); + G4double A = rho2 - ((k1 *p.z() + k2) + + 0.25 * kCarTolerance * kCarTolerance); + + if(A < 0 && sqr(A) > rhoSurfTimesTol2) + { + // Actually checking rho < radius of paraboloid at z = p.z(). + // We're inside. + + if(p.mag2() != 0) { n = p.unit(); } + } + else if(A <= 0 || sqr(A) < rhoSurfTimesTol2) + { + // We're in the parabolic surface. + + n = G4ThreeVector(p.x(), p.y(), - k1 / 2).unit(); + } + else + { + n = G4ThreeVector(p.x(), p.y(), - k1 / 2).unit(); + } + } + + if(n.mag2() == 0) + { + G4cerr << "WARNING - G4Paraboloid::SurfaceNormal(p)" << G4endl + << " p = " << 1 / mm * p << " mm" << G4endl; + G4Exception("G4Paraboloid::SurfaceNormal(p)", "Notification", + JustWarning, "No normal defined for this point p."); + } + return n; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Calculate distance to shape from outside, along normalised vector +// - return kInfinity if no intersection +// + +G4double G4Paraboloid::DistanceToIn( const G4ThreeVector& p, + const G4ThreeVector& v ) const +{ + G4double rho2 = p.perp2(), paraRho2 = std::fabs(k1 * p.z() + k2); + G4double tol2 = kCarTolerance*kCarTolerance; + G4double tolh = 0.5*kCarTolerance; + + if(r2 && p.z() > - tolh + dz) + { + // If the points is above check for intersection with upper edge. + + if(v.z() < 0) + { + G4double intersection = (dz - p.z()) / v.z(); // With plane z = dz. + if(sqr(p.x() + v.x()*intersection) + + sqr(p.y() + v.y()*intersection) < sqr(r2 + 0.5 * kCarTolerance)) + { + if(p.z() < tolh + dz) + { return 0; } + else + { return intersection; } + } + } + else // Direction away, no posibility of intersection + { return kInfinity; } + } + else if(r1 && p.z() < tolh - dz) + { + // If the points is belove check for intersection with lower edge. + + if(v.z() > 0) + { + G4double intersection = (-dz - p.z()) / v.z(); // With plane z = -dz. + if(sqr(p.x() + v.x()*intersection) + + sqr(p.y() + v.y()*intersection) < sqr(r1 + 0.5 * kCarTolerance)) + { + if(p.z() > -tolh - dz) + { + return 0; + } + else + { + return intersection; + } + } + } + else// Direction away, no posibility of intersection + { return kInfinity; } + } + + G4double A = k1 / 2 * v.z() - p.x() * v.x() - p.y() * v.y(), + vRho2 = v.perp2(), intersection, + B = (k1 * p.z() + k2 - rho2) * vRho2; + + if ( rho2 > paraRho2 + && sqr(rho2-paraRho2-0.25*tol2) > tol2*paraRho2 + || p.z() < - dz+kCarTolerance + || p.z() > dz-kCarTolerance) // Make sure it's safely outside. + { + // Is there a problem with squaring rho twice? + + if(!vRho2) // Needs to be treated seperately. + { + intersection = ((rho2 - k2)/k1 - p.z())/v.z(); + if(intersection < 0) { return kInfinity; } + else if(std::fabs(p.z() + v.z() * intersection) <= dz) + { + return intersection; + } + else + { + return kInfinity; + } + } + else if(A*A + B < 0) // No real intersections. + { + return kInfinity; + } + else + { + intersection = (A - std::sqrt(B + sqr(A))) / vRho2; + if(intersection < 0) + { + return kInfinity; + } + else if(std::fabs(p.z() + intersection * v.z()) < dz + tolh) + { + return intersection; + } + else + { + return kInfinity; + } + } + } + else if(sqr(rho2 - paraRho2 - .25 * tol2) <= tol2 * paraRho2) + { + // If this is true we're somewhere in the border. + + G4ThreeVector normal(p.x(), p.y(), -k1/2); + if(normal.dot(v) <= 0) + { return 0; } + else + { return kInfinity; } + } + else + { + G4cerr << "WARNING - G4Paraboloid::DistanceToIn(p,v)" << G4endl + << " p = " << p * (1/mm) << " mm" << G4endl + << " v = " << v * (1/mm) << " mm" << G4endl; + if(Inside(p) == kInside) + { + G4Exception("G4Paraboloid::DistanceToIn(p,v)", "Notification", + JustWarning, "Point p is inside!"); + } + else + { + G4Exception("G4Paraboloid::DistanceToIn(p,v)", "Notification", + JustWarning, "There's a bug in this function (apa)!"); + } + return 0; + } +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Calculate distance (<= actual) to closest surface of shape from outside +// - Return 0 if point inside + +G4double G4Paraboloid::DistanceToIn(const G4ThreeVector& p) const +{ + G4double safe = 0; + if(std::fabs(p.z()) > dz + 0.5 * kCarTolerance) + { + // If we're below or above the paraboloid treat it as a cylinder with + // radius r2. + + if(p.perp2() > sqr(r2 + 0.5 * kCarTolerance)) + { + // This algorithm is exact for now but contains 2 sqrt calculations. + // Might be better to replace with approximated version + + G4double dRho = p.perp() - r2; + safe = std::sqrt(sqr(dRho) + sqr(std::fabs(p.z()) - dz)); + } + else + { + safe = std::fabs(p.z()) - dz; + } + } + else + { + G4double paraRho = std::sqrt(k1 * p.z() + k2); + G4double rho = p.perp(); + + if(rho > paraRho + 0.5 * kCarTolerance) + { + // Should check the value of paraRho here, + // for small values the following algorithm is bad. + + safe = k1 / 2 * (-paraRho + rho) / rho; + if(safe < 0) { safe = 0; } + } + } + return safe; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Calculate distance to surface of shape from `inside' + +G4double G4Paraboloid::DistanceToOut(const G4ThreeVector& p, + const G4ThreeVector& v, + const G4bool calcNorm, + G4bool *validNorm, + G4ThreeVector *n ) const +{ + G4double rho2 = p.perp2(), paraRho2 = std::fabs(k1 * p.z() + k2); + G4double vRho2 = v.perp2(), intersection; + G4double tol2 = kCarTolerance*kCarTolerance; + G4double tolh = 0.5*kCarTolerance; + + if(calcNorm) { *validNorm = false; } + + // We have that the particle p follows the line x = p + s * v + // meaning x = p.x() + s * v.x(), y = p.y() + s * v.y() and + // z = p.z() + s * v.z() + // The equation for all points on the surface (surface expanded for + // to include all z) x^2 + y^2 = k1 * z + k2 => .. => + // => s = (A +- std::sqrt(A^2 + B)) / vRho2 + // where + G4double A = k1 / 2 * v.z() - p.x() * v.x() - p.y() * v.y(); + // and + G4double B = (-rho2 + paraRho2) * vRho2; + + if ( rho2 < paraRho2 && sqr(rho2 - paraRho2 - 0.25 * tol2) > tol2 * paraRho2 + && std::fabs(p.z()) < dz - kCarTolerance) + { + // Make sure it's safely inside. + + if(v.z() > 0) + { + // It's heading upwards, check where it colides with the plane z = dz. + // When it does, is that in the surface of the paraboloid. + // z = p.z() + variable * v.z() for all points the particle can go. + // => variable = (z - p.z()) / v.z() so intersection must be: + + intersection = (dz - p.z()) / v.z(); + G4ThreeVector ip = p + intersection * v; // Point of intersection. + + if(ip.perp2() < sqr(r2 + kCarTolerance)) + { + if(calcNorm) + { + *n = G4ThreeVector(0, 0, 1); + if(r2 < tolh || ip.perp2() > sqr(r2 - tolh)) + { + *n += G4ThreeVector(ip.x(), ip.y(), - k1 / 2).unit(); + *n = n->unit(); + } + *validNorm = true; + } + return intersection; + } + } + else if(v.z() < 0) + { + // It's heading downwards, check were it colides with the plane z = -dz. + // When it does, is that in the surface of the paraboloid. + // z = p.z() + variable * v.z() for all points the particle can go. + // => variable = (z - p.z()) / v.z() so intersection must be: + + intersection = (-dz - p.z()) / v.z(); + G4ThreeVector ip = p + intersection * v; // Point of intersection. + + if(ip.perp2() < sqr(r1 + tolh)) + { + if(calcNorm) + { + *n = G4ThreeVector(0, 0, -1); + if(r1 < tolh || ip.perp2() > sqr(r1 - tolh)) + { + *n += G4ThreeVector(ip.x(), ip.y(), - k1 / 2).unit(); + *n = n->unit(); + } + *validNorm = true; + } + return intersection; + } + } + + // Now check for collisions with paraboloid surface. + + if(vRho2 == 0) // Needs to be treated seperately. + { + intersection = ((rho2 - k2)/k1 - p.z())/v.z(); + if(calcNorm) + { + G4ThreeVector intersectionP = p + v * intersection; + *n = G4ThreeVector(intersectionP.x(), intersectionP.y(), -k1/2); + *n = n->unit(); + + *validNorm = true; + } + return intersection; + } + else if(A <= 0 && B >= sqr(A) * (sqr(vRho2) - 1) || A >= 0) + { + intersection = (A + std::sqrt(B + sqr(A))) / vRho2; + if(calcNorm) + { + G4ThreeVector intersectionP = p + v * intersection; + *n = G4ThreeVector(intersectionP.x(), intersectionP.y(), -k1/2); + *n = n->unit(); + *validNorm = true; + } + return intersection; + } + G4cerr << "WARNING - G4Paraboloid::DistanceToOut(p,v,...)" << G4endl + << " p = " << p << G4endl + << " v = " << v << G4endl; + G4Exception("G4Paraboloid::DistanceToOut(p,v,...)", "Notification", + JustWarning, + "There is no intersection between given line and solid!"); + + return kInfinity; + } + else if ( (rho2 < paraRho2 + kCarTolerance + || sqr(rho2 - paraRho2 - 0.25 * tol2) < tol2 * paraRho2 ) + && std::fabs(p.z()) < dz + tolh) + { + // If this is true we're somewhere in the border. + + G4ThreeVector normal = G4ThreeVector (p.x(), p.y(), -k1/2); + + if(std::fabs(p.z()) > dz - tolh) + { + // We're in the lower or upper edge + if(v.z() > 0 && p.z() > 0 || v.z() < 0 && p.z() < 0) + // If we're headig out of the object that is treated here + { + if(calcNorm) + { + *validNorm = true; + if(p.z() > 0) + { *n = G4ThreeVector(0, 0, 1); } + else + { *n = G4ThreeVector(0, 0, -1); } + } + return 0; + } + + if(v.z() == 0) + { + // Case where we're moving inside the surface needs to be + // treated separately. + // Distance until it goes out through a side is returned. + + G4double r = (p.z() > 0)? r2 : r1; + G4double pDotV = p.dot(v); + G4double A = vRho2 * ( sqr(r) - sqr(p.x()) - sqr(p.y())); + intersection = (-pDotV + std::sqrt(A + sqr(pDotV))) / vRho2; + + if(calcNorm) + { + *validNorm = true; + + *n = (G4ThreeVector(0, 0, p.z()/std::fabs(p.z())) + + G4ThreeVector(p.x() + v.x() * intersection, p.y() + v.y() + * intersection, -k1/2).unit()).unit(); + } + return intersection; + } + } + else if(normal.dot(v) >= 0) + { + if(calcNorm) + { + *validNorm = true; + *n = normal.unit(); + } + return 0; + } + + if(v.z() > 0) + { + // Check for collision with upper edge. + + intersection = (dz - p.z()) / v.z(); + G4ThreeVector ip = p + intersection * v; + + if(ip.perp2() < sqr(r2 - tolh)) + { + if(calcNorm) + { + *validNorm = true; + *n = G4ThreeVector(0, 0, 1); + } + return intersection; + } + else if(ip.perp2() < sqr(r2 + tolh)) + { + if(calcNorm) + { + *validNorm = true; + *n = G4ThreeVector(0, 0, 1) + + G4ThreeVector(ip.x(), ip.y(), - k1 / 2).unit(); + *n = n->unit(); + } + return intersection; + } + } + if(r1 && v.z() < 0) + { + // Check for collision with lower edge. + + intersection = (-dz - p.z()) / v.z(); + G4ThreeVector ip = p + intersection * v; + + if(ip.perp2() < sqr(r1 - tolh)) + { + if(calcNorm) + { + *validNorm = true; + *n = G4ThreeVector(0, 0, -1); + } + return intersection; + } + else if(ip.perp2() < sqr(r1 + tolh)) + { + if(calcNorm) + { + *validNorm = true; + *n = G4ThreeVector(0, 0, -1) + + G4ThreeVector(ip.x(), ip.y(), - k1 / 2).unit(); + *n = n->unit(); + } + return intersection; + } + } + + if(vRho2 != 0) + { intersection = (A + std::sqrt(B + sqr(A))) / vRho2; } + else + { intersection = ((rho2 - k2) / k1 - p.z()) / v.z(); } + + if(calcNorm) + { + *validNorm = true; + *n = G4ThreeVector(p.x() + intersection * v.x(), p.y() + + intersection * v.y(), - k1 / 2); + } + return intersection; + } + else + { +#ifdef G4SPECSDEBUG + if(kOutside == Inside(p)) + { + G4Exception("G4Paraboloid::DistanceToOut(p,v,...)", "Notification", + JustWarning, "Point p is outside!"); + } + else + G4Exception("G4Paraboloid::DistanceToOut(p,v,...)", "Notification", + JustWarning, "There's an error in this functions code."); +#endif + return kInfinity; + } + return 0; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Calculate distance (<=actual) to closest surface of shape from inside + +G4double G4Paraboloid::DistanceToOut(const G4ThreeVector& p) const +{ + G4double safe=0.0,rho,safeR,safeZ ; + G4double tanRMax,secRMax,pRMax ; + +#ifdef G4SPECSDEBUG + if( Inside(p) == kOutside ) + { + G4cout.precision(16) ; + G4cout << G4endl ; + DumpInfo(); + G4cout << "Position:" << G4endl << G4endl ; + G4cout << "p.x() = " << p.x()/mm << " mm" << G4endl ; + G4cout << "p.y() = " << p.y()/mm << " mm" << G4endl ; + G4cout << "p.z() = " << p.z()/mm << " mm" << G4endl << G4endl ; + G4Exception("G4Paraboloid::DistanceToOut(p)", "Notification", JustWarning, + "Point p is outside !?" ); + } +#endif + + rho = p.perp(); + safeZ = dz - std::fabs(p.z()) ; + + tanRMax = (r2 - r1)*0.5/dz ; + secRMax = std::sqrt(1.0 + tanRMax*tanRMax) ; + pRMax = tanRMax*p.z() + (r1+r2)*0.5 ; + safeR = (pRMax - rho)/secRMax ; + + if (safeZ < safeR) { safe = safeZ; } + else { safe = safeR; } + if ( safe < 0.5 * kCarTolerance ) { safe = 0; } + return safe ; +} + +////////////////////////////////////////////////////////////////////////// +// +// G4EntityType + +G4GeometryType G4Paraboloid::GetEntityType() const +{ + return G4String("G4Paraboloid"); +} + +////////////////////////////////////////////////////////////////////////// +// +// Stream object contents to an output stream + +std::ostream& G4Paraboloid::StreamInfo( std::ostream& os ) const +{ + os << "-----------------------------------------------------------\n" + << " *** Dump for solid - " << GetName() << " ***\n" + << " ===================================================\n" + << " Solid type: G4Paraboloid\n" + << " Parameters: \n" + << " z half-axis: " << dz/mm << " mm \n" + << " radius at -dz: " << r1/mm << " mm \n" + << " radius at dz: " << r2/mm << " mm \n" + << "-----------------------------------------------------------\n"; + + return os; +} + +//////////////////////////////////////////////////////////////////// +// +// GetPointOnSurface + +G4ThreeVector G4Paraboloid::GetPointOnSurface() const +{ + G4double A = (fSurfaceArea == 0)? CalculateSurfaceArea(): fSurfaceArea; + G4double z = RandFlat::shoot(0.,1.); + G4double phi = RandFlat::shoot(0., twopi); + if(pi*(sqr(r1) + sqr(r2))/A >= z) + { + G4double rho; + if(pi * sqr(r1) / A > z) + { + rho = RandFlat::shoot(0., 1.); + rho = std::sqrt(rho); + rho *= r1; + return G4ThreeVector(rho * std::cos(phi), rho * std::sin(phi), -dz); + } + else + { + rho = RandFlat::shoot(0., 1); + rho = std::sqrt(rho); + rho *= r2; + return G4ThreeVector(rho * std::cos(phi), rho * std::sin(phi), dz); + } + } + else + { + z = RandFlat::shoot(0., 1.)*2*dz - dz; + return G4ThreeVector(std::sqrt(z*k1 + k2)*std::cos(phi), + std::sqrt(z*k1 + k2)*std::sin(phi), z); + } +} + +G4ThreeVectorList* +G4Paraboloid::CreateRotatedVertices(const G4AffineTransform& pTransform, + G4int& noPolygonVertices) const +{ + G4ThreeVectorList *vertices; + G4ThreeVector vertex; + G4double meshAnglePhi, cosMeshAnglePhiPer2, + crossAnglePhi, coscrossAnglePhi, sincrossAnglePhi, sAnglePhi, + sRho, dRho, rho, lastRho = 0., swapRho; + G4double rx, ry, rz, k3, k4, zm; + G4int crossSectionPhi, noPhiCrossSections, noRhoSections; + + // Phi cross sections + // + noPhiCrossSections = G4int(twopi/kMeshAngleDefault)+1; + + if (noPhiCrossSectionskMaxMeshSections) + { + noPhiCrossSections=kMaxMeshSections; + } + meshAnglePhi=twopi/(noPhiCrossSections-1); + + sAnglePhi = -meshAnglePhi*0.5*0; + cosMeshAnglePhiPer2 = std::cos(meshAnglePhi / 2.); + + noRhoSections = G4int(pi/2/kMeshAngleDefault) + 1; + + // There is no obvious value for noRhoSections, at the moment the parabola is + // viewed as a quarter circle mean this formula for it. + + // An alternetive would be to calculate max deviation from parabola and + // keep adding new vertices there until it was under a decided constant. + + // maxDeviation on a line between points (rho1, z1) and (rho2, z2) is given + // by rhoMax = sqrt(k1 * z + k2) - z * (rho2 - rho1) + // / (z2 - z1) - (rho1 * z2 - rho2 * z1) / (z2 - z1) + // where z is k1 / 2 * (rho1 + rho2) - k2 / k1 + + sRho = r1; + dRho = (r2 - r1) / double(noRhoSections - 1); + + vertices=new G4ThreeVectorList(); + + if (vertices) + { + for (crossSectionPhi=0; crossSectionPhipush_back(pTransform.TransformPoint(vertex)); + } + } // Phi + noPolygonVertices = noRhoSections ; + } + else + { + DumpInfo(); + G4Exception("G4Paraboloid::CreateRotatedVertices()", + "FatalError", FatalException, + "Error in allocation of vertices. Out of memory !"); + } + return vertices; +} + +///////////////////////////////////////////////////////////////////////////// +// +// Methods for visualisation + +void G4Paraboloid::DescribeYourselfTo (G4VGraphicsScene& scene) const +{ + scene.AddSolid(*this); +} + +G4NURBS* G4Paraboloid::CreateNURBS () const +{ + // Box for now!!! + // + return new G4NURBSbox(r1, r1, dz); +} + +G4Polyhedron* G4Paraboloid::CreatePolyhedron () const +{ + return new G4PolyhedronParaboloid(r1, r2, dz, 0., twopi); +} + + +G4Polyhedron* G4Paraboloid::GetPolyhedron () const +{ + if (!fpPolyhedron || + fpPolyhedron->GetNumberOfRotationStepsAtTimeOfCreation() != + fpPolyhedron->GetNumberOfRotationSteps()) + { + delete fpPolyhedron; + fpPolyhedron = CreatePolyhedron(); + } + return fpPolyhedron; +} diff --git a/source/geometry/solids/specific/src/G4PolyPhiFace.cc b/source/geometry/solids/specific/src/G4PolyPhiFace.cc index 507f28dcc0..3f6a207f05 100644 --- a/source/geometry/solids/specific/src/G4PolyPhiFace.cc +++ b/source/geometry/solids/specific/src/G4PolyPhiFace.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PolyPhiFace.cc,v 1.12 2007/05/31 13:52:48 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PolyPhiFace.cc,v 1.13 2007/07/19 12:57:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- @@ -269,6 +269,7 @@ void G4PolyPhiFace::Diagnose( G4VSolid *owner ) // for usage restricted to object persistency. // G4PolyPhiFace::G4PolyPhiFace( __void__&) + : edges(0), corners(0) { } diff --git a/source/geometry/solids/specific/src/G4Polycone.cc b/source/geometry/solids/specific/src/G4Polycone.cc index 9f14ec132b..10fa9f4207 100644 --- a/source/geometry/solids/specific/src/G4Polycone.cc +++ b/source/geometry/solids/specific/src/G4Polycone.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Polycone.cc,v 1.37 2007/04/26 13:34:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Polycone.cc,v 1.39 2007/10/02 09:50:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- @@ -313,7 +313,7 @@ void G4Polycone::Create( G4double phiStart, // for usage restricted to object persistency. // G4Polycone::G4Polycone( __void__& a ) - : G4VCSGfaceted(a), genericPcon(false), + : G4VCSGfaceted(a), genericPcon(false), corners(0), original_parameters(0), enclosingCylinder(0) { } @@ -638,7 +638,6 @@ G4ThreeVector G4Polycone::GetPointOnCone(G4double fRmin1, G4double fRmax1, fRmax2-((zRand-fDz)/(2.*fDz))*(fRmax1-fRmax2)); point = G4ThreeVector (rRand1*std::cos(startPhi), rRand1*std::sin(startPhi), zRand); - G4cout<<"Point3="<GetSurfaceTolerance(); @@ -85,7 +85,8 @@ G4PolyconeSide::G4PolyconeSide( const G4PolyconeSideRZ *prevRZ, // // Calculate corner coordinates // - corners = new G4ThreeVector[4]; + ncorners = 4; + corners = new G4ThreeVector[ncorners]; corners[0] = G4ThreeVector( tail->r*std::cos(startPhi), tail->r*std::sin(startPhi), tail->z ); @@ -152,7 +153,7 @@ G4PolyconeSide::G4PolyconeSide( const G4PolyconeSideRZ *prevRZ, // for usage restricted to object persistency. // G4PolyconeSide::G4PolyconeSide( __void__& ) - : cone(0), corners(0) + : phiIsOpen(false), cone(0), ncorners(0), corners(0) { } @@ -229,7 +230,8 @@ void G4PolyconeSide::CopyStuff( const G4PolyconeSide &source ) if (phiIsOpen) { - corners = new G4ThreeVector[4]; + ncorners = 4; + corners = new G4ThreeVector[ncorners]; corners[0] = source.corners[0]; corners[1] = source.corners[1]; diff --git a/source/geometry/solids/specific/src/G4Polyhedra.cc b/source/geometry/solids/specific/src/G4Polyhedra.cc index bb59711fb3..b0c86e941c 100644 --- a/source/geometry/solids/specific/src/G4Polyhedra.cc +++ b/source/geometry/solids/specific/src/G4Polyhedra.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Polyhedra.cc,v 1.33 2007/01/22 12:58:53 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Polyhedra.cc,v 1.36 2007/07/12 15:52:21 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- @@ -677,14 +677,16 @@ G4ThreeVector G4Polyhedra::GetPointOnSurface() const G4double chose, totArea=0., Achose1, Achose2, rad1, rad2, sinphi1, sinphi2, cosphi1, cosphi2; G4double a, b, l2, rang, - ksi = (endPhi-startPhi)/(double)numSide, + totalPhi,ksi, area, aTop=0., aBottom=0.,zVal=0.; G4ThreeVector p0, p1, p2, p3; std::vector aVector1; std::vector aVector2; std::vector aVector3; - G4double cosksi = std::cos(ksi/2.); + totalPhi= (phiIsOpen) ? (endPhi-startPhi) : twopi; + ksi = totalPhi/numSide; + G4double cosksi = std::cos(ksi/2.); // below we generate the areas relevant to our solid // @@ -750,14 +752,15 @@ G4ThreeVector G4Polyhedra::GetPointOnSurface() const chose = RandFlat::shoot(0.,totArea+aTop+aBottom); if( (chose >= 0.) && (chose < aTop + aBottom) ) { - chose = RandFlat::shoot(startPhi,endPhi); + + chose = RandFlat::shoot(startPhi,startPhi+totalPhi); rang = std::floor((chose-startPhi)/ksi-0.01); + if(rang<0)rang=0; rang = std::fabs(rang); sinphi1 = std::sin(startPhi+rang*ksi); sinphi2 = std::sin(startPhi+(rang+1)*ksi); cosphi1 = std::cos(startPhi+rang*ksi); cosphi2 = std::cos(startPhi+(rang+1)*ksi); - chose = RandFlat::shoot(0., aTop + aBottom); if(chose>=0. && chose=0.) && (choseRmax[j]; rad2 = original_parameters->Rmax[j+1]; @@ -816,14 +820,15 @@ G4ThreeVector G4Polyhedra::GetPointOnSurface() const p2 = G4ThreeVector(rad2*cosphi2,rad2*sinphi2,zVal); p3 = G4ThreeVector(rad2*cosphi1,rad2*sinphi1,zVal); - return GetPointOnPlane(p0,p1,p2,p3); } else if ( (chose >= numSide*aVector1[j]) && (chose <= numSide*(aVector1[j]+aVector2[j])) ) { - chose = RandFlat::shoot(startPhi,endPhi); + + chose = RandFlat::shoot(startPhi,startPhi+totalPhi); rang = std::floor((chose-startPhi)/ksi-0.01); + if(rang<0)rang=0; rang = std::fabs(rang); rad1 = original_parameters->Rmin[j]; rad2 = original_parameters->Rmin[j+1]; @@ -840,7 +845,6 @@ G4ThreeVector G4Polyhedra::GetPointOnSurface() const p2 = G4ThreeVector(rad2*cosphi2,rad2*sinphi2,zVal); p3 = G4ThreeVector(rad2*cosphi1,rad2*sinphi1,zVal); - return GetPointOnPlane(p0,p1,p2,p3); } @@ -869,7 +873,6 @@ G4ThreeVector G4Polyhedra::GetPointOnSurface() const original_parameters->Z_values[j+1]); p3 = G4ThreeVector(rad2*cosphi1,rad2*sinphi1, original_parameters->Z_values[j+1]); - return GetPointOnPlane(p0,p1,p2,p3); } @@ -1061,7 +1064,8 @@ G4Polyhedron* G4Polyhedra::CreatePolyhedron() const nFaces = numSide * numCorner;; xyz = new double3[nNodes]; faces_vec = new int4[nFaces]; - const G4double dPhi = (endPhi - startPhi) / numSide; + // const G4double dPhi = (endPhi - startPhi) / numSide; + const G4double dPhi = twopi / numSide; // !phiIsOpen endPhi-startPhi = 360 degrees. G4double phi = startPhi; G4int ixyz = 0, iface = 0; for (G4int iSide = 0; iSide < numSide; ++iSide) diff --git a/source/geometry/solids/specific/src/G4PolyhedraSide.cc b/source/geometry/solids/specific/src/G4PolyhedraSide.cc index 27ce77c8b2..63998fb203 100644 --- a/source/geometry/solids/specific/src/G4PolyhedraSide.cc +++ b/source/geometry/solids/specific/src/G4PolyhedraSide.cc @@ -25,7 +25,7 @@ // // // $Id: G4PolyhedraSide.cc,v 1.13 2007/05/31 13:52:48 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4QuadrangularFacet.cc b/source/geometry/solids/specific/src/G4QuadrangularFacet.cc index 537c879de7..7d7a46fdbe 100644 --- a/source/geometry/solids/specific/src/G4QuadrangularFacet.cc +++ b/source/geometry/solids/specific/src/G4QuadrangularFacet.cc @@ -24,8 +24,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4QuadrangularFacet.cc,v 1.5 2007/02/15 17:04:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QuadrangularFacet.cc,v 1.6 2007/08/23 14:49:23 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // @@ -123,7 +123,7 @@ G4QuadrangularFacet::G4QuadrangularFacet (const G4ThreeVector Pt0, surfaceNormal = normal1; G4ThreeVector vtmp = 0.5 * (E[0] + E[1]); - centroid = P0 + vtmp; + circumcentre = P0 + vtmp; radiusSqr = vtmp.mag2(); radius = std::sqrt(radiusSqr); diff --git a/source/geometry/solids/specific/src/G4ReduciblePolygon.cc b/source/geometry/solids/specific/src/G4ReduciblePolygon.cc index 62e6b0eb74..90082b7ca0 100644 --- a/source/geometry/solids/specific/src/G4ReduciblePolygon.cc +++ b/source/geometry/solids/specific/src/G4ReduciblePolygon.cc @@ -25,7 +25,7 @@ // // // $Id: G4ReduciblePolygon.cc,v 1.11 2006/06/29 18:48:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4SolidExtentList.cc b/source/geometry/solids/specific/src/G4SolidExtentList.cc index 970e708608..e8ec688fa5 100644 --- a/source/geometry/solids/specific/src/G4SolidExtentList.cc +++ b/source/geometry/solids/specific/src/G4SolidExtentList.cc @@ -25,7 +25,7 @@ // // // $Id: G4SolidExtentList.cc,v 1.5 2007/05/11 13:54:29 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4TessellatedGeometryAlgorithms.cc b/source/geometry/solids/specific/src/G4TessellatedGeometryAlgorithms.cc new file mode 100644 index 0000000000..1875ce5d56 --- /dev/null +++ b/source/geometry/solids/specific/src/G4TessellatedGeometryAlgorithms.cc @@ -0,0 +1,281 @@ +// +// ******************************************************************** +// * 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 and of QinetiQ Ltd, * +// * 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: G4TessellatedGeometryAlgorithms.cc,v 1.5 2007/12/12 16:51:12 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// MODULE: G4TessellatedGeometryAlgorithms.cc +// +// Date: 07/08/2005 +// Author: Rickard Holmberg & Pete Truscott +// Organisation: QinetiQ Ltd, UK (PT) +// Customer: ESA-ESTEC / TEC-EES +// Contract: +// +// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +// +// CHANGE HISTORY +// -------------- +// +// 07 August 2007, P R Truscott, QinetiQ Ltd, UK - Created, with member +// functions based on the work of Rickard Holmberg. +// +// 26 September 2007 +// P R Truscott, qinetiQ Ltd, UK +// Updated to assign values of location array, not update +// just the pointer. +// +/////////////////////////////////////////////////////////////////////////////// + +#include "G4TessellatedGeometryAlgorithms.hh" +/////////////////////////////////////////////////////////////////////////////// +// +// Pointer to single instance of class. +// +G4TessellatedGeometryAlgorithms* G4TessellatedGeometryAlgorithms::fInstance = 0; + +/////////////////////////////////////////////////////////////////////////////// +// +// G4TessellatedGeometryAlgorithms +// +// Constructor doesn't need to do anything since this class just allows access +// to the geometric algorithms contained in member functions. +// +G4TessellatedGeometryAlgorithms::G4TessellatedGeometryAlgorithms () +{ +} + +/////////////////////////////////////////////////////////////////////////////// +// +// GetInstance +// +// This is the access point for this singleton. +// +G4TessellatedGeometryAlgorithms* G4TessellatedGeometryAlgorithms::GetInstance() +{ + static G4TessellatedGeometryAlgorithms worldStdGeom; + if (!fInstance) + { + fInstance = &worldStdGeom; + } + return fInstance; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// IntersectLineAndTriangle2D +// +// Determines whether there is an intersection between a line defined +// by r = p + s.v and a triangle defined by verticies P0, P0+E0 and P0+E1. +// +// Here: +// p = 2D vector +// s = scaler on [0,infinity) +// v = 2D vector +// P0, E0 and E1 are 2D vectors +// Information about where the intersection occurs is returned in the +// variable location. +// +// This is based on the work of Rickard Holmberg. +// +G4bool G4TessellatedGeometryAlgorithms::IntersectLineAndTriangle2D ( + const G4TwoVector p, const G4TwoVector v, + const G4TwoVector P0, const G4TwoVector E0, const G4TwoVector E1, + G4TwoVector location[2]) +{ + G4TwoVector loc0[2]; + G4int e0i = IntersectLineAndLineSegment2D (p,v,P0,E0,loc0); + if (e0i == 2) + { + location[0] = loc0[0]; + location[1] = loc0[1]; + return true; + } + + G4TwoVector loc1[2]; + G4int e1i = IntersectLineAndLineSegment2D (p,v,P0,E1,loc1); + if (e1i == 2) + { + location[0] = loc1[0]; + location[1] = loc1[1]; + return true; + } + + if ((e0i == 1) && (e1i == 1)) + { + if ((loc0[0]-p).mag2() < (loc1[0]-p).mag2()) + { + location[0] = loc0[0]; + location[1] = loc1[0]; + } + else + { + location[0] = loc1[0]; + location[1] = loc0[0]; + } + return true; + } + + G4TwoVector P1 = P0 + E0; + G4TwoVector DE = E1 - E0; + G4TwoVector loc2[2]; + G4int e2i = IntersectLineAndLineSegment2D (p,v,P1,DE,loc2); + if (e2i == 2) + { + location[0] = loc2[0]; + location[1] = loc2[1]; + return true; + } + + if ((e0i == 0) && (e1i == 0) && (e2i == 0)) { return false; } + + if ((e0i == 1) && (e2i == 1)) + { + if ((loc0[0]-p).mag2() < (loc2[0]-p).mag2()) + { + location[0] = loc0[0]; + location[1] = loc2[0]; + } + else + { + location[0] = loc2[0]; + location[1] = loc0[0]; + } + return true; + } + + if ((e1i == 1) && (e2i == 1)) + { + if ((loc1[0]-p).mag2() < (loc2[0]-p).mag2()) + { + location[0] = loc1[0]; + location[1] = loc2[0]; + } + else + { + location[0] = loc2[0]; + location[1] = loc1[0]; + } + return true; + } + + return false; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// IntersectLineAndLineSegment2D +// +// Determines whether there is an intersection between a line defined +// by r = P0 + s.D0 and a line-segment with endpoints P1 and P1+D1. +// Here: +// P0 = 2D vector +// s = scaler on [0,infinity) +// D0 = 2D vector +// P1 and D1 are 2D vectors +// +// This function returns: +// 0 - if there is no intersection; +// 1 - if there is a unique intersection; +// 2 - if the line and line-segments overlap, and the intersection is a +// segment itself. +// Information about where the intersection occurs is returned in the +// as ??. +// +// This is based on the work of Rickard Holmberg as well as material published +// by Philip J Schneider and David H Eberly, "Geometric Tools for Computer +// Graphics," ISBN 1-55860-694-0, pp 244-245, 2003. +// +G4int G4TessellatedGeometryAlgorithms::IntersectLineAndLineSegment2D ( + const G4TwoVector P0, const G4TwoVector D0, + const G4TwoVector P1, const G4TwoVector D1, + G4TwoVector location[2]) +{ + G4TwoVector E = P1 - P0; + G4double kross = cross(D0,D1); + G4double sqrKross = kross * kross; + G4double sqrLen0 = D0.mag2(); + G4double sqrLen1 = D1.mag2(); + location[0] = G4TwoVector(0.0,0.0); + location[1] = G4TwoVector(0.0,0.0); + + if (sqrKross > DBL_EPSILON * DBL_EPSILON * sqrLen0 * sqrLen1) + { +// +// +// The line and line segment are not parallel. Determine if the intersection +// is in positive s where r = P0 + s*D0, and for 0<=t<=1 where r = p1 + t*D1. +// + G4double s = cross(E,D1)/kross; + if (s < 0) return 0; // Intersection does not occur for positive s. + G4double t = cross(E,D0)/kross; + if (t < 0 || t > 1) return 0; // Intersection does not occur on line-segment. +// +// +// Intersection of lines is a single point on the forward-propagating line +// defined by r = P0 + s*D0, and the line segment defined by r = p1 + t*D1. +// + location[0] = P0 + s*D0; + return 1; + } +// +// +// Line and line segment are parallel. Determine whether they overlap or not. +// + G4double sqrLenE = E.mag2(); + kross = cross(E,D0); + sqrKross = kross * kross; + if (sqrKross > DBL_EPSILON * DBL_EPSILON * sqrLen0 * sqrLenE) + { + return 0; //Lines are different. + } +// +// +// Lines are the same. Test for overlap. +// + G4double s0 = D0.dot(E)/sqrLen0; + G4double s1 = s0 + D0.dot(D1)/sqrLen0; + G4double smin = 0.0; + G4double smax = 0.0; + + if (s0 < s1) {smin = s0; smax = s1;} + else {smin = s1; smax = s0;} + + if (smax < 0.0) return 0; + else if (smin < 0.0) + { + location[0] = P0; + location[1] = P0 + smax*D0; + return 2; + } + else + { + location[0] = P0 + smin*D0; + location[1] = P0 + smax*D0; + return 2; + } +} diff --git a/source/geometry/solids/specific/src/G4TessellatedSolid.cc b/source/geometry/solids/specific/src/G4TessellatedSolid.cc index 4cd87f46ef..f7f23c4c21 100644 --- a/source/geometry/solids/specific/src/G4TessellatedSolid.cc +++ b/source/geometry/solids/specific/src/G4TessellatedSolid.cc @@ -17,15 +17,15 @@ // * * // * This code implementation is the result of the scientific and * // * technical work of the GEANT4 collaboration and of QinetiQ Ltd, * -// * subject DEFCON 705 IPR conditions. * +// * subject to DEFCON 705 IPR conditions. * // * 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: G4TessellatedSolid.cc,v 1.9 2007/02/12 12:08:33 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4TessellatedSolid.cc,v 1.14 2007/12/11 15:28:50 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // @@ -42,6 +42,18 @@ // CHANGE HISTORY // -------------- // +// 14 November 2007 P R Truscott, QinetiQ & Stan Seibert, U Texas +// Bug fixes to CalculateExtent +// +// 17 September 2007, P R Truscott, QinetiQ Ltd & Richard Holmberg +// Updated extensively prior to this date to deal with +// concaved tessellated surfaces, based on the algorithm +// of Richard Holmberg. This had been slightly modified +// to determine with inside the geometry by projecting +// random rays from the point provided. Now random rays +// are predefined rather than making use of random +// number generator at run-time. +// // 22 November 2005, F Lei // - Changed ::DescribeYourselfTo(), line 464 // - added GetPolyHedron() @@ -77,6 +89,8 @@ G4TessellatedSolid::G4TessellatedSolid () yMaxExtent = -kInfinity; zMinExtent = kInfinity; zMaxExtent = -kInfinity; + + SetRandomVectorSet(); } /////////////////////////////////////////////////////////////////////////////// @@ -99,6 +113,8 @@ G4TessellatedSolid::G4TessellatedSolid (const G4String &name) yMaxExtent = -kInfinity; zMinExtent = kInfinity; zMaxExtent = -kInfinity; + + SetRandomVectorSet(); } /////////////////////////////////////////////////////////////////////////////// @@ -111,8 +127,9 @@ G4TessellatedSolid::G4TessellatedSolid( __void__& a ) geometryType("G4TessellatedSolid"), cubicVolume(0.), surfaceArea(0.), vertexList(), xMinExtent(0.), xMaxExtent(0.), yMinExtent(0.), yMaxExtent(0.), zMinExtent(0.), zMaxExtent(0.), - solidClosed(false), dirTolerance(0.) + solidClosed(false) { + SetRandomVectorSet(); } /////////////////////////////////////////////////////////////////////////////// @@ -295,6 +312,32 @@ void G4TessellatedSolid::SetSolidClosed (const G4bool t) zMinExtent = z; } } +// +// +// Compute extremeFacets, i.e. find those facets that have surface +// planes that bound the volume. +// Note that this is going to reject concaved surfaces as being extreme. Also +// note that if the vertex is on the facet, displacement is zero, so IsInside +// returns true. So will this work?? Need non-equality +// "G4bool inside = displacement < 0.0;" +// or +// "G4bool inside = displacement <= -0.5*kCarTolerance" +// (Notes from PT 13/08/2007). +// + for (FacetCI it=facets.begin(); it!=facets.end(); it++) + { + G4bool isExtreme = true; + for (size_t i=0; iIsInside(vertexList[i])) + { + isExtreme = false; + break; + } + } + if (isExtreme) + extremeFacets.insert(*it); + } solidClosed = true; } else @@ -305,11 +348,22 @@ void G4TessellatedSolid::SetSolidClosed (const G4bool t) /////////////////////////////////////////////////////////////////////////////// // +// GetSolidClosed +// +// Used to determine whether the solid is closed to adding further facets. +// G4bool G4TessellatedSolid::GetSolidClosed () const {return solidClosed;} /////////////////////////////////////////////////////////////////////////////// // +// operator+= +// +// This operator allows the user to add two tessellated solids together, so +// that the solid on the left then includes all of the facets in the solid +// on the right. Note that copies of the facets are generated, rather than +// using the original facet set of the solid on the right. +// const G4TessellatedSolid &G4TessellatedSolid::operator+= (const G4TessellatedSolid &right) { @@ -320,6 +374,10 @@ const G4TessellatedSolid &G4TessellatedSolid::operator+= /////////////////////////////////////////////////////////////////////////////// // +// GetFacet +// +// Access pointer to facet in solid, indexed by integer i. +// G4VFacet *G4TessellatedSolid::GetFacet (size_t i) const { return facets[i]; @@ -327,6 +385,8 @@ G4VFacet *G4TessellatedSolid::GetFacet (size_t i) const /////////////////////////////////////////////////////////////////////////////// // +// GetNumberOfFacets +// size_t G4TessellatedSolid::GetNumberOfFacets () const { return facets.size(); @@ -334,8 +394,20 @@ size_t G4TessellatedSolid::GetNumberOfFacets () const /////////////////////////////////////////////////////////////////////////////// // +// EInside G4TessellatedSolid::Inside (const G4ThreeVector &p) const +// +// This method must return: +// * kOutside if the point at offset p is outside the shape +// boundaries plus kCarTolerance/2, +// * kSurface if the point is <= kCarTolerance/2 from a surface, or +// * kInside otherwise. +// EInside G4TessellatedSolid::Inside (const G4ThreeVector &p) const { +// +// First the simple test - check if we're outside of the X-Y-Z extremes +// of the tessellated solid. +// if ( p.x() < xMinExtent - kCarTolerance || p.x() > xMaxExtent + kCarTolerance || p.y() < yMinExtent - kCarTolerance || @@ -347,51 +419,144 @@ EInside G4TessellatedSolid::Inside (const G4ThreeVector &p) const } G4double minDist = kInfinity; - G4double dist = 0.0; - typedef std::multimap< G4double, FacetCI, std::less > DistMapType; - DistMapType distmap; - size_t purgeIntv = 25; - +// +// +// Check if we are close to a surface +// for (FacetCI f=facets.begin(); f!=facets.end(); f++) { - dist = (*f)->Distance(p,minDist); - distmap.insert(DistMapType::value_type(dist,f)); - minDist = distmap.begin()->first; - if (distmap.size() > purgeIntv) + G4double dist = (*f)->Distance(p,minDist); + if (dist < minDist) minDist = dist; + if (dist <= 0.5*kCarTolerance) { - DistMapType::iterator it = - distmap.lower_bound(minDist + 0.5*kCarTolerance); - it++; - if (it != distmap.end()) + return kSurface; + } + } +// +// +// The following is something of an adaptation of the method implemented by +// Rickard Holmberg augmented with information from Schneider & Eberly, +// "Geometric Tools for Computer Graphics," pp700-701, 2003. In essence, we're +// trying to determine whether we're inside the volume by projecting a few rays +// and determining if the first surface crossed is has a normal vector between +// 0 to pi/2 (out-going) or pi/2 to pi (in-going). We should also avoid rays +// which are nearly within the plane of the tessellated surface, and therefore +// produce rays randomly. For the moment, this is a bit over-engineered +// (belt-braces-and-ducttape). +// +#if G4SPECSDEBUG + G4int nTry = 7; +#else + G4int nTry = 3; +#endif + G4double distOut = kInfinity; + G4double distIn = kInfinity; + G4double distO = 0.0; + G4double distI = 0.0; + G4double distFromSurfaceO = 0.0; + G4double distFromSurfaceI = 0.0; + G4ThreeVector normalO(0.0,0.0,0.0); + G4ThreeVector normalI(0.0,0.0,0.0); + G4bool crossingO = false; + G4bool crossingI = false; + EInside location = kOutside; + EInside locationprime = kOutside; + G4int m = 0; + + for (G4int i=0; i purgeIntv) purgeIntv = 2*distmap.size(); +// +// +// Here we loop through the facets to find out if there is an intersection +// between the ray and that facet. The test if performed separately whether +// the ray is entering the facet or exiting. +// + crossingO = ((*f)->Intersect(p,v,true,distO,distFromSurfaceO,normalO)); + crossingI = ((*f)->Intersect(p,v,false,distI,distFromSurfaceI,normalI)); + if (crossingO || crossingI) + { + nearParallel = crossingO && std::abs(normalO.dot(v)) 0.0 && distO < distOut) distOut = distO; + if (crossingI && distI > 0.0 && distI < distIn) distIn = distI; + } + } + } while (!nearParallel && ++f!=facets.end()); + } while (nearParallel && m!=maxTries); + + if (m == maxTries) + { +// +// +// We've run out of random vector directions. If nTries is set sufficiently +// low (nTries <= 0.5*maxTries) then this would indicate that there is +// something wrong with geometry. +// + G4Exception("G4TessellatedSolid::Inside()", + "UnknownInsideOutside", FatalException, + "Cannot determine whether point is inside or outside volume!"); + } +// +// +// In the next if-then-elseif string the logic is as follows: +// (1) You don't hit anything so cannot be inside volume, provided volume +// constructed correctly! +// (2) Distance to inside (ie. nearest facet such that you enter facet) is +// shorter than distance to outside (nearest facet such that you exit +// facet) - on condition of safety distance - therefore we're outside. +// (3) Distance to outside is shorter than distance to inside therefore we're +// inside. +// + if (distIn == kInfinity && distOut == kInfinity) + locationprime = kOutside; + else if (distIn <= distOut - kCarTolerance*0.5) + locationprime = kOutside; + else if (distOut <= distIn - kCarTolerance*0.5) + locationprime = kInside; + + if (i == 0) location = locationprime; + else if (locationprime != location) + { +// +// +// Different ray directions result in different answer. Seems like the +// geometry is not constructed correctly. +// + G4Exception("G4TessellatedSolid::Inside()", + "UnknownInsideOutside", FatalException, + "Cannot determine whether point is inside or outside volume!"); } } - EInside inside = kInside; - - if (minDist <= 0.5*kCarTolerance) {inside = kSurface;} - else - { - DistMapType::const_iterator itcut = - distmap.lower_bound(minDist + 0.5* kCarTolerance); - itcut++; - DistMapType::const_iterator it = distmap.begin(); - do - { - if (!((*(it->second))->IsInside(p))) {inside = kOutside;} - } while (inside == kInside && ++it != itcut); - } - - return inside; + return location; } /////////////////////////////////////////////////////////////////////////////// // +// G4ThreeVector G4TessellatedSolid::SurfaceNormal (const G4ThreeVector &p) const +// +// Return the outwards pointing unit normal of the shape for the +// surface closest to the point at offset p. + G4ThreeVector G4TessellatedSolid::SurfaceNormal (const G4ThreeVector &p) const { FacetCI minFacet; @@ -430,6 +595,14 @@ G4ThreeVector G4TessellatedSolid::SurfaceNormal (const G4ThreeVector &p) const /////////////////////////////////////////////////////////////////////////////// // +// G4double DistanceToIn(const G4ThreeVector& p, const G4ThreeVector& v) +// +// Return the distance along the normalised vector v to the shape, +// from the point at offset p. If there is no intersection, return +// kInfinity. The first intersection resulting from ‘leaving’ a +// surface/volume is discarded. Hence, this is tolerant of points on +// surface of shape. + G4double G4TessellatedSolid::DistanceToIn (const G4ThreeVector &p, const G4ThreeVector &v) const { @@ -438,11 +611,30 @@ G4double G4TessellatedSolid::DistanceToIn (const G4ThreeVector &p, G4double distFromSurface = 0.0; G4ThreeVector normal(0.0,0.0,0.0); +#if G4SPECSDEBUG + if ( Inside(p) == kInside ) + { + G4cout.precision(16) ; + G4cout << G4endl ; + // DumpInfo(); + G4cout << "Position:" << G4endl << G4endl ; + G4cout << "p.x() = " << p.x()/mm << " mm" << G4endl ; + G4cout << "p.y() = " << p.y()/mm << " mm" << G4endl ; + G4cout << "p.z() = " << p.z()/mm << " mm" << G4endl << G4endl ; + G4cout << "DistanceToOut(p) == " << DistanceToOut(p) << G4endl; + G4Exception("G4TriangularFacet::DistanceToIn(p,v)", "Notification", JustWarning, + "Point p is already inside!?" ); + } +#endif + for (FacetCI f=facets.begin(); f!=facets.end(); f++) { if ((*f)->Intersect(p,v,false,dist,distFromSurface,normal)) { - if (dist < minDist) minDist = dist; + if (distFromSurface > 0.5*kCarTolerance && dist >= 0.0 && dist < minDist) + { + minDist = dist; + } } } @@ -451,15 +643,36 @@ G4double G4TessellatedSolid::DistanceToIn (const G4ThreeVector &p, /////////////////////////////////////////////////////////////////////////////// // +// G4double DistanceToIn(const G4ThreeVector& p) +// +// Calculate distance to nearest surface of shape from an outside point p. The +// distance can be an underestimate. + G4double G4TessellatedSolid::DistanceToIn (const G4ThreeVector &p) const { G4double minDist = kInfinity; G4double dist = 0.0; +#if G4SPECSDEBUG + if ( Inside(p) == kInside ) + { + G4cout.precision(16) ; + G4cout << G4endl ; + // DumpInfo(); + G4cout << "Position:" << G4endl << G4endl ; + G4cout << "p.x() = " << p.x()/mm << " mm" << G4endl ; + G4cout << "p.y() = " << p.y()/mm << " mm" << G4endl ; + G4cout << "p.z() = " << p.z()/mm << " mm" << G4endl << G4endl ; + G4cout << "DistanceToOut(p) == " << DistanceToOut(p) << G4endl; + G4Exception("G4TriangularFacet::DistanceToIn(p)", "Notification", JustWarning, + "Point p is already inside!?" ); + } +#endif + for (FacetCI f=facets.begin(); f!=facets.end(); f++) { dist = (*f)->Distance(p,minDist,false); - if (dist < minDist) minDist = dist; + if (dist < minDist) { minDist = dist; } } return minDist; @@ -467,65 +680,119 @@ G4double G4TessellatedSolid::DistanceToIn (const G4ThreeVector &p) const /////////////////////////////////////////////////////////////////////////////// // +// G4double DistanceToOut(const G4ThreeVector& p, const G4ThreeVector& v, +// const G4bool calcNorm=false, +// G4bool *validNorm=0, G4ThreeVector *n=0); +// +// Return distance along the normalised vector v to the shape, from a +// point at an offset p inside or on the surface of the +// shape. Intersections with surfaces, when the point is not greater +// than kCarTolerance/2 from a surface, must be ignored. +// If calcNorm is true, then it must also set validNorm to either +// * true, if the solid lies entirely behind or on the exiting +// surface. Then it must set n to the outwards normal vector +// (the Magnitude of the vector is not defined). +// * false, if the solid does not lie entirely behind or on the +// exiting surface. +// If calcNorm is false, then validNorm and n are unused. + G4double G4TessellatedSolid::DistanceToOut (const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm, G4bool *validNorm, G4ThreeVector *n) const { - G4double minDist1 = kInfinity; - G4double minDist2 = kInfinity; + G4double minDist = kInfinity; G4double dist = 0.0; G4double distFromSurface = 0.0; G4ThreeVector normal(0.0,0.0,0.0); - G4ThreeVector minNormal1(0.0,0.0,0.0); - G4ThreeVector minNormal2(0.0,0.0,0.0); + G4ThreeVector minNormal(0.0,0.0,0.0); +#if G4SPECSDEBUG + if ( Inside(p) == kOutside ) + { + G4cout.precision(16) ; + G4cout << G4endl ; + // DumpInfo(); + G4cout << "Position:" << G4endl << G4endl ; + G4cout << "p.x() = " << p.x()/mm << " mm" << G4endl ; + G4cout << "p.y() = " << p.y()/mm << " mm" << G4endl ; + G4cout << "p.z() = " << p.z()/mm << " mm" << G4endl << G4endl ; + G4cout << "DistanceToIn(p) == " << DistanceToIn(p) << G4endl; + G4Exception("G4TriangularFacet::DistanceToOut(p)", "Notification", JustWarning, + "Point p is already outside !?" ); + } +#endif + + G4bool isExtreme = false; for (FacetCI f=facets.begin(); f!=facets.end(); f++) { if ((*f)->Intersect(p,v,true,dist,distFromSurface,normal)) - { - if (dist < minDist1) + { + if (distFromSurface > 0.0 && distFromSurface <= 0.5*kCarTolerance && + (*f)->Distance(p,kCarTolerance) <= 0.5*kCarTolerance) { - if (v.dot(normal) > dirTolerance) - { - minDist1 = dist; - minNormal1 = normal; - } - else if (dist < minDist2) - { - minDist2 = dist; - minNormal2 = normal; - } + // We are on a surface. Return zero. + *validNorm = extremeFacets.count(*f); + *n = SurfaceNormal(p); + return 0.0; + } + if (dist >= 0.0 && dist < minDist) + { + minDist = dist; + minNormal = normal; + isExtreme = extremeFacets.count(*f); } } } - if (minDist1 < kInfinity) + if (minDist < kInfinity) { if (calcNorm) { - *validNorm = true; - *n = minNormal1; + *validNorm = isExtreme; + *n = minNormal; } - return minDist1; + return minDist; } else { + // No intersection found if (calcNorm) { - *validNorm = true; - *n = minNormal2; + *validNorm = false; + *n = SurfaceNormal(p); } - return minDist2; + return 0.0; } } /////////////////////////////////////////////////////////////////////////////// // +// G4double DistanceToOut(const G4ThreeVector& p) +// +// Calculate distance to nearest surface of shape from an inside +// point. The distance can be an underestimate. + G4double G4TessellatedSolid::DistanceToOut (const G4ThreeVector &p) const { G4double minDist = kInfinity; G4double dist = 0.0; +#if G4SPECSDEBUG + if ( Inside(p) == kOutside ) + { + G4cout.precision(16) ; + G4cout << G4endl ; + // DumpInfo(); + G4cout << "Position:" << G4endl << G4endl ; + G4cout << "p.x() = " << p.x()/mm << " mm" << G4endl ; + G4cout << "p.y() = " << p.y()/mm << " mm" << G4endl ; + G4cout << "p.z() = " << p.z()/mm << " mm" << G4endl << G4endl ; + G4cout << "DistanceToIn(p) == " << DistanceToIn(p) << G4endl; + G4Exception("G4TriangularFacet::DistanceToOut(p)", "Notification", JustWarning, + "Point p is already outside !?" ); + } +#endif + for (FacetCI f=facets.begin(); f!=facets.end(); f++) { dist = (*f)->Distance(p,minDist,true); @@ -537,6 +804,11 @@ G4double G4TessellatedSolid::DistanceToOut (const G4ThreeVector &p) const /////////////////////////////////////////////////////////////////////////////// // +// G4GeometryType GetEntityType() const; +// +// Provide identification of the class of an object (required for +// persistency and STEP interface). +// G4GeometryType G4TessellatedSolid::GetEntityType () const { return geometryType; @@ -637,105 +909,86 @@ G4Polyhedron* G4TessellatedSolid::GetPolyhedron () const /////////////////////////////////////////////////////////////////////////////// // -G4bool G4TessellatedSolid::CalculateExtent(const EAxis pAxis, - const G4VoxelLimits& pVoxelLimit, const G4AffineTransform& pTransform, - G4double& pMin, G4double& pMax) const +// CalculateExtent +// +// Based on correction provided by Stan Seibert, University of Texas. +// +G4bool +G4TessellatedSolid::CalculateExtent(const EAxis pAxis, + const G4VoxelLimits& pVoxelLimit, + const G4AffineTransform& pTransform, + G4double& pMin, G4double& pMax) const { - if (!pTransform.IsRotated()) - { - G4double xoffset,xMin,xMax; - G4double yoffset,yMin,yMax; - G4double zoffset,zMin,zMax; - - xoffset = pTransform.NetTranslation().x(); - xMin = xoffset + xMinExtent; - xMax = xoffset + xMaxExtent; - - if (pVoxelLimit.IsXLimited()) + G4ThreeVectorList transVertexList(vertexList); + + // Put solid into transformed frame + for (size_t i=0; i pVoxelLimit.GetMaxXExtent()+kCarTolerance || - xMax < pVoxelLimit.GetMinXExtent()-kCarTolerance ) return false ; - else + for (G4int axis=G4ThreeVector::X; axis < G4ThreeVector::SIZE; axis++) { - if (xMin < pVoxelLimit.GetMinXExtent()) - { - xMin = pVoxelLimit.GetMinXExtent() ; - } - if (xMax > pVoxelLimit.GetMaxXExtent()) - { - xMax = pVoxelLimit.GetMaxXExtent() ; - } + G4double coordinate = transVertexList[i][axis]; + if (coordinate < minExtent[axis]) + { minExtent[axis] = coordinate; } + if (coordinate > maxExtent[axis]) + { maxExtent[axis] = coordinate; } } } - - yoffset = pTransform.NetTranslation().y(); - yMin = yoffset + yMinExtent; - yMax = yoffset + yMaxExtent; - - if (pVoxelLimit.IsYLimited()) + + // Check for containment and clamp to voxel boundaries + for (G4int axis=G4ThreeVector::X; axis < G4ThreeVector::SIZE; axis++) { - if ( yMin > pVoxelLimit.GetMaxYExtent()+kCarTolerance || - yMax < pVoxelLimit.GetMinYExtent()-kCarTolerance ) return false ; - else + EAxis geomAxis = kXAxis; // G4 geom classes use different index type + switch(axis) { - if (yMin < pVoxelLimit.GetMinYExtent()) + case G4ThreeVector::X: geomAxis = kXAxis; break; + case G4ThreeVector::Y: geomAxis = kYAxis; break; + case G4ThreeVector::Z: geomAxis = kZAxis; break; + } + G4bool isLimited = pVoxelLimit.IsLimited(geomAxis); + G4double voxelMinExtent = pVoxelLimit.GetMinExtent(geomAxis); + G4double voxelMaxExtent = pVoxelLimit.GetMaxExtent(geomAxis); + + if (isLimited) + { + if ( minExtent[axis] > voxelMaxExtent+kCarTolerance || + maxExtent[axis] < voxelMinExtent-kCarTolerance ) { - yMin = pVoxelLimit.GetMinYExtent() ; + return false ; } - if (yMax > pVoxelLimit.GetMaxYExtent()) + else { - yMax = pVoxelLimit.GetMaxYExtent() ; + if (minExtent[axis] < voxelMinExtent) + { + minExtent[axis] = voxelMinExtent ; + } + if (maxExtent[axis] > voxelMaxExtent) + { + maxExtent[axis] = voxelMaxExtent; + } } } } - zoffset = pTransform.NetTranslation().z(); - zMin = zoffset + zMinExtent; - zMax = zoffset + zMaxExtent; - - if (pVoxelLimit.IsZLimited()) + // Convert pAxis into G4ThreeVector index + G4int vecAxis=0; + switch(pAxis) { - if ( zMin > pVoxelLimit.GetMaxZExtent()+kCarTolerance || - zMax < pVoxelLimit.GetMinZExtent()-kCarTolerance ) return false ; - else - { - if (zMin < pVoxelLimit.GetMinZExtent()) - { - zMin = pVoxelLimit.GetMinZExtent() ; - } - if (zMax > pVoxelLimit.GetMaxZExtent()) - { - zMax = pVoxelLimit.GetMaxZExtent() ; - } - } - } + case kXAxis: vecAxis = G4ThreeVector::X; break; + case kYAxis: vecAxis = G4ThreeVector::Y; break; + case kZAxis: vecAxis = G4ThreeVector::Z; break; + default: break; + } + + pMin = minExtent[vecAxis] - kCarTolerance; + pMax = maxExtent[vecAxis] + kCarTolerance; - switch (pAxis) - { - case kXAxis: - pMin = xMin ; - pMax = xMax ; - break ; - case kYAxis: - pMin=yMin; - pMax=yMax; - break; - case kZAxis: - pMin=zMin; - pMax=zMax; - break; - default: - break; - } - pMin -= kCarTolerance ; - pMax += kCarTolerance ; - return true; - } - else - { - } - return false; } /////////////////////////////////////////////////////////////////////////////// @@ -803,7 +1056,41 @@ G4double G4TessellatedSolid::GetSurfaceArea () G4ThreeVector G4TessellatedSolid::GetPointOnSurface() const { // Select randomly a facet and return a random point on it - + G4int i = CLHEP::RandFlat::shootInt(facets.size()); return facets[i]->GetPointOnFace(); } +/////////////////////////////////////////////////////////////////////////////// +// +// SetRandomVectorSet +// +// This is a set of predefined random vectors (if that isn't a contradition +// in terms!) used to generate rays from a user-defined point. The member +// function Inside uses these to determine whether the point is inside or +// outside of the tessellated solid. All vectors should be unit vectors. +// +void G4TessellatedSolid::SetRandomVectorSet() +{ + randir[0] = G4ThreeVector(-0.9577428892113370, 0.2732676269591740, 0.0897405271949221); + randir[1] = G4ThreeVector(-0.8331264504940770,-0.5162067214954600,-0.1985722492445700); + randir[2] = G4ThreeVector(-0.1516671651108820, 0.9666292616127460, 0.2064580868390110); + randir[3] = G4ThreeVector( 0.6570250350323190,-0.6944539025883300, 0.2933460081893360); + randir[4] = G4ThreeVector(-0.4820456281280320,-0.6331060000098690,-0.6056474264406270); + randir[5] = G4ThreeVector( 0.7629032554236800, 0.1016854697539910,-0.6384658864065180); + randir[6] = G4ThreeVector( 0.7689540409061150, 0.5034929891988220, 0.3939600142169160); + randir[7] = G4ThreeVector( 0.5765188359255740, 0.5997271636278330,-0.5549354566343150); + randir[8] = G4ThreeVector( 0.6660632777862070,-0.6362809868288380, 0.3892379937580790); + randir[9] = G4ThreeVector( 0.3824415020414780, 0.6541792713761380,-0.6525243125110690); + randir[10] = G4ThreeVector(-0.5107726564526760, 0.6020905056811610, 0.6136760679616570); + randir[11] = G4ThreeVector( 0.7459135439578050, 0.6618796061649330, 0.0743530220183488); + randir[12] = G4ThreeVector( 0.1536405855311580, 0.8117477913978260,-0.5634359711967240); + randir[13] = G4ThreeVector( 0.0744395301705579,-0.8707110101772920,-0.4861286795736560); + randir[14] = G4ThreeVector(-0.1665874645185400, 0.6018553940549240,-0.7810369397872780); + randir[15] = G4ThreeVector( 0.7766902003633100, 0.6014617505959970,-0.1870724331097450); + randir[16] = G4ThreeVector(-0.8710128685847430,-0.1434320216603030,-0.4698551243971010); + randir[17] = G4ThreeVector( 0.8901082092766820,-0.4388411398893870, 0.1229871120030100); + randir[18] = G4ThreeVector(-0.6430417431544370,-0.3295938228697690, 0.6912779675984150); + randir[19] = G4ThreeVector( 0.6331124368380410, 0.6306211461665000, 0.4488714875425340); + + maxTries = 20; +} diff --git a/source/geometry/solids/specific/src/G4Tet.cc b/source/geometry/solids/specific/src/G4Tet.cc index 02a86b901c..c16a76b0d9 100644 --- a/source/geometry/solids/specific/src/G4Tet.cc +++ b/source/geometry/solids/specific/src/G4Tet.cc @@ -28,7 +28,7 @@ // ******************************************************************** // // $Id: G4Tet.cc,v 1.11 2006/11/13 08:58:03 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4Tet // diff --git a/source/geometry/solids/specific/src/G4TriangularFacet.cc b/source/geometry/solids/specific/src/G4TriangularFacet.cc index b920770044..40b1110f86 100644 --- a/source/geometry/solids/specific/src/G4TriangularFacet.cc +++ b/source/geometry/solids/specific/src/G4TriangularFacet.cc @@ -17,15 +17,15 @@ // * * // * This code implementation is the result of the scientific and * // * technical work of the GEANT4 collaboration and of QinetiQ Ltd, * -// * subject DEFCON 705 IPR conditions. * +// * subject to DEFCON 705 IPR conditions. * // * 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: G4TriangularFacet.cc,v 1.7 2007/02/15 17:03:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4TriangularFacet.cc,v 1.10 2007/12/10 16:30:35 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // @@ -44,9 +44,21 @@ // // 31 October 2004, P R Truscott, QinetiQ Ltd, UK - Created. // +// 01 August 2007 P R Truscott, QinetiQ Ltd, UK +// Significant modification to correct for errors and enhance +// based on patches/observations kindly provided by Rickard +// Holmberg +// +// 26 September 2007 +// P R Truscott, QinetiQ Ltd, UK +// Further chamges implemented to the Intersect member +// function to correctly treat rays nearly parallel to the +// plane of the triangle. +// // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #include "G4TriangularFacet.hh" +#include "G4TwoVector.hh" #include "globals.hh" #include "Randomize.hh" @@ -62,6 +74,7 @@ G4TriangularFacet::G4TriangularFacet (const G4ThreeVector Pt0, G4FacetVertexType vertexType) : G4VFacet() { + if (!tGeomAlg) { tGeomAlg = G4TessellatedGeometryAlgorithms::GetInstance(); } P0 = Pt0; nVertices = 3; if (vertexType == ABSOLUTE) @@ -121,17 +134,25 @@ G4TriangularFacet::G4TriangularFacet (const G4ThreeVector Pt0, sMax = 1.0 - sMin; tMin = -0.5*kCarTolerance/std::sqrt(c); - G4ThreeVector vtmp = 0.25 * (E[0] + E[1]); - centroid = P0 + vtmp; - radiusSqr = vtmp.mag2(); - radius = std::sqrt(radiusSqr); + area = 0.5 * (E[0].cross(E[1])).mag(); + +// G4ThreeVector vtmp = 0.25 * (E[0] + E[1]); + G4double lambda0 = (a-b) * c / (8.0*area*area); + G4double lambda1 = (c-b) * a / (8.0*area*area); + circumcentre = P0 + lambda0*E[0] + lambda1*E[1]; + radiusSqr = (circumcentre-P0).mag2(); + radius = std::sqrt(radiusSqr); - for (size_t i=0; i<3; i++) I.push_back(0); + for (size_t i=0; i<3; i++) { I.push_back(0); } } } /////////////////////////////////////////////////////////////////////////////// // +// ~G4TriangularFacet +// +// A pretty boring destructor indeed! +// G4TriangularFacet::~G4TriangularFacet () { P.clear(); @@ -141,6 +162,10 @@ G4TriangularFacet::~G4TriangularFacet () /////////////////////////////////////////////////////////////////////////////// // +// GetClone +// +// Simple member function to generate a diplicate of the triangular facet. +// G4VFacet *G4TriangularFacet::GetClone () { G4TriangularFacet *fc = new G4TriangularFacet (P0, P[0], P[1], ABSOLUTE); @@ -151,6 +176,11 @@ G4VFacet *G4TriangularFacet::GetClone () /////////////////////////////////////////////////////////////////////////////// // +// GetFlippedFacet +// +// Member function to generate an identical facet, but with the normal vector +// pointing at 180 degrees. +// G4TriangularFacet *G4TriangularFacet::GetFlippedFacet () { G4TriangularFacet *flipped = new G4TriangularFacet (P0, P[1], P[0], ABSOLUTE); @@ -159,10 +189,17 @@ G4TriangularFacet *G4TriangularFacet::GetFlippedFacet () /////////////////////////////////////////////////////////////////////////////// // -// Determine the closest distance from the facet to the point p. If the -// direction of the vector to the closest point is outward-going and outgoing -// is true or the vector is in-going and outgoing is false then the distance -// is returned. Otherwise kInfinity is returned. +// Distance (G4ThreeVector) +// +// Determines the vector between p and the closest point on the facet to p. +// This is based on the algorithm published in "Geometric Tools for Computer +// Graphics," Philip J Scheider and David H Eberly, Elsevier Science (USA), +// 2003. at the time of writing, the algorithm is also available in a +// technical note "Distance between point and triangle in 3D," by David Eberly +// at http://www.geometrictools.com/Documentation/DistancePoint3Triangle3.pdf +// +// The by-product is the square-distance sqrDist, which is retained +// in case needed by the other "Distance" member functions. // G4ThreeVector G4TriangularFacet::Distance (const G4ThreeVector &p) { @@ -172,8 +209,9 @@ G4ThreeVector G4TriangularFacet::Distance (const G4ThreeVector &p) G4double f = D.mag2(); G4double s = b*e - c*d; G4double t = b*d - a*e; - G4double sqrDist = 0.0; - + + sqrDist = 0.0; + if (s+t <= det) { if (s < 0.0) @@ -204,7 +242,7 @@ G4ThreeVector G4TriangularFacet::Distance (const G4ThreeVector &p) // s = 0.0; if (e >= 0.0) {t = 0.0; sqrDist = f;} - else if (-e >= c) {t = 0.0; sqrDist = c + 2.0*e + f;} + else if (-e >= c) {t = 1.0; sqrDist = c + 2.0*e + f;} else {t = -e/c; sqrDist = e*t + f;} } } @@ -223,29 +261,24 @@ G4ThreeVector G4TriangularFacet::Distance (const G4ThreeVector &p) // // We are in region 0. // - G4double invDet = 1.0 / det; - s *= invDet; - t *= invDet; - sqrDist = s*(a*s + b*t + 2.0*d) + t*(b*s + c*t + 2.0*e) + f; + s = s / det; + t = t / det; + sqrDist = s*(a*s + b*t + 2.0*d) + t*(b*s + c*t + 2.0*e) + f; } } else { - G4double tmp0 = 0.0; - G4double tmp1 = 0.0; - G4double numer = 0.0; - G4double denom = 0.0; if (s < 0.0) { // // We are in region 2. // - tmp0 = b + d; - tmp1 = c + e; + G4double tmp0 = b + d; + G4double tmp1 = c + e; if (tmp1 > tmp0) { - numer = tmp1 - tmp0; - denom = a - 2.0*b*c; + G4double numer = tmp1 - tmp0; + G4double denom = a - 2.0*b + c; if (numer >= denom) {s = 1.0; t = 0.0; sqrDist = a + 2.0*d + f;} else { @@ -267,12 +300,12 @@ G4ThreeVector G4TriangularFacet::Distance (const G4ThreeVector &p) // // We are in region 6. // - tmp0 = b + e; - tmp1 = a + d; + G4double tmp0 = b + e; + G4double tmp1 = a + d; if (tmp1 > tmp0) { - numer = tmp1 - tmp0; - denom = a - 2.0*b*c; + G4double numer = tmp1 - tmp0; + G4double denom = a - 2.0*b + c; if (numer >= denom) {t = 1.0; s = 0.0; sqrDist = c + 2.0*e + f;} else { @@ -294,16 +327,16 @@ G4ThreeVector G4TriangularFacet::Distance (const G4ThreeVector &p) // We are in region 1. // { - numer = c + f - b - d; + G4double numer = c + e - b - d; if (numer <= 0.0) { s = 0.0; t = 1.0; - sqrDist = c + 2.0*e*f; + sqrDist = c + 2.0*e + f; } else { - denom = a - 2.0*b*c; + G4double denom = a - 2.0*b + c; if (numer >= denom) {s = 1.0; t = 0.0; sqrDist = a + 2.0*d + f;} else { @@ -314,84 +347,108 @@ G4ThreeVector G4TriangularFacet::Distance (const G4ThreeVector &p) } } } +// +// +// Do a heck for rounding errors in the distance-squared. +// + if (sqrDist < 0.0) { sqrDist = 0.0; } + return D + s*E[0] + t*E[1]; } /////////////////////////////////////////////////////////////////////////////// // +// Distance (G4ThreeVector, G4double) +// +// Determines the closest distance between point p and the facet. This makes +// use of G4ThreeVector G4TriangularFacet::Distance, which stores the +// square of the distance in variable sqrDist. If approximate methods show +// the distance is to be greater than minDist, then forget about further +// computation and return a very large number. +// G4double G4TriangularFacet::Distance (const G4ThreeVector &p, const G4double minDist) { - /*G4ThreeVector D = P0 - p; - G4double d = E[0].dot(D); - G4double e = E[1].dot(D); - G4double s = b*e - c*d; - G4double t = b*d - a*e;*/ +// +// +// Start with quicky test to determine if the surface of the sphere enclosing +// the triangle is any closer to p than minDist. If not, then don't bother +// about more accurate test. +// G4double dist = kInfinity; - - /*if (s+t > 1.0 || s < 0.0 || t < 0.0) + if ((p-circumcentre).mag()-radius < minDist) { - G4ThreeVector D0 = P0 - p; - G4ThreeVector D1 = P[0] - p; - G4ThreeVector D2 = P[1] - p; - - G4double d0 = D0.mag(); - G4double d1 = D1.mag(); - G4double d2 = D2.mag(); - - dist = min(d0, min(d1, d2)); - if (dist > minDist) return kInfinity; - }*/ - - dist = Distance(p).mag(); - if (dist > minDist) return kInfinity; - +// +// +// It's possible that the triangle is closer than minDist, so do more accurate +// assessment. +// + dist = Distance(p).mag(); +// dist = std::sqrt(sqrDist); + } + return dist; } /////////////////////////////////////////////////////////////////////////////// // -// Determine the distance to point p bearing in mind that if the distance is -// likely to be longer than minDist, forget doing further calculation and -// return kInfinity. +// Distance (G4ThreeVector, G4double, G4double) +// +// Determine the distance to point p. kInfinity is returned if either: +// (1) outgoing is TRUE and the dot product of the normal vector to the facet +// and the displacement vector from p to the triangle is negative. +// (2) outgoing is FALSE and the dot product of the normal vector to the facet +// and the displacement vector from p to the triangle is positive. +// If approximate methods show the distance is to be greater than minDist, then +// forget about further computation and return a very large number. +// +// This method has been heavily modified thanks to the valuable comments and +// corrections of Rickard Holmberg. // G4double G4TriangularFacet::Distance (const G4ThreeVector &p, - const G4double, const G4bool outgoing) + const G4double minDist, const G4bool outgoing) { - /*G4ThreeVector D = P0 - p; - G4double d = E[0].dot(D); - G4double e = E[1].dot(D); - G4double s = b*e - c*d; - G4double t = b*d - a*e;*/ +// +// +// Start with quicky test to determine if the surface of the sphere enclosing +// the triangle is any closer to p than minDist. If not, then don't bother +// about more accurate test. +// G4double dist = kInfinity; - - /*if (s+t > 1.0 || s < 0.0 || t < 0.0) + if ((p-circumcentre).mag()-radius < minDist) { - G4ThreeVector D0 = P0 - p; - G4ThreeVector D1 = P[0] - p; - G4ThreeVector D2 = P[1] - p; - - G4double d0 = D0.mag(); - G4double d1 = D1.mag(); - G4double d2 = D2.mag(); - - dist = min(d0, min(d1, d2)); - if (dist > minDist || - (D0.dot(surfaceNormal) > 0.0 && !outgoing) || - (D0.dot(surfaceNormal) < 0.0 && outgoing)) return kInfinity; - }*/ - - G4ThreeVector v = Distance(p); - G4double dir = v.dot(surfaceNormal); - if ((dir > dirTolerance && !outgoing) || - (dir <-dirTolerance && outgoing)) dist = kInfinity; - else dist = v.mag(); - +// +// +// It's possible that the triangle is closer than minDist, so do more accurate +// assessment. +// + G4ThreeVector v = Distance(p); + G4double dist1 = std::sqrt(sqrDist); + G4double dir = v.dot(surfaceNormal); + G4bool wrongSide = (dir > 0.0 && !outgoing) || (dir < 0.0 && outgoing); + if (dist1 <= kCarTolerance*0.5) + { +// +// +// Point p is very close to triangle. Check if it's on the wrong side, in +// which case return distance of 0.0 otherwise . +// + if (wrongSide) dist = 0.0; + else dist = dist1; + } + else if (!wrongSide) dist = dist1; + } + return dist; } /////////////////////////////////////////////////////////////////////////////// // +// Extent +// +// Calculates the furthest the triangle extends in a particular direction +// defined by the vector axis. +// G4double G4TriangularFacet::Extent (const G4ThreeVector axis) { G4double s = P0.dot(axis); @@ -405,66 +462,243 @@ G4double G4TriangularFacet::Extent (const G4ThreeVector axis) /////////////////////////////////////////////////////////////////////////////// // +// Intersect +// +// Member function to find the next intersection when going from p in the +// direction of v. If: +// (1) "outgoing" is TRUE, only consider the face if we are going out through +// the face. +// (2) "outgoing" is FALSE, only consider the face if we are going in through +// the face. +// Member functions returns TRUE if there is an intersection, FALSE otherwise. +// Sets the distance (distance along w), distFromSurface (orthogonal distance) +// and normal. +// +// Also considers intersections that happen with negative distance for small +// distances of distFromSurface = 0.5*kCarTolerance in the wrong direction. +// This is to detect kSurface without doing a full Inside(p) in +// G4TessellatedSolid::Distance(p,v) calculation. +// +// This member function is thanks the valuable work of Rickard Holmberg. PT. +// However, "gotos" are the Work of the Devil have been exorcised with +// extreme prejudice!! +// +// IMPORTANT NOTE: These calculations are predicated on v being a unit +// vector. If G4TessellatedSolid or other classes call this member function +// with |v| != 1 then there will be errors. +// G4bool G4TriangularFacet::Intersect (const G4ThreeVector &p, const G4ThreeVector &v, G4bool outgoing, G4double &distance, G4double &distFromSurface, G4ThreeVector &normal) { - G4ThreeVector D = P0 - p; - G4double d = E[0].dot(D); - G4double e = E[1].dot(D); - G4double g = E[0].dot(v); - G4double h = E[1].dot(v); - G4double q = D.dot(v); - - G4double A00 = a - g*g; - G4double A11 = c - h*h; - G4double A01 = b - g*h; - G4double det2 = A00*A11 - A01*A01; - - G4double s = kInfinity; - G4double t = kInfinity; - - G4double dist = kInfinity; - G4bool intersect = false; - G4double normalComp = 0.0; - - - if (det2 != 0.0) - { - G4double B0 = q*g - d; - G4double B1 = q*h - e; - s = (A11*B0 - A01*B1)/det2; - if ((s >= sMin) && (s <= sMax)) - { - t = (A00*B1 - A01*B0)/det2; - if ((t >= tMin) && (t < 1.0 - s + std::fabs(sMin))) - { //THIS IS A FUDGE FOR THE MOMENT - dist = q + g*s + h*t; - normalComp = v.dot(surfaceNormal); -// intersect = (dist >= 0.0 && -// ((outgoing && normalComp > 0.0) || (!outgoing && normalComp < 0.0))); - intersect = (dist >= -kCarTolerance*0.5 && - ((outgoing && normalComp > dirTolerance) || - (!outgoing && normalComp <-dirTolerance))); //FUDGE FOR THE MOMENT - } - } - } - - if (intersect) - { - if (dist < kCarTolerance * 0.5) { dist = 0.0; } - distance = dist; - distFromSurface = dist * normalComp; - normal = surfaceNormal; - } - else +// +// +// Check whether the direction of the facet is consistent with the vector v +// and the need to be outgoing or ingoing. If inconsistent, disregard and +// return false. +// + G4double w = v.dot(surfaceNormal); + if ((outgoing && (w <-dirTolerance)) || (!outgoing && (w > dirTolerance))) { distance = kInfinity; distFromSurface = kInfinity; normal = G4ThreeVector(0.0,0.0,0.0); + return false; + } +// +// +// Calculate the orthogonal distance from p to the surface containing the +// triangle. Then determine if we're on the right or wrong side of the +// surface (at a distance greater than kCarTolerance) to be consistent with +// "outgoing". +// + G4ThreeVector D = P0 - p; + distFromSurface = D.dot(surfaceNormal); + G4bool wrongSide = (outgoing && (distFromSurface < -0.5*kCarTolerance)) || + (!outgoing && (distFromSurface > 0.5*kCarTolerance)); + if (wrongSide) + { + distance = kInfinity; + distFromSurface = kInfinity; + normal = G4ThreeVector(0.0,0.0,0.0); + return false; + } + + wrongSide = (outgoing && (distFromSurface < 0.0)) || + (!outgoing && (distFromSurface > 0.0)); + if (wrongSide) + { +// +// +// We're slightly on the wrong side of the surface. Check if we're close +// enough using a precise distance calculation. +// + G4ThreeVector u = Distance(p); + if (std::sqrt(sqrDist) <= 0.5*kCarTolerance) + { +// +// +// We're very close. Therefore return a small negative number to pretend +// we intersect. +// + distance = -0.5*kCarTolerance; + normal = surfaceNormal; + return true; + } + else + { +// +// +// We're close to the surface containing the triangle, but sufficiently +// far from the triangle, and on the wrong side compared to the directions +// of the surface normal and v. There is no intersection. +// + distance = kInfinity; + distFromSurface = kInfinity; + normal = G4ThreeVector(0.0,0.0,0.0); + return false; + } + } + if (w < dirTolerance && w > -dirTolerance) + { +// +// +// The ray is within the plane of the triangle. Project the problem into 2D +// in the plane of the triangle. First try to create orthogonal unit vectors +// mu and nu, where mu is E[0]/|E[0]|. This is kinda like +// the original algorithm due to Rickard Holmberg, but with better mathematical +// justification than the original method ... however, beware Rickard's was less +// time-consuming. +// +// Note that vprime is not a unit vector. We need to keep it unnormalised +// since the values of distance along vprime (s0 and s1) for intersection with +// the triangle will be used to determine if we cut the plane at the same +// time. +// + G4ThreeVector mu = E[0].unit(); + G4ThreeVector nu = surfaceNormal.cross(mu); + G4TwoVector pprime(p.dot(mu),p.dot(nu)); + G4TwoVector vprime(v.dot(mu),v.dot(nu)); + G4TwoVector P0prime(P0.dot(mu),P0.dot(nu)); + G4TwoVector E0prime(E[0].mag(),0.0); + G4TwoVector E1prime(E[1].dot(mu),E[1].dot(nu)); + + G4TwoVector loc[2]; + if ( tGeomAlg->IntersectLineAndTriangle2D(pprime,vprime,P0prime, + E0prime,E1prime,loc) ) + { +// +// +// There is an intersection between the line and triangle in 2D. Now check +// which part of the line intersects with the plane containing the triangle +// in 3D. +// + G4double vprimemag = vprime.mag(); + G4double s0 = (loc[0] - pprime).mag()/vprimemag; + G4double s1 = (loc[1] - pprime).mag()/vprimemag; + G4double normDist0 = surfaceNormal.dot(s0*v) - distFromSurface; + G4double normDist1 = surfaceNormal.dot(s1*v) - distFromSurface; + + if ((normDist0 < 0.0 && normDist1 < 0.0) || + (normDist0 > 0.0 && normDist1 > 0.0)) + { + distance = kInfinity; + distFromSurface = kInfinity; + normal = G4ThreeVector(0.0,0.0,0.0); + return false; + } + else + { + G4double dnormDist = normDist1-normDist0; + if (std::abs(dnormDist) < DBL_EPSILON) + { + distance = s0; + normal = surfaceNormal; + if (!outgoing) distFromSurface = -distFromSurface; + return true; + } + else + { + distance = s0 - normDist0*(s1-s0)/dnormDist; + normal = surfaceNormal; + if (!outgoing) distFromSurface = -distFromSurface; + return true; + } + } + +// G4ThreeVector dloc = loc1 - loc0; +// G4ThreeVector dlocXv = dloc.cross(v); +// G4double dlocXvmag = dlocXv.mag(); +// if (dloc.mag() <= 0.5*kCarTolerance || dlocXvmag <= DBL_EPSILON) +// { +// distance = loc0.mag(); +// normal = surfaceNormal; +// if (!outgoing) distFromSurface = -distFromSurface; +// return true; +// } + +// G4ThreeVector loc0Xv = loc0.cross(v); +// G4ThreeVector loc1Xv = loc1.cross(v); +// G4double sameDir = -loc0Xv.dot(loc1Xv); +// if (sameDir < 0.0) +// { +// distance = kInfinity; +// distFromSurface = kInfinity; +// normal = G4ThreeVector(0.0,0.0,0.0); +// return false; +// } +// else +// { +// distance = loc0.mag() + loc0Xv.mag() * dloc.mag()/dlocXvmag; +// normal = surfaceNormal; +// if (!outgoing) distFromSurface = -distFromSurface; +// return true; +// } + } + else + { + distance = kInfinity; + distFromSurface = kInfinity; + normal = G4ThreeVector(0.0,0.0,0.0); + return false; + } + } +// +// +// Use conventional algorithm to determine the whether there is an +// intersection. This involves determining the point of intersection of the +// line with the plane containing the triangle, and then calculating if the +// point is within the triangle. +// + distance = distFromSurface / w; + G4ThreeVector pp = p + v*distance; + G4ThreeVector DD = P0 - pp; + G4double d = E[0].dot(DD); + G4double e = E[1].dot(DD); + G4double s = b*e - c*d; + G4double t = b*d - a*e; + + if (s < 0.0 || t < 0.0 || s+t > det) + { +// +// +// The intersection is outside of the triangle. +// + distance = kInfinity; + distFromSurface = kInfinity; + normal = G4ThreeVector(0.0,0.0,0.0); + return false; + } + else + { +// +// +// There is an intersection. Now we only need to set the surface normal. +// + normal = surfaceNormal; + if (!outgoing) distFromSurface = -distFromSurface; + return true; } - - return intersect; } //////////////////////////////////////////////////////////////////////// @@ -475,16 +709,10 @@ G4bool G4TriangularFacet::Intersect (const G4ThreeVector &p, G4ThreeVector G4TriangularFacet::GetPointOnFace() const { - G4double lambda1,lambda2; - G4ThreeVector v, w; + G4double lambda0 = CLHEP::RandFlat::shoot(0.,1.); + G4double lambda1 = CLHEP::RandFlat::shoot(0.,lambda0); - v = P[1] - P[0]; - w = P[0] - P0; - - lambda1 = CLHEP::RandFlat::shoot(0.,1.); - lambda2 = CLHEP::RandFlat::shoot(0.,lambda1); - - return (P0 + lambda1*w + lambda2*v); + return (P0 + lambda0*E[0] + lambda1*E[1]); } //////////////////////////////////////////////////////////////////////// @@ -495,13 +723,5 @@ G4ThreeVector G4TriangularFacet::GetPointOnFace() const G4double G4TriangularFacet::GetArea() { - if (area) { return area; } - - G4ThreeVector v, w; - - v = P[1] - P[0]; - w = P[0] - P0; - area = 0.5*(v.cross(w)).mag(); - return area; } diff --git a/source/geometry/solids/specific/src/G4TwistBoxSide.cc b/source/geometry/solids/specific/src/G4TwistBoxSide.cc index 628f26201b..a74501e2fb 100644 --- a/source/geometry/solids/specific/src/G4TwistBoxSide.cc +++ b/source/geometry/solids/specific/src/G4TwistBoxSide.cc @@ -25,7 +25,7 @@ // // // $Id: G4TwistBoxSide.cc,v 1.6 2007/05/23 09:31:02 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4TwistTrapAlphaSide.cc b/source/geometry/solids/specific/src/G4TwistTrapAlphaSide.cc index 6dc3d3c1f8..6a11204574 100644 --- a/source/geometry/solids/specific/src/G4TwistTrapAlphaSide.cc +++ b/source/geometry/solids/specific/src/G4TwistTrapAlphaSide.cc @@ -25,7 +25,7 @@ // // // $Id: G4TwistTrapAlphaSide.cc,v 1.8 2007/05/23 13:26:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4TwistTrapFlatSide.cc b/source/geometry/solids/specific/src/G4TwistTrapFlatSide.cc index c49738e9a2..6125fbc2f4 100644 --- a/source/geometry/solids/specific/src/G4TwistTrapFlatSide.cc +++ b/source/geometry/solids/specific/src/G4TwistTrapFlatSide.cc @@ -25,7 +25,7 @@ // // // $Id: G4TwistTrapFlatSide.cc,v 1.6 2007/05/23 09:31:02 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4TwistTrapParallelSide.cc b/source/geometry/solids/specific/src/G4TwistTrapParallelSide.cc index 4518c493f8..3f2f697177 100644 --- a/source/geometry/solids/specific/src/G4TwistTrapParallelSide.cc +++ b/source/geometry/solids/specific/src/G4TwistTrapParallelSide.cc @@ -25,7 +25,7 @@ // // // $Id: G4TwistTrapParallelSide.cc,v -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4TwistTubsFlatSide.cc b/source/geometry/solids/specific/src/G4TwistTubsFlatSide.cc index 0539178e6c..270e696ec4 100644 --- a/source/geometry/solids/specific/src/G4TwistTubsFlatSide.cc +++ b/source/geometry/solids/specific/src/G4TwistTubsFlatSide.cc @@ -25,7 +25,7 @@ // // // $Id: G4TwistTubsFlatSide.cc,v 1.7 2007/05/23 09:31:02 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4TwistTubsHypeSide.cc b/source/geometry/solids/specific/src/G4TwistTubsHypeSide.cc index 833b484fea..cad5d03df4 100644 --- a/source/geometry/solids/specific/src/G4TwistTubsHypeSide.cc +++ b/source/geometry/solids/specific/src/G4TwistTubsHypeSide.cc @@ -25,7 +25,7 @@ // // // $Id: G4TwistTubsHypeSide.cc,v 1.6 2007/05/18 07:39:56 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4TwistTubsSide.cc b/source/geometry/solids/specific/src/G4TwistTubsSide.cc index 3b594687eb..66a9449fa8 100644 --- a/source/geometry/solids/specific/src/G4TwistTubsSide.cc +++ b/source/geometry/solids/specific/src/G4TwistTubsSide.cc @@ -25,7 +25,7 @@ // // // $Id: G4TwistTubsSide.cc,v 1.5 2006/06/29 18:49:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4TwistedBox.cc b/source/geometry/solids/specific/src/G4TwistedBox.cc index 8cbaec9fc5..b095fb6042 100644 --- a/source/geometry/solids/specific/src/G4TwistedBox.cc +++ b/source/geometry/solids/specific/src/G4TwistedBox.cc @@ -25,7 +25,7 @@ // // // $Id: G4TwistedBox.cc,v 1.12 2006/06/29 18:49:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4TwistedTrap.cc b/source/geometry/solids/specific/src/G4TwistedTrap.cc index 17c663395e..a6a1bd6c21 100644 --- a/source/geometry/solids/specific/src/G4TwistedTrap.cc +++ b/source/geometry/solids/specific/src/G4TwistedTrap.cc @@ -25,7 +25,7 @@ // // // $Id: G4TwistedTrap.cc,v 1.14 2006/06/29 18:49:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4TwistedTrd.cc b/source/geometry/solids/specific/src/G4TwistedTrd.cc index 7103e13ef6..65a3b7d67c 100644 --- a/source/geometry/solids/specific/src/G4TwistedTrd.cc +++ b/source/geometry/solids/specific/src/G4TwistedTrd.cc @@ -25,7 +25,7 @@ // // // $Id: G4TwistedTrd.cc,v 1.7 2006/06/29 18:49:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4TwistedTubs.cc b/source/geometry/solids/specific/src/G4TwistedTubs.cc index 35b1e3fd22..4e16461840 100644 --- a/source/geometry/solids/specific/src/G4TwistedTubs.cc +++ b/source/geometry/solids/specific/src/G4TwistedTubs.cc @@ -25,7 +25,7 @@ // // // $Id: G4TwistedTubs.cc,v 1.24 2007/05/18 07:39:56 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4VCSGfaceted.cc b/source/geometry/solids/specific/src/G4VCSGfaceted.cc index 3d695e0548..5c8b1d1121 100644 --- a/source/geometry/solids/specific/src/G4VCSGfaceted.cc +++ b/source/geometry/solids/specific/src/G4VCSGfaceted.cc @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4VCSGfaceted.cc,v 1.20 2006/10/20 14:21:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4VFacet.cc b/source/geometry/solids/specific/src/G4VFacet.cc index b24774cdbf..adef75dd85 100644 --- a/source/geometry/solids/specific/src/G4VFacet.cc +++ b/source/geometry/solids/specific/src/G4VFacet.cc @@ -24,8 +24,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VFacet.cc,v 1.5 2007/05/11 13:54:29 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VFacet.cc,v 1.6 2007/08/23 14:45:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // @@ -60,7 +60,7 @@ G4VFacet::G4VFacet () P.clear(); E.clear(); - centroid = G4ThreeVector(0.0,0.0,0.0); + circumcentre = G4ThreeVector(0.0,0.0,0.0); radius = 0.0; radiusSqr = 0.0; area = 0.0; @@ -81,7 +81,7 @@ G4bool G4VFacet::operator== (const G4VFacet &right) const G4double tolerance = kCarTolerance*kCarTolerance/4.0; if (nVertices != right.GetNumberOfVertices()) { return false; } - else if ((centroid-right.GetCentroid()).mag2() > tolerance) + else if ((circumcentre-right.GetCircumcentre()).mag2() > tolerance) { return false; } else if (std::fabs((right.GetSurfaceNormal()).dot(surfaceNormal)) < 0.9999999999) { return false; } diff --git a/source/geometry/solids/specific/src/G4VTwistSurface.cc b/source/geometry/solids/specific/src/G4VTwistSurface.cc index 590f1f0e29..b800494ba0 100644 --- a/source/geometry/solids/specific/src/G4VTwistSurface.cc +++ b/source/geometry/solids/specific/src/G4VTwistSurface.cc @@ -25,7 +25,7 @@ // // // $Id: G4VTwistSurface.cc,v 1.9 2007/05/31 13:52:48 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4VTwistedFaceted.cc b/source/geometry/solids/specific/src/G4VTwistedFaceted.cc index a0859711e9..6bd6c95a00 100644 --- a/source/geometry/solids/specific/src/G4VTwistedFaceted.cc +++ b/source/geometry/solids/specific/src/G4VTwistedFaceted.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VTwistedFaceted.cc,v 1.18 2007/05/25 09:42:34 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/volumes/History b/source/geometry/volumes/History index 1ea8e0bcd7..5cfec20f12 100644 --- a/source/geometry/volumes/History +++ b/source/geometry/volumes/History @@ -1,4 +1,4 @@ -$Id: History,v 1.146 2007/05/11 14:00:23 gcosmo Exp $ +$Id: History,v 1.150 2007/11/16 16:20:39 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,16 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Nov 16th, 2007 G.Cosmo - geomvol-V09-00-01 +- Added inline specification to methods in G4AssemblyTriplet class. + +Oct 12th, 2007 P.Gumplinger - geomvol-V09-00-00 +- Minor cleanup: moved typedef to begin of include files and rename to + theSkinSurfaceTable in G4LogicalBorderSurface and G4LogicalSkinSurface classes. +- Added explicit initialisation of first volume entry to zero in + G4TouchableHistory constructor, to ensure correct behavior for 'out-of-world' + touchable handle. (J.Apostolakis) + May 11th, 2007 G.Cosmo - geomvol-V08-03-00 - Use call to G4GeometryTolerance instead of kCarTolerance in G4ReflectionFactory. diff --git a/source/geometry/volumes/include/G4AssemblyTriplet.hh b/source/geometry/volumes/include/G4AssemblyTriplet.hh index f58e686c7b..0735be753c 100644 --- a/source/geometry/volumes/include/G4AssemblyTriplet.hh +++ b/source/geometry/volumes/include/G4AssemblyTriplet.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4AssemblyTriplet.hh,v 1.2 2006/06/29 18:56:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4AssemblyTriplet.hh,v 1.3 2007/11/16 16:20:25 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class G4AssemblyTriplet @@ -86,31 +86,31 @@ class G4AssemblyTriplet G4AssemblyTriplet& operator=( const G4AssemblyTriplet& second ); // Assignment operator - G4LogicalVolume* GetVolume() const; + inline G4LogicalVolume* GetVolume() const; // Retrieve the logical volume reference - void SetVolume( G4LogicalVolume* pVolume ); + inline void SetVolume( G4LogicalVolume* pVolume ); // Update the logical volume reference - G4AssemblyVolume* GetAssembly() const; + inline G4AssemblyVolume* GetAssembly() const; // Retrieve the assembly volume reference - void SetAssembly( G4AssemblyVolume* pAssembly ); + inline void SetAssembly( G4AssemblyVolume* pAssembly ); // Update the assembly volume reference - G4ThreeVector GetTranslation() const; + inline G4ThreeVector GetTranslation() const; // Retrieve the logical volume translation - void SetTranslation( G4ThreeVector& pVolume ); + inline void SetTranslation( G4ThreeVector& pVolume ); // Update the logical volume translation - G4RotationMatrix* GetRotation() const; + inline G4RotationMatrix* GetRotation() const; // Retrieve the logical volume rotation - void SetRotation( G4RotationMatrix* pVolume ); + inline void SetRotation( G4RotationMatrix* pVolume ); // Update the logical volume rotation - G4bool IsReflection() const; + inline G4bool IsReflection() const; // Return true if the logical or assembly volume has reflection private: diff --git a/source/geometry/volumes/include/G4AssemblyTriplet.icc b/source/geometry/volumes/include/G4AssemblyTriplet.icc index 745084fb69..43f7842c0d 100644 --- a/source/geometry/volumes/include/G4AssemblyTriplet.icc +++ b/source/geometry/volumes/include/G4AssemblyTriplet.icc @@ -25,7 +25,7 @@ // // // $Id: G4AssemblyTriplet.icc,v 1.2 2006/06/29 18:56:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class G4AssemblyTriplet - inline implementation diff --git a/source/geometry/volumes/include/G4AssemblyVolume.hh b/source/geometry/volumes/include/G4AssemblyVolume.hh index 8614f1d814..f22acb65af 100644 --- a/source/geometry/volumes/include/G4AssemblyVolume.hh +++ b/source/geometry/volumes/include/G4AssemblyVolume.hh @@ -25,7 +25,7 @@ // // // $Id: G4AssemblyVolume.hh,v 1.7 2006/06/29 18:56:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class G4AssemblyVolume diff --git a/source/geometry/volumes/include/G4AssemblyVolume.icc b/source/geometry/volumes/include/G4AssemblyVolume.icc index 06e22adc59..70dca97569 100644 --- a/source/geometry/volumes/include/G4AssemblyVolume.icc +++ b/source/geometry/volumes/include/G4AssemblyVolume.icc @@ -25,7 +25,7 @@ // // // $Id: G4AssemblyVolume.icc,v 1.3 2006/06/29 18:56:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class G4AssemblyVolume - inline implementation diff --git a/source/geometry/volumes/include/G4GRSSolid.hh b/source/geometry/volumes/include/G4GRSSolid.hh index dd0cda659b..defcc9628d 100644 --- a/source/geometry/volumes/include/G4GRSSolid.hh +++ b/source/geometry/volumes/include/G4GRSSolid.hh @@ -25,7 +25,7 @@ // // // $Id: G4GRSSolid.hh,v 1.8 2006/06/29 18:56:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4GRSSolid diff --git a/source/geometry/volumes/include/G4GRSSolid.icc b/source/geometry/volumes/include/G4GRSSolid.icc index 54e452c2a7..8fa3df244d 100644 --- a/source/geometry/volumes/include/G4GRSSolid.icc +++ b/source/geometry/volumes/include/G4GRSSolid.icc @@ -25,7 +25,7 @@ // // // $Id: G4GRSSolid.icc,v 1.9 2006/06/29 18:56:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4GRSSolid inline implementation diff --git a/source/geometry/volumes/include/G4GRSSolidHandle.hh b/source/geometry/volumes/include/G4GRSSolidHandle.hh index c28fc5c98e..7c6532aa02 100644 --- a/source/geometry/volumes/include/G4GRSSolidHandle.hh +++ b/source/geometry/volumes/include/G4GRSSolidHandle.hh @@ -25,7 +25,7 @@ // // // $Id: G4GRSSolidHandle.hh,v 1.6 2006/06/29 18:56:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class G4GRSSolidHandle // diff --git a/source/geometry/volumes/include/G4GRSVolume.hh b/source/geometry/volumes/include/G4GRSVolume.hh index 3cf93d8bbc..e4b76785da 100644 --- a/source/geometry/volumes/include/G4GRSVolume.hh +++ b/source/geometry/volumes/include/G4GRSVolume.hh @@ -25,7 +25,7 @@ // // // $Id: G4GRSVolume.hh,v 1.8 2006/06/29 18:57:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4GRSVolume diff --git a/source/geometry/volumes/include/G4GRSVolume.icc b/source/geometry/volumes/include/G4GRSVolume.icc index 73f1f49600..5a11d6eae5 100644 --- a/source/geometry/volumes/include/G4GRSVolume.icc +++ b/source/geometry/volumes/include/G4GRSVolume.icc @@ -25,7 +25,7 @@ // // // $Id: G4GRSVolume.icc,v 1.10 2006/06/29 18:57:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4GRSVolume inline implementation diff --git a/source/geometry/volumes/include/G4GRSVolumeHandle.hh b/source/geometry/volumes/include/G4GRSVolumeHandle.hh index dbe918e67c..a5a3ad228e 100644 --- a/source/geometry/volumes/include/G4GRSVolumeHandle.hh +++ b/source/geometry/volumes/include/G4GRSVolumeHandle.hh @@ -25,7 +25,7 @@ // // // $Id: G4GRSVolumeHandle.hh,v 1.6 2006/06/29 18:57:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class G4GRSVolumeHandle // diff --git a/source/geometry/volumes/include/G4LogicalBorderSurface.hh b/source/geometry/volumes/include/G4LogicalBorderSurface.hh index 639a90481a..3f6b14bd33 100644 --- a/source/geometry/volumes/include/G4LogicalBorderSurface.hh +++ b/source/geometry/volumes/include/G4LogicalBorderSurface.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4LogicalBorderSurface.hh,v 1.14 2006/06/29 18:57:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4LogicalBorderSurface.hh,v 1.15 2007/10/12 20:05:06 gum Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4LogicalBorderSurface // @@ -43,13 +43,15 @@ #ifndef G4LogicalBorderSurface_h #define G4LogicalBorderSurface_h 1 -#include "G4LogicalSurface.hh" -#include "G4VPhysicalVolume.hh" - #include -class G4Event; +#include "G4LogicalSurface.hh" +#include "G4VPhysicalVolume.hh" + class G4VPhysicalVolume; +class G4LogicalBorderSurface; + +typedef std::vector G4LogicalBorderSurfaceTable; class G4LogicalBorderSurface : public G4LogicalSurface { @@ -76,7 +78,7 @@ class G4LogicalBorderSurface : public G4LogicalSurface // To use with care! static void CleanSurfaceTable(); - static const std::vector * GetSurfaceTable(); + static const G4LogicalBorderSurfaceTable* GetSurfaceTable(); static size_t GetNumberOfBorderSurfaces(); static void DumpInfo(); // To handle the table of surfaces. @@ -95,12 +97,10 @@ class G4LogicalBorderSurface : public G4LogicalSurface G4VPhysicalVolume* Volume1; // Physical Volume pointer on side 1 G4VPhysicalVolume* Volume2; // Physical Volume pointer on side 2 - static std::vector theBorderSurfaceTable; - // The static Table of Surfaces. + static G4LogicalBorderSurfaceTable theBorderSurfaceTable; + // The static Table of BorderSurfaces. }; -typedef std::vector G4LogicalBorderSurfaceTable; - // ******************************************************************** // Inline methods // ******************************************************************** diff --git a/source/geometry/volumes/include/G4LogicalBorderSurface.icc b/source/geometry/volumes/include/G4LogicalBorderSurface.icc index 5b41c17f52..72807b9ba1 100644 --- a/source/geometry/volumes/include/G4LogicalBorderSurface.icc +++ b/source/geometry/volumes/include/G4LogicalBorderSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4LogicalBorderSurface.icc,v 1.9 2006/06/29 18:57:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4LogicalBorderSurface inline implementation diff --git a/source/geometry/volumes/include/G4LogicalSkinSurface.hh b/source/geometry/volumes/include/G4LogicalSkinSurface.hh index 2cab15cd4b..0a99dfc243 100644 --- a/source/geometry/volumes/include/G4LogicalSkinSurface.hh +++ b/source/geometry/volumes/include/G4LogicalSkinSurface.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4LogicalSkinSurface.hh,v 1.14 2006/06/29 18:57:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4LogicalSkinSurface.hh,v 1.15 2007/10/12 20:08:28 gum Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4LogicalSkinSurface // @@ -48,6 +48,9 @@ #include "G4LogicalSurface.hh" class G4LogicalVolume; +class G4LogicalSkinSurface; + +typedef std::vector G4LogicalSkinSurfaceTable; class G4LogicalSkinSurface : public G4LogicalSurface { @@ -58,14 +61,15 @@ class G4LogicalSkinSurface : public G4LogicalSurface G4LogicalVolume* vol, G4SurfaceProperty* surfaceProperty ); ~G4LogicalSkinSurface(); - // Constructor and destructor. + // Constructor and destructor. static G4LogicalSkinSurface* GetSurface(const G4LogicalVolume* vol); inline const G4LogicalVolume* GetLogicalVolume() const; inline void SetLogicalVolume(G4LogicalVolume* vol); - // Accessors. + // Accessors. static void CleanSurfaceTable(); + static const G4LogicalSkinSurfaceTable* GetSurfaceTable(); static size_t GetNumberOfSkinSurfaces(); static void DumpInfo(); // const // To handle with the table of surfaces. @@ -85,13 +89,11 @@ class G4LogicalSkinSurface : public G4LogicalSurface G4LogicalVolume* LogVolume; // Logical Volume pointer on side 1. - static std::vector theSurfaceTable; - // The static Table of Surfaces. + static G4LogicalSkinSurfaceTable theSkinSurfaceTable; + // The static Table of SkinSurfaces. }; -typedef std::vector G4LogicalSkinSurfaceTable; - // ******************************************************************** // Inline methods // ******************************************************************** diff --git a/source/geometry/volumes/include/G4LogicalSkinSurface.icc b/source/geometry/volumes/include/G4LogicalSkinSurface.icc index 40d1eebd63..1fe40a157c 100644 --- a/source/geometry/volumes/include/G4LogicalSkinSurface.icc +++ b/source/geometry/volumes/include/G4LogicalSkinSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4LogicalSkinSurface.icc,v 1.9 2006/06/29 18:57:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4LogicalSkinSurface inline implementation diff --git a/source/geometry/volumes/include/G4NavigationHistory.hh b/source/geometry/volumes/include/G4NavigationHistory.hh index 81e360690a..8447983704 100644 --- a/source/geometry/volumes/include/G4NavigationHistory.hh +++ b/source/geometry/volumes/include/G4NavigationHistory.hh @@ -25,7 +25,7 @@ // // // $Id: G4NavigationHistory.hh,v 1.13 2006/06/29 18:57:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4NavigationHistory // diff --git a/source/geometry/volumes/include/G4NavigationHistory.icc b/source/geometry/volumes/include/G4NavigationHistory.icc index c67bb3f917..a94cf48658 100644 --- a/source/geometry/volumes/include/G4NavigationHistory.icc +++ b/source/geometry/volumes/include/G4NavigationHistory.icc @@ -25,7 +25,7 @@ // // // $Id: G4NavigationHistory.icc,v 1.12 2006/06/29 18:57:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4NavigationHistory Inline implementation diff --git a/source/geometry/volumes/include/G4NavigationLevel.hh b/source/geometry/volumes/include/G4NavigationLevel.hh index aa6bf9309d..16d06abf2f 100644 --- a/source/geometry/volumes/include/G4NavigationLevel.hh +++ b/source/geometry/volumes/include/G4NavigationLevel.hh @@ -25,7 +25,7 @@ // // // $Id: G4NavigationLevel.hh,v 1.16 2006/06/29 18:57:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4NavigationLevel // diff --git a/source/geometry/volumes/include/G4NavigationLevel.icc b/source/geometry/volumes/include/G4NavigationLevel.icc index b991bbe82d..0ff82ca926 100644 --- a/source/geometry/volumes/include/G4NavigationLevel.icc +++ b/source/geometry/volumes/include/G4NavigationLevel.icc @@ -25,7 +25,7 @@ // // // $Id: G4NavigationLevel.icc,v 1.20 2006/06/29 18:57:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // 30.09.97 J.Apostolakis Initial version. // diff --git a/source/geometry/volumes/include/G4NavigationLevelRep.hh b/source/geometry/volumes/include/G4NavigationLevelRep.hh index 6662ae9188..a6ccce4958 100644 --- a/source/geometry/volumes/include/G4NavigationLevelRep.hh +++ b/source/geometry/volumes/include/G4NavigationLevelRep.hh @@ -25,7 +25,7 @@ // // // $Id: G4NavigationLevelRep.hh,v 1.9 2006/06/29 18:57:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4NavigationLevelRep // diff --git a/source/geometry/volumes/include/G4NavigationLevelRep.icc b/source/geometry/volumes/include/G4NavigationLevelRep.icc index acd6079290..f8d9957ade 100644 --- a/source/geometry/volumes/include/G4NavigationLevelRep.icc +++ b/source/geometry/volumes/include/G4NavigationLevelRep.icc @@ -25,7 +25,7 @@ // // // $Id: G4NavigationLevelRep.icc,v 1.14 2006/06/29 18:57:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // 1 October 1997 J.Apostolakis Initial version. // diff --git a/source/geometry/volumes/include/G4PVParameterised.hh b/source/geometry/volumes/include/G4PVParameterised.hh index e766ba14d7..fac9c99b89 100644 --- a/source/geometry/volumes/include/G4PVParameterised.hh +++ b/source/geometry/volumes/include/G4PVParameterised.hh @@ -25,7 +25,7 @@ // // // $Id: G4PVParameterised.hh,v 1.8 2007/04/11 07:56:38 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4PVParameterised diff --git a/source/geometry/volumes/include/G4PVPlacement.hh b/source/geometry/volumes/include/G4PVPlacement.hh index 4592fd69f8..d5f153102c 100644 --- a/source/geometry/volumes/include/G4PVPlacement.hh +++ b/source/geometry/volumes/include/G4PVPlacement.hh @@ -25,7 +25,7 @@ // // // $Id: G4PVPlacement.hh,v 1.8 2007/04/11 07:56:38 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4PVPlacement diff --git a/source/geometry/volumes/include/G4PVReplica.hh b/source/geometry/volumes/include/G4PVReplica.hh index 2464a3d567..7a14e6cf65 100644 --- a/source/geometry/volumes/include/G4PVReplica.hh +++ b/source/geometry/volumes/include/G4PVReplica.hh @@ -25,7 +25,7 @@ // // // $Id: G4PVReplica.hh,v 1.5 2006/06/29 18:57:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4PVReplica diff --git a/source/geometry/volumes/include/G4ReflectionFactory.hh b/source/geometry/volumes/include/G4ReflectionFactory.hh index 5ecf009df2..1b543784cb 100644 --- a/source/geometry/volumes/include/G4ReflectionFactory.hh +++ b/source/geometry/volumes/include/G4ReflectionFactory.hh @@ -25,7 +25,7 @@ // // // $Id: G4ReflectionFactory.hh,v 1.3 2006/06/29 18:57:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4ReflectionFactory diff --git a/source/geometry/volumes/include/G4TouchableHistory.hh b/source/geometry/volumes/include/G4TouchableHistory.hh index ab0a3bc1a0..78f50e65c7 100644 --- a/source/geometry/volumes/include/G4TouchableHistory.hh +++ b/source/geometry/volumes/include/G4TouchableHistory.hh @@ -25,7 +25,7 @@ // // // $Id: G4TouchableHistory.hh,v 1.8 2006/06/29 18:57:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4TouchableHistory diff --git a/source/geometry/volumes/include/G4TouchableHistory.icc b/source/geometry/volumes/include/G4TouchableHistory.icc index 9b28c966e6..d183a6d952 100644 --- a/source/geometry/volumes/include/G4TouchableHistory.icc +++ b/source/geometry/volumes/include/G4TouchableHistory.icc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4TouchableHistory.icc,v 1.9 2006/06/29 18:57:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4TouchableHistory.icc,v 1.10 2006/12/07 14:26:28 japost Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4TouchableHistory inline implementation @@ -37,6 +37,8 @@ G4TouchableHistory::G4TouchableHistory() ftlate(G4ThreeVector(0.,0.,0.)), fhistory() { + G4VPhysicalVolume* pPhysVol=0; + fhistory.SetFirstEntry(pPhysVol); } inline diff --git a/source/geometry/volumes/include/G4TouchableHistoryHandle.hh b/source/geometry/volumes/include/G4TouchableHistoryHandle.hh index f06036783e..b81ac7e828 100644 --- a/source/geometry/volumes/include/G4TouchableHistoryHandle.hh +++ b/source/geometry/volumes/include/G4TouchableHistoryHandle.hh @@ -25,7 +25,7 @@ // // // $Id: G4TouchableHistoryHandle.hh,v 1.6 2006/06/29 18:57:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class G4TouchableHistoryHandle // diff --git a/source/geometry/volumes/src/G4AssemblyVolume.cc b/source/geometry/volumes/src/G4AssemblyVolume.cc index bf665d1d35..eab8d6b97f 100644 --- a/source/geometry/volumes/src/G4AssemblyVolume.cc +++ b/source/geometry/volumes/src/G4AssemblyVolume.cc @@ -25,7 +25,7 @@ // // // $Id: G4AssemblyVolume.cc,v 1.10 2006/06/29 18:57:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class G4AssemblyVolume - implementation diff --git a/source/geometry/volumes/src/G4GRSSolid.cc b/source/geometry/volumes/src/G4GRSSolid.cc index ea2c551221..d3e4620bf8 100644 --- a/source/geometry/volumes/src/G4GRSSolid.cc +++ b/source/geometry/volumes/src/G4GRSSolid.cc @@ -25,7 +25,7 @@ // // // $Id: G4GRSSolid.cc,v 1.8 2006/06/29 18:57:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4GRSSolid Implementation diff --git a/source/geometry/volumes/src/G4GRSVolume.cc b/source/geometry/volumes/src/G4GRSVolume.cc index 4ebd02f5a7..e44b1fa630 100644 --- a/source/geometry/volumes/src/G4GRSVolume.cc +++ b/source/geometry/volumes/src/G4GRSVolume.cc @@ -25,7 +25,7 @@ // // // $Id: G4GRSVolume.cc,v 1.8 2006/06/29 18:57:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4GRSVolume Implementation diff --git a/source/geometry/volumes/src/G4LogicalBorderSurface.cc b/source/geometry/volumes/src/G4LogicalBorderSurface.cc index eab9645c2d..cb7beaa25e 100644 --- a/source/geometry/volumes/src/G4LogicalBorderSurface.cc +++ b/source/geometry/volumes/src/G4LogicalBorderSurface.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4LogicalBorderSurface.cc,v 1.14 2006/06/29 18:57:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4LogicalBorderSurface.cc,v 1.15 2007/10/12 20:15:23 gum Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // G4LogicalBorderSurface Implementation @@ -110,8 +110,7 @@ G4LogicalBorderSurface::operator!=(const G4LogicalBorderSurface &right) const // Methods // -const std::vector * -G4LogicalBorderSurface::GetSurfaceTable() +const G4LogicalBorderSurfaceTable* G4LogicalBorderSurface::GetSurfaceTable() { return &theBorderSurfaceTable; } @@ -143,8 +142,11 @@ void G4LogicalBorderSurface::DumpInfo() for (size_t i=0; iGetName() << " : " << G4endl - << " Surface type = " << theBorderSurfaceTable[i]->GetName() + G4LogicalBorderSurface* pBorderSurface = theBorderSurfaceTable[i]; + G4cout << pBorderSurface->GetName() << " : " << G4endl + << " Border of volumes " + << pBorderSurface->GetVolume1()->GetName() << " and " + << pBorderSurface->GetVolume2()->GetName() << G4endl; } G4cout << G4endl; @@ -152,7 +154,7 @@ void G4LogicalBorderSurface::DumpInfo() void G4LogicalBorderSurface::CleanSurfaceTable() { - std::vector::iterator pos; + G4LogicalBorderSurfaceTable::iterator pos; for(pos=theBorderSurfaceTable.begin(); pos!=theBorderSurfaceTable.end(); pos++) { diff --git a/source/geometry/volumes/src/G4LogicalSkinSurface.cc b/source/geometry/volumes/src/G4LogicalSkinSurface.cc index 019e70e60c..97b9e8217e 100644 --- a/source/geometry/volumes/src/G4LogicalSkinSurface.cc +++ b/source/geometry/volumes/src/G4LogicalSkinSurface.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4LogicalSkinSurface.cc,v 1.13 2006/06/29 18:57:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4LogicalSkinSurface.cc,v 1.14 2007/10/12 20:17:27 gum Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // G4LogicalSkinSurface Implementation @@ -40,10 +40,9 @@ // ---------------------------------------------------------------------- #include "G4LogicalSkinSurface.hh" -#include "G4ios.hh" #include "G4LogicalVolume.hh" -G4LogicalSkinSurfaceTable G4LogicalSkinSurface::theSurfaceTable; +G4LogicalSkinSurfaceTable G4LogicalSkinSurface::theSkinSurfaceTable; // // Constructors & destructor @@ -57,7 +56,7 @@ G4LogicalSkinSurface::G4LogicalSkinSurface(const G4String& name, { // Store in the table of Surfaces // - theSurfaceTable.push_back(this); + theSkinSurfaceTable.push_back(this); } G4LogicalSkinSurface::G4LogicalSkinSurface(const G4LogicalSkinSurface& right) @@ -65,7 +64,7 @@ G4LogicalSkinSurface::G4LogicalSkinSurface(const G4LogicalSkinSurface& right) { SetTransitionRadiationSurface(right.GetTransitionRadiationSurface()); LogVolume = right.LogVolume; - theSurfaceTable = right.theSurfaceTable; + theSkinSurfaceTable = right.theSkinSurfaceTable; } G4LogicalSkinSurface::~G4LogicalSkinSurface() @@ -86,7 +85,7 @@ G4LogicalSkinSurface::operator=(const G4LogicalSkinSurface& right) SetName(right.GetName()); SetTransitionRadiationSurface(right.GetTransitionRadiationSurface()); LogVolume = right.LogVolume; - theSurfaceTable = right.theSurfaceTable; + theSkinSurfaceTable = right.theSkinSurfaceTable; } return *this; } @@ -107,18 +106,23 @@ G4LogicalSkinSurface::operator!=(const G4LogicalSkinSurface& right) const // Methods // +const G4LogicalSkinSurfaceTable* G4LogicalSkinSurface::GetSurfaceTable() +{ + return &theSkinSurfaceTable; +} + size_t G4LogicalSkinSurface::GetNumberOfSkinSurfaces() { - return theSurfaceTable.size(); + return theSkinSurfaceTable.size(); } G4LogicalSkinSurface* G4LogicalSkinSurface::GetSurface(const G4LogicalVolume* vol) { - for (size_t i=0; iGetLogicalVolume() == vol) - return theSurfaceTable[i]; + if(theSkinSurfaceTable[i]->GetLogicalVolume() == vol) + return theSkinSurfaceTable[i]; } return NULL; } @@ -127,13 +131,13 @@ G4LogicalSkinSurface::GetSurface(const G4LogicalVolume* vol) // void G4LogicalSkinSurface::DumpInfo() { - G4cout << "***** Surface Table : Nb of Surfaces = " + G4cout << "***** Skin Surface Table : Nb of Surfaces = " << GetNumberOfSkinSurfaces() << " *****" << G4endl; - for (size_t i=0; iGetName() << " : " << G4endl + G4LogicalSkinSurface* pSkinSurface = theSkinSurfaceTable[i]; + G4cout << pSkinSurface->GetName() << " : " << G4endl << " Skin of logical volume " << pSkinSurface->GetLogicalVolume()->GetName() << G4endl; @@ -143,10 +147,10 @@ void G4LogicalSkinSurface::DumpInfo() void G4LogicalSkinSurface::CleanSurfaceTable() { - std::vector::iterator pos; - for(pos=theSurfaceTable.begin(); pos!=theSurfaceTable.end(); pos++) + G4LogicalSkinSurfaceTable::iterator pos; + for(pos=theSkinSurfaceTable.begin(); pos!=theSkinSurfaceTable.end(); pos++) { if (*pos) delete *pos; } - theSurfaceTable.clear(); + theSkinSurfaceTable.clear(); } diff --git a/source/geometry/volumes/src/G4NavigationHistory.cc b/source/geometry/volumes/src/G4NavigationHistory.cc index 2825cec76a..87e7a1021e 100644 --- a/source/geometry/volumes/src/G4NavigationHistory.cc +++ b/source/geometry/volumes/src/G4NavigationHistory.cc @@ -25,7 +25,7 @@ // // // $Id: G4NavigationHistory.cc,v 1.10 2006/06/29 18:58:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4NavigationHistory Implementation diff --git a/source/geometry/volumes/src/G4NavigationLevel.cc b/source/geometry/volumes/src/G4NavigationLevel.cc index b7137d2035..6719b0d00d 100644 --- a/source/geometry/volumes/src/G4NavigationLevel.cc +++ b/source/geometry/volumes/src/G4NavigationLevel.cc @@ -25,7 +25,7 @@ // // // $Id: G4NavigationLevel.cc,v 1.4 2006/06/29 18:58:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // 30.09.97 J.Apostolakis Initial version. // diff --git a/source/geometry/volumes/src/G4NavigationLevelRep.cc b/source/geometry/volumes/src/G4NavigationLevelRep.cc index 31c7545427..bcf69f1bfa 100644 --- a/source/geometry/volumes/src/G4NavigationLevelRep.cc +++ b/source/geometry/volumes/src/G4NavigationLevelRep.cc @@ -25,7 +25,7 @@ // // // $Id: G4NavigationLevelRep.cc,v 1.2 2006/06/29 18:58:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // 1 October 1997 J.Apostolakis Initial version. // diff --git a/source/geometry/volumes/src/G4PVParameterised.cc b/source/geometry/volumes/src/G4PVParameterised.cc index eaf76dde6d..8b6c7d4e46 100644 --- a/source/geometry/volumes/src/G4PVParameterised.cc +++ b/source/geometry/volumes/src/G4PVParameterised.cc @@ -25,7 +25,7 @@ // // // $Id: G4PVParameterised.cc,v 1.10 2007/04/11 07:56:38 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4PVParameterised diff --git a/source/geometry/volumes/src/G4PVPlacement.cc b/source/geometry/volumes/src/G4PVPlacement.cc index c3d5d723a3..61c6262400 100644 --- a/source/geometry/volumes/src/G4PVPlacement.cc +++ b/source/geometry/volumes/src/G4PVPlacement.cc @@ -25,7 +25,7 @@ // // // $Id: G4PVPlacement.cc,v 1.16 2007/04/11 07:56:38 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4PVPlacement Implementation diff --git a/source/geometry/volumes/src/G4PVReplica.cc b/source/geometry/volumes/src/G4PVReplica.cc index 976c2cd044..7b096600d4 100644 --- a/source/geometry/volumes/src/G4PVReplica.cc +++ b/source/geometry/volumes/src/G4PVReplica.cc @@ -25,7 +25,7 @@ // // // $Id: G4PVReplica.cc,v 1.7 2006/06/29 18:58:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4PVReplica Implementation diff --git a/source/geometry/volumes/src/G4ReflectionFactory.cc b/source/geometry/volumes/src/G4ReflectionFactory.cc index de543f0ed9..39581a6c68 100644 --- a/source/geometry/volumes/src/G4ReflectionFactory.cc +++ b/source/geometry/volumes/src/G4ReflectionFactory.cc @@ -25,7 +25,7 @@ // // // $Id: G4ReflectionFactory.cc,v 1.6 2007/05/11 13:58:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class G4ReflectionFactory Implementation diff --git a/source/geometry/volumes/src/G4TouchableHistory.cc b/source/geometry/volumes/src/G4TouchableHistory.cc index e75178c5e7..80c8799ac4 100644 --- a/source/geometry/volumes/src/G4TouchableHistory.cc +++ b/source/geometry/volumes/src/G4TouchableHistory.cc @@ -25,7 +25,7 @@ // // // $Id: G4TouchableHistory.cc,v 1.12 2006/06/29 18:58:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4TouchableHistory Implementation diff --git a/source/global/HEPGeometry/include/G4LorentzRotation.hh b/source/global/HEPGeometry/include/G4LorentzRotation.hh index 3e88f1dc18..e64f130627 100644 --- a/source/global/HEPGeometry/include/G4LorentzRotation.hh +++ b/source/global/HEPGeometry/include/G4LorentzRotation.hh @@ -25,7 +25,7 @@ // // // $Id: G4LorentzRotation.hh,v 1.5 2006/06/29 18:59:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4LorentzRotation_hh #define G4LorentzRotation_hh diff --git a/source/global/HEPGeometry/include/G4LorentzVector.hh b/source/global/HEPGeometry/include/G4LorentzVector.hh index c724eb9714..7f337f633a 100644 --- a/source/global/HEPGeometry/include/G4LorentzVector.hh +++ b/source/global/HEPGeometry/include/G4LorentzVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4LorentzVector.hh,v 1.5 2006/06/29 18:59:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4LorentzVector_hh #define G4LorentzVector_hh diff --git a/source/global/HEPGeometry/include/G4Normal3D.hh b/source/global/HEPGeometry/include/G4Normal3D.hh index e398788036..5c36e51bfe 100644 --- a/source/global/HEPGeometry/include/G4Normal3D.hh +++ b/source/global/HEPGeometry/include/G4Normal3D.hh @@ -25,7 +25,7 @@ // // // $Id: G4Normal3D.hh,v 1.5 2006/06/29 18:59:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NORMAL3D_HH #define G4NORMAL3D_HH diff --git a/source/global/HEPGeometry/include/G4Plane3D.hh b/source/global/HEPGeometry/include/G4Plane3D.hh index 7dd73727cb..294a8d16db 100644 --- a/source/global/HEPGeometry/include/G4Plane3D.hh +++ b/source/global/HEPGeometry/include/G4Plane3D.hh @@ -25,7 +25,7 @@ // // // $Id: G4Plane3D.hh,v 1.5 2006/06/29 18:59:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4PLANE3D_HH #define G4PLANE3D_HH diff --git a/source/global/HEPGeometry/include/G4Point3D.hh b/source/global/HEPGeometry/include/G4Point3D.hh index 302d887c4c..764eb8638d 100644 --- a/source/global/HEPGeometry/include/G4Point3D.hh +++ b/source/global/HEPGeometry/include/G4Point3D.hh @@ -25,7 +25,7 @@ // // // $Id: G4Point3D.hh,v 1.5 2006/06/29 18:59:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4POINT3D_HH #define G4POINT3D_HH diff --git a/source/global/HEPGeometry/include/G4Transform3D.hh b/source/global/HEPGeometry/include/G4Transform3D.hh index d9f5b472bb..eef4e365bd 100644 --- a/source/global/HEPGeometry/include/G4Transform3D.hh +++ b/source/global/HEPGeometry/include/G4Transform3D.hh @@ -25,7 +25,7 @@ // // // $Id: G4Transform3D.hh,v 1.5 2006/06/29 18:59:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4TRANSFORM3D_HH #define G4TRANSFORM3D_HH diff --git a/source/global/HEPGeometry/include/G4Vector3D.hh b/source/global/HEPGeometry/include/G4Vector3D.hh index e3c337003b..0a21b5bd95 100644 --- a/source/global/HEPGeometry/include/G4Vector3D.hh +++ b/source/global/HEPGeometry/include/G4Vector3D.hh @@ -25,7 +25,7 @@ // // // $Id: G4Vector3D.hh,v 1.5 2006/06/29 18:59:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VECTOR3D_HH #define G4VECTOR3D_HH diff --git a/source/global/HEPGeometry/include/geomdefs.hh b/source/global/HEPGeometry/include/geomdefs.hh index 669a2f50c2..05e8059c87 100644 --- a/source/global/HEPGeometry/include/geomdefs.hh +++ b/source/global/HEPGeometry/include/geomdefs.hh @@ -25,7 +25,7 @@ // // // $Id: geomdefs.hh,v 1.8 2007/05/18 07:21:39 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/HEPNumerics/include/G4AnalyticalPolSolver.hh b/source/global/HEPNumerics/include/G4AnalyticalPolSolver.hh index f8739df051..39ffed0da0 100644 --- a/source/global/HEPNumerics/include/G4AnalyticalPolSolver.hh +++ b/source/global/HEPNumerics/include/G4AnalyticalPolSolver.hh @@ -25,7 +25,7 @@ // // // $Id: G4AnalyticalPolSolver.hh,v 1.5 2006/06/29 18:59:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4ChebyshevApproximation.hh b/source/global/HEPNumerics/include/G4ChebyshevApproximation.hh index 556885b923..c94399466e 100644 --- a/source/global/HEPNumerics/include/G4ChebyshevApproximation.hh +++ b/source/global/HEPNumerics/include/G4ChebyshevApproximation.hh @@ -25,7 +25,7 @@ // // // $Id: G4ChebyshevApproximation.hh,v 1.6 2006/06/29 18:59:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4DataInterpolation.hh b/source/global/HEPNumerics/include/G4DataInterpolation.hh index e0d8a98f71..eacaedd276 100644 --- a/source/global/HEPNumerics/include/G4DataInterpolation.hh +++ b/source/global/HEPNumerics/include/G4DataInterpolation.hh @@ -25,7 +25,7 @@ // // // $Id: G4DataInterpolation.hh,v 1.5 2006/06/29 18:59:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4GaussChebyshevQ.hh b/source/global/HEPNumerics/include/G4GaussChebyshevQ.hh index a2eb6e196f..be264bdad8 100644 --- a/source/global/HEPNumerics/include/G4GaussChebyshevQ.hh +++ b/source/global/HEPNumerics/include/G4GaussChebyshevQ.hh @@ -25,7 +25,7 @@ // // // $Id: G4GaussChebyshevQ.hh,v 1.5 2006/06/29 18:59:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4GaussHermiteQ.hh b/source/global/HEPNumerics/include/G4GaussHermiteQ.hh index 9e3edafcb5..365f7605f3 100644 --- a/source/global/HEPNumerics/include/G4GaussHermiteQ.hh +++ b/source/global/HEPNumerics/include/G4GaussHermiteQ.hh @@ -25,7 +25,7 @@ // // // $Id: G4GaussHermiteQ.hh,v 1.6 2006/06/29 18:59:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4GaussJacobiQ.hh b/source/global/HEPNumerics/include/G4GaussJacobiQ.hh index 03a5ba11a3..2be4b0c937 100644 --- a/source/global/HEPNumerics/include/G4GaussJacobiQ.hh +++ b/source/global/HEPNumerics/include/G4GaussJacobiQ.hh @@ -25,7 +25,7 @@ // // // $Id: G4GaussJacobiQ.hh,v 1.5 2006/06/29 18:59:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4GaussLaguerreQ.hh b/source/global/HEPNumerics/include/G4GaussLaguerreQ.hh index cd480ead6f..08e5703945 100644 --- a/source/global/HEPNumerics/include/G4GaussLaguerreQ.hh +++ b/source/global/HEPNumerics/include/G4GaussLaguerreQ.hh @@ -25,7 +25,7 @@ // // // $Id: G4GaussLaguerreQ.hh,v 1.6 2006/06/29 18:59:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4GaussLegendreQ.hh b/source/global/HEPNumerics/include/G4GaussLegendreQ.hh index 63e63b3f27..9aff46f4d3 100644 --- a/source/global/HEPNumerics/include/G4GaussLegendreQ.hh +++ b/source/global/HEPNumerics/include/G4GaussLegendreQ.hh @@ -25,7 +25,7 @@ // // // $Id: G4GaussLegendreQ.hh,v 1.6 2006/06/29 18:59:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4Integrator.hh b/source/global/HEPNumerics/include/G4Integrator.hh index db7df09ba7..6d1e8d87c4 100644 --- a/source/global/HEPNumerics/include/G4Integrator.hh +++ b/source/global/HEPNumerics/include/G4Integrator.hh @@ -25,7 +25,7 @@ // // // $Id: G4Integrator.hh,v 1.7 2006/06/29 18:59:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4Integrator.icc b/source/global/HEPNumerics/include/G4Integrator.icc index 39892ca3e6..047c419aa0 100644 --- a/source/global/HEPNumerics/include/G4Integrator.icc +++ b/source/global/HEPNumerics/include/G4Integrator.icc @@ -25,7 +25,7 @@ // // // $Id: G4Integrator.icc,v 1.13 2006/06/29 18:59:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Implementation of G4Integrator methods. // diff --git a/source/global/HEPNumerics/include/G4JTPolynomialSolver.hh b/source/global/HEPNumerics/include/G4JTPolynomialSolver.hh index 148cac8226..b3f0724b9f 100644 --- a/source/global/HEPNumerics/include/G4JTPolynomialSolver.hh +++ b/source/global/HEPNumerics/include/G4JTPolynomialSolver.hh @@ -25,7 +25,7 @@ // // // $Id: G4JTPolynomialSolver.hh,v 1.6 2006/06/29 18:59:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4PolynomialSolver.hh b/source/global/HEPNumerics/include/G4PolynomialSolver.hh index f79ddc37db..b2ceb17518 100644 --- a/source/global/HEPNumerics/include/G4PolynomialSolver.hh +++ b/source/global/HEPNumerics/include/G4PolynomialSolver.hh @@ -25,7 +25,7 @@ // // // $Id: G4PolynomialSolver.hh,v 1.4 2006/06/29 18:59:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4PolynomialSolver // diff --git a/source/global/HEPNumerics/include/G4PolynomialSolver.icc b/source/global/HEPNumerics/include/G4PolynomialSolver.icc index 82680bf66d..331dc95b23 100644 --- a/source/global/HEPNumerics/include/G4PolynomialSolver.icc +++ b/source/global/HEPNumerics/include/G4PolynomialSolver.icc @@ -25,7 +25,7 @@ // // // $Id: G4PolynomialSolver.icc,v 1.8 2006/06/29 18:59:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4PolynomialSolver // diff --git a/source/global/HEPNumerics/include/G4SimpleIntegration.hh b/source/global/HEPNumerics/include/G4SimpleIntegration.hh index 8985f9ef0b..4f61234c20 100644 --- a/source/global/HEPNumerics/include/G4SimpleIntegration.hh +++ b/source/global/HEPNumerics/include/G4SimpleIntegration.hh @@ -25,7 +25,7 @@ // // // $Id: G4SimpleIntegration.hh,v 1.6 2006/06/29 18:59:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4SimplexDownhill.hh b/source/global/HEPNumerics/include/G4SimplexDownhill.hh index e9c9c32da3..23b5715623 100644 --- a/source/global/HEPNumerics/include/G4SimplexDownhill.hh +++ b/source/global/HEPNumerics/include/G4SimplexDownhill.hh @@ -25,7 +25,7 @@ // // // $Id: G4SimplexDownhill.hh,v 1.3 2007/06/21 15:04:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4SimplexDownhill.icc b/source/global/HEPNumerics/include/G4SimplexDownhill.icc index 4712bc2418..6779691052 100644 --- a/source/global/HEPNumerics/include/G4SimplexDownhill.icc +++ b/source/global/HEPNumerics/include/G4SimplexDownhill.icc @@ -25,7 +25,7 @@ // // // $Id: G4SimplexDownhill.icc,v 1.2 2007/05/11 13:05:53 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Tatsumi Koi (SLAC/SCCS), 2007 // -------------------------------------------------------------------------- diff --git a/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh b/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh index efb6574ebc..5fad0c2e04 100644 --- a/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh +++ b/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh @@ -25,7 +25,7 @@ // // // $Id: G4VGaussianQuadrature.hh,v 1.7 2006/06/29 18:59:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class description: // diff --git a/source/global/HEPNumerics/src/G4AnalyticalPolSolver.cc b/source/global/HEPNumerics/src/G4AnalyticalPolSolver.cc index 81ec2a0c83..99d0dc5e90 100644 --- a/source/global/HEPNumerics/src/G4AnalyticalPolSolver.cc +++ b/source/global/HEPNumerics/src/G4AnalyticalPolSolver.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4AnalyticalPolSolver.cc,v 1.6 2006/06/29 19:00:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4AnalyticalPolSolver.cc,v 1.7 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "globals.hh" @@ -85,7 +85,7 @@ G4int G4AnalyticalPolSolver::QuadRoots( G4double p[5], G4double r[3][5] ) G4int G4AnalyticalPolSolver::CubicRoots( G4double p[5], G4double r[3][5] ) { - G4double s,t,b,c,d; + G4double x,t,b,c,d; G4int k; if( p[0] != 1. ) @@ -93,9 +93,9 @@ G4int G4AnalyticalPolSolver::CubicRoots( G4double p[5], G4double r[3][5] ) for(k = 1; k < 4; k++ ) { p[k] = p[k]/p[0]; } p[0] = 1.; } - s = p[1]/3.0; - t = s*p[1]; - b = 0.5*( s*( t/1.5 - p[2] ) + p[3] ); + x = p[1]/3.0; + t = x*p[1]; + b = 0.5*( x*( t/1.5 - p[2] ) + p[3] ); t = ( t - p[2] )/3.0; c = t*t*t; d = b*b - c; @@ -113,19 +113,19 @@ G4int G4AnalyticalPolSolver::CubicRoots( G4double p[5], G4double r[3][5] ) d = std::sqrt(0.75)*(b - c); r[2][2] = d; b = b + c; - c = -0.5*b-s; + c = -0.5*b-x; r[1][2] = c; - if( ( b > 0. && s <= 0. ) || ( b < 0. && s > 0. ) ) + if( ( b > 0. && x <= 0. ) || ( b < 0. && x > 0. ) ) { r[1][1] = c; r[2][1] = -d; - r[1][3] = b - s; + r[1][3] = b - x; r[2][3] = 0; } else { - r[1][1] = b - s; + r[1][1] = b - x; r[2][1] = 0.; r[1][3] = c; r[2][3] = -d; @@ -141,9 +141,9 @@ G4int G4AnalyticalPolSolver::CubicRoots( G4double p[5], G4double r[3][5] ) c = std::cos(d)*b; t = -std::sqrt(0.75)*std::sin(d)*b - 0.5*c; - d = -t - c - s; - c = c - s; - t = t - s; + d = -t - c - x; + c = c - x; + t = t - x; if( std::fabs(c) > std::fabs(t) ) { r[1][3] = c; } else diff --git a/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc b/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc index d367a6fb53..8e340ac051 100644 --- a/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc +++ b/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ChebyshevApproximation.cc,v 1.6 2006/06/29 19:00:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ChebyshevApproximation.cc,v 1.7 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4ChebyshevApproximation.hh" @@ -71,20 +71,20 @@ G4ChebyshevApproximation::G4ChebyshevApproximation( function pFunction, // -------------------------------------------------------------------- // -// Constructor for creation of Chebyshev coefficients for m-derivative -// from pFunction. The value of m ! MUST BE ! < n , because the result -// array of fChebyshevCof will be of (n-m) size. The values a and b +// Constructor for creation of Chebyshev coefficients for mx-derivative +// from pFunction. The value of mx ! MUST BE ! < nx , because the result +// array of fChebyshevCof will be of (nx-mx) size. The values a and b // fix the interval of validity of the Chebyshev approximation. G4ChebyshevApproximation:: G4ChebyshevApproximation( function pFunction, - G4int n, G4int m, + G4int nx, G4int mx, G4double a, G4double b ) - : fFunction(pFunction), fNumber(n), + : fFunction(pFunction), fNumber(nx), fChebyshevCof(new G4double[fNumber]), fMean(0.5*(b+a)), fDiff(0.5*(b-a)) { - if(n <= m) + if(nx <= mx) { G4Exception("G4ChebyshevApproximation::G4ChebyshevApproximation()", "InvalidCall", FatalException, "Invalid arguments !") ; @@ -93,7 +93,7 @@ G4ChebyshevApproximation( function pFunction, G4double rootSum = 0.0, cofj=0.0; G4double* tempFunction = new G4double[fNumber] ; G4double weight = 2.0/fNumber ; - G4double cof = 0.5*weight*pi ; // pi/n + G4double cof = 0.5*weight*pi ; // pi/nx for (i=0;i tolerance) ; + while(std::fabs(newton0 - newton1) > tolerance) ; - fAbscissa[fNumber-i] = newton ; - fWeight[fNumber-i] = 2.0/((1.0 - newton*newton)*temp*temp) ; + fAbscissa[fNumber-i] = newton0 ; + fWeight[fNumber-i] = 2.0/((1.0 - newton0*newton0)*temp*temp) ; } } diff --git a/source/global/HEPNumerics/src/G4JTPolynomialSolver.cc b/source/global/HEPNumerics/src/G4JTPolynomialSolver.cc index 4c91afeb75..538d2f78bb 100644 --- a/source/global/HEPNumerics/src/G4JTPolynomialSolver.cc +++ b/source/global/HEPNumerics/src/G4JTPolynomialSolver.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4JTPolynomialSolver.cc,v 1.5 2006/06/29 19:00:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4JTPolynomialSolver.cc,v 1.6 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class source file @@ -52,7 +52,7 @@ G4JTPolynomialSolver::~G4JTPolynomialSolver() { } -G4int G4JTPolynomialSolver::FindRoots(G4double *op, G4int degree, +G4int G4JTPolynomialSolver::FindRoots(G4double *op, G4int degr, G4double *zeror, G4double *zeroi) { G4double t=0.0, aa=0.0, bb=0.0, cc=0.0, factor=1.0; @@ -67,7 +67,7 @@ G4int G4JTPolynomialSolver::FindRoots(G4double *op, G4int degree, rot = 94.0*deg; G4double cosr = std::cos(rot), sinr = std::sin(rot); - n = degree; + n = degr; // Algorithm fails if the leading coefficient is zero. // @@ -77,7 +77,7 @@ G4int G4JTPolynomialSolver::FindRoots(G4double *op, G4int degree, // while (!(op[n] != 0.0)) { - j = degree - n; + j = degr - n; zeror[j] = 0.0; zeroi[j] = 0.0; n--; @@ -86,14 +86,14 @@ G4int G4JTPolynomialSolver::FindRoots(G4double *op, G4int degree, // Allocate buffers here // - std::vector temp(degree+1) ; - std::vector pt(degree+1) ; + std::vector temp(degr+1) ; + std::vector pt(degr+1) ; - p.assign(degree+1,0) ; - qp.assign(degree+1,0) ; - k.assign(degree+1,0) ; - qk.assign(degree+1,0) ; - svk.assign(degree+1,0) ; + p.assign(degr+1,0) ; + qp.assign(degr+1,0) ; + k.assign(degr+1,0) ; + qk.assign(degr+1,0) ; + svk.assign(degr+1,0) ; // Make a copy of the coefficients. // @@ -104,17 +104,17 @@ G4int G4JTPolynomialSolver::FindRoots(G4double *op, G4int degree, { if (n == 1) // Start the algorithm for one zero. { - zeror[degree-1] = -p[1]/p[0]; - zeroi[degree-1] = 0.0; + zeror[degr-1] = -p[1]/p[0]; + zeroi[degr-1] = 0.0; n -= 1; - return degree - n ; + return degr - n ; } if (n == 2) // Calculate the final zero or pair of zeros. { - Quadratic(p[0],p[1],p[2],&zeror[degree-2],&zeroi[degree-2], - &zeror[degree-1],&zeroi[degree-1]); + Quadratic(p[0],p[1],p[2],&zeror[degr-2],&zeroi[degr-2], + &zeror[degr-1],&zeroi[degr-1]); n -= 2; - return degree - n ; + return degr - n ; } // Find largest and smallest moduli of coefficients. @@ -268,7 +268,7 @@ G4int G4JTPolynomialSolver::FindRoots(G4double *op, G4int degree, // Deflate the polynomial, store the zero or zeros and // return to the main algorithm. // - j = degree - n; + j = degr - n; zeror[j] = szr; zeroi[j] = szi; n -= nz; @@ -297,7 +297,7 @@ G4int G4JTPolynomialSolver::FindRoots(G4double *op, G4int degree, // Return with failure if no convergence with 20 shifts. // - return degree - n; + return degr - n; } void G4JTPolynomialSolver::ComputeFixedShiftPolynomial(G4int l2, G4int *nz) @@ -306,7 +306,7 @@ void G4JTPolynomialSolver::ComputeFixedShiftPolynomial(G4int l2, G4int *nz) // in the linear or quadratic case. Initiates one of the variable shift // iterations and returns with the number of zeros found. - G4double svu=0.0, svv=0.0, ui=0.0, vi=0.0, s=0.0; + G4double svu=0.0, svv=0.0, ui=0.0, vi=0.0, xs=0.0; G4double betas=0.25, betav=0.25, oss=sr, ovv=v, ss=0.0, vv=0.0, ts=1.0, tv=1.0; G4double ots=0.0, otv=0.0; @@ -328,7 +328,7 @@ void G4JTPolynomialSolver::ComputeFixedShiftPolynomial(G4int l2, G4int *nz) ComputeNewEstimate(type,&ui,&vi); vv = vi; - // Estimate s. + // Estimate xs. // ss = 0.0; if (k[n-1] != 0.0) { ss = -p[n]/k[n-1]; } @@ -343,7 +343,7 @@ void G4JTPolynomialSolver::ComputeFixedShiftPolynomial(G4int l2, G4int *nz) continue; } - // Compute relative measures of convergence of s and v sequences. + // Compute relative measures of convergence of xs and v sequences. // if (vv != 0.0) { tv = std::fabs((vv-ovv)/vv); } if (ss != 0.0) { ts = std::fabs((ss-oss)/ss); } @@ -375,7 +375,7 @@ void G4JTPolynomialSolver::ComputeFixedShiftPolynomial(G4int l2, G4int *nz) { svk[i] = k[i]; } - s = ss; + xs = ss; // Choose iteration according to the fastest converging sequence. // @@ -383,7 +383,7 @@ void G4JTPolynomialSolver::ComputeFixedShiftPolynomial(G4int l2, G4int *nz) stry = 0; if (spass && (!vpass) || tss < tvv) { - RealPolynomialIteration(&s,nz,&iflag); + RealPolynomialIteration(&xs,nz,&iflag); if (*nz > 0) { return; } // Linear iteration has failed. Flag that it has been @@ -396,8 +396,8 @@ void G4JTPolynomialSolver::ComputeFixedShiftPolynomial(G4int l2, G4int *nz) // If linear iteration signals an almost double real // zero attempt quadratic iteration. // - ui = -(s+s); - vi = s*s; + ui = -(xs+xs); + vi = xs*xs; } _quadratic_iteration: @@ -421,7 +421,7 @@ _quadratic_iteration: { k[i] = svk[i]; } - RealPolynomialIteration(&s,nz,&iflag); + RealPolynomialIteration(&xs,nz,&iflag); if (*nz > 0) { return; } // Linear iteration has failed. Flag that it has been @@ -434,8 +434,8 @@ _quadratic_iteration: // If linear iteration signals an almost double real // zero attempt quadratic iteration. // - ui = -(s+s); - vi = s*s; + ui = -(xs+xs); + vi = xs*xs; } while (iflag != 0); @@ -582,8 +582,8 @@ RealPolynomialIteration(G4double *sss, G4int *nz, G4int *iflag) G4double t=0.; G4double omp=0.; - G4double pv=0.0, kv=0.0, s= *sss; - G4double ms=0.0, mp=0.0, ee=0.0; + G4double pv=0.0, kv=0.0, xs= *sss; + G4double mx=0.0, mp=0.0, ee=0.0; G4int i=1, j=0; *nz = 0; @@ -595,23 +595,23 @@ RealPolynomialIteration(G4double *sss, G4int *nz, G4int *iflag) { pv = p[0]; - // Evaluate p at s. + // Evaluate p at xs. // qp[0] = pv; for (i=1;i<=n;i++) { - pv = pv*s + p[i]; + pv = pv*xs + p[i]; qp[i] = pv; } mp = std::fabs(pv); // Compute a rigorous bound on the error in evaluating p. // - ms = std::fabs(s); + mx = std::fabs(xs); ee = (mre/(are+mre))*std::fabs(qp[0]); for (i=1;i<=n;i++) { - ee = ee*ms + std::fabs(qp[i]); + ee = ee*mx + std::fabs(qp[i]); } // Iteration has converged sufficiently if the polynomial @@ -620,7 +620,7 @@ RealPolynomialIteration(G4double *sss, G4int *nz, G4int *iflag) if (mp <= 20.0*((are+mre)*ee-mre*mp)) { *nz = 1; - szr = s; + szr = xs; szi = 0.0; return; } @@ -631,13 +631,13 @@ RealPolynomialIteration(G4double *sss, G4int *nz, G4int *iflag) if (j > 10) { return; } if (j >= 2) { - if (!(std::fabs(t) > 0.001*std::fabs(s-t) || mp < omp)) + if (!(std::fabs(t) > 0.001*std::fabs(xs-t) || mp < omp)) { // A cluster of zeros near the real axis has been encountered. // Return with iflag set to initiate a quadratic iteration. // *iflag = 1; - *sss = s; + *sss = xs; return; } // Return if the polynomial value has increased significantly. } @@ -650,7 +650,7 @@ RealPolynomialIteration(G4double *sss, G4int *nz, G4int *iflag) qk[0] = kv; for (i=1;i std::fabs(k[n-1]*10.0*eta)) { t = -pv/kv; } - s += t; + xs += t; } } diff --git a/source/global/HEPNumerics/src/G4SimpleIntegration.cc b/source/global/HEPNumerics/src/G4SimpleIntegration.cc index 98d6caa7ea..325d9e1fc4 100644 --- a/source/global/HEPNumerics/src/G4SimpleIntegration.cc +++ b/source/global/HEPNumerics/src/G4SimpleIntegration.cc @@ -25,7 +25,7 @@ // // // $Id: G4SimpleIntegration.cc,v 1.7 2006/06/29 19:00:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Implementation file for simple integration methods // diff --git a/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc b/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc index c8760a5ae7..dc32649533 100644 --- a/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc +++ b/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc @@ -25,7 +25,7 @@ // // // $Id: G4VGaussianQuadrature.cc,v 1.7 2006/06/29 19:00:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Implementation file for G4VGaussianQuadrature virtual base class // diff --git a/source/global/HEPRandom/include/G4Poisson.hh b/source/global/HEPRandom/include/G4Poisson.hh index f74ebf9e02..d3332c7e47 100644 --- a/source/global/HEPRandom/include/G4Poisson.hh +++ b/source/global/HEPRandom/include/G4Poisson.hh @@ -25,7 +25,7 @@ // // // $Id: G4Poisson.hh,v 1.9 2006/06/29 19:00:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/global/HEPRandom/include/G4RandomDirection.hh b/source/global/HEPRandom/include/G4RandomDirection.hh index 3fb8bbec6e..f868c3f41e 100644 --- a/source/global/HEPRandom/include/G4RandomDirection.hh +++ b/source/global/HEPRandom/include/G4RandomDirection.hh @@ -25,7 +25,7 @@ // // // $Id: G4RandomDirection.hh,v 1.3 2006/06/29 19:00:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/global/HEPRandom/include/Randomize.hh b/source/global/HEPRandom/include/Randomize.hh index 5f36955dc8..e44a6f14fb 100644 --- a/source/global/HEPRandom/include/Randomize.hh +++ b/source/global/HEPRandom/include/Randomize.hh @@ -25,7 +25,7 @@ // // // $Id: Randomize.hh,v 1.7 2006/06/29 19:00:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef randomize_h #define randomize_h 1 diff --git a/source/global/History b/source/global/History index 7a28c96ebe..a1b2d29692 100644 --- a/source/global/History +++ b/source/global/History @@ -1,4 +1,4 @@ -$Id: History,v 1.186 2007/06/18 13:26:58 gcosmo Exp $ +$Id: History,v 1.189 2007/11/20 10:54:17 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,15 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Nov 20, 2007 G.Cosmo (global-V09-00-02) +- Changed date for release 9.1. + +Nov 13, 2007 G.Cosmo (global-V09-00-01) +- Cleared compilation warnings for non-inlining and shadowing of variables. + +Aug 21, 2007 G.Cosmo (global-V09-00-00) +- Changed date for release 9.0.p01. + Jun 18, 2007 G.Cosmo (global-V08-03-07) - Force static initialisation to G4GeometryTolerance singleton, to overcome problems in startup on MacOS for the case of redundant link list of diff --git a/source/global/management/include/G4Allocator.hh b/source/global/management/include/G4Allocator.hh index 035df9d9de..47ecd19ae2 100644 --- a/source/global/management/include/G4Allocator.hh +++ b/source/global/management/include/G4Allocator.hh @@ -25,7 +25,7 @@ // // // $Id: G4Allocator.hh,v 1.18 2006/06/29 19:01:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4AllocatorPool.hh b/source/global/management/include/G4AllocatorPool.hh index 48e05fb89b..74e937c564 100644 --- a/source/global/management/include/G4AllocatorPool.hh +++ b/source/global/management/include/G4AllocatorPool.hh @@ -25,7 +25,7 @@ // // // $Id: G4AllocatorPool.hh,v 1.5 2006/06/29 19:01:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------------- diff --git a/source/global/management/include/G4ApplicationState.hh b/source/global/management/include/G4ApplicationState.hh index 0ee04da867..c0288cd1f9 100644 --- a/source/global/management/include/G4ApplicationState.hh +++ b/source/global/management/include/G4ApplicationState.hh @@ -25,7 +25,7 @@ // // // $Id: G4ApplicationState.hh,v 1.4 2006/06/29 19:01:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4APPLICATIONSTATE_H diff --git a/source/global/management/include/G4DataVector.hh b/source/global/management/include/G4DataVector.hh index e83a60435e..c4344c0ef3 100644 --- a/source/global/management/include/G4DataVector.hh +++ b/source/global/management/include/G4DataVector.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4DataVector.hh,v 1.14 2006/06/29 19:01:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4DataVector.hh,v 1.15 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -56,10 +56,10 @@ class G4DataVector : public std::vector G4DataVector(); // Default constructor. - explicit G4DataVector(size_t capacity); + explicit G4DataVector(size_t cap); // Constructor given a 'capacity' defining the initial number of elements. - G4DataVector(size_t capacity, G4double value); + G4DataVector(size_t cap, G4double value); // Constructor given a 'capacity' defining the initial number of elements // and initialising them to 'value'. diff --git a/source/global/management/include/G4DataVector.icc b/source/global/management/include/G4DataVector.icc index 3204112c49..91e125acf5 100644 --- a/source/global/management/include/G4DataVector.icc +++ b/source/global/management/include/G4DataVector.icc @@ -25,7 +25,7 @@ // // // $Id: G4DataVector.icc,v 1.2 2006/06/29 19:01:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // class G4DataVector inline implementation diff --git a/source/global/management/include/G4ErrorPropagatorData.hh b/source/global/management/include/G4ErrorPropagatorData.hh index 199b9dd092..6528e2735e 100644 --- a/source/global/management/include/G4ErrorPropagatorData.hh +++ b/source/global/management/include/G4ErrorPropagatorData.hh @@ -25,7 +25,7 @@ // // // $Id: G4ErrorPropagatorData.hh,v 1.3 2007/06/08 10:33:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/global/management/include/G4ErrorPropagatorData.icc b/source/global/management/include/G4ErrorPropagatorData.icc index ae03b7d691..d7d1ff2fee 100644 --- a/source/global/management/include/G4ErrorPropagatorData.icc +++ b/source/global/management/include/G4ErrorPropagatorData.icc @@ -25,7 +25,7 @@ // // // $Id: G4ErrorPropagatorData.icc,v 1.4 2007/06/08 10:33:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class G4ErrorPropagatorData inline implementation diff --git a/source/global/management/include/G4ExceptionSeverity.hh b/source/global/management/include/G4ExceptionSeverity.hh index 5084586fa8..ad50d86b0d 100644 --- a/source/global/management/include/G4ExceptionSeverity.hh +++ b/source/global/management/include/G4ExceptionSeverity.hh @@ -25,7 +25,7 @@ // // // $Id: G4ExceptionSeverity.hh,v 1.3 2006/06/29 19:01:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description: // diff --git a/source/global/management/include/G4FPEDetection.hh b/source/global/management/include/G4FPEDetection.hh index f5a6dd0f57..fb7bce4f7c 100644 --- a/source/global/management/include/G4FPEDetection.hh +++ b/source/global/management/include/G4FPEDetection.hh @@ -25,7 +25,7 @@ // // // $Id: G4FPEDetection.hh,v 1.2 2006/11/15 16:00:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -*- C++ -*- diff --git a/source/global/management/include/G4FastVector.hh b/source/global/management/include/G4FastVector.hh index 0e187c1420..896384210b 100644 --- a/source/global/management/include/G4FastVector.hh +++ b/source/global/management/include/G4FastVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4FastVector.hh,v 1.5 2006/06/29 19:01:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4GeometryTolerance.hh b/source/global/management/include/G4GeometryTolerance.hh index 1a02c7b1b5..eb835bd82c 100644 --- a/source/global/management/include/G4GeometryTolerance.hh +++ b/source/global/management/include/G4GeometryTolerance.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeometryTolerance.hh,v 1.2 2007/06/18 13:26:40 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/global/management/include/G4LPhysicsFreeVector.hh b/source/global/management/include/G4LPhysicsFreeVector.hh index 26d3d93736..fa58442275 100644 --- a/source/global/management/include/G4LPhysicsFreeVector.hh +++ b/source/global/management/include/G4LPhysicsFreeVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4LPhysicsFreeVector.hh,v 1.8 2006/06/29 19:01:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------------ diff --git a/source/global/management/include/G4LPhysicsFreeVector.icc b/source/global/management/include/G4LPhysicsFreeVector.icc index dcefd468c2..de22af3490 100644 --- a/source/global/management/include/G4LPhysicsFreeVector.icc +++ b/source/global/management/include/G4LPhysicsFreeVector.icc @@ -25,7 +25,7 @@ // // // $Id: G4LPhysicsFreeVector.icc,v 1.7 2006/06/29 19:02:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------------ diff --git a/source/global/management/include/G4OrderedTable.hh b/source/global/management/include/G4OrderedTable.hh index 30ac3efcd0..1cd1573d42 100644 --- a/source/global/management/include/G4OrderedTable.hh +++ b/source/global/management/include/G4OrderedTable.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4OrderedTable.hh,v 1.13 2006/06/29 19:02:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OrderedTable.hh,v 1.14 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -63,7 +63,7 @@ class G4OrderedTable : public std::vector G4OrderedTable(); // Deafult constructor. - explicit G4OrderedTable(size_t capacity); + explicit G4OrderedTable(size_t cap); // Constructor given a 'capacity' defining the initial // number of elements (NULL pointers are filled up) diff --git a/source/global/management/include/G4PhysicsFreeVector.hh b/source/global/management/include/G4PhysicsFreeVector.hh index d27fe68818..c4dd98b897 100644 --- a/source/global/management/include/G4PhysicsFreeVector.hh +++ b/source/global/management/include/G4PhysicsFreeVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsFreeVector.hh,v 1.10 2006/06/29 19:02:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsLinearVector.hh b/source/global/management/include/G4PhysicsLinearVector.hh index a525a2b918..20f53e94da 100644 --- a/source/global/management/include/G4PhysicsLinearVector.hh +++ b/source/global/management/include/G4PhysicsLinearVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsLinearVector.hh,v 1.10 2006/06/29 19:02:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsLnVector.hh b/source/global/management/include/G4PhysicsLnVector.hh index dac193d1b2..55decc84e6 100644 --- a/source/global/management/include/G4PhysicsLnVector.hh +++ b/source/global/management/include/G4PhysicsLnVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsLnVector.hh,v 1.12 2006/06/29 19:02:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsLogVector.hh b/source/global/management/include/G4PhysicsLogVector.hh index e140524a39..eafc7e5960 100644 --- a/source/global/management/include/G4PhysicsLogVector.hh +++ b/source/global/management/include/G4PhysicsLogVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsLogVector.hh,v 1.11 2006/06/29 19:02:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsOrderedFreeVector.hh b/source/global/management/include/G4PhysicsOrderedFreeVector.hh index de79989cc5..e7ce3ac31d 100644 --- a/source/global/management/include/G4PhysicsOrderedFreeVector.hh +++ b/source/global/management/include/G4PhysicsOrderedFreeVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsOrderedFreeVector.hh,v 1.9 2006/06/29 19:02:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //////////////////////////////////////////////////////////////////////// // PhysicsOrderedFreeVector Class Definition diff --git a/source/global/management/include/G4PhysicsOrderedFreeVector.icc b/source/global/management/include/G4PhysicsOrderedFreeVector.icc index 59d707c343..c15ff04af3 100644 --- a/source/global/management/include/G4PhysicsOrderedFreeVector.icc +++ b/source/global/management/include/G4PhysicsOrderedFreeVector.icc @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsOrderedFreeVector.icc,v 1.8 2006/06/29 19:02:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //////////////////////////////////////////////////////////////////////// // PhysicsOrderedFreeVector Class Inline Functions Definitions diff --git a/source/global/management/include/G4PhysicsTable.hh b/source/global/management/include/G4PhysicsTable.hh index 32b216986c..790e52ab55 100644 --- a/source/global/management/include/G4PhysicsTable.hh +++ b/source/global/management/include/G4PhysicsTable.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsTable.hh,v 1.17 2006/06/29 19:02:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PhysicsTable.hh,v 1.18 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -75,7 +75,7 @@ class G4PhysicsTable : public std::vector G4PhysicsTable(); // Default constructor. - explicit G4PhysicsTable(size_t capacity); + explicit G4PhysicsTable(size_t cap); // Constructor with capacity. Reserves memory for the // specified capacity. diff --git a/source/global/management/include/G4PhysicsTable.icc b/source/global/management/include/G4PhysicsTable.icc index 0e058a29ba..d4d1752482 100644 --- a/source/global/management/include/G4PhysicsTable.icc +++ b/source/global/management/include/G4PhysicsTable.icc @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsTable.icc,v 1.8 2006/06/29 19:02:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4PhysicsVector.hh b/source/global/management/include/G4PhysicsVector.hh index 0652f60c99..4629f75399 100644 --- a/source/global/management/include/G4PhysicsVector.hh +++ b/source/global/management/include/G4PhysicsVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsVector.hh,v 1.14 2006/06/29 19:02:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsVector.icc b/source/global/management/include/G4PhysicsVector.icc index ce489e862c..b7103d1e45 100644 --- a/source/global/management/include/G4PhysicsVector.icc +++ b/source/global/management/include/G4PhysicsVector.icc @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsVector.icc,v 1.9 2006/06/29 19:02:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsVectorType.hh b/source/global/management/include/G4PhysicsVectorType.hh index 50a75ed13f..7534d4035e 100644 --- a/source/global/management/include/G4PhysicsVectorType.hh +++ b/source/global/management/include/G4PhysicsVectorType.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsVectorType.hh,v 1.4 2006/06/29 19:02:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // diff --git a/source/global/management/include/G4ReferenceCountedHandle.hh b/source/global/management/include/G4ReferenceCountedHandle.hh index 30ac095930..c32919fc8b 100644 --- a/source/global/management/include/G4ReferenceCountedHandle.hh +++ b/source/global/management/include/G4ReferenceCountedHandle.hh @@ -25,7 +25,7 @@ // // // $Id: G4ReferenceCountedHandle.hh,v 1.15 2006/06/29 19:02:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class G4ReferenceCountedHandle diff --git a/source/global/management/include/G4RotationMatrix.hh b/source/global/management/include/G4RotationMatrix.hh index def2e8fb23..cc7888ba3c 100644 --- a/source/global/management/include/G4RotationMatrix.hh +++ b/source/global/management/include/G4RotationMatrix.hh @@ -25,7 +25,7 @@ // // // $Id: G4RotationMatrix.hh,v 1.5 2006/06/29 19:02:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/management/include/G4SIunits.hh b/source/global/management/include/G4SIunits.hh index 7f18376b46..ea63d55545 100644 --- a/source/global/management/include/G4SIunits.hh +++ b/source/global/management/include/G4SIunits.hh @@ -25,7 +25,7 @@ // // // $Id: G4SIunits.hh,v 1.5 2006/09/15 08:16:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // diff --git a/source/global/management/include/G4SliceTimer.hh b/source/global/management/include/G4SliceTimer.hh index f43476fe3f..62e63b7615 100644 --- a/source/global/management/include/G4SliceTimer.hh +++ b/source/global/management/include/G4SliceTimer.hh @@ -25,7 +25,7 @@ // // // $Id: G4SliceTimer.hh,v 1.1 2006/10/23 07:43:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/management/include/G4SliceTimer.icc b/source/global/management/include/G4SliceTimer.icc index 327e5fabb2..783cab9eed 100644 --- a/source/global/management/include/G4SliceTimer.icc +++ b/source/global/management/include/G4SliceTimer.icc @@ -25,7 +25,7 @@ // // // $Id: G4SliceTimer.icc,v 1.1 2006/10/23 07:43:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4StateManager.hh b/source/global/management/include/G4StateManager.hh index 8d2079440d..9cd9e18eb2 100644 --- a/source/global/management/include/G4StateManager.hh +++ b/source/global/management/include/G4StateManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4StateManager.hh,v 1.10 2006/06/29 19:02:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4StateManager.icc b/source/global/management/include/G4StateManager.icc index 56c8a1001e..d1df3e9b40 100644 --- a/source/global/management/include/G4StateManager.icc +++ b/source/global/management/include/G4StateManager.icc @@ -25,7 +25,7 @@ // // // $Id: G4StateManager.icc,v 1.2 2006/06/29 19:03:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4String.hh b/source/global/management/include/G4String.hh index 60596ee1ac..7d556bd8d1 100644 --- a/source/global/management/include/G4String.hh +++ b/source/global/management/include/G4String.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4String.hh,v 1.6 2006/06/29 19:03:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4String.hh,v 1.7 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- @@ -116,7 +116,7 @@ public: inline G4String ( const G4String& ); inline G4String ( const G4SubString& ); inline G4String ( const std::string & ); - virtual ~G4String () {} + ~G4String () {} inline G4String& operator=(const G4String&); inline G4String& operator=(const std::string &); @@ -163,7 +163,7 @@ public: // stripType = 1 end // stripType = 2 both // - inline G4String strip (G4int stripType=trailing, char c=' '); + inline G4String strip (G4int strip_Type=trailing, char c=' '); inline void toLower (); inline void toUpper (); diff --git a/source/global/management/include/G4String.icc b/source/global/management/include/G4String.icc index fa4f961dbc..31a5a217ac 100644 --- a/source/global/management/include/G4String.icc +++ b/source/global/management/include/G4String.icc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4String.icc,v 1.8 2006/06/29 19:03:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4String.icc,v 1.9 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- @@ -360,12 +360,12 @@ G4bool G4String::contains(char c) const { return false; } } -G4String G4String::strip (G4int stripType, char c) +G4String G4String::strip (G4int strip_Type, char c) { G4String retVal = *this; if(length()==0) { return retVal; } str_size i=0; - switch ( stripType ) { + switch ( strip_Type ) { case leading: { for(i=0;i patch number #ifndef G4VERSION_NUMBER -#define G4VERSION_NUMBER 900 +#define G4VERSION_NUMBER 910 #endif #ifndef G4VERSION_TAG -#define G4VERSION_TAG "$Name: geant4-09-00 $" +#define G4VERSION_TAG "$Name: geant4-09-01 $" #endif // as variables #include "G4String.hh" -static const G4String G4Version = "$Name: geant4-09-00 $"; -static const G4String G4Date = "(29-June-2007)"; +static const G4String G4Version = "$Name: geant4-09-01 $"; +static const G4String G4Date = "(14-December-2007)"; #endif diff --git a/source/global/management/include/G4coutDestination.hh b/source/global/management/include/G4coutDestination.hh index 668e15071c..81a4169425 100644 --- a/source/global/management/include/G4coutDestination.hh +++ b/source/global/management/include/G4coutDestination.hh @@ -25,7 +25,7 @@ // // // $Id: G4coutDestination.hh,v 1.6 2006/06/29 19:03:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/global/management/include/G4ios.hh b/source/global/management/include/G4ios.hh index ff0210aa01..ab9a8c77c7 100644 --- a/source/global/management/include/G4ios.hh +++ b/source/global/management/include/G4ios.hh @@ -25,7 +25,7 @@ // // // $Id: G4ios.hh,v 1.10 2006/06/29 19:03:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/global/management/include/G4strstreambuf.hh b/source/global/management/include/G4strstreambuf.hh index 4442813e49..d68d1a1a84 100644 --- a/source/global/management/include/G4strstreambuf.hh +++ b/source/global/management/include/G4strstreambuf.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4strstreambuf.hh,v 1.15 2006/06/29 19:03:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4strstreambuf.hh,v 1.16 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // ==================================================================== // // G4strstreambuf @@ -63,7 +63,7 @@ class G4strstreambuf : public std::basic_streambuf #endif void SetDestination(G4coutDestination* dest); - G4int ReceiveString (); + inline G4int ReceiveString (); private: diff --git a/source/global/management/include/G4strstreambuf.icc b/source/global/management/include/G4strstreambuf.icc index 23a112b216..74f92a4465 100644 --- a/source/global/management/include/G4strstreambuf.icc +++ b/source/global/management/include/G4strstreambuf.icc @@ -25,7 +25,7 @@ // // // $Id: G4strstreambuf.icc,v 1.13 2006/06/29 19:03:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ==================================================================== // G4strstreambuf.icc // diff --git a/source/global/management/include/globals.hh b/source/global/management/include/globals.hh index 84288db00d..84a0fe6355 100644 --- a/source/global/management/include/globals.hh +++ b/source/global/management/include/globals.hh @@ -25,7 +25,7 @@ // // // $Id: globals.hh,v 1.27 2006/06/29 19:03:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Global Constants and typedefs diff --git a/source/global/management/include/templates.hh b/source/global/management/include/templates.hh index d595c5b2af..19428991bf 100644 --- a/source/global/management/include/templates.hh +++ b/source/global/management/include/templates.hh @@ -25,7 +25,7 @@ // // // $Id: templates.hh,v 1.10 2006/06/29 19:03:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -*- C++ -*- diff --git a/source/global/management/src/G4AllocatorPool.cc b/source/global/management/src/G4AllocatorPool.cc index e10a9ec0a0..526ead91bc 100644 --- a/source/global/management/src/G4AllocatorPool.cc +++ b/source/global/management/src/G4AllocatorPool.cc @@ -25,7 +25,7 @@ // // // $Id: G4AllocatorPool.cc,v 1.4 2006/06/29 19:03:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/management/src/G4DataVector.cc b/source/global/management/src/G4DataVector.cc index 8a8f9fcd08..fcc1fc6fdb 100644 --- a/source/global/management/src/G4DataVector.cc +++ b/source/global/management/src/G4DataVector.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4DataVector.cc,v 1.8 2006/06/29 19:03:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4DataVector.cc,v 1.9 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -45,13 +45,13 @@ G4DataVector::G4DataVector() { } -G4DataVector::G4DataVector(size_t capacity) - : std::vector(capacity, 0.0) +G4DataVector::G4DataVector(size_t cap) + : std::vector(cap, 0.0) { } -G4DataVector::G4DataVector(size_t capacity, G4double value) - : std::vector(capacity, value) +G4DataVector::G4DataVector(size_t cap, G4double value) + : std::vector(cap, value) { } diff --git a/source/global/management/src/G4ErrorPropagatorData.cc b/source/global/management/src/G4ErrorPropagatorData.cc index 9014a26feb..69e56d80b1 100644 --- a/source/global/management/src/G4ErrorPropagatorData.cc +++ b/source/global/management/src/G4ErrorPropagatorData.cc @@ -25,7 +25,7 @@ // // // $Id: G4ErrorPropagatorData.cc,v 1.3 2007/06/05 13:04:30 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/global/management/src/G4Exception.cc b/source/global/management/src/G4Exception.cc index e4bea9edfc..dc00402f56 100644 --- a/source/global/management/src/G4Exception.cc +++ b/source/global/management/src/G4Exception.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Exception.cc,v 1.20 2006/06/29 19:04:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Exception.cc,v 1.21 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- @@ -41,10 +41,10 @@ #include "G4String.hh" #include "G4StateManager.hh" -void G4Exception(const char* s) +void G4Exception(const char* emessage) { - if(s) { G4cerr << s << G4endl; } - if(G4StateManager::GetStateManager()->SetNewState(G4State_Abort,s)) + if(emessage) { G4cerr << emessage << G4endl; } + if(G4StateManager::GetStateManager()->SetNewState(G4State_Abort,emessage)) { G4cerr << G4endl << "*** G4Exception: Aborting execution ***" << G4endl; abort(); @@ -114,12 +114,12 @@ void G4Exception(const char* originOfException, } } -void G4Exception(std::string s) +void G4Exception(std::string emessage) { - G4Exception(s.c_str()); + G4Exception(emessage.c_str()); } -void G4Exception(G4String s) +void G4Exception(G4String emessage) { - G4Exception(s.c_str()); + G4Exception(emessage.c_str()); } diff --git a/source/global/management/src/G4GeometryTolerance.cc b/source/global/management/src/G4GeometryTolerance.cc index d3ffc78572..6e6305868d 100644 --- a/source/global/management/src/G4GeometryTolerance.cc +++ b/source/global/management/src/G4GeometryTolerance.cc @@ -25,7 +25,7 @@ // // // $Id: G4GeometryTolerance.cc,v 1.2 2007/06/18 13:26:40 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class G4GeometryTolerance // diff --git a/source/global/management/src/G4LPhysicsFreeVector.cc b/source/global/management/src/G4LPhysicsFreeVector.cc index 1e35642cba..609995990c 100644 --- a/source/global/management/src/G4LPhysicsFreeVector.cc +++ b/source/global/management/src/G4LPhysicsFreeVector.cc @@ -25,7 +25,7 @@ // // // $Id: G4LPhysicsFreeVector.cc,v 1.12 2007/05/14 10:27:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------------- diff --git a/source/global/management/src/G4OrderedTable.cc b/source/global/management/src/G4OrderedTable.cc index 0048f0d76e..29af0ef254 100644 --- a/source/global/management/src/G4OrderedTable.cc +++ b/source/global/management/src/G4OrderedTable.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4OrderedTable.cc,v 1.5 2006/06/29 19:04:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OrderedTable.cc,v 1.6 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -46,8 +46,8 @@ G4OrderedTable::G4OrderedTable() { } -G4OrderedTable::G4OrderedTable(size_t capacity) - : std::vector(capacity, (G4DataVector*)(0) ) +G4OrderedTable::G4OrderedTable(size_t cap) + : std::vector(cap, (G4DataVector*)(0) ) { } diff --git a/source/global/management/src/G4PhysicsFreeVector.cc b/source/global/management/src/G4PhysicsFreeVector.cc index 62dbd9f846..2cfd830b30 100644 --- a/source/global/management/src/G4PhysicsFreeVector.cc +++ b/source/global/management/src/G4PhysicsFreeVector.cc @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsFreeVector.cc,v 1.10 2006/06/29 19:04:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/src/G4PhysicsLinearVector.cc b/source/global/management/src/G4PhysicsLinearVector.cc index 8eec17bbc2..09625282f6 100644 --- a/source/global/management/src/G4PhysicsLinearVector.cc +++ b/source/global/management/src/G4PhysicsLinearVector.cc @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsLinearVector.cc,v 1.12 2006/06/29 19:04:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/src/G4PhysicsLnVector.cc b/source/global/management/src/G4PhysicsLnVector.cc index 23376d1de2..4665de3c8e 100644 --- a/source/global/management/src/G4PhysicsLnVector.cc +++ b/source/global/management/src/G4PhysicsLnVector.cc @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsLnVector.cc,v 1.15 2006/06/29 19:04:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/global/management/src/G4PhysicsLogVector.cc b/source/global/management/src/G4PhysicsLogVector.cc index 273f73e633..77ab80bb15 100644 --- a/source/global/management/src/G4PhysicsLogVector.cc +++ b/source/global/management/src/G4PhysicsLogVector.cc @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsLogVector.cc,v 1.13 2006/06/29 19:04:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/global/management/src/G4PhysicsOrderedFreeVector.cc b/source/global/management/src/G4PhysicsOrderedFreeVector.cc index 0634070bea..532418485d 100644 --- a/source/global/management/src/G4PhysicsOrderedFreeVector.cc +++ b/source/global/management/src/G4PhysicsOrderedFreeVector.cc @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsOrderedFreeVector.cc,v 1.10 2006/06/29 19:04:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //////////////////////////////////////////////////////////////////////// // PhysicsOrderedFreeVector Class Implementation diff --git a/source/global/management/src/G4PhysicsTable.cc b/source/global/management/src/G4PhysicsTable.cc index c64291fa17..76a787ab9c 100644 --- a/source/global/management/src/G4PhysicsTable.cc +++ b/source/global/management/src/G4PhysicsTable.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsTable.cc,v 1.14 2006/06/29 19:04:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PhysicsTable.cc,v 1.15 2007/11/13 17:35:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -46,11 +46,11 @@ G4PhysicsTable::G4PhysicsTable() { } -G4PhysicsTable::G4PhysicsTable(size_t capacity) +G4PhysicsTable::G4PhysicsTable(size_t cap) : G4PhysCollection() { - reserve(capacity); - vecFlag.reserve(capacity); + reserve(cap); + vecFlag.reserve(cap); } G4PhysicsTable::G4PhysicsTable(const G4PhysicsTable& right) @@ -81,10 +81,10 @@ G4PhysicsTable::~G4PhysicsTable() vecFlag.clear(); } -void G4PhysicsTable::resize(size_t size, G4PhysicsVector* vec) +void G4PhysicsTable::resize(size_t siz, G4PhysicsVector* vec) { - G4PhysCollection::resize(size, vec); - vecFlag.resize(size, true); + G4PhysCollection::resize(siz, vec); + vecFlag.resize(siz, true); } G4bool G4PhysicsTable::StorePhysicsTable(const G4String& fileName, diff --git a/source/global/management/src/G4PhysicsVector.cc b/source/global/management/src/G4PhysicsVector.cc index 203c162e56..cc625639f0 100644 --- a/source/global/management/src/G4PhysicsVector.cc +++ b/source/global/management/src/G4PhysicsVector.cc @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsVector.cc,v 1.17 2006/06/29 19:04:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/global/management/src/G4SliceTimer.cc b/source/global/management/src/G4SliceTimer.cc index 747a5185f8..5840f660b7 100644 --- a/source/global/management/src/G4SliceTimer.cc +++ b/source/global/management/src/G4SliceTimer.cc @@ -25,7 +25,7 @@ // // // $Id: G4SliceTimer.cc,v 1.2 2006/11/02 15:39:39 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/management/src/G4StateManager.cc b/source/global/management/src/G4StateManager.cc index 3e02ab399b..4205fe3d67 100644 --- a/source/global/management/src/G4StateManager.cc +++ b/source/global/management/src/G4StateManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4StateManager.cc,v 1.13 2006/11/23 00:41:56 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/src/G4Timer.cc b/source/global/management/src/G4Timer.cc index 5b79c82b2f..c0920f9c07 100644 --- a/source/global/management/src/G4Timer.cc +++ b/source/global/management/src/G4Timer.cc @@ -25,7 +25,7 @@ // // // $Id: G4Timer.cc,v 1.15 2006/06/29 19:04:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/management/src/G4UnitsTable.cc b/source/global/management/src/G4UnitsTable.cc index 59d65ba2fb..b7b50e3fbf 100644 --- a/source/global/management/src/G4UnitsTable.cc +++ b/source/global/management/src/G4UnitsTable.cc @@ -25,7 +25,7 @@ // // // $Id: G4UnitsTable.cc,v 1.36 2006/11/30 10:37:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // diff --git a/source/global/management/src/G4VExceptionHandler.cc b/source/global/management/src/G4VExceptionHandler.cc index 205ea52944..b34d7eeaa0 100644 --- a/source/global/management/src/G4VExceptionHandler.cc +++ b/source/global/management/src/G4VExceptionHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4VExceptionHandler.cc,v 1.3 2006/06/29 19:04:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/src/G4VNotifier.cc b/source/global/management/src/G4VNotifier.cc index 3e4df2fc8b..fc50451750 100644 --- a/source/global/management/src/G4VNotifier.cc +++ b/source/global/management/src/G4VNotifier.cc @@ -25,7 +25,7 @@ // // // $Id: G4VNotifier.cc,v 1.2 2006/06/29 19:04:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VNotifier // diff --git a/source/global/management/src/G4VStateDependent.cc b/source/global/management/src/G4VStateDependent.cc index e371b9c30e..5bef02a66d 100644 --- a/source/global/management/src/G4VStateDependent.cc +++ b/source/global/management/src/G4VStateDependent.cc @@ -25,7 +25,7 @@ // // // $Id: G4VStateDependent.cc,v 1.5 2006/06/29 19:04:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/src/G4coutDestination.cc b/source/global/management/src/G4coutDestination.cc index a3fe837705..7cdb1b38c5 100644 --- a/source/global/management/src/G4coutDestination.cc +++ b/source/global/management/src/G4coutDestination.cc @@ -25,7 +25,7 @@ // // // $Id: G4coutDestination.cc,v 1.2 2006/06/29 19:04:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/management/src/G4ios.cc b/source/global/management/src/G4ios.cc index ff90bc7002..7ac1a0f624 100644 --- a/source/global/management/src/G4ios.cc +++ b/source/global/management/src/G4ios.cc @@ -25,7 +25,7 @@ // // // $Id: G4ios.cc,v 1.9 2006/06/29 19:04:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/graphics_reps/History b/source/graphics_reps/History index 7073f0e62e..8b32054e0b 100644 --- a/source/graphics_reps/History +++ b/source/graphics_reps/History @@ -1,4 +1,4 @@ -cvs log $Id: History,v 1.121 2007/06/08 14:24:29 gcosmo Exp $ +cvs log $Id: History,v 1.126 2007/08/21 14:12:04 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,7 +16,18 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- - + +21th August 2007 Tatiana Nikitina (greps-V09-00-02) +- Fixed bug in scaling parameter for G4EllipticalCone representation in + HepPolyhedron class. + +18th July 2007 Tatiana Nikitina (greps-V09-00-01) +- Added G4Paraboloid to HepPolyhedron and G4Polyhedron. +- Coworks with tag "geom-specific-V09-00-02". + +17th July 2007 John Allison (greps-V09-00-00) +- G4VGraphicsScene: Added constructor and virtual destructor. + 8th June 2007 Gabriele Cosmo (greps-V08-03-00) - G4AttHolder: replaced forward declarations in header with explicit inclusions to allow for porting on Intel-icc compiler. diff --git a/source/graphics_reps/include/G4AttCheck.hh b/source/graphics_reps/include/G4AttCheck.hh index b957ee7f88..4ca21bfb71 100644 --- a/source/graphics_reps/include/G4AttCheck.hh +++ b/source/graphics_reps/include/G4AttCheck.hh @@ -25,7 +25,7 @@ // // // $Id: G4AttCheck.hh,v 1.8 2006/10/17 16:14:08 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4ATTCHECK_HH #define G4ATTCHECK_HH diff --git a/source/graphics_reps/include/G4AttDef.hh b/source/graphics_reps/include/G4AttDef.hh index d8a8953212..18dabf1422 100644 --- a/source/graphics_reps/include/G4AttDef.hh +++ b/source/graphics_reps/include/G4AttDef.hh @@ -25,7 +25,7 @@ // // // $Id: G4AttDef.hh,v 1.7 2006/10/17 16:14:08 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4ATTDEF_HH #define G4ATTDEF_HH diff --git a/source/graphics_reps/include/G4AttDefStore.hh b/source/graphics_reps/include/G4AttDefStore.hh index fcc9cd7855..47becc93ae 100644 --- a/source/graphics_reps/include/G4AttDefStore.hh +++ b/source/graphics_reps/include/G4AttDefStore.hh @@ -25,7 +25,7 @@ // // // $Id: G4AttDefStore.hh,v 1.11 2007/04/03 13:58:07 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4ATTDEFSTORE_HH #define G4ATTDEFSTORE_HH diff --git a/source/graphics_reps/include/G4AttDefT.hh b/source/graphics_reps/include/G4AttDefT.hh index de81d5cd48..a04f16213e 100644 --- a/source/graphics_reps/include/G4AttDefT.hh +++ b/source/graphics_reps/include/G4AttDefT.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4AttDefT.hh,v 1.2 2006/12/13 15:43:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Templated G4AttDef. Generates type key for given template parameter. // diff --git a/source/graphics_reps/include/G4AttHolder.hh b/source/graphics_reps/include/G4AttHolder.hh index 39241acaac..0435b330c6 100644 --- a/source/graphics_reps/include/G4AttHolder.hh +++ b/source/graphics_reps/include/G4AttHolder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4AttHolder.hh,v 1.6 2007/06/08 14:24:29 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4ATTHOLDER_HH #define G4ATTHOLDER_HH diff --git a/source/graphics_reps/include/G4AttUtils.hh b/source/graphics_reps/include/G4AttUtils.hh index 9a18589f9d..11af01c733 100644 --- a/source/graphics_reps/include/G4AttUtils.hh +++ b/source/graphics_reps/include/G4AttUtils.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4AttUtils.hh,v 1.1 2006/09/11 18:04:58 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay September 2006 // diff --git a/source/graphics_reps/include/G4AttValue.hh b/source/graphics_reps/include/G4AttValue.hh index ba7c9e6b44..833e346cec 100644 --- a/source/graphics_reps/include/G4AttValue.hh +++ b/source/graphics_reps/include/G4AttValue.hh @@ -25,7 +25,7 @@ // // // $Id: G4AttValue.hh,v 1.5 2006/06/29 19:05:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4ATTVALUE_HH #define G4ATTVALUE_HH diff --git a/source/graphics_reps/include/G4Circle.hh b/source/graphics_reps/include/G4Circle.hh index c02f811ba9..0f99445d34 100644 --- a/source/graphics_reps/include/G4Circle.hh +++ b/source/graphics_reps/include/G4Circle.hh @@ -25,7 +25,7 @@ // // // $Id: G4Circle.hh,v 1.9 2006/06/29 19:05:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Color.hh b/source/graphics_reps/include/G4Color.hh index 2e89c651f6..25dee65cdd 100644 --- a/source/graphics_reps/include/G4Color.hh +++ b/source/graphics_reps/include/G4Color.hh @@ -25,7 +25,7 @@ // // // $Id: G4Color.hh,v 1.5 2006/06/29 19:05:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 20th October 1996 diff --git a/source/graphics_reps/include/G4Colour.hh b/source/graphics_reps/include/G4Colour.hh index d3037eb88f..e2fd329544 100644 --- a/source/graphics_reps/include/G4Colour.hh +++ b/source/graphics_reps/include/G4Colour.hh @@ -25,7 +25,7 @@ // // // $Id: G4Colour.hh,v 1.14 2007/01/05 14:06:28 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 20th October 1996 diff --git a/source/graphics_reps/include/G4ConversionFatalError.hh b/source/graphics_reps/include/G4ConversionFatalError.hh index a43dd6a7a3..28e493e658 100644 --- a/source/graphics_reps/include/G4ConversionFatalError.hh +++ b/source/graphics_reps/include/G4ConversionFatalError.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ConversionFatalError.hh,v 1.2 2006/12/13 15:44:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Fatal G4Exception error // diff --git a/source/graphics_reps/include/G4ConversionUtils.hh b/source/graphics_reps/include/G4ConversionUtils.hh index afaffe9063..da7fb7173b 100644 --- a/source/graphics_reps/include/G4ConversionUtils.hh +++ b/source/graphics_reps/include/G4ConversionUtils.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ConversionUtils.hh,v 1.2 2006/09/12 18:29:31 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay September 2006 // diff --git a/source/graphics_reps/include/G4CreatorFactoryT.hh b/source/graphics_reps/include/G4CreatorFactoryT.hh index 0d5c59915a..4f877179cb 100644 --- a/source/graphics_reps/include/G4CreatorFactoryT.hh +++ b/source/graphics_reps/include/G4CreatorFactoryT.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4CreatorFactoryT.hh,v 1.2 2006/12/13 15:44:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Generic identifier-creator based factory. Based on // factory presented in "Modern C++ Design, Andrei Alexandrescu" diff --git a/source/graphics_reps/include/G4DimensionedDouble.hh b/source/graphics_reps/include/G4DimensionedDouble.hh index 2174f8bf9e..a46f6b52ba 100644 --- a/source/graphics_reps/include/G4DimensionedDouble.hh +++ b/source/graphics_reps/include/G4DimensionedDouble.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4DimensionedDouble.hh,v 1.2 2006/12/13 15:44:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Dimensioned G4double. // diff --git a/source/graphics_reps/include/G4DimensionedThreeVector.hh b/source/graphics_reps/include/G4DimensionedThreeVector.hh index 717cce4b64..0033215018 100644 --- a/source/graphics_reps/include/G4DimensionedThreeVector.hh +++ b/source/graphics_reps/include/G4DimensionedThreeVector.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4DimensionedThreeVector.hh,v 1.2 2006/12/13 15:44:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Dimensioned G4Threevector. // diff --git a/source/graphics_reps/include/G4DimensionedType.hh b/source/graphics_reps/include/G4DimensionedType.hh index 09d755a724..3018e8d5be 100644 --- a/source/graphics_reps/include/G4DimensionedType.hh +++ b/source/graphics_reps/include/G4DimensionedType.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4DimensionedType.hh,v 1.3 2006/12/13 15:44:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Generic dimensioned type. // diff --git a/source/graphics_reps/include/G4NURBS.hh b/source/graphics_reps/include/G4NURBS.hh index 1a2d89f5a4..91387361a5 100644 --- a/source/graphics_reps/include/G4NURBS.hh +++ b/source/graphics_reps/include/G4NURBS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NURBS.hh,v 1.10 2006/06/29 19:05:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4NURBSbox.hh b/source/graphics_reps/include/G4NURBSbox.hh index 3bcf97de9b..4b441838b4 100644 --- a/source/graphics_reps/include/G4NURBSbox.hh +++ b/source/graphics_reps/include/G4NURBSbox.hh @@ -25,7 +25,7 @@ // // // $Id: G4NURBSbox.hh,v 1.9 2006/06/29 19:05:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4NURBScylinder.hh b/source/graphics_reps/include/G4NURBScylinder.hh index 49a69e6bcf..dfe1690883 100644 --- a/source/graphics_reps/include/G4NURBScylinder.hh +++ b/source/graphics_reps/include/G4NURBScylinder.hh @@ -25,7 +25,7 @@ // // // $Id: G4NURBScylinder.hh,v 1.9 2006/06/29 19:05:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4NURBShexahedron.hh b/source/graphics_reps/include/G4NURBShexahedron.hh index 97c0ed44d6..6154a2aab0 100644 --- a/source/graphics_reps/include/G4NURBShexahedron.hh +++ b/source/graphics_reps/include/G4NURBShexahedron.hh @@ -25,7 +25,7 @@ // // // $Id: G4NURBShexahedron.hh,v 1.9 2006/06/29 19:05:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hexa hedron builder prototype // OC 17 9 96 diff --git a/source/graphics_reps/include/G4NURBStube.hh b/source/graphics_reps/include/G4NURBStube.hh index 57d5551f78..288faff8e2 100644 --- a/source/graphics_reps/include/G4NURBStube.hh +++ b/source/graphics_reps/include/G4NURBStube.hh @@ -25,7 +25,7 @@ // // // $Id: G4NURBStube.hh,v 1.9 2006/06/29 19:05:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4NURBStubesector.hh b/source/graphics_reps/include/G4NURBStubesector.hh index 4eaf570d5f..5d350a84ad 100644 --- a/source/graphics_reps/include/G4NURBStubesector.hh +++ b/source/graphics_reps/include/G4NURBStubesector.hh @@ -25,7 +25,7 @@ // // // $Id: G4NURBStubesector.hh,v 1.8 2006/06/29 19:05:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4PlacedPolyhedron.hh b/source/graphics_reps/include/G4PlacedPolyhedron.hh index 0e6f859602..cd9eeb6f67 100644 --- a/source/graphics_reps/include/G4PlacedPolyhedron.hh +++ b/source/graphics_reps/include/G4PlacedPolyhedron.hh @@ -25,7 +25,7 @@ // // // $Id: G4PlacedPolyhedron.hh,v 1.11 2006/06/29 19:05:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // Class Description: diff --git a/source/graphics_reps/include/G4Point3DList.hh b/source/graphics_reps/include/G4Point3DList.hh index 5f88d9527c..90d931000f 100644 --- a/source/graphics_reps/include/G4Point3DList.hh +++ b/source/graphics_reps/include/G4Point3DList.hh @@ -25,7 +25,7 @@ // // // $Id: G4Point3DList.hh,v 1.12 2006/06/29 19:05:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison July 1995 diff --git a/source/graphics_reps/include/G4Polyhedron.hh b/source/graphics_reps/include/G4Polyhedron.hh index c3420aab61..c0401450a1 100644 --- a/source/graphics_reps/include/G4Polyhedron.hh +++ b/source/graphics_reps/include/G4Polyhedron.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Polyhedron.hh,v 1.18 2006/06/29 19:05:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Polyhedron.hh,v 1.19 2007/07/18 14:00:02 tnikitin Exp $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4POLYHEDRON_HH #define G4POLYHEDRON_HH @@ -226,6 +226,13 @@ public: virtual ~G4PolyhedronTubs (); }; +class G4PolyhedronParaboloid: public G4Polyhedron { + public: + G4PolyhedronParaboloid(G4double r1, G4double r2, G4double dz, + G4double sPhi, G4double dPhi); + virtual ~G4PolyhedronParaboloid (); +}; + class G4PolyhedronEllipsoid : public G4Polyhedron { public: G4PolyhedronEllipsoid(G4double dx, G4double dy, G4double dz, diff --git a/source/graphics_reps/include/G4Polyline.hh b/source/graphics_reps/include/G4Polyline.hh index 1ab7d5069e..0830560ed2 100644 --- a/source/graphics_reps/include/G4Polyline.hh +++ b/source/graphics_reps/include/G4Polyline.hh @@ -25,7 +25,7 @@ // // // $Id: G4Polyline.hh,v 1.13 2006/06/29 19:05:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison July 1995 diff --git a/source/graphics_reps/include/G4Polymarker.hh b/source/graphics_reps/include/G4Polymarker.hh index eeb15578e3..0e9bda6a1d 100644 --- a/source/graphics_reps/include/G4Polymarker.hh +++ b/source/graphics_reps/include/G4Polymarker.hh @@ -25,7 +25,7 @@ // // // $Id: G4Polymarker.hh,v 1.11 2006/06/29 19:05:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison November 1996 diff --git a/source/graphics_reps/include/G4Polymarker.icc b/source/graphics_reps/include/G4Polymarker.icc index 532f2aac1e..4cc0ee5f6d 100644 --- a/source/graphics_reps/include/G4Polymarker.icc +++ b/source/graphics_reps/include/G4Polymarker.icc @@ -25,7 +25,7 @@ // // // $Id: G4Polymarker.icc,v 1.4 2006/06/29 19:05:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison November 1996 diff --git a/source/graphics_reps/include/G4Scale.hh b/source/graphics_reps/include/G4Scale.hh index b6e08cafff..4eae805454 100644 --- a/source/graphics_reps/include/G4Scale.hh +++ b/source/graphics_reps/include/G4Scale.hh @@ -25,7 +25,7 @@ // // // $Id: G4Scale.hh,v 1.7 2006/06/29 19:05:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 21st July 2001. diff --git a/source/graphics_reps/include/G4Scale.icc b/source/graphics_reps/include/G4Scale.icc index bab2a6d3a6..dd08ae8d06 100644 --- a/source/graphics_reps/include/G4Scale.icc +++ b/source/graphics_reps/include/G4Scale.icc @@ -25,7 +25,7 @@ // // // $Id: G4Scale.icc,v 1.3 2006/06/29 19:05:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 21st July 2001. diff --git a/source/graphics_reps/include/G4SmartFilter.hh b/source/graphics_reps/include/G4SmartFilter.hh index 426fe556b7..9cb104f2ad 100644 --- a/source/graphics_reps/include/G4SmartFilter.hh +++ b/source/graphics_reps/include/G4SmartFilter.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4SmartFilter.hh,v 1.3 2006/08/25 19:39:39 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Filter with additional funcionality such as active and inverted states, // and filtering statistics diff --git a/source/graphics_reps/include/G4Square.hh b/source/graphics_reps/include/G4Square.hh index 725770c165..762573583e 100644 --- a/source/graphics_reps/include/G4Square.hh +++ b/source/graphics_reps/include/G4Square.hh @@ -25,7 +25,7 @@ // // // $Id: G4Square.hh,v 1.8 2006/06/29 19:06:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Square.icc b/source/graphics_reps/include/G4Square.icc index 7a784df26c..15830d8480 100644 --- a/source/graphics_reps/include/G4Square.icc +++ b/source/graphics_reps/include/G4Square.icc @@ -25,7 +25,7 @@ // // // $Id: G4Square.icc,v 1.4 2006/06/29 19:06:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Text.hh b/source/graphics_reps/include/G4Text.hh index a3411af1d1..784bbcc862 100644 --- a/source/graphics_reps/include/G4Text.hh +++ b/source/graphics_reps/include/G4Text.hh @@ -25,7 +25,7 @@ // // // $Id: G4Text.hh,v 1.10 2006/06/29 19:06:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Text.icc b/source/graphics_reps/include/G4Text.icc index c1d8e42759..33830fe368 100644 --- a/source/graphics_reps/include/G4Text.icc +++ b/source/graphics_reps/include/G4Text.icc @@ -25,7 +25,7 @@ // // // $Id: G4Text.icc,v 1.4 2006/06/29 19:06:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4TypeKey.hh b/source/graphics_reps/include/G4TypeKey.hh index 4c9e184fa6..f0c1653f21 100644 --- a/source/graphics_reps/include/G4TypeKey.hh +++ b/source/graphics_reps/include/G4TypeKey.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TypeKey.hh,v 1.2 2006/12/13 15:44:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Base type key class // diff --git a/source/graphics_reps/include/G4TypeKeyT.hh b/source/graphics_reps/include/G4TypeKeyT.hh index 16f481c444..93f835ce9f 100644 --- a/source/graphics_reps/include/G4TypeKeyT.hh +++ b/source/graphics_reps/include/G4TypeKeyT.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TypeKeyT.hh,v 1.2 2006/12/13 15:44:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Type key class // diff --git a/source/graphics_reps/include/G4VFilter.hh b/source/graphics_reps/include/G4VFilter.hh index b4074aa164..a3f6014c9a 100644 --- a/source/graphics_reps/include/G4VFilter.hh +++ b/source/graphics_reps/include/G4VFilter.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VFilter.hh,v 1.4 2006/08/25 19:39:39 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Abstract filter class. // diff --git a/source/graphics_reps/include/G4VGraphicsScene.hh b/source/graphics_reps/include/G4VGraphicsScene.hh index 8896d20c6d..0f537d7ef0 100644 --- a/source/graphics_reps/include/G4VGraphicsScene.hh +++ b/source/graphics_reps/include/G4VGraphicsScene.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VGraphicsScene.hh,v 1.9 2006/07/10 15:19:29 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VGraphicsScene.hh,v 1.10 2007/07/17 17:52:20 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // John Allison 19th July 1996 // // Class Description: @@ -68,6 +68,9 @@ class G4VGraphicsScene { public: // With description + G4VGraphicsScene(); + virtual ~G4VGraphicsScene(); + /////////////////////////////////////////////////////////////////// // Methods for adding solids to the scene handler. They // must always be called in the triplet PreAddSolid, AddSolid and diff --git a/source/graphics_reps/include/G4VMarker.hh b/source/graphics_reps/include/G4VMarker.hh index c2fcc3bfb3..fb4d35215e 100644 --- a/source/graphics_reps/include/G4VMarker.hh +++ b/source/graphics_reps/include/G4VMarker.hh @@ -25,7 +25,7 @@ // // // $Id: G4VMarker.hh,v 1.12 2006/06/29 19:06:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4VMarker - base class for markers - circles, squares, etc. diff --git a/source/graphics_reps/include/G4VMarker.icc b/source/graphics_reps/include/G4VMarker.icc index fd19d6d96d..f4ab58a6b1 100644 --- a/source/graphics_reps/include/G4VMarker.icc +++ b/source/graphics_reps/include/G4VMarker.icc @@ -25,7 +25,7 @@ // // // $Id: G4VMarker.icc,v 1.7 2006/06/29 19:06:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/graphics_reps/include/G4VVisManager.hh b/source/graphics_reps/include/G4VVisManager.hh index f426cd4ddb..6cc8c60814 100644 --- a/source/graphics_reps/include/G4VVisManager.hh +++ b/source/graphics_reps/include/G4VVisManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4VVisManager.hh,v 1.13 2006/09/12 18:29:31 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // John Allison 19/Oct/1996. // // Class Description: diff --git a/source/graphics_reps/include/G4VisAttributes.hh b/source/graphics_reps/include/G4VisAttributes.hh index 11655f5e43..6e07eecdb4 100644 --- a/source/graphics_reps/include/G4VisAttributes.hh +++ b/source/graphics_reps/include/G4VisAttributes.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisAttributes.hh,v 1.19 2007/01/05 14:12:13 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 23rd October 1996 diff --git a/source/graphics_reps/include/G4VisAttributes.icc b/source/graphics_reps/include/G4VisAttributes.icc index 2470d63265..74491ccaa0 100644 --- a/source/graphics_reps/include/G4VisAttributes.icc +++ b/source/graphics_reps/include/G4VisAttributes.icc @@ -25,7 +25,7 @@ // // // $Id: G4VisAttributes.icc,v 1.14 2007/01/05 14:12:13 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 18th November 1996 diff --git a/source/graphics_reps/include/G4VisExtent.hh b/source/graphics_reps/include/G4VisExtent.hh index 96e3bdb4f2..815ab7ff77 100644 --- a/source/graphics_reps/include/G4VisExtent.hh +++ b/source/graphics_reps/include/G4VisExtent.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisExtent.hh,v 1.10 2006/06/29 19:06:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A.Walkden 28/11/95 diff --git a/source/graphics_reps/include/G4Visible.hh b/source/graphics_reps/include/G4Visible.hh index 7399073d4c..8cd7d60ae0 100644 --- a/source/graphics_reps/include/G4Visible.hh +++ b/source/graphics_reps/include/G4Visible.hh @@ -25,7 +25,7 @@ // // // $Id: G4Visible.hh,v 1.13 2006/11/07 11:53:16 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 30th October 1996 diff --git a/source/graphics_reps/include/G4Visible.icc b/source/graphics_reps/include/G4Visible.icc index 56c7164327..ab8ee0e0fe 100644 --- a/source/graphics_reps/include/G4Visible.icc +++ b/source/graphics_reps/include/G4Visible.icc @@ -25,7 +25,7 @@ // // // $Id: G4Visible.icc,v 1.8 2006/11/07 11:53:16 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 30th October 1996 diff --git a/source/graphics_reps/include/HepPolyhedron.h b/source/graphics_reps/include/HepPolyhedron.h index 4b72776da4..feb7d9dcda 100644 --- a/source/graphics_reps/include/HepPolyhedron.h +++ b/source/graphics_reps/include/HepPolyhedron.h @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: HepPolyhedron.h,v 1.21 2006/06/29 19:06:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HepPolyhedron.h,v 1.22 2007/07/18 13:57:04 tnikitin Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class Description: @@ -400,6 +400,17 @@ public: virtual ~HepPolyhedronPara(); }; +class HepPolyhedronParaboloid : public HepPolyhedron +{ +public: + HepPolyhedronParaboloid(double r1, + double r2, + double dz, + double Phi1, + double Dphi); + virtual ~HepPolyhedronParaboloid(); +}; + class HepPolyhedronCons : public HepPolyhedron { public: HepPolyhedronCons(double Rmn1, double Rmx1, diff --git a/source/graphics_reps/src/G4AttCheck.cc b/source/graphics_reps/src/G4AttCheck.cc index a9cb1ad840..1d40cf6280 100644 --- a/source/graphics_reps/src/G4AttCheck.cc +++ b/source/graphics_reps/src/G4AttCheck.cc @@ -25,7 +25,7 @@ // // // $Id: G4AttCheck.cc,v 1.15 2006/11/07 11:50:22 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4AttCheck.hh" diff --git a/source/graphics_reps/src/G4AttDef.cc b/source/graphics_reps/src/G4AttDef.cc index e1e564fe6f..8dccc5f78c 100644 --- a/source/graphics_reps/src/G4AttDef.cc +++ b/source/graphics_reps/src/G4AttDef.cc @@ -25,7 +25,7 @@ // // // $Id: G4AttDef.cc,v 1.2 2006/11/01 10:15:05 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4AttDef.hh" diff --git a/source/graphics_reps/src/G4AttDefStore.cc b/source/graphics_reps/src/G4AttDefStore.cc index cece1f5e28..647c354b40 100644 --- a/source/graphics_reps/src/G4AttDefStore.cc +++ b/source/graphics_reps/src/G4AttDefStore.cc @@ -25,7 +25,7 @@ // // // $Id: G4AttDefStore.cc,v 1.11 2007/04/03 13:58:08 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4AttDefStore.hh" diff --git a/source/graphics_reps/src/G4AttHolder.cc b/source/graphics_reps/src/G4AttHolder.cc index 6c461fc38f..3e77784b72 100644 --- a/source/graphics_reps/src/G4AttHolder.cc +++ b/source/graphics_reps/src/G4AttHolder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4AttHolder.cc,v 1.3 2006/11/01 10:11:44 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4AttHolder.hh" diff --git a/source/graphics_reps/src/G4AttUtils.cc b/source/graphics_reps/src/G4AttUtils.cc index 2c08d2f141..1c5b62c59a 100644 --- a/source/graphics_reps/src/G4AttUtils.cc +++ b/source/graphics_reps/src/G4AttUtils.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4AttUtils.cc,v 1.1 2006/09/11 18:04:59 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay September 2006 // diff --git a/source/graphics_reps/src/G4Circle.cc b/source/graphics_reps/src/G4Circle.cc index 02b80ab73e..fe47cd5878 100644 --- a/source/graphics_reps/src/G4Circle.cc +++ b/source/graphics_reps/src/G4Circle.cc @@ -25,7 +25,7 @@ // // // $Id: G4Circle.cc,v 1.7 2006/06/29 19:06:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/graphics_reps/src/G4Colour.cc b/source/graphics_reps/src/G4Colour.cc index f5fd26b707..0c4d4afdb2 100644 --- a/source/graphics_reps/src/G4Colour.cc +++ b/source/graphics_reps/src/G4Colour.cc @@ -25,7 +25,7 @@ // // // $Id: G4Colour.cc,v 1.11 2007/01/05 14:06:28 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 20th October 1996 diff --git a/source/graphics_reps/src/G4NURBS.cc b/source/graphics_reps/src/G4NURBS.cc index f89f711845..1f45bab4ba 100644 --- a/source/graphics_reps/src/G4NURBS.cc +++ b/source/graphics_reps/src/G4NURBS.cc @@ -25,7 +25,7 @@ // // // $Id: G4NURBS.cc,v 1.9 2006/06/29 19:06:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4NURBSbox.cc b/source/graphics_reps/src/G4NURBSbox.cc index a3250a3d82..3acd4ca100 100644 --- a/source/graphics_reps/src/G4NURBSbox.cc +++ b/source/graphics_reps/src/G4NURBSbox.cc @@ -25,7 +25,7 @@ // // // $Id: G4NURBSbox.cc,v 1.7 2006/06/29 19:06:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4NURBScylinder.cc b/source/graphics_reps/src/G4NURBScylinder.cc index 1562b32b5d..397af203b8 100644 --- a/source/graphics_reps/src/G4NURBScylinder.cc +++ b/source/graphics_reps/src/G4NURBScylinder.cc @@ -25,7 +25,7 @@ // // // $Id: G4NURBScylinder.cc,v 1.8 2006/06/29 19:06:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4NURBShexahedron.cc b/source/graphics_reps/src/G4NURBShexahedron.cc index 7101f5758f..dfc7191fac 100644 --- a/source/graphics_reps/src/G4NURBShexahedron.cc +++ b/source/graphics_reps/src/G4NURBShexahedron.cc @@ -25,7 +25,7 @@ // // // $Id: G4NURBShexahedron.cc,v 1.7 2006/06/29 19:06:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // hexahedron implementation // OC 17 9 96 diff --git a/source/graphics_reps/src/G4NURBStube.cc b/source/graphics_reps/src/G4NURBStube.cc index 8c5ff39ecf..aa5a79804c 100644 --- a/source/graphics_reps/src/G4NURBStube.cc +++ b/source/graphics_reps/src/G4NURBStube.cc @@ -25,7 +25,7 @@ // // // $Id: G4NURBStube.cc,v 1.8 2006/06/29 19:06:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4NURBStubesector.cc b/source/graphics_reps/src/G4NURBStubesector.cc index b887b674cd..1838803884 100644 --- a/source/graphics_reps/src/G4NURBStubesector.cc +++ b/source/graphics_reps/src/G4NURBStubesector.cc @@ -25,7 +25,7 @@ // // // $Id: G4NURBStubesector.cc,v 1.12 2006/06/29 19:06:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4PlacedPolyhedron.cc b/source/graphics_reps/src/G4PlacedPolyhedron.cc index cedfa24247..9598f3cb77 100644 --- a/source/graphics_reps/src/G4PlacedPolyhedron.cc +++ b/source/graphics_reps/src/G4PlacedPolyhedron.cc @@ -25,7 +25,7 @@ // // // $Id: G4PlacedPolyhedron.cc,v 1.4 2006/06/29 19:06:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4PlacedPolyhedron.hh" diff --git a/source/graphics_reps/src/G4Point3DList.cc b/source/graphics_reps/src/G4Point3DList.cc index d1a6b163af..ca2a171630 100644 --- a/source/graphics_reps/src/G4Point3DList.cc +++ b/source/graphics_reps/src/G4Point3DList.cc @@ -25,7 +25,7 @@ // // // $Id: G4Point3DList.cc,v 1.7 2006/06/29 19:07:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison July 1995 diff --git a/source/graphics_reps/src/G4Polyhedron.cc b/source/graphics_reps/src/G4Polyhedron.cc index 595b3abf09..c9d828bef4 100644 --- a/source/graphics_reps/src/G4Polyhedron.cc +++ b/source/graphics_reps/src/G4Polyhedron.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Polyhedron.cc,v 1.20 2006/06/29 19:07:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Polyhedron.cc,v 1.21 2007/07/18 14:07:24 tnikitin Exp $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4Polyhedron.hh" @@ -131,6 +131,11 @@ G4PolyhedronTubs::G4PolyhedronTubs (G4double Rmin, G4double Rmax, G4double Dz, G4PolyhedronTubs::~G4PolyhedronTubs () {} +G4PolyhedronParaboloid::G4PolyhedronParaboloid (G4double r1, G4double r2, G4double dz, G4double sPhi, G4double dPhi): + G4Polyhedron (HepPolyhedronParaboloid(r1, r2, dz, sPhi, dPhi)) {} + +G4PolyhedronParaboloid::~G4PolyhedronParaboloid () {} + G4PolyhedronEllipsoid::G4PolyhedronEllipsoid (G4double ax, G4double by, G4double cz, G4double zCut1, G4double zCut2): diff --git a/source/graphics_reps/src/G4Polyline.cc b/source/graphics_reps/src/G4Polyline.cc index a3c906edb8..482136fce5 100644 --- a/source/graphics_reps/src/G4Polyline.cc +++ b/source/graphics_reps/src/G4Polyline.cc @@ -25,7 +25,7 @@ // // // $Id: G4Polyline.cc,v 1.11 2006/06/29 19:07:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison July 1995 diff --git a/source/graphics_reps/src/G4Polymarker.cc b/source/graphics_reps/src/G4Polymarker.cc index dcaae2ff67..bad199d6f3 100644 --- a/source/graphics_reps/src/G4Polymarker.cc +++ b/source/graphics_reps/src/G4Polymarker.cc @@ -25,7 +25,7 @@ // // // $Id: G4Polymarker.cc,v 1.11 2006/06/29 19:07:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison November 1996 diff --git a/source/graphics_reps/src/G4Scale.cc b/source/graphics_reps/src/G4Scale.cc index 94e8c9c2dd..6784ba79c6 100644 --- a/source/graphics_reps/src/G4Scale.cc +++ b/source/graphics_reps/src/G4Scale.cc @@ -25,7 +25,7 @@ // // // $Id: G4Scale.cc,v 1.9 2006/06/29 19:07:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 21st July 2001 diff --git a/source/graphics_reps/src/G4Square.cc b/source/graphics_reps/src/G4Square.cc index 4f9e6e78fe..6802ab8543 100644 --- a/source/graphics_reps/src/G4Square.cc +++ b/source/graphics_reps/src/G4Square.cc @@ -25,7 +25,7 @@ // // // $Id: G4Square.cc,v 1.6 2006/06/29 19:07:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/graphics_reps/src/G4Text.cc b/source/graphics_reps/src/G4Text.cc index b5f50fe73e..9d92682d6e 100644 --- a/source/graphics_reps/src/G4Text.cc +++ b/source/graphics_reps/src/G4Text.cc @@ -25,7 +25,7 @@ // // // $Id: G4Text.cc,v 1.9 2006/06/29 19:07:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/src/G4VGraphicsScene.cc b/source/graphics_reps/src/G4VGraphicsScene.cc new file mode 100644 index 0000000000..bfe44f0664 --- /dev/null +++ b/source/graphics_reps/src/G4VGraphicsScene.cc @@ -0,0 +1,35 @@ +// +// ******************************************************************** +// * 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: G4VGraphicsScene.cc,v 1.1 2007/07/17 17:52:20 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// John Allison 19th July 1996 + +#include "G4VGraphicsScene.hh" + +G4VGraphicsScene::G4VGraphicsScene() {} + +G4VGraphicsScene::~G4VGraphicsScene() {} diff --git a/source/graphics_reps/src/G4VMarker.cc b/source/graphics_reps/src/G4VMarker.cc index 85cf6c5dc1..03a4d4e475 100644 --- a/source/graphics_reps/src/G4VMarker.cc +++ b/source/graphics_reps/src/G4VMarker.cc @@ -25,7 +25,7 @@ // // // $Id: G4VMarker.cc,v 1.11 2006/06/29 19:07:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/graphics_reps/src/G4VVisManager.cc b/source/graphics_reps/src/G4VVisManager.cc index 7608c139f9..c0d8069f4a 100644 --- a/source/graphics_reps/src/G4VVisManager.cc +++ b/source/graphics_reps/src/G4VVisManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4VVisManager.cc,v 1.4 2006/06/29 19:07:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Abstract interface for GEANT4 Visualization Manager. diff --git a/source/graphics_reps/src/G4VisAttributes.cc b/source/graphics_reps/src/G4VisAttributes.cc index 4152e3989b..30db222e74 100644 --- a/source/graphics_reps/src/G4VisAttributes.cc +++ b/source/graphics_reps/src/G4VisAttributes.cc @@ -25,7 +25,7 @@ // // // $Id: G4VisAttributes.cc,v 1.16 2007/01/05 14:12:13 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 23rd October 1996 diff --git a/source/graphics_reps/src/G4VisExtent.cc b/source/graphics_reps/src/G4VisExtent.cc index 0b267a2abe..15568ed08b 100644 --- a/source/graphics_reps/src/G4VisExtent.cc +++ b/source/graphics_reps/src/G4VisExtent.cc @@ -25,7 +25,7 @@ // // // $Id: G4VisExtent.cc,v 1.10 2006/06/29 19:07:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // A.Walkden 28/11/95 diff --git a/source/graphics_reps/src/G4Visible.cc b/source/graphics_reps/src/G4Visible.cc index 6e42effc26..36b5a46a33 100644 --- a/source/graphics_reps/src/G4Visible.cc +++ b/source/graphics_reps/src/G4Visible.cc @@ -25,7 +25,7 @@ // // // $Id: G4Visible.cc,v 1.17 2006/11/07 11:53:16 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 30th October 1996 diff --git a/source/graphics_reps/src/HepPolyhedron.cc b/source/graphics_reps/src/HepPolyhedron.cc index e47bf1519b..575489da48 100644 --- a/source/graphics_reps/src/HepPolyhedron.cc +++ b/source/graphics_reps/src/HepPolyhedron.cc @@ -24,8 +24,13 @@ // ******************************************************************** // // -// $Id: HepPolyhedron.cc,v 1.23 2006/11/07 11:48:51 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +//<<<<<<< HepPolyhedron.cc +// $Id: HepPolyhedron.cc,v 1.26 2007/08/21 14:10:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +//======= +// $Id: HepPolyhedron.cc,v 1.26 2007/08/21 14:10:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +//>>>>>>> 1.24 // // // @@ -1489,6 +1494,127 @@ HepPolyhedronPara::HepPolyhedronPara(double Dx, double Dy, double Dz, HepPolyhedronPara::~HepPolyhedronPara() {} +HepPolyhedronParaboloid::HepPolyhedronParaboloid(double r1, + double r2, + double dz, + double sPhi, + double dPhi) +/*********************************************************************** + * * + * Name: HepPolyhedronParaboloid Date: 28.06.07 * + * ::HepPolyhedronParaboloid * + * Author: Revised: * + * * + * Function: Constructor for paraboloid * + * * + * Input: r1 - inside and outside radiuses at -Dz * + * r2 - inside and outside radiuses at +Dz * + * dz - half length in Z * + * sPhi - starting angle of the segment * + * dPhi - segment range * + * * + ***********************************************************************/ +{ + static double wholeCircle=twopi; + + // C H E C K I N P U T P A R A M E T E R S + + int k = 0; + if (r1 < 0. || r2 <= 0.) k = 1; + + if (dz <= 0.) k += 2; + + double phi1, phi2, dphi; + + if(dPhi < 0.) + { + phi2 = sPhi; phi1 = phi2 + dPhi; + } + else if(dPhi == 0.) + { + phi1 = sPhi; phi2 = phi1 + wholeCircle; + } + else + { + phi1 = sPhi; phi2 = phi1 + dPhi; + } + dphi = phi2 - phi1; + + if (std::abs(dphi-wholeCircle) < perMillion) dphi = wholeCircle; + if (dphi > wholeCircle) k += 4; + + if (k != 0) { + std::cerr << "HepPolyhedronParaboloid: error in input parameters"; + if ((k & 1) != 0) std::cerr << " (radiuses)"; + if ((k & 2) != 0) std::cerr << " (half-length)"; + if ((k & 4) != 0) std::cerr << " (angles)"; + std::cerr << std::endl; + std::cerr << " r1=" << r1; + std::cerr << " r2=" << r2; + std::cerr << " dz=" << dz << " sPhi=" << sPhi << " dPhi=" << dPhi + << std::endl; + return; + } + + // P R E P A R E T W O P O L Y L I N E S + + int n = GetNumberOfRotationSteps(); + double a1 = 2 * dz * r2*r2 / (r2*r2 - r1*r1), + a2 = 2 * dz * r1*r1 / (r2*r2 - r1*r1), + b = 2 * r2, A, l1, l2 = 0, l, scale, dl, k1, k2; + A = std::sqrt(b*b + 16 * a1*a1); + l1 = A / 2 + b*b / 8 / a1 * std::log((4 * a1 + A) / b); + if(a2 != 0) + { + A = std::sqrt(b*b + 16 * a2*a2); + l2 = A / 2 + b*b / 8 / a2 * std::log((4 * a2 + A) / b); + } + l = (l1 - l2) / 2; + dl = l / n; + scale = dl; + k1 = (r2*r2 - r1*r1) / 2 / dz; + k2 = (r2*r2 + r1*r1) / 2; + + double *zz = new double[n + 1], *rr = new double[n + 1]; + + zz[0] = dz; + rr[0] = r2; + + + for(int i = 1; i < n - 1; i++) + { + rr[i] = rr[i-1] - dl; + zz[i] = (rr[i]*rr[i] - k2) / k1; + while(rr[i] > 0 && (scale = std::sqrt((rr[i] - rr[i-1])*(rr[i] - rr[i-1]) + (zz[i]-zz[i-1])*(zz[i]-zz[i-1]))) < 0.9999 * dl || scale > 1.0001 * dl) // This should maybe be changed to a constant + { + rr[i] += (scale - dl) / scale * (rr[i-1] - rr[i]); + zz[i] = (rr[i]*rr[i] - k2) / k1; + } + if(rr[i] < 0) + { + rr[i] = 0; + zz[i] = 0; + } + } + + + zz[n-1] = -dz; + rr[n-1] = r1; + + zz[n] = dz; + rr[n] = 0; + + // R O T A T E P O L Y L I N E S + + RotateAroundZ(0, phi1, dphi, n, 1, zz, rr, -1, -1); + SetReferences(); + + delete zz; + delete rr; +} + +HepPolyhedronParaboloid::~HepPolyhedronParaboloid() {} + HepPolyhedronCons::HepPolyhedronCons(double Rmn1, double Rmx1, double Rmn2, @@ -2041,8 +2167,8 @@ HepPolyhedronEllipticalCone::HepPolyhedronEllipticalCone(double ax, { Point3D * p= pV; for (int i=0; isetX( p->x() * ax / h); - p->setY( p->y() * ay / h); + p->setX( p->x() * ax ); + p->setY( p->y() * ay ); } } } diff --git a/source/intercoms/History b/source/intercoms/History index 7c33bbfc26..013cfc7b09 100644 --- a/source/intercoms/History +++ b/source/intercoms/History @@ -1,4 +1,4 @@ -$Id: History,v 1.67 2006/11/14 08:35:40 gcosmo Exp $ +$Id: History,v 1.70 2007/08/10 09:47:43 kmura Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,20 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +August 10, 2007 K.Murakami (intercoms-V09-00-01) +- G4UIbatch.cc : fixed the problem on 32bit-Linux. + +July 16, 2007 K.Murakami (intercoms-V09-00-00) +- G4UImanager.cc : a bug fixed. (invalid returned object) +- G4UIbatch.cc : completely revised. + * bug fixed for the treatment of the last line + * add support for continued line by \, _ + * string after '#' is treated as comment + * white spaces at the head of a line are allowed. + +June 6, 2007, M.Asai +- Introducing /control/getEnv and /control/echo commands. + November 3, 2006, M.Verderi (intercoms-V08-01-01) - Added missing forward declaration of G4VPhysicalVolume in G4VFlavoredParallelWorld header. diff --git a/source/intercoms/include/G4UIaliasList.hh b/source/intercoms/include/G4UIaliasList.hh index a24c2ede77..e16ad9ed46 100644 --- a/source/intercoms/include/G4UIaliasList.hh +++ b/source/intercoms/include/G4UIaliasList.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIaliasList.hh,v 1.6 2006/06/29 19:07:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UIaliasList_h diff --git a/source/intercoms/include/G4UIbatch.hh b/source/intercoms/include/G4UIbatch.hh index 15066add9a..bfdc0a75fb 100644 --- a/source/intercoms/include/G4UIbatch.hh +++ b/source/intercoms/include/G4UIbatch.hh @@ -23,56 +23,55 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// $Id: G4UIbatch.hh,v 1.10 2007/07/16 10:15:12 kmura Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// $Id: G4UIbatch.hh,v 1.9 2006/06/29 19:07:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// ==================================================================== +// G4UIbatch.hh // -// $id$ +// This is a concrete class of G4UIsession. +// +// This class object is instantiated by G4UImanager at every time +// when "/control/execute macro_file" command is executed. +// Also in the case of pure batch mode with a macro file, +// this class can be used as other ordinary G4UIsession +// concrete classes, i.e. SessionStart() is invoked in main(). +// ==================================================================== +#ifndef G4UI_BATCH_H +#define G4UI_BATCH_H 1 -#ifndef G4UIbatch_h -#define G4UIbatch_h 1 - -#include "globals.hh" #include "G4UIsession.hh" #include -class G4UImanager; +// ==================================================================== +// +// class definition +// +// ==================================================================== -// class description -// This is a concrete class of G4UIsession. -// This class is constructed by G4UImanager when the user -// applies "/control/execute macro_file" command. -// If the user's application runs in pure batch mode with -// only one fixed-name macro file, he/she can construct this -// class object with giving the file name and use it as other -// ordinary G4UIsession concrete class, i.e. invoke SessionStart() -// from his/her main(). +class G4UIbatch : public G4UIsession { +private: + G4UIsession* previousSession; -class G4UIbatch : public G4UIsession -{ - public: // with description - G4UIbatch(const char* fileName,G4UIsession* prevSession=NULL); - // Constructor. - // "prevSession" must be NULL if this class is constructed - // from main(). - public: - ~G4UIbatch(); + std::ifstream macroStream; + G4bool isOpened; - G4UIsession * SessionStart(); - void PauseSessionStart(G4String Prompt); + //static G4bool commandFailed; + + // get command from a batch script file + G4String ReadCommand(); + G4int ExecCommand(const G4String& command); + +public: + G4UIbatch(const char* fileName, G4UIsession* prevSession=0); + // "prevSession" must be 0 if this class is constructed + // from main(). + + ~G4UIbatch(); - private: - G4UImanager * UImanager; - G4UIsession * previousSession; - std::ifstream macroFile; - G4String macroFileName; - G4bool openFailed; + virtual G4UIsession* SessionStart(); + virtual void PauseSessionStart(G4String Prompt); - private: - static G4bool commandFailed; }; - - #endif - diff --git a/source/intercoms/include/G4UIcmdWith3Vector.hh b/source/intercoms/include/G4UIcmdWith3Vector.hh index 37465021fc..990b596409 100644 --- a/source/intercoms/include/G4UIcmdWith3Vector.hh +++ b/source/intercoms/include/G4UIcmdWith3Vector.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWith3Vector.hh,v 1.7 2006/06/29 19:07:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/include/G4UIcmdWith3VectorAndUnit.hh b/source/intercoms/include/G4UIcmdWith3VectorAndUnit.hh index 782d347d3a..6094e026b2 100644 --- a/source/intercoms/include/G4UIcmdWith3VectorAndUnit.hh +++ b/source/intercoms/include/G4UIcmdWith3VectorAndUnit.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWith3VectorAndUnit.hh,v 1.8 2006/06/29 19:07:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/include/G4UIcmdWithABool.hh b/source/intercoms/include/G4UIcmdWithABool.hh index 13e5c5beea..f52fbc67f3 100644 --- a/source/intercoms/include/G4UIcmdWithABool.hh +++ b/source/intercoms/include/G4UIcmdWithABool.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWithABool.hh,v 1.7 2006/06/29 19:07:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/include/G4UIcmdWithADouble.hh b/source/intercoms/include/G4UIcmdWithADouble.hh index 9b0670a8d6..8f6cee5b9d 100644 --- a/source/intercoms/include/G4UIcmdWithADouble.hh +++ b/source/intercoms/include/G4UIcmdWithADouble.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWithADouble.hh,v 1.7 2006/06/29 19:07:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/include/G4UIcmdWithADoubleAndUnit.hh b/source/intercoms/include/G4UIcmdWithADoubleAndUnit.hh index 07241d4fb9..4df1d6a8b1 100644 --- a/source/intercoms/include/G4UIcmdWithADoubleAndUnit.hh +++ b/source/intercoms/include/G4UIcmdWithADoubleAndUnit.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWithADoubleAndUnit.hh,v 1.8 2006/06/29 19:07:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/include/G4UIcmdWithAString.hh b/source/intercoms/include/G4UIcmdWithAString.hh index e4a753bd3e..bc6cc71716 100644 --- a/source/intercoms/include/G4UIcmdWithAString.hh +++ b/source/intercoms/include/G4UIcmdWithAString.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWithAString.hh,v 1.5 2006/06/29 19:07:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/include/G4UIcmdWithAnInteger.hh b/source/intercoms/include/G4UIcmdWithAnInteger.hh index de447ee13d..1f894ea5a8 100644 --- a/source/intercoms/include/G4UIcmdWithAnInteger.hh +++ b/source/intercoms/include/G4UIcmdWithAnInteger.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWithAnInteger.hh,v 1.7 2006/06/29 19:08:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/include/G4UIcmdWithoutParameter.hh b/source/intercoms/include/G4UIcmdWithoutParameter.hh index f81c9dd97c..1795dd5ab4 100644 --- a/source/intercoms/include/G4UIcmdWithoutParameter.hh +++ b/source/intercoms/include/G4UIcmdWithoutParameter.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWithoutParameter.hh,v 1.5 2006/06/29 19:08:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/include/G4UIcommand.hh b/source/intercoms/include/G4UIcommand.hh index 73e7049311..c94c1225cb 100644 --- a/source/intercoms/include/G4UIcommand.hh +++ b/source/intercoms/include/G4UIcommand.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIcommand.hh,v 1.15 2006/06/29 19:08:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/include/G4UIcommandStatus.hh b/source/intercoms/include/G4UIcommandStatus.hh index 36ee9ac3d5..710688d8d8 100644 --- a/source/intercoms/include/G4UIcommandStatus.hh +++ b/source/intercoms/include/G4UIcommandStatus.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIcommandStatus.hh,v 1.5 2006/06/29 19:08:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UIcommandStatus_h diff --git a/source/intercoms/include/G4UIcommandTree.hh b/source/intercoms/include/G4UIcommandTree.hh index 5e4344f8d2..f8606a0d9d 100644 --- a/source/intercoms/include/G4UIcommandTree.hh +++ b/source/intercoms/include/G4UIcommandTree.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIcommandTree.hh,v 1.15 2006/06/29 19:08:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UIcommandTree_h diff --git a/source/intercoms/include/G4UIcontrolMessenger.hh b/source/intercoms/include/G4UIcontrolMessenger.hh index ca9ed29c79..d05386c77e 100644 --- a/source/intercoms/include/G4UIcontrolMessenger.hh +++ b/source/intercoms/include/G4UIcontrolMessenger.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4UIcontrolMessenger.hh,v 1.11 2006/06/29 19:08:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4UIcontrolMessenger.hh,v 1.12 2007/06/06 15:14:51 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UIcontrolMessenger_h @@ -54,6 +54,8 @@ class G4UIcommand; // /control/alias // /control/unalias // /control/listAlias +// /control/getEnv +// /control/echo // /control/shell // /control/manual // /control/createHTML @@ -77,6 +79,8 @@ class G4UIcontrolMessenger : public G4UImessenger G4UIcommand * aliasCommand; G4UIcmdWithAString * unaliasCommand; G4UIcmdWithoutParameter * listAliasCommand; + G4UIcmdWithAString * getEnvCmd; + G4UIcmdWithAString * echoCmd; G4UIcmdWithAString * shellCommand; G4UIcommand * loopCommand; G4UIcommand * foreachCommand; diff --git a/source/intercoms/include/G4UIdirectory.hh b/source/intercoms/include/G4UIdirectory.hh index 22e0b7478f..b4f2d07f95 100644 --- a/source/intercoms/include/G4UIdirectory.hh +++ b/source/intercoms/include/G4UIdirectory.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIdirectory.hh,v 1.5 2006/06/29 19:08:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/include/G4UImanager.hh b/source/intercoms/include/G4UImanager.hh index 2c842ad8e9..143a6c927d 100644 --- a/source/intercoms/include/G4UImanager.hh +++ b/source/intercoms/include/G4UImanager.hh @@ -25,7 +25,7 @@ // // // $Id: G4UImanager.hh,v 1.21 2006/06/29 19:08:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UImanager_h diff --git a/source/intercoms/include/G4UImessenger.hh b/source/intercoms/include/G4UImessenger.hh index 6fbea44d18..6e04bad1aa 100644 --- a/source/intercoms/include/G4UImessenger.hh +++ b/source/intercoms/include/G4UImessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4UImessenger.hh,v 1.9 2006/06/29 19:08:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UImessenger_h diff --git a/source/intercoms/include/G4UIparameter.hh b/source/intercoms/include/G4UIparameter.hh index ed969489f3..9b90c64472 100644 --- a/source/intercoms/include/G4UIparameter.hh +++ b/source/intercoms/include/G4UIparameter.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIparameter.hh,v 1.9 2006/06/29 19:08:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------------- diff --git a/source/intercoms/include/G4UIsession.hh b/source/intercoms/include/G4UIsession.hh index 124f7159af..696c6e2740 100644 --- a/source/intercoms/include/G4UIsession.hh +++ b/source/intercoms/include/G4UIsession.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIsession.hh,v 1.5 2006/06/29 19:08:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $id$ diff --git a/source/intercoms/include/G4UItokenNum.hh b/source/intercoms/include/G4UItokenNum.hh index b9aeebe4e3..d71bb3a5fe 100644 --- a/source/intercoms/include/G4UItokenNum.hh +++ b/source/intercoms/include/G4UItokenNum.hh @@ -25,7 +25,7 @@ // // // $Id: G4UItokenNum.hh,v 1.8 2006/06/29 19:08:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4UItokenNum.hh diff --git a/source/intercoms/include/G4UnitsMessenger.hh b/source/intercoms/include/G4UnitsMessenger.hh index 51db29e2e6..1102c9ef93 100644 --- a/source/intercoms/include/G4UnitsMessenger.hh +++ b/source/intercoms/include/G4UnitsMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4UnitsMessenger.hh,v 1.5 2006/06/29 19:08:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class description // diff --git a/source/intercoms/include/G4VFlavoredParallelWorld.hh b/source/intercoms/include/G4VFlavoredParallelWorld.hh index 9333fd3c3f..c32546c23c 100644 --- a/source/intercoms/include/G4VFlavoredParallelWorld.hh +++ b/source/intercoms/include/G4VFlavoredParallelWorld.hh @@ -25,7 +25,7 @@ // // // $Id: G4VFlavoredParallelWorld.hh,v 1.5 2006/11/03 17:44:40 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Abstract interface for GEANT4 Flavored Parallel World. diff --git a/source/intercoms/include/G4VGlobalFastSimulationManager.hh b/source/intercoms/include/G4VGlobalFastSimulationManager.hh index f66aa3c017..e911b33fa0 100644 --- a/source/intercoms/include/G4VGlobalFastSimulationManager.hh +++ b/source/intercoms/include/G4VGlobalFastSimulationManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4VGlobalFastSimulationManager.hh,v 1.5 2006/06/29 19:08:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Abstract interface for GEANT4 Global Fast Simulation Manager. diff --git a/source/intercoms/src/G4UIaliasList.cc b/source/intercoms/src/G4UIaliasList.cc index 626c16683c..74383040e9 100644 --- a/source/intercoms/src/G4UIaliasList.cc +++ b/source/intercoms/src/G4UIaliasList.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIaliasList.cc,v 1.6 2006/06/29 19:08:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4UIaliasList.hh" diff --git a/source/intercoms/src/G4UIbatch.cc b/source/intercoms/src/G4UIbatch.cc index fcab4480d8..0d8f238301 100644 --- a/source/intercoms/src/G4UIbatch.cc +++ b/source/intercoms/src/G4UIbatch.cc @@ -23,105 +23,208 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// $Id: G4UIbatch.cc,v 1.16 2007/08/10 09:46:10 kmura Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// $Id: G4UIbatch.cc,v 1.14 2006/06/29 19:08:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// ==================================================================== +// G4UIbatch.cc // - +// ==================================================================== #include "G4UIbatch.hh" #include "G4UImanager.hh" -#include "G4ios.hh" +#include -G4bool G4UIbatch::commandFailed = false; - -G4UIbatch::G4UIbatch(const char* fileName,G4UIsession* prevSession) - : previousSession(prevSession), macroFileName(fileName), - openFailed(false) +//////////////////////////////////////////////////////////////////////// +static void Tokenize(const G4String& str, std::vector& tokens) +//////////////////////////////////////////////////////////////////////// { - UImanager = G4UImanager::GetUIpointer(); - UImanager->SetSession(this); - macroFile.open((char*)fileName); - if(macroFile.fail()) - { - G4cerr << "macro file <" << fileName << "> could not open." - << G4endl; - openFailed = true; - commandFailed = true; - } - else - { - commandFailed = false; + const char* delimiter= " "; + + str_size pos0= str.find_first_not_of(delimiter); + str_size pos = str.find_first_of(delimiter, pos0); + + while (pos != G4String::npos || pos0 != G4String::npos) { + tokens.push_back(str.substr(pos0, pos-pos0)); + + pos0 = str.find_first_not_of(delimiter, pos); + pos = str.find_first_of(delimiter, pos0); } } +// ==================================================================== +// +// class description +// +// ==================================================================== + +//////////////////////////////////////////////////////////////////// +G4UIbatch::G4UIbatch(const char* fileName, G4UIsession* prevSession) + : previousSession(prevSession), isOpened(false) +//////////////////////////////////////////////////////////////////// +{ + macroStream.open(fileName, std::ios::in); + if(macroStream.fail()) { + G4cerr << "***** Can not open a macro file <" + << fileName << ">" + << G4endl; + } else { + isOpened= true; + } + + G4UImanager::GetUIpointer()-> SetSession(this); +} + + +/////////////////////// G4UIbatch::~G4UIbatch() +/////////////////////// { - if(!openFailed) macroFile.close(); + if(isOpened) macroStream.close(); } -G4UIsession * G4UIbatch::SessionStart() -{ - if(!openFailed) - { - char commandLine[256]; - G4int lineLength = 255; - while(1) - { - macroFile.getline( commandLine, lineLength ); - if( macroFile.bad() ) - { - G4cout << "Cannot read " << macroFileName << "." << G4endl; - commandFailed = true; - break; - } - if( macroFile.eof() ) break; - commandLine[lineLength] = '\0'; - G4String commandString = commandLine; - G4String nC= commandString.strip(G4String::both); - if( commandLine[0] == '#') - { if(G4UImanager::GetUIpointer()->GetVerboseLevel()==2) - { G4cout << commandLine << G4endl; } - } - else if( nC.length() == 0 ) - { continue; } - else if(nC == "exit") - { break; } - else - { - G4int rc = UImanager->ApplyCommand(commandLine); - if(rc) - { - switch(rc) - { - case fCommandNotFound: - G4cerr << "***** COMMAND NOT FOUND <" - << commandLine << "> *****" << G4endl; - break; - case fIllegalApplicationState: - G4cerr << "***** Illegal application state <" - << commandLine << "> *****" << G4endl; - break; - default: - G4int pn = rc%100; - G4cerr << "***** Illegal parameter (" << pn << ") <" - << commandLine << "> *****" << G4endl; - } - G4cerr << "***** Command ignored *****" << G4endl; - commandFailed = true; +///////////////////////////////// +G4String G4UIbatch::ReadCommand() +///////////////////////////////// +{ + enum { BUFSIZE= 4096 }; + static char linebuf[BUFSIZE]; + + G4String cmdtotal= ""; + G4bool qcontinued= false; + while(macroStream.good()) { + macroStream.getline(linebuf, BUFSIZE); + + G4String cmdline(linebuf); + + // TAB-> ' ' conversion + str_size nb=0; + while ((nb= cmdline.find('\t',nb)) != G4String::npos) { + cmdline.replace(nb, 1, " "); + } + + // strip + cmdline= cmdline.strip(G4String::both); + + // skip null line if single line + if(!qcontinued && cmdline.size()==0) continue; + + // tokenize... + std::vector tokens; + Tokenize(cmdline, tokens); + qcontinued= false; + for (G4int i=0; i< G4int(tokens.size()); i++) { + // '\' or '_' is treated as continued line. + if(tokens[i] == '\\' || tokens[i] == '_' ) { + qcontinued= true; + // check nothing after line continuation character + if( i != G4int(tokens.size())-1) { + G4Exception("unexpected character after " + "line continuation character"); } - if(commandFailed) break; + break; // stop parsing } + cmdtotal+= tokens[i]; + cmdtotal+= " "; + } + + if(qcontinued) continue; // read` the next line + + if(cmdtotal.size() != 0) break; + if(macroStream.eof()) break; + } + + // strip again + cmdtotal= cmdtotal.strip(G4String::both); + + // '#' is treated as echoing something + if(cmdtotal[(size_t)0]=='#') return cmdtotal; + + // normally something after # is treated just as comment and ignored + str_size ic= cmdtotal.find_first_of('#'); + if(ic != G4String::npos) { + cmdtotal= cmdtotal(0, ic); + } + + // finally, + if(macroStream.eof() && cmdtotal.size()==0) { + return "exit"; + } + + return cmdtotal; + +} + + +///////////////////////////////////////////////////// +G4int G4UIbatch::ExecCommand(const G4String& command) +///////////////////////////////////////////////////// +{ + G4UImanager* UI= G4UImanager::GetUIpointer(); + G4int rc= UI-> ApplyCommand(command); + + switch(rc) { + case fCommandSucceeded: + break; + case fCommandNotFound: + G4cerr << "***** COMMAND NOT FOUND <" + << command << "> *****" << G4endl; + break; + case fIllegalApplicationState: + G4cerr << "***** Illegal application state <" + << command << "> *****" << G4endl; + break; + default: + G4int pn= rc%100; + G4cerr << "***** Illegal parameter (" << pn << ") <" + << command << "> *****" << G4endl; + } + + return rc; +} + + +/////////////////////////////////////// +G4UIsession * G4UIbatch::SessionStart() +/////////////////////////////////////// +{ + if(!isOpened) return previousSession; + + while(1) { + G4String newCommand = ReadCommand(); + + if(newCommand == "exit") { + break; + } + + // just echo something + if( newCommand[(size_t)0] == '#') { + if(G4UImanager::GetUIpointer()-> GetVerboseLevel()==2) { + G4cout << newCommand << G4endl; + } + continue; + } + + // execute command + G4int rc= ExecCommand(newCommand); + if(rc != fCommandSucceeded) { + G4cerr << G4endl << "***** Batch is interupted!! *****" << G4endl; + break; } } + return previousSession; } + +////////////////////////////////////////////////// void G4UIbatch::PauseSessionStart(G4String Prompt) +////////////////////////////////////////////////// { G4cout << "Pause session <" << Prompt << "> start." << G4endl; + SessionStart(); + G4cout << "Pause session <" << Prompt << "> Terminate." << G4endl; } - diff --git a/source/intercoms/src/G4UIcmdWith3Vector.cc b/source/intercoms/src/G4UIcmdWith3Vector.cc index f443606a3f..04d820598f 100644 --- a/source/intercoms/src/G4UIcmdWith3Vector.cc +++ b/source/intercoms/src/G4UIcmdWith3Vector.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWith3Vector.cc,v 1.8 2006/06/29 19:08:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/src/G4UIcmdWith3VectorAndUnit.cc b/source/intercoms/src/G4UIcmdWith3VectorAndUnit.cc index 98c37f8eaf..05f8af3372 100644 --- a/source/intercoms/src/G4UIcmdWith3VectorAndUnit.cc +++ b/source/intercoms/src/G4UIcmdWith3VectorAndUnit.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWith3VectorAndUnit.cc,v 1.9 2006/06/29 19:08:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/src/G4UIcmdWithABool.cc b/source/intercoms/src/G4UIcmdWithABool.cc index cffd296595..7d9c18cd5c 100644 --- a/source/intercoms/src/G4UIcmdWithABool.cc +++ b/source/intercoms/src/G4UIcmdWithABool.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWithABool.cc,v 1.8 2006/06/29 19:08:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/src/G4UIcmdWithADouble.cc b/source/intercoms/src/G4UIcmdWithADouble.cc index 98daa5d7a6..abb6a8daca 100644 --- a/source/intercoms/src/G4UIcmdWithADouble.cc +++ b/source/intercoms/src/G4UIcmdWithADouble.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWithADouble.cc,v 1.8 2006/06/29 19:08:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/src/G4UIcmdWithADoubleAndUnit.cc b/source/intercoms/src/G4UIcmdWithADoubleAndUnit.cc index 1be0ad18c2..ea4f46109b 100644 --- a/source/intercoms/src/G4UIcmdWithADoubleAndUnit.cc +++ b/source/intercoms/src/G4UIcmdWithADoubleAndUnit.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWithADoubleAndUnit.cc,v 1.9 2006/06/29 19:08:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/src/G4UIcmdWithAString.cc b/source/intercoms/src/G4UIcmdWithAString.cc index 8d57391375..54ecea0b86 100644 --- a/source/intercoms/src/G4UIcmdWithAString.cc +++ b/source/intercoms/src/G4UIcmdWithAString.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWithAString.cc,v 1.6 2006/06/29 19:08:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/src/G4UIcmdWithAnInteger.cc b/source/intercoms/src/G4UIcmdWithAnInteger.cc index 0bc247de3d..db56ede247 100644 --- a/source/intercoms/src/G4UIcmdWithAnInteger.cc +++ b/source/intercoms/src/G4UIcmdWithAnInteger.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWithAnInteger.cc,v 1.8 2006/06/29 19:08:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/src/G4UIcmdWithoutParameter.cc b/source/intercoms/src/G4UIcmdWithoutParameter.cc index 54548d9222..4cef7f7617 100644 --- a/source/intercoms/src/G4UIcmdWithoutParameter.cc +++ b/source/intercoms/src/G4UIcmdWithoutParameter.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIcmdWithoutParameter.cc,v 1.4 2006/06/29 19:08:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/src/G4UIcommand.cc b/source/intercoms/src/G4UIcommand.cc index c83892b35f..ceb02457f4 100644 --- a/source/intercoms/src/G4UIcommand.cc +++ b/source/intercoms/src/G4UIcommand.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIcommand.cc,v 1.25 2006/06/29 19:08:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/src/G4UIcommandTree.cc b/source/intercoms/src/G4UIcommandTree.cc index 92a49e812e..6afde6ac58 100644 --- a/source/intercoms/src/G4UIcommandTree.cc +++ b/source/intercoms/src/G4UIcommandTree.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIcommandTree.cc,v 1.13 2006/06/29 19:08:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4UIcommandTree.hh" diff --git a/source/intercoms/src/G4UIcontrolMessenger.cc b/source/intercoms/src/G4UIcontrolMessenger.cc index c0e088c6c4..c437376845 100644 --- a/source/intercoms/src/G4UIcontrolMessenger.cc +++ b/source/intercoms/src/G4UIcontrolMessenger.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4UIcontrolMessenger.cc,v 1.10 2006/06/29 19:09:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4UIcontrolMessenger.cc,v 1.11 2007/06/06 15:14:51 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #include @@ -126,6 +126,12 @@ G4UIcontrolMessenger::G4UIcontrolMessenger() listAliasCommand = new G4UIcmdWithoutParameter("/control/listAlias",this); listAliasCommand->SetGuidance("List aliases."); + getEnvCmd = new G4UIcmdWithAString("/control/getEnv",this); + getEnvCmd->SetGuidance("Get a shell environment variable and define it as an alias."); + + echoCmd = new G4UIcmdWithAString("/control/echo",this); + echoCmd->SetGuidance("Display the aliased value."); + shellCommand = new G4UIcmdWithAString("/control/shell",this); shellCommand->SetGuidance("Execute a (Unix) SHELL command."); @@ -158,6 +164,8 @@ G4UIcontrolMessenger::~G4UIcontrolMessenger() delete aliasCommand; delete unaliasCommand; delete listAliasCommand; + delete getEnvCmd; + delete echoCmd; delete shellCommand; delete loopCommand; delete foreachCommand; @@ -206,6 +214,21 @@ void G4UIcontrolMessenger::SetNewValue(G4UIcommand * command,G4String newValue) { UI->ListAlias(); } + if(command==getEnvCmd) + { + if(getenv(newValue)) + { + G4String st = "/control/alias "; + st += newValue; + st += " "; + st += getenv(newValue); + UI->ApplyCommand(st); + } + else + { G4cerr << "<" << newValue << "> is not defined as a shell variable. Command ignored." << G4endl; } + } + if(command==echoCmd) + { G4cout << UI->SolveAlias(newValue) << G4endl; } if(command==shellCommand) { system(newValue); diff --git a/source/intercoms/src/G4UIdirectory.cc b/source/intercoms/src/G4UIdirectory.cc index 1fd98e191c..34be99dad5 100644 --- a/source/intercoms/src/G4UIdirectory.cc +++ b/source/intercoms/src/G4UIdirectory.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIdirectory.cc,v 1.4 2006/06/29 19:09:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/intercoms/src/G4UImanager.cc b/source/intercoms/src/G4UImanager.cc index e8a5932ed4..c6d76cff15 100644 --- a/source/intercoms/src/G4UImanager.cc +++ b/source/intercoms/src/G4UImanager.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4UImanager.cc,v 1.32 2006/10/17 16:32:49 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4UImanager.cc,v 1.33 2007/07/16 10:14:36 kmura Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------------- @@ -318,7 +318,8 @@ G4String G4UImanager::SolveAlias(const char* aCmd) for(G4int iz=0;izGetTree(); - /*int*/unsigned i = newCommand.index(" "); + /*int*/str_size i = newCommand.index(" "); if( i != std::string::npos ) { G4String newValue = newCommand(i+1,newCommand.length()-(i+1)); diff --git a/source/interfaces/GAG/src/G4UIGainServer.cc b/source/interfaces/GAG/src/G4UIGainServer.cc index b1a4241d68..a37f16dbf7 100644 --- a/source/interfaces/GAG/src/G4UIGainServer.cc +++ b/source/interfaces/GAG/src/G4UIGainServer.cc @@ -25,8 +25,8 @@ // // // 12/06/2002 G4UIGainServer H. MInamimoto and H. Yoshida created -// $Id: G4UIGainServer.cc,v 1.10 2006/06/29 19:09:25 gunter Exp $ -// $Name: geant4-09-00 $ +// $Id: G4UIGainServer.cc,v 1.11 2007/11/16 14:59:35 kmura Exp $ +// $Name: geant4-09-01 $ // #ifndef WIN32 @@ -537,7 +537,7 @@ void G4UIGainServer::ListDirectory(G4String newCommand){ void G4UIGainServer::TerminalHelp(G4String newCommand){ /////////////////////////////////////////////// G4UIcommandTree* treeTop = UI->GetTree(); - unsigned i = newCommand.index(" "); + str_size i = newCommand.index(" "); if(i!=std::string::npos){ G4String newValue = newCommand(i+1,newCommand.length()-(i+1)); diff --git a/source/interfaces/History b/source/interfaces/History index d6ba51c02d..9df4b2d4b9 100644 --- a/source/interfaces/History +++ b/source/interfaces/History @@ -1,4 +1,4 @@ -$Id: History,v 1.82 2007/06/19 10:38:28 gcosmo Exp $ +$Id: History,v 1.90 2007/11/16 15:03:17 kmura Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,43 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +16 November 2007, Koichi Murakami (interfaces-V09-00-03) + - G4UIGainServer.cc: cleared a compilation warning. + - tagged for the 9.1 release. + +15 Nov 2007, Laurent Garnier + - G4UIQt,G4Qt : Adding a GEANT4_QT_DEBUG flag to hide all debug messages + - G4UIQt,G4Qt : Compilation improvements for Qt3 + - G4UIQt,G4Qt : Minors corrections on G4UIQt helpWidget + +13 Nov 2007, Laurent Garnier + - G4UIQt,G4Qt : Moving all moc in one big file interface/G4UIQT_moc.cc, + including Qt3 and Qt4 moc support + +09 Nov 2007, Laurent Garnier + - G4UIQt,G4Qt : Change all include directive to be compatible with Qt3 + +27 Sept 2007, Laurent Garnier + - Adding sur files for G4UIQt driver + +06 November Koichi Murakami +- G4UItcsh.cc: store shell history across sessions. + +30 October 2007 Koichi Murakami (interfaces-V09-00-02) +- Guy committed the new Qt interface (28/Sep). +- Add "#ifdef G4UI_BUILD_QT_SESSION" protection in src/G4UIQt_moc.cc. +- Remove Qt interface from the current tag. +- G4UIGAG.cc: suppress a compilation warning. + +30 October 2007 Koichi Murakami (interfaces-V09-00-01) +- Makoto updated the implementation of the signal handler for Ctrl-C. + +28 October 2007, Makoto Asai +- Remove improper dependency from interfaces/basic to run in GNUmakefile + +02 August 2007, Koichi Murakami (interfaces-V09-00-00) +- Fix compilation warning on SUN-CC in G4UIterminal.cc + 19 June 2007, Gabriele Cosmo (interfaces-V08-03-02) - Fix compilation error on Windows ('theShell' not declared). diff --git a/source/interfaces/basic/GNUmakefile b/source/interfaces/basic/GNUmakefile index 3f0ff6ecaa..b6809d9374 100644 --- a/source/interfaces/basic/GNUmakefile +++ b/source/interfaces/basic/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.3 2007/05/21 07:30:33 kmura Exp $ +# $Id: GNUmakefile,v 1.4 2007/10/29 18:49:45 asaim Exp $ # ------------------------------------------------------------- # GNUmakefile for interfaces/basic library. John Allison, 6/7/98. @@ -15,32 +15,6 @@ include $(G4INSTALL)/config/interactivity.gmk CPPFLAGS += -I$(G4BASE)/global/management/include CPPFLAGS += -I$(G4BASE)/interfaces/common/include CPPFLAGS += -I$(G4BASE)/intercoms/include -CPPFLAGS += -I$(G4BASE)/global/management/include \ - -I$(G4BASE)/global/HEPRandom/include \ - -I$(G4BASE)/global/HEPGeometry/include \ - -I$(G4BASE)/run/include \ - -I$(G4BASE)/event/include \ - -I$(G4BASE)/track/include \ - -I$(G4BASE)/tracking/include \ - -I$(G4BASE)/particles/management/include \ - -I$(G4BASE)/processes/management/include \ - -I$(G4BASE)/processes/cuts/include \ - -I$(G4BASE)/processes/electromagnetic/utils/include \ - -I$(G4BASE)/processes/transportation/include \ - -I$(G4BASE)/processes/decay/include \ - -I$(G4BASE)/materials/include \ - -I$(G4BASE)/geometry/management/include \ - -I$(G4BASE)/geometry/volumes/include \ - -I$(G4BASE)/geometry/navigation/include \ - -I$(G4BASE)/geometry/magneticfield/include \ - -I$(G4BASE)/geometry/biasing/include \ - -I$(G4BASE)/digits_hits/detector/include \ - -I$(G4BASE)/digits_hits/hits/include \ - -I$(G4BASE)/digits_hits/digits/include \ - -I$(G4BASE)/interfaces/common/include \ - -I$(G4BASE)/interfaces/basic/include \ - -I$(G4BASE)/intercoms/include \ - -I$(G4BASE)/graphics_reps/include include $(G4INSTALL)/config/common.gmk diff --git a/source/interfaces/basic/include/G4UIArrayString.hh b/source/interfaces/basic/include/G4UIArrayString.hh index 1919f0a2fd..e60ae3ca90 100644 --- a/source/interfaces/basic/include/G4UIArrayString.hh +++ b/source/interfaces/basic/include/G4UIArrayString.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIArrayString.hh,v 1.3 2006/06/29 19:09:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UIArrayString_h diff --git a/source/interfaces/basic/include/G4UIQt.hh b/source/interfaces/basic/include/G4UIQt.hh new file mode 100644 index 0000000000..7ae063798c --- /dev/null +++ b/source/interfaces/basic/include/G4UIQt.hh @@ -0,0 +1,163 @@ +// +// ******************************************************************** +// * 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: G4UIQt.hh,v 1.7 2007/11/15 18:53:59 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +#ifndef G4UIQt_h +#define G4UIQt_h + +#if defined(G4UI_BUILD_QT_SESSION) || defined(G4UI_USE_QT) + +#include + +#include "G4VBasicShell.hh" +#include "G4VInteractiveSession.hh" + +#include + +class QMainWindow; +class QLineEdit; +class G4UIsession; +#if QT_VERSION < 0x040000 +class QListView; +class QListViewItem; +#else +class QListWidget; +class QTreeWidget; +class QTreeWidgetItem; +#endif +class QTextEdit; +class QLabel; +class QDialog; + +// Class description : +// +// G4UIQt : class to handle a Motif interactive session. +// G4UIQt is the Motif version of G4UIterminal. +// +// A command box is at disposal for entering/recalling Geant4 commands. +// A menubar could be customized through the AddMenu, AddButton methods. +// Note that there are corresponding Geant4 commands to add a +// menus in the menubar and add buttons in a menu. +// Ex : +// /gui/addMenu test Test +// /gui/addButton test Init /run/initialize +// /gui/addButton test "Set gun" "/control/execute gun.g4m" +// /gui/addButton test "Run one event" "/run/beamOn 1" +// +// Command completion, by typing "tab" key, is available on the +// command line. +// +// Class description - end : + +class G4UIQt : public QObject, public G4VBasicShell, public G4VInteractiveSession { + Q_OBJECT + +public: // With description + G4UIQt(int,char**); + // (argv, argc) or (0, NULL) had to be given. + G4UIsession* SessionStart(); + // To enter interactive X loop ; waiting/executing command,... + void AddMenu(const char*,const char*); + // To add a pulldown menu in the menu bar. + // First argument is the name of the menu. + // Second argument is the label of the cascade button. + // Ex : AddMenu("my_menu","My menu") + void AddButton(const char*,const char*,const char*); + // To add a push button in a pulldown menu. + // First argument is the name of the menu. + // Second argument is the label of the button. + // Third argument is the Geant4 command executed when the button is fired. + // Ex : AddButton("my_menu","Run","/run/beamOn 1"); +public: + ~G4UIQt(); + void Prompt(G4String); + void SessionTerminate(); + void PauseSessionStart(G4String); + G4int ReceiveG4cout(G4String); + G4int ReceiveG4cerr(G4String); + // G4String GetCommand(Widget); + +private: + void SecondaryLoop(G4String); // a VIRER + void TerminalHelp(G4String); +#if QT_VERSION < 0x040000 + void CreateChildTree(QListViewItem*,G4UIcommandTree*); + QListViewItem* FindTreeItem(QListViewItem *,const QString&); +#else + void CreateChildTree(QTreeWidgetItem*,G4UIcommandTree*); + QTreeWidgetItem* FindTreeItem(QTreeWidgetItem *,const QString&); +#endif + + QString GetCommandList(const G4UIcommand*); + + G4bool GetHelpChoice(G4int&) ;// have to be implemeted because we heritate from G4VBasicShell + void ExitHelp();// have to be implemeted because we heritate from G4VBasicShell + bool eventFilter(QObject*,QEvent*); + +private: + + // Widget form,shell,command,menuBar,text; + // std::map > commands; + // static void commandEnteredCallback(Widget,XtPointer,XtPointer); + // static void keyHandler(Widget,XtPointer,XEvent*,Boolean*); + QMainWindow * fMainWindow; + QLabel *fCommandLabel; + QLineEdit * fCommandArea; + QTextEdit *fTextArea; + QTextEdit *fHelpArea; +#if QT_VERSION < 0x040000 + QListView *fCommandHistoryArea; + QListView *fHelpTreeWidget; +#else + QListWidget *fCommandHistoryArea; + QTreeWidget *fHelpTreeWidget; +#endif + QDialog *fHelpDialog; + +signals : + void myClicked(const QString &text); + +private slots : + void ExitSession(); + void ClearButtonCallback(); + void CommandEnteredCallback(); + void ButtonCallback(const QString&); + void HelpTreeClicCallback(); +#if QT_VERSION < 0x040000 + void HelpTreeDoubleClicCallback( QListViewItem*, int); +#else + void HelpTreeDoubleClicCallback( QTreeWidgetItem*, int); +#endif + void ShowHelpCallback(); + void CommandHistoryCallback(); +}; + +#endif + +#endif + diff --git a/source/interfaces/basic/include/G4UIWin32.hh b/source/interfaces/basic/include/G4UIWin32.hh index 4e689a60c9..d50bb83c26 100644 --- a/source/interfaces/basic/include/G4UIWin32.hh +++ b/source/interfaces/basic/include/G4UIWin32.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIWin32.hh,v 1.14 2006/06/29 19:09:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UIWin32_h #define G4UIWin32_h diff --git a/source/interfaces/basic/include/G4UIXaw.hh b/source/interfaces/basic/include/G4UIXaw.hh index 2bfc634efa..c394e31660 100644 --- a/source/interfaces/basic/include/G4UIXaw.hh +++ b/source/interfaces/basic/include/G4UIXaw.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIXaw.hh,v 1.6 2006/06/29 19:09:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UIXaw_h #define G4UIXaw_h diff --git a/source/interfaces/basic/include/G4UIXm.hh b/source/interfaces/basic/include/G4UIXm.hh index 38cd851a00..1116531a13 100644 --- a/source/interfaces/basic/include/G4UIXm.hh +++ b/source/interfaces/basic/include/G4UIXm.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIXm.hh,v 1.13 2006/06/29 19:09:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UIXm_h #define G4UIXm_h diff --git a/source/interfaces/basic/include/G4UIcsh.hh b/source/interfaces/basic/include/G4UIcsh.hh index de150942dc..f37038d950 100644 --- a/source/interfaces/basic/include/G4UIcsh.hh +++ b/source/interfaces/basic/include/G4UIcsh.hh @@ -25,7 +25,7 @@ // // // $Id: G4UIcsh.hh,v 1.4 2006/06/29 19:09:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UIcsh_h diff --git a/source/interfaces/basic/include/G4UItcsh.hh b/source/interfaces/basic/include/G4UItcsh.hh index d446a0358a..fe90aee6c3 100644 --- a/source/interfaces/basic/include/G4UItcsh.hh +++ b/source/interfaces/basic/include/G4UItcsh.hh @@ -25,7 +25,7 @@ // // // $Id: G4UItcsh.hh,v 1.8 2007/06/14 05:44:58 kmura Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UItcsh_h diff --git a/source/interfaces/basic/include/G4UIterminal.hh b/source/interfaces/basic/include/G4UIterminal.hh index 23db73d72b..3f4dfbd0d7 100644 --- a/source/interfaces/basic/include/G4UIterminal.hh +++ b/source/interfaces/basic/include/G4UIterminal.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4UIterminal.hh,v 1.10 2007/05/22 01:51:05 kmura Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ==================================================================== // G4UIterminal.cc diff --git a/source/interfaces/basic/include/G4VUIshell.hh b/source/interfaces/basic/include/G4VUIshell.hh index d9d839fe9e..f239f85dca 100644 --- a/source/interfaces/basic/include/G4VUIshell.hh +++ b/source/interfaces/basic/include/G4VUIshell.hh @@ -25,7 +25,7 @@ // // // $Id: G4VUIshell.hh,v 1.7 2007/06/14 05:44:58 kmura Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VUIshell_h diff --git a/source/interfaces/basic/src/G4UIArrayString.cc b/source/interfaces/basic/src/G4UIArrayString.cc index 19a43d7eeb..287d468e52 100644 --- a/source/interfaces/basic/src/G4UIArrayString.cc +++ b/source/interfaces/basic/src/G4UIArrayString.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIArrayString.cc,v 1.8 2006/06/29 19:09:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include diff --git a/source/interfaces/basic/src/G4UIQt.cc b/source/interfaces/basic/src/G4UIQt.cc new file mode 100644 index 0000000000..8677c10017 --- /dev/null +++ b/source/interfaces/basic/src/G4UIQt.cc @@ -0,0 +1,1245 @@ +// +// ******************************************************************** +// * 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: G4UIQt.cc,v 1.12 2007/11/15 18:24:27 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// L. Garnier + +//#define DEBUG + +#ifdef G4UI_BUILD_QT_SESSION + +#include "G4Types.hh" + +#include + +#include "G4UIQt.hh" +#include "G4UImanager.hh" +#include "G4StateManager.hh" +#include "G4UIcommandTree.hh" +#include "G4UIcommandStatus.hh" + +#include "G4Qt.hh" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#if QT_VERSION >= 0x040000 +#include +#include +#include +#else +#include +#include +#include +#include +#endif + + + +#include + +// Pourquoi Static et non variables de classe ? +static G4bool exitSession = true; +static G4bool exitPause = true; + +/** Build a Qt window with a menubar, output area and promt area
+
+   +-----------------------+
+   |exit menu|             |
+   |                       |
+   | +-------------------+ |
+   | |                   | |
+   | |  Output area      | |
+   | |                   | |
+   | +-------------------+ |
+   |      | clear |        |
+   | +-------------------+ |
+   | |  promt history    | |
+   | +-------------------+ |
+   | +-------------------+ |
+   | |> promt area       | |
+   | +-------------------+ |
+   +-----------------------+
+
+*/ +G4UIQt::G4UIQt ( + int argc +,char** argv +) + :fHelpDialog(NULL) +{ +#ifdef GEANT4_QT_DEBUG + printf("G4UIQt::Initialise %d %s\n",argc,argv[0]); +#endif + G4Qt* interactorManager = G4Qt::getInstance (argc,argv,(char*)"Qt"); + G4UImanager* UI = G4UImanager::GetUIpointer(); + if(UI!=NULL) UI->SetSession(this); + + fMainWindow = new QMainWindow(); + +#ifdef GEANT4_QT_DEBUG + printf("G4UIQt::Initialise after main window creation\n"); +#endif +#if QT_VERSION < 0x040000 + fMainWindow->setCaption( tr( "G4UI Session" )); + fMainWindow->resize(800,600); + fMainWindow->move(50,100); +#else + fMainWindow->setWindowTitle( tr("G4UI Session") ); + fMainWindow->resize(800,600); + fMainWindow->move(QPoint(50,100)); +#endif + + QSplitter *splitter = new QSplitter(Qt::Vertical); + fTextArea = new QTextEdit(fMainWindow); + QPushButton *clearButton = new QPushButton("clear",fMainWindow); + connect(clearButton, SIGNAL(clicked()), SLOT(ClearButtonCallback())); + +#if QT_VERSION < 0x040000 + fCommandHistoryArea = new QListView(); + fCommandHistoryArea->setSelectionMode(QListView::Single); + connect(fCommandHistoryArea, SIGNAL(selectionChanged()), SLOT(CommandHistoryCallback())); +#else + fCommandHistoryArea = new QListWidget(); + fCommandHistoryArea->setSelectionMode(QAbstractItemView::SingleSelection); + connect(fCommandHistoryArea, SIGNAL(itemSelectionChanged()), SLOT(CommandHistoryCallback())); +#endif + fCommandHistoryArea->installEventFilter(this); + fCommandLabel = new QLabel("",fMainWindow); + + fCommandArea = new QLineEdit(fMainWindow); + fCommandArea->installEventFilter(this); +#if QT_VERSION < 0x040000 + fCommandArea->setActiveWindow(); +#else + fCommandArea->activateWindow(); +#endif + connect(fCommandArea, SIGNAL(returnPressed()), SLOT(CommandEnteredCallback())); +#if QT_VERSION < 0x040000 + fCommandArea->setFocusPolicy ( QWidget::StrongFocus ); + fCommandArea->setFocus(); +#else + fCommandArea->setFocusPolicy ( Qt::StrongFocus ); + fCommandArea->setFocus(Qt::TabFocusReason); +#endif + fTextArea->setReadOnly(true); + + + // Set layouts + +#if QT_VERSION < 0x040000 + QWidget* topWidget = new QWidget(splitter); + QWidget* bottomWidget = new QWidget(splitter); + + QVBoxLayout *layoutTop = new QVBoxLayout(topWidget); + QVBoxLayout *layoutBottom = new QVBoxLayout(bottomWidget); +#else + QWidget* topWidget = new QWidget(); + QWidget* bottomWidget = new QWidget(); + + QVBoxLayout *layoutTop = new QVBoxLayout; + QVBoxLayout *layoutBottom = new QVBoxLayout; +#endif + + + + layoutTop->addWidget(fTextArea); + layoutTop->addWidget(clearButton); + +#if QT_VERSION >= 0x040000 + topWidget->setLayout(layoutTop); +#endif + + layoutBottom->addWidget(fCommandHistoryArea); + layoutBottom->addWidget(fCommandLabel); + layoutBottom->addWidget(fCommandArea); +#if QT_VERSION >= 0x040000 + + bottomWidget->setLayout(layoutBottom); + splitter->addWidget(topWidget); + splitter->addWidget(bottomWidget); +#endif + + + fMainWindow->setCentralWidget(splitter); + +#if QT_VERSION < 0x040000 + + // Add a quit subMenu + QPopupMenu *fileMenu = new QPopupMenu( fMainWindow); + fileMenu->insertItem( "&Quitter", this, SLOT(ExitSession()), CTRL+Key_Q ); + fMainWindow->menuBar()->insertItem( QString("&File"), fileMenu ); + + // Add a Help menu + QPopupMenu *helpMenu = new QPopupMenu( fMainWindow ); + helpMenu->insertItem( "&Show Help", this, SLOT(ShowHelpCallback()), CTRL+Key_H ); + fMainWindow->menuBar()->insertItem( QString("&Help"), helpMenu ); + + +#else + + // Add a quit subMenu + QMenu *fileMenu = fMainWindow->menuBar()->addMenu("File"); + fileMenu->addAction("Quitter", this, SLOT(ExitSession())); + + // Add a Help menu + QMenu *helpMenu = fMainWindow->menuBar()->addMenu("Help"); + helpMenu->addAction("Show Help", this, SLOT(ShowHelpCallback())); +#endif + + // Set the splitter size. The fTextArea sould be 2/3 on the fMainWindow +#if QT_VERSION < 0x040000 + QValueList vals = splitter->sizes(); +#else + QList vals = splitter->sizes(); +#endif + if(vals.size()==2) { + vals[0] = (splitter->orientation()==Qt::Vertical ? splitter->height() : splitter->width())*3/4; + vals[1] = (splitter->orientation()==Qt::Vertical ? splitter->height() : splitter->width())*1/4; + splitter->setSizes(vals); + } + + if(UI!=NULL) UI->SetCoutDestination(this); // TO KEEP +} + + + +G4UIQt::~G4UIQt( +) +{ + G4UImanager* UI = G4UImanager::GetUIpointer(); // TO KEEP + if(UI!=NULL) { // TO KEEP + UI->SetSession(NULL); // TO KEEP + UI->SetCoutDestination(NULL); // TO KEEP + } + + if (fMainWindow!=NULL) + delete fMainWindow; +} + + + +/** Start the Qt main loop +*/ +G4UIsession* G4UIQt::SessionStart ( +) +{ + + G4Qt* interactorManager = G4Qt::getInstance (); + +#if QT_VERSION >= 0x040000 +#if QT_VERSION >= 0x040200 + fMainWindow->setVisible(true); +#else + fMainWindow->show(); +#endif +#else + fMainWindow->show(); +#endif + Prompt("session"); + exitSession = false; + + +#ifdef GEANT4_QT_DEBUG + printf("disable secondary loop\n"); +#endif + interactorManager->DisableSecondaryLoop (); // TO KEEP + ((QApplication*)interactorManager->GetMainInteractor())->exec(); + // on ne passe pas le dessous ? FIXME ???? + // je ne pense pas 13/06 + + // void* event; // TO KEEP + // while((event = interactorManager->GetEvent())!=NULL) { // TO KEEP + // interactorManager->DispatchEvent(event); // TO KEEP + // if(exitSession==true) break; // TO KEEP + // } // TO KEEP + + interactorManager->EnableSecondaryLoop (); +#ifdef GEANT4_QT_DEBUG + printf("enable secondary loop\n"); +#endif + return this; +} + + +/** Display the prompt in the prompt area + @param aPrompt : string to display as the promt label + //FIXME : probablement inutile puisque le seul a afficher qq chose d'autre + que "session" est SecondaryLoop() +*/ +void G4UIQt::Prompt ( + G4String aPrompt +) +{ + if (!aPrompt) return; + + fCommandLabel->setText((char*)aPrompt.data()); +} + + +void G4UIQt::SessionTerminate ( +) +{ + G4Qt* interactorManager = G4Qt::getInstance (); + fMainWindow->close(); + ((QApplication*)interactorManager->GetMainInteractor())->exit(); +} + + + +/** + Called by intercoms/src/G4UImanager.cc
+ Called by visualization/management/src/G4VisCommands.cc with "EndOfEvent" argument
+ It have to pause the session command terminal.
+ Call SecondaryLoop to wait for exit event
+ @param aState + @see : G4VisCommandReviewKeptEvents::SetNewValue +*/ +void G4UIQt::PauseSessionStart ( + G4String aState +) +{ + if (!aState) return; + +#ifdef GEANT4_QT_DEBUG + printf("G4UIQt::PauseSessionStart\n"); +#endif + if(aState=="G4_pause> ") { // TO KEEP + SecondaryLoop ("Pause, type continue to exit this state"); // TO KEEP + } // TO KEEP + + if(aState=="EndOfEvent") { // TO KEEP + // Picking with feed back in event data Done here !!! + SecondaryLoop ("End of event, type continue to exit this state"); // TO KEEP + } // TO KEEP +} + + + +/** + Begin the secondary loop + @param a_prompt : label to display as the prompt label + */ +void G4UIQt::SecondaryLoop ( + G4String aPrompt +) +{ + if (!aPrompt) return; + +#ifdef GEANT4_QT_DEBUG + printf("G4UIQt::SecondaryLoop\n"); +#endif + G4Qt* interactorManager = G4Qt::getInstance (); // TO KEEP ? + Prompt(aPrompt); // TO KEEP + exitPause = false; // TO KEEP + void* event; // TO KEEP + while((event = interactorManager->GetEvent())!=NULL) { // TO KEEP + interactorManager->DispatchEvent(event); // TO KEEP + if(exitPause==true) break; // TO KEEP + } // TO KEEP + Prompt("session"); // TO KEEP +} + + + +/** + Receive a cout from Geant4. We have to display it in the cout zone + @param aString : label to add in the display area + @return 0 +*/ +G4int G4UIQt::ReceiveG4cout ( + G4String aString +) +{ + if (!aString) return 0; + G4Qt* interactorManager = G4Qt::getInstance (); + if (!interactorManager) return 0; + +#if QT_VERSION < 0x040000 + fTextArea->append(QString((char*)aString.data()).simplifyWhiteSpace()); + fTextArea->verticalScrollBar()->setValue(fTextArea->verticalScrollBar()->maxValue()); +#else + fTextArea->append(QString((char*)aString.data()).trimmed()); + fTextArea->verticalScrollBar()->setSliderPosition(fTextArea->verticalScrollBar()->maximum()); +#endif + interactorManager->FlushAndWaitExecution(); + return 0; +} + + +/** + Receive a cerr from Geant4. We have to display it in the cout zone + @param aString : label to add in the display area + @return 0 +*/ +G4int G4UIQt::ReceiveG4cerr ( + G4String aString +) +{ + if (!aString) return 0; + G4Qt* interactorManager = G4Qt::getInstance (); + if (!interactorManager) return 0; + +#if QT_VERSION < 0x040000 + QColor previousColor = fTextArea->color(); + fTextArea->setColor(Qt::red); + fTextArea->append(QString((char*)aString.data()).simplifyWhiteSpace()); + fTextArea->setColor(previousColor); + fTextArea->verticalScrollBar()->setValue(fTextArea->verticalScrollBar()->maxValue()); +#else + QColor previousColor = fTextArea->textColor(); + fTextArea->setTextColor(Qt::red); + fTextArea->append(QString((char*)aString.data()).trimmed()); + fTextArea->setTextColor(previousColor); + fTextArea->verticalScrollBar()->setSliderPosition(fTextArea->verticalScrollBar()->maximum()); +#endif + interactorManager->FlushAndWaitExecution(); + return 0; +} + + + +/** + Add a new menu to the menu bar + @param aName name of menu + @param aLabel label to display + */ +void G4UIQt::AddMenu ( + const char* aName +,const char* aLabel +) +{ + if (aName == NULL) return; + if (aLabel == NULL) return; + +#if QT_VERSION < 0x040000 + QPopupMenu *fileMenu = new QPopupMenu( fMainWindow); + fMainWindow->menuBar()->insertItem( aLabel, fileMenu ); +#else + QMenu *fileMenu = new QMenu(aLabel); + fMainWindow->menuBar()->insertMenu(fMainWindow->menuBar()->actions().last(),fileMenu); +#endif + + AddInteractor (aName,(G4Interactor)fileMenu); +} + + +/** + Add a new button to a menu + @param aMenu : parent menu + @param aLabel : label to display + @param aCommand : command to execute as a callback + */ +void G4UIQt::AddButton ( + const char* aMenu +,const char* aLabel +,const char* aCommand +) +{ + if(aMenu==NULL) return; // TO KEEP + if(aLabel==NULL) return; // TO KEEP + if(aCommand==NULL) return; // TO KEEP + +#if QT_VERSION < 0x040000 + QPopupMenu *parent = (QPopupMenu*)GetInteractor(aMenu); +#else + QMenu *parent = (QMenu*)GetInteractor(aMenu); +#endif + + if(parent==NULL) return; + + QSignalMapper *signalMapper = new QSignalMapper(this); +#if QT_VERSION < 0x040000 + QAction *action = new QAction(QString(aLabel),QKeySequence::QKeySequence (),signalMapper, SLOT(map())); + action->addTo(parent); +#else + QAction *action = parent->addAction(aLabel, signalMapper, SLOT(map())); +#endif + signalMapper->setMapping(action, QString(aCommand)); + connect(signalMapper, SIGNAL(mapped(const QString &)),this, SLOT(ButtonCallback(const QString&))); +} + + + + +/** + Open the help dialog in a separate window.
+ This will be display as a tree widget.
+ Implementation of void G4VBasicShell::TerminalHelp(G4String newCommand) + + @param newCommand : open the tree widget item on this command if is set +*/ +void G4UIQt::TerminalHelp( + G4String newCommand +) +{ + // Create the help dialog + if (!fHelpDialog) { +#if QT_VERSION < 0x040000 + fHelpDialog = new QDialog(fMainWindow,0,FALSE,Qt::WStyle_Title | Qt::WStyle_SysMenu | Qt::WStyle_MinMax ); +#else + fHelpDialog = new QDialog(fMainWindow,Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); +#endif + QSplitter *splitter = new QSplitter(Qt::Horizontal); + QPushButton *exitButton = new QPushButton("Exit",fMainWindow); + connect(exitButton, SIGNAL(clicked()), fHelpDialog,SLOT(close())); + + // the help tree + G4UImanager* UI = G4UImanager::GetUIpointer(); + if(UI==NULL) return; + G4UIcommandTree * treeTop = UI->GetTree(); + + // build widget +#if QT_VERSION < 0x040000 + fHelpTreeWidget = new QListView(splitter); + fHelpTreeWidget->setSelectionMode(QListView::Single); + fHelpTreeWidget->addColumn("Command"); + fHelpTreeWidget->addColumn("Description"); + fHelpTreeWidget->hideColumn(1); + fHelpTreeWidget->header()->setResizeEnabled(FALSE,1); + // QList items; +#else + fHelpTreeWidget = new QTreeWidget(); + fHelpTreeWidget->setSelectionMode(QAbstractItemView::SingleSelection); + fHelpTreeWidget->setColumnCount(2); + fHelpTreeWidget->setColumnHidden(1,true); + QStringList labels; + labels << QString("Command") << QString("Description"); + fHelpTreeWidget->setHeaderLabels(labels); + // QList items; +#endif + +#if QT_VERSION < 0x040000 + fHelpArea = new QTextEdit(splitter); +#else + fHelpArea = new QTextEdit(); +#endif + fHelpArea->setReadOnly(true); + + G4int treeSize = treeTop->GetTreeEntry(); +#if QT_VERSION < 0x040000 + QListViewItem * newItem; +#else + QTreeWidgetItem * newItem; +#endif + for (int a=0;asetText(0,QString((char*)(treeTop->GetTree(a+1)->GetPathName()).data()).simplifyWhiteSpace()); + newItem->setText(1,QString((char*)(treeTop->GetTree(a+1)->GetTitle()).data()).simplifyWhiteSpace()); +#else + //FIXME : Qt 4.2 + // QStringList stringList; + // stringList << QString((char*)(treeTop->GetTree(a+1)->GetPathName()).data()).trimmed() ; + // stringList << QString((char*)(treeTop->GetTree(a+1)->GetTitle()).data()).trimmed() ; + // newItem = new QTreeWidgetItem(stringList); + // FIXME : Qt 4.0 + newItem = new QTreeWidgetItem(fHelpTreeWidget); + newItem->setText(0,QString((char*)(treeTop->GetTree(a+1)->GetPathName()).data()).trimmed()); + newItem->setText(1,QString((char*)(treeTop->GetTree(a+1)->GetTitle()).data()).trimmed()); +#endif + + + // look for childs + CreateChildTree(newItem,treeTop->GetTree(a+1)); + // items.append(newItem); + } + + connect(fHelpTreeWidget, SIGNAL(itemSelectionChanged ()),this, SLOT(HelpTreeClicCallback())); + connect(fHelpTreeWidget, SIGNAL(itemDoubleClicked (QTreeWidgetItem*,int)),this, SLOT(HelpTreeDoubleClicCallback(QTreeWidgetItem*,int))); + + // Set layouts + +#if QT_VERSION < 0x040000 + QVBoxLayout *vLayout = new QVBoxLayout(fHelpDialog); +#else + QVBoxLayout *vLayout = new QVBoxLayout; + splitter->addWidget(fHelpTreeWidget); + splitter->addWidget(fHelpArea); +#endif + + + vLayout->addWidget(splitter); + vLayout->addWidget(exitButton); +#if QT_VERSION >= 0x040000 + fHelpDialog->setLayout(vLayout); +#endif + + } + + // Look for the choosen command "newCommand" + size_t i = newCommand.index(" "); + G4String targetCom=""; + if( i != std::string::npos ) + { + G4String newValue = newCommand(i+1,newCommand.length()-(i+1)); + newValue.strip(G4String::both); + targetCom = ModifyToFullPathCommand( newValue ); + } + if (targetCom != "") { +#if QT_VERSION < 0x040000 + QListViewItem* findItem = NULL; + QListViewItem* tmpItem = fHelpTreeWidget->firstChild(); + while (tmpItem != 0) { + if (!findItem) { + findItem = FindTreeItem(tmpItem,QString((char*)targetCom.data())); + } + tmpItem = tmpItem->nextSibling(); + } +#else + QTreeWidgetItem* findItem = NULL; + for (int a=0;atopLevelItemCount();a++) { + if (!findItem) { + findItem = FindTreeItem(fHelpTreeWidget->topLevelItem(a),QString((char*)targetCom.data())); + } + } +#endif + + if (findItem) { + + //collapsed open item +#if QT_VERSION < 0x040000 + + // FIXME : Has to be checked + QListViewItem* tmpItem = fHelpTreeWidget->firstChild(); + QList openItems; + while ((tmpItem != 0) || (!openItems.isEmpty())) { + if (tmpItem->isOpen() ) { + tmpItem->setOpen(false); + openItems.append(tmpItem); + tmpItem = tmpItem->firstChild(); + } else { + tmpItem = tmpItem->nextSibling(); + } + if (tmpItem == 0) { + tmpItem = openItems.take(openItems.count()-1); + } + } +#else + QList selected; + + selected = fHelpTreeWidget->selectedItems(); + if ( selected.count() != 0 ) { + QTreeWidgetItem * tmp =selected.at( 0 ); + while ( tmp) { +#if QT_VERSION < 0x040202 + fHelpTreeWidget->setItemExpanded(tmp,false); +#else + tmp->setExpanded(false); +#endif + tmp = tmp->parent(); + } + } +#endif + + // clear old selection + fHelpTreeWidget->clearSelection(); + + // set new selection +#if QT_VERSION >= 0x040000 +#if QT_VERSION < 0x040202 + fHelpTreeWidget->setItemSelected(findItem,true); +#else + findItem->setSelected(true); +#endif +#else + findItem->setSelected(true); +#endif + + // expand parent item + while ( findItem) { +#if QT_VERSION < 0x040000 + findItem->setOpen(true); +#else +#if QT_VERSION < 0x040202 + fHelpTreeWidget->setItemExpanded(findItem,true); +#else + findItem->setExpanded(true); +#endif +#endif + findItem = findItem->parent(); + } + + // Call the update of the right textArea + HelpTreeClicCallback(); + } + } +#if QT_VERSION < 0x040000 + fHelpDialog->setCaption( tr( "Help on commands" )); +#else + fHelpDialog->setWindowTitle(tr("Help on commands")); +#endif + fHelpDialog->resize(800,600); + fHelpDialog->move(QPoint(400,150)); + fHelpDialog->show(); + fHelpDialog->raise(); +#if QT_VERSION < 0x040000 + fHelpDialog->setActiveWindow(); +#else + fHelpDialog->activateWindow(); +#endif +} + + + +/** Fill the Help Tree Widget + @param aParent : parent item to fill + @param aCommandTree : commandTree node associate with this part of the Tree +*/ +#if QT_VERSION < 0x040000 +void G4UIQt::CreateChildTree( + QListViewItem *aParent +,G4UIcommandTree *aCommandTree +#else +void G4UIQt::CreateChildTree( + QTreeWidgetItem *aParent +,G4UIcommandTree *aCommandTree +#endif +) +{ + if (aParent == NULL) return; + if (aCommandTree == NULL) return; + + + // Creating new item +#if QT_VERSION < 0x040000 + QListViewItem * newItem; +#else + QTreeWidgetItem * newItem; +#endif + + // Get the Sub directories + for (int a=0;aGetTreeEntry();a++) { + +#if QT_VERSION < 0x040000 + newItem = new QListViewItem(aParent); + newItem->setText(0,QString((char*)(aCommandTree->GetTree(a+1)->GetPathName()).data()).simplifyWhiteSpace()); + newItem->setText(1,QString((char*)(aCommandTree->GetTree(a+1)->GetTitle()).data()).simplifyWhiteSpace()); + +#else + newItem = new QTreeWidgetItem(aParent); + newItem->setText(0,QString((char*)(aCommandTree->GetTree(a+1)->GetPathName()).data()).trimmed()); + newItem->setText(1,QString((char*)(aCommandTree->GetTree(a+1)->GetTitle()).data()).trimmed()); +#endif + + CreateChildTree(newItem,aCommandTree->GetTree(a+1)); + } + + + + // Get the Commands + + for (int a=0;aGetCommandEntry();a++) { + + QStringList stringList; +#if QT_VERSION < 0x040000 + newItem = new QListViewItem(aParent); + newItem->setText(0,QString((char*)(aCommandTree->GetCommand(a+1)->GetCommandPath()).data()).simplifyWhiteSpace()); + newItem->setText(1,QString((char*)(aCommandTree->GetCommand(a+1)->GetCommandPath()).data()).simplifyWhiteSpace()); + newItem->setOpen(false); + +#else + newItem = new QTreeWidgetItem(aParent); + newItem->setText(0,QString((char*)(aCommandTree->GetCommand(a+1)->GetCommandPath()).data()).trimmed()); + newItem->setText(1,QString((char*)(aCommandTree->GetCommand(a+1)->GetCommandPath()).data()).trimmed()); +#if QT_VERSION < 0x040202 + fHelpTreeWidget->setItemExpanded(newItem,false); +#else + newItem->setExpanded(false); +#endif +#endif + + } +} + + +/** Find a treeItemWidget in the help tree + @param aCommand item's String to look for + @return item if found, NULL if not +*/ +#if QT_VERSION < 0x040000 +QListViewItem* G4UIQt::FindTreeItem( + QListViewItem *aParent +#else +QTreeWidgetItem* G4UIQt::FindTreeItem( + QTreeWidgetItem *aParent +#endif +,const QString& aCommand +) +{ + if (aParent == NULL) return NULL; + + if (aParent->text(0) == aCommand) + return aParent; + +#if QT_VERSION < 0x040000 + QListViewItem * tmp = NULL; + QListViewItem* tmpItem = aParent->firstChild(); + while (tmpItem != 0) { + if (!tmp) + tmp = FindTreeItem(tmpItem,aCommand); + tmpItem = tmpItem->nextSibling(); + } + +#else + QTreeWidgetItem * tmp = NULL; + for (int a=0;achildCount();a++) { + if (!tmp) + tmp = FindTreeItem(aParent->child(a),aCommand); + } +#endif + return tmp; +} + + +/** Build the command list parameters in a QString
+ Reimplement partialy the G4UIparameter.cc + @param aCommand : command to list parameters + @see G4UIparameter::List() + @see G4UIcommand::List() + @return the command list parameters, or "" if nothing +*/ +QString G4UIQt::GetCommandList ( + const G4UIcommand *aCommand +) +{ + + QString txt =""; + if (aCommand == NULL) + return txt; + + G4String commandPath = aCommand->GetCommandPath(); + G4String rangeString = aCommand->GetRange(); + G4int n_guidanceEntry = aCommand->GetGuidanceEntries(); + G4int n_parameterEntry = aCommand->GetParameterEntries(); + + if ((commandPath == "") && + (rangeString == "") && + (n_guidanceEntry == 0) && + (n_parameterEntry == 0)) { + return txt; + } + + if((commandPath.length()-1)!='/') { + txt += "Command " + QString((char*)(commandPath).data()) + "\n"; + } + txt += "Guidance :\n"; + + for( G4int i_thGuidance=0; i_thGuidance < n_guidanceEntry; i_thGuidance++ ) { + txt += QString((char*)(aCommand->GetGuidanceLine(i_thGuidance)).data()) + "\n"; + } + if( ! rangeString.isNull() ) { + txt += " Range of parameters : " + QString((char*)(rangeString).data()) + "\n"; + } + if( n_parameterEntry > 0 ) { + G4UIparameter *param; + + // Re-implementation of G4UIparameter.cc + + for( G4int i_thParameter=0; i_thParameterGetParameter(i_thParameter); + txt += "\nParameter : " + QString((char*)(param->GetParameterName()).data()) + "\n"; + if( ! param->GetParameterGuidance().isNull() ) + txt += QString((char*)(param->GetParameterGuidance()).data())+ "\n" ; + txt += " Parameter type : " + QString(QChar(param->GetParameterType())) + "\n"; + if(param->IsOmittable()){ + txt += " Omittable : True\n"; + } else { + txt += " Omittable : False\n"; + } + if( param->GetCurrentAsDefault() ) { + txt += " Default value : taken from the current value\n"; + } else if( ! param->GetDefaultValue().isNull() ) { + txt += " Default value : " + QString((char*)(param->GetDefaultValue()).data())+ "\n"; + } + if( ! param->GetParameterRange().isNull() ) { + txt += " Parameter range : " + QString((char*)(param->GetParameterRange()).data())+ "\n"; + } + if( ! param->GetParameterCandidates().isNull() ) { + txt += " Candidates : " + QString((char*)(param->GetParameterCandidates()).data())+ "\n"; + } + } + } + return txt; +} + + + +/** Implement G4VBasicShell vurtual function + */ +G4bool G4UIQt::GetHelpChoice( + G4int& aInt +) +{ +#ifdef GEANT4_QT_DEBUG + printf("G4UIQt::GetHelpChoice SHOULD NEVER GO HERE"); +#endif + return true; +} + + +/** Implement G4VBasicShell vurtual function +*/ +void G4UIQt::ExitHelp( +) +{ +#ifdef GEANT4_QT_DEBUG + printf("G4UIQt::ExitHelp SHOULD NEVER GO HERE"); +#endif +} + + +/** Event filter method. Every event from QtApplication goes here.
+ We apply a filter only for the Up and Down Arrow press when the QLineEdit
+ is active. If this filter match, Up arrow we give the previous command
+ and Down arrow will give the next if exist.
+ @param obj Emitter of the event + @param event Kind of event +*/ +bool G4UIQt::eventFilter( // Should stay with a minuscule eventFilter because of Qt + QObject *aObj +,QEvent *aEvent +) +{ + if (aObj == NULL) return false; + if (aEvent == NULL) return false; + + if (aObj == fCommandHistoryArea) { + if (aEvent->type() == QEvent::KeyPress) { + fCommandArea->setFocus(); + } + } + if (aObj == fCommandArea) { + if (aEvent->type() == QEvent::KeyPress) { + QKeyEvent *e = static_cast(aEvent); + if ((e->key() == (Qt::Key_Down)) || + (e->key() == (Qt::Key_PageDown)) || + (e->key() == (Qt::Key_Up)) || + (e->key() == (Qt::Key_PageUp))) { +#if QT_VERSION < 0x040000 + // count rows... + QListViewItem* tmpItem = fCommandHistoryArea->firstChild(); + int selection = -1; + int index = 0; + while (tmpItem != 0) { + if (tmpItem == fCommandHistoryArea->selectedItem()) { + selection = index; + } + index ++; + tmpItem = tmpItem->nextSibling(); + } + if (fCommandHistoryArea->childCount()) { + if (selection == -1) { + selection = fCommandHistoryArea->childCount()-1; + } else { + if (e->key() == (Qt::Key_Down)) { + if (selection <(fCommandHistoryArea->childCount()-1)) + selection++; + } else if (e->key() == (Qt::Key_PageDown)) { + selection = fCommandHistoryArea->childCount()-1; +#else + int selection = fCommandHistoryArea->currentRow(); + if (fCommandHistoryArea->count()) { + if (selection == -1) { + selection = fCommandHistoryArea->count()-1; + } else { + if (e->key() == (Qt::Key_Down)) { + if (selection <(fCommandHistoryArea->count()-1)) + selection++; + } else if (e->key() == (Qt::Key_PageDown)) { + selection = fCommandHistoryArea->count()-1; +#endif + } else if (e->key() == (Qt::Key_Up)) { + if (selection >0) + selection --; + } else if (e->key() == (Qt::Key_PageUp)) { + selection = 0; + } + } + fCommandHistoryArea->clearSelection(); +#if QT_VERSION < 0x040000 + QListViewItem* tmpItem = fCommandHistoryArea->firstChild(); + int index = 0; + while (tmpItem != 0) { + if (index == selection) { + tmpItem->setSelected(true); + fCommandHistoryArea->setCurrentItem(tmpItem); + } + index ++; + tmpItem = tmpItem->nextSibling(); + } +#else +#if QT_VERSION < 0x040202 + fCommandHistoryArea->setItemSelected(fCommandHistoryArea->item(selection),true); +#else + fCommandHistoryArea->item(selection)->setSelected(true); +#endif + fCommandHistoryArea->setCurrentItem(fCommandHistoryArea->item(selection)); +#endif + } + } else if (e->key() == (Qt::Key_Tab)) { +#if QT_VERSION < 0x040000 + G4String ss = Complete(fCommandArea->text().ascii()); +#else + G4String ss = Complete(fCommandArea->text().toStdString().c_str()); +#endif + fCommandArea->setText((char*)(ss.data())); + + // do not pass by parent, it will disable widget tab focus ! + return true; + } + } + } + // pass the event on to the parent class + return QObject::eventFilter(aObj, aEvent); +} + + + + +/***************************************************************************/ +// +// SLOTS DEFINITIONS +// +/***************************************************************************/ + +/** Called when user give "help" command. +*/ +void G4UIQt::ShowHelpCallback ( +) +{ + TerminalHelp(""); +} + + +/** Called when user click on clear button. Clear the text Output area +*/ +void G4UIQt::ClearButtonCallback ( +) +{ + fTextArea->clear(); +} + +/** Called when user exit session +*/ +void G4UIQt::ExitSession ( +) +{ + SessionTerminate(); +} + + +/** Callback call when "click on a menu entry.
+ Send the associated command to geant4 +*/ +void G4UIQt::CommandEnteredCallback ( +) +{ +#if QT_VERSION < 0x040000 + G4String command (fCommandArea->text().ascii()); + if (fCommandArea->text().simplifyWhiteSpace() != "") { + + QListViewItem *newItem = new QListViewItem(fCommandHistoryArea); + newItem->setText(0,fCommandArea->text()); +#else + G4String command (fCommandArea->text().toStdString().c_str()); + if (fCommandArea->text().trimmed() != "") { + fCommandHistoryArea->addItem(fCommandArea->text()); +#endif + fCommandHistoryArea->clearSelection(); + fCommandHistoryArea->setCurrentItem(NULL); + fCommandArea->setText(""); + + G4Qt* interactorManager = G4Qt::getInstance (); + if (interactorManager) { + interactorManager->FlushAndWaitExecution(); + } + if (command(0,4) != "help") { + ApplyShellCommand (command,exitSession,exitPause); + } else { + TerminalHelp(command); + } +#ifdef GEANT4_QT_DEBUG + printf("after \n"); +#endif + if(exitSession==true) + SessionTerminate(); + } +} + + +/** Callback call when "enter" clicked on the command zone.
+ Send the command to geant4 + @param aCommand +*/ +void G4UIQt::ButtonCallback ( + const QString& aCommand +) +{ +#if QT_VERSION < 0x040000 + G4String ss = G4String(aCommand.ascii()); +#else + G4String ss = G4String(aCommand.toStdString().c_str()); +#endif + ApplyShellCommand(ss,exitSession,exitPause); + if(exitSession==true) + SessionTerminate(); +} + + + +/** This callback is activated when user selected a item in the help tree +*/ +void G4UIQt::HelpTreeClicCallback ( +) +{ + // printf("G4UIQt::HelpTreeClicCallback"); +#if QT_VERSION < 0x040000 + QListViewItem* item = NULL; +#else + QTreeWidgetItem* item = NULL; +#endif + if (!fHelpTreeWidget) + return ; + + if (!fHelpArea) + return; + +#if QT_VERSION < 0x040000 + item =fHelpTreeWidget->selectedItem(); +#else + QList list =fHelpTreeWidget->selectedItems(); + if (list.isEmpty()) + return; + item = list.first(); +#endif + if (!item) + return; + + G4UImanager* UI = G4UImanager::GetUIpointer(); + if(UI==NULL) return; + G4UIcommandTree * treeTop = UI->GetTree(); +#if QT_VERSION < 0x040000 + G4UIcommand* command = treeTop->FindPath(item->text (1).ascii()); +#else + G4UIcommand* command = treeTop->FindPath(item->text (1).toStdString().c_str()); +#endif + if (command) { +#if QT_VERSION >= 0x040000 +#if QT_VERSION < 0x040200 + fHelpArea->clear(); + fHelpArea->append(GetCommandList(command)); +#else + fHelpArea->setText(GetCommandList(command)); +#endif +#else + fHelpArea->setText(GetCommandList(command)); +#endif + } else { + // this is not a command, this is a sub directory + // We display the Title +#if QT_VERSION >= 0x040000 +#if QT_VERSION < 0x040200 + fHelpArea->clear(); + fHelpArea->append(item->text (1)); +#else + fHelpArea->setText(item->text (1)); +#endif +#else + fHelpArea->setText(item->text (1)); +#endif + } +} + +/** This callback is activated when user double clic on a item in the help tree +*/ +void G4UIQt::HelpTreeDoubleClicCallback ( +#if QT_VERSION < 0x040000 +QListViewItem* item +#else +QTreeWidgetItem* item +#endif + ,int nb +) +{ +#ifdef GEANT4_QT_DEBUG + printf("G4UIQt::HelpTreeDoubleClicCallback"); +#endif + HelpTreeClicCallback(); + fCommandArea->setText(item->text (1)); +} + + +/** Callback called when user select an old command in the command history
+ Give it to the command area. +*/ +void G4UIQt::CommandHistoryCallback( +) +{ +#if QT_VERSION < 0x040000 + QListViewItem* item = NULL; +#else + QListWidgetItem* item = NULL; +#endif + if (!fCommandHistoryArea) + return ; + + +#if QT_VERSION < 0x040000 + item =fHelpTreeWidget->selectedItem(); +#else + QList list =fCommandHistoryArea->selectedItems(); + if (list.isEmpty()) + return; + item = list.first(); +#endif + if (!item) + return; +#if QT_VERSION < 0x040000 + fCommandArea->setText(item->text(0)); +#else + fCommandArea->setText(item->text()); +#endif + +} + +#endif diff --git a/source/interfaces/basic/src/G4UIQt_moc.cc b/source/interfaces/basic/src/G4UIQt_moc.cc new file mode 100644 index 0000000000..e175aa4ee6 --- /dev/null +++ b/source/interfaces/basic/src/G4UIQt_moc.cc @@ -0,0 +1,297 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +/**************************************************************************** +** G4UIQt meta object code from reading C++ file 'G4UIQt.hh' +** +** Created: Tue Nov 13 18:13:09 2007 +** by: The Qt MOC ($Id: G4UIQt_moc.cc,v 1.8.2.1 2007/12/10 16:30:42 gunter Exp $) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#ifdef G4UI_BUILD_QT_SESSION + +#undef QT_NO_COMPAT +#include "../include/G4UIQt.hh" +#include +#include + +#if QT_VERSION < 0x040000 + +#include +#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26) +#error "This file was generated using the moc from 3.3.8. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +const char *G4UIQt::className() const +{ + return "G4UIQt"; +} + +QMetaObject *G4UIQt::metaObj = 0; +static QMetaObjectCleanUp cleanUp_G4UIQt( "G4UIQt", &G4UIQt::staticMetaObject ); + +#ifndef QT_NO_TRANSLATION +QString G4UIQt::tr( const char *s, const char *c ) +{ + if ( qApp ) + return qApp->translate( "G4UIQt", s, c, QApplication::DefaultCodec ); + else + return QString::fromLatin1( s ); +} +#ifndef QT_NO_TRANSLATION_UTF8 +QString G4UIQt::trUtf8( const char *s, const char *c ) +{ + if ( qApp ) + return qApp->translate( "G4UIQt", s, c, QApplication::UnicodeUTF8 ); + else + return QString::fromUtf8( s ); +} +#endif // QT_NO_TRANSLATION_UTF8 + +#endif // QT_NO_TRANSLATION + +QMetaObject* G4UIQt::staticMetaObject() +{ + if ( metaObj ) + return metaObj; + QMetaObject* parentObject = QObject::staticMetaObject(); + static const QUMethod slot_0 = {"ExitSession", 0, 0 }; + static const QUMethod slot_1 = {"ClearButtonCallback", 0, 0 }; + static const QUMethod slot_2 = {"CommandEnteredCallback", 0, 0 }; + static const QUParameter param_slot_3[] = { + { 0, &static_QUType_QString, 0, QUParameter::In } + }; + static const QUMethod slot_3 = {"ButtonCallback", 1, param_slot_3 }; + static const QUMethod slot_4 = {"HelpTreeClicCallback", 0, 0 }; + static const QUParameter param_slot_5[] = { + { 0, &static_QUType_ptr, "QListViewItem", QUParameter::In }, + { 0, &static_QUType_int, 0, QUParameter::In } + }; + static const QUMethod slot_5 = {"HelpTreeDoubleClicCallback", 2, param_slot_5 }; + static const QUMethod slot_6 = {"ShowHelpCallback", 0, 0 }; + static const QUMethod slot_7 = {"CommandHistoryCallback", 0, 0 }; + static const QMetaData slot_tbl[] = { + { "ExitSession()", &slot_0, QMetaData::Private }, + { "ClearButtonCallback()", &slot_1, QMetaData::Private }, + { "CommandEnteredCallback()", &slot_2, QMetaData::Private }, + { "ButtonCallback(const QString&)", &slot_3, QMetaData::Private }, + { "HelpTreeClicCallback()", &slot_4, QMetaData::Private }, + { "HelpTreeDoubleClicCallback(QListViewItem*,int)", &slot_5, QMetaData::Private }, + { "ShowHelpCallback()", &slot_6, QMetaData::Private }, + { "CommandHistoryCallback()", &slot_7, QMetaData::Private } + }; + static const QUParameter param_signal_0[] = { + { "text", &static_QUType_QString, 0, QUParameter::In } + }; + static const QUMethod signal_0 = {"myClicked", 1, param_signal_0 }; + static const QMetaData signal_tbl[] = { + { "myClicked(const QString&)", &signal_0, QMetaData::Private } + }; + metaObj = QMetaObject::new_metaobject( + "G4UIQt", parentObject, + slot_tbl, 8, + signal_tbl, 1, +#ifndef QT_NO_PROPERTIES + 0, 0, + 0, 0, +#endif // QT_NO_PROPERTIES + 0, 0 ); + cleanUp_G4UIQt.setMetaObject( metaObj ); + return metaObj; +} + +void* G4UIQt::qt_cast( const char* clname ) +{ + if ( !qstrcmp( clname, "G4UIQt" ) ) + return this; + if ( !qstrcmp( clname, "G4VBasicShell" ) ) + return (G4VBasicShell*)this; + if ( !qstrcmp( clname, "G4VInteractiveSession" ) ) + return (G4VInteractiveSession*)this; + return QObject::qt_cast( clname ); +} + +// SIGNAL myClicked +void G4UIQt::myClicked( const QString& t0 ) +{ + activate_signal( staticMetaObject()->signalOffset() + 0, t0 ); +} + +bool G4UIQt::qt_invoke( int _id, QUObject* _o ) +{ + switch ( _id - staticMetaObject()->slotOffset() ) { + case 0: ExitSession(); break; + case 1: ClearButtonCallback(); break; + case 2: CommandEnteredCallback(); break; + case 3: ButtonCallback((const QString&)static_QUType_QString.get(_o+1)); break; + case 4: HelpTreeClicCallback(); break; + case 5: HelpTreeDoubleClicCallback((QListViewItem*)static_QUType_ptr.get(_o+1),(int)static_QUType_int.get(_o+2)); break; + case 6: ShowHelpCallback(); break; + case 7: CommandHistoryCallback(); break; + default: + return QObject::qt_invoke( _id, _o ); + } + return TRUE; +} + +bool G4UIQt::qt_emit( int _id, QUObject* _o ) +{ + switch ( _id - staticMetaObject()->signalOffset() ) { + case 0: myClicked((const QString&)static_QUType_QString.get(_o+1)); break; + default: + return QObject::qt_emit(_id,_o); + } + return TRUE; +} +#ifndef QT_NO_PROPERTIES + +bool G4UIQt::qt_property( int id, int f, QVariant* v) +{ + return QObject::qt_property( id, f, v); +} + +bool G4UIQt::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; } +#endif // QT_NO_PROPERTIES + + +#endif +#endif + + +/**************************************************************************** +** Meta object code from reading C++ file 'G4UIQt.hh' +** +** Created: Mon Oct 1 10:59:35 2007 +** by: The Qt Meta Object Compiler version 59 (Qt 4.2.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#if QT_VERSION >= 0x040000 + +#ifdef G4UI_BUILD_QT_SESSION + +#include "../include/G4UIQt.hh" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'G4UIQt.hh' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 59 +#error "This file was generated using the moc from 4.2.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +static const uint qt_meta_data_G4UIQt[] = { + + // content: + 1, // revision + 0, // classname + 0, 0, // classinfo + 9, 10, // methods + 0, 0, // properties + 0, 0, // enums/sets + + // signals: signature, parameters, type, tag, flags + 7, 26, 31, 31, 0x05, + + // slots: signature, parameters, type, tag, flags + 32, 31, 31, 31, 0x08, + 46, 31, 31, 31, 0x08, + 68, 31, 31, 31, 0x08, + 93, 31, 31, 31, 0x08, + 117, 31, 31, 31, 0x08, + 140, 189, 31, 31, 0x08, + 191, 31, 31, 31, 0x08, + 210, 31, 31, 31, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_G4UIQt[] = { + "G4UIQt\0myClicked(QString)\0text\0\0" + "ExitSession()\0ClearButtonCallback()\0" + "CommandEnteredCallback()\0" + "ButtonCallback(QString)\0HelpTreeClicCallback()\0" + "HelpTreeDoubleClicCallback(QTreeWidgetItem*,int)\0" + ",\0ShowHelpCallback()\0CommandHistoryCallback()\0" +}; + +const QMetaObject G4UIQt::staticMetaObject = { + { &QObject::staticMetaObject, qt_meta_stringdata_G4UIQt, + qt_meta_data_G4UIQt, 0 } +}; + +const QMetaObject *G4UIQt::metaObject() const +{ + return &staticMetaObject; +} + +void *G4UIQt::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_G4UIQt)) + return static_cast(const_cast(this)); + if (!strcmp(_clname, "G4VBasicShell")) + return static_cast(const_cast(this)); + if (!strcmp(_clname, "G4VInteractiveSession")) + return static_cast(const_cast(this)); + return QObject::qt_metacast(_clname); +} + +int G4UIQt::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QObject::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: myClicked((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 1: ExitSession(); break; + case 2: ClearButtonCallback(); break; + case 3: CommandEnteredCallback(); break; + case 4: ButtonCallback((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 5: HelpTreeClicCallback(); break; + case 6: HelpTreeDoubleClicCallback((*reinterpret_cast< QTreeWidgetItem*(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; + case 7: ShowHelpCallback(); break; + case 8: CommandHistoryCallback(); break; + } + _id -= 9; + } + return _id; +} + +// SIGNAL 0 +void G4UIQt::myClicked(const QString & _t1) +{ + void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) }; + QMetaObject::activate(this, &staticMetaObject, 0, _a); +} + +#endif + +#endif diff --git a/source/interfaces/basic/src/G4UIWin32.cc b/source/interfaces/basic/src/G4UIWin32.cc index 5f24abc84f..20443472d1 100644 --- a/source/interfaces/basic/src/G4UIWin32.cc +++ b/source/interfaces/basic/src/G4UIWin32.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIWin32.cc,v 1.13 2006/06/29 19:09:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G.Barrand diff --git a/source/interfaces/basic/src/G4UIXaw.cc b/source/interfaces/basic/src/G4UIXaw.cc index 8edc3749d3..1a287298db 100644 --- a/source/interfaces/basic/src/G4UIXaw.cc +++ b/source/interfaces/basic/src/G4UIXaw.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIXaw.cc,v 1.6 2006/06/29 19:09:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G.Barrand diff --git a/source/interfaces/basic/src/G4UIXm.cc b/source/interfaces/basic/src/G4UIXm.cc index c31d56192d..e7c2438b05 100644 --- a/source/interfaces/basic/src/G4UIXm.cc +++ b/source/interfaces/basic/src/G4UIXm.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIXm.cc,v 1.14 2006/06/29 19:09:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G.Barrand diff --git a/source/interfaces/basic/src/G4UIcsh.cc b/source/interfaces/basic/src/G4UIcsh.cc index d31191216e..9592b1afae 100644 --- a/source/interfaces/basic/src/G4UIcsh.cc +++ b/source/interfaces/basic/src/G4UIcsh.cc @@ -25,7 +25,7 @@ // // // $Id: G4UIcsh.cc,v 1.8 2006/06/29 19:09:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4UIcsh.hh" diff --git a/source/interfaces/basic/src/G4UItcsh.cc b/source/interfaces/basic/src/G4UItcsh.cc index 6d4388642f..4702df4026 100644 --- a/source/interfaces/basic/src/G4UItcsh.cc +++ b/source/interfaces/basic/src/G4UItcsh.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4UItcsh.cc,v 1.14 2007/06/14 05:44:58 kmura Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4UItcsh.cc,v 1.15 2007/11/06 09:36:23 kmura Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef WIN32 @@ -36,6 +36,8 @@ #include "G4UItcsh.hh" #include #include +#include +#include // ASCII character code static const char AsciiCtrA = '\001'; @@ -58,6 +60,9 @@ static const char AsciiESC = '\033'; static const int AsciiPrintableMin = 32; +// history file +static const G4String historyFileName= "/.g4_hist"; + ///////////////////////////////////////////////////////// G4UItcsh::G4UItcsh(const G4String& prompt, G4int maxhist) : G4VUIshell(prompt), @@ -68,12 +73,45 @@ G4UItcsh::G4UItcsh(const G4String& prompt, G4int maxhist) { // get current terminal mode tcgetattr(0, &tios); + + // read a shell history file + G4String homedir= getenv("HOME"); + G4String fname= homedir + historyFileName; + + std::ifstream histfile; + enum { BUFSIZE= 1024 }; char linebuf[BUFSIZE]; + + histfile.open(fname, std::ios::in); + while (histfile.good()) { + if(histfile.eof()) break; + + histfile.getline(linebuf, BUFSIZE); + G4String aline= linebuf; + aline.strip(G4String::both); + if(aline.size() != 0) StoreHistory(linebuf); + } + histfile.close(); } ///////////////////// G4UItcsh::~G4UItcsh() ///////////////////// { + // store a shell history + G4String homedir= getenv("HOME"); + G4String fname= homedir + historyFileName; + + std::ofstream histfile; + histfile.open(fname, std::ios::out); + + G4int n0hist= 1; + if( currentHistoryNo > maxHistory ) n0hist= currentHistoryNo-maxHistory+1; + + for (G4int i=n0hist; i<= currentHistoryNo; i++) { + histfile << RestoreHistory(i) << G4endl; + } + + histfile.close(); } ////////////////////////////////////////// @@ -600,9 +638,9 @@ G4String G4UItcsh::ReadLine() return commandLine; } -/////////////////////////////////// +////////////////////////////////////////////////// G4String G4UItcsh::GetCommandLine(const char* msg) -/////////////////////////////////// +////////////////////////////////////////////////// { SetTermToInputMode(); diff --git a/source/interfaces/basic/src/G4UIterminal.cc b/source/interfaces/basic/src/G4UIterminal.cc index 938cc37704..ca8e3dfa39 100644 --- a/source/interfaces/basic/src/G4UIterminal.cc +++ b/source/interfaces/basic/src/G4UIterminal.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4UIterminal.cc,v 1.25 2007/06/19 10:38:29 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4UIterminal.cc,v 1.27 2007/10/29 18:49:45 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ==================================================================== // G4UIterminal.cc @@ -41,7 +41,6 @@ #include #ifndef WIN32 -#include "G4RunManager.hh" #include #endif @@ -53,29 +52,31 @@ static G4VUIshell* theshell= 0; #ifndef WIN32 +extern "C" { + //////////////////////////////// static void SignalHandler(G4int) //////////////////////////////// { - G4RunManager* runManager= G4RunManager::GetRunManager(); G4StateManager* stateManager= G4StateManager::GetStateManager(); G4ApplicationState state= stateManager-> GetCurrentState(); if(state==G4State_GeomClosed || state==G4State_EventProc) { G4cout << "aborting Run ..."; - runManager-> AbortRun(true); + G4UImanager::GetUIpointer()->ApplyCommand("/run/abort"); G4cout << G4endl; } else { G4cout << G4endl << "Session terminated." << G4endl; theshell-> ResetTerminal(); - delete runManager; exit(0); } // for original Unix / System V signal(SIGINT, SignalHandler); } + +} #endif // ==================================================================== diff --git a/source/interfaces/basic/src/G4VUIshell.cc b/source/interfaces/basic/src/G4VUIshell.cc index ccf1acba83..40d09391b6 100644 --- a/source/interfaces/basic/src/G4VUIshell.cc +++ b/source/interfaces/basic/src/G4VUIshell.cc @@ -25,7 +25,7 @@ // // // $Id: G4VUIshell.cc,v 1.10 2007/06/14 05:44:58 kmura Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4UImanager.hh" diff --git a/examples/extended/medical/DICOM/include/DicomOctreeTerminalNode.hh b/source/interfaces/common/include/G4Qt.hh similarity index 62% rename from examples/extended/medical/DICOM/include/DicomOctreeTerminalNode.hh rename to source/interfaces/common/include/G4Qt.hh index 819fe1b438..f24726a01a 100644 --- a/examples/extended/medical/DICOM/include/DicomOctreeTerminalNode.hh +++ b/source/interfaces/common/include/G4Qt.hh @@ -23,38 +23,43 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// The code was written by : -// *Louis Archambault louis.archambault@phy.ulaval.ca, -// *Luc Beaulieu beaulieu@phy.ulaval.ca -// +Vincent Hubert-Tremblay at tigre.2@sympatico.ca // +// $Id: G4Qt.hh,v 1.2 2007/11/08 17:00:09 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// *Centre Hospitalier Universitaire de Quebec (CHUQ), -// Hotel-Dieu de Quebec, departement de Radio-oncologie -// 11 cote du palais. Quebec, QC, Canada, G1R 2J6 -// tel (418) 525-4444 #6720 -// fax (418) 691 5268 -// -// + Université Laval, Québec (QC) Canada -//*******************************************************// -#ifndef DicomOctreeTerminalNode_h -#define DicomOctreeTerminalNode_h +// To unify Qt event treatment between +// G4/interfaces Qt sessions and G4/visualizations Qt drivers. +// L. Garnier -class DicomOctreeTerminalNode : public DicomOctreeNode -{ +#ifndef G4QT_HH +#define G4QT_HH + +#if defined(G4INTY_BUILD_QT) || defined(G4INTY_USE_QT) + +#include "G4VInteractorManager.hh" + +// Class description : +// +// G4Qt : a singleton to handle GUI sessions and visualization +// drivers built over Qt. It permits to have one Qt main loop for +// the whole application. The Qt toolkit is inited in the +// constructor. It is done once for the whole application. +// +// Class description - end : + +class G4Qt : public G4VInteractorManager { public: - DicomOctreeTerminalNode(DicomOctreeNode* pParent ); - ~ DicomOctreeTerminalNode(); - -public: - // ---- MGP ---- Replace *& with proper design of the operator - DicomOctreeNode*& operator []( G4int index ); - G4int MemSize(); - - OctreeNodeType Type() {return TERMINAL_NODE;} - G4int FindChild( const DicomOctreeNode* ) {return -1;} - + static G4Qt* getInstance(); + static G4Qt* getInstance(int,char**,char*); + G4bool Inited(); + void* GetEvent(); + void FlushAndWaitExecution(); + virtual ~G4Qt(); private: - static DicomOctreeNode* mNull; + G4Qt (int,char**,char*); + static G4Qt* instance; // Pointer to single instance. }; + +#endif //HAS_QT + #endif diff --git a/source/interfaces/common/include/G4VBasicShell.hh b/source/interfaces/common/include/G4VBasicShell.hh index fd04700c97..25b9caea4d 100644 --- a/source/interfaces/common/include/G4VBasicShell.hh +++ b/source/interfaces/common/include/G4VBasicShell.hh @@ -25,7 +25,7 @@ // // // $Id: G4VBasicShell.hh,v 1.7 2006/06/29 19:10:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VBasicShell_H diff --git a/source/interfaces/common/include/G4VInteractorManager.hh b/source/interfaces/common/include/G4VInteractorManager.hh index 0ca5c62389..437563b01d 100644 --- a/source/interfaces/common/include/G4VInteractorManager.hh +++ b/source/interfaces/common/include/G4VInteractorManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4VInteractorManager.hh,v 1.9 2006/06/29 19:10:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G.Barrand diff --git a/source/interfaces/common/include/G4Win32.hh b/source/interfaces/common/include/G4Win32.hh index 4017594ae5..53e20ae2d6 100644 --- a/source/interfaces/common/include/G4Win32.hh +++ b/source/interfaces/common/include/G4Win32.hh @@ -25,7 +25,7 @@ // // // $Id: G4Win32.hh,v 1.8 2006/06/29 19:10:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // To unify Windows message treatment between // G4/interfaces Windows sessions and G4/visualizations Windows drivers. diff --git a/source/interfaces/common/include/G4Xt.hh b/source/interfaces/common/include/G4Xt.hh index 11a992cf62..bc472a1a60 100644 --- a/source/interfaces/common/include/G4Xt.hh +++ b/source/interfaces/common/include/G4Xt.hh @@ -25,7 +25,7 @@ // // // $Id: G4Xt.hh,v 1.6 2006/06/29 19:10:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // To unify X11 event treatment between // G4/interfaces Xt sessions and G4/visualizations Xt drivers. diff --git a/source/interfaces/common/src/G4Qt.cc b/source/interfaces/common/src/G4Qt.cc new file mode 100644 index 0000000000..18b99b6324 --- /dev/null +++ b/source/interfaces/common/src/G4Qt.cc @@ -0,0 +1,180 @@ +// +// ******************************************************************** +// * 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: G4Qt.cc,v 1.7 2007/11/15 18:24:28 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// L. Garnier + +#if defined(G4INTY_BUILD_QT) || defined(G4INTY_USE_QT) + +#include +#include + +#include "G4ios.hh" + +#include "G4Qt.hh" + +#include + + +#define NewString(str) \ + ((str) != NULL ? (strcpy((char*)malloc((unsigned)strlen(str) + 1), str)) : NULL) + +//static void XWidgetIconify (Widget); +//static void XWidgetUniconify (Widget); +//static void XDisplaySetWindowToNormalState (Display*,Window); + +G4Qt* G4Qt::instance = NULL; + +static G4bool QtInited = FALSE; +//static int argn = 0; +//static char** args = NULL; +// static QtAppContext appContext = NULL; +//static QApplication app = NULL; + +/***************************************************************************/ +G4Qt* G4Qt::getInstance ( +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ + return G4Qt::getInstance (0,NULL,(char*)"Geant4"); +} +/***************************************************************************/ +G4Qt* G4Qt::getInstance ( + int a_argn +,char** a_args +,char* a_class +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ + if (instance==NULL) { + instance = new G4Qt(a_argn,a_args,a_class); + } + return instance; +} +/***************************************************************************/ +G4Qt::G4Qt ( + int a_argn +,char** a_args +,char* a_class +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ +#ifdef GEANT4_QT_DEBUG + printf("G4Qt::G4Qt try to inited Qt\n"); +#endif + if(QtInited==FALSE) { //Qt should be Inited once ! +#ifdef GEANT4_QT_DEBUG + printf("G4Qt::G4Qt inited Qt\n"); +#endif +#if QT_VERSION < 0x040000 + qApp = new QApplication (a_argn, a_args); + // QApplication qApp(a_argn, a_args); + // if(&qApp == NULL) { +#else + new QApplication (a_argn, a_args); +#endif + if(!qApp) { + + G4cout << "G4Qt : Unable to init Qt." << G4endl; + } else { + QtInited = TRUE; + //#if QT_VERSION < 0x040000 + // SetMainInteractor (&qApp); + //#else + SetMainInteractor (qApp); + //#endif + SetArguments (a_argn,a_args); +#ifdef GEANT4_QT_DEBUG + printf("G4Qt::G4Qt inited Qt END\n"); +#endif + } + } +#ifdef GEANT4_QT_DEBUG + if (qApp) { + printf("G4Qt::qApp exist\n"); + } else { + printf("G4Qt::qApp not exist\n"); + } +#endif + // AddDispatcher ((G4DispatchFunction)XtDispatchEvent); +} +/***************************************************************************/ +G4Qt::~G4Qt ( +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ + if(this==instance) { + instance = NULL; + } +} +/***************************************************************************/ +G4bool G4Qt::Inited ( +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ + return QtInited; +} +/***************************************************************************/ +/** + Si j'ai bien compris, cette fonction ne sert à rien + */ +void* G4Qt::GetEvent ( +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ +//FIXME +// G4cout << "G4Qt : Rien compris a cette fonction G4Qt::GetEvent." << G4endl; +// static XEvent event; +// if(appContext==NULL) return NULL; +// if(mainApp==NULL) return NULL; +// QtAppNextEvent (appContext, &event); +// return &event; + printf("*"); + return 0; +} +/***************************************************************************/ +void G4Qt::FlushAndWaitExecution ( +) +/***************************************************************************/ +/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +{ + // printf("G4Qt::FlushAndWaitExecution :: Flush ....\n"); + if(!qApp) return; + qApp->processEvents(); +} + +#endif + + + diff --git a/source/interfaces/common/src/G4VBasicShell.cc b/source/interfaces/common/src/G4VBasicShell.cc index 336f1251cb..d61e2ca46c 100644 --- a/source/interfaces/common/src/G4VBasicShell.cc +++ b/source/interfaces/common/src/G4VBasicShell.cc @@ -25,7 +25,7 @@ // // // $Id: G4VBasicShell.cc,v 1.12 2006/06/29 19:10:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4VBasicShell.hh" diff --git a/source/interfaces/common/src/G4VInteractorManager.cc b/source/interfaces/common/src/G4VInteractorManager.cc index 69eef6d428..183d5c28c6 100644 --- a/source/interfaces/common/src/G4VInteractorManager.cc +++ b/source/interfaces/common/src/G4VInteractorManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4VInteractorManager.cc,v 1.13 2006/06/29 19:10:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G.Barrand diff --git a/source/interfaces/common/src/G4Win32.cc b/source/interfaces/common/src/G4Win32.cc index e139c19d77..91a9eba8a0 100644 --- a/source/interfaces/common/src/G4Win32.cc +++ b/source/interfaces/common/src/G4Win32.cc @@ -25,7 +25,7 @@ // // // $Id: G4Win32.cc,v 1.9 2006/06/29 19:10:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G.Barrand diff --git a/source/interfaces/common/src/G4Xt.cc b/source/interfaces/common/src/G4Xt.cc index e787c5e809..caf5a9c649 100644 --- a/source/interfaces/common/src/G4Xt.cc +++ b/source/interfaces/common/src/G4Xt.cc @@ -25,7 +25,7 @@ // // // $Id: G4Xt.cc,v 1.11 2006/06/29 19:10:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G.Barrand diff --git a/source/materials/History b/source/materials/History index d73ed68b91..93abb5681e 100644 --- a/source/materials/History +++ b/source/materials/History @@ -1,4 +1,4 @@ -$Id: History,v 1.87 2007/06/20 09:21:45 vnivanch Exp $ +$Id: History,v 1.103 2007/12/11 13:32:08 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,59 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +11-12-07 G.Cosmo (materials-V09-00-08) +- Made GetZ13() and GetLOGA() in G4NistManager not inlined (since they + handle static data), to allow for building of DLLs on WIN32-VC platform. + +30-10-07 V.Ivanchenko (materials-V09-00-07) +- G4NistManager and G4NistMaterialBuilder - set default state kStateSolid + (before was kStateUndefined) - this modification keep + existing user code unchanged + +28-10-07 V.Ivanchenko (materials-V09-00-06) +- G4NistManager and G4NistMaterialBuilder - extended interfaces to build + new materials: added G4State, temperature, pressure + (gasses are allowed), because of default values for + these extra parameters no interface change to users + +18-10-07 V.Ivanchenko (materials-V09-00-05) +- G4NistManager - added deletion of isotopes (fixed problem of double + deletion); added precomputed Z^1/3 and log(A) +- G4Material - move registration in MaterialTable from constructors + to InitialisePointers; added Imean to printout +- G4Element - do not delete isotopes; move registration in ElementTable + from constructors to ComputeDerivedQuantities + +01-10-07 V.Ivanchenko (materials-V09-00-04) +- G4SandiaTable - fixed memory leak + +01-10-07 V.Ivanchenko (materials-V09-00-03) +- G4SandiaTable - separated computations of tables photo-absobtion + coeffitients for photo-electric effect and PAI model; + added fMatSandiaMatrixPAI ordered table; + general cleanup, reduce number of static variables; + +27-09-07 V.Ivanchenko (materials-V09-00-02) +- G4IonisParamMat - add comutation and get methods for parameters of + ion inonisation: Fermi energy, effective Z, effective L-factor; + they will not be recomputed at each step + +27-07-07 V.Ivanchenko (materials-V09-00-01) +- G4NistManager - simplified logic of Print methods +- G4NistElementBuilder - added protection to Print method +- G4NistMaterialBuilder - modified FindOrBuildMaterial method - NIST + material is built even user create a material + with the same name, so NIST materials + parameters cannot be substituted +- G4Material, G4Element - fix destructors, now all materials and elements + are deleted at the end of a run + +26-07-07 V.Ivanchenko (materials-V09-00-00) +- G4Nistmanager provide destruction of all materials and elements +- G4NistElementBuilder - for given Z build only one Nist element + and allow user create other elements with given Z (HP physics + requirement) + 19-06-07 V.Ivanchenko (materials-V08-03-02) - G4SandiaTable - comment out destruction of G4OrderedTable @@ -25,6 +78,8 @@ committal in the CVS repository ! 14-06-07 V.Ivanchenko (materials-V08-03-00) - G4SandiaTable - added deletion of elements of the table in destructor + +14-08-07 V.Ivanchenko (materials-V08-03-00a) - G4NistElementBuilder - protection (Z>=limitNumElements) inside BuildElement (Mokka request) diff --git a/source/materials/include/G4AtomicShells.hh b/source/materials/include/G4AtomicShells.hh index 44ff33415d..12aa061412 100644 --- a/source/materials/include/G4AtomicShells.hh +++ b/source/materials/include/G4AtomicShells.hh @@ -25,7 +25,7 @@ // // // $Id: G4AtomicShells.hh,v 1.7 2006/10/17 15:15:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // class description // diff --git a/source/materials/include/G4Element.hh b/source/materials/include/G4Element.hh index acb8abcc4b..10ad6329df 100644 --- a/source/materials/include/G4Element.hh +++ b/source/materials/include/G4Element.hh @@ -25,7 +25,7 @@ // // // $Id: G4Element.hh,v 1.22 2006/10/17 15:15:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class description diff --git a/source/materials/include/G4ElementTable.hh b/source/materials/include/G4ElementTable.hh index 91b27f20f0..9270116c42 100644 --- a/source/materials/include/G4ElementTable.hh +++ b/source/materials/include/G4ElementTable.hh @@ -25,7 +25,7 @@ // // // $Id: G4ElementTable.hh,v 1.6 2006/06/29 19:10:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/materials/include/G4ElementVector.hh b/source/materials/include/G4ElementVector.hh index 72f135c32a..4e1b73cb04 100644 --- a/source/materials/include/G4ElementVector.hh +++ b/source/materials/include/G4ElementVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4ElementVector.hh,v 1.6 2006/06/29 19:11:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/materials/include/G4IonisParamElm.hh b/source/materials/include/G4IonisParamElm.hh index 274320125e..f11bd94c2c 100644 --- a/source/materials/include/G4IonisParamElm.hh +++ b/source/materials/include/G4IonisParamElm.hh @@ -25,7 +25,7 @@ // // // $Id: G4IonisParamElm.hh,v 1.9 2006/06/29 19:11:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class description diff --git a/source/materials/include/G4IonisParamMat.hh b/source/materials/include/G4IonisParamMat.hh index 68aae10c90..8100e6eea1 100644 --- a/source/materials/include/G4IonisParamMat.hh +++ b/source/materials/include/G4IonisParamMat.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4IonisParamMat.hh,v 1.9 2006/06/29 19:11:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4IonisParamMat.hh,v 1.10 2007/09/27 14:05:47 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // class description @@ -36,9 +36,10 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... -// 28-10-02: add setMeanExcitationEnergy (V.Ivanchenko) -// 09-03-01: copy constructor and assignement operator in public (mma) // 09-07-98: data moved from G4Material (mma) +// 09-03-01: copy constructor and assignement operator in public (mma) +// 28-10-02: add setMeanExcitationEnergy (V.Ivanchenko) +// 27-09-07: add computation of parameters for ions (V.Ivanchenko) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... @@ -88,6 +89,11 @@ public: G4double GetEnergy0fluct() const {return fEnergy0fluct;}; G4double GetRateionexcfluct() const {return fRateionexcfluct;}; + // parameters for ion corrections computations + G4double GetZeffective() const {return fZeff;}; + G4double GetFermiEnergy() const {return fFermiEnergy;}; + G4double GetLFactor() const {return fLfactor;}; + public: // without description G4IonisParamMat(const G4IonisParamMat&); @@ -111,6 +117,9 @@ private: // Compute parameters for the energy fluctuation model void ComputeFluctModel(); + // Compute parameters for ion parameterizations + void ComputeIonParameters(); + private: // @@ -140,6 +149,11 @@ private: G4double fLogEnergy2fluct; G4double fEnergy0fluct; G4double fRateionexcfluct; + + // parameters for ion corrections computations + G4double fZeff; + G4double fFermiEnergy; + G4double fLfactor; }; #endif diff --git a/source/materials/include/G4Isotope.hh b/source/materials/include/G4Isotope.hh index 34bc24ee8e..9e7b6a9739 100644 --- a/source/materials/include/G4Isotope.hh +++ b/source/materials/include/G4Isotope.hh @@ -25,7 +25,7 @@ // // // $Id: G4Isotope.hh,v 1.19 2006/06/29 19:11:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/materials/include/G4IsotopeVector.hh b/source/materials/include/G4IsotopeVector.hh index 8bae4ade49..14555fb2a7 100644 --- a/source/materials/include/G4IsotopeVector.hh +++ b/source/materials/include/G4IsotopeVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4IsotopeVector.hh,v 1.6 2006/06/29 19:11:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/materials/include/G4MPVEntry.hh b/source/materials/include/G4MPVEntry.hh index 59ec36d435..e5e32f25d8 100644 --- a/source/materials/include/G4MPVEntry.hh +++ b/source/materials/include/G4MPVEntry.hh @@ -25,7 +25,7 @@ // // // $Id: G4MPVEntry.hh,v 1.6 2006/06/29 19:11:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/include/G4Material.hh b/source/materials/include/G4Material.hh index b97835d704..509083c9bc 100644 --- a/source/materials/include/G4Material.hh +++ b/source/materials/include/G4Material.hh @@ -25,7 +25,7 @@ // // // $Id: G4Material.hh,v 1.25 2006/06/29 19:11:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class description diff --git a/source/materials/include/G4MaterialPropertiesTable.hh b/source/materials/include/G4MaterialPropertiesTable.hh index df98c2d9e0..6e2d5ad7d6 100644 --- a/source/materials/include/G4MaterialPropertiesTable.hh +++ b/source/materials/include/G4MaterialPropertiesTable.hh @@ -25,7 +25,7 @@ // // // $Id: G4MaterialPropertiesTable.hh,v 1.18 2006/06/29 19:11:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/include/G4MaterialPropertyVector.hh b/source/materials/include/G4MaterialPropertyVector.hh index e62a670c75..c682657dbc 100644 --- a/source/materials/include/G4MaterialPropertyVector.hh +++ b/source/materials/include/G4MaterialPropertyVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4MaterialPropertyVector.hh,v 1.10 2006/06/29 19:11:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/include/G4MaterialTable.hh b/source/materials/include/G4MaterialTable.hh index 331c698e17..11ef38abbf 100644 --- a/source/materials/include/G4MaterialTable.hh +++ b/source/materials/include/G4MaterialTable.hh @@ -25,7 +25,7 @@ // // // $Id: G4MaterialTable.hh,v 1.6 2006/06/29 19:11:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/materials/include/G4NistElementBuilder.hh b/source/materials/include/G4NistElementBuilder.hh index a44cfaed15..dd947af44f 100644 --- a/source/materials/include/G4NistElementBuilder.hh +++ b/source/materials/include/G4NistElementBuilder.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4NistElementBuilder.hh,v 1.12 2007/05/02 11:22:35 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4NistElementBuilder.hh,v 1.13 2007/07/26 18:52:12 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4NistElementBuilder_h #define G4NistElementBuilder_h 1 @@ -113,9 +113,11 @@ private: G4int nFirstIsotope [maxNumElements]; G4int idxIsotopes [maxNumElements]; - G4double massIsotopes [maxAbundance]; - G4double sigMass [maxAbundance]; - G4double relAbundance [maxAbundance]; + G4int elmIndex [maxNumElements]; + + G4double massIsotopes [maxAbundance]; + G4double sigMass [maxAbundance]; + G4double relAbundance [maxAbundance]; G4int limitNumElements; // protection G4int index; diff --git a/source/materials/include/G4NistManager.hh b/source/materials/include/G4NistManager.hh index 9f93d9b716..47904a9749 100644 --- a/source/materials/include/G4NistManager.hh +++ b/source/materials/include/G4NistManager.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4NistManager.hh,v 1.12 2007/05/02 11:22:35 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4NistManager.hh,v 1.17 2007/12/11 13:32:08 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------------- @@ -43,6 +43,8 @@ // 17.10.06 V.Ivanchneko add methods: GetAtomicMass, GetNistElementNames, // GetNistMaterialNames // 02.05.07 V.Ivanchneko add GetNistFirstIsotopeN and GetNumberOfNistIsotopes +// 28.07.07 V.Ivanchneko make simple methods inline +// 28.10.07 V.Ivanchneko add state, T, P to maetrial build // // Class Description: // @@ -66,8 +68,8 @@ #include "globals.hh" #include "G4Material.hh" #include "G4NistElementBuilder.hh" +#include "G4NistMaterialBuilder.hh" -class G4NistMaterialBuilder; class G4NistMessenger; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -81,89 +83,105 @@ public: static G4NistManager* Instance(); ~G4NistManager(); - // Elements - // - void RegisterElement (G4Element*); - void DeRegisterElement(G4Element*); - - G4Element* GetElement(size_t index); + // Elements + // + inline G4Element* GetElement(size_t index); // Find or build G4Element by atomic number - G4Element* FindOrBuildElement(G4int Z, G4bool isotopes=true); + inline G4Element* FindOrBuildElement(G4int Z, G4bool isotopes=true); // Find or build G4Element by symbol - G4Element* FindOrBuildElement(const G4String& symb, G4bool isotopes=true); + inline G4Element* FindOrBuildElement(const G4String& symb, + G4bool isotopes=true); - size_t GetNumberOfElements() const; - G4int GetZ(const G4String& symb) const; + inline size_t GetNumberOfElements() const; + inline G4int GetZ(const G4String& symb) const; // Mass in amu - G4double GetAtomicMassAmu(G4int Z) const; + inline G4double GetAtomicMassAmu(G4int Z) const; // Mass in Geant4 units - G4double GetIsotopeMass(G4int Z, G4int N) const; - G4double GetAtomicMass(G4int Z, G4int N) const; + inline G4double GetIsotopeMass(G4int Z, G4int N) const; + inline G4double GetAtomicMass(G4int Z, G4int N) const; // Number of isotopes - G4int GetNistFirstIsotopeN(G4int Z) const; - G4int GetNumberOfNistIsotopes(G4int Z) const; + inline G4int GetNistFirstIsotopeN(G4int Z) const; + inline G4int GetNumberOfNistIsotopes(G4int Z) const; - G4double GetIsotopeAbundance(G4int Z, G4int N) const; + inline G4double GetIsotopeAbundance(G4int Z, G4int N) const; - void PrintElement(const G4String&); - void PrintElement(G4int Z); - + inline void PrintElement(G4int Z); + + void PrintElement(const G4String&); void PrintG4Element(const G4String&); - - const std::vector& GetNistElementNames() const; + + inline const std::vector& GetNistElementNames() const; // Materials // - void RegisterMaterial (G4Material*); - void DeRegisterMaterial(G4Material*); - - G4Material* GetMaterial(size_t index); + inline G4Material* GetMaterial(size_t index); // Find or build a G4Material by name, from the dataBase // - G4Material* FindOrBuildMaterial(const G4String& name, G4bool isotopes=true, - G4bool warning=false); + inline G4Material* FindOrBuildMaterial(const G4String& name, + G4bool isotopes=true, + G4bool warning=false); // construct a G4Material from scratch by atome count // - G4Material* ConstructNewMaterial(const G4String& name, - const std::vector& elm, - const std::vector& nbAtoms, - G4double dens, G4bool isotopes=true); + inline G4Material* ConstructNewMaterial( + const G4String& name, + const std::vector& elm, + const std::vector& nbAtoms, + G4double dens, + G4bool isotopes=true, + G4State state = kStateSolid, + G4double temp = STP_Temperature, + G4double pressure = STP_Pressure); // construct a G4Material from scratch by fraction mass // - G4Material* ConstructNewMaterial(const G4String& name, - const std::vector& elm, - const std::vector& weight, - G4double dens, G4bool isotopes=true); + inline G4Material* ConstructNewMaterial( + const G4String& name, + const std::vector& elm, + const std::vector& weight, + G4double dens, + G4bool isotopes=true, + G4State state = kStateSolid, + G4double temp = STP_Temperature, + G4double pressure = STP_Pressure); // construct a gas G4Material from scratch by atome count // - G4Material* ConstructNewGasMaterial(const G4String& name, - const G4String& nameNist, - G4double temp, G4double pres, - G4bool isotopes=true); + inline G4Material* ConstructNewGasMaterial(const G4String& name, + const G4String& nameNist, + G4double temp, + G4double pres, + G4bool isotopes=true); - size_t GetNumberOfMaterials(); + inline size_t GetNumberOfMaterials(); - void SetVerbose(G4int); - G4int GetVerbose(); + inline G4int GetVerbose(); + + void SetVerbose(G4int); - void ListMaterials(const G4String&); void PrintG4Material(const G4String&); - const std::vector& GetNistMaterialNames() const; + inline void ListMaterials(const G4String&); + + inline const std::vector& GetNistMaterialNames() const; + + G4double GetZ13(G4double Z); + + G4double GetLOGA(G4double A); private: G4NistManager(); static G4NistManager* instance; + + static G4double POWERZ13[256]; + static G4double LOGA[256]; std::vector elements; std::vector materials; @@ -193,8 +211,9 @@ size_t G4NistManager::GetNumberOfMaterials() inline G4Element* G4NistManager::GetElement(size_t index) { - G4Element* elm = 0; - if(index < nElements) elm = elements[index]; + G4Element* elm = 0; + const G4ElementTable* theElementTable = G4Element::GetElementTable(); + if(index < theElementTable->size()) elm = (*theElementTable)[index]; return elm; } @@ -289,11 +308,20 @@ const std::vector& G4NistManager::GetNistElementNames() const //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +inline +void G4NistManager::PrintElement(G4int Z) +{ + elmBuilder->PrintElement(Z); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + inline G4Material* G4NistManager::GetMaterial(size_t index) { + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); G4Material* mat = 0; - if(index < nMaterials) mat = materials[index]; + if(index < theMaterialTable->size()) mat = (*theMaterialTable)[index]; return mat; } @@ -307,5 +335,78 @@ G4int G4NistManager::GetVerbose() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +inline +G4Material* G4NistManager::FindOrBuildMaterial(const G4String& name, + G4bool isotopes, + G4bool warning) +{ + return matBuilder->FindOrBuildMaterial(name, isotopes, warning); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +G4Material* G4NistManager::ConstructNewMaterial( + const G4String& name, + const std::vector& elm, + const std::vector& nbAtoms, + G4double dens, + G4bool isotopes, + G4State state, + G4double T, + G4double P) + +{ + return + matBuilder->ConstructNewMaterial(name,elm,nbAtoms,dens,isotopes,state,T,P); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +G4Material* G4NistManager::ConstructNewMaterial( + const G4String& name, + const std::vector& elm, + const std::vector& w, + G4double dens, + G4bool isotopes, + G4State state, + G4double T, + G4double P) +{ + return matBuilder->ConstructNewMaterial(name,elm,w,dens,isotopes,state,T,P); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +G4Material* G4NistManager::ConstructNewGasMaterial( + const G4String& name, + const G4String& nameNist, + G4double temp, G4double pres, + G4bool isotopes) +{ + return matBuilder->ConstructNewGasMaterial(name,nameNist, + temp,pres,isotopes); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +void G4NistManager::ListMaterials(const G4String& list) +{ + matBuilder->ListMaterials(list); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +const std::vector& G4NistManager::GetNistMaterialNames() const +{ + return matBuilder->GetMaterialNames(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/source/materials/include/G4NistMaterialBuilder.hh b/source/materials/include/G4NistMaterialBuilder.hh index c15692d073..f3a3ae3dda 100644 --- a/source/materials/include/G4NistMaterialBuilder.hh +++ b/source/materials/include/G4NistMaterialBuilder.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4NistMaterialBuilder.hh,v 1.9 2006/10/17 15:15:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4NistMaterialBuilder.hh,v 1.12 2007/10/30 10:05:52 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4NistMaterialBuilder_h #define G4NistMaterialBuilder_h 1 @@ -40,7 +40,10 @@ // Modifications: // 31.10.05 Add chemical effect and gas properties (V.Ivanchenko) // 27.02.06 V.Ivanchneko add ConstructNewGasMaterial -// 11.05.06 V.Ivanchneko add warning flag to FindMaterial method +// 11.05.06 V.Ivanchneko add warning flag to FindOrBuildMaterial method +// 27.07.06 V.Ivanchneko set defaul warning=true for FindOrBuildMaterial +// 27.07.07 V.Ivanchneko add matIndex vector to control built materials +// 28.07.07 V.Ivanchneko add BuildMaterial method using Nist index // //---------------------------------------------------------------------------- // @@ -58,36 +61,44 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -class G4NistManager; class G4NistElementBuilder; class G4NistMaterialBuilder { public: - G4NistMaterialBuilder(G4NistManager* mm=0, G4NistElementBuilder* eb=0, - G4int verb=0); + G4NistMaterialBuilder(G4NistElementBuilder*, G4int verb=0); ~G4NistMaterialBuilder(); // Find or build a G4Material by name, from dataBase // - G4Material* FindOrBuildMaterial (const G4String& name, G4bool isotopes=true, - G4bool warning=false); + G4Material* FindOrBuildMaterial (const G4String& name, + G4bool isotopes=true, + G4bool warning=true); // construct a G4Material from scratch by atome count // G4Material* ConstructNewMaterial (const G4String& name, const std::vector& elm, const std::vector& nbAtoms, - G4double dens, G4bool isotopes=true); + G4double dens, + G4bool isotopes=true, + G4State state = kStateSolid, + G4double temp = STP_Temperature, + G4double pressure = STP_Pressure); // construct a G4Material from scratch by fraction mass // G4Material* ConstructNewMaterial (const G4String& name, const std::vector& elm, const std::vector& weight, - G4double dens, G4bool isotopes=true); + G4double dens, + G4bool isotopes=true, + G4State state = kStateSolid, + G4double temp = STP_Temperature, + G4double pressure = STP_Pressure); + // construct a gas G4Material from scratch by atome count // @@ -129,13 +140,13 @@ private: // build a G4Material from dataBase G4Material* BuildMaterial(const G4String& name, G4bool isotopes); + G4Material* BuildMaterial(G4int idx, G4bool isotopes); void DumpElm(G4int); void DumpMix(G4int); private: - G4NistManager* matManager; G4NistElementBuilder* elmBuilder; G4int verbose; @@ -156,6 +167,8 @@ private: std::vector indexes; std::vector elements; + std::vector matIndex; + std::vector temperatures; std::vector presures; diff --git a/source/materials/include/G4NistMessenger.hh b/source/materials/include/G4NistMessenger.hh index 2e76909bf8..8f82df6bd0 100644 --- a/source/materials/include/G4NistMessenger.hh +++ b/source/materials/include/G4NistMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4NistMessenger.hh,v 1.4 2007/05/02 10:48:52 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // File name: G4NistMessenger // diff --git a/source/materials/include/G4OpticalSurface.hh b/source/materials/include/G4OpticalSurface.hh index 557e3efea4..3709f8f1b6 100644 --- a/source/materials/include/G4OpticalSurface.hh +++ b/source/materials/include/G4OpticalSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpticalSurface.hh,v 1.8 2006/06/29 19:12:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/include/G4SandiaTable.hh b/source/materials/include/G4SandiaTable.hh index 18b6138e7d..8216876c83 100644 --- a/source/materials/include/G4SandiaTable.hh +++ b/source/materials/include/G4SandiaTable.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SandiaTable.hh,v 1.14 2006/06/29 19:12:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SandiaTable.hh,v 1.21 2007/10/02 10:13:33 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // class description // @@ -38,12 +38,12 @@ // // History: // -// 05.03.04 V.Grichine, new methods for old sorting algorithm for PAI model -// 03.04.01 fnulcof[4] added; returned if energy < emin +// 10.06.97 created. V. Grichine +// 18.11.98 simplified public interface; new methods for materials. mma // 30.01.01 major bug in the computation of AoverAvo and in the units (/g!) // in GetSandiaCofPerAtom(). mma -// 18.11.98 simplified public interface; new methods for materials. mma -// 10.06.97 created. V. Grichine +// 03.04.01 fnulcof[4] added; returned if energy < emin +// 05.03.04 V.Grichine, new methods for old sorting algorithm for PAI model // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... @@ -57,108 +57,113 @@ class G4Material; - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... class G4SandiaTable { public: // with description - G4SandiaTable(G4int); - G4SandiaTable(G4Material*); - + G4SandiaTable(G4Material*); - ~G4SandiaTable(); + ~G4SandiaTable(); + + //main computation per atom: + static G4double* GetSandiaCofPerAtom(G4int Z, G4double energy); + static G4double GetZtoA (G4int Z); + + //per volume of a material: + inline G4int GetMatNbOfIntervals(); + inline G4double GetSandiaCofForMaterial(G4int,G4int); + inline G4double* GetSandiaCofForMaterial(G4double energy); + inline G4double GetSandiaMatTable(G4int,G4int); + + inline G4double GetSandiaCofForMaterialPAI(G4int,G4int); + inline G4double* GetSandiaCofForMaterialPAI(G4double energy); + inline G4double GetSandiaMatTablePAI(G4int,G4int); + inline G4OrderedTable* GetSandiaMatrixPAI(); - //per atom of an Element: - static G4int GetNbOfIntervals (G4int Z); - static G4double GetSandiaCofPerAtom(G4int Z, G4int, G4int); - static G4double* GetSandiaCofPerAtom(G4int Z, G4double energy); - static G4double GetIonizationPot (G4int Z); - static G4double GetZtoA (G4int Z); - - //per volume of a material: - G4int GetMatNbOfIntervals() {return fMatNbOfIntervals;}; - G4double GetSandiaCofForMaterial(G4int,G4int); - G4double* GetSandiaCofForMaterial(G4double energy); - public: // without description - G4SandiaTable(__void__&); - // Fake default constructor for usage restricted to direct object - // persistency for clients requiring preallocation of memory for - // persistifiable objects. + G4SandiaTable(__void__&); + // Fake default constructor for usage restricted to direct object + // persistency for clients requiring preallocation of memory for + // persistifiable objects. private: - void ComputeMatSandiaMatrix(); - -private: + void ComputeMatSandiaMatrix(); + void ComputeMatSandiaMatrixPAI(); - static const G4double fSandiaTable[981][5]; - static const G4int fNbOfIntervals[101]; - static G4int fCumulInterval[101]; - static const G4double fZtoAratio[101]; - static const G4double fIonizationPotentials[101]; + // methods per atom + inline G4int GetNbOfIntervals (G4int Z); + inline G4double GetSandiaCofPerAtom(G4int Z, G4int, G4int); + inline G4double GetIonizationPot (G4int Z); + + // static members of the class + static const G4int fNumberOfElements; + static const G4int fIntervalLimit; + static const G4int fNumberOfIntervals; + + static const G4double fSandiaTable[981][5]; + static const G4int fNbOfIntervals[101]; + static const G4double fZtoAratio[101]; + static const G4double fIonizationPotentials[101]; + static const G4double funitc[4]; - static G4double fSandiaCofPerAtom[4]; - - G4Material* fMaterial; - G4int fMatNbOfIntervals; - G4OrderedTable* fMatSandiaMatrix; - - G4double fnulcof[4]; + static G4int fCumulInterval[101]; + static G4double fSandiaCofPerAtom[4]; + + // members of the class + G4Material* fMaterial; + G4int fMatNbOfIntervals; + G4OrderedTable* fMatSandiaMatrix; + G4OrderedTable* fMatSandiaMatrixPAI; + + G4double fnulcof[4]; - ///////////////////////////////////////////////////////////////////// // -// Methods for PAI model +// Methods for old implementation of PAI model +// Will be removed for the next major release public: // without description + G4SandiaTable(G4int); - inline void SandiaSwap( G4double** da, - G4int i, - G4int j ); + inline void SandiaSwap( G4double** da, + G4int i, + G4int j ); - void SandiaSort( G4double** da, - G4int sz ); + void SandiaSort( G4double** da, + G4int sz ); - G4int SandiaIntervals( G4int Z[], - G4int el ); + G4int SandiaIntervals( G4int Z[], + G4int el ); - G4int SandiaMixing( G4int Z[], - const G4double fractionW[], - G4int el, - G4int mi ); + G4int SandiaMixing( G4int Z[], + const G4double fractionW[], + G4int el, + G4int mi ); - inline G4double GetPhotoAbsorpCof(G4int i , G4int j) const; + inline G4double GetPhotoAbsorpCof(G4int i , G4int j) const; - inline G4int GetMaxInterval() const { return fMaxInterval;}; + inline G4int GetMaxInterval() const; - G4OrderedTable* GetSandiaMatTable() const {return fMatSandiaMatrix;}; - inline G4double GetSandiaMatTable(G4int,G4int) const; + inline G4double** GetPointerToCof(); private: - void ComputeMatTable(); - + void ComputeMatTable(); ////////////////////////////////////////////////////////////////////////// // // data members for PAI model private: - static const G4int fNumberOfElements ; - static const G4int fIntervalLimit ; - static const G4int fNumberOfIntervals ; - // G4double fPhotoAbsorptionCof[101][5] ; // SandiaTable for mixture + G4double** fPhotoAbsorptionCof ; // SandiaTable for mixture - G4double** fPhotoAbsorptionCof ; // SandiaTable for mixture - - // G4OrderedTable* - G4int fMaxInterval ; + G4int fMaxInterval ; // // @@ -166,14 +171,156 @@ private: }; +// Inline methods + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +inline G4int +G4SandiaTable::GetMatNbOfIntervals() +{ + return fMatNbOfIntervals; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +inline G4int +G4SandiaTable::GetNbOfIntervals(G4int Z) +{ + // assert (Z>0 && Z<101); + return fNbOfIntervals[Z]; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +inline G4double +G4SandiaTable::GetSandiaCofPerAtom(G4int Z, G4int interval, G4int j) +{ + assert (Z>0 && Z<101 && interval>=0 && interval=0 && j<5); + + G4int row = fCumulInterval[Z-1] + interval; + G4double x = fSandiaTable[row][0]*keV; + if (j > 0) { + x = Z*amu/fZtoAratio[Z]* + (fSandiaTable[row][j]*cm2*std::pow(keV,G4double(j))/g); + } + return x; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +inline G4double +G4SandiaTable::GetSandiaCofForMaterial(G4int interval, G4int j) +{ + assert (interval>=0 && interval=0 && j<5); + return ((*(*fMatSandiaMatrix)[interval])[j]); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +inline G4double* +G4SandiaTable::GetSandiaCofForMaterial(G4double energy) +{ + G4double* x = fnulcof; + if (energy >= (*(*fMatSandiaMatrix)[0])[0]) { + + G4int interval = fMatNbOfIntervals - 1; + while ((interval>0)&&(energy<(*(*fMatSandiaMatrix)[interval])[0])) + {interval--;} + x = &((*(*fMatSandiaMatrix)[interval])[1]); + } + return x; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +inline G4double +G4SandiaTable::GetSandiaMatTable(G4int interval, G4int j) +{ + assert (interval >= 0 && interval < fMaxInterval && j >= 0 && j < 5 ); + G4double unitCof ; + if(j == 0) unitCof = keV ; + else unitCof = (cm2/g)*std::pow(keV,(G4double)j); + return ( (*(*fMatSandiaMatrix)[interval])[j] )*unitCof; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +inline G4double +G4SandiaTable::GetSandiaCofForMaterialPAI(G4int interval, G4int j) +{ + assert (interval>=0 && interval=0 && j<5); + if(!fMatSandiaMatrixPAI) ComputeMatSandiaMatrixPAI(); + return ((*(*fMatSandiaMatrixPAI)[interval])[j]); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +inline G4double* +G4SandiaTable::GetSandiaCofForMaterialPAI(G4double energy) +{ + if(!fMatSandiaMatrixPAI) ComputeMatSandiaMatrixPAI(); + G4double* x = fnulcof; + if (energy >= (*(*fMatSandiaMatrixPAI)[0])[0]) { + + G4int interval = fMatNbOfIntervals - 1; + while ((interval>0)&&(energy<(*(*fMatSandiaMatrixPAI)[interval])[0])) + {interval--;} + x = &((*(*fMatSandiaMatrixPAI)[interval])[1]); + } + return x; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +inline G4double +G4SandiaTable::GetSandiaMatTablePAI(G4int interval, G4int j) +{ + assert (interval >= 0 && interval < fMaxInterval && j >= 0 && j < 5 ); + if(!fMatSandiaMatrixPAI) ComputeMatSandiaMatrixPAI(); + G4double unitCof ; + if(j == 0) unitCof = keV ; + else unitCof = (cm2/g)*std::pow(keV,(G4double)j); + return ( (*(*fMatSandiaMatrixPAI)[interval])[j] )*unitCof; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +inline G4double +G4SandiaTable::GetIonizationPot(G4int Z) +{ + return fIonizationPotentials[Z]*eV; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +inline G4OrderedTable* +G4SandiaTable::GetSandiaMatrixPAI() +{ + if(!fMatSandiaMatrixPAI) ComputeMatSandiaMatrixPAI(); + return fMatSandiaMatrixPAI; +} + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... /////////////////////////////////////////////////////////////////////// // -// Inline methods for PAI model +// Inline methods for PAI model, will be removed in next major release -inline -void +inline G4int +G4SandiaTable::GetMaxInterval() const { + return fMaxInterval; +} + +inline G4double** +G4SandiaTable::GetPointerToCof() +{ + if(!fPhotoAbsorptionCof) ComputeMatTable(); + return fPhotoAbsorptionCof; +} + +inline void G4SandiaTable::SandiaSwap( G4double** da , G4int i, G4int j ) @@ -183,31 +330,14 @@ G4SandiaTable::SandiaSwap( G4double** da , da[j][0] = tmp ; } -///////////////////////////////////////////////////////////////////////// -// -// - inline G4double G4SandiaTable::GetPhotoAbsorpCof(G4int i, G4int j) const { - G4double unitCof ; - if(j == 0) unitCof = keV ; - else unitCof = (cm2/g)*std::pow(keV,(G4double)j) ; + G4double unitCof ; + if(j == 0) unitCof = keV ; + else unitCof = (cm2/g)*std::pow(keV,(G4double)j) ; - return fPhotoAbsorptionCof[i][j]*unitCof ; -} - -/////////////////////////////////////////////////////////////////////// -// -// - -inline G4double G4SandiaTable::GetSandiaMatTable(G4int interval, G4int j) const -{ - assert (interval >= 0 && interval < fMaxInterval && j >= 0 && j < 5 ); - G4double unitCof ; - if(j == 0) unitCof = keV ; - else unitCof = (cm2/g)*std::pow(keV,(G4double)j); - return ( (*(*fMatSandiaMatrix)[interval])[j] )*unitCof; + return fPhotoAbsorptionCof[i][j]*unitCof ; } // diff --git a/source/materials/include/G4StaticSandiaData.hh b/source/materials/include/G4StaticSandiaData.hh index c2d4261d61..1168d23c38 100644 --- a/source/materials/include/G4StaticSandiaData.hh +++ b/source/materials/include/G4StaticSandiaData.hh @@ -25,7 +25,7 @@ // // // $Id: G4StaticSandiaData.hh,v 1.7 2006/06/29 19:12:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... diff --git a/source/materials/include/G4SurfaceProperty.hh b/source/materials/include/G4SurfaceProperty.hh index 65422da179..e2ac9667e9 100644 --- a/source/materials/include/G4SurfaceProperty.hh +++ b/source/materials/include/G4SurfaceProperty.hh @@ -25,7 +25,7 @@ // // // $Id: G4SurfaceProperty.hh,v 1.4 2007/04/25 16:18:34 gum Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/src/G4AtomicShells.cc b/source/materials/src/G4AtomicShells.cc index 31737df52e..b419320768 100644 --- a/source/materials/src/G4AtomicShells.cc +++ b/source/materials/src/G4AtomicShells.cc @@ -25,7 +25,7 @@ // // // $Id: G4AtomicShells.cc,v 1.7 2006/10/17 15:15:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... diff --git a/source/materials/src/G4Element.cc b/source/materials/src/G4Element.cc index e5090b29ec..8dabf893b2 100644 --- a/source/materials/src/G4Element.cc +++ b/source/materials/src/G4Element.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Element.cc,v 1.24 2006/10/17 15:15:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Element.cc,v 1.26 2007/10/18 11:14:33 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -50,6 +50,8 @@ // 30-03-05: warning in GetElement(elementName) // 15-11-05: GetElement(elementName, G4bool warning=true) // 17-10-06: Add fNaturalAbandances (V.Ivanchenko) +// 27-07-07, improve destructor (V.Ivanchenko) +// 18-10-07, move definition of material index to ComputeDerivedQuantities (V.Ivanchenko) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -66,44 +68,29 @@ G4Element::G4Element(const G4String& name, const G4String& symbol, G4double zeff, G4double aeff) : fName(name), fSymbol(symbol) { - if (zeff<1.) G4Exception (" ERROR from G4Element::G4Element !" - " It is not allowed to create an Element with Z < 1" ); + if (zeff<1.) G4Exception (" ERROR from G4Element::G4Element !" + " It is not allowed to create an Element with Z < 1" ); - if (aeff/(g/mole) perMillion) - G4cerr << name << " : WARNING from G4Element::G4Element !" - " Trying to define an element as a mixture directly via effective Z." - << G4endl; + if ((zeff-G4int(zeff)) > perMillion) + G4cerr << name << " : WARNING from G4Element::G4Element !" + " Trying to define an element as a mixture directly via effective Z." + << G4endl; - InitializePointers(); + InitializePointers(); - fZeff = zeff; - fNeff = aeff/(g/mole); - fAeff = aeff; - - fNumberOfIsotopes = 0; - fNaturalAbandances = false; + fZeff = zeff; + fNeff = aeff/(g/mole); + fAeff = aeff; - fNbOfAtomicShells = G4AtomicShells::GetNumberOfShells((G4int)fZeff); - fAtomicShells = new G4double[fNbOfAtomicShells]; - for (G4int i=0;iGetZ() == fZeff) fIndexZ++; - - //nb of materials which use this element - fCountUse = 0; + ComputeDerivedQuantities(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -115,17 +102,12 @@ G4Element::G4Element(const G4String& name, const G4String& symbol, G4int nIsotopes) : fName(name),fSymbol(symbol) { - InitializePointers(); + InitializePointers(); - size_t n = size_t(nIsotopes); + size_t n = size_t(nIsotopes); - fNumberOfIsotopes = 0; - fNaturalAbandances = false; - - theIsotopeVector = new G4IsotopeVector(n,0); - fRelativeAbundanceVector = new G4double[nIsotopes]; - - fCountUse = 0; //nb of materials which use this element + theIsotopeVector = new G4IsotopeVector(n,0); + fRelativeAbundanceVector = new G4double[nIsotopes]; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -134,66 +116,60 @@ G4Element::G4Element(const G4String& name, void G4Element::AddIsotope(G4Isotope* isotope, G4double abundance) { - if (theIsotopeVector == 0) - G4Exception ("ERROR from G4Element::AddIsotope!" - " Trying to add an Isotope before contructing the element."); + if (theIsotopeVector == 0) + G4Exception ("ERROR from G4Element::AddIsotope!" + " Trying to add an Isotope before contructing the element."); - // filling ... - if ( fNumberOfIsotopes < theIsotopeVector->size() ) { - // check same Z - if (fNumberOfIsotopes==0) fZeff = G4double(isotope->GetZ()); - else if (G4double(isotope->GetZ()) != fZeff) - G4Exception ("ERROR from G4Element::AddIsotope!" - " Try to add isotopes with different Z"); - //Z ok - fRelativeAbundanceVector[fNumberOfIsotopes] = abundance; - (*theIsotopeVector)[fNumberOfIsotopes] = isotope; - ++fNumberOfIsotopes; - isotope->increaseCountUse(); - } - else G4Exception ("ERROR from G4Element::AddIsotope!" - " Attempt to add more than the declared number of isotopes."); + // filling ... + if ( fNumberOfIsotopes < theIsotopeVector->size() ) { + // check same Z + if (fNumberOfIsotopes==0) fZeff = G4double(isotope->GetZ()); + else if (G4double(isotope->GetZ()) != fZeff) + G4Exception ("ERROR from G4Element::AddIsotope!" + " Try to add isotopes with different Z"); + //Z ok + fRelativeAbundanceVector[fNumberOfIsotopes] = abundance; + (*theIsotopeVector)[fNumberOfIsotopes] = isotope; + ++fNumberOfIsotopes; + isotope->increaseCountUse(); + } + else G4Exception ("ERROR from G4Element::AddIsotope!" + " Attempt to add more than the declared number of isotopes."); - // filled. - if ( fNumberOfIsotopes == theIsotopeVector->size() ) { - // Compute Neff, Aeff - G4double wtSum=0.0; + // filled. + if ( fNumberOfIsotopes == theIsotopeVector->size() ) { + // Compute Neff, Aeff + G4double wtSum=0.0; - fNeff = fAeff = 0.0; - for (size_t i=0;iGetN(); - fAeff += fRelativeAbundanceVector[i]*(*theIsotopeVector)[i]->GetA(); - wtSum += fRelativeAbundanceVector[i]; - } - fNeff /= wtSum; - fAeff /= wtSum; + fNeff = fAeff = 0.0; + for (size_t i=0;iGetN(); + fAeff += fRelativeAbundanceVector[i]*(*theIsotopeVector)[i]->GetA(); + wtSum += fRelativeAbundanceVector[i]; + } + fNeff /= wtSum; + fAeff /= wtSum; - fNbOfAtomicShells = G4AtomicShells::GetNumberOfShells((G4int)fZeff); - fAtomicShells = new G4double[fNbOfAtomicShells]; - for (G4int j=0;jGetZ() == fZeff) fIndexZ++; - } + } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4Element::InitializePointers() { - theIsotopeVector = 0; - fRelativeAbundanceVector = 0; - fAtomicShells = 0; - fIonisation = 0; + theIsotopeVector = 0; + fRelativeAbundanceVector = 0; + fAtomicShells = 0; + fIonisation = 0; + fNumberOfIsotopes = 0; + fNaturalAbandances = false; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -213,16 +189,9 @@ G4Element::G4Element( __void__& ) G4Element::~G4Element() { - if (fCountUse != 0) - G4cout << "--> warning from ~G4Element(): the element " << fName - << " is still referenced by " << fCountUse << " G4Materials \n" - << G4endl; - - if (theIsotopeVector) - { for (size_t i=0; idecreaseCountUse(); - delete theIsotopeVector; - } + // G4cout << "### Destruction of element " << fName << " started" <GetZ() == fZeff) fIndexZ++; + + //nb of materials which use this element + fCountUse = 0; + // Radiation Length - ComputeCoulombFactor(); - ComputeLradTsaiFactor(); + ComputeCoulombFactor(); + ComputeLradTsaiFactor(); // parameters for energy loss by ionisation - if (fIonisation) delete fIonisation; - fIonisation = new G4IonisParamElm(fZeff); + if (fIonisation) delete fIonisation; + fIonisation = new G4IonisParamElm(fZeff); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -312,8 +293,8 @@ G4Element* G4Element::GetElement(G4String elementName, G4bool warning) // search the element by its name for (size_t J=0 ; JGetName() == elementName) - return theElementTable[J]; + if (theElementTable[J]->GetName() == elementName) + return theElementTable[J]; } // the element does not exist in the table @@ -329,12 +310,12 @@ G4Element* G4Element::GetElement(G4String elementName, G4bool warning) G4Element::G4Element(G4Element& right) { - InitializePointers(); - *this = right; + InitializePointers(); + *this = right; - // Store this new element in table and set the index - theElementTable.push_back(this); - fIndexInTable = theElementTable.size() - 1; + // Store this new element in table and set the index + theElementTable.push_back(this); + fIndexInTable = theElementTable.size() - 1; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/materials/src/G4IonisParamElm.cc b/source/materials/src/G4IonisParamElm.cc index 5a6e47ad2a..22a69f233a 100644 --- a/source/materials/src/G4IonisParamElm.cc +++ b/source/materials/src/G4IonisParamElm.cc @@ -25,7 +25,7 @@ // // // $Id: G4IonisParamElm.cc,v 1.14 2006/06/29 19:12:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... diff --git a/source/materials/src/G4IonisParamMat.cc b/source/materials/src/G4IonisParamMat.cc index 6d81e91000..e7d3e82851 100644 --- a/source/materials/src/G4IonisParamMat.cc +++ b/source/materials/src/G4IonisParamMat.cc @@ -24,19 +24,20 @@ // ******************************************************************** // // -// $Id: G4IonisParamMat.cc,v 1.18 2006/06/29 19:12:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4IonisParamMat.cc,v 1.20 2007/09/27 14:05:47 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... -// 10-05-05, add a missing coma in FindMeanExcitationEnergy() - Bug#746 (mma) -// 06-09-04, factor 2 to shell correction term (V.Ivanchenko) -// 28-10-02, add setMeanExcitationEnergy (V.Ivanchenko) -// 08-02-01, fShellCorrectionVector correctly handled (mma) -// 16-01-01, bug corrected in ComputeDensityEffect() E100eV (L.Urban) -// 18-07-98, bug corrected in ComputeDensityEffect() for gas // 09-07-98, data moved from G4Material, M.Maire +// 18-07-98, bug corrected in ComputeDensityEffect() for gas +// 16-01-01, bug corrected in ComputeDensityEffect() E100eV (L.Urban) +// 08-02-01, fShellCorrectionVector correctly handled (mma) +// 28-10-02, add setMeanExcitationEnergy (V.Ivanchenko) +// 06-09-04, factor 2 to shell correction term (V.Ivanchenko) +// 10-05-05, add a missing coma in FindMeanExcitationEnergy() - Bug#746 (mma) +// 27-09-07, add computation of parameters for ions (V.Ivanchenko) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... @@ -52,6 +53,7 @@ G4IonisParamMat::G4IonisParamMat(G4Material* material) ComputeMeanParameters(); ComputeDensityEffect(); ComputeFluctModel(); + ComputeIonParameters(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... @@ -216,18 +218,92 @@ void G4IonisParamMat::ComputeFluctModel() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +void G4IonisParamMat::ComputeIonParameters() +{ + // compute parameters for ion transport + // The aproximation from: + // J.F.Ziegler, J.P. Biersack, U. Littmark + // The Stopping and Range of Ions in Matter, + // Vol.1, Pergamon Press, 1985 + // Fast ions or hadrons + + static G4double vFermi[92] = { + 1.0309, 0.15976, 0.59782, 1.0781, 1.0486, 1.0, 1.058, 0.93942, 0.74562, 0.3424, + 0.45259, 0.71074, 0.90519, 0.97411, 0.97184, 0.89852, 0.70827, 0.39816, 0.36552, 0.62712, + 0.81707, 0.9943, 1.1423, 1.2381, 1.1222, 0.92705, 1.0047, 1.2, 1.0661, 0.97411, + 0.84912, 0.95, 1.0903, 1.0429, 0.49715, 0.37755, 0.35211, 0.57801, 0.77773, 1.0207, + 1.029, 1.2542, 1.122, 1.1241, 1.0882, 1.2709, 1.2542, 0.90094, 0.74093, 0.86054, + 0.93155, 1.0047, 0.55379, 0.43289, 0.32636, 0.5131, 0.695, 0.72591, 0.71202, 0.67413, + 0.71418, 0.71453, 0.5911, 0.70263, 0.68049, 0.68203, 0.68121, 0.68532, 0.68715, 0.61884, + 0.71801, 0.83048, 1.1222, 1.2381, 1.045, 1.0733, 1.0953, 1.2381, 1.2879, 0.78654, + 0.66401, 0.84912, 0.88433, 0.80746, 0.43357, 0.41923, 0.43638, 0.51464, 0.73087, 0.81065, + 1.9578, 1.0257} ; + + static G4double lFactor[92] = { + 1.0, 1.0, 1.1, 1.06, 1.01, 1.03, 1.04, 0.99, 0.95, 0.9, + 0.82, 0.81, 0.83, 0.88, 1.0, 0.95, 0.97, 0.99, 0.98, 0.97, + 0.98, 0.97, 0.96, 0.93, 0.91, 0.9, 0.88, 0.9, 0.9, 0.9, + 0.9, 0.85, 0.9, 0.9, 0.91, 0.92, 0.9, 0.9, 0.9, 0.9, + 0.9, 0.88, 0.9, 0.88, 0.88, 0.9, 0.9, 0.88, 0.9, 0.9, + 0.9, 0.9, 0.96, 1.2, 0.9, 0.88, 0.88, 0.85, 0.9, 0.9, + 0.92, 0.95, 0.99, 1.03, 1.05, 1.07, 1.08, 1.1, 1.08, 1.08, + 1.08, 1.08, 1.09, 1.09, 1.1, 1.11, 1.12, 1.13, 1.14, 1.15, + 1.17, 1.2, 1.18, 1.17, 1.17, 1.16, 1.16, 1.16, 1.16, 1.16, + 1.16, 1.16} ; + + // get elements in the actual material, + const G4ElementVector* theElementVector = fMaterial->GetElementVector() ; + const G4double* theAtomicNumDensityVector = + fMaterial->GetAtomicNumDensityVector() ; + const G4int NumberOfElements = fMaterial->GetNumberOfElements() ; + + // loop for the elements in the material + // to find out average values Z, vF, lF + G4double z = 0.0, vF = 0.0, lF = 0.0, norm = 0.0 ; + + if( 1 == NumberOfElements ) { + z = fMaterial->GetZ() ; + G4int iz = G4int(z) - 1 ; + if(iz < 0) iz = 0 ; + else if(iz > 91) iz = 91 ; + vF = vFermi[iz] ; + lF = lFactor[iz] ; + + } else { + for (G4int iel=0; ielGetZ() ; + const G4double weight = theAtomicNumDensityVector[iel] ; + norm += weight ; + z += z2 * weight ; + G4int iz = G4int(z2) - 1 ; + if(iz < 0) iz = 0 ; + else if(iz > 91) iz =91 ; + vF += vFermi[iz] * weight ; + lF += lFactor[iz] * weight ; + } + z /= norm ; + vF /= norm ; + lF /= norm ; + } + fZeff = z; + fLfactor = lF; + fFermiEnergy = 25.*keV*vF*vF; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + void G4IonisParamMat::SetMeanExcitationEnergy(G4double value) { if(value == fMeanExcitationEnergy || value <= 0.0) return; - if (fMeanExcitationEnergy > 0.0 && - G4NistManager::Instance()->GetVerbose() > 0) { + if (G4NistManager::Instance()->GetVerbose() > 0) G4cout << "G4Material: Mean excitation energy is changed for " << fMaterial->GetName() << " Iold= " << fMeanExcitationEnergy/eV << "eV; Inew= " << value/eV << " eV;" << G4endl; - } fMeanExcitationEnergy = value; fLogMeanExcEnergy = std::log(value); diff --git a/source/materials/src/G4Isotope.cc b/source/materials/src/G4Isotope.cc index 38be8a7df0..cbc1420063 100644 --- a/source/materials/src/G4Isotope.cc +++ b/source/materials/src/G4Isotope.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Isotope.cc,v 1.20 2006/10/17 15:15:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Isotope.cc,v 1.21 2007/10/18 11:14:33 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -83,11 +83,12 @@ G4Isotope::G4Isotope(__void__&) G4Isotope::~G4Isotope() { + /* if (fCountUse != 0) G4cout << "--> warning from ~G4Isotope(): the isotope " << fName << " is still referenced by " << fCountUse << " G4Elements \n" << G4endl; - + */ //remove this isotope from theIsotopeTable theIsotopeTable[fIndexInTable] = 0; } diff --git a/source/materials/src/G4MPVEntry.cc b/source/materials/src/G4MPVEntry.cc index e553a5cc71..6114063891 100644 --- a/source/materials/src/G4MPVEntry.cc +++ b/source/materials/src/G4MPVEntry.cc @@ -25,7 +25,7 @@ // // // $Id: G4MPVEntry.cc,v 1.7 2006/06/29 19:12:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/src/G4Material.cc b/source/materials/src/G4Material.cc index a23f98ebbd..6d280e00ac 100644 --- a/source/materials/src/G4Material.cc +++ b/source/materials/src/G4Material.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Material.cc,v 1.35 2007/01/10 12:00:29 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Material.cc,v 1.38 2007/10/18 11:30:48 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // @@ -63,6 +63,9 @@ // 30-03-05, warning in GetMaterial(materialName) // 09-03-06, minor change of printout (V.Ivanchenko) // 10-01-07, compute fAtomVector in the case of mass fraction (V.Ivanchenko) +// 27-07-07, improve destructor (V.Ivanchenko) +// 18-10-07, move definition of material index to InitialisePointers (V.Ivanchenko) +// // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -118,10 +121,6 @@ G4Material::G4Material(const G4String& name, G4double z, } ComputeDerivedQuantities(); - - // Store in the table of Materials - theMaterialTable.push_back(this); - fIndexInTable = theMaterialTable.size() - 1; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -159,8 +158,8 @@ G4Material::G4Material(const G4String& name, G4double density, if (fState == kStateUndefined) { - if (fDensity > kGasThreshold) fState = kStateSolid; - else fState = kStateGas; + if (fDensity > kGasThreshold) fState = kStateSolid; + else fState = kStateGas; } } @@ -215,10 +214,6 @@ void G4Material::AddElement(G4Element* element, G4int nAtoms) } ComputeDerivedQuantities(); - - // Store in the static Table of Materials - theMaterialTable.push_back(this); - fIndexInTable = theMaterialTable.size() - 1; } } @@ -228,14 +223,6 @@ void G4Material::AddElement(G4Element* element, G4int nAtoms) void G4Material::AddElement(G4Element* element, G4double fraction) { - // if fAtomsVector is non-NULL, complain. Apples and oranges. $$$ - /* - if (fAtomsVector) { - G4cerr << "This material is already being defined via elements by" - << "atoms." << G4endl; - G4Exception ("You are mixing apples and oranges ..."); - } - */ // initialization if (fNumberOfComponents == 0) { fMassFractionVector = new G4double[50]; @@ -283,10 +270,6 @@ void G4Material::AddElement(G4Element* element, G4double fraction) } ComputeDerivedQuantities(); - - // Store in the static Table of Materials - theMaterialTable.push_back(this); - fIndexInTable = theMaterialTable.size() - 1; } } @@ -296,14 +279,6 @@ void G4Material::AddElement(G4Element* element, G4double fraction) void G4Material::AddMaterial(G4Material* material, G4double fraction) { - /* - // if fAtomsVector is non-NULL, complain. Apples and oranges. $$$ - if (fAtomsVector) { - G4cerr << "This material is already being defined via elements by" - "atoms." << G4endl; - G4Exception ("You are mixing apples and oranges ..."); - } - */ // initialization if (fNumberOfComponents == 0) { fMassFractionVector = new G4double[50]; @@ -356,10 +331,6 @@ void G4Material::AddMaterial(G4Material* material, G4double fraction) } ComputeDerivedQuantities(); - - // Store in the static Table of Materials - theMaterialTable.push_back(this); - fIndexInTable = theMaterialTable.size() - 1; } } @@ -422,14 +393,18 @@ void G4Material::ComputeNuclearInterLength() void G4Material::InitializePointers() { - theElementVector = 0; - fMassFractionVector = 0; - fAtomsVector = 0; - fMaterialPropertiesTable = 0; + theElementVector = 0; + fMassFractionVector = 0; + fAtomsVector = 0; + fMaterialPropertiesTable = 0; - VecNbOfAtomsPerVolume = 0; - fIonisation = 0; - fSandiaTable = 0; + VecNbOfAtomsPerVolume = 0; + fIonisation = 0; + fSandiaTable = 0; + + // Store in the static Table of Materials + theMaterialTable.push_back(this); + fIndexInTable = theMaterialTable.size() - 1; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -470,22 +445,15 @@ G4Material* G4Material::GetMaterial(G4String materialName, G4bool warning) G4Material::G4Material(const G4Material& right) { - InitializePointers(); - *this = right; - - // Store this new material in the table of Materials - theMaterialTable.push_back(this); - fIndexInTable = theMaterialTable.size() - 1; + InitializePointers(); + *this = right; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4Material::~G4Material() { - for (size_t i=0; idecreaseCountUse(); - - if (fImplicitElement) delete ((*theElementVector)[0]); + // G4cout << "### Destruction of material " << fName << " started" <fName << " " << material->fChemicalFormula << " " << " density: " << std::setw(6) << std::setprecision(3) - << G4BestUnit(material->fDensity,"Volumic Mass") - << " temperature: " << std::setw(6) << std::setprecision(2) - << (material->fTemp)/kelvin << " K" - << " pressure: " << std::setw(6) << std::setprecision(2) - << (material->fPressure)/atmosphere << " atm" - << " RadLength: " << std::setw(7) << std::setprecision(3) - << G4BestUnit(material->fRadlen,"Length"); + << G4BestUnit(material->fDensity,"Volumic Mass") + << " RadL: " << std::setw(7) << std::setprecision(3) + << G4BestUnit(material->fRadlen,"Length") + << " Imean: " << std::setw(7) << std::setprecision(3) + << G4BestUnit(material->GetIonisation()->GetMeanExcitationEnergy(),"Energy"); + if(material->fState == kStateGas) + flux + << " temperature: " << std::setw(6) << std::setprecision(2) + << (material->fTemp)/kelvin << " K" + << " pressure: " << std::setw(6) << std::setprecision(2) + << (material->fPressure)/atmosphere << " atm"; for (size_t i=0; ifNumberOfElements; i++) - flux - << "\n ---> " << (*(material->theElementVector))[i] - << " ElmMassFraction: " << std::setw(6)<< std::setprecision(2) - << (material->fMassFractionVector[i])/perCent << " %" - << " ElmAbundance " << std::setw(6)<< std::setprecision(2) - << 100*(material->VecNbOfAtomsPerVolume[i])/ - (material->TotNbOfAtomsPerVolume) - << " %"; + flux + << "\n ---> " << (*(material->theElementVector))[i] + << " ElmMassFraction: " << std::setw(6)<< std::setprecision(2) + << (material->fMassFractionVector[i])/perCent << " %" + << " ElmAbundance " << std::setw(6)<< std::setprecision(2) + << 100*(material->VecNbOfAtomsPerVolume[i])/(material->TotNbOfAtomsPerVolume) + << " %"; flux.precision(prec); flux.setf(mode,std::ios::floatfield); diff --git a/source/materials/src/G4MaterialPropertiesTable.cc b/source/materials/src/G4MaterialPropertiesTable.cc index f79632aaf9..a2705a18c5 100644 --- a/source/materials/src/G4MaterialPropertiesTable.cc +++ b/source/materials/src/G4MaterialPropertiesTable.cc @@ -25,7 +25,7 @@ // // // $Id: G4MaterialPropertiesTable.cc,v 1.19 2007/04/25 15:46:55 gum Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/src/G4MaterialPropertyVector.cc b/source/materials/src/G4MaterialPropertyVector.cc index d5e33c8100..ee49fe21fc 100644 --- a/source/materials/src/G4MaterialPropertyVector.cc +++ b/source/materials/src/G4MaterialPropertyVector.cc @@ -25,7 +25,7 @@ // // // $Id: G4MaterialPropertyVector.cc,v 1.15 2006/06/29 19:12:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/src/G4NistElementBuilder.cc b/source/materials/src/G4NistElementBuilder.cc index 0cc28e9ca7..9437236a3e 100644 --- a/source/materials/src/G4NistElementBuilder.cc +++ b/source/materials/src/G4NistElementBuilder.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4NistElementBuilder.cc,v 1.14 2007/06/14 14:24:30 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4NistElementBuilder.cc,v 1.16 2007/07/28 15:58:03 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -41,7 +41,9 @@ // 11.05.2006 Do not subtract mass of atomic electrons from NIST mass (VI) // 17.10.2006 Add natiral abandances flag to element and // use G4 units for isotope mass vector (VI) -// 10.01.2006 Add protection agains Z>101 (VI) +// 10.05.2007 Add protection agains Z>101 (VI) +// 26.07.2007 Create one and only one Nist element with given Z and +// allow users to create there own elements with the same Z (VI) // // ------------------------------------------------------------------- // @@ -64,6 +66,7 @@ G4NistElementBuilder::G4NistElementBuilder(G4int vb): Initialise(); // Atomic shells are defined only for 101 elements limitNumElements = 101; + for(G4int i=0; isize(); G4Element* anElement = 0; - if (nelm>0) { - for(size_t i=0; iGetZ()); - if (iz == Z) { - anElement = (*theElementTable)[i]; - break; - } - } - } - // if not, build it - // - if (!anElement) anElement = BuildElement(Z, buildIsotopes); + // Nist element does exist + if(elmIndex[Z] >= 0) { + const G4ElementTable* theElementTable = G4Element::GetElementTable(); + anElement = (*theElementTable)[elmIndex[Z]]; + + // build new element + } else { + anElement = BuildElement(Z, buildIsotopes); + if(anElement) elmIndex[Z] = anElement->GetIndex(); + } return anElement; } @@ -178,6 +175,7 @@ void G4NistElementBuilder::PrintElement(G4int Z) imin = 1; imax = maxNumElements; } + if(imax > maxNumElements) imax = maxNumElements; for(G4int i=imin; isize(); + size_t i; + for(i=0; isize(); + for(i=0; isize(); + for(i=0; iPrintElement(Z); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - void G4NistManager::PrintG4Element(const G4String& name) { - for (size_t i=0; iGetName()) || (name==(elements[i])->GetSymbol())) { - G4cout << *(elements[i]) << G4endl; - return; + const G4ElementTable* theElementTable = G4Element::GetElementTable(); + size_t nelm = theElementTable->size(); + for(size_t i=0; iGetName() || "all" == name) { + G4cout << *elm << G4endl; + return; } } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void G4NistManager::RegisterMaterial(G4Material* mat) -{ - if(mat) { - materials.push_back(mat); - nMaterials++; - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -void G4NistManager::DeRegisterMaterial(G4Material* mat) -{ - for (size_t i=0; i1) G4cout << "G4NistManager::FindMaterial " << name - << G4endl; - - // search the material in the list of user - G4Material* mat = G4Material::GetMaterial(name, warning); - - if (!mat) mat = matBuilder->FindOrBuildMaterial(name, isotopes, warning); - return mat; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -G4Material* G4NistManager::ConstructNewMaterial( - const G4String& name, - const std::vector& elm, - const std::vector& nbAtoms, - G4double dens, G4bool isotopes) -{ - return matBuilder->ConstructNewMaterial(name,elm,nbAtoms,dens,isotopes); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -G4Material* G4NistManager::ConstructNewMaterial( - const G4String& name, - const std::vector& elm, - const std::vector& w, - G4double dens, G4bool isotopes) -{ - return matBuilder->ConstructNewMaterial(name,elm,w,dens,isotopes); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -G4Material* G4NistManager::ConstructNewGasMaterial( - const G4String& name, - const G4String& nameNist, - G4double temp, G4double pres, - G4bool isotopes) -{ - return matBuilder->ConstructNewGasMaterial(name,nameNist, - temp,pres,isotopes); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -void G4NistManager::ListMaterials(const G4String& list) -{ - matBuilder->ListMaterials(list); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - void G4NistManager::PrintG4Material(const G4String& name) { - for (size_t i=0; iGetName()) { - G4cout << *(materials[i]) << G4endl; + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + size_t nmat = theMaterialTable->size(); + for(size_t i=0; iGetName() || "all" == name) { + G4cout << *mat << G4endl; return; } } - // search the material in the list of user - G4Material* mat = G4Material::GetMaterial(name, true); - if(mat) G4cout << *mat << G4endl; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -252,9 +176,24 @@ void G4NistManager::SetVerbose(G4int val) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -const std::vector& G4NistManager::GetNistMaterialNames() const +G4double G4NistManager::GetZ13(G4double Z) { - return matBuilder->GetMaterialNames(); + G4int iz = G4int(Z); + G4double x = (Z - G4double(iz))/(3.0*Z); + if(iz > 255) iz = 255; + else if(iz < 0) iz = 0; + return POWERZ13[iz]*(1.0 + x); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4NistManager::GetLOGA(G4double A) +{ + G4int ia = G4int(A); + G4double x = (A - G4double(ia))/A; + if(ia > 255) ia = 255; + else if(ia < 0) ia = 0; + return LOGA[ia] + x; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/materials/src/G4NistMaterialBuilder.cc b/source/materials/src/G4NistMaterialBuilder.cc index d4fce07c92..1839a47434 100644 --- a/source/materials/src/G4NistMaterialBuilder.cc +++ b/source/materials/src/G4NistMaterialBuilder.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4NistMaterialBuilder.cc,v 1.15 2007/01/10 12:25:56 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4NistMaterialBuilder.cc,v 1.17 2007/10/28 18:10:28 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------------- @@ -42,6 +42,7 @@ // 27.02.06 V.Ivanchneko add ConstructNewGasMaterial // 11.05.06 V.Ivanchneko add warning flag to FindMaterial method // 27.06.06 V.Ivanchneko fix graphite description +// 27.07.07 V.Ivanchneko remove dependence on NistManager // // ------------------------------------------------------------------- // @@ -53,16 +54,13 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -#include "G4NistManager.hh" #include "G4NistMaterialBuilder.hh" #include "G4NistElementBuilder.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4NistMaterialBuilder::G4NistMaterialBuilder(G4NistManager* mm, - G4NistElementBuilder* eb, G4int vb) -: matManager(mm), - elmBuilder(eb), +G4NistMaterialBuilder::G4NistMaterialBuilder(G4NistElementBuilder* eb, G4int vb) +: elmBuilder(eb), verbose(vb), nMaterials(0), nComponents(0), @@ -93,35 +91,41 @@ G4Material* G4NistMaterialBuilder::FindOrBuildMaterial(const G4String& name, if (verbose > 1) G4cout << "G4NistMaterialBuilder::FindOrBuildMaterial " << name << G4endl; - //already existing in NistMaterialManager ? - // + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + G4int nmat = theMaterialTable->size(); + + // Check if name inside NIST DB? G4Material* mat = 0; - size_t nm = 0; - if (matManager) nm = matManager->GetNumberOfMaterials(); - if (nm > 0) { - for (size_t i=0; iGetMaterial(i)->GetName()) { - mat = matManager->GetMaterial(i); - break; + + for (G4int i=0; i 0) { + for (G4int i=0; iGetName()) { + mat = (*theMaterialTable)[i]; + return mat; } } } - //if not, build it - // - if(!mat) mat = BuildMaterial(name, isotopes); - - if (mat) { - if( verbose > 1) - G4cout << "G4NistMaterialBuilder::FindOrBuildMaterial material " - << name << " is available" - << G4endl; - } else { - if( (verbose == 1 && warning) || verbose > 1) - G4cout << "G4NistMaterialBuilder::FindOrBuildMaterial WARNING:" - << " material <" << name - << "> is not found out" << G4endl; - } + if( (verbose == 1 && warning) || verbose > 1) + G4cout << "G4NistMaterialBuilder::FindOrBuildMaterial WARNING:" + << " material <" << name + << "> is not found out" << G4endl; return mat; } @@ -140,34 +144,51 @@ G4Material* G4NistMaterialBuilder::BuildMaterial(const G4String& name, for (G4int i=0; i1) G4cout << "New material nComponents= " << nc << G4endl; - if (nc > 0) { - G4int idx = indexes[i]; - for (G4int j=0; jFindOrBuildElement(Z, isotopes); - mat->AddElement(elm,fractions[idx+j]); - } - } - - if (chFormulas[i] != "") { - mat->SetChemicalFormula(chFormulas[i]); - G4double exc = mat->GetIonisation() - ->FindMeanExcitationEnergy(chFormulas[i]); - mat->GetIonisation()->SetMeanExcitationEnergy(exc); - } - - if (ionPotentials[i] != 0.0) - mat->GetIonisation()->SetMeanExcitationEnergy(ionPotentials[i]); - - if (matManager) matManager->RegisterMaterial(mat); + mat = BuildMaterial(i, isotopes); break; - } } + } + return mat; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4Material* G4NistMaterialBuilder::BuildMaterial(G4int i, + G4bool isotopes) + +{ + if (verbose > 1) G4cout << "G4NistMaterialBuilder: BuildMaterial #" << i + << G4endl; + + G4Material* mat = 0; + if (nMaterials == 0) return mat; + + G4int nc = components[i]; + mat = new G4Material(names[i],densities[i],nc, + states[i],temperatures[i], presures[i]); + + if (verbose>1) G4cout << "New material nComponents= " << nc << G4endl; + if (nc > 0) { + G4int idx = indexes[i]; + for (G4int j=0; jFindOrBuildElement(Z, isotopes); + mat->AddElement(elm,fractions[idx+j]); + } + } + + if (chFormulas[i] != "") { + mat->SetChemicalFormula(chFormulas[i]); + G4double exc = + mat->GetIonisation()->FindMeanExcitationEnergy(chFormulas[i]); + mat->GetIonisation()->SetMeanExcitationEnergy(exc); + } + + if (ionPotentials[i] != 0.0) + mat->GetIonisation()->SetMeanExcitationEnergy(ionPotentials[i]); + + matIndex[i] = mat->GetIndex(); + return mat; } @@ -177,7 +198,11 @@ G4Material* G4NistMaterialBuilder::ConstructNewMaterial( const G4String& name, const std::vector& elm, const std::vector& nbAtoms, - G4double dens, G4bool isotopes) + G4double dens, + G4bool isotopes, + G4State state, + G4double temp, + G4double pressure) { G4int Z; G4int nm = elm.size(); @@ -186,7 +211,7 @@ G4Material* G4NistMaterialBuilder::ConstructNewMaterial( AddMaterial(name,dens,Z); } else if (nm > 1) { - AddMaterial(name,dens,0,0.0,nm); + AddMaterial(name,dens,0,0.0,nm,state,temp,pressure); for (G4int i=0; iFindOrBuildElement(elm[i]))->GetZ()); AddElementByAtomCount(Z, nbAtoms[i]); @@ -202,7 +227,11 @@ G4Material* G4NistMaterialBuilder::ConstructNewMaterial( const G4String& name, const std::vector& elm, const std::vector& w, - G4double dens, G4bool isotopes) + G4double dens, + G4bool isotopes, + G4State state, + G4double temp, + G4double pressure) { G4int Z; G4int nm = elm.size(); @@ -217,7 +246,7 @@ G4Material* G4NistMaterialBuilder::ConstructNewMaterial( AddMaterial(name,dens,Z); } else { - AddMaterial(name,dens,0,0.0,nm); + AddMaterial(name,dens,0,0.0,nm,state,temp,pressure); for (G4int i=0; iFindOrBuildElement(elm[i]))->GetZ()); AddElementByWeightFraction(Z, w[i]); @@ -232,7 +261,8 @@ G4Material* G4NistMaterialBuilder::ConstructNewMaterial( G4Material* G4NistMaterialBuilder::ConstructNewGasMaterial( const G4String& name, const G4String& nameNist, - G4double temp, G4double pres, + G4double temp, + G4double pres, G4bool isotopes) { G4int idx = -1; @@ -287,15 +317,16 @@ G4Material* G4NistMaterialBuilder::ConstructNewGasMaterial( if (chFormulas[idx] != "") { mat->SetChemicalFormula(chFormulas[idx]); - G4double exc = mat->GetIonisation() - ->FindMeanExcitationEnergy(chFormulas[idx]); + G4double exc = + mat->GetIonisation()->FindMeanExcitationEnergy(chFormulas[idx]); mat->GetIonisation()->SetMeanExcitationEnergy(exc); } if (ionPotentials[idx] != 0.0) mat->GetIonisation()->SetMeanExcitationEnergy(ionPotentials[idx]); - if (matManager) matManager->RegisterMaterial(mat); + matIndex[idx] = mat->GetIndex(); + return mat; } @@ -412,6 +443,7 @@ void G4NistMaterialBuilder::AddMaterial(const G4String& nameMat, G4double dens, indexes.push_back(nComponents); temperatures.push_back(temp); presures.push_back(pres); + matIndex.push_back(-1); if (ncomp == 1) { elements.push_back(Z); @@ -545,12 +577,6 @@ void G4NistMaterialBuilder::Initialise() if (verbose > 0) G4cout << "### G4NistMaterialBuilder::Initialise()" << G4endl; - if (!matManager) { - G4cout << "G4NistMaterialBuilder::Initialise(): Warning : " - << "G4NistManager do not exist" << G4endl; - ///exit(1); - } - NistSimpleMaterials(); NistCompoundMaterials(); HepAndNuclearMaterials(); diff --git a/source/materials/src/G4NistMessenger.cc b/source/materials/src/G4NistMessenger.cc index 0ae1ca5066..96f8f447d5 100644 --- a/source/materials/src/G4NistMessenger.cc +++ b/source/materials/src/G4NistMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4NistMessenger.cc,v 1.4 2007/05/02 10:48:52 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // File name: G4NistMessenger diff --git a/source/materials/src/G4OpticalSurface.cc b/source/materials/src/G4OpticalSurface.cc index 5c616052b6..785dcb9de7 100644 --- a/source/materials/src/G4OpticalSurface.cc +++ b/source/materials/src/G4OpticalSurface.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpticalSurface.cc,v 1.10 2006/06/29 19:13:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/src/G4SandiaTable.cc b/source/materials/src/G4SandiaTable.cc index 97055b0998..8fbed32ffd 100644 --- a/source/materials/src/G4SandiaTable.cc +++ b/source/materials/src/G4SandiaTable.cc @@ -24,20 +24,20 @@ // ******************************************************************** // // -// $Id: G4SandiaTable.cc,v 1.27 2007/06/20 09:21:45 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SandiaTable.cc,v 1.34 2007/10/02 10:13:33 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... // -// 05.03.04 New methods for old sorting algorithm for PAI model. V.Grichine -// 03.02.04 Update distructor V.Ivanchenko -// 10.07.01 Migration to STL. M. Verderi. -// 03.04.01 fnulcof returned if energy < emin -// 22.02.01 GetsandiaCofForMaterial(energy) return 0 below lowest interval mma -// 16.02.01 adapted for STL. mma -// 31.01.01 redesign of ComputeMatSandiaMatrix(). mma -// 18.11.98 simplified public interface; new methods for materials. mma // 10.06.97 created. V. Grichine +// 18.11.98 simplified public interface; new methods for materials. mma +// 31.01.01 redesign of ComputeMatSandiaMatrix(). mma +// 16.02.01 adapted for STL. mma +// 22.02.01 GetsandiaCofForMaterial(energy) return 0 below lowest interval mma +// 03.04.01 fnulcof returned if energy < emin +// 10.07.01 Migration to STL. M. Verderi. +// 03.02.04 Update distructor V.Ivanchenko +// 05.03.04 New methods for old sorting algorithm for PAI model. V.Grichine // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... @@ -49,40 +49,25 @@ G4int G4SandiaTable::fCumulInterval[101]; G4double G4SandiaTable::fSandiaCofPerAtom[4]; +G4double const G4SandiaTable::funitc[4] = {cm2*keV/g, + cm2*keV*keV/g, + cm2*keV*keV*keV/g, + cm2*keV*keV*keV*keV/g}; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... -G4SandiaTable::G4SandiaTable(G4int matIndex) -{ - fMatSandiaMatrix = 0 ; - fPhotoAbsorptionCof = 0 ; - - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - size_t numberOfMat = G4Material::GetNumberOfMaterials(); - - if ( matIndex >= 0 && matIndex < G4int(numberOfMat) ) - { - fMaterial = (*theMaterialTable)[matIndex]; - } - else - { - G4Exception("G4SandiaTable::G4SandiaTable(G4int matIndex): wrong matIndex "); - } - ComputeMatTable(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... - G4SandiaTable::G4SandiaTable(G4Material* material) : fMaterial(material) { - fMatSandiaMatrix = 0 ; - fPhotoAbsorptionCof = 0 ; + fMatSandiaMatrix = 0; + fMatSandiaMatrixPAI = 0; + fPhotoAbsorptionCof = 0; + //build the CumulInterval array fCumulInterval[0] = 1; - for (G4int Z=1; Z<101; Z++) - fCumulInterval[Z] = fCumulInterval[Z-1] + fNbOfIntervals[Z]; - + for (G4int Z=1; Z<101; Z++) { + fCumulInterval[Z] = fCumulInterval[Z-1] + fNbOfIntervals[Z]; + } //compute macroscopic Sandia coefs for a material ComputeMatSandiaMatrix(); @@ -105,16 +90,59 @@ G4SandiaTable::G4SandiaTable(__void__&) G4SandiaTable::~G4SandiaTable() { if(fMatSandiaMatrix) { - // fMatSandiaMatrix->clearAndDestroy(); + fMatSandiaMatrix->clearAndDestroy(); delete fMatSandiaMatrix; } - + if(fMatSandiaMatrixPAI) { + fMatSandiaMatrixPAI->clearAndDestroy(); + delete fMatSandiaMatrixPAI; + } if(fPhotoAbsorptionCof) { - // for(G4int i = 0 ; i < fMaxInterval ; i++) delete[] fPhotoAbsorptionCof[i]; delete [] fPhotoAbsorptionCof ; } } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +G4double G4SandiaTable::GetZtoA(G4int Z) +{ + return fZtoAratio[Z]; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +G4double* +G4SandiaTable::GetSandiaCofPerAtom(G4int Z, G4double energy) +{ + assert (Z > 0 && Z < 101); + + G4double Emin = fSandiaTable[fCumulInterval[Z-1]][0]*keV; + G4double Iopot = fIonizationPotentials[Z]*eV; + if (Iopot > Emin) Emin = Iopot; + + G4int interval = fNbOfIntervals[Z] - 1; + G4int row = fCumulInterval[Z-1] + interval; + while ((interval>0) && (energy= Emin) + { + G4double AoverAvo = Z*amu/fZtoAratio[Z]; + + fSandiaCofPerAtom[0]=AoverAvo*funitc[0]*fSandiaTable[row][1]; + fSandiaCofPerAtom[1]=AoverAvo*funitc[1]*fSandiaTable[row][2]; + fSandiaCofPerAtom[2]=AoverAvo*funitc[2]*fSandiaTable[row][3]; + fSandiaCofPerAtom[3]=AoverAvo*funitc[3]*fSandiaTable[row][4]; + } + else + { + fSandiaCofPerAtom[0] = fSandiaCofPerAtom[1] = fSandiaCofPerAtom[2] = + fSandiaCofPerAtom[3] = 0.; + } + return fSandiaCofPerAtom; +} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... @@ -131,10 +159,10 @@ void G4SandiaTable::ComputeMatSandiaMatrix() // G4int MaxIntervals = 0; G4int elm; - for (elm=0; elmGetZ(); - MaxIntervals += fNbOfIntervals[Z[elm]]; - } + for (elm=0; elmGetZ(); + MaxIntervals += fNbOfIntervals[Z[elm]]; + } // //copy the Energy bins in a tmp1 array @@ -143,13 +171,13 @@ void G4SandiaTable::ComputeMatSandiaMatrix() G4double* tmp1 = new G4double[MaxIntervals]; G4double IonizationPot; G4int interval1=0; - for (elm=0; elmpush_back(new G4DataVector(5,0.)); - + for (interval=0; intervalpush_back(new G4DataVector(5,0.)); + } // //ready to compute the Sandia coefs for the material // @@ -184,26 +214,28 @@ void G4SandiaTable::ComputeMatSandiaMatrix() G4double coef, oldsum(0.), newsum(0.); fMatNbOfIntervals = 0; - for (interval=0; interval=0 && interval=0 && j<5); - return ((*(*fMatSandiaMatrix)[interval])[j]); -} +void G4SandiaTable::ComputeMatSandiaMatrixPAI() +{ + G4int MaxIntervals = 0; + G4int elm, c, i, j, jj, k, k1, k2, c1, n1; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + const G4int noElm = fMaterial->GetNumberOfElements(); + const G4ElementVector* ElementVector = fMaterial->GetElementVector(); + G4int* Z = new G4int[noElm]; //Atomic number -G4double* G4SandiaTable::GetSandiaCofForMaterial(G4double energy) -{ - if (energy < (*(*fMatSandiaMatrix)[0])[0]) return fnulcof; + for (elm = 0; elmGetZ(); + MaxIntervals += fNbOfIntervals[Z[elm]]; + } + fMaxInterval = MaxIntervals + 2; + + // G4cout<<"fMaxInterval = "< fSandiaTable[k1][0]) + { + continue ; // no ionization for energies smaller than I1 (first + } // ionisation potential) + break ; + } + G4int flag = 0 ; + + for(c1 = 1 ; c1 < c ; c1++) + { + if(fPhotoAbsorptionCof0[c1] == I1) // this value already has existed + { + flag = 1 ; + break ; + } + } + if(flag == 0) + { + fPhotoAbsorptionCof0[c] = I1 ; + c++ ; + } + for(k2 = k1 ; k2 < n2 ; k2++) + { + flag = 0 ; + + for(c1 = 1 ; c1 < c ; c1++) + { + if(fPhotoAbsorptionCof0[c1] == fSandiaTable[k2][0]) + { + flag = 1 ; + break ; + } + } + if(flag == 0) + { + fPhotoAbsorptionCof0[c] = fSandiaTable[k2][0] ; + c++ ; + } + } + } // end for(i) + + // sort out + for(i = 1; i < c ; i++ ) + { + for(j = i + 1 ; j < c; j++ ) + { + if(fPhotoAbsorptionCof0[i] > fPhotoAbsorptionCof0[j]) + { + G4double tmp = fPhotoAbsorptionCof0[i]; + fPhotoAbsorptionCof0[i] = fPhotoAbsorptionCof0[j]; + fPhotoAbsorptionCof0[j] = tmp ; + } + } + } + + fMaxInterval = c ; + + const G4double* fractionW = fMaterial->GetFractionVector(); - G4int interval = fMatNbOfIntervals - 1; - while ((interval>0)&&(energy<(*(*fMatSandiaMatrix)[interval])[0])) interval--; - return &((*(*fMatSandiaMatrix)[interval])[1]); + for(i = 0 ; i < noElm; i++) + { + n1 = 1 ; + G4double I1 = fIonizationPotentials[Z[i]]*keV ; + + for(j = 1 ; j < Z[i] ; j++) + { + n1 += fNbOfIntervals[j] ; + } + G4int n2 = n1 + fNbOfIntervals[Z[i]] - 1 ; + + for(k = n1 ; k < n2 ; k++) + { + G4double B1 = fSandiaTable[k][0]; + G4double B2 = fSandiaTable[k+1][0]; + for(G4int c = 1 ; c < fMaxInterval-1 ; c++) + { + G4double E1 = fPhotoAbsorptionCof0[c]; + G4double E2 = fPhotoAbsorptionCof0[c+1]; + if(B1 > E1 || B2 < E2 || E1 < I1) + { + continue ; + } + fPhotoAbsorptionCof1[c] += fSandiaTable[k][1]*fractionW[i] ; + fPhotoAbsorptionCof2[c] += fSandiaTable[k][2]*fractionW[i] ; + fPhotoAbsorptionCof3[c] += fSandiaTable[k][3]*fractionW[i] ; + fPhotoAbsorptionCof4[c] += fSandiaTable[k][4]*fractionW[i] ; + } + } + // Last interval + fPhotoAbsorptionCof1[fMaxInterval-1] += fSandiaTable[k][1]*fractionW[i] ; + fPhotoAbsorptionCof2[fMaxInterval-1] += fSandiaTable[k][2]*fractionW[i] ; + fPhotoAbsorptionCof3[fMaxInterval-1] += fSandiaTable[k][3]*fractionW[i] ; + fPhotoAbsorptionCof4[fMaxInterval-1] += fSandiaTable[k][4]*fractionW[i] ; + } // for(i) + + c = 0 ; // Deleting of first intervals where all coefficients = 0 + + do + { + c++ ; + + if( fPhotoAbsorptionCof1[c] != 0.0 || + fPhotoAbsorptionCof2[c] != 0.0 || + fPhotoAbsorptionCof3[c] != 0.0 || + fPhotoAbsorptionCof4[c] != 0.0 ) continue ; + + for(jj = 2 ; jj < fMaxInterval ; jj++) + { + fPhotoAbsorptionCof0[jj-1] = fPhotoAbsorptionCof0[jj]; + fPhotoAbsorptionCof1[jj-1] = fPhotoAbsorptionCof1[jj]; + fPhotoAbsorptionCof2[jj-1] = fPhotoAbsorptionCof2[jj]; + fPhotoAbsorptionCof3[jj-1] = fPhotoAbsorptionCof3[jj]; + fPhotoAbsorptionCof4[jj-1] = fPhotoAbsorptionCof4[jj]; + } + fMaxInterval-- ; + c-- ; + } + while(c < fMaxInterval - 1) ; + + // create the sandia matrix for this material + + fMatSandiaMatrixPAI = new G4OrderedTable(); + G4double density = fMaterial->GetDensity(); + + for (i = 0; i < fMaxInterval; i++) + { + fMatSandiaMatrixPAI->push_back(new G4DataVector(5,0.)); + } + for (i = 0; i < fMaxInterval; i++) + { + (*(*fMatSandiaMatrixPAI)[i])[0] = fPhotoAbsorptionCof0[i+1]; + (*(*fMatSandiaMatrixPAI)[i])[1] = fPhotoAbsorptionCof1[i+1]*density; + (*(*fMatSandiaMatrixPAI)[i])[2] = fPhotoAbsorptionCof2[i+1]*density; + (*(*fMatSandiaMatrixPAI)[i])[3] = fPhotoAbsorptionCof3[i+1]*density; + (*(*fMatSandiaMatrixPAI)[i])[4] = fPhotoAbsorptionCof4[i+1]*density; + + } + delete [] Z; + delete [] fPhotoAbsorptionCof0; + delete [] fPhotoAbsorptionCof1; + delete [] fPhotoAbsorptionCof2; + delete [] fPhotoAbsorptionCof3; + delete [] fPhotoAbsorptionCof4; + return; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... @@ -235,6 +443,27 @@ G4double* G4SandiaTable::GetSandiaCofForMaterial(G4double energy) // // Methods for PAI model +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... + +G4SandiaTable::G4SandiaTable(G4int matIndex) +{ + fMatSandiaMatrix = 0 ; + fMatSandiaMatrixPAI = 0; + fPhotoAbsorptionCof = 0 ; + + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + size_t numberOfMat = G4Material::GetNumberOfMaterials(); + + if ( matIndex >= 0 && matIndex < G4int(numberOfMat) ) + { + fMaterial = (*theMaterialTable)[matIndex]; + } + else + { + G4Exception("G4SandiaTable::G4SandiaTable(G4int matIndex): wrong matIndex "); + } + ComputeMatTable(); +} /////////////////////////////////////////////////////////////////////// // @@ -428,8 +657,6 @@ G4SandiaTable::SandiaMixing( G4int Z[], return mi ; } - - //////////////////////////////////////////////////////////////////////////// // // Sandia interval and mixing calculations for materialCutsCouple constructor @@ -464,7 +691,6 @@ void G4SandiaTable::ComputeMatTable() fPhotoAbsorptionCof[i] = new G4double[5] ; } - // for(c = 0 ; c < fIntervalLimit ; c++) // just in case for(c = 0 ; c < fMaxInterval ; c++) // just in case @@ -530,16 +756,7 @@ void G4SandiaTable::ComputeMatTable() SandiaSort(fPhotoAbsorptionCof,c) ; fMaxInterval = c ; - - // G4int - // G4SandiaTable::SandiaMixing( G4int Z[], - const G4double* fractionW = fMaterial->GetFractionVector(); - - // G4int el, - // G4int mi ) - - for(i = 0 ; i < fMaxInterval ; i++) { @@ -622,97 +839,6 @@ void G4SandiaTable::ComputeMatTable() return ; } - - - - - -/////////////////////////////////////////////////////////////////////// -// -// GetNbOfIntervals -// - -G4int -G4SandiaTable::GetNbOfIntervals(G4int Z) -{ - return fNbOfIntervals[Z]; -} - -/////////////////////////////////////////////////////////////////////// -// -// GetSandiaCofPerAtom(Z, interval, index) -// - -G4double -G4SandiaTable::GetSandiaCofPerAtom(G4int Z, G4int interval, G4int j) -{ - assert (Z>0 && Z<101 && interval>=0 && interval=0 && j<5); - - G4int row = fCumulInterval[Z-1] + interval; - if (j==0) return fSandiaTable[row][0]*keV; - G4double AoverAvo = Z*amu/fZtoAratio[Z]; - return AoverAvo*(fSandiaTable[row][j]*cm2*std::pow(keV,G4double(j))/g); -} - -/////////////////////////////////////////////////////////////////////// -// -// GetSandiaCofPerAtom(Z, energy) -// - -G4double* -G4SandiaTable::GetSandiaCofPerAtom(G4int Z, G4double energy) -{ - assert (Z > 0); - - G4double Emin = fSandiaTable[fCumulInterval[Z-1]][0]*keV; - G4double Iopot = fIonizationPotentials[Z]*eV; - if (Iopot > Emin) Emin = Iopot; - - G4int interval = fNbOfIntervals[Z] - 1; - G4int row = fCumulInterval[Z-1] + interval; - while ((interval>0) && (energy= Emin) - { - G4double AoverAvo = Z*amu/fZtoAratio[Z]; - - fSandiaCofPerAtom[0]=AoverAvo*(fSandiaTable[row][1]*cm2*keV/g); - fSandiaCofPerAtom[1]=AoverAvo*(fSandiaTable[row][2]*cm2*keV*keV/g); - fSandiaCofPerAtom[2]=AoverAvo*(fSandiaTable[row][3]*cm2*keV*keV*keV/g); - fSandiaCofPerAtom[3]=AoverAvo*(fSandiaTable[row][4]*cm2*keV*keV*keV*keV/g); - } - else - fSandiaCofPerAtom[0] = fSandiaCofPerAtom[1] = fSandiaCofPerAtom[2] = - fSandiaCofPerAtom[3] = 0.; - - return fSandiaCofPerAtom; - -} - -/////////////////////////////////////////////////////////////////////// -// -// GetIonizationPot -// - -G4double -G4SandiaTable::GetIonizationPot(G4int Z) -{ - return fIonizationPotentials[Z]*eV; -} - -/////////////////////////////////////////////////////////////////////// -// -// GetZtoA -// - -G4double -G4SandiaTable::GetZtoA(G4int Z) -{ - return fZtoAratio[Z]; -} - // G4SandiaTable class -- end of implementation file // //////////////////////////////////////////////////////////////////////////// diff --git a/source/materials/src/G4SurfaceProperty.cc b/source/materials/src/G4SurfaceProperty.cc index 162f50bc12..579a872f4a 100644 --- a/source/materials/src/G4SurfaceProperty.cc +++ b/source/materials/src/G4SurfaceProperty.cc @@ -25,7 +25,7 @@ // // // $Id: G4SurfaceProperty.cc,v 1.1 2007/04/25 16:19:26 gum Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/parameterisations/gflash/include/G4GFlashSpot.hh b/source/parameterisations/gflash/include/G4GFlashSpot.hh index d026aec5c9..45cbbbe7db 100644 --- a/source/parameterisations/gflash/include/G4GFlashSpot.hh +++ b/source/parameterisations/gflash/include/G4GFlashSpot.hh @@ -25,7 +25,7 @@ // // // $Id: G4GFlashSpot.hh,v 1.4 2006/06/29 19:13:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/parameterisations/gflash/include/G4VGFlashSensitiveDetector.hh b/source/parameterisations/gflash/include/G4VGFlashSensitiveDetector.hh index 0f07d5816a..f401c593c7 100644 --- a/source/parameterisations/gflash/include/G4VGFlashSensitiveDetector.hh +++ b/source/parameterisations/gflash/include/G4VGFlashSensitiveDetector.hh @@ -25,7 +25,7 @@ // // // $Id: G4VGFlashSensitiveDetector.hh,v 1.5 2006/06/29 19:13:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/parameterisations/gflash/include/GFlashEnergySpot.hh b/source/parameterisations/gflash/include/GFlashEnergySpot.hh index a3e919f585..9bc2ea3171 100644 --- a/source/parameterisations/gflash/include/GFlashEnergySpot.hh +++ b/source/parameterisations/gflash/include/GFlashEnergySpot.hh @@ -25,7 +25,7 @@ // // // $Id: GFlashEnergySpot.hh,v 1.5 2006/06/29 19:13:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/parameterisations/gflash/include/GFlashHitMaker.hh b/source/parameterisations/gflash/include/GFlashHitMaker.hh index e5de34fb73..6fe284b54c 100644 --- a/source/parameterisations/gflash/include/GFlashHitMaker.hh +++ b/source/parameterisations/gflash/include/GFlashHitMaker.hh @@ -25,7 +25,7 @@ // // // $Id: GFlashHitMaker.hh,v 1.5 2006/06/29 19:13:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/parameterisations/gflash/include/GFlashHomoShowerParameterisation.hh b/source/parameterisations/gflash/include/GFlashHomoShowerParameterisation.hh index 241e9c3035..80e87b62a2 100644 --- a/source/parameterisations/gflash/include/GFlashHomoShowerParameterisation.hh +++ b/source/parameterisations/gflash/include/GFlashHomoShowerParameterisation.hh @@ -25,7 +25,7 @@ // // // $Id: GFlashHomoShowerParameterisation.hh,v 1.4 2006/06/29 19:13:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/parameterisations/gflash/include/GFlashParticleBounds.hh b/source/parameterisations/gflash/include/GFlashParticleBounds.hh index e1db70a9ac..17c6309cb5 100644 --- a/source/parameterisations/gflash/include/GFlashParticleBounds.hh +++ b/source/parameterisations/gflash/include/GFlashParticleBounds.hh @@ -25,7 +25,7 @@ // // // $Id: GFlashParticleBounds.hh,v 1.4 2006/06/29 19:13:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/parameterisations/gflash/include/GFlashSamplingShowerParameterisation.hh b/source/parameterisations/gflash/include/GFlashSamplingShowerParameterisation.hh index e41bfd5d2f..753c5bac10 100644 --- a/source/parameterisations/gflash/include/GFlashSamplingShowerParameterisation.hh +++ b/source/parameterisations/gflash/include/GFlashSamplingShowerParameterisation.hh @@ -25,7 +25,7 @@ // // // $Id: GFlashSamplingShowerParameterisation.hh,v 1.4 2006/06/29 19:13:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/parameterisations/gflash/include/GFlashSamplingShowerTuning.hh b/source/parameterisations/gflash/include/GFlashSamplingShowerTuning.hh index 0bbe4cb651..aeaf018e27 100644 --- a/source/parameterisations/gflash/include/GFlashSamplingShowerTuning.hh +++ b/source/parameterisations/gflash/include/GFlashSamplingShowerTuning.hh @@ -25,7 +25,7 @@ // // // $Id: GFlashSamplingShowerTuning.hh,v 1.3 2006/06/29 19:13:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/parameterisations/gflash/include/GFlashShowerModel.hh b/source/parameterisations/gflash/include/GFlashShowerModel.hh index 7aa85c042f..f8ef62b6fc 100644 --- a/source/parameterisations/gflash/include/GFlashShowerModel.hh +++ b/source/parameterisations/gflash/include/GFlashShowerModel.hh @@ -25,7 +25,7 @@ // // // $Id: GFlashShowerModel.hh,v 1.9 2006/06/29 19:13:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/parameterisations/gflash/include/GFlashShowerModelMessenger.hh b/source/parameterisations/gflash/include/GFlashShowerModelMessenger.hh index de2ac5d462..a6a6a7a559 100644 --- a/source/parameterisations/gflash/include/GFlashShowerModelMessenger.hh +++ b/source/parameterisations/gflash/include/GFlashShowerModelMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: GFlashShowerModelMessenger.hh,v 1.4 2006/06/29 19:14:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/parameterisations/gflash/include/GVFlashHomoShowerTuning.hh b/source/parameterisations/gflash/include/GVFlashHomoShowerTuning.hh index 2d66784b5a..83db88e86a 100644 --- a/source/parameterisations/gflash/include/GVFlashHomoShowerTuning.hh +++ b/source/parameterisations/gflash/include/GVFlashHomoShowerTuning.hh @@ -25,7 +25,7 @@ // // // $Id: GVFlashHomoShowerTuning.hh,v 1.7 2006/06/29 19:14:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/parameterisations/gflash/include/GVFlashShowerParameterisation.hh b/source/parameterisations/gflash/include/GVFlashShowerParameterisation.hh index 8aab63fd65..f75d1d047f 100644 --- a/source/parameterisations/gflash/include/GVFlashShowerParameterisation.hh +++ b/source/parameterisations/gflash/include/GVFlashShowerParameterisation.hh @@ -25,7 +25,7 @@ // // // $Id: GVFlashShowerParameterisation.hh,v 1.2 2006/06/29 19:14:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/parameterisations/gflash/include/Gamma.hh b/source/parameterisations/gflash/include/Gamma.hh index f779825191..1859344fa7 100644 --- a/source/parameterisations/gflash/include/Gamma.hh +++ b/source/parameterisations/gflash/include/Gamma.hh @@ -26,7 +26,7 @@ // // // $Id: Gamma.hh,v 1.6 2006/06/29 19:14:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/parameterisations/gflash/src/GFlashEnergySpot.cc b/source/parameterisations/gflash/src/GFlashEnergySpot.cc index db7bf66320..aa1a3d8a4e 100644 --- a/source/parameterisations/gflash/src/GFlashEnergySpot.cc +++ b/source/parameterisations/gflash/src/GFlashEnergySpot.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: GFlashEnergySpot.cc,v 1.5 2006/06/29 19:14:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/parameterisations/gflash/src/GFlashHitMaker.cc b/source/parameterisations/gflash/src/GFlashHitMaker.cc index 0b8460dbb4..bc9a951399 100644 --- a/source/parameterisations/gflash/src/GFlashHitMaker.cc +++ b/source/parameterisations/gflash/src/GFlashHitMaker.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: GFlashHitMaker.cc,v 1.7 2006/06/29 19:14:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/parameterisations/gflash/src/GFlashHomoShowerParameterisation.cc b/source/parameterisations/gflash/src/GFlashHomoShowerParameterisation.cc index 5dd074812a..695b09a3de 100644 --- a/source/parameterisations/gflash/src/GFlashHomoShowerParameterisation.cc +++ b/source/parameterisations/gflash/src/GFlashHomoShowerParameterisation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: GFlashHomoShowerParameterisation.cc,v 1.5 2006/06/29 19:14:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/parameterisations/gflash/src/GFlashParticleBounds.cc b/source/parameterisations/gflash/src/GFlashParticleBounds.cc index c19ae5b67a..3c8fe8ad5f 100644 --- a/source/parameterisations/gflash/src/GFlashParticleBounds.cc +++ b/source/parameterisations/gflash/src/GFlashParticleBounds.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: GFlashParticleBounds.cc,v 1.4 2006/06/29 19:14:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/parameterisations/gflash/src/GFlashSamplingShowerParameterisation.cc b/source/parameterisations/gflash/src/GFlashSamplingShowerParameterisation.cc index a60d0b1f2b..832478bb7b 100644 --- a/source/parameterisations/gflash/src/GFlashSamplingShowerParameterisation.cc +++ b/source/parameterisations/gflash/src/GFlashSamplingShowerParameterisation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: GFlashSamplingShowerParameterisation.cc,v 1.6 2006/06/29 19:14:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/parameterisations/gflash/src/GFlashShowerModel.cc b/source/parameterisations/gflash/src/GFlashShowerModel.cc index 370fd1ad6e..6e36af6961 100644 --- a/source/parameterisations/gflash/src/GFlashShowerModel.cc +++ b/source/parameterisations/gflash/src/GFlashShowerModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: GFlashShowerModel.cc,v 1.13 2006/06/29 19:14:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/parameterisations/gflash/src/GFlashShowerModelMessenger.cc b/source/parameterisations/gflash/src/GFlashShowerModelMessenger.cc index bd51026fc9..7cdd07589b 100644 --- a/source/parameterisations/gflash/src/GFlashShowerModelMessenger.cc +++ b/source/parameterisations/gflash/src/GFlashShowerModelMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: GFlashShowerModelMessenger.cc,v 1.6 2006/06/29 19:14:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/parameterisations/gflash/src/GVFlashShowerParameterisation.cc b/source/parameterisations/gflash/src/GVFlashShowerParameterisation.cc index 9c5214e706..55bd7f14bb 100644 --- a/source/parameterisations/gflash/src/GVFlashShowerParameterisation.cc +++ b/source/parameterisations/gflash/src/GVFlashShowerParameterisation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: GVFlashShowerParameterisation.cc,v 1.2 2006/06/29 19:14:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/parameterisations/gflash/src/Gamma.cc b/source/parameterisations/gflash/src/Gamma.cc index 946d68ec93..ecbe3181f2 100644 --- a/source/parameterisations/gflash/src/Gamma.cc +++ b/source/parameterisations/gflash/src/Gamma.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: Gamma.cc,v 1.6 2006/06/29 19:14:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/History b/source/particles/History index 93fdcf1928..75e72f209d 100644 --- a/source/particles/History +++ b/source/particles/History @@ -1,4 +1,4 @@ -$Id: History,v 1.143 2007/05/30 08:33:28 kurasige Exp $ +$Id: History,v 1.148 2007/11/14 02:25:49 kurasige Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,24 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +- Nov. 14 2007 H.Kurashige (particles-V09-00-03) +- Check if the atmic number should be less than 999 for G4IonTable +- Add class/method name in printouts + +- Oct. 29 2007 P.Gumplinger (particle-V09-00-02) +- Add G4PionRadiativeDecayChannel, G4MuonRadiativeDecayChannelWithSpin + +- Oct. 06 2007 H.Kurashige (particles-V09-00-01) +- Add units in messages + +- Sep. 14 2007 H.Kurashige (particles-V09-00-00) +- Add G44HyperNucleiProperties +- Add GetIon/FindIon methods for hyper-nuclei in ParticleTable +- Modify G4PDGCodeChecker to check PDG code for nuclei +- remove const from return value of G4ParticleTable::GetIonTable + in order to allow users to use G4IonTable::GetIon methods directly. + - May. 30 2007 H.Kurashige (particles-V08-03-01) - Fix G4PDGCodeChecker::GetQuarkFlavor diff --git a/source/particles/bosons/include/G4BosonConstructor.hh b/source/particles/bosons/include/G4BosonConstructor.hh index 9888cf5f2a..ff9b5969a4 100644 --- a/source/particles/bosons/include/G4BosonConstructor.hh +++ b/source/particles/bosons/include/G4BosonConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4BosonConstructor.hh,v 1.6 2006/06/29 19:14:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/bosons/include/G4ChargedGeantino.hh b/source/particles/bosons/include/G4ChargedGeantino.hh index 3957b49c33..1467b513f4 100644 --- a/source/particles/bosons/include/G4ChargedGeantino.hh +++ b/source/particles/bosons/include/G4ChargedGeantino.hh @@ -25,7 +25,7 @@ // // // $Id: G4ChargedGeantino.hh,v 1.12 2006/06/29 19:14:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/bosons/include/G4Gamma.hh b/source/particles/bosons/include/G4Gamma.hh index 0a6df54f79..8b17747ca7 100644 --- a/source/particles/bosons/include/G4Gamma.hh +++ b/source/particles/bosons/include/G4Gamma.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4Gamma.hh,v 1.15 2006/06/29 19:14:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/bosons/include/G4Geantino.hh b/source/particles/bosons/include/G4Geantino.hh index b0c2a725a8..cf0f4bfa5e 100644 --- a/source/particles/bosons/include/G4Geantino.hh +++ b/source/particles/bosons/include/G4Geantino.hh @@ -25,7 +25,7 @@ // // // $Id: G4Geantino.hh,v 1.12 2006/06/29 19:14:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/bosons/include/G4OpticalPhoton.hh b/source/particles/bosons/include/G4OpticalPhoton.hh index 38a05eed52..c71092d767 100644 --- a/source/particles/bosons/include/G4OpticalPhoton.hh +++ b/source/particles/bosons/include/G4OpticalPhoton.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpticalPhoton.hh,v 1.12 2006/06/29 19:14:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/bosons/include/G4UnknownParticle.hh b/source/particles/bosons/include/G4UnknownParticle.hh index aa4b21b5af..3c44bf0693 100644 --- a/source/particles/bosons/include/G4UnknownParticle.hh +++ b/source/particles/bosons/include/G4UnknownParticle.hh @@ -25,7 +25,7 @@ // // // $Id: G4UnknownParticle.hh,v 1.5 2006/06/29 19:14:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/bosons/src/G4BosonConstructor.cc b/source/particles/bosons/src/G4BosonConstructor.cc index 3fec5db387..cd88b0dc5a 100644 --- a/source/particles/bosons/src/G4BosonConstructor.cc +++ b/source/particles/bosons/src/G4BosonConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4BosonConstructor.cc,v 1.5 2006/06/29 19:14:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/bosons/src/G4ChargedGeantino.cc b/source/particles/bosons/src/G4ChargedGeantino.cc index 954a381261..b4d7dbf752 100644 --- a/source/particles/bosons/src/G4ChargedGeantino.cc +++ b/source/particles/bosons/src/G4ChargedGeantino.cc @@ -25,7 +25,7 @@ // // // $Id: G4ChargedGeantino.cc,v 1.15 2006/06/29 19:14:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/bosons/src/G4Gamma.cc b/source/particles/bosons/src/G4Gamma.cc index 155f3d2e12..cb29001f8f 100644 --- a/source/particles/bosons/src/G4Gamma.cc +++ b/source/particles/bosons/src/G4Gamma.cc @@ -25,7 +25,7 @@ // // // $Id: G4Gamma.cc,v 1.13 2006/06/29 19:14:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/bosons/src/G4Geantino.cc b/source/particles/bosons/src/G4Geantino.cc index 8094683e51..07392c041d 100644 --- a/source/particles/bosons/src/G4Geantino.cc +++ b/source/particles/bosons/src/G4Geantino.cc @@ -25,7 +25,7 @@ // // // $Id: G4Geantino.cc,v 1.15 2006/06/29 19:14:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/bosons/src/G4OpticalPhoton.cc b/source/particles/bosons/src/G4OpticalPhoton.cc index fbcc692e07..42a033ae8c 100644 --- a/source/particles/bosons/src/G4OpticalPhoton.cc +++ b/source/particles/bosons/src/G4OpticalPhoton.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpticalPhoton.cc,v 1.13 2006/06/29 19:14:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/bosons/src/G4UnknownParticle.cc b/source/particles/bosons/src/G4UnknownParticle.cc index 81b2724d89..f54b778779 100644 --- a/source/particles/bosons/src/G4UnknownParticle.cc +++ b/source/particles/bosons/src/G4UnknownParticle.cc @@ -25,7 +25,7 @@ // // // $Id: G4UnknownParticle.cc,v 1.4 2006/06/29 19:15:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/include/G4AntiLambda.hh b/source/particles/hadrons/barions/include/G4AntiLambda.hh index 5120d76918..0bcbd15e37 100644 --- a/source/particles/hadrons/barions/include/G4AntiLambda.hh +++ b/source/particles/hadrons/barions/include/G4AntiLambda.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiLambda.hh,v 1.13 2006/06/29 19:15:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiLambdacPlus.hh b/source/particles/hadrons/barions/include/G4AntiLambdacPlus.hh index 0cb807fc42..8b511b7f0c 100644 --- a/source/particles/hadrons/barions/include/G4AntiLambdacPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiLambdacPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiLambdacPlus.hh,v 1.9 2006/06/29 19:15:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiNeutron.hh b/source/particles/hadrons/barions/include/G4AntiNeutron.hh index 77969b3f8b..1fb7521434 100644 --- a/source/particles/hadrons/barions/include/G4AntiNeutron.hh +++ b/source/particles/hadrons/barions/include/G4AntiNeutron.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiNeutron.hh,v 1.14 2006/06/29 19:15:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiOmegaMinus.hh b/source/particles/hadrons/barions/include/G4AntiOmegaMinus.hh index 83c1f953af..5bfd6e274d 100644 --- a/source/particles/hadrons/barions/include/G4AntiOmegaMinus.hh +++ b/source/particles/hadrons/barions/include/G4AntiOmegaMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiOmegaMinus.hh,v 1.10 2006/06/29 19:15:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiOmegacZero.hh b/source/particles/hadrons/barions/include/G4AntiOmegacZero.hh index 51d31e175f..69c876811f 100644 --- a/source/particles/hadrons/barions/include/G4AntiOmegacZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiOmegacZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiOmegacZero.hh,v 1.12 2006/06/29 19:15:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiProton.hh b/source/particles/hadrons/barions/include/G4AntiProton.hh index e898fc1af4..629b068428 100644 --- a/source/particles/hadrons/barions/include/G4AntiProton.hh +++ b/source/particles/hadrons/barions/include/G4AntiProton.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiProton.hh,v 1.11 2006/06/29 19:15:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiSigmaMinus.hh b/source/particles/hadrons/barions/include/G4AntiSigmaMinus.hh index 67fb5c343d..d0933a0513 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmaMinus.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmaMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiSigmaMinus.hh,v 1.10 2006/06/29 19:15:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiSigmaPlus.hh b/source/particles/hadrons/barions/include/G4AntiSigmaPlus.hh index d51e1cfe84..0633762f4a 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmaPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmaPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiSigmaPlus.hh,v 1.10 2006/06/29 19:15:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiSigmaZero.hh b/source/particles/hadrons/barions/include/G4AntiSigmaZero.hh index 40f18f69fd..5929c522c4 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmaZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmaZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiSigmaZero.hh,v 1.13 2006/06/29 19:15:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiSigmacPlus.hh b/source/particles/hadrons/barions/include/G4AntiSigmacPlus.hh index ffd85179f4..db14e937c5 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmacPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmacPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiSigmacPlus.hh,v 1.9 2006/06/29 19:15:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiSigmacPlusPlus.hh b/source/particles/hadrons/barions/include/G4AntiSigmacPlusPlus.hh index 92979aae0f..82bf2bcc98 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmacPlusPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmacPlusPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiSigmacPlusPlus.hh,v 1.9 2006/06/29 19:15:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiSigmacZero.hh b/source/particles/hadrons/barions/include/G4AntiSigmacZero.hh index 5ccc09a1ef..63fb040f56 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmacZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmacZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiSigmacZero.hh,v 1.12 2006/06/29 19:15:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiXiMinus.hh b/source/particles/hadrons/barions/include/G4AntiXiMinus.hh index 1f963aaf54..091285ae89 100644 --- a/source/particles/hadrons/barions/include/G4AntiXiMinus.hh +++ b/source/particles/hadrons/barions/include/G4AntiXiMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiXiMinus.hh,v 1.10 2006/06/29 19:15:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiXiZero.hh b/source/particles/hadrons/barions/include/G4AntiXiZero.hh index 8ad6a0563e..6fd8c12e7f 100644 --- a/source/particles/hadrons/barions/include/G4AntiXiZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiXiZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiXiZero.hh,v 1.13 2006/06/29 19:15:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiXicPlus.hh b/source/particles/hadrons/barions/include/G4AntiXicPlus.hh index 0f946f83af..aa1880e340 100644 --- a/source/particles/hadrons/barions/include/G4AntiXicPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiXicPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiXicPlus.hh,v 1.9 2006/06/29 19:15:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4AntiXicZero.hh b/source/particles/hadrons/barions/include/G4AntiXicZero.hh index bd5a811d91..284b119c27 100644 --- a/source/particles/hadrons/barions/include/G4AntiXicZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiXicZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiXicZero.hh,v 1.12 2006/06/29 19:15:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4BaryonConstructor.hh b/source/particles/hadrons/barions/include/G4BaryonConstructor.hh index a759437841..b138eda12b 100644 --- a/source/particles/hadrons/barions/include/G4BaryonConstructor.hh +++ b/source/particles/hadrons/barions/include/G4BaryonConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4BaryonConstructor.hh,v 1.5 2006/06/29 19:15:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/include/G4Lambda.hh b/source/particles/hadrons/barions/include/G4Lambda.hh index a90d32cab6..cd7e4a5e04 100644 --- a/source/particles/hadrons/barions/include/G4Lambda.hh +++ b/source/particles/hadrons/barions/include/G4Lambda.hh @@ -25,7 +25,7 @@ // // // $Id: G4Lambda.hh,v 1.13 2006/06/29 19:15:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4LambdacPlus.hh b/source/particles/hadrons/barions/include/G4LambdacPlus.hh index f55ca1fc40..c05a74ac94 100644 --- a/source/particles/hadrons/barions/include/G4LambdacPlus.hh +++ b/source/particles/hadrons/barions/include/G4LambdacPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4LambdacPlus.hh,v 1.9 2006/06/29 19:15:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4Neutron.hh b/source/particles/hadrons/barions/include/G4Neutron.hh index f6407b9cfd..454b325ec9 100644 --- a/source/particles/hadrons/barions/include/G4Neutron.hh +++ b/source/particles/hadrons/barions/include/G4Neutron.hh @@ -25,7 +25,7 @@ // // // $Id: G4Neutron.hh,v 1.16 2006/06/29 19:15:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4OmegaMinus.hh b/source/particles/hadrons/barions/include/G4OmegaMinus.hh index cef733fc20..ef1df73efd 100644 --- a/source/particles/hadrons/barions/include/G4OmegaMinus.hh +++ b/source/particles/hadrons/barions/include/G4OmegaMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4OmegaMinus.hh,v 1.10 2006/06/29 19:15:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4OmegacZero.hh b/source/particles/hadrons/barions/include/G4OmegacZero.hh index 0547bafa6a..c3c345ad21 100644 --- a/source/particles/hadrons/barions/include/G4OmegacZero.hh +++ b/source/particles/hadrons/barions/include/G4OmegacZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4OmegacZero.hh,v 1.12 2006/06/29 19:15:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4Proton.hh b/source/particles/hadrons/barions/include/G4Proton.hh index a8960ea4df..fe2b8f87bd 100644 --- a/source/particles/hadrons/barions/include/G4Proton.hh +++ b/source/particles/hadrons/barions/include/G4Proton.hh @@ -25,7 +25,7 @@ // // // $Id: G4Proton.hh,v 1.13 2006/06/29 19:15:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4SigmaMinus.hh b/source/particles/hadrons/barions/include/G4SigmaMinus.hh index 9596efefdd..b0a96b9371 100644 --- a/source/particles/hadrons/barions/include/G4SigmaMinus.hh +++ b/source/particles/hadrons/barions/include/G4SigmaMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4SigmaMinus.hh,v 1.10 2006/06/29 19:15:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4SigmaPlus.hh b/source/particles/hadrons/barions/include/G4SigmaPlus.hh index 78759f3b0a..96051e14c1 100644 --- a/source/particles/hadrons/barions/include/G4SigmaPlus.hh +++ b/source/particles/hadrons/barions/include/G4SigmaPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4SigmaPlus.hh,v 1.10 2006/06/29 19:15:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4SigmaZero.hh b/source/particles/hadrons/barions/include/G4SigmaZero.hh index e50c540b2b..e6884fdad8 100644 --- a/source/particles/hadrons/barions/include/G4SigmaZero.hh +++ b/source/particles/hadrons/barions/include/G4SigmaZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4SigmaZero.hh,v 1.13 2006/06/29 19:15:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4SigmacPlus.hh b/source/particles/hadrons/barions/include/G4SigmacPlus.hh index a4bbd674a6..c2090d5c05 100644 --- a/source/particles/hadrons/barions/include/G4SigmacPlus.hh +++ b/source/particles/hadrons/barions/include/G4SigmacPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4SigmacPlus.hh,v 1.9 2006/06/29 19:16:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4SigmacPlusPlus.hh b/source/particles/hadrons/barions/include/G4SigmacPlusPlus.hh index 9a5939fb58..bb6a371da0 100644 --- a/source/particles/hadrons/barions/include/G4SigmacPlusPlus.hh +++ b/source/particles/hadrons/barions/include/G4SigmacPlusPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4SigmacPlusPlus.hh,v 1.9 2006/06/29 19:16:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4SigmacZero.hh b/source/particles/hadrons/barions/include/G4SigmacZero.hh index ca5cf9557d..6fb60b5cb0 100644 --- a/source/particles/hadrons/barions/include/G4SigmacZero.hh +++ b/source/particles/hadrons/barions/include/G4SigmacZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4SigmacZero.hh,v 1.12 2006/06/29 19:16:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4XiMinus.hh b/source/particles/hadrons/barions/include/G4XiMinus.hh index be625b8864..fff757b8c9 100644 --- a/source/particles/hadrons/barions/include/G4XiMinus.hh +++ b/source/particles/hadrons/barions/include/G4XiMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4XiMinus.hh,v 1.10 2006/06/29 19:16:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4XiZero.hh b/source/particles/hadrons/barions/include/G4XiZero.hh index 9dc8195349..f8e81e8b61 100644 --- a/source/particles/hadrons/barions/include/G4XiZero.hh +++ b/source/particles/hadrons/barions/include/G4XiZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4XiZero.hh,v 1.13 2006/06/29 19:16:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4XicPlus.hh b/source/particles/hadrons/barions/include/G4XicPlus.hh index 39e032b3d6..470125a82f 100644 --- a/source/particles/hadrons/barions/include/G4XicPlus.hh +++ b/source/particles/hadrons/barions/include/G4XicPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4XicPlus.hh,v 1.9 2006/06/29 19:16:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4XicZero.hh b/source/particles/hadrons/barions/include/G4XicZero.hh index c64e80ca06..5fb1a259c2 100644 --- a/source/particles/hadrons/barions/include/G4XicZero.hh +++ b/source/particles/hadrons/barions/include/G4XicZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4XicZero.hh,v 1.12 2006/06/29 19:16:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/src/G4AntiLambda.cc b/source/particles/hadrons/barions/src/G4AntiLambda.cc index 9853eeedb0..d2f65a3d30 100644 --- a/source/particles/hadrons/barions/src/G4AntiLambda.cc +++ b/source/particles/hadrons/barions/src/G4AntiLambda.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiLambda.cc,v 1.18 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiLambdacPlus.cc b/source/particles/hadrons/barions/src/G4AntiLambdacPlus.cc index 06c4da0e7a..5aace8370f 100644 --- a/source/particles/hadrons/barions/src/G4AntiLambdacPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiLambdacPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiLambdacPlus.cc,v 1.13 2006/06/29 19:16:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiNeutron.cc b/source/particles/hadrons/barions/src/G4AntiNeutron.cc index d49dba3512..085f6007b5 100644 --- a/source/particles/hadrons/barions/src/G4AntiNeutron.cc +++ b/source/particles/hadrons/barions/src/G4AntiNeutron.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiNeutron.cc,v 1.21 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiOmegaMinus.cc b/source/particles/hadrons/barions/src/G4AntiOmegaMinus.cc index d195ea9146..da709c8422 100644 --- a/source/particles/hadrons/barions/src/G4AntiOmegaMinus.cc +++ b/source/particles/hadrons/barions/src/G4AntiOmegaMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiOmegaMinus.cc,v 1.14 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiOmegacZero.cc b/source/particles/hadrons/barions/src/G4AntiOmegacZero.cc index 10d2a4c865..29520b5b8d 100644 --- a/source/particles/hadrons/barions/src/G4AntiOmegacZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiOmegacZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiOmegacZero.cc,v 1.19 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiProton.cc b/source/particles/hadrons/barions/src/G4AntiProton.cc index 291470e749..d4847e2562 100644 --- a/source/particles/hadrons/barions/src/G4AntiProton.cc +++ b/source/particles/hadrons/barions/src/G4AntiProton.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiProton.cc,v 1.13 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiSigmaMinus.cc b/source/particles/hadrons/barions/src/G4AntiSigmaMinus.cc index 8c2d72a3b5..723b587164 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmaMinus.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmaMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiSigmaMinus.cc,v 1.14 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiSigmaPlus.cc b/source/particles/hadrons/barions/src/G4AntiSigmaPlus.cc index e6c1f8edc0..14a9caf31b 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmaPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmaPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiSigmaPlus.cc,v 1.14 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiSigmaZero.cc b/source/particles/hadrons/barions/src/G4AntiSigmaZero.cc index 4babb8f909..2f3a3f3ea1 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmaZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmaZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiSigmaZero.cc,v 1.18 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiSigmacPlus.cc b/source/particles/hadrons/barions/src/G4AntiSigmacPlus.cc index 2b4f0c3fd2..b47638d9c5 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmacPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmacPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiSigmacPlus.cc,v 1.12 2006/06/29 19:16:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiSigmacPlusPlus.cc b/source/particles/hadrons/barions/src/G4AntiSigmacPlusPlus.cc index 52bdc49acb..c5baa4f2ff 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmacPlusPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmacPlusPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiSigmacPlusPlus.cc,v 1.12 2006/06/29 19:16:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiSigmacZero.cc b/source/particles/hadrons/barions/src/G4AntiSigmacZero.cc index 0ca8b98da0..ce26e83089 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmacZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmacZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiSigmacZero.cc,v 1.17 2006/06/29 19:16:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiXiMinus.cc b/source/particles/hadrons/barions/src/G4AntiXiMinus.cc index 5b8f2aa05c..85419945ae 100644 --- a/source/particles/hadrons/barions/src/G4AntiXiMinus.cc +++ b/source/particles/hadrons/barions/src/G4AntiXiMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiXiMinus.cc,v 1.13 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiXiZero.cc b/source/particles/hadrons/barions/src/G4AntiXiZero.cc index 5f6ba24225..9af19c9534 100644 --- a/source/particles/hadrons/barions/src/G4AntiXiZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiXiZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiXiZero.cc,v 1.19 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiXicPlus.cc b/source/particles/hadrons/barions/src/G4AntiXicPlus.cc index 9bd133df78..62357efdaa 100644 --- a/source/particles/hadrons/barions/src/G4AntiXicPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiXicPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiXicPlus.cc,v 1.13 2006/06/29 19:16:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4AntiXicZero.cc b/source/particles/hadrons/barions/src/G4AntiXicZero.cc index 7d23f68283..0525c2b1d4 100644 --- a/source/particles/hadrons/barions/src/G4AntiXicZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiXicZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiXicZero.cc,v 1.19 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4BaryonConstructor.cc b/source/particles/hadrons/barions/src/G4BaryonConstructor.cc index 0f8b36ed60..30c61963bd 100644 --- a/source/particles/hadrons/barions/src/G4BaryonConstructor.cc +++ b/source/particles/hadrons/barions/src/G4BaryonConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4BaryonConstructor.cc,v 1.4 2006/06/29 19:16:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4Lambda.cc b/source/particles/hadrons/barions/src/G4Lambda.cc index f689b920b6..a61f1c1980 100644 --- a/source/particles/hadrons/barions/src/G4Lambda.cc +++ b/source/particles/hadrons/barions/src/G4Lambda.cc @@ -25,7 +25,7 @@ // // // $Id: G4Lambda.cc,v 1.18 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4LambdacPlus.cc b/source/particles/hadrons/barions/src/G4LambdacPlus.cc index 3701d7c0e4..3128c732de 100644 --- a/source/particles/hadrons/barions/src/G4LambdacPlus.cc +++ b/source/particles/hadrons/barions/src/G4LambdacPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4LambdacPlus.cc,v 1.14 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4Neutron.cc b/source/particles/hadrons/barions/src/G4Neutron.cc index d89dece958..94133f7b12 100644 --- a/source/particles/hadrons/barions/src/G4Neutron.cc +++ b/source/particles/hadrons/barions/src/G4Neutron.cc @@ -25,7 +25,7 @@ // // // $Id: G4Neutron.cc,v 1.21 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4OmegaMinus.cc b/source/particles/hadrons/barions/src/G4OmegaMinus.cc index ed5447d362..a86b413691 100644 --- a/source/particles/hadrons/barions/src/G4OmegaMinus.cc +++ b/source/particles/hadrons/barions/src/G4OmegaMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4OmegaMinus.cc,v 1.14 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4OmegacZero.cc b/source/particles/hadrons/barions/src/G4OmegacZero.cc index a413e6999b..eb0c2312d3 100644 --- a/source/particles/hadrons/barions/src/G4OmegacZero.cc +++ b/source/particles/hadrons/barions/src/G4OmegacZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4OmegacZero.cc,v 1.19 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4Proton.cc b/source/particles/hadrons/barions/src/G4Proton.cc index 295105cdf6..120477097b 100644 --- a/source/particles/hadrons/barions/src/G4Proton.cc +++ b/source/particles/hadrons/barions/src/G4Proton.cc @@ -25,7 +25,7 @@ // // // $Id: G4Proton.cc,v 1.13 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4SigmaMinus.cc b/source/particles/hadrons/barions/src/G4SigmaMinus.cc index 45e3a453d0..bb2db87660 100644 --- a/source/particles/hadrons/barions/src/G4SigmaMinus.cc +++ b/source/particles/hadrons/barions/src/G4SigmaMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4SigmaMinus.cc,v 1.13 2007/03/11 07:17:34 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4SigmaPlus.cc b/source/particles/hadrons/barions/src/G4SigmaPlus.cc index f3d6b34bb7..0505408256 100644 --- a/source/particles/hadrons/barions/src/G4SigmaPlus.cc +++ b/source/particles/hadrons/barions/src/G4SigmaPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4SigmaPlus.cc,v 1.14 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4SigmaZero.cc b/source/particles/hadrons/barions/src/G4SigmaZero.cc index 61650f75cf..f753591ec6 100644 --- a/source/particles/hadrons/barions/src/G4SigmaZero.cc +++ b/source/particles/hadrons/barions/src/G4SigmaZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4SigmaZero.cc,v 1.18 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4SigmacPlus.cc b/source/particles/hadrons/barions/src/G4SigmacPlus.cc index 9e170fa553..0574d02264 100644 --- a/source/particles/hadrons/barions/src/G4SigmacPlus.cc +++ b/source/particles/hadrons/barions/src/G4SigmacPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4SigmacPlus.cc,v 1.13 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4SigmacPlusPlus.cc b/source/particles/hadrons/barions/src/G4SigmacPlusPlus.cc index 469c1905e7..1f3b7a7720 100644 --- a/source/particles/hadrons/barions/src/G4SigmacPlusPlus.cc +++ b/source/particles/hadrons/barions/src/G4SigmacPlusPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4SigmacPlusPlus.cc,v 1.13 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4SigmacZero.cc b/source/particles/hadrons/barions/src/G4SigmacZero.cc index 4e3b2695f8..8231240916 100644 --- a/source/particles/hadrons/barions/src/G4SigmacZero.cc +++ b/source/particles/hadrons/barions/src/G4SigmacZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4SigmacZero.cc,v 1.18 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4XiMinus.cc b/source/particles/hadrons/barions/src/G4XiMinus.cc index ee14f46157..981d013c84 100644 --- a/source/particles/hadrons/barions/src/G4XiMinus.cc +++ b/source/particles/hadrons/barions/src/G4XiMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4XiMinus.cc,v 1.13 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4XiZero.cc b/source/particles/hadrons/barions/src/G4XiZero.cc index 70c8700a6f..724ef29133 100644 --- a/source/particles/hadrons/barions/src/G4XiZero.cc +++ b/source/particles/hadrons/barions/src/G4XiZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4XiZero.cc,v 1.18 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4XicPlus.cc b/source/particles/hadrons/barions/src/G4XicPlus.cc index db25a80aff..8689669ef2 100644 --- a/source/particles/hadrons/barions/src/G4XicPlus.cc +++ b/source/particles/hadrons/barions/src/G4XicPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4XicPlus.cc,v 1.13 2006/06/29 19:17:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4XicZero.cc b/source/particles/hadrons/barions/src/G4XicZero.cc index c9a678045c..46d2d86015 100644 --- a/source/particles/hadrons/barions/src/G4XicZero.cc +++ b/source/particles/hadrons/barions/src/G4XicZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4XicZero.cc,v 1.19 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/include/G4Alpha.hh b/source/particles/hadrons/ions/include/G4Alpha.hh index 4724590bc4..f81322875e 100644 --- a/source/particles/hadrons/ions/include/G4Alpha.hh +++ b/source/particles/hadrons/ions/include/G4Alpha.hh @@ -25,7 +25,7 @@ // // // $Id: G4Alpha.hh,v 1.11 2006/06/29 19:17:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/ions/include/G4Deuteron.hh b/source/particles/hadrons/ions/include/G4Deuteron.hh index 9ecf40407e..922f39b28d 100644 --- a/source/particles/hadrons/ions/include/G4Deuteron.hh +++ b/source/particles/hadrons/ions/include/G4Deuteron.hh @@ -25,7 +25,7 @@ // // // $Id: G4Deuteron.hh,v 1.11 2006/06/29 19:17:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/ions/include/G4GenericIon.hh b/source/particles/hadrons/ions/include/G4GenericIon.hh index 7cc514bf57..1d3ec4e3dc 100644 --- a/source/particles/hadrons/ions/include/G4GenericIon.hh +++ b/source/particles/hadrons/ions/include/G4GenericIon.hh @@ -25,7 +25,7 @@ // // // $Id: G4GenericIon.hh,v 1.11 2006/06/29 19:17:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/ions/include/G4He3.hh b/source/particles/hadrons/ions/include/G4He3.hh index 9e856da28b..83d54633db 100644 --- a/source/particles/hadrons/ions/include/G4He3.hh +++ b/source/particles/hadrons/ions/include/G4He3.hh @@ -25,7 +25,7 @@ // // // $Id: G4He3.hh,v 1.11 2006/06/29 19:17:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/ions/include/G4IonConstructor.hh b/source/particles/hadrons/ions/include/G4IonConstructor.hh index f2da60ce71..9cf6e7df33 100644 --- a/source/particles/hadrons/ions/include/G4IonConstructor.hh +++ b/source/particles/hadrons/ions/include/G4IonConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4IonConstructor.hh,v 1.5 2006/06/29 19:17:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/include/G4Triton.hh b/source/particles/hadrons/ions/include/G4Triton.hh index 69a394f76b..bf439bdce1 100644 --- a/source/particles/hadrons/ions/include/G4Triton.hh +++ b/source/particles/hadrons/ions/include/G4Triton.hh @@ -25,7 +25,7 @@ // // // $Id: G4Triton.hh,v 1.11 2006/06/29 19:17:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/ions/src/G4Alpha.cc b/source/particles/hadrons/ions/src/G4Alpha.cc index fac36c5bf3..a880afd8b4 100644 --- a/source/particles/hadrons/ions/src/G4Alpha.cc +++ b/source/particles/hadrons/ions/src/G4Alpha.cc @@ -25,7 +25,7 @@ // // // $Id: G4Alpha.cc,v 1.14 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4Deuteron.cc b/source/particles/hadrons/ions/src/G4Deuteron.cc index 28580f510b..28b5e051f6 100644 --- a/source/particles/hadrons/ions/src/G4Deuteron.cc +++ b/source/particles/hadrons/ions/src/G4Deuteron.cc @@ -25,7 +25,7 @@ // // // $Id: G4Deuteron.cc,v 1.14 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4GenericIon.cc b/source/particles/hadrons/ions/src/G4GenericIon.cc index 077fa8a92e..3e5b7c9b4e 100644 --- a/source/particles/hadrons/ions/src/G4GenericIon.cc +++ b/source/particles/hadrons/ions/src/G4GenericIon.cc @@ -25,7 +25,7 @@ // // // $Id: G4GenericIon.cc,v 1.13 2006/06/29 19:17:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4He3.cc b/source/particles/hadrons/ions/src/G4He3.cc index 6c1b28f51a..3270520b01 100644 --- a/source/particles/hadrons/ions/src/G4He3.cc +++ b/source/particles/hadrons/ions/src/G4He3.cc @@ -25,7 +25,7 @@ // // // $Id: G4He3.cc,v 1.14 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4IonConstructor.cc b/source/particles/hadrons/ions/src/G4IonConstructor.cc index 8970a67655..763361ce54 100644 --- a/source/particles/hadrons/ions/src/G4IonConstructor.cc +++ b/source/particles/hadrons/ions/src/G4IonConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4IonConstructor.cc,v 1.4 2006/06/29 19:18:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4Triton.cc b/source/particles/hadrons/ions/src/G4Triton.cc index 2cbf29f06e..8d049f9ea1 100644 --- a/source/particles/hadrons/ions/src/G4Triton.cc +++ b/source/particles/hadrons/ions/src/G4Triton.cc @@ -25,7 +25,7 @@ // // // $Id: G4Triton.cc,v 1.14 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/include/G4AntiBMesonZero.hh b/source/particles/hadrons/mesons/include/G4AntiBMesonZero.hh index 6a67eb04f9..e5bd41ab5a 100644 --- a/source/particles/hadrons/mesons/include/G4AntiBMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4AntiBMesonZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiBMesonZero.hh,v 1.11 2006/06/29 19:18:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4AntiBsMesonZero.hh b/source/particles/hadrons/mesons/include/G4AntiBsMesonZero.hh index eee85e3f1b..ed8c8cff3a 100644 --- a/source/particles/hadrons/mesons/include/G4AntiBsMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4AntiBsMesonZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiBsMesonZero.hh,v 1.11 2006/06/29 19:18:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4AntiDMesonZero.hh b/source/particles/hadrons/mesons/include/G4AntiDMesonZero.hh index 10c2d51042..a5190ab26a 100644 --- a/source/particles/hadrons/mesons/include/G4AntiDMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4AntiDMesonZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiDMesonZero.hh,v 1.11 2006/06/29 19:18:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4AntiKaonZero.hh b/source/particles/hadrons/mesons/include/G4AntiKaonZero.hh index 9f0ee85f2d..bba01f551c 100644 --- a/source/particles/hadrons/mesons/include/G4AntiKaonZero.hh +++ b/source/particles/hadrons/mesons/include/G4AntiKaonZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiKaonZero.hh,v 1.13 2006/06/29 19:18:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4BMesonMinus.hh b/source/particles/hadrons/mesons/include/G4BMesonMinus.hh index fbc9eff748..35144b87f5 100644 --- a/source/particles/hadrons/mesons/include/G4BMesonMinus.hh +++ b/source/particles/hadrons/mesons/include/G4BMesonMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4BMesonMinus.hh,v 1.8 2006/06/29 19:18:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4BMesonPlus.hh b/source/particles/hadrons/mesons/include/G4BMesonPlus.hh index 78fad76129..58335d433c 100644 --- a/source/particles/hadrons/mesons/include/G4BMesonPlus.hh +++ b/source/particles/hadrons/mesons/include/G4BMesonPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4BMesonPlus.hh,v 1.8 2006/06/29 19:18:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4BMesonZero.hh b/source/particles/hadrons/mesons/include/G4BMesonZero.hh index 9f6f78db72..7578be968f 100644 --- a/source/particles/hadrons/mesons/include/G4BMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4BMesonZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4BMesonZero.hh,v 1.11 2006/06/29 19:18:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4BsMesonZero.hh b/source/particles/hadrons/mesons/include/G4BsMesonZero.hh index b239aafec8..d5d6b51554 100644 --- a/source/particles/hadrons/mesons/include/G4BsMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4BsMesonZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4BsMesonZero.hh,v 1.11 2006/06/29 19:18:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4DMesonMinus.hh b/source/particles/hadrons/mesons/include/G4DMesonMinus.hh index df719aa0c6..f3704978f3 100644 --- a/source/particles/hadrons/mesons/include/G4DMesonMinus.hh +++ b/source/particles/hadrons/mesons/include/G4DMesonMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4DMesonMinus.hh,v 1.8 2006/06/29 19:18:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4DMesonPlus.hh b/source/particles/hadrons/mesons/include/G4DMesonPlus.hh index 5274250501..0c2b30f9ae 100644 --- a/source/particles/hadrons/mesons/include/G4DMesonPlus.hh +++ b/source/particles/hadrons/mesons/include/G4DMesonPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4DMesonPlus.hh,v 1.8 2006/06/29 19:18:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4DMesonZero.hh b/source/particles/hadrons/mesons/include/G4DMesonZero.hh index c6fbbf8fc8..59b49389d5 100644 --- a/source/particles/hadrons/mesons/include/G4DMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4DMesonZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4DMesonZero.hh,v 1.11 2006/06/29 19:18:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4DsMesonMinus.hh b/source/particles/hadrons/mesons/include/G4DsMesonMinus.hh index 36237f7a48..a550b65fec 100644 --- a/source/particles/hadrons/mesons/include/G4DsMesonMinus.hh +++ b/source/particles/hadrons/mesons/include/G4DsMesonMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4DsMesonMinus.hh,v 1.8 2006/06/29 19:18:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4DsMesonPlus.hh b/source/particles/hadrons/mesons/include/G4DsMesonPlus.hh index c77a7d2983..f032dff91e 100644 --- a/source/particles/hadrons/mesons/include/G4DsMesonPlus.hh +++ b/source/particles/hadrons/mesons/include/G4DsMesonPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4DsMesonPlus.hh,v 1.8 2006/06/29 19:18:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4Eta.hh b/source/particles/hadrons/mesons/include/G4Eta.hh index 2afc7e1590..4f989005f5 100644 --- a/source/particles/hadrons/mesons/include/G4Eta.hh +++ b/source/particles/hadrons/mesons/include/G4Eta.hh @@ -25,7 +25,7 @@ // // // $Id: G4Eta.hh,v 1.12 2006/06/29 19:18:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4EtaPrime.hh b/source/particles/hadrons/mesons/include/G4EtaPrime.hh index c19e8b418f..ab5e882cfe 100644 --- a/source/particles/hadrons/mesons/include/G4EtaPrime.hh +++ b/source/particles/hadrons/mesons/include/G4EtaPrime.hh @@ -25,7 +25,7 @@ // // // $Id: G4EtaPrime.hh,v 1.12 2006/06/29 19:18:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4JPsi.hh b/source/particles/hadrons/mesons/include/G4JPsi.hh index 70cf5fa95e..c81c66e859 100644 --- a/source/particles/hadrons/mesons/include/G4JPsi.hh +++ b/source/particles/hadrons/mesons/include/G4JPsi.hh @@ -25,7 +25,7 @@ // // // $Id: G4JPsi.hh,v 1.11 2006/06/29 19:18:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4KaonMinus.hh b/source/particles/hadrons/mesons/include/G4KaonMinus.hh index c6b41eae0e..3c2195915b 100644 --- a/source/particles/hadrons/mesons/include/G4KaonMinus.hh +++ b/source/particles/hadrons/mesons/include/G4KaonMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4KaonMinus.hh,v 1.10 2006/06/29 19:18:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4KaonPlus.hh b/source/particles/hadrons/mesons/include/G4KaonPlus.hh index 586bb3eb31..9fe50783f8 100644 --- a/source/particles/hadrons/mesons/include/G4KaonPlus.hh +++ b/source/particles/hadrons/mesons/include/G4KaonPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4KaonPlus.hh,v 1.10 2006/06/29 19:18:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4KaonZero.hh b/source/particles/hadrons/mesons/include/G4KaonZero.hh index fe3b4a050b..a49fee5a66 100644 --- a/source/particles/hadrons/mesons/include/G4KaonZero.hh +++ b/source/particles/hadrons/mesons/include/G4KaonZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4KaonZero.hh,v 1.13 2006/06/29 19:18:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4KaonZeroLong.hh b/source/particles/hadrons/mesons/include/G4KaonZeroLong.hh index 73519de471..535a45e740 100644 --- a/source/particles/hadrons/mesons/include/G4KaonZeroLong.hh +++ b/source/particles/hadrons/mesons/include/G4KaonZeroLong.hh @@ -25,7 +25,7 @@ // // // $Id: G4KaonZeroLong.hh,v 1.12 2006/06/29 19:18:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4KaonZeroShort.hh b/source/particles/hadrons/mesons/include/G4KaonZeroShort.hh index ec893d0cdd..06aa4ff325 100644 --- a/source/particles/hadrons/mesons/include/G4KaonZeroShort.hh +++ b/source/particles/hadrons/mesons/include/G4KaonZeroShort.hh @@ -25,7 +25,7 @@ // // // $Id: G4KaonZeroShort.hh,v 1.12 2006/06/29 19:18:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4MesonConstructor.hh b/source/particles/hadrons/mesons/include/G4MesonConstructor.hh index 30461b7b0c..946c521123 100644 --- a/source/particles/hadrons/mesons/include/G4MesonConstructor.hh +++ b/source/particles/hadrons/mesons/include/G4MesonConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4MesonConstructor.hh,v 1.5 2006/06/29 19:18:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/include/G4PionMinus.hh b/source/particles/hadrons/mesons/include/G4PionMinus.hh index 67a6d141e6..45d44126de 100644 --- a/source/particles/hadrons/mesons/include/G4PionMinus.hh +++ b/source/particles/hadrons/mesons/include/G4PionMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4PionMinus.hh,v 1.10 2006/06/29 19:18:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4PionPlus.hh b/source/particles/hadrons/mesons/include/G4PionPlus.hh index 10088b4a0e..1c3c4dbbe9 100644 --- a/source/particles/hadrons/mesons/include/G4PionPlus.hh +++ b/source/particles/hadrons/mesons/include/G4PionPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4PionPlus.hh,v 1.10 2006/06/29 19:18:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/include/G4PionZero.hh b/source/particles/hadrons/mesons/include/G4PionZero.hh index 014699fe45..371392302c 100644 --- a/source/particles/hadrons/mesons/include/G4PionZero.hh +++ b/source/particles/hadrons/mesons/include/G4PionZero.hh @@ -25,7 +25,7 @@ // // // $Id: G4PionZero.hh,v 1.13 2006/06/29 19:19:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/src/G4AntiBMesonZero.cc b/source/particles/hadrons/mesons/src/G4AntiBMesonZero.cc index f3c6b003ac..1a3156ed14 100644 --- a/source/particles/hadrons/mesons/src/G4AntiBMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4AntiBMesonZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiBMesonZero.cc,v 1.19 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4AntiBsMesonZero.cc b/source/particles/hadrons/mesons/src/G4AntiBsMesonZero.cc index 864bd2ee7a..43d9a35d3e 100644 --- a/source/particles/hadrons/mesons/src/G4AntiBsMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4AntiBsMesonZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiBsMesonZero.cc,v 1.18 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4AntiDMesonZero.cc b/source/particles/hadrons/mesons/src/G4AntiDMesonZero.cc index db7b14b3de..3b42d15e22 100644 --- a/source/particles/hadrons/mesons/src/G4AntiDMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4AntiDMesonZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiDMesonZero.cc,v 1.18 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4AntiKaonZero.cc b/source/particles/hadrons/mesons/src/G4AntiKaonZero.cc index c524e96739..6a527e8be8 100644 --- a/source/particles/hadrons/mesons/src/G4AntiKaonZero.cc +++ b/source/particles/hadrons/mesons/src/G4AntiKaonZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiKaonZero.cc,v 1.15 2006/06/29 19:19:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4BMesonMinus.cc b/source/particles/hadrons/mesons/src/G4BMesonMinus.cc index 27d70d3982..2830588644 100644 --- a/source/particles/hadrons/mesons/src/G4BMesonMinus.cc +++ b/source/particles/hadrons/mesons/src/G4BMesonMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4BMesonMinus.cc,v 1.14 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4BMesonPlus.cc b/source/particles/hadrons/mesons/src/G4BMesonPlus.cc index b973396eaa..00d62cd315 100644 --- a/source/particles/hadrons/mesons/src/G4BMesonPlus.cc +++ b/source/particles/hadrons/mesons/src/G4BMesonPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4BMesonPlus.cc,v 1.14 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4BMesonZero.cc b/source/particles/hadrons/mesons/src/G4BMesonZero.cc index 90bcbaadca..bb92f70738 100644 --- a/source/particles/hadrons/mesons/src/G4BMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4BMesonZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4BMesonZero.cc,v 1.19 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4BsMesonZero.cc b/source/particles/hadrons/mesons/src/G4BsMesonZero.cc index b90ff67031..327dc8bceb 100644 --- a/source/particles/hadrons/mesons/src/G4BsMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4BsMesonZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4BsMesonZero.cc,v 1.18 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4DMesonMinus.cc b/source/particles/hadrons/mesons/src/G4DMesonMinus.cc index 429cda5ef9..36a0e0ee9f 100644 --- a/source/particles/hadrons/mesons/src/G4DMesonMinus.cc +++ b/source/particles/hadrons/mesons/src/G4DMesonMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4DMesonMinus.cc,v 1.13 2006/06/29 19:19:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4DMesonPlus.cc b/source/particles/hadrons/mesons/src/G4DMesonPlus.cc index 2b4ff5cde5..aa58355845 100644 --- a/source/particles/hadrons/mesons/src/G4DMesonPlus.cc +++ b/source/particles/hadrons/mesons/src/G4DMesonPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4DMesonPlus.cc,v 1.13 2006/06/29 19:19:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4DMesonZero.cc b/source/particles/hadrons/mesons/src/G4DMesonZero.cc index cf0c660554..2883c4291b 100644 --- a/source/particles/hadrons/mesons/src/G4DMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4DMesonZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4DMesonZero.cc,v 1.19 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4DsMesonMinus.cc b/source/particles/hadrons/mesons/src/G4DsMesonMinus.cc index 87213b788e..5fe07e3344 100644 --- a/source/particles/hadrons/mesons/src/G4DsMesonMinus.cc +++ b/source/particles/hadrons/mesons/src/G4DsMesonMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4DsMesonMinus.cc,v 1.13 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4DsMesonPlus.cc b/source/particles/hadrons/mesons/src/G4DsMesonPlus.cc index 0be19ffca1..53f496ca19 100644 --- a/source/particles/hadrons/mesons/src/G4DsMesonPlus.cc +++ b/source/particles/hadrons/mesons/src/G4DsMesonPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4DsMesonPlus.cc,v 1.13 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4Eta.cc b/source/particles/hadrons/mesons/src/G4Eta.cc index 4a839517ef..504a84d008 100644 --- a/source/particles/hadrons/mesons/src/G4Eta.cc +++ b/source/particles/hadrons/mesons/src/G4Eta.cc @@ -25,7 +25,7 @@ // // // $Id: G4Eta.cc,v 1.18 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4EtaPrime.cc b/source/particles/hadrons/mesons/src/G4EtaPrime.cc index 075553e700..16d3339f27 100644 --- a/source/particles/hadrons/mesons/src/G4EtaPrime.cc +++ b/source/particles/hadrons/mesons/src/G4EtaPrime.cc @@ -25,7 +25,7 @@ // // // $Id: G4EtaPrime.cc,v 1.18 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4JPsi.cc b/source/particles/hadrons/mesons/src/G4JPsi.cc index 256ea71a71..5a912da33f 100644 --- a/source/particles/hadrons/mesons/src/G4JPsi.cc +++ b/source/particles/hadrons/mesons/src/G4JPsi.cc @@ -25,7 +25,7 @@ // // // $Id: G4JPsi.cc,v 1.17 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4KaonMinus.cc b/source/particles/hadrons/mesons/src/G4KaonMinus.cc index 80fbb49415..07ed38951f 100644 --- a/source/particles/hadrons/mesons/src/G4KaonMinus.cc +++ b/source/particles/hadrons/mesons/src/G4KaonMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4KaonMinus.cc,v 1.14 2006/06/29 19:19:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4KaonPlus.cc b/source/particles/hadrons/mesons/src/G4KaonPlus.cc index a865a6ed11..b1b8db2450 100644 --- a/source/particles/hadrons/mesons/src/G4KaonPlus.cc +++ b/source/particles/hadrons/mesons/src/G4KaonPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4KaonPlus.cc,v 1.13 2006/06/29 19:19:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4KaonZero.cc b/source/particles/hadrons/mesons/src/G4KaonZero.cc index 45fc1b2c9b..11b8d3250e 100644 --- a/source/particles/hadrons/mesons/src/G4KaonZero.cc +++ b/source/particles/hadrons/mesons/src/G4KaonZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4KaonZero.cc,v 1.15 2006/06/29 19:19:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4KaonZeroLong.cc b/source/particles/hadrons/mesons/src/G4KaonZeroLong.cc index 92e427298f..b80d68639c 100644 --- a/source/particles/hadrons/mesons/src/G4KaonZeroLong.cc +++ b/source/particles/hadrons/mesons/src/G4KaonZeroLong.cc @@ -25,7 +25,7 @@ // // // $Id: G4KaonZeroLong.cc,v 1.18 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4KaonZeroShort.cc b/source/particles/hadrons/mesons/src/G4KaonZeroShort.cc index 791eb08908..75566e5b9c 100644 --- a/source/particles/hadrons/mesons/src/G4KaonZeroShort.cc +++ b/source/particles/hadrons/mesons/src/G4KaonZeroShort.cc @@ -25,7 +25,7 @@ // // // $Id: G4KaonZeroShort.cc,v 1.17 2006/06/29 19:19:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4MesonConstructor.cc b/source/particles/hadrons/mesons/src/G4MesonConstructor.cc index 344df0db7b..ebf5abbee7 100644 --- a/source/particles/hadrons/mesons/src/G4MesonConstructor.cc +++ b/source/particles/hadrons/mesons/src/G4MesonConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4MesonConstructor.cc,v 1.5 2006/06/29 19:19:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4PionMinus.cc b/source/particles/hadrons/mesons/src/G4PionMinus.cc index 1eb4002576..2524d73bde 100644 --- a/source/particles/hadrons/mesons/src/G4PionMinus.cc +++ b/source/particles/hadrons/mesons/src/G4PionMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4PionMinus.cc,v 1.11 2006/06/29 19:19:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4PionPlus.cc b/source/particles/hadrons/mesons/src/G4PionPlus.cc index 23d8a35d95..84086e28ab 100644 --- a/source/particles/hadrons/mesons/src/G4PionPlus.cc +++ b/source/particles/hadrons/mesons/src/G4PionPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4PionPlus.cc,v 1.12 2006/06/29 19:20:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4PionZero.cc b/source/particles/hadrons/mesons/src/G4PionZero.cc index cd67cc0ae3..83ccfcbe66 100644 --- a/source/particles/hadrons/mesons/src/G4PionZero.cc +++ b/source/particles/hadrons/mesons/src/G4PionZero.cc @@ -25,7 +25,7 @@ // // // $Id: G4PionZero.cc,v 1.16 2006/06/29 19:20:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/leptons/include/G4AntiNeutrinoE.hh b/source/particles/leptons/include/G4AntiNeutrinoE.hh index fed60e90a9..64f35bd454 100644 --- a/source/particles/leptons/include/G4AntiNeutrinoE.hh +++ b/source/particles/leptons/include/G4AntiNeutrinoE.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiNeutrinoE.hh,v 1.12 2006/06/29 19:20:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4AntiNeutrinoMu.hh b/source/particles/leptons/include/G4AntiNeutrinoMu.hh index 7549a18c8a..99f6fbf222 100644 --- a/source/particles/leptons/include/G4AntiNeutrinoMu.hh +++ b/source/particles/leptons/include/G4AntiNeutrinoMu.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiNeutrinoMu.hh,v 1.12 2006/06/29 19:20:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4AntiNeutrinoTau.hh b/source/particles/leptons/include/G4AntiNeutrinoTau.hh index 5cc9a20531..16b3b759d9 100644 --- a/source/particles/leptons/include/G4AntiNeutrinoTau.hh +++ b/source/particles/leptons/include/G4AntiNeutrinoTau.hh @@ -25,7 +25,7 @@ // // // $Id: G4AntiNeutrinoTau.hh,v 1.13 2006/06/29 19:20:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4Electron.hh b/source/particles/leptons/include/G4Electron.hh index 9d0afb8108..abf353929c 100644 --- a/source/particles/leptons/include/G4Electron.hh +++ b/source/particles/leptons/include/G4Electron.hh @@ -25,7 +25,7 @@ // // // $Id: G4Electron.hh,v 1.12 2006/06/29 19:20:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4LeptonConstructor.hh b/source/particles/leptons/include/G4LeptonConstructor.hh index 54402ad634..7811e080e7 100644 --- a/source/particles/leptons/include/G4LeptonConstructor.hh +++ b/source/particles/leptons/include/G4LeptonConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4LeptonConstructor.hh,v 1.6 2006/06/29 19:20:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/leptons/include/G4MuonMinus.hh b/source/particles/leptons/include/G4MuonMinus.hh index bb2721567b..acdc0ec294 100644 --- a/source/particles/leptons/include/G4MuonMinus.hh +++ b/source/particles/leptons/include/G4MuonMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4MuonMinus.hh,v 1.11 2006/06/29 19:20:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4MuonPlus.hh b/source/particles/leptons/include/G4MuonPlus.hh index c299d3af7a..2bb3631664 100644 --- a/source/particles/leptons/include/G4MuonPlus.hh +++ b/source/particles/leptons/include/G4MuonPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4MuonPlus.hh,v 1.10 2006/06/29 19:20:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4NeutrinoE.hh b/source/particles/leptons/include/G4NeutrinoE.hh index 0dbd245f7b..6fadccb018 100644 --- a/source/particles/leptons/include/G4NeutrinoE.hh +++ b/source/particles/leptons/include/G4NeutrinoE.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutrinoE.hh,v 1.12 2006/06/29 19:20:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4NeutrinoMu.hh b/source/particles/leptons/include/G4NeutrinoMu.hh index f9732a2aca..f345070219 100644 --- a/source/particles/leptons/include/G4NeutrinoMu.hh +++ b/source/particles/leptons/include/G4NeutrinoMu.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutrinoMu.hh,v 1.12 2006/06/29 19:20:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4NeutrinoTau.hh b/source/particles/leptons/include/G4NeutrinoTau.hh index 138920bc33..91fba4c07b 100644 --- a/source/particles/leptons/include/G4NeutrinoTau.hh +++ b/source/particles/leptons/include/G4NeutrinoTau.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutrinoTau.hh,v 1.13 2006/06/29 19:20:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4Positron.hh b/source/particles/leptons/include/G4Positron.hh index 9acf71d56a..8346762086 100644 --- a/source/particles/leptons/include/G4Positron.hh +++ b/source/particles/leptons/include/G4Positron.hh @@ -25,7 +25,7 @@ // // // $Id: G4Positron.hh,v 1.11 2006/06/29 19:20:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4TauMinus.hh b/source/particles/leptons/include/G4TauMinus.hh index e848df49d3..7a8d5b8bbf 100644 --- a/source/particles/leptons/include/G4TauMinus.hh +++ b/source/particles/leptons/include/G4TauMinus.hh @@ -25,7 +25,7 @@ // // // $Id: G4TauMinus.hh,v 1.10 2006/06/29 19:20:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/include/G4TauPlus.hh b/source/particles/leptons/include/G4TauPlus.hh index 19fc1cf999..7ea0fd93e3 100644 --- a/source/particles/leptons/include/G4TauPlus.hh +++ b/source/particles/leptons/include/G4TauPlus.hh @@ -25,7 +25,7 @@ // // // $Id: G4TauPlus.hh,v 1.10 2006/06/29 19:20:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/src/G4AntiNeutrinoE.cc b/source/particles/leptons/src/G4AntiNeutrinoE.cc index 4beb53089f..a727321476 100644 --- a/source/particles/leptons/src/G4AntiNeutrinoE.cc +++ b/source/particles/leptons/src/G4AntiNeutrinoE.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiNeutrinoE.cc,v 1.15 2006/06/29 19:20:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4AntiNeutrinoMu.cc b/source/particles/leptons/src/G4AntiNeutrinoMu.cc index 4a648d6a4f..4fdb3ee17a 100644 --- a/source/particles/leptons/src/G4AntiNeutrinoMu.cc +++ b/source/particles/leptons/src/G4AntiNeutrinoMu.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiNeutrinoMu.cc,v 1.15 2006/06/29 19:20:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4AntiNeutrinoTau.cc b/source/particles/leptons/src/G4AntiNeutrinoTau.cc index 16b5b9df04..dcef1274e6 100644 --- a/source/particles/leptons/src/G4AntiNeutrinoTau.cc +++ b/source/particles/leptons/src/G4AntiNeutrinoTau.cc @@ -25,7 +25,7 @@ // // // $Id: G4AntiNeutrinoTau.cc,v 1.15 2006/06/29 19:20:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4Electron.cc b/source/particles/leptons/src/G4Electron.cc index d2a23d6253..785c43baf8 100644 --- a/source/particles/leptons/src/G4Electron.cc +++ b/source/particles/leptons/src/G4Electron.cc @@ -25,7 +25,7 @@ // // // $Id: G4Electron.cc,v 1.14 2007/03/15 06:53:57 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4LeptonConstructor.cc b/source/particles/leptons/src/G4LeptonConstructor.cc index bc4b7e575f..06d9463cf6 100644 --- a/source/particles/leptons/src/G4LeptonConstructor.cc +++ b/source/particles/leptons/src/G4LeptonConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4LeptonConstructor.cc,v 1.5 2006/06/29 19:21:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4MuonMinus.cc b/source/particles/leptons/src/G4MuonMinus.cc index 8289cf9db1..acecb876bf 100644 --- a/source/particles/leptons/src/G4MuonMinus.cc +++ b/source/particles/leptons/src/G4MuonMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4MuonMinus.cc,v 1.13 2007/03/15 06:53:57 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4MuonPlus.cc b/source/particles/leptons/src/G4MuonPlus.cc index 47515211b0..c0e3ba99ba 100644 --- a/source/particles/leptons/src/G4MuonPlus.cc +++ b/source/particles/leptons/src/G4MuonPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4MuonPlus.cc,v 1.13 2007/03/15 06:53:58 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4NeutrinoE.cc b/source/particles/leptons/src/G4NeutrinoE.cc index 890464a111..2992a8ce6c 100644 --- a/source/particles/leptons/src/G4NeutrinoE.cc +++ b/source/particles/leptons/src/G4NeutrinoE.cc @@ -25,7 +25,7 @@ // // // $Id: G4NeutrinoE.cc,v 1.15 2006/06/29 19:21:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4NeutrinoMu.cc b/source/particles/leptons/src/G4NeutrinoMu.cc index 60001bc024..04193842c5 100644 --- a/source/particles/leptons/src/G4NeutrinoMu.cc +++ b/source/particles/leptons/src/G4NeutrinoMu.cc @@ -25,7 +25,7 @@ // // // $Id: G4NeutrinoMu.cc,v 1.16 2006/06/29 19:22:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4NeutrinoTau.cc b/source/particles/leptons/src/G4NeutrinoTau.cc index a57c4a5c66..869d61637b 100644 --- a/source/particles/leptons/src/G4NeutrinoTau.cc +++ b/source/particles/leptons/src/G4NeutrinoTau.cc @@ -25,7 +25,7 @@ // // // $Id: G4NeutrinoTau.cc,v 1.15 2006/06/29 19:22:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4Positron.cc b/source/particles/leptons/src/G4Positron.cc index 6c09ce7201..3d15900cd3 100644 --- a/source/particles/leptons/src/G4Positron.cc +++ b/source/particles/leptons/src/G4Positron.cc @@ -25,7 +25,7 @@ // // // $Id: G4Positron.cc,v 1.13 2007/03/15 06:53:58 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4TauMinus.cc b/source/particles/leptons/src/G4TauMinus.cc index a2f6c16663..1eeff42ca1 100644 --- a/source/particles/leptons/src/G4TauMinus.cc +++ b/source/particles/leptons/src/G4TauMinus.cc @@ -25,7 +25,7 @@ // // // $Id: G4TauMinus.cc,v 1.16 2007/03/15 06:53:58 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4TauPlus.cc b/source/particles/leptons/src/G4TauPlus.cc index 2e3d2c2f54..3f047c78a3 100644 --- a/source/particles/leptons/src/G4TauPlus.cc +++ b/source/particles/leptons/src/G4TauPlus.cc @@ -25,7 +25,7 @@ // // // $Id: G4TauPlus.cc,v 1.16 2007/03/15 06:53:58 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/include/G4DalitzDecayChannel.hh b/source/particles/management/include/G4DalitzDecayChannel.hh index 307360fa89..74dbf9d4ec 100644 --- a/source/particles/management/include/G4DalitzDecayChannel.hh +++ b/source/particles/management/include/G4DalitzDecayChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4DalitzDecayChannel.hh,v 1.5 2006/06/29 19:22:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DecayProducts.hh b/source/particles/management/include/G4DecayProducts.hh index 4aab2458a2..f256e33ac5 100644 --- a/source/particles/management/include/G4DecayProducts.hh +++ b/source/particles/management/include/G4DecayProducts.hh @@ -25,7 +25,7 @@ // // // $Id: G4DecayProducts.hh,v 1.12 2006/06/29 19:22:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DecayTable.hh b/source/particles/management/include/G4DecayTable.hh index cf26bafa70..4c59e5d2b9 100644 --- a/source/particles/management/include/G4DecayTable.hh +++ b/source/particles/management/include/G4DecayTable.hh @@ -25,7 +25,7 @@ // // // $Id: G4DecayTable.hh,v 1.9 2006/06/29 19:22:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DecayTableMessenger.hh b/source/particles/management/include/G4DecayTableMessenger.hh index 04f564b324..5b83f19123 100644 --- a/source/particles/management/include/G4DecayTableMessenger.hh +++ b/source/particles/management/include/G4DecayTableMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4DecayTableMessenger.hh,v 1.8 2006/06/29 19:22:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/include/G4DynamicParticle.hh b/source/particles/management/include/G4DynamicParticle.hh index 2908eb4d98..bd6e7c1b50 100644 --- a/source/particles/management/include/G4DynamicParticle.hh +++ b/source/particles/management/include/G4DynamicParticle.hh @@ -25,7 +25,7 @@ // // // $Id: G4DynamicParticle.hh,v 1.18 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DynamicParticle.icc b/source/particles/management/include/G4DynamicParticle.icc index e30e1366f2..7166c69e91 100644 --- a/source/particles/management/include/G4DynamicParticle.icc +++ b/source/particles/management/include/G4DynamicParticle.icc @@ -25,7 +25,7 @@ // // // $Id: G4DynamicParticle.icc,v 1.16 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DynamicParticleFastVector.hh b/source/particles/management/include/G4DynamicParticleFastVector.hh index 5028fc596f..41e286d61b 100644 --- a/source/particles/management/include/G4DynamicParticleFastVector.hh +++ b/source/particles/management/include/G4DynamicParticleFastVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4DynamicParticleFastVector.hh,v 1.4 2006/06/29 19:23:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ElectronOccupancy.hh b/source/particles/management/include/G4ElectronOccupancy.hh index 133af8b28f..43d9f9fec5 100644 --- a/source/particles/management/include/G4ElectronOccupancy.hh +++ b/source/particles/management/include/G4ElectronOccupancy.hh @@ -25,7 +25,7 @@ // // // $Id: G4ElectronOccupancy.hh,v 1.9 2006/06/29 19:23:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4HyperNucleiProperties.hh b/source/particles/management/include/G4HyperNucleiProperties.hh new file mode 100644 index 0000000000..631426570e --- /dev/null +++ b/source/particles/management/include/G4HyperNucleiProperties.hh @@ -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: G4HyperNucleiProperties.hh,v 1.1 2007/09/14 07:04:09 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// ------------------------------------------------------------ +// Hyper Nuclei properties based on CHIPS model (Mikhail KOSOV) +// Migrate into particles category by H.Kurashige (Sep. 2007) +// + +#ifndef G4HyperNucleiProperties_h +#define G4HyperNucleiProperties_h 1 + +#include "globals.hh" +#include "G4ios.hh" +#include "G4ParticleTable.hh" + +class G4HyperNucleiProperties +{ + // Class Description + // G4HyperNucleiProperties is an utility class to provide + // mass formula of hyper nuclei based on CHIPS model + // (i.e. it has static member function only) + + +public: + + // Destructor + ~G4HyperNucleiProperties() { }; + + // Default constructor () + G4HyperNucleiProperties(){}; + + +public: // With Description + + // Calculate Mass Excess of nucleus A, Z, L(number of Lambda) + static G4double GetAtomicMass(G4int A, G4int Z, G4int L); + + static G4double GetNuclearMass(G4int A, G4int Z, G4int L); + +}; + +#endif diff --git a/source/particles/management/include/G4IonTable.hh b/source/particles/management/include/G4IonTable.hh index a9030ae6e7..4dd02c5c4b 100644 --- a/source/particles/management/include/G4IonTable.hh +++ b/source/particles/management/include/G4IonTable.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4IonTable.hh,v 1.24 2007/03/15 06:53:27 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4IonTable.hh,v 1.25 2007/09/14 07:04:09 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -114,8 +114,13 @@ class G4IonTable // Find/Get "excited state" G4ParticleDefinition* FindIon(G4int Z, G4int A, G4double E, G4int J=0); G4ParticleDefinition* GetIon(G4int Z, G4int A, G4double E, G4int J=0); + G4ParticleDefinition* FindIon(G4int Z, G4int A, G4int L, + G4double E, G4int J=0); + G4ParticleDefinition* GetIon(G4int Z, G4int A, G4int L, + G4double E, G4int J=0); // Z: Atomic Number - // A: Atomic Mass + // A: Atomic Mass (nn + np +nlambda) + // L: Number of Lmabda // J: Total Angular momentum (in unit of 1/2) // E: Excitaion energy @@ -126,9 +131,10 @@ class G4IonTable static G4bool IsIon(G4ParticleDefinition*); // return true if the particle is ion - G4String GetIonName(G4int Z, G4int A, G4double E) const; + const G4String& GetIonName(G4int Z, G4int A, G4double E) const; + const G4String& GetIonName(G4int Z, G4int A, G4int L, G4double E) const; // get ion name - + static G4int GetNucleusEncoding(G4int Z, G4int A, G4double E=0.0, G4int J=0); // get PDG code for Ions @@ -138,20 +144,38 @@ class G4IonTable // I gives the isomer level, with I = 0 corresponding // to the ground state and I >0 to excitations // + //!!! I = 1 is assigned fo all excitation states in Geant4 + + static G4int GetNucleusEncoding(G4int Z, G4int A, G4int L, + G4double E=0.0, G4int J=0); + // get PDG code for Hyper-Nucleus Ions + // Nuclear codes are given as 10-digit numbers +-10LZZZAAAI. + //For a nucleus consisting of np protons and nn neutrons + // A = np + nn +nlambda and Z = np. + // L = nlambda + // I gives the isomer level, with I = 0 corresponding + // to the ground state and I >0 to excitations + // //!!! I = 1 is assigned fo all excitation states in Geant4 static G4bool GetNucleusByEncoding(G4int encoding, G4int &Z, G4int &A, G4double &E, G4int &J); - //!!! Only ground states are supported now + static G4bool GetNucleusByEncoding(G4int encoding, + G4int &Z, G4int &A, G4int &L, + G4double &E, G4int &J); + //!!! Only ground states are supported now - G4double GetIonMass(G4int Z, G4int A) const; - G4double GetNucleusMass(G4int Z, G4int A) const; + + G4double GetIonMass(G4int Z, G4int A, G4int L=0) const; + G4double GetNucleusMass(G4int Z, G4int A, G4int L=0) const; // These two methods returns Nucleus (i.e. full ionized atom) mass // ,where Z is Atomic Number (number of protons) and - // A is Atomic Number (number of nucleons) + // A is Atomic Number (number of nucleons and hyperons) + // L is number of lambda (A= nn + np + nlambda) - + + G4int Entries() const; // Return number of ions in the table @@ -171,6 +195,8 @@ class G4IonTable protected: G4ParticleDefinition* CreateIon(G4int Z, G4int A, G4double E, G4int J); + G4ParticleDefinition* CreateIon(G4int Z, G4int A, G4int L, + G4double E, G4int J); // Create Ion G4IsotopeProperty* FindIsotope(G4int Z, G4int A, G4double E, G4int J); diff --git a/source/particles/management/include/G4Ions.hh b/source/particles/management/include/G4Ions.hh index 82da742d7c..4830503a42 100644 --- a/source/particles/management/include/G4Ions.hh +++ b/source/particles/management/include/G4Ions.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ions.hh,v 1.14 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4IsotopeProperty.hh b/source/particles/management/include/G4IsotopeProperty.hh index 5911307eed..f4d606d54d 100644 --- a/source/particles/management/include/G4IsotopeProperty.hh +++ b/source/particles/management/include/G4IsotopeProperty.hh @@ -25,7 +25,7 @@ // // // $Id: G4IsotopeProperty.hh,v 1.5 2007/03/15 06:53:27 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4KL3DecayChannel.hh b/source/particles/management/include/G4KL3DecayChannel.hh index c26c531b6e..085a18fa07 100644 --- a/source/particles/management/include/G4KL3DecayChannel.hh +++ b/source/particles/management/include/G4KL3DecayChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4KL3DecayChannel.hh,v 1.5 2006/06/29 19:23:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4MuonDecayChannel.hh b/source/particles/management/include/G4MuonDecayChannel.hh index 5e0f63d065..96e7c1aa64 100644 --- a/source/particles/management/include/G4MuonDecayChannel.hh +++ b/source/particles/management/include/G4MuonDecayChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4MuonDecayChannel.hh,v 1.6 2006/06/29 19:23:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4MuonRadiativeDecayChannelWithSpin.hh b/source/particles/management/include/G4MuonRadiativeDecayChannelWithSpin.hh new file mode 100644 index 0000000000..d31fe186f5 --- /dev/null +++ b/source/particles/management/include/G4MuonRadiativeDecayChannelWithSpin.hh @@ -0,0 +1,152 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// History: +// 25 July 2007 P.Gumplinger +// Samples Radiative Muon Decay +// Reference: +// TRIUMF/TWIST Technote: +// "Radiative muon decay" by P. Depommier and A. Vacheret +// +// ------------------------------------------------------------ +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef G4MuonRadiativeDecayChannelWithSpin_h +#define G4MuonRadiativeDecayChannelWithSpin_h 1 + +#include "globals.hh" +#include "Randomize.hh" +#include "G4ThreeVector.hh" +#include "G4VDecayChannel.hh" + +class G4MuonRadiativeDecayChannelWithSpin : public G4VDecayChannel +{ + // Class Decription + // This class describes radiative muon decay kinemtics, but + // gives incorrect energy spectrum for neutrinos + + public: // With Description + + //Constructors + G4MuonRadiativeDecayChannelWithSpin(const G4String& theParentName, + G4double theBR); + // Destructor + virtual ~G4MuonRadiativeDecayChannelWithSpin(); + + public: // With Description + + virtual G4DecayProducts *DecayIt(G4double); + + void SetPolarization(G4ThreeVector); + const G4ThreeVector& GetPolarization() const; + + private: + + G4ThreeVector parent_polarization; + + G4double fron(G4double Pmu, G4double x, G4double y, + G4double cthetaE, G4double cthetaG, G4double cthetaEG); + + // rn3dim generates random vectors, uniformly distributed over the surface + // of a sphere of given radius. + // See http://wwwinfo.cern.ch/asdoc/shortwrupsdir/v131/top.html + + void rn3dim(G4double& x, G4double& y, G4double& z, G4double xlong); + + G4double atan4(G4double x, G4double y); + + G4double EMMU; + G4double EMASS; + +}; + +inline void G4MuonRadiativeDecayChannelWithSpin:: + SetPolarization(G4ThreeVector polar) +{ + parent_polarization = polar; +} + +inline const G4ThreeVector& G4MuonRadiativeDecayChannelWithSpin:: + GetPolarization() const +{ + return parent_polarization; +} + +inline void G4MuonRadiativeDecayChannelWithSpin::rn3dim(G4double& x, + G4double& y, + G4double& z, + G4double xlong) +{ + G4double a = 0.; G4double b = 0.; G4double c = 0.; G4double r = 0.; + + do { + a = G4UniformRand() - 0.5; + b = G4UniformRand() - 0.5; + c = G4UniformRand() - 0.5; + r = a*a + b*b + c*c; + } while (r > 0.25); + + G4double rinv = xlong/(std::sqrt(r)); + x = a * rinv; + y = b * rinv; + z = c * rinv; + + return; +} + +inline G4double G4MuonRadiativeDecayChannelWithSpin::atan4(G4double x, + G4double y) +{ + G4double phi = 0.; + + G4double pi = 4.*std::atan(1.); + + if (x==0. && y>0.){ + phi = 0.5*pi; + } else if (x==0. && y<0.){ + phi = 1.5*pi; + } else if (y==0. && x>0.){ + phi = 0.; + } else if (y==0. && x<0.){ + phi = pi; + } else if (x>0. ){ + phi = std::atan(y/x); + } else if (x<0. ){ + phi = std::atan(y/x) + pi; + } + + return phi; +} + +#endif diff --git a/source/particles/management/include/G4NeutronBetaDecayChannel.hh b/source/particles/management/include/G4NeutronBetaDecayChannel.hh index 29dc05e4a8..571b43d49b 100644 --- a/source/particles/management/include/G4NeutronBetaDecayChannel.hh +++ b/source/particles/management/include/G4NeutronBetaDecayChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronBetaDecayChannel.hh,v 1.2 2006/06/29 19:23:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4NucleiProperties.hh b/source/particles/management/include/G4NucleiProperties.hh index 442fd0b757..4ba00af68b 100644 --- a/source/particles/management/include/G4NucleiProperties.hh +++ b/source/particles/management/include/G4NucleiProperties.hh @@ -25,7 +25,7 @@ // // // $Id: G4NucleiProperties.hh,v 1.14 2006/06/29 19:23:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4NucleiPropertiesTable.hh b/source/particles/management/include/G4NucleiPropertiesTable.hh index bfab12e0e1..2267f796bc 100644 --- a/source/particles/management/include/G4NucleiPropertiesTable.hh +++ b/source/particles/management/include/G4NucleiPropertiesTable.hh @@ -25,7 +25,7 @@ // // // $Id: G4NucleiPropertiesTable.hh,v 1.13 2006/06/29 19:23:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1997 diff --git a/source/particles/management/include/G4NucleiPropertiesTheoreticalTable.hh b/source/particles/management/include/G4NucleiPropertiesTheoreticalTable.hh index 576e0c1cd0..55bf07d49a 100644 --- a/source/particles/management/include/G4NucleiPropertiesTheoreticalTable.hh +++ b/source/particles/management/include/G4NucleiPropertiesTheoreticalTable.hh @@ -25,7 +25,7 @@ // // // $Id: G4NucleiPropertiesTheoreticalTable.hh,v 1.7 2006/06/29 19:23:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4PDGCodeChecker.hh b/source/particles/management/include/G4PDGCodeChecker.hh index 7f7643e964..870eb490d1 100644 --- a/source/particles/management/include/G4PDGCodeChecker.hh +++ b/source/particles/management/include/G4PDGCodeChecker.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PDGCodeChecker.hh,v 1.8 2007/05/30 08:30:13 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PDGCodeChecker.hh,v 1.9 2007/09/14 07:04:09 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -79,6 +79,7 @@ class G4PDGCodeChecker G4int CheckForDiQuarks(); G4int CheckForMesons(); G4int CheckForBaryons(); + G4int CheckForNuclei(); private: diff --git a/source/particles/management/include/G4ParticleDefinition.hh b/source/particles/management/include/G4ParticleDefinition.hh index a78236cf4e..ae6fe0b0c5 100644 --- a/source/particles/management/include/G4ParticleDefinition.hh +++ b/source/particles/management/include/G4ParticleDefinition.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticleDefinition.hh,v 1.31 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticleDefinition.icc b/source/particles/management/include/G4ParticleDefinition.icc index ef7a5fceea..110bac1540 100644 --- a/source/particles/management/include/G4ParticleDefinition.icc +++ b/source/particles/management/include/G4ParticleDefinition.icc @@ -25,7 +25,7 @@ // // // $Id: G4ParticleDefinition.icc,v 1.12 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // inline diff --git a/source/particles/management/include/G4ParticleMessenger.hh b/source/particles/management/include/G4ParticleMessenger.hh index 3166ebe162..71439ee207 100644 --- a/source/particles/management/include/G4ParticleMessenger.hh +++ b/source/particles/management/include/G4ParticleMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticleMessenger.hh,v 1.7 2006/06/29 19:24:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/include/G4ParticleMomentum.hh b/source/particles/management/include/G4ParticleMomentum.hh index f720b8448c..8aef8cb555 100644 --- a/source/particles/management/include/G4ParticleMomentum.hh +++ b/source/particles/management/include/G4ParticleMomentum.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticleMomentum.hh,v 1.6 2006/06/29 19:24:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticlePropertyData.hh b/source/particles/management/include/G4ParticlePropertyData.hh index 8137ba9766..c8037db15b 100644 --- a/source/particles/management/include/G4ParticlePropertyData.hh +++ b/source/particles/management/include/G4ParticlePropertyData.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticlePropertyData.hh,v 1.3 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticlePropertyMessenger.hh b/source/particles/management/include/G4ParticlePropertyMessenger.hh index efe04a70a4..0589dd1639 100644 --- a/source/particles/management/include/G4ParticlePropertyMessenger.hh +++ b/source/particles/management/include/G4ParticlePropertyMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticlePropertyMessenger.hh,v 1.7 2006/06/29 19:24:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/include/G4ParticlePropertyTable.hh b/source/particles/management/include/G4ParticlePropertyTable.hh index 82911d1614..9e528fa30b 100644 --- a/source/particles/management/include/G4ParticlePropertyTable.hh +++ b/source/particles/management/include/G4ParticlePropertyTable.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ParticlePropertyTable.hh,v 1.4 2006/06/29 19:24:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticleTable.hh b/source/particles/management/include/G4ParticleTable.hh index 2c99b03d91..2af554bd30 100644 --- a/source/particles/management/include/G4ParticleTable.hh +++ b/source/particles/management/include/G4ParticleTable.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ParticleTable.hh,v 1.18 2006/06/29 19:24:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ParticleTable.hh,v 1.19 2007/09/14 07:04:09 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -120,12 +120,20 @@ class G4ParticleTable G4ParticleDefinition* FindIon( G4int atomicNumber, G4int atomicMass, G4double excitationEnergy ); + G4ParticleDefinition* FindIon( G4int atomicNumber, + G4int atomicMass, + G4int numberOfLambda, + G4double excitationEnergy ); // return the pointer to an ion (returns 0 if the ion does not exist) // the ion has excitation energy nearest to given excitationEnergy (0: ground state) G4ParticleDefinition* GetIon( G4int atomicNumber, G4int atomicMass, G4double excitationEnergy); + G4ParticleDefinition* GetIon( G4int atomicNumber, + G4int atomicMass, + G4int numberOfLambda, + G4double excitationEnergy); // return the pointer to an ion ( create ion if the ion does not exist) // It has excitation energy nearest to given excitationEnergy (0: ground state) @@ -166,7 +174,7 @@ class G4ParticleTable public: //With Description - const G4IonTable* GetIonTable(); + G4IonTable* GetIonTable(); // return the pointer to G4IonTable object const G4ShortLivedTable* GetShortLivedTable(); diff --git a/source/particles/management/include/G4ParticleTable.icc b/source/particles/management/include/G4ParticleTable.icc index 73a838e992..0c45364bb9 100644 --- a/source/particles/management/include/G4ParticleTable.icc +++ b/source/particles/management/include/G4ParticleTable.icc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ParticleTable.icc,v 1.10 2006/06/29 19:24:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ParticleTable.icc,v 1.11 2007/09/14 07:04:09 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -39,7 +39,7 @@ inline } inline - const G4IonTable* G4ParticleTable::GetIonTable() + G4IonTable* G4ParticleTable::GetIonTable() { return fIonTable; } diff --git a/source/particles/management/include/G4ParticleTableIterator.hh b/source/particles/management/include/G4ParticleTableIterator.hh index 74c794d106..6b22978c03 100644 --- a/source/particles/management/include/G4ParticleTableIterator.hh +++ b/source/particles/management/include/G4ParticleTableIterator.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticleTableIterator.hh,v 1.7 2006/06/29 19:24:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticleWithCuts.hh b/source/particles/management/include/G4ParticleWithCuts.hh index cc67232deb..ea7830ca04 100644 --- a/source/particles/management/include/G4ParticleWithCuts.hh +++ b/source/particles/management/include/G4ParticleWithCuts.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticleWithCuts.hh,v 1.19 2006/06/29 19:24:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------- diff --git a/source/particles/management/include/G4PhaseSpaceDecayChannel.hh b/source/particles/management/include/G4PhaseSpaceDecayChannel.hh index 067b620545..b3dd489003 100644 --- a/source/particles/management/include/G4PhaseSpaceDecayChannel.hh +++ b/source/particles/management/include/G4PhaseSpaceDecayChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhaseSpaceDecayChannel.hh,v 1.6 2006/06/29 19:24:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4PionRadiativeDecayChannel.hh b/source/particles/management/include/G4PionRadiativeDecayChannel.hh new file mode 100644 index 0000000000..252f46116f --- /dev/null +++ b/source/particles/management/include/G4PionRadiativeDecayChannel.hh @@ -0,0 +1,99 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// History: +// 30 July 2007 P.Gumplinger +// Samples Radiative Pion Decay +// Reference: +// TRIUMF/PIENU Technote: +// "Inclusion of pi->enug in the Monte Carlo" +// by M. Blecher +// +// ------------------------------------------------------------ +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef G4PionRadiativeDecayChannel_h +#define G4PionRadiativeDecayChannel_h 1 + +#include "globals.hh" +#include "Randomize.hh" +#include "G4ThreeVector.hh" +#include "G4VDecayChannel.hh" + +class G4PionRadiativeDecayChannel : public G4VDecayChannel +{ + // Class Decription + // This class describes radiative pion decay kinemtics, but + // gives incorrect energy spectrum for neutrino + + public: // With Description + + //Constructors + G4PionRadiativeDecayChannel(const G4String& theParentName, + G4double theBR); + // Destructor + virtual ~G4PionRadiativeDecayChannel(); + + public: // With Description + + virtual G4DecayProducts *DecayIt(G4double); + + private: + + G4double beta; + + G4double cib; + G4double csdp; + G4double csdm; + G4double cif; + G4double cig; + + G4double xl, yl, xu, yu, d2wmax; + + G4double D2W(const G4double x, const G4double y); + +}; + +inline G4double G4PionRadiativeDecayChannel::D2W(const G4double x, + const G4double y) +{ + G4double d2w = cib*(1.-y)*(1.+((1.-x)*(1.-x)))/((x*x)*(x+y-1.)) + + csdp*(1.-x)*((x+y-1.)*(x+y-1.)) + + csdm*(1.-x)*((1.-y)*(1.-y)) + + cif*(x-1.)*(1.-y)/x + + cig*(1.-y)*(1.-x+(x*x)/(x+y-1.))/x; + return d2w; +} + +#endif diff --git a/source/particles/management/include/G4PrimaryParticle.hh b/source/particles/management/include/G4PrimaryParticle.hh index c40e9c7be7..a54b33f301 100644 --- a/source/particles/management/include/G4PrimaryParticle.hh +++ b/source/particles/management/include/G4PrimaryParticle.hh @@ -25,7 +25,7 @@ // // // $Id: G4PrimaryParticle.hh,v 1.4 2006/09/28 14:29:43 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/particles/management/include/G4PrimaryVertex.hh b/source/particles/management/include/G4PrimaryVertex.hh index 7ae6330e56..3ce5704e76 100644 --- a/source/particles/management/include/G4PrimaryVertex.hh +++ b/source/particles/management/include/G4PrimaryVertex.hh @@ -25,7 +25,7 @@ // // // $Id: G4PrimaryVertex.hh,v 1.4 2006/07/20 15:14:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/particles/management/include/G4ShortLivedTable.hh b/source/particles/management/include/G4ShortLivedTable.hh index 0d727167b3..97e6121328 100644 --- a/source/particles/management/include/G4ShortLivedTable.hh +++ b/source/particles/management/include/G4ShortLivedTable.hh @@ -25,7 +25,7 @@ // // // $Id: G4ShortLivedTable.hh,v 1.12 2006/06/29 19:24:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4TauLeptonicDecayChannel.hh b/source/particles/management/include/G4TauLeptonicDecayChannel.hh index 9dd2e41058..a016acfa0d 100644 --- a/source/particles/management/include/G4TauLeptonicDecayChannel.hh +++ b/source/particles/management/include/G4TauLeptonicDecayChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4TauLeptonicDecayChannel.hh,v 1.2 2006/06/29 19:24:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4VDecayChannel.hh b/source/particles/management/include/G4VDecayChannel.hh index 7a99a37a23..25149cb242 100644 --- a/source/particles/management/include/G4VDecayChannel.hh +++ b/source/particles/management/include/G4VDecayChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4VDecayChannel.hh,v 1.12 2006/06/29 19:24:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4VIsotopeTable.hh b/source/particles/management/include/G4VIsotopeTable.hh index ac206549a0..b407bf1582 100644 --- a/source/particles/management/include/G4VIsotopeTable.hh +++ b/source/particles/management/include/G4VIsotopeTable.hh @@ -25,7 +25,7 @@ // // // $Id: G4VIsotopeTable.hh,v 1.6 2006/06/29 19:24:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4VUserPrimaryParticleInformation.hh b/source/particles/management/include/G4VUserPrimaryParticleInformation.hh index fd95e8b07d..5e8fc24893 100644 --- a/source/particles/management/include/G4VUserPrimaryParticleInformation.hh +++ b/source/particles/management/include/G4VUserPrimaryParticleInformation.hh @@ -25,7 +25,7 @@ // // // $Id: G4VUserPrimaryParticleInformation.hh,v 1.2 2006/06/29 19:24:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/include/G4VUserPrimaryVertexInformation.hh b/source/particles/management/include/G4VUserPrimaryVertexInformation.hh index 46a8b41ca7..cdf350f3a8 100644 --- a/source/particles/management/include/G4VUserPrimaryVertexInformation.hh +++ b/source/particles/management/include/G4VUserPrimaryVertexInformation.hh @@ -25,7 +25,7 @@ // // // $Id: G4VUserPrimaryVertexInformation.hh,v 1.2 2006/06/29 19:24:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/src/G4DalitzDecayChannel.cc b/source/particles/management/src/G4DalitzDecayChannel.cc index e445e3b81a..c8705f18a8 100644 --- a/source/particles/management/src/G4DalitzDecayChannel.cc +++ b/source/particles/management/src/G4DalitzDecayChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4DalitzDecayChannel.cc,v 1.8 2006/06/29 19:24:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4DecayProducts.cc b/source/particles/management/src/G4DecayProducts.cc index c2899c5a5c..658d7cf930 100644 --- a/source/particles/management/src/G4DecayProducts.cc +++ b/source/particles/management/src/G4DecayProducts.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4DecayProducts.cc,v 1.15 2007/05/07 10:04:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4DecayProducts.cc,v 1.16 2007/10/06 06:49:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -281,8 +281,14 @@ G4bool G4DecayProducts::IsChecked() const // check energy/momentum conservation if ( (std::abs(total_energy) >1.0e-6) || (total_momentum.mag() >1.0e-6 ) ){ #ifdef G4VERBOSE - G4cout << " Energy/Momentum is not conserved "; - G4cout << total_energy << " " << total_momentum << G4endl; + G4cout << " Energy/Momentum is not conserved "<< G4endl; + G4cout << " difference between parent energy and sum of dughters' energy : " + << total_energy /MeV << "[MeV] " << G4endl; + G4cout << " difference between parent momentum and sum of dughters' momentum : " + << " x:" << total_momentum.getX()/MeV + << " y:" << total_momentum.getY()/MeV + << " z:" << total_momentum.getZ()/MeV + << G4endl; #endif returnValue = false; } diff --git a/source/particles/management/src/G4DecayTable.cc b/source/particles/management/src/G4DecayTable.cc index 8897a4c495..a1f77368fd 100644 --- a/source/particles/management/src/G4DecayTable.cc +++ b/source/particles/management/src/G4DecayTable.cc @@ -25,7 +25,7 @@ // // // $Id: G4DecayTable.cc,v 1.8 2006/06/29 19:25:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4DecayTableMessenger.cc b/source/particles/management/src/G4DecayTableMessenger.cc index ba3d32cca5..cca60f7bfd 100644 --- a/source/particles/management/src/G4DecayTableMessenger.cc +++ b/source/particles/management/src/G4DecayTableMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4DecayTableMessenger.cc,v 1.6 2006/06/29 19:25:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/src/G4DynamicParticle.cc b/source/particles/management/src/G4DynamicParticle.cc index 2a6295ce3a..50026e2a0f 100644 --- a/source/particles/management/src/G4DynamicParticle.cc +++ b/source/particles/management/src/G4DynamicParticle.cc @@ -25,7 +25,7 @@ // // // $Id: G4DynamicParticle.cc,v 1.25 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/management/src/G4ElectronOccupancy.cc b/source/particles/management/src/G4ElectronOccupancy.cc index 4ef55469f7..9f4094c0ff 100644 --- a/source/particles/management/src/G4ElectronOccupancy.cc +++ b/source/particles/management/src/G4ElectronOccupancy.cc @@ -25,7 +25,7 @@ // // // $Id: G4ElectronOccupancy.cc,v 1.9 2006/06/29 19:25:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/src/G4HyperNucleiProperties.cc b/source/particles/management/src/G4HyperNucleiProperties.cc new file mode 100644 index 0000000000..661484650d --- /dev/null +++ b/source/particles/management/src/G4HyperNucleiProperties.cc @@ -0,0 +1,122 @@ +// +// ******************************************************************** +// * 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: G4HyperNucleiProperties.cc,v 1.3 2007/12/10 16:30:47 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// ------------------------------------------------------------ +// Hyper Nuclei properties based on CHIPS model (Mikhail KOSOV) +// Migrate into particles category by H.Kurashige (Sep. 2007) +// +#include "G4HyperNucleiProperties.hh" +#include "G4NucleiProperties.hh" +#include "G4ParticleTable.hh" + + +G4double G4HyperNucleiProperties::GetNuclearMass(G4int A, G4int Z, G4int L) +{ + if (L==0) return G4NucleiProperties::GetNuclearMass(A, Z); + + G4ParticleTable* pTable = G4ParticleTable::GetParticleTable(); + if (A < 2 || Z < 0 || Z > A-L || L>A ) { +#ifdef G4VERBOSE + if (pTable->GetVerboseLevel()>0) { + G4cout << "G4HyperNucleiProperties::GetNuclearMass: " + << " Wrong values for A = " << A + << " Z = " << Z + << " L = " << L + << G4endl; + } +#endif + return 0.0; + } else if( A==2 ) { +#ifdef G4VERBOSE + if (pTable->GetVerboseLevel()>0) { + G4cout << "G4HyperNucleiProperties::GetNuclearMass: " + << " No boud state for A = " << A + << " Z = " << Z + << " L = " << L + << G4endl; + } +#endif + return 0.0; + } + + + G4ParticleDefinition* lambda = pTable->FindParticle("lambda"); + if (lambda ==0) { +#ifdef G4VERBOSE + if (pTable->GetVerboseLevel()>0) { + G4cout << "G4HyperNucleiProperties::GetNuclearMass: " + << " Lambda is not defined " << G4endl; + } +#endif + return 0.0; + } + const G4double mL= lambda->GetPDGMass(); // mLambda + + static const G4double b7=25.*MeV; + static const G4double b8=10.5; // Slope + static const G4double a2=0.13*MeV; // BindingEnergy for d+Lambda(MeV) + static const G4double a3=2.2*MeV; // BindingEnergy for (t/He3)+Lamb(MeV) + static const G4double eps =0.0001*MeV; // security value (MeV) + + G4double mass = G4NucleiProperties::GetNuclearMass(A-L, Z); + // A non-"strange" nucleus + G4double bs=0.; + if (A-L ==2) bs=a2; // for nnL,npL,ppL + else if(A-L ==3) bs=a3; // for 3nL,2npL,n2pL,3pL + else if(A-L >3) bs=b7*std::exp(-b8/(A-L+1.)); + mass += L*(mL-bs) + eps; + + return mass; +} + + +G4double G4HyperNucleiProperties::GetAtomicMass(G4int A, G4int Z, G4int L) +{ + if (L==0) return G4NucleiProperties::GetAtomicMass(A,Z); + + if (A < 1 || Z < 0 || Z > A-L || L > A || L <0 ) { +#ifdef G4VERBOSE + if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) { + G4cout << "G4HyperNucleiProperties::GetAtomicMass: " + << " Wrong values for A = " << A + << " Z = " << Z + << " L = " << L << G4endl; + } +#endif + return 0.0; + + } else { + G4double nuclearMass = GetNuclearMass(A, Z, L); + return nuclearMass + Z*electron_mass_c2 + - 1.433e-5*MeV*std::pow(G4double(Z),2.39); + } +} + diff --git a/source/particles/management/src/G4IonTable.cc b/source/particles/management/src/G4IonTable.cc index 26a309f986..1d0b2fc342 100644 --- a/source/particles/management/src/G4IonTable.cc +++ b/source/particles/management/src/G4IonTable.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4IonTable.cc,v 1.46 2007/05/03 14:02:09 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4IonTable.cc,v 1.48 2007/11/14 02:23:03 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -51,6 +51,7 @@ #include "G4Ions.hh" #include "G4UImanager.hh" #include "G4NucleiProperties.hh" +#include "G4HyperNucleiProperties.hh" #include "G4IsotopeProperty.hh" #include "G4VIsotopeTable.hh" @@ -97,7 +98,8 @@ G4IonTable::~G4IonTable() //////////////////// // -- CreateIon method ------ //////////////////// -G4ParticleDefinition* G4IonTable::CreateIon(G4int Z, G4int A, G4double E, G4int J) +G4ParticleDefinition* G4IonTable::CreateIon(G4int Z, G4int A, + G4double E, G4int J) { G4ParticleDefinition* ion=0; @@ -176,6 +178,80 @@ G4ParticleDefinition* G4IonTable::CreateIon(G4int Z, G4int A, G4double E, G4int return ion; } + +//////////////////// +G4ParticleDefinition* G4IonTable::CreateIon(G4int Z, G4int A, G4int L, + G4double E, G4int J) +{ + if (L==0) return CreateIon(A,Z,E,J); + + // create hyper nucleus + G4ParticleDefinition* ion=0; + + // check whether the cuurent state is not "PreInit" + // to make sure that GenericIon has processes + G4ApplicationState currentState = G4StateManager::GetStateManager()->GetCurrentState(); + if (currentState == G4State_PreInit){ +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) { + G4cout << "G4IonTable::CreateIon() : can not create ion of "; + G4cout << " Z =" << Z << " A = " << A << " L = " <0) { + G4cout << "G4IonTable::CreateIon() : can not create ions " << G4endl; + G4cout << " Z =" << Z << " A = " << A << " L = " << L << G4endl; + } +#endif + return 0; + } + + G4double life = -1.0; + G4DecayTable* decayTable =0; + G4bool stable = true; + G4double mu = 0.0; + G4double mass = GetNucleusMass(Z, A, L)+ E; + G4double charge = G4double(Z)*eplus; + + G4int encoding = GetNucleusEncoding(Z,A,L,E,J); + + // create an ion + // spin, parity, isospin values are fixed + // + ion = new G4Ions( name, mass, 0.0*MeV, charge, + J, +1, 0, + 0, 0, 0, + "nucleus", 0, A, encoding, + stable, life, decayTable, false, + "generic", 0, + E ); + ion->SetPDGMagneticMoment(mu); + + //No Anti particle registered + ion->SetAntiPDGEncoding(0); + +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) { + G4cout << "G4IonTable::CreateIon() : create ion of " << name << G4endl; + } +#endif + + // Add process manager to the ion + AddProcessManager(name); + + return ion; +} + //////////////////// // -- GetIon methods ------ //////////////////// @@ -193,9 +269,9 @@ G4ParticleDefinition* G4IonTable::GetIon(G4int Z, G4int A, G4int J) //////////////////// G4ParticleDefinition* G4IonTable::GetIon(G4int encoding) { - G4int Z, A, J; + G4int Z, A, L, J; G4double E; - if (!GetNucleusByEncoding(encoding,Z,A,E,J) ){ + if (!GetNucleusByEncoding(encoding,Z,A,L,E,J) ){ #ifdef G4VERBOSE if (GetVerboseLevel()>0) { G4cout << "G4IonTable::GetIon() : illegal encoding" << G4endl; @@ -207,13 +283,13 @@ G4ParticleDefinition* G4IonTable::GetIon(G4int encoding) return 0; } // Only ground state is supported - return GetIon( Z, A, 0.0, J); + return GetIon( Z, A, L, 0.0, J); } //////////////////// G4ParticleDefinition* G4IonTable::GetIon(G4int Z, G4int A, G4double E, G4int J) { - if ( (A<1) || (Z<=0) || (J<0) || (E<0.0) ) { + if ( (A<1) || (Z<=0) || (J<0) || (E<0.0) || (A>999) ) { #ifdef G4VERBOSE if (GetVerboseLevel()>0) { G4cout << "G4IonTable::GetIon() : illegal atomic number/mass" << G4endl; @@ -234,12 +310,48 @@ G4ParticleDefinition* G4IonTable::GetIon(G4int Z, G4int A, G4double E, G4int J) return ion; } +//////////////////// +G4ParticleDefinition* G4IonTable::GetIon(G4int Z, G4int A, G4int L, G4double E, G4int J) +{ + if (L==0) return GetIon(Z,A,E,J); + + if (A < 2 || Z < 0 || Z > A-L || L>A || A>999 ) { +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cout << "G4IonTable::GetIon() : illegal atomic number/mass" << G4endl; + G4cout << " Z =" << Z << " A = " << A << " L = " << L + <<" E = " << E/keV << G4endl; + } +#endif + return 0; + } else if( A==2 ) { +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cout << "G4IonTable::GetIon() : No boud state for " << G4endl; + G4cout << " Z =" << Z << " A = " << A << " L = " << L + << " E = " << E/keV << G4endl; + } +#endif + return 0; + } + + // Search ions with A, Z + G4ParticleDefinition* ion = FindIon(Z,A,L,E,J); + + // create ion + if (ion == 0) { + ion = CreateIon(Z, A, L, E, J); + } + + return ion; +} + //////////////////// G4ParticleDefinition* G4IonTable::FindIon(G4int Z, G4int A, G4double E, G4int J) { const G4double EnergyTorelance = 0.1 * keV; - if ( (A<1) || (Z<=0) || (J<0) || (E<0.0)) { + if ( (A<1) || (Z<=0) || (J<0) || (E<0.0) || (A>999) ) { #ifdef G4VERBOSE if (GetVerboseLevel()>0) { G4cout << "G4IonTable::FindIon() : illegal atomic number/mass or excitation level " << G4endl; @@ -251,7 +363,7 @@ G4ParticleDefinition* G4IonTable::FindIon(G4int Z, G4int A, G4double E, G4int J) return 0; } // Search ions with A, Z ,E - // !! J is moitted now !! + // !! J is omitted now !! G4ParticleDefinition* ion=0; G4bool isFound = false; @@ -282,6 +394,62 @@ G4ParticleDefinition* G4IonTable::FindIon(G4int Z, G4int A, G4double E, G4int J) } } + +//////////////////// +G4ParticleDefinition* G4IonTable::FindIon(G4int Z, G4int A, G4int L, G4double E, G4int J) +{ + if (L==0) return FindIon(Z,A,E,J); + + const G4double EnergyTorelance = 0.1 * keV; + + if (A < 2 || Z < 0 || Z > A-L || L>A || A>999 ) { +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cout << "G4IonTable::FindIon() : illegal atomic number/mass or excitation level " << G4endl; + G4cout << " Z =" << Z << " A = " << A << " L = " << L + <<" E = " << E/keV << G4endl; + } +#endif + G4Exception( "G4IonTable::FindIon()","Illegal operation", + JustWarning, "illegal atomic number/mass"); + return 0; + } + // Search ions with A, Z ,E + // !! J is omitted now !! + G4ParticleDefinition* ion=0; + G4bool isFound = false; + + // -- loop over all particles in Ion table + G4IonList::iterator idx; + for (idx = fIonList->begin(); idx!= fIonList->end(); ++idx) { + ion = *idx; + + // Z = Atomic Number + G4int anAtomicNumber = ion->GetAtomicNumber(); + // A = baryon number + G4int anAtomicMass = ion->GetAtomicMass(); + // L = lambda number + G4int lambdaNumber = ion->GetQuarkContent(3); + // excitation level + G4double anExcitaionEnergy = ((const G4Ions*)(ion))->GetExcitationEnergy(); + + if ( (A == anAtomicMass) && + (Z == anAtomicNumber ) && + (L == lambdaNumber ) && + ( std::abs(E - anExcitaionEnergy ) < EnergyTorelance ) ) { + isFound = true; + break; + } + } + + if ( isFound ){ + return ion; + } else { + return 0; + } +} + + ///////////////// G4int G4IonTable::GetNucleusEncoding(G4int Z, G4int A, G4double E, G4int ) { @@ -302,6 +470,29 @@ G4int G4IonTable::GetNucleusEncoding(G4int Z, G4int A, G4double E, G4int ) return encoding; } +///////////////// +G4int G4IonTable::GetNucleusEncoding(G4int Z, G4int A, G4int L, + G4double E, G4int ) +{ + // get PDG code for Hyper-Nucleus Ions + // Nuclear codes are given as 10-digit numbers +-10LZZZAAAI. + //For a nucleus consisting of np protons and nn neutrons + // A = np + nn +nlambda and Z = np. + // L = nlambda + // I gives the isomer level, with I = 0 corresponding + // to the ground state and I >0 to excitations + // + //!!! I = 1 is assigned fo all excitation states in Geant4 + + G4int encoding = 1000000000; + encoding += L* 10000000; + encoding += Z * 10000; + encoding += A *10; + if (E>0.0) encoding += 1; + + return encoding; +} + /////////////// G4bool G4IonTable::GetNucleusByEncoding(G4int encoding, G4int &Z, G4int &A, @@ -326,10 +517,42 @@ G4bool G4IonTable::GetNucleusByEncoding(G4int encoding, return true; } -///////////////// -G4String G4IonTable::GetIonName(G4int Z, G4int A, G4double E) const +/////////////// +G4bool G4IonTable::GetNucleusByEncoding(G4int encoding, + G4int &Z, G4int &A, + G4int &L, + G4double &E, G4int &J) { - G4String name; + if (encoding <= 0) { + // anti particle + return false; + } + if (encoding % 10 != 0) { + //!!!not supported for excitation states !!! + return false; + } + if (encoding < 1000000000) { + // anti particle + return false; + } + + encoding -= 1000000000; + L = encoding/10000000; + encoding -= 10000000*L; + Z = encoding/10000; + encoding -= 10000*Z; + A = encoding/10; + + E=0.0; + J=0; + + return true; +} +///////////////// +const G4String& G4IonTable::GetIonName(G4int Z, G4int A, G4double E) const +{ + static G4String name; + name =""; if ( (0< Z) && (Z <=numberOfElements) ) { name = elementName[Z-1]; } else if (Z > numberOfElements) { @@ -348,6 +571,18 @@ G4String G4IonTable::GetIonName(G4int Z, G4int A, G4double E) const return name; } +///////////////// +const G4String& G4IonTable::GetIonName(G4int Z, G4int A, G4int L, G4double E) const +{ + if (L==0) return GetIonName(Z, A, E); + static G4String name; + name =""; + for (int i =0; i0) { G4cout << "G4IonTable::GetNucleusMass() : illegal atomic number/mass " << G4endl; @@ -418,27 +653,28 @@ G4double G4IonTable::GetNucleusMass(G4int Z, G4int A) const return -1.0; } - // calculate nucleus mass - G4ParticleDefinition* ion=GetLightIon(Z, A); G4double mass; - - if (ion!=0) { - mass = ion->GetPDGMass(); + if (L == 0) { + // calculate nucleus mass + G4ParticleDefinition* ion=GetLightIon(Z, A); + + if (ion!=0) { + mass = ion->GetPDGMass(); + } else { + // use G4NucleiProperties::GetNuclearMass + mass = G4NucleiProperties::GetNuclearMass(A, Z); + } } else { - - // use G4NucleiProperties::GetNuclearMass - mass = G4NucleiProperties::GetNuclearMass(A, Z); - + mass = G4HyperNucleiProperties::GetNuclearMass(A, Z, L); } - return mass; } ////////////////// -G4double G4IonTable::GetIonMass(G4int Z, G4int A) const +G4double G4IonTable::GetIonMass(G4int Z, G4int A, G4int L) const { - return GetNucleusMass(Z,A); + return GetNucleusMass(Z,A,L); } diff --git a/source/particles/management/src/G4Ions.cc b/source/particles/management/src/G4Ions.cc index 6e51c9651b..2cdd191df1 100644 --- a/source/particles/management/src/G4Ions.cc +++ b/source/particles/management/src/G4Ions.cc @@ -25,7 +25,7 @@ // // // $Id: G4Ions.cc,v 1.12 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/src/G4IsotopeProperty.cc b/source/particles/management/src/G4IsotopeProperty.cc index 6eaaaf21e2..e5dc9315a6 100644 --- a/source/particles/management/src/G4IsotopeProperty.cc +++ b/source/particles/management/src/G4IsotopeProperty.cc @@ -25,7 +25,7 @@ // // // $Id: G4IsotopeProperty.cc,v 1.7 2007/03/16 05:25:08 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/src/G4KL3DecayChannel.cc b/source/particles/management/src/G4KL3DecayChannel.cc index 56bb20810c..0556c5990b 100644 --- a/source/particles/management/src/G4KL3DecayChannel.cc +++ b/source/particles/management/src/G4KL3DecayChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4KL3DecayChannel.cc,v 1.8 2006/06/29 19:25:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4MuonDecayChannel.cc b/source/particles/management/src/G4MuonDecayChannel.cc index fb9501de83..c7b88d18b2 100644 --- a/source/particles/management/src/G4MuonDecayChannel.cc +++ b/source/particles/management/src/G4MuonDecayChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4MuonDecayChannel.cc,v 1.17 2006/06/29 19:25:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4MuonRadiativeDecayChannelWithSpin.cc b/source/particles/management/src/G4MuonRadiativeDecayChannelWithSpin.cc new file mode 100644 index 0000000000..d6b1ffa757 --- /dev/null +++ b/source/particles/management/src/G4MuonRadiativeDecayChannelWithSpin.cc @@ -0,0 +1,502 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// History: +// 01 August 2007 P.Gumplinger +// Reference: TRIUMF TWIST Technotes TN-55: +// Pierre Depommier - "Radiative MuonDecay" +// +// ------------------------------------------------------------ +// +// +// + +#include "G4MuonRadiativeDecayChannelWithSpin.hh" + +#include "Randomize.hh" +#include "G4DecayProducts.hh" +#include "G4LorentzVector.hh" + +G4MuonRadiativeDecayChannelWithSpin:: + G4MuonRadiativeDecayChannelWithSpin(const G4String& theParentName, + G4double theBR) + : G4VDecayChannel("Radiative Muon Decay",1) +{ + // set names for daughter particles + if (theParentName == "mu+") { + SetBR(theBR); + SetParent("mu+"); + SetNumberOfDaughters(4); + SetDaughter(0, "e+"); + SetDaughter(1, "gamma"); + SetDaughter(2, "nu_e"); + SetDaughter(3, "anti_nu_mu"); + } else if (theParentName == "mu-") { + SetBR(theBR); + SetParent("mu-"); + SetNumberOfDaughters(4); + SetDaughter(0, "e-"); + SetDaughter(1, "gamma"); + SetDaughter(2, "anti_nu_e"); + SetDaughter(3, "nu_mu"); + } else { +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cout << "G4RadiativeMuonDecayChannel:: constructor :"; + G4cout << " parent particle is not muon but "; + G4cout << theParentName << G4endl; + } +#endif + } +} + +G4MuonRadiativeDecayChannelWithSpin::~G4MuonRadiativeDecayChannelWithSpin() +{ +} + +G4DecayProducts *G4MuonRadiativeDecayChannelWithSpin::DecayIt(G4double) +{ + +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + G4cout << "G4MuonRadiativeDecayChannelWithSpin::DecayIt "; +#endif + + if (parent == 0) FillParent(); + if (daughters == 0) FillDaughters(); + + // parent mass + G4double parentmass = parent->GetPDGMass(); + + EMMU = parentmass; + + //daughters'mass + G4double daughtermass[4]; + G4double sumofdaughtermass = 0.0; + for (G4int index=0; index<4; index++){ + daughtermass[index] = daughters[index]->GetPDGMass(); + sumofdaughtermass += daughtermass[index]; + } + + EMASS = daughtermass[0]; + + //create parent G4DynamicParticle at rest + G4ThreeVector dummy; + G4DynamicParticle * parentparticle = + new G4DynamicParticle( parent, dummy, 0.0); + //create G4Decayproducts + G4DecayProducts *products = new G4DecayProducts(*parentparticle); + delete parentparticle; + + G4int i = 0; + + G4double eps = EMASS/EMMU; + + G4double som0, Qsqr, x, y, xx, yy, zz; + G4double cthetaE, cthetaG, cthetaGE, phiE, phiG; + + do { + +// leap1: + + i++; + +// leap2: + + do { +// +//-------------------------------------------------------------------------- +// Build two vectors of random length and random direction, for the +// positron and the photon. +// x/y is the length of the vector, xx, yy and zz the components, +// phi is the azimutal angle, theta the polar angle. +//-------------------------------------------------------------------------- +// +// For the positron +// + x = G4UniformRand(); + + rn3dim(xx,yy,zz,x); + + if(std::abs((xx*xx)+(yy*yy)+(zz*zz)-(x*x))>0.001){ + G4cout << "Norm of x not correct" << G4endl; + } + + phiE = atan4(xx,yy); + cthetaE = zz/x; + G4double sthetaE = std::sqrt((xx*xx)+(yy*yy))/x; +// +// What you get: +// +// x = positron energy +// phiE = azimutal angle of positron momentum +// cthetaE = cosine of polar angle of positron momentum +// sthetaE = sine of polar angle of positron momentum +// +//// G4cout << " x, xx, yy, zz " << x << " " << xx << " " +//// << yy << " " << zz << G4endl; +//// G4cout << " phiE, cthetaE, sthetaE " << phiE << " " +//// << cthetaE << " " +//// << sthetaE << " " << G4endl; +// +//----------------------------------------------------------------------- +// +// For the photon +// + y = G4UniformRand(); + + rn3dim(xx,yy,zz,y); + + if(std::abs((xx*xx)+(yy*yy)+(zz*zz)-(y*y))>0.001){ + G4cout << " Norm of y not correct " << G4endl; + } + + phiG = atan4(xx,yy); + cthetaG = zz/y; + G4double sthetaG = std::sqrt((xx*xx)+(yy*yy))/y; +// +// What you get: +// +// y = photon energy +// phiG = azimutal angle of photon momentum +// cthetaG = cosine of polar angle of photon momentum +// sthetaG = sine of polar angle of photon momentum +// +//// G4cout << " y, xx, yy, zz " << y << " " << xx << " " +//// << yy << " " << zz << G4endl; +//// G4cout << " phiG, cthetaG, sthetaG " << phiG << " " +//// << cthetaG << " " +//// << sthetaG << " " << G4endl; +// +//----------------------------------------------------------------------- +// +// Maybe certain restrictions on the kinematical variables: +// +//// if (cthetaE > 0.01)goto leap2; +//// if (cthetaG > 0.01)goto leap2; +//// if (std::abs(x-0.5) > 0.5 )goto leap2; +//// if (std::abs(y-0.5) > 0.5 )goto leap2; +// +//----------------------------------------------------------------------- +// +// Calculate the angle between positron and photon (cosine) +// + cthetaGE = cthetaE*cthetaG+sthetaE*sthetaG*std::cos(phiE-phiG); +// +//// G4cout << x << " " << cthetaE << " " << sthetaE << " " +//// << y << " " << cthetaG << " " << sthetaG << " " +//// << cthetaGE +// +//----------------------------------------------------------------------- +// + G4double term0 = eps*eps; + G4double term1 = x*((1.0-eps)*(1.0-eps))+2.0*eps; + G4double beta = std::sqrt( x*((1.0-eps)*(1.0-eps))* + (x*((1.0-eps)*(1.0-eps))+4.0*eps))/term1; + G4double delta = 1.0-beta*cthetaGE; + + G4double term3 = y*(1.0-(eps*eps)); + G4double term6 = term1*delta*term3; + + Qsqr = (1.0-term1-term3+term0+0.5*term6)/((1.0-eps)*(1.0-eps)); +// +//----------------------------------------------------------------------- +// +// Check the kinematics. +// + } while ( Qsqr<0.0 || Qsqr>1.0 ); +// +//// G4cout << x << " " << y << " " << beta << " " << Qsqr << G4endl; +// +// Do the calculation for -1 muon polarization (i.e. mu+) +// + G4double Pmu = -1.0; + if (GetParentName() == "mu-")Pmu = +1.0; +// +// and for Fronsdal +// +//----------------------------------------------------------------------- +// + som0 = fron(Pmu,x,y,cthetaE,cthetaG,cthetaGE); +// +//// if(som0<0.0){ +//// G4cout << " som0 < 0 in Fronsdal " << som0 +//// << " at event " << i << G4endl; +//// G4cout << Pmu << " " << x << " " << y << " " +//// << cthetaE << " " << cthetaG << " " +//// << cthetaGE << " " << som0 << G4endl; +//// } +// +//----------------------------------------------------------------------- +// +//// G4cout << x << " " << y << " " << som0 << G4endl; +// +//---------------------------------------------------------------------- +// +// Sample the decay rate +// + + } while (G4UniformRand()*250000.0 > som0); + +/// if(i<10000000)goto leap1: +// +//----------------------------------------------------------------------- +// + G4double E = EMMU/2.*(x*((1.-eps)*(1.-eps))+2.*eps); + G4double G = EMMU/2.*y*(1.-eps*eps); +// +//----------------------------------------------------------------------- +// + + if(E < EMASS) E = EMASS; + + // calculate daughter momentum + G4double daughtermomentum[4]; + + daughtermomentum[0] = std::sqrt(E*E - EMASS*EMASS); + + G4double sthetaE = std::sqrt(1.-cthetaE*cthetaE); + G4double cphiE = std::cos(phiE); + G4double sphiE = std::sin(phiE); + + //Coordinates of the decay positron with respect to the muon spin + + G4double px = sthetaE*cphiE; + G4double py = sthetaE*sphiE; + G4double pz = cthetaE; + + G4ThreeVector direction0(px,py,pz); + + direction0.rotateUz(parent_polarization); + + G4DynamicParticle * daughterparticle0 + = new G4DynamicParticle( daughters[0], daughtermomentum[0]*direction0); + + products->PushProducts(daughterparticle0); + + daughtermomentum[1] = G; + + G4double sthetaG = std::sqrt(1.-cthetaG*cthetaG); + G4double cphiG = std::cos(phiG); + G4double sphiG = std::sin(phiG); + + //Coordinates of the decay gamma with respect to the muon spin + + px = sthetaG*cphiG; + py = sthetaG*sphiG; + pz = cthetaG; + + G4ThreeVector direction1(px,py,pz); + + direction1.rotateUz(parent_polarization); + + G4DynamicParticle * daughterparticle1 + = new G4DynamicParticle( daughters[1], daughtermomentum[1]*direction1); + + products->PushProducts(daughterparticle1); + + // daughter 3 ,4 (neutrinos) + // create neutrinos in the C.M frame of two neutrinos + + G4double energy2 = parentmass*(1.0 - (x+y)/2.0); + + G4double vmass = std::sqrt((energy2- + (daughtermomentum[0]+daughtermomentum[1]))* + (energy2+ + (daughtermomentum[0]+daughtermomentum[1]))); + G4double beta = -1.0*(daughtermomentum[0]+daughtermomentum[1])/energy2; + + G4double costhetan = 2.*G4UniformRand()-1.0; + G4double sinthetan = std::sqrt((1.0-costhetan)*(1.0+costhetan)); + G4double phin = twopi*G4UniformRand()*rad; + G4double sinphin = std::sin(phin); + G4double cosphin = std::cos(phin); + + G4ThreeVector direction2(sinthetan*cosphin,sinthetan*sinphin,costhetan); + + G4DynamicParticle * daughterparticle2 + = new G4DynamicParticle( daughters[2], direction2*(vmass/2.)); + G4DynamicParticle * daughterparticle3 + = new G4DynamicParticle( daughters[3], direction2*(-1.0*vmass/2.)); + + // boost to the muon rest frame + G4LorentzVector p4; + p4 = daughterparticle2->Get4Momentum(); + + p4.boost( (direction0.x()+direction1.x())*beta, + (direction0.y()+direction1.y())*beta, + (direction0.z()+direction1.z())*beta); + + daughterparticle2->Set4Momentum(p4); + p4 = daughterparticle3->Get4Momentum(); + + p4.boost( (direction0.x()+direction1.x())*beta, + (direction0.y()+direction1.y())*beta, + (direction0.z()+direction1.z())*beta); + daughterparticle3->Set4Momentum(p4); + + products->PushProducts(daughterparticle2); + products->PushProducts(daughterparticle3); + + daughtermomentum[2] = daughterparticle2->GetTotalMomentum(); + daughtermomentum[3] = daughterparticle3->GetTotalMomentum(); + +// output message +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) { + G4cout << "G4MuonRadiativeDecayChannelWithSpin::DecayIt "; + G4cout << " create decay products in rest frame " <DumpInfo(); + } +#endif + return products; +} + +G4double G4MuonRadiativeDecayChannelWithSpin::fron(G4double Pmu, + G4double x, + G4double y, + G4double cthetaE, + G4double cthetaG, + G4double cthetaGE) +{ + G4double mu = 105.65; + G4double me = 0.511; + G4double rho = 0.75; + G4double del = 0.75; + G4double eps = 0.0; + G4double kap = 0.0; + G4double ksi = 1.0; + + G4double delta = 1-cthetaGE; + +// Calculation of the functions f(x,y) + + G4double f_1s = 12.0*((y*y)*(1.0-y)+x*y*(2.0-3.0*y) + +2.0*(x*x)*(1.0-2.0*y)-2.0*(x*x*x)); + G4double f0s = 6.0*(-x*y*(2.0-3.0*(y*y)) + -2.0*(x*x)*(1.0-y-3.0*(y*y))+2.0*(x*x*x)*(1.0+2.0*y)); + G4double f1s = 3.0*((x*x)*y*(2.0-3.0*y-3.0*(y*y)) + -(x*x*x)*y*(4.0+3.0*y)); + G4double f2s = 1.5*((x*x*x)*(y*y)*(2.0+y)); + + G4double f_1se = 12.0*(x*y*(1.0-x)+(x*x)*(2.0-3.0*y) + -2.0*(x*x*x)); + G4double f0se = 6.0*(-(x*x)*(2.0-y-2.0*(y*y)) + +(x*x*x)*(2.0+3.0*y)); + G4double f1se = -3.0*(x*x*x)*y*(2.0+y); + G4double f2se = 0.0; + + G4double f_1sg = 12.0*((y*y)*(1.0-y)+x*y*(1.0-2.0*y) + -(x*x)*y); + G4double f0sg = 6.0*(-x*(y*y)*(2.0-3.0*y)-(x*x)*y*(1.0-4.0*y) + +(x*x*x)*y); + G4double f1sg = 3.0*((x*x)*(y*y)*(1.0-3.0*y) + -2.0*(x*x*x)*(y*y)); + G4double f2sg = 1.5*(x*x*x)*(y*y*y); + + G4double f_1v = 8.0*((y*y)*(3.0-2.0*y)+6.0*x*y*(1.0-y) + +2.0*(x*x)*(3.0-4.0*y)-4.0*(x*x*x)); + G4double f0v = 8.0*(-x*y*(3.0-y-(y*y))-(x*x)*(3.0-y-4.0*(y*y)) + +2.0*(x*x*x)*(1.0+2.0*y)); + G4double f1v = 2.0*((x*x)*y*(6.0-5.0*y-2.0*(y*y)) + -2.0*(x*x*x)*y*(4.0+3.0*y)); + G4double f2v = 2.0*(x*x*x)*(y*y)*(2.0+y); + + G4double f_1ve = 8.0*(x*y*(1.0-2.0*y) + +2.0*(x*x)*(1.0-3.0*y)-4.0*(x*x*x)); + G4double f0ve = 4.0*(-(x*x)*(2.0-3.0*y-4.0*(y*y)) + +2.0*(x*x*x)*(2.0+3.0*y)); + G4double f1ve = -4.0*(x*x*x)*y*(2.0+y); + G4double f2ve = 0.0; + + G4double f_1vg = 8.0*((y*y)*(1.0-2.0*y)+x*y*(1.0-4.0*y) + -2.0*(x*x)*y); + G4double f0vg = 4.0*(2.0*x*(y*y)*(1.0+y)-(x*x)*y*(1.0-4.0*y) + +2.0*(x*x*x)*y); + G4double f1vg = 2.0*((x*x)*(y*y)*(1.0-2.0*y) + -4.0*(x*x*x)*(y*y)); + G4double f2vg = 2.0*(x*x*x)*(y*y*y); + + G4double f_1t = 8.0*((y*y)*(3.0-y)+3.0*x*y*(2.0-y) + +2.0*(x*x)*(3.0-2.0*y)-2.0*(x*x*x)); + G4double f0t = 4.0*(-x*y*(6.0+(y*y)) + -2.0*(x*x)*(3.0+y-3.0*(y*y))+2.0*(x*x*x)*(1.0+2.0*y)); + G4double f1t = 2.0*((x*x)*y*(6.0-5.0*y+(y*y)) + -(x*x*x)*y*(4.0+3.0*y)); + G4double f2t = (x*x*x)*(y*y)*(2.0+y); + + G4double f_1te = -8.0*(x*y*(1.0+3.0*y)+(x*x)*(2.0+3.0*y) + +2.0*(x*x*x)); + G4double f0te = 4.0*((x*x)*(2.0+3.0*y+4.0*(y*y)) + +(x*x*x)*(2.0+3.0*y)); + G4double f1te = -2.0*(x*x*x)*y*(2.0+y); + G4double f2te = 0.0; + + G4double f_1tg = -8.0*((y*y)*(1.0+y)+x*y+(x*x)*y); + G4double f0tg = 4.0*(x*(y*y)*(2.0-y)+(x*x)*y*(1.0+2.0*y) + +(x*x*x)*y); + G4double f1tg = -2.0*((x*x)*(y*y)*(1.0-y)+2.0*(x*x*x)*y); + G4double f2tg = (x*x*x)*(y*y*y); + + G4double term = delta+2.0*(me*me)/((mu*mu)*(x*x)); + term = 1.0/term; + + G4double ns = term*f_1s+f0s+delta*f1s+(delta*delta)*f2s; + G4double nv = term*f_1v+f0v+delta*f1v+(delta*delta)*f2v; + G4double nt = term*f_1t+f0t+delta*f1t+(delta*delta)*f2t; + + G4double nse = term*f_1se+f0se+delta*f1se+(delta*delta)*f2se; + G4double nve = term*f_1ve+f0ve+delta*f1ve+(delta*delta)*f2ve; + G4double nte = term*f_1te+f0te+delta*f1te+(delta*delta)*f2te; + + G4double nsg = term*f_1sg+f0sg+delta*f1sg+(delta*delta)*f2sg; + G4double nvg = term*f_1vg+f0vg+delta*f1vg+(delta*delta)*f2vg; + G4double ntg = term*f_1tg+f0tg+delta*f1tg+(delta*delta)*f2tg; + + G4double term1 = nv; + G4double term2 = 2.0*ns-nv-nt; + G4double term3 = 2.0*ns-2.0*nv+nt; + + G4double term1e = 1.0/3.0*(1.0-4.0/3.0*del); + G4double term2e = 2.0*nse+5.0*nve-nte; + G4double term3e = 2.0*nse-2.0*nve+nte; + + G4double term1g = 1.0/3.0*(1.0-4.0/3.0*del); + G4double term2g = 2.0*nsg+5.0*nvg-ntg; + G4double term3g = 2.0*nsg-2.0*nvg+ntg; + + G4double som00 = term1+(1.0-4.0/3.0*rho)*term2+eps*term3; + G4double som01 = -Pmu*ksi*(cthetaE*(nve-term1e*term2e+kap*term3e) + +cthetaG*(nvg-term1g*term2g+kap*term3g)); + G4double som0 = som00+som01; + +// G4cout << x << " " << y << " " << som00 << " " +// << som01 << " " << som0 << G4endl; + + return som0; +} diff --git a/source/particles/management/src/G4NeutronBetaDecayChannel.cc b/source/particles/management/src/G4NeutronBetaDecayChannel.cc index 80ae941417..62b7545e61 100644 --- a/source/particles/management/src/G4NeutronBetaDecayChannel.cc +++ b/source/particles/management/src/G4NeutronBetaDecayChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4NeutronBetaDecayChannel.cc,v 1.7 2006/06/29 19:25:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4NucleiProperties.cc b/source/particles/management/src/G4NucleiProperties.cc index b7e5ea1b2a..66076550a8 100644 --- a/source/particles/management/src/G4NucleiProperties.cc +++ b/source/particles/management/src/G4NucleiProperties.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4NucleiProperties.cc,v 1.12 2006/06/29 19:25:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4NucleiProperties.cc,v 1.13 2007/09/14 07:04:09 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -75,33 +75,37 @@ G4double G4NucleiProperties::BindingEnergy(G4double A, G4double Z) G4double G4NucleiProperties::GetNuclearMass(const G4double A, const G4double Z) { - if (A < 1 || Z < 0 || Z > A) { - G4cout << "G4NucleiProperties::GetNuclearMass: Wrong values for A = " << A - << " and Z = " << Z << G4endl; - return 0.0; - } else { - G4ParticleDefinition * nucleus = 0; - if ( (Z<=2) ) { - if ( (Z==1)&&(A==1) ) { - nucleus = G4ParticleTable::GetParticleTable()->FindParticle("proton"); // proton - } else if ( (Z==0)&&(A==1) ) { - nucleus = G4ParticleTable::GetParticleTable()->FindParticle("neutron"); // neutron - } else if ( (Z==1)&&(A==2) ) { - nucleus = G4ParticleTable::GetParticleTable()->FindParticle("deuteron"); // deuteron - } else if ( (Z==1)&&(A==3) ) { - nucleus = G4ParticleTable::GetParticleTable()->FindParticle("triton"); // triton - } else if ( (Z==2)&&(A==4) ) { - nucleus = G4ParticleTable::GetParticleTable()->FindParticle("alpha"); // alpha - } else if ( (Z==2)&&(A==3) ) { - nucleus = G4ParticleTable::GetParticleTable()->FindParticle("He3"); // He3 - } - } - if (nucleus!=0) { - return nucleus->GetPDGMass(); - }else { - return GetAtomicMass(A,Z) - Z*electron_mass_c2 + 1.433e-5*MeV*std::pow(Z,2.39); - } - } + if (A < 1 || Z < 0 || Z > A) { +#ifdef G4VERBOSE + if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) { + G4cout << "G4NucleiProperties::GetNuclearMass: Wrong values for A = " << A + << " and Z = " << Z << G4endl; + } +#endif + return 0.0; + } else { + G4ParticleDefinition * nucleus = 0; + if ( (Z<=2) ) { + if ( (Z==1)&&(A==1) ) { + nucleus = G4ParticleTable::GetParticleTable()->FindParticle("proton"); // proton + } else if ( (Z==0)&&(A==1) ) { + nucleus = G4ParticleTable::GetParticleTable()->FindParticle("neutron"); // neutron + } else if ( (Z==1)&&(A==2) ) { + nucleus = G4ParticleTable::GetParticleTable()->FindParticle("deuteron"); // deuteron + } else if ( (Z==1)&&(A==3) ) { + nucleus = G4ParticleTable::GetParticleTable()->FindParticle("triton"); // triton + } else if ( (Z==2)&&(A==4) ) { + nucleus = G4ParticleTable::GetParticleTable()->FindParticle("alpha"); // alpha + } else if ( (Z==2)&&(A==3) ) { + nucleus = G4ParticleTable::GetParticleTable()->FindParticle("He3"); // He3 + } + } + if (nucleus!=0) { + return nucleus->GetPDGMass(); + }else { + return GetAtomicMass(A,Z) - Z*electron_mass_c2 + 1.433e-5*MeV*std::pow(Z,2.39); + } + } } @@ -211,10 +215,14 @@ G4double G4NucleiProperties::GetNuclearMass(const G4double A, const G4double Z) G4double G4NucleiProperties::GetMassExcess(const G4int A, const G4int Z) { if (A < 1 || Z < 0 || Z > A) { - G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = " << A - << " and Z = " << Z << G4endl; +#ifdef G4VERBOSE + if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) { + G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = " + << A << " and Z = " << Z << G4endl; + } +#endif return 0.0; - + } else { if (G4NucleiPropertiesTable::IsInTable(Z,A)){ @@ -232,8 +240,13 @@ G4double G4NucleiProperties::GetMassExcess(const G4int A, const G4int Z) G4double G4NucleiProperties::GetAtomicMass(const G4double A, const G4double Z) { if (Z < 0 || Z > A) { - G4cout << "G4NucleiProperties::GetAtomicMass: Wrong values for A = " << A - << " and Z = " << Z << G4endl; return 0.0; +#ifdef G4VERBOSE + if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) { + G4cout << "G4NucleiProperties::GetAtomicMass: Wrong values for A = " + << A << " and Z = " << Z << G4endl; + } +#endif + return 0.0; } else if (std::abs(A - G4int(A)) > 1.e-10) { return AtomicMass(A,Z); @@ -254,8 +267,12 @@ G4double G4NucleiProperties::GetAtomicMass(const G4double A, const G4double Z) G4double G4NucleiProperties::GetBindingEnergy(const G4int A, const G4int Z) { if (A < 1 || Z < 0 || Z > A) { - G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = " << A - << " and Z = " << Z << G4endl; +#ifdef G4VERBOSE + if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) { + G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = " + << A << " and Z = " << Z << G4endl; + } +#endif return 0.0; } else { diff --git a/source/particles/management/src/G4NucleiPropertiesTableA.cc b/source/particles/management/src/G4NucleiPropertiesTableA.cc index d3babd21da..8ca6d2d18e 100644 --- a/source/particles/management/src/G4NucleiPropertiesTableA.cc +++ b/source/particles/management/src/G4NucleiPropertiesTableA.cc @@ -25,7 +25,7 @@ // // // $Id: G4NucleiPropertiesTableA.cc,v 1.10 2006/06/29 19:25:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1997 diff --git a/source/particles/management/src/G4NucleiPropertiesTableB.cc b/source/particles/management/src/G4NucleiPropertiesTableB.cc index 614b74e06b..21f98bc98f 100644 --- a/source/particles/management/src/G4NucleiPropertiesTableB.cc +++ b/source/particles/management/src/G4NucleiPropertiesTableB.cc @@ -25,7 +25,7 @@ // // // $Id: G4NucleiPropertiesTableB.cc,v 1.9 2006/06/29 19:25:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/particles/management/src/G4NucleiPropertiesTheoreticalTableA.cc b/source/particles/management/src/G4NucleiPropertiesTheoreticalTableA.cc index cb2b161033..be092e7258 100644 --- a/source/particles/management/src/G4NucleiPropertiesTheoreticalTableA.cc +++ b/source/particles/management/src/G4NucleiPropertiesTheoreticalTableA.cc @@ -25,7 +25,7 @@ // // // $Id: G4NucleiPropertiesTheoreticalTableA.cc,v 1.8 2006/06/29 19:25:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4PDGCodeChecker.cc b/source/particles/management/src/G4PDGCodeChecker.cc index d664c62d81..e15b6dffe0 100644 --- a/source/particles/management/src/G4PDGCodeChecker.cc +++ b/source/particles/management/src/G4PDGCodeChecker.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PDGCodeChecker.cc,v 1.8 2006/06/29 19:25:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PDGCodeChecker.cc,v 1.10 2007/11/14 02:22:08 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- @@ -61,6 +61,11 @@ G4int G4PDGCodeChecker::CheckPDGCode( G4int PDGcode, theAntiQuarkContent[flavor] =0; } + // check code for nuclei + if (theParticleType == "nucleus"){ + return CheckForNuclei(); + } + // get each digit number GetDigits(code); @@ -82,6 +87,7 @@ G4int G4PDGCodeChecker::CheckPDGCode( G4int PDGcode, } else if (theParticleType == "baryon"){ return CheckForBaryons(); + } // No check return code; @@ -95,6 +101,7 @@ G4int G4PDGCodeChecker::CheckForBaryons() if ((quark1==0)||(quark2==0)||(quark3==0)){ #ifdef G4VERBOSE if (verboseLevel>1) { + G4cout << " G4PDGCodeChecker::CheckPDGCode : "; G4cout << " meson has three quark "; G4cout << " PDG code=" << code <1) { + G4cout << " G4PDGCodeChecker::CheckPDGCode : "; G4cout << " illegal code for baryon "; G4cout << " PDG code=" << code < NumberOfQuarkFlavor) { #ifdef G4VERBOSE if (verboseLevel>1) { + G4cout << " G4PDGCodeChecker::CheckPDGCode : "; G4cout << " ??? unknown quark "; G4cout << " PDG code=" << code <1) { + G4cout << " G4PDGCodeChecker::CheckPDGCode : "; G4cout << " meson has only quark and anti-quark pair"; G4cout << " PDG code=" << code <1) { + G4cout << " G4PDGCodeChecker::CheckPDGCode : "; G4cout << " illegal code for meson "; G4cout << " PDG code=" << code < NumberOfQuarkFlavor){ #ifdef G4VERBOSE if (verboseLevel>1) { + G4cout << " G4PDGCodeChecker::CheckPDGCode : "; G4cout << " ??? unknown quark "; G4cout << " PDG code=" << code <NumberOfQuarkFlavor){ #ifdef G4VERBOSE if (verboseLevel>1) { + G4cout << " G4PDGCodeChecker::CheckPDGCode : "; G4cout << " ??? unknown quark "; G4cout << " PDG code=" << code <NumberOfQuarkFlavor ) { #ifdef G4VERBOSE if (verboseLevel>1) { + G4cout << " G4PDGCodeChecker::CheckPDGCode : "; G4cout << " ??? unknown quark "; G4cout << " PDG code=" << code <0.1*eplus) { #ifdef G4VERBOSE if (verboseLevel>1) { + G4cout << " G4PDGCodeChecker::CheckCharge : "; G4cout << " illegal electric charge " << thePDGCharge/eplus; G4cout << " PDG code=" << code < A-L || L>A || Z<=0 ) { +#ifdef G4VERBOSE + if (verboseLevel>1) { + G4cout << " G4PDGCodeChecker::CheckPDGCode : "; + G4cout << " ??? Illegal PDG encoding for nucleus "; + G4cout << " PDG code=" << code <1) { + G4cout << "G4ParticleDefinition::FillQuarkContents : "; G4cout << " illegal charge (" << thePDGCharge/eplus; G4cout << " PDG code=" << thePDGEncoding <1) { + G4cout << "G4ParticleDefinition::FillQuarkContents : "; G4cout << " illegal SPIN (" << thePDGiSpin << "/2"; G4cout << " PDG code=" << thePDGEncoding <GetIon(Z, A, E); } +//////////////////// +G4ParticleDefinition* G4ParticleTable::GetIon(G4int Z, G4int A, G4int L, G4double E) +{ + CheckReadiness(); + if (Z<=0) return 0; + if (A-LGetIon(Z, A, L, E); +} + //////////////////// G4ParticleDefinition* G4ParticleTable::FindIon(G4int Z, G4int A, G4double E) { @@ -317,6 +328,17 @@ G4ParticleDefinition* G4ParticleTable::FindIon(G4int Z, G4int A, G4double E) return fIonTable->FindIon(Z, A, E); } +//////////////////// +G4ParticleDefinition* G4ParticleTable::FindIon(G4int Z, G4int A, G4int L, G4double E) +{ + CheckReadiness(); + if (Z<=0) return 0; + if (A-LFindIon(Z, A, L, E); +} + //////////////////// G4ParticleDefinition* G4ParticleTable::GetParticle(G4int index) { @@ -380,7 +402,7 @@ G4ParticleDefinition* G4ParticleTable::FindParticle(G4int aPDGEncoding ) //////////////////// void G4ParticleTable::DumpTable(const G4String &particle_name) { - CheckReadiness(); + CheckReadiness(); if (( particle_name == "ALL" ) || (particle_name == "all")){ // dump all particles G4PTblDicIterator *piter = fIterator; @@ -394,12 +416,9 @@ void G4ParticleTable::DumpTable(const G4String &particle_name) ptr = FindParticle(particle_name); if ( ptr != 0) { ptr->DumpTable(); - } else { -#ifdef G4VERBOSE - if (verboseLevel>0){ - G4cout << particle_name << " does not exist in ParticleTable " <1) { G4cout << " daughter " << index << ":" << *daughters_name[index]; G4cout << " momentum:" << daughtermomentum[index]/GeV << "[GeV/c]" <1) { G4cout << " weight: " << weight <100) { +#ifdef G4VERBOSE if (GetVerboseLevel()>0) { G4cout << "G4PhaseSpaceDecayChannel::ManyBodyDecayIt: "; G4cout << " can not determine Decay Kinematics " << G4endl; + G4cout << "parent : " << *parent_name << G4endl; + G4cout << "daughters : "; + for(index=0; index1) { G4cout << "Start calulation of daughters momentum vector "<PushProducts(daughterparticle[index]); } + #ifdef G4VERBOSE if (GetVerboseLevel()>1) { G4cout << "G4PhaseSpaceDecayChannel::ManyBodyDecayIt "; @@ -527,6 +546,7 @@ G4DecayProducts *G4PhaseSpaceDecayChannel::ManyBodyDecayIt() products->DumpInfo(); } #endif + delete [] daughterparticle; delete [] daughtermomentum; delete [] daughtermass; diff --git a/source/particles/management/src/G4PionRadiativeDecayChannel.cc b/source/particles/management/src/G4PionRadiativeDecayChannel.cc new file mode 100644 index 0000000000..e27f52b549 --- /dev/null +++ b/source/particles/management/src/G4PionRadiativeDecayChannel.cc @@ -0,0 +1,224 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// History: +// 01 August 2007 P.Gumplinger +// Reference: TRIUMF PIENU Technote: +// M. Blecher - "Inclusion of pi->enug in MC " +// Rate is for gammas > 100keV +// +// ------------------------------------------------------------ +// +// +// + +#include "G4PionRadiativeDecayChannel.hh" + +#include "Randomize.hh" +#include "G4DecayProducts.hh" +#include "G4LorentzVector.hh" + +G4PionRadiativeDecayChannel:: + G4PionRadiativeDecayChannel(const G4String& theParentName, + G4double theBR) + : G4VDecayChannel("Radiative Pion Decay",1) +{ + // set names for daughter particles + if (theParentName == "pi+") { + SetBR(theBR); + SetParent("pi+"); + SetNumberOfDaughters(3); + SetDaughter(0, "e+"); + SetDaughter(1, "gamma"); + SetDaughter(2, "nu_e"); + } else if (theParentName == "pi-") { + SetBR(theBR); + SetParent("pi-"); + SetNumberOfDaughters(3); + SetDaughter(0, "e-"); + SetDaughter(1, "gamma"); + SetDaughter(2, "anti_nu_e"); + } else { +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cout << "G4RadiativePionDecayChannel:: constructor :"; + G4cout << " parent particle is not muon but "; + G4cout << theParentName << G4endl; + } +#endif + } + + beta = 3.6612e-03; + + cib = 1.16141e-03; + csdp = 3.45055e-02; + csdm = 5.14122e-03; + cif = 4.63543e-05; + cig = 1.78928e-05; + + xl = 2.*0.1*MeV/139.57*MeV; + yl = ((1.-xl) + std::sqrt((1-xl)*(1-xl)+4*beta*beta))/2.; + + xu = 1. - (yl - std::sqrt(yl*yl-4.*beta*beta))/2.; + yu = 1. + beta*beta; + + d2wmax = D2W(xl,yl); + +} + +G4PionRadiativeDecayChannel::~G4PionRadiativeDecayChannel() +{ +} + +G4DecayProducts *G4PionRadiativeDecayChannel::DecayIt(G4double) +{ + +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) + G4cout << "G4PionRadiativeDecayChannel::DecayIt "; +#endif + + if (parent == 0) FillParent(); + if (daughters == 0) FillDaughters(); + + // parent mass + G4double parentmass = parent->GetPDGMass(); + + G4double EMPI = parentmass; + + //daughters'mass + G4double daughtermass[3]; + G4double sumofdaughtermass = 0.0; + for (G4int index=0; index<3; index++){ + daughtermass[index] = daughters[index]->GetPDGMass(); + sumofdaughtermass += daughtermass[index]; + } + + G4double EMASS = daughtermass[0]; + + //create parent G4DynamicParticle at rest + G4ThreeVector dummy; + G4DynamicParticle * parentparticle = + new G4DynamicParticle( parent, dummy, 0.0); + //create G4Decayproducts + G4DecayProducts *products = new G4DecayProducts(*parentparticle); + delete parentparticle; + + G4double x, y, d2w; + + do { + + do { + + x = xl + G4UniformRand()*(xu-xl); + y = yl + G4UniformRand()*(yu-yl); + + } while (x+y <= 1.); + + d2w = D2W(x,y); + + } while (d2w <= G4UniformRand()*d2wmax); + +//----------------------------------------------------------------------- +// +// Calculate the angle between positron and photon (cosine) +// + G4double cthetaGE = (y*(x-2.)+2.*(1.-x+beta*beta)) / + (x*std::sqrt(y*y-4.*beta*beta)); + +// +//----------------------------------------------------------------------- +// + G4double G = x * EMPI/2.; + G4double E = y * EMPI/2.; +// +//----------------------------------------------------------------------- +// + + if (E < EMASS) E = EMASS; + + // calculate daughter momentum + G4double daughtermomentum[2]; + + daughtermomentum[0] = std::sqrt(E*E - EMASS*EMASS); + + G4double cthetaE = 2.*G4UniformRand()-1.; + G4double sthetaE = std::sqrt(1.-cthetaE*cthetaE); + + G4double phiE = twopi*G4UniformRand()*rad; + G4double cphiE = std::cos(phiE); + G4double sphiE = std::sin(phiE); + + //Coordinates of the decay positron + + G4double px = sthetaE*cphiE; + G4double py = sthetaE*sphiE; + G4double pz = cthetaE; + + G4ThreeVector direction0(px,py,pz); + + G4DynamicParticle * daughterparticle0 + = new G4DynamicParticle( daughters[0], daughtermomentum[0]*direction0); + + products->PushProducts(daughterparticle0); + + daughtermomentum[1] = G; + + G4double sthetaGE = std::sqrt(1.-cthetaGE*cthetaGE); + + G4double phiGE = twopi*G4UniformRand()*rad; + G4double cphiGE = std::cos(phiGE); + G4double sphiGE = std::sin(phiGE); + + //Coordinates of the decay gamma with respect to the decay positron + + px = sthetaGE*cphiGE; + py = sthetaGE*sphiGE; + pz = cthetaGE; + + G4ThreeVector direction1(px,py,pz); + + direction1.rotateUz(direction0); + + G4DynamicParticle * daughterparticle1 + = new G4DynamicParticle( daughters[1], daughtermomentum[1]*direction1); + + products->PushProducts(daughterparticle1); + +// output message +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) { + G4cout << "G4PionRadiativeDecayChannel::DecayIt "; + G4cout << " create decay products in rest frame " <DumpInfo(); + } +#endif + + return products; + +} diff --git a/source/particles/management/src/G4PrimaryParticle.cc b/source/particles/management/src/G4PrimaryParticle.cc index 3234c74fb8..dad2b6a305 100644 --- a/source/particles/management/src/G4PrimaryParticle.cc +++ b/source/particles/management/src/G4PrimaryParticle.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PrimaryParticle.cc,v 1.4 2006/10/01 02:29:43 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PrimaryParticle.cc,v 1.5 2007/10/06 06:49:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4PrimaryParticle.hh" @@ -165,19 +165,25 @@ void G4PrimaryParticle::Print() const else { G4cout << " is not defined in G4." << G4endl; } if(charge=0.) - { G4cout << " Mass in MeV : " << mass/MeV << G4endl; } + { G4cout << " Mass : " << mass/GeV << " [GeV]" << G4endl; } else - { G4cout << " Nominal mass will be taken from particle definition." << G4endl; } - G4cout << " Polarization ( " << polX << ", " << polY << ", " - << polZ << " )" << G4endl; + { G4cout << " Nominal mass will be taken from particle definition." << G4endl; } + G4cout << " Polarization ( " + << polX << ", " + << polY << ", " + << polZ << " )" + << G4endl; G4cout << " Weight : " << Weight0 << G4endl; if(properTime>0.0) - { G4cout << " PreAssigned proper decay time : " << properTime/ns << " (nsec)" << G4endl; } + { G4cout << " PreAssigned proper decay time : " << properTime/ns << " [ns] " << G4endl; } if(userInfo != 0) userInfo->Print(); if(daughterParticle != 0) { diff --git a/source/particles/management/src/G4PrimaryVertex.cc b/source/particles/management/src/G4PrimaryVertex.cc index 9336112126..51e8e3065e 100644 --- a/source/particles/management/src/G4PrimaryVertex.cc +++ b/source/particles/management/src/G4PrimaryVertex.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PrimaryVertex.cc,v 1.3 2006/07/20 15:14:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PrimaryVertex.cc,v 1.4 2007/10/06 06:49:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4PrimaryVertex.hh" @@ -75,7 +75,10 @@ G4int G4PrimaryVertex::operator!=(const G4PrimaryVertex &right) const void G4PrimaryVertex::Print() const { G4cout << "Vertex ( " - << X0 << ", " << Y0 << ", " << Z0 << ", " << T0 << " )" + << X0/mm << "[mm], " + << Y0/mm << "[mm], " + << Z0/mm << "[mm], " + << T0/ns << "[ns] )" << " Weight " << Weight0 << G4endl; if(userInfo!=0) userInfo->Print(); G4cout << "#### Primary particles" << G4endl; diff --git a/source/particles/management/src/G4ShortLivedTable.cc b/source/particles/management/src/G4ShortLivedTable.cc index e4049fb1ce..373acbeedb 100644 --- a/source/particles/management/src/G4ShortLivedTable.cc +++ b/source/particles/management/src/G4ShortLivedTable.cc @@ -25,7 +25,7 @@ // // // $Id: G4ShortLivedTable.cc,v 1.14 2006/06/29 19:26:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/management/src/G4TauLeptonicDecayChannel.cc b/source/particles/management/src/G4TauLeptonicDecayChannel.cc index 34f5e3bee7..33ef52e1d3 100644 --- a/source/particles/management/src/G4TauLeptonicDecayChannel.cc +++ b/source/particles/management/src/G4TauLeptonicDecayChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4TauLeptonicDecayChannel.cc,v 1.5 2006/06/29 19:26:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4VDecayChannel.cc b/source/particles/management/src/G4VDecayChannel.cc index e6fee160e0..01c0a07166 100644 --- a/source/particles/management/src/G4VDecayChannel.cc +++ b/source/particles/management/src/G4VDecayChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4VDecayChannel.cc,v 1.18 2006/06/29 19:26:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4VUserPrimaryParticleInformation.cc b/source/particles/management/src/G4VUserPrimaryParticleInformation.cc index 0c017c0ced..9251667b8e 100644 --- a/source/particles/management/src/G4VUserPrimaryParticleInformation.cc +++ b/source/particles/management/src/G4VUserPrimaryParticleInformation.cc @@ -25,7 +25,7 @@ // // // $Id: G4VUserPrimaryParticleInformation.cc,v 1.2 2006/06/29 19:26:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4VUserPrimaryParticleInformation.hh" G4VUserPrimaryParticleInformation::G4VUserPrimaryParticleInformation() {;} diff --git a/source/particles/management/src/G4VUserPrimaryVertexInformation.cc b/source/particles/management/src/G4VUserPrimaryVertexInformation.cc index 8897b07a4f..a571254133 100644 --- a/source/particles/management/src/G4VUserPrimaryVertexInformation.cc +++ b/source/particles/management/src/G4VUserPrimaryVertexInformation.cc @@ -25,7 +25,7 @@ // // // $Id: G4VUserPrimaryVertexInformation.cc,v 1.2 2006/06/29 19:26:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4DiQuarks.hh b/source/particles/shortlived/include/G4DiQuarks.hh index b2cdaba8b0..edb5d6ba77 100644 --- a/source/particles/shortlived/include/G4DiQuarks.hh +++ b/source/particles/shortlived/include/G4DiQuarks.hh @@ -25,7 +25,7 @@ // // // $Id: G4DiQuarks.hh,v 1.6 2006/06/29 19:26:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4ExcitedBaryonConstructor.hh b/source/particles/shortlived/include/G4ExcitedBaryonConstructor.hh index d028f7eb1b..111ec92664 100644 --- a/source/particles/shortlived/include/G4ExcitedBaryonConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedBaryonConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedBaryonConstructor.hh,v 1.6 2006/06/29 19:26:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4ExcitedBaryons.hh b/source/particles/shortlived/include/G4ExcitedBaryons.hh index 987f33aedb..8394273dfd 100644 --- a/source/particles/shortlived/include/G4ExcitedBaryons.hh +++ b/source/particles/shortlived/include/G4ExcitedBaryons.hh @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedBaryons.hh,v 1.7 2006/06/29 19:26:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4ExcitedDeltaConstructor.hh b/source/particles/shortlived/include/G4ExcitedDeltaConstructor.hh index 7ba7daeec4..86be4b80bc 100644 --- a/source/particles/shortlived/include/G4ExcitedDeltaConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedDeltaConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedDeltaConstructor.hh,v 1.6 2006/06/29 19:26:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4ExcitedLambdaConstructor.hh b/source/particles/shortlived/include/G4ExcitedLambdaConstructor.hh index a2e9605f40..e7894e6f73 100644 --- a/source/particles/shortlived/include/G4ExcitedLambdaConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedLambdaConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedLambdaConstructor.hh,v 1.8 2006/06/29 19:26:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh b/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh index c8e0e1ae2d..ee619dca1c 100644 --- a/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh @@ -31,7 +31,7 @@ // and all its terms. // // $Id: G4ExcitedMesonConstructor.hh,v 1.8 2006/06/29 19:26:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4ExcitedMesons.hh b/source/particles/shortlived/include/G4ExcitedMesons.hh index 92cdd03868..402a060ee8 100644 --- a/source/particles/shortlived/include/G4ExcitedMesons.hh +++ b/source/particles/shortlived/include/G4ExcitedMesons.hh @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedMesons.hh,v 1.7 2006/06/29 19:26:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4ExcitedNucleonConstructor.hh b/source/particles/shortlived/include/G4ExcitedNucleonConstructor.hh index 09117e28cc..99b8d8eec5 100644 --- a/source/particles/shortlived/include/G4ExcitedNucleonConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedNucleonConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedNucleonConstructor.hh,v 1.6 2006/06/29 19:26:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4ExcitedSigmaConstructor.hh b/source/particles/shortlived/include/G4ExcitedSigmaConstructor.hh index cb33e89ed0..c9ccce4114 100644 --- a/source/particles/shortlived/include/G4ExcitedSigmaConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedSigmaConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedSigmaConstructor.hh,v 1.6 2006/06/29 19:26:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4ExcitedXiConstructor.hh b/source/particles/shortlived/include/G4ExcitedXiConstructor.hh index 6eff258944..60c1a73c85 100644 --- a/source/particles/shortlived/include/G4ExcitedXiConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedXiConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedXiConstructor.hh,v 1.6 2006/06/29 19:26:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4Gluons.hh b/source/particles/shortlived/include/G4Gluons.hh index 24f3e845ae..34da3bab31 100644 --- a/source/particles/shortlived/include/G4Gluons.hh +++ b/source/particles/shortlived/include/G4Gluons.hh @@ -25,7 +25,7 @@ // // // $Id: G4Gluons.hh,v 1.6 2006/06/29 19:26:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4Quarks.hh b/source/particles/shortlived/include/G4Quarks.hh index 7ea470af22..16e19b50c0 100644 --- a/source/particles/shortlived/include/G4Quarks.hh +++ b/source/particles/shortlived/include/G4Quarks.hh @@ -25,7 +25,7 @@ // // // $Id: G4Quarks.hh,v 1.6 2006/06/29 19:26:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4ShortLivedConstructor.hh b/source/particles/shortlived/include/G4ShortLivedConstructor.hh index 607718170e..7ab2d78c91 100644 --- a/source/particles/shortlived/include/G4ShortLivedConstructor.hh +++ b/source/particles/shortlived/include/G4ShortLivedConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4ShortLivedConstructor.hh,v 1.6 2006/06/29 19:26:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4VShortLivedParticle.hh b/source/particles/shortlived/include/G4VShortLivedParticle.hh index 94f1d5c755..c12d8a66cb 100644 --- a/source/particles/shortlived/include/G4VShortLivedParticle.hh +++ b/source/particles/shortlived/include/G4VShortLivedParticle.hh @@ -25,7 +25,7 @@ // // // $Id: G4VShortLivedParticle.hh,v 1.8 2006/06/29 19:26:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/src/G4DiQuarks.cc b/source/particles/shortlived/src/G4DiQuarks.cc index efa93a40f2..9c4bfc28f2 100644 --- a/source/particles/shortlived/src/G4DiQuarks.cc +++ b/source/particles/shortlived/src/G4DiQuarks.cc @@ -25,7 +25,7 @@ // // // $Id: G4DiQuarks.cc,v 1.7 2006/06/29 19:26:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc b/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc index 1806e0e8d7..727df96b34 100644 --- a/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedBaryonConstructor.cc,v 1.7 2006/06/29 19:26:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedBaryons.cc b/source/particles/shortlived/src/G4ExcitedBaryons.cc index deddb88ef4..edfdaec0c9 100644 --- a/source/particles/shortlived/src/G4ExcitedBaryons.cc +++ b/source/particles/shortlived/src/G4ExcitedBaryons.cc @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedBaryons.cc,v 1.7 2006/06/29 19:26:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedDeltaConstructor.cc b/source/particles/shortlived/src/G4ExcitedDeltaConstructor.cc index db2100757f..b47507a688 100644 --- a/source/particles/shortlived/src/G4ExcitedDeltaConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedDeltaConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedDeltaConstructor.cc,v 1.11 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedLambdaConstructor.cc b/source/particles/shortlived/src/G4ExcitedLambdaConstructor.cc index 8d9e0d0a7f..1a939e35c0 100644 --- a/source/particles/shortlived/src/G4ExcitedLambdaConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedLambdaConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedLambdaConstructor.cc,v 1.11 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedMesonConstructor.cc b/source/particles/shortlived/src/G4ExcitedMesonConstructor.cc index 41b109e303..dea7972558 100644 --- a/source/particles/shortlived/src/G4ExcitedMesonConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedMesonConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedMesonConstructor.cc,v 1.19 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedMesons.cc b/source/particles/shortlived/src/G4ExcitedMesons.cc index bc217d3797..5a61c2f3f9 100644 --- a/source/particles/shortlived/src/G4ExcitedMesons.cc +++ b/source/particles/shortlived/src/G4ExcitedMesons.cc @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedMesons.cc,v 1.7 2006/06/29 19:27:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedNucleonConstructor.cc b/source/particles/shortlived/src/G4ExcitedNucleonConstructor.cc index 284b34dcc4..5d89afa7d1 100644 --- a/source/particles/shortlived/src/G4ExcitedNucleonConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedNucleonConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedNucleonConstructor.cc,v 1.11 2006/06/29 19:27:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedSigmaConstructor.cc b/source/particles/shortlived/src/G4ExcitedSigmaConstructor.cc index 37ca34ec22..7ca1fc9830 100644 --- a/source/particles/shortlived/src/G4ExcitedSigmaConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedSigmaConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedSigmaConstructor.cc,v 1.11 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedXiConstructor.cc b/source/particles/shortlived/src/G4ExcitedXiConstructor.cc index 9d8918431b..34a68c2c72 100644 --- a/source/particles/shortlived/src/G4ExcitedXiConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedXiConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedXiConstructor.cc,v 1.7 2006/06/29 19:27:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4Gluons.cc b/source/particles/shortlived/src/G4Gluons.cc index 04651b9d6f..a6528a148b 100644 --- a/source/particles/shortlived/src/G4Gluons.cc +++ b/source/particles/shortlived/src/G4Gluons.cc @@ -25,7 +25,7 @@ // // // $Id: G4Gluons.cc,v 1.7 2006/06/29 19:27:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4Quarks.cc b/source/particles/shortlived/src/G4Quarks.cc index 7935e97694..e46663f490 100644 --- a/source/particles/shortlived/src/G4Quarks.cc +++ b/source/particles/shortlived/src/G4Quarks.cc @@ -25,7 +25,7 @@ // // // $Id: G4Quarks.cc,v 1.7 2006/06/29 19:27:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ShortLivedConstructor.cc b/source/particles/shortlived/src/G4ShortLivedConstructor.cc index 20e1cf3cbb..ffc2fecb25 100644 --- a/source/particles/shortlived/src/G4ShortLivedConstructor.cc +++ b/source/particles/shortlived/src/G4ShortLivedConstructor.cc @@ -25,7 +25,7 @@ // // // $Id: G4ShortLivedConstructor.cc,v 1.15 2006/10/12 10:59:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4VShortLivedParticle.cc b/source/particles/shortlived/src/G4VShortLivedParticle.cc index 221fb6d6bc..e9a8388803 100644 --- a/source/particles/shortlived/src/G4VShortLivedParticle.cc +++ b/source/particles/shortlived/src/G4VShortLivedParticle.cc @@ -25,7 +25,7 @@ // // // $Id: G4VShortLivedParticle.cc,v 1.8 2006/06/29 19:27:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/particles/utils/include/G4HtmlPPReporter.hh b/source/particles/utils/include/G4HtmlPPReporter.hh index 27bfde7457..bccfac16cd 100644 --- a/source/particles/utils/include/G4HtmlPPReporter.hh +++ b/source/particles/utils/include/G4HtmlPPReporter.hh @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4HtmlPPReporter.hh,v 1.2 2006/06/29 19:27:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/particles/utils/include/G4SimplePPReporter.hh b/source/particles/utils/include/G4SimplePPReporter.hh index 8e0bedcc15..4ba7cf1588 100644 --- a/source/particles/utils/include/G4SimplePPReporter.hh +++ b/source/particles/utils/include/G4SimplePPReporter.hh @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4SimplePPReporter.hh,v 1.2 2006/06/29 19:27:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/particles/utils/include/G4TextPPReporter.hh b/source/particles/utils/include/G4TextPPReporter.hh index c53b887d6a..2da5bd11cc 100644 --- a/source/particles/utils/include/G4TextPPReporter.hh +++ b/source/particles/utils/include/G4TextPPReporter.hh @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4TextPPReporter.hh,v 1.2 2006/06/29 19:27:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/particles/utils/include/G4TextPPRetriever.hh b/source/particles/utils/include/G4TextPPRetriever.hh index 03e7e8c6b6..8cc8decb88 100644 --- a/source/particles/utils/include/G4TextPPRetriever.hh +++ b/source/particles/utils/include/G4TextPPRetriever.hh @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4TextPPRetriever.hh,v 1.2 2006/06/29 19:27:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/particles/utils/include/G4VParticlePropertyReporter.hh b/source/particles/utils/include/G4VParticlePropertyReporter.hh index 153e59bdb9..2d76f41a52 100644 --- a/source/particles/utils/include/G4VParticlePropertyReporter.hh +++ b/source/particles/utils/include/G4VParticlePropertyReporter.hh @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4VParticlePropertyReporter.hh,v 1.2 2006/06/29 19:27:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/particles/utils/include/G4VParticlePropertyRetriever.hh b/source/particles/utils/include/G4VParticlePropertyRetriever.hh index 39ffa69734..0a01a201a5 100644 --- a/source/particles/utils/include/G4VParticlePropertyRetriever.hh +++ b/source/particles/utils/include/G4VParticlePropertyRetriever.hh @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4VParticlePropertyRetriever.hh,v 1.2 2006/06/29 19:27:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/particles/utils/src/G4HtmlPPReporter.cc b/source/particles/utils/src/G4HtmlPPReporter.cc index 9d310fb7ea..dc2f180a1d 100644 --- a/source/particles/utils/src/G4HtmlPPReporter.cc +++ b/source/particles/utils/src/G4HtmlPPReporter.cc @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4HtmlPPReporter.cc,v 1.5 2007/03/11 07:17:35 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/particles/utils/src/G4SimplePPReporter.cc b/source/particles/utils/src/G4SimplePPReporter.cc index c9e5843ef8..814c5ea47a 100644 --- a/source/particles/utils/src/G4SimplePPReporter.cc +++ b/source/particles/utils/src/G4SimplePPReporter.cc @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4SimplePPReporter.cc,v 1.2 2006/06/29 19:28:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/particles/utils/src/G4TextPPReporter.cc b/source/particles/utils/src/G4TextPPReporter.cc index 879850b1af..07b900303b 100644 --- a/source/particles/utils/src/G4TextPPReporter.cc +++ b/source/particles/utils/src/G4TextPPReporter.cc @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4TextPPReporter.cc,v 1.2 2006/06/29 19:28:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/particles/utils/src/G4TextPPRetriever.cc b/source/particles/utils/src/G4TextPPRetriever.cc index 63de902eb4..48148f3186 100644 --- a/source/particles/utils/src/G4TextPPRetriever.cc +++ b/source/particles/utils/src/G4TextPPRetriever.cc @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4TextPPRetriever.cc,v 1.2 2006/06/29 19:28:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/particles/utils/src/G4VParticlePropertyReporter.cc b/source/particles/utils/src/G4VParticlePropertyReporter.cc index 7711f6894f..71a145ed59 100644 --- a/source/particles/utils/src/G4VParticlePropertyReporter.cc +++ b/source/particles/utils/src/G4VParticlePropertyReporter.cc @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4VParticlePropertyReporter.cc,v 1.2 2006/06/29 19:28:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/persistency/GNUmakefile b/source/persistency/GNUmakefile index ccf0d617a0..d416979751 100644 --- a/source/persistency/GNUmakefile +++ b/source/persistency/GNUmakefile @@ -1,12 +1,16 @@ -# $Id: GNUmakefile,v 1.26 2006/11/14 16:12:17 gcosmo Exp $ +# $Id: GNUmakefile,v 1.29 2007/11/02 16:22:05 gcosmo Exp $ # ----------------------------------------------------------------------- # GNUmakefile for persistency library. Gabriele Cosmo, 16/11/96. # ----------------------------------------------------------------------- name := G4persistency -ifndef G4INSTALL - G4INSTALL = ../.. +SUBDIRS := mctruth +SUBLIBS = G4mctruth + +ifdef G4LIB_BUILD_GDML + SUBDIRS += gdml + SUBLIBS += G4gdml endif GLOBLIBS = libG4run.lib libG4event.lib @@ -14,29 +18,9 @@ GLOBLIBS += libG4tracking.lib libG4digits_hits.lib libG4track.lib GLOBLIBS += libG4particles.lib libG4geometry.lib libG4materials.lib GLOBLIBS += libG4graphics_reps.lib libG4intercoms.lib libG4global.lib -include $(G4INSTALL)/config/architecture.gmk -CPPFLAGS += -I$(G4INSTALL)/source/global/management/include \ - -I$(G4INSTALL)/source/global/HEPGeometry/include \ - -I$(G4INSTALL)/source/digits_hits/hits/include \ - -I$(G4INSTALL)/source/digits_hits/digits/include \ - -I$(G4INSTALL)/source/particles/management/include \ - -I$(G4INSTALL)/source/run/include \ - -I$(G4INSTALL)/source/event/include \ - -I$(G4INSTALL)/source/track/include \ - -I$(G4INSTALL)/source/tracking/include \ - -I$(G4INSTALL)/source/intercoms/include \ - -I$(G4INSTALL)/source/geometry/management/include -ifdef G4LIB_USE_HEPMC - ifndef HEPMC_DIR - @echo HEPMC_DIR not defined! - endif - CPPFLAGS += -I$(HEPMC_DIR)/include +ifndef G4INSTALL + G4INSTALL = ../.. endif -include $(G4INSTALL)/config/common.gmk - -.PHONY: global - -global: lib - +include $(G4INSTALL)/config/globlib.gmk diff --git a/source/persistency/History b/source/persistency/History index 1aaf668962..d3ee7133ce 100644 --- a/source/persistency/History +++ b/source/persistency/History @@ -15,6 +15,16 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +02 November, 07 G.Cosmo (persistency-V09-00-00) +- Added G4LIB_BUILD_GDML/G4LIB_USE_GDML flags to trigger compilation through + the central scripts. Moved setup for XERCESC (includes and libs paths) to + central scripts. +- Coworks with tag "config-V09-00-06". + +17 October, 07 Z.Torzsok +- Introduced new "gdml" plugin sub-module, based on new GDML release 3. +- Moved existing classes to "mctruth" sub-module; renamed libraries. + 14 November, 06 G.Cosmo (persistency-V08-01-02) - Cleared trivial compilation warnings in G4PersistencyManager implementation. - Added setup for retrieving HepMC in case G4LIB_USE_HEPMC is set and the diff --git a/source/persistency/gdml/GNUmakefile b/source/persistency/gdml/GNUmakefile new file mode 100644 index 0000000000..051516a786 --- /dev/null +++ b/source/persistency/gdml/GNUmakefile @@ -0,0 +1,40 @@ +# $Id: GNUmakefile,v 1.6 2007/12/11 15:00:49 gcosmo Exp $ +# ----------------------------------------------------------------------- +# GNUmakefile for persistency library. Gabriele Cosmo, 16/11/96. +# ----------------------------------------------------------------------- + +name := G4gdml + +ifndef G4INSTALL + G4INSTALL = ../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +CPPFLAGS += -I$(G4INSTALL)/source/global/management/include \ + -I$(G4INSTALL)/source/global/HEPGeometry/include \ + -I$(G4INSTALL)/source/digits_hits/hits/include \ + -I$(G4INSTALL)/source/digits_hits/digits/include \ + -I$(G4INSTALL)/source/particles/management/include \ + -I$(G4INSTALL)/source/run/include \ + -I$(G4INSTALL)/source/event/include \ + -I$(G4INSTALL)/source/track/include \ + -I$(G4INSTALL)/source/tracking/include \ + -I$(G4INSTALL)/source/intercoms/include \ + -I$(G4INSTALL)/source/geometry/management/include \ + -I$(G4INSTALL)/source/geometry/volumes/include \ + -I$(G4INSTALL)/source/geometry/management/include \ + -I$(G4INSTALL)/source/geometry/solids/CSG/include \ + -I$(G4INSTALL)/source/geometry/solids/Boolean/include \ + -I$(G4INSTALL)/source/geometry/solids/specific/include \ + -I$(G4INSTALL)/source/geometry/divisions/include \ + -I$(G4INSTALL)/source/materials/include \ + -I$(G4INSTALL)/source/graphics_reps/include + +ifdef G4LIB_USE_GDML + ifndef XERCESCROOT + @echo XERCESCROOT not defined! + endif +endif + +include $(G4INSTALL)/config/common.gmk diff --git a/source/persistency/gdml/History b/source/persistency/gdml/History new file mode 100644 index 0000000000..3dc49dfd3f --- /dev/null +++ b/source/persistency/gdml/History @@ -0,0 +1,46 @@ +$Id: History,v 1.5 2007/11/30 15:11:22 gcosmo Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + Category History file + --------------------- +This file should be used by G4 developers and category coordinators +to briefly summarize all major modifications introduced in the code +and keep track of all category-tags. +It DOES NOT substitute the CVS log-message one should put at every +committal in the CVS repository ! + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +30 November, 07 Z.Torzsok (gdml-V09-00-04) +- Fine tuning of the class hierarchy and fixed issue with reflections. + +23 November, 07 Z.Torzsok (gdml-V09-00-03) +- Better handling of embedded loops and first adaptation. + +22 November, 07 Z.Torzsok (gdml-V09-00-02) +- Handling of embedded loops added. +- Fixed compilation problems on Windows platform. + +19 November, 07 G.Cosmo (gdml-V09-00-01) +- Better handling of modular GDML files and reflections (Z.Torzsok). +- Added disclaimer to all files. Use G4 types. +- Fixed compilation problems on SUN platform. + +15 November, 07 Z.Torzsok (gdml-V09-00-00) +- Added support for modular files. +- Completed set of specific solids. Supported reflections and divisions. + +02 November, 07 G.Cosmo (persistency-V09-00-00) +- Added G4LIB_BUILD_GDML/G4LIB_USE_GDML flags to trigger compilation through + the central scripts. Moved setup for XERCESC (includes and libs paths) to + central scripts. +- Coworks with tag "config-V09-00-06". + +17 October, 07 Z.Torzsok +- Introduced new "gdml" plugin sub-module, based on new GDML release 3. diff --git a/source/persistency/gdml/include/G4GDMLBase.hh b/source/persistency/gdml/include/G4GDMLBase.hh new file mode 100644 index 0000000000..3fd7766118 --- /dev/null +++ b/source/persistency/gdml/include/G4GDMLBase.hh @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * 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: G4GDMLBase.hh,v 1.3 2007/11/30 11:58:46 ztorzsok Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// class G4GDMLBase +// +// Class description: +// +// History: +// - Created. Zoltan Torzsok, November 2007 +// ------------------------------------------------------------------------- + +#ifndef _G4GDMLBASE_INCLUDED_ +#define _G4GDMLBASE_INCLUDED_ + +#include +#include +#include +#include + +#include + +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4VisAttributes.hh" + +#include "G4GDMLEvaluator.hh" + +class G4GDMLBase { +private: + xercesc::XercesDOMParser* parser; // This should be a static member + G4String prename; +protected: + G4GDMLEvaluator eval; + + G4String GenerateName(const G4String&); + + virtual void defineRead(const xercesc::DOMElement* const)=0; + virtual void materialsRead(const xercesc::DOMElement* const)=0; + virtual void solidsRead(const xercesc::DOMElement* const)=0; + virtual void structureRead(const xercesc::DOMElement* const)=0; + virtual void setupRead(const xercesc::DOMElement* const)=0; + + virtual G4LogicalVolume* getVolume(const G4String&) const=0; + virtual G4String getSetup(const G4String&)=0; +public: + G4GDMLBase(); + ~G4GDMLBase(); + + void Parse(const G4String& fileName); + G4PVPlacement* getTopVolume(const G4String& setupName); +}; + +#endif diff --git a/source/persistency/gdml/include/G4GDMLDefine.hh b/source/persistency/gdml/include/G4GDMLDefine.hh new file mode 100644 index 0000000000..370093b576 --- /dev/null +++ b/source/persistency/gdml/include/G4GDMLDefine.hh @@ -0,0 +1,68 @@ +// +// ******************************************************************** +// * 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: G4GDMLDefine.hh,v 1.11 2007/11/30 11:58:46 ztorzsok Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// class G4GDMLDefine +// +// Class description: +// +// GDML class for positionings and transformations according to +// specifications in Geant4. + +// History: +// - Created. Zoltan Torzsok, November 2007 +// ------------------------------------------------------------------------- + +#ifndef _G4GDMLDEFINE_INCLUDED_ +#define _G4GDMLDEFINE_INCLUDED_ + +#include + +#include "G4ThreeVector.hh" +#include "G4GDMLBase.hh" + +class G4GDMLDefine : public G4GDMLBase { +private: + std::map positionMap; + std::map rotationMap; + std::map scaleMap; + + void constantRead(const xercesc::DOMElement* const); + void positionRead(const xercesc::DOMElement* const); + void rotationRead(const xercesc::DOMElement* const); + void scaleRead(const xercesc::DOMElement* const); + void variableRead(const xercesc::DOMElement* const); + void defineRead(const xercesc::DOMElement* const); +protected: + G4ThreeVector* getPosition(const G4String&); + G4ThreeVector* getRotation(const G4String&); + G4ThreeVector* getScale(const G4String&); +}; + +#endif diff --git a/source/persistency/gdml/include/G4GDMLEvaluator.hh b/source/persistency/gdml/include/G4GDMLEvaluator.hh new file mode 100644 index 0000000000..ef6307e196 --- /dev/null +++ b/source/persistency/gdml/include/G4GDMLEvaluator.hh @@ -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: G4GDMLEvaluator.hh,v 1.10 2007/11/28 10:27:18 ztorzsok Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// class G4GDMLEvaluator +// +// Class description: +// +// GDML class for evaluation of expressions. + +// History: +// - Created. Zoltan Torzsok, November 2007 +// ------------------------------------------------------------------------- + +#ifndef _G4GDMLEVALUATOR_INCLUDED_ +#define _G4GDMLEVALUATOR_INCLUDED_ + +#include + +#include "G4Types.hh" +#include "G4String.hh" +#include "G4Box.hh" + +class G4GDMLEvaluator { + HepTool::Evaluator eval; + std::vector variableList; +public: + G4GDMLEvaluator(); + + void defineConstant(const G4String&,G4double); + void defineVariable(const G4String&,G4double); + void setVariable(const G4String&,G4double); + void checkVariable(const G4String&); + + G4double Evaluate(const G4String&); + G4int EvaluateInteger(const G4String&); +}; + +#endif diff --git a/source/persistency/gdml/include/G4GDMLMaterials.hh b/source/persistency/gdml/include/G4GDMLMaterials.hh new file mode 100644 index 0000000000..e4d6c201aa --- /dev/null +++ b/source/persistency/gdml/include/G4GDMLMaterials.hh @@ -0,0 +1,67 @@ +// +// ******************************************************************** +// * 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: G4GDMLMaterials.hh,v 1.10 2007/11/30 11:58:46 ztorzsok Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// class G4GDMLMaterials +// +// Class description: +// +// GDML class for loading isotopes, elements and materials according to +// specifications in Geant4. + +// History: +// - Created. Zoltan Torzsok, November 2007 +// ------------------------------------------------------------------------- + +#ifndef _G4GDMLMATERIALS_INCLUDED_ +#define _G4GDMLMATERIALS_INCLUDED_ + +#include "G4GDMLDefine.hh" + +#include "G4Element.hh" +#include "G4Isotope.hh" +#include "G4Material.hh" + +class G4GDMLMaterials : public G4GDMLDefine { +private: + G4double atomRead(const xercesc::DOMElement* const); + G4double DRead(const xercesc::DOMElement* const); + void elementRead(const xercesc::DOMElement* const); + G4double fractionRead(const xercesc::DOMElement* const,G4String&); + void isotopeRead(const xercesc::DOMElement* const); + void materialRead(const xercesc::DOMElement* const); + void mixtureRead(const xercesc::DOMElement* const,G4Element*); + void mixtureRead(const xercesc::DOMElement* const,G4Material*); + void materialsRead(const xercesc::DOMElement* const); +protected: + G4Isotope* getIsotope(const G4String&) const; + G4Material* getMaterial(const G4String&) const; +}; + +#endif diff --git a/source/persistency/gdml/include/G4GDMLParser.hh b/source/persistency/gdml/include/G4GDMLParser.hh new file mode 100644 index 0000000000..ed686f8828 --- /dev/null +++ b/source/persistency/gdml/include/G4GDMLParser.hh @@ -0,0 +1,51 @@ +// +// ******************************************************************** +// * 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: G4GDMLParser.hh,v 1.10 2007/11/30 11:58:46 ztorzsok Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// class G4GDMLParser +// +// Class description: +// +// History: +// - Created. Zoltan Torzsok, November 2007 +// ------------------------------------------------------------------------- + +#ifndef _G4GDMLPARSER_INCLUDED_ +#define _G4GDMLPARSER_INCLUDED_ + +#include "G4GDMLStructure.hh" + +class G4GDMLParser { + G4GDMLStructure structure; +public: + void Read(const G4String& fileName) { structure.Parse(fileName); } + G4VPhysicalVolume* GetWorldVolume(const G4String& setupName="Default") { return structure.getTopVolume(setupName); } +}; + +#endif diff --git a/source/visualization/OpenGL/include/G4OpenGLXViewerMessenger.hh b/source/persistency/gdml/include/G4GDMLSetup.hh similarity index 71% rename from source/visualization/OpenGL/include/G4OpenGLXViewerMessenger.hh rename to source/persistency/gdml/include/G4GDMLSetup.hh index caab486ea7..27b14d71d1 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXViewerMessenger.hh +++ b/source/persistency/gdml/include/G4GDMLSetup.hh @@ -24,34 +24,36 @@ // ******************************************************************** // // -// $Id: G4OpenGLXViewerMessenger.hh,v 1.3 2007/05/08 11:04:11 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4GDMLSetup.hh,v 1.9 2007/11/29 13:13:06 ztorzsok Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// class G4GDMLSetup +// +// Class description: +// +// GDML class for geometry setup of physical volumes. -#ifdef G4VIS_BUILD_OPENGLX_DRIVER +// History: +// - Created. Zoltan Torzsok, November 2007 +// ------------------------------------------------------------------------- -#ifndef G4OPENGLXVIEWERMESSENGER_HH -#define G4OPENGLXVIEWERMESSENGER_HH +#ifndef _G4GDMLSETUP_INCLUDED_ +#define _G4GDMLSETUP_INCLUDED_ -#include "G4UImessenger.hh" +#include #include "G4String.hh" -class G4OpenGLXViewer; -class G4UIdirectory; - -class G4OpenGLXViewerMessenger: public G4UImessenger { -public: - static G4OpenGLXViewerMessenger* GetInstance(); // Singleton constructor. - ~G4OpenGLXViewerMessenger(); - void SetNewValue (G4UIcommand*, G4String); +#include "G4GDMLSolids.hh" +class G4GDMLSetup : public G4GDMLSolids { private: - G4OpenGLXViewerMessenger(); // Private constructor. - static G4OpenGLXViewerMessenger* fpInstance; - G4UIdirectory* fpDirectory; - G4UIdirectory* fpDirectorySet; + std::map setupMap; +protected: + void setupRead(const xercesc::DOMElement* const element); +public: + G4String getSetup(const G4String&); }; #endif - -#endif diff --git a/source/persistency/gdml/include/G4GDMLSolids.hh b/source/persistency/gdml/include/G4GDMLSolids.hh new file mode 100644 index 0000000000..d564cd5a60 --- /dev/null +++ b/source/persistency/gdml/include/G4GDMLSolids.hh @@ -0,0 +1,111 @@ +// +// ******************************************************************** +// * 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: G4GDMLSolids.hh,v 1.16 2007/11/30 14:51:20 ztorzsok Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// class G4GDMLSolids +// +// Class description: +// +// GDML class for loading solids according to specifications in Geant4. + +// History: +// - Created. Zoltan Torzsok, November 2007 +// ------------------------------------------------------------------------- + +#ifndef _G4GDMLSOLIDS_INCLUDED_ +#define _G4GDMLSOLIDS_INCLUDED_ + +#include "G4Box.hh" +#include "G4Cons.hh" +#include "G4Ellipsoid.hh" +#include "G4EllipticalTube.hh" +#include "G4ExtrudedSolid.hh" +#include "G4Hype.hh" +#include "G4IntersectionSolid.hh" +#include "G4Orb.hh" +#include "G4Para.hh" +#include "G4Polycone.hh" +#include "G4Polyhedra.hh" +#include "G4QuadrangularFacet.hh" +#include "G4ReflectedSolid.hh" +#include "G4Sphere.hh" +#include "G4SolidStore.hh" +#include "G4SubtractionSolid.hh" +#include "G4TessellatedSolid.hh" +#include "G4Tet.hh" +#include "G4Torus.hh" +#include "G4Transform3D.hh" +#include "G4Trap.hh" +#include "G4Trd.hh" +#include "G4TriangularFacet.hh" +#include "G4Tubs.hh" +#include "G4UnionSolid.hh" + +#include "G4GDMLMaterials.hh" + +class G4GDMLSolids : public G4GDMLMaterials { +private: + enum BooleanOp {UNION,SUBTRACTION,INTERSECTION}; + typedef struct zplaneType { G4double rmin,rmax,z; }; + + void booleanRead(const xercesc::DOMElement* const,const BooleanOp); + void boxRead(const xercesc::DOMElement* const); + void coneRead(const xercesc::DOMElement* const); + void ellipsoidRead(const xercesc::DOMElement* const); + void eltubeRead(const xercesc::DOMElement* const); + void hypeRead(const xercesc::DOMElement* const); + void loopRead(const xercesc::DOMElement* const); + void orbRead(const xercesc::DOMElement* const); + void paraRead(const xercesc::DOMElement* const); + void polyconeRead(const xercesc::DOMElement* const); + void polyhedraRead(const xercesc::DOMElement* const); + G4QuadrangularFacet* quadrangularRead(const xercesc::DOMElement* const); + G4String refRead(const xercesc::DOMElement* const); + void reflectedSolidRead(const xercesc::DOMElement* const); + G4ExtrudedSolid::ZSection sectionRead(const xercesc::DOMElement* const,G4double); + void sphereRead(const xercesc::DOMElement* const); + void tessellatedRead(const xercesc::DOMElement* const); + void tetRead(const xercesc::DOMElement* const); + void torusRead(const xercesc::DOMElement* const); + void trapRead(const xercesc::DOMElement* const); + void trdRead(const xercesc::DOMElement* const); + G4TriangularFacet* triangularRead(const xercesc::DOMElement* const); + void tubeRead(const xercesc::DOMElement* const); + G4TwoVector twoDimVertexRead(const xercesc::DOMElement* const,G4double); + void xtruRead(const xercesc::DOMElement* const); + zplaneType zplaneRead(const xercesc::DOMElement* const,G4double); + void solidsRead(const xercesc::DOMElement* const); +protected: + G4ThreeVector positionRead(const xercesc::DOMElement* const); + G4ThreeVector rotationRead(const xercesc::DOMElement* const); + G4ThreeVector scaleRead(const xercesc::DOMElement* const); + G4VSolid* getSolid(const G4String&) const; +}; + +#endif diff --git a/source/persistency/gdml/include/G4GDMLStructure.hh b/source/persistency/gdml/include/G4GDMLStructure.hh new file mode 100644 index 0000000000..f626ca6be4 --- /dev/null +++ b/source/persistency/gdml/include/G4GDMLStructure.hh @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * 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: G4GDMLStructure.hh,v 1.16 2007/11/30 14:51:20 ztorzsok Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// class G4GDMLStructure +// +// Class description: +// +// GDML class for loading physical volumes according to various +// specifications in Geant4. + +// History: +// - Created. Zoltan Torzsok, November 2007 +// ------------------------------------------------------------------------- + +#ifndef _G4GDMLSTRUCTURE_INCLUDED_ +#define _G4GDMLSTRUCTURE_INCLUDED_ + +#include "G4LogicalVolume.hh" +#include "G4LogicalVolumeStore.hh" +#include "G4PVDivision.hh" +#include "G4PVPlacement.hh" +#include "G4PVReplica.hh" +#include "G4SolidStore.hh" +#include "G4VPhysicalVolume.hh" +#include "G4ReflectionFactory.hh" + +#include "G4GDMLSetup.hh" + +class G4GDMLStructure : public G4GDMLSetup { +private: + EAxis directionRead(const xercesc::DOMElement* const); + void divisionvolRead(const xercesc::DOMElement* const,G4LogicalVolume*); + G4LogicalVolume* fileRead(const xercesc::DOMElement* const); + void loopRead(const xercesc::DOMElement* const); + void paramvolRead(const xercesc::DOMElement* const,G4LogicalVolume*); + void physvolRead(const xercesc::DOMElement* const,G4LogicalVolume*); + G4double quantityRead(const xercesc::DOMElement* const); + G4String refRead(const xercesc::DOMElement* const); + void replicate_along_axisRead(const xercesc::DOMElement* const,G4double&,G4double&,EAxis&); + void replicavolRead(const xercesc::DOMElement* const,G4LogicalVolume*); + void volumeRead(const xercesc::DOMElement* const); + void volume_contentRead(const xercesc::DOMElement* const,G4LogicalVolume*); + void volume_loopRead(const xercesc::DOMElement* const,G4LogicalVolume*); + void structureRead(const xercesc::DOMElement* const); +protected: + G4LogicalVolume* getVolume(const G4String&) const; +}; + +#endif diff --git a/source/persistency/gdml/src/G4GDMLBase.cc b/source/persistency/gdml/src/G4GDMLBase.cc new file mode 100644 index 0000000000..209253a8f7 --- /dev/null +++ b/source/persistency/gdml/src/G4GDMLBase.cc @@ -0,0 +1,158 @@ +// +// ******************************************************************** +// * 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: G4GDMLBase.cc,v 1.3 2007/11/30 11:58:46 ztorzsok Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// class G4GDMLBase +// +// Class description: +// +// History: +// - Created. Zoltan Torzsok, November 2007 +// ------------------------------------------------------------------------- + +#include "G4GDMLBase.hh" + +G4GDMLBase::G4GDMLBase() { + + try { + + xercesc::XMLPlatformUtils::Initialize(); + } + catch(xercesc::XMLException& e) { + + char* message = xercesc::XMLString::transcode(e.getMessage()); + G4cerr << "XML toolkit initialization error: " << message << G4endl; + xercesc::XMLString::release(&message); + } + + parser = new xercesc::XercesDOMParser; + + parser->setValidationScheme(xercesc::XercesDOMParser::Val_Always); + parser->setDoNamespaces(true); + parser->setDoSchema(true); + parser->setValidationSchemaFullChecking(true); +} + +G4GDMLBase::~G4GDMLBase() { + + if (parser) delete parser; + + try { + + xercesc::XMLPlatformUtils::Terminate(); + } + catch(xercesc::XMLException& e) { + + char* message = xercesc::XMLString::transcode(e.getMessage()); + G4cerr << "XML toolkit termination error: " << message << G4endl; + xercesc::XMLString::release(&message); + } +} + +G4String G4GDMLBase::GenerateName(const G4String& in) { + + std::string out(prename); + + std::string::size_type open = in.find("[",0); + + out.append(in,0,open); + + while (open != std::string::npos) { + + std::string::size_type close = in.find("]",open); + + if (close == std::string::npos) G4Exception("Bracket mismatch in loop!"); + + std::string expr = in.substr(open+1,close-open-1); + + std::stringstream stream; + + stream << "[" << eval.EvaluateInteger(expr) << "]"; + + out.append(stream.str()); + + open = in.find("[",close); + } + + return out; +} + +void G4GDMLBase::Parse(const G4String& fileName) { + + prename = fileName + "_"; + + try { + + parser->parse(fileName.c_str()); + } + catch (const xercesc::XMLException &e) { + + char* message = xercesc::XMLString::transcode(e.getMessage()); + G4cout << "XML: " << message << G4endl; + xercesc::XMLString::release(&message); + } + catch (const xercesc::DOMException &e) { + + char* message = xercesc::XMLString::transcode(e.getMessage()); + G4cout << "DOM: " << message << G4endl; + xercesc::XMLString::release(&message); + } + + xercesc::DOMDocument* doc = parser->getDocument(); + + if (!doc) G4Exception("GDML: Unable to open document: "+fileName); + + xercesc::DOMElement* element = doc->getDocumentElement(); + + if (!element) G4Exception("GDML: Empty document!"); + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="define" ) defineRead(child); else + if (tag=="materials") materialsRead(child); else + if (tag=="solids" ) solidsRead(child); else + if (tag=="setup" ) setupRead(child); else + if (tag=="structure") structureRead(child); + } +} + +G4PVPlacement* G4GDMLBase::getTopVolume(const G4String& setupName) { + + G4LogicalVolume* volume = getVolume(getSetup(setupName)); + + volume->SetVisAttributes(G4VisAttributes::Invisible); + + return new G4PVPlacement(0,G4ThreeVector(),volume,"",0,0,0); +} diff --git a/source/persistency/gdml/src/G4GDMLDefine.cc b/source/persistency/gdml/src/G4GDMLDefine.cc new file mode 100644 index 0000000000..d509e10b65 --- /dev/null +++ b/source/persistency/gdml/src/G4GDMLDefine.cc @@ -0,0 +1,244 @@ +// +// ******************************************************************** +// * 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: G4GDMLDefine.cc,v 1.14 2007/11/30 13:27:24 ztorzsok Exp $ +// GEANT4 tag $ Name:$ +// +// class G4GDMLDefine Implementation +// +// Original author: Zoltan Torzsok, November 2007 +// +// -------------------------------------------------------------------- + +#include "G4GDMLDefine.hh" + +void G4GDMLDefine::constantRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String value; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="value") value = attribute_value; + } + + eval.defineConstant(name,eval.Evaluate(value)); +} + +void G4GDMLDefine::positionRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String unit("1"); + G4String x; + G4String y; + G4String z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="unit") unit = attribute_value; else + if (attribute_name=="x") x = attribute_value; else + if (attribute_name=="y") y = attribute_value; else + if (attribute_name=="z") z = attribute_value; + } + + G4double _unit = eval.Evaluate(unit); + + G4double _x = eval.Evaluate(x)*_unit; + G4double _y = eval.Evaluate(y)*_unit; + G4double _z = eval.Evaluate(z)*_unit; + + positionMap[GenerateName(name)] = new G4ThreeVector(_x,_y,_z); +} + +void G4GDMLDefine::rotationRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String unit("1"); + G4String x; + G4String y; + G4String z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="unit") unit = attribute_value; else + if (attribute_name=="x") x = attribute_value; else + if (attribute_name=="y") y = attribute_value; else + if (attribute_name=="z") z = attribute_value; + } + + G4double _unit = eval.Evaluate(unit); + + G4double _x = eval.Evaluate(x)*_unit; + G4double _y = eval.Evaluate(y)*_unit; + G4double _z = eval.Evaluate(z)*_unit; + + rotationMap[GenerateName(name)] = new G4ThreeVector(_x,_y,_z); +} + +void G4GDMLDefine::scaleRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String x; + G4String y; + G4String z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="x") x = attribute_value; else + if (attribute_name=="y") y = attribute_value; else + if (attribute_name=="z") z = attribute_value; + } + + G4double _x = eval.Evaluate(x); + G4double _y = eval.Evaluate(y); + G4double _z = eval.Evaluate(z); + + scaleMap[GenerateName(name)] = new G4ThreeVector(_x,_y,_z); +} + +void G4GDMLDefine::variableRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String value; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="value") value = attribute_value; + } + + eval.defineVariable(name,eval.Evaluate(value)); +} + +void G4GDMLDefine::defineRead(const xercesc::DOMElement* const element) { + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="constant") constantRead(child); else + if (tag=="position") positionRead(child); else + if (tag=="rotation") rotationRead(child); else + if (tag=="scale") scaleRead(child); else + if (tag=="variable") variableRead(child); else + G4Exception("GDML: Unknown tag in define: "+tag); + } +} + +G4ThreeVector* G4GDMLDefine::getPosition(const G4String& ref) { + + if (positionMap.find(ref) != positionMap.end()) return positionMap[ref]; + + G4Exception("GDML: Referenced position '"+ref+"' was not found!"); + + return 0; +} + +G4ThreeVector* G4GDMLDefine::getRotation(const G4String& ref) { + + if (rotationMap.find(ref) != rotationMap.end()) return rotationMap[ref]; + + G4Exception("GDML: Referenced rotation '"+ref+"' was not found!"); + + return 0; +} + +G4ThreeVector* G4GDMLDefine::getScale(const G4String& ref) { + + if (scaleMap.find(ref) != scaleMap.end()) return scaleMap[ref]; + + G4Exception("GDML: Referenced scale '"+ref+"' was not found!"); + + return 0; +} diff --git a/source/persistency/gdml/src/G4GDMLEvaluator.cc b/source/persistency/gdml/src/G4GDMLEvaluator.cc new file mode 100644 index 0000000000..763538baa9 --- /dev/null +++ b/source/persistency/gdml/src/G4GDMLEvaluator.cc @@ -0,0 +1,105 @@ +// +// ******************************************************************** +// * 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: G4GDMLEvaluator.cc,v 1.11 2007/11/28 10:27:18 ztorzsok Exp $ +// GEANT4 tag $ Name:$ +// +// class G4GDMLEvaluator Implementation +// +// Original author: Zoltan Torzsok, November 2007 +// +// -------------------------------------------------------------------- + +#include "G4GDMLEvaluator.hh" + +G4GDMLEvaluator::G4GDMLEvaluator() { + + eval.clear(); + eval.setStdMath(); + eval.setSystemOfUnits(1.e+3,1./1.60217733e-25,1.e+9,1./1.60217733e-10,1.0,1.0,1.0); +} + +void G4GDMLEvaluator::defineConstant(const G4String& name,G4double value) { + + if (eval.findVariable(name)) G4Exception("GDML: Constant or variable '"+name+"' is already defined!"); + + eval.setVariable(name.c_str(),value); +} + +void G4GDMLEvaluator::defineVariable(const G4String& name,G4double value) { + + if (eval.findVariable(name)) G4Exception("GDML: Constant or variable '"+name+"' is already defined!"); + + eval.setVariable(name.c_str(),value); + variableList.push_back(name); +} + +void G4GDMLEvaluator::setVariable(const G4String& name,G4double value) { + + checkVariable(name); + + eval.setVariable(name.c_str(),value); +} + +void G4GDMLEvaluator::checkVariable(const G4String& name) { + + for (std::vector::iterator iter = variableList.begin(); iter != variableList.end(); iter++) { + + if (name == *iter) return; + } + + G4Exception("GDML: Variable '"+name+"' is not defined!"); +} + +G4double G4GDMLEvaluator::Evaluate(const G4String& expression) { + + G4double value = 0.0; + + if (!expression.empty()) { + + value = eval.evaluate(expression.c_str()); + + if (eval.status() != HepTool::Evaluator::OK) { + + eval.print_error(); + G4Exception("Error in evaluator!"); + } + } + + return value; +} + +G4int G4GDMLEvaluator::EvaluateInteger(const G4String& expression) { + + G4double value = Evaluate(expression); + + G4int whole = (G4int)value; + G4double frac = value - (G4double)whole; + + if (frac != 0.0) G4Exception("GDML: Expression '"+expression+"' is expected to have an integer value!"); + + return whole; +} diff --git a/source/persistency/gdml/src/G4GDMLMaterials.cc b/source/persistency/gdml/src/G4GDMLMaterials.cc new file mode 100644 index 0000000000..f7a95333fd --- /dev/null +++ b/source/persistency/gdml/src/G4GDMLMaterials.cc @@ -0,0 +1,332 @@ +// +// ******************************************************************** +// * 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: G4GDMLMaterials.cc,v 1.12 2007/11/30 15:20:00 gcosmo Exp $ +// GEANT4 tag $ Name:$ +// +// class G4GDMLMaterials Implementation +// +// Original author: Zoltan Torzsok, November 2007 +// +// -------------------------------------------------------------------- + +#include "G4GDMLMaterials.hh" + +G4double G4GDMLMaterials::atomRead(const xercesc::DOMElement* const element) { + + G4String value; + G4String unit("g/mole"); + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="value") value = attribute_value; else + if (attribute_name=="unit") unit = attribute_value; + } + + return eval.Evaluate(value)*eval.Evaluate(unit); +} + +G4double G4GDMLMaterials::DRead(const xercesc::DOMElement* const element) { + + G4String value; + G4String unit("g/cm3"); + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="value") value = attribute_value; else + if (attribute_name=="unit") unit = attribute_value; + } + + return eval.Evaluate(value)*eval.Evaluate(unit); +} + +void G4GDMLMaterials::elementRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String formula; + G4String Z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="formula") formula = attribute_value; else + if (attribute_name=="Z") Z = attribute_value; + } + + G4double _Z = eval.Evaluate(Z); + G4double _a = 0; + + G4int nComponents = 0; + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="atom") _a = atomRead(child); else + if (tag=="fraction") nComponents++; else + G4Exception("GDML: Unknown tag in element: "+tag); + } + + if (nComponents>0) mixtureRead(element,new G4Element(GenerateName(name),formula,nComponents)); + else new G4Element(GenerateName(name),formula,_Z,_a); +} + +G4double G4GDMLMaterials::fractionRead(const xercesc::DOMElement* const element,G4String& ref) { + + G4String n; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="n") n = attribute_value; else + if (attribute_name=="ref") ref = attribute_value; + } + + return eval.Evaluate(n); +} + +void G4GDMLMaterials::isotopeRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String Z; + G4String N; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="Z") Z = attribute_value; else + if (attribute_name=="N") N = attribute_value; + } + + G4double __Z = eval.Evaluate(Z); + G4double __N = eval.Evaluate(N); + G4double __a = 0; + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="atom") __a = atomRead(child); + } + + new G4Isotope(GenerateName(name),(G4int)__Z,(G4int)__N,__a); +} + +void G4GDMLMaterials::materialRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String Z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="Z") Z = attribute_value; + } + + G4double _Z = eval.Evaluate(Z); + G4double _D = 0.0; + G4double _a = 0.0; + + G4int nComponents = 0; + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="D") _D = DRead(child); else + if (tag=="atom") _a = atomRead(child); else + if (tag=="fraction") nComponents++; else + G4Exception("GDML: Unknown tag in material: "+tag); + } + + if (nComponents>0) mixtureRead(element,new G4Material(GenerateName(name),_D,nComponents)); + else new G4Material(GenerateName(name),_Z,_a,_D); +} + +void G4GDMLMaterials::mixtureRead(const xercesc::DOMElement *const element,G4Element *ele) { + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="fraction") { + + G4String ref; + G4double _n = fractionRead(child,ref); + + ele->AddIsotope(getIsotope(GenerateName(ref)),_n); + } else G4Exception("GDML: Unknown tag in mixture element: "+tag); + } +} + +void G4GDMLMaterials::mixtureRead(const xercesc::DOMElement *const element,G4Material *material) { + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="D") { /*already processed*/ } else + if (tag=="fraction") { + + G4String ref; + G4double _n = fractionRead(child,ref); + + G4Material *materialPtr = G4Material::GetMaterial(GenerateName(ref),false); + G4Element *elementPtr = G4Element::GetElement(GenerateName(ref),false); + + if (materialPtr != 0) material->AddMaterial(materialPtr,_n); else + if (elementPtr != 0) material->AddElement(elementPtr,_n); + + if ((materialPtr == 0) && (elementPtr == 0)) G4Exception("GDML: Referenced material/element '"+GenerateName(ref)+"' was not found!"); + } else G4Exception("GDML: Unknown tag in mixture material: "+tag); + } +} + +void G4GDMLMaterials::materialsRead(const xercesc::DOMElement* const element) { + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="element") elementRead(child); else + if (tag=="isotope") isotopeRead(child); else + if (tag=="material") materialRead(child); else + G4Exception("GDML: Unknown tag in materials: "+tag); + } +} + +G4Isotope* G4GDMLMaterials::getIsotope(const G4String& ref) const { + + G4Isotope* isotopePtr = G4Isotope::GetIsotope(ref,false); + + if (!isotopePtr) G4Exception("GDML: Referenced isotope '"+ref+"' was not found!"); + + return isotopePtr; +} + +G4Material* G4GDMLMaterials::getMaterial(const G4String& ref) const { + + G4Material *materialPtr = G4Material::GetMaterial(ref,false); + + if (!materialPtr) G4Exception("GDML: Referenced material '"+ref+"' was not found!"); + + return materialPtr; +} diff --git a/source/persistency/gdml/src/G4GDMLParser.cc b/source/persistency/gdml/src/G4GDMLParser.cc new file mode 100644 index 0000000000..9d2aba01d0 --- /dev/null +++ b/source/persistency/gdml/src/G4GDMLParser.cc @@ -0,0 +1,26 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#include "G4GDMLParser.hh" diff --git a/source/persistency/gdml/src/G4GDMLSetup.cc b/source/persistency/gdml/src/G4GDMLSetup.cc new file mode 100644 index 0000000000..501f2dace5 --- /dev/null +++ b/source/persistency/gdml/src/G4GDMLSetup.cc @@ -0,0 +1,83 @@ +// +// ******************************************************************** +// * 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: G4GDMLSetup.cc,v 1.11 2007/11/29 13:13:06 ztorzsok Exp $ +// GEANT4 tag $ Name:$ +// +// class G4GDMLSetup Implementation +// +// Original author: Zoltan Torzsok, November 2007 +// +// -------------------------------------------------------------------- + +#include "G4GDMLSetup.hh" + +G4String G4GDMLSetup::getSetup(const G4String& ref) { + + if (setupMap.find(ref) == setupMap.end()) + G4Exception("GDML: Referenced setup '"+ref+"' was not found!"); + + return setupMap[ref]; +} + +void G4GDMLSetup::setupRead(const xercesc::DOMElement* const element) { + + G4String name; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; + } + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag != "world") continue; + + XMLCh *ref_attr = xercesc::XMLString::transcode("ref"); + G4String ref = xercesc::XMLString::transcode(child->getAttribute(ref_attr)); + xercesc::XMLString::release(&ref_attr); + + setupMap[name] = GenerateName(ref); + } +} diff --git a/source/persistency/gdml/src/G4GDMLSolids.cc b/source/persistency/gdml/src/G4GDMLSolids.cc new file mode 100644 index 0000000000..f44b67bc0e --- /dev/null +++ b/source/persistency/gdml/src/G4GDMLSolids.cc @@ -0,0 +1,1389 @@ +// +// ******************************************************************** +// * 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: G4GDMLSolids.cc,v 1.23 2007/11/30 14:51:20 ztorzsok Exp $ +// GEANT4 tag $ Name:$ +// +// class G4GDMLSolids Implementation +// +// Original author: Zoltan Torzsok, November 2007 +// +// -------------------------------------------------------------------- + +#include "G4GDMLSolids.hh" + +void G4GDMLSolids::booleanRead(const xercesc::DOMElement* const element,const BooleanOp op) { + + G4String name; + G4String first; + G4String second; + + G4ThreeVector position; + G4ThreeVector rotation; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; + } + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="first") first = refRead(child); else + if (tag=="second") second = refRead(child); else + if (tag=="position") position = positionRead(child); else + if (tag=="rotation") rotation = rotationRead(child); else + G4Exception("GDML: Unknown tag in boolean solid: "+tag); + } + + G4RotationMatrix rot; + + rot.rotateX(rotation.x()); + rot.rotateY(rotation.y()); + rot.rotateZ(rotation.z()); + + G4Transform3D transform(rot,position); + + G4VSolid* firstSolid = getSolid(GenerateName(first)); + G4VSolid* secondSolid = getSolid(GenerateName(second)); + + if (op==UNION) new G4UnionSolid(GenerateName(name),firstSolid,secondSolid,transform); else + if (op==SUBTRACTION) new G4SubtractionSolid(GenerateName(name),firstSolid,secondSolid,transform); else + if (op==INTERSECTION) new G4IntersectionSolid(GenerateName(name),firstSolid,secondSolid,transform); +} + +void G4GDMLSolids::boxRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String x; + G4String y; + G4String z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name" ) name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="x") x = attribute_value; else + if (attribute_name=="y") y = attribute_value; else + if (attribute_name=="z") z = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + + G4double _x = eval.Evaluate(x)*_lunit; + G4double _y = eval.Evaluate(y)*_lunit; + G4double _z = eval.Evaluate(z)*_lunit; + + _x *= 0.5; + _y *= 0.5; + _z *= 0.5; + + new G4Box(GenerateName(name),_x,_y,_z); +} + +void G4GDMLSolids::coneRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String aunit("1"); + G4String rmin1; + G4String rmax1; + G4String rmin2; + G4String rmax2; + G4String z; + G4String startphi; + G4String deltaphi; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="aunit") aunit = attribute_value; else + if (attribute_name=="rmin1") rmin1 = attribute_value; else + if (attribute_name=="rmax1") rmax1 = attribute_value; else + if (attribute_name=="rmin2") rmin2 = attribute_value; else + if (attribute_name=="rmax2") rmax2 = attribute_value; else + if (attribute_name=="z") z = attribute_value; else + if (attribute_name=="startphi") startphi = attribute_value; else + if (attribute_name=="deltaphi") deltaphi = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + G4double _aunit = eval.Evaluate(aunit); + + G4double _rmin1 = eval.Evaluate(rmin1)*_lunit; + G4double _rmax1 = eval.Evaluate(rmax1)*_lunit; + G4double _rmin2 = eval.Evaluate(rmin2)*_lunit; + G4double _rmax2 = eval.Evaluate(rmax2)*_lunit; + G4double _z = eval.Evaluate(z)*_lunit; + G4double _startphi = eval.Evaluate(startphi)*_aunit; + G4double _deltaphi = eval.Evaluate(deltaphi)*_aunit;; + + _z *= 0.5; + + new G4Cons(GenerateName(name),_rmin1,_rmax1,_rmin2,_rmax2,_z,_startphi,_deltaphi); +} + +void G4GDMLSolids::ellipsoidRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String ax; + G4String by; + G4String cz; + G4String zcut1; + G4String zcut2; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="ax") ax = attribute_value; else + if (attribute_name=="by") by = attribute_value; else + if (attribute_name=="cz") cz = attribute_value; else + if (attribute_name=="zcut1") zcut1 = attribute_value; else + if (attribute_name=="zcut2") zcut2 = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + + G4double _ax = eval.Evaluate(ax)*_lunit; + G4double _by = eval.Evaluate(by)*_lunit; + G4double _cz = eval.Evaluate(cz)*_lunit; + G4double _zcut1 = eval.Evaluate(zcut1)*_lunit; + G4double _zcut2 = eval.Evaluate(zcut2)*_lunit; + + new G4Ellipsoid(GenerateName(name),_ax,_by,_cz,_zcut1,_zcut2); +} + +void G4GDMLSolids::eltubeRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String dx; + G4String dy; + G4String dz; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="dx") dx = attribute_value; else + if (attribute_name=="dy") dy = attribute_value; else + if (attribute_name=="dz") dz = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + + G4double _dx = eval.Evaluate(dx)*_lunit; + G4double _dy = eval.Evaluate(dy)*_lunit; + G4double _dz = eval.Evaluate(dz)*_lunit; + + new G4EllipticalTube(GenerateName(name),_dx,_dy,_dz); +} + +void G4GDMLSolids::hypeRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String aunit("1"); + G4String rmin; + G4String rmax; + G4String inst; + G4String outst; + G4String z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="aunit") aunit = attribute_value; else + if (attribute_name=="rmin") rmin = attribute_value; else + if (attribute_name=="rmax") rmax = attribute_value; else + if (attribute_name=="inst") inst = attribute_value; else + if (attribute_name=="outst") outst = attribute_value; else + if (attribute_name=="z") z = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + G4double _aunit = eval.Evaluate(aunit); + + G4double _rmin = eval.Evaluate(rmin)*_lunit; + G4double _rmax = eval.Evaluate(rmax)*_lunit;; + G4double _inst = eval.Evaluate(inst)*_aunit; + G4double _outst = eval.Evaluate(outst)*_aunit; + G4double _z = eval.Evaluate(z)*_lunit; + + _z *= 0.5; + + new G4Hype(GenerateName(name),_rmin,_rmax,_inst,_outst,_z); +} + +void G4GDMLSolids::loopRead(const xercesc::DOMElement* const element) { + + G4String var; + G4String from; + G4String to; + G4String step; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="var") var = attribute_value; else + if (attribute_name=="from") from = attribute_value; else + if (attribute_name=="to") to = attribute_value; else + if (attribute_name=="step") step = attribute_value; + } + + eval.checkVariable(var); + + G4int _var = eval.EvaluateInteger(var); + G4int _from = eval.EvaluateInteger(from); + G4int _to = eval.EvaluateInteger(to); + G4int _step = eval.EvaluateInteger(step); + + if (!from.empty()) _var = _from; + + while (_var <= _to) { + + eval.setVariable(var,_var); + solidsRead(element); + + _var += _step; + } +} + +void G4GDMLSolids::orbRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String r; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="r") r = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + + G4double _r = eval.Evaluate(r)*_lunit; + + new G4Orb(GenerateName(name),_r); +} + +void G4GDMLSolids::paraRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String aunit("1"); + G4String x; + G4String y; + G4String z; + G4String alpha; + G4String theta; + G4String phi; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name" ) name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="aunit") aunit = attribute_value; else + if (attribute_name=="x") x = attribute_value; else + if (attribute_name=="y") y = attribute_value; else + if (attribute_name=="z") z = attribute_value; else + if (attribute_name=="alpha") alpha = attribute_value; else + if (attribute_name=="theta") theta = attribute_value; else + if (attribute_name=="phi") phi = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + G4double _aunit = eval.Evaluate(aunit); + + G4double _x = eval.Evaluate(x)*_lunit; + G4double _y = eval.Evaluate(y)*_lunit; + G4double _z = eval.Evaluate(z)*_lunit; + G4double _alpha = eval.Evaluate(alpha)*_aunit; + G4double _theta = eval.Evaluate(theta)*_aunit; + G4double _phi = eval.Evaluate(phi)*_aunit; + + _x *= 0.5; + _y *= 0.5; + _z *= 0.5; + + new G4Para(GenerateName(name),_x,_y,_z,_alpha,_theta,_phi); +} + +void G4GDMLSolids::polyconeRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String aunit("1"); + G4String startphi; + G4String deltaphi; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="aunit") aunit = attribute_value; else + if (attribute_name=="startphi") startphi = attribute_value; else + if (attribute_name=="deltaphi") deltaphi = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + G4double _aunit = eval.Evaluate(aunit); + + G4double _startphi = eval.Evaluate(startphi)*_aunit; + G4double _deltaphi = eval.Evaluate(deltaphi)*_aunit; + + std::vector zplaneList; + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="zplane") zplaneList.push_back(zplaneRead(child,_lunit)); + } + + G4int numZPlanes = zplaneList.size(); + + G4double *rmin_array = new G4double[numZPlanes]; + G4double *rmax_array = new G4double[numZPlanes]; + G4double* z_array = new G4double[numZPlanes]; + + for (G4int i=0;igetAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="aunit" ) aunit = attribute_value; else + if (attribute_name=="startphi") startphi = attribute_value; else + if (attribute_name=="deltaphi") deltaphi = attribute_value; else + if (attribute_name=="numsides") numsides = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + G4double _aunit = eval.Evaluate(aunit); + + G4double _startphi = eval.Evaluate(startphi)*_aunit; + G4double _deltaphi = eval.Evaluate(deltaphi)*_aunit; + + G4int _numsides = eval.EvaluateInteger(numsides); + + std::vector zplaneList; + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="zplane") zplaneList.push_back(zplaneRead(child,_lunit)); + } + + G4int numZPlanes = zplaneList.size(); + + G4double *rmin_array = new G4double[numZPlanes]; + G4double *rmax_array = new G4double[numZPlanes]; + G4double* z_array = new G4double[numZPlanes]; + + for (G4int i=0;igetAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="v1") v1 = attribute_value; else + if (attribute_name=="v2") v2 = attribute_value; else + if (attribute_name=="v3") v3 = attribute_value; else + if (attribute_name=="v4") v4 = attribute_value; else + if (attribute_name=="type") type = attribute_value; + } + + const G4ThreeVector* ptr1 = getPosition(GenerateName(v1)); + const G4ThreeVector* ptr2 = getPosition(GenerateName(v2)); + const G4ThreeVector* ptr3 = getPosition(GenerateName(v3)); + const G4ThreeVector* ptr4 = getPosition(GenerateName(v4)); + + return new G4QuadrangularFacet(*ptr1,*ptr2,*ptr3,*ptr4,(type=="RELATIVE")?(RELATIVE):(ABSOLUTE)); +} + +G4String G4GDMLSolids::refRead(const xercesc::DOMElement* const element) { + + G4String ref; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="ref") ref = attribute_value; + } + + return ref; +} + +void G4GDMLSolids::reflectedSolidRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String aunit("1"); + G4String solid; + G4String sx; + G4String sy; + G4String sz; + G4String rx; + G4String ry; + G4String rz; + G4String dx; + G4String dy; + G4String dz; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name" ) name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="aunit") aunit = attribute_value; else + if (attribute_name=="solid") solid = attribute_value; else + if (attribute_name=="sx") sx = attribute_value; else + if (attribute_name=="sy") sy = attribute_value; else + if (attribute_name=="sz") sz = attribute_value; else + if (attribute_name=="rx") rx = attribute_value; else + if (attribute_name=="ry") ry = attribute_value; else + if (attribute_name=="rz") rz = attribute_value; else + if (attribute_name=="dx") dx = attribute_value; else + if (attribute_name=="dy") dy = attribute_value; else + if (attribute_name=="dz") dz = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + G4double _aunit = eval.Evaluate(aunit); + + G4double _sx = eval.Evaluate(sx); + G4double _sy = eval.Evaluate(sy); + G4double _sz = eval.Evaluate(sz); + G4double _rx = eval.Evaluate(rx)*_aunit; + G4double _ry = eval.Evaluate(ry)*_aunit; + G4double _rz = eval.Evaluate(rz)*_aunit; + G4double _dx = eval.Evaluate(dx)*_lunit; + G4double _dy = eval.Evaluate(dy)*_lunit; + G4double _dz = eval.Evaluate(dz)*_lunit; + + G4VSolid* solidPtr = getSolid(GenerateName(solid)); + + G4RotationMatrix rot; + + rot.rotateX(_rx); + rot.rotateY(_ry); + rot.rotateZ(_rz); + + G4ThreeVector trans(_dx,_dy,_dz); + + G4Scale3D scale(_sx,_sy,_sz); + + G4Transform3D transform(rot,trans); + transform = transform*scale; + + new G4ReflectedSolid(GenerateName(name),solidPtr,transform); +} + +G4ExtrudedSolid::ZSection G4GDMLSolids::sectionRead(const xercesc::DOMElement* const element,G4double _lunit) { + + G4String zPosition; + G4String xOffset; + G4String yOffset; + G4String scalingFactor; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="zPosition") zPosition = attribute_value; else + if (attribute_name=="xOffset") xOffset = attribute_value; else + if (attribute_name=="yOffset") yOffset = attribute_value; else + if (attribute_name=="scalingFactor") scalingFactor = attribute_value; + } + + G4double _zPosition = eval.Evaluate(zPosition)*_lunit; + G4double _xOffset = eval.Evaluate(xOffset)*_lunit; + G4double _yOffset = eval.Evaluate(yOffset)*_lunit; + G4double _scalingFactor = eval.Evaluate(scalingFactor); + + return G4ExtrudedSolid::ZSection(_zPosition,G4TwoVector(_xOffset,_yOffset),_scalingFactor); +} + +void G4GDMLSolids::sphereRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String aunit("1"); + G4String rmin; + G4String rmax; + G4String startphi; + G4String deltaphi; + G4String starttheta; + G4String deltatheta; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="aunit") aunit = attribute_value; else + if (attribute_name=="rmin") rmin = attribute_value; else + if (attribute_name=="rmax") rmax = attribute_value; else + if (attribute_name=="startphi") startphi = attribute_value; else + if (attribute_name=="deltaphi") deltaphi = attribute_value; else + if (attribute_name=="starttheta") starttheta = attribute_value; else + if (attribute_name=="deltatheta") deltatheta = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + G4double _aunit = eval.Evaluate(aunit); + + G4double _rmin = eval.Evaluate(rmin)*_lunit; + G4double _rmax = eval.Evaluate(rmax)*_lunit; + G4double _startphi = eval.Evaluate(startphi)*_aunit; + G4double _deltaphi = eval.Evaluate(deltaphi)*_aunit; + G4double _starttheta = eval.Evaluate(starttheta)*_aunit; + G4double _deltatheta = eval.Evaluate(deltatheta)*_aunit; + + new G4Sphere(GenerateName(name),_rmin,_rmax,_startphi,_deltaphi,_starttheta,_deltatheta); +} + +void G4GDMLSolids::tessellatedRead(const xercesc::DOMElement* const element) { + + G4String name; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; + } + + G4TessellatedSolid *tessellated = new G4TessellatedSolid(GenerateName(name)); + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="triangular") tessellated->AddFacet(triangularRead(child)); else + if (tag=="quadrangular") tessellated->AddFacet(quadrangularRead(child)); + } + + tessellated->SetSolidClosed(true); +} + +void G4GDMLSolids::tetRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String vertex1; + G4String vertex2; + G4String vertex3; + G4String vertex4; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="vertex1") vertex1 = attribute_value; else + if (attribute_name=="vertex2") vertex2 = attribute_value; else + if (attribute_name=="vertex3") vertex3 = attribute_value; else + if (attribute_name=="vertex4") vertex4 = attribute_value; + } + + const G4ThreeVector* ptr1 = getPosition(GenerateName(vertex1)); + const G4ThreeVector* ptr2 = getPosition(GenerateName(vertex2)); + const G4ThreeVector* ptr3 = getPosition(GenerateName(vertex3)); + const G4ThreeVector* ptr4 = getPosition(GenerateName(vertex4)); + + new G4Tet(GenerateName(name),*ptr1,*ptr2,*ptr3,*ptr4); +} + +void G4GDMLSolids::torusRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String aunit("1"); + G4String rmin; + G4String rmax; + G4String rtor; + G4String startphi; + G4String deltaphi; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="aunit") aunit = attribute_value; else + if (attribute_name=="rmin") rmin = attribute_value; else + if (attribute_name=="rmax") rmax = attribute_value; else + if (attribute_name=="rtor") rtor = attribute_value; else + if (attribute_name=="startphi") startphi = attribute_value; else + if (attribute_name=="deltaphi") deltaphi = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + G4double _aunit = eval.Evaluate(aunit); + + G4double _rmin = eval.Evaluate(rmin)*_lunit; + G4double _rmax = eval.Evaluate(rmax)*_lunit; + G4double _rtor = eval.Evaluate(rtor)*_lunit; + G4double _startphi = eval.Evaluate(startphi)*_aunit; + G4double _deltaphi = eval.Evaluate(deltaphi)*_aunit; + + new G4Torus(GenerateName(name),_rmin,_rmax,_rtor,_startphi,_deltaphi); +} + +void G4GDMLSolids::trapRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String aunit("1"); + G4String z; + G4String theta; + G4String phi; + G4String y1; + G4String x1; + G4String x2; + G4String alpha1; + G4String y2; + G4String x3; + G4String x4; + G4String alpha2; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="aunit") aunit = attribute_value; else + if (attribute_name=="z") z = attribute_value; else + if (attribute_name=="theta") theta = attribute_value; else + if (attribute_name=="phi") phi = attribute_value; else + if (attribute_name=="y1") y1 = attribute_value; else + if (attribute_name=="x1") x1 = attribute_value; else + if (attribute_name=="x2") x2 = attribute_value; else + if (attribute_name=="alpha1") alpha1 = attribute_value; else + if (attribute_name=="y2") y2 = attribute_value; else + if (attribute_name=="x3") x3 = attribute_value; else + if (attribute_name=="x4") x4 = attribute_value; else + if (attribute_name=="alpha2") alpha2 = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + G4double _aunit = eval.Evaluate(aunit); + + G4double _z = eval.Evaluate(z)*_lunit; + G4double _theta = eval.Evaluate(theta)*_aunit; + G4double _phi = eval.Evaluate(phi)*_aunit; + G4double _y1 = eval.Evaluate(y1)*_lunit; + G4double _x1 = eval.Evaluate(x1)*_lunit; + G4double _x2 = eval.Evaluate(x2)*_lunit; + G4double _alpha1 = eval.Evaluate(alpha1)*_aunit; + G4double _y2 = eval.Evaluate(y2)*_lunit; + G4double _x3 = eval.Evaluate(x3)*_lunit; + G4double _x4 = eval.Evaluate(x4)*_lunit; + G4double _alpha2 = eval.Evaluate(alpha2)*_aunit; + + _z *= 0.5; + _y1 *= 0.5; + _x1 *= 0.5; + _x2 *= 0.5; + _y2 *= 0.5; + _x3 *= 0.5; + _x4 *= 0.5; + + new G4Trap(GenerateName(name),_z,_theta,_phi,_y1,_x1,_x2,_alpha1,_y2,_x3,_x4,_alpha2); +} + +void G4GDMLSolids::trdRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String x1; + G4String x2; + G4String y1; + G4String y2; + G4String z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="x1") x1 = attribute_value; else + if (attribute_name=="x2") x2 = attribute_value; else + if (attribute_name=="y1") y1 = attribute_value; else + if (attribute_name=="y2") y2 = attribute_value; else + if (attribute_name=="z") z = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + + G4double _x1 = eval.Evaluate(x1)*_lunit; + G4double _x2 = eval.Evaluate(x2)*_lunit; + G4double _y1 = eval.Evaluate(y1)*_lunit; + G4double _y2 = eval.Evaluate(y2)*_lunit; + G4double _z = eval.Evaluate(z)*_lunit; + + _x1 *= 0.5; + _x2 *= 0.5; + _y1 *= 0.5; + _y2 *= 0.5; + _z *= 0.5; + + new G4Trd(GenerateName(name),_x1,_x2,_y1,_y2,_z); +} + +G4TriangularFacet* G4GDMLSolids::triangularRead(const xercesc::DOMElement* const element) { + + G4String v1; + G4String v2; + G4String v3; + G4String type; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="v1") v1 = attribute_value; else + if (attribute_name=="v2") v2 = attribute_value; else + if (attribute_name=="v3") v3 = attribute_value; else + if (attribute_name=="type") type = attribute_value; + } + + const G4ThreeVector* ptr1 = getPosition(GenerateName(v1)); + const G4ThreeVector* ptr2 = getPosition(GenerateName(v2)); + const G4ThreeVector* ptr3 = getPosition(GenerateName(v3)); + + return new G4TriangularFacet(*ptr1,*ptr2,*ptr3,(type=="RELATIVE")?(RELATIVE):(ABSOLUTE)); +} + +void G4GDMLSolids::tubeRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + G4String aunit("1"); + G4String rmin; + G4String rmax; + G4String z; + G4String startphi; + G4String deltaphi; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; else + if (attribute_name=="aunit") aunit = attribute_value; else + if (attribute_name=="rmin") rmin = attribute_value; else + if (attribute_name=="rmax") rmax = attribute_value; else + if (attribute_name=="z") z = attribute_value; else + if (attribute_name=="startphi") startphi = attribute_value; else + if (attribute_name=="deltaphi") deltaphi = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + G4double _aunit = eval.Evaluate(aunit); + + G4double _rmin = eval.Evaluate(rmin)*_lunit; + G4double _rmax = eval.Evaluate(rmax)*_lunit; + G4double _z = eval.Evaluate(z)*_lunit; + G4double _startphi = eval.Evaluate(startphi)*_aunit; + G4double _deltaphi = eval.Evaluate(deltaphi)*_aunit; + + _z *= 0.5; + + new G4Tubs(GenerateName(name),_rmin,_rmax,_z,_startphi,_deltaphi); +} + +G4TwoVector G4GDMLSolids::twoDimVertexRead(const xercesc::DOMElement* const element,G4double _lunit) { + + G4String x; + G4String y; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="x") x = attribute_value; else + if (attribute_name=="y") y = attribute_value; + } + + G4double _x = eval.Evaluate(x)*_lunit; + G4double _y = eval.Evaluate(y)*_lunit; + + return G4TwoVector(_x,_y); +} + +void G4GDMLSolids::xtruRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String lunit("1"); + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="lunit") lunit = attribute_value; + } + + G4double _lunit = eval.Evaluate(lunit); + + std::vector twoDimVertexList; + std::vector sectionList; + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="twoDimVertex") twoDimVertexList.push_back(twoDimVertexRead(child,_lunit)); else + if (tag=="section") sectionList.push_back(sectionRead(child,_lunit)); + } + + new G4ExtrudedSolid(GenerateName(name),twoDimVertexList,sectionList); +} + +G4GDMLSolids::zplaneType G4GDMLSolids::zplaneRead(const xercesc::DOMElement* const element,G4double _lunit) { + + G4String rmin; + G4String rmax; + G4String z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="rmin") rmin = attribute_value; else + if (attribute_name=="rmax") rmax = attribute_value; else + if (attribute_name=="z") z = attribute_value; + } + + zplaneType zplane; + + zplane.rmin = eval.Evaluate(rmin)*_lunit; + zplane.rmax = eval.Evaluate(rmax)*_lunit; + zplane.z = eval.Evaluate(z)*_lunit; + + return zplane; +} + +void G4GDMLSolids::solidsRead(const xercesc::DOMElement* const element) { + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="box") boxRead(child); else + if (tag=="cone") coneRead(child); else + if (tag=="ellipsoid") ellipsoidRead(child); else + if (tag=="eltube") eltubeRead(child); else + if (tag=="hype") hypeRead(child); else + if (tag=="loop") loopRead(child); else + if (tag=="orb") orbRead(child); else + if (tag=="para") paraRead(child); else + if (tag=="polycone") polyconeRead(child); else + if (tag=="polyhedra") polyhedraRead(child); else + if (tag=="sphere") sphereRead(child); else + if (tag=="reflectedSolid") reflectedSolidRead(child); else + if (tag=="tessellated") tessellatedRead(child); else + if (tag=="tet") tetRead(child); else + if (tag=="torus") torusRead(child); else + if (tag=="trap") trapRead(child); else + if (tag=="trd") trdRead(child); else + if (tag=="tube") tubeRead(child); else + if (tag=="xtru") xtruRead(child); else + if (tag=="intersection") booleanRead(child,INTERSECTION); else + if (tag=="subtraction") booleanRead(child,SUBTRACTION); else + if (tag=="union") booleanRead(child,UNION); else + G4Exception("GDML: Unknown tag in solids: "+tag); + } +} + +G4ThreeVector G4GDMLSolids::positionRead(const xercesc::DOMElement* const element) { + + G4String unit("1"); + G4String x; + G4String y; + G4String z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="unit") unit = attribute_value; else + if (attribute_name=="x") x = attribute_value; else + if (attribute_name=="y") y = attribute_value; else + if (attribute_name=="z") z = attribute_value; + } + + G4double _unit = eval.Evaluate(unit); + + G4double _x = eval.Evaluate(x)*_unit; + G4double _y = eval.Evaluate(y)*_unit; + G4double _z = eval.Evaluate(z)*_unit; + + return G4ThreeVector(_x,_y,_z); +} + +G4ThreeVector G4GDMLSolids::rotationRead(const xercesc::DOMElement* const element) { + + G4String unit("1"); + G4String x; + G4String y; + G4String z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="unit") unit = attribute_value; else + if (attribute_name=="x") x = attribute_value; else + if (attribute_name=="y") y = attribute_value; else + if (attribute_name=="z") z = attribute_value; + } + + G4double _unit = eval.Evaluate(unit); + + G4double _x = eval.Evaluate(x)*_unit; + G4double _y = eval.Evaluate(y)*_unit; + G4double _z = eval.Evaluate(z)*_unit; + + return G4ThreeVector(_x,_y,_z); +} + +G4ThreeVector G4GDMLSolids::scaleRead(const xercesc::DOMElement* const element) { + + G4String x; + G4String y; + G4String z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="x") x = attribute_value; else + if (attribute_name=="y") y = attribute_value; else + if (attribute_name=="z") z = attribute_value; + } + + G4double _x = eval.Evaluate(x); + G4double _y = eval.Evaluate(y); + G4double _z = eval.Evaluate(z); + + return G4ThreeVector(_x,_y,_z); +} + +G4VSolid* G4GDMLSolids::getSolid(const G4String& ref) const { + + G4VSolid* solidPtr = G4SolidStore::GetInstance()->GetSolid(ref,false); + + if (!solidPtr) G4Exception("GDML: Referenced solid '"+ref+"' was not found!"); + + return solidPtr; +} diff --git a/source/persistency/gdml/src/G4GDMLStructure.cc b/source/persistency/gdml/src/G4GDMLStructure.cc new file mode 100644 index 0000000000..428547582e --- /dev/null +++ b/source/persistency/gdml/src/G4GDMLStructure.cc @@ -0,0 +1,504 @@ +// +// ******************************************************************** +// * 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: G4GDMLStructure.cc,v 1.25 2007/11/30 14:51:20 ztorzsok Exp $ +// GEANT4 tag $ Name:$ +// +// class G4GDMLStructure Implementation +// +// Original author: Zoltan Torzsok, November 2007 +// +// -------------------------------------------------------------------- + +#include "G4GDMLStructure.hh" + +EAxis G4GDMLStructure::directionRead(const xercesc::DOMElement* const element) { + + G4String x; + G4String y; + G4String z; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="x") x = attribute_value; else + if (attribute_name=="y") y = attribute_value; else + if (attribute_name=="z") z = attribute_value; + } + + G4double _x = eval.Evaluate(x); + G4double _y = eval.Evaluate(y); + G4double _z = eval.Evaluate(z); + + if (_x == 1.0 && _y == 0.0 && _z == 0.0) return kXAxis; else + if (_x == 0.0 && _y == 1.0 && _z == 0.0) return kYAxis; else + if (_x == 0.0 && _y == 0.0 && _z == 1.0) return kZAxis; + + G4Exception("GDML: Only directions along axes are supported!"); + + return kZAxis; +} + +void G4GDMLStructure::divisionvolRead(const xercesc::DOMElement* const element,G4LogicalVolume* pMother) { + + G4String unit("1"); + G4String axis; + G4String width; + G4String offset; + G4String number; + G4String volumeref; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="unit") unit = attribute_value; else + if (attribute_name=="axis") axis = attribute_value; else + if (attribute_name=="width") width = attribute_value; else + if (attribute_name=="offset") offset = attribute_value; else + if (attribute_name=="number") number = attribute_value; + } + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="volumeref") volumeref = refRead(child); + } + + G4LogicalVolume* pLogical = getVolume(GenerateName(volumeref)); + + G4double _unit = eval.Evaluate(unit); + + G4double _width = eval.Evaluate(width)*_unit; + G4double _offset = eval.Evaluate(offset)*_unit; + G4double _number = eval.Evaluate(number); + + EAxis _axis = kZAxis; + + if (axis=="kXAxis") _axis = kXAxis; else + if (axis=="kYAxis") _axis = kYAxis; else + if (axis=="kZAxis") _axis = kZAxis; else + if (axis=="kRho") _axis = kRho; else + if (axis=="kPhi") _axis = kPhi; + + new G4PVDivision("",pLogical,pMother,_axis,(G4int)_number,_width,_offset); +} + +G4LogicalVolume* G4GDMLStructure::fileRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String volname; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="name") name = attribute_value; else + if (attribute_name=="volname") volname = attribute_value; + } + + G4GDMLStructure structure; // We create a new structure with a new evaluator + + structure.Parse(name); + + return structure.getVolume(structure.GenerateName(volname)); +} + +void G4GDMLStructure::loopRead(const xercesc::DOMElement* const element) { + + G4String var; + G4String from; + G4String to; + G4String step; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="var") var = attribute_value; else + if (attribute_name=="from") from = attribute_value; else + if (attribute_name=="to") to = attribute_value; else + if (attribute_name=="step") step = attribute_value; + } + + eval.checkVariable(var); + + G4int _var = eval.EvaluateInteger(var ); + G4int _from = eval.EvaluateInteger(from); + G4int _to = eval.EvaluateInteger(to ); + G4int _step = eval.EvaluateInteger(step); + + if (!from.empty()) _var = _from; + + while (_var <= _to) { + + eval.setVariable(var,_var); + structureRead(element); + + _var += _step; + } +} + +void G4GDMLStructure::paramvolRead(const xercesc::DOMElement* const element,G4LogicalVolume *pMotherLogical) { + + pMotherLogical = 0; + + G4String volumeref; + G4String parameterised_position_size; + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="parameterised_position_size") { ; } else + if (tag=="volumeref") volumeref = refRead(child); + } +} + +void G4GDMLStructure::physvolRead(const xercesc::DOMElement* const element,G4LogicalVolume *mother) { + + G4String volumeref; + G4String positionref; + G4String rotationref; + G4String scaleref; + + G4LogicalVolume* logvol = 0; + + G4ThreeVector position; + G4ThreeVector rotation; + G4ThreeVector scale(1.0,1.0,1.0); + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="file") logvol = fileRead(child); else + if (tag=="volumeref") volumeref = refRead(child); else + if (tag=="position") position = positionRead(child); else + if (tag=="rotation") rotation = rotationRead(child); else + if (tag=="scale") scale = scaleRead(child); else + if (tag=="positionref") positionref = refRead(child); else + if (tag=="rotationref") rotationref = refRead(child); else + if (tag=="scaleref") scaleref = refRead(child); + } + + if (!volumeref.empty()) logvol = getVolume(GenerateName(volumeref)); + + if (!positionref.empty()) position = *getPosition(GenerateName(positionref)); + if (!rotationref.empty()) rotation = *getRotation(GenerateName(rotationref)); + if (!scaleref.empty()) scale = *getScale(GenerateName(scaleref)); + + G4RotationMatrix Rot; + + Rot.rotateX(rotation.x()); + Rot.rotateY(rotation.y()); + Rot.rotateZ(rotation.z()); + + G4Transform3D transform(Rot.inverse(),position); + transform = transform*G4Scale3D(scale.x(),scale.y(),scale.z()); + + G4ReflectionFactory::Instance()->Place(transform,"",logvol,mother,false,0); +} + +G4double G4GDMLStructure::quantityRead(const xercesc::DOMElement* const element) { + + G4String value; + G4String unit("1"); + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="value") value = attribute_value; + if (attribute_name=="unit") unit = attribute_value; + } + + return eval.Evaluate(value)*eval.Evaluate(unit); +} + +G4String G4GDMLStructure::refRead(const xercesc::DOMElement* const element) { + + G4String ref; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="ref") ref = attribute_value; + } + + return ref; +} + +void G4GDMLStructure::replicate_along_axisRead(const xercesc::DOMElement* const element,G4double& _width,G4double& _offset,EAxis& _axis) { + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="width") _width = quantityRead(child); else + if (tag=="offset") _offset = quantityRead(child); else + if (tag=="direction") _axis = directionRead(child); + } +} + +void G4GDMLStructure::replicavolRead(const xercesc::DOMElement* const element,G4LogicalVolume* pMother) { + + G4String volumeref; + G4String numb; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="numb") numb = attribute_value; + } + + G4double _numb = eval.Evaluate(numb); + G4double _width = 0.0; + G4double _offset = 0.0; + EAxis _axis; + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="volumeref") volumeref = refRead(child); else + if (tag=="replicate_along_axis") replicate_along_axisRead(child,_width,_offset,_axis); + } + + G4LogicalVolume* pLogical = getVolume(GenerateName(volumeref)); + + new G4PVReplica("",pLogical,pMother,_axis,(G4int)_numb,_width,_offset); +} + +void G4GDMLStructure::volumeRead(const xercesc::DOMElement* const element) { + + G4String name; + G4String solidref; + G4String materialref; + + XMLCh *name_attr = xercesc::XMLString::transcode("name"); + name = xercesc::XMLString::transcode(element->getAttribute(name_attr)); + xercesc::XMLString::release(&name_attr); + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="materialref") materialref = refRead(child); else + if (tag=="solidref") solidref = refRead(child); + } + + G4Material* materialPtr = getMaterial(GenerateName(materialref)); + G4VSolid* solidPtr = getSolid(GenerateName(solidref)); + + volume_contentRead(element,new G4LogicalVolume(solidPtr,materialPtr,GenerateName(name),0,0,0)); +} + +void G4GDMLStructure::volume_contentRead(const xercesc::DOMElement* const element,G4LogicalVolume* volumePtr) { + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="loop") volume_loopRead(child,volumePtr); else + if (tag=="paramvol") paramvolRead(child,volumePtr); else + if (tag=="physvol") physvolRead(child,volumePtr); else + if (tag=="replicavol") replicavolRead(child,volumePtr); else + if (tag=="divisionvol") divisionvolRead(child,volumePtr); + } +} + +void G4GDMLStructure::volume_loopRead(const xercesc::DOMElement* const element,G4LogicalVolume* volumePtr) { + + G4String var; + G4String from; + G4String to; + G4String step; + + const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes(); + XMLSize_t attributeCount = attributes->getLength(); + + for (XMLSize_t attribute_index=0;attribute_indexitem(attribute_index); + + if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) continue; + + const xercesc::DOMAttr* const attribute = dynamic_cast(attribute_node); + + const G4String attribute_name = xercesc::XMLString::transcode(attribute->getName()); + const G4String attribute_value = xercesc::XMLString::transcode(attribute->getValue()); + + if (attribute_name=="var") var = attribute_value; else + if (attribute_name=="from") from = attribute_value; else + if (attribute_name=="to") to = attribute_value; else + if (attribute_name=="step") step = attribute_value; + } + + eval.checkVariable(var); + + G4int _var = eval.EvaluateInteger(var); + G4int _from = eval.EvaluateInteger(from); + G4int _to = eval.EvaluateInteger(to); + G4int _step = eval.EvaluateInteger(step); + + if (!from.empty()) _var = _from; + + while (_var <= _to) { + + eval.setVariable(var,_var); + volume_contentRead(element,volumePtr); + + _var += _step; + } +} + +void G4GDMLStructure::structureRead(const xercesc::DOMElement* const element) { + + for (xercesc::DOMNode* iter = element->getFirstChild();iter != 0;iter = iter->getNextSibling()) { + + if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) continue; + + const xercesc::DOMElement* const child = dynamic_cast(iter); + + const G4String tag = xercesc::XMLString::transcode(child->getTagName()); + + if (tag=="loop") loopRead(child); else + if (tag=="volume") volumeRead(child); else + G4Exception("GDML: Unknown tag in structure: "+tag); + } +} + +G4LogicalVolume* G4GDMLStructure::getVolume(const G4String& ref) const { + + G4LogicalVolume *volumePtr = G4LogicalVolumeStore::GetInstance()->GetVolume(ref,false); + + if (!volumePtr) G4Exception("GDML: Referenced volume '"+ref+"' was not found!"); + + return volumePtr; +} diff --git a/source/persistency/mctruth/GNUmakefile b/source/persistency/mctruth/GNUmakefile new file mode 100644 index 0000000000..c1eea4eb26 --- /dev/null +++ b/source/persistency/mctruth/GNUmakefile @@ -0,0 +1,33 @@ +# $Id: GNUmakefile,v 1.1 2007/10/17 09:33:17 gcosmo Exp $ +# ----------------------------------------------------------------------- +# GNUmakefile for persistency library. Gabriele Cosmo, 16/11/96. +# ----------------------------------------------------------------------- + +name := G4mctruth + +ifndef G4INSTALL + G4INSTALL = ../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +CPPFLAGS += -I$(G4INSTALL)/source/global/management/include \ + -I$(G4INSTALL)/source/global/HEPGeometry/include \ + -I$(G4INSTALL)/source/digits_hits/hits/include \ + -I$(G4INSTALL)/source/digits_hits/digits/include \ + -I$(G4INSTALL)/source/particles/management/include \ + -I$(G4INSTALL)/source/run/include \ + -I$(G4INSTALL)/source/event/include \ + -I$(G4INSTALL)/source/track/include \ + -I$(G4INSTALL)/source/tracking/include \ + -I$(G4INSTALL)/source/intercoms/include \ + -I$(G4INSTALL)/source/geometry/management/include +ifdef G4LIB_USE_HEPMC + ifndef HEPMC_DIR + @echo HEPMC_DIR not defined! + endif + CPPFLAGS += -I$(HEPMC_DIR)/include +endif + +include $(G4INSTALL)/config/common.gmk + diff --git a/source/persistency/include/G4DCIOcatalog.hh b/source/persistency/mctruth/include/G4DCIOcatalog.hh similarity index 100% rename from source/persistency/include/G4DCIOcatalog.hh rename to source/persistency/mctruth/include/G4DCIOcatalog.hh diff --git a/source/persistency/include/G4DCIOentryT.hh b/source/persistency/mctruth/include/G4DCIOentryT.hh similarity index 100% rename from source/persistency/include/G4DCIOentryT.hh rename to source/persistency/mctruth/include/G4DCIOentryT.hh diff --git a/source/persistency/include/G4FileUtilities.hh b/source/persistency/mctruth/include/G4FileUtilities.hh similarity index 100% rename from source/persistency/include/G4FileUtilities.hh rename to source/persistency/mctruth/include/G4FileUtilities.hh diff --git a/source/persistency/include/G4HCIOcatalog.hh b/source/persistency/mctruth/include/G4HCIOcatalog.hh similarity index 100% rename from source/persistency/include/G4HCIOcatalog.hh rename to source/persistency/mctruth/include/G4HCIOcatalog.hh diff --git a/source/persistency/include/G4HCIOentryT.hh b/source/persistency/mctruth/include/G4HCIOentryT.hh similarity index 100% rename from source/persistency/include/G4HCIOentryT.hh rename to source/persistency/mctruth/include/G4HCIOentryT.hh diff --git a/source/persistency/include/G4MCTEvent.hh b/source/persistency/mctruth/include/G4MCTEvent.hh similarity index 100% rename from source/persistency/include/G4MCTEvent.hh rename to source/persistency/mctruth/include/G4MCTEvent.hh diff --git a/source/persistency/include/G4MCTGenEvent.hh b/source/persistency/mctruth/include/G4MCTGenEvent.hh similarity index 100% rename from source/persistency/include/G4MCTGenEvent.hh rename to source/persistency/mctruth/include/G4MCTGenEvent.hh diff --git a/source/persistency/include/G4MCTGenParticle.hh b/source/persistency/mctruth/include/G4MCTGenParticle.hh similarity index 100% rename from source/persistency/include/G4MCTGenParticle.hh rename to source/persistency/mctruth/include/G4MCTGenParticle.hh diff --git a/source/persistency/include/G4MCTSimEvent.hh b/source/persistency/mctruth/include/G4MCTSimEvent.hh similarity index 100% rename from source/persistency/include/G4MCTSimEvent.hh rename to source/persistency/mctruth/include/G4MCTSimEvent.hh diff --git a/source/persistency/include/G4MCTSimParticle.hh b/source/persistency/mctruth/include/G4MCTSimParticle.hh similarity index 100% rename from source/persistency/include/G4MCTSimParticle.hh rename to source/persistency/mctruth/include/G4MCTSimParticle.hh diff --git a/source/persistency/include/G4MCTSimVertex.hh b/source/persistency/mctruth/include/G4MCTSimVertex.hh similarity index 100% rename from source/persistency/include/G4MCTSimVertex.hh rename to source/persistency/mctruth/include/G4MCTSimVertex.hh diff --git a/source/persistency/include/G4PersistencyCenter.hh b/source/persistency/mctruth/include/G4PersistencyCenter.hh similarity index 100% rename from source/persistency/include/G4PersistencyCenter.hh rename to source/persistency/mctruth/include/G4PersistencyCenter.hh diff --git a/source/persistency/include/G4PersistencyCenterMessenger.hh b/source/persistency/mctruth/include/G4PersistencyCenterMessenger.hh similarity index 100% rename from source/persistency/include/G4PersistencyCenterMessenger.hh rename to source/persistency/mctruth/include/G4PersistencyCenterMessenger.hh diff --git a/source/persistency/include/G4PersistencyManager.hh b/source/persistency/mctruth/include/G4PersistencyManager.hh similarity index 100% rename from source/persistency/include/G4PersistencyManager.hh rename to source/persistency/mctruth/include/G4PersistencyManager.hh diff --git a/source/persistency/include/G4PersistencyManagerT.hh b/source/persistency/mctruth/include/G4PersistencyManagerT.hh similarity index 100% rename from source/persistency/include/G4PersistencyManagerT.hh rename to source/persistency/mctruth/include/G4PersistencyManagerT.hh diff --git a/source/persistency/include/G4Pevent.hh b/source/persistency/mctruth/include/G4Pevent.hh similarity index 100% rename from source/persistency/include/G4Pevent.hh rename to source/persistency/mctruth/include/G4Pevent.hh diff --git a/source/persistency/include/G4VDCIOentry.hh b/source/persistency/mctruth/include/G4VDCIOentry.hh similarity index 100% rename from source/persistency/include/G4VDCIOentry.hh rename to source/persistency/mctruth/include/G4VDCIOentry.hh diff --git a/source/persistency/include/G4VHCIOentry.hh b/source/persistency/mctruth/include/G4VHCIOentry.hh similarity index 100% rename from source/persistency/include/G4VHCIOentry.hh rename to source/persistency/mctruth/include/G4VHCIOentry.hh diff --git a/source/persistency/include/G4VHepMCIO.hh b/source/persistency/mctruth/include/G4VHepMCIO.hh similarity index 100% rename from source/persistency/include/G4VHepMCIO.hh rename to source/persistency/mctruth/include/G4VHepMCIO.hh diff --git a/source/persistency/include/G4VMCTruthIO.hh b/source/persistency/mctruth/include/G4VMCTruthIO.hh similarity index 100% rename from source/persistency/include/G4VMCTruthIO.hh rename to source/persistency/mctruth/include/G4VMCTruthIO.hh diff --git a/source/persistency/include/G4VPDigitIO.hh b/source/persistency/mctruth/include/G4VPDigitIO.hh similarity index 100% rename from source/persistency/include/G4VPDigitIO.hh rename to source/persistency/mctruth/include/G4VPDigitIO.hh diff --git a/source/persistency/include/G4VPDigitsCollectionIO.hh b/source/persistency/mctruth/include/G4VPDigitsCollectionIO.hh similarity index 100% rename from source/persistency/include/G4VPDigitsCollectionIO.hh rename to source/persistency/mctruth/include/G4VPDigitsCollectionIO.hh diff --git a/source/persistency/include/G4VPEventIO.hh b/source/persistency/mctruth/include/G4VPEventIO.hh similarity index 100% rename from source/persistency/include/G4VPEventIO.hh rename to source/persistency/mctruth/include/G4VPEventIO.hh diff --git a/source/persistency/include/G4VPHitIO.hh b/source/persistency/mctruth/include/G4VPHitIO.hh similarity index 100% rename from source/persistency/include/G4VPHitIO.hh rename to source/persistency/mctruth/include/G4VPHitIO.hh diff --git a/source/persistency/include/G4VPHitsCollectionIO.hh b/source/persistency/mctruth/include/G4VPHitsCollectionIO.hh similarity index 100% rename from source/persistency/include/G4VPHitsCollectionIO.hh rename to source/persistency/mctruth/include/G4VPHitsCollectionIO.hh diff --git a/source/persistency/include/G4VTransactionManager.hh b/source/persistency/mctruth/include/G4VTransactionManager.hh similarity index 100% rename from source/persistency/include/G4VTransactionManager.hh rename to source/persistency/mctruth/include/G4VTransactionManager.hh diff --git a/source/persistency/src/G4DCIOcatalog.cc b/source/persistency/mctruth/src/G4DCIOcatalog.cc similarity index 100% rename from source/persistency/src/G4DCIOcatalog.cc rename to source/persistency/mctruth/src/G4DCIOcatalog.cc diff --git a/source/persistency/src/G4FileUtilities.cc b/source/persistency/mctruth/src/G4FileUtilities.cc similarity index 100% rename from source/persistency/src/G4FileUtilities.cc rename to source/persistency/mctruth/src/G4FileUtilities.cc diff --git a/source/persistency/src/G4HCIOcatalog.cc b/source/persistency/mctruth/src/G4HCIOcatalog.cc similarity index 100% rename from source/persistency/src/G4HCIOcatalog.cc rename to source/persistency/mctruth/src/G4HCIOcatalog.cc diff --git a/source/persistency/src/G4MCTEvent.cc b/source/persistency/mctruth/src/G4MCTEvent.cc similarity index 100% rename from source/persistency/src/G4MCTEvent.cc rename to source/persistency/mctruth/src/G4MCTEvent.cc diff --git a/source/persistency/src/G4MCTGenEvent.cc b/source/persistency/mctruth/src/G4MCTGenEvent.cc similarity index 100% rename from source/persistency/src/G4MCTGenEvent.cc rename to source/persistency/mctruth/src/G4MCTGenEvent.cc diff --git a/source/persistency/src/G4MCTSimEvent.cc b/source/persistency/mctruth/src/G4MCTSimEvent.cc similarity index 100% rename from source/persistency/src/G4MCTSimEvent.cc rename to source/persistency/mctruth/src/G4MCTSimEvent.cc diff --git a/source/persistency/src/G4MCTSimParticle.cc b/source/persistency/mctruth/src/G4MCTSimParticle.cc similarity index 100% rename from source/persistency/src/G4MCTSimParticle.cc rename to source/persistency/mctruth/src/G4MCTSimParticle.cc diff --git a/source/persistency/src/G4MCTSimVertex.cc b/source/persistency/mctruth/src/G4MCTSimVertex.cc similarity index 100% rename from source/persistency/src/G4MCTSimVertex.cc rename to source/persistency/mctruth/src/G4MCTSimVertex.cc diff --git a/source/persistency/src/G4PersistencyCenter.cc b/source/persistency/mctruth/src/G4PersistencyCenter.cc similarity index 100% rename from source/persistency/src/G4PersistencyCenter.cc rename to source/persistency/mctruth/src/G4PersistencyCenter.cc diff --git a/source/persistency/src/G4PersistencyCenterMessenger.cc b/source/persistency/mctruth/src/G4PersistencyCenterMessenger.cc similarity index 100% rename from source/persistency/src/G4PersistencyCenterMessenger.cc rename to source/persistency/mctruth/src/G4PersistencyCenterMessenger.cc diff --git a/source/persistency/src/G4PersistencyManager.cc b/source/persistency/mctruth/src/G4PersistencyManager.cc similarity index 100% rename from source/persistency/src/G4PersistencyManager.cc rename to source/persistency/mctruth/src/G4PersistencyManager.cc diff --git a/source/persistency/src/G4Pevent.cc b/source/persistency/mctruth/src/G4Pevent.cc similarity index 100% rename from source/persistency/src/G4Pevent.cc rename to source/persistency/mctruth/src/G4Pevent.cc diff --git a/source/persistency/src/G4VDCIOentry.cc b/source/persistency/mctruth/src/G4VDCIOentry.cc similarity index 100% rename from source/persistency/src/G4VDCIOentry.cc rename to source/persistency/mctruth/src/G4VDCIOentry.cc diff --git a/source/persistency/src/G4VHCIOentry.cc b/source/persistency/mctruth/src/G4VHCIOentry.cc similarity index 100% rename from source/persistency/src/G4VHCIOentry.cc rename to source/persistency/mctruth/src/G4VHCIOentry.cc diff --git a/source/persistency/src/G4VHepMCIO.cc b/source/persistency/mctruth/src/G4VHepMCIO.cc similarity index 100% rename from source/persistency/src/G4VHepMCIO.cc rename to source/persistency/mctruth/src/G4VHepMCIO.cc diff --git a/source/persistency/src/G4VMCTruthIO.cc b/source/persistency/mctruth/src/G4VMCTruthIO.cc similarity index 100% rename from source/persistency/src/G4VMCTruthIO.cc rename to source/persistency/mctruth/src/G4VMCTruthIO.cc diff --git a/source/persistency/src/G4VPDigitIO.cc b/source/persistency/mctruth/src/G4VPDigitIO.cc similarity index 100% rename from source/persistency/src/G4VPDigitIO.cc rename to source/persistency/mctruth/src/G4VPDigitIO.cc diff --git a/source/persistency/src/G4VPDigitsCollectionIO.cc b/source/persistency/mctruth/src/G4VPDigitsCollectionIO.cc similarity index 100% rename from source/persistency/src/G4VPDigitsCollectionIO.cc rename to source/persistency/mctruth/src/G4VPDigitsCollectionIO.cc diff --git a/source/persistency/src/G4VPEventIO.cc b/source/persistency/mctruth/src/G4VPEventIO.cc similarity index 100% rename from source/persistency/src/G4VPEventIO.cc rename to source/persistency/mctruth/src/G4VPEventIO.cc diff --git a/source/persistency/src/G4VPHitIO.cc b/source/persistency/mctruth/src/G4VPHitIO.cc similarity index 100% rename from source/persistency/src/G4VPHitIO.cc rename to source/persistency/mctruth/src/G4VPHitIO.cc diff --git a/source/persistency/src/G4VPHitsCollectionIO.cc b/source/persistency/mctruth/src/G4VPHitsCollectionIO.cc similarity index 100% rename from source/persistency/src/G4VPHitsCollectionIO.cc rename to source/persistency/mctruth/src/G4VPHitsCollectionIO.cc diff --git a/source/physics_lists/History b/source/physics_lists/History index aa3d0718f2..dfa13b4f0e 100644 --- a/source/physics_lists/History +++ b/source/physics_lists/History @@ -1,4 +1,4 @@ -$Id: History,v 1.33 2007/06/27 10:06:14 gcosmo Exp $ +$Id: History,v 1.47 2007/12/10 17:38:48 gunter Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,63 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +16-11-2007, G.Folger phys-list-V09-00-12 +- New PL QGSP_BERT_DIF; as QGSP_BERT with projectile diffraction for proton + and neutron enabled. + +26-11-2007, V.Ivanchenko phys-lists-V09-00-11 +- QBBC - fixed bug in adding of cross section for pions + +16-11-2007, G.Folger phys-list-V09-00-10 +- New PL FTF_BIC. Equivalent to QGS_BIC. For pions LEP is not used, as BIC is + used up to 5 GeV, thus overlapping with FTF starting at 4 GeV. + +15-11-2007, V.Ivanchenko phys-lists-V09-00-09 +- added a possibility to activate G4SynchrotronRadiation and mu-nuclear + betwen runs; +- G4HadronHElasticPhysics - fixed name; +- QBBC - tuned energy thresholds between string and cascade models + +15-11-2007, G.Folger phys-list-V09-00-08 +- New PL QGSC_BERT; use QGSC down to overlap with BERT. LEP not used + for proton,neutron,pions,Kaons, except neutron capture and neutron + induced fission + +15-11-2007, V.Ivanchenko phys-lists-V09-00-07 +- fixed QBBC Physics List for pi and K mesons + +15-11-2007, V.Ivanchenko phys-lists-V09-00-06 +- G4RadioactiveDecayPhysics optional builder is added +- QBBC Physics List use correct interface to CHIPS + +14-11-2007, V.Ivanchenko phys-lists-V09-00-05 +- G4HadronDElasticPhysics - fixed run time bug - added low-energy model +- QBBC options are reviewed and left: QBBC, QBBC_DEL,QBBC_HEL, QBBC_HP + +13-11-2007, V.Ivanchenko phys-lists-V09-00-04 +- G4HadronDElasticPhysics is added +- QBBC Physics List upgraded for 9.1 + +13-11-2007, G.Folger phys-list-V09-00-03 +- Enable use of projectile diffraction in QGSP-like lists, and create + new list using projectile diffraction QGSP_DIF +- New PL QGS_BIC; like QGSP_BIC, but use binary also for pion and for + rescattering via the propagate interface; the deexcitation implicitely + uses precompound. + +31-10-2007, G.Folger phys-list-V09-00-02 +- New PL QGSP_BIC2: like QGSP_BIC, but use BIC for low energy pions + +19-10-2007, G.Folger phys-list-V09-00-01 +- New PL FTFP_BERT: FTFP with Bertini cascade. Crossover from Bertini + to FTFP at 4-5 GeV. No LEP for inelastic for p,n,pi,K. +- G4LEPNeutronBuilder.cc: when limit for MaxInelastic is 0, do NOT add + LEP for inelastic; needed by above FTFP_BERT. + +02-10-2007, V.Ivanchenko phys-lists-V09-00-00 +- G4EmStandardPhysics_option2 - increase number of bins in tables in + two times + 27-06-2007, G.Cosmo phys-lists-V08-03-07 - Updated G4DataQuestionaire to change NeutronHPCrossSections with G4NEUTRONHPDATA environment variable. diff --git a/source/physics_lists/builders/GNUmakefile b/source/physics_lists/builders/GNUmakefile index 123d1d4333..fab31e1be3 100644 --- a/source/physics_lists/builders/GNUmakefile +++ b/source/physics_lists/builders/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 2006/11/20 17:54:51 gunter Exp $ +# $Id: GNUmakefile,v 1.3 2007/11/15 11:41:37 vnivanch Exp $ # --------------------------------------------------------------------------- # GNUmakefile for physics_lists/builders library. Gunter Folger 25-Oct-2006. # --------------------------------------------------------------------------- @@ -67,6 +67,7 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \ -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/radioactive_decay/include \ -I$(G4BASE)/processes/hadronic/models/theo_high_energy/include \ -I$(G4BASE)/processes/hadronic/util/include \ -I$(G4BASE)/materials/include diff --git a/source/physics_lists/builders/include/G4DataQuestionaire.hh b/source/physics_lists/builders/include/G4DataQuestionaire.hh index 6d28d94ac8..a04e2073d0 100644 --- a/source/physics_lists/builders/include/G4DataQuestionaire.hh +++ b/source/physics_lists/builders/include/G4DataQuestionaire.hh @@ -39,7 +39,7 @@ class G4DataQuestionaire G4DataQuestionaire(G4DataType t1=no, G4DataType t2=no, G4DataType t3=no, G4DataType t4=no) { G4cout << G4endl; - G4cout << "<<< Geant4 Physics List engine packaging library: PACK 5.3"< * theStringModel; + G4ExcitedStringDecay * theStringDecay; + G4QuasiElasticChannel * theQuasiElastic; + + G4NeutronInelasticCrossSection theXSec; + G4double theMin; + +}; + +#endif + diff --git a/source/physics_lists/builders/include/G4QGSBinaryPiKBuilder.hh b/source/physics_lists/builders/include/G4QGSBinaryPiKBuilder.hh new file mode 100644 index 0000000000..98f4d468d6 --- /dev/null +++ b/source/physics_lists/builders/include/G4QGSBinaryPiKBuilder.hh @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#ifndef G4QGSBinaryPiKBuilder_h +#define G4QGSBinaryPiKBuilder_h 1 + +#include "globals.hh" + +#include "G4HadronElasticProcess.hh" +#include "G4HadronFissionProcess.hh" +#include "G4HadronCaptureProcess.hh" +#include "G4NeutronInelasticProcess.hh" +#include "G4VPiKBuilder.hh" + +#include "G4TheoFSGenerator.hh" +#include "G4ExcitationHandler.hh" +#include "G4PreCompoundModel.hh" +#include "G4BinaryCascade.hh" +#include "G4QGSModel.hh" +#include "G4QGSParticipants.hh" +#include "G4QGSMFragmentation.hh" +#include "G4ExcitedStringDecay.hh" +#include "G4QuasiElasticChannel.hh" + +#include "G4PiNuclearCrossSection.hh" + +class G4QGSBinaryPiKBuilder : public G4VPiKBuilder +{ + public: + G4QGSBinaryPiKBuilder(G4bool quasiElastic=false); + virtual ~G4QGSBinaryPiKBuilder(); + + public: + virtual void Build(G4HadronElasticProcess * aP); + virtual void Build(G4PionPlusInelasticProcess * aP); + virtual void Build(G4PionMinusInelasticProcess * aP); + virtual void Build(G4KaonPlusInelasticProcess * aP); + virtual void Build(G4KaonMinusInelasticProcess * aP); + virtual void Build(G4KaonZeroLInelasticProcess * aP); + virtual void Build(G4KaonZeroSInelasticProcess * aP); + + void SetMinEnergy(G4double aM) {theMin = aM;} + + private: + G4PiNuclearCrossSection thePiData; + G4TheoFSGenerator * theModel; + G4PreCompoundModel * thePreEquilib; + G4BinaryCascade * theCascade; + G4QGSModel< G4QGSParticipants > * theStringModel; + G4ExcitedStringDecay * theStringDecay; + G4QuasiElasticChannel * theQuasiElastic; + G4double theMin; + +}; + +#endif + diff --git a/source/physics_lists/builders/include/G4QGSBinaryProtonBuilder.hh b/source/physics_lists/builders/include/G4QGSBinaryProtonBuilder.hh new file mode 100644 index 0000000000..f204d67c66 --- /dev/null +++ b/source/physics_lists/builders/include/G4QGSBinaryProtonBuilder.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#ifndef G4QGSBinaryProtonBuilder_h +#define G4QGSBinaryProtonBuilder_h + +#include "globals.hh" + +#include "G4HadronElasticProcess.hh" +#include "G4HadronFissionProcess.hh" +#include "G4HadronCaptureProcess.hh" +#include "G4ProtonInelasticProcess.hh" +#include "G4VProtonBuilder.hh" + +#include "G4NeutronInelasticCrossSection.hh" +#include "G4TheoFSGenerator.hh" +#include "G4ExcitationHandler.hh" +#include "G4PreCompoundModel.hh" +#include "G4BinaryCascade.hh" +#include "G4QGSModel.hh" +#include "G4QGSParticipants.hh" +#include "G4QGSMFragmentation.hh" +#include "G4ExcitedStringDecay.hh" +#include "G4QuasiElasticChannel.hh" + +#include "G4ProtonInelasticCrossSection.hh" + +class G4QGSBinaryProtonBuilder : public G4VProtonBuilder +{ + public: + G4QGSBinaryProtonBuilder(G4bool quasiElastic=false); + virtual ~G4QGSBinaryProtonBuilder(); + + public: + virtual void Build(G4HadronElasticProcess * aP); + virtual void Build(G4ProtonInelasticProcess * aP); + + void SetMinEnergy(G4double aM) {theMin = aM;} + + private: + G4ProtonInelasticCrossSection theXSec; + G4TheoFSGenerator * theModel; + G4PreCompoundModel * thePreEquilib; + G4BinaryCascade * theCascade; + G4QGSModel< G4QGSParticipants > * theStringModel; + G4ExcitedStringDecay * theStringDecay; + G4QuasiElasticChannel * theQuasiElastic; + G4double theMin; + +}; + +#endif + diff --git a/source/physics_lists/builders/include/G4QGSPNeutronBuilder.hh b/source/physics_lists/builders/include/G4QGSPNeutronBuilder.hh index b49ac436ae..a854a4210d 100644 --- a/source/physics_lists/builders/include/G4QGSPNeutronBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSPNeutronBuilder.hh @@ -34,7 +34,6 @@ #include "G4NeutronInelasticProcess.hh" #include "G4VNeutronBuilder.hh" -#include "G4NeutronInelasticCrossSection.hh" #include "G4TheoFSGenerator.hh" #include "G4ExcitationHandler.hh" #include "G4PreCompoundModel.hh" @@ -44,11 +43,15 @@ #include "G4QGSMFragmentation.hh" #include "G4ExcitedStringDecay.hh" #include "G4QuasiElasticChannel.hh" +#include "G4ProjectileDiffractiveChannel.hh" + +#include "G4NeutronInelasticCrossSection.hh" class G4QGSPNeutronBuilder : public G4VNeutronBuilder { public: - G4QGSPNeutronBuilder(G4bool quasiElastic=false); + G4QGSPNeutronBuilder(G4bool quasiElastic=false, + G4bool projectileDiffraction=false); virtual ~G4QGSPNeutronBuilder(); public: @@ -66,6 +69,7 @@ class G4QGSPNeutronBuilder : public G4VNeutronBuilder G4QGSModel< G4QGSParticipants > * theStringModel; G4ExcitedStringDecay * theStringDecay; G4QuasiElasticChannel * theQuasiElastic; + G4ProjectileDiffractiveChannel * theProjectileDiffraction; G4NeutronInelasticCrossSection theXSec; G4double theMin; diff --git a/source/physics_lists/builders/include/G4QGSPPiKBuilder.hh b/source/physics_lists/builders/include/G4QGSPPiKBuilder.hh index b381ddd4b5..3dcf742b89 100644 --- a/source/physics_lists/builders/include/G4QGSPPiKBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSPPiKBuilder.hh @@ -43,13 +43,15 @@ #include "G4QGSMFragmentation.hh" #include "G4ExcitedStringDecay.hh" #include "G4QuasiElasticChannel.hh" +#include "G4ProjectileDiffractiveChannel.hh" #include "G4PiNuclearCrossSection.hh" class G4QGSPPiKBuilder : public G4VPiKBuilder { public: - G4QGSPPiKBuilder(G4bool quasiElastic=false); + G4QGSPPiKBuilder(G4bool quasiElastic=false, + G4bool projectileDiffraction=false); virtual ~G4QGSPPiKBuilder(); public: @@ -71,6 +73,7 @@ class G4QGSPPiKBuilder : public G4VPiKBuilder G4QGSModel< G4QGSParticipants > * theStringModel; G4ExcitedStringDecay * theStringDecay; G4QuasiElasticChannel * theQuasiElastic; + G4ProjectileDiffractiveChannel * theProjectileDiffraction; G4double theMin; }; diff --git a/source/physics_lists/builders/include/G4QGSPProtonBuilder.hh b/source/physics_lists/builders/include/G4QGSPProtonBuilder.hh index d96df6f01b..e866b6ee61 100644 --- a/source/physics_lists/builders/include/G4QGSPProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSPProtonBuilder.hh @@ -44,13 +44,15 @@ #include "G4QGSMFragmentation.hh" #include "G4ExcitedStringDecay.hh" #include "G4QuasiElasticChannel.hh" +#include "G4ProjectileDiffractiveChannel.hh" #include "G4ProtonInelasticCrossSection.hh" class G4QGSPProtonBuilder : public G4VProtonBuilder { public: - G4QGSPProtonBuilder(G4bool quasiElastic=false); + G4QGSPProtonBuilder(G4bool quasiElastic=false, + G4bool projectileDiffraction=false); virtual ~G4QGSPProtonBuilder(); public: @@ -67,6 +69,7 @@ class G4QGSPProtonBuilder : public G4VProtonBuilder G4QGSModel< G4QGSParticipants > * theStringModel; G4ExcitedStringDecay * theStringDecay; G4QuasiElasticChannel * theQuasiElastic; + G4ProjectileDiffractiveChannel * theProjectileDiffraction; G4double theMin; }; diff --git a/source/physics_lists/builders/include/G4QStoppingPhysics.hh b/source/physics_lists/builders/include/G4QStoppingPhysics.hh index 1216512ba1..c46cf57d24 100644 --- a/source/physics_lists/builders/include/G4QStoppingPhysics.hh +++ b/source/physics_lists/builders/include/G4QStoppingPhysics.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QStoppingPhysics.hh,v 1.2 2007/04/26 16:03:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/examples/extended/radioactivedecay/exrdm/include/exrdmPhysListGeneral.hh b/source/physics_lists/builders/include/G4RadioactiveDecayPhysics.hh similarity index 86% rename from examples/extended/radioactivedecay/exrdm/include/exrdmPhysListGeneral.hh rename to source/physics_lists/builders/include/G4RadioactiveDecayPhysics.hh index a3b44f8a49..2a208c4e67 100644 --- a/examples/extended/radioactivedecay/exrdm/include/exrdmPhysListGeneral.hh +++ b/source/physics_lists/builders/include/G4RadioactiveDecayPhysics.hh @@ -26,27 +26,32 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -#ifndef exrdmPhysListGeneral_h -#define exrdmPhysListGeneral_h 1 +#ifndef G4RadioactiveDecayPhysics_h +#define G4RadioactiveDecayPhysics_h 1 #include "G4VPhysicsConstructor.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -class exrdmPhysListGeneral : public G4VPhysicsConstructor +class G4RadioactiveDecay; + +class G4RadioactiveDecayPhysics : public G4VPhysicsConstructor { public: - exrdmPhysListGeneral(const G4String& name = "general"); - virtual ~exrdmPhysListGeneral(); + G4RadioactiveDecayPhysics(const G4String& name = "raddecay"); + virtual ~G4RadioactiveDecayPhysics(); public: // This method is dummy for physics - virtual void ConstructParticle() {}; + virtual 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(); + +private: + G4RadioactiveDecay* theRadioactiveDecay; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/physics_lists/builders/include/G4StoppingHadronBuilder.hh b/source/physics_lists/builders/include/G4StoppingHadronBuilder.hh index fdfc410ebe..0febc4824b 100644 --- a/source/physics_lists/builders/include/G4StoppingHadronBuilder.hh +++ b/source/physics_lists/builders/include/G4StoppingHadronBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4StoppingHadronBuilder.hh,v 1.1 2006/10/31 11:35:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4VPiKBuilder.hh b/source/physics_lists/builders/include/G4VPiKBuilder.hh index 6fd45f50d1..7ba76a82f6 100644 --- a/source/physics_lists/builders/include/G4VPiKBuilder.hh +++ b/source/physics_lists/builders/include/G4VPiKBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VPiKBuilder.hh,v 1.1 2006/10/31 11:35:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4VProtonBuilder.hh b/source/physics_lists/builders/include/G4VProtonBuilder.hh index 84ef84af6c..7d80146cf2 100644 --- a/source/physics_lists/builders/include/G4VProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4VProtonBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VProtonBuilder.hh,v 1.1 2006/10/31 11:35:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4DecayPhysics.cc b/source/physics_lists/builders/src/G4DecayPhysics.cc index 46fe46733c..42ffdaf907 100644 --- a/source/physics_lists/builders/src/G4DecayPhysics.cc +++ b/source/physics_lists/builders/src/G4DecayPhysics.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4DecayPhysics.cc,v 1.1 2006/10/31 11:35:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4ElectroNuclearBuilder.cc b/source/physics_lists/builders/src/G4ElectroNuclearBuilder.cc index b7e38ab903..4680e6eaea 100644 --- a/source/physics_lists/builders/src/G4ElectroNuclearBuilder.cc +++ b/source/physics_lists/builders/src/G4ElectroNuclearBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ElectroNuclearBuilder.cc,v 1.1 2006/10/31 11:35:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4EmExtraPhysics.cc b/source/physics_lists/builders/src/G4EmExtraPhysics.cc index 36ebced42c..8d8accba12 100644 --- a/source/physics_lists/builders/src/G4EmExtraPhysics.cc +++ b/source/physics_lists/builders/src/G4EmExtraPhysics.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4EmExtraPhysics.cc,v 1.1 2006/10/31 11:35:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4EmExtraPhysics.cc,v 1.2 2007/11/15 18:08:11 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -48,12 +48,15 @@ #include "G4Gamma.hh" #include "G4Electron.hh" #include "G4Positron.hh" +#include "G4MuonPlus.hh" +#include "G4MuonMinus.hh" #include "G4ProcessManager.hh" -G4EmExtraPhysics::G4EmExtraPhysics(const G4String& name): G4VPhysicsConstructor(name), - wasActivated(false), synchOn(false), - gammNucOn(true), muNucOn(false), theElectronSynch(0), thePositronSynch(0), - theGNPhysics(0),theMuNuc1(0),theMuNuc2(0) +G4EmExtraPhysics::G4EmExtraPhysics(const G4String& name): + G4VPhysicsConstructor(name), wasBuilt(false), gnActivated(false), munActivated(false), + synActivated(false), synchOn(false), gammNucOn(true), muNucOn(false), + theElectronSynch(0), thePositronSynch(0), theGNPhysics(0), theMuNuc1(0), + theMuNuc2(0) { theMessenger = new G4EmMessenger(this); } @@ -61,29 +64,35 @@ G4EmExtraPhysics::G4EmExtraPhysics(const G4String& name): G4VPhysicsConstructor( G4EmExtraPhysics::~G4EmExtraPhysics() { delete theMessenger; - if(theElectronSynch) delete theElectronSynch; - if(thePositronSynch) delete thePositronSynch; - if(theGNPhysics) delete theGNPhysics; - if(theMuNuc1) delete theMuNuc1; - if(theMuNuc2) delete theMuNuc2; + delete theElectronSynch; + delete thePositronSynch; + delete theGNPhysics; + delete theMuNuc1; + delete theMuNuc2; } void G4EmExtraPhysics::Synch(G4String & newState) { - if(newState == "on") synchOn = true; - else synchOn = false; + if(newState == "on" || newState == "ON") { + synchOn = true; + if(wasBuilt) BuildSynch(); + } else synchOn = false; } void G4EmExtraPhysics::GammaNuclear(G4String & newState) { - if(newState == "on") gammNucOn = true; - else gammNucOn = false; + if(newState == "on" || newState == "ON") { + gammNucOn = true; + if(wasBuilt) BuildGammaNuclear(); + } else gammNucOn = false; } void G4EmExtraPhysics::MuonNuclear(G4String & newState) { - if(newState == "on") muNucOn = true; - else muNucOn = false; + if(newState == "on" || newState == "ON") { + muNucOn = true; + if(wasBuilt) BuildMuonNuclear(); + } else muNucOn = false; } void G4EmExtraPhysics::ConstructParticle() @@ -91,33 +100,55 @@ void G4EmExtraPhysics::ConstructParticle() G4Gamma::Gamma(); G4Electron::Electron(); G4Positron::Positron(); + G4MuonPlus::MuonPlus(); + G4MuonMinus::MuonMinus(); } void G4EmExtraPhysics::ConstructProcess() { - G4ProcessManager * pManager = 0; - wasActivated = true; + if(wasBuilt) return; + wasBuilt = true; - if(synchOn) { - pManager = G4Electron::Electron()->GetProcessManager(); - theElectronSynch = new G4SynchrotronRadiation(); - pManager->AddDiscreteProcess(theElectronSynch); - - pManager = G4Positron::Positron()->GetProcessManager(); - thePositronSynch = new G4SynchrotronRadiation(); - pManager->AddDiscreteProcess(thePositronSynch); - } - if (gammNucOn) { - theGNPhysics = new G4ElectroNuclearBuilder(); - theGNPhysics->Build(); - } - if(muNucOn) { - pManager = G4MuonPlus::MuonPlus()->GetProcessManager(); - theMuNuc1 = new G4MuNuclearInteraction("muNucl"); - pManager->AddDiscreteProcess(theMuNuc1); - - pManager = G4MuonMinus::MuonMinus()->GetProcessManager(); - theMuNuc2 = new G4MuNuclearInteraction("muNucl"); - pManager->AddDiscreteProcess(theMuNuc2); - } + if (synchOn) BuildSynch(); + if (gammNucOn) BuildGammaNuclear(); + if (muNucOn) BuildMuonNuclear(); +} + +void G4EmExtraPhysics::BuildMuonNuclear() +{ + if(munActivated) return; + munActivated = true; + G4ProcessManager * pManager = 0; + + pManager = G4Electron::Electron()->GetProcessManager(); + theElectronSynch = new G4SynchrotronRadiation(); + pManager->AddDiscreteProcess(theElectronSynch); + + pManager = G4Positron::Positron()->GetProcessManager(); + thePositronSynch = new G4SynchrotronRadiation(); + pManager->AddDiscreteProcess(thePositronSynch); +} + +void G4EmExtraPhysics::BuildGammaNuclear() +{ + if(gnActivated) return; + gnActivated = true; + + theGNPhysics = new G4ElectroNuclearBuilder(); + theGNPhysics->Build(); +} + +void G4EmExtraPhysics::BuildSynch() +{ + if(synActivated) return; + synActivated = true; + G4ProcessManager * pManager = 0; + + pManager = G4MuonPlus::MuonPlus()->GetProcessManager(); + theMuNuc1 = new G4MuNuclearInteraction("muNucl"); + pManager->AddDiscreteProcess(theMuNuc1); + + pManager = G4MuonMinus::MuonMinus()->GetProcessManager(); + theMuNuc2 = new G4MuNuclearInteraction("muNucl"); + pManager->AddDiscreteProcess(theMuNuc2); } diff --git a/source/physics_lists/builders/src/G4EmMessenger.cc b/source/physics_lists/builders/src/G4EmMessenger.cc index ffc660e28e..58660143bc 100644 --- a/source/physics_lists/builders/src/G4EmMessenger.cc +++ b/source/physics_lists/builders/src/G4EmMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4EmMessenger.cc,v 1.1 2006/10/31 11:35:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4EmStandardPhysics.cc b/source/physics_lists/builders/src/G4EmStandardPhysics.cc index 606b6febd6..5e29e3ba24 100644 --- a/source/physics_lists/builders/src/G4EmStandardPhysics.cc +++ b/source/physics_lists/builders/src/G4EmStandardPhysics.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4EmStandardPhysics.cc,v 1.9 2007/05/18 17:47:17 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4EmStandardPhysics_option1.cc b/source/physics_lists/builders/src/G4EmStandardPhysics_option1.cc index c58a9f6b12..ffab120efc 100644 --- a/source/physics_lists/builders/src/G4EmStandardPhysics_option1.cc +++ b/source/physics_lists/builders/src/G4EmStandardPhysics_option1.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4EmStandardPhysics_option1.cc,v 1.3 2007/06/11 15:07:38 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4EmStandardPhysics_option2.cc b/source/physics_lists/builders/src/G4EmStandardPhysics_option2.cc index 564d52af8d..880186211a 100644 --- a/source/physics_lists/builders/src/G4EmStandardPhysics_option2.cc +++ b/source/physics_lists/builders/src/G4EmStandardPhysics_option2.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4EmStandardPhysics_option2.cc,v 1.2 2007/05/18 17:47:17 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4EmStandardPhysics_option2.cc,v 1.3 2007/10/02 11:18:02 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -207,6 +207,11 @@ void G4EmStandardPhysics_option2::ConstructProcess() G4EmProcessOptions opt; opt.SetVerbose(verbose); opt.SetSubCutoff(true); + opt.SetMinEnergy(0.1*keV); + opt.SetMaxEnergy(10.*TeV); + opt.SetDEDXBinning(220); + opt.SetLambdaBinning(220); + opt.SetLinearLossLimit(1.e-6); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/physics_lists/builders/src/G4FTFBinaryNeutronBuilder.cc b/source/physics_lists/builders/src/G4FTFBinaryNeutronBuilder.cc new file mode 100644 index 0000000000..5fd78502f3 --- /dev/null +++ b/source/physics_lists/builders/src/G4FTFBinaryNeutronBuilder.cc @@ -0,0 +1,85 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#include "G4FTFBinaryNeutronBuilder.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" +#include "G4ProcessManager.hh" + +G4FTFBinaryNeutronBuilder:: +G4FTFBinaryNeutronBuilder(G4bool quasiElastic) +{ + theMin = 4*GeV; + theModel = new G4TheoFSGenerator; + + theStringModel = new G4FTFModel; + theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation); + theStringModel->SetFragmentationModel(theStringDecay); + + theCascade = new G4BinaryCascade; + theModel->SetTransport(theCascade); + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + + theModel->SetHighEnergyGenerator(theStringModel); + if (quasiElastic) + { + theQuasiElastic=new G4QuasiElasticChannel; + theModel->SetQuasiElasticChannel(theQuasiElastic); + } else + { theQuasiElastic=0;} +} + +G4FTFBinaryNeutronBuilder:: +~G4FTFBinaryNeutronBuilder() +{ + delete theStringDecay; + delete theStringModel; + delete thePreEquilib; + delete theCascade; + if ( theQuasiElastic ) delete theQuasiElastic; +} + +void G4FTFBinaryNeutronBuilder:: +Build(G4HadronElasticProcess * ) +{ +} + +void G4FTFBinaryNeutronBuilder:: +Build(G4HadronFissionProcess * ) +{ +} + +void G4FTFBinaryNeutronBuilder:: +Build(G4HadronCaptureProcess * ) +{ +} + +void G4FTFBinaryNeutronBuilder:: +Build(G4NeutronInelasticProcess * aP) +{ + aP->RegisterMe(theModel); + aP->AddDataSet(&theXSec); +} diff --git a/source/physics_lists/builders/src/G4FTFBinaryPiKBuilder.cc b/source/physics_lists/builders/src/G4FTFBinaryPiKBuilder.cc new file mode 100644 index 0000000000..a2dbf8f420 --- /dev/null +++ b/source/physics_lists/builders/src/G4FTFBinaryPiKBuilder.cc @@ -0,0 +1,117 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// + #include "G4FTFBinaryPiKBuilder.hh" + #include "G4ParticleDefinition.hh" + #include "G4ParticleTable.hh" + #include "G4ProcessManager.hh" + + G4FTFBinaryPiKBuilder:: + G4FTFBinaryPiKBuilder(G4bool quasiElastic) + { + theMin = 4*GeV; + theModel = new G4TheoFSGenerator; + + theStringModel = new G4FTFModel; + theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation); + theStringModel->SetFragmentationModel(theStringDecay); + + theCascade = new G4BinaryCascade; + thePreEquilib = new G4PreCompoundModel(new G4ExcitationHandler); + theCascade->SetDeExcitation(thePreEquilib); + + theModel->SetHighEnergyGenerator(theStringModel); + if (quasiElastic) + { + theQuasiElastic=new G4QuasiElasticChannel; + theModel->SetQuasiElasticChannel(theQuasiElastic); + } else + { theQuasiElastic=0;} + + theModel->SetTransport(theCascade); + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + } + + G4FTFBinaryPiKBuilder:: + ~G4FTFBinaryPiKBuilder() + { + delete theCascade; + delete theStringDecay; + delete theStringModel; + delete theModel; + if ( theQuasiElastic ) delete theQuasiElastic; + } + + void G4FTFBinaryPiKBuilder:: + Build(G4HadronElasticProcess * ) {} + + void G4FTFBinaryPiKBuilder:: + Build(G4PionPlusInelasticProcess * aP) + { + aP->AddDataSet(&thePiData); + aP->RegisterMe(theModel); + } + + void G4FTFBinaryPiKBuilder:: + Build(G4PionMinusInelasticProcess * aP) + { + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->AddDataSet(&thePiData); + aP->RegisterMe(theModel); + } + + void G4FTFBinaryPiKBuilder:: + Build(G4KaonPlusInelasticProcess * aP) + { + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->RegisterMe(theModel); + } + + void G4FTFBinaryPiKBuilder:: + Build(G4KaonMinusInelasticProcess * aP) + { + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->RegisterMe(theModel); + } + + void G4FTFBinaryPiKBuilder:: + Build(G4KaonZeroLInelasticProcess * aP) + { + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->RegisterMe(theModel); + } + + void G4FTFBinaryPiKBuilder:: + Build(G4KaonZeroSInelasticProcess * aP) + { + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->RegisterMe(theModel); + } diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNABrennerAngularDistributionPolicy.hh b/source/physics_lists/builders/src/G4FTFBinaryProtonBuilder.cc similarity index 55% rename from source/processes/electromagnetic/lowenergy/include/G4DNABrennerAngularDistributionPolicy.hh rename to source/physics_lists/builders/src/G4FTFBinaryProtonBuilder.cc index 87bb92afda..9b456d0aaf 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4DNABrennerAngularDistributionPolicy.hh +++ b/source/physics_lists/builders/src/G4FTFBinaryProtonBuilder.cc @@ -23,35 +23,59 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// $Id: G4DNABrennerAngularDistributionPolicy.hh,v 1.2 2006/06/29 19:33:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// -// Phys. Med. Biol. 29 N.4 (1983) 443-447 +#include "G4FTFBinaryProtonBuilder.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" +#include "G4ProcessManager.hh" -#ifndef G4DNABRENNERANGULARDISTRIBUTIONPOLICY_HH - #define G4DNABRENNERANGULARDISTRIBUTIONPOLICY_HH 1 +G4FTFBinaryProtonBuilder:: +G4FTFBinaryProtonBuilder(G4bool quasiElastic) +{ + theMin = 4*GeV; + theModel = new G4TheoFSGenerator; - #include "globals.hh" - - class G4DNABrennerAngularDistributionPolicy - { - protected: - G4DNABrennerAngularDistributionPolicy() {} - virtual ~G4DNABrennerAngularDistributionPolicy() {} + theStringModel = new G4FTFModel; + theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation); + theStringModel->SetFragmentationModel(theStringDecay); - G4double RandomizeCosTheta(G4double k, G4int z) const; - G4bool KillIncomingParticle(G4double k) const { return (kSetDeExcitation(thePreEquilib); + theModel->SetTransport(theCascade); - // Hides default constructor and assignment operator as private - G4DNABrennerAngularDistributionPolicy(const G4DNABrennerAngularDistributionPolicy & copy); - G4DNABrennerAngularDistributionPolicy & operator=(const G4DNABrennerAngularDistributionPolicy & right); - - static const G4double stopAndKillLowEnergyLimit; - }; -#endif /* G4DNABRENNERANGULARDISTRIBUTIONPOLICY_HH */ + theModel->SetHighEnergyGenerator(theStringModel); + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + if (quasiElastic) + { + theQuasiElastic=new G4QuasiElasticChannel; + theModel->SetQuasiElasticChannel(theQuasiElastic); + } else + { theQuasiElastic=0;} + +} + +void G4FTFBinaryProtonBuilder:: +Build(G4ProtonInelasticProcess * aP) +{ + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->RegisterMe(theModel); + aP->AddDataSet(&theXSec); +} + +G4FTFBinaryProtonBuilder:: +~G4FTFBinaryProtonBuilder() +{ + delete theStringDecay; + delete theStringModel; + delete theModel; + delete theCascade; + if ( theQuasiElastic ) delete theQuasiElastic; +} + +void G4FTFBinaryProtonBuilder:: +Build(G4HadronElasticProcess * ) +{ +} diff --git a/source/physics_lists/builders/src/G4HadronDElasticPhysics.cc b/source/physics_lists/builders/src/G4HadronDElasticPhysics.cc new file mode 100644 index 0000000000..913ec65070 --- /dev/null +++ b/source/physics_lists/builders/src/G4HadronDElasticPhysics.cc @@ -0,0 +1,190 @@ +// +// ******************************************************************** +// * 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: G4HadronDElasticPhysics.cc,v 1.2 2007/11/14 18:45:37 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: G4HadronDElasticPhysics +// +// Author: 11 April 2006 V. Ivanchenko +// +// Modified: +// 05.07.2006 V.Ivanchenko define process by particle name; +// fix problem of initialisation of HP +// 24.07.2006 V.Ivanchenko add G4NeutronHPElasticData +// 10.08.2006 V.Ivanchenko separate neutrons from other particles +// 17.11.2006 V.Ivanchenko do not redefine G4HadronElastic default parameters +// 19.02.2007 V.Ivanchenko set QModelLowLimit and LowestEnergyLimit to zero +// 19.02.2007 A.Howard set QModelLowLimit and LowestEnergyLimit to zero +// for neutrons +// 06.03.2007 V.Ivanchenko use updated interface to G4UElasticCrossSection +// +//---------------------------------------------------------------------------- +// + +#include "G4HadronDElasticPhysics.hh" + +#include "G4HadronicProcess.hh" +#include "G4HadronElasticProcess.hh" +#include "G4HadronicInteraction.hh" +#include "G4DiffuseElastic.hh" +#include "G4HadronElastic.hh" + +#include "G4ParticleDefinition.hh" +#include "G4ProcessManager.hh" + +#include "G4MesonConstructor.hh" +#include "G4BaryonConstructor.hh" +#include "G4IonConstructor.hh" +#include "G4Neutron.hh" + +#include "G4HadronProcessStore.hh" +#include "G4VQCrossSection.hh" +#include "G4UElasticCrossSection.hh" +#include "G4BGGNucleonElasticXS.hh" +#include "G4BGGPionElasticXS.hh" + +G4HadronDElasticPhysics::G4HadronDElasticPhysics(G4int ver, G4bool hp) + : G4VPhysicsConstructor("DElastic"), mname("DElastic"), verbose(ver), + hpFlag(hp), wasActivated(false) +{ + if(verbose > 1) G4cout << "### HadronDElasticPhysics" << G4endl; +} + +G4HadronDElasticPhysics::~G4HadronDElasticPhysics() +{} + +void G4HadronDElasticPhysics::ConstructParticle() +{ + // G4cout << "G4HadronDElasticPhysics::ConstructParticle" << G4endl; + G4MesonConstructor pMesonConstructor; + pMesonConstructor.ConstructParticle(); + + G4BaryonConstructor pBaryonConstructor; + pBaryonConstructor.ConstructParticle(); + + // Construct light ions + G4IonConstructor pConstructor; + pConstructor.ConstructParticle(); +} + +void G4HadronDElasticPhysics::ConstructProcess() +{ + if(wasActivated) return; + wasActivated = true; + + G4HadronProcessStore* store = G4HadronProcessStore::Instance(); + + if(verbose > 1) + G4cout << "### HadronDElasticPhysics Construct Processes with the model <" + << mname << ">" << G4endl; + + G4UHadronElasticProcess* hel = 0; + G4DiffuseElastic* model = 0; + + G4double elimit = 11.0*MeV; + + G4HadronElastic* he = new G4HadronElastic(); + G4VQCrossSection* man = he->GetCS(); + he->SetMaxEnergy(elimit); + + theParticleIterator->reset(); + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value(); + G4String pname = particle->GetParticleName(); + if(pname == "anti_lambda" || + pname == "anti_neutron" || + pname == "anti_omega-" || + pname == "anti_proton" || + pname == "anti_sigma-" || + pname == "anti_sigma+" || + pname == "anti_xi-" || + pname == "anti_xi0" || + pname == "kaon-" || + pname == "kaon+" || + pname == "kaon0S" || + pname == "kaon0L" || + pname == "lambda" || + pname == "omega-" || + pname == "pi-" || + pname == "pi+" || + pname == "proton" || + pname == "sigma-" || + pname == "sigma+" || + pname == "xi-" || + pname == "alpha" || + pname == "deuteron" || + pname == "triton") { + + G4ProcessManager* pmanager = particle->GetProcessManager(); + hel = new G4UHadronElasticProcess("hElastic"); + hel->SetQElasticCrossSection(man); + if(pname == "proton") { + hel->AddDataSet(new G4BGGNucleonElasticXS(particle)); + } else if (pname == "pi+" || pname == "pi-") { + hel->AddDataSet(new G4BGGPionElasticXS(particle)); + } else { + hel->AddDataSet(new G4UElasticCrossSection(particle)); + } + model = new G4DiffuseElastic(particle); + hel->RegisterMe(model); + hel->RegisterMe(he); + store->Register(hel,particle,he,"elastic"); + store->Register(hel,particle,model,mname); + pmanager->AddDiscreteProcess(hel); + + // neutron case + } else if(pname == "neutron") { + + G4ProcessManager* pmanager = particle->GetProcessManager(); + hel = new G4UHadronElasticProcess("hElastic"); + hel->SetQElasticCrossSection(man); + hel->AddDataSet(new G4BGGNucleonElasticXS(particle)); + model = new G4DiffuseElastic(particle); + if(hpFlag) { + model->SetMinEnergy(19.5*MeV); + G4NeutronHPElastic* modelHP = new G4NeutronHPElastic(); + hel->RegisterMe(modelHP); + store->Register(hel,particle,modelHP,"HP"); + hel->AddDataSet(new G4NeutronHPElasticData()); + } else { + hel->RegisterMe(he); + store->Register(hel,particle,he,"elastic"); + } + hel->RegisterMe(model); + store->Register(hel,particle,model,mname); + pmanager->AddDiscreteProcess(hel); + + if(verbose > 1) + G4cout << "### HadronDElasticPhysics added for " + << particle->GetParticleName() << G4endl; + } + } +} + + diff --git a/source/physics_lists/builders/src/G4HadronElasticPhysics.cc b/source/physics_lists/builders/src/G4HadronElasticPhysics.cc index 5c47e680fc..4d494fc13e 100644 --- a/source/physics_lists/builders/src/G4HadronElasticPhysics.cc +++ b/source/physics_lists/builders/src/G4HadronElasticPhysics.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HadronElasticPhysics.cc,v 1.7 2007/03/06 17:52:06 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4HadronHElasticPhysics.cc b/source/physics_lists/builders/src/G4HadronHElasticPhysics.cc index ea9e53119a..f1b20e12f4 100644 --- a/source/physics_lists/builders/src/G4HadronHElasticPhysics.cc +++ b/source/physics_lists/builders/src/G4HadronHElasticPhysics.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronHElasticPhysics.cc,v 1.2 2007/03/21 12:36:14 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4HadronHElasticPhysics.cc,v 1.4 2007/11/15 18:08:11 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -60,10 +60,9 @@ #include "G4BGGNucleonElasticXS.hh" #include "G4BGGPionElasticXS.hh" -G4HadronHElasticPhysics::G4HadronHElasticPhysics( - const G4String& name, G4int ver, G4bool hp, G4bool glauber) - : G4VPhysicsConstructor(name), mname(name), verbose(ver), hpFlag(hp), - glFlag(glauber),wasActivated(false) +G4HadronHElasticPhysics::G4HadronHElasticPhysics(G4int ver, G4bool hp) + : G4VPhysicsConstructor("HElastic"), mname("HElastic"), verbose(ver), + hpFlag(hp), wasActivated(false) { if(verbose > 1) G4cout << "### HadronHElasticPhysics" << G4endl; model = 0; @@ -99,8 +98,8 @@ void G4HadronHElasticPhysics::ConstructProcess() G4HadronProcessStore* store = G4HadronProcessStore::Instance(); - // G4double elimit = 0.4*GeV; - G4double elimit = 0.0; + G4double elimit = 0.4*GeV; + //G4double elimit = 0.0; if(verbose > 1) G4cout << "### HadronElasticPhysics Construct Processes with HE limit " diff --git a/source/physics_lists/builders/src/G4HadronProcessStore.cc b/source/physics_lists/builders/src/G4HadronProcessStore.cc index cd835b8940..a5fdc33433 100644 --- a/source/physics_lists/builders/src/G4HadronProcessStore.cc +++ b/source/physics_lists/builders/src/G4HadronProcessStore.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HadronProcessStore.cc,v 1.1 2006/10/31 11:35:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4HadronQElasticPhysics.cc b/source/physics_lists/builders/src/G4HadronQElasticPhysics.cc index 75a1a693e3..26da8d9e40 100644 --- a/source/physics_lists/builders/src/G4HadronQElasticPhysics.cc +++ b/source/physics_lists/builders/src/G4HadronQElasticPhysics.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HadronQElasticPhysics.cc,v 1.6 2006/11/29 14:33:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4IonBinaryCascadePhysics.cc b/source/physics_lists/builders/src/G4IonBinaryCascadePhysics.cc index 369f9762a2..1a834fc6cd 100644 --- a/source/physics_lists/builders/src/G4IonBinaryCascadePhysics.cc +++ b/source/physics_lists/builders/src/G4IonBinaryCascadePhysics.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4IonBinaryCascadePhysics.cc,v 1.1 2006/10/31 11:35:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4IonPhysics.cc b/source/physics_lists/builders/src/G4IonPhysics.cc index ce766b50d7..b8377430bd 100644 --- a/source/physics_lists/builders/src/G4IonPhysics.cc +++ b/source/physics_lists/builders/src/G4IonPhysics.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4IonPhysics.cc,v 1.1 2006/10/31 11:35:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4LEPNeutronBuilder.cc b/source/physics_lists/builders/src/G4LEPNeutronBuilder.cc index 9883f31b0c..fa55e093cb 100644 --- a/source/physics_lists/builders/src/G4LEPNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4LEPNeutronBuilder.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -86,10 +86,13 @@ Build(G4HadronCaptureProcess * aP) void G4LEPNeutronBuilder:: Build(G4NeutronInelasticProcess * aP) { - theLENeutronModel = new G4LENeutronInelastic(); - theLENeutronModel->SetMinEnergy(theIMin); - theLENeutronModel->SetMaxEnergy(theIMax); - aP->RegisterMe(theLENeutronModel); + if ( theIMax > 1.*eV ) + { + theLENeutronModel = new G4LENeutronInelastic(); + theLENeutronModel->SetMinEnergy(theIMin); + theLENeutronModel->SetMaxEnergy(theIMax); + aP->RegisterMe(theLENeutronModel); + } } // 2002 by J.P. Wellisch diff --git a/source/physics_lists/builders/src/G4LEPPiKBuilder.cc b/source/physics_lists/builders/src/G4LEPPiKBuilder.cc index b23fc0b415..df3921ef05 100644 --- a/source/physics_lists/builders/src/G4LEPPiKBuilder.cc +++ b/source/physics_lists/builders/src/G4LEPPiKBuilder.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4LEPProtonBuilder.cc b/source/physics_lists/builders/src/G4LEPProtonBuilder.cc index 6ad027c589..04ccb714ee 100644 --- a/source/physics_lists/builders/src/G4LEPProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4LEPProtonBuilder.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4LHEPStoppingPhysics.cc b/source/physics_lists/builders/src/G4LHEPStoppingPhysics.cc index 7c4f768291..742dffb64d 100644 --- a/source/physics_lists/builders/src/G4LHEPStoppingPhysics.cc +++ b/source/physics_lists/builders/src/G4LHEPStoppingPhysics.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4LHEPStoppingPhysics.cc,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4MiscLHEPBuilder.cc b/source/physics_lists/builders/src/G4MiscLHEPBuilder.cc index 9c177c0d8c..61ffbd171a 100644 --- a/source/physics_lists/builders/src/G4MiscLHEPBuilder.cc +++ b/source/physics_lists/builders/src/G4MiscLHEPBuilder.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4NeutronBuilder.cc b/source/physics_lists/builders/src/G4NeutronBuilder.cc index 85a8c4bf67..19a382a124 100644 --- a/source/physics_lists/builders/src/G4NeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4NeutronBuilder.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4NeutronTrackingCut.cc b/source/physics_lists/builders/src/G4NeutronTrackingCut.cc index 45233f45df..b3826a7997 100644 --- a/source/physics_lists/builders/src/G4NeutronTrackingCut.cc +++ b/source/physics_lists/builders/src/G4NeutronTrackingCut.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4NeutronTrackingCut.cc,v 1.4 2006/11/24 16:30:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4PiKBuilder.cc b/source/physics_lists/builders/src/G4PiKBuilder.cc index d857f3586d..ca09e40366 100644 --- a/source/physics_lists/builders/src/G4PiKBuilder.cc +++ b/source/physics_lists/builders/src/G4PiKBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PiKBuilder.cc,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4ProtonBuilder.cc b/source/physics_lists/builders/src/G4ProtonBuilder.cc index 5d856b0139..85bbf6e396 100644 --- a/source/physics_lists/builders/src/G4ProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4ProtonBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ProtonBuilder.cc,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QEmExtraPhysics.cc b/source/physics_lists/builders/src/G4QEmExtraPhysics.cc index 5339ad50f4..a05f2d7d98 100644 --- a/source/physics_lists/builders/src/G4QEmExtraPhysics.cc +++ b/source/physics_lists/builders/src/G4QEmExtraPhysics.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QEmExtraPhysics.cc,v 1.1 2007/05/23 17:38:35 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSBinaryNeutronBuilder.cc b/source/physics_lists/builders/src/G4QGSBinaryNeutronBuilder.cc new file mode 100644 index 0000000000..bdb9c4feeb --- /dev/null +++ b/source/physics_lists/builders/src/G4QGSBinaryNeutronBuilder.cc @@ -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. * +// ******************************************************************** +// +#include "G4QGSBinaryNeutronBuilder.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" +#include "G4ProcessManager.hh" + +G4QGSBinaryNeutronBuilder:: +G4QGSBinaryNeutronBuilder(G4bool quasiElastic) +{ + theMin = 12*GeV; + theModel = new G4TheoFSGenerator; + + theStringModel = new G4QGSModel< G4QGSParticipants >; + theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation); + theStringModel->SetFragmentationModel(theStringDecay); + + theCascade = new G4BinaryCascade; + thePreEquilib = new G4PreCompoundModel(new G4ExcitationHandler); + theCascade->SetDeExcitation(thePreEquilib); + + theModel->SetTransport(theCascade); + theModel->SetHighEnergyGenerator(theStringModel); + if (quasiElastic) + { + theQuasiElastic=new G4QuasiElasticChannel; + theModel->SetQuasiElasticChannel(theQuasiElastic); + } else + { theQuasiElastic=0;} +} + +G4QGSBinaryNeutronBuilder:: +~G4QGSBinaryNeutronBuilder() +{ + delete theStringDecay; + delete theStringModel; + delete thePreEquilib; + delete theCascade; + if ( theQuasiElastic ) delete theQuasiElastic; + delete theModel; +} + +void G4QGSBinaryNeutronBuilder:: +Build(G4HadronElasticProcess * ) +{ +} + +void G4QGSBinaryNeutronBuilder:: +Build(G4HadronFissionProcess * ) +{ +} + +void G4QGSBinaryNeutronBuilder:: +Build(G4HadronCaptureProcess * ) +{ +} + +void G4QGSBinaryNeutronBuilder:: +Build(G4NeutronInelasticProcess * aP) +{ + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->RegisterMe(theModel); + aP->AddDataSet(&theXSec); +} + diff --git a/source/physics_lists/builders/src/G4QGSBinaryPiKBuilder.cc b/source/physics_lists/builders/src/G4QGSBinaryPiKBuilder.cc new file mode 100644 index 0000000000..8678dc6493 --- /dev/null +++ b/source/physics_lists/builders/src/G4QGSBinaryPiKBuilder.cc @@ -0,0 +1,118 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#include "G4QGSBinaryPiKBuilder.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" +#include "G4ProcessManager.hh" + +G4QGSBinaryPiKBuilder:: +G4QGSBinaryPiKBuilder(G4bool quasiElastic) +{ + theMin = 12*GeV; + theModel = new G4TheoFSGenerator; + + theStringModel = new G4QGSModel< G4QGSParticipants >; + theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation); + theStringModel->SetFragmentationModel(theStringDecay); + + + theCascade = new G4BinaryCascade; + thePreEquilib = new G4PreCompoundModel(new G4ExcitationHandler); + theCascade->SetDeExcitation(thePreEquilib); + + theModel->SetHighEnergyGenerator(theStringModel); + if (quasiElastic) + { + theQuasiElastic=new G4QuasiElasticChannel; + theModel->SetQuasiElasticChannel(theQuasiElastic); + } else + { theQuasiElastic=0;} + theModel->SetTransport(theCascade); +} + +G4QGSBinaryPiKBuilder:: +~G4QGSBinaryPiKBuilder() +{ + delete theCascade; + delete thePreEquilib; + if ( theQuasiElastic ) delete theQuasiElastic; + delete theStringDecay; + delete theStringModel; + delete theModel; +} + +void G4QGSBinaryPiKBuilder:: +Build(G4HadronElasticProcess * ) {} + +void G4QGSBinaryPiKBuilder:: +Build(G4PionPlusInelasticProcess * aP) +{ + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->AddDataSet(&thePiData); + aP->RegisterMe(theModel); +} + +void G4QGSBinaryPiKBuilder:: +Build(G4PionMinusInelasticProcess * aP) +{ + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->AddDataSet(&thePiData); + aP->RegisterMe(theModel); +} + +void G4QGSBinaryPiKBuilder:: +Build(G4KaonPlusInelasticProcess * aP) +{ + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->RegisterMe(theModel); +} + +void G4QGSBinaryPiKBuilder:: +Build(G4KaonMinusInelasticProcess * aP) +{ + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->RegisterMe(theModel); +} + +void G4QGSBinaryPiKBuilder:: +Build(G4KaonZeroLInelasticProcess * aP) +{ + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->RegisterMe(theModel); +} + +void G4QGSBinaryPiKBuilder:: +Build(G4KaonZeroSInelasticProcess * aP) +{ + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->RegisterMe(theModel); +} diff --git a/source/physics_lists/builders/src/G4QGSBinaryProtonBuilder.cc b/source/physics_lists/builders/src/G4QGSBinaryProtonBuilder.cc new file mode 100644 index 0000000000..ad0e3c5ca0 --- /dev/null +++ b/source/physics_lists/builders/src/G4QGSBinaryProtonBuilder.cc @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// + #include "G4QGSBinaryProtonBuilder.hh" + #include "G4ParticleDefinition.hh" + #include "G4ParticleTable.hh" + #include "G4ProcessManager.hh" + + G4QGSBinaryProtonBuilder:: + G4QGSBinaryProtonBuilder(G4bool quasiElastic) + { + theMin = 12*GeV; + theModel = new G4TheoFSGenerator; + + theStringModel = new G4QGSModel< G4QGSParticipants >; + theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation); + theStringModel->SetFragmentationModel(theStringDecay); + + theCascade = new G4BinaryCascade; + thePreEquilib = new G4PreCompoundModel(new G4ExcitationHandler); + theCascade->SetDeExcitation(thePreEquilib); + + theModel->SetTransport(theCascade); + theModel->SetHighEnergyGenerator(theStringModel); + if (quasiElastic) + { + theQuasiElastic=new G4QuasiElasticChannel; + theModel->SetQuasiElasticChannel(theQuasiElastic); + } else + { theQuasiElastic=0;} + } + + void G4QGSBinaryProtonBuilder:: + Build(G4ProtonInelasticProcess * aP) + { +// G4cout << "adding inelastic Proton in QGSBinary" << G4endl; + aP->AddDataSet(&theXSec); + theModel->SetMinEnergy(theMin); + theModel->SetMaxEnergy(100*TeV); + aP->RegisterMe(theModel); + } + + void G4QGSBinaryProtonBuilder:: + Build(G4HadronElasticProcess * ) + { + } + + G4QGSBinaryProtonBuilder:: + ~G4QGSBinaryProtonBuilder() + { + delete thePreEquilib; + delete theCascade; + if ( theQuasiElastic ) delete theQuasiElastic; + delete theStringDecay; + delete theStringModel; + delete theModel; + } + diff --git a/source/physics_lists/builders/src/G4QGSPNeutronBuilder.cc b/source/physics_lists/builders/src/G4QGSPNeutronBuilder.cc index fcd1080537..75610819b8 100644 --- a/source/physics_lists/builders/src/G4QGSPNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSPNeutronBuilder.cc @@ -29,7 +29,7 @@ #include "G4ProcessManager.hh" G4QGSPNeutronBuilder:: -G4QGSPNeutronBuilder(G4bool quasiElastic) +G4QGSPNeutronBuilder(G4bool quasiElastic, G4bool projectileDiffraction) { theMin = 12*GeV; theModel = new G4TheoFSGenerator; @@ -50,6 +50,12 @@ G4QGSPNeutronBuilder(G4bool quasiElastic) theModel->SetQuasiElasticChannel(theQuasiElastic); } else { theQuasiElastic=0;} + if ( projectileDiffraction ) + { + theProjectileDiffraction=new G4ProjectileDiffractiveChannel; + theModel->SetProjectileDiffraction(theProjectileDiffraction); + } else + { theProjectileDiffraction=0;} } G4QGSPNeutronBuilder:: @@ -60,6 +66,7 @@ G4QGSPNeutronBuilder:: delete thePreEquilib; delete theCascade; if ( theQuasiElastic ) delete theQuasiElastic; + if ( theProjectileDiffraction ) delete theProjectileDiffraction; delete theModel; } diff --git a/source/physics_lists/builders/src/G4QGSPPiKBuilder.cc b/source/physics_lists/builders/src/G4QGSPPiKBuilder.cc index 9d594bb5d2..cb561873ac 100644 --- a/source/physics_lists/builders/src/G4QGSPPiKBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSPPiKBuilder.cc @@ -29,7 +29,7 @@ #include "G4ProcessManager.hh" G4QGSPPiKBuilder:: -G4QGSPPiKBuilder(G4bool quasiElastic) +G4QGSPPiKBuilder(G4bool quasiElastic, G4bool projectileDiffraction) { theMin = 12*GeV; theModel = new G4TheoFSGenerator; @@ -49,7 +49,14 @@ G4QGSPPiKBuilder(G4bool quasiElastic) theQuasiElastic=new G4QuasiElasticChannel; theModel->SetQuasiElasticChannel(theQuasiElastic); } else - { theQuasiElastic=0;} + { theQuasiElastic=0;} + if ( projectileDiffraction ) + { + theProjectileDiffraction=new G4ProjectileDiffractiveChannel; + theModel->SetProjectileDiffraction(theProjectileDiffraction); + } else + { theProjectileDiffraction=0;} + theModel->SetTransport(theCascade); } @@ -59,6 +66,7 @@ G4QGSPPiKBuilder:: delete theCascade; delete thePreEquilib; if ( theQuasiElastic ) delete theQuasiElastic; + if ( theProjectileDiffraction ) delete theProjectileDiffraction; delete theStringDecay; delete theStringModel; delete theModel; diff --git a/source/physics_lists/builders/src/G4QGSPProtonBuilder.cc b/source/physics_lists/builders/src/G4QGSPProtonBuilder.cc index 4423d51987..b8c17d5cc1 100644 --- a/source/physics_lists/builders/src/G4QGSPProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSPProtonBuilder.cc @@ -29,7 +29,7 @@ #include "G4ProcessManager.hh" G4QGSPProtonBuilder:: - G4QGSPProtonBuilder(G4bool quasiElastic) + G4QGSPProtonBuilder(G4bool quasiElastic, G4bool projectileDiffraction) { theMin = 12*GeV; theModel = new G4TheoFSGenerator; @@ -50,6 +50,12 @@ theModel->SetQuasiElasticChannel(theQuasiElastic); } else { theQuasiElastic=0;} + if ( projectileDiffraction ) + { + theProjectileDiffraction=new G4ProjectileDiffractiveChannel; + theModel->SetProjectileDiffraction(theProjectileDiffraction); + } else + { theProjectileDiffraction=0;} } void G4QGSPProtonBuilder:: @@ -73,6 +79,7 @@ delete thePreEquilib; delete theCascade; if ( theQuasiElastic ) delete theQuasiElastic; + if ( theProjectileDiffraction ) delete theProjectileDiffraction; delete theStringDecay; delete theStringModel; delete theModel; diff --git a/source/physics_lists/builders/src/G4QStoppingPhysics.cc b/source/physics_lists/builders/src/G4QStoppingPhysics.cc index 81449841c3..896d1554f5 100644 --- a/source/physics_lists/builders/src/G4QStoppingPhysics.cc +++ b/source/physics_lists/builders/src/G4QStoppingPhysics.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QStoppingPhysics.cc,v 1.2 2007/04/26 16:03:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/examples/extended/electromagnetic/TestEm8/src/PhysListGeneral.cc b/source/physics_lists/builders/src/G4RadioactiveDecayPhysics.cc similarity index 70% rename from examples/extended/electromagnetic/TestEm8/src/PhysListGeneral.cc rename to source/physics_lists/builders/src/G4RadioactiveDecayPhysics.cc index 8d93261d5c..61e4473e0b 100644 --- a/examples/extended/electromagnetic/TestEm8/src/PhysListGeneral.cc +++ b/source/physics_lists/builders/src/G4RadioactiveDecayPhysics.cc @@ -23,52 +23,46 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// $Id: PhysListGeneral.cc,v 1.3 2006/06/29 17:00:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -#include "PhysListGeneral.hh" -#include "G4ParticleDefinition.hh" +#include "G4RadioactiveDecayPhysics.hh" #include "G4ProcessManager.hh" +#include "G4RadioactiveDecay.hh" +#include "G4GenericIon.hh" +#include "globals.hh" + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -PhysListGeneral::PhysListGeneral(const G4String& name) - : G4VPhysicsConstructor(name) +G4RadioactiveDecayPhysics::G4RadioactiveDecayPhysics(const G4String& name) + : G4VPhysicsConstructor(name), theRadioactiveDecay(0) {} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -PhysListGeneral::~PhysListGeneral() -{} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -void PhysListGeneral::ConstructProcess() +G4RadioactiveDecayPhysics::~G4RadioactiveDecayPhysics() { - // Add Decay Process - - G4Decay* fDecayProcess = new G4Decay(); - - theParticleIterator->reset(); - while( (*theParticleIterator)() ) - { - G4ParticleDefinition* particle = theParticleIterator->value(); - G4ProcessManager* pmanager = particle->GetProcessManager(); - - if (fDecayProcess->IsApplicable(*particle) && !particle->IsShortLived()) - { - pmanager ->AddProcess(fDecayProcess); - - // set ordering for PostStepDoIt and AtRestDoIt - pmanager ->SetProcessOrdering(fDecayProcess, idxPostStep); - pmanager ->SetProcessOrdering(fDecayProcess, idxAtRest); - - } - } + delete theRadioactiveDecay; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4RadioactiveDecayPhysics::ConstructParticle() +{ + G4GenericIon::GenericIon(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4RadioactiveDecayPhysics::ConstructProcess() +{ + theRadioactiveDecay = new G4RadioactiveDecay(); + G4GenericIon* ion = G4GenericIon::GenericIon(); + G4ProcessManager* pmanager = ion->GetProcessManager(); + pmanager->AddProcess(theRadioactiveDecay); + pmanager->SetProcessOrdering(theRadioactiveDecay, idxPostStep); + pmanager->SetProcessOrdering(theRadioactiveDecay, idxAtRest); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/physics_lists/builders/src/G4StoppingHadronBuilder.cc b/source/physics_lists/builders/src/G4StoppingHadronBuilder.cc index 57daeae987..b047731f37 100644 --- a/source/physics_lists/builders/src/G4StoppingHadronBuilder.cc +++ b/source/physics_lists/builders/src/G4StoppingHadronBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4StoppingHadronBuilder.cc,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/FTFC.hh b/source/physics_lists/lists/include/FTFC.hh index 0f0b4290af..a3bb071935 100644 --- a/source/physics_lists/lists/include/FTFC.hh +++ b/source/physics_lists/lists/include/FTFC.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FTFC.hh,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/FTFC.icc b/source/physics_lists/lists/include/FTFC.icc index 99676cf1f6..aa6ec12398 100644 --- a/source/physics_lists/lists/include/FTFC.icc +++ b/source/physics_lists/lists/include/FTFC.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FTFC.icc,v 1.5 2007/06/01 15:24:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/FTFP.hh b/source/physics_lists/lists/include/FTFP.hh index 3fd20ad935..7445905681 100644 --- a/source/physics_lists/lists/include/FTFP.hh +++ b/source/physics_lists/lists/include/FTFP.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FTFP.hh,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/FTFP.icc b/source/physics_lists/lists/include/FTFP.icc index b41f755fb4..568d550229 100644 --- a/source/physics_lists/lists/include/FTFP.icc +++ b/source/physics_lists/lists/include/FTFP.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FTFP.icc,v 1.5 2007/06/01 15:20:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/FTFP_BERT.hh b/source/physics_lists/lists/include/FTFP_BERT.hh new file mode 100644 index 0000000000..a70068f3ca --- /dev/null +++ b/source/physics_lists/lists/include/FTFP_BERT.hh @@ -0,0 +1,67 @@ +// +// ******************************************************************** +// * 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: FTFP_BERT.hh,v 1.1 2007/10/19 15:35:08 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: +// +// Author: 2007 Gunter Folger +// created from FTFP +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#ifndef TFTFP_BERT_h +#define TFTFP_BERT_h 1 + +#include "G4VModularPhysicsList.hh" +#include "globals.hh" +#include "CompileTimeConstraints.hh" + +template +class TFTFP_BERT: public T +{ +public: + TFTFP_BERT(G4int ver = 1); + virtual ~TFTFP_BERT(); + +public: + // SetCuts() + virtual void SetCuts(); + +private: + enum {ok = CompileTimeConstraints::IsA::ok }; +}; +#include "FTFP_BERT.icc" +typedef TFTFP_BERT FTFP_BERT; + +#endif + + + diff --git a/source/physics_lists/lists/include/FTFP_BERT.icc b/source/physics_lists/lists/include/FTFP_BERT.icc new file mode 100644 index 0000000000..3b3a3dbfd6 --- /dev/null +++ b/source/physics_lists/lists/include/FTFP_BERT.icc @@ -0,0 +1,121 @@ +// +// ******************************************************************** +// * 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: FTFP_BERT.icc,v 1.1 2007/10/19 15:35:08 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: +// +// Author: 2007 Gunter Folger +// +// created from FTFP +//---------------------------------------------------------------------------- +// + +#include "globals.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleWithCuts.hh" +#include "G4ProcessManager.hh" +#include "G4ProcessVector.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" + +#include "G4Material.hh" +#include "G4MaterialTable.hh" +#include "G4ios.hh" +#include + +#include "G4DecayPhysics.hh" +#include "G4EmStandardPhysics.hh" +#include "G4EmExtraPhysics.hh" +#include "G4IonPhysics.hh" +#include "G4QStoppingPhysics.hh" +#include "G4HadronElasticPhysics.hh" +#include "G4NeutronTrackingCut.hh" + +#include "G4DataQuestionaire.hh" +#include "HadronPhysicsFTFP_BERT.hh" + +#include "G4WarnPLStatus.hh" + +template TFTFP_BERT::TFTFP_BERT(G4int ver): T() +{ + // default cut value (1.0mm) + // defaultCutValue = 1.0*mm; + G4DataQuestionaire it(photon); + G4cout << "<<< Geant4 Physics List simulation engine: FTFP_BERT 0.9"<defaultCutValue = 0.7*mm; + this->SetVerboseLevel(ver); + + G4WarnPLStatus exp; + exp.Experimental("FTFP_BERT"); + + // EM Physics + this->RegisterPhysics( new G4EmStandardPhysics(ver)); + + // Synchroton Radiation & GN Physics + this->RegisterPhysics( new G4EmExtraPhysics("extra EM")); + + // Decays + this->RegisterPhysics( new G4DecayPhysics("decay",ver) ); + + // Hadron Elastic scattering + this-> RegisterPhysics( new G4HadronElasticPhysics("elastic",ver,false)); + + // Hadron Physics + G4bool quasiElastic; + this->RegisterPhysics( new HadronPhysicsFTFP_BERT("hadron",quasiElastic=true)); + + // Stopping Physics + this->RegisterPhysics( new G4QStoppingPhysics("stopping")); + + // Ion Physics + this->RegisterPhysics( new G4IonPhysics("ion")); + + // Neutron tracking cut + this->RegisterPhysics( new G4NeutronTrackingCut("Neutron tracking cut", ver)); + +} + +template TFTFP_BERT::~TFTFP_BERT() +{ +} + +template void TFTFP_BERT::SetCuts() +{ + if (this->verboseLevel >1){ + G4cout << "FTFP_BERT::SetCuts:"; + } + // " G4VUserPhysicsList::SetCutsWithDefault" method sets + // the default cut value for all particle types + + this->SetCutsWithDefault(); + +// if (this->verboseLevel > 0) +// G4VUserPhysicsList::DumpCutValuesTable(); +} diff --git a/source/physics_lists/lists/include/FTFP_EMV.hh b/source/physics_lists/lists/include/FTFP_EMV.hh index 5f1e41c2ff..81a618d726 100644 --- a/source/physics_lists/lists/include/FTFP_EMV.hh +++ b/source/physics_lists/lists/include/FTFP_EMV.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FTFP_EMV.hh,v 1.1 2007/04/26 14:47:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/FTFP_EMV.icc b/source/physics_lists/lists/include/FTFP_EMV.icc index e696137f7d..8497ff811f 100644 --- a/source/physics_lists/lists/include/FTFP_EMV.icc +++ b/source/physics_lists/lists/include/FTFP_EMV.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: FTFP_EMV.icc,v 1.2 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/FTF_BIC.hh b/source/physics_lists/lists/include/FTF_BIC.hh new file mode 100644 index 0000000000..2197564a7e --- /dev/null +++ b/source/physics_lists/lists/include/FTF_BIC.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * 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: FTF_BIC.hh,v 1.1 2007/11/16 16:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: +// +// Author: 2007 Gunter Folger +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#ifndef TFTF_BIC_h +#define TFTF_BIC_h 1 + +#include "G4VModularPhysicsList.hh" +#include "globals.hh" +#include "CompileTimeConstraints.hh" + +template +class TFTF_BIC: public T +{ +public: + TFTF_BIC(G4int ver = 1); + virtual ~TFTF_BIC(); + +public: + // SetCuts() + virtual void SetCuts(); + +private: + enum {ok = CompileTimeConstraints::IsA::ok }; +}; +#include "FTF_BIC.icc" +typedef TFTF_BIC FTF_BIC; + +#endif + + + diff --git a/source/physics_lists/lists/include/FTF_BIC.icc b/source/physics_lists/lists/include/FTF_BIC.icc new file mode 100644 index 0000000000..e05c8968e5 --- /dev/null +++ b/source/physics_lists/lists/include/FTF_BIC.icc @@ -0,0 +1,125 @@ +// +// ******************************************************************** +// * 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: FTF_BIC.icc,v 1.1 2007/11/16 16:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: FTF_BIC +// +// Author: 2007 Gunter Folger +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#include "globals.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleWithCuts.hh" +#include "G4ProcessManager.hh" +#include "G4ProcessVector.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" + +#include "G4Material.hh" +#include "G4MaterialTable.hh" +#include "G4ios.hh" +#include + +#include "G4DecayPhysics.hh" +#include "G4EmStandardPhysics.hh" +#include "G4EmExtraPhysics.hh" +#include "G4IonBinaryCascadePhysics.hh" +#include "G4QStoppingPhysics.hh" +#include "G4HadronElasticPhysics.hh" +#include "G4NeutronTrackingCut.hh" + +#include "G4DataQuestionaire.hh" +#include "HadronPhysicsFTF_BIC.hh" + +#include "G4WarnPLStatus.hh" + +template TFTF_BIC::TFTF_BIC(G4int ver): T() +{ + // default cut value (1.0mm) + // defaultCutValue = 1.0*mm; + + G4DataQuestionaire it(photon); + G4cout << "<<< Geant4 Physics List simulation engine: FTF_BIC 1.0"<defaultCutValue = 0.7*mm; + this->SetVerboseLevel(ver); + + G4WarnPLStatus exp; + exp.Experimental("FTF_BIC"); + + // EM Physics + this->RegisterPhysics( new G4EmStandardPhysics(ver)); + + // Synchroton Radiation & GN Physics + this->RegisterPhysics( new G4EmExtraPhysics("extra EM")); + + // Decays + this->RegisterPhysics( new G4DecayPhysics("decay",ver) ); + + // Hadron Elastic scattering + this-> RegisterPhysics( new G4HadronElasticPhysics("elastic",ver,false)); + + // Hadron Physics + G4bool quasiElastic; + this->RegisterPhysics( new HadronPhysicsFTF_BIC("hadron",quasiElastic=true)); + + // Stopping Physics + this->RegisterPhysics( new G4QStoppingPhysics("stopping")); + + // Ion Physics + this->RegisterPhysics( new G4IonBinaryCascadePhysics("ionBIC")); + + // Neutron tracking cut + this->RegisterPhysics( new G4NeutronTrackingCut("Neutron tracking cut", ver)); + +} + +template TFTF_BIC::~TFTF_BIC() +{ +} + +template void TFTF_BIC::SetCuts() +{ + if (this->verboseLevel >1){ + G4cout << "FTF_BIC::SetCuts:"; + } + // " G4VUserPhysicsList::SetCutsWithDefault" method sets + // the default cut value for all particle types + + this->SetCutsWithDefault(); + +// if (this->verboseLevel >0) +// G4VUserPhysicsList::DumpCutValuesTable(); + +} + diff --git a/source/physics_lists/lists/include/G4HadronInelasticQBBC.hh b/source/physics_lists/lists/include/G4HadronInelasticQBBC.hh index eb632e06e1..2442b96baa 100644 --- a/source/physics_lists/lists/include/G4HadronInelasticQBBC.hh +++ b/source/physics_lists/lists/include/G4HadronInelasticQBBC.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronInelasticQBBC.hh,v 1.2 2007/04/16 11:57:40 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4HadronInelasticQBBC.hh,v 1.4 2007/11/15 12:18:11 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -57,10 +57,11 @@ class G4HadronicProcess; class G4TheoFSGenerator; -class G4StringChipsParticleLevelInterface; +class G4QStringChipsParticleLevelInterface; class G4ExcitedStringDecay; class G4HadronProcessStore; class G4GeneratorPrecompoundInterface; +class G4BinaryCascade; class G4PreCompoundModel; class G4QuasiElasticChannel; @@ -103,8 +104,9 @@ private: G4PreCompoundModel* thePreEquilib; G4QuasiElasticChannel* theQuasiElastic; - G4GeneratorPrecompoundInterface* theCascade; - G4StringChipsParticleLevelInterface * theCHIPSCascade; + // G4GeneratorPrecompoundInterface* theCascade; + G4BinaryCascade* theCascade; + G4QStringChipsParticleLevelInterface * theCHIPSCascade; G4QGSModel< G4QGSParticipants > * theQGStringModel; G4ExcitedStringDecay* theQGStringDecay; G4ExcitedStringDecay* theFTFStringDecay; diff --git a/source/physics_lists/lists/include/G4HadronInelasticQLHEP.hh b/source/physics_lists/lists/include/G4HadronInelasticQLHEP.hh index 179b2a978a..1ff6fa5ef6 100644 --- a/source/physics_lists/lists/include/G4HadronInelasticQLHEP.hh +++ b/source/physics_lists/lists/include/G4HadronInelasticQLHEP.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HadronInelasticQLHEP.hh,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsFTFC.hh b/source/physics_lists/lists/include/HadronPhysicsFTFC.hh index 7bebbfc66e..4ab4f7b753 100644 --- a/source/physics_lists/lists/include/HadronPhysicsFTFC.hh +++ b/source/physics_lists/lists/include/HadronPhysicsFTFC.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsFTFC.hh,v 1.2 2007/06/01 15:20:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsFTFP.hh b/source/physics_lists/lists/include/HadronPhysicsFTFP.hh index ada2d74948..fc61fa04c1 100644 --- a/source/physics_lists/lists/include/HadronPhysicsFTFP.hh +++ b/source/physics_lists/lists/include/HadronPhysicsFTFP.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsFTFP.hh,v 1.2 2007/06/01 15:20:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsFTFP_BERT.hh b/source/physics_lists/lists/include/HadronPhysicsFTFP_BERT.hh new file mode 100644 index 0000000000..e4854b5d8c --- /dev/null +++ b/source/physics_lists/lists/include/HadronPhysicsFTFP_BERT.hh @@ -0,0 +1,95 @@ +// +// ******************************************************************** +// * 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: HadronPhysicsFTFP_BERT.hh,v 1.2 2007/11/15 16:58:16 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: +// +// Author: 2007 Gunter Folger +// created from HadronPhysicsFTFP +// Modified: +// 23.11.2005 G.Folger: migration to non static particles +// 08.06.2006 V.Ivanchenko: remove stopping +// +//---------------------------------------------------------------------------- +// +#ifndef HadronPhysicsFTFP_BERT_h +#define HadronPhysicsFTFP_BERT_h 1 + +#include "globals.hh" +#include "G4ios.hh" + +#include "G4VPhysicsConstructor.hh" +#include "G4MiscLHEPBuilder.hh" + +#include "G4PiKBuilder.hh" +#include "G4BertiniPiKBuilder.hh" +#include "G4FTFPPiKBuilder.hh" + +#include "G4ProtonBuilder.hh" +#include "G4BertiniProtonBuilder.hh" +#include "G4FTFPNeutronBuilder.hh" +#include "G4FTFPProtonBuilder.hh" + +#include "G4NeutronBuilder.hh" +#include "G4BertiniNeutronBuilder.hh" +#include "G4FTFPNeutronBuilder.hh" +#include "G4LEPNeutronBuilder.hh" + +class HadronPhysicsFTFP_BERT : public G4VPhysicsConstructor +{ + public: + HadronPhysicsFTFP_BERT(const G4String& name ="hadron",G4bool quasiElastic=true); + virtual ~HadronPhysicsFTFP_BERT(); + + public: + virtual void ConstructParticle(); + virtual void ConstructProcess(); + + private: + void CreateModels(); + G4NeutronBuilder * theNeutrons; + G4BertiniNeutronBuilder * theBertiniNeutron; + G4FTFPNeutronBuilder * theFTFPNeutron; + G4LEPNeutronBuilder * theLEPNeutron; //needed for capture&fission + + G4PiKBuilder * thePiK; + G4BertiniPiKBuilder * theBertiniPiK; + G4FTFPPiKBuilder * theFTFPPiK; + + G4ProtonBuilder * thePro; + G4BertiniProtonBuilder * theBertiniPro; + G4FTFPProtonBuilder * theFTFPPro; + + G4MiscLHEPBuilder * theMiscLHEP; + + G4bool QuasiElastic; +}; + +#endif + diff --git a/source/physics_lists/lists/include/HadronPhysicsFTF_BIC.hh b/source/physics_lists/lists/include/HadronPhysicsFTF_BIC.hh new file mode 100644 index 0000000000..ccfcbe9cce --- /dev/null +++ b/source/physics_lists/lists/include/HadronPhysicsFTF_BIC.hh @@ -0,0 +1,96 @@ +// +// ******************************************************************** +// * 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: HadronPhysicsFTF_BIC.hh,v 1.1 2007/11/16 16:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: HadronPhysicsFTF_BIC +// +// Author: 2007 Gunter Folger +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#ifndef HadronPhysicsFTF_BIC_h +#define HadronPhysicsFTF_BIC_h 1 + +#include "globals.hh" +#include "G4ios.hh" + +#include "G4VPhysicsConstructor.hh" +#include "G4MiscLHEPBuilder.hh" + +#include "G4PiKBuilder.hh" +#include "G4BinaryPiKBuilder.hh" +#include "G4LEPPiKBuilder.hh" +#include "G4FTFBinaryPiKBuilder.hh" + +#include "G4ProtonBuilder.hh" +#include "G4LEPProtonBuilder.hh" +#include "G4FTFBinaryProtonBuilder.hh" +#include "G4BinaryProtonBuilder.hh" + +#include "G4NeutronBuilder.hh" +#include "G4LEPNeutronBuilder.hh" +#include "G4FTFBinaryNeutronBuilder.hh" +#include "G4BinaryNeutronBuilder.hh" + +class HadronPhysicsFTF_BIC : public G4VPhysicsConstructor +{ + public: + HadronPhysicsFTF_BIC(const G4String& name ="hadron",G4bool quasiElastic=true); + virtual ~HadronPhysicsFTF_BIC(); + + public: + virtual void ConstructParticle(); + virtual void ConstructProcess(); + + private: + void CreateModels(); + G4NeutronBuilder * theNeutrons; + G4LEPNeutronBuilder * theLEPNeutron; + G4FTFBinaryNeutronBuilder * theFTFBinaryNeutron; + G4BinaryNeutronBuilder * theBinaryNeutron; + + G4PiKBuilder * thePiK; + G4BinaryPiKBuilder * theBICPiK; + G4LEPPiKBuilder * theLEPPiK; + G4FTFBinaryPiKBuilder * theFTFBinaryPiK; + + G4ProtonBuilder * thePro; + G4LEPProtonBuilder * theLEPPro; + G4FTFBinaryProtonBuilder * theFTFBinaryPro; + G4BinaryProtonBuilder * theBinaryPro; + + G4MiscLHEPBuilder * theMiscLHEP; + + G4bool QuasiElastic; +}; + +#endif + diff --git a/source/physics_lists/lists/include/HadronPhysicsLHEP.hh b/source/physics_lists/lists/include/HadronPhysicsLHEP.hh index 6517d0479e..1acc106c78 100644 --- a/source/physics_lists/lists/include/HadronPhysicsLHEP.hh +++ b/source/physics_lists/lists/include/HadronPhysicsLHEP.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsLHEP.hh,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsLHEP_BERT.hh b/source/physics_lists/lists/include/HadronPhysicsLHEP_BERT.hh index 11f01fb52f..81961729d0 100644 --- a/source/physics_lists/lists/include/HadronPhysicsLHEP_BERT.hh +++ b/source/physics_lists/lists/include/HadronPhysicsLHEP_BERT.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsLHEP_BERT.hh,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsLHEP_BERT_HP.hh b/source/physics_lists/lists/include/HadronPhysicsLHEP_BERT_HP.hh index b8d9d92671..301adf968d 100644 --- a/source/physics_lists/lists/include/HadronPhysicsLHEP_BERT_HP.hh +++ b/source/physics_lists/lists/include/HadronPhysicsLHEP_BERT_HP.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsLHEP_BERT_HP.hh,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsLHEP_EMV.hh b/source/physics_lists/lists/include/HadronPhysicsLHEP_EMV.hh index 82909f805f..d40a8dcc03 100644 --- a/source/physics_lists/lists/include/HadronPhysicsLHEP_EMV.hh +++ b/source/physics_lists/lists/include/HadronPhysicsLHEP_EMV.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsLHEP_EMV.hh,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsLHEP_PRECO_HP.hh b/source/physics_lists/lists/include/HadronPhysicsLHEP_PRECO_HP.hh index f1dcc1774b..80dd40238f 100644 --- a/source/physics_lists/lists/include/HadronPhysicsLHEP_PRECO_HP.hh +++ b/source/physics_lists/lists/include/HadronPhysicsLHEP_PRECO_HP.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsLHEP_PRECO_HP.hh,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsQGSC.hh b/source/physics_lists/lists/include/HadronPhysicsQGSC.hh index f7c7ab7299..4a6eec2ce1 100644 --- a/source/physics_lists/lists/include/HadronPhysicsQGSC.hh +++ b/source/physics_lists/lists/include/HadronPhysicsQGSC.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSC.hh,v 1.2 2007/04/26 14:47:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsQGSC_BERT.hh b/source/physics_lists/lists/include/HadronPhysicsQGSC_BERT.hh new file mode 100644 index 0000000000..cdab2a996a --- /dev/null +++ b/source/physics_lists/lists/include/HadronPhysicsQGSC_BERT.hh @@ -0,0 +1,93 @@ +// +// ******************************************************************** +// * 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: HadronPhysicsQGSC_BERT.hh,v 1.1 2007/11/15 16:58:16 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: HadronPhysicsQGSC_BERT +// +// Author: 2007 G.Folger +// created from HadronPhysicsQGSC originally by J.P. Wellisch +// +// Modified: +// +//---------------------------------------------------------------------------- + +#ifndef HadronPhysicsQGSC_BERT_h +#define HadronPhysicsQGSC_BERT_h 1 + +#include "globals.hh" +#include "G4ios.hh" + +#include "G4VPhysicsConstructor.hh" +#include "G4MiscLHEPBuilder.hh" + +#include "G4PiKBuilder.hh" +#include "G4QGSCPiKBuilder.hh" +#include "G4BertiniPiKBuilder.hh" + +#include "G4ProtonBuilder.hh" +#include "G4QGSCProtonBuilder.hh" +#include "G4BertiniProtonBuilder.hh" + +#include "G4NeutronBuilder.hh" +#include "G4QGSCNeutronBuilder.hh" +#include "G4BertiniNeutronBuilder.hh" +#include "G4LEPNeutronBuilder.hh" + +class HadronPhysicsQGSC_BERT : public G4VPhysicsConstructor +{ + public: + HadronPhysicsQGSC_BERT(const G4String& name ="hadron",G4bool quasiElastic=true); + virtual ~HadronPhysicsQGSC_BERT(); + + public: + virtual void ConstructParticle(); + virtual void ConstructProcess(); + + private: + void CreateModels(); + G4NeutronBuilder * theNeutrons; + G4QGSCNeutronBuilder * theQGSCNeutron; + G4BertiniNeutronBuilder * theBertiniNeutron; + G4LEPNeutronBuilder * theLEPNeutron; //needed for capture&fission + + G4PiKBuilder * thePiK; + G4QGSCPiKBuilder * theQGSCPiK; + G4BertiniPiKBuilder * theBertiniPiK; + + G4ProtonBuilder * thePro; + G4QGSCProtonBuilder * theQGSCPro; + G4BertiniProtonBuilder * theBertiniPro; + + G4MiscLHEPBuilder * theMiscLHEP; + + G4bool QuasiElastic; +}; + +#endif + diff --git a/source/physics_lists/lists/include/HadronPhysicsQGSC_EFLOW.hh b/source/physics_lists/lists/include/HadronPhysicsQGSC_EFLOW.hh index fe1a6143ab..d3eccc1aee 100644 --- a/source/physics_lists/lists/include/HadronPhysicsQGSC_EFLOW.hh +++ b/source/physics_lists/lists/include/HadronPhysicsQGSC_EFLOW.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSC_EFLOW.hh,v 1.2 2007/04/26 14:47:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsQGSP.hh b/source/physics_lists/lists/include/HadronPhysicsQGSP.hh index 99c5036c4f..9b83527cba 100644 --- a/source/physics_lists/lists/include/HadronPhysicsQGSP.hh +++ b/source/physics_lists/lists/include/HadronPhysicsQGSP.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HadronPhysicsQGSP.hh,v 1.3 2007/04/26 14:47:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HadronPhysicsQGSP.hh,v 1.4 2007/11/13 10:16:09 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -70,6 +70,9 @@ class HadronPhysicsQGSP : public G4VPhysicsConstructor public: virtual void ConstructParticle(); virtual void ConstructProcess(); + + void SetQuasiElastic(G4bool value) {QuasiElastic = value;}; + void SetProjectileDiffraction(G4bool value) {ProjectileDiffraction = value;}; private: void CreateModels(); @@ -88,6 +91,7 @@ class HadronPhysicsQGSP : public G4VPhysicsConstructor G4MiscLHEPBuilder * theMiscLHEP; G4bool QuasiElastic; + G4bool ProjectileDiffraction; }; #endif diff --git a/source/physics_lists/lists/include/HadronPhysicsQGSP_BERT.hh b/source/physics_lists/lists/include/HadronPhysicsQGSP_BERT.hh index 7949c9a43d..b273a2f9f2 100644 --- a/source/physics_lists/lists/include/HadronPhysicsQGSP_BERT.hh +++ b/source/physics_lists/lists/include/HadronPhysicsQGSP_BERT.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HadronPhysicsQGSP_BERT.hh,v 1.2 2007/04/26 14:47:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HadronPhysicsQGSP_BERT.hh,v 1.3 2007/12/10 17:34:44 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -36,6 +36,7 @@ // 23.11.2005 G.Folger: migration to non static particles // 08.06.2006 V.Ivanchenko: remove stopping // 25.04.2007 G.Folger: Add quasielastic option, use this by default +// 10.12.2007 G.Folger: Add projectilediffrative option for proton/neutron, off by default // //---------------------------------------------------------------------------- // @@ -73,6 +74,9 @@ class HadronPhysicsQGSP_BERT : public G4VPhysicsConstructor virtual void ConstructParticle(); virtual void ConstructProcess(); + void SetQuasiElastic(G4bool value) {QuasiElastic = value;}; + void SetProjectileDiffraction(G4bool value) {ProjectileDiffraction = value;}; + private: void CreateModels(); G4NeutronBuilder * theNeutrons; @@ -93,6 +97,7 @@ class HadronPhysicsQGSP_BERT : public G4VPhysicsConstructor G4MiscLHEPBuilder * theMiscLHEP; G4bool QuasiElastic; + G4bool ProjectileDiffraction; }; #endif diff --git a/source/physics_lists/lists/include/HadronPhysicsQGSP_BERT_HP.hh b/source/physics_lists/lists/include/HadronPhysicsQGSP_BERT_HP.hh index 8551214774..041c344b87 100644 --- a/source/physics_lists/lists/include/HadronPhysicsQGSP_BERT_HP.hh +++ b/source/physics_lists/lists/include/HadronPhysicsQGSP_BERT_HP.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSP_BERT_HP.hh,v 1.3 2007/04/26 14:47:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsQGSP_BERT_TRV.hh b/source/physics_lists/lists/include/HadronPhysicsQGSP_BERT_TRV.hh index 9aaa837b26..9172480dfe 100644 --- a/source/physics_lists/lists/include/HadronPhysicsQGSP_BERT_TRV.hh +++ b/source/physics_lists/lists/include/HadronPhysicsQGSP_BERT_TRV.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSP_BERT_TRV.hh,v 1.1 2007/05/07 14:34:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsQGSP_BIC.hh b/source/physics_lists/lists/include/HadronPhysicsQGSP_BIC.hh index dac680308a..dd9ab3d1e3 100644 --- a/source/physics_lists/lists/include/HadronPhysicsQGSP_BIC.hh +++ b/source/physics_lists/lists/include/HadronPhysicsQGSP_BIC.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSP_BIC.hh,v 1.2 2007/04/26 14:47:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsQGSP_BIC_HP.hh b/source/physics_lists/lists/include/HadronPhysicsQGSP_BIC_HP.hh index 1d47f0da53..71b8ce5f93 100644 --- a/source/physics_lists/lists/include/HadronPhysicsQGSP_BIC_HP.hh +++ b/source/physics_lists/lists/include/HadronPhysicsQGSP_BIC_HP.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSP_BIC_HP.hh,v 1.2 2007/04/26 14:47:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/HadronPhysicsQGS_BIC.hh b/source/physics_lists/lists/include/HadronPhysicsQGS_BIC.hh new file mode 100644 index 0000000000..dd2da08c67 --- /dev/null +++ b/source/physics_lists/lists/include/HadronPhysicsQGS_BIC.hh @@ -0,0 +1,97 @@ +// +// ******************************************************************** +// * 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: HadronPhysicsQGS_BIC.hh,v 1.1 2007/11/13 10:23:24 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: HadronPhysicsQGS_BIC +// +// Author: 2007 Gunter Folger +// created from HadronPhysicsQGSP_BIC by H.P.Wellisch +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#ifndef HadronPhysicsQGS_BIC_h +#define HadronPhysicsQGS_BIC_h 1 + +#include "globals.hh" +#include "G4ios.hh" + +#include "G4VPhysicsConstructor.hh" +#include "G4MiscLHEPBuilder.hh" + +#include "G4PiKBuilder.hh" +#include "G4BinaryPiKBuilder.hh" +#include "G4LEPPiKBuilder.hh" +#include "G4QGSBinaryPiKBuilder.hh" + +#include "G4ProtonBuilder.hh" +#include "G4LEPProtonBuilder.hh" +#include "G4QGSBinaryProtonBuilder.hh" +#include "G4BinaryProtonBuilder.hh" + +#include "G4NeutronBuilder.hh" +#include "G4LEPNeutronBuilder.hh" +#include "G4QGSBinaryNeutronBuilder.hh" +#include "G4BinaryNeutronBuilder.hh" + +class HadronPhysicsQGS_BIC : public G4VPhysicsConstructor +{ + public: + HadronPhysicsQGS_BIC(const G4String& name ="hadron",G4bool quasiElastic=true); + virtual ~HadronPhysicsQGS_BIC(); + + public: + virtual void ConstructParticle(); + virtual void ConstructProcess(); + + private: + void CreateModels(); + G4NeutronBuilder * theNeutrons; + G4LEPNeutronBuilder * theLEPNeutron; + G4QGSBinaryNeutronBuilder * theQGSBinaryNeutron; + G4BinaryNeutronBuilder * theBinaryNeutron; + + G4PiKBuilder * thePiK; + G4BinaryPiKBuilder * theBICPiK; + G4LEPPiKBuilder * theLEPPiK; + G4QGSBinaryPiKBuilder * theQGSBinaryPiK; + + G4ProtonBuilder * thePro; + G4LEPProtonBuilder * theLEPPro; + G4QGSBinaryProtonBuilder * theQGSBinaryPro; + G4BinaryProtonBuilder * theBinaryPro; + + G4MiscLHEPBuilder * theMiscLHEP; + + G4bool QuasiElastic; +}; + +#endif + diff --git a/source/physics_lists/lists/include/LHEP.icc b/source/physics_lists/lists/include/LHEP.icc index beb61166c1..0e91fb601b 100644 --- a/source/physics_lists/lists/include/LHEP.icc +++ b/source/physics_lists/lists/include/LHEP.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: LHEP.icc,v 1.3 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/LHEP_BERT.hh b/source/physics_lists/lists/include/LHEP_BERT.hh index b407ea45a7..22da51e251 100644 --- a/source/physics_lists/lists/include/LHEP_BERT.hh +++ b/source/physics_lists/lists/include/LHEP_BERT.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: LHEP_BERT.hh,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/LHEP_BERT.icc b/source/physics_lists/lists/include/LHEP_BERT.icc index b8f8f6e2d0..3e1201bad6 100644 --- a/source/physics_lists/lists/include/LHEP_BERT.icc +++ b/source/physics_lists/lists/include/LHEP_BERT.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: LHEP_BERT.icc,v 1.3 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/LHEP_BERT_HP.icc b/source/physics_lists/lists/include/LHEP_BERT_HP.icc index 6aaf9ba5af..449c256e72 100644 --- a/source/physics_lists/lists/include/LHEP_BERT_HP.icc +++ b/source/physics_lists/lists/include/LHEP_BERT_HP.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: LHEP_BERT_HP.icc,v 1.3 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/LHEP_EMV.hh b/source/physics_lists/lists/include/LHEP_EMV.hh index 18751569fd..888a171a0d 100644 --- a/source/physics_lists/lists/include/LHEP_EMV.hh +++ b/source/physics_lists/lists/include/LHEP_EMV.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: LHEP_EMV.hh,v 1.1 2006/10/31 11:35:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/LHEP_EMV.icc b/source/physics_lists/lists/include/LHEP_EMV.icc index 6ae42b4776..d25fad7177 100644 --- a/source/physics_lists/lists/include/LHEP_EMV.icc +++ b/source/physics_lists/lists/include/LHEP_EMV.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: LHEP_EMV.icc,v 1.3 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/LHEP_PRECO_HP.hh b/source/physics_lists/lists/include/LHEP_PRECO_HP.hh index e05ef9c8af..ce12dfe24e 100644 --- a/source/physics_lists/lists/include/LHEP_PRECO_HP.hh +++ b/source/physics_lists/lists/include/LHEP_PRECO_HP.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: LHEP_PRECO_HP.hh,v 1.1 2006/10/31 11:35:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/LHEP_PRECO_HP.icc b/source/physics_lists/lists/include/LHEP_PRECO_HP.icc index 29bfaef9be..dcc19e06c0 100644 --- a/source/physics_lists/lists/include/LHEP_PRECO_HP.icc +++ b/source/physics_lists/lists/include/LHEP_PRECO_HP.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: LHEP_PRECO_HP.icc,v 1.3 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/MinEkineCuts.hh b/source/physics_lists/lists/include/MinEkineCuts.hh index 9d603f36cc..d773c7c68b 100644 --- a/source/physics_lists/lists/include/MinEkineCuts.hh +++ b/source/physics_lists/lists/include/MinEkineCuts.hh @@ -25,7 +25,7 @@ // // // $Id: MinEkineCuts.hh,v 1.1 2006/10/31 11:35:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/physics_lists/lists/include/QBBC.hh b/source/physics_lists/lists/include/QBBC.hh index bf7218979e..fe10c67b82 100644 --- a/source/physics_lists/lists/include/QBBC.hh +++ b/source/physics_lists/lists/include/QBBC.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QBBC.hh,v 1.2 2007/04/16 11:57:40 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QBBC.icc b/source/physics_lists/lists/include/QBBC.icc index d8d242fd57..4eed656ead 100644 --- a/source/physics_lists/lists/include/QBBC.icc +++ b/source/physics_lists/lists/include/QBBC.icc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: QBBC.icc,v 1.7 2007/06/01 14:56:52 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: QBBC.icc,v 1.10 2007/11/27 07:15:57 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -52,6 +52,7 @@ #include "G4HadronInelasticQBBC.hh" #include "G4HadronInelasticQLHEP.hh" #include "G4HadronElasticPhysics.hh" +#include "G4HadronDElasticPhysics.hh" #include "G4HadronHElasticPhysics.hh" #include "G4IonBinaryCascadePhysics.hh" #include "G4IonPhysics.hh" @@ -77,32 +78,39 @@ template TQBBC::TQBBC( G4int ver, const G4String& type, G4bool gl): // Hadron Physics if(type == "QBBC") { - this->RegisterPhysics( new G4HadronElasticPhysics("hElastic",ver,false,gl)); + this->RegisterPhysics( new G4HadronElasticPhysics("hElastic",ver,false,true)); this->RegisterPhysics( new G4QStoppingPhysics("stopping",ver)); this->RegisterPhysics( new G4IonBinaryCascadePhysics("ionBIC")); this->RegisterPhysics( new G4HadronInelasticQBBC("inelastic", ver, false, - false, false, false, gl)); + false, false, false, false)); - } else if(type == "QBEC") { - this->RegisterPhysics( new G4HadronElasticPhysics("hElastic",ver,false,gl)); + } else if(type == "QBBCG") { + this->RegisterPhysics( new G4HadronElasticPhysics("hElastic",ver,false,true)); this->RegisterPhysics( new G4QStoppingPhysics("stopping",ver)); this->RegisterPhysics( new G4IonBinaryCascadePhysics("ionBIC")); this->RegisterPhysics( new G4HadronInelasticQBBC("inelastic", ver, false, - true, false, false, gl)); + false, false, false, true)); + + } else if(type == "QBBC_DEL") { + this->RegisterPhysics( new G4HadronDElasticPhysics(ver,false)); + this->RegisterPhysics( new G4QStoppingPhysics("stopping",ver)); + this->RegisterPhysics( new G4IonBinaryCascadePhysics("ionBIC")); + this->RegisterPhysics( new G4HadronInelasticQBBC("inelastic", ver, false, + true, false, false, false)); + + } else if(type == "QBBC_HEL") { + this->RegisterPhysics( new G4HadronHElasticPhysics(ver,false)); + this->RegisterPhysics( new G4QStoppingPhysics("stopping",ver)); + this->RegisterPhysics( new G4IonBinaryCascadePhysics("ionBIC")); + this->RegisterPhysics( new G4HadronInelasticQBBC("inelastic", ver, false, + true, false, false, false)); } else if(type == "QBBC_HP") { - this->RegisterPhysics( new G4HadronElasticPhysics("hElastic",ver,true,gl)); + this->RegisterPhysics( new G4HadronElasticPhysics("hElastic",ver,true,true)); this->RegisterPhysics( new G4QStoppingPhysics("stopping",ver)); this->RegisterPhysics( new G4IonBinaryCascadePhysics("ionBIC")); this->RegisterPhysics( new G4HadronInelasticQBBC("inelastic", ver, false, - false, false, true, gl)); - - } else if(type == "QBEC_HP") { - this->RegisterPhysics( new G4HadronElasticPhysics("hElastic",ver,true,gl)); - this->RegisterPhysics( new G4QStoppingPhysics("stopping",ver)); - this->RegisterPhysics( new G4IonBinaryCascadePhysics("ionBIC")); - this->RegisterPhysics( new G4HadronInelasticQBBC("inelastic", ver, false, - true, false, true, gl)); + false, false, true, false)); } else { G4cout << "QBBC ERROR: Unknown Hadronic Physics Type <" << type diff --git a/source/physics_lists/lists/include/QGSC.icc b/source/physics_lists/lists/include/QGSC.icc index 5e5a1da410..639c839ea7 100644 --- a/source/physics_lists/lists/include/QGSC.icc +++ b/source/physics_lists/lists/include/QGSC.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSC.icc,v 1.8 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSC_BERT.hh b/source/physics_lists/lists/include/QGSC_BERT.hh new file mode 100644 index 0000000000..24f53a18df --- /dev/null +++ b/source/physics_lists/lists/include/QGSC_BERT.hh @@ -0,0 +1,53 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#ifndef TQGSC_BERT_h +#define TQGSC_BERT_h 1 + +#include "G4VModularPhysicsList.hh" +#include "globals.hh" +#include "CompileTimeConstraints.hh" + +template +class TQGSC_BERT: public T +{ +public: + TQGSC_BERT(G4int ver = 1); + virtual ~TQGSC_BERT(); + +public: + // SetCuts() + virtual void SetCuts(); + +private: + enum {ok = CompileTimeConstraints::IsA::ok }; +}; +#include "QGSC_BERT.icc" +typedef TQGSC_BERT QGSC_BERT; + +#endif + + + diff --git a/source/physics_lists/lists/include/QGSC_BERT.icc b/source/physics_lists/lists/include/QGSC_BERT.icc new file mode 100644 index 0000000000..3fc57784b1 --- /dev/null +++ b/source/physics_lists/lists/include/QGSC_BERT.icc @@ -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: QGSC_BERT.icc,v 1.1 2007/11/15 16:58:16 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: QGSC_BERT +// +// Author: 2007 G.Folger +// cre4ated from QGSC by J.P. Wellisch +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#include "globals.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleWithCuts.hh" +#include "G4ProcessManager.hh" +#include "G4ProcessVector.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" + +#include "G4Material.hh" +#include "G4MaterialTable.hh" +#include "G4ios.hh" +#include + +#include "G4DecayPhysics.hh" +#include "G4EmStandardPhysics.hh" +#include "G4EmExtraPhysics.hh" +#include "G4IonPhysics.hh" +#include "G4QStoppingPhysics.hh" +#include "G4HadronQElasticPhysics.hh" +#include "G4NeutronTrackingCut.hh" + +#include "G4DataQuestionaire.hh" +#include "HadronPhysicsQGSC_BERT.hh" + +template TQGSC_BERT::TQGSC_BERT(G4int ver): T() +{ + // default cut value (1.0mm) + // defaultCutValue = 1.0*mm; + G4DataQuestionaire it(photon); + G4cout << "<<< Geant4 Physics List simulation engine: QGSC_BERT 1.0"<defaultCutValue = 0.7*mm; + this->SetVerboseLevel(ver); + + // EM Physics + this->RegisterPhysics( new G4EmStandardPhysics(ver)); + + // Synchroton Radiation & GN Physics + this->RegisterPhysics( new G4EmExtraPhysics("extra EM")); + + // Decays + this->RegisterPhysics( new G4DecayPhysics("decay",ver) ); + + // Hadron Elastic scattering, "CHIPS" version + this-> RegisterPhysics( new G4HadronQElasticPhysics("elastic",ver)); + + // Hadron Physics + G4bool quasiElastic; + this->RegisterPhysics( new HadronPhysicsQGSC_BERT("hadron",quasiElastic=true)); + + // Stopping Physics + this->RegisterPhysics( new G4QStoppingPhysics("stopping",ver,false)); + + // Ion Physics + this->RegisterPhysics( new G4IonPhysics("ion")); + + // Neutron tracking cut + this->RegisterPhysics( new G4NeutronTrackingCut("Neutron tracking cut", ver)); + +} + +template TQGSC_BERT::~TQGSC_BERT() +{ +} + +template void TQGSC_BERT::SetCuts() +{ + if (this->verboseLevel >1){ + G4cout << "QGSC_BERT::SetCuts:"; + } + // " G4VUserPhysicsList::SetCutsWithDefault" method sets + // the default cut value for all particle types + + this->SetCutsWithDefault(); + +// if (this->verboseLevel >0) +// G4VUserPhysicsList::DumpCutValuesTable(); + +} + diff --git a/source/physics_lists/lists/include/QGSC_EFLOW.icc b/source/physics_lists/lists/include/QGSC_EFLOW.icc index 742333cd98..147bb4127e 100644 --- a/source/physics_lists/lists/include/QGSC_EFLOW.icc +++ b/source/physics_lists/lists/include/QGSC_EFLOW.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSC_EFLOW.icc,v 1.4 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSC_EMV.icc b/source/physics_lists/lists/include/QGSC_EMV.icc index e60fc8a3d3..beda38e187 100644 --- a/source/physics_lists/lists/include/QGSC_EMV.icc +++ b/source/physics_lists/lists/include/QGSC_EMV.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSC_EMV.icc,v 1.4 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP.hh b/source/physics_lists/lists/include/QGSP.hh index 1719adfba9..f595849ec7 100644 --- a/source/physics_lists/lists/include/QGSP.hh +++ b/source/physics_lists/lists/include/QGSP.hh @@ -25,7 +25,7 @@ // // // $Id: QGSP.hh,v 1.1 2006/10/31 11:35:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP.icc b/source/physics_lists/lists/include/QGSP.icc index 0ac825bf58..39801652f3 100644 --- a/source/physics_lists/lists/include/QGSP.icc +++ b/source/physics_lists/lists/include/QGSP.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP.icc,v 1.7 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BERT.hh b/source/physics_lists/lists/include/QGSP_BERT.hh index 8957569914..d0a0ccf718 100644 --- a/source/physics_lists/lists/include/QGSP_BERT.hh +++ b/source/physics_lists/lists/include/QGSP_BERT.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BERT.hh,v 1.1 2006/10/31 11:35:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BERT.icc b/source/physics_lists/lists/include/QGSP_BERT.icc index a5bd8330a0..2db7b7fec5 100644 --- a/source/physics_lists/lists/include/QGSP_BERT.icc +++ b/source/physics_lists/lists/include/QGSP_BERT.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BERT.icc,v 1.5 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BERT_DIF.hh b/source/physics_lists/lists/include/QGSP_BERT_DIF.hh new file mode 100644 index 0000000000..fa807e417a --- /dev/null +++ b/source/physics_lists/lists/include/QGSP_BERT_DIF.hh @@ -0,0 +1,68 @@ +// +// ******************************************************************** +// * 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: QGSP_BERT_DIF.hh,v 1.1 2007/12/10 17:34:44 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: QGSP_BERT_DIF +// +// Author: 2007 G.Folger +// created from QGSP_BERT by J.P. Wellisch +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#ifndef TQGSP_BERT_DIF_h +#define TQGSP_BERT_DIF_h 1 + +#include "G4VModularPhysicsList.hh" +#include "globals.hh" +#include "CompileTimeConstraints.hh" + +template +class TQGSP_BERT_DIF: public T +{ +public: + TQGSP_BERT_DIF(G4int ver = 1); + virtual ~TQGSP_BERT_DIF(); + +public: + // SetCuts() + virtual void SetCuts(); + +private: + enum {ok = CompileTimeConstraints::IsA::ok }; +}; + +#include "QGSP_BERT_DIF.icc" +typedef TQGSP_BERT_DIF QGSP_BERT_DIF; + +#endif + + + diff --git a/source/physics_lists/lists/include/QGSP_BERT_DIF.icc b/source/physics_lists/lists/include/QGSP_BERT_DIF.icc new file mode 100644 index 0000000000..f2b0e926e3 --- /dev/null +++ b/source/physics_lists/lists/include/QGSP_BERT_DIF.icc @@ -0,0 +1,130 @@ +// +// ******************************************************************** +// * 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: QGSP_BERT_DIF.icc,v 1.2 2007/12/10 17:46:31 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: QGSP_BERT_DIF +// +// Author: 2007 G.Folger +// created from QGSP_BERT by J.P. Wellisch +// +// Modified: +// +//---------------------------------------------------------------------------- +// + +#include "globals.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleWithCuts.hh" +#include "G4ProcessManager.hh" +#include "G4ProcessVector.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" + +#include "G4Material.hh" +#include "G4MaterialTable.hh" +#include "G4ios.hh" +#include + +#include "G4DecayPhysics.hh" +#include "G4EmStandardPhysics.hh" +#include "G4EmExtraPhysics.hh" +#include "G4IonPhysics.hh" +#include "G4QStoppingPhysics.hh" +#include "G4HadronElasticPhysics.hh" +#include "G4NeutronTrackingCut.hh" + +#include "G4DataQuestionaire.hh" +#include "HadronPhysicsQGSP_BERT.hh" + +#include "G4WarnPLStatus.hh" + +template TQGSP_BERT_DIF::TQGSP_BERT_DIF(G4int ver): T() +{ + + G4DataQuestionaire it(photon); + G4cout << "<<< Geant4 Physics List simulation engine: QGSP_BERT_DIF 1.0"<defaultCutValue = 0.7*mm; + this->SetVerboseLevel(ver); + + G4WarnPLStatus exp; + exp.Experimental("QGSP_BERT_DIF"); + + // EM Physics + this->RegisterPhysics( new G4EmStandardPhysics(ver)); + + // Synchroton Radiation & GN Physics + this->RegisterPhysics( new G4EmExtraPhysics("extra EM")); + + // Decays + this->RegisterPhysics( new G4DecayPhysics("decay",ver) ); + + // Hadron Elastic scattering + this-> RegisterPhysics( new G4HadronElasticPhysics("elastic",ver,false)); + + // Hadron Physics + HadronPhysicsQGSP_BERT * hadronPhysics; + this->RegisterPhysics(hadronPhysics= new HadronPhysicsQGSP_BERT("hadron")); + hadronPhysics->SetQuasiElastic(true); + hadronPhysics->SetProjectileDiffraction(true); + + + // Stopping Physics + this->RegisterPhysics( new G4QStoppingPhysics("stopping")); + + // Ion Physics + this->RegisterPhysics( new G4IonPhysics("ion")); + + // Neutron tracking cut + this->RegisterPhysics( new G4NeutronTrackingCut("Neutron tracking cut", ver)); + +} + +template TQGSP_BERT_DIF::~TQGSP_BERT_DIF() +{ +} + +template void TQGSP_BERT_DIF::SetCuts() +{ + if (this->verboseLevel >1){ + G4cout << "QGSP_BERT_DIF::SetCuts:"; + } + // " G4VUserPhysicsList::SetCutsWithDefault" method sets + // the default cut value for all particle types + + this->SetCutsWithDefault(); + +// if (this->verboseLevel >0) +// G4VUserPhysicsList::DumpCutValuesTable(); +} + + + +// 2002 by J.P. Wellisch diff --git a/source/physics_lists/lists/include/QGSP_BERT_EMV.hh b/source/physics_lists/lists/include/QGSP_BERT_EMV.hh index fa6abb99af..866da1a2c4 100644 --- a/source/physics_lists/lists/include/QGSP_BERT_EMV.hh +++ b/source/physics_lists/lists/include/QGSP_BERT_EMV.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BERT_EMV.hh,v 1.1 2007/04/26 14:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BERT_EMV.icc b/source/physics_lists/lists/include/QGSP_BERT_EMV.icc index b509d66805..bc1d5e1011 100644 --- a/source/physics_lists/lists/include/QGSP_BERT_EMV.icc +++ b/source/physics_lists/lists/include/QGSP_BERT_EMV.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BERT_EMV.icc,v 1.2 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BERT_HP.hh b/source/physics_lists/lists/include/QGSP_BERT_HP.hh index af6d501b76..c4ed075f3c 100644 --- a/source/physics_lists/lists/include/QGSP_BERT_HP.hh +++ b/source/physics_lists/lists/include/QGSP_BERT_HP.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BERT_HP.hh,v 1.1 2006/10/31 11:35:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BERT_HP.icc b/source/physics_lists/lists/include/QGSP_BERT_HP.icc index bd0163962e..d795d295f0 100644 --- a/source/physics_lists/lists/include/QGSP_BERT_HP.icc +++ b/source/physics_lists/lists/include/QGSP_BERT_HP.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BERT_HP.icc,v 1.4 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BERT_NQE.hh b/source/physics_lists/lists/include/QGSP_BERT_NQE.hh index cb76aaefe6..bc984463c4 100644 --- a/source/physics_lists/lists/include/QGSP_BERT_NQE.hh +++ b/source/physics_lists/lists/include/QGSP_BERT_NQE.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BERT_NQE.hh,v 1.1 2007/04/26 14:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BERT_NQE.icc b/source/physics_lists/lists/include/QGSP_BERT_NQE.icc index 4132083fe0..fd0e5ecd20 100644 --- a/source/physics_lists/lists/include/QGSP_BERT_NQE.icc +++ b/source/physics_lists/lists/include/QGSP_BERT_NQE.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BERT_NQE.icc,v 1.2 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BERT_TRV.hh b/source/physics_lists/lists/include/QGSP_BERT_TRV.hh index 234e081d42..001b0101a5 100644 --- a/source/physics_lists/lists/include/QGSP_BERT_TRV.hh +++ b/source/physics_lists/lists/include/QGSP_BERT_TRV.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BERT_TRV.hh,v 1.1 2007/05/07 14:34:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BERT_TRV.icc b/source/physics_lists/lists/include/QGSP_BERT_TRV.icc index ffdfc19c45..f283429d12 100644 --- a/source/physics_lists/lists/include/QGSP_BERT_TRV.icc +++ b/source/physics_lists/lists/include/QGSP_BERT_TRV.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BERT_TRV.icc,v 1.2 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BIC.hh b/source/physics_lists/lists/include/QGSP_BIC.hh index d41bce4071..5b5024f6bb 100644 --- a/source/physics_lists/lists/include/QGSP_BIC.hh +++ b/source/physics_lists/lists/include/QGSP_BIC.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BIC.hh,v 1.1 2006/10/31 11:35:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BIC.icc b/source/physics_lists/lists/include/QGSP_BIC.icc index 7622992f46..fa2314c517 100644 --- a/source/physics_lists/lists/include/QGSP_BIC.icc +++ b/source/physics_lists/lists/include/QGSP_BIC.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BIC.icc,v 1.5 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BIC_HP.hh b/source/physics_lists/lists/include/QGSP_BIC_HP.hh index e0ae076422..e3ed7ac0b0 100644 --- a/source/physics_lists/lists/include/QGSP_BIC_HP.hh +++ b/source/physics_lists/lists/include/QGSP_BIC_HP.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BIC_HP.hh,v 1.1 2006/11/24 16:31:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_BIC_HP.icc b/source/physics_lists/lists/include/QGSP_BIC_HP.icc index b031fb466b..e6f38c3329 100644 --- a/source/physics_lists/lists/include/QGSP_BIC_HP.icc +++ b/source/physics_lists/lists/include/QGSP_BIC_HP.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_BIC_HP.icc,v 1.5 2007/05/24 11:32:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_DIF.hh b/source/physics_lists/lists/include/QGSP_DIF.hh new file mode 100644 index 0000000000..9a6561f575 --- /dev/null +++ b/source/physics_lists/lists/include/QGSP_DIF.hh @@ -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: QGSP_DIF.hh,v 1.1 2007/11/13 10:20:32 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: QGSP_DIF +// +// Author: 2007 G.Folger +// created from QGSP originally by J.P. Wellisch +// +// Modified: +// +//---------------------------------------------------------------------------- +#ifndef TQGSP_DIF_h +#define TQGSP_DIF_h 1 + +#include "G4VModularPhysicsList.hh" +#include "globals.hh" +#include "CompileTimeConstraints.hh" + +template +class TQGSP_DIF: public T +{ +public: + TQGSP_DIF(G4int ver = 1); + virtual ~TQGSP_DIF(); + +public: + // SetCuts() + virtual void SetCuts(); + +private: + enum {ok = CompileTimeConstraints::IsA::ok }; + +}; +#include "QGSP_DIF.icc" +typedef TQGSP_DIF QGSP_DIF; + +// 2002 by J.P. Wellisch + +#endif + + + diff --git a/source/physics_lists/lists/include/QGSP_DIF.icc b/source/physics_lists/lists/include/QGSP_DIF.icc new file mode 100644 index 0000000000..fd5bc98de0 --- /dev/null +++ b/source/physics_lists/lists/include/QGSP_DIF.icc @@ -0,0 +1,123 @@ +// +// ******************************************************************** +// * 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: QGSP_DIF.icc,v 1.1 2007/11/13 10:20:32 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: +// +// Author: 2007 G.Folger +// created from QGSP originally by J.P. Wellisch +// +// Modified: +// +//---------------------------------------------------------------------------- +// + +#include "globals.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleWithCuts.hh" +#include "G4ProcessManager.hh" +#include "G4ProcessVector.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" + +#include "G4Material.hh" +#include "G4MaterialTable.hh" +#include "G4ios.hh" +#include + +#include "G4DecayPhysics.hh" +#include "G4EmStandardPhysics.hh" +#include "G4EmExtraPhysics.hh" +#include "G4IonPhysics.hh" +#include "G4QStoppingPhysics.hh" +#include "G4HadronElasticPhysics.hh" +#include "G4NeutronTrackingCut.hh" + +#include "G4DataQuestionaire.hh" +#include "HadronPhysicsQGSP.hh" + +template TQGSP_DIF::TQGSP_DIF(G4int ver): T() +{ + // default cut value (1.0mm) + // defaultCutValue = 1.0*mm; + + G4DataQuestionaire it(photon); + G4cout << "<<< Geant4 Physics List simulation engine: QGSP_DIF 1.0"<defaultCutValue = 0.7*mm; + this->SetVerboseLevel(ver); + + // EM Physics + this->RegisterPhysics( new G4EmStandardPhysics(ver)); + + // Synchroton Radiation & GN Physics + this->RegisterPhysics( new G4EmExtraPhysics("extra EM")); + + // Decays + this->RegisterPhysics( new G4DecayPhysics("decay",ver) ); + + // Hadron Elastic scattering + this-> RegisterPhysics( new G4HadronElasticPhysics("elastic",ver,false)); + + // Hadron Physics + HadronPhysicsQGSP * hadronPhysics; + this->RegisterPhysics(hadronPhysics= new HadronPhysicsQGSP("hadron")); + hadronPhysics->SetQuasiElastic(true); + hadronPhysics->SetProjectileDiffraction(true); + + // Stopping Physics + this->RegisterPhysics( new G4QStoppingPhysics("stopping")); + + // Ion Physics + this->RegisterPhysics( new G4IonPhysics("ion")); + + // Neutron tracking cut + this->RegisterPhysics( new G4NeutronTrackingCut("Neutron tracking cut", ver)); + +} + +template TQGSP_DIF::~TQGSP_DIF() +{ +} + +template void TQGSP_DIF::SetCuts() +{ + if (this->verboseLevel >1){ + G4cout << "QGSP_DIF::SetCuts:"; + } + // " G4VUserPhysicsList::SetCutsWithDefault" method sets + // the default cut value for all particle types + + this->SetCutsWithDefault(); + +// if (this->verboseLevel > 0) +// G4VUserPhysicsList::DumpCutValuesTable(); +} + diff --git a/source/physics_lists/lists/include/QGSP_EMV.hh b/source/physics_lists/lists/include/QGSP_EMV.hh index 67149ad8a8..387bbe4bd9 100644 --- a/source/physics_lists/lists/include/QGSP_EMV.hh +++ b/source/physics_lists/lists/include/QGSP_EMV.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_EMV.hh,v 1.1 2006/10/31 11:35:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_EMV.icc b/source/physics_lists/lists/include/QGSP_EMV.icc index fc1c21a34a..aa7e82ee50 100644 --- a/source/physics_lists/lists/include/QGSP_EMV.icc +++ b/source/physics_lists/lists/include/QGSP_EMV.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_EMV.icc,v 1.5 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_EMV_NQE.hh b/source/physics_lists/lists/include/QGSP_EMV_NQE.hh index d69023d193..42d01fb85f 100644 --- a/source/physics_lists/lists/include/QGSP_EMV_NQE.hh +++ b/source/physics_lists/lists/include/QGSP_EMV_NQE.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_EMV_NQE.hh,v 1.1 2007/04/26 14:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_EMV_NQE.icc b/source/physics_lists/lists/include/QGSP_EMV_NQE.icc index c951aaa275..d3473e8d5a 100644 --- a/source/physics_lists/lists/include/QGSP_EMV_NQE.icc +++ b/source/physics_lists/lists/include/QGSP_EMV_NQE.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_EMV_NQE.icc,v 1.2 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_EMX.hh b/source/physics_lists/lists/include/QGSP_EMX.hh index 69a90e2b18..5be39f6689 100644 --- a/source/physics_lists/lists/include/QGSP_EMX.hh +++ b/source/physics_lists/lists/include/QGSP_EMX.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_EMX.hh,v 1.1 2006/10/31 11:35:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_EMX.icc b/source/physics_lists/lists/include/QGSP_EMX.icc index 0c15e8f643..eedf82ab93 100644 --- a/source/physics_lists/lists/include/QGSP_EMX.icc +++ b/source/physics_lists/lists/include/QGSP_EMX.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_EMX.icc,v 1.5 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_NQE.hh b/source/physics_lists/lists/include/QGSP_NQE.hh index 14f19962db..2fd862cd25 100644 --- a/source/physics_lists/lists/include/QGSP_NQE.hh +++ b/source/physics_lists/lists/include/QGSP_NQE.hh @@ -25,7 +25,7 @@ // // // $Id: QGSP_NQE.hh,v 1.1 2007/04/26 14:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_NQE.icc b/source/physics_lists/lists/include/QGSP_NQE.icc index 4dcf8963ac..e956d9add5 100644 --- a/source/physics_lists/lists/include/QGSP_NQE.icc +++ b/source/physics_lists/lists/include/QGSP_NQE.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_NQE.icc,v 1.2 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_QEL.hh b/source/physics_lists/lists/include/QGSP_QEL.hh index c8af7bcb46..d36e8ff01c 100644 --- a/source/physics_lists/lists/include/QGSP_QEL.hh +++ b/source/physics_lists/lists/include/QGSP_QEL.hh @@ -25,7 +25,7 @@ // // // $Id: QGSP_QEL.hh,v 1.1 2006/11/28 15:41:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGSP_QEL.icc b/source/physics_lists/lists/include/QGSP_QEL.icc index ff1c01dacd..3266e6610e 100644 --- a/source/physics_lists/lists/include/QGSP_QEL.icc +++ b/source/physics_lists/lists/include/QGSP_QEL.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: QGSP_QEL.icc,v 1.3 2007/05/16 11:35:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/include/QGS_BIC.hh b/source/physics_lists/lists/include/QGS_BIC.hh new file mode 100644 index 0000000000..36b116c7ce --- /dev/null +++ b/source/physics_lists/lists/include/QGS_BIC.hh @@ -0,0 +1,67 @@ +// +// ******************************************************************** +// * 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: QGS_BIC.hh,v 1.1 2007/11/13 10:23:24 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: +// +// Author: 2007 Gunter Folger +// created from QGSP_BIC by H.P.Wellisch +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#ifndef TQGS_BIC_h +#define TQGS_BIC_h 1 + +#include "G4VModularPhysicsList.hh" +#include "globals.hh" +#include "CompileTimeConstraints.hh" + +template +class TQGS_BIC: public T +{ +public: + TQGS_BIC(G4int ver = 1); + virtual ~TQGS_BIC(); + +public: + // SetCuts() + virtual void SetCuts(); + +private: + enum {ok = CompileTimeConstraints::IsA::ok }; +}; +#include "QGS_BIC.icc" +typedef TQGS_BIC QGS_BIC; + +#endif + + + diff --git a/source/physics_lists/lists/include/QGS_BIC.icc b/source/physics_lists/lists/include/QGS_BIC.icc new file mode 100644 index 0000000000..9f869c6f1d --- /dev/null +++ b/source/physics_lists/lists/include/QGS_BIC.icc @@ -0,0 +1,126 @@ +// +// ******************************************************************** +// * 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: QGS_BIC.icc,v 1.2 2007/12/10 17:33:58 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: QGS_BIC +// +// Author: 2007 Gunter Folger +// created from QGSP_BIC by H.P.Wellisch +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#include "globals.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleWithCuts.hh" +#include "G4ProcessManager.hh" +#include "G4ProcessVector.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" + +#include "G4Material.hh" +#include "G4MaterialTable.hh" +#include "G4ios.hh" +#include + +#include "G4DecayPhysics.hh" +#include "G4EmStandardPhysics.hh" +#include "G4EmExtraPhysics.hh" +#include "G4IonBinaryCascadePhysics.hh" +#include "G4QStoppingPhysics.hh" +#include "G4HadronElasticPhysics.hh" +#include "G4NeutronTrackingCut.hh" + +#include "G4DataQuestionaire.hh" +#include "HadronPhysicsQGS_BIC.hh" + +#include "G4WarnPLStatus.hh" + +template TQGS_BIC::TQGS_BIC(G4int ver): T() +{ + // default cut value (1.0mm) + // defaultCutValue = 1.0*mm; + + G4DataQuestionaire it(photon); + G4cout << "<<< Geant4 Physics List simulation engine: QGS_BIC 1.0"<defaultCutValue = 0.7*mm; + this->SetVerboseLevel(ver); + + G4WarnPLStatus exp; + exp.Experimental("QGS_BIC"); + + // EM Physics + this->RegisterPhysics( new G4EmStandardPhysics(ver)); + + // Synchroton Radiation & GN Physics + this->RegisterPhysics( new G4EmExtraPhysics("extra EM")); + + // Decays + this->RegisterPhysics( new G4DecayPhysics("decay",ver) ); + + // Hadron Elastic scattering + this-> RegisterPhysics( new G4HadronElasticPhysics("elastic",ver,false)); + + // Hadron Physics + G4bool quasiElastic; + this->RegisterPhysics( new HadronPhysicsQGS_BIC("hadron",quasiElastic=true)); + + // Stopping Physics + this->RegisterPhysics( new G4QStoppingPhysics("stopping")); + + // Ion Physics + this->RegisterPhysics( new G4IonBinaryCascadePhysics("ionBIC")); + + // Neutron tracking cut + this->RegisterPhysics( new G4NeutronTrackingCut("Neutron tracking cut", ver)); + +} + +template TQGS_BIC::~TQGS_BIC() +{ +} + +template void TQGS_BIC::SetCuts() +{ + if (this->verboseLevel >1){ + G4cout << "QGS_BIC::SetCuts:"; + } + // " G4VUserPhysicsList::SetCutsWithDefault" method sets + // the default cut value for all particle types + + this->SetCutsWithDefault(); + +// if (this->verboseLevel >0) +// G4VUserPhysicsList::DumpCutValuesTable(); + +} + diff --git a/source/physics_lists/lists/src/G4HadronInelasticQBBC.cc b/source/physics_lists/lists/src/G4HadronInelasticQBBC.cc index efaff6dd06..494e68076d 100644 --- a/source/physics_lists/lists/src/G4HadronInelasticQBBC.cc +++ b/source/physics_lists/lists/src/G4HadronInelasticQBBC.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronInelasticQBBC.cc,v 1.2 2007/04/16 11:57:40 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4HadronInelasticQBBC.cc,v 1.7 2007/11/26 19:31:16 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -54,14 +54,11 @@ #include "G4BGGPionInelasticXS.hh" #include "G4TheoFSGenerator.hh" -#include "G4StringChipsParticleLevelInterface.hh" +#include "G4QStringChipsParticleLevelInterface.hh" #include "G4StringChipsInterface.hh" #include "G4QGSMFragmentation.hh" #include "G4LundStringFragmentation.hh" #include "G4ExcitedStringDecay.hh" -#include "G4GeneratorPrecompoundInterface.hh" -#include "G4PreCompoundModel.hh" -#include "G4ExcitationHandler.hh" #include "G4BinaryCascade.hh" #include "G4HadronFissionProcess.hh" @@ -87,26 +84,26 @@ G4HadronInelasticQBBC::G4HadronInelasticQBBC(const G4String& name, theHPXSecC = 0; theHPXSecF = 0; theCascade = 0; - theCHIPSCascade = 0; - theQuasiElastic = 0; - thePreEquilib = 0; + theCHIPSCascade = 0; + theQuasiElastic = 0; + theQGStringDecay = 0; + theQGStringModel = 0; + theFTFStringDecay = 0; + theFTFStringModel = 0; } G4HadronInelasticQBBC::~G4HadronInelasticQBBC() { - if(wasActivated) { - if(theCascade) delete theCascade; - if(theCHIPSCascade) delete theCHIPSCascade; - if(thePreEquilib) delete thePreEquilib; - if(theQuasiElastic) delete theQuasiElastic; - delete theQGStringDecay; - delete theQGStringModel; - delete theFTFStringDecay; - delete theFTFStringModel; - delete theHPXSecI; - delete theHPXSecC; - delete theHPXSecF; - } + delete theCascade; + delete theCHIPSCascade; + delete theQuasiElastic; + delete theQGStringDecay; + delete theQGStringModel; + delete theFTFStringDecay; + delete theFTFStringModel; + delete theHPXSecI; + delete theHPXSecC; + delete theHPXSecF; } void G4HadronInelasticQBBC::ConstructParticle() @@ -126,10 +123,14 @@ void G4HadronInelasticQBBC::ConstructProcess() if(verbose > 1) G4cout << "### HadronInelasticQBBC Construct Process" << G4endl; - G4double minEstring = 11.5*GeV; - G4double maxEcascade = 4.*GeV; - G4double minFtf = 3.5*GeV; - G4double maxFtf = 12.*GeV; + G4double minEstring = 6.0*GeV; + G4double maxEcascade = 9.0*GeV; + // G4double minFtf = 7.5*GeV; + + //Binary + G4HadronicInteraction* theBIC = new G4BinaryCascade(); + theBIC->SetMinEnergy(0.0); + theBIC->SetMaxEnergy(maxEcascade); //Bertini G4HadronicInteraction* theBERT = new G4CascadeInterface(); @@ -142,22 +143,14 @@ void G4HadronInelasticQBBC::ConstructProcess() theCHIPS->SetMaxEnergy(maxEcascade); //QGS + //theCascade = new G4BinaryCascade; + theCHIPSCascade = new G4QStringChipsParticleLevelInterface; G4TheoFSGenerator* theQGSModel = new G4TheoFSGenerator(); theQGStringModel = new G4QGSModel< G4QGSParticipants >; theQGStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation()); theQGStringModel->SetFragmentationModel(theQGStringDecay); + theQGSModel->SetTransport(theCHIPSCascade); - //QGSP - theCascade = new G4GeneratorPrecompoundInterface; - thePreEquilib = new G4PreCompoundModel(new G4ExcitationHandler); - theCascade->SetDeExcitation(thePreEquilib); - theQGSModel->SetTransport(theCascade); - - //QGSC - // theCHIPSCascade = new G4StringChipsParticleLevelInterface; - // theQGSModel->SetTransport(theCHIPSCascade); - - //QGS theQuasiElastic = new G4QuasiElasticChannel; theQGSModel->SetQuasiElasticChannel(theQuasiElastic); theQGSModel->SetHighEnergyGenerator(theQGStringModel); @@ -169,22 +162,12 @@ void G4HadronInelasticQBBC::ConstructProcess() theFTFStringModel = new G4FTFModel(); theFTFStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation()); theFTFStringModel->SetFragmentationModel(theFTFStringDecay); - // theFTFModel->SetTransport(theCHIPSCascade); - theFTFModel->SetTransport(theCascade); + theFTFModel->SetTransport(theCHIPSCascade); + //theFTFModel->SetTransport(theCascade); theFTFModel->SetHighEnergyGenerator(theFTFStringModel); - theFTFModel->SetMinEnergy(minFtf); - if(ftfFlag) theFTFModel->SetMaxEnergy(100*TeV); - else theFTFModel->SetMaxEnergy(maxFtf); - - G4TheoFSGenerator* theFTFModel1 = new G4TheoFSGenerator(); - theFTFModel1->SetTransport(theCascade); - theFTFModel1->SetHighEnergyGenerator(theFTFStringModel); - theFTFModel1->SetMinEnergy(minFtf); - theFTFModel1->SetMaxEnergy(100*TeV); - + theFTFModel->SetMinEnergy(minEstring); + theFTFModel->SetMaxEnergy(100*TeV); theFTFModel->SetQuasiElasticChannel(theQuasiElastic); - theFTFModel1->SetQuasiElasticChannel(theQuasiElastic); - theParticleIterator->reset(); while( (*theParticleIterator)() ) { @@ -222,29 +205,18 @@ void G4HadronInelasticQBBC::ConstructProcess() if(pname == "proton") { hp->AddDataSet(&theXSecP); if(ftfFlag) Register(particle,hp,theFTFModel,"FTF"); - else { - Register(particle,hp,theQGSModel,"QGS"); - Register(particle,hp,theFTFModel,"FTF"); - } + else Register(particle,hp,theQGSModel,"QGS"); - if(bertFlag) Register(particle,hp,theBERT,"Bertini"); - else if(chipsFlag) Register(particle,hp,theCHIPS,"CHIPS"); - else { - G4HadronicInteraction* theBIC = new G4BinaryCascade(); - theBIC->SetMinEnergy(0.0); - theBIC->SetMaxEnergy(maxEcascade); - Register(particle,hp,theBIC,"Binary"); - } - if(glFlag) + if(bertFlag) Register(particle,hp,theBERT,"Bertini"); + else Register(particle,hp,theBIC,"Binary"); + + if(glFlag) hp->AddDataSet(new G4BGGNucleonInelasticXS(particle)); } else if(pname == "neutron") { hp->AddDataSet(&theXSecN); if(ftfFlag) Register(particle,hp,theFTFModel,"FTF"); - else { - Register(particle,hp,theQGSModel,"QGS"); - Register(particle,hp,theFTFModel,"FTF"); - } + else Register(particle,hp,theQGSModel,"QGS"); G4HadronCaptureProcess* theNeutronCapture = new G4HadronCaptureProcess("nCapture"); @@ -275,9 +247,6 @@ void G4HadronInelasticQBBC::ConstructProcess() if(bertFlag) { theB = new G4CascadeInterface(); s = "Bertini"; - } else if(chipsFlag) { - theB = new G4StringChipsInterface(); - s = "CHIPS"; } else { theB = new G4BinaryCascade(); s = "Binary"; @@ -285,7 +254,8 @@ void G4HadronInelasticQBBC::ConstructProcess() theB->SetMinEnergy(emin); theB->SetMaxEnergy(maxEcascade); Register(particle,hp,theB,s); - if(glFlag) + + if(glFlag) hp->AddDataSet(new G4BGGNucleonInelasticXS(particle)); G4HadronicInteraction* theC = new G4LCapture(); @@ -299,13 +269,11 @@ void G4HadronInelasticQBBC::ConstructProcess() } else if(pname == "pi-" || pname == "pi+") { hp->AddDataSet(&thePiCross); if(ftfFlag) Register(particle,hp,theFTFModel,"FTF"); - else { - Register(particle,hp,theQGSModel,"QGS"); - Register(particle,hp,theFTFModel,"FTF"); - } + else Register(particle,hp,theQGSModel,"QGS"); - if(chipsFlag) Register(particle,hp,theCHIPS,"CHIPS"); - else Register(particle,hp,theBERT,"Bertini"); + Register(particle,hp,theBERT,"Bertini"); + //if(bertFlag) Register(particle,hp,theBERT,"Bertini"); + //else Register(particle,hp,theBIC,"Binary"); if(glFlag) hp->AddDataSet(new G4BGGPionInelasticXS(particle)); @@ -314,41 +282,29 @@ void G4HadronInelasticQBBC::ConstructProcess() pname == "kaon+" || pname == "kaon0S" || pname == "kaon0L") { - if(ftfFlag) Register(particle,hp,theFTFModel,"FTF"); - else { - Register(particle,hp,theQGSModel,"QGS"); - Register(particle,hp,theFTFModel,"FTF"); - } - - if(chipsFlag) Register(particle,hp,theCHIPS,"CHIPS"); - else Register(particle,hp,theBERT,"Bertini"); - - if(glFlag) - hp->AddDataSet(new G4UInelasticCrossSection(particle)); + Register(particle,hp,theFTFModel,"FTF"); + Register(particle,hp,theBERT,"Bertini"); + //hp->AddDataSet(new G4UInelasticCrossSection(particle)); } else if(pname == "lambda" || pname == "sigma-" || pname == "sigma+" || pname == "xi-" || pname == "xi0") { - Register(particle,hp,theFTFModel1,"FTF"); - if(chipsFlag) Register(particle,hp,theCHIPS,"CHIPS"); - else Register(particle,hp,theBERT,"Bertini"); - if(glFlag) - hp->AddDataSet(new G4UInelasticCrossSection(particle)); + Register(particle,hp,theFTFModel,"FTF"); + Register(particle,hp,theBERT,"Bertini"); + //hp->AddDataSet(new G4UInelasticCrossSection(particle)); } else if(pname == "anti_proton" || pname == "anti_neutron") { - Register(particle,hp,theFTFModel1,"FTF"); + Register(particle,hp,theFTFModel,"FTF"); Register(particle,hp,theCHIPS,"CHIPS"); - if(glFlag) - hp->AddDataSet(new G4UInelasticCrossSection(particle)); + //hp->AddDataSet(new G4UInelasticCrossSection(particle)); } else { - Register(particle,hp,theFTFModel1,"FTF"); + Register(particle,hp,theFTFModel,"FTF"); Register(particle,hp,theCHIPS,"CHIPS"); - if(glFlag) - hp->AddDataSet(new G4UInelasticCrossSection(particle)); + //hp->AddDataSet(new G4UInelasticCrossSection(particle)); } if(verbose > 1) diff --git a/source/physics_lists/lists/src/G4HadronInelasticQLHEP.cc b/source/physics_lists/lists/src/G4HadronInelasticQLHEP.cc index 49c8e50f1b..4e263e3b18 100644 --- a/source/physics_lists/lists/src/G4HadronInelasticQLHEP.cc +++ b/source/physics_lists/lists/src/G4HadronInelasticQLHEP.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HadronInelasticQLHEP.cc,v 1.1 2006/10/31 11:35:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsFTFC.cc b/source/physics_lists/lists/src/HadronPhysicsFTFC.cc index ff01ba4415..5b75b194a3 100644 --- a/source/physics_lists/lists/src/HadronPhysicsFTFC.cc +++ b/source/physics_lists/lists/src/HadronPhysicsFTFC.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsFTFC.cc,v 1.2 2007/06/01 15:20:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsFTFP.cc b/source/physics_lists/lists/src/HadronPhysicsFTFP.cc index 1977e0ea60..2e8ef4ac30 100644 --- a/source/physics_lists/lists/src/HadronPhysicsFTFP.cc +++ b/source/physics_lists/lists/src/HadronPhysicsFTFP.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsFTFP.cc,v 1.2 2007/06/01 15:20:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsFTFP_BERT.cc b/source/physics_lists/lists/src/HadronPhysicsFTFP_BERT.cc new file mode 100644 index 0000000000..3c1a92bce0 --- /dev/null +++ b/source/physics_lists/lists/src/HadronPhysicsFTFP_BERT.cc @@ -0,0 +1,122 @@ +// +// ******************************************************************** +// * 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: HadronPhysicsFTFP_BERT.cc,v 1.1 2007/10/19 15:35:08 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: +// +// Author: 2007 Gunter Folger +// created from HadronPhysicsFTFP +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#include "HadronPhysicsFTFP_BERT.hh" + +#include "globals.hh" +#include "G4ios.hh" +#include +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" + +#include "G4MesonConstructor.hh" +#include "G4BaryonConstructor.hh" +#include "G4ShortLivedConstructor.hh" + +HadronPhysicsFTFP_BERT::HadronPhysicsFTFP_BERT(const G4String& name, G4bool quasiElastic) + : G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic) +{} + +void HadronPhysicsFTFP_BERT::CreateModels() +{ + + theNeutrons=new G4NeutronBuilder; + theFTFPNeutron=new G4FTFPNeutronBuilder(QuasiElastic); + theNeutrons->RegisterMe(theFTFPNeutron); + theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder); + theBertiniNeutron->SetMinEnergy(0.0*GeV); + theBertiniNeutron->SetMaxEnergy(5*GeV); + theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder); + theLEPNeutron->SetMinInelasticEnergy(0.0*eV); // no inelastic from LEP + theLEPNeutron->SetMaxInelasticEnergy(0.0*eV); + + thePro=new G4ProtonBuilder; + theFTFPPro=new G4FTFPProtonBuilder(QuasiElastic); + thePro->RegisterMe(theFTFPPro); + thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder); + theBertiniPro->SetMaxEnergy(5*GeV); + + thePiK=new G4PiKBuilder; + theFTFPPiK=new G4FTFPPiKBuilder(QuasiElastic); + thePiK->RegisterMe(theFTFPPiK); + thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder); + theBertiniPiK->SetMaxEnergy(5*GeV); + + theMiscLHEP=new G4MiscLHEPBuilder; +} + +HadronPhysicsFTFP_BERT::~HadronPhysicsFTFP_BERT() +{ + delete theNeutrons; + delete theBertiniNeutron; + delete theFTFPNeutron; + + delete thePiK; + delete theBertiniPiK; + delete theFTFPPiK; + + delete thePro; + delete theBertiniPro; + delete theFTFPPro; + + delete theMiscLHEP; +} + +void HadronPhysicsFTFP_BERT::ConstructParticle() +{ + G4MesonConstructor pMesonConstructor; + pMesonConstructor.ConstructParticle(); + + G4BaryonConstructor pBaryonConstructor; + pBaryonConstructor.ConstructParticle(); + + G4ShortLivedConstructor pShortLivedConstructor; + pShortLivedConstructor.ConstructParticle(); +} + +#include "G4ProcessManager.hh" +void HadronPhysicsFTFP_BERT::ConstructProcess() +{ + CreateModels(); + theNeutrons->Build(); + thePro->Build(); + thePiK->Build(); + theMiscLHEP->Build(); +} + diff --git a/source/physics_lists/lists/src/HadronPhysicsFTF_BIC.cc b/source/physics_lists/lists/src/HadronPhysicsFTF_BIC.cc new file mode 100644 index 0000000000..966bf502ff --- /dev/null +++ b/source/physics_lists/lists/src/HadronPhysicsFTF_BIC.cc @@ -0,0 +1,121 @@ +// +// ******************************************************************** +// * 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: HadronPhysicsFTF_BIC.cc,v 1.1 2007/11/16 16:52:55 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: HadronPhysicsFTF_BIC +// +// Author: 2007 Gunter Folger +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#include "HadronPhysicsFTF_BIC.hh" + +#include "globals.hh" +#include "G4ios.hh" +#include +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" + +#include "G4MesonConstructor.hh" +#include "G4BaryonConstructor.hh" +#include "G4ShortLivedConstructor.hh" + +HadronPhysicsFTF_BIC::HadronPhysicsFTF_BIC(const G4String& name, G4bool quasiElastic) + : G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic) +{} + +void HadronPhysicsFTF_BIC::CreateModels() +{ + theNeutrons=new G4NeutronBuilder; + + theNeutrons->RegisterMe(theFTFBinaryNeutron=new G4FTFBinaryNeutronBuilder(QuasiElastic)); + theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder); + theLEPNeutron->SetMinInelasticEnergy(0.*eV); + theLEPNeutron->SetMaxInelasticEnergy(0.*eV); + + theNeutrons->RegisterMe(theBinaryNeutron=new G4BinaryNeutronBuilder); + theBinaryNeutron->SetMaxEnergy(5.0*GeV); + + thePro=new G4ProtonBuilder; + thePro->RegisterMe(theFTFBinaryPro=new G4FTFBinaryProtonBuilder(QuasiElastic)); + + thePro->RegisterMe(theBinaryPro=new G4BinaryProtonBuilder); + theBinaryPro->SetMaxEnergy(5.0*GeV); + + thePiK=new G4PiKBuilder; + thePiK->RegisterMe(theFTFBinaryPiK=new G4FTFBinaryPiKBuilder(QuasiElastic)); + thePiK->RegisterMe(theBICPiK = new G4BinaryPiKBuilder); + thePiK->RegisterMe(theLEPPiK=new G4LEPPiKBuilder); + theLEPPiK->SetMinPionEnergy(10*GeV); // don't use LEP for pion + theBICPiK->SetMaxEnergy(5*GeV); // use Binary up to 5GeV for pion + theLEPPiK->SetMaxEnergy(5*GeV); + + theMiscLHEP=new G4MiscLHEPBuilder; +} + +HadronPhysicsFTF_BIC::~HadronPhysicsFTF_BIC() +{ + delete theMiscLHEP; + delete theFTFBinaryNeutron; + delete theLEPNeutron; + delete theBinaryNeutron; + delete theFTFBinaryPro; + delete theLEPPro; + delete thePro; + delete theBinaryPro; + delete theFTFBinaryPiK; + delete theBICPiK; + delete theLEPPiK; + delete thePiK; +} + +void HadronPhysicsFTF_BIC::ConstructParticle() +{ + G4MesonConstructor pMesonConstructor; + pMesonConstructor.ConstructParticle(); + + G4BaryonConstructor pBaryonConstructor; + pBaryonConstructor.ConstructParticle(); + + G4ShortLivedConstructor pShortLivedConstructor; + pShortLivedConstructor.ConstructParticle(); +} + +#include "G4ProcessManager.hh" +void HadronPhysicsFTF_BIC::ConstructProcess() +{ + CreateModels(); + theNeutrons->Build(); + thePro->Build(); + thePiK->Build(); + theMiscLHEP->Build(); +} + diff --git a/source/physics_lists/lists/src/HadronPhysicsLHEP.cc b/source/physics_lists/lists/src/HadronPhysicsLHEP.cc index 7976da51f4..17f58ad4ac 100644 --- a/source/physics_lists/lists/src/HadronPhysicsLHEP.cc +++ b/source/physics_lists/lists/src/HadronPhysicsLHEP.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsLHEP.cc,v 1.1 2006/10/31 11:35:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsLHEP_BERT.cc b/source/physics_lists/lists/src/HadronPhysicsLHEP_BERT.cc index af4640b7e7..d7e734e57f 100644 --- a/source/physics_lists/lists/src/HadronPhysicsLHEP_BERT.cc +++ b/source/physics_lists/lists/src/HadronPhysicsLHEP_BERT.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsLHEP_BERT.cc,v 1.1 2006/10/31 11:35:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsLHEP_BERT_HP.cc b/source/physics_lists/lists/src/HadronPhysicsLHEP_BERT_HP.cc index dc65286b32..5a364a1447 100644 --- a/source/physics_lists/lists/src/HadronPhysicsLHEP_BERT_HP.cc +++ b/source/physics_lists/lists/src/HadronPhysicsLHEP_BERT_HP.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsLHEP_BERT_HP.cc,v 1.1 2006/10/31 11:35:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsLHEP_EMV.cc b/source/physics_lists/lists/src/HadronPhysicsLHEP_EMV.cc index 7c8eab4283..345ed5181b 100644 --- a/source/physics_lists/lists/src/HadronPhysicsLHEP_EMV.cc +++ b/source/physics_lists/lists/src/HadronPhysicsLHEP_EMV.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsLHEP_EMV.cc,v 1.1 2006/10/31 11:35:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsLHEP_PRECO_HP.cc b/source/physics_lists/lists/src/HadronPhysicsLHEP_PRECO_HP.cc index c2378b1212..7e593d2a39 100644 --- a/source/physics_lists/lists/src/HadronPhysicsLHEP_PRECO_HP.cc +++ b/source/physics_lists/lists/src/HadronPhysicsLHEP_PRECO_HP.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsLHEP_PRECO_HP.cc,v 1.1 2006/10/31 11:35:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsQGSC.cc b/source/physics_lists/lists/src/HadronPhysicsQGSC.cc index c689d0eb69..e7cfb872c8 100644 --- a/source/physics_lists/lists/src/HadronPhysicsQGSC.cc +++ b/source/physics_lists/lists/src/HadronPhysicsQGSC.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSC.cc,v 1.2 2007/04/26 14:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsQGSC_BERT.cc b/source/physics_lists/lists/src/HadronPhysicsQGSC_BERT.cc new file mode 100644 index 0000000000..ec27736ecb --- /dev/null +++ b/source/physics_lists/lists/src/HadronPhysicsQGSC_BERT.cc @@ -0,0 +1,123 @@ +// +// ******************************************************************** +// * 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: HadronPhysicsQGSC_BERT.cc,v 1.1 2007/11/15 16:58:16 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: HadronPhysicsQGSC_BERT +// +// Author: 2007 G.Folger +// created from HadronPhysicsQGSC, created by J.P. Wellisch +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#include "HadronPhysicsQGSC_BERT.hh" + +#include "globals.hh" +#include "G4ios.hh" +#include +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" + +#include "G4MesonConstructor.hh" +#include "G4BaryonConstructor.hh" +#include "G4ShortLivedConstructor.hh" + +HadronPhysicsQGSC_BERT::HadronPhysicsQGSC_BERT(const G4String& name, G4bool quasiElastic) + : G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic) +{} + +void HadronPhysicsQGSC_BERT::CreateModels() +{ + theNeutrons=new G4NeutronBuilder; + theNeutrons->RegisterMe(theQGSCNeutron=new G4QGSCNeutronBuilder(QuasiElastic)); + theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder); + + theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder); + theLEPNeutron->SetMinInelasticEnergy(0.0*eV); // no inelastic from LEP + theLEPNeutron->SetMaxInelasticEnergy(0.0*eV); + + theQGSCNeutron->SetMinEnergy(6*GeV); + theBertiniNeutron->SetMinEnergy(0.0*GeV); + theBertiniNeutron->SetMaxEnergy(9.0*GeV); + + thePro=new G4ProtonBuilder; + thePro->RegisterMe(theQGSCPro=new G4QGSCProtonBuilder(QuasiElastic)); + thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder); + + theQGSCPro->SetMinEnergy(6*GeV); + theBertiniPro->SetMaxEnergy(9.0*GeV); + + thePiK=new G4PiKBuilder; + thePiK->RegisterMe(theQGSCPiK=new G4QGSCPiKBuilder(QuasiElastic)); + thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder); + + theQGSCPiK->SetMinEnergy(6*GeV); + theBertiniPiK->SetMaxEnergy(9.0*GeV); + + theMiscLHEP=new G4MiscLHEPBuilder; +} + +HadronPhysicsQGSC_BERT::~HadronPhysicsQGSC_BERT() +{ + delete theQGSCNeutron; + delete theBertiniNeutron; + delete theLEPNeutron; + delete theNeutrons; + delete theQGSCPro; + delete theBertiniPro; + delete thePro; + delete theQGSCPiK; + delete theBertiniPiK; + delete thePiK; + delete theMiscLHEP; +} + +void HadronPhysicsQGSC_BERT::ConstructParticle() +{ + G4MesonConstructor pMesonConstructor; + pMesonConstructor.ConstructParticle(); + + G4BaryonConstructor pBaryonConstructor; + pBaryonConstructor.ConstructParticle(); + + G4ShortLivedConstructor pShortLivedConstructor; + pShortLivedConstructor.ConstructParticle(); +} + +#include "G4ProcessManager.hh" +void HadronPhysicsQGSC_BERT::ConstructProcess() +{ + CreateModels(); + theNeutrons->Build(); + thePro->Build(); + thePiK->Build(); + theMiscLHEP->Build(); +} + diff --git a/source/physics_lists/lists/src/HadronPhysicsQGSC_EFLOW.cc b/source/physics_lists/lists/src/HadronPhysicsQGSC_EFLOW.cc index 05d01346c3..27998a3e94 100644 --- a/source/physics_lists/lists/src/HadronPhysicsQGSC_EFLOW.cc +++ b/source/physics_lists/lists/src/HadronPhysicsQGSC_EFLOW.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSC_EFLOW.cc,v 1.2 2007/04/26 14:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsQGSP.cc b/source/physics_lists/lists/src/HadronPhysicsQGSP.cc index c0156320d0..3435570cf6 100644 --- a/source/physics_lists/lists/src/HadronPhysicsQGSP.cc +++ b/source/physics_lists/lists/src/HadronPhysicsQGSP.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: HadronPhysicsQGSP.cc,v 1.3 2007/04/26 14:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HadronPhysicsQGSP.cc,v 1.4 2007/11/13 10:16:11 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -37,6 +37,7 @@ // 21.11.2005 G.Folger: migration to non static particles // 08.06.2006 V.Ivanchenko: remove stopping // 30.03.2007 G.Folger: Add code for quasielastic +// 12.11.2007 G.Folger: Add code for projectileDiffraction for proton/neutron // #include "HadronPhysicsQGSP.hh" @@ -53,24 +54,26 @@ HadronPhysicsQGSP::HadronPhysicsQGSP(const G4String& name, G4bool quasiElastic) : G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic) -{} +{ + ProjectileDiffraction=false; +} void HadronPhysicsQGSP::CreateModels() { theNeutrons=new G4NeutronBuilder; - theQGSPNeutron=new G4QGSPNeutronBuilder(QuasiElastic); + theQGSPNeutron=new G4QGSPNeutronBuilder(QuasiElastic, ProjectileDiffraction); theNeutrons->RegisterMe(theQGSPNeutron); theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder); theLEPNeutron->SetMaxInelasticEnergy(25*GeV); thePro=new G4ProtonBuilder; - theQGSPPro=new G4QGSPProtonBuilder(QuasiElastic); + theQGSPPro=new G4QGSPProtonBuilder(QuasiElastic, ProjectileDiffraction); thePro->RegisterMe(theQGSPPro); thePro->RegisterMe(theLEPPro=new G4LEPProtonBuilder); theLEPPro->SetMaxEnergy(25*GeV); thePiK=new G4PiKBuilder; - theQGSPPiK=new G4QGSPPiKBuilder(QuasiElastic); + theQGSPPiK=new G4QGSPPiKBuilder(QuasiElastic, false); thePiK->RegisterMe(theQGSPPiK); thePiK->RegisterMe(theLEPPiK=new G4LEPPiKBuilder); theLEPPiK->SetMaxEnergy(25*GeV); diff --git a/source/physics_lists/lists/src/HadronPhysicsQGSP_BERT.cc b/source/physics_lists/lists/src/HadronPhysicsQGSP_BERT.cc index 469290de1d..82c67b6776 100644 --- a/source/physics_lists/lists/src/HadronPhysicsQGSP_BERT.cc +++ b/source/physics_lists/lists/src/HadronPhysicsQGSP_BERT.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: HadronPhysicsQGSP_BERT.cc,v 1.2 2007/04/26 14:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: HadronPhysicsQGSP_BERT.cc,v 1.3 2007/12/10 17:34:44 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -37,6 +37,7 @@ // 08.06.2006 V.Ivanchenko: remove stopping // 20.06.2006 G.Folger: Bertini applies to Kaons, i.e. use SetMinEnergy instead of SetMinPionEnergy // 25.04.2007 G.Folger: Add code for quasielastic +// 10.12.2007 G.Folger: Add projectilediffrative option for proton/neutron, off by default // //---------------------------------------------------------------------------- // @@ -54,12 +55,14 @@ HadronPhysicsQGSP_BERT::HadronPhysicsQGSP_BERT(const G4String& name, G4bool quasiElastic) : G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic) -{} +{ + ProjectileDiffraction=false; +} void HadronPhysicsQGSP_BERT::CreateModels() { theNeutrons=new G4NeutronBuilder; - theNeutrons->RegisterMe(theQGSPNeutron=new G4QGSPNeutronBuilder(QuasiElastic)); + theNeutrons->RegisterMe(theQGSPNeutron=new G4QGSPNeutronBuilder(QuasiElastic, ProjectileDiffraction)); theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder); theLEPNeutron->SetMinInelasticEnergy(9.5*GeV); theLEPNeutron->SetMaxInelasticEnergy(25*GeV); @@ -69,7 +72,7 @@ void HadronPhysicsQGSP_BERT::CreateModels() theBertiniNeutron->SetMaxEnergy(9.9*GeV); thePro=new G4ProtonBuilder; - thePro->RegisterMe(theQGSPPro=new G4QGSPProtonBuilder(QuasiElastic)); + thePro->RegisterMe(theQGSPPro=new G4QGSPProtonBuilder(QuasiElastic, ProjectileDiffraction)); thePro->RegisterMe(theLEPPro=new G4LEPProtonBuilder); theLEPPro->SetMinEnergy(9.5*GeV); theLEPPro->SetMaxEnergy(25*GeV); diff --git a/source/physics_lists/lists/src/HadronPhysicsQGSP_BERT_HP.cc b/source/physics_lists/lists/src/HadronPhysicsQGSP_BERT_HP.cc index b218e0af70..04758550c8 100644 --- a/source/physics_lists/lists/src/HadronPhysicsQGSP_BERT_HP.cc +++ b/source/physics_lists/lists/src/HadronPhysicsQGSP_BERT_HP.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSP_BERT_HP.cc,v 1.2 2007/04/26 14:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsQGSP_BERT_TRV.cc b/source/physics_lists/lists/src/HadronPhysicsQGSP_BERT_TRV.cc index 10756430c9..8ba96ddeaa 100644 --- a/source/physics_lists/lists/src/HadronPhysicsQGSP_BERT_TRV.cc +++ b/source/physics_lists/lists/src/HadronPhysicsQGSP_BERT_TRV.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSP_BERT_TRV.cc,v 1.1 2007/05/07 14:34:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsQGSP_BIC.cc b/source/physics_lists/lists/src/HadronPhysicsQGSP_BIC.cc index 7f040ab2ac..9117a2acef 100644 --- a/source/physics_lists/lists/src/HadronPhysicsQGSP_BIC.cc +++ b/source/physics_lists/lists/src/HadronPhysicsQGSP_BIC.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSP_BIC.cc,v 1.2 2007/04/26 14:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsQGSP_BIC_HP.cc b/source/physics_lists/lists/src/HadronPhysicsQGSP_BIC_HP.cc index 48d14fc98f..5ca1fb8af8 100644 --- a/source/physics_lists/lists/src/HadronPhysicsQGSP_BIC_HP.cc +++ b/source/physics_lists/lists/src/HadronPhysicsQGSP_BIC_HP.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSP_BIC_HP.cc,v 1.3 2007/04/26 14:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsQGS_BIC.cc b/source/physics_lists/lists/src/HadronPhysicsQGS_BIC.cc new file mode 100644 index 0000000000..5c95795c6c --- /dev/null +++ b/source/physics_lists/lists/src/HadronPhysicsQGS_BIC.cc @@ -0,0 +1,124 @@ +// +// ******************************************************************** +// * 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: HadronPhysicsQGS_BIC.cc,v 1.1 2007/11/13 10:23:24 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +//--------------------------------------------------------------------------- +// +// ClassName: HadronPhysicsQGS_BIC +// +// Author: 2007 Gunter Folger +// created from HadronPhysicsQGSP_BIC by H.P.Wellisch +// +// Modified: +// +//---------------------------------------------------------------------------- +// +#include "HadronPhysicsQGS_BIC.hh" + +#include "globals.hh" +#include "G4ios.hh" +#include +#include "G4ParticleDefinition.hh" +#include "G4ParticleTable.hh" + +#include "G4MesonConstructor.hh" +#include "G4BaryonConstructor.hh" +#include "G4ShortLivedConstructor.hh" + +HadronPhysicsQGS_BIC::HadronPhysicsQGS_BIC(const G4String& name, G4bool quasiElastic) + : G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic) +{} + +void HadronPhysicsQGS_BIC::CreateModels() +{ + theNeutrons=new G4NeutronBuilder; + + theNeutrons->RegisterMe(theQGSBinaryNeutron=new G4QGSBinaryNeutronBuilder(QuasiElastic)); + theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder); + theLEPNeutron->SetMinInelasticEnergy(9.5*GeV); + theLEPNeutron->SetMaxInelasticEnergy(25*GeV); + + theNeutrons->RegisterMe(theBinaryNeutron=new G4BinaryNeutronBuilder); + theBinaryNeutron->SetMaxEnergy(9.9*GeV); + + thePro=new G4ProtonBuilder; + thePro->RegisterMe(theQGSBinaryPro=new G4QGSBinaryProtonBuilder(QuasiElastic)); + thePro->RegisterMe(theLEPPro=new G4LEPProtonBuilder); + theLEPPro->SetMinEnergy(9.5*GeV); + theLEPPro->SetMaxEnergy(25*GeV); + + thePro->RegisterMe(theBinaryPro=new G4BinaryProtonBuilder); + theBinaryPro->SetMaxEnergy(9.9*GeV); + + thePiK=new G4PiKBuilder; + thePiK->RegisterMe(theQGSBinaryPiK=new G4QGSBinaryPiKBuilder(QuasiElastic)); + thePiK->RegisterMe(theBICPiK = new G4BinaryPiKBuilder); + thePiK->RegisterMe(theLEPPiK=new G4LEPPiKBuilder); + theLEPPiK->SetMinPionEnergy(1.2*GeV); + theLEPPiK->SetMaxEnergy(25*GeV); + + theMiscLHEP=new G4MiscLHEPBuilder; +} + +HadronPhysicsQGS_BIC::~HadronPhysicsQGS_BIC() +{ + delete theMiscLHEP; + delete theQGSBinaryNeutron; + delete theLEPNeutron; + delete theBinaryNeutron; + delete theQGSBinaryPro; + delete theLEPPro; + delete thePro; + delete theBinaryPro; + delete theQGSBinaryPiK; + delete theBICPiK; + delete theLEPPiK; + delete thePiK; +} + +void HadronPhysicsQGS_BIC::ConstructParticle() +{ + G4MesonConstructor pMesonConstructor; + pMesonConstructor.ConstructParticle(); + + G4BaryonConstructor pBaryonConstructor; + pBaryonConstructor.ConstructParticle(); + + G4ShortLivedConstructor pShortLivedConstructor; + pShortLivedConstructor.ConstructParticle(); +} + +#include "G4ProcessManager.hh" +void HadronPhysicsQGS_BIC::ConstructProcess() +{ + CreateModels(); + theNeutrons->Build(); + thePro->Build(); + thePiK->Build(); + theMiscLHEP->Build(); +} + diff --git a/source/physics_lists/lists/src/MinEkineCuts.cc b/source/physics_lists/lists/src/MinEkineCuts.cc index 8604c4c5eb..babe54ddfc 100644 --- a/source/physics_lists/lists/src/MinEkineCuts.cc +++ b/source/physics_lists/lists/src/MinEkineCuts.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/GNUmakefile b/source/processes/GNUmakefile index aecd2b0a9d..9689535c6b 100644 --- a/source/processes/GNUmakefile +++ b/source/processes/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.38 2007/05/31 08:12:53 gcosmo Exp $ +# $Id: GNUmakefile,v 1.43 2007/11/19 13:16:47 gcosmo Exp $ # ---------------------------------------------------------------------- # GNUmakefile for processes library, Gabriele Cosmo 27-Jun-1998 # ---------------------------------------------------------------------- @@ -64,6 +64,7 @@ SUBDIRS += hadronic/models/de_excitation/util SUBDIRS += hadronic/models/em_dissociation SUBDIRS += hadronic/models/high_energy SUBDIRS += hadronic/models/im_r_matrix +SUBDIRS += hadronic/models/incl SUBDIRS += hadronic/models/isotope_production SUBDIRS += hadronic/models/leading_particle SUBDIRS += hadronic/models/lll_fission @@ -76,7 +77,9 @@ SUBDIRS += hadronic/models/parton_string/management SUBDIRS += hadronic/models/parton_string/qgsm SUBDIRS += hadronic/models/photolepton_hadron/muon_nuclear SUBDIRS += hadronic/models/pre_equilibrium/exciton_model +SUBDIRS += hadronic/models/qmd SUBDIRS += hadronic/models/radioactive_decay +SUBDIRS += hadronic/models/rpg SUBDIRS += hadronic/models/theo_high_energy SUBDIRS += hadronic/models/util SUBDIRS += hadronic/processes @@ -96,6 +99,8 @@ SUBLIBS += G4had_im_r_matrix SUBLIBS += G4hadronic_iso SUBLIBS += G4hadronic_leading_particle SUBLIBS += G4hadronic_LE +SUBLIBS += G4hadronic_RPG +SUBLIBS += G4hadronic_qmd SUBLIBS += G4had_lll_fis SUBLIBS += G4had_mod_man SUBLIBS += G4had_neu_hp @@ -105,6 +110,7 @@ SUBLIBS += G4had_mod_util SUBLIBS += G4hadronic_bert_cascade SUBLIBS += G4hadronic_hetcpp_evaporation SUBLIBS += G4hadronic_hetcpp_utils +SUBLIBS += G4hadronic_incl_cascade SUBLIBS += G4hadronic_body_ci SUBLIBS += G4hadronic_interface_ci SUBLIBS += G4hadronic_deex_evaporation diff --git a/source/processes/biasing/History b/source/processes/biasing/History index 7204b2be92..ab4bbbad25 100644 --- a/source/processes/biasing/History +++ b/source/processes/biasing/History @@ -1,4 +1,4 @@ -$Id: History,v 1.15 2007/06/25 06:59:17 ahoward Exp $ +$Id: History,v 1.16 2007/10/31 18:05:44 ahoward Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,11 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +October 31st, 2007 Alex Howard (procbiasing-V09-00-00) +- Fixed G4ProcessPlacer.cc to put biasing process second for AlongStep + as well as PostStep - a bug which would feature for charged particles. +- Added print out for AlongStep process vector to avoid confusion + June 22nd, 2007 Alex Howard (procbiasing-V08-03-08) - Added missing member function to G4VSampler base class diff --git a/source/processes/biasing/include/G4GCellFinder.hh b/source/processes/biasing/include/G4GCellFinder.hh index 0a1ef6d8b8..8620712cf5 100644 --- a/source/processes/biasing/include/G4GCellFinder.hh +++ b/source/processes/biasing/include/G4GCellFinder.hh @@ -25,7 +25,7 @@ // // // $Id: G4GCellFinder.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4ParallelGCellFinder diff --git a/source/processes/biasing/include/G4GeometrySampler.hh b/source/processes/biasing/include/G4GeometrySampler.hh index 004b528bc0..03a7e8d801 100644 --- a/source/processes/biasing/include/G4GeometrySampler.hh +++ b/source/processes/biasing/include/G4GeometrySampler.hh @@ -25,7 +25,7 @@ // // // $Id: G4GeometrySampler.hh,v 1.9 2007/06/01 09:52:23 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4GeometrySampler diff --git a/source/processes/biasing/include/G4ImportanceConfigurator.hh b/source/processes/biasing/include/G4ImportanceConfigurator.hh index 052867bfbd..dba731cc2d 100644 --- a/source/processes/biasing/include/G4ImportanceConfigurator.hh +++ b/source/processes/biasing/include/G4ImportanceConfigurator.hh @@ -25,7 +25,7 @@ // // // $Id: G4ImportanceConfigurator.hh,v 1.3 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4ImportanceConfigurator diff --git a/source/processes/biasing/include/G4ImportanceProcess.hh b/source/processes/biasing/include/G4ImportanceProcess.hh index 73d2f81a45..b97e909a71 100644 --- a/source/processes/biasing/include/G4ImportanceProcess.hh +++ b/source/processes/biasing/include/G4ImportanceProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4ImportanceProcess.hh,v 1.3 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4ImportanceProcess diff --git a/source/processes/biasing/include/G4PlaceOfAction.hh b/source/processes/biasing/include/G4PlaceOfAction.hh index 5eb04a52eb..0cedb434ea 100644 --- a/source/processes/biasing/include/G4PlaceOfAction.hh +++ b/source/processes/biasing/include/G4PlaceOfAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4PlaceOfAction.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4PlaceOfAction diff --git a/source/processes/biasing/include/G4ProcessPlacer.hh b/source/processes/biasing/include/G4ProcessPlacer.hh index f5e98d7cea..8383f11a66 100644 --- a/source/processes/biasing/include/G4ProcessPlacer.hh +++ b/source/processes/biasing/include/G4ProcessPlacer.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ProcessPlacer.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ProcessPlacer.hh,v 1.3 2007/10/31 18:05:44 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4ProcessPlacer @@ -82,6 +82,8 @@ private: void AddProcessAs(G4VProcess *process, SecondOrLast); void PrintProcVec(G4ProcessVector* processVec); + void PrintAlongStepGPILVec(); + void PrintAlongStepDoItVec(); void PrintPostStepGPILVec(); void PrintPostStepDoItVec(); diff --git a/source/processes/biasing/include/G4SamplingPostStepAction.hh b/source/processes/biasing/include/G4SamplingPostStepAction.hh index 18cb1e3792..9fc404de4d 100644 --- a/source/processes/biasing/include/G4SamplingPostStepAction.hh +++ b/source/processes/biasing/include/G4SamplingPostStepAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4SamplingPostStepAction.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4SamplingPostStepAction diff --git a/source/processes/biasing/include/G4TrackTerminator.hh b/source/processes/biasing/include/G4TrackTerminator.hh index eeb10b6e8b..e9a85eb41a 100644 --- a/source/processes/biasing/include/G4TrackTerminator.hh +++ b/source/processes/biasing/include/G4TrackTerminator.hh @@ -25,7 +25,7 @@ // // // $Id: G4TrackTerminator.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4TrackTerminator diff --git a/source/processes/biasing/include/G4VProcessPlacer.hh b/source/processes/biasing/include/G4VProcessPlacer.hh index a71fa4e98a..7c2307b3ab 100644 --- a/source/processes/biasing/include/G4VProcessPlacer.hh +++ b/source/processes/biasing/include/G4VProcessPlacer.hh @@ -25,7 +25,7 @@ // // // $Id: G4VProcessPlacer.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4VProcessPlacer diff --git a/source/processes/biasing/include/G4VSampler.hh b/source/processes/biasing/include/G4VSampler.hh index 09483d45f4..55be82406e 100644 --- a/source/processes/biasing/include/G4VSampler.hh +++ b/source/processes/biasing/include/G4VSampler.hh @@ -25,7 +25,7 @@ // // // $Id: G4VSampler.hh,v 1.8 2007/06/25 06:57:22 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4VSampler diff --git a/source/processes/biasing/include/G4VSamplerConfigurator.hh b/source/processes/biasing/include/G4VSamplerConfigurator.hh index 43566cba21..b77a7f3a25 100644 --- a/source/processes/biasing/include/G4VSamplerConfigurator.hh +++ b/source/processes/biasing/include/G4VSamplerConfigurator.hh @@ -25,7 +25,7 @@ // // // $Id: G4VSamplerConfigurator.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4VSamplerConfigurator diff --git a/source/processes/biasing/include/G4WeightCutOffConfigurator.hh b/source/processes/biasing/include/G4WeightCutOffConfigurator.hh index 8d70678891..7398fec8d1 100644 --- a/source/processes/biasing/include/G4WeightCutOffConfigurator.hh +++ b/source/processes/biasing/include/G4WeightCutOffConfigurator.hh @@ -25,7 +25,7 @@ // // // $Id: G4WeightCutOffConfigurator.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4WeightCutOffConfigurator diff --git a/source/processes/biasing/include/G4WeightCutOffProcess.hh b/source/processes/biasing/include/G4WeightCutOffProcess.hh index 85ed2bba4d..e052d9a05e 100644 --- a/source/processes/biasing/include/G4WeightCutOffProcess.hh +++ b/source/processes/biasing/include/G4WeightCutOffProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4WeightCutOffProcess.hh,v 1.2 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4WeightCutOffProcess diff --git a/source/processes/biasing/include/G4WeightWindowConfigurator.hh b/source/processes/biasing/include/G4WeightWindowConfigurator.hh index 2667ae78d4..b5e3d40275 100644 --- a/source/processes/biasing/include/G4WeightWindowConfigurator.hh +++ b/source/processes/biasing/include/G4WeightWindowConfigurator.hh @@ -25,7 +25,7 @@ // // // $Id: G4WeightWindowConfigurator.hh,v 1.3 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4WeightWindowConfigurator diff --git a/source/processes/biasing/include/G4WeightWindowProcess.hh b/source/processes/biasing/include/G4WeightWindowProcess.hh index 67acc6aed3..3b18fbe60c 100644 --- a/source/processes/biasing/include/G4WeightWindowProcess.hh +++ b/source/processes/biasing/include/G4WeightWindowProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4WeightWindowProcess.hh,v 1.3 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4MassWeioghtWindowProcess diff --git a/source/processes/biasing/src/G4GCellFinder.cc b/source/processes/biasing/src/G4GCellFinder.cc index a4c6647a31..f5d0e91caf 100644 --- a/source/processes/biasing/src/G4GCellFinder.cc +++ b/source/processes/biasing/src/G4GCellFinder.cc @@ -25,7 +25,7 @@ // // // $Id: G4GCellFinder.cc,v 1.2 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/processes/biasing/src/G4GeometrySampler.cc b/source/processes/biasing/src/G4GeometrySampler.cc index 703a485de0..9c6d8122d6 100644 --- a/source/processes/biasing/src/G4GeometrySampler.cc +++ b/source/processes/biasing/src/G4GeometrySampler.cc @@ -25,7 +25,7 @@ // // // $Id: G4GeometrySampler.cc,v 1.8 2007/06/01 09:52:23 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/processes/biasing/src/G4ImportanceConfigurator.cc b/source/processes/biasing/src/G4ImportanceConfigurator.cc index 190529f8cf..062f637596 100644 --- a/source/processes/biasing/src/G4ImportanceConfigurator.cc +++ b/source/processes/biasing/src/G4ImportanceConfigurator.cc @@ -25,7 +25,7 @@ // // // $Id: G4ImportanceConfigurator.cc,v 1.3 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4ImportanceConfigurator diff --git a/source/processes/biasing/src/G4ImportanceProcess.cc b/source/processes/biasing/src/G4ImportanceProcess.cc index b52824282d..55cb6f8ad0 100644 --- a/source/processes/biasing/src/G4ImportanceProcess.cc +++ b/source/processes/biasing/src/G4ImportanceProcess.cc @@ -25,7 +25,7 @@ // // // $Id: G4ImportanceProcess.cc,v 1.3 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/processes/biasing/src/G4ProcessPlacer.cc b/source/processes/biasing/src/G4ProcessPlacer.cc index 49d2a3c209..214c0b02fb 100644 --- a/source/processes/biasing/src/G4ProcessPlacer.cc +++ b/source/processes/biasing/src/G4ProcessPlacer.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ProcessPlacer.cc,v 1.3 2007/06/12 17:24:39 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ProcessPlacer.cc,v 1.4 2007/10/31 18:05:44 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -55,13 +55,21 @@ void G4ProcessPlacer::RemoveProcess(G4VProcess *process) G4cout << " ProcessName: " << process->GetProcessName() << ", will be removed!" << G4endl; - G4cout << " The initial Vectors: " << G4endl; + G4cout << " The initial AlongStep Vectors: " << G4endl; + PrintAlongStepGPILVec(); + PrintAlongStepDoItVec(); + + G4cout << " The initial PostStep Vectors: " << G4endl; PrintPostStepGPILVec(); PrintPostStepDoItVec(); GetProcessManager()->RemoveProcess(process); - G4cout << " The final Vectors: " << G4endl; + G4cout << " The final AlongStep Vectors: " << G4endl; + PrintAlongStepGPILVec(); + PrintAlongStepDoItVec(); + + G4cout << " The final PostStep Vectors: " << G4endl; PrintPostStepGPILVec(); PrintPostStepDoItVec(); @@ -71,8 +79,13 @@ void G4ProcessPlacer::RemoveProcess(G4VProcess *process) void G4ProcessPlacer::AddProcessAs(G4VProcess *process, SecondOrLast sol) { - G4cout << " ProcessName: " << process->GetProcessName() << G4endl; - G4cout << "The initial Vectors: " << G4endl; + G4cout << " Modifying Process Order for ProcessName: " << process->GetProcessName() << G4endl; + + G4cout << " The initial AlongStep Vectors: " << G4endl; + PrintAlongStepGPILVec(); + PrintAlongStepDoItVec(); + + G4cout << "The initial PostStep Vectors: " << G4endl; PrintPostStepGPILVec(); PrintPostStepDoItVec(); @@ -99,19 +112,27 @@ void G4ProcessPlacer::AddProcessAs(G4VProcess *process, SecondOrLast sol) // place the given proces as first for the moment GetProcessManager()->AddProcess(process); + GetProcessManager()->SetProcessOrderingToFirst(process, + idxAlongStep); GetProcessManager()->SetProcessOrderingToFirst(process, idxPostStep); // xx test // if(process->GetProcessName() == "ImportanceProcess") - GetProcessManager()->SetProcessOrdering(process, - idxAlongStep, 1); + //bug31/10/07 GetProcessManager()->SetProcessOrdering(process, + //bug31/10/07 idxAlongStep, 1); // place transportation first again + GetProcessManager()->SetProcessOrderingToFirst(transportation, + idxAlongStep); GetProcessManager()->SetProcessOrderingToFirst(transportation, idxPostStep); } // for verification inly - G4cout << "The final Vectors: " << G4endl; + G4cout << " The final AlongStep Vectors: " << G4endl; + PrintAlongStepGPILVec(); + PrintAlongStepDoItVec(); + + G4cout << "The final PostStep Vectors: " << G4endl; PrintPostStepGPILVec(); PrintPostStepDoItVec(); @@ -161,6 +182,23 @@ G4ProcessManager *G4ProcessPlacer::GetProcessManager() return processmanager; } +void G4ProcessPlacer::PrintAlongStepGPILVec() +{ + G4cout << "GPIL Vector: " << G4endl; + G4ProcessVector* processGPILVec = + GetProcessManager()->GetAlongStepProcessVector(typeGPIL); + PrintProcVec(processGPILVec); +} + +void G4ProcessPlacer::PrintAlongStepDoItVec() +{ + G4cout << "DoIt Vector: " << G4endl; + G4ProcessVector* processDoItVec = + GetProcessManager()->GetAlongStepProcessVector(typeDoIt); + PrintProcVec(processDoItVec); +} + + void G4ProcessPlacer::PrintPostStepGPILVec() { G4cout << "GPIL Vector: " << G4endl; diff --git a/source/processes/biasing/src/G4SamplingPostStepAction.cc b/source/processes/biasing/src/G4SamplingPostStepAction.cc index cae9067382..c06c696aeb 100644 --- a/source/processes/biasing/src/G4SamplingPostStepAction.cc +++ b/source/processes/biasing/src/G4SamplingPostStepAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4SamplingPostStepAction.cc,v 1.2 2007/06/01 09:16:33 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/processes/biasing/src/G4VProcessPlacer.cc b/source/processes/biasing/src/G4VProcessPlacer.cc index a53b5ffce5..341fa4ce0d 100644 --- a/source/processes/biasing/src/G4VProcessPlacer.cc +++ b/source/processes/biasing/src/G4VProcessPlacer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VProcessPlacer.cc,v 1.1 2007/06/01 14:57:03 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/processes/biasing/src/G4VSampler.cc b/source/processes/biasing/src/G4VSampler.cc index f3b4cc1a47..0bc501764a 100644 --- a/source/processes/biasing/src/G4VSampler.cc +++ b/source/processes/biasing/src/G4VSampler.cc @@ -25,7 +25,7 @@ // // // $Id: G4VSampler.cc,v 1.2 2007/06/01 09:16:34 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/processes/biasing/src/G4VSamplerConfigurator.cc b/source/processes/biasing/src/G4VSamplerConfigurator.cc index 890eefd3a6..9dba274821 100644 --- a/source/processes/biasing/src/G4VSamplerConfigurator.cc +++ b/source/processes/biasing/src/G4VSamplerConfigurator.cc @@ -25,7 +25,7 @@ // // // $Id: G4VSamplerConfigurator.cc,v 1.2 2007/06/01 09:16:34 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/processes/biasing/src/G4WeightCutOffConfigurator.cc b/source/processes/biasing/src/G4WeightCutOffConfigurator.cc index afd02aea9a..28d39a090e 100644 --- a/source/processes/biasing/src/G4WeightCutOffConfigurator.cc +++ b/source/processes/biasing/src/G4WeightCutOffConfigurator.cc @@ -25,7 +25,7 @@ // // // $Id: G4WeightCutOffConfigurator.cc,v 1.2 2007/06/01 09:16:34 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4WeightCutOffConfigurator diff --git a/source/processes/biasing/src/G4WeightCutOffProcess.cc b/source/processes/biasing/src/G4WeightCutOffProcess.cc index b97d669e48..4ae9890b2a 100644 --- a/source/processes/biasing/src/G4WeightCutOffProcess.cc +++ b/source/processes/biasing/src/G4WeightCutOffProcess.cc @@ -25,7 +25,7 @@ // // // $Id: G4WeightCutOffProcess.cc,v 1.2 2007/06/01 09:16:34 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/processes/biasing/src/G4WeightWindowConfigurator.cc b/source/processes/biasing/src/G4WeightWindowConfigurator.cc index 6a1c3778c5..16ff9cb05c 100644 --- a/source/processes/biasing/src/G4WeightWindowConfigurator.cc +++ b/source/processes/biasing/src/G4WeightWindowConfigurator.cc @@ -25,7 +25,7 @@ // // // $Id: G4WeightWindowConfigurator.cc,v 1.3 2007/06/01 09:16:34 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4WeightWindowConfigurator diff --git a/source/processes/biasing/src/G4WeightWindowProcess.cc b/source/processes/biasing/src/G4WeightWindowProcess.cc index 7cc867a5fb..e4ae0f71a2 100644 --- a/source/processes/biasing/src/G4WeightWindowProcess.cc +++ b/source/processes/biasing/src/G4WeightWindowProcess.cc @@ -25,7 +25,7 @@ // // // $Id: G4WeightWindowProcess.cc,v 1.3 2007/06/01 09:16:34 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/processes/cuts/include/G4MCCIndexConversionTable.hh b/source/processes/cuts/include/G4MCCIndexConversionTable.hh index afebe8d16f..bfe6ece438 100644 --- a/source/processes/cuts/include/G4MCCIndexConversionTable.hh +++ b/source/processes/cuts/include/G4MCCIndexConversionTable.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MCCIndexConversionTable.hh,v 1.3 2006/06/29 19:29:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4MaterialCutsCouple.hh b/source/processes/cuts/include/G4MaterialCutsCouple.hh index ab4b6d6165..bd74b9d11f 100644 --- a/source/processes/cuts/include/G4MaterialCutsCouple.hh +++ b/source/processes/cuts/include/G4MaterialCutsCouple.hh @@ -25,7 +25,7 @@ // // // $Id: G4MaterialCutsCouple.hh,v 1.3 2006/06/29 19:29:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4PhysicsTableHelper.hh b/source/processes/cuts/include/G4PhysicsTableHelper.hh index 01e0ff23e1..31b15bc440 100644 --- a/source/processes/cuts/include/G4PhysicsTableHelper.hh +++ b/source/processes/cuts/include/G4PhysicsTableHelper.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhysicsTableHelper.hh,v 1.3 2006/06/29 19:29:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4ProductionCuts.hh b/source/processes/cuts/include/G4ProductionCuts.hh index 83eca2d185..6f160bbde7 100644 --- a/source/processes/cuts/include/G4ProductionCuts.hh +++ b/source/processes/cuts/include/G4ProductionCuts.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProductionCuts.hh,v 1.4 2006/06/29 19:29:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4ProductionCutsTable.hh b/source/processes/cuts/include/G4ProductionCutsTable.hh index 18d885c16d..e1dfcd0cb1 100644 --- a/source/processes/cuts/include/G4ProductionCutsTable.hh +++ b/source/processes/cuts/include/G4ProductionCutsTable.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProductionCutsTable.hh,v 1.8 2007/03/15 04:06:40 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4RToEConvForAntiNeutron.hh b/source/processes/cuts/include/G4RToEConvForAntiNeutron.hh index b104bef576..a6c5c9e291 100644 --- a/source/processes/cuts/include/G4RToEConvForAntiNeutron.hh +++ b/source/processes/cuts/include/G4RToEConvForAntiNeutron.hh @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForAntiNeutron.hh,v 1.2 2006/06/29 19:29:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4RToEConvForAntiProton.hh b/source/processes/cuts/include/G4RToEConvForAntiProton.hh index b77d2c2eb9..588c704d71 100644 --- a/source/processes/cuts/include/G4RToEConvForAntiProton.hh +++ b/source/processes/cuts/include/G4RToEConvForAntiProton.hh @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForAntiProton.hh,v 1.2 2006/06/29 19:29:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4RToEConvForElectron.hh b/source/processes/cuts/include/G4RToEConvForElectron.hh index a57258fdc8..03e1eb0387 100644 --- a/source/processes/cuts/include/G4RToEConvForElectron.hh +++ b/source/processes/cuts/include/G4RToEConvForElectron.hh @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForElectron.hh,v 1.2 2006/06/29 19:29:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4RToEConvForGamma.hh b/source/processes/cuts/include/G4RToEConvForGamma.hh index 07d29e5935..720dd88a9e 100644 --- a/source/processes/cuts/include/G4RToEConvForGamma.hh +++ b/source/processes/cuts/include/G4RToEConvForGamma.hh @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForGamma.hh,v 1.2 2006/06/29 19:29:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4RToEConvForNeutron.hh b/source/processes/cuts/include/G4RToEConvForNeutron.hh index b85e547567..2443f27136 100644 --- a/source/processes/cuts/include/G4RToEConvForNeutron.hh +++ b/source/processes/cuts/include/G4RToEConvForNeutron.hh @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForNeutron.hh,v 1.2 2006/06/29 19:30:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4RToEConvForPositron.hh b/source/processes/cuts/include/G4RToEConvForPositron.hh index ecc62ee6f8..9e1796f1d5 100644 --- a/source/processes/cuts/include/G4RToEConvForPositron.hh +++ b/source/processes/cuts/include/G4RToEConvForPositron.hh @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForPositron.hh,v 1.2 2006/06/29 19:30:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4RToEConvForProton.hh b/source/processes/cuts/include/G4RToEConvForProton.hh index e914917bd1..de06da04fd 100644 --- a/source/processes/cuts/include/G4RToEConvForProton.hh +++ b/source/processes/cuts/include/G4RToEConvForProton.hh @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForProton.hh,v 1.2 2006/06/29 19:30:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4VRangeToEnergyConverter.hh b/source/processes/cuts/include/G4VRangeToEnergyConverter.hh index 7b6e610f7a..80ec6cdbb5 100644 --- a/source/processes/cuts/include/G4VRangeToEnergyConverter.hh +++ b/source/processes/cuts/include/G4VRangeToEnergyConverter.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRangeToEnergyConverter.hh,v 1.4 2006/06/29 19:30:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/src/G4MCCIndexConversionTable.cc b/source/processes/cuts/src/G4MCCIndexConversionTable.cc index 0e6c9e0e55..4114860886 100644 --- a/source/processes/cuts/src/G4MCCIndexConversionTable.cc +++ b/source/processes/cuts/src/G4MCCIndexConversionTable.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MCCIndexConversionTable.cc,v 1.3 2006/06/29 19:30:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/src/G4MaterialCutsCouple.cc b/source/processes/cuts/src/G4MaterialCutsCouple.cc index 94ccec671e..1203fec3f4 100644 --- a/source/processes/cuts/src/G4MaterialCutsCouple.cc +++ b/source/processes/cuts/src/G4MaterialCutsCouple.cc @@ -25,7 +25,7 @@ // // // $Id: G4MaterialCutsCouple.cc,v 1.3 2006/06/29 19:30:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4PhysicsTableHelper.cc b/source/processes/cuts/src/G4PhysicsTableHelper.cc index 41d428ca8e..187aba9e0d 100644 --- a/source/processes/cuts/src/G4PhysicsTableHelper.cc +++ b/source/processes/cuts/src/G4PhysicsTableHelper.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PhysicsTableHelper.cc,v 1.5 2006/06/29 19:30:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/src/G4ProductionCuts.cc b/source/processes/cuts/src/G4ProductionCuts.cc index 150782538a..fd63f38dac 100644 --- a/source/processes/cuts/src/G4ProductionCuts.cc +++ b/source/processes/cuts/src/G4ProductionCuts.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProductionCuts.cc,v 1.5 2006/06/29 19:30:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4ProductionCutsTable.cc b/source/processes/cuts/src/G4ProductionCutsTable.cc index f001540e48..2ae003956f 100644 --- a/source/processes/cuts/src/G4ProductionCutsTable.cc +++ b/source/processes/cuts/src/G4ProductionCutsTable.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProductionCutsTable.cc,v 1.17 2007/05/30 08:22:20 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4RToEConvForAntiNeutron.cc b/source/processes/cuts/src/G4RToEConvForAntiNeutron.cc index 2372cc0632..8bf1c6610f 100644 --- a/source/processes/cuts/src/G4RToEConvForAntiNeutron.cc +++ b/source/processes/cuts/src/G4RToEConvForAntiNeutron.cc @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForAntiNeutron.cc,v 1.3 2006/06/29 19:30:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4RToEConvForAntiProton.cc b/source/processes/cuts/src/G4RToEConvForAntiProton.cc index b1df94385b..0d01e58544 100644 --- a/source/processes/cuts/src/G4RToEConvForAntiProton.cc +++ b/source/processes/cuts/src/G4RToEConvForAntiProton.cc @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForAntiProton.cc,v 1.3 2006/06/29 19:30:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4RToEConvForElectron.cc b/source/processes/cuts/src/G4RToEConvForElectron.cc index 867061f4c0..5a3558ee03 100644 --- a/source/processes/cuts/src/G4RToEConvForElectron.cc +++ b/source/processes/cuts/src/G4RToEConvForElectron.cc @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForElectron.cc,v 1.5 2006/06/29 19:30:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4RToEConvForGamma.cc b/source/processes/cuts/src/G4RToEConvForGamma.cc index 728cb22f0a..1aa16c71ae 100644 --- a/source/processes/cuts/src/G4RToEConvForGamma.cc +++ b/source/processes/cuts/src/G4RToEConvForGamma.cc @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForGamma.cc,v 1.4 2006/06/29 19:30:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4RToEConvForNeutron.cc b/source/processes/cuts/src/G4RToEConvForNeutron.cc index dfa8564b40..78aaa17387 100644 --- a/source/processes/cuts/src/G4RToEConvForNeutron.cc +++ b/source/processes/cuts/src/G4RToEConvForNeutron.cc @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForNeutron.cc,v 1.3 2006/06/29 19:30:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4RToEConvForPositron.cc b/source/processes/cuts/src/G4RToEConvForPositron.cc index e773434cde..ba9d5d18c1 100644 --- a/source/processes/cuts/src/G4RToEConvForPositron.cc +++ b/source/processes/cuts/src/G4RToEConvForPositron.cc @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForPositron.cc,v 1.5 2006/06/29 19:30:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4RToEConvForProton.cc b/source/processes/cuts/src/G4RToEConvForProton.cc index c538056163..c7a3c40779 100644 --- a/source/processes/cuts/src/G4RToEConvForProton.cc +++ b/source/processes/cuts/src/G4RToEConvForProton.cc @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForProton.cc,v 1.3 2006/06/29 19:30:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4VRangeToEnergyConverter.cc b/source/processes/cuts/src/G4VRangeToEnergyConverter.cc index b4ae46a242..d1e8b1af93 100644 --- a/source/processes/cuts/src/G4VRangeToEnergyConverter.cc +++ b/source/processes/cuts/src/G4VRangeToEnergyConverter.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRangeToEnergyConverter.cc,v 1.8 2007/06/06 05:13:34 urban Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/decay/History b/source/processes/decay/History index 3eabcded42..97582ce9eb 100644 --- a/source/processes/decay/History +++ b/source/processes/decay/History @@ -1,4 +1,4 @@ -$Id: History,v 1.23 2007/05/07 10:17:36 kurasige Exp $ +$Id: History,v 1.28 2007/10/30 03:14:18 gum Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,18 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +- Oct. 29, 07 P.Gumplinger (decay-V09-00-02) +- add G4PionDecayMakeSpin class + set the daughter muon spin for 2 body decays of + pi, K and K0_long + +- Oct. 12, 07 H.Kurashige (decay-V09-00-01) +- add forward declaration for G4VExtDecayer in G4DecayWithSpin + +- Oct. 06, 07 H.Kurashige (decay-V09-00-00) +- Add a method of DaughterPolarization in G4Decay + - May 07, 07 H.Kurashige (decay-V08-02-00) - Add protection for "TotalEnergy < Mass" diff --git a/source/processes/decay/include/G4Decay.hh b/source/processes/decay/include/G4Decay.hh index 743274d8d2..875a595e3f 100644 --- a/source/processes/decay/include/G4Decay.hh +++ b/source/processes/decay/include/G4Decay.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Decay.hh,v 1.15 2006/06/29 19:30:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Decay.hh,v 1.18 2007/07/23 23:13:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -47,6 +47,8 @@ // Fixed bug in PostStepGPIL // in case of stopping during AlongStepDoIt 12 Mar. 2004 H.Kurashige // Add GetRemainderLifeTime 10 Aug/2004 H.Kurashige +// Add DaughterPolarization 23 July 2008 H.Kurashige + #ifndef G4Decay_h #define G4Decay_h 1 @@ -111,7 +113,12 @@ class G4Decay : public G4VRestDiscreteProcess // The DecayIt() method returns by pointer a particle-change object, // which has information of daughter particles. - public: + // Set daughter polarization + // NO OPERATION in the base class of G4Decay + virtual void DaughterPolarization(const G4Track& aTrack, + G4DecayProducts* products); + + public: virtual G4double AtRestGetPhysicalInteractionLength( const G4Track& track, G4ForceCondition* condition diff --git a/source/processes/decay/include/G4DecayWithSpin.hh b/source/processes/decay/include/G4DecayWithSpin.hh index 721f7704b5..58e40641e5 100644 --- a/source/processes/decay/include/G4DecayWithSpin.hh +++ b/source/processes/decay/include/G4DecayWithSpin.hh @@ -40,8 +40,6 @@ #include "G4Decay.hh" -class G4VExtDecayer; - class G4DecayWithSpin : public G4Decay { public: diff --git a/source/processes/decay/include/G4PionDecayMakeSpin.hh b/source/processes/decay/include/G4PionDecayMakeSpin.hh new file mode 100644 index 0000000000..7d34501a34 --- /dev/null +++ b/source/processes/decay/include/G4PionDecayMakeSpin.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef G4PionDecayMakeSpin_h +#define G4PionDecayMakeSpin_h 1 + +#include "G4Decay.hh" +#include "G4ParticleTable.hh" + +class G4PionDecayMakeSpin : public G4Decay +{ + public: + + // Constructors + G4PionDecayMakeSpin(const G4String& processName ="Decay"); + + // Destructor + virtual ~G4PionDecayMakeSpin(); + + private: + + // copy constructor + G4PionDecayMakeSpin(const G4PionDecayMakeSpin &right); + + // Assignment Operation (generated) + G4PionDecayMakeSpin & operator=(const G4PionDecayMakeSpin &right); + + protected: + + virtual void DaughterPolarization(const G4Track& aTrack, + G4DecayProducts* products); +}; + +#endif diff --git a/source/processes/decay/include/G4UnknownDecay.hh b/source/processes/decay/include/G4UnknownDecay.hh index bd137edfad..b70d31e9fb 100644 --- a/source/processes/decay/include/G4UnknownDecay.hh +++ b/source/processes/decay/include/G4UnknownDecay.hh @@ -25,7 +25,7 @@ // // // $Id: G4UnknownDecay.hh,v 1.3 2006/06/29 19:30:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/decay/include/G4VExtDecayer.hh b/source/processes/decay/include/G4VExtDecayer.hh index 77ad3087f5..9bf3947b48 100644 --- a/source/processes/decay/include/G4VExtDecayer.hh +++ b/source/processes/decay/include/G4VExtDecayer.hh @@ -25,7 +25,7 @@ // // // $Id: G4VExtDecayer.hh,v 1.4 2006/06/29 19:31:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/decay/src/G4Decay.cc b/source/processes/decay/src/G4Decay.cc index 9b53ad14dd..c69d8322b2 100644 --- a/source/processes/decay/src/G4Decay.cc +++ b/source/processes/decay/src/G4Decay.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Decay.cc,v 1.24 2007/05/07 12:05:45 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Decay.cc,v 1.27 2007/10/06 07:01:09 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -65,7 +65,7 @@ G4Decay::G4Decay(const G4String& processName) { #ifdef G4VERBOSE if (GetVerboseLevel()>1) { - G4cerr << "G4Decay constructor " << " Name:" << processName << G4endl; + G4cout << "G4Decay constructor " << " Name:" << processName << G4endl; } #endif pParticleChange = &fParticleChangeForDecay; @@ -150,9 +150,9 @@ G4double G4Decay::GetMeanFreePath(const G4Track& aTrack,G4double, G4ForceConditi // too slow particle #ifdef G4VERBOSE if (GetVerboseLevel()>1) { - G4cerr << "G4Decay::GetMeanFreePath() !!particle stops!!"; - G4cerr << aParticleDef->GetParticleName() << G4endl; - G4cerr << "KineticEnergy:" << aParticle->GetKineticEnergy()/GeV <<"[GeV]"; + G4cout << "G4Decay::GetMeanFreePath() !!particle stops!!"; + G4cout << aParticleDef->GetParticleName() << G4endl; + G4cout << "KineticEnergy:" << aParticle->GetKineticEnergy()/GeV <<"[GeV]"; } #endif pathlength = DBL_MIN; @@ -200,12 +200,14 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& ) // Error due to NO Decay Table if ( (decaytable == 0) && !isExtDecayer &&!isPreAssigned ){ -#ifdef G4VERBOSE if (GetVerboseLevel()>0) { - G4cerr << "G4Decay::DoIt : decay table not defined for "; - G4cerr << aParticle->GetDefinition()->GetParticleName()<< G4endl; + G4cout << "G4Decay::DoIt : decay table not defined for "; + G4cout << aParticle->GetDefinition()->GetParticleName()<< G4endl; } -#endif + G4Exception( "G4Decay::DecayIt ", + "No Decay Table",JustWarning, + "Decay table is not defined"); + fParticleChangeForDecay.SetNumberOfSecondaries(0); // Kill the parent particle fParticleChangeForDecay.ProposeTrackStatus( fStopAndKill ) ; @@ -233,7 +235,7 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& ) #ifdef G4VERBOSE G4int temp = decaychannel->GetVerboseLevel(); if (GetVerboseLevel()>1) { - G4cerr << "G4Decay::DoIt : selected decay channel addr:" << decaychannel <SetVerboseLevel(GetVerboseLevel()); } #endif @@ -244,8 +246,9 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& ) } #endif #ifdef G4VERBOSE - // for debug - //if (! products->IsChecked() ) products->DumpInfo(); + if (GetVerboseLevel()>2) { + if (! products->IsChecked() ) products->DumpInfo(); + } #endif } } @@ -255,15 +258,13 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& ) G4double ParentMass = aParticle->GetMass(); if (ParentEnergy < ParentMass) { ParentEnergy = ParentMass; -#ifdef G4VERBOSE if (GetVerboseLevel()>0) { - G4cerr << "G4Decay::DoIt : Total Energy is less than its mass" << G4endl; - G4cerr << " Particle: " << aParticle->GetDefinition()->GetParticleName(); - G4cerr << " Energy:" << ParentEnergy/MeV << "[MeV]"; - G4cerr << " Mass:" << ParentMass/MeV << "[MeV]"; - G4cerr << G4endl; + G4cout << "G4Decay::DoIt : Total Energy is less than its mass" << G4endl; + G4cout << " Particle: " << aParticle->GetDefinition()->GetParticleName(); + G4cout << " Energy:" << ParentEnergy/MeV << "[MeV]"; + G4cout << " Mass:" << ParentMass/MeV << "[MeV]"; + G4cout << G4endl; } -#endif } G4ThreeVector ParentDirection(aParticle->GetMomentumDirection()); @@ -281,18 +282,22 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& ) if (!isExtDecayer) products->Boost( ParentEnergy, ParentDirection); } + // set polarization for daughter particles + DaughterPolarization(aTrack, products); + + //add products in fParticleChangeForDecay G4int numberOfSecondaries = products->entries(); fParticleChangeForDecay.SetNumberOfSecondaries(numberOfSecondaries); #ifdef G4VERBOSE if (GetVerboseLevel()>1) { - G4cerr << "G4Decay::DoIt : Decay vertex :"; - G4cerr << " Time: " << finalGlobalTime/ns << "[ns]"; - G4cerr << " X:" << (aTrack.GetPosition()).x() /cm << "[cm]"; - G4cerr << " Y:" << (aTrack.GetPosition()).y() /cm << "[cm]"; - G4cerr << " Z:" << (aTrack.GetPosition()).z() /cm << "[cm]"; - G4cerr << G4endl; - G4cerr << "G4Decay::DoIt : decay products in Lab. Frame" << G4endl; + G4cout << "G4Decay::DoIt : Decay vertex :"; + G4cout << " Time: " << finalGlobalTime/ns << "[ns]"; + G4cout << " X:" << (aTrack.GetPosition()).x() /cm << "[cm]"; + G4cout << " Y:" << (aTrack.GetPosition()).y() /cm << "[cm]"; + G4cout << " Z:" << (aTrack.GetPosition()).z() /cm << "[cm]"; + G4cout << G4endl; + G4cout << "G4Decay::DoIt : decay products in Lab. Frame" << G4endl; products->DumpInfo(); } #endif @@ -325,6 +330,11 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& ) return &fParticleChangeForDecay ; } +void G4Decay::DaughterPolarization(const G4Track& , G4DecayProducts* ) +{ +} + + void G4Decay::StartTracking(G4Track*) { diff --git a/source/processes/decay/src/G4DecayWithSpin.cc b/source/processes/decay/src/G4DecayWithSpin.cc index d398f6c1ec..0cded3cfb5 100644 --- a/source/processes/decay/src/G4DecayWithSpin.cc +++ b/source/processes/decay/src/G4DecayWithSpin.cc @@ -153,20 +153,19 @@ G4ThreeVector G4DecayWithSpin::Spin_Precession( const G4Step& aStep, G4Vector3D newSpin = SpinRotation * Spin; #ifdef G4VERBOSE + if (GetVerboseLevel()>2) { + G4double normspin = std::sqrt(Spin*Spin); + G4double normnewspin = std::sqrt(newSpin*newSpin); + //G4double cosalpha = Spin*newSpin/normspin/normnewspin; + //G4double alpha = std::acos(cosalpha); -// G4double normspin = std::sqrt(Spin*Spin); -// G4double normnewspin = std::sqrt(newSpin*newSpin); -// G4double cosalpha = Spin*newSpin/normspin/normnewspin; -// G4double alpha = std::acos(cosalpha); - -// G4cout<< "AT REST::: PARAMETERS\n" -// << "Initial spin : " << Spin <<"\n" -// << "Delta time : " << deltatime <<"\n" -// << "Rotation angle: " << rotationangle/rad <<"\n" -// << "New spin : " << newSpin <<"\n" -// << "Checked norms : " << normspin <<" " << normnewspin <<" \n" -// << G4endl; - + G4cout << "AT REST::: PARAMETERS " << G4endl; + G4cout << "Initial spin : " << Spin << G4endl; + G4cout << "Delta time : " << deltatime << G4endl; + G4cout << "Rotation angle: " << rotationangle/rad << G4endl; + G4cout << "New spin : " << newSpin << G4endl; + G4cout << "Checked norms : " << normspin <<" " << normnewspin << G4endl; + } #endif return newSpin; diff --git a/source/processes/decay/src/G4PionDecayMakeSpin.cc b/source/processes/decay/src/G4PionDecayMakeSpin.cc new file mode 100644 index 0000000000..c11ff81aa1 --- /dev/null +++ b/source/processes/decay/src/G4PionDecayMakeSpin.cc @@ -0,0 +1,147 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// + +#include "G4PionDecayMakeSpin.hh" + +#include "G4Decay.hh" +#include "G4DecayProducts.hh" + +#include "G4RandomDirection.hh" + +// constructor + +G4PionDecayMakeSpin::G4PionDecayMakeSpin(const G4String& processName) + : G4Decay(processName) { } + +G4PionDecayMakeSpin::~G4PionDecayMakeSpin() { } + +void G4PionDecayMakeSpin::DaughterPolarization(const G4Track& aTrack, + G4DecayProducts* products) +{ + // This routine deals only with particles that can decay into a muon + // pi+, pi-, K+, K- and K0_long + + // get particle + + const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); + const G4ParticleDefinition* aParticleDef = aParticle->GetDefinition(); + + G4ParticleDefinition* aMuonPlus = + G4ParticleTable::GetParticleTable()->FindParticle("mu+"); + G4ParticleDefinition* aMuonMinus = + G4ParticleTable::GetParticleTable()->FindParticle("mu-"); + G4ParticleDefinition* aPionPlus = + G4ParticleTable::GetParticleTable()->FindParticle("pi+"); + G4ParticleDefinition* aPionMinus = + G4ParticleTable::GetParticleTable()->FindParticle("pi-"); + G4ParticleDefinition* aKaonPlus = + G4ParticleTable::GetParticleTable()->FindParticle("kaon+"); + G4ParticleDefinition* aKaonMinus = + G4ParticleTable::GetParticleTable()->FindParticle("kaon-"); + G4ParticleDefinition* aKaon0Long = + G4ParticleTable::GetParticleTable()->FindParticle("kaon0L"); + G4ParticleDefinition* aNeutrinoMu = + G4ParticleTable::GetParticleTable()->FindParticle("nu_mu"); + G4ParticleDefinition* aAntiNeutrinoMu = + G4ParticleTable::GetParticleTable()->FindParticle("anti_nu_mu"); + + if( aParticleDef == aPionPlus || + aParticleDef == aPionMinus || + aParticleDef == aKaonPlus || + aParticleDef == aKaonMinus || + aParticleDef == aKaon0Long ) { + } else { + return; + } + + G4DynamicParticle* aMuon = NULL; + + G4double emu(0), eneutrino(0); + G4ThreeVector p_muon, p_neutrino; + + G4int numberOfSecondaries = products->entries(); + + if (numberOfSecondaries > 0) { + for (G4int index=0; index < numberOfSecondaries; index++) + { + G4DynamicParticle* aSecondary = (*products)[index]; + G4ParticleDefinition* aSecondaryDef = aSecondary->GetDefinition(); + + if (aSecondaryDef == aMuonPlus || + aSecondaryDef == aMuonMinus ) { + // Muon+ or Muon- + aMuon = aSecondary; + emu = aSecondary->GetTotalEnergy(); + p_muon = aSecondary->GetMomentum(); + } else if (aSecondaryDef == aNeutrinoMu || + aSecondaryDef == aAntiNeutrinoMu ) { + // Muon-Neutrino / Muon-Anti-Neutrino + eneutrino = aSecondary->GetTotalEnergy(); + p_neutrino = aSecondary->GetMomentum(); + } + } + } + + // This routine deals only with decays with a + // muon and mu-(anti)neutrinos in the final state + + if (!aMuon) return; + if (eneutrino==0||emu==0) return; + + G4ThreeVector spin(0,0,0); + + const G4DynamicParticle* theParentParticle = products->GetParentParticle(); + + G4double amass = theParentParticle->GetMass(); + G4double emmu = aMuonPlus->GetPDGMass(); + + if (numberOfSecondaries == 2 ) { + + G4double scale = - (eneutrino - ( p_muon * p_neutrino )/(emu+emmu)); + + p_muon = scale * p_muon; + p_neutrino = emmu * p_neutrino; + spin = p_muon + p_neutrino; + + scale = 2./(amass*amass-emmu*emmu); + spin = scale * spin; + + if (aParticle->GetCharge() < 0.0) spin = -spin; + + } else { + + spin = G4RandomDirection(); + + } + + spin = spin.unit(); + + aMuon->SetPolarization(spin.x(),spin.y(),spin.z()); + + return; +} diff --git a/source/processes/decay/src/G4UnknownDecay.cc b/source/processes/decay/src/G4UnknownDecay.cc index b8505c608c..bafd849e0f 100644 --- a/source/processes/decay/src/G4UnknownDecay.cc +++ b/source/processes/decay/src/G4UnknownDecay.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4UnknownDecay.cc,v 1.4 2007/05/07 10:16:08 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4UnknownDecay.cc,v 1.5 2007/10/06 07:01:09 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -48,7 +48,7 @@ G4UnknownDecay::G4UnknownDecay(const G4String& processName) { #ifdef G4VERBOSE if (GetVerboseLevel()>1) { - G4cerr << "G4UnknownDecay constructor " << " Name:" << processName << G4endl; + G4cout << "G4UnknownDecay constructor " << " Name:" << processName << G4endl; } #endif pParticleChange = &fParticleChangeForDecay; @@ -112,11 +112,11 @@ G4VParticleChange* G4UnknownDecay::DecayIt(const G4Track& aTrack, const G4Step& ParentEnergy = ParentMass; #ifdef G4VERBOSE if (GetVerboseLevel()>1) { - G4cerr << "G4UnknownDecay::DoIt : Total Energy is less than its mass" << G4endl; - G4cerr << " Particle: " << aParticle->GetDefinition()->GetParticleName(); - G4cerr << " Energy:" << ParentEnergy/MeV << "[MeV]"; - G4cerr << " Mass:" << ParentMass/MeV << "[MeV]"; - G4cerr << G4endl; + G4cout << "G4UnknownDecay::DoIt : Total Energy is less than its mass" << G4endl; + G4cout << " Particle: " << aParticle->GetDefinition()->GetParticleName(); + G4cout << " Energy:" << ParentEnergy/MeV << "[MeV]"; + G4cout << " Mass:" << ParentMass/MeV << "[MeV]"; + G4cout << G4endl; } #endif } @@ -135,13 +135,13 @@ G4VParticleChange* G4UnknownDecay::DecayIt(const G4Track& aTrack, const G4Step& fParticleChangeForDecay.SetNumberOfSecondaries(numberOfSecondaries); #ifdef G4VERBOSE if (GetVerboseLevel()>1) { - G4cerr << "G4UnknownDecay::DoIt : Decay vertex :"; - G4cerr << " Time: " << finalGlobalTime/ns << "[ns]"; - G4cerr << " X:" << (aTrack.GetPosition()).x() /cm << "[cm]"; - G4cerr << " Y:" << (aTrack.GetPosition()).y() /cm << "[cm]"; - G4cerr << " Z:" << (aTrack.GetPosition()).z() /cm << "[cm]"; - G4cerr << G4endl; - G4cerr << "G4UnknownDecay::DoIt : decay products in Lab. Frame" << G4endl; + G4cout << "G4UnknownDecay::DoIt : Decay vertex :"; + G4cout << " Time: " << finalGlobalTime/ns << "[ns]"; + G4cout << " X:" << (aTrack.GetPosition()).x() /cm << "[cm]"; + G4cout << " Y:" << (aTrack.GetPosition()).y() /cm << "[cm]"; + G4cout << " Z:" << (aTrack.GetPosition()).z() /cm << "[cm]"; + G4cout << G4endl; + G4cout << "G4UnknownDecay::DoIt : decay products in Lab. Frame" << G4endl; products->DumpInfo(); } #endif diff --git a/source/processes/electromagnetic/highenergy/History b/source/processes/electromagnetic/highenergy/History index 918d15293f..631f245528 100644 --- a/source/processes/electromagnetic/highenergy/History +++ b/source/processes/electromagnetic/highenergy/History @@ -1,4 +1,4 @@ -$Id: History,v 1.19 2007/05/31 11:13:31 vnivanch Exp $ +$Id: History,v 1.22 2007/11/13 18:36:29 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,14 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +13 November 07: V.Ivanchenko (emhighenergy-V09-00-01) +- G4mplIonisationModel - introduced theoretical asymtotic low-energy + parameterization of dEdx + +14 August 07: V.Ivanchenko (emhighenergy-V09-00-00) +- G4mplIonisationModel - fixed low-energy parameterization of monopole + energy loss; verified mean energy loss (M.Vladymirov) + 31 May 07: V.Ivanchenko (emhighenergy-V08-03-02) - G4mplIonisation - fixed destruction of monopole ionisation model diff --git a/source/processes/electromagnetic/highenergy/include/G4AnnihiToMuPair.hh b/source/processes/electromagnetic/highenergy/include/G4AnnihiToMuPair.hh index f1f58fc54e..b043002291 100644 --- a/source/processes/electromagnetic/highenergy/include/G4AnnihiToMuPair.hh +++ b/source/processes/electromagnetic/highenergy/include/G4AnnihiToMuPair.hh @@ -25,7 +25,7 @@ // // // $Id: G4AnnihiToMuPair.hh,v 1.2 2006/06/29 19:32:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------ G4AnnihiToMuPair physics process ------ // by H.Burkhardt, S. Kelner and R. Kokoulin, November 2002 diff --git a/source/processes/electromagnetic/highenergy/include/G4BetheBlochNoDeltaModel.hh b/source/processes/electromagnetic/highenergy/include/G4BetheBlochNoDeltaModel.hh index 4c65d0cd7f..5ffd124c49 100644 --- a/source/processes/electromagnetic/highenergy/include/G4BetheBlochNoDeltaModel.hh +++ b/source/processes/electromagnetic/highenergy/include/G4BetheBlochNoDeltaModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BetheBlochNoDeltaModel.hh,v 1.7 2006/06/29 19:32:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/include/G4BraggNoDeltaModel.hh b/source/processes/electromagnetic/highenergy/include/G4BraggNoDeltaModel.hh index b6cc8b0bb3..30ced3480d 100644 --- a/source/processes/electromagnetic/highenergy/include/G4BraggNoDeltaModel.hh +++ b/source/processes/electromagnetic/highenergy/include/G4BraggNoDeltaModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BraggNoDeltaModel.hh,v 1.6 2006/06/29 19:32:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/include/G4GammaConversionToMuons.hh b/source/processes/electromagnetic/highenergy/include/G4GammaConversionToMuons.hh index 86399a95b9..ce03752543 100644 --- a/source/processes/electromagnetic/highenergy/include/G4GammaConversionToMuons.hh +++ b/source/processes/electromagnetic/highenergy/include/G4GammaConversionToMuons.hh @@ -25,7 +25,7 @@ // // // $Id: G4GammaConversionToMuons.hh,v 1.2 2006/06/29 19:32:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------ G4GammaConversionToMuons physics process ------ // by H.Burkhardt, S. Kelner and R. Kokoulin, April 2002 diff --git a/source/processes/electromagnetic/highenergy/include/G4Vee2hadrons.hh b/source/processes/electromagnetic/highenergy/include/G4Vee2hadrons.hh index 510dd5a2b7..c27d171e49 100644 --- a/source/processes/electromagnetic/highenergy/include/G4Vee2hadrons.hh +++ b/source/processes/electromagnetic/highenergy/include/G4Vee2hadrons.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4Vee2hadrons.hh,v 1.3 2007/05/22 17:37:30 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/include/G4eeCrossSections.hh b/source/processes/electromagnetic/highenergy/include/G4eeCrossSections.hh index cc99a8e60e..8cb853507b 100644 --- a/source/processes/electromagnetic/highenergy/include/G4eeCrossSections.hh +++ b/source/processes/electromagnetic/highenergy/include/G4eeCrossSections.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eeCrossSections.hh,v 1.2 2006/06/29 19:32:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/include/G4eeToHadrons.hh b/source/processes/electromagnetic/highenergy/include/G4eeToHadrons.hh index dc895d41d4..b07ff9c1e1 100644 --- a/source/processes/electromagnetic/highenergy/include/G4eeToHadrons.hh +++ b/source/processes/electromagnetic/highenergy/include/G4eeToHadrons.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eeToHadrons.hh,v 1.8 2007/05/23 08:50:41 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/include/G4eeToHadronsModel.hh b/source/processes/electromagnetic/highenergy/include/G4eeToHadronsModel.hh index 3e4d05227c..c386ebc0fd 100644 --- a/source/processes/electromagnetic/highenergy/include/G4eeToHadronsModel.hh +++ b/source/processes/electromagnetic/highenergy/include/G4eeToHadronsModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eeToHadronsModel.hh,v 1.6 2007/05/22 17:37:30 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/include/G4eeToHadronsMultiModel.hh b/source/processes/electromagnetic/highenergy/include/G4eeToHadronsMultiModel.hh index ba88c1e29a..74f07e1901 100644 --- a/source/processes/electromagnetic/highenergy/include/G4eeToHadronsMultiModel.hh +++ b/source/processes/electromagnetic/highenergy/include/G4eeToHadronsMultiModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eeToHadronsMultiModel.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/include/G4eeToTwoPiModel.hh b/source/processes/electromagnetic/highenergy/include/G4eeToTwoPiModel.hh index c0eab0dedf..541e593d0d 100644 --- a/source/processes/electromagnetic/highenergy/include/G4eeToTwoPiModel.hh +++ b/source/processes/electromagnetic/highenergy/include/G4eeToTwoPiModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eeToTwoPiModel.hh,v 1.3 2007/05/22 17:37:30 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/include/G4hhIonisation.hh b/source/processes/electromagnetic/highenergy/include/G4hhIonisation.hh index 4e8362077a..f6948d20a3 100644 --- a/source/processes/electromagnetic/highenergy/include/G4hhIonisation.hh +++ b/source/processes/electromagnetic/highenergy/include/G4hhIonisation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4hhIonisation.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/include/G4mplIonisation.hh b/source/processes/electromagnetic/highenergy/include/G4mplIonisation.hh index 2ecb4e42ee..7b40156d0e 100644 --- a/source/processes/electromagnetic/highenergy/include/G4mplIonisation.hh +++ b/source/processes/electromagnetic/highenergy/include/G4mplIonisation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4mplIonisation.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/include/G4mplIonisationModel.hh b/source/processes/electromagnetic/highenergy/include/G4mplIonisationModel.hh index 8814b317f0..2fba4b003c 100644 --- a/source/processes/electromagnetic/highenergy/include/G4mplIonisationModel.hh +++ b/source/processes/electromagnetic/highenergy/include/G4mplIonisationModel.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4mplIonisationModel.hh,v 1.4 2007/05/22 17:37:30 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4mplIonisationModel.hh,v 1.6 2007/11/13 18:36:29 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -38,7 +38,7 @@ // Creation date: 06.09.2005 // // Modifications: -// +// 12.08.2007 ComputeDEDXAhlen function added (M. Vladymyrov) // // Class Description: // @@ -92,6 +92,7 @@ public: private: void SetParticle(const G4ParticleDefinition* p); + G4double ComputeDEDXAhlen(const G4Material* material, G4double bg2); // hide assignment operator G4mplIonisationModel & operator=(const G4mplIonisationModel &right); @@ -102,13 +103,17 @@ private: G4double mass; G4double magCharge; - G4double chargeSquare; G4double twoln10; - G4double beta2low; + G4double betalow; + G4double betalim; G4double beta2lim; G4double bg2lim; G4double factlow; + G4double chargeSquare; + G4double dedxlim; G4int nmpl; + G4double pi_hbarc2_over_mc2; + G4double approxConst; }; #endif diff --git a/source/processes/electromagnetic/highenergy/src/G4AnnihiToMuPair.cc b/source/processes/electromagnetic/highenergy/src/G4AnnihiToMuPair.cc index 00c6cd1ee3..e7237aabb1 100644 --- a/source/processes/electromagnetic/highenergy/src/G4AnnihiToMuPair.cc +++ b/source/processes/electromagnetic/highenergy/src/G4AnnihiToMuPair.cc @@ -25,7 +25,7 @@ // // // $Id: G4AnnihiToMuPair.cc,v 1.3 2006/06/29 19:32:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------ G4AnnihiToMuPair physics process ------ // by H.Burkhardt, S. Kelner and R. Kokoulin, November 2002 diff --git a/source/processes/electromagnetic/highenergy/src/G4BetheBlochNoDeltaModel.cc b/source/processes/electromagnetic/highenergy/src/G4BetheBlochNoDeltaModel.cc index 751b7503e7..bffe34cd32 100644 --- a/source/processes/electromagnetic/highenergy/src/G4BetheBlochNoDeltaModel.cc +++ b/source/processes/electromagnetic/highenergy/src/G4BetheBlochNoDeltaModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BetheBlochNoDeltaModel.cc,v 1.3 2006/06/29 19:32:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/src/G4BraggNoDeltaModel.cc b/source/processes/electromagnetic/highenergy/src/G4BraggNoDeltaModel.cc index 7fb1661774..5b56e7a495 100644 --- a/source/processes/electromagnetic/highenergy/src/G4BraggNoDeltaModel.cc +++ b/source/processes/electromagnetic/highenergy/src/G4BraggNoDeltaModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BraggNoDeltaModel.cc,v 1.3 2006/06/29 19:32:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/src/G4GammaConversionToMuons.cc b/source/processes/electromagnetic/highenergy/src/G4GammaConversionToMuons.cc index 54b1ed1988..3b5db1fa3c 100644 --- a/source/processes/electromagnetic/highenergy/src/G4GammaConversionToMuons.cc +++ b/source/processes/electromagnetic/highenergy/src/G4GammaConversionToMuons.cc @@ -25,7 +25,7 @@ // // // $Id: G4GammaConversionToMuons.cc,v 1.4 2006/06/29 19:32:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------ G4GammaConversionToMuons physics process ------ // by H.Burkhardt, S. Kelner and R. Kokoulin, April 2002 diff --git a/source/processes/electromagnetic/highenergy/src/G4eeCrossSections.cc b/source/processes/electromagnetic/highenergy/src/G4eeCrossSections.cc index 5b5d7cbee2..dc6d7b0b21 100644 --- a/source/processes/electromagnetic/highenergy/src/G4eeCrossSections.cc +++ b/source/processes/electromagnetic/highenergy/src/G4eeCrossSections.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eeCrossSections.cc,v 1.6 2006/06/29 19:32:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/src/G4eeToHadrons.cc b/source/processes/electromagnetic/highenergy/src/G4eeToHadrons.cc index ef00b7bb3e..b4fd124133 100644 --- a/source/processes/electromagnetic/highenergy/src/G4eeToHadrons.cc +++ b/source/processes/electromagnetic/highenergy/src/G4eeToHadrons.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eeToHadrons.cc,v 1.7 2006/06/29 19:32:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/src/G4eeToHadronsModel.cc b/source/processes/electromagnetic/highenergy/src/G4eeToHadronsModel.cc index 5299db9118..7a4b517266 100644 --- a/source/processes/electromagnetic/highenergy/src/G4eeToHadronsModel.cc +++ b/source/processes/electromagnetic/highenergy/src/G4eeToHadronsModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eeToHadronsModel.cc,v 1.8 2007/05/22 17:37:30 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/src/G4eeToHadronsMultiModel.cc b/source/processes/electromagnetic/highenergy/src/G4eeToHadronsMultiModel.cc index e5e04643d7..8268f39de6 100644 --- a/source/processes/electromagnetic/highenergy/src/G4eeToHadronsMultiModel.cc +++ b/source/processes/electromagnetic/highenergy/src/G4eeToHadronsMultiModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eeToHadronsMultiModel.cc,v 1.4 2007/05/23 08:50:41 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/src/G4eeToTwoPiModel.cc b/source/processes/electromagnetic/highenergy/src/G4eeToTwoPiModel.cc index 6f93173e12..9cfeedd28f 100644 --- a/source/processes/electromagnetic/highenergy/src/G4eeToTwoPiModel.cc +++ b/source/processes/electromagnetic/highenergy/src/G4eeToTwoPiModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eeToTwoPiModel.cc,v 1.5 2007/05/22 17:37:30 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/src/G4hhIonisation.cc b/source/processes/electromagnetic/highenergy/src/G4hhIonisation.cc index 62d4a58ce1..639acfd0c0 100644 --- a/source/processes/electromagnetic/highenergy/src/G4hhIonisation.cc +++ b/source/processes/electromagnetic/highenergy/src/G4hhIonisation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4hhIonisation.cc,v 1.6 2007/05/22 17:37:30 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/src/G4mplIonisation.cc b/source/processes/electromagnetic/highenergy/src/G4mplIonisation.cc index 8d3ee04598..d1133bdb26 100644 --- a/source/processes/electromagnetic/highenergy/src/G4mplIonisation.cc +++ b/source/processes/electromagnetic/highenergy/src/G4mplIonisation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4mplIonisation.cc,v 1.5 2007/05/31 11:13:31 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/highenergy/src/G4mplIonisationModel.cc b/source/processes/electromagnetic/highenergy/src/G4mplIonisationModel.cc index 052328f285..716cd79eb9 100644 --- a/source/processes/electromagnetic/highenergy/src/G4mplIonisationModel.cc +++ b/source/processes/electromagnetic/highenergy/src/G4mplIonisationModel.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4mplIonisationModel.cc,v 1.3 2006/12/13 15:44:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4mplIonisationModel.cc,v 1.5 2007/11/13 18:36:29 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -38,10 +38,17 @@ // Creation date: 06.09.2005 // // Modifications: +// 12.08.2007 Changing low energy approximation and extrapolation. +// Small bug fixing and refactoring (M. Vladymyrov) +// 13.11.2007 Use low-energy asymptotic from [3] (V.Ivanchenko) // // // ------------------------------------------------------------------- -// +// References +// [1] Steven P. Ahlen: Energy loss of relativistic heavy ionizing particles, +// S.P. Ahlen, Rev. Mod. Phys 52(1980), p121 +// [2] K.A. Milton arXiv:hep-ex/0602040 +// [3] S.P. Ahlen and K. Kinoshita, Phys. Rev. D26 (1982) 2347 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -56,21 +63,21 @@ using namespace std; -G4mplIonisationModel::G4mplIonisationModel(G4double mCharge, - const G4String& nam) +G4mplIonisationModel::G4mplIonisationModel(G4double mCharge, const G4String& nam) : G4VEmModel(nam),G4VEmFluctuationModel(nam), magCharge(mCharge), - twoln10(2.0*log(10.0)), - beta2low(0.0001), - beta2lim(0.01), + twoln10(log(100.0)), + betalow(0.01), + betalim(0.1), + beta2lim(betalim*betalim), bg2lim(beta2lim*(1.0 + beta2lim)) { - nmpl = G4int(abs(magCharge)/68.0); + nmpl = G4int(abs(magCharge) * 2 * fine_structure_const + 0.5); if(nmpl > 6) nmpl = 6; else if(nmpl < 1) nmpl = 1; - G4double x = 45.0*GeV*G4double(nmpl)/cm; - factlow = x*x; - chargeSquare = magCharge*magCharge; + pi_hbarc2_over_mc2 = pi * hbarc * hbarc / electron_mass_c2; + chargeSquare = magCharge * magCharge; + dedxlim = 45.*nmpl*nmpl*GeV*cm2/g; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -99,60 +106,74 @@ G4double G4mplIonisationModel::ComputeDEDXPerVolume(const G4Material* material, G4double kineticEnergy, G4double) { - G4double tau = kineticEnergy/mass; + G4double tau = kineticEnergy / mass; G4double gam = tau + 1.0; - G4double bg2 = tau * (tau+2.0); - G4double beta2 = bg2/(gam*gam); + G4double bg2 = tau * (tau + 2.0); + G4double beta2 = bg2 / (gam * gam); + G4double beta = sqrt(beta2); - G4double dedx0 = factlow*abs(beta2); + // low-energy asymptotic formula + G4double dedx = dedxlim*beta*material->GetDensity(); - if(beta2 > beta2low) { + // above asymptotic + if(beta > betalow) { - G4double b2 = beta2; - if(beta2 < beta2lim) { - beta2= beta2lim; - bg2 = bg2lim; + // high energy + if(beta >= betalim) { + dedx = ComputeDEDXAhlen(material, bg2); + + } else { + + G4double dedx1 = dedxlim*betalow*material->GetDensity(); + G4double dedx2 = ComputeDEDXAhlen(material, bg2lim); + + // extrapolation between two formula + G4double kapa2 = beta - betalow; + G4double kapa1 = betalim - beta; + dedx = (kapa1*dedx1 + kapa2*dedx2)/(kapa1 + kapa2); } + } + return dedx; +} - G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy(); - G4double cden = material->GetIonisation()->GetCdensity(); - G4double mden = material->GetIonisation()->GetMdensity(); - G4double aden = material->GetIonisation()->GetAdensity(); - G4double x0den = material->GetIonisation()->GetX0density(); - G4double x1den = material->GetIonisation()->GetX1density(); +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - G4double eDensity = material->GetElectronDensity(); +G4double G4mplIonisationModel::ComputeDEDXAhlen(const G4Material* material, G4double bg2) +{ + G4double eDensity = material->GetElectronDensity(); + G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy(); + G4double cden = material->GetIonisation()->GetCdensity(); + G4double mden = material->GetIonisation()->GetMdensity(); + G4double aden = material->GetIonisation()->GetAdensity(); + G4double x0den = material->GetIonisation()->GetX0density(); + G4double x1den = material->GetIonisation()->GetX1density(); - G4double dedx = 2.0*log(2.0*electron_mass_c2*bg2/eexc) - 1.0; + // Ahlen's formula for nonconductors, [1]p157, f(5.7) + G4double dedx = log(2.0 * electron_mass_c2 * bg2 / eexc) - 0.5; - G4double k = 0.406; - if(nmpl > 1) k = 0.346; - const G4double B[7] = { 0.0, 0.248, 0.672, 1.022, 1.243, 1.464, 1.685}; + // Kazama et al. cross-section correction + G4double k = 0.406; + if(nmpl > 1) k = 0.346; - dedx += k - B[nmpl]; + // Bloch correction + const G4double B[7] = { 0.0, 0.248, 0.672, 1.022, 1.243, 1.464, 1.685}; - // density correction - G4double x = log(bg2)/twoln10; - if ( x >= x0den ) { - dedx -= twoln10*x - cden ; - if ( x < x1den ) dedx -= aden*pow((x1den-x),mden) ; - } + dedx += 0.5 * k - B[nmpl]; - // now compute the total ionization loss - - if (dedx < 0.0) dedx = 0.0 ; - - dedx *= twopi_mc2_rcl2*chargeSquare*eDensity; - - // extrapolate between two formula - if(beta2 < beta2lim) { - x = log(dedx0) + log(dedx/dedx0)*log(b2/beta2low)/log(beta2lim/beta2low); - dedx = exp(x); - } - dedx0 = dedx; + // density effect correction + G4double deltam; + G4double x = log(bg2) / twoln10; + if ( x >= x0den ) { + deltam = twoln10 * x - cden; + if ( x < x1den ) deltam += aden * pow((x1den-x), mden); + dedx -= 0.5 * deltam; } - return dedx0; + // now compute the total ionization loss + dedx *= pi_hbarc2_over_mc2 * eDensity * nmpl * nmpl; + + if (dedx < 0.0) dedx = 0; + return dedx; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -180,9 +201,5 @@ G4double G4mplIonisationModel::SampleFluctuations( loss = G4RandGauss::shoot(meanLoss,siga); } while (0.0 > loss || loss > twomeanLoss); } - //G4cout << "G4mplIonisationModel::SampleFluctuations: loss= " << loss - //<< " siga= " << siga << G4endl; return loss; } - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/lowenergy/History b/source/processes/electromagnetic/lowenergy/History index 5cc506bd3c..dae2df3346 100644 --- a/source/processes/electromagnetic/lowenergy/History +++ b/source/processes/electromagnetic/lowenergy/History @@ -1,4 +1,4 @@ -$Id: History,v 1.258 2007/06/07 13:57:26 pia Exp $ +$Id: History,v 1.284 2007/11/26 17:27:09 pia Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,125 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +26.11.2007 MGP, tag emlowen-V09-00-28 + Cleaned up std:: in G4FinalStateIonisationBorn/Rudd + +14.11.2007 MGP, tag emlowen-V09-00-27 + Correction to Problem Report 986 in G4AtomicDeexcitation + +??.11.2007 Undocumented tag emlowen-V09-00-26 + +14.11.2007 MGP, tag emlowen-V09-00-25 + Workaround in G4DNAProcess to avoid meanFrePath=0 when + cross section is DBL_MAX + +13.11.2007 MGP, tag emlowen-V09-00-24 + Fixed calculation of local energy deposit in G4DNAProcess + in the case when the primary particle is killed + Minor code improvements in G4FinalStateIonisationBorn.cc. + +12.11.2007 G.Cosmo, tag emlowen-V09-00-23 + Fixed trivial compilation error on WIN32-VC system in file + G4FinalStateIonisationBorn.cc. + +09.11.2007 MGP, tag emlowen-V09-00-22 + Added cross section and final state policy classes to configure + a process to kill particles below threshold + +09.11.2007 MGP, tag emlowen-V09-00-21 + Initialized data members missing initialization + +09.11.2007 MGP, tag emlowen-V09-00-20 + Removed verbose printouts in Geant4-DNA processes + +09.11.2007 MGP, tag emlowen-V09-00-19 + Fixed compilation problems on Windows + +09.11.2007 MGP, tag emlowen-V09-00-18 + Fixed compilation problems on Solaris + +08.11.2007 MGP, tag emlowen-V09-00-17 + Added Rudd ionisation + +08.11.2007 MGP, tag emlowen-V09-00-16 + Added Born ionisation final state + +08.11.2007 MGP, tag emlowen-V09-00-15 + Added Miller-Green excitation + +08.11.2007 MGP, tag emlowen-V09-00-14 + Modified data file name in G4EMLOW5.1 + +08.11.2007 MGP, tag emlowen-V09-00-13 + Added charge increase/decrease Geant4-DNA cross sections + and final states (code by S. Incerti + code review by MGP) + +08.11.2007 MGP, tag emlowen-V09-00-12 + Removed obsolete G4DNA* files from CVS + +22.10.2007 MGP, tag emlowen-V09-00-11 + Added G4CrossSectionIonisationBorn + Excludes prototype G4DNA* classes (still available in CVS head) + Pertinent G4DNA* classes included are: + G4DNAProcess (.hh .icc), + G4DNACrossSectionDataSet (.hh .cc), + G4DNAGenericIonsManager (.hh .cc) + +15.10.2007 MGP, tag emlowen-V09-00-10 + Added electron excitation (Emfietzoglou model), + proton Born excitation, electron ionisation (Born) cross section; modified G4DNACrossSectionDataSet to + remove inheritance from concrete base class introduced + by a developer against the baseline design + Obsolete G4DNA* classes not compliant with the design + as in the TNS paper are still in this tag for convenience; + they will be removed from the repository when the + migration to the design as in the paper is completed + Goes with G4EMLOW5.0 (where a new dna/directory has been + added containing Geant4-DNA data tables for interpolation) + +13.10.2007 MGP, tag emlowen-V09-00-09 + Added Brenner-Zaider elastic scattering final state + +12.10.2007 MGP, tag emlowen-V09-00-08 + Fully working Geant4-DNA electron elastic scattering, + screened Rutherford cross section and final state + +12.10.2007 MGP, tag emlowen-V09-00-07 + Improved G4DNAProcess, G4FinalStateProduct + +12.10.2007 MGP, tag emlowen-V09-00-06 + First core of Geant4-DNA physics compliant with design + as in TNS paper: G4DNAProcess, G4FinalStateProduct, + G4eCrossSectionScreenedRutherford, G4DummyFinal State + (MG implementation) + +12.10.2007 MGP, tag emlowen-V09-00-05 + Extended G4DNAFinalStateProduct to deal with primary + particle modified in final state + Modified G4DNAProcess.icc accordingly + +12.10.2007 MGP, tag emlowen-V09-00-04 + Refactoring Geant4-DNA domain to be compliant with TNS paper + Added G4DNAProcess and G4DNAFinalStateProduct + +11.10.2007 MGP, tag emlowen-V09-00-03 + Identical to emlowen-V09-00-02, which apparently already + existed on some files (it is unclear where it originared from) + +11.10.2007 MGP, tag emlowen-V09-00-02 + Re-update to atomic relaxation fixes as in emlowen-V09-00-00 + emlowen-V09-00-00 was rejected because of a mismatch between + code and G4EMLOW data library + This tag goes with G4EMLOW4.4 + +11.10.2007 MGP, tag emlowen-V09-00-01 + Fix to bug 965 of G4PenelopeRayleigh by L. Pandola + +23.07.2007 MGP, tag emlowen-V09-00-00 + Deleted tag emlowen-V09-00-01 made by A.M. (no V-09-00-00 existed) + Fixes by A.M. to handle Z=100 in the Livermore library + and to correct Problem Report 933 (the latter fixes are not + documented) 04.06.2007 MGP, tag emlowen-V08-03-03 Tag on top of emlowen-V08-03-00a diff --git a/source/processes/electromagnetic/lowenergy/include/G4AtomicDeexcitation.hh b/source/processes/electromagnetic/lowenergy/include/G4AtomicDeexcitation.hh index 8f1e21d764..0c63f89a57 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4AtomicDeexcitation.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4AtomicDeexcitation.hh @@ -25,7 +25,7 @@ // // // $Id: G4AtomicTransitionManager.hh,v 1.2 ???? -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) // Alfonso Mantero (Alfonso.Mantero@ge.infn.it) diff --git a/source/processes/electromagnetic/lowenergy/include/G4AtomicShell.hh b/source/processes/electromagnetic/lowenergy/include/G4AtomicShell.hh index 438c0b55ae..26a5a01393 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4AtomicShell.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4AtomicShell.hh @@ -25,7 +25,7 @@ // // // $Id: G4AtomicShell.hh,v 1.2 ???? -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) // Alfonso Mantero (Alfonso.Mantero@ge.infn.it) diff --git a/source/processes/electromagnetic/lowenergy/include/G4AtomicTransitionManager.hh b/source/processes/electromagnetic/lowenergy/include/G4AtomicTransitionManager.hh index c38d28889c..43e69836dd 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4AtomicTransitionManager.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4AtomicTransitionManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4AtomicTransitionManager.hh,v 1.2 ???? -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) // Alfonso Mantero (Alfonso.Mantero@ge.infn.it) @@ -110,7 +110,7 @@ public: protected: - G4AtomicTransitionManager(G4int minZ = 1, G4int maxZ = 99, + G4AtomicTransitionManager(G4int minZ = 1, G4int maxZ = 100, G4int limitInfTable = 6, G4int limitSupTable=100 ); ~G4AtomicTransitionManager(); diff --git a/source/processes/electromagnetic/lowenergy/include/G4AugerData.hh b/source/processes/electromagnetic/lowenergy/include/G4AugerData.hh index 7fc4fdf9d0..77b3e03324 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4AugerData.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4AugerData.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4AugerData.hh -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungParameters.hh b/source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungParameters.hh index 019e308b70..1d209aa9b8 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungParameters.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungParameters.hh @@ -25,7 +25,7 @@ // // // $Id: G4BremsstrahlungParameters.hh,v 1.10 2006/06/29 19:33:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // V. Ivanchenko (Vladimir.Ivantchenko@cern.ch) diff --git a/source/processes/electromagnetic/lowenergy/include/G4CompositeEMDataSet.hh b/source/processes/electromagnetic/lowenergy/include/G4CompositeEMDataSet.hh index 82cbee45fa..98c6a200fa 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4CompositeEMDataSet.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4CompositeEMDataSet.hh @@ -25,7 +25,7 @@ // // // $Id: G4CompositeEMDataSet.hh,v 1.8 2006/06/29 19:33:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeDecrease.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeDecrease.hh new file mode 100755 index 0000000000..ff10636350 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeDecrease.hh @@ -0,0 +1,85 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionChargeDecrease.hh,v 1.1 2007/11/08 18:24:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONCHARGEDECREASE_HH +#define G4CROSSSECTIONCHARGEDECREASE_HH 1 + +#include "globals.hh" +#include +#include "G4CrossSectionChargeDecreasePartial.hh" + +class G4Track; + +class G4CrossSectionChargeDecrease +{ +public: + + G4CrossSectionChargeDecrease(); + + virtual ~G4CrossSectionChargeDecrease(); + + G4double CrossSection(const G4Track&); + + // Copy constructor and assignment operator to be added here + +private: + + G4String name; + G4double lowEnergyLimitDefault; + G4double highEnergyLimitDefault; + + std::map > lowEnergyLimit; + std::map > highEnergyLimit; + + G4CrossSectionChargeDecreasePartial partialCrossSection; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeDecreasePartial.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeDecreasePartial.hh new file mode 100755 index 0000000000..57de6743ee --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeDecreasePartial.hh @@ -0,0 +1,91 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionChargeDecreasePartial.hh,v 1.1 2007/11/08 18:24:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// 08 Nov 2007 MGP Got code from S.I.; lowercase data member +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONCHARGEDECREASEPARTIAL_HH +#define G4CROSSSECTIONCHARGEDECREASEPARTIAL_HH 1 + +#include "globals.hh" + +class G4ParticleDefinition; + +class G4CrossSectionChargeDecreasePartial +{ +public: + + G4CrossSectionChargeDecreasePartial(); + + virtual ~G4CrossSectionChargeDecreasePartial(); + + G4double CrossSection(G4double energy, G4int level, const G4ParticleDefinition* particle); + + G4double Sum(G4double energy, const G4ParticleDefinition* particle); + + G4int RandomSelect(G4double energy, const G4ParticleDefinition* particle); + + // Copy constructor and assignment operator to be added here + +private: + + G4int numberOfPartialCrossSections[3]; // 3 is the particle type index + + G4double f0[2][3]; + G4double a0[2][3]; + G4double a1[2][3]; + G4double b0[2][3]; + G4double b1[2][3]; + G4double c0[2][3]; + G4double d0[2][3]; + G4double x0[2][3]; + G4double x1[2][3]; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeIncrease.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeIncrease.hh new file mode 100755 index 0000000000..197989162f --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeIncrease.hh @@ -0,0 +1,85 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionChargeIncrease.hh,v 1.1 2007/11/08 18:24:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONCHARGEIncrease_HH +#define G4CROSSSECTIONCHARGEIncrease_HH 1 + +#include "globals.hh" +#include +#include "G4CrossSectionChargeIncreasePartial.hh" + +class G4Track; + +class G4CrossSectionChargeIncrease +{ +public: + + G4CrossSectionChargeIncrease(); + + virtual ~G4CrossSectionChargeIncrease(); + + G4double CrossSection(const G4Track&); + + // Copy constructor and assignment operator to be added here + +private: + + G4String name; + G4double lowEnergyLimitDefault; + G4double highEnergyLimitDefault; + + std::map > lowEnergyLimit; + std::map > highEnergyLimit; + + G4CrossSectionChargeIncreasePartial partialCrossSection; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeIncreasePartial.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeIncreasePartial.hh new file mode 100755 index 0000000000..8f806a0bd3 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeIncreasePartial.hh @@ -0,0 +1,90 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionChargeIncreasePartial.hh,v 1.1 2007/11/08 18:24:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONCHARGEIncreasePARTIAL_HH +#define G4CROSSSECTIONCHARGEIncreasePARTIAL_HH 1 + +#include "globals.hh" + +class G4ParticleDefinition; + +class G4CrossSectionChargeIncreasePartial +{ +public: + + G4CrossSectionChargeIncreasePartial(); + + virtual ~G4CrossSectionChargeIncreasePartial(); + + G4double CrossSection(G4double energy, G4int level, const G4ParticleDefinition* particle); + + G4double Sum(G4double energy, const G4ParticleDefinition* particle); + + G4int RandomSelect(G4double energy, const G4ParticleDefinition* particle); + + // Copy constructor and assignment operator to be added here + +private: + + G4int numberOfPartialCrossSections[2]; // 2 is the particle type index + + G4double f0[2][2]; + G4double a0[2][2]; + G4double a1[2][2]; + G4double b0[2][2]; + G4double b1[2][2]; + G4double c0[2][2]; + G4double d0[2][2]; + G4double x0[2][2]; + G4double x1[2][2]; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionElasticScreenedRutherford.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionElasticScreenedRutherford.hh new file mode 100644 index 0000000000..1a30558a1b --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionElasticScreenedRutherford.hh @@ -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: G4CrossSectionElasticScreenedRutherford.hh,v 1.1 2007/10/12 23:07:10 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONELASTICSCREENEDRUTHERFORD_HH +#define G4CROSSSECTIONELASTICSCREENEDRUTHERFORD_HH 1 + +#include "globals.hh" + +class G4Track; + +class G4CrossSectionElasticScreenedRutherford +{ +public: + + G4CrossSectionElasticScreenedRutherford(); + + virtual ~G4CrossSectionElasticScreenedRutherford(); + + G4double CrossSection(const G4Track&); + + // Copy constructor and assignment operator to be added here + +private: + + G4double RutherfordCrossSection(G4double energy, G4double z); + + G4double ScreeningFactor(G4double energy, G4double z); + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationBorn.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationBorn.hh new file mode 100644 index 0000000000..1ec5860be0 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationBorn.hh @@ -0,0 +1,83 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionExcitationBorn.hh,v 1.1 2007/10/15 08:33:25 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONEXCITATIONBORN_HH +#define G4CROSSSECTIONEXCITATIONBORN_HH 1 + +#include "globals.hh" +#include +#include "G4WaterExcitationStructure.hh" +#include "G4DNACrossSectionDataSet.hh" + +class G4Track; + +class G4CrossSectionExcitationBorn +{ +public: + + G4CrossSectionExcitationBorn(); + + virtual ~G4CrossSectionExcitationBorn(); + + G4double CrossSection(const G4Track& track); + + // Copy constructor and assignment operator to be added here + +private: + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + + G4DNACrossSectionDataSet* table; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationBornPartial.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationBornPartial.hh new file mode 100644 index 0000000000..f21b485628 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationBornPartial.hh @@ -0,0 +1,77 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionExcitationBornPartial.hh,v 1.1 2007/10/15 08:34:12 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONEXCITATIONBORNPARTIAL_HH +#define G4CROSSSECTIONEXCITATIONBORNPARTIAL_HH 1 + +#include "globals.hh" +#include +#include "G4DNACrossSectionDataSet.hh" + +class G4CrossSectionExcitationBornPartial +{ +public: + + G4CrossSectionExcitationBornPartial(); + + virtual ~G4CrossSectionExcitationBornPartial(); + + // Select an excitation level according to the partial cross sections + G4int RandomSelect(G4double energy); + + // Copy constructor and assignment operator to be added here + +private: + + G4DNACrossSectionDataSet* table; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationEmfietzoglou.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationEmfietzoglou.hh new file mode 100644 index 0000000000..66d988d9c3 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationEmfietzoglou.hh @@ -0,0 +1,81 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionExcitationEmfietzoglou.hh,v 1.2 2007/10/15 08:31:49 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONEXCITATIONEMFIETZOGLOU_HH +#define G4CROSSSECTIONEXCITATIONEMFIETZOGLOU_HH 1 + +#include "globals.hh" +#include "G4CrossSectionExcitationEmfietzoglouPartial.hh" + +class G4Track; + +class G4CrossSectionExcitationEmfietzoglou +{ +public: + + G4CrossSectionExcitationEmfietzoglou(); + + virtual ~G4CrossSectionExcitationEmfietzoglou(); + + G4double CrossSection(const G4Track&); + + // Copy constructor and assignment operator to be added here + +private: + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + + G4CrossSectionExcitationEmfietzoglouPartial partialCrossSection; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationEmfietzoglouPartial.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationEmfietzoglouPartial.hh new file mode 100644 index 0000000000..17f1561825 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationEmfietzoglouPartial.hh @@ -0,0 +1,85 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionExcitationEmfietzoglouPartial.hh,v 1.1 2007/10/15 08:33:25 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONEXCITATIONEMFIETZOGLOUPARTIAL_HH +#define G4CROSSSECTIONEXCITATIONEMFIETZOGLOUPARTIAL_HH 1 + +#include "globals.hh" +#include +#include "G4WaterExcitationStructure.hh" + +class G4Track; + +class G4CrossSectionExcitationEmfietzoglouPartial +{ +public: + + G4CrossSectionExcitationEmfietzoglouPartial(); + + virtual ~G4CrossSectionExcitationEmfietzoglouPartial(); + + G4double CrossSection(G4double energy,G4int level); + + G4double Sum(G4double energy); + + G4int RandomSelect(G4double energy); + + // Copy constructor and assignment operator to be added here + +private: + + // Number of excitation levels of the water molecule + G4int nLevels; + + G4WaterExcitationStructure waterExcitation; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationMillerGreen.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationMillerGreen.hh new file mode 100644 index 0000000000..1cafb920c5 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationMillerGreen.hh @@ -0,0 +1,85 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionExcitationMillerGreen.hh,v 1.2 2007/11/08 19:56:02 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONEXCITATIONMILLERGREEN_HH +#define G4CROSSSECTIONEXCITATIONMILLERGREEN_HH 1 + +#include "globals.hh" +#include +#include "G4CrossSectionExcitationMillerGreenPartial.hh" + +class G4Track; + +class G4CrossSectionExcitationMillerGreen +{ +public: + + G4CrossSectionExcitationMillerGreen(); + + virtual ~G4CrossSectionExcitationMillerGreen(); + + G4double CrossSection(const G4Track&); + + // Copy constructor and assignment operator to be added here + +private: + + G4String name; + G4double lowEnergyLimitDefault; + G4double highEnergyLimitDefault; + + std::map > lowEnergyLimit; + std::map > highEnergyLimit; + + G4CrossSectionExcitationMillerGreenPartial partialCrossSection; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationMillerGreenPartial.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationMillerGreenPartial.hh new file mode 100755 index 0000000000..005a44170b --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationMillerGreenPartial.hh @@ -0,0 +1,110 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionExcitationMillerGreenPartial.hh,v 1.1 2007/11/08 19:56:02 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONEXCITATIONMILLERGREENPARTIAL_HH +#define G4CROSSSECTIONEXCITATIONMILLERGREENPARTIAL_HH 1 + +#include "globals.hh" +#include +#include "G4WaterExcitationStructure.hh" +#include "G4ParticleDefinition.hh" + +class G4Track; + +class G4CrossSectionExcitationMillerGreenPartial +{ +public: + + G4CrossSectionExcitationMillerGreenPartial(); + + virtual ~G4CrossSectionExcitationMillerGreenPartial(); + + G4double CrossSection(G4double energy,G4int level, const G4ParticleDefinition* particle); + + G4double Sum(G4double energy, const G4ParticleDefinition* particle); + + G4int RandomSelect(G4double energy, const G4ParticleDefinition* particle); + + // Copy constructor and assignment operator to be added here + +private: + + // Number of excitation levels of the water molecule + G4int nLevels; + + G4WaterExcitationStructure waterExcitation; + + G4double S_1s(G4double t, + G4double energyTransferred, + G4double slaterEffectiveCharge, + G4double shellNumber); + + G4double S_2s(G4double t, + G4double energyTransferred, + G4double slaterEffectiveCharge, + G4double shellNumber); + + G4double S_2p(G4double t, + G4double energyTransferred, + G4double slaterEffectiveCharge, + G4double shellNumber); + + G4double R(G4double t, + G4double energyTransferred, + G4double slaterEffectiveCharge, + G4double shellNumber); + + G4double kineticEnergyCorrection[4]; // 4 is the particle type index + G4double slaterEffectiveCharge[3][4]; + G4double sCoefficient[3][4]; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionHandler.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionHandler.hh index 2f48db1d21..a35b029e4a 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionHandler.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4CrossSectionHandler.hh,v 1.9 2006/06/29 19:33:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBorn.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBorn.hh new file mode 100644 index 0000000000..b95d15c7a3 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBorn.hh @@ -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: G4CrossSectionIonisationBorn.hh,v 1.1 2007/10/22 09:12:58 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for ionisation cross section in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONIONISATIONBORN_HH +#define G4CROSSSECTIONIONISATIONBORN_HH 1 + +#include "globals.hh" +#include +#include "G4DNACrossSectionDataSet.hh" + +class G4Track; + +class G4CrossSectionIonisationBorn +{ +public: + + G4CrossSectionIonisationBorn(); + + ~G4CrossSectionIonisationBorn(); + + G4double CrossSection(const G4Track& track); + + // Copy constructor and assignment operator to be added here + +private: + + G4String name; + G4double lowEnergyLimitDefault; + G4double highEnergyLimitDefault; + + std::map > lowEnergyLimit; + std::map > highEnergyLimit; + + typedef std::map > MapFile; + MapFile tableFile; + + typedef std::map > MapData; + MapData tableData; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornElectron.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornElectron.hh new file mode 100644 index 0000000000..0b898ea7f6 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornElectron.hh @@ -0,0 +1,83 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionIonisationBornElectron.hh,v 1.1 2007/10/15 08:33:25 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONIONISATIONBORNELECTRON_HH +#define G4CROSSSECTIONIONISATIONBORNELECTRON_HH 1 + +#include "globals.hh" +#include +#include "G4WaterExcitationStructure.hh" +#include "G4DNACrossSectionDataSet.hh" + +class G4Track; + +class G4CrossSectionIonisationBornElectron +{ +public: + + G4CrossSectionIonisationBornElectron(); + + virtual ~G4CrossSectionIonisationBornElectron(); + + G4double CrossSection(const G4Track& track); + + // Copy constructor and assignment operator to be added here + +private: + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + + G4DNACrossSectionDataSet* table; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornPartial.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornPartial.hh new file mode 100644 index 0000000000..812c7aeed5 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornPartial.hh @@ -0,0 +1,101 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionIonisationBornPartial.hh,v 1.1 2007/10/22 09:12:58 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for ionisation cross section in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONIONISATIONBORNPARTIAL_HH +#define G4CROSSSECTIONIONISATIONBORNPARTIAL_HH 1 + +#include "globals.hh" +#include +#include +#include "G4DNACrossSectionDataSet.hh" + +class G4Track; + +class G4CrossSectionIonisationBornPartial +{ +public: + + G4CrossSectionIonisationBornPartial(); + + ~G4CrossSectionIonisationBornPartial(); + + // Partial cross section + // G4double CrossSection(G4double energy, const G4String& particle); + G4double CrossSection(const G4Track& track); + + // Sum of partial cross sections at a given energy value for a particle type + G4double Sum(G4double energy, const G4String& particle); + + G4int RandomSelect(G4double energy,const G4String& particle ); + + // Copy constructor and assignment operator to be added here + +private: + + G4String name; + G4double lowEnergyLimitDefault; + G4double highEnergyLimitDefault; + + std::map > lowEnergyLimit; + std::map > highEnergyLimit; + + typedef std::map > MapFile; + MapFile tableFile; + + typedef std::map > MapData; + MapData tableData; + + + + // G4DNACrossSectionDataSet* table; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornPartialElectron.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornPartialElectron.hh new file mode 100644 index 0000000000..be23c1b6d6 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornPartialElectron.hh @@ -0,0 +1,77 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionIonisationBornPartialElectron.hh,v 1.1 2007/10/15 08:33:25 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONIONISATIONBORNPARTIALELECTRON_HH +#define G4CROSSSECTIONIONISATIONBORNPARTIALELECTRON_HH 1 + +#include "globals.hh" +#include +#include "G4DNACrossSectionDataSet.hh" + +class G4CrossSectionIonisationBornPartialElectron +{ +public: + + G4CrossSectionIonisationBornPartialElectron(); + + virtual ~G4CrossSectionIonisationBornPartialElectron(); + + // Select an excitation level according to the partial cross sections + G4int RandomSelect(G4double energy); + + // Copy constructor and assignment operator to be added here + +private: + + G4DNACrossSectionDataSet* table; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationRudd.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationRudd.hh new file mode 100755 index 0000000000..c4fd116a87 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationRudd.hh @@ -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: G4CrossSectionIonisationRudd.hh,v 1.1 2007/11/08 21:35:31 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for ionisation cross section in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONIONISATIONRUDD_HH +#define G4CROSSSECTIONIONISATIONRUDD_HH 1 + +#include "globals.hh" +#include +#include "G4DNACrossSectionDataSet.hh" + +class G4Track; + +class G4CrossSectionIonisationRudd +{ +public: + + G4CrossSectionIonisationRudd(); + + ~G4CrossSectionIonisationRudd(); + + G4double CrossSection(const G4Track& track); + + // Copy constructor and assignment operator to be added here + +private: + + G4String name; + G4double lowEnergyLimitDefault; + G4double highEnergyLimitDefault; + + std::map > lowEnergyLimit; + std::map > highEnergyLimit; + + typedef std::map > MapFile; + MapFile tableFile; + + typedef std::map > MapData; + MapData tableData; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationRuddPartial.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationRuddPartial.hh new file mode 100755 index 0000000000..3a4aa78941 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationRuddPartial.hh @@ -0,0 +1,101 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionIonisationRuddPartial.hh,v 1.1 2007/11/08 21:35:31 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for ionisation cross section in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONIONISATIONRuddPARTIAL_HH +#define G4CROSSSECTIONIONISATIONRuddPARTIAL_HH 1 + +#include "globals.hh" +#include +#include +#include "G4DNACrossSectionDataSet.hh" + +class G4Track; + +class G4CrossSectionIonisationRuddPartial +{ +public: + + G4CrossSectionIonisationRuddPartial(); + + ~G4CrossSectionIonisationRuddPartial(); + + // Partial cross section + // G4double CrossSection(G4double energy, const G4String& particle); + G4double CrossSection(const G4Track& track); + + // Sum of partial cross sections at a given energy value for a particle type + G4double Sum(G4double energy, const G4String& particle); + + G4int RandomSelect(G4double energy,const G4String& particle ); + + // Copy constructor and assignment operator to be added here + +private: + + G4String name; + G4double lowEnergyLimitDefault; + G4double highEnergyLimitDefault; + + std::map > lowEnergyLimit; + std::map > highEnergyLimit; + + typedef std::map > MapFile; + MapFile tableFile; + + typedef std::map > MapData; + MapData tableData; + + + + // G4DNACrossSectionDataSet* table; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionKill.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionKill.hh new file mode 100644 index 0000000000..15ca35757d --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionKill.hh @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionKill.hh,v 1.1 2007/11/09 20:26:47 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4CROSSSECTIONKILL_HH +#define G4CROSSSECTIONKILL_HH 1 + +#include "globals.hh" + +class G4Track; + +class G4CrossSectionKill +{ +public: + + G4CrossSectionKill(); + + virtual ~G4CrossSectionKill(); + + G4double CrossSection(const G4Track&); + + // Copy constructor and assignment operator to be added here + +private: + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + + + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeDecrease.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeDecrease.hh deleted file mode 100644 index 579c08b6b4..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeDecrease.hh +++ /dev/null @@ -1,74 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusChargeDecrease.hh,v 1.2 2006/06/29 19:33:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAALPHAPLUSCHARGEDECREASE_HH - #define G4DNAALPHAPLUSCHARGEDECREASE_HH 1 - - #include "G4DNAChargeDecreaseInWater.hh" - #include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh" - #include "G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy - { - protected: - G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy - { - protected: - G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - - G4int NumberOfPartialCrossSections(void) const; - - G4double f0[1]; - G4double a0[1]; - G4double a1[1]; - G4double b0[1]; - G4double b1[1]; - G4double c0[1]; - G4double d0[1]; - G4double x0[1]; - G4double x1[1]; - }; - - class G4DNAAlphaPlusChargeDecrease : public G4DNAChargeDecreaseInWater, G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy > - { - public: - G4DNAAlphaPlusChargeDecrease(const G4String & name = "G4DNAAlphaPlusChargeDecrease") : G4DNAChargeDecreaseInWater, G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy > (name) {} - virtual ~G4DNAAlphaPlusChargeDecrease() {} - }; -#endif /* G4DNAALPHAPLUSCHARGEDECREASE_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.hh deleted file mode 100644 index 199a1c1357..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.hh +++ /dev/null @@ -1,67 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusChargeDecreaseFinalStates, 2005/09/14 15:46:26 francis -// GEANT4 tag $Name: emlowen-V07-01-07 - -#ifndef G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH -#define G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy : public EnergyLimitsPolicy - { - protected: - G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy() {} - ~G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy() {} - - - G4bool KillIncomingParticle(G4double energy) const; - void BuildFinalStatesData(void) const; - G4int NumberOfFinalStates(G4int finalStateIndex) const; - G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex); - G4double WaterBindingEnergyConstant(G4int finalStateIndex) const; - G4double OutgoingParticleBindingEnergyConstant(G4int finalStateIndex) const; - - // Hides default constructor and assignment operator as private - G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy(const G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy & copy); - G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy & operator=(const G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy & right); - }; - - #include "G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.icc" -#endif /* G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.icc deleted file mode 100644 index a99b0edce6..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.icc +++ /dev/null @@ -1,84 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH - #include "Randomize.hh" - #include "G4DNAGenericIonsManager.hh" - - template - G4bool G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy :: KillIncomingParticle(G4double energy) const - { - if (energy - void G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy :: BuildFinalStatesData(void) const - { - } - - template - G4int G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy :: NumberOfFinalStates(G4int /* finalStateIndex */) const - - { - return 1; - } - - template - G4ParticleDefinition * G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy :: OutgoingParticleDefinition(G4int /* finalStateIndex */) - { - G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance()); - return instance->GetIon("helium"); - } - - template - G4double G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy :: WaterBindingEnergyConstant(G4int /* finalStateIndex */) const - { - // Binding energy for W+ -> W++ + e- 10.79 eV - // Binding energy for W -> W+ + e- 10.79 eV - // - // Ionization energy of first water shell - // Rad. Phys. Chem. 59 p.267 by Dingf. et al. - - return 10.79*eV; - } - - template - G4double G4DNAAlphaPlusChargeDecreaseFinalStatesPolicy :: OutgoingParticleBindingEnergyConstant(G4int /* finalStateIndex */) const - { - // Binding energy for He+ -> He++ + e- 54.509 eV - // Binding energy for He -> He+ + e- 24.587 eV - - return 24.587*eV; - } -#endif /* G4DNAALPHAPLUSCHARGEDECREASEFINALSTATESPOLICY_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeIncrease.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeIncrease.hh deleted file mode 100644 index e28d22ed67..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeIncrease.hh +++ /dev/null @@ -1,74 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusChargeIncrease.hh,v 1.2 2006/06/29 19:33:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAALPHAPLUSCHARGEINCREASE_HH - #define G4DNAALPHAPLUSCHARGEINCREASE_HH 1 - - #include "G4DNAChargeIncreaseInWater.hh" - #include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh" - #include "G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy - { - protected: - G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy - { - protected: - G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - - G4int NumberOfPartialCrossSections(void) const; - - G4double f0[1]; - G4double a0[1]; - G4double a1[1]; - G4double b0[1]; - G4double b1[1]; - G4double c0[1]; - G4double d0[1]; - G4double x0[1]; - G4double x1[1]; - }; - - class G4DNAAlphaPlusChargeIncrease : public G4DNAChargeIncreaseInWater, G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy > - { - public: - G4DNAAlphaPlusChargeIncrease(const G4String & name = "G4DNAAlphaPlusChargeIncrease") : G4DNAChargeIncreaseInWater, G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy > (name) {} - virtual ~G4DNAAlphaPlusChargeIncrease() {} - }; -#endif /* G4DNAALPHAPLUSCHARGEINCREASE_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.hh deleted file mode 100644 index 460b9b0743..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.hh +++ /dev/null @@ -1,66 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusChargeIncreaseFinalStates, 2005/09/14 15:46:26 francis -// GEANT4 tag $Name: emlowen-V07-01-07 - -#ifndef G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH -#define G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy : public EnergyLimitsPolicy - { - protected: - G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy() {} - ~G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy() {} - - - G4bool KillIncomingParticle(G4double energy) const; - void BuildFinalStatesData(void) const; - G4int NumberOfFinalStates(G4int finalStateIndex) const; - G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex); - G4double IncomingParticleBindingEnergyConstant(G4int finalStateIndex) const; - - // Hides default constructor and assignment operator as private - G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy(const G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy & copy); - G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy & operator=(const G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy & right); - }; - - #include "G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.icc" -#endif /* G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusExcitation.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusExcitation.hh deleted file mode 100644 index e73adb6ae1..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusExcitation.hh +++ /dev/null @@ -1,65 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusExcitation.hh,v 1.2 2006/06/29 19:33:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAALPHAPLUSEXCITATION_HH - #define G4DNAALPHAPLUSEXCITATION_HH 1 - - #include "G4DNAExcitationInWater.hh" - #include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAAlphaPlusExcitationEnergyLimitsPolicy - { - protected: - G4DNAAlphaPlusExcitationEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAAlphaPlusExcitationIncomingParticlePolicy - { - protected: - G4DNAAlphaPlusExcitationIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - - G4double slaterEffectiveCharge[3]; - G4double sCoefficient[3]; - const G4double kineticEnergyCorrection; - }; - - class G4DNAAlphaPlusExcitation : public G4DNAExcitationInWater, G4DNAStopAndKillBelowEnergyLimitPolicy > - { - public: - G4DNAAlphaPlusExcitation(const G4String & name = "G4DNAAlphaPlusExcitation") : G4DNAExcitationInWater, G4DNAStopAndKillBelowEnergyLimitPolicy > (name) {} - virtual ~G4DNAAlphaPlusExcitation() {} - }; -#endif /* G4DNAALPHAPLUSEXCITATION_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusPlusChargeDecrease.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusPlusChargeDecrease.hh deleted file mode 100644 index 3aab12d91e..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusPlusChargeDecrease.hh +++ /dev/null @@ -1,74 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusPlusChargeDecrease.hh,v 1.2 2006/06/29 19:33:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAALPHAPLUSPLUSCHARGEDECREASE_HH - #define G4DNAALPHAPLUSPLUSCHARGEDECREASE_HH 1 - - #include "G4DNAChargeDecreaseInWater.hh" - #include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh" - #include "G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy - { - protected: - G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy - { - protected: - G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - - G4int NumberOfPartialCrossSections(void) const; - - G4double f0[2]; - G4double a0[2]; - G4double a1[2]; - G4double b0[2]; - G4double b1[2]; - G4double c0[2]; - G4double d0[2]; - G4double x0[2]; - G4double x1[2]; - }; - - class G4DNAAlphaPlusPlusChargeDecrease : public G4DNAChargeDecreaseInWater, G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy > - { - public: - G4DNAAlphaPlusPlusChargeDecrease(const G4String & name = "G4DNAAlphaPlusPlusChargeDecrease") : G4DNAChargeDecreaseInWater, G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy > (name) {} - virtual ~G4DNAAlphaPlusPlusChargeDecrease() {} - }; -#endif /* G4DNAALPHAPLUSPLUSCHARGEDECREASE_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.hh deleted file mode 100644 index 575f61f53b..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.hh +++ /dev/null @@ -1,67 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusPlusChargeDecreaseFinalStates, 2005/09/14 15:46:26 francis -// GEANT4 tag $Name: emlowen-V07-01-07 - -#ifndef G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH -#define G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy : public EnergyLimitsPolicy - { - protected: - G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy() {} - ~G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy() {} - - - G4bool KillIncomingParticle(G4double energy) const; - void BuildFinalStatesData(void) const; - G4int NumberOfFinalStates(G4int finalStateIndex) const; - G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex); - G4double WaterBindingEnergyConstant(G4int finalStateIndex) const; - G4double OutgoingParticleBindingEnergyConstant(G4int finalStateIndex) const; - - // Hides default constructor and assignment operator as private - G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy(const G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy & copy); - G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy & operator=(const G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy & right); - }; - - #include "G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.icc" -#endif /* G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.icc deleted file mode 100644 index ec403b8a64..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.icc +++ /dev/null @@ -1,97 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH - #include "Randomize.hh" - #include "G4DNAGenericIonsManager.hh" - - template - G4bool G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy :: KillIncomingParticle(G4double energy) const - { - if (energy - void G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy :: BuildFinalStatesData(void) const - { - } - - template - G4int G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy :: NumberOfFinalStates(G4int finalStateIndex) const - - { - if (finalStateIndex==0) - return 1; - - return 2; - } - - template - G4ParticleDefinition* G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy :: OutgoingParticleDefinition(G4int finalStateIndex) - { - G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance()); - - if (finalStateIndex==0) - return instance->GetIon("alpha+"); - - return instance->GetIon("helium"); - } - - template - G4double G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy :: WaterBindingEnergyConstant(G4int finalStateIndex) const - { - // Binding energy for W+ -> W++ + e- 10.79 eV - // Binding energy for W -> W+ + e- 10.79 eV - // - // Ionization energy of first water shell - // Rad. Phys. Chem. 59 p.267 by Dingf. et al. - - if (finalStateIndex==0) - return 10.79*eV; - - return 10.79*2*eV; - } - - template - G4double G4DNAAlphaPlusPlusChargeDecreaseFinalStatesPolicy :: OutgoingParticleBindingEnergyConstant(G4int finalStateIndex) const - { - // Binding energy for He+ -> He++ + e- 54.509 eV - // Binding energy for He -> He+ + e- 24.587 eV - - if (finalStateIndex==0) - return 54.509*eV; - - return (54.509 + 24.587)*eV; - } -#endif /* G4DNAALPHAPLUSPLUSCHARGEDECREASEFINALSTATESPOLICY_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusPlusExcitation.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusPlusExcitation.hh deleted file mode 100644 index ab2e6a49ac..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusPlusExcitation.hh +++ /dev/null @@ -1,65 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusPlusExcitation.hh,v 1.2 2006/06/29 19:33:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAALPHAPLUSPLUSEXCITATION_HH - #define G4DNAALPHAPLUSPLUSEXCITATION_HH 1 - - #include "G4DNAExcitationInWater.hh" - #include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy - { - protected: - G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy - { - protected: - G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - - G4double slaterEffectiveCharge[3]; - G4double sCoefficient[3]; - const G4double kineticEnergyCorrection; - }; - - class G4DNAAlphaPlusPlusExcitation : public G4DNAExcitationInWater, G4DNAStopAndKillBelowEnergyLimitPolicy > - { - public: - G4DNAAlphaPlusPlusExcitation(const G4String & name = "G4DNAAlphaPlusPlusExcitation") : G4DNAExcitationInWater, G4DNAStopAndKillBelowEnergyLimitPolicy > (name) {} - virtual ~G4DNAAlphaPlusPlusExcitation() {} - }; -#endif /* G4DNAALPHAPLUSPLUSEXCITATION_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNABornExcitationFinalStatesPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNABornExcitationFinalStatesPolicy.hh deleted file mode 100644 index d15448fec7..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNABornExcitationFinalStatesPolicy.hh +++ /dev/null @@ -1,65 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNABornExcitationFinalStatesPolicy, 2005/09/19 13:51:45 Ziad FRANCIS -// GEANT4 tag $Name: emlowen-V07-01- - -#ifndef G4DNABornExcitationFinalStatesPolicy_HH -#define G4DNABornExcitationFinalStatesPolicy_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNABornExcitationFinalStatesPolicy : public EnergyLimitsPolicy - { - protected: - G4DNABornExcitationFinalStatesPolicy() {} - ~G4DNABornExcitationFinalStatesPolicy() {} - - - G4bool KillIncomingParticle(G4double energy) const; - void BuildFinalStatesData(void) const; - G4double EnergyConstant(G4int excitationLevelIndex) const; - - - // Hides default constructor and assignment operator as private - G4DNABornExcitationFinalStatesPolicy(const G4DNABornExcitationFinalStatesPolicy & copy); - G4DNABornExcitationFinalStatesPolicy & operator=(const G4DNABornExcitationFinalStatesPolicy & right); - }; - - #include "G4DNABornExcitationFinalStatesPolicy.icc" -#endif /* G4DNABornExcitationFinalStatesPolicy_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAChargeDecreaseInWater.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAChargeDecreaseInWater.hh deleted file mode 100644 index e708238818..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAChargeDecreaseInWater.hh +++ /dev/null @@ -1,66 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAChargeDecreaseInWater.hh,v 1.4 2006/06/29 19:33:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifndef G4DNACHARGEDECREASEINWATER_HH -#define G4DNACHARGEDECREASEINWATER_HH 1 - -#include "G4VDNAProcessInWater.hh" - -// TotalCrossSectionPolicy must provide: -// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void) -// - [protected] G4double TotalCrossSection(G4double k, G4int z) -// - [protected] void BuildTotalCrossSection(void) -// - [protected] G4int RandomizePartialCrossSection(G4double k, G4int z) - -// FinalStatesPolicy must provide: -// - [protected] G4bool KillIncomingParticle(G4double k) -// - [protected] void BuildFinalStatesData(void) -// - [protected] G4int NumberOfFinalStates(G4int finalStateIndex) -// - [protected] G4double OverallBindingEnergyConstant(G4int finalStateIndex) - -template -class G4DNAChargeDecreaseInWater : public G4VDNAProcessInWater -{ -public: - G4DNAChargeDecreaseInWater(const G4String& name) : G4VDNAProcessInWater(name) {} - - virtual ~G4DNAChargeDecreaseInWater() {} - - virtual G4VParticleChange* PostStepDoIt(const G4Track & aTrack, const G4Step & aStep); - -private: - // Hides default constructor and assignment operator as private - G4DNAChargeDecreaseInWater(const G4DNAChargeDecreaseInWater & copy); - G4DNAChargeDecreaseInWater& operator=(const G4DNAChargeDecreaseInWater & right); -}; - -#include "G4DNAChargeDecreaseInWater.icc" -#endif /* G4DNACHARGEDECREASEINWATER_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAChargeDecreaseInWater.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAChargeDecreaseInWater.icc deleted file mode 100644 index 14c41821a0..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAChargeDecreaseInWater.icc +++ /dev/null @@ -1,85 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAChargeDecreaseInWater.icc,v 1.4 2006/06/29 19:33:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNACHARGEDECREASEINWATER_HH - template - G4VParticleChange * G4DNAChargeDecreaseInWater :: PostStepDoIt(const G4Track & aTrack, const G4Step & aStep) - { - this->aParticleChange.Initialize(aTrack); - this->aParticleChange.ProposeTrackStatus(fStopAndKill); - - G4double inK(aTrack.GetDynamicParticle()->GetKineticEnergy()); - - const G4int z(10); // H2O number of electrons - G4int finalStateIndex(TotalCrossSectionPolicy::RandomizePartialCrossSection(inK, z)); - - G4int n(FinalStatesPolicy::NumberOfFinalStates(finalStateIndex)); - G4double waterBindingEnergy(FinalStatesPolicy::WaterBindingEnergyConstant(finalStateIndex)); - G4double outgoingParticleBindingEnergy(FinalStatesPolicy::OutgoingParticleBindingEnergyConstant(finalStateIndex)); - - G4double outK(inK - n*(inK*electron_mass_c2/proton_mass_c2) - waterBindingEnergy + outgoingParticleBindingEnergy); - - if (outK<0) - { - G4String message; - message="G4DNAChargeDecreaseInWater<>::PostStepDoIt - Final kinetic energy is below 0! Process "; - message+=this->GetProcessName(); - - G4Exception(message); - } - - this->aParticleChange.ProposeLocalEnergyDeposit(waterBindingEnergy); - this->aParticleChange.SetNumberOfSecondaries(1); - this->aParticleChange.AddSecondary(new G4DynamicParticle(FinalStatesPolicy::OutgoingParticleDefinition(finalStateIndex), aTrack.GetDynamicParticle()->GetMomentumDirection(), outK)); - - return G4VDNAProcessInWater::PostStepDoIt(aTrack, aStep); -/* aParticleChange.Initialize(aTrack); - G4double k=aTrack.GetDynamicParticle()->GetKineticEnergy(); - - G4int finalStateIndex(FinalStatesPolicy::NumberOfFinalStates()); - G4int randomShell; - G4double electronBindingEnergy=0.; - for(G4int index=0; indexGetMomentumDirection(), - k-finalStateIndex*(k*electron_mass_c2/proton_mass_c2)-electronBindingEnergy+overallBindingEnergy); - aParticleChange.ProposeTrackStatus(fStopAndKill); - aParticleChange.AddSecondary(newParticle); - - return G4VDNAProcessInWater::PostStepDoIt(aTrack, aStep); */ - } -#endif /* G4DNACHARGEDECREASEINWATER_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAChargeIncreaseInWater.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAChargeIncreaseInWater.hh deleted file mode 100644 index 197a0c9388..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAChargeIncreaseInWater.hh +++ /dev/null @@ -1,65 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAChargeIncreaseInWater.hh,v 1.3 2006/06/29 19:33:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifndef G4DNACHARGEINCREASEINWATER_HH - #define G4DNACHARGEINCREASEINWATER_HH 1 - - #include "G4VDNAProcessInWater.hh" - - // TotalCrossSectionPolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void) - // - [protected] G4double TotalCrossSection(G4double k, G4int z) - // - [protected] void BuildTotalCrossSection(void) - // - [protected] G4int RandomizePartialCrossSection(G4double k, G4int z) - - // FinalStatesPolicy must provide: - // - [protected] G4bool KillIncomingParticle(G4double k) - // - [protected] void BuildFinalStatesData(void) - // - [protected] G4int NumberOfFinalStates(G4int finalStateIndex) - // - [protected] G4double OverallBindingEnergyConstant(G4int finalStateIndex) - - template - class G4DNAChargeIncreaseInWater : public G4VDNAProcessInWater - { - public: - G4DNAChargeIncreaseInWater(const G4String & name) : G4VDNAProcessInWater(name) {} - virtual ~G4DNAChargeIncreaseInWater() {} - - virtual G4VParticleChange * PostStepDoIt(const G4Track & aTrack, const G4Step & aStep); - - private: - // Hides default constructor and assignment operator as private - G4DNAChargeIncreaseInWater(const G4DNAChargeIncreaseInWater & copy); - G4DNAChargeIncreaseInWater & operator=(const G4DNAChargeIncreaseInWater & right); - }; - - #include "G4DNAChargeIncreaseInWater.icc" -#endif /* G4DNACHARGEINCREASEINWATER_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAChargeIncreaseInWater.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAChargeIncreaseInWater.icc deleted file mode 100644 index 3338ec203e..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAChargeIncreaseInWater.icc +++ /dev/null @@ -1,71 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAChargeIncreaseInWater.icc,v 1.4 2006/06/29 19:33:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNACHARGEINCREASEINWATER_HH - #include "G4Electron.hh" - - template - G4VParticleChange* G4DNAChargeIncreaseInWater::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) - { - this->aParticleChange.Initialize(aTrack); - this->aParticleChange.ProposeLocalEnergyDeposit(0.); - this->aParticleChange.ProposeTrackStatus(fStopAndKill); - - G4double inK(aTrack.GetDynamicParticle()->GetKineticEnergy()); - - const G4int z(10); // H2O number of electrons - G4int finalStateIndex(TotalCrossSectionPolicy::RandomizePartialCrossSection(inK, z)); - - G4int n(FinalStatesPolicy::NumberOfFinalStates(finalStateIndex)); - G4double outK(inK-FinalStatesPolicy::IncomingParticleBindingEnergyConstant(finalStateIndex)); - G4double electronK(inK*electron_mass_c2/proton_mass_c2); - - if (outK<0) - { - G4String message; - message="G4DNAChargeIncreaseInWater<>::PostStepDoIt - Final kinetic energy is below 0! Process "; - message+=this->GetProcessName(); - - G4Exception(message); - } - - this->aParticleChange.SetNumberOfSecondaries(n+1); - this->aParticleChange.AddSecondary(new G4DynamicParticle(FinalStatesPolicy::OutgoingParticleDefinition(finalStateIndex), aTrack.GetDynamicParticle()->GetMomentumDirection(), outK)); - - while (n>0) - { - n--; - - this->aParticleChange.AddSecondary(new G4DynamicParticle(FinalStatesPolicy::OutgoingParticleDefinition(finalStateIndex), aTrack.GetDynamicParticle()->GetMomentumDirection(), electronK)); - } - - return G4VDNAProcessInWater::PostStepDoIt(aTrack, aStep); - } -#endif /* G4DNACHARGEINCREASEINWATER_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNACrossSectionDataSet.hh b/source/processes/electromagnetic/lowenergy/include/G4DNACrossSectionDataSet.hh index 1be99cd384..07c164bab6 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4DNACrossSectionDataSet.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4DNACrossSectionDataSet.hh @@ -24,14 +24,15 @@ // ******************************************************************** // // -// $Id: G4DNACrossSectionDataSet.hh,v 1.2 2006/06/29 19:33:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4DNACrossSectionDataSet.hh,v 1.4 2007/10/15 08:31:49 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Riccardo Capra // // History: // ----------- // 30 Jun 2005 RC Created +// 14 Oct 2007 MGP Removed inheritance from concrete class G4ShellEMDataSet // // ------------------------------------------------------------------- @@ -48,16 +49,64 @@ #include "G4ShellEMDataSet.hh" - class G4DNACrossSectionDataSet : public G4ShellEMDataSet + class G4DNACrossSectionDataSet : public G4VEMDataSet { public: - G4DNACrossSectionDataSet(G4VDataSetAlgorithm* argAlgorithm, G4double argUnitEnergies=MeV, G4double argUnitData=barn); - virtual ~G4DNACrossSectionDataSet(); + G4DNACrossSectionDataSet(G4VDataSetAlgorithm* argAlgorithm, + G4double argUnitEnergies=MeV, + G4double argUnitData=barn); - virtual G4bool LoadData(const G4String & argFileName); - virtual G4bool SaveData(const G4String & argFileName) const; + virtual ~G4DNACrossSectionDataSet(); + + virtual G4double FindValue(G4double argEnergy, G4int argComponentId=0) const; + + virtual void PrintData(void) const; + + virtual const G4VEMDataSet* GetComponent(G4int argComponentId) const + { return components[argComponentId]; } + + virtual void AddComponent(G4VEMDataSet * argDataSet) + { components.push_back(argDataSet); } + virtual size_t NumberOfComponents(void) const + { return components.size(); } + + virtual const G4DataVector& GetEnergies(G4int argComponentId) const + { return GetComponent(argComponentId)->GetEnergies(0); } + + virtual const G4DataVector& GetData(G4int argComponentId) const + { return GetComponent(argComponentId)->GetData(0); } + + virtual void SetEnergiesData(G4DataVector* argEnergies, G4DataVector* argData, G4int argComponentId); + + virtual G4bool LoadData(const G4String & argFileName); + virtual G4bool SaveData(const G4String & argFileName) const; + + // void CleanUpComponents(); private: - G4String FullFileName(const G4String & argFileName) const; - }; + + G4String FullFileName(const G4String & argFileName) const; + + // Hide copy constructor and assignment operator + G4DNACrossSectionDataSet(); + G4DNACrossSectionDataSet(const G4DNACrossSectionDataSet & copy); + G4DNACrossSectionDataSet& operator=(const G4DNACrossSectionDataSet & right); + + std::vector components; // Owned pointers + + G4int z; + + G4VDataSetAlgorithm* algorithm; // Owned pointer + + G4double unitEnergies; + G4double unitData; + + G4double GetUnitEnergies() const { return unitEnergies; } + G4double GetUnitData() const { return unitData; } + const G4VDataSetAlgorithm* GetAlgorithm() const { return algorithm; } + + void CleanUpComponents(void); + + +}; #endif /* G4DNACROSSSECTIONDATASET_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh deleted file mode 100644 index b3ee91fb45..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh +++ /dev/null @@ -1,77 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh,v 1.2 2006/06/29 19:33:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH - #define G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - // - [protected] G4int NumberOfPartialCrossSections(void) - // - [protected] const G4double f0[] - // - [protected] const G4double a0[] - // - [protected] const G4double a1[] - // - [protected] const G4double b0[] - // - [protected] const G4double b1[] - // - [protected] const G4double c0[] - // - [protected] const G4double d0[] - // - [protected] G4double x0[] - // - [protected] G4double x1[] - - // EnergyLimitsPolicy must provide: - // - [protected] const G4double lowEnergyLimit - // - [protected] const G4double zeroBelowLowEnergyLimit - // - [protected] const G4double highEnergyLimit - // - [protected] const G4double zeroAboveLowEnergyLimit - - template - class G4DNADingfelderChargeChangeTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy - { - protected: - G4DNADingfelderChargeChangeTotalCrossSectionPolicy() {} - ~G4DNADingfelderChargeChangeTotalCrossSectionPolicy() {} - - G4double TotalCrossSection(G4double k, G4int z); - G4int RandomizePartialCrossSection(G4double k, G4int z); - void BuildTotalCrossSection(void) const {} -// G4int StepFunction(G4double x) const; -// G4double WaterBindingEnergy(G4int levelIndex) const; - - private: - G4double PartialCrossSection(G4double k, G4int z, G4int index); - - // Hides default constructor and assignment operator as private - G4DNADingfelderChargeChangeTotalCrossSectionPolicy(const G4DNADingfelderChargeChangeTotalCrossSectionPolicy & copy); - G4DNADingfelderChargeChangeTotalCrossSectionPolicy & operator=(const G4DNADingfelderChargeChangeTotalCrossSectionPolicy & right); - }; - -#include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.icc" -#endif /* G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNADingfelderChargeChangeTotalCrossSectionPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNADingfelderChargeChangeTotalCrossSectionPolicy.icc deleted file mode 100644 index eb82c8374e..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNADingfelderChargeChangeTotalCrossSectionPolicy.icc +++ /dev/null @@ -1,144 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNADingfelderChargeChangeTotalCrossSectionPolicy.icc,v 1.3 2006/06/29 19:33:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNADINGFELDERCHARGECHANGETOTALCROSSSECTIONPOLICY_HH - #include "Randomize.hh" - - template - G4double G4DNADingfelderChargeChangeTotalCrossSectionPolicy :: TotalCrossSection(G4double k, G4int z) - { - if (k < EnergyLimitsPolicy::lowEnergyLimit) - { - if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit) - return 0; - - k=EnergyLimitsPolicy::lowEnergyLimit; - } - else if (k > EnergyLimitsPolicy::highEnergyLimit) - { - if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit) - return 0; - - k=EnergyLimitsPolicy::highEnergyLimit; - } - - G4int i(IncomingParticlePolicy::NumberOfPartialCrossSections()); - G4double totalCrossSection(0.); - - while (i>0) - { - i--; - totalCrossSection+=PartialCrossSection(k, z, i); - } - - return totalCrossSection; - } - - template - G4int G4DNADingfelderChargeChangeTotalCrossSectionPolicy :: RandomizePartialCrossSection(G4double k, G4int z) - { - const G4int n(IncomingParticlePolicy::NumberOfPartialCrossSections()); - G4double * values(new G4double[n]); - G4double value(0); - G4int i(n); - - while (i>0) - { - i--; - values[i]=PartialCrossSection(k, z, i); - value+=values[i]; - } - - value*=G4UniformRand(); - - i=n; - while (i>0) - { - i--; - - if (values[i]>value) - break; - - value-=values[i]; - } - - delete[] values; - - return i; - } - - template - G4double G4DNADingfelderChargeChangeTotalCrossSectionPolicy :: PartialCrossSection(G4double k, G4int /* z */, G4int index) - { - // - // sigma(T) = f0 10 ^ y(std::log10(T/eV)) - // - // / a0 x + b0 x < x0 - // | - // y(x) = < a0 x + b0 - c0 (x - x0)^d0 x0 <= x < x1 - // | - // \ a1 x + b1 x >= x1 - // - // - // f0, a0, a1, b0, b1, c0, d0, x0, x1 are parameters that change for protons and helium (0, +, ++) - // - // f0 has been added to the code in order to manage partial (shell-dependent) cross sections (if no shell dependence is present. f0=1. Sum of f0 over the considered shells should give 1) - // - // From Rad. Phys. and Chem. 59 (2000) 255-275, M. Dingfelder et al. - // Inelastic-collision cross sections of liquid water for interactions of energetic proton - // - - if (IncomingParticlePolicy::x1[index], G4DNABornExcitationFinalStatesPolicy > - { - public: - G4DNAElectronBornExcitation(const G4String & name = "G4DNAElectronBornExcitation") : G4DNAExcitationInWater, G4DNABornExcitationFinalStatesPolicy > (name) {} - virtual ~G4DNAElectronBornExcitation() {} - }; -#endif /* G4DNAElectronBornExcitation_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAElectronElasticEmfietzoglou.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAElectronElasticEmfietzoglou.hh deleted file mode 100644 index 4891323e17..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAElectronElasticEmfietzoglou.hh +++ /dev/null @@ -1,51 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAElectronElasticEmfietzoglou.hh,v 1.3 2006/06/29 19:33:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAELECTRONELASTICEMFIETZOGLOU_HH - #define G4DNAELECTRONELASTICEMFIETZOGLOU_HH 1 - - #include "G4DNAElectronElasticScatteringInWater.hh" - #include "G4DNARutherfordTotalCrossSectionPolicy.hh" - #include "G4DNAEmfietzoglouAngularDistributionPolicy.hh" - - struct G4DNAEmfietzoglouEnergyLimitsPolicy - { - static const G4double lowEnergyLimit; - static const G4bool zeroBelowLowEnergyLimit; - static const G4double highEnergyLimit; - static const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAElectronElasticEmfietzoglou : public G4DNAElectronElasticScatteringInWater, G4DNAEmfietzoglouAngularDistributionPolicy> - { - public: - G4DNAElectronElasticEmfietzoglou(const G4String & name = "G4DNAElectronElasticEmfietzoglou") : G4DNAElectronElasticScatteringInWater, G4DNAEmfietzoglouAngularDistributionPolicy>(name) {} - virtual ~G4DNAElectronElasticEmfietzoglou() {} - }; -#endif /* G4DNAELECTRONELASTICEMFIETZOGLOU_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAElectronElasticScatteringInWater.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAElectronElasticScatteringInWater.hh deleted file mode 100644 index a8a1d9f2a2..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAElectronElasticScatteringInWater.hh +++ /dev/null @@ -1,69 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAElectronElasticScatteringInWater.hh,v 1.6 2006/10/14 11:03:03 pia Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -// Nucl. Instr. Meth. 155 (1978) 145-156 -// J. Phys. D: Appl. Phys. 33 (2000) 932-944 -// Phys. Med. Biol. 45 (2000) 3171-3194 - -#ifndef G4DNAELECTRONELASTICSCATTERINGINWATER_HH -#define G4DNAELECTRONELASTICSCATTERINGINWATER_HH 1 - -#include "G4VDNAProcessInWater.hh" - -// TotalCrossSectionPolicy must provide: -// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void) -// - [protected] G4double TotalCrossSection(G4double k, G4int z) -// - [protected] void BuildTotalCrossSection(void) - -// FinalStatesPolicy must provide: -// - [protected] G4double RandomizeCosTheta(G4double k, G4int z) -// - [protected] G4bool KillIncomingParticle(G4double k) -// - [protected] void BuildFinalStatesData(void) - -template -class G4DNAElectronElasticScatteringInWater : public G4VDNAProcessInWater -{ -public: - - G4DNAElectronElasticScatteringInWater(const G4String & name): G4VDNAProcessInWater(name) {} - - virtual ~G4DNAElectronElasticScatteringInWater() {} - - virtual G4VParticleChange* PostStepDoIt(const G4Track & aTrack, const G4Step & aStep); - -private: - // Hides default constructor and assignment operator as private - G4DNAElectronElasticScatteringInWater(const G4DNAElectronElasticScatteringInWater & copy); - G4DNAElectronElasticScatteringInWater & operator=(const G4DNAElectronElasticScatteringInWater & right); -}; - -#include "G4DNAElectronElasticScatteringInWater.icc" -#endif /* G4DNAELECTRONELASTICSCATTERINGINWATER_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAElectronExcitation.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAElectronExcitation.hh deleted file mode 100644 index 390a432d48..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAElectronExcitation.hh +++ /dev/null @@ -1,61 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAElectronExcitation.hh,v 1.3 2006/06/29 19:34:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAELECTRONEXCITATION_HH - #define G4DNAELECTRONEXCITATION_HH 1 - - #include "G4DNAExcitationInWater.hh" - #include "G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAElectronExcitationEnergyLimitsPolicy - { - protected: - G4DNAElectronExcitationEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAElectronExcitationIncomingParticlePolicy - { - protected: - G4DNAElectronExcitationIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - }; - - class G4DNAElectronExcitation : public G4DNAExcitationInWater, G4DNAStopAndKillBelowEnergyLimitPolicy > - { - public: - G4DNAElectronExcitation(const G4String & name = "G4DNAElectronExcitation") : G4DNAExcitationInWater, G4DNAStopAndKillBelowEnergyLimitPolicy > (name) {} - virtual ~G4DNAElectronExcitation() {} - }; -#endif /* G4DNAELECTRONEXCITATION_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAEmfietzoglouAngularDistributionPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAEmfietzoglouAngularDistributionPolicy.hh deleted file mode 100644 index bc9db5a87f..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAEmfietzoglouAngularDistributionPolicy.hh +++ /dev/null @@ -1,57 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAEmfietzoglouAngularDistributionPolicy.hh,v 1.2 2006/06/29 19:34:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// -// -// Nucl. Instr. Meth. 155 (1978) 145-156 -// J. Phys. D: Appl. Phys. 33 (2000) 932-944 -// Phys. Med. Biol. 45 (2000) 3171-3194 - -#ifndef G4DNAEMFIETZOGLOUANGULARDISTRIBUTIONPOLICY_HH - #define G4DNAEMFIETZOGLOUANGULARDISTRIBUTIONPOLICY_HH - - #include "globals.hh" - - class G4DNAEmfietzoglouAngularDistributionPolicy - { - protected: - G4DNAEmfietzoglouAngularDistributionPolicy() {} - ~G4DNAEmfietzoglouAngularDistributionPolicy() {} - - G4double RandomizeCosTheta(G4double k, G4int z) const; - G4bool KillIncomingParticle(G4double /* k */) const { return false; } - void BuildFinalStatesData(void) const {} - - private: - G4double ScreeningFactor(G4double k, G4int z) const; - - // Hides default constructor and assignment operator as private - G4DNAEmfietzoglouAngularDistributionPolicy(const G4DNAEmfietzoglouAngularDistributionPolicy & copy); - G4DNAEmfietzoglouAngularDistributionPolicy & operator=(const G4DNAEmfietzoglouAngularDistributionPolicy & right); - }; -#endif /* G4DNAEMFIETZOGLOUANGULARDISTRIBUTIONPOLICY_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.hh deleted file mode 100644 index 4fbd3b5280..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.hh +++ /dev/null @@ -1,67 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy, 2005/07/26 10:39:54 francis -// GEANT4 tag $Name: emlowen-V07-01-02 - -#ifndef G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH -#define G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy - { - protected: - G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy() {} - ~G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy() {} - - G4double TotalCrossSection(G4double k, G4int z) const; - G4int RandomizePartialCrossSection(G4double k, G4int z) const; - G4double EnergyConstant(G4int excitationLevelIndex) const; - void BuildTotalCrossSection(void) const {} - - private: - G4double PartialCrossSection(G4double T, G4int z,G4int excitationLevelIndex) const; - - - // Hides default constructor and assignment operator as private - G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy(const G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy & copy); - G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy & operator=(const G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy & right); - }; - - #include "G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.icc" -#endif /* G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.icc deleted file mode 100644 index c3a750033a..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.icc +++ /dev/null @@ -1,129 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy.icc,v 2005/07/26 10:49:54 Francis -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy_HH - #include "Randomize.hh" - - template - G4double G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy :: TotalCrossSection(G4double k, G4int z ) const - { - if (k < EnergyLimitsPolicy::lowEnergyLimit) - { - if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit) - return 0; - - k=EnergyLimitsPolicy::lowEnergyLimit; - } - else if (k > EnergyLimitsPolicy::highEnergyLimit) - { - if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit) - return 0; - - k=EnergyLimitsPolicy::highEnergyLimit; - } - - G4int i(5); - G4double totalCrossSection(0.); - - while (i>0) - { - i--; - totalCrossSection+=PartialCrossSection(k,z, i); - } - return totalCrossSection; - } - - template - G4int G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy :: RandomizePartialCrossSection(G4double k,G4int z) const - { - G4int i(5); - G4double values[5]; - G4double value(0); - - while (i>0) - { - i--; - values[i]=PartialCrossSection(k,z, i); - value+=values[i]; - } - - value*=G4UniformRand(); - - i=5; - while (i>0) - { - i--; - - if (values[i]>value) - return i; - - value-=values[i]; - } - - return 0; - } - - template - G4double G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy :: EnergyConstant(G4int excitationLevelIndex) const - { - const G4double ej[]={8.22*eV, 10.00*eV, 11.24*eV, 12.61*eV, 13.77*eV}; - - return ej[excitationLevelIndex]; - } - - template - G4double G4DNAEmfietzoglouExcitationTotalCrossSectionPolicy :: PartialCrossSection(G4double t, G4int /*z*/, G4int excitationLevelIndex) const - { - // Aj T - // sigma(T) = ------------- (Bj / T) ln(Cj ---) [1 - Bj / T]^Pj - // 2 pi alpha0 R - // - // T is the incoming electron kinetic energy - // alpha0 is the Bohr Radius (Bohr_radius) - // Aj, Bj, Cj & Pj are parameters that can be found in Emfietzoglou's papers - // - // - // From Phys. Med. Biol. 48 (2003) 2355-2371, D.Emfietzoglou, - // Monte Carlo Simulation of the energy loss of low energy electrons in liquid Water - // - - const G4double sigma0((10./3.343e22)*cm2); - const G4double aj[]={0.0205, 0.0209, 0.0130, 0.0026, 0.0025}; - const G4double cj[]={4.9801, 3.3850, 2.8095, 1.9242, 3.4624}; - const G4double pj[]={0.4757, 0.3483, 0.4443, 0.3429, 0.4379}; - const G4double r(13.6*eV) ; -// z=z*1; - if(t - class G4DNAExcitationInWater : public G4VDNAProcessInWater - { - public: - G4DNAExcitationInWater(const G4String & name) : G4VDNAProcessInWater(name) {} - virtual ~G4DNAExcitationInWater() {} - - virtual G4VParticleChange * PostStepDoIt(const G4Track & aTrack, const G4Step & aStep); - - private: - // Hides default constructor and assignment operator as private - G4DNAExcitationInWater(const G4DNAExcitationInWater & copy); - G4DNAExcitationInWater & operator=(const G4DNAExcitationInWater & right); - }; - - #include "G4DNAExcitationInWater.icc" -#endif /* G4DNAEXCITATIONINWATER_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAExcitationInWater.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAExcitationInWater.icc deleted file mode 100644 index 3e5d4ecd1f..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAExcitationInWater.icc +++ /dev/null @@ -1,52 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAExcitationInWater.icc,v 1.3 2006/06/29 19:34:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAEXCITATIONINWATER_HH - template - G4VParticleChange * G4DNAExcitationInWater :: PostStepDoIt(const G4Track & aTrack, const G4Step & aStep) - { - const G4int z(10); // H2O number of electrons - - this->aParticleChange.Initialize(aTrack); - - G4double k; - k=aTrack.GetDynamicParticle()->GetKineticEnergy(); - - G4int excitationLevel(this->RandomizePartialCrossSection(k, z)); - G4double excitationEnergy(this->EnergyConstant(excitationLevel)); - - this->aParticleChange.ProposeEnergy(k-excitationEnergy); - this->aParticleChange.ProposeLocalEnergyDeposit(excitationEnergy); - this->aParticleChange.ProposeMomentumDirection(aTrack.GetDynamicParticle()->GetMomentumDirection()); - this->aParticleChange.SetNumberOfSecondaries(0); - - return G4VDNAProcessInWater::PostStepDoIt(aTrack, aStep); - } -#endif /* G4DNAEXCITATIONINWATER_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAGenericIonsManager.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAGenericIonsManager.hh index c46c078a29..614791a6d2 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAGenericIonsManager.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4DNAGenericIonsManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4DNAGenericIonsManager.hh,v 1.3 2006/06/29 19:34:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4DNAGENERICIONSMANAGER_HH #define G4DNAGENERICIONSMANAGER_HH 1 diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAHeliumChargeIncrease.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAHeliumChargeIncrease.hh deleted file mode 100644 index 16b03098ac..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAHeliumChargeIncrease.hh +++ /dev/null @@ -1,74 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHeliumChargeIncrease.hh,v 1.2 2006/06/29 19:34:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAHELIUMCHARGEINCREASE_HH - #define G4DNAHELIUMCHARGEINCREASE_HH 1 - - #include "G4DNAChargeIncreaseInWater.hh" - #include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh" - #include "G4DNAHeliumChargeIncreaseFinalStatesPolicy.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAHeliumChargeIncreaseEnergyLimitsPolicy - { - protected: - G4DNAHeliumChargeIncreaseEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAHeliumChargeIncreaseIncomingParticlePolicy - { - protected: - G4DNAHeliumChargeIncreaseIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - - G4int NumberOfPartialCrossSections(void) const; - - G4double f0[2]; - G4double a0[2]; - G4double a1[2]; - G4double b0[2]; - G4double b1[2]; - G4double c0[2]; - G4double d0[2]; - G4double x0[2]; - G4double x1[2]; - }; - - class G4DNAHeliumChargeIncrease : public G4DNAChargeIncreaseInWater, G4DNAHeliumChargeIncreaseFinalStatesPolicy > - { - public: - G4DNAHeliumChargeIncrease(const G4String & name = "G4DNAHeliumChargeIncrease") : G4DNAChargeIncreaseInWater, G4DNAHeliumChargeIncreaseFinalStatesPolicy > (name) {} - virtual ~G4DNAHeliumChargeIncrease() {} - }; -#endif /* G4DNAHELIUMCHARGEINCREASE_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAHeliumChargeIncreaseFinalStatesPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAHeliumChargeIncreaseFinalStatesPolicy.hh deleted file mode 100644 index 5c6b3dbe20..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAHeliumChargeIncreaseFinalStatesPolicy.hh +++ /dev/null @@ -1,66 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHeliumChargeIncreaseFinalStates, 2005/09/14 15:46:26 francis -// GEANT4 tag $Name: emlowen-V07-01-07 - -#ifndef G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH -#define G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNAHeliumChargeIncreaseFinalStatesPolicy : public EnergyLimitsPolicy - { - protected: - G4DNAHeliumChargeIncreaseFinalStatesPolicy() {} - ~G4DNAHeliumChargeIncreaseFinalStatesPolicy() {} - - - G4bool KillIncomingParticle(G4double energy) const; - void BuildFinalStatesData(void) const; - G4int NumberOfFinalStates(G4int finalStateIndex) const; - G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex); - G4double IncomingParticleBindingEnergyConstant(G4int finalStateIndex) const; - - // Hides default constructor and assignment operator as private - G4DNAHeliumChargeIncreaseFinalStatesPolicy(const G4DNAHeliumChargeIncreaseFinalStatesPolicy & copy); - G4DNAHeliumChargeIncreaseFinalStatesPolicy & operator=(const G4DNAHeliumChargeIncreaseFinalStatesPolicy & right); - }; - - #include "G4DNAHeliumChargeIncreaseFinalStatesPolicy.icc" -#endif /* G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAHeliumChargeIncreaseFinalStatesPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAHeliumChargeIncreaseFinalStatesPolicy.icc deleted file mode 100644 index 9a603361c4..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAHeliumChargeIncreaseFinalStatesPolicy.icc +++ /dev/null @@ -1,82 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHeliumChargeIncreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH - #include "Randomize.hh" - #include "G4DNAGenericIonsManager.hh" - - template - G4bool G4DNAHeliumChargeIncreaseFinalStatesPolicy :: KillIncomingParticle(G4double energy) const - { - if (energy - void G4DNAHeliumChargeIncreaseFinalStatesPolicy :: BuildFinalStatesData(void) const - { - } - - template - G4int G4DNAHeliumChargeIncreaseFinalStatesPolicy :: NumberOfFinalStates(G4int finalStateIndex) const - - { - if (finalStateIndex==0) - return 1; - - return 2; - } - - template - G4ParticleDefinition* G4DNAHeliumChargeIncreaseFinalStatesPolicy :: OutgoingParticleDefinition(G4int finalStateIndex) - { - G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance()); - - if (finalStateIndex==0) - return instance->GetIon("alpha+"); - - return instance->GetIon("alpha++"); - } - - template - G4double G4DNAHeliumChargeIncreaseFinalStatesPolicy :: IncomingParticleBindingEnergyConstant(G4int finalStateIndex) const - { - // Binding energy for He+ -> He++ + e- 54.509 eV - // Binding energy for He -> He+ + e- 24.587 eV - - if (finalStateIndex==0) - return 24.587*eV; - - return (54.509 + 24.587)*eV; - } -#endif /* G4DNAHELIUMCHARGEINCREASEFINALSTATESPOLICY_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAHeliumExcitation.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAHeliumExcitation.hh deleted file mode 100644 index f6e58ac27a..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAHeliumExcitation.hh +++ /dev/null @@ -1,65 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHeliumExcitation.hh,v 1.2 2006/06/29 19:34:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAHELIUMEXCITATION_HH - #define G4DNAHELIUMEXCITATION_HH 1 - - #include "G4DNAExcitationInWater.hh" - #include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAHeliumExcitationEnergyLimitsPolicy - { - protected: - G4DNAHeliumExcitationEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAHeliumExcitationIncomingParticlePolicy - { - protected: - G4DNAHeliumExcitationIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - - G4double slaterEffectiveCharge[3]; - G4double sCoefficient[3]; - const G4double kineticEnergyCorrection; - }; - - class G4DNAHeliumExcitation : public G4DNAExcitationInWater, G4DNAStopAndKillBelowEnergyLimitPolicy > - { - public: - G4DNAHeliumExcitation(const G4String & name = "G4DNAHeliumExcitation") : G4DNAExcitationInWater, G4DNAStopAndKillBelowEnergyLimitPolicy > (name) {} - virtual ~G4DNAHeliumExcitation() {} - }; -#endif /* G4DNAHELIUMEXCITATION_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncrease.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncrease.hh deleted file mode 100644 index 1fc9f4e13d..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncrease.hh +++ /dev/null @@ -1,62 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHydrogenChargeIncrease.hh,v 1.2 2006/06/29 19:34:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAHYDROGENCHARGEINCREASE_HH - #define G4DNAHYDROGENCHARGEINCREASE_HH 1 - - #include "G4DNAChargeIncreaseInWater.hh" - #include "G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.hh" - #include "G4DNAHydrogenChargeIncreaseFinalStatesPolicy.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy - { - protected: - G4DNAHydrogenChargeIncreaseEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAHydrogenChargeIncreaseIncomingParticlePolicy - { - protected: - G4DNAHydrogenChargeIncreaseIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - }; - - class G4DNAHydrogenChargeIncrease : public G4DNAChargeIncreaseInWater, G4DNAHydrogenChargeIncreaseFinalStatesPolicy > - { - public: - G4DNAHydrogenChargeIncrease(const G4String & name = "G4DNAHydrogenChargeIncrease") : G4DNAChargeIncreaseInWater, G4DNAHydrogenChargeIncreaseFinalStatesPolicy > (name) {} - virtual ~G4DNAHydrogenChargeIncrease() {} - }; -#endif /* G4DNAHYDROGENCHARGEINCREASE_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncreaseFinalStatesPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncreaseFinalStatesPolicy.hh deleted file mode 100644 index eeb7df4d16..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncreaseFinalStatesPolicy.hh +++ /dev/null @@ -1,66 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHydrogenChargeIncreaseFinalStates, 2005/09/15 14:20:26 Ziad FRANCIS -// GEANT4 tag $Name: emlowen-V07-01-08 - -#ifndef G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH -#define G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNAHydrogenChargeIncreaseFinalStatesPolicy : public EnergyLimitsPolicy - { - protected: - G4DNAHydrogenChargeIncreaseFinalStatesPolicy() {} - ~G4DNAHydrogenChargeIncreaseFinalStatesPolicy() {} - - - G4bool KillIncomingParticle(G4double energy) const; - void BuildFinalStatesData(void) const; - G4int NumberOfFinalStates(G4int finalStateIndex) const; - G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex); - G4double IncomingParticleBindingEnergyConstant(G4int finalStateIndex) const; - - // Hides default constructor and assignment operator as private - G4DNAHydrogenChargeIncreaseFinalStatesPolicy(const G4DNAHydrogenChargeIncreaseFinalStatesPolicy & copy); - G4DNAHydrogenChargeIncreaseFinalStatesPolicy & operator=(const G4DNAHydrogenChargeIncreaseFinalStatesPolicy & right); - }; - - #include "G4DNAHydrogenChargeIncreaseFinalStatesPolicy.icc" -#endif /* G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncreaseFinalStatesPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncreaseFinalStatesPolicy.icc deleted file mode 100644 index d608599f1c..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncreaseFinalStatesPolicy.icc +++ /dev/null @@ -1,70 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHydrogenChargeIncreaseFinalStatesPolicy.icc,v 2005/09/15 14:38:34 Ziad FRANCIS -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH - #include "Randomize.hh" - #include "G4DNAGenericIonsManager.hh" - #include "G4Proton.hh" - - template - G4bool G4DNAHydrogenChargeIncreaseFinalStatesPolicy::KillIncomingParticle(G4double energy) const - { - if (energy - void G4DNAHydrogenChargeIncreaseFinalStatesPolicy::BuildFinalStatesData(void) const - { - } - - template - G4int G4DNAHydrogenChargeIncreaseFinalStatesPolicy::NumberOfFinalStates(G4int /* finalStateIndex */) const - - { - return 1; - } - - template - G4ParticleDefinition* G4DNAHydrogenChargeIncreaseFinalStatesPolicy::OutgoingParticleDefinition(G4int /* finalStateIndex */) - { - return G4Proton::Proton(); - } - - template - G4double G4DNAHydrogenChargeIncreaseFinalStatesPolicy::IncomingParticleBindingEnergyConstant(G4int /* finalStateIndex */) const - { - return 13.6*eV; - } - -#endif /* G4DNAHYDROGENCHARGEINCREASEFINALSTATESPOLICY_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.hh deleted file mode 100644 index 37ca50dfda..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.hh +++ /dev/null @@ -1,62 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.hh,v 1.2 2006/06/29 19:34:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH - #define G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy - { - protected: - G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy() {} - ~G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy() {} - - G4double TotalCrossSection(G4double k, G4int z) const; - G4int RandomizePartialCrossSection(G4double k, G4int z) const; - void BuildTotalCrossSection(void) const {} - - // Hides default constructor and assignment operator as private - G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy(const G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy & copy); - G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy & operator=(const G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy & right); - }; - -#include "G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.icc" -#endif /* G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.icc deleted file mode 100644 index 0f760ab1c3..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.icc +++ /dev/null @@ -1,86 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy.icc,v 1.3 2006/06/29 19:34:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH - #include "Randomize.hh" - - template - G4double G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy :: TotalCrossSection(G4double k, G4int /* z */) const - { - if (k < EnergyLimitsPolicy::lowEnergyLimit) - { - if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit) - return 0; - - k=EnergyLimitsPolicy::lowEnergyLimit; - } - else if (k > EnergyLimitsPolicy::highEnergyLimit) - { - if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit) - return 0; - - k=EnergyLimitsPolicy::highEnergyLimit; - } - - G4double totalCrossSection(0.); - - //--------Following model is proposed by Miller and Green--------- - /* - const G4double s0 = 1e-20; - const G4double a = 79.3*keV; - const G4double omega = 0.652; - const G4double i = 12.61*eV; - const G4double nu = 0.943; - const G4double j = 27.7*keV; - totalCrossSection = (s0*std::pow(10*a/keV,omega)*std::pow(k/keV-i/keV, nu)) / (std::pow(j/keV,omega+nu) + std::pow(k/keV,omega+nu));*/ - - //----------Following model is proposed by Dingfelder-------------- - const G4double aa=2.835; - const G4double bb=0.310; - const G4double cc=2.100; - const G4double dd=0.760; - const G4double fac=1.0e-18; - const G4double rr=13.606*eV; - - G4double t = k / (proton_mass_c2/electron_mass_c2); - G4double x = t / rr; - G4double sigmal = 4.0*pi*Bohr_radius/nm*Bohr_radius/nm*fac*cc*(std::pow(x,dd)); - G4double sigmah = 4.0*pi*Bohr_radius/nm*Bohr_radius/nm*fac*(aa*std::log(1.0+x)+bb)/x; - totalCrossSection = 1.0/(1.0/sigmal + 1.0/sigmah); - - return totalCrossSection*m*m; - } - - template - G4int G4DNAHydrogenChargeIncreaseTotalCrossSectionPolicy :: RandomizePartialCrossSection(G4double /* k */, G4int /* z */) const - { - return 0; - } -#endif /* G4DNAHYDROGENCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenRuddIonization.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenRuddIonization.hh deleted file mode 100644 index 37597922c2..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenRuddIonization.hh +++ /dev/null @@ -1,76 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHydrogenRuddIonization.hh,v 1.3 2006/06/29 19:34:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAHYDROGENRUDDIONIZATION_HH - #define G4DNAHYDROGENRUDDIONIZATION_HH 1 - - #include "G4DNAIonizationInWater.hh" - #include "G4DNATotalCrossSectionFromFilePolicy.hh" - #include "G4DNARuddIonizationFinalStatesPolicy.hh" - #include "G4LogLogInterpolation.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAHydrogenRuddIonizationEnergyLimitsPolicy - { - protected: - G4DNAHydrogenRuddIonizationEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAHydrogenRuddIonizationIncomingParticlePolicy - { - protected: - G4DNAHydrogenRuddIonizationIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - }; - - class G4DNAHydrogenRuddDataFilePolicy - { - public : - G4DNAHydrogenRuddDataFilePolicy(); - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - const G4double dataFileEnergyUnit; - const G4double dataFileCrossSectionUnit; - const char * const dataFileName; - }; - - class G4DNAHydrogenRuddIonization : public G4DNAIonizationInWater, G4DNARuddIonizationFinalStatesPolicy > - { - public: - G4DNAHydrogenRuddIonization(const G4String & name = "G4DNAHydrogenRuddIonization") : G4DNAIonizationInWater, G4DNARuddIonizationFinalStatesPolicy > (name) {} - virtual ~G4DNAHydrogenRuddIonization() {} - }; -#endif /* G4DNAHYDROGENRUDDIONIZATION_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenRuddIonizationFinalStatesPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenRuddIonizationFinalStatesPolicy.hh deleted file mode 100644 index 1014cf35bb..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenRuddIonizationFinalStatesPolicy.hh +++ /dev/null @@ -1,70 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHydrogenRuddIonizationTotalCrossSectionPolicy, 2005/09/16 9:25:45 Ziad FRANCIS -// GEANT4 tag $Name: emlowen-V07-01-09 - -#ifndef G4DNAHydrogenRuddIonizationFinalStatesPolicy_HH -#define G4DNAHydrogenRuddIonizationFinalStatesPolicy_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNAHydrogenRuddIonizationFinalStatesPolicy : public EnergyLimitsPolicy - { - protected: - G4DNAHydrogenRuddIonizationFinalStatesPolicy() {} - ~G4DNAHydrogenRuddIonizationFinalStatesPolicy() {} - - - G4bool KillIncomingParticle(G4double energy) const; - void BuildFinalStatesData(void) const; - G4double RandomizeEjectedElectronEnergy(G4double incomingParticleEnergy, G4int shell) const; - void RandomizeEjectedElectronDirection(G4double incomingParticleEnergy, G4double - outgoingParticleEnergy, G4double & cosTheta, G4double & phi ) const; - G4double EnergyConstant(G4int ionizationLevel) const; - - private: - G4double DifferentialCrossSection(G4double k, G4double energyTransfer, G4int shell) const; - - // Hides default constructor and assignment operator as private - G4DNAHydrogenRuddIonizationFinalStatesPolicy(const G4DNAHydrogenRuddIonizationFinalStatesPolicy & copy); - G4DNAHydrogenRuddIonizationFinalStatesPolicy & operator=(const G4DNAHydrogenRuddIonizationFinalStatesPolicy & right); - }; - - #include "G4DNAHydrogenRuddIonizationFinalStatesPolicy.icc" -#endif /* G4DNAHydrogenRuddIonizationFinalStatesPolicy_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenRuddIonizationFinalStatesPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenRuddIonizationFinalStatesPolicy.icc deleted file mode 100644 index 11762c6eb6..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAHydrogenRuddIonizationFinalStatesPolicy.icc +++ /dev/null @@ -1,143 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHydrogenRuddIonizationFinalStatesPolicy.icc,v 2005/09/16 09:27:54 Ziad FRANCIS -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAHydrogenRuddIonizationFinalStatesPolicy_HH - #include "Randomize.hh" - - - template - G4bool G4DNAHydrogenRuddIonizationFinalStatesPolicy :: KillIncomingParticle(G4double energy) const - { - if(energy < EnergyLimitsPolicy::lowEnergyLimit) return(true); - else return (false); - } - - template - void G4DNAHydrogenRuddIonizationFinalStatesPolicy ::BuildFinalStatesData(void) const - {} - - template - G4double G4DNAHydrogenRuddIonizationFinalStatesPolicy ::RandomizeEjectedElectronEnergy(G4double k, G4int shell) const - { - G4double maximumKineticEnergyTransfer = 4.* (electron_mass_c2 / proton_mass_c2) * k; - G4double crossSectionMaximum=0.; - for(G4double value=EnergyConstant(shell); value<=4.*EnergyConstant(shell) ; value+=0.1*eV){ - G4double differentialCrossSection = DifferentialCrossSection(k, value, shell); - if(differentialCrossSection >= crossSectionMaximum) crossSectionMaximum = differentialCrossSection; - } - G4double secElecKinetic=0.; - do{ - secElecKinetic = G4UniformRand() * maximumKineticEnergyTransfer; - }while(G4UniformRand()*crossSectionMaximum > DifferentialCrossSection(k,secElecKinetic+EnergyConstant(shell),shell)); - return(secElecKinetic); - } - - template - void G4DNAHydrogenRuddIonizationFinalStatesPolicy ::RandomizeEjectedElectronDirection(G4double k, G4double secKinetic, G4double & cosTheta, G4double & phi ) const - { - G4double maxSecKinetic = 4.* (electron_mass_c2 / proton_mass_c2) * k; - phi = twopi * G4UniformRand(); - cosTheta = std::sqrt(secKinetic / maxSecKinetic); - } - - template - G4double G4DNAHydrogenRuddIonizationFinalStatesPolicy::EnergyConstant(G4int ionizationLevel) const - { - const G4double bindingEnergy[]={10.79*eV, 13.39*eV, 16.05*eV, 32.30*eV, 539.0*eV}; - return(bindingEnergy[ionizationLevel]); - } - - - template - G4double G4DNAHydrogenRuddIonizationFinalStatesPolicy::DifferentialCrossSection(G4double k, G4double energyTransfer, G4int ionizationLevelIndex) const - { - // Shells ids are 0 1 2 3 4 (4 is k shell) - // !!Attention, "energyTransfer" here is the energy transfered to the electron which means - // that the secondary kinetic energy is w = energyTransfer - bindingEnergy - // - // ds S F1(nu) + w * F2(nu) - // ---- = g(k) * ---- ------------------------------------------- - // dw Bj (1+w)^3 * [1 + exp{alpha * (w - wc) / nu}] - // - // w is the secondary electron kinetic Energy in eV - // - // All the other parameters can be found in Rudd's Papers - // - // M.Eugene Rudd, 1988, User-Friendly model for the energy distribution of - // electrons from protons or electron collisions. Nucl. Tracks Rad. Meas.Vol 16 N0 2/3 pp 219-218 - // - - const G4int j=ionizationLevelIndex; - - G4double A1 ; G4double B1 ; G4double C1 ; G4double D1 ; G4double E1 ; - G4double A2 ; G4double B2 ; G4double C2 ; G4double D2 ; G4double Alpha ; - - if(j == 4) {//Data For Liquid Water K SHELL from Dingfelder (Protons in Water) - A1 = 1.25; B1 = 0.5; C1 = 1.00; D1 = 1.00; E1 = 3.00; A2 = 1.10; B2 = 1.30; - C2 = 1.00; D2 = 0.00; Alpha = 0.66;} - else {//Data For Liquid Water from Dingfelder (Protons in Water) - A1 = 1.02; B1 = 82.0; C1 = 0.45; D1 = -0.80; E1 = 0.38; A2 = 1.07; B2 = 14.6; - C2 = 0.60; D2 = 0.04; Alpha = 0.64;} - - const G4double n = 2.; - const G4double Gj[5] = {0.99, 1.11, 1.11, 0.52, 1.}; - - //const G4double I[5]={12.61*eV, 14.73*eV, 18.55*eV, 32.2*eV, 539.7*eV}; // for water Vapor - //const G4double energyConstant[]={10.79*eV, 13.39*eV, 16.05*eV, 32.30*eV, 539.*eV}; - - G4double W = (energyTransfer - EnergyConstant(ionizationLevelIndex)); - G4double w = W / EnergyConstant(ionizationLevelIndex); - G4double Ry = 13.6*eV; - - G4double tau = (electron_mass_c2/proton_mass_c2) * k ; - - G4double S = 4.*pi*Bohr_radius*Bohr_radius*n*std::pow((Ry/EnergyConstant(ionizationLevelIndex)),2); - G4double v2 = tau / EnergyConstant(ionizationLevelIndex); - G4double v = std::sqrt(v2); - G4double wc = 4.*v2 - 2.*v - (Ry/(4.*EnergyConstant(ionizationLevelIndex))); - - G4double L1 = (C1* std::pow(v,(D1))) / (1.+ E1*std::pow(v, (D1+4.))); - G4double L2 = C2*std::pow(v,(D2)); - G4double H1 = (A1*std::log(1.+v2)) / (v2+(B1/v2)); - G4double H2 = (A2/v2) + (B2/(v2*v2)); - - G4double F1 = L1+H1; - G4double F2 = (L2*H2)/(L2+H2); - - G4double value = (std::log(k/eV)-4.2)/0.5; - G4double g = (0.8/(1+std::exp(value))) + 0.9; - - - G4double sigma = g * Gj[j] * (S/EnergyConstant(ionizationLevelIndex)) * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(Alpha*(w-wc)/v))) ); -return(sigma); -} - -#endif /* G4DNAHydrogenRuddIonizationTotalCrossSectionPolicy_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAIonizationInWater.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAIonizationInWater.hh deleted file mode 100644 index 522c8259d4..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAIonizationInWater.hh +++ /dev/null @@ -1,64 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAIonizationInWater.hh,v 1.2 2006/06/29 19:34:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifndef G4DNAIONIZATIONINWATER_HH - #define G4DNAIONIZATIONINWATER_HH 1 - - #include "G4VDNAProcessInWater.hh" - - // TotalCrossSectionPolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void) - // - [protected] G4double TotalCrossSection(G4double k) - // - [protected] G4double RandomizePartialCrossSection(G4double k, G4int shell) - // - [protected] void BuildTotalCrossSection(void) - - // FinalStatesPolicy must provide: - // - [protected] G4bool KillIncomingParticle(G4double k) - // - [protected] void BuildFinalStatesData(void) - - template - class G4DNAIonizationInWater : public G4VDNAProcessInWater - { - public: - G4DNAIonizationInWater(const G4String & name) : G4VDNAProcessInWater(name) {} - virtual ~G4DNAIonizationInWater() {} - - virtual G4VParticleChange * PostStepDoIt(const G4Track & aTrack, const G4Step & aStep); - - private: - // Hides default constructor and assignment operator as private - G4DNAIonizationInWater(const G4DNAIonizationInWater & copy); - G4DNAIonizationInWater & operator=(const G4DNAIonizationInWater & right); - }; - - #include "G4DNAIonizationInWater.icc" -#endif /* G4DNAIONIZATIONINWATER_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAIonizationInWater.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAIonizationInWater.icc deleted file mode 100644 index cffb17ea07..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAIonizationInWater.icc +++ /dev/null @@ -1,90 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAIonizationInWater.icc,v 1.4 2006/06/29 19:34:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAIONIZATIONINWATER_HH -#include "G4Electron.hh" - - template - G4VParticleChange* G4DNAIonizationInWater :: PostStepDoIt(const G4Track & aTrack, const G4Step & aStep) - { - const G4int z(10); // H2O number of electrons - - this->aParticleChange.Initialize(aTrack); - - const G4DynamicParticle* aDynamicParticle = aTrack.GetDynamicParticle(); - G4double k = aDynamicParticle->GetKineticEnergy(); - G4ParticleMomentum primaryDirection = aDynamicParticle->GetMomentumDirection(); - G4double particleMass = aDynamicParticle->GetDefinition()->GetPDGMass(); - G4double TotalEnergy = k + particleMass; - G4double Psquare = k*(TotalEnergy+particleMass); - G4double TotalMomentum = std::sqrt(Psquare); - - - G4int ionizationShell(TotalCrossSectionPolicy::RandomizePartialCrossSection(k,z)); - G4double secondaryKinetic(FinalStatesPolicy::RandomizeEjectedElectronEnergy(k,ionizationShell)); - G4double bindingEnergy(FinalStatesPolicy::EnergyConstant(ionizationShell)); - - //Direction of the secondary electron - G4double cosTheta = 0.; - G4double phi = 0.; - FinalStatesPolicy::RandomizeEjectedElectronDirection(k,secondaryKinetic, cosTheta, phi); - G4double sinTheta = std::sqrt(1.-cosTheta*cosTheta); - G4double dirx = sinTheta*std::cos(phi),diry = sinTheta*std::sin(phi),dirz = cosTheta; - G4ThreeVector DeltaDirection(dirx,diry,dirz); - DeltaDirection.rotateUz(primaryDirection); - - - G4double DeltaTotalMomentum = std::sqrt(secondaryKinetic*(secondaryKinetic + - 2.*electron_mass_c2 )); - - //Primary Particle Direction - G4double finalPx = TotalMomentum*primaryDirection.x() - - DeltaTotalMomentum*DeltaDirection.x(); - G4double finalPy = TotalMomentum*primaryDirection.y() - - DeltaTotalMomentum*DeltaDirection.y(); - G4double finalPz = TotalMomentum*primaryDirection.z() - - DeltaTotalMomentum*DeltaDirection.z(); - G4double finalMomentum = - std::sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz); - finalPx /= finalMomentum; - finalPy /= finalMomentum; - finalPz /= finalMomentum; - - this->aParticleChange.ProposeMomentumDirection( finalPx,finalPy,finalPz ); - this->aParticleChange.ProposeEnergy(k-bindingEnergy-secondaryKinetic); - this->aParticleChange.ProposeLocalEnergyDeposit(bindingEnergy); - this->aParticleChange.SetNumberOfSecondaries(1); - - G4DynamicParticle* aElectron = new G4DynamicParticle(G4Electron::Electron(),DeltaDirection,secondaryKinetic); - this->aParticleChange.AddSecondary(aElectron); - - return G4VDNAProcessInWater::PostStepDoIt(aTrack, aStep); - } -#endif /* G4DNAIONIZATIONINWATER_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh deleted file mode 100644 index 103dca5257..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh +++ /dev/null @@ -1,74 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh,v 1.2 2006/06/29 19:34:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH - #define G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - // - [protected] const G4double slaterEffectiveCharge[3] - // - [protected] const G4double sCoefficient[3] - // - [protected] const G4double kineticEnergyCorrection; - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy - { - protected: - G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy() {} - ~G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy() {} - - G4double TotalCrossSection(G4double k, G4int z) const; - G4int RandomizePartialCrossSection(G4double k, G4int z) const; - G4double EnergyConstant(G4int excitationLevelIndex) const; - void BuildTotalCrossSection(void) const {} - - private: - G4double PartialCrossSection(G4double t, G4int z, G4int excitationLevelIndex) const; - - G4double S_1s(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const; - G4double S_2s(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const; - G4double S_2p(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const; - G4double R(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const; - - // Hides default constructor and assignment operator as private - G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy(const G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy & copy); - G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy & operator=(const G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy & right); - }; - - #include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.icc" -#endif /* G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.icc deleted file mode 100644 index 86efd7a349..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.icc +++ /dev/null @@ -1,185 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.icc,v 1.2 2006/06/29 19:34:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH - #include "Randomize.hh" - - template - G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy :: TotalCrossSection(G4double k, G4int z ) const - { - if (k < EnergyLimitsPolicy::lowEnergyLimit) - { - if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit) - return 0; - - k=EnergyLimitsPolicy::lowEnergyLimit; - } - else if (k > EnergyLimitsPolicy::highEnergyLimit) - { - if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit) - return 0; - - k=EnergyLimitsPolicy::highEnergyLimit; - } - - G4int i(5); - G4double totalCrossSection(0.); - - while (i>0) - { - i--; - totalCrossSection+=PartialCrossSection(k, z, i); - } - - return totalCrossSection; - } - - template - G4int G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy :: RandomizePartialCrossSection(G4double k, G4int z) const - { - G4int i(5); - G4double values[5]; - G4double value(0); - - while (i>0) - { - i--; - values[i]=PartialCrossSection(k, z, i); - value+=values[i]; - } - - value*=G4UniformRand(); - - i=5; - while (i>0) - { - i--; - - if (values[i]>value) - return i; - - value-=values[i]; - } - - return 0; - } - - template - G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy :: EnergyConstant(G4int excitationLevelIndex) const - { - const G4double ej[]={8.17*eV, 10.13*eV, 11.31*eV, 12.91*eV, 14.50*eV}; - - return ej[excitationLevelIndex]; - } - - template - G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy :: PartialCrossSection(G4double t, G4int z, G4int excitationLevelIndex) const - { - // ( ( z * aj ) ^ omegaj ) * ( t - ej ) ^ nu - // sigma(t) = zEff^2 * sigma0 * -------------------------------------------- - // jj ^ ( omegaj + nu ) + t ^ ( omegaj + nu ) - // - // where t is the kinetic energy corrected by Helium mass over proton mass for Helium ions - // - // zEff is: - // 1 for protons - // 2 for alpha++ - // and 2 - c1 S_1s - c2 S_2s - c3 S_2p for alpha+ and He - // - // Dingfelder et al., RPC 59 p. 266 (2000) from Miller and Green (1973) - - const G4double sigma0(1.E+8 * barn); - const G4double nu(1.); - const G4double aj[]={876.*eV, 2084.*eV, 1373.*eV, 692.*eV, 900.*eV}; - const G4double jj[]={19820.*eV, 23490.*eV, 27770.*eV, 30830.*eV, 33080.*eV}; - const G4double omegaj[]={0.85, 0.88, 0.88, 0.78, 0.78}; - - G4double tCorrected; - tCorrected=t*IncomingParticlePolicy::kineticEnergyCorrection; - - G4double numerator; - numerator=std::pow(z*aj[excitationLevelIndex], omegaj[excitationLevelIndex]) * std::pow(tCorrected - EnergyConstant(excitationLevelIndex), nu); - - G4double power; - power=omegaj[excitationLevelIndex]+nu; - - G4double denominator; - denominator=std::pow(jj[excitationLevelIndex], power) + std::pow(tCorrected, power); - - G4ParticleDefinition const * particle(IncomingParticlePolicy::IncomingParticleDefinition()); - G4double zEff=particle->GetPDGCharge()/eplus+particle->GetLeptonNumber(); - - zEff-=( IncomingParticlePolicy::sCoefficient[0]*S_1s(t, EnergyConstant(excitationLevelIndex), IncomingParticlePolicy::slaterEffectiveCharge[0], 1.) + - IncomingParticlePolicy::sCoefficient[1]*S_2s(t, EnergyConstant(excitationLevelIndex), IncomingParticlePolicy::slaterEffectiveCharge[1], 2.) + - IncomingParticlePolicy::sCoefficient[2]*S_2p(t, EnergyConstant(excitationLevelIndex), IncomingParticlePolicy::slaterEffectiveCharge[2], 2.) ); - - return sigma0 * zEff * zEff * numerator / denominator; - } - - template - G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy :: S_1s(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const - { - // 1 - e^(-2r) * ( 1 + 2 r + 2 r^2) - - G4double r(R(t, energyTransferred, slaterEffectiveCharge, shellNumber)); - - return 1.-std::exp(-2*r) * ( ( 2. * r + 2. ) * r + 1. ); - } - - template - G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy :: S_2s(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const - { - // 1 - e^(-2 r) * ( 1 + 2 r + 2 r^2 + 2 r^4) - - G4double r(R(t, energyTransferred, slaterEffectiveCharge, shellNumber)); - - return 1.-std::exp(-2*r) * ( ( ( 2. * r * r + 2. ) * r + 2. ) * r + 1. ); - } - - template - G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy :: S_2p(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const - { - // 1 - e^(-2 r) * ( 1 + 2 r + 2 r^2 + 4/3 r^3 + 2/3 r^4) - - G4double r(R(t, energyTransferred, slaterEffectiveCharge, shellNumber)); - - return 1.-std::exp(-2*r) * ( ( ( ( 2./3. * r + 4./3. ) * r + 2. ) * r + 2. ) * r + 1. ); - } - - template - G4double G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy :: R(G4double t, G4double energyTransferred, G4double slaterEffectiveCharge, G4double shellNumber) const - { - // tElectron = m_electron / m_alpha * t - - G4double tElectron = 0.511/3728 * t; - - return 2.*tElectron*slaterEffectiveCharge/(energyTransferred*shellNumber); - } -#endif /* G4DNAMILLERANDGREENEXCITATIONTOTALCROSSSECTIONPOLICY_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.hh new file mode 100644 index 0000000000..6ac82c7e6a --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.hh @@ -0,0 +1,106 @@ +// +// ******************************************************************** +// * 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: G4DNAProcess.hh,v 1.5 2007/11/09 16:20:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@ge.infn.it) +// +// History: +// ----------- +// 29 Sep 2007 MGP First (incomplete) implementation +// +// ------------------------------------------------------------------- + +// Class description: +// Host class for DNA physics policies +// Further documentation available in PAPER REF. TO BE ADDED + +// ------------------------------------------------------------------- + +#ifndef G4DNAPROCESS_HH +#define G4DNAPROCESS_HH 1 + +#include "globals.hh" +#include "G4VDiscreteProcess.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4ParticleDefinition.hh" +#include "G4VParticleChange.hh" +#include "G4DynamicParticle.hh" +#include "G4ThreeVector.hh" +#include "G4FinalStateProduct.hh" +#include + +template < class TCrossSection, class TFinalState> +class G4DNAProcess : public G4VDiscreteProcess { + +public: + + // ---- MGP ---- Note: process name to be replaced with a better identifying mechanism + G4DNAProcess(const G4String& processName = "DNAProcess"): G4VDiscreteProcess(processName) { /* nop */; } + + ~G4DNAProcess() { /* nop */; } + + // ---- MGP ---- Dummy initially: process is always applicable + virtual G4bool IsApplicable(const G4ParticleDefinition&) { return true; } + + // ---- MGP ---- Dummy initially: no PhysicsTable (usefulness to be verified) + virtual void BuildPhysicsTable(const G4ParticleDefinition& /* particle */) { /* nop */; } + + // Implemented in terms of TFinalState + virtual G4VParticleChange* PostStepDoIt(const G4Track& track, const G4Step& step); + + // For testing purpose only + G4double DumpMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition) + { return GetMeanFreePath(aTrack, previousStepSize, condition); } + +protected: + + // Implemented in terms of TCrossSection + virtual G4double GetMeanFreePath(const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition); +private: + + // Hide copy constructor and assignment operator as private + G4DNAProcess& operator=(const G4DNAProcess& right); + G4DNAProcess(const G4DNAProcess& ); + + // Policy classes + TCrossSection crossSection; + TFinalState finalState; + +}; + +#include "G4DNAProcess.icc" + +#endif + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.icc new file mode 100644 index 0000000000..4f28ad965d --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.icc @@ -0,0 +1,170 @@ +// +// ******************************************************************** +// * 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: G4DNAProcess.icc,v 1.11 2007/12/10 16:31:19 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + + +template +G4double G4DNAProcess::GetMeanFreePath(const G4Track& track, + G4double /* previousStepSize */, + G4ForceCondition* /* condition */) +{ + G4double meanFreePath = DBL_MAX; + + // Assume the interacting medium to be water; one of the elements must be oxygen + G4Material* material(track.GetMaterial()); + size_t i = material->GetNumberOfElements(); + while (i>0) + { + i--; + const G4Element* element(material->GetElement(i)); + if (element->GetZ() == 8.) + { + // Number of oxygen atoms per volume = number of water molecules per volume + G4double density = material->GetAtomicNumDensityVector()[i]; + // G4cout << "density = " << density << G4endl; + if (density > 0.) + { + G4double cross = crossSection.CrossSection(track); + if (cross > 0.0) meanFreePath = 1. / (density*cross); + if (meanFreePath == 0.) meanFreePath = DBL_MIN; + return meanFreePath; + } + } + } // end while + + // If it ends up here, it means that the material is not water + G4Exception("G4DNAProcess::GetMeanFreePath - material is not water"); + // One does not really need a return statement here + return DBL_MAX; +} + + +template +G4VParticleChange* G4DNAProcess::PostStepDoIt(const G4Track& track, const G4Step& step) +{ + aParticleChange.Initialize(track); + + // G4cout << "Track initialized" << G4endl; + + // Interaction product + const G4FinalStateProduct& product = finalState.GenerateFinalState(track,step); + + // Number of secondary products to be generated + G4int nSecondaries = product.NumberOfSecondaries(); + aParticleChange.SetNumberOfSecondaries(nSecondaries); + + // Secondaries + for (G4int l = 0; l 0.0) aParticleChange.ProposeLocalEnergyDeposit(deposit); + + if (product.PrimaryParticleIsKilled()) + { + aParticleChange.ProposeTrackStatus(fStopAndKill); + aParticleChange.ProposeEnergy(0.); + aParticleChange.ProposeMomentumDirection( 0., 0., 0. ); + aParticleChange.ProposeLocalEnergyDeposit(track.GetKineticEnergy() + deposit); + + } + else + { + // Modify incident particle kinematics taking into account the generated products + + // ---- MGP ---- Temporary: assume at most one secondary product + // Sebastien: please check if consistent with current models or generalize + + // Primary particle momentum and kinetic energy + G4ThreeVector primaryMomentum = track.GetMomentum(); + G4double primaryKineticEnergy = track.GetKineticEnergy(); + + // Secondary product momentum and energy + + G4double secondaryKineticEnergy = 0.; + if (nSecondaries >0 ) + { + G4DynamicParticle* secondary = product.GetSecondaries()[0]; + secondaryKineticEnergy = secondary->GetKineticEnergy(); + + // Calculate new primary particle kinetic energy + G4double finalKineticEnergy = primaryKineticEnergy - secondaryKineticEnergy - deposit; + + if (finalKineticEnergy <= 0.0) + { + // Primary particle is stopped; kill it + aParticleChange.ProposeTrackStatus(fStopAndKill); + aParticleChange.ProposeEnergy(0.); + aParticleChange.ProposeMomentumDirection( 0., 0., 0. ); + } + else + { + // Calculate new primary particle momentum: difference between original primary one and secondary + G4ThreeVector secondaryMomentum = secondary->GetMomentum(); + G4ThreeVector finalMomentum = primaryMomentum - secondaryMomentum; + G4ThreeVector finalDirection = finalMomentum.unit(); + aParticleChange.ProposeMomentumDirection(finalDirection); + aParticleChange.ProposeEnergy(finalKineticEnergy); + } + } + else + { + // Check whether primary particle is modified + if (product.PrimaryParticleIsModified()) + { + G4ThreeVector finalDirection = product.GetModifiedDirection(); + aParticleChange.ProposeMomentumDirection(finalDirection); + G4double finalKineticEnergy = product.GetModifiedEnergy(); + aParticleChange.ProposeEnergy(finalKineticEnergy); + } + } + + } + + return G4VDiscreteProcess::PostStepDoIt(track,step ); +} diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonBornExcitation.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAProtonBornExcitation.hh deleted file mode 100644 index 482f458dc4..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonBornExcitation.hh +++ /dev/null @@ -1,77 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonBornExcitation.hh,v 1.2 2006/06/29 19:34:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAProtonBornExcitation_HH - #define G4DNAProtonBornExcitation_HH 1 - - #include "G4DNAExcitationInWater.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - #include "G4DNATotalCrossSectionFromFilePolicy.hh" - #include "G4DNABornExcitationFinalStatesPolicy.hh" - #include "G4LogLogInterpolation.hh" - - class G4DNAProtonBornExcitationEnergyLimitsPolicy - { - protected: - G4DNAProtonBornExcitationEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAProtonBornExcitationIncomingParticlePolicy - { - protected: - G4DNAProtonBornExcitationIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - }; - - class G4DNAProtonBornExcitationDataFilePolicy - { - public : - G4DNAProtonBornExcitationDataFilePolicy(); - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - const G4double dataFileEnergyUnit; - const G4double dataFileCrossSectionUnit; - const char * const dataFileName; - }; - - - class G4DNAProtonBornExcitation : public G4DNAExcitationInWater, G4DNABornExcitationFinalStatesPolicy > - { - public: - G4DNAProtonBornExcitation(const G4String & name = "G4DNAProtonBornExcitation") : G4DNAExcitationInWater, G4DNABornExcitationFinalStatesPolicy > (name) {} - virtual ~G4DNAProtonBornExcitation() {} - }; -#endif /* G4DNAProtonBornExcitation_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeDecrease.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeDecrease.hh deleted file mode 100644 index c8c7fcce8e..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeDecrease.hh +++ /dev/null @@ -1,74 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonChargeDecrease.hh,v 1.3 2006/06/29 19:34:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAPROTONCHARGEDECREASE_HH - #define G4DNAPROTONCHARGEDECREASE_HH 1 - - #include "G4DNAChargeDecreaseInWater.hh" - #include "G4DNADingfelderChargeChangeTotalCrossSectionPolicy.hh" - #include "G4DNAProtonChargeDecreaseFinalStatesPolicy.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAProtonChargeDecreaseEnergyLimitsPolicy - { - protected: - G4DNAProtonChargeDecreaseEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAProtonChargeDecreaseIncomingParticlePolicy - { - protected: - G4DNAProtonChargeDecreaseIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - - G4int NumberOfPartialCrossSections(void) const; - - G4double f0[1]; - G4double a0[1]; - G4double a1[1]; - G4double b0[1]; - G4double b1[1]; - G4double c0[1]; - G4double d0[1]; - G4double x0[1]; - G4double x1[1]; - }; - - class G4DNAProtonChargeDecrease : public G4DNAChargeDecreaseInWater, G4DNAProtonChargeDecreaseFinalStatesPolicy > - { - public: - G4DNAProtonChargeDecrease(const G4String & name = "G4DNAProtonChargeDecrease") : G4DNAChargeDecreaseInWater, G4DNAProtonChargeDecreaseFinalStatesPolicy > (name) {} - virtual ~G4DNAProtonChargeDecrease() {} - }; -#endif /* G4DNAPROTONCHARGEDECREASE_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeDecreaseFinalStatesPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeDecreaseFinalStatesPolicy.hh deleted file mode 100644 index 90f3743da1..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeDecreaseFinalStatesPolicy.hh +++ /dev/null @@ -1,67 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonChargeDecreaseFinalStates, 2005/09/14 15:46:26 francis -// GEANT4 tag $Name: emlowen-V07-01-07 - -#ifndef G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH -#define G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNAProtonChargeDecreaseFinalStatesPolicy : public EnergyLimitsPolicy - { - protected: - G4DNAProtonChargeDecreaseFinalStatesPolicy() {} - ~G4DNAProtonChargeDecreaseFinalStatesPolicy() {} - - - G4bool KillIncomingParticle(G4double energy) const; - void BuildFinalStatesData(void) const; - G4int NumberOfFinalStates(G4int finalStateIndex) const; - G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex); - G4double WaterBindingEnergyConstant(G4int finalStateIndex) const; - G4double OutgoingParticleBindingEnergyConstant(G4int finalStateIndex) const; - - // Hides default constructor and assignment operator as private - G4DNAProtonChargeDecreaseFinalStatesPolicy(const G4DNAProtonChargeDecreaseFinalStatesPolicy & copy); - G4DNAProtonChargeDecreaseFinalStatesPolicy & operator=(const G4DNAProtonChargeDecreaseFinalStatesPolicy & right); - }; - - #include "G4DNAProtonChargeDecreaseFinalStatesPolicy.icc" -#endif /* G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeDecreaseFinalStatesPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeDecreaseFinalStatesPolicy.icc deleted file mode 100644 index 2122415253..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeDecreaseFinalStatesPolicy.icc +++ /dev/null @@ -1,79 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonChargeDecreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH - #include "Randomize.hh" - #include "G4DNAGenericIonsManager.hh" - - template - G4bool G4DNAProtonChargeDecreaseFinalStatesPolicy :: KillIncomingParticle(G4double energy) const - { - if (energy - void G4DNAProtonChargeDecreaseFinalStatesPolicy :: BuildFinalStatesData(void) const - { - } - - template - G4int G4DNAProtonChargeDecreaseFinalStatesPolicy :: NumberOfFinalStates(G4int /* finalStateIndex */) const - - { - return 1; - } - - template - G4ParticleDefinition* G4DNAProtonChargeDecreaseFinalStatesPolicy :: OutgoingParticleDefinition(G4int /* finalStateIndex */) - { - G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance()); - return instance->GetIon("hydrogen"); - } - - template - G4double G4DNAProtonChargeDecreaseFinalStatesPolicy :: WaterBindingEnergyConstant(G4int /* finalStateIndex */) const - { - // Ionization energy of first water shell - // Rad. Phys. Chem. 59 p.267 by Dingf. et al. - // W + 10.79 eV -> W+ + e- - - return 10.79*eV; - } - - template - G4double G4DNAProtonChargeDecreaseFinalStatesPolicy :: OutgoingParticleBindingEnergyConstant(G4int /* finalStateIndex */) const - { - return 13.6*eV; - } -#endif /* G4DNAPROTONCHARGEDECREASEFINALSTATESPOLICY_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeIncrease.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeIncrease.hh deleted file mode 100644 index 91775548ac..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeIncrease.hh +++ /dev/null @@ -1,66 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonChargeIncrease.hh,v 1.3 2006/06/29 19:34:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAPROTONCHARGEINCREASE_HH -#define G4DNAPROTONCHARGEINCREASE_HH 1 - -#include "G4DNAChargeIncreaseInWater.hh" -#include "G4DNAProtonChargeIncreaseTotalCrossSectionPolicy.hh" -#include "G4DNAProtonChargeIncreaseFinalStatesPolicy.hh" -#include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - -class G4DNAProtonChargeIncreaseEnergyLimitsPolicy -{ -protected: - G4DNAProtonChargeIncreaseEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; -}; - -class G4DNAProtonChargeIncreaseIncomingParticlePolicy -{ -protected: - G4DNAProtonChargeIncreaseIncomingParticlePolicy(); - const G4ParticleDefinition* IncomingParticleDefinition(void) const; -}; - -class G4DNAProtonChargeIncrease : public G4DNAChargeIncreaseInWater, G4DNAProtonChargeIncreaseFinalStatesPolicy > -{ -public: - G4DNAProtonChargeIncrease(const G4String& name = "G4DNAProtonChargeIncrease") : - G4DNAChargeIncreaseInWater, - G4DNAProtonChargeIncreaseFinalStatesPolicy > - (name) {} - - virtual ~G4DNAProtonChargeIncrease() {} -}; -#endif /* G4DNAPROTONCHARGEINCREASE_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeIncreaseFinalStatesPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeIncreaseFinalStatesPolicy.hh deleted file mode 100644 index 83bf24d745..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeIncreaseFinalStatesPolicy.hh +++ /dev/null @@ -1,72 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonChargeIncreaseFinalStates, 2005/09/15 14:20:26 Ziad FRANCIS -// GEANT4 tag $Name: emlowen-V07-01-08 - -#ifndef G4DNAProtonChargeIncreaseFinalStatesPolicy_HH -#define G4DNAProtonChargeIncreaseFinalStatesPolicy_HH 1 - -#include "G4DNACrossSectionDataSet.hh" - -// IncomingParticlePolicy must provide: -// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - -// EnergyLimitsPolicy must provide: -// - [protected] const double lowEnergyLimit -// - [protected] const double zeroBelowLowEnergyLimit -// - [protected] const double highEnergyLimit -// - [protected] const double zeroAboveLowEnergyLimit - -template -class G4DNAProtonChargeIncreaseFinalStatesPolicy : public EnergyLimitsPolicy -{ -protected: - G4DNAProtonChargeIncreaseFinalStatesPolicy() {} - ~G4DNAProtonChargeIncreaseFinalStatesPolicy() {} - - // ---- MGP ---- The following line added to allow compilation with gcc 3.4.5, but it makes no sense! 25/05/2006 - G4double IncomingParticleBindingEnergyConstant (G4int) const {return 0.;} - - G4bool KillIncomingParticle(G4double energy) const; - - void BuildFinalStatesData(void) const; - - G4int NumberOfFinalStates(G4int ) const; - - G4ParticleDefinition* OutgoingParticleDefinition(G4int finalStateIndex); - - G4double ElectronsBindingEnergyConstant(G4int finalStateIndex) const; - - // Hides default constructor and assignment operator as private - G4DNAProtonChargeIncreaseFinalStatesPolicy(const G4DNAProtonChargeIncreaseFinalStatesPolicy & copy); - G4DNAProtonChargeIncreaseFinalStatesPolicy & operator=(const G4DNAProtonChargeIncreaseFinalStatesPolicy & right); -}; - -#include "G4DNAProtonChargeIncreaseFinalStatesPolicy.icc" -#endif /* G4DNAProtonChargeIncreaseFinalStatesPolicy_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeIncreaseFinalStatesPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeIncreaseFinalStatesPolicy.icc deleted file mode 100644 index 44acda22cc..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeIncreaseFinalStatesPolicy.icc +++ /dev/null @@ -1,71 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonChargeIncreaseFinalStatesPolicy.icc,v 2005/09/15 14:38:34 Ziad FRANCIS -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAProtonChargeIncreaseFinalStatesPolicy_HH - #include "Randomize.hh" - #include "G4DNAGenericIonsManager.hh" - #include "G4Proton.hh" - - template - G4bool G4DNAProtonChargeIncreaseFinalStatesPolicy::KillIncomingParticle(G4double energy) const - { - if(energy < EnergyLimitsPolicy::lowEnergyLimit) return(true); - else return (false); - } - - template - G4int G4DNAProtonChargeIncreaseFinalStatesPolicy::NumberOfFinalStates(G4int) const - - { - return(1); - } - - template - void G4DNAProtonChargeIncreaseFinalStatesPolicy::BuildFinalStatesData(void) const - {} - - template - G4ParticleDefinition* G4DNAProtonChargeIncreaseFinalStatesPolicy::OutgoingParticleDefinition(G4int finalStateIndex) - { - G4double dummy; - dummy = finalStateIndex; //Just a dummy variable - return (G4Proton::Proton()); - } - - template - G4double G4DNAProtonChargeIncreaseFinalStatesPolicy::ElectronsBindingEnergyConstant(G4int finalStateIndex) const - { - if(finalStateIndex==1)return(13.6*eV); - else {G4cout<<"Warning in ProtonChargeIncreaseProcess not a permitted finalStateIndex Value !"< -class G4DNAProtonChargeIncreaseTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy -{ -protected: - G4DNAProtonChargeIncreaseTotalCrossSectionPolicy() {} - ~G4DNAProtonChargeIncreaseTotalCrossSectionPolicy() {} - - G4double TotalCrossSection(G4double k, G4int z) const; - void BuildTotalCrossSection(void) const {} - G4int RandomizePartialCrossSection(G4double, G4int) {return 0;} - - // Hides default constructor and assignment operator as private - G4DNAProtonChargeIncreaseTotalCrossSectionPolicy(const G4DNAProtonChargeIncreaseTotalCrossSectionPolicy & copy); - G4DNAProtonChargeIncreaseTotalCrossSectionPolicy & operator=(const G4DNAProtonChargeIncreaseTotalCrossSectionPolicy & right); -}; - -#include "G4DNAProtonChargeIncreaseTotalCrossSectionPolicy.icc" -#endif /* G4DNAPROTONCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeIncreaseTotalCrossSectionPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeIncreaseTotalCrossSectionPolicy.icc deleted file mode 100644 index 9a0cf80ea8..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonChargeIncreaseTotalCrossSectionPolicy.icc +++ /dev/null @@ -1,83 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonChargeIncreaseTotalCrossSectionPolicy.icc,v 1.4 2006/06/29 19:35:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNAPROTONCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH -#include "Randomize.hh" - - template - G4double G4DNAProtonChargeIncreaseTotalCrossSectionPolicy :: TotalCrossSection(G4double k, G4int z) const - { - if (k < EnergyLimitsPolicy::lowEnergyLimit) - { - if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit) - return 0; - - k=EnergyLimitsPolicy::lowEnergyLimit; - } - else if (k > EnergyLimitsPolicy::highEnergyLimit) - { - if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit) - return 0; - - k=EnergyLimitsPolicy::highEnergyLimit; - } - G4double dummy;//Only a dummy - dummy = z; - - G4double totalCrossSection(0.); - - //--------Following model is proposed by Miller and Green--------- - /* - const G4double s0 = 1e-20; - const G4double a = 79.3*keV; - const G4double omega = 0.652; - const G4double i = 12.61*eV; - const G4double nu = 0.943; - const G4double j = 27.7*keV; - totalCrossSection = (s0*std::pow(10*a/keV,omega)*std::pow(k/keV-i/keV, nu)) / (std::pow(j/keV,omega+nu) + std::pow(k/keV,omega+nu));*/ - - //----------Following model is proposed by Dingfelder-------------- - const G4double aa=2.835; - const G4double bb=0.310; - const G4double cc=2.100; - const G4double dd=0.760; - const G4double fac=1.0e-18; - const G4double rr=13.606*eV; - - G4double t = k / (proton_mass_c2/electron_mass_c2); - G4double x = t / rr; - G4double sigmal = 4.0*pi*Bohr_radius/nm*Bohr_radius/nm*fac*cc*(std::pow(x,dd)); - G4double sigmah = 4.0*pi*Bohr_radius/nm*Bohr_radius/nm*fac*(aa*std::log(1.0+x)+bb)/x; - totalCrossSection = 1.0/(1.0/sigmal + 1.0/sigmah); - - return totalCrossSection*m*m; - } - -#endif /* G4DNAPROTONCHARGEINCREASETOTALCROSSSECTIONPOLICY_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonExcitation.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAProtonExcitation.hh deleted file mode 100644 index 602885c24b..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonExcitation.hh +++ /dev/null @@ -1,65 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonExcitation.hh,v 1.2 2006/06/29 19:35:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAPROTONEXCITATION_HH - #define G4DNAPROTONEXCITATION_HH 1 - - #include "G4DNAExcitationInWater.hh" - #include "G4DNAMillerAndGreenExcitationTotalCrossSectionPolicy.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAProtonExcitationEnergyLimitsPolicy - { - protected: - G4DNAProtonExcitationEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAProtonExcitationIncomingParticlePolicy - { - protected: - G4DNAProtonExcitationIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - - G4double slaterEffectiveCharge[3]; - G4double sCoefficient[3]; - const G4double kineticEnergyCorrection; - }; - - class G4DNAProtonExcitation : public G4DNAExcitationInWater, G4DNAStopAndKillBelowEnergyLimitPolicy > - { - public: - G4DNAProtonExcitation(const G4String & name = "G4DNAProtonExcitation") : G4DNAExcitationInWater, G4DNAStopAndKillBelowEnergyLimitPolicy > (name) {} - virtual ~G4DNAProtonExcitation() {} - }; -#endif /* G4DNAPROTONEXCITATION_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonRuddIonization.hh b/source/processes/electromagnetic/lowenergy/include/G4DNAProtonRuddIonization.hh deleted file mode 100644 index f28cffdbc0..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAProtonRuddIonization.hh +++ /dev/null @@ -1,76 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonRuddIonization.hh,v 1.4 2006/06/29 19:35:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNAPROTONRUDDIONIZATION_HH - #define G4DNAPROTONRUDDIONIZATION_HH 1 - - #include "G4DNAIonizationInWater.hh" - #include "G4DNATotalCrossSectionFromFilePolicy.hh" - #include "G4DNARuddIonizationFinalStatesPolicy.hh" - #include "G4LogLogInterpolation.hh" - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.hh" - - class G4DNAProtonRuddIonizationEnergyLimitsPolicy - { - protected: - G4DNAProtonRuddIonizationEnergyLimitsPolicy(); - - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - }; - - class G4DNAProtonRuddIonizationIncomingParticlePolicy - { - protected: - G4DNAProtonRuddIonizationIncomingParticlePolicy(); - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - }; - - class G4DNAProtonRuddDataFilePolicy - { - public : - G4DNAProtonRuddDataFilePolicy(); - const G4double lowEnergyLimit; - const G4bool zeroBelowLowEnergyLimit; - const G4double highEnergyLimit; - const G4bool zeroAboveHighEnergyLimit; - const G4double dataFileEnergyUnit; - const G4double dataFileCrossSectionUnit; - const char * const dataFileName; - }; - - class G4DNAProtonRuddIonization : public G4DNAIonizationInWater, G4DNARuddIonizationFinalStatesPolicy > - { - public: - G4DNAProtonRuddIonization(const G4String & name = "G4DNAProtonRuddIonization") : G4DNAIonizationInWater, G4DNARuddIonizationFinalStatesPolicy > (name) {} - virtual ~G4DNAProtonRuddIonization() {} - }; -#endif /* G4DNAPROTONRUDDIONIZATION_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNARuddIonizationFinalStatesPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNARuddIonizationFinalStatesPolicy.hh deleted file mode 100644 index 2ac99cc5dd..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNARuddIonizationFinalStatesPolicy.hh +++ /dev/null @@ -1,71 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNARuddIonizationFinalStatesPolicy, 2005/09/19 19:06:45 Ziad FRANCIS -// GEANT4 tag $Name: emlowen-V07-01-10 - -#ifndef G4DNARuddIonizationFinalStatesPolicy_HH -#define G4DNARuddIonizationFinalStatesPolicy_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNARuddIonizationFinalStatesPolicy : public EnergyLimitsPolicy, public IncomingParticlePolicy - { - protected: - G4DNARuddIonizationFinalStatesPolicy() {} - ~G4DNARuddIonizationFinalStatesPolicy() {} - - - G4bool KillIncomingParticle(G4double energy) const; - void BuildFinalStatesData(void) const; - G4double RandomizeEjectedElectronEnergy(G4double incomingParticleEnergy, G4int shell) const; - void RandomizeEjectedElectronDirection(G4double incomingParticleEnergy, G4double - outgoingParticleEnergy, G4double & cosTheta, G4double & phi ) const; - G4double EnergyConstant(G4int ionizationLevel) const; - - private: - G4double DifferentialCrossSection(G4double k, G4double energyTransfer, G4int shell) const; - G4double CorrectionFactor(G4double k) const; - - // Hides default constructor and assignment operator as private - G4DNARuddIonizationFinalStatesPolicy(const G4DNARuddIonizationFinalStatesPolicy & copy); - G4DNARuddIonizationFinalStatesPolicy & operator=(const G4DNARuddIonizationFinalStatesPolicy & right); - }; - - #include "G4DNARuddIonizationFinalStatesPolicy.icc" -#endif /* G4DNARuddIonizationFinalStatesPolicy_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNARuddIonizationFinalStatesPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNARuddIonizationFinalStatesPolicy.icc deleted file mode 100644 index 4078db2b12..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNARuddIonizationFinalStatesPolicy.icc +++ /dev/null @@ -1,151 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNARuddIonizationFinalStatesPolicy.icc,v 2005/09/19 19:08:54 Ziad FRANCIS -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNARuddIonizationFinalStatesPolicy_HH - #include "Randomize.hh" - - - template - G4bool G4DNARuddIonizationFinalStatesPolicy :: KillIncomingParticle(G4double energy) const - { - if(energy < EnergyLimitsPolicy::lowEnergyLimit) return(true); - else return (false); - } - - template - void G4DNARuddIonizationFinalStatesPolicy ::BuildFinalStatesData(void) const - {} - - template - G4double G4DNARuddIonizationFinalStatesPolicy ::RandomizeEjectedElectronEnergy(G4double k, G4int shell) const - { - G4double maximumKineticEnergyTransfer = 4.* (electron_mass_c2 / proton_mass_c2) * k; - G4double crossSectionMaximum=0.; - for(G4double value=EnergyConstant(shell); value<=4.*EnergyConstant(shell) ; value+=0.1*eV){ - G4double differentialCrossSection = DifferentialCrossSection(k, value, shell); - if(differentialCrossSection >= crossSectionMaximum) crossSectionMaximum = differentialCrossSection; - } - G4double secElecKinetic=0.; - do{ - secElecKinetic = G4UniformRand() * maximumKineticEnergyTransfer; - }while(G4UniformRand()*crossSectionMaximum > DifferentialCrossSection(k,secElecKinetic+EnergyConstant(shell),shell)); - return(secElecKinetic); - } - - template - G4double G4DNARuddIonizationFinalStatesPolicy ::CorrectionFactor(G4double k) const - { - if(IncomingParticlePolicy::IncomingParticleDefinition()->GetParticleName() == "proton") return(1); - else if(IncomingParticlePolicy::IncomingParticleDefinition()->GetParticleName() == "hydrogen") { - G4double value = (std::log(k/eV)-4.2)/0.5; - return((0.8/(1+std::exp(value))) + 0.9); - } - else return(1.); - } - - template - void G4DNARuddIonizationFinalStatesPolicy ::RandomizeEjectedElectronDirection(G4double k, G4double secKinetic, G4double & cosTheta, G4double & phi ) const - { - G4double maxSecKinetic = 4.* (electron_mass_c2 / proton_mass_c2) * k; - phi = twopi * G4UniformRand(); - cosTheta = std::sqrt(secKinetic / maxSecKinetic); - } - - template - G4double G4DNARuddIonizationFinalStatesPolicy::EnergyConstant(G4int ionizationLevel) const - { - const G4double bindingEnergy[]={10.79*eV, 13.39*eV, 16.05*eV, 32.30*eV, 539.0*eV}; - return(bindingEnergy[ionizationLevel]); - } - - - template - G4double G4DNARuddIonizationFinalStatesPolicy::DifferentialCrossSection(G4double k, G4double energyTransfer, G4int ionizationLevelIndex) const - { - // Shells ids are 0 1 2 3 4 (4 is k shell) - // !!Attention, "energyTransfer" here is the energy transfered to the electron which means - // that the secondary kinetic energy is w = energyTransfer - bindingEnergy - // - // ds S F1(nu) + w * F2(nu) - // ---- = G(k) * ---- ------------------------------------------- - // dw Bj (1+w)^3 * [1 + exp{alpha * (w - wc) / nu}] - // - // w is the secondary electron kinetic Energy in eV - // - // All the other parameters can be found in Rudd's Papers - // - // M.Eugene Rudd, 1988, User-Friendly model for the energy distribution of - // electrons from protons or electron collisions. Nucl. Tracks Rad. Meas.Vol 16 N0 2/3 pp 219-218 - // - - const G4int j=ionizationLevelIndex; - - G4double A1 ; G4double B1 ; G4double C1 ; G4double D1 ; G4double E1 ; - G4double A2 ; G4double B2 ; G4double C2 ; G4double D2 ; G4double Alpha ; - - if(j == 4) {//Data For Liquid Water K SHELL from Dingfelder (Protons in Water) - A1 = 1.25; B1 = 0.5; C1 = 1.00; D1 = 1.00; E1 = 3.00; A2 = 1.10; B2 = 1.30; - C2 = 1.00; D2 = 0.00; Alpha = 0.66;} - else {//Data For Liquid Water from Dingfelder (Protons in Water) - A1 = 1.02; B1 = 82.0; C1 = 0.45; D1 = -0.80; E1 = 0.38; A2 = 1.07; B2 = 14.6; - C2 = 0.60; D2 = 0.04; Alpha = 0.64;} - - const G4double n = 2.; - const G4double Gj[5] = {0.99, 1.11, 1.11, 0.52, 1.}; - - //const G4double I[5]={12.61*eV, 14.73*eV, 18.55*eV, 32.2*eV, 539.7*eV}; // for water Vapor - //const G4double energyConstant[]={10.79*eV, 13.39*eV, 16.05*eV, 32.30*eV, 539.*eV}; - - G4double W = (energyTransfer - EnergyConstant(ionizationLevelIndex)); - G4double w = W / EnergyConstant(ionizationLevelIndex); - G4double Ry = 13.6*eV; - - G4double tau = (electron_mass_c2/proton_mass_c2) * k ; - - G4double S = 4.*pi*Bohr_radius*Bohr_radius*n*std::pow((Ry/EnergyConstant(ionizationLevelIndex)),2); - G4double v2 = tau / EnergyConstant(ionizationLevelIndex); - G4double v = std::sqrt(v2); - G4double wc = 4.*v2 - 2.*v - (Ry/(4.*EnergyConstant(ionizationLevelIndex))); - - G4double L1 = (C1* std::pow(v,(D1))) / (1.+ E1*std::pow(v, (D1+4.))); - G4double L2 = C2*std::pow(v,(D2)); - G4double H1 = (A1*std::log(1.+v2)) / (v2+(B1/v2)); - G4double H2 = (A2/v2) + (B2/(v2*v2)); - - G4double F1 = L1+H1; - G4double F2 = (L2*H2)/(L2+H2); - - - G4double sigma = CorrectionFactor(k/eV) * Gj[j] * (S/EnergyConstant(ionizationLevelIndex)) * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(Alpha*(w-wc)/v))) ); -return(sigma); -} - -#endif /* G4DNARuddIonizationTotalCrossSectionPolicy_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNARuddIonizationTotalCrossSectionPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNARuddIonizationTotalCrossSectionPolicy.hh deleted file mode 100644 index 79ab863879..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNARuddIonizationTotalCrossSectionPolicy.hh +++ /dev/null @@ -1,59 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNARuddIonizationTotalCrossSectionPolicy, 2005/07/22 14:33:54 francis -// GEANT4 tag $Name: emlowen-V07-01-03 - -#ifndef G4DNARuddIonizationTotalCrossSectionPolicy_HH -#define G4DNARuddIonizationTotalCrossSectionPolicy_HH 1 - - #include "G4DNACrossSectionDataSet.hh" - - // IncomingParticlePolicy must provide: - // - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit - // - [protected] const double zeroBelowLowEnergyLimit - // - [protected] const double highEnergyLimit - // - [protected] const double zeroAboveLowEnergyLimit - - template - class G4DNARuddIonizationTotalCrossSectionPolicy : public IncomingParticlePolicy, public EnergyLimitsPolicy - { - protected: - G4DNARuddIonizationTotalCrossSectionPolicy() {} - ~G4DNARuddIonizationTotalCrossSectionPolicy() {} - - // Hides default constructor and assignment operator as private - G4DNARuddIonizationTotalCrossSectionPolicy(const G4DNARuddIonizationTotalCrossSectionPolicy & copy); - G4DNARuddIonizationTotalCrossSectionPolicy & operator=(const G4DNARuddIonizationTotalCrossSectionPolicy & right); - }; - -// #include "G4DNARuddIonizationTotalCrossSectionPolicy.icc" -#endif /* G4DNARuddIonizationTotalCrossSectionPolicy_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNARutherfordTotalCrossSectionPolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNARutherfordTotalCrossSectionPolicy.hh deleted file mode 100644 index ef85c1d974..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNARutherfordTotalCrossSectionPolicy.hh +++ /dev/null @@ -1,63 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNARutherfordTotalCrossSectionPolicy.hh,v 1.3 2006/06/29 19:35:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNARUTHERFORDTOTALCROSSSECTIONPOLICY_HH - #define G4DNARUTHERFORDTOTALCROSSSECTIONPOLICY_HH 1 - - #include "globals.hh" - - // EnergyLimitsPolicy must provide: - // - [public] static const double lowEnergyLimit - // - [public] static const double zeroBelowLowEnergyLimit - // - [public] static const double highEnergyLimit - // - [public] static const double zeroAboveLowEnergyLimit - - template - class G4DNARutherfordTotalCrossSectionPolicy - { - protected: - G4DNARutherfordTotalCrossSectionPolicy() {} - ~G4DNARutherfordTotalCrossSectionPolicy() {} - - const G4ParticleDefinition * IncomingParticleDefinition(void) const; - G4double TotalCrossSection(G4double k, G4int z) const; - void BuildTotalCrossSection(void) const {} - - private: - G4double RutherfordTotalCrossSection(G4double k, G4int z) const; - G4double ScreeningFactor(G4double k, G4int z) const; - - // Hides default constructor and assignment operator as private - G4DNARutherfordTotalCrossSectionPolicy(const G4DNARutherfordTotalCrossSectionPolicy & copy); - G4DNARutherfordTotalCrossSectionPolicy & operator=(const G4DNARutherfordTotalCrossSectionPolicy & right); - }; - - #include "G4DNARutherfordTotalCrossSectionPolicy.icc" -#endif /* G4DNARUTHERFORDTOTALCROSSSECTIONPOLICY_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNARutherfordTotalCrossSectionPolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNARutherfordTotalCrossSectionPolicy.icc deleted file mode 100644 index e49439f132..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNARutherfordTotalCrossSectionPolicy.icc +++ /dev/null @@ -1,124 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNARutherfordTotalCrossSectionPolicy.icc,v 1.2 2006/06/29 19:35:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNARUTHERFORDTOTALCROSSSECTIONPOLICY_HH - #include "G4Electron.hh" - - template - const G4ParticleDefinition *G4DNARutherfordTotalCrossSectionPolicy :: IncomingParticleDefinition(void) const - { - return G4Electron::Electron(); - } - - - - template - G4double G4DNARutherfordTotalCrossSectionPolicy :: TotalCrossSection(G4double k, G4int z) const - { - // pi * sigma_Ruth(K) - // sigma_el(K) = -------------------- - // n(K) * (n(K) + 1) - // - // Where K is the electron non-relativistic kinetic energy - // Cross section per water molecule - - if (k < EnergyLimitsPolicy::lowEnergyLimit) - { - if (EnergyLimitsPolicy::zeroBelowLowEnergyLimit) - return 0; - - k=EnergyLimitsPolicy::lowEnergyLimit; - } - else if (k > EnergyLimitsPolicy::highEnergyLimit) - { - if (EnergyLimitsPolicy::zeroAboveHighEnergyLimit) - return 0; - - k=EnergyLimitsPolicy::highEnergyLimit; - } - - G4double n=ScreeningFactor(k,z); - - return (pi * RutherfordTotalCrossSection(k, z))/(n*(n+1.)); - } - - - - - - template - G4double G4DNARutherfordTotalCrossSectionPolicy :: RutherfordTotalCrossSection(G4double k, G4int z) const - { - // e^4 / K + m_e c^2 \^2 - // sigma_Ruth(K) = Z (Z+1) -------------------- | --------------------- | - // (4 pi epsilon_0)^2 \ K * (K + 2 m_e c^2) / - // - // Where K is the electron non-relativistic kinetic energy - // - // Nucl. Instr. Meth. 155 (1978) 145-156 - - G4double length; - length=(e_squared*(k+electron_mass_c2))/(4*pi*epsilon0*k*(k+2*electron_mass_c2)); - - return static_cast(z*(z+1))*length*length; - } - - - - template - G4double G4DNARutherfordTotalCrossSectionPolicy :: ScreeningFactor(G4double k, G4int z) const - { - // - // alpha_1 + beta_1 ln(K/eV) constK Z^(2/3) - // n(T) = -------------------------- ----------------- - // K/(m_e c^2) 2 + K/(m_e c^2) - // - // Where K is the electron non-relativistic kinetic energy - // - // n(T) > 0 for T < ~ 400 MeV - // - // Nucl. Instr. Meth. 155 (1978) 145-156 - - const G4double alpha_1(1.64); - const G4double beta_1(-0.0825); - const G4double constK(1.7E-5); - - G4double numerator; - numerator=(alpha_1+beta_1*std::log(k/eV))*constK*std::pow(static_cast(z), 2./3.); - - k/=electron_mass_c2; - - G4double denominator; - denominator=k*(2+k); - - return numerator/denominator; - } - -#endif /* G4DNARUTHERFORDTOTALCROSSSECTIONPOLICY_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNATotalCrossSectionFromFilePolicy.hh b/source/processes/electromagnetic/lowenergy/include/G4DNATotalCrossSectionFromFilePolicy.hh deleted file mode 100644 index c940d00766..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNATotalCrossSectionFromFilePolicy.hh +++ /dev/null @@ -1,75 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNATotalCrossSectionFromFilePolicy.hh,v 1.5 2006/06/29 19:35:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifndef G4DNATOTALCROSSSECTIONFROMFILEPOLICY_HH -#define G4DNATOTALCROSSSECTIONFROMFILEPOLICY_HH 1 - -#include "G4DNACrossSectionDataSet.hh" - -// IncomingParticlePolicy must provide: -// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void); - -// DataFilePolicy must provide: -// - [public] static const double lowEnergyLimit -// - [public] static const double zeroBelowLowEnergyLimit -// - [public] static const double highEnergyLimit -// - [public] static const double zeroAboveLowEnergyLimit -// - [public] static const double dataFileEnergyUnit -// - [public] static const double dataFileCrossSectionUnit -// - [public] static char const * const dataFileName - -// InterpolationAlgorithmPolicy must inherit from [public] G4VDataSetAlgorithm - -template -class G4DNATotalCrossSectionFromFilePolicy : public IncomingParticlePolicy -{ -protected: - G4DNATotalCrossSectionFromFilePolicy(); - ~G4DNATotalCrossSectionFromFilePolicy(); - - G4double TotalCrossSection(G4double k, G4int z) const; - G4int RandomizePartialCrossSection(G4double k, G4int z); - G4int NumberOfPartialCrossSections(void); - void BuildTotalCrossSection(void); - -private: - void Free(void); - - G4DNACrossSectionDataSet* dataset; - G4double* valuesBuffer; - DataFilePolicy dataFilePolicy; - - // Hides default constructor and assignment operator as private - G4DNATotalCrossSectionFromFilePolicy(const G4DNATotalCrossSectionFromFilePolicy & copy); - G4DNATotalCrossSectionFromFilePolicy & operator=(const G4DNATotalCrossSectionFromFilePolicy & right); -}; - -#include "G4DNATotalCrossSectionFromFilePolicy.icc" -#endif /* G4DNATOTALCROSSSECTIONFROMFILEPOLICY_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNATotalCrossSectionFromFilePolicy.icc b/source/processes/electromagnetic/lowenergy/include/G4DNATotalCrossSectionFromFilePolicy.icc deleted file mode 100644 index ba6ea958a7..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4DNATotalCrossSectionFromFilePolicy.icc +++ /dev/null @@ -1,146 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNATotalCrossSectionFromFilePolicy.icc,v 1.4 2006/06/29 19:35:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifdef G4DNATOTALCROSSSECTIONFROMFILEPOLICY_HH - #include "G4Electron.hh" - - #include "Randomize.hh" - - template - G4DNATotalCrossSectionFromFilePolicy :: G4DNATotalCrossSectionFromFilePolicy() - : - dataset(0), - valuesBuffer(0) - { - } - - template - G4DNATotalCrossSectionFromFilePolicy :: ~G4DNATotalCrossSectionFromFilePolicy() - { - Free(); - } - - template - G4double G4DNATotalCrossSectionFromFilePolicy :: TotalCrossSection(G4double k, G4int /* z */) const - { - if (!dataset) - { - G4Exception("G4DNATotalCrossSectionFromFilePolicy<>::TotalCrossSection: dataset not loaded"); - return 0; - } - - if (k < dataFilePolicy.lowEnergyLimit) - { - if (dataFilePolicy.zeroBelowLowEnergyLimit) - return 0; - - k=dataFilePolicy.lowEnergyLimit; - } - else if (k > dataFilePolicy.highEnergyLimit) - { - if (dataFilePolicy.zeroAboveHighEnergyLimit) - return 0; - - k=dataFilePolicy.highEnergyLimit; - } - - return dataset->FindValue(k); - } - - template - G4int G4DNATotalCrossSectionFromFilePolicy :: RandomizePartialCrossSection(G4double k, G4int /* z */) - { - if (!dataset) - { - G4Exception("G4DNATotalCrossSectionFromFilePolicy<>::RandomizePartialCrossSection: dataset not loaded"); - return 0; - } - - const size_t n(dataset->NumberOfComponents()); - size_t i(n); - G4double value(0); - - while (i>0) - { - i--; - valuesBuffer[i]=dataset->GetComponent(i)->FindValue(k); - value+=valuesBuffer[i]; - } - - value*=G4UniformRand(); - - i=n; - - while (i>0) - { - i--; - - if (valuesBuffer[i]>value) - return i; - - value-=valuesBuffer[i]; - } - - return 0; - } - - template - G4int G4DNATotalCrossSectionFromFilePolicy :: NumberOfPartialCrossSections(void) - { - if (!dataset) - { - G4Exception("G4DNATotalCrossSectionFromFilePolicy<>::NumberOfPartialCrossSections: dataset not loaded"); - return 0; - } - - return dataset->NumberOfComponents(); - } - - template - void G4DNATotalCrossSectionFromFilePolicy :: BuildTotalCrossSection(void) - { - Free(); - - dataset=new G4DNACrossSectionDataSet(new InterpolationAlgorithmPolicy, dataFilePolicy.dataFileEnergyUnit, dataFilePolicy.dataFileCrossSectionUnit); - dataset->LoadData(dataFilePolicy.dataFileName); - - valuesBuffer=new G4double[dataset->NumberOfComponents()]; - } - - template - void G4DNATotalCrossSectionFromFilePolicy :: Free(void) - { - if (dataset) - delete dataset; - - if (valuesBuffer) - delete[] valuesBuffer; - } -#endif /* G4DNATOTALCROSSSECTIONFROMFILEPOLICY_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4DummyFinalState.hh b/source/processes/electromagnetic/lowenergy/include/G4DummyFinalState.hh new file mode 100644 index 0000000000..c298deeba3 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4DummyFinalState.hh @@ -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: G4DummyFinalState.hh,v 1.2 2007/10/07 12:52:18 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4DUMMYFINALSTATE_HH +#define G4DUMMYFINALSTATE_HH 1 + +#include "globals.hh" +//#include "G4Track.hh" +//#include "G4Step.hh" +#include "G4FinalStateProduct.hh" + + +class G4Track; +class G4Step; + + class G4DummyFinalState + { + public: + + G4DummyFinalState(); + + ~G4DummyFinalState(); + + const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step); + + private: + + // Copy constructor and assignment operator to be added here + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + G4FinalStateProduct product; + + }; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4EMDataSet.hh b/source/processes/electromagnetic/lowenergy/include/G4EMDataSet.hh index 1dce41e2aa..30c729ac0a 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4EMDataSet.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4EMDataSet.hh @@ -25,7 +25,7 @@ // // // $Id: G4EMDataSet.hh,v 1.7 2006/06/29 19:35:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4FinalStateChargeDecrease.hh b/source/processes/electromagnetic/lowenergy/include/G4FinalStateChargeDecrease.hh new file mode 100755 index 0000000000..696bf267f5 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4FinalStateChargeDecrease.hh @@ -0,0 +1,92 @@ +// +// ******************************************************************** +// * 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: G4FinalStateChargeDecrease.hh,v 1.1 2007/11/08 18:24:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4FINALSTATECHARGEDECREASE_HH +#define G4FINALSTATECHARGEDECREASE_HH 1 + +#include "globals.hh" +#include "G4FinalStateProduct.hh" +//#include "G4WaterExcitationStructure.hh" +#include "G4CrossSectionChargeDecreasePartial.hh" + +class G4Track; +class G4Step; + + class G4FinalStateChargeDecrease + { + public: + + G4FinalStateChargeDecrease(); + + ~G4FinalStateChargeDecrease(); + + const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step); + + private: + + // Copy constructor and assignment operator to be added here + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + G4FinalStateProduct product; + + G4CrossSectionChargeDecreasePartial cross; + + G4int NumberOfFinalStates(G4ParticleDefinition* particleDefinition, G4int finalStateIndex); + G4ParticleDefinition* OutgoingParticleDefinition(G4ParticleDefinition* particleDefinition, G4int finalStateIndex); + G4double WaterBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex); + G4double OutgoingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex); + +}; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4FinalStateChargeIncrease.hh b/source/processes/electromagnetic/lowenergy/include/G4FinalStateChargeIncrease.hh new file mode 100755 index 0000000000..cd60f0b03a --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4FinalStateChargeIncrease.hh @@ -0,0 +1,92 @@ +// +// ******************************************************************** +// * 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: G4FinalStateChargeIncrease.hh,v 1.1 2007/11/08 18:24:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4FINALSTATECHARGEIncrease_HH +#define G4FINALSTATECHARGEIncrease_HH 1 + +#include "globals.hh" +#include "G4FinalStateProduct.hh" +#include "G4CrossSectionChargeIncreasePartial.hh" + +class G4Track; +class G4Step; + + class G4FinalStateChargeIncrease + { + public: + + G4FinalStateChargeIncrease(); + + ~G4FinalStateChargeIncrease(); + + const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step); + + private: + + // Copy constructor and assignment operator to be added here + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + G4FinalStateProduct product; + + G4CrossSectionChargeIncreasePartial cross; + + G4int NumberOfFinalStates(G4ParticleDefinition* particleDefinition, G4int finalStateIndex); + G4ParticleDefinition* OutgoingParticleDefinition(G4ParticleDefinition* particleDefinition, G4int finalStateIndex); + G4double WaterBindingEnergyConstant(G4ParticleDefinition * aParticleDefinition, G4int finalStateIndex); + G4double OutgoingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex); + G4double IncomingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex); + +}; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4FinalStateElasticBrennerZaider.hh b/source/processes/electromagnetic/lowenergy/include/G4FinalStateElasticBrennerZaider.hh new file mode 100644 index 0000000000..5ea8acea58 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4FinalStateElasticBrennerZaider.hh @@ -0,0 +1,92 @@ +// +// ******************************************************************** +// * 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: G4FinalStateElasticBrennerZaider.hh,v 1.1 2007/10/12 23:07:10 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4FINALSTATEELASTICBRENNERZAIDER_HH +#define G4FINALSTATEELASTICBRENNERZAIDER_HH 1 + +#include "globals.hh" +#include "G4FinalStateProduct.hh" + +class G4Track; +class G4Step; + + class G4FinalStateElasticBrennerZaider + { + public: + + G4FinalStateElasticBrennerZaider(); + + ~G4FinalStateElasticBrennerZaider(); + + const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step); + + private: + + // Copy constructor and assignment operator to be added here + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + G4FinalStateProduct product; + + std::vector betaCoeff; + std::vector deltaCoeff; + std::vector gamma035_10Coeff; + std::vector gamma10_100Coeff; + std::vector gamma100_200Coeff; + + G4double RandomizeCosTheta(G4double k); + + G4double CalculatePolynomial(G4double k, std::vector& vec); + }; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4FinalStateElasticScreenedRutherford.hh b/source/processes/electromagnetic/lowenergy/include/G4FinalStateElasticScreenedRutherford.hh new file mode 100644 index 0000000000..a0d467363a --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4FinalStateElasticScreenedRutherford.hh @@ -0,0 +1,86 @@ +// +// ******************************************************************** +// * 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: G4FinalStateElasticScreenedRutherford.hh,v 1.2 2007/10/12 23:02:55 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4FINALSTATEELASTICSCREENEDRUTHERFORD_HH +#define G4FINALSTATEELASTICSCREENEDRUTHERFORD_HH 1 + +#include "globals.hh" +#include "G4FinalStateProduct.hh" + +class G4Track; +class G4Step; + + class G4FinalStateElasticScreenedRutherford + { + public: + + G4FinalStateElasticScreenedRutherford(); + + ~G4FinalStateElasticScreenedRutherford(); + + const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step); + + private: + + // Copy constructor and assignment operator to be added here + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + G4FinalStateProduct product; + + G4double RandomizeCosTheta(G4double k, G4int z) const; + + G4double ScreeningFactor(G4double k, G4int z) const; + }; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationBorn.hh b/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationBorn.hh new file mode 100644 index 0000000000..1efced932c --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationBorn.hh @@ -0,0 +1,88 @@ +// +// ******************************************************************** +// * 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: G4FinalStateExcitationBorn.hh,v 1.1 2007/10/15 08:33:25 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4FINALSTATEEXCITATIONBORN_HH +#define G4FINALSTATEEXCITATIONBORN_HH 1 + +#include "globals.hh" +#include "G4FinalStateProduct.hh" +#include "G4WaterExcitationStructure.hh" +#include "G4CrossSectionExcitationBornPartial.hh" + +class G4Track; +class G4Step; + + class G4FinalStateExcitationBorn + { + public: + + G4FinalStateExcitationBorn(); + + ~G4FinalStateExcitationBorn(); + + const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step); + + private: + + // Copy constructor and assignment operator to be added here + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + G4FinalStateProduct product; + + G4WaterExcitationStructure waterStructure; + + G4CrossSectionExcitationBornPartial cross; +}; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationEmfietzoglou.hh b/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationEmfietzoglou.hh new file mode 100644 index 0000000000..31e26a46f0 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationEmfietzoglou.hh @@ -0,0 +1,88 @@ +// +// ******************************************************************** +// * 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: G4FinalStateExcitationEmfietzoglou.hh,v 1.1 2007/10/15 08:33:25 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4FINALSTATEEXCITATIONEMFIETZOGLOU_HH +#define G4FINALSTATEEXCITATIONEMFIETZOGLOU_HH 1 + +#include "globals.hh" +#include "G4FinalStateProduct.hh" +#include "G4WaterExcitationStructure.hh" +#include "G4CrossSectionExcitationEmfietzoglouPartial.hh" + +class G4Track; +class G4Step; + + class G4FinalStateExcitationEmfietzoglou + { + public: + + G4FinalStateExcitationEmfietzoglou(); + + ~G4FinalStateExcitationEmfietzoglou(); + + const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step); + + private: + + // Copy constructor and assignment operator to be added here + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + G4FinalStateProduct product; + + G4WaterExcitationStructure waterStructure; + + G4CrossSectionExcitationEmfietzoglouPartial cross; +}; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationMillerGreen.hh b/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationMillerGreen.hh new file mode 100755 index 0000000000..a3e3821035 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationMillerGreen.hh @@ -0,0 +1,88 @@ +// +// ******************************************************************** +// * 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: G4FinalStateExcitationMillerGreen.hh,v 1.1 2007/11/08 19:56:02 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4FINALSTATEEXCITATIONMILLERGREEN_HH +#define G4FINALSTATEEXCITATIONMILLERGREEN_HH 1 + +#include "globals.hh" +#include "G4FinalStateProduct.hh" +#include "G4WaterExcitationStructure.hh" +#include "G4CrossSectionExcitationMillerGreenPartial.hh" + +class G4Track; +class G4Step; + + class G4FinalStateExcitationMillerGreen + { + public: + + G4FinalStateExcitationMillerGreen(); + + ~G4FinalStateExcitationMillerGreen(); + + const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step); + + private: + + // Copy constructor and assignment operator to be added here + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + G4FinalStateProduct product; + + G4WaterExcitationStructure waterStructure; + + G4CrossSectionExcitationMillerGreenPartial cross; +}; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4FinalStateIonisationBorn.hh b/source/processes/electromagnetic/lowenergy/include/G4FinalStateIonisationBorn.hh new file mode 100755 index 0000000000..622be224ea --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4FinalStateIonisationBorn.hh @@ -0,0 +1,129 @@ +// +// ******************************************************************** +// * 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: G4FinalStateIonisationBorn.hh,v 1.3 2007/11/13 15:20:19 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4FINALSTATEIONISATIONBORN_HH +#define G4FINALSTATEIONISATIONBORN_HH 1 + +#include "globals.hh" +#include "G4FinalStateProduct.hh" +#include "G4WaterIonisationStructure.hh" +#include "G4CrossSectionIonisationBornPartial.hh" + +class G4Track; +class G4Step; + + class G4FinalStateIonisationBorn + { + public: + + G4FinalStateIonisationBorn(); + + ~G4FinalStateIonisationBorn(); + + const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step); + + private: + + // Copy constructor and assignment operator to be added here + + G4String name; + G4double lowEnergyLimitDefault; + G4double highEnergyLimitDefault; + std::map > lowEnergyLimit; + std::map > highEnergyLimit; + + G4FinalStateProduct product; + + G4WaterIonisationStructure waterStructure; + + G4CrossSectionIonisationBornPartial cross; + + G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4int shell) ; + + void RandomizeEjectedElectronDirection(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4double + outgoingParticleEnergy, G4double & cosTheta, G4double & phi ); + + double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell); + + G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2); + + G4double QuadInterpolator(G4double e11, + G4double e12, + G4double e21, + G4double e22, + G4double x11, + G4double x12, + G4double x21, + G4double x22, + G4double t1, + G4double t2, + G4double t, + G4double e); + + typedef std::map > TriDimensionMap; + TriDimensionMap eDiffCrossSectionData[6]; + TriDimensionMap pDiffCrossSectionData[6]; + // TriDimensionMap eDiffCrossSectionData; + // TriDimensionMap pDiffCrossSectionData; + std::vector eTdummyVec; + std::vector pTdummyVec; + + typedef std::map > VecMap; + VecMap eVecm; + VecMap pVecm; + + // std::ifstream eDiffCrossSection; + // std::ifstream pDiffCrossSection; + +}; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4FinalStateIonisationRudd.hh b/source/processes/electromagnetic/lowenergy/include/G4FinalStateIonisationRudd.hh new file mode 100755 index 0000000000..07a18b4f20 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4FinalStateIonisationRudd.hh @@ -0,0 +1,133 @@ +// +// ******************************************************************** +// * 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: G4FinalStateIonisationRudd.hh,v 1.2 2007/11/09 16:30:56 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4FINALSTATEIONISATIONRUDD_HH +#define G4FINALSTATEIONISATIONRUDD_HH 1 + +#include "globals.hh" +#include "G4FinalStateProduct.hh" +#include "G4WaterIonisationStructure.hh" +#include "G4CrossSectionIonisationRuddPartial.hh" + +class G4Track; +class G4Step; +class G4ParticleDefinition; + +class G4FinalStateIonisationRudd +{ +public: + + G4FinalStateIonisationRudd(); + + ~G4FinalStateIonisationRudd(); + + const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step); + +private: + + // Copy constructor and assignment operator to be added here + + G4String name; + G4double lowEnergyLimitDefault; + G4double highEnergyLimitDefault; + std::map > lowEnergyLimit; + std::map > highEnergyLimit; + + G4FinalStateProduct product; + + G4WaterIonisationStructure waterStructure; + + G4CrossSectionIonisationRuddPartial cross; + + G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition* particleDefinition, + G4double incomingParticleEnergy, + G4int shell); + + void RandomizeEjectedElectronDirection(G4ParticleDefinition* particleDefinition, + G4double incomingParticleEnergy, + G4double outgoingParticleEnergy, + G4double cosTheta, + G4double phi); + + G4double DifferentialCrossSection(G4ParticleDefinition* particleDefinition, + G4double k, + G4double energyTransfer, + G4int shell); + + G4double CorrectionFactor(G4ParticleDefinition* particleDefinition, G4double k); + + G4double S_1s(G4double t, + G4double energyTransferred, + G4double slaterEffectiveChg, + G4double shellNumber); + + G4double S_2s(G4double t, + G4double energyTransferred, + G4double slaterEffectiveChg, + G4double shellNumber); + + + G4double S_2p(G4double t, + G4double energyTransferred, + G4double slaterEffectiveChg, + G4double shellNumber); + + G4double R(G4double t, + G4double energyTransferred, + G4double slaterEffectiveChg, + G4double shellNumber) ; + + G4double slaterEffectiveCharge[3]; + G4double sCoefficient[3]; +}; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4FinalStateKill.hh b/source/processes/electromagnetic/lowenergy/include/G4FinalStateKill.hh new file mode 100644 index 0000000000..6864f60df7 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4FinalStateKill.hh @@ -0,0 +1,83 @@ +// +// ******************************************************************** +// * 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: G4FinalStateKill.hh,v 1.1 2007/11/09 20:26:47 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4FINALSTATEKILL_HH +#define G4FINALSTATEKILL_HH 1 + +#include "globals.hh" +#include "G4FinalStateProduct.hh" + +class G4Track; +class G4Step; + + class G4FinalStateKill + { + public: + + G4FinalStateKill(); + + ~G4FinalStateKill(); + + const G4FinalStateProduct& GenerateFinalState(const G4Track& track, const G4Step& step); + + private: + + // Copy constructor and assignment operator to be added here + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + G4FinalStateProduct product; + +}; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4FinalStateProduct.hh b/source/processes/electromagnetic/lowenergy/include/G4FinalStateProduct.hh new file mode 100644 index 0000000000..eb3963b528 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4FinalStateProduct.hh @@ -0,0 +1,105 @@ +// +// ******************************************************************** +// * 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: G4FinalStateProduct.hh,v 1.4 2007/10/15 08:31:49 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Final state product +// Reference: TNS Geant4-DNA paper +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4FINALSTATEPRODUCT_HH +#define G4FINALSTATEPRODUCT_HH 1 + +#include "globals.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include + +class G4DynamicParticle; + +class G4FinalStateProduct +{ +public: + + G4FinalStateProduct(); + + ~G4FinalStateProduct(); + + void Clear(); + + void AddSecondary(G4DynamicParticle* particle); + + void AddEnergyDeposit(G4double energy); + + void ModifyPrimaryParticle(G4double dirX, G4double dirY, G4double dirZ, G4double energy); + void ModifyPrimaryParticle(const G4ThreeVector& direction, G4double energy); + + void KillPrimaryParticle(); + + G4bool PrimaryParticleIsKilled() const { return killStatus; } + + G4bool PrimaryParticleIsModified() const { return isModified; } + + G4int NumberOfSecondaries() const; + + G4double GetEnergyDeposit() const { return localEnergyDeposit; } + + G4double GetModifiedEnergy() const { return modifiedEnergy; } + + const G4ThreeVector& GetModifiedDirection() const { return modifiedDirection; } + + const std::vector& GetSecondaries() const; + + + // protected: + + // Copy constructor and assignment operator to be added here + +private: + + G4bool killStatus; + G4bool isModified; + G4double localEnergyDeposit; + G4double modifiedEnergy; + std::vector secondaries; + G4ThreeVector modifiedDirection; +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4FluoTransition.hh b/source/processes/electromagnetic/lowenergy/include/G4FluoTransition.hh index 5f0f455ae3..66575a7890 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4FluoTransition.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4FluoTransition.hh @@ -25,7 +25,7 @@ // // // $Id: G4FluoTransition.hh,v 1.2 ???? -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4LinInterpolation.hh b/source/processes/electromagnetic/lowenergy/include/G4LinInterpolation.hh index 5381e15ab7..d180b557a0 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LinInterpolation.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LinInterpolation.hh @@ -25,7 +25,7 @@ // // // $Id: G4LinInterpolation.hh,v 1.3 2006/06/29 19:35:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4LogLogInterpolation.hh b/source/processes/electromagnetic/lowenergy/include/G4LogLogInterpolation.hh index bacc9772d2..b95899a0c9 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LogLogInterpolation.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LogLogInterpolation.hh @@ -25,7 +25,7 @@ // // // $Id: G4LogLogInterpolation.hh,v 1.4 2006/06/29 19:35:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh index 1311ce337a..973b0bd4a4 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh @@ -26,7 +26,7 @@ // // ------------------------------------------------------------------- // $Id: G4LowEnergyBremsstrahlung.hh,v 1.37 2006/06/29 19:35:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: A. Forti // diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh index 203d3f99cc..a164ef5367 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4LowEnergyCompton.hh,v 1.21 2006/06/29 19:35:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: A. Forti // Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh index 9e58b1b7e9..d071e8024d 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh @@ -25,7 +25,7 @@ // // // $Id: G4LowEnergyGammaConversion.hh,v 1.15 2006/06/29 19:35:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: A. Forti // Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh index 3c8776ae18..8ddedf7a24 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh @@ -25,7 +25,7 @@ // // ------------------------------------------------------------------- // $Id: G4LowEnergyIonisation.hh,v 1.41 2006/06/29 19:36:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: A. Forti // diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh index 664c264d28..2cf5cc50b2 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh @@ -25,7 +25,7 @@ // // // $Id: G4LowEnergyPhotoElectric.hh,v 1.28 2006/06/29 19:36:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: A. Forti // Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedCompton.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedCompton.hh index f94a0e5cf4..5096f96f4e 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedCompton.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedCompton.hh @@ -25,7 +25,7 @@ // // // $Id: G4LowEnergyPolarizedCompton.hh,v 1.9 2006/06/29 19:36:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class header file diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedRayleigh.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedRayleigh.hh index ef9c6e3a1c..b2ffb25314 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedRayleigh.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedRayleigh.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4LowEnergyPolarizedRayleigh.hh,v 1.5 2006/06/29 19:36:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh index 26b279fed7..6164a2e51f 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh @@ -25,7 +25,7 @@ // // // $Id: G4LowEnergyRayleigh.hh,v 1.16 2006/06/29 19:36:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlung.hh b/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlung.hh index 9d380eb0b0..cd0975f9ab 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlung.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlung.hh @@ -26,7 +26,7 @@ // // ------------------------------------------------------------------- // $Id: G4PenelopeBremsstrahlung.hh,v 1.8 2006/06/29 19:36:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: L.Pandola // diff --git a/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungAngular.hh b/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungAngular.hh index 0c33983640..76306cbc68 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungAngular.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungAngular.hh @@ -26,7 +26,7 @@ // // ------------------------------------------------------------------- // $Id: G4PenelopeBremsstrahlungAngular.hh,v 1.3 2006/06/29 19:36:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: L.Pandola // diff --git a/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungContinuous.hh b/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungContinuous.hh index 1ec616b877..be2985b228 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungContinuous.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungContinuous.hh @@ -26,7 +26,7 @@ // // ------------------------------------------------------------------- // $Id: G4PenelopeBremsstrahlungContinuous.hh,v 1.3 2006/06/29 19:36:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: L.Pandola // diff --git a/source/processes/electromagnetic/lowenergy/include/G4PenelopeCompton.hh b/source/processes/electromagnetic/lowenergy/include/G4PenelopeCompton.hh index da89800809..a3111ed44a 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4PenelopeCompton.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4PenelopeCompton.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PenelopeCompton.hh,v 1.10 2006/06/29 19:36:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Luciano Pandola // diff --git a/source/processes/electromagnetic/lowenergy/include/G4PenelopeGammaConversion.hh b/source/processes/electromagnetic/lowenergy/include/G4PenelopeGammaConversion.hh index 3d6cb3b372..2530422098 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4PenelopeGammaConversion.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4PenelopeGammaConversion.hh @@ -25,7 +25,7 @@ // // // $Id: G4PenelopeGammaConversion.hh,v 1.2 2006/06/29 19:36:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: L. Pandola // diff --git a/source/processes/electromagnetic/lowenergy/include/G4PenelopeIonisation.hh b/source/processes/electromagnetic/lowenergy/include/G4PenelopeIonisation.hh index 931a9a892f..84f2c5f512 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4PenelopeIonisation.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4PenelopeIonisation.hh @@ -25,7 +25,7 @@ // // ------------------------------------------------------------------- // $Id: G4PenelopeIonisation.hh,v 1.5 2006/06/29 19:36:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: L. Pandola // diff --git a/source/processes/electromagnetic/lowenergy/include/G4PenelopePhotoElectric.hh b/source/processes/electromagnetic/lowenergy/include/G4PenelopePhotoElectric.hh index 0f4f6fd6fc..b3d1251ba5 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4PenelopePhotoElectric.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4PenelopePhotoElectric.hh @@ -25,7 +25,7 @@ // // // $Id: G4PenelopePhotoElectric.hh,v 1.4 2006/06/29 19:36:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: L.Pandola // diff --git a/source/processes/electromagnetic/lowenergy/include/G4PenelopeRayleigh.hh b/source/processes/electromagnetic/lowenergy/include/G4PenelopeRayleigh.hh index 509d8b15de..23c5a41ed4 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4PenelopeRayleigh.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4PenelopeRayleigh.hh @@ -25,7 +25,7 @@ // // // $Id: G4PenelopeRayleigh.hh,v 1.5 2006/06/29 19:36:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Luciano Pandola // diff --git a/source/processes/electromagnetic/lowenergy/include/G4RangeNoTest.hh b/source/processes/electromagnetic/lowenergy/include/G4RangeNoTest.hh index 3d7bfaecbe..b584e67509 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4RangeNoTest.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4RangeNoTest.hh @@ -25,7 +25,7 @@ // // // $Id: G4RangeNoTest.hh,v 1.4 2006/06/29 19:36:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4RangeTest.hh b/source/processes/electromagnetic/lowenergy/include/G4RangeTest.hh index d5cf3a221d..456d309d56 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4RangeTest.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4RangeTest.hh @@ -25,7 +25,7 @@ // // // $Id: G4RangeTest.hh,v 1.4 2006/06/29 19:36:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4SemiLogInterpolation.hh b/source/processes/electromagnetic/lowenergy/include/G4SemiLogInterpolation.hh index 862d93f0dc..f03b66ec2a 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4SemiLogInterpolation.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4SemiLogInterpolation.hh @@ -25,7 +25,7 @@ // // // $Id: G4SemiLogInterpolation.hh,v 1.4 2006/06/29 19:36:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4ShellData.hh b/source/processes/electromagnetic/lowenergy/include/G4ShellData.hh index 03fbde3c56..56d651cff1 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4ShellData.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4ShellData.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ShellData.hh,v 1.4 2006/06/29 19:36:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ShellData.hh,v 1.5 2007/02/20 16:53:16 mantero Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // @@ -54,7 +54,7 @@ class G4ShellData { public: - G4ShellData(G4int minZ = 1, G4int maxZ = 99); + G4ShellData(G4int minZ = 1, G4int maxZ = 100); ~G4ShellData(); diff --git a/source/processes/electromagnetic/lowenergy/include/G4ShellEMDataSet.hh b/source/processes/electromagnetic/lowenergy/include/G4ShellEMDataSet.hh index ea0a737a4b..f056b337c2 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4ShellEMDataSet.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4ShellEMDataSet.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ShellEMDataSet.hh,v 1.8 2006/06/29 19:36:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ShellEMDataSet.hh,v 1.9 2007/10/15 08:31:49 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // @@ -55,46 +55,46 @@ class G4ShellEMDataSet : public G4VEMDataSet { public: - G4ShellEMDataSet(G4int argZ, G4VDataSetAlgorithm* argAlgorithm, G4double argUnitEnergies=MeV, G4double argUnitData=barn); - virtual ~G4ShellEMDataSet(); + G4ShellEMDataSet(G4int argZ, G4VDataSetAlgorithm* argAlgorithm, G4double argUnitEnergies=MeV, G4double argUnitData=barn); + virtual ~G4ShellEMDataSet(); - virtual G4double FindValue(G4double argEnergy, G4int argComponentId=0) const; + virtual G4double FindValue(G4double argEnergy, G4int argComponentId=0) const; - virtual void PrintData(void) const; + virtual void PrintData(void) const; - virtual const G4VEMDataSet * GetComponent(G4int argComponentId) const { return components[argComponentId]; } - virtual void AddComponent(G4VEMDataSet * argDataSet) { components.push_back(argDataSet); } - virtual size_t NumberOfComponents(void) const { return components.size(); } + virtual const G4VEMDataSet* GetComponent(G4int argComponentId) const { return components[argComponentId]; } + virtual void AddComponent(G4VEMDataSet * argDataSet) { components.push_back(argDataSet); } + virtual size_t NumberOfComponents(void) const { return components.size(); } - virtual const G4DataVector & GetEnergies(G4int argComponentId) const { return GetComponent(argComponentId)->GetEnergies(0); } - virtual const G4DataVector & GetData(G4int argComponentId) const { return GetComponent(argComponentId)->GetData(0); } - virtual void SetEnergiesData(G4DataVector * argEnergies, G4DataVector * argData, G4int argComponentId); + virtual const G4DataVector& GetEnergies(G4int argComponentId) const { return GetComponent(argComponentId)->GetEnergies(0); } + virtual const G4DataVector& GetData(G4int argComponentId) const { return GetComponent(argComponentId)->GetData(0); } + virtual void SetEnergiesData(G4DataVector * argEnergies, G4DataVector * argData, G4int argComponentId); - virtual G4bool LoadData(const G4String & argFileName); - virtual G4bool SaveData(const G4String & argFileName) const; + virtual G4bool LoadData(const G4String & argFileName); + virtual G4bool SaveData(const G4String & argFileName) const; - protected: - G4double GetUnitEnergies() const { return unitEnergies; } - G4double GetUnitData() const { return unitData; } - const G4VDataSetAlgorithm * GetAlgorithm() const { return algorithm; } + protected: + G4double GetUnitEnergies() const { return unitEnergies; } + G4double GetUnitData() const { return unitData; } + const G4VDataSetAlgorithm* GetAlgorithm() const { return algorithm; } - void CleanUpComponents(void); + void CleanUpComponents(void); - private: - G4String FullFileName(const G4String & argFileName) const; + private: + G4String FullFileName(const G4String & argFileName) const; // Hide copy constructor and assignment operator - G4ShellEMDataSet(); - G4ShellEMDataSet(const G4ShellEMDataSet & copy); - G4ShellEMDataSet & operator=(const G4ShellEMDataSet & right); + G4ShellEMDataSet(); + G4ShellEMDataSet(const G4ShellEMDataSet & copy); + G4ShellEMDataSet& operator=(const G4ShellEMDataSet & right); - std::vector components; // Owned pointers + std::vector components; // Owned pointers - G4int z; + G4int z; - G4VDataSetAlgorithm * algorithm; // Owned pointer + G4VDataSetAlgorithm* algorithm; // Owned pointer - G4double unitEnergies; - G4double unitData; + G4double unitEnergies; + G4double unitData; }; #endif /* G4SHELLEMDATASET_HH */ diff --git a/source/processes/electromagnetic/lowenergy/include/G4VCrossSectionHandler.hh b/source/processes/electromagnetic/lowenergy/include/G4VCrossSectionHandler.hh index ce5e39d14f..35b8b43e21 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4VCrossSectionHandler.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4VCrossSectionHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4VCrossSectionHandler.hh,v 1.14 2006/06/29 19:37:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4VDNAProcessInWater.hh b/source/processes/electromagnetic/lowenergy/include/G4VDNAProcessInWater.hh deleted file mode 100644 index 6da6413c35..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4VDNAProcessInWater.hh +++ /dev/null @@ -1,75 +0,0 @@ -// -// ******************************************************************** -// * 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: G4VDNAProcessInWater.hh,v 1.6 2006/06/29 19:37:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#ifndef G4VDNAPROCESSINWATER_HH -#define G4VDNAPROCESSINWATER_HH 1 - -#include "G4VLowEnergyTestableDiscreteProcess.hh" - -// TotalCrossSectionPolicy must provide: -// - [protected] const G4ParticleDefinition * IncomingParticleDefinition(void) -// - [protected] G4double TotalCrossSection(G4double k, G4int z) -// - [protected] void BuildTotalCrossSection(void) - -// FinalStatesPolicy must provide: -// - [protected] G4bool KillIncomingParticle(G4double k) -// - [protected] void BuildFinalStatesData(void) - -template -class G4VDNAProcessInWater : public G4VLowEnergyTestableDiscreteProcess, public TotalCrossSectionPolicy, public FinalStatesPolicy -{ -public: - - G4VDNAProcessInWater(const G4String& name) : G4VLowEnergyTestableDiscreteProcess(name) {} - - virtual ~G4VDNAProcessInWater() {} - - virtual G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); - - virtual void BuildPhysicsTable(const G4ParticleDefinition& aParticleDefinition); - - virtual G4bool IsApplicable(const G4ParticleDefinition& aParticleDefinition); - -protected: - - void ValidateInWater(const G4Track& aTrack) const; - - virtual G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, G4ForceCondition* condition); - -private: - - // Hides default constructor and assignment operator as private - G4VDNAProcessInWater(); - G4VDNAProcessInWater& operator=(const G4VDNAProcessInWater & right); -}; - -#include "G4VDNAProcessInWater.icc" -#endif /* G4VDNAPROCESSINWATER_HH */ - diff --git a/source/processes/electromagnetic/lowenergy/include/G4VDNAProcessInWater.icc b/source/processes/electromagnetic/lowenergy/include/G4VDNAProcessInWater.icc deleted file mode 100644 index aa5c00f736..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4VDNAProcessInWater.icc +++ /dev/null @@ -1,143 +0,0 @@ -// -// ******************************************************************** -// * 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: G4VDNAProcessInWater.icc,v 1.4 2006/06/29 19:37:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#ifdef G4VDNAPROCESSINWATER_HH - template - G4VParticleChange * G4VDNAProcessInWater :: PostStepDoIt(const G4Track & aTrack, const G4Step & aStep) - { - ValidateInWater(aTrack); - - G4double k=aTrack.GetDynamicParticle()->GetKineticEnergy(); - - if (FinalStatesPolicy::KillIncomingParticle(k)) - { - G4int n(aParticleChange.GetNumberOfSecondaries()); - while (n>0) - { - n--; - delete aParticleChange.GetSecondary(n); - } - aParticleChange.Clear(); - - aParticleChange.Initialize(aTrack); - - aParticleChange.ProposeLocalEnergyDeposit(k); - aParticleChange.ProposeTrackStatus(fStopAndKill); - aParticleChange.ProposeEnergy(0.); - } - - return G4VLowEnergyTestableDiscreteProcess::PostStepDoIt(aTrack, aStep); - } - - template - void G4VDNAProcessInWater :: BuildPhysicsTable(const G4ParticleDefinition & /* aParticleDefinition */) - { - TotalCrossSectionPolicy::BuildTotalCrossSection(); - FinalStatesPolicy::BuildFinalStatesData(); - } - - template - G4bool G4VDNAProcessInWater :: IsApplicable(const G4ParticleDefinition & aParticleDefinition) - { - return (&aParticleDefinition)==TotalCrossSectionPolicy::IncomingParticleDefinition(); - } - - template - void G4VDNAProcessInWater :: ValidateInWater(const G4Track & aTrack) const - { - G4Material * theMaterial(aTrack.GetMaterial()); - - // Water validation consists in checking that density is 1. and that Oxigen and Hydrogen are the only two elements of the material - - if (std::fabs(theMaterial->GetDensity()*cm3/g-1.)<0.1) - if (theMaterial->GetNumberOfElements()==2) - { - const G4Element * element1(theMaterial->GetElement(0)); - const G4Element * element2(theMaterial->GetElement(1)); - - if ((element1->GetZ()==1. && element2->GetZ()==8.) || - (element1->GetZ()==8. && element2->GetZ()==1.)) - return; - } - - G4String message; - message="G4VDNAProcessInWater::ValidateInWater - Process "; - message+=GetProcessName(); - message+=" happened in material "; - message+=theMaterial->GetName(); - - G4Exception(message); - } - - template - G4double G4VDNAProcessInWater :: GetMeanFreePath(const G4Track & aTrack, G4double /* previousStepSize */, G4ForceCondition * /* condition */) - { - const G4int z(10); // H2O number of electrons - G4double k=aTrack.GetDynamicParticle()->GetKineticEnergy(); - - // We suppose we are in water, one of the elements must be oxygen - G4Material * theMaterial(aTrack.GetMaterial()); - size_t i(theMaterial->GetNumberOfElements()); - while (i>0) - { - i--; - - const G4Element * element(theMaterial->GetElement(i)); - - if (element->GetZ()==8.) - { - // Number of oxigens per volume = number of water molecules per volume - G4double density; - density=theMaterial->GetAtomicNumDensityVector()[i]; - - if (density<=0.) - return DBL_MAX; - - G4double sigma_el; - sigma_el=TotalCrossSectionPolicy::TotalCrossSection(k, z); - - if (sigma_el<=0.) - return DBL_MAX; - - return 1./(density*sigma_el); - } - } - - G4String message; - message="G4VDNAProcessInWater::GetMeanFreePath - "; - message+=theMaterial->GetName(); - message+=" is not a water material"; - - G4Exception(message); - - return DBL_MAX; - } -#endif /* G4VDNAPROCESSINWATER_HH */ - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4VDataSetAlgorithm.hh b/source/processes/electromagnetic/lowenergy/include/G4VDataSetAlgorithm.hh index 590da5bc91..0c887734ca 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4VDataSetAlgorithm.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4VDataSetAlgorithm.hh @@ -25,7 +25,7 @@ // // // $Id: G4VDataSetAlgorithm.hh,v 1.7 2006/06/29 19:37:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4VEMDataSet.hh b/source/processes/electromagnetic/lowenergy/include/G4VEMDataSet.hh index d634919820..9a0df0a6c9 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4VEMDataSet.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4VEMDataSet.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VEMDataSet.hh,v 1.8 2006/06/29 19:37:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VEMDataSet.hh,v 1.9 2007/10/15 08:31:49 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4VLowEnergyDiscretePhotonProcess.hh b/source/processes/electromagnetic/lowenergy/include/G4VLowEnergyDiscretePhotonProcess.hh index a2bc961bdc..10ef14c94c 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4VLowEnergyDiscretePhotonProcess.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4VLowEnergyDiscretePhotonProcess.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VLowEnergyDiscretePhotonProcess.hh,v 1.4 2006/06/29 19:37:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/lowenergy/include/G4VLowEnergyTestableDiscreteProcess.hh b/source/processes/electromagnetic/lowenergy/include/G4VLowEnergyTestableDiscreteProcess.hh index 9f575fb397..5701b6c897 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4VLowEnergyTestableDiscreteProcess.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4VLowEnergyTestableDiscreteProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4VLowEnergyTestableDiscreteProcess.hh,v 1.3 2006/06/29 19:37:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VLowEnergyTestableDiscreteProcess_hh diff --git a/source/processes/electromagnetic/lowenergy/include/G4VRangeTest.hh b/source/processes/electromagnetic/lowenergy/include/G4VRangeTest.hh index d627e7c4d8..a23252a0d3 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4VRangeTest.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4VRangeTest.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRangeTest.hh,v 1.3 2006/06/29 19:37:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh b/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh index 2565912da5..6194c2849f 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh @@ -25,7 +25,7 @@ // // // $Id: G4VeLowEnergyLoss.hh,v 1.9 2006/06/29 19:37:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // 3.4.2000 Veronique Lefebure: // Move utils/include/G4VEnergyLoss.hh to diff --git a/source/processes/electromagnetic/lowenergy/include/G4WaterExcitationStructure.hh b/source/processes/electromagnetic/lowenergy/include/G4WaterExcitationStructure.hh new file mode 100644 index 0000000000..4de00b7a61 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4WaterExcitationStructure.hh @@ -0,0 +1,81 @@ +// +// ******************************************************************** +// * 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: G4WaterExcitationStructure.hh,v 1.1 2007/10/15 08:33:25 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4WATEREXCITATIONSTRUCTURE_HH +#define G4WATEREXCITATIONSTRUCTURE_HH 1 + +#include "globals.hh" +#include + + +class G4WaterExcitationStructure +{ +public: + + G4WaterExcitationStructure(); + + virtual ~G4WaterExcitationStructure(); + + G4double ExcitationEnergy(G4int level); + + G4int NumberOfLevels() { return nLevels; } + + // Copy constructor and assignment operator to be added here + +private: + + // Number of excitation levels of the water molecule + G4int nLevels; + + std::vector energyConstant; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4WaterIonisationStructure.hh b/source/processes/electromagnetic/lowenergy/include/G4WaterIonisationStructure.hh new file mode 100755 index 0000000000..23d4f9c3ff --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4WaterIonisationStructure.hh @@ -0,0 +1,81 @@ +// +// ******************************************************************** +// * 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: G4WaterIonisationStructure.hh,v 1.1 2007/11/08 20:38:40 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4WATERIONISATIONSTRUCTURE_HH +#define G4WATERIONISATIONSTRUCTURE_HH 1 + +#include "globals.hh" +#include + + +class G4WaterIonisationStructure +{ +public: + + G4WaterIonisationStructure(); + + virtual ~G4WaterIonisationStructure(); + + G4double IonisationEnergy(G4int level); + + G4int NumberOfLevels() { return nLevels; } + + // Copy constructor and assignment operator to be added here + +private: + + // Number of Ionisation levels of the water molecule + G4int nLevels; + + std::vector energyConstant; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4eBremsstrahlungSpectrum.hh b/source/processes/electromagnetic/lowenergy/include/G4eBremsstrahlungSpectrum.hh index 346183b48f..f95da70acf 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4eBremsstrahlungSpectrum.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4eBremsstrahlungSpectrum.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eBremsstrahlungSpectrum.hh,v 1.8 2006/06/29 19:37:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/lowenergy/include/G4eCrossSectionExcitationEmfietzoglou.hh b/source/processes/electromagnetic/lowenergy/include/G4eCrossSectionExcitationEmfietzoglou.hh new file mode 100644 index 0000000000..6c30deaa0f --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4eCrossSectionExcitationEmfietzoglou.hh @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * 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: G4eCrossSectionExcitationEmfietzoglou.hh,v 1.1 2007/05/02 17:18:48 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4ECROSSSECTIONEXCITATIONEMFIETZOGLOU_HH +#define G4ECROSSSECTIONEXCITATIONEMFIETZOGLOU_HH 1 + +#include "globals.hh" +#include "G4Track.hh" + + class G4eCrossSectionExcitationEmfietzoglou + { + public: + + G4eCrossSectionExcitationEmfietzoglou(); + + virtual ~G4eCrossSectionExcitationEmfietzoglou(); + + G4double CrossSection(const G4Track&); + + // Copy constructor and assignment operator to be added here + + private: + + G4double EnergyConstant(G4int excitationLevel); + G4double PartialCrossSection(G4double k, G4int excitationLevel); + G4int RandomizePartialCrossSection(G4double k); + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + + }; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4eCrossSectionScreenedRutherford.hh b/source/processes/electromagnetic/lowenergy/include/G4eCrossSectionScreenedRutherford.hh new file mode 100644 index 0000000000..6abe340785 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4eCrossSectionScreenedRutherford.hh @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * 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: G4eCrossSectionScreenedRutherford.hh,v 1.2 2007/10/12 12:26:34 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#ifndef G4ECROSSSECTIONSCREENEDRUTHERFORD_HH +#define G4ECROSSSECTIONSCREENEDRUTHERFORD_HH 1 + +#include "globals.hh" +//#include "G4Track.hh" + +class G4Track; + +class G4eCrossSectionScreenedRutherford +{ +public: + + G4eCrossSectionScreenedRutherford(); + + virtual ~G4eCrossSectionScreenedRutherford(); + + G4double CrossSection(const G4Track&); + + // Copy constructor and assignment operator to be added here + +private: + + G4double RutherfordCrossSection(G4double energy, G4double z); + + G4double ScreeningFactor(G4double energy, G4double z); + + G4String name; + G4double lowEnergyLimit; + G4double highEnergyLimit; + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4eIonisationCrossSectionHandler.hh b/source/processes/electromagnetic/lowenergy/include/G4eIonisationCrossSectionHandler.hh index 8088a568c4..10458db82e 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4eIonisationCrossSectionHandler.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4eIonisationCrossSectionHandler.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eIonisationCrossSectionHandler.hh,v 1.6 2006/06/29 19:37:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/lowenergy/include/G4eIonisationParameters.hh b/source/processes/electromagnetic/lowenergy/include/G4eIonisationParameters.hh index ec7eb06376..b8ffbba601 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4eIonisationParameters.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4eIonisationParameters.hh @@ -25,7 +25,7 @@ // // // $Id: G4eIonisationParameters.hh,v 1.8 2006/06/29 19:37:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // V. Ivanchenko diff --git a/source/processes/electromagnetic/lowenergy/include/G4eIonisationSpectrum.hh b/source/processes/electromagnetic/lowenergy/include/G4eIonisationSpectrum.hh index beedd0d9a6..ef00d69c68 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4eIonisationSpectrum.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4eIonisationSpectrum.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eIonisationSpectrum.hh,v 1.7 2006/06/29 19:37:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh b/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh index 0ca9491fec..0e4d07db21 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh @@ -25,7 +25,7 @@ // // // $Id: G4eLowEnergyLoss.hh,v 1.14 2006/06/29 19:37:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- diff --git a/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.icc b/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.icc index d3b6e3e89c..1be3af8b0f 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.icc @@ -25,7 +25,7 @@ // // // $Id: G4eLowEnergyLoss.icc,v 1.8 2006/06/29 19:37:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // --------------------------------------------------------------- // GEANT 4 class inlined methods file diff --git a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh index b7d53cd34e..c2bf7bc87a 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh @@ -25,7 +25,7 @@ // // // $Id: G4hLowEnergyLoss.hh,v 1.17 2006/06/29 19:37:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: // ------------------------------------------------------------ diff --git a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.icc b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.icc index b09c5c00af..5bfea1d17c 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.icc @@ -25,7 +25,7 @@ // // // $Id: G4hLowEnergyLoss.icc,v 1.3 2006/06/29 19:38:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionDoubleExp.hh b/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionDoubleExp.hh index 66d0ad60af..31c5dc9394 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionDoubleExp.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionDoubleExp.hh @@ -44,7 +44,7 @@ // // ------------------------------------------------------------------- // $Id: G4hShellCrossSectionDoubleExp.hh,v 1.3 2006/06/29 19:38:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4HSHELLCROSSSECTIONDOUBLEEXP_HH #define G4HSHELLCROSSSECTIONDOUBLEEXP_HH 1 diff --git a/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionDoubleExpData.hh b/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionDoubleExpData.hh index 6e7b7622a0..2e7082609d 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionDoubleExpData.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionDoubleExpData.hh @@ -39,7 +39,7 @@ // Further documentation available from http://www.ge.infn.it/geant4/lowE // ------------------------------------------------------------------- // $Id: G4hShellCrossSectionDoubleExpData.hh,v 1.3 2006/06/29 19:38:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4hShellCrossSectionDoubleExpData_HH #define G4hShellCrossSectionDoubleExpData_HH 1 diff --git a/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionExp.hh b/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionExp.hh index a54b1a5943..47c7977041 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionExp.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionExp.hh @@ -44,7 +44,7 @@ // ------------------------------------------------------------------- // $Id: G4hShellCrossSectionExp.hh,v 1.3 2006/06/29 19:38:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4HSHELLCROSSSECTIONEXP_HH #define G4HSHELLCROSSSECTIONEXP_HH 1 diff --git a/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionExpData.hh b/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionExpData.hh index f6db0b7936..04d10ab20a 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionExpData.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionExpData.hh @@ -37,7 +37,7 @@ // Further documentation available from http://www.ge.infn.it/geant4/lowE // ------------------------------------------------------------------- // $Id: G4hShellCrossSectionExpData.hh,v 1.3 2006/06/29 19:38:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4hShellCrossSectionExpData_HH #define G4hShellCrossSectionExpData_HH 1 diff --git a/source/processes/electromagnetic/lowenergy/src/G4AtomicDeexcitation.cc b/source/processes/electromagnetic/lowenergy/src/G4AtomicDeexcitation.cc index ddbfd4a708..7be4384cd1 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4AtomicDeexcitation.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4AtomicDeexcitation.cc @@ -25,7 +25,7 @@ // // // $Id: G4AtomicDeexcitation.cc,v 1.11 -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) // Alfonso Mantero (Alfonso.Mantero@ge.infn.it) @@ -56,14 +56,17 @@ G4AtomicDeexcitation::~G4AtomicDeexcitation() std::vector* G4AtomicDeexcitation::GenerateParticles(G4int Z,G4int givenShellId) { - std::vector* vectorOfParticles = new std::vector; + + std::vector* vectorOfParticles; + + vectorOfParticles = new std::vector; G4DynamicParticle* aParticle; G4int provShellId = 0; G4int counter = 0; // The aim of this loop is to generate more than one fluorecence photon // from the same ionizing event -do + do { if (counter == 0) // First call to GenerateParticles(...): @@ -95,9 +98,8 @@ do } else if ( provShellId == -1) { - // controllae che newshellId porti ad una transizione fattibile, in qualche modo. aParticle = GenerateAuger(Z, newShellId); - } + } else { G4Exception("G4AtomicDeexcitation: starting shell uncorrect: check it"); @@ -107,10 +109,10 @@ do if (aParticle != 0) {vectorOfParticles->push_back(aParticle);} else {provShellId = -2;} } - -// Look this in a particular way: only one auger emitted! // - while (provShellId > -2); - + + // Look this in a particular way: only one auger emitted! // + while (provShellId > -2); + return vectorOfParticles; } @@ -142,7 +144,7 @@ G4int G4AtomicDeexcitation::SelectTypeOfTransition(G4int Z, G4int shellId) } shellNum++; } - G4int transProb = 1; + G4int transProb = 0; //AM change 29/6/07 was 1 G4double partialProb = G4UniformRand(); G4double partSum = 0; @@ -374,8 +376,8 @@ G4DynamicParticle* G4AtomicDeexcitation::GenerateAuger(G4int Z, G4int shellId) // AM *********************** F I X E D **************************** AM // Another Bug: in EADL Auger Transition are normalized to all the transitions deriving from - // a vacancy in one shell, but no alla of these are present in data tables. So if a transition - // doesn't occur in the maoin onesm a local energy deposition must occur, instead of (like now) + // a vacancy in one shell, but not all of these are present in data tables. So if a transition + // doesn't occur in the main one a local energy deposition must occur, instead of (like now) // generating the last transition present in EADL data. // AM *********************** F I X E D **************************** AM @@ -412,13 +414,13 @@ G4DynamicParticle* G4AtomicDeexcitation::GenerateAuger(G4int Z, G4int shellId) partSum += thisProb; - if (partSum >= (partialProb/totalVacancyAugerProbability) ) { + if (partSum >= (partialProb*totalVacancyAugerProbability) ) { // was / foundFlag = true; break; } augerIndex++; } - if (partSum >= (partialProb/totalVacancyAugerProbability) ) {break;} + if (partSum >= (partialProb*totalVacancyAugerProbability) ) {break;} // was / transitionRandomShellIndex++; } diff --git a/source/processes/electromagnetic/lowenergy/src/G4AtomicShell.cc b/source/processes/electromagnetic/lowenergy/src/G4AtomicShell.cc index fd30a9f3aa..2185514ebe 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4AtomicShell.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4AtomicShell.cc @@ -25,7 +25,7 @@ // // // $Id: G4AtomicShell.cc,v 1.2 ???? -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) // Alfonso Mantero (Alfonso.Mantero@ge.infn.it) diff --git a/source/processes/electromagnetic/lowenergy/src/G4AtomicTransitionManager.cc b/source/processes/electromagnetic/lowenergy/src/G4AtomicTransitionManager.cc index b38a365e15..559ff143ba 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4AtomicTransitionManager.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4AtomicTransitionManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4AtomicTransitionManager.cc,v 1.2 ???? -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) // Alfonso Mantero (Alfonso.Mantero@ge.infn.it) @@ -59,9 +59,10 @@ G4AtomicTransitionManager::G4AtomicTransitionManager(G4int minZ, G4int maxZ, for (G4int Z = zMin; Z<= zMax; Z++) { std::vector vectorOfShells; - + size_t shellIndex = 0; + size_t numberOfShells=shellManager->NumberOfShells(Z); - for (size_t shellIndex = 0; shellIndexShellId(Z,shellIndex); G4double bindingEnergy = shellManager->BindingEnergy(Z,shellIndex); diff --git a/source/processes/electromagnetic/lowenergy/src/G4AugerData.cc b/source/processes/electromagnetic/lowenergy/src/G4AugerData.cc index a17480ee22..1e7bb29d1f 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4AugerData.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4AugerData.cc @@ -479,7 +479,7 @@ void G4AugerData::BuildAugerTransitionTable() } - for (G4int element = 6; element < 99; element++) + for (G4int element = 6; element < 101; element++) { if(nMaterials == 0 || activeZ.contains(element)) { augerTransitionTable.insert(trans_Table::value_type(element,LoadData(element))); diff --git a/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungCrossSectionHandler.cc b/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungCrossSectionHandler.cc index fda2a9d6ec..1ce7180716 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungCrossSectionHandler.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungCrossSectionHandler.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BremsstrahlungCrossSectionHandler.cc,v 1.9 2006/06/29 19:38:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungParameters.cc b/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungParameters.cc index 9ff40b190b..0106548fac 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungParameters.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungParameters.cc @@ -25,7 +25,7 @@ // // // $Id: G4BremsstrahlungParameters.cc,v 1.19 2006/06/29 19:38:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // V.Ivanchenko (Vladimir.Ivantchenko@cern.ch) diff --git a/source/processes/electromagnetic/lowenergy/src/G4CompositeEMDataSet.cc b/source/processes/electromagnetic/lowenergy/src/G4CompositeEMDataSet.cc index aef427d9c2..8417e48ec4 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4CompositeEMDataSet.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4CompositeEMDataSet.cc @@ -25,7 +25,7 @@ // // // $Id: G4CompositeEMDataSet.cc,v 1.9 2006/06/29 19:38:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeDecrease.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeDecrease.cc new file mode 100755 index 0000000000..3fe455b77d --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeDecrease.cc @@ -0,0 +1,172 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionChargeDecrease.cc,v 1.2 2007/11/09 20:11:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionChargeDecrease.hh" +#include "G4Track.hh" +#include "G4DynamicParticle.hh" +#include "G4Proton.hh" +#include "G4CrossSectionExcitationEmfietzoglouPartial.hh" +#include "G4DNAGenericIonsManager.hh" + +G4CrossSectionChargeDecrease::G4CrossSectionChargeDecrease() +{ + // Default energy limits (defined for protection against anomalous behaviour only) + name = "ChargeDecrease"; + lowEnergyLimitDefault = 1 * keV; + highEnergyLimitDefault = 10 * MeV; + + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + G4ParticleDefinition* protonDef = G4Proton::ProtonDefinition(); + G4ParticleDefinition* alphaPlusPlusDef = instance->GetIon("alpha++"); + G4ParticleDefinition* alphaPlusDef = instance->GetIon("alpha+"); + + G4String proton; + G4String alphaPlusPlus; + G4String alphaPlus; + + if (protonDef != 0) + { + proton = protonDef->GetParticleName(); + lowEnergyLimit[proton] = 1. * keV; + highEnergyLimit[proton] = 10. * keV; + } + else + { + G4Exception("G4CrossSectionChargeDecrease Constructor: proton is not defined"); + } + + if (alphaPlusPlusDef != 0) + { + alphaPlusPlus = alphaPlusPlusDef->GetParticleName(); + lowEnergyLimit[alphaPlusPlus] = 1. * keV; + highEnergyLimit[alphaPlusPlus] = 10. * MeV; + } + else + { + G4Exception("G4CrossSectionChargeDecrease Constructor: alphaPlusPlus is not defined"); + } + + if (alphaPlusDef != 0) + { + alphaPlus = alphaPlusDef->GetParticleName(); + lowEnergyLimit[alphaPlus] = 1. * keV; + highEnergyLimit[alphaPlus] = 10. * MeV; + } + else + { + G4Exception("G4CrossSectionChargeDecrease Constructor: alphaPlus is not defined"); + } + +} + + +G4CrossSectionChargeDecrease::~G4CrossSectionChargeDecrease() +{} + + +G4double G4CrossSectionChargeDecrease::CrossSection(const G4Track& track) +{ + G4double lowLim = lowEnergyLimitDefault; + G4double highLim = highEnergyLimitDefault; + + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + const G4ParticleDefinition* particleDefinition = track.GetDefinition(); + + const G4String& particleName = particleDefinition->GetParticleName(); + + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + + if ( + particleDefinition != G4Proton::ProtonDefinition() + && + particleDefinition != instance->GetIon("alpha++") + && + particleDefinition != instance->GetIon("alpha+") + ) + + G4Exception("G4CrossSectionChargeDecrease: attempting to calculate cross section for wrong particle"); + + // Retrieve energy limits for the current particle type + + std::map< G4String,G4double,std::less >::iterator pos1; + pos1 = lowEnergyLimit.find(particleName); + + // Lower limit + if (pos1 != lowEnergyLimit.end()) + { + lowLim = pos1->second; + } + + // Upper limit + std::map< G4String,G4double,std::less >::iterator pos2; + pos2 = highEnergyLimit.find(particleName); + + if (pos2 != highEnergyLimit.end()) + { + highLim = pos2->second; + } + + // + + G4double crossSection(0.); + if (k >= lowLim && k <= highLim) + { + crossSection = partialCrossSection.Sum(k,particleDefinition); + } + + return crossSection; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeDecreasePartial.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeDecreasePartial.cc new file mode 100755 index 0000000000..baaa5603c5 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeDecreasePartial.cc @@ -0,0 +1,242 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionChargeDecreasePartial.cc,v 1.1 2007/11/08 18:25:25 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// 08 Nov 2007 MGP Got code from S.I.; added variable initialisation to avoid compilation warnings +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionChargeDecreasePartial.hh" +#include "G4ParticleDefinition.hh" +#include "G4Proton.hh" +#include "G4DNAGenericIonsManager.hh" + +#include "Randomize.hh" + + +G4CrossSectionChargeDecreasePartial::G4CrossSectionChargeDecreasePartial() +{ + + //PROTON + f0[0][0]=1.; + a0[0][0]=-0.180; + a1[0][0]=-3.600; + b0[0][0]=-18.22; + b1[0][0]=-1.997; + c0[0][0]=0.215; + d0[0][0]=3.550; + x0[0][0]=3.450; + x1[0][0]=5.251; + + numberOfPartialCrossSections[0] = 1; + + //ALPHA++ + f0[0][1]=1.; a0[0][1]=0.95; + a1[0][1]=-2.75; + b0[0][1]=-23.00; + c0[0][1]=0.215; + d0[0][1]=2.95; + x0[0][1]=3.50; + + f0[1][1]=1.; + a0[1][1]=0.95; + a1[1][1]=-2.75; + b0[1][1]=-23.73; + c0[1][1]=0.250; + d0[1][1]=3.55; + x0[1][1]=3.72; + + x1[0][1]=-1.; + b1[0][1]=-1.; + + x1[1][1]=-1.; + b1[1][1]=-1.; + + numberOfPartialCrossSections[1] = 2; + + // ALPHA+ + f0[0][2]=1.; + a0[0][2]=0.65; + a1[0][2]=-2.75; + b0[0][2]=-21.81; + c0[0][2]=0.232; + d0[0][2]=2.95; + x0[0][2]=3.53; + + x1[0][2]=-1.; + b1[0][2]=-1.; + + numberOfPartialCrossSections[2] = 1; + +} + +G4CrossSectionChargeDecreasePartial::~G4CrossSectionChargeDecreasePartial() +{ } + +G4double G4CrossSectionChargeDecreasePartial::CrossSection(G4double k, G4int index, + const G4ParticleDefinition* particleDefinition) +{ + G4int particleTypeIndex = 0; + G4DNAGenericIonsManager* instance; + instance = G4DNAGenericIonsManager::Instance(); + + if (particleDefinition == G4Proton::ProtonDefinition()) particleTypeIndex=0; + if (particleDefinition == instance->GetIon("alpha++")) particleTypeIndex=1; + if (particleDefinition == instance->GetIon("alpha+")) particleTypeIndex=2; + + // + // sigma(T) = f0 10 ^ y(log10(T/eV)) + // + // / a0 x + b0 x < x0 + // | + // y(x) = < a0 x + b0 - c0 (x - x0)^d0 x0 <= x < x1 + // | + // \ a1 x + b1 x >= x1 + // + // + // f0, a0, a1, b0, b1, c0, d0, x0, x1 are parameters that change for protons and helium (0, +, ++) + // + // f0 has been added to the code in order to manage partial (shell-dependent) cross sections (if no shell dependence is present. f0=1. Sum of f0 over the considered shells should give 1) + // + // From Rad. Phys. and Chem. 59 (2000) 255-275, M. Dingfelder et al. + // Inelastic-collision cross sections of liquid water for interactions of energetic proton + // + + if (x1[index][particleTypeIndex]GetIon("alpha++")) particleTypeIndex = 1; + if (particleDefinition == instance->GetIon("alpha+")) particleTypeIndex = 2; + + const G4int n = numberOfPartialCrossSections[particleTypeIndex]; + G4double* values(new G4double[n]); + G4double value(0); + G4int i = n; + + while (i>0) + { + i--; + values[i]=CrossSection(k, i, particleDefinition); + value+=values[i]; + } + + value*=G4UniformRand(); + + i=n; + while (i>0) + { + i--; + + if (values[i]>value) + break; + + value-=values[i]; + } + + delete[] values; + + return i; +} + +G4double G4CrossSectionChargeDecreasePartial::Sum(G4double k, const G4ParticleDefinition* particleDefinition) +{ + G4int particleTypeIndex = 0; + G4DNAGenericIonsManager* instance; + instance = G4DNAGenericIonsManager::Instance(); + + if (particleDefinition == G4Proton::ProtonDefinition()) particleTypeIndex=0; + if (particleDefinition == instance->GetIon("alpha++")) particleTypeIndex=1; + if (particleDefinition == instance->GetIon("alpha+")) particleTypeIndex=2; + + G4double totalCrossSection = 0.; + + for (G4int i=0; iGetIon("hydrogen"); + G4ParticleDefinition* alphaPlusDef = instance->GetIon("alpha+"); + G4ParticleDefinition* heliumDef = instance->GetIon("helium"); + + G4String hydrogen; + G4String alphaPlus; + G4String helium; + + if (hydrogenDef != 0) + { + hydrogen = hydrogenDef->GetParticleName(); + lowEnergyLimit[hydrogen] = 1. * keV; + highEnergyLimit[hydrogen] = 10. * MeV; + } + else + { + G4Exception("G4CrossSectionChargeIncrease Constructor: hydrogen is not defined"); + } + + if (alphaPlusDef != 0) + { + alphaPlus = alphaPlusDef->GetParticleName(); + lowEnergyLimit[alphaPlus] = 1. * keV; + highEnergyLimit[alphaPlus] = 10. * MeV; + } + else + { + G4Exception("G4CrossSectionChargeIncrease Constructor: alphaPlus is not defined"); + } + + if (heliumDef != 0) + { + helium = heliumDef->GetParticleName(); + lowEnergyLimit[helium] = 1. * keV; + highEnergyLimit[helium] = 10. * MeV; + } + else + { + G4Exception("G4CrossSectionChargeIncrease Constructor: helium is not defined"); + } + +} + + +G4CrossSectionChargeIncrease::~G4CrossSectionChargeIncrease() +{} + + +G4double G4CrossSectionChargeIncrease::CrossSection(const G4Track& track) +{ + G4double lowLim = lowEnergyLimitDefault; + G4double highLim = highEnergyLimitDefault; + + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + const G4String& particleName = particle->GetDefinition()->GetParticleName(); + + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + + const G4ParticleDefinition* particleDefinition = track.GetDefinition(); + + if ( + particleDefinition != instance->GetIon("hydrogen") + && + particleDefinition != instance->GetIon("alpha+") + && + particleDefinition != instance->GetIon("helium") + ) + + G4Exception("G4CrossSectionChargeIncrease: attempting to calculate cross section for wrong particle"); + + + // Retrieve energy limits for the current particle type + + std::map< G4String,G4double,std::less >::iterator pos1; + pos1 = lowEnergyLimit.find(particleName); + + // Lower limit + if (pos1 != lowEnergyLimit.end()) + { + lowLim = pos1->second; + } + + // Upper limit + std::map< G4String,G4double,std::less >::iterator pos2; + pos2 = highEnergyLimit.find(particleName); + + if (pos2 != highEnergyLimit.end()) + { + highLim = pos2->second; + } + + G4double totalCrossSection = 0.; + + if (k >= lowLim && k <= highLim) + { + //HYDROGEN + if (particleDefinition == instance->GetIon("hydrogen")) + { + const G4double aa = 2.835; + const G4double bb = 0.310; + const G4double cc = 2.100; + const G4double dd = 0.760; + const G4double fac = 1.0e-18; + const G4double rr = 13.606 * eV; + + G4double t = k / (proton_mass_c2/electron_mass_c2); + G4double x = t / rr; + G4double temp = 4.0 * pi * Bohr_radius/nm * Bohr_radius/nm * fac; + G4double sigmal = temp * cc * (std::pow(x,dd)); + G4double sigmah = temp * (aa * std::log(1.0 + x) + bb) / x; + totalCrossSection = 1.0/(1.0/sigmal + 1.0/sigmah) *m*m; + } + else + { + totalCrossSection = partialCrossSection.Sum(k,particleDefinition); + } + } + + return totalCrossSection; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeIncreasePartial.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeIncreasePartial.cc new file mode 100755 index 0000000000..7206ad7441 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeIncreasePartial.cc @@ -0,0 +1,227 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionChargeIncreasePartial.cc,v 1.1 2007/11/08 18:25:25 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionChargeIncreasePartial.hh" +#include "G4DynamicParticle.hh" +#include "G4ParticleDefinition.hh" +#include "G4Proton.hh" +#include "G4DNAGenericIonsManager.hh" + +#include "Randomize.hh" + +G4CrossSectionChargeIncreasePartial::G4CrossSectionChargeIncreasePartial() +{ + + //ALPHA+ + f0[0][0]=1.; + a0[0][0]=2.25; + a1[0][0]=-0.75; + b0[0][0]=-32.10; + c0[0][0]=0.600; + d0[0][0]=2.40; + x0[0][0]=4.60; + + x1[0][0]=-1.; + b1[0][0]=-1.; + + numberOfPartialCrossSections[0]=1; + + //HELIUM + + f0[0][1]=1.; + a0[0][1]=2.25; + a1[0][1]=-0.75; + b0[0][1]=-30.93; + c0[0][1]=0.590; + d0[0][1]=2.35; + x0[0][1]=4.29; + + f0[1][1]=1.; + a0[1][1]=2.25; + a1[1][1]=-0.75; + b0[1][1]=-32.61; + c0[1][1]=0.435; + d0[1][1]=2.70; + x0[1][1]=4.45; + + x1[0][1]=-1.; + b1[0][1]=-1.; + + x1[1][1]=-1.; + b1[1][1]=-1.; + + numberOfPartialCrossSections[1]=2; + +} + +G4CrossSectionChargeIncreasePartial::~G4CrossSectionChargeIncreasePartial() +{ } + +G4double G4CrossSectionChargeIncreasePartial::CrossSection(G4double k, G4int index, + const G4ParticleDefinition* particleDefinition) +{ + + G4int particleTypeIndex = 0; + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + + if (particleDefinition == instance->GetIon("alpha+")) particleTypeIndex=0; + if (particleDefinition == instance->GetIon("helium")) particleTypeIndex=1; + + // + // sigma(T) = f0 10 ^ y(log10(T/eV)) + // + // / a0 x + b0 x < x0 + // | + // y(x) = < a0 x + b0 - c0 (x - x0)^d0 x0 <= x < x1 + // | + // \ a1 x + b1 x >= x1 + // + // + // f0, a0, a1, b0, b1, c0, d0, x0, x1 are parameters that change for protons and helium (0, +, ++) + // + // f0 has been added to the code in order to manage partial (shell-dependent) cross sections (if no shell dependence is present. f0=1. Sum of f0 over the considered shells should give 1) + // + // From Rad. Phys. and Chem. 59 (2000) 255-275, M. Dingfelder et al. + // Inelastic-collision cross sections of liquid water for interactions of energetic proton + // + + if (x1[index][particleTypeIndex]GetIon("hydrogen")) return 0; + if (particleDefinition == instance->GetIon("alpha+")) particleTypeIndex=0; + if (particleDefinition == instance->GetIon("helium")) particleTypeIndex=1; + + const G4int n = numberOfPartialCrossSections[particleTypeIndex]; + G4double* values(new G4double[n]); + G4double value = 0; + G4int i = n; + + while (i>0) + { + i--; + values[i]=CrossSection(k, i, particleDefinition); + value+=values[i]; + } + + value*=G4UniformRand(); + + i=n; + while (i>0) + { + i--; + + if (values[i]>value) + break; + + value-=values[i]; + } + + delete[] values; + + return i; +} + +G4double G4CrossSectionChargeIncreasePartial::Sum(G4double k, const G4ParticleDefinition* particleDefinition) +{ + G4int particleTypeIndex = 0; + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + + if (particleDefinition == instance->GetIon("alpha+")) particleTypeIndex=0; + if (particleDefinition == instance->GetIon("helium")) particleTypeIndex=1; + + G4double totalCrossSection = 0.; + + for (G4int i=0; i 0) +// { +// G4cout << name << " is created " << G4endl +// << "Energy range: " +// << lowEnergyLimit / keV << " keV - " +// << highEnergyLimit / GeV << " GeV" +// << G4endl; +// } +} + + +G4CrossSectionElasticScreenedRutherford::~G4CrossSectionElasticScreenedRutherford() +{ } + + +G4double G4CrossSectionElasticScreenedRutherford::CrossSection(const G4Track& track) +{ + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + // Cross section = 0 outside the energy validity limits set in the constructor + // ---- MGP ---- Better handling of these limits to be set in a following design iteration + + G4double screenedCrossSection = 0.; + + if (k > lowEnergyLimit && k < highEnergyLimit) + { + // G4Material* material = track.GetMaterial(); + + // Assume that the material is water; proper algorithm to calculate z correctly for any material to be inserted here + // For H20 Z = 10 (total number of electrons) + G4double z = 10.; + + G4double n = ScreeningFactor(k,z); + G4double crossSection = RutherfordCrossSection(k, z); + screenedCrossSection = pi * crossSection / (n * (n + 1.)); + } + + return screenedCrossSection; +} + +G4double G4CrossSectionElasticScreenedRutherford::RutherfordCrossSection(G4double k, G4double z) +{ + // + // e^4 / K + m_e c^2 \^2 + // sigma_Ruth(K) = Z (Z+1) -------------------- | --------------------- | + // (4 pi epsilon_0)^2 \ K * (K + 2 m_e c^2) / + // + // Where K is the electron non-relativistic kinetic energy + // + // NIM 155, pp. 145-156, 1978 + + G4double length =(e_squared * (k + electron_mass_c2)) / (4 * pi *epsilon0 * k * ( k + 2 * electron_mass_c2)); + G4double cross = z * ( z + 1) * length * length; + + return cross; +} + +//G4bool G4CrossSectionElasticScreenedRutherford::IsApplicable(const G4ParticleDefinition& particle) +//{ +// return ( &particle == G4Electron::Electron() ); +//} + + +G4double G4CrossSectionElasticScreenedRutherford::ScreeningFactor(G4double k, G4double z) +{ + // + // alpha_1 + beta_1 ln(K/eV) constK Z^(2/3) + // n(T) = -------------------------- ----------------- + // K/(m_e c^2) 2 + K/(m_e c^2) + // + // Where K is the electron non-relativistic kinetic energy + // + // n(T) > 0 for T < ~ 400 MeV + // + // NIM 155, pp. 145-156, 1978 + // Formulae (2) and (5) + + const G4double alpha_1(1.64); + const G4double beta_1(-0.0825); + const G4double constK(1.7E-5); + + G4double numerator = (alpha_1 + beta_1 * std::log(k/eV)) * constK * std::pow(z, 2./3.); + + k /= electron_mass_c2; + + G4double denominator = k * (2 + k); + + G4double value = 0.; + if (denominator > 0.) value = numerator / denominator; + + return value; + +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationBorn.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationBorn.cc new file mode 100644 index 0000000000..4183973a8f --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationBorn.cc @@ -0,0 +1,106 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionExcitationBorn.cc,v 1.2 2007/11/09 20:11:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionExcitationBorn.hh" +#include "G4Track.hh" +#include "G4DynamicParticle.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4LogLogInterpolation.hh" + +#include "Randomize.hh" + +G4CrossSectionExcitationBorn::G4CrossSectionExcitationBorn() +{ + + // ---- MGP ---- Limits to be checked: current values are just temporary for testing purpose + name = "ExcitationBorn"; + lowEnergyLimit = 1. * keV; + highEnergyLimit = 10 * MeV; + + table = 0; +} + + +G4CrossSectionExcitationBorn::~G4CrossSectionExcitationBorn() +{ + delete table; +} + +G4double G4CrossSectionExcitationBorn::CrossSection(const G4Track& track) +{ + // Lazy initialisation: load cross section tables in memory the first time access to them is required + + G4double sigma = 0.; + + if (table == 0) + { + // Load tables + // ---- MGP ---- + table = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,(1e-22/3.343)*m*m ); + table->LoadData("dna/sigma_excitation_p_born"); + + // ---- MGP ---- Temporary + table->PrintData(); + } + + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + if (k > lowEnergyLimit && k < highEnergyLimit) + { + sigma = table->FindValue(k); // no electron interaction ---- MGP ---- What does this mean? + } + return sigma; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationBornPartial.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationBornPartial.cc new file mode 100644 index 0000000000..8a21058d5a --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationBornPartial.cc @@ -0,0 +1,130 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionExcitationBornPartial.cc,v 1.1 2007/10/15 08:57:54 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionExcitationBornPartial.hh" +#include "G4Track.hh" +#include "G4DynamicParticle.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4LogLogInterpolation.hh" + +#include "Randomize.hh" + +#include + +G4CrossSectionExcitationBornPartial::G4CrossSectionExcitationBornPartial() +{ + table = 0; + // nLevels = waterExcitation.NumberOfLevels(); +} + + +G4CrossSectionExcitationBornPartial::~G4CrossSectionExcitationBornPartial() +{ + delete table; +} + + +G4int G4CrossSectionExcitationBornPartial::RandomSelect(G4double k) +{ + // Lazy initialisation: load cross section tables in memory the first time access to them is required + + G4int level = 0; + + if (table == 0) + { + // Load tables + // ---- MGP ---- + table = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,(1e-22/3.343)*m*m ); + table->LoadData("dna/sigma_excitation_p_born"); + + // ---- MGP ---- Temporary + table->PrintData(); + } + + G4double* valuesBuffer = new G4double[table->NumberOfComponents()]; + + const size_t n(table->NumberOfComponents()); + size_t i(n); + G4double value = 0.; + + while (i>0) + { + i--; + valuesBuffer[i] = table->GetComponent(i)->FindValue(k); + value += valuesBuffer[i]; + } + + value *= G4UniformRand(); + + i = n; + + while (i > 0) + { + i--; + + if (valuesBuffer[i] > value) + { + delete[] valuesBuffer; + return i; + } + value -= valuesBuffer[i]; + } + + // It should never end up here + + // ---- MGP ---- Is the following line really necessary? + if (valuesBuffer) delete[] valuesBuffer; + + return level; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationEmfietzoglou.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationEmfietzoglou.cc new file mode 100644 index 0000000000..759c25f1af --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationEmfietzoglou.cc @@ -0,0 +1,84 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionExcitationEmfietzoglou.cc,v 1.2 2007/10/15 08:36:35 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionExcitationEmfietzoglou.hh" +#include "G4Track.hh" +#include "G4DynamicParticle.hh" + +G4CrossSectionExcitationEmfietzoglou::G4CrossSectionExcitationEmfietzoglou() +{ + + name = "CrossSectionExcitationEmfietzoglou"; + lowEnergyLimit = 7.4 * eV; + highEnergyLimit = 10. * MeV; +} + + +G4CrossSectionExcitationEmfietzoglou::~G4CrossSectionExcitationEmfietzoglou() +{ } + + +G4double G4CrossSectionExcitationEmfietzoglou::CrossSection(const G4Track& track) +{ + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + // Cross section = 0 outside the energy validity limits set in the constructor + // ---- MGP ---- Better handling of these limits to be set in a following design iteration + + G4double sigma = 0.; + + if (k > lowEnergyLimit && k < highEnergyLimit) sigma = partialCrossSection.Sum(k); + + return sigma; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationEmfietzoglouPartial.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationEmfietzoglouPartial.cc new file mode 100644 index 0000000000..d877375610 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationEmfietzoglouPartial.cc @@ -0,0 +1,158 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionExcitationEmfietzoglouPartial.cc,v 1.2 2007/12/10 16:31:26 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionExcitationEmfietzoglouPartial.hh" +#include "G4Track.hh" +#include "G4DynamicParticle.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" + +#include "Randomize.hh" + +#include + +G4CrossSectionExcitationEmfietzoglouPartial::G4CrossSectionExcitationEmfietzoglouPartial() +{ + + nLevels = waterExcitation.NumberOfLevels(); + //G4cout << "Water excitation energy: number of levels = " << nLevels << G4endl; +} + + +G4CrossSectionExcitationEmfietzoglouPartial::~G4CrossSectionExcitationEmfietzoglouPartial() +{ } + +G4double G4CrossSectionExcitationEmfietzoglouPartial::CrossSection(G4double t, G4int level) +{ + // Aj T + // Sigma(T) = ------------- (Bj / T) ln(Cj ---) [1 - Bj / T]^Pj + // 2 pi alpha0 R + // + // Sigma is the macroscopic cross section = N sigma, where N = number of target particles per unit volume + // and sigma is the microscopic cross section + // T is the incoming electron kinetic energy + // alpha0 is the Bohr Radius (Bohr_radius) + // Aj, Bj, Cj & Pj are parameters that can be found in Emfietzoglou's papers + // + // + // From Phys. Med. Biol. 48 (2003) 2355-2371, D.Emfietzoglou, + // Monte Carlo Simulation of the energy loss of low energy electrons in liquid Water + + // Scaling for macroscopic cross section: number of water moleculs per unit volume + // (capra) const G4double sigma0 = (10. / 3.343e22) * cm2; + const G4double density = 3.34192e+19 * mm3; + + const G4double aj[]={0.0205, 0.0209, 0.0130, 0.0026, 0.0025}; + const G4double cj[]={4.9801, 3.3850, 2.8095, 1.9242, 3.4624}; + const G4double pj[]={0.4757, 0.3483, 0.4443, 0.3429, 0.4379}; + const G4double r = 13.6 * eV; + + G4double sigma = 0.; + + G4double exc = waterExcitation.ExcitationEnergy(level); + // G4cout << "Water excitation energy " << exc/keV << " level = " << level << G4endl; + + if (t >= exc) + { + G4double excitationSigma = ( aj[level] / (2.*pi*Bohr_radius)) + * (exc / t) + * std::log(cj[level]*(t/r)) + * std::pow((1.- (exc/t)), pj[level]); + sigma = excitationSigma / density; + } + return sigma; +} + +G4int G4CrossSectionExcitationEmfietzoglouPartial::RandomSelect(G4double k) +{ + G4int i = nLevels; + G4double value = 0.; + std::deque values; + + // ---- MGP ---- The following algorithm is wrong: it works is the cross section + // is a monotone increasing function. + // The algorithm should be corrected by building the cumulative function + // of the cross section and comparing a random number in the range 0-1 against + // the cumulative value at each bin + + while (i > 0) + { + i--; + G4double partial = CrossSection(k,i); + values.push_front(partial); + value += partial; + } + + value *= G4UniformRand(); + + i = nLevels; + + while (i > 0) + { + i--; + if (values[i] > value) return i; + value -= values[i]; + } + + return 0; +} + +G4double G4CrossSectionExcitationEmfietzoglouPartial::Sum(G4double k) +{ + G4double totalCrossSection = 0.; + + for (G4int i=0; iGetIon("alpha++"); + G4ParticleDefinition* alphaPlusDef = instance->GetIon("alpha+"); + G4ParticleDefinition* heliumDef = instance->GetIon("helium"); + + G4String proton; + G4String alphaPlusPlus; + G4String alphaPlus; + G4String helium; + + if (protonDef != 0) + { + proton = protonDef->GetParticleName(); + lowEnergyLimit[proton] = 10. * eV; + highEnergyLimit[proton] = 500. * keV; + } + else + { + G4Exception("G4CrossSectionExcitationMillerGreen Constructor: proton is not defined"); + } + + if (alphaPlusPlusDef != 0) + { + alphaPlusPlus = alphaPlusPlusDef->GetParticleName(); + lowEnergyLimit[alphaPlusPlus] = 1. * keV; + highEnergyLimit[alphaPlusPlus] = 10. * MeV; + } + else + { + G4Exception("G4CrossSectionExcitationMillerGreen Constructor: alphaPlusPlus is not defined"); + } + + if (alphaPlusDef != 0) + { + alphaPlus = alphaPlusDef->GetParticleName(); + lowEnergyLimit[alphaPlus] = 1. * keV; + highEnergyLimit[alphaPlus] = 10. * MeV; + } + else + { + G4Exception("G4CrossSectionExcitationMillerGreen Constructor: alphaPlus is not defined"); + } + + if (heliumDef != 0) + { + helium = heliumDef->GetParticleName(); + lowEnergyLimit[helium] = 1. * keV; + highEnergyLimit[helium] = 10. * MeV; + } + else + { + G4Exception("G4CrossSectionExcitationMillerGreen Constructor: helium is not defined"); + } + + +} + + +G4CrossSectionExcitationMillerGreen::~G4CrossSectionExcitationMillerGreen() +{} + + +G4double G4CrossSectionExcitationMillerGreen::CrossSection(const G4Track& track) +{ + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + + if ( + track.GetDefinition() != G4Proton::ProtonDefinition() + && + track.GetDefinition() != instance->GetIon("alpha++") + && + track.GetDefinition() != instance->GetIon("alpha+") + && + track.GetDefinition() != instance->GetIon("helium") + ) + + G4Exception("G4CrossSectionMillerGreen: attempting to calculate cross section for wrong particle"); + + G4double lowLim = lowEnergyLimitDefault; + G4double highLim = highEnergyLimitDefault; + + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + const G4String& particleName = particle->GetDefinition()->GetParticleName(); + + // Retrieve energy limits for the current particle type + + std::map< G4String,G4double,std::less >::iterator pos1; + pos1 = lowEnergyLimit.find(particleName); + + // Lower limit + if (pos1 != lowEnergyLimit.end()) + { + lowLim = pos1->second; + } + + // Upper limit + std::map< G4String,G4double,std::less >::iterator pos2; + pos2 = highEnergyLimit.find(particleName); + + if (pos2 != highEnergyLimit.end()) + { + highLim = pos2->second; + } + + // + const G4ParticleDefinition* particleDefinition = track.GetDefinition(); + + G4double crossSection(0.); + + if (k >= lowLim && k <= highLim) + { + + crossSection = partialCrossSection.Sum(k,particleDefinition); + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + + // add ONE or TWO electron-water excitation for alpha+ and helium + + if ( particleDefinition == instance->GetIon("alpha+") + || + particleDefinition == instance->GetIon("helium") + ) + { + G4CrossSectionExcitationEmfietzoglouPartial * excitationXS = + new G4CrossSectionExcitationEmfietzoglouPartial(); + G4double sigmaExcitation=0; + if (k*0.511/3728 > 7.4*eV && k*0.511/3728 < 10*keV) sigmaExcitation = excitationXS->Sum(k*0.511/3728); + + if ( particleDefinition == instance->GetIon("alpha+") ) + crossSection = crossSection + sigmaExcitation ; + if ( particleDefinition == instance->GetIon("helium") ) + crossSection = crossSection + 2*sigmaExcitation ; + delete excitationXS; + } + } + + return crossSection; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreenPartial.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreenPartial.cc new file mode 100755 index 0000000000..8d20b4556d --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreenPartial.cc @@ -0,0 +1,324 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionExcitationMillerGreenPartial.cc,v 1.1 2007/11/08 19:57:23 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionExcitationMillerGreenPartial.hh" +#include "G4Track.hh" +#include "G4DynamicParticle.hh" +#include "G4ParticleDefinition.hh" +#include "G4Proton.hh" +#include "G4DNAGenericIonsManager.hh" +#include "G4CrossSectionExcitationEmfietzoglouPartial.hh" +#include "Randomize.hh" +#include + + +G4CrossSectionExcitationMillerGreenPartial::G4CrossSectionExcitationMillerGreenPartial() +{ + + nLevels = waterExcitation.NumberOfLevels(); + //G4cout << "Water excitation energy: number of levels = " << nLevels << G4endl; + + //PROTON + kineticEnergyCorrection[0] = 1.; + slaterEffectiveCharge[0][0] = 0.; + slaterEffectiveCharge[1][0] = 0.; + slaterEffectiveCharge[2][0] = 0.; + sCoefficient[0][0] = 0.; + sCoefficient[1][0] = 0.; + sCoefficient[2][0] = 0.; + + //ALPHA++ + kineticEnergyCorrection[1] = 0.9382723/3.727417; + slaterEffectiveCharge[0][1]=0.; + slaterEffectiveCharge[1][1]=0.; + slaterEffectiveCharge[2][1]=0.; + sCoefficient[0][1]=0.; + sCoefficient[1][1]=0.; + sCoefficient[2][1]=0.; + + // ALPHA+ + kineticEnergyCorrection[2] = 0.9382723/3.727417; + slaterEffectiveCharge[0][2]=2.0; + slaterEffectiveCharge[1][2]=1.15; + slaterEffectiveCharge[2][2]=1.15; + sCoefficient[0][2]=0.7; + sCoefficient[1][2]=0.15; + sCoefficient[2][2]=0.15; + + // HELIUM + kineticEnergyCorrection[3] = 0.9382723/3.727417; + slaterEffectiveCharge[0][3]=1.7; + slaterEffectiveCharge[1][3]=1.15; + slaterEffectiveCharge[2][3]=1.15; + sCoefficient[0][3]=0.5; + sCoefficient[1][3]=0.25; + sCoefficient[2][3]=0.25; + +} + +G4CrossSectionExcitationMillerGreenPartial::~G4CrossSectionExcitationMillerGreenPartial() +{ } + +G4double G4CrossSectionExcitationMillerGreenPartial::CrossSection(G4double k, G4int excitationLevel, + const G4ParticleDefinition* particleDefinition) +{ + // ( ( z * aj ) ^ omegaj ) * ( t - ej ) ^ nu + // sigma(t) = zEff^2 * sigma0 * -------------------------------------------- + // jj ^ ( omegaj + nu ) + t ^ ( omegaj + nu ) + // + // where t is the kinetic energy corrected by Helium mass over proton mass for Helium ions + // + // zEff is: + // 1 for protons + // 2 for alpha++ + // and 2 - c1 S_1s - c2 S_2s - c3 S_2p for alpha+ and He + // + // Dingfelder et al., RPC 59, 255-275, 2000 from Miller and Green (1973) + // Formula (34) and Table 2 + + const G4double sigma0(1.E+8 * barn); + const G4double nu(1.); + const G4double aj[]={876.*eV, 2084.* eV, 1373.*eV, 692.*eV, 900.*eV}; + const G4double jj[]={19820.*eV, 23490.*eV, 27770.*eV, 30830.*eV, 33080.*eV}; + const G4double omegaj[]={0.85, 0.88, 0.88, 0.78, 0.78}; + + G4int particleTypeIndex = 0; + G4DNAGenericIonsManager* instance; + instance = G4DNAGenericIonsManager::Instance(); + + if (particleDefinition == G4Proton::ProtonDefinition()) particleTypeIndex=0; + if (particleDefinition == instance->GetIon("alpha++")) particleTypeIndex=1; + if (particleDefinition == instance->GetIon("alpha+")) particleTypeIndex=2; + if (particleDefinition == instance->GetIon("helium")) particleTypeIndex=3; + + G4double tCorrected; + tCorrected = k * kineticEnergyCorrection[particleTypeIndex]; + + // Assume that the material is water; proper algorithm to calculate correctly for any material to be inserted here + G4int z = 10; + + G4double numerator; + numerator = std::pow(z * aj[excitationLevel], omegaj[excitationLevel]) * + std::pow(tCorrected - waterExcitation.ExcitationEnergy(excitationLevel), nu); + + G4double power; + power = omegaj[excitationLevel] + nu; + + G4double denominator; + denominator = std::pow(jj[excitationLevel], power) + std::pow(tCorrected, power); + + G4double zEff = particleDefinition->GetPDGCharge() / eplus + particleDefinition->GetLeptonNumber(); + + zEff -= ( sCoefficient[0][particleTypeIndex] * S_1s(k, waterExcitation.ExcitationEnergy(excitationLevel), slaterEffectiveCharge[0][particleTypeIndex], 1.) + + sCoefficient[1][particleTypeIndex] * S_2s(k, waterExcitation.ExcitationEnergy(excitationLevel), slaterEffectiveCharge[1][particleTypeIndex], 2.) + + sCoefficient[2][particleTypeIndex] * S_2p(k, waterExcitation.ExcitationEnergy(excitationLevel), slaterEffectiveCharge[2][particleTypeIndex], 2.) ); + + G4double cross = sigma0 * zEff * zEff * numerator / denominator; + + return cross; +} + +G4int G4CrossSectionExcitationMillerGreenPartial::RandomSelect(G4double k, + const G4ParticleDefinition* particle) +{ + G4int i = nLevels; + G4double value = 0.; + std::deque values; + + // ---- MGP ---- The following algorithm is wrong: it works is the cross section + // is a monotone increasing function. + // The algorithm should be corrected by building the cumulative function + // of the cross section and comparing a random number in the range 0-1 against + // the cumulative value at each bin + + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + + // ELECTRON CORRECTION + + if ( particle == instance->GetIon("alpha++")) + { while (i > 0) + { + i--; + G4double partial = CrossSection(k,i,particle); + values.push_front(partial); + value += partial; + } + + value *= G4UniformRand(); + + i = nLevels; + + while (i > 0) + { + i--; + if (values[i] > value) return i; + value -= values[i]; + } + } + + // + // add ONE or TWO electron-water excitation for alpha+ and helium + + if ( particle == instance->GetIon("alpha+") + || + particle == instance->GetIon("helium") + ) + { + + while (i>0) + { + i--; + + G4CrossSectionExcitationEmfietzoglouPartial* excitationXS = + new G4CrossSectionExcitationEmfietzoglouPartial(); + + G4double sigmaExcitation=0; + if (k*0.511/3728 > 7.4*eV && k*0.511/3728 < 10*keV) sigmaExcitation = excitationXS->CrossSection(k*0.511/3728,i); + + G4double partial = CrossSection(k,i,particle); + if (particle == instance->GetIon("alpha+")) partial = CrossSection(k,i,particle) + sigmaExcitation; + if (particle == instance->GetIon("helium")) partial = CrossSection(k,i,particle) + 2*sigmaExcitation; + values.push_front(partial); + value += partial; + delete excitationXS; + } + + value*=G4UniformRand(); + + i=5; + while (i>0) + { + i--; + + if (values[i]>value) return i; + + value-=values[i]; + } + } + // + return 0; +} + +G4double G4CrossSectionExcitationMillerGreenPartial::Sum(G4double k, const G4ParticleDefinition* particle) +{ + G4double totalCrossSection = 0.; + + for (G4int i=0; iGetParticleName(); + tableFile[electron] = fileElectron; + + // Energy limits + lowEnergyLimit[electron] = 25. * eV; + highEnergyLimit[electron] = 30. * keV; + + // Create data set with electron cross section data and load values stored in file + G4DNACrossSectionDataSet* tableE = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,scaleFactor ); + tableE->LoadData(fileElectron); + + // Insert key-table pair in map + tableData[electron] = tableE; + } + else + { + G4Exception("G4CrossSectionIonisationBorn Constructor: electron is not defined"); + } + + // Data members for protons + + if (protonDef != 0) + { + proton = protonDef->GetParticleName(); + tableFile[proton] = fileProton; + + // Energy limits + lowEnergyLimit[proton] = 500. * keV; + highEnergyLimit[proton] = 10. * MeV; + + // Create data set with proton cross section data and load values stored in file + G4DNACrossSectionDataSet* tableP = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,scaleFactor ); + tableP->LoadData(fileProton); + + // Insert key-table pair in map + tableData[proton] = tableP; + } + else + { + G4Exception("G4CrossSectionIonisationBorn Constructor: proton is not defined"); + } +} + + +G4CrossSectionIonisationBorn::~G4CrossSectionIonisationBorn() +{ + // Destroy the content of the map + std::map< G4String,G4DNACrossSectionDataSet*,std::less >::iterator pos; + for (pos = tableData.begin(); pos != tableData.end(); ++pos) + { + G4DNACrossSectionDataSet* table = pos->second; + delete table; + } +} + + + +G4double G4CrossSectionIonisationBorn::CrossSection(const G4Track& track ) +{ + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + // Cross section = 0 outside the energy validity limits set in the constructor + G4double sigma = 0.; + + // ---- MGP ---- Better handling of these limits to be set in a following design iteration + G4double lowLim = lowEnergyLimitDefault; + G4double highLim = highEnergyLimitDefault; + + const G4String& particleName = particle->GetDefinition()->GetParticleName(); + + // Retrieve energy limits for the current particle type + + std::map< G4String,G4double,std::less >::iterator pos1; + pos1 = lowEnergyLimit.find(particleName); + + // Lower limit + if (pos1 != lowEnergyLimit.end()) + { + lowLim = pos1->second; + } + + // Upper limit + std::map< G4String,G4double,std::less >::iterator pos2; + pos2 = highEnergyLimit.find(particleName); + + if (pos2 != highEnergyLimit.end()) + { + highLim = pos2->second; + } + + // Verify that the current track is within the energy limits of validity of the cross section model + if (k > lowLim && k < highLim) + { + std::map< G4String,G4DNACrossSectionDataSet*,std::less >::iterator pos; + pos = tableData.find(particleName); + + if (pos != tableData.end()) + { + G4DNACrossSectionDataSet* table = pos->second; + if (table != 0) + { + // Cross section + sigma = table->FindValue(k); + } + } + else + { + // The track does not corresponds to a particle pertinent to this model + G4Exception("G4CrossSectionIonisationBorn: attempting to calculate cross section for wrong particle"); + } + } + + return sigma; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornElectron.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornElectron.cc new file mode 100644 index 0000000000..e339746b63 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornElectron.cc @@ -0,0 +1,105 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionIonisationBornElectron.cc,v 1.2 2007/11/08 18:51:34 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionIonisationBornElectron.hh" +#include "G4Track.hh" +#include "G4DynamicParticle.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4LogLogInterpolation.hh" + +#include "Randomize.hh" + +G4CrossSectionIonisationBornElectron::G4CrossSectionIonisationBornElectron() +{ + + // ---- MGP ---- Limits to be checked: current values are just temporary for testing purpose + lowEnergyLimit = 7.4 * eV; + highEnergyLimit = 10 * keV; + + table = 0; +} + + +G4CrossSectionIonisationBornElectron::~G4CrossSectionIonisationBornElectron() +{ + delete table; +} + +G4double G4CrossSectionIonisationBornElectron::CrossSection(const G4Track& track) +{ + // Lazy initialisation: load cross section tables in memory the first time access to them is required + + G4double sigma = 0.; + + if (table == 0) + { + // Load tables + // ---- MGP ---- + table = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,(1e-22/3.343)*m*m ); + table->LoadData("dna/sigma_ionisation_e_born"); + + // ---- MGP ---- Temporary + table->PrintData(); + } + + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + if (k > lowEnergyLimit && k < highEnergyLimit) + { + sigma = table->FindValue(k); // no electron interaction ---- MGP ---- What does this mean? + } + return sigma; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartial.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartial.cc new file mode 100644 index 0000000000..0f4962f937 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartial.cc @@ -0,0 +1,281 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionIonisationBornPartial.cc,v 1.3 2007/11/09 20:11:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionIonisationBornPartial.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4Proton.hh" +#include "G4Track.hh" +#include "G4LogLogInterpolation.hh" +#include "G4SystemOfUnits.hh" + +#include "Randomize.hh" + +#include + +G4CrossSectionIonisationBornPartial::G4CrossSectionIonisationBornPartial() +{ + + name = "IonisationBorn"; + + // Default energy limits (defined for protection against anomalous behaviour only) + name = "IonisationBornPartial"; + lowEnergyLimitDefault = 25 * eV; + highEnergyLimitDefault = 30 * keV; + + G4String fileElectron("dna/sigma_ionisation_e_born"); + G4String fileProton("dna/sigma_ionisation_p_born"); + + G4ParticleDefinition* electronDef = G4Electron::ElectronDefinition(); + G4ParticleDefinition* protonDef = G4Proton::ProtonDefinition(); + + G4String electron; + G4String proton; + + // Factor to scale microscopic/macroscopic cross section data in water + // ---- MGP ---- Hardcoded (taken from prototype code); to be replaced with proper calculation + G4double scaleFactor = (1.e-22 / 3.343) * m*m; + + + // Data members for electrons + + if (electronDef != 0) + { + electron = electronDef->GetParticleName(); + tableFile[electron] = fileElectron; + + // Energy limits + lowEnergyLimit[electron] = 25. * eV; + highEnergyLimit[electron] = 30. * keV; + + // Create data set with electron cross section data and load values stored in file + G4DNACrossSectionDataSet* tableE = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,scaleFactor ); + tableE->LoadData(fileElectron); + + // Insert key-table pair in map + tableData[electron] = tableE; + } + else + { + G4Exception("G4CrossSectionIonisationBornPartial Constructor: electron is not defined"); + } + + // Data members for protons + + if (protonDef != 0) + { + proton = protonDef->GetParticleName(); + tableFile[proton] = fileProton; + + // Energy limits + lowEnergyLimit[proton] = 500. * keV; + highEnergyLimit[proton] = 10. * MeV; + + // Create data set with proton cross section data and load values stored in file + G4DNACrossSectionDataSet* tableP = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,scaleFactor ); + tableP->LoadData(fileProton); + + // Insert key-table pair in map + tableData[proton] = tableP; + } + else + { + G4Exception("G4CrossSectionIonisationBornPartial Constructor: proton is not defined"); + } +} + + +G4CrossSectionIonisationBornPartial::~G4CrossSectionIonisationBornPartial() +{ + // Destroy the content of the map + std::map< G4String,G4DNACrossSectionDataSet*,std::less >::iterator pos; + for (pos = tableData.begin(); pos != tableData.end(); ++pos) + { + G4DNACrossSectionDataSet* table = pos->second; + delete table; + } +} + + +G4int G4CrossSectionIonisationBornPartial::RandomSelect(G4double k, const G4String& particle ) +{ + + G4int level = 0; + + // Retrieve data table corresponding to the current particle type + + std::map< G4String,G4DNACrossSectionDataSet*,std::less >::iterator pos; + pos = tableData.find(particle); + + if (pos != tableData.end()) + { + G4DNACrossSectionDataSet* table = pos->second; + + if (table != 0) + { + // C-style arrays are used in G4DNACrossSectionDataSet: this design feature was + // introduced without authorization and should be replaced by the use of STL containers + + G4double* valuesBuffer = new G4double[table->NumberOfComponents()]; + + const size_t n(table->NumberOfComponents()); + size_t i(n); + G4double value = 0.; + + while (i>0) + { + i--; + valuesBuffer[i] = table->GetComponent(i)->FindValue(k); + value += valuesBuffer[i]; + } + + value *= G4UniformRand(); + + i = n; + + while (i > 0) + { + i--; + + if (valuesBuffer[i] > value) + { + delete[] valuesBuffer; + return i; + } + value -= valuesBuffer[i]; + } + + // It should never end up here + + // ---- MGP ---- Is the following line really necessary? + if (valuesBuffer) delete[] valuesBuffer; + + } + } + else + { + G4Exception("G4CrossSectionIonisationBornPartial: attempting to calculate cross section for wrong particle"); + } + + return level; +} + + +G4double G4CrossSectionIonisationBornPartial::CrossSection(const G4Track& track ) +{ + G4double sigma = 0.; + + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + // Cross section = 0 outside the energy validity limits set in the constructor + // ---- MGP ---- Better handling of these limits to be set in a following design iteration + + G4double lowLim = lowEnergyLimitDefault; + G4double highLim = highEnergyLimitDefault; + + const G4String& particleName = particle->GetDefinition()->GetParticleName(); + + // Retrieve energy limits for the current particle type + + std::map< G4String,G4double,std::less >::iterator pos1; + pos1 = lowEnergyLimit.find(particleName); + + // Lower limit + if (pos1 != lowEnergyLimit.end()) + { + lowLim = pos1->second; + } + + // Upper limit + std::map< G4String,G4double,std::less >::iterator pos2; + pos2 = highEnergyLimit.find(particleName); + + if (pos2 != highEnergyLimit.end()) + { + highLim = pos2->second; + } + + // Verify that the current track is within the energy limits of validity of the cross section model + if (k > lowLim && k < highLim) + { + std::map< G4String,G4DNACrossSectionDataSet*,std::less >::iterator pos; + pos = tableData.find(particleName); + + if (pos != tableData.end()) + { + G4DNACrossSectionDataSet* table = pos->second; + if (table != 0) + { + // ---- MGP ---- Temporary + // table->PrintData(); + + // Cross section + sigma = table->FindValue(k); + } + } + else + { + // The track corresponds to a not pertinent particle + G4Exception("G4CrossSectionIonisationBornPartial: attempting to calculate cross section for wrong particle"); + } + } + + return sigma; +} + + +G4double G4CrossSectionIonisationBornPartial::Sum(G4double /* energy */, const G4String& /* particle */) +{ + + return 0; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartialElectron.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartialElectron.cc new file mode 100644 index 0000000000..2538e791ab --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartialElectron.cc @@ -0,0 +1,129 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionIonisationBornPartialElectron.cc,v 1.1 2007/10/15 08:57:54 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionIonisationBornPartialElectron.hh" +#include "G4Track.hh" +#include "G4DynamicParticle.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4LogLogInterpolation.hh" + +#include "Randomize.hh" + +#include + +G4CrossSectionIonisationBornPartialElectron::G4CrossSectionIonisationBornPartialElectron() +{ + table = 0; +} + + +G4CrossSectionIonisationBornPartialElectron::~G4CrossSectionIonisationBornPartialElectron() +{ + delete table; +} + + +G4int G4CrossSectionIonisationBornPartialElectron::RandomSelect(G4double k) +{ + // Lazy initialisation: load cross section tables in memory the first time access to them is required + + G4int level = 0; + + if (table == 0) + { + // Load tables + // ---- MGP ---- + table = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,(1e-22/3.343)*m*m ); + table->LoadData("dna/sigmadiff_ionisation_e_born"); + + // ---- MGP ---- Temporary + table->PrintData(); + } + + G4double* valuesBuffer = new G4double[table->NumberOfComponents()]; + + const size_t n(table->NumberOfComponents()); + size_t i(n); + G4double value = 0.; + + while (i>0) + { + i--; + valuesBuffer[i] = table->GetComponent(i)->FindValue(k); + value += valuesBuffer[i]; + } + + value *= G4UniformRand(); + + i = n; + + while (i > 0) + { + i--; + + if (valuesBuffer[i] > value) + { + delete[] valuesBuffer; + return i; + } + value -= valuesBuffer[i]; + } + + // It should never end up here + + // ---- MGP ---- Is the following line really necessary? + if (valuesBuffer) delete[] valuesBuffer; + + return level; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationRudd.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationRudd.cc new file mode 100755 index 0000000000..5e0b9f6684 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationRudd.cc @@ -0,0 +1,346 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionIonisationRudd.cc,v 1.2 2007/11/09 16:20:16 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionIonisationRudd.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4Proton.hh" +#include "G4Track.hh" +#include "G4LogLogInterpolation.hh" +#include "G4SystemOfUnits.hh" +#include "G4DNAGenericIonsManager.hh" + +G4CrossSectionIonisationRudd::G4CrossSectionIonisationRudd() +{ + + name = "IonisationRudd"; + + // Default energy limits (defined for protection against anomalous behaviour only) + // ZERO LOW ENERGY LIMIT FOR ALLOWED KILLING + lowEnergyLimitDefault = 0 * eV; + highEnergyLimitDefault = 100 * MeV; + + G4String fileProton("dna/sigma_ionisation_p_rudd"); + G4String fileHydrogen("dna/sigma_ionisation_h_rudd"); + G4String fileAlphaPlusPlus("dna/sigma_ionisation_alphaplusplus_rudd"); + G4String fileAlphaPlus("dna/sigma_ionisation_alphaplus_rudd"); + G4String fileHelium("dna/sigma_ionisation_he_rudd"); + + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + G4ParticleDefinition* protonDef = G4Proton::ProtonDefinition(); + G4ParticleDefinition* hydrogenDef = instance->GetIon("hydrogen"); + G4ParticleDefinition* alphaPlusPlusDef = instance->GetIon("alpha++"); + G4ParticleDefinition* alphaPlusDef = instance->GetIon("alpha+"); + G4ParticleDefinition* heliumDef = instance->GetIon("helium"); + + G4String proton; + G4String hydrogen; + G4String alphaPlusPlus; + G4String alphaPlus; + G4String helium; + + // Factor to scale microscopic/macroscopic cross section data in water + // ---- MGP ---- Hardcoded (taken from prototype code); to be replaced with proper calculation + G4double scaleFactor = 1 * m*m; + + // Data members for protons + + if (protonDef != 0) + { + proton = protonDef->GetParticleName(); + tableFile[proton] = fileProton; + + // Energy limits + lowEnergyLimit[proton] = 0. * eV; + highEnergyLimit[proton] = 500. * keV; + + // Create data set with proton cross section data and load values stored in file + G4DNACrossSectionDataSet* tableProton = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, + eV, + scaleFactor ); + tableProton->LoadData(fileProton); + + // Insert key-table pair in map + tableData[proton] = tableProton; + } + else + { + G4Exception("G4CrossSectionIonisationRudd Constructor: proton is not defined"); + } + + // Data members for hydrogen + + if (hydrogenDef != 0) + { + hydrogen = hydrogenDef->GetParticleName(); + tableFile[hydrogen] = fileHydrogen; + + // Energy limits + lowEnergyLimit[hydrogen] = 0. * eV; + highEnergyLimit[hydrogen] = 100. * MeV; + + // Create data set with hydrogen cross section data and load values stored in file + G4DNACrossSectionDataSet* tableHydrogen = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, + eV, + scaleFactor ); + tableHydrogen->LoadData(fileHydrogen); + + // Insert key-table pair in map + tableData[hydrogen] = tableHydrogen; + } + else + { + G4Exception("G4CrossSectionIonisationRudd Constructor: hydrogen is not defined"); + } + + // Data members for alphaPlusPlus + + if (alphaPlusPlusDef != 0) + { + alphaPlusPlus = alphaPlusPlusDef->GetParticleName(); + tableFile[alphaPlusPlus] = fileAlphaPlusPlus; + + // Energy limits + lowEnergyLimit[alphaPlusPlus] = 0. * keV; + highEnergyLimit[alphaPlusPlus] = 10. * MeV; + + // Create data set with hydrogen cross section data and load values stored in file + G4DNACrossSectionDataSet* tableAlphaPlusPlus = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, + eV, + scaleFactor ); + tableAlphaPlusPlus->LoadData(fileAlphaPlusPlus); + + // Insert key-table pair in map + tableData[alphaPlusPlus] = tableAlphaPlusPlus; + } + else + { + G4Exception("G4CrossSectionIonisationRudd Constructor: alphaPlusPlus is not defined"); + } + + // Data members for alphaPlus + + if (alphaPlusDef != 0) + { + alphaPlus = alphaPlusDef->GetParticleName(); + tableFile[alphaPlus] = fileAlphaPlus; + + // Energy limits + lowEnergyLimit[alphaPlus] = 0. * keV; + highEnergyLimit[alphaPlus] = 10. * MeV; + + // Create data set with hydrogen cross section data and load values stored in file + G4DNACrossSectionDataSet* tableAlphaPlus = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, + eV, + scaleFactor ); + tableAlphaPlus->LoadData(fileAlphaPlus); + + // Insert key-table pair in map + tableData[alphaPlus] = tableAlphaPlus; + } + else + { + G4Exception("G4CrossSectionIonisationRudd Constructor: alphaPlus is not defined"); + } + + // Data members for helium + + if (heliumDef != 0) + { + helium = heliumDef->GetParticleName(); + tableFile[helium] = fileHelium; + + // Energy limits + lowEnergyLimit[helium] = 0. * keV; + highEnergyLimit[helium] = 10. * MeV; + + // Create data set with hydrogen cross section data and load values stored in file + G4DNACrossSectionDataSet* tableHelium = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, + eV, + scaleFactor ); + tableHelium->LoadData(fileHelium); + + // Insert key-table pair in map + tableData[helium] = tableHelium; + } + else + { + G4Exception("G4CrossSectionIonisationRudd Constructor: helium is not defined"); + } +} + + +G4CrossSectionIonisationRudd::~G4CrossSectionIonisationRudd() +{ + // Destroy the content of the map + std::map< G4String,G4DNACrossSectionDataSet*,std::less >::iterator pos; + for (pos = tableData.begin(); pos != tableData.end(); ++pos) + { + G4DNACrossSectionDataSet* table = pos->second; + delete table; + } +} + + + +G4double G4CrossSectionIonisationRudd::CrossSection(const G4Track& track ) +{ + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + + if ( + track.GetDefinition() != G4Proton::ProtonDefinition() + && + track.GetDefinition() != instance->GetIon("hydrogen") + && + track.GetDefinition() != instance->GetIon("alpha++") + && + track.GetDefinition() != instance->GetIon("alpha+") + && + track.GetDefinition() != instance->GetIon("helium") + ) + + G4Exception("G4CrossSectionIonisationRudd: attempting to calculate cross section for wrong particle"); + + // Cross section = 0 outside the energy validity limits set in the constructor + G4double sigma = 0.; + + // ---- MGP ---- Better handling of these limits to be set in a following design iteration + G4double lowLim = lowEnergyLimitDefault; + G4double highLim = highEnergyLimitDefault; + + const G4String& particleName = particle->GetDefinition()->GetParticleName(); + + // Retrieve energy limits for the current particle type + + std::map< G4String,G4double,std::less >::iterator pos1; + pos1 = lowEnergyLimit.find(particleName); + + // Lower limit + if (pos1 != lowEnergyLimit.end()) + { + lowLim = pos1->second; + } + + // Upper limit + std::map< G4String,G4double,std::less >::iterator pos2; + pos2 = highEnergyLimit.find(particleName); + + if (pos2 != highEnergyLimit.end()) + { + highLim = pos2->second; + } + + // Verify that the current track is within the energy limits of validity of the cross section model + if (k >= lowLim && k <= highLim) + { + std::map< G4String,G4DNACrossSectionDataSet*,std::less >::iterator pos; + pos = tableData.find(particleName); + + if (pos != tableData.end()) + { + G4DNACrossSectionDataSet* table = pos->second; + if (table != 0) + { + // Cross section + sigma = table->FindValue(k); + + + // BEGIN ELECTRON CORRECTION + // add ONE or TWO electron-water excitation for alpha+ and helium + + if ( particle->GetDefinition() == instance->GetIon("alpha+") + || + particle->GetDefinition() == instance->GetIon("helium") + ) + { + + G4DNACrossSectionDataSet* electronDataset = new G4DNACrossSectionDataSet + (new G4LogLogInterpolation, eV, (1./3.343e22)*m*m); + + electronDataset->LoadData("dna/sigma_ionisation_e_born"); + + G4double kElectron = k * 0.511/3728; + + if ( particle->GetDefinition() == instance->GetIon("alpha+") ) + { + G4double tmp1 = table->FindValue(k) + electronDataset->FindValue(kElectron); + delete electronDataset; + return tmp1; + } + + if ( particle->GetDefinition() == instance->GetIon("helium") ) + { + G4double tmp2 = table->FindValue(k) + 2. * electronDataset->FindValue(kElectron); + delete electronDataset; + return tmp2; + } + } + + // END ELECTRON CORRECTION + + } + } + else + { + // The track does not corresponds to a particle pertinent to this model + G4Exception("G4CrossSectionIonisationRudd: attempting to calculate cross section for wrong particle"); + } + } + + return sigma; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationRuddPartial.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationRuddPartial.cc new file mode 100755 index 0000000000..8a49f9f1cd --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationRuddPartial.cc @@ -0,0 +1,398 @@ +// +// ******************************************************************** +// * 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: G4CrossSectionIonisationRuddPartial.cc,v 1.3 2007/11/09 20:11:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4CrossSectionIonisationRuddPartial.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4Proton.hh" +#include "G4Track.hh" +#include "G4LogLogInterpolation.hh" +#include "G4SystemOfUnits.hh" +#include "G4DNAGenericIonsManager.hh" + +#include "Randomize.hh" + +#include + +G4CrossSectionIonisationRuddPartial::G4CrossSectionIonisationRuddPartial() +{ + name = "IonisationRudd"; + + // Default energy limits (defined for protection against anomalous behaviour only) + name = "IonisationRuddPartial"; + lowEnergyLimitDefault = 100 * eV; + highEnergyLimitDefault = 100 * MeV; + + G4String fileProton("dna/sigma_ionisation_p_rudd"); + G4String fileHydrogen("dna/sigma_ionisation_h_rudd"); + G4String fileAlphaPlusPlus("dna/sigma_ionisation_alphaplusplus_rudd"); + G4String fileAlphaPlus("dna/sigma_ionisation_alphaplus_rudd"); + G4String fileHelium("dna/sigma_ionisation_he_rudd"); + + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + G4ParticleDefinition* protonDef = G4Proton::ProtonDefinition(); + G4ParticleDefinition* hydrogenDef = instance->GetIon("hydrogen"); + G4ParticleDefinition* alphaPlusPlusDef = instance->GetIon("alpha++"); + G4ParticleDefinition* alphaPlusDef = instance->GetIon("alpha+"); + G4ParticleDefinition* heliumDef = instance->GetIon("helium"); + + G4String proton; + G4String hydrogen; + G4String alphaPlusPlus; + G4String alphaPlus; + G4String helium; + + // Factor to scale microscopic/macroscopic cross section data in water + // ---- MGP ---- Hardcoded (taken from prototype code); to be replaced with proper calculation + G4double scaleFactor = 1 * m*m; + + // Data members for protons + + if (protonDef != 0) + { + proton = protonDef->GetParticleName(); + tableFile[proton] = fileProton; + + // Energy limits + lowEnergyLimit[proton] = 100. * eV; + highEnergyLimit[proton] = 500. * keV; + + // Create data set with proton cross section data and load values stored in file + G4DNACrossSectionDataSet* tableProton = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,scaleFactor ); + tableProton->LoadData(fileProton); + + // Insert key-table pair in map + tableData[proton] = tableProton; + } + else + { + G4Exception("G4CrossSectionIonisationRudd Constructor: proton is not defined"); + } + + // Data members for hydrogen + + if (hydrogenDef != 0) + { + hydrogen = hydrogenDef->GetParticleName(); + tableFile[hydrogen] = fileHydrogen; + + // Energy limits + lowEnergyLimit[hydrogen] = 100. * eV; + highEnergyLimit[hydrogen] = 100. * MeV; + + // Create data set with hydrogen cross section data and load values stored in file + G4DNACrossSectionDataSet* tableHydrogen = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,scaleFactor ); + tableHydrogen->LoadData(fileHydrogen); + + // Insert key-table pair in map + tableData[hydrogen] = tableHydrogen; + } + else + { + G4Exception("G4CrossSectionIonisationRudd Constructor: hydrogen is not defined"); + } + + // Data members for alphaPlusPlus + + if (alphaPlusPlusDef != 0) + { + alphaPlusPlus = alphaPlusPlusDef->GetParticleName(); + tableFile[alphaPlusPlus] = fileAlphaPlusPlus; + + // Energy limits + lowEnergyLimit[alphaPlusPlus] = 1. * keV; + highEnergyLimit[alphaPlusPlus] = 10. * MeV; + + // Create data set with hydrogen cross section data and load values stored in file + G4DNACrossSectionDataSet* tableAlphaPlusPlus = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,scaleFactor ); + tableAlphaPlusPlus->LoadData(fileAlphaPlusPlus); + + // Insert key-table pair in map + tableData[alphaPlusPlus] = tableAlphaPlusPlus; + } + else + { + G4Exception("G4CrossSectionIonisationRudd Constructor: alphaPlusPlus is not defined"); + } + + // Data members for alphaPlus + + if (alphaPlusDef != 0) + { + alphaPlus = alphaPlusDef->GetParticleName(); + tableFile[alphaPlus] = fileAlphaPlus; + + // Energy limits + lowEnergyLimit[alphaPlus] = 1. * keV; + highEnergyLimit[alphaPlus] = 10. * MeV; + + // Create data set with hydrogen cross section data and load values stored in file + G4DNACrossSectionDataSet* tableAlphaPlus = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,scaleFactor ); + tableAlphaPlus->LoadData(fileAlphaPlus); + + // Insert key-table pair in map + tableData[alphaPlus] = tableAlphaPlus; + } + else + { + G4Exception("G4CrossSectionIonisationRudd Constructor: alphaPlus is not defined"); + } + + // Data members for helium + + if (heliumDef != 0) + { + helium = heliumDef->GetParticleName(); + tableFile[helium] = fileHelium; + + // Energy limits + lowEnergyLimit[helium] = 1. * keV; + highEnergyLimit[helium] = 10. * MeV; + + // Create data set with hydrogen cross section data and load values stored in file + G4DNACrossSectionDataSet* tableHelium = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,scaleFactor ); + tableHelium->LoadData(fileHelium); + + // Insert key-table pair in map + tableData[helium] = tableHelium; + } + else + { + G4Exception("G4CrossSectionIonisationRudd Constructor: helium is not defined"); + } +} + + +G4CrossSectionIonisationRuddPartial::~G4CrossSectionIonisationRuddPartial() +{ + // Destroy the content of the map + std::map< G4String,G4DNACrossSectionDataSet*,std::less >::iterator pos; + for (pos = tableData.begin(); pos != tableData.end(); ++pos) + { + G4DNACrossSectionDataSet* table = pos->second; + delete table; + } +} + + +G4int G4CrossSectionIonisationRuddPartial::RandomSelect(G4double k, const G4String& particle ) +{ + + // BEGIN PART 1/2 OF ELECTRON CORRECTION + + // add ONE or TWO electron-water excitation for alpha+ and helium + + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + G4double kElectron(0); + G4double electronComponent(0); + G4DNACrossSectionDataSet * electronDataset = new G4DNACrossSectionDataSet (new G4LogLogInterpolation, eV, (1./3.343e22)*m*m); + + if ( particle == instance->GetIon("alpha+")->GetParticleName() + || + particle == instance->GetIon("helium")->GetParticleName() + ) + { + electronDataset->LoadData("dna/sigma_ionisation_e_born"); + + kElectron = k * 0.511/3728; + + electronComponent = electronDataset->FindValue(kElectron); + + } + + delete electronDataset; + + // END PART 1/2 OF ELECTRON CORRECTION + + G4int level = 0; + + // Retrieve data table corresponding to the current particle type + + std::map< G4String,G4DNACrossSectionDataSet*,std::less >::iterator pos; + pos = tableData.find(particle); + + if (pos != tableData.end()) + { + G4DNACrossSectionDataSet* table = pos->second; + + if (table != 0) + { + // C-style arrays are used in G4DNACrossSectionDataSet: this design feature was + // introduced without authorization and should be replaced by the use of STL containers + + G4double* valuesBuffer = new G4double[table->NumberOfComponents()]; + + const size_t n(table->NumberOfComponents()); + size_t i(n); + G4double value = 0.; + + while (i>0) + { + i--; + valuesBuffer[i] = table->GetComponent(i)->FindValue(k); + + // BEGIN PART 2/2 OF ELECTRON CORRECTION + + if (particle == instance->GetIon("alpha+")->GetParticleName()) + {valuesBuffer[i]=table->GetComponent(i)->FindValue(k) + electronComponent; } + + if (particle == instance->GetIon("helium")->GetParticleName()) + {valuesBuffer[i]=table->GetComponent(i)->FindValue(k) + 2*electronComponent; } + + // BEGIN PART 2/2 OF ELECTRON CORRECTION + + value += valuesBuffer[i]; + } + + value *= G4UniformRand(); + + i = n; + + while (i > 0) + { + i--; + + if (valuesBuffer[i] > value) + { + delete[] valuesBuffer; + return i; + } + value -= valuesBuffer[i]; + } + + // It should never end up here + + // ---- MGP ---- Is the following line really necessary? + if (valuesBuffer) delete[] valuesBuffer; + + } + } + else + { + G4Exception("G4CrossSectionIonisationRuddPartial: attempting to calculate cross section for wrong particle"); + } + + return level; +} + + +G4double G4CrossSectionIonisationRuddPartial::CrossSection(const G4Track& track ) +{ + G4double sigma = 0.; + + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + // Cross section = 0 outside the energy validity limits set in the constructor + // ---- MGP ---- Better handling of these limits to be set in a following design iteration + + G4double lowLim = lowEnergyLimitDefault; + G4double highLim = highEnergyLimitDefault; + + const G4String& particleName = particle->GetDefinition()->GetParticleName(); + + // Retrieve energy limits for the current particle type + + std::map< G4String,G4double,std::less >::iterator pos1; + pos1 = lowEnergyLimit.find(particleName); + + // Lower limit + if (pos1 != lowEnergyLimit.end()) + { + lowLim = pos1->second; + } + + // Upper limit + std::map< G4String,G4double,std::less >::iterator pos2; + pos2 = highEnergyLimit.find(particleName); + + if (pos2 != highEnergyLimit.end()) + { + highLim = pos2->second; + } + + // Verify that the current track is within the energy limits of validity of the cross section model + if (k >= lowLim && k <= highLim) + { + std::map< G4String,G4DNACrossSectionDataSet*,std::less >::iterator pos; + pos = tableData.find(particleName); + + if (pos != tableData.end()) + { + G4DNACrossSectionDataSet* table = pos->second; + if (table != 0) + { + // ---- MGP ---- Temporary + // table->PrintData(); + + // Cross section + sigma = table->FindValue(k); + } + } + else + { + // The track corresponds to a not pertinent particle + G4Exception("G4CrossSectionIonisationRuddPartial: attempting to calculate cross section for wrong particle"); + } + } + + return sigma; +} + + +G4double G4CrossSectionIonisationRuddPartial::Sum(G4double /* energy */, const G4String& /* particle */) +{ + + return 0; +} diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.icc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionKill.cc similarity index 51% rename from source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.icc rename to source/processes/electromagnetic/lowenergy/src/G4CrossSectionKill.cc index fe1e825323..40a66e34ef 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.icc +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionKill.cc @@ -24,49 +24,61 @@ // ******************************************************************** // // -// $Id: G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy.icc,v 2005/09/14 16:12:34 Francis -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4CrossSectionKill.cc,v 1.1 2007/11/09 20:26:12 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 -#ifdef G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH - #include "Randomize.hh" - #include "G4DNAGenericIonsManager.hh" +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- - template - G4bool G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy :: KillIncomingParticle(G4double energy) const - { - if (energy - void G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy :: BuildFinalStatesData(void) const - { - } +// ------------------------------------------------------------------- + + +#include "G4CrossSectionKill.hh" +#include "G4Track.hh" +#include "G4DynamicParticle.hh" + +G4CrossSectionKill::G4CrossSectionKill() +{ + + name = "CrossSectionKill"; + lowEnergyLimit = 0. * eV; + highEnergyLimit = 25 * eV; +} + + +G4CrossSectionKill::~G4CrossSectionKill() +{ } - template - G4int G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy :: NumberOfFinalStates(G4int /* finalStateIndex */) const - - { - return 1; - } - template - G4ParticleDefinition * G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy :: OutgoingParticleDefinition(G4int /* finalStateIndex */) - { - G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance()); - return instance->GetIon("alpha++"); - } - - template - G4double G4DNAAlphaPlusChargeIncreaseFinalStatesPolicy :: IncomingParticleBindingEnergyConstant(G4int /* finalStateIndex */) const - { - // Binding energy for He+ -> He++ + e- 54.509 eV - // Binding energy for He -> He+ + e- 24.587 eV +G4double G4CrossSectionKill::CrossSection(const G4Track& track) +{ + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); - return 54.509*eV; - } -#endif /* G4DNAALPHAPLUSCHARGEINCREASEFINALSTATESPOLICY_HH */ + // Cross section = infinite below a given threshold + // ---- MGP ---- Better handling of the threshold to be set in a following design iteration + + G4double sigma = 0.; + + if (k < highEnergyLimit) sigma = DBL_MAX; + + return sigma; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusChargeDecrease.cc b/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusChargeDecrease.cc deleted file mode 100644 index e3ecc85477..0000000000 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusChargeDecrease.cc +++ /dev/null @@ -1,68 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusChargeDecrease.cc,v 1.2 2006/06/29 19:38:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#include "G4DNAAlphaPlusChargeDecrease.hh" -#include "G4DNAGenericIonsManager.hh" - - G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy :: G4DNAAlphaPlusChargeDecreaseEnergyLimitsPolicy() -: - lowEnergyLimit(1.*keV), - zeroBelowLowEnergyLimit(true), - highEnergyLimit(10.*MeV), - zeroAboveHighEnergyLimit(true) -{ -} - - G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy :: G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy() -{ - f0[0]=1.; - a0[0]=0.65; - a1[0]=-2.75; - b0[0]=-21.81; - c0[0]=0.232; - d0[0]=2.95; - x0[0]=3.53; - - // x1 and b1 will be calculated by G4DNADingfelderChargeChangeTotalCrossSectionPolicy<, > :: PartialCrossSection - x1[0]=-1.; - b1[0]=-1.; -} - -const G4ParticleDefinition * G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy :: IncomingParticleDefinition(void) const -{ - G4DNAGenericIonsManager *instance; - instance = G4DNAGenericIonsManager::Instance(); - - return instance->GetIon("alpha+"); -} - -G4int G4DNAAlphaPlusChargeDecreaseIncomingParticlePolicy :: NumberOfPartialCrossSections(void) const -{ - return 1; -} diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusChargeIncrease.cc b/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusChargeIncrease.cc deleted file mode 100644 index 6caa99399d..0000000000 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusChargeIncrease.cc +++ /dev/null @@ -1,68 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusChargeIncrease.cc,v 1.2 2006/06/29 19:38:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#include "G4DNAAlphaPlusChargeIncrease.hh" -#include "G4DNAGenericIonsManager.hh" - - G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy :: G4DNAAlphaPlusChargeIncreaseEnergyLimitsPolicy() -: - lowEnergyLimit(1.*keV), - zeroBelowLowEnergyLimit(true), - highEnergyLimit(10.*MeV), - zeroAboveHighEnergyLimit(true) -{ -} - - G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy :: G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy() -{ - f0[0]=1.; - a0[0]=2.25; - a1[0]=-0.75; - b0[0]=-32.10; - c0[0]=0.600; - d0[0]=2.40; - x0[0]=4.60; - - // x1 and b1 will be calculated by G4DNADingfelderChargeChangeTotalCrossSectionPolicy<, > :: PartialCrossSection - x1[0]=-1.; - b1[0]=-1.; -} - -const G4ParticleDefinition * G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy :: IncomingParticleDefinition(void) const -{ - G4DNAGenericIonsManager *instance; - instance = G4DNAGenericIonsManager::Instance(); - - return instance->GetIon("alpha+"); -} - -G4int G4DNAAlphaPlusChargeIncreaseIncomingParticlePolicy :: NumberOfPartialCrossSections(void) const -{ - return 1; -} diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusExcitation.cc b/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusExcitation.cc deleted file mode 100644 index 0198c7cc13..0000000000 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusExcitation.cc +++ /dev/null @@ -1,60 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusExcitation.cc,v 1.3 2006/06/29 19:38:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#include "G4DNAAlphaPlusExcitation.hh" -#include "G4DNAGenericIonsManager.hh" - - G4DNAAlphaPlusExcitationEnergyLimitsPolicy :: G4DNAAlphaPlusExcitationEnergyLimitsPolicy() -: - lowEnergyLimit(1*keV), - zeroBelowLowEnergyLimit(false), - highEnergyLimit(10*MeV), - zeroAboveHighEnergyLimit(true) -{ -} - - G4DNAAlphaPlusExcitationIncomingParticlePolicy :: G4DNAAlphaPlusExcitationIncomingParticlePolicy() -: - kineticEnergyCorrection(0.9382723/3.727417) -{ - slaterEffectiveCharge[0]=2.0; - slaterEffectiveCharge[1]=1.15; - slaterEffectiveCharge[2]=1.15; - sCoefficient[0]=0.7; - sCoefficient[1]=0.15; - sCoefficient[2]=0.15; -} - -const G4ParticleDefinition * G4DNAAlphaPlusExcitationIncomingParticlePolicy :: IncomingParticleDefinition(void) const -{ - G4DNAGenericIonsManager *instance; - instance = G4DNAGenericIonsManager::Instance(); - - return instance->GetIon("alpha+"); -} diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusPlusChargeDecrease.cc b/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusPlusChargeDecrease.cc deleted file mode 100644 index 3a9b4a056e..0000000000 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusPlusChargeDecrease.cc +++ /dev/null @@ -1,79 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusPlusChargeDecrease.cc,v 1.2 2006/06/29 19:38:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#include "G4DNAAlphaPlusPlusChargeDecrease.hh" -#include "G4DNAGenericIonsManager.hh" - - G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy :: G4DNAAlphaPlusPlusChargeDecreaseEnergyLimitsPolicy() -: - lowEnergyLimit(1.*keV), - zeroBelowLowEnergyLimit(true), - highEnergyLimit(10.*MeV), - zeroAboveHighEnergyLimit(true) -{ -} - - G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy :: G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy() -{ - f0[0]=1.; - a0[0]=0.95; - a1[0]=-2.75; - b0[0]=-23.00; - c0[0]=0.215; - d0[0]=2.95; - x0[0]=3.50; - - f0[1]=1.; - a0[1]=0.95; - a1[1]=-2.75; - b0[1]=-23.73; - c0[1]=0.250; - d0[1]=3.55; - x0[1]=3.72; - - // x1 and b1 will be calculated by G4DNADingfelderChargeChangeTotalCrossSectionPolicy<, > :: PartialCrossSection - x1[0]=-1.; - b1[0]=-1.; - - x1[1]=-1.; - b1[1]=-1.; -} - -const G4ParticleDefinition * G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy :: IncomingParticleDefinition(void) const -{ - G4DNAGenericIonsManager *instance; - instance = G4DNAGenericIonsManager::Instance(); - - return instance->GetIon("alpha++"); -} - -G4int G4DNAAlphaPlusPlusChargeDecreaseIncomingParticlePolicy :: NumberOfPartialCrossSections(void) const -{ - return 2; -} diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusPlusExcitation.cc b/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusPlusExcitation.cc deleted file mode 100644 index 813bbde93a..0000000000 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAAlphaPlusPlusExcitation.cc +++ /dev/null @@ -1,60 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAAlphaPlusPlusExcitation.cc,v 1.3 2006/06/29 19:38:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#include "G4DNAAlphaPlusPlusExcitation.hh" -#include "G4DNAGenericIonsManager.hh" - - G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy :: G4DNAAlphaPlusPlusExcitationEnergyLimitsPolicy() -: - lowEnergyLimit(1*keV), - zeroBelowLowEnergyLimit(false), - highEnergyLimit(10*MeV), - zeroAboveHighEnergyLimit(true) -{ -} - - G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy :: G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy() -: - kineticEnergyCorrection(0.9382723/3.727417) -{ - slaterEffectiveCharge[0]=0.; - slaterEffectiveCharge[1]=0.; - slaterEffectiveCharge[2]=0.; - sCoefficient[0]=0.; - sCoefficient[1]=0.; - sCoefficient[2]=0.; -} - -const G4ParticleDefinition * G4DNAAlphaPlusPlusExcitationIncomingParticlePolicy :: IncomingParticleDefinition(void) const -{ - G4DNAGenericIonsManager *instance; - instance = G4DNAGenericIonsManager::Instance(); - - return instance->GetIon("alpha++"); -} diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNABrennerAngularDistributionPolicy.cc b/source/processes/electromagnetic/lowenergy/src/G4DNABrennerAngularDistributionPolicy.cc deleted file mode 100644 index 2d98544f17..0000000000 --- a/source/processes/electromagnetic/lowenergy/src/G4DNABrennerAngularDistributionPolicy.cc +++ /dev/null @@ -1,109 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNABrennerAngularDistributionPolicy.cc,v 1.3 2006/06/29 19:39:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// - -#include "G4DNAElectronElasticBrenner.hh" -#include "G4DNABrennerAngularDistributionPolicy.hh" - -#include "Randomize.hh" - -G4double G4DNABrennerAngularDistributionPolicy :: RandomizeCosTheta(G4double k, G4int /* z */) const -{ - // d sigma_el 1 beta(K) - // ------------ (K) ~ --------------------------------- + --------------------------------- - // d Omega (1 + 2 gamma(K) - std::cos(theta))^2 (1 + 2 delta(K) + std::cos(theta))^2 - // - // Maximum is < 1/(4 gamma(K)^2) + beta(K)/(4 delta(K)^2) - // - // Phys. Med. Biol. 29 N.4 (1983) 443-447 - - const G4double betaCoeff[5] = { 7.51525, -0.419122, 7.2017E-3, -4.646E-5, 1.02897E-7}; - const G4double deltaCoeff[5] = { 2.9612, -0.26376, 4.307E-3, -2.6895E-5, 5.83505E-8}; - const G4double gamma035_10Coeff[6] = {-1.7013, -1.48284, 0.6331, -0.10911, 8.358E-3, -2.388E-4}; - const G4double gamma10_100Coeff[5] = {-3.32517, 0.10996, -4.5255E-3, 5.8372E-5, -2.4659E-7}; - const G4double gamma100_200Coeff[3] = { 2.4775E-2, -2.96264E-5, -1.20655E-7}; - - // gamma(K), beta(K) and delta(K) are polynomials with coefficients for energy measured in eV - k/=eV; - - G4double beta; - beta=std::exp(CalculatePolynomial(k, betaCoeff, 5)); - - G4double delta; - delta=std::exp(CalculatePolynomial(k, deltaCoeff, 5)); - - G4double gamma; - - if (k>100) - gamma=CalculatePolynomial(k, gamma100_200Coeff, 3); // Only in this case it is not the exponent of the polynomial - else if (k>10) - gamma=std::exp(CalculatePolynomial(k, gamma10_100Coeff, 5)); - else - gamma=std::exp(CalculatePolynomial(k, gamma035_10Coeff, 6)); - - G4double oneOverMax; - oneOverMax=1./(1./(4.*gamma*gamma) + beta/(4.*delta*delta)); - - G4double cosTheta; - G4double leftDenominator; - G4double rightDenominator; - G4double fCosTheta; - - do - { - cosTheta = 2.*G4UniformRand()-1.; - leftDenominator = (1 + 2.*gamma - cosTheta); - rightDenominator = (1 + 2*delta + cosTheta); - fCosTheta = oneOverMax*(1./(leftDenominator*leftDenominator) + beta/(rightDenominator*rightDenominator)); - } - while (fCosTheta < G4UniformRand()); - - return cosTheta; -} - -G4double G4DNABrennerAngularDistributionPolicy :: CalculatePolynomial(G4double k, const G4double *vector, G4int size) const -{ - // Sum_{i=0}^{size-1} vector_i k^i - // - // Phys. Med. Biol. 29 N.4 (1983) 443-447 - - G4double result(0); - - while (size>0) - { - size--; - - result*=k; - result+=vector[size]; - } - - return result; -} - -const G4double G4DNABrennerAngularDistributionPolicy :: stopAndKillLowEnergyLimit(G4DNABrennerEnergyLimitsPolicy::lowEnergyLimit); diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNACrossSectionDataSet.cc b/source/processes/electromagnetic/lowenergy/src/G4DNACrossSectionDataSet.cc index 628ae1fb42..758bc1a711 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4DNACrossSectionDataSet.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4DNACrossSectionDataSet.cc @@ -25,14 +25,17 @@ // // -// $Id: G4DNACrossSectionDataSet.cc,v 1.4 2007/06/21 15:04:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4DNACrossSectionDataSet.cc,v 1.7 2007/11/09 18:06:26 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Riccardo Capra +// Code review by MGP October 2007: removed inheritance from concrete class +// more improvements needed // // History: // ----------- // 30 Jun 2005 RC Created +// 14 Oct 2007 MGP Removed inheritance from concrete class G4ShellEMDataSet #include "G4DNACrossSectionDataSet.hh" @@ -43,247 +46,315 @@ #include - G4DNACrossSectionDataSet :: G4DNACrossSectionDataSet(G4VDataSetAlgorithm* argAlgorithm, G4double argUnitEnergies, G4double argUnitData) -: - G4ShellEMDataSet(0, argAlgorithm, argUnitEnergies, argUnitData) +G4DNACrossSectionDataSet::G4DNACrossSectionDataSet(G4VDataSetAlgorithm* argAlgorithm, + G4double argUnitEnergies, + G4double argUnitData) + : + algorithm(argAlgorithm), unitEnergies(argUnitEnergies), unitData(argUnitData) { + z = 0; + } - - G4DNACrossSectionDataSet :: ~G4DNACrossSectionDataSet() +G4DNACrossSectionDataSet::~G4DNACrossSectionDataSet() { + CleanUpComponents(); + + if (algorithm) + delete algorithm; } - - - -G4bool G4DNACrossSectionDataSet :: LoadData(const G4String & argFileName) +G4bool G4DNACrossSectionDataSet::LoadData(const G4String & argFileName) { - CleanUpComponents(); + CleanUpComponents(); - G4String fullFileName(FullFileName(argFileName)); - std::ifstream in(fullFileName, std::ifstream::binary|std::ifstream::in); + G4String fullFileName(FullFileName(argFileName)); + std::ifstream in(fullFileName, std::ifstream::binary|std::ifstream::in); - if (!in.is_open()) - { - G4String message("G4DNACrossSectionDataSet::LoadData - data file \""); - message+=fullFileName; - message+="\" not found"; - G4Exception(message); - return false; - } + if (!in.is_open()) + { + G4String message("G4DNACrossSectionDataSet::LoadData - data file \""); + message+=fullFileName; + message+="\" not found"; + G4Exception(message); + return false; + } - std::vector columns; - std::stringstream *stream(new std::stringstream); - char c; - G4bool comment(false); - G4bool space(true); - G4bool first(true); + std::vector columns; + std::stringstream *stream(new std::stringstream); + char c; + G4bool comment(false); + G4bool space(true); + G4bool first(true); - try - { - while (!in.eof()) - { - in.get(c); + try + { + while (!in.eof()) + { + in.get(c); - switch (c) - { - case '\r': - case '\n': - if (!first) - { - unsigned long i(0); - G4double value; + switch (c) + { + case '\r': + case '\n': + if (!first) + { + unsigned long i(0); + G4double value; - while (!stream->eof()) - { - (*stream) >> value; + while (!stream->eof()) + { + (*stream) >> value; - while (i>=columns.size()) - columns.push_back(new G4DataVector); + while (i>=columns.size()) + columns.push_back(new G4DataVector); - columns[i]->push_back(value); + columns[i]->push_back(value); - i++; - } + i++; + } - delete stream; - stream=new std::stringstream; - } + delete stream; + stream=new std::stringstream; + } - first=true; - comment=false; - space=true; - break; + first=true; + comment=false; + space=true; + break; - case '#': - comment=true; - break; + case '#': + comment=true; + break; - case '\t': - c=' '; - case ' ': - if (space) - break; - default: - if (comment) - break; + case '\t': + c=' '; + case ' ': + if (space) + break; + default: + if (comment) + break; - if (c==' ') - space=true; - else - { - if (space && (!first)) - (*stream) << ' '; + if (c==' ') + space=true; + else + { + if (space && (!first)) + (*stream) << ' '; - first=false; - (*stream) << c; - space=false; - } - } - } - } - catch(const std::ios::failure &e) - { - // some implementations of STL could throw a "failture" exception - // when read wants read characters after end of file - } + first=false; + (*stream) << c; + space=false; + } + } + } + } + catch(const std::ios::failure &e) + { + // some implementations of STL could throw a "failture" exception + // when read wants read characters after end of file + } - delete stream; + delete stream; - std::vector::size_type maxI(columns.size()); + std::vector::size_type maxI(columns.size()); - if (maxI<2) - { - G4String message("G4DNACrossSectionDataSet::LoadData - data file \""); - message+=fullFileName; - message+="\" should have at least two columns"; - G4Exception(message); - return false; - } + if (maxI<2) + { + G4String message("G4DNACrossSectionDataSet::LoadData - data file \""); + message+=fullFileName; + message+="\" should have at least two columns"; + G4Exception(message); + return false; + } - std::vector::size_type i(1); - while (isize()); + std::vector::size_type i(1); + while (isize()); - if (maxJ!=columns[0]->size()) - { - G4String message("G4DNACrossSectionDataSet::LoadData - data file \""); - message+=fullFileName; - message+="\" has lines with a different number of columns"; - G4Exception(message); - return false; - } + if (maxJ!=columns[0]->size()) + { + G4String message("G4DNACrossSectionDataSet::LoadData - data file \""); + message+=fullFileName; + message+="\" has lines with a different number of columns"; + G4Exception(message); + return false; + } - G4DataVector::size_type j(0); - G4DataVector *argEnergies=new G4DataVector; - G4DataVector *argData=new G4DataVector; + G4DataVector::size_type j(0); + G4DataVector *argEnergies=new G4DataVector; + G4DataVector *argData=new G4DataVector; - while(jpush_back(columns[0]->operator[] (j)*GetUnitEnergies()); - argData->push_back(columns[i]->operator[] (j)*GetUnitData()); - j++; - } + while(jpush_back(columns[0]->operator[] (j)*GetUnitEnergies()); + argData->push_back(columns[i]->operator[] (j)*GetUnitData()); + j++; + } - AddComponent(new G4EMDataSet(i-1, argEnergies, argData, GetAlgorithm()->Clone(), GetUnitEnergies(), GetUnitData())); + AddComponent(new G4EMDataSet(i-1, argEnergies, argData, GetAlgorithm()->Clone(), GetUnitEnergies(), GetUnitData())); - i++; - } + i++; + } - i=maxI; - while (i>0) - { - i--; - delete columns[i]; - } + i=maxI; + while (i>0) + { + i--; + delete columns[i]; + } - return true; + return true; } -G4bool G4DNACrossSectionDataSet :: SaveData(const G4String & argFileName) const +G4bool G4DNACrossSectionDataSet::SaveData(const G4String & argFileName) const { - const size_t n(NumberOfComponents()); + const size_t n(NumberOfComponents()); - if (n==0) - { - G4Exception("G4EMDataSet::SaveData - expected at least one component"); - return false; - } + if (n==0) + { + G4Exception("G4EMDataSet::SaveData - expected at least one component"); + return false; + } - G4String fullFileName(FullFileName(argFileName)); - std::ofstream out(fullFileName); + G4String fullFileName(FullFileName(argFileName)); + std::ofstream out(fullFileName); - if (!out.is_open()) - { - G4String message("G4EMDataSet::SaveData - cannot open \""); - message+=fullFileName; - message+="\""; - G4Exception(message); - return false; - } + if (!out.is_open()) + { + G4String message("G4EMDataSet::SaveData - cannot open \""); + message+=fullFileName; + message+="\""; + G4Exception(message); + return false; + } - G4DataVector::const_iterator iEnergies(GetComponent(0)->GetEnergies(0).begin()); - G4DataVector::const_iterator iEnergiesEnd(GetComponent(0)->GetEnergies(0).end()); - G4DataVector::const_iterator * iData(new G4DataVector::const_iterator[n]); + G4DataVector::const_iterator iEnergies(GetComponent(0)->GetEnergies(0).begin()); + G4DataVector::const_iterator iEnergiesEnd(GetComponent(0)->GetEnergies(0).end()); + G4DataVector::const_iterator * iData(new G4DataVector::const_iterator[n]); - size_t k(n); + size_t k(n); - while (k>0) - { - k--; - iData[k]=GetComponent(k)->GetData(0).begin(); - } + while (k>0) + { + k--; + iData[k]=GetComponent(k)->GetData(0).begin(); + } - while (iEnergies!=iEnergiesEnd) - { - out.precision(10); - out.width(15); - out.setf(std::ofstream::left); - out << ((*iEnergies)/GetUnitEnergies()); + while (iEnergies!=iEnergiesEnd) + { + out.precision(10); + out.width(15); + out.setf(std::ofstream::left); + out << ((*iEnergies)/GetUnitEnergies()); - k=0; + k=0; - while (k::const_iterator i(components.begin()); + std::vector::const_iterator end(components.end()); + + while (i!=end) + { + value+=(*i)->FindValue(argEnergy); + i++; + } + + return value; +} + + +void G4DNACrossSectionDataSet::PrintData(void) const +{ + const size_t n(NumberOfComponents()); + + G4cout << "The data set has " << n << " components" << G4endl; + G4cout << G4endl; + + size_t i(0); + + while (iPrintData(); + i++; + } +} + + +void G4DNACrossSectionDataSet::SetEnergiesData(G4DataVector* argEnergies, + G4DataVector* argData, + G4int argComponentId) +{ + G4VEMDataSet * component(components[argComponentId]); + + if (component) + { + component->SetEnergiesData(argEnergies, argData, 0); + return; + } + + std::ostringstream message; + message << "G4DNACrossSectionDataSet::SetEnergiesData - component " << argComponentId << " not found"; + + G4Exception(message.str().c_str()); +} + + +void G4DNACrossSectionDataSet::CleanUpComponents() +{ + while (!components.empty()) + { + if (components.back()) delete components.back(); + components.pop_back(); + } +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAEmfietzoglouAngularDistributionPolicy.cc b/source/processes/electromagnetic/lowenergy/src/G4DNAEmfietzoglouAngularDistributionPolicy.cc deleted file mode 100644 index e11fb9067b..0000000000 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAEmfietzoglouAngularDistributionPolicy.cc +++ /dev/null @@ -1,94 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAEmfietzoglouAngularDistributionPolicy.cc,v 1.3 2006/06/29 19:39:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#include "G4DNAEmfietzoglouAngularDistributionPolicy.hh" - -#include "Randomize.hh" - -G4double G4DNAEmfietzoglouAngularDistributionPolicy :: RandomizeCosTheta(G4double k, G4int z) const -{ - // d sigma_el sigma_Ruth(K) - // ------------ (K) ~ ----------------------------- - // d Omega (1 + 2 n(K) - std::cos(theta))^2 - // - // We extract std::cos(theta) distributed as (1 + 2 n(K) - std::cos(theta))^-2 - // - // Maximum is for theta=0: 1/(4 n(K)^2) (When n(K) is positive, that is always satisfied within the validity of the process) - // - // Phys. Med. Biol. 45 (2000) 3171-3194 - - G4double n; - n=ScreeningFactor(k, z); - - G4double oneOverMax; - oneOverMax=(4.*n*n); - - G4double cosTheta; - G4double fCosTheta; - - do - { - cosTheta = 2.*G4UniformRand()-1.; - fCosTheta = (1 + 2.*n - cosTheta); - fCosTheta = oneOverMax/(fCosTheta*fCosTheta); - } - while (fCosTheta < G4UniformRand()); - - return cosTheta; -} - - - -G4double G4DNAEmfietzoglouAngularDistributionPolicy :: ScreeningFactor(G4double k, G4int z) const -{ - // - // alpha_1 + beta_1 ln(K/eV) constK Z^(2/3) - // n(T) = -------------------------- ----------------- - // K/(m_e c^2) 2 + K/(m_e c^2) - // - // Where K is the electron non-relativistic kinetic energy - // - // n(T) > 0 for T < ~ 400 MeV - // - // Nucl. Instr. Meth. 155 (1978) 145-156 - - const G4double alpha_1(1.64); - const G4double beta_1(-0.0825); - const G4double constK(1.7E-5); - - G4double numerator; - numerator=(alpha_1+beta_1*std::log(k/eV))*constK*std::pow(static_cast(z), 2./3.); - - k/=electron_mass_c2; - - G4double denominator; - denominator=k*(2+k); - - return numerator/denominator; -} diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAGenericIonsManager.cc b/source/processes/electromagnetic/lowenergy/src/G4DNAGenericIonsManager.cc index 6f61a5b619..6d4aa744d5 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAGenericIonsManager.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4DNAGenericIonsManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4DNAGenericIonsManager.cc,v 1.4 2006/06/29 19:39:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4DNAGenericIonsManager.hh" #include "G4Alpha.hh" diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAHydrogenRuddIonization.cc b/source/processes/electromagnetic/lowenergy/src/G4DNAHydrogenRuddIonization.cc deleted file mode 100644 index 6b14e048a6..0000000000 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAHydrogenRuddIonization.cc +++ /dev/null @@ -1,66 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAHydrogenRuddIonization.cc,v 1.3 2006/06/29 19:39:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#include "G4DNAHydrogenRuddIonization.hh" -#include "G4DNAGenericIonsManager.hh" - - G4DNAHydrogenRuddIonizationEnergyLimitsPolicy :: G4DNAHydrogenRuddIonizationEnergyLimitsPolicy() -: - lowEnergyLimit(100*eV), - zeroBelowLowEnergyLimit(true), - highEnergyLimit(100*MeV), - zeroAboveHighEnergyLimit(false) -{ -} - - G4DNAHydrogenRuddIonizationIncomingParticlePolicy :: G4DNAHydrogenRuddIonizationIncomingParticlePolicy() - -{ -} - - G4DNAHydrogenRuddDataFilePolicy :: G4DNAHydrogenRuddDataFilePolicy() -: - lowEnergyLimit(100*eV), - zeroBelowLowEnergyLimit(true), - highEnergyLimit(100*MeV), - zeroAboveHighEnergyLimit(false), - dataFileEnergyUnit(eV), - dataFileCrossSectionUnit(m*m), - dataFileName("RuddHydrogenIonizationCrossSection") -{ -} - -const G4ParticleDefinition * G4DNAHydrogenRuddIonizationIncomingParticlePolicy :: IncomingParticleDefinition(void) const -{ - G4DNAGenericIonsManager *instance; - instance = G4DNAGenericIonsManager::Instance(); - - return instance->GetIon("hydrogen"); -} - diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAProtonBornExcitation.cc b/source/processes/electromagnetic/lowenergy/src/G4DNAProtonBornExcitation.cc deleted file mode 100644 index 37248d716e..0000000000 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAProtonBornExcitation.cc +++ /dev/null @@ -1,63 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonBornExcitation.cc,v 1.3 2006/06/29 19:39:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#include "G4DNAProtonBornExcitation.hh" -#include "G4Proton.hh" - - G4DNAProtonBornExcitationEnergyLimitsPolicy :: G4DNAProtonBornExcitationEnergyLimitsPolicy() -: - lowEnergyLimit(100*eV), - zeroBelowLowEnergyLimit(true), - highEnergyLimit(100*MeV), - zeroAboveHighEnergyLimit(false) -{ -} - - G4DNAProtonBornExcitationIncomingParticlePolicy :: G4DNAProtonBornExcitationIncomingParticlePolicy() - -{ -} - - G4DNAProtonBornExcitationDataFilePolicy :: G4DNAProtonBornExcitationDataFilePolicy() -: - lowEnergyLimit(100*eV), - zeroBelowLowEnergyLimit(true), - highEnergyLimit(100*MeV), - zeroAboveHighEnergyLimit(false), - dataFileEnergyUnit(eV), - dataFileCrossSectionUnit(m*m), - dataFileName("ProtonBornExcitationCrossSection") -{ -} - -const G4ParticleDefinition * G4DNAProtonBornExcitationIncomingParticlePolicy :: IncomingParticleDefinition(void) const -{ - return G4Proton::Proton(); -} - diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAProtonExcitation.cc b/source/processes/electromagnetic/lowenergy/src/G4DNAProtonExcitation.cc deleted file mode 100644 index 3d8107d0d2..0000000000 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAProtonExcitation.cc +++ /dev/null @@ -1,57 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonExcitation.cc,v 1.2 2006/06/29 19:39:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#include "G4DNAProtonExcitation.hh" -#include "G4Proton.hh" - - G4DNAProtonExcitationEnergyLimitsPolicy :: G4DNAProtonExcitationEnergyLimitsPolicy() -: - lowEnergyLimit(100*eV), - zeroBelowLowEnergyLimit(false), - highEnergyLimit(100*MeV), - zeroAboveHighEnergyLimit(true) -{ -} - - G4DNAProtonExcitationIncomingParticlePolicy :: G4DNAProtonExcitationIncomingParticlePolicy() -: - kineticEnergyCorrection(1.) -{ - slaterEffectiveCharge[0]=0.; - slaterEffectiveCharge[1]=0.; - slaterEffectiveCharge[2]=0.; - sCoefficient[0]=0.; - sCoefficient[1]=0.; - sCoefficient[2]=0.; -} - -const G4ParticleDefinition * G4DNAProtonExcitationIncomingParticlePolicy :: IncomingParticleDefinition(void) const -{ - return G4Proton::Proton(); -} diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAProtonRuddIonization.cc b/source/processes/electromagnetic/lowenergy/src/G4DNAProtonRuddIonization.cc deleted file mode 100644 index df8cba0f0b..0000000000 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAProtonRuddIonization.cc +++ /dev/null @@ -1,63 +0,0 @@ -// -// ******************************************************************** -// * 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: G4DNAProtonRuddIonization.cc,v 1.4 2006/06/29 19:39:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ - -#include "G4DNAProtonRuddIonization.hh" -#include "G4Proton.hh" - - G4DNAProtonRuddIonizationEnergyLimitsPolicy :: G4DNAProtonRuddIonizationEnergyLimitsPolicy() -: - lowEnergyLimit(100*eV), - zeroBelowLowEnergyLimit(true), - highEnergyLimit(500*keV), - zeroAboveHighEnergyLimit(true) -{ -} - - G4DNAProtonRuddIonizationIncomingParticlePolicy :: G4DNAProtonRuddIonizationIncomingParticlePolicy() - -{ -} - - G4DNAProtonRuddDataFilePolicy :: G4DNAProtonRuddDataFilePolicy() -: - lowEnergyLimit(100*eV), - zeroBelowLowEnergyLimit(false), - highEnergyLimit(1000*keV), - zeroAboveHighEnergyLimit(true), - dataFileEnergyUnit(eV), - dataFileCrossSectionUnit(m*m), - dataFileName("RuddProtonIonizationCrossSection") -{ -} - -const G4ParticleDefinition * G4DNAProtonRuddIonizationIncomingParticlePolicy :: IncomingParticleDefinition(void) const -{ - return G4Proton::Proton(); -} - diff --git a/source/processes/electromagnetic/lowenergy/src/G4DummyFinalState.cc b/source/processes/electromagnetic/lowenergy/src/G4DummyFinalState.cc new file mode 100644 index 0000000000..537ff9ecd2 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4DummyFinalState.cc @@ -0,0 +1,108 @@ +// +// ******************************************************************** +// * 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: G4DummyFinalState.cc,v 1.2 2007/10/15 08:36:35 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA dummy final state for test purpose +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4DummyFinalState.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4DynamicParticle.hh" + +#include "G4ParticleTypes.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4SystemOfUnits.hh" +#include "G4ParticleMomentum.hh" + +G4DummyFinalState::G4DummyFinalState() +{ + // These data members will be used in the next implementation iteration, + // when the enriched PhysicsModel policy is implemented + name = "dummyFinalState"; + lowEnergyLimit = 7.4 * eV; + highEnergyLimit = 10 * MeV; +} + + +G4DummyFinalState::~G4DummyFinalState() +{ + // empty +} + + +const G4FinalStateProduct& G4DummyFinalState::GenerateFinalState(const G4Track& track, const G4Step& /* step */) +{ + // Clear previous secondaries, energy deposit and particle kill status + product.Clear(); + + // Create fake final state consisting of one electron product with 1 keV kinetic energy + + G4double energy = 1. * keV; + + // Kill incident particle if its energy is too low to create secondary + G4double primaryEnergy = track.GetKineticEnergy(); + if ( primaryEnergy < energy) + { + product.KillPrimaryParticle(); + product.AddEnergyDeposit(primaryEnergy); + } + else + { + // Create a DynamicParticle + G4ParticleDefinition* electron = G4Electron::ElectronDefinition(); + G4double initX = 0.; + G4double initY = 0.; + G4double initZ = 1.; + G4ParticleMomentum direction(initX,initY,initZ); + G4DynamicParticle* dynamicParticle = new G4DynamicParticle(electron,direction,energy); + product.AddSecondary(dynamicParticle); + } + + return product; +} + + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4EMDataSet.cc b/source/processes/electromagnetic/lowenergy/src/G4EMDataSet.cc index 881dac6e66..96438489e3 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4EMDataSet.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4EMDataSet.cc @@ -25,7 +25,7 @@ // // // $Id: G4EMDataSet.cc,v 1.12 2006/06/29 19:39:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeDecrease.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeDecrease.cc new file mode 100755 index 0000000000..487f7112e7 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeDecrease.cc @@ -0,0 +1,224 @@ +// +// ******************************************************************** +// * 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: G4FinalStateChargeDecrease.cc,v 1.2 2007/11/09 20:11:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4FinalStateChargeDecrease.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4DynamicParticle.hh" +//#include "Randomize.hh" + +#include "G4ParticleTypes.hh" +#include "G4ParticleDefinition.hh" +#include "G4SystemOfUnits.hh" +//#include "G4ParticleMomentum.hh" +#include "G4DNAGenericIonsManager.hh" + +G4FinalStateChargeDecrease::G4FinalStateChargeDecrease() +{ + name = "ChargeDecrease"; + lowEnergyLimit = 1 * keV; + highEnergyLimit = 10 * MeV; +} + + +G4FinalStateChargeDecrease::~G4FinalStateChargeDecrease() +{} + + +const G4FinalStateProduct& G4FinalStateChargeDecrease::GenerateFinalState(const G4Track& track, const G4Step& /* step */) +{ + // Clear previous secondaries, energy deposit and particle kill status + product.Clear(); + + G4double inK = track.GetDynamicParticle()->GetKineticEnergy(); + + G4ParticleDefinition* definition = track.GetDefinition(); + G4int finalStateIndex = cross.RandomSelect(inK,definition); + + G4int n = NumberOfFinalStates(definition, finalStateIndex); + G4double waterBindingEnergy = WaterBindingEnergyConstant(definition, finalStateIndex); + G4double outgoingParticleBindingEnergy = OutgoingParticleBindingEnergyConstant(definition, finalStateIndex); + + G4double outK = 0.; + if (definition==G4Proton::Proton()) + outK = inK - n*(inK*electron_mass_c2/proton_mass_c2) - waterBindingEnergy + outgoingParticleBindingEnergy; + else + outK = inK - n*(inK*electron_mass_c2/(3728*MeV)) - waterBindingEnergy + outgoingParticleBindingEnergy; + + if (outK<0) + { + G4String message; + message="ChargeDecreaseDingfelder::GenerateFinalState - Final kinetic energy is below 0! Process "; + G4Exception(message); + } + + // Primary particle + product.KillPrimaryParticle(); + product.AddEnergyDeposit(waterBindingEnergy); + + //Secondary particle + G4DynamicParticle* aSecondary = new G4DynamicParticle(OutgoingParticleDefinition(definition, finalStateIndex), + track.GetDynamicParticle()->GetMomentumDirection(), + outK); + + product.AddSecondary(aSecondary); + + return product; +} + +G4int G4FinalStateChargeDecrease::NumberOfFinalStates(G4ParticleDefinition* particleDefinition, + G4int finalStateIndex ) + +{ + if (particleDefinition == G4Proton::Proton()) return 1; + + G4DNAGenericIonsManager*instance; + instance = G4DNAGenericIonsManager::Instance(); + + if (particleDefinition == instance->GetIon("alpha++") ) + { + if (finalStateIndex==0) return 1; + return 2; + } + + if (particleDefinition == instance->GetIon("alpha+") ) return 1; + + return 0; +} + + +G4ParticleDefinition* G4FinalStateChargeDecrease::OutgoingParticleDefinition (G4ParticleDefinition* particleDefinition, + G4int finalStateIndex) +{ + G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance()); + + if (particleDefinition == G4Proton::Proton()) return instance->GetIon("hydrogen"); + + if (particleDefinition == instance->GetIon("alpha++") ) + { + if (finalStateIndex == 0) return instance->GetIon("alpha+"); + + return instance->GetIon("helium"); + } + + if (particleDefinition == instance->GetIon("alpha+") ) return instance->GetIon("helium"); + + return 0; +} + + +G4double G4FinalStateChargeDecrease::WaterBindingEnergyConstant(G4ParticleDefinition* particleDefinition, + G4int finalStateIndex ) +{ + // Ionization energy of first water shell + // Rad. Phys. Chem. 59 p.267 by Dingf. et al. + // W + 10.79 eV -> W+ + e- + + G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance()); + + if(particleDefinition == G4Proton::Proton()) return 10.79*eV; + + if (particleDefinition == instance->GetIon("alpha++") ) + { + // Binding energy for W+ -> W++ + e- 10.79 eV + // Binding energy for W -> W+ + e- 10.79 eV + // + // Ionization energy of first water shell + // Rad. Phys. Chem. 59 p.267 by Dingf. et al. + + if (finalStateIndex == 0) return 10.79*eV; + + return 10.79*2*eV; + } + + if (particleDefinition == instance->GetIon("alpha+") ) + { + // Binding energy for W+ -> W++ + e- 10.79 eV + // Binding energy for W -> W+ + e- 10.79 eV + // + // Ionization energy of first water shell + // Rad. Phys. Chem. 59 p.267 by Dingf. et al. + + return 10.79*eV; + } + + return 0; +} + + +G4double G4FinalStateChargeDecrease::OutgoingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, + G4int finalStateIndex) +{ + G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance()); + + if(particleDefinition == G4Proton::Proton()) return 13.6*eV; + + if (particleDefinition == instance->GetIon("alpha++") ) + { + // Binding energy for He+ -> He++ + e- 54.509 eV + // Binding energy for He -> He+ + e- 24.587 eV + + if (finalStateIndex==0) return 54.509*eV; + + return (54.509 + 24.587)*eV; + } + + if (particleDefinition == instance->GetIon("alpha+") ) + { + // Binding energy for He+ -> He++ + e- 54.509 eV + // Binding energy for He -> He+ + e- 24.587 eV + + return 24.587*eV; + } + + return 0; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeIncrease.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeIncrease.cc new file mode 100755 index 0000000000..8d6b5e166a --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeIncrease.cc @@ -0,0 +1,183 @@ +// +// ******************************************************************** +// * 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: G4FinalStateChargeIncrease.cc,v 1.2 2007/11/09 20:11:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4FinalStateChargeIncrease.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4DynamicParticle.hh" +#include "Randomize.hh" +#include "G4Electron.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleDefinition.hh" +#include "G4SystemOfUnits.hh" +#include "G4ParticleMomentum.hh" +#include "G4DNAGenericIonsManager.hh" + +G4FinalStateChargeIncrease::G4FinalStateChargeIncrease() +{ + name = "ChargeIncrease"; + lowEnergyLimit = 1 * keV; + highEnergyLimit = 10 * MeV; +} + + +G4FinalStateChargeIncrease::~G4FinalStateChargeIncrease() +{} + + +const G4FinalStateProduct& G4FinalStateChargeIncrease::GenerateFinalState(const G4Track& track, const G4Step& /* step */) +{ + // Clear previous secondaries, energy deposit and particle kill status + product.Clear(); + + // Primary particle + product.KillPrimaryParticle(); + product.AddEnergyDeposit(0.); + G4ParticleDefinition* definition = track.GetDefinition(); + + // Secondaries + G4double inK = track.GetDynamicParticle()->GetKineticEnergy(); + + G4int finalStateIndex = cross.RandomSelect(inK,definition); + + G4int n = NumberOfFinalStates(track.GetDefinition(),finalStateIndex); + G4double outK = inK - IncomingParticleBindingEnergyConstant(definition,finalStateIndex); + + G4DNAGenericIonsManager* instance; + instance = G4DNAGenericIonsManager::Instance(); + + G4double electronK; + if (definition == instance->GetIon("hydrogen")) electronK = inK*electron_mass_c2/proton_mass_c2; + else electronK = inK*electron_mass_c2/(3728*MeV); + + if (outK<0) + { + G4String message; + message="G4FinalStateChargeIncrease - Final kinetic energy is below 0! Process "; + } + + product.AddSecondary(new G4DynamicParticle(OutgoingParticleDefinition(definition,finalStateIndex), + track.GetDynamicParticle()->GetMomentumDirection(), + outK)); + + n = n - 1; + + while (n>0) + { + n--; + + product.AddSecondary + (new G4DynamicParticle(G4Electron::Electron(), track.GetDynamicParticle()->GetMomentumDirection(), electronK)); + } + + return product; +} + +G4int G4FinalStateChargeIncrease::NumberOfFinalStates(G4ParticleDefinition* particleDefinition, + G4int finalStateIndex ) + +{ + G4DNAGenericIonsManager* instance; + instance = G4DNAGenericIonsManager::Instance(); + if (particleDefinition == instance->GetIon("hydrogen")) return 2; + if (particleDefinition == instance->GetIon("alpha+")) return 2; + + if (particleDefinition == instance->GetIon("helium")) + { if (finalStateIndex==0) return 2; + return 3; + } + return 0; +} + + +G4ParticleDefinition* G4FinalStateChargeIncrease::OutgoingParticleDefinition (G4ParticleDefinition* particleDefinition, + G4int finalStateIndex) +{ + G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance()); + if (particleDefinition == instance->GetIon("hydrogen")) return G4Proton::Proton(); + if (particleDefinition == instance->GetIon("alpha+")) return instance->GetIon("alpha++"); + + if (particleDefinition == instance->GetIon("alpha+")) return instance->GetIon("helium"); + { + if (finalStateIndex==0) return instance->GetIon("alpha+"); + return instance->GetIon("alpha++"); + } + return 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4FinalStateChargeIncrease::IncomingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, + G4int finalStateIndex ) +{ + G4DNAGenericIonsManager * instance(G4DNAGenericIonsManager::Instance()); + if(particleDefinition == instance->GetIon("hydrogen")) return 13.6*eV; + + if(particleDefinition == instance->GetIon("alpha+")) + { + // Binding energy for He+ -> He++ + e- 54.509 eV + // Binding energy for He -> He+ + e- 24.587 eV + return 54.509*eV; + } + + if(particleDefinition == instance->GetIon("helium")) + { + // Binding energy for He+ -> He++ + e- 54.509 eV + // Binding energy for He -> He+ + e- 24.587 eV + + if (finalStateIndex==0) return 24.587*eV; + return (54.509 + 24.587)*eV; + } + + return 0; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticBrennerZaider.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticBrennerZaider.cc new file mode 100644 index 0000000000..fd9e3733d7 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticBrennerZaider.cc @@ -0,0 +1,230 @@ +// +// ******************************************************************** +// * 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: G4FinalStateElasticBrennerZaider.cc,v 1.1 2007/10/12 23:11:41 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4FinalStateElasticBrennerZaider.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4DynamicParticle.hh" +#include "Randomize.hh" + +#include "G4ParticleTypes.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4SystemOfUnits.hh" +#include "G4ParticleMomentum.hh" + +G4FinalStateElasticBrennerZaider::G4FinalStateElasticBrennerZaider() +{ + // These data members will be used in the next implementation iteration, + // when the enriched PhysicsModel policy is implemented + name = "FinalStateElasticBrennerZaider"; + lowEnergyLimit = 7.4 * eV; + highEnergyLimit = 10 * MeV; + + betaCoeff.push_back(7.51525); + betaCoeff.push_back(-0.41912); + betaCoeff.push_back(7.2017E-3); + betaCoeff.push_back(-4.646E-5); + betaCoeff.push_back(1.02897E-7); + + deltaCoeff.push_back(2.9612); + deltaCoeff.push_back(-0.26376); + deltaCoeff.push_back(4.307E-3); + deltaCoeff.push_back(-2.6895E-5); + deltaCoeff.push_back(5.83505E-8); + + gamma035_10Coeff.push_back(-1.7013); + gamma035_10Coeff.push_back(-1.48284); + gamma035_10Coeff.push_back(0.6331); + gamma035_10Coeff.push_back(-0.10911); + gamma035_10Coeff.push_back(8.358E-3); + gamma035_10Coeff.push_back(-2.388E-4); + + gamma10_100Coeff.push_back(-3.32517); + gamma10_100Coeff.push_back(0.10996); + gamma10_100Coeff.push_back(-4.5255E-3); + gamma10_100Coeff.push_back(5.8372E-5); + gamma10_100Coeff.push_back(-2.4659E-7); + + gamma100_200Coeff.push_back(2.4775E-2); + gamma100_200Coeff.push_back(-2.96264E-5); + gamma100_200Coeff.push_back(-1.20655E-7); +} + + +G4FinalStateElasticBrennerZaider::~G4FinalStateElasticBrennerZaider() +{ + // empty + // G4DynamicParticle objects produced are owned by client +} + + +const G4FinalStateProduct& G4FinalStateElasticBrennerZaider::GenerateFinalState(const G4Track& track, const G4Step& /* step */) +{ + // Clear previous secondaries, energy deposit and particle kill status + product.Clear(); + + // Kinetic energy of primary particle + G4double k = track.GetDynamicParticle()->GetKineticEnergy(); + + // Assume material = water; H2O number of electrons + // ---- MGP ---- To be generalized later + // const G4int z = 10; + + G4double cosTheta = RandomizeCosTheta(k); + + G4double phi = 2. * pi * G4UniformRand(); + + // G4cout << "cosTheta in GenerateFinalState = " << cosTheta << ", phi = " << phi << G4endl; + + G4ThreeVector zVers = track.GetDynamicParticle()->GetMomentumDirection(); + G4ThreeVector xVers = zVers.orthogonal(); + G4ThreeVector yVers = zVers.cross(xVers); + + G4double xDir = std::sqrt(1. - cosTheta*cosTheta); + G4double yDir = xDir; + xDir *= std::cos(phi); + yDir *= std::sin(phi); + + // G4cout << "xDir, yDir = " << xDir <<", " << yDir << G4endl; + + // G4ThreeVector zPrimeVers((xDir*xVers + yDir*yVers + cosTheta*zVers).unit()); + G4ThreeVector zPrimeVers((xDir*xVers + yDir*yVers + cosTheta*zVers)); + + // G4cout << "zPrimeVers = (" << zPrimeVers.x() << ", "<< zPrimeVers.y() << ", "<< zPrimeVers.z() << ") " << G4endl; + + // product.ModifyPrimaryParticle(zPrimeVers.x(),zPrimeVers.y(),zPrimeVers.z(),k); + product.ModifyPrimaryParticle(zPrimeVers,k); + + // this->aParticleChange.ProposeEnergy(k); + // this->aParticleChange.ProposeMomentumDirection(zPrimeVers); + // this->aParticleChange.SetNumberOfSecondaries(0); + + return product; +} + +G4double G4FinalStateElasticBrennerZaider::RandomizeCosTheta(G4double k) +{ + // d sigma_el 1 beta(K) + // ------------ (K) ~ --------------------------------- + --------------------------------- + // d Omega (1 + 2 gamma(K) - cos(theta))^2 (1 + 2 delta(K) + cos(theta))^2 + // + // Maximum is < 1/(4 gamma(K)^2) + beta(K)/(4 delta(K)^2) + // + // Phys. Med. Biol. 29 N.4 (1983) 443-447 + + // gamma(K), beta(K) and delta(K) are polynomials with coefficients for energy measured in eV + k /= eV; + + G4double beta = std::exp(CalculatePolynomial(k,betaCoeff)); + G4double delta = std::exp(CalculatePolynomial(k,deltaCoeff)); + + G4double gamma; + if (k > 100.) + { + gamma = CalculatePolynomial(k, gamma100_200Coeff); // Only in this case it is not the exponent of the polynomial + } + else + { + + if (k>10) + { + gamma = std::exp(CalculatePolynomial(k, gamma10_100Coeff)); + } + else + { + gamma = std::exp(CalculatePolynomial(k, gamma035_10Coeff)); + } + } + + // G4cout << "beta = " << beta << ", gamma = " << gamma << ", delta = " << delta << G4endl; + + G4double oneOverMax = 1. / (1./(4.*gamma*gamma) + beta/(4.*delta*delta)); + + G4double cosTheta = 0.; + G4double leftDenominator = 0.; + G4double rightDenominator = 0.; + G4double fCosTheta = 0.; + + do + { + cosTheta = 2. * G4UniformRand() - 1.; + leftDenominator = (1 + 2.*gamma - cosTheta); + rightDenominator = (1 + 2.*delta + cosTheta); + fCosTheta = oneOverMax * (1./(leftDenominator*leftDenominator) + beta/(rightDenominator*rightDenominator)); + } + while (fCosTheta < G4UniformRand()); + + // G4cout << "cosTheta = " << cosTheta << G4endl; + + return cosTheta; +} + +G4double G4FinalStateElasticBrennerZaider::CalculatePolynomial(G4double k, std::vector& vec) +{ + // Sum_{i=0}^{size-1} vector_i k^i + // + // Phys. Med. Biol. 29 N.4 (1983) 443-447 + + G4double result = 0.; + size_t size = vec.size(); + + while (size>0) + { + size--; + + result *= k; + result += vec[size]; + } + + return result; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticScreenedRutherford.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticScreenedRutherford.cc new file mode 100644 index 0000000000..c64d9b0efc --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticScreenedRutherford.cc @@ -0,0 +1,192 @@ +// +// ******************************************************************** +// * 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: G4FinalStateElasticScreenedRutherford.cc,v 1.2 2007/10/12 23:10:33 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4FinalStateElasticScreenedRutherford.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4DynamicParticle.hh" +#include "Randomize.hh" + +#include "G4ParticleTypes.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4SystemOfUnits.hh" +#include "G4ParticleMomentum.hh" + +G4FinalStateElasticScreenedRutherford::G4FinalStateElasticScreenedRutherford() +{ + // These data members will be used in the next implementation iteration, + // when the enriched PhysicsModel policy is implemented + name = "FinalStateElasticScreenedRutherford"; + lowEnergyLimit = 7.4 * eV; + highEnergyLimit = 10 * MeV; +} + + +G4FinalStateElasticScreenedRutherford::~G4FinalStateElasticScreenedRutherford() +{ + // empty + // G4DynamicParticle objects produced are owned by client +} + + +const G4FinalStateProduct& G4FinalStateElasticScreenedRutherford::GenerateFinalState(const G4Track& track, const G4Step& step) +{ + // Clear previous secondaries, energy deposit and particle kill status + product.Clear(); + + // Kinetic energy of primary particle + G4double k = track.GetDynamicParticle()->GetKineticEnergy(); + + // Assume material = water; H2O number of electrons + // ---- MGP ---- To be generalized later + const G4int z = 10; + + G4double cosTheta = RandomizeCosTheta(k, z); + + G4double phi = 2. * pi * G4UniformRand(); + + // G4cout << "cosTheta in GenerateFinalState = " << cosTheta << ", phi = " << phi << G4endl; + + G4ThreeVector zVers = track.GetDynamicParticle()->GetMomentumDirection(); + G4ThreeVector xVers = zVers.orthogonal(); + G4ThreeVector yVers = zVers.cross(xVers); + + G4double xDir = std::sqrt(1. - cosTheta*cosTheta); + G4double yDir = xDir; + xDir *= std::cos(phi); + yDir *= std::sin(phi); + + // G4cout << "xDir, yDir = " << xDir <<", " << yDir << G4endl; + + // G4ThreeVector zPrimeVers((xDir*xVers + yDir*yVers + cosTheta*zVers).unit()); + G4ThreeVector zPrimeVers((xDir*xVers + yDir*yVers + cosTheta*zVers)); + + // G4cout << "zPrimeVers = (" << zPrimeVers.x() << ", "<< zPrimeVers.y() << ", "<< zPrimeVers.z() << ") " << G4endl; + + // product.ModifyPrimaryParticle(zPrimeVers.x(),zPrimeVers.y(),zPrimeVers.z(),k); + product.ModifyPrimaryParticle(zPrimeVers,k); + + // this->aParticleChange.ProposeEnergy(k); + // this->aParticleChange.ProposeMomentumDirection(zPrimeVers); + // this->aParticleChange.SetNumberOfSecondaries(0); + + return product; +} + +G4double G4FinalStateElasticScreenedRutherford::RandomizeCosTheta(G4double k, G4int z) const +{ + + // d sigma_el sigma_Ruth(K) + // ------------ (K) ~ ----------------------------- + // d Omega (1 + 2 n(K) - cos(theta))^2 + // + // We extract cos(theta) distributed as (1 + 2 n(K) - cos(theta))^-2 + // + // Maximum is for theta=0: 1/(4 n(K)^2) (When n(K) is positive, that is always satisfied within the validity of the process) + // + // Phys. Med. Biol. 45 (2000) 3171-3194 + + G4double n = ScreeningFactor(k, z); + + G4double oneOverMax = (4. * n*n); + + G4double cosTheta; + G4double fCosTheta; + + do + { + cosTheta = 2. * G4UniformRand() - 1.; + fCosTheta = (1 + 2.*n - cosTheta); + fCosTheta = oneOverMax / (fCosTheta*fCosTheta); + } + while (fCosTheta < G4UniformRand()); + + return cosTheta; +} + +G4double G4FinalStateElasticScreenedRutherford::ScreeningFactor(G4double k, G4int z) const +{ + // + // alpha_1 + beta_1 ln(K/eV) constK Z^(2/3) + // n(T) = -------------------------- ----------------- + // K/(m_e c^2) 2 + K/(m_e c^2) + // + // Where K is the electron non-relativistic kinetic energy + // + // n(T) > 0 for T < ~ 400 MeV + // + // Nucl. Instr. Meth. 155 (1978) 145-156 + + const G4double alpha_1 = 1.64; + const G4double beta_1 = -0.0825; + const G4double constK = 1.7E-5; + + G4double numerator = (alpha_1 + beta_1 * std::log(k/eV)) * constK * std::pow(static_cast(z), 2./3.); + + k /= electron_mass_c2; + + G4double denominator; + denominator = k * (2 + k); + + G4double result = 0.; + if (denominator != 0.) + { + result = numerator / denominator; + } + else + { + // Throw an exception + G4Exception("G4FinalStateElasticScreenedRutherford::ScreeningFactor - denominator = 0"); + } + return result; + +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationBorn.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationBorn.cc new file mode 100644 index 0000000000..c0a9669784 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationBorn.cc @@ -0,0 +1,111 @@ +// +// ******************************************************************** +// * 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: G4FinalStateExcitationBorn.cc,v 1.2 2007/11/09 20:11:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4FinalStateExcitationBorn.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4DynamicParticle.hh" +#include "Randomize.hh" + +#include "G4ParticleTypes.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4SystemOfUnits.hh" +#include "G4ParticleMomentum.hh" + +G4FinalStateExcitationBorn::G4FinalStateExcitationBorn() +{ + name = "FinalStateExcitationBorn"; + lowEnergyLimit = 7.4 * eV; + highEnergyLimit = 10 * MeV; +} + + +G4FinalStateExcitationBorn::~G4FinalStateExcitationBorn() +{ + // empty + // G4DynamicParticle objects produced are owned by client +} + + +const G4FinalStateProduct& G4FinalStateExcitationBorn::GenerateFinalState(const G4Track& track, const G4Step& /* step */) +{ + // Clear previous secondaries, energy deposit and particle kill status + product.Clear(); + + const G4DynamicParticle* particle = track.GetDynamicParticle(); + + // Kinetic energy of primary particle + G4double k = particle->GetKineticEnergy(); + + // Select excitation level on the basis of partial excitation cross section + G4int level = cross.RandomSelect(k); + // Excitation energy corresponding to the selected level + G4double excitationEnergy = waterStructure.ExcitationEnergy(level); + G4double newEnergy = k - excitationEnergy; + + if (newEnergy > lowEnergyLimit) + { + // Deposit excitation energy locally, modify primary energy accordingly + // Particle direction is unchanged + product.ModifyPrimaryParticle(particle->GetMomentumDirection(),newEnergy); + product.AddEnergyDeposit(excitationEnergy); + } + else + { + // Primary particle is killed + product.KillPrimaryParticle(); + } + + return product; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationEmfietzoglou.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationEmfietzoglou.cc new file mode 100644 index 0000000000..9e1d4af58f --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationEmfietzoglou.cc @@ -0,0 +1,111 @@ +// +// ******************************************************************** +// * 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: G4FinalStateExcitationEmfietzoglou.cc,v 1.2 2007/11/09 20:11:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4FinalStateExcitationEmfietzoglou.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4DynamicParticle.hh" +#include "Randomize.hh" + +#include "G4ParticleTypes.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4SystemOfUnits.hh" +#include "G4ParticleMomentum.hh" + +G4FinalStateExcitationEmfietzoglou::G4FinalStateExcitationEmfietzoglou() +{ + name = "FinalStateExcitationEmfietzoglou"; + lowEnergyLimit = 7.4 * eV; + highEnergyLimit = 10 * MeV; +} + + +G4FinalStateExcitationEmfietzoglou::~G4FinalStateExcitationEmfietzoglou() +{ + // empty + // G4DynamicParticle objects produced are owned by client +} + + +const G4FinalStateProduct& G4FinalStateExcitationEmfietzoglou::GenerateFinalState(const G4Track& track, const G4Step& /* step */) +{ + // Clear previous secondaries, energy deposit and particle kill status + product.Clear(); + + const G4DynamicParticle* particle = track.GetDynamicParticle(); + + // Kinetic energy of primary particle + G4double k = particle->GetKineticEnergy(); + + // Select excitation level on the basis of partial excitation cross section + G4int level = cross.RandomSelect(k); + // Excitation energy corresponding to the selected level + G4double excitationEnergy = waterStructure.ExcitationEnergy(level); + G4double newEnergy = k - excitationEnergy; + + if (newEnergy > lowEnergyLimit) + { + // Deposit excitation energy locally, modify primary energy accordingly + // Particle direction is unchanged + product.ModifyPrimaryParticle(particle->GetMomentumDirection(),newEnergy); + product.AddEnergyDeposit(excitationEnergy); + } + else + { + // Primary particle is killed + product.KillPrimaryParticle(); + } + + return product; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationMillerGreen.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationMillerGreen.cc new file mode 100755 index 0000000000..6a0c061339 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationMillerGreen.cc @@ -0,0 +1,113 @@ +// +// ******************************************************************** +// * 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: G4FinalStateExcitationMillerGreen.cc,v 1.2 2007/11/09 20:11:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4FinalStateExcitationMillerGreen.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4DynamicParticle.hh" +#include "Randomize.hh" + +#include "G4ParticleTypes.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4SystemOfUnits.hh" +#include "G4ParticleMomentum.hh" + +G4FinalStateExcitationMillerGreen::G4FinalStateExcitationMillerGreen() +{ + name = "ExcitationMillerGreen"; + lowEnergyLimit = 10 * eV; + highEnergyLimit = 10 * MeV; +} + + +G4FinalStateExcitationMillerGreen::~G4FinalStateExcitationMillerGreen() +{} + + +const G4FinalStateProduct& G4FinalStateExcitationMillerGreen::GenerateFinalState(const G4Track& track, const G4Step& /* step */) +{ + // Clear previous secondaries, energy deposit and particle kill status + product.Clear(); + + const G4DynamicParticle* particle = track.GetDynamicParticle(); + + // Kinetic energy of primary particle + G4double k = particle->GetKineticEnergy(); + + // Select excitation level on the basis of partial excitation cross section + G4int level = cross.RandomSelect(k,track.GetDefinition()); + // Excitation energy corresponding to the selected level + G4double excitationEnergy = waterStructure.ExcitationEnergy(level); + G4double newEnergy = k - excitationEnergy; + + // ---- SI ---- Test on newEnergy + if (newEnergy > 0) + { + // Deposit excitation energy locally, modify primary energy accordingly + // Particle direction is unchanged + product.ModifyPrimaryParticle(particle->GetMomentumDirection(),newEnergy); + product.AddEnergyDeposit(excitationEnergy); + } + + // ---- SI ---- Particle is not modified by default otherwise +/* + else + { + // Primary particle is killed + product.KillPrimaryParticle(); + } +*/ + + return product; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateIonisationBorn.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateIonisationBorn.cc new file mode 100755 index 0000000000..307284b946 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateIonisationBorn.cc @@ -0,0 +1,474 @@ +// +// ******************************************************************** +// * 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: G4FinalStateIonisationBorn.cc,v 1.9 2007/11/26 17:27:09 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Sebastien Incerti (incerti@cenbg.in2p3.fr) +// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// Nov 2007 S. Incerti Implementation +// 26 Nov 2007 MGP Cleaned up std:: +// +// ------------------------------------------------------------------- + +// Class description: +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4FinalStateIonisationBorn.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4DynamicParticle.hh" +#include "Randomize.hh" + +#include "G4ParticleTypes.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4Proton.hh" +#include "G4SystemOfUnits.hh" +#include "G4ParticleMomentum.hh" + + +G4FinalStateIonisationBorn::G4FinalStateIonisationBorn() +{ + + name = "IonisationBorn"; + + // NEW + // Factor to scale microscopic/macroscopic cross section data in water + + G4double scaleFactor = (1.e-22 / 3.343) * m*m; + + // Energy limits + G4ParticleDefinition* electronDef = G4Electron::ElectronDefinition(); + G4ParticleDefinition* protonDef = G4Proton::ProtonDefinition(); + + G4String electron; + G4String proton; + + // Default energy limits (defined for protection against anomalous behaviour only) + lowEnergyLimitDefault = 25 * eV; + highEnergyLimitDefault = 10 * MeV; + + char *path = getenv("G4LEDATA"); + + if (!path) + G4Exception("G4DNACrossSectionDataSet::FullFileName - G4LEDATA environment variable not set"); + + // Data members for electrons + + if (electronDef != 0) + { + electron = electronDef->GetParticleName(); + lowEnergyLimit[electron] = 25. * eV; + highEnergyLimit[electron] = 30. * keV; + + std::ostringstream eFullFileName; + eFullFileName << path << "/dna/sigmadiff_ionisation_e_born.dat"; + std::ifstream eDiffCrossSection(eFullFileName.str().c_str()); + // eDiffCrossSection(eFullFileName.str().c_str()); + if (!eDiffCrossSection) + { + // G4cout << "ERROR OPENING DATA FILE IN ELECTRON BORN IONIZATION !!! " << G4endl; + G4Exception("G4FinalStateIonisationBorn::ERROR OPENING electron DATA FILE"); + while(1); // ---- MGP ---- What is this? + } + + eTdummyVec.push_back(0.); + while(!eDiffCrossSection.eof()) + { + double tDummy; + double eDummy; + eDiffCrossSection>>tDummy>>eDummy; + if (tDummy != eTdummyVec.back()) eTdummyVec.push_back(tDummy); + for (int j=0; j<5; j++) + { + eDiffCrossSection>>eDiffCrossSectionData[j][tDummy][eDummy]; + eDiffCrossSectionData[j][tDummy][eDummy]*=scaleFactor; + eVecm[tDummy].push_back(eDummy); + } + } + + } + else + { + G4Exception("G4FinalStateIonisationBorn Constructor: electron is not defined"); + } + + // Data members for protons + + if (protonDef != 0) + { + proton = protonDef->GetParticleName(); + lowEnergyLimit[proton] = 500. * keV; + highEnergyLimit[proton] = 10. * MeV; + + std::ostringstream pFullFileName; + pFullFileName << path << "/dna/sigmadiff_ionisation_p_born.dat"; + std::ifstream pDiffCrossSection(pFullFileName.str().c_str()); + // pDiffCrossSection(pFullFileName.str().c_str()); + if (!pDiffCrossSection) + { + // G4cout<<"ERROR OPENING DATA FILE IN PROTON BORN IONIZATION !!! "<>tDummy>>eDummy; + if (tDummy != pTdummyVec.back()) pTdummyVec.push_back(tDummy); + for (int j=0; j<5; j++) + { + pDiffCrossSection>>pDiffCrossSectionData[j][tDummy][eDummy]; + pDiffCrossSectionData[j][tDummy][eDummy]*=scaleFactor; + //G4cout << "j=" << j << " Tdum=" << tDummy << " Edum=" << eDummy << " pDiff=" << pDiffCrossSectionData[j][tDummy][eDummy] << G4endl; + pVecm[tDummy].push_back(eDummy); + } + } + } + else + { + G4Exception("G4FinalStateIonisationBorn Constructor: proton is not defined"); + } +} + + +G4FinalStateIonisationBorn::~G4FinalStateIonisationBorn() +{ + eVecm.clear(); + pVecm.clear(); +} + + +const G4FinalStateProduct& G4FinalStateIonisationBorn::GenerateFinalState(const G4Track& track, const G4Step& /* step */) +{ + // Clear previous secondaries, energy deposit and particle kill status + product.Clear(); + + const G4DynamicParticle* particle = track.GetDynamicParticle(); + + G4double lowLim = lowEnergyLimitDefault; + G4double highLim = highEnergyLimitDefault; + + G4double k = particle->GetKineticEnergy(); + + const G4String& particleName = particle->GetDefinition()->GetParticleName(); + + // Retrieve energy limits for the current particle type + + std::map< G4String,G4double,std::less >::iterator pos1; + pos1 = lowEnergyLimit.find(particleName); + + // Lower limit + if (pos1 != lowEnergyLimit.end()) + { + lowLim = pos1->second; + } + + // Upper limit + std::map< G4String,G4double,std::less >::iterator pos2; + pos2 = highEnergyLimit.find(particleName); + + if (pos2 != highEnergyLimit.end()) + { + highLim = pos2->second; + } + + // Verify that the current track is within the energy limits of validity of the cross section model + + if (k >= lowLim && k <= highLim) + { + // Kinetic energy of primary particle + + G4ParticleMomentum primaryDirection = particle->GetMomentumDirection(); + G4double particleMass = particle->GetDefinition()->GetPDGMass(); + G4double totalEnergy = k + particleMass; + G4double pSquare = k * (totalEnergy + particleMass); + G4double totalMomentum = std::sqrt(pSquare); + + const G4String& particleName = particle->GetDefinition()->GetParticleName(); + + G4int ionizationShell = cross.RandomSelect(k,particleName); + + G4double secondaryKinetic = RandomizeEjectedElectronEnergy(particle->GetDefinition(),k,ionizationShell); + + G4double bindingEnergy = waterStructure.IonisationEnergy(ionizationShell); + + G4double cosTheta = 0.; + G4double phi = 0.; + RandomizeEjectedElectronDirection(track.GetDefinition(), k,secondaryKinetic, cosTheta, phi); + + G4double sinTheta = std::sqrt(1.-cosTheta*cosTheta); + G4double dirX = sinTheta*std::cos(phi); + G4double dirY = sinTheta*std::sin(phi); + G4double dirZ = cosTheta; + G4ThreeVector deltaDirection(dirX,dirY,dirZ); + deltaDirection.rotateUz(primaryDirection); + + G4double deltaTotalMomentum = std::sqrt(secondaryKinetic*(secondaryKinetic + 2.*electron_mass_c2 )); + + //Primary Particle Direction + G4double finalPx = totalMomentum*primaryDirection.x() - deltaTotalMomentum*deltaDirection.x(); + G4double finalPy = totalMomentum*primaryDirection.y() - deltaTotalMomentum*deltaDirection.y(); + G4double finalPz = totalMomentum*primaryDirection.z() - deltaTotalMomentum*deltaDirection.z(); + G4double finalMomentum = std::sqrt(finalPx*finalPx + finalPy*finalPy + finalPz*finalPz); + finalPx /= finalMomentum; + finalPy /= finalMomentum; + finalPz /= finalMomentum; + + product.ModifyPrimaryParticle(finalPx,finalPy,finalPz,k-bindingEnergy-secondaryKinetic); + product.AddEnergyDeposit(bindingEnergy); + + G4DynamicParticle* aElectron = new G4DynamicParticle(G4Electron::Electron(),deltaDirection,secondaryKinetic); + product.AddSecondary(aElectron); + } + + return product; +} + + +G4double G4FinalStateIonisationBorn::RandomizeEjectedElectronEnergy(G4ParticleDefinition* particleDefinition, + G4double k, + G4int shell) +{ + + if (particleDefinition == G4Electron::ElectronDefinition()) + { + + G4double maximumEnergyTransfer=0.; + if ((k+waterStructure.IonisationEnergy(shell))/2. > k) maximumEnergyTransfer=k; + else maximumEnergyTransfer = (k+waterStructure.IonisationEnergy(shell))/2.; + + G4double crossSectionMaximum = 0.; + for(G4double value=waterStructure.IonisationEnergy(shell); value<=maximumEnergyTransfer; value+=0.1*eV) + { + G4double differentialCrossSection = DifferentialCrossSection(particleDefinition, k/eV, value/eV, shell); + if(differentialCrossSection >= crossSectionMaximum) crossSectionMaximum = differentialCrossSection; + } + + G4double secondaryElectronKineticEnergy=0.; + do + { + secondaryElectronKineticEnergy = G4UniformRand() * (maximumEnergyTransfer-waterStructure.IonisationEnergy(shell)); + } while(G4UniformRand()*crossSectionMaximum > + DifferentialCrossSection(particleDefinition, k/eV,(secondaryElectronKineticEnergy+waterStructure.IonisationEnergy(shell))/eV,shell)); + + return secondaryElectronKineticEnergy; + + } + + if (particleDefinition == G4Proton::ProtonDefinition()) + { + G4double maximumKineticEnergyTransfer = 4.* (electron_mass_c2 / proton_mass_c2) * k - (waterStructure.IonisationEnergy(shell)); + + G4double crossSectionMaximum = 0.; + for (G4double value = waterStructure.IonisationEnergy(shell); + value<=4.*waterStructure.IonisationEnergy(shell) ; + value+=0.1*eV) + { + G4double differentialCrossSection = DifferentialCrossSection(particleDefinition, k/eV, value/eV, shell); + if (differentialCrossSection >= crossSectionMaximum) crossSectionMaximum = differentialCrossSection; + } + + G4double secondaryElectronKineticEnergy = 0.; + do + { + secondaryElectronKineticEnergy = G4UniformRand() * maximumKineticEnergyTransfer; + } while(G4UniformRand()*crossSectionMaximum >= + DifferentialCrossSection(particleDefinition, k/eV,(secondaryElectronKineticEnergy+waterStructure.IonisationEnergy(shell))/eV,shell)); + + return secondaryElectronKineticEnergy; + } + + return 0; +} + + +void G4FinalStateIonisationBorn::RandomizeEjectedElectronDirection(G4ParticleDefinition* particleDefinition, + G4double k, + G4double secKinetic, + G4double & cosTheta, + G4double & phi ) +{ + if (particleDefinition == G4Electron::ElectronDefinition()) + { + + phi = twopi * G4UniformRand(); + if (secKinetic < 50.*eV) cosTheta = (2.*G4UniformRand())-1.; + else if (secKinetic <= 200.*eV) + { + if (G4UniformRand() <= 0.1) cosTheta = (2.*G4UniformRand())-1.; + else cosTheta = G4UniformRand()*(std::sqrt(2.)/2); + } + else + { + G4double sin2O = (1.-secKinetic/k) / (1.+secKinetic/(2.*electron_mass_c2)); + cosTheta = std::sqrt(1.-sin2O); + } + } + + if (particleDefinition == G4Proton::ProtonDefinition()) + { + G4double maxSecKinetic = 4.* (electron_mass_c2 / proton_mass_c2) * k; + phi = twopi * G4UniformRand(); + cosTheta = std::sqrt(secKinetic / maxSecKinetic); + } +} + + +double G4FinalStateIonisationBorn::DifferentialCrossSection(G4ParticleDefinition * particleDefinition, + G4double k, + G4double energyTransfer, + G4int ionizationLevelIndex) +{ + G4double sigma = 0.; + + if (energyTransfer >= waterStructure.IonisationEnergy(ionizationLevelIndex)) + { + G4double valueT1 = 0; + G4double valueT2 = 0; + G4double valueE21 = 0; + G4double valueE22 = 0; + G4double valueE12 = 0; + G4double valueE11 = 0; + + G4double xs11 = 0; + G4double xs12 = 0; + G4double xs21 = 0; + G4double xs22 = 0; + + + if (particleDefinition == G4Electron::ElectronDefinition()) + { + // k should be in eV and energy transfer eV also + std::vector::iterator t2 = std::upper_bound(eTdummyVec.begin(),eTdummyVec.end(), k); + std::vector::iterator t1 = t2-1; + std::vector::iterator e12 = std::upper_bound(eVecm[(*t1)].begin(),eVecm[(*t1)].end(), energyTransfer); + std::vector::iterator e11 = e12-1; + + std::vector::iterator e22 = std::upper_bound(eVecm[(*t2)].begin(),eVecm[(*t2)].end(), energyTransfer); + std::vector::iterator e21 = e22-1; + + valueT1 =*t1; + valueT2 =*t2; + valueE21 =*e21; + valueE22 =*e22; + valueE12 =*e12; + valueE11 =*e11; + + xs11 = eDiffCrossSectionData[ionizationLevelIndex][valueT1][valueE11]; + xs12 = eDiffCrossSectionData[ionizationLevelIndex][valueT1][valueE12]; + xs21 = eDiffCrossSectionData[ionizationLevelIndex][valueT2][valueE21]; + xs22 = eDiffCrossSectionData[ionizationLevelIndex][valueT2][valueE22]; + + } + + if (particleDefinition == G4Proton::ProtonDefinition()) + { + // k should be in eV and energy transfer eV also + std::vector::iterator t2 = std::upper_bound(pTdummyVec.begin(),pTdummyVec.end(), k); + std::vector::iterator t1 = t2-1; + std::vector::iterator e12 = std::upper_bound(pVecm[(*t1)].begin(),pVecm[(*t1)].end(), energyTransfer); + std::vector::iterator e11 = e12-1; + + std::vector::iterator e22 = std::upper_bound(pVecm[(*t2)].begin(),pVecm[(*t2)].end(), energyTransfer); + std::vector::iterator e21 = e22-1; + + valueT1 =*t1; + valueT2 =*t2; + valueE21 =*e21; + valueE22 =*e22; + valueE12 =*e12; + valueE11 =*e11; + + xs11 = pDiffCrossSectionData[ionizationLevelIndex][valueT1][valueE11]; + xs12 = pDiffCrossSectionData[ionizationLevelIndex][valueT1][valueE12]; + xs21 = pDiffCrossSectionData[ionizationLevelIndex][valueT2][valueE21]; + xs22 = pDiffCrossSectionData[ionizationLevelIndex][valueT2][valueE22]; + } + + G4double xsProduct = xs11 * xs12 * xs21 * xs22; + // if (xs11==0 || xs12==0 ||xs21==0 ||xs22==0) return (0.); + if (xsProduct != 0.) + { + sigma = QuadInterpolator(valueE11, valueE12, + valueE21, valueE22, + xs11, xs12, + xs21, xs22, + valueT1, valueT2, + k, energyTransfer); + } + } + return sigma; +} + + +G4double G4FinalStateIonisationBorn::LogLogInterpolate(G4double e1, + G4double e2, + G4double e, + G4double xs1, + G4double xs2) +{ + G4double a = (std::log10(xs2)-std::log10(xs1)) / (std::log10(e2)-std::log10(e1)); + G4double b = std::log10(xs2) - a*std::log10(e2); + G4double sigma = a*std::log10(e) + b; + G4double value = (std::pow(10.,sigma)); + return value; +} + + +G4double G4FinalStateIonisationBorn::QuadInterpolator(G4double e11, G4double e12, + G4double e21, G4double e22, + G4double xs11, G4double xs12, + G4double xs21, G4double xs22, + G4double t1, G4double t2, + G4double t, G4double e) +{ + G4double interpolatedvalue1 = LogLogInterpolate(e11, e12, e, xs11, xs12); + G4double interpolatedvalue2 = LogLogInterpolate(e21, e22, e, xs21, xs22); + G4double value = LogLogInterpolate(t1, t2, t, interpolatedvalue1, interpolatedvalue2); + return value; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateIonisationRudd.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateIonisationRudd.cc new file mode 100755 index 0000000000..99c5eb502a --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateIonisationRudd.cc @@ -0,0 +1,532 @@ +// +// ******************************************************************** +// * 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: G4FinalStateIonisationRudd.cc,v 1.5 2007/11/26 17:27:09 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Sebastien Incerti (incerti@cenbg.in2p3.fr) +// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +/// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 +// +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// Nov 2007 S. Incerti Implementation +// 26 Nov 2007 MGP Cleaned up std:: +// +// ------------------------------------------------------------------- + +// Class description: +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4FinalStateIonisationRudd.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4DynamicParticle.hh" +#include "Randomize.hh" + +#include "G4ParticleTypes.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4Proton.hh" +#include "G4SystemOfUnits.hh" +#include "G4ParticleMomentum.hh" +#include "G4DNAGenericIonsManager.hh" + + +G4FinalStateIonisationRudd::G4FinalStateIonisationRudd() +{ + name = "IonisationBorn"; + // Default energy limits (defined for protection against anomalous behaviour only) + lowEnergyLimitDefault = 100 * eV; + highEnergyLimitDefault = 100 * MeV; + + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + + G4ParticleDefinition* protonDef = G4Proton::ProtonDefinition(); + G4ParticleDefinition* hydrogenDef = instance->GetIon("hydrogen"); + G4ParticleDefinition* alphaPlusPlusDef = instance->GetIon("alpha++"); + G4ParticleDefinition* alphaPlusDef = instance->GetIon("alpha+"); + G4ParticleDefinition* heliumDef = instance->GetIon("helium"); + + G4String proton; + G4String hydrogen; + G4String alphaPlusPlus; + G4String alphaPlus; + G4String helium; + + proton = protonDef->GetParticleName(); + lowEnergyLimit[proton] = 100. * eV; + highEnergyLimit[proton] = 500. * keV; + + hydrogen = hydrogenDef->GetParticleName(); + lowEnergyLimit[hydrogen] = 100. * eV; + highEnergyLimit[hydrogen] = 100. * MeV; + + alphaPlusPlus = alphaPlusPlusDef->GetParticleName(); + lowEnergyLimit[alphaPlusPlus] = 1. * keV; + highEnergyLimit[alphaPlusPlus] = 10. * MeV; + + alphaPlus = alphaPlusDef->GetParticleName(); + lowEnergyLimit[alphaPlus] = 1. * keV; + highEnergyLimit[alphaPlus] = 10. * MeV; + + helium = heliumDef->GetParticleName(); + lowEnergyLimit[helium] = 1. * keV; + highEnergyLimit[helium] = 10. * MeV; +} + + +G4FinalStateIonisationRudd::~G4FinalStateIonisationRudd() +{ } + + + +const G4FinalStateProduct& G4FinalStateIonisationRudd::GenerateFinalState(const G4Track& track, const G4Step& /* step */) +{ + // Clear previous secondaries, energy deposit and particle kill status + product.Clear(); + + const G4DynamicParticle* particle = track.GetDynamicParticle(); + + G4double lowLim = lowEnergyLimitDefault; + G4double highLim = highEnergyLimitDefault; + + G4double k = particle->GetKineticEnergy(); + + const G4String& particleName = particle->GetDefinition()->GetParticleName(); + + // Retrieve energy limits for the current particle type + + std::map< G4String,G4double,std::less >::iterator pos1; + pos1 = lowEnergyLimit.find(particleName); + + // Lower limit + if (pos1 != lowEnergyLimit.end()) + { + lowLim = pos1->second; + } + + // Upper limit + std::map< G4String,G4double,std::less >::iterator pos2; + pos2 = highEnergyLimit.find(particleName); + + if (pos2 != highEnergyLimit.end()) + { + highLim = pos2->second; + } + + // Verify that the current track is within the energy limits of validity of the cross section model + + if (k >= lowLim && k <= highLim) + { + // Kinetic energy of primary particle + + G4ParticleDefinition* definition = particle->GetDefinition(); + G4ParticleMomentum primaryDirection = particle->GetMomentumDirection(); + G4double particleMass = definition->GetPDGMass(); + G4double totalEnergy = k + particleMass; + G4double pSquare = k*(totalEnergy+particleMass); + G4double totalMomentum = std::sqrt(pSquare); + + const G4String& particleName = definition->GetParticleName(); + + G4int ionizationShell = cross.RandomSelect(k,particleName); + + G4double secondaryKinetic = RandomizeEjectedElectronEnergy(definition,k,ionizationShell); + + G4double bindingEnergy = waterStructure.IonisationEnergy(ionizationShell); + + G4double cosTheta = 0.; + G4double phi = 0.; + RandomizeEjectedElectronDirection(definition, k,secondaryKinetic, cosTheta, phi); + + G4double sinTheta = std::sqrt(1.-cosTheta*cosTheta); + G4double dirX = sinTheta*std::cos(phi); + G4double dirY = sinTheta*std::sin(phi); + G4double dirZ = cosTheta; + G4ThreeVector deltaDirection(dirX,dirY,dirZ); + deltaDirection.rotateUz(primaryDirection); + + G4double deltaTotalMomentum = std::sqrt(secondaryKinetic*(secondaryKinetic + 2.*electron_mass_c2 )); + + // Primary Particle Direction + G4double finalPx = totalMomentum*primaryDirection.x() - deltaTotalMomentum*deltaDirection.x(); + G4double finalPy = totalMomentum*primaryDirection.y() - deltaTotalMomentum*deltaDirection.y(); + G4double finalPz = totalMomentum*primaryDirection.z() - deltaTotalMomentum*deltaDirection.z(); + G4double finalMomentum = std::sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz); + finalPx /= finalMomentum; + finalPy /= finalMomentum; + finalPz /= finalMomentum; + + product.ModifyPrimaryParticle(finalPx,finalPy,finalPz,k-bindingEnergy-secondaryKinetic); + product.AddEnergyDeposit(bindingEnergy); + + G4DynamicParticle* aElectron = new G4DynamicParticle(G4Electron::Electron(),deltaDirection,secondaryKinetic); + product.AddSecondary(aElectron); + } + + if (k < lowLim) {product.KillPrimaryParticle();product.AddEnergyDeposit(k);} + + return product; +} + + + +G4double G4FinalStateIonisationRudd::RandomizeEjectedElectronEnergy(G4ParticleDefinition* particleDefinition, + G4double k, + G4int shell) +{ + G4double maximumKineticEnergyTransfer = 0.; + + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + + if (particleDefinition == G4Proton::ProtonDefinition() + || particleDefinition == instance->GetIon("hydrogen")) + + { + maximumKineticEnergyTransfer= 4.* (electron_mass_c2 / proton_mass_c2) * k; + } + + if (particleDefinition == instance->GetIon("helium") + || particleDefinition == instance->GetIon("alpha+") + || particleDefinition == instance->GetIon("alpha++")) + { + maximumKineticEnergyTransfer= 4.* (0.511 / 3728) * k; + } + + G4double crossSectionMaximum = 0.; + for(G4double value=waterStructure.IonisationEnergy(shell); value<=4.*waterStructure.IonisationEnergy(shell) ; value+=0.1*eV) + { + G4double differentialCrossSection = DifferentialCrossSection(particleDefinition, k, value, shell); + if(differentialCrossSection >= crossSectionMaximum) crossSectionMaximum = differentialCrossSection; + } + G4double secElecKinetic = 0.; + do{ + secElecKinetic = G4UniformRand() * maximumKineticEnergyTransfer; + } while(G4UniformRand()*crossSectionMaximum > DifferentialCrossSection(particleDefinition, + k, + secElecKinetic+waterStructure.IonisationEnergy(shell), + shell)); + + return(secElecKinetic); +} + + +void G4FinalStateIonisationRudd::RandomizeEjectedElectronDirection(G4ParticleDefinition* particleDefinition, + G4double k, + G4double secKinetic, + G4double cosTheta, + G4double phi ) +{ + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + + G4double maxSecKinetic = 0.; + + if (particleDefinition == G4Proton::ProtonDefinition() + || particleDefinition == instance->GetIon("hydrogen")) + { + maxSecKinetic = 4.* (electron_mass_c2 / proton_mass_c2) * k; + } + + if (particleDefinition == instance->GetIon("helium") + || particleDefinition == instance->GetIon("alpha+") + || particleDefinition == instance->GetIon("alpha++")) + { + maxSecKinetic = 4.* (0.511 / 3728) * k; + } + + phi = twopi * G4UniformRand(); + cosTheta = std::sqrt(secKinetic / maxSecKinetic); +} + + +G4double G4FinalStateIonisationRudd::DifferentialCrossSection(G4ParticleDefinition* particleDefinition, + G4double k, + G4double energyTransfer, + G4int ionizationLevelIndex) +{ + // Shells ids are 0 1 2 3 4 (4 is k shell) + // !!Attention, "energyTransfer" here is the energy transfered to the electron which means + // that the secondary kinetic energy is w = energyTransfer - bindingEnergy + // + // ds S F1(nu) + w * F2(nu) + // ---- = G(k) * ---- ------------------------------------------- + // dw Bj (1+w)^3 * [1 + exp{alpha * (w - wc) / nu}] + // + // w is the secondary electron kinetic Energy in eV + // + // All the other parameters can be found in Rudd's Papers + // + // M.Eugene Rudd, 1988, User-Friendly model for the energy distribution of + // electrons from protons or electron collisions. Nucl. Tracks Rad. Meas.Vol 16 N0 2/3 pp 219-218 + // + + const G4int j=ionizationLevelIndex; + + G4double A1 ; + G4double B1 ; + G4double C1 ; + G4double D1 ; + G4double E1 ; + G4double A2 ; + G4double B2 ; + G4double C2 ; + G4double D2 ; + G4double alphaConst ; + + if (j == 4) + { + //Data For Liquid Water K SHELL from Dingfelder (Protons in Water) + A1 = 1.25; + B1 = 0.5; + C1 = 1.00; + D1 = 1.00; + E1 = 3.00; + A2 = 1.10; + B2 = 1.30; + C2 = 1.00; + D2 = 0.00; + alphaConst = 0.66; + } + else + { + //Data For Liquid Water from Dingfelder (Protons in Water) + A1 = 1.02; + B1 = 82.0; + C1 = 0.45; + D1 = -0.80; + E1 = 0.38; + A2 = 1.07; + B2 = 14.6; + C2 = 0.60; + D2 = 0.04; + alphaConst = 0.64; + } + + const G4double n = 2.; + const G4double Gj[5] = {0.99, 1.11, 1.11, 0.52, 1.}; + + //const G4double I[5]={12.61*eV, 14.73*eV, 18.55*eV, 32.2*eV, 539.7*eV}; // for water Vapor + //const G4double energyConstant[]={10.79*eV, 13.39*eV, 16.05*eV, 32.30*eV, 539.*eV}; + + G4DNAGenericIonsManager* instance; + instance = G4DNAGenericIonsManager::Instance(); + + G4double wBig = (energyTransfer - waterStructure.IonisationEnergy(ionizationLevelIndex)); + G4double w = wBig / waterStructure.IonisationEnergy(ionizationLevelIndex); + G4double Ry = 13.6*eV; + + G4double tau = 0.; + + if (particleDefinition == G4Proton::ProtonDefinition() + || particleDefinition == instance->GetIon("hydrogen")) + { + tau = (electron_mass_c2/proton_mass_c2) * k ; + } + + if ( particleDefinition == instance->GetIon("helium") + || particleDefinition == instance->GetIon("alpha+") + || particleDefinition == instance->GetIon("alpha++")) + { + tau = (0.511/3728.) * k ; + } + + G4double S = 4.*pi * Bohr_radius*Bohr_radius * n * std::pow((Ry/waterStructure.IonisationEnergy(ionizationLevelIndex)),2); + G4double v2 = tau / waterStructure.IonisationEnergy(ionizationLevelIndex); + G4double v = std::sqrt(v2); + G4double wc = 4.*v2 - 2.*v - (Ry/(4.*waterStructure.IonisationEnergy(ionizationLevelIndex))); + + G4double L1 = (C1* std::pow(v,(D1))) / (1.+ E1*std::pow(v, (D1+4.))); + G4double L2 = C2*std::pow(v,(D2)); + G4double H1 = (A1*std::log(1.+v2)) / (v2+(B1/v2)); + G4double H2 = (A2/v2) + (B2/(v2*v2)); + + G4double F1 = L1+H1; + G4double F2 = (L2*H2)/(L2+H2); + + G4double sigma = CorrectionFactor(particleDefinition, k/eV) + * Gj[j] * (S/waterStructure.IonisationEnergy(ionizationLevelIndex)) + * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(alphaConst*(w-wc)/v))) ); + + if ( particleDefinition == G4Proton::ProtonDefinition() + || particleDefinition == instance->GetIon("hydrogen") + ) + { + return(sigma); + } + + // ------------ + + if (particleDefinition == instance->GetIon("alpha++") ) + { + slaterEffectiveCharge[0]=0.; + slaterEffectiveCharge[1]=0.; + slaterEffectiveCharge[2]=0.; + sCoefficient[0]=0.; + sCoefficient[1]=0.; + sCoefficient[2]=0.; + } + + if (particleDefinition == instance->GetIon("alpha+") ) + { + slaterEffectiveCharge[0]=2.0; + slaterEffectiveCharge[1]=1.15; + slaterEffectiveCharge[2]=1.15; + sCoefficient[0]=0.7; + sCoefficient[1]=0.15; + sCoefficient[2]=0.15; + } + + if (particleDefinition == instance->GetIon("helium") ) + { + slaterEffectiveCharge[0]=1.7; + slaterEffectiveCharge[1]=1.15; + slaterEffectiveCharge[2]=1.15; + sCoefficient[0]=0.5; + sCoefficient[1]=0.25; + sCoefficient[2]=0.25; + } + + if ( particleDefinition == instance->GetIon("helium") + || particleDefinition == instance->GetIon("alpha+") + || particleDefinition == instance->GetIon("alpha++") + ) + { + sigma = Gj[j] * (S/waterStructure.IonisationEnergy(ionizationLevelIndex)) * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(alphaConst*(w-wc)/v))) ); + + G4double zEff = particleDefinition->GetPDGCharge() / eplus + particleDefinition->GetLeptonNumber(); + + zEff -= ( sCoefficient[0] * S_1s(k, energyTransfer, slaterEffectiveCharge[0], 1.) + + sCoefficient[1] * S_2s(k, energyTransfer, slaterEffectiveCharge[1], 2.) + + sCoefficient[2] * S_2p(k, energyTransfer, slaterEffectiveCharge[2], 2.) ); + + return zEff * zEff * sigma ; + } + + return 0; +} + +G4double G4FinalStateIonisationRudd::S_1s(G4double t, + G4double energyTransferred, + G4double slaterEffectiveChg, + G4double shellNumber) +{ + // 1 - e^(-2r) * ( 1 + 2 r + 2 r^2) + // Dingfelder, in Chattanooga 2005 proceedings, formula (7) + + G4double r = R(t, energyTransferred, slaterEffectiveChg, shellNumber); + G4double value = 1. - std::exp(-2 * r) * ( ( 2. * r + 2. ) * r + 1. ); + + return value; +} + + + +G4double G4FinalStateIonisationRudd::S_2s(G4double t, + G4double energyTransferred, + G4double slaterEffectiveChg, + G4double shellNumber) +{ + // 1 - e^(-2 r) * ( 1 + 2 r + 2 r^2 + 2 r^4) + // Dingfelder, in Chattanooga 2005 proceedings, formula (8) + + G4double r = R(t, energyTransferred, slaterEffectiveChg, shellNumber); + G4double value = 1. - std::exp(-2 * r) * (((2. * r * r + 2.) * r + 2.) * r + 1.); + + return value; + +} + + + +G4double G4FinalStateIonisationRudd::S_2p(G4double t, + G4double energyTransferred, + G4double slaterEffectiveChg, + G4double shellNumber) +{ + // 1 - e^(-2 r) * ( 1 + 2 r + 2 r^2 + 4/3 r^3 + 2/3 r^4) + // Dingfelder, in Chattanooga 2005 proceedings, formula (9) + + G4double r = R(t, energyTransferred, slaterEffectiveChg, shellNumber); + G4double value = 1. - std::exp(-2 * r) * (((( 2./3. * r + 4./3.) * r + 2.) * r + 2.) * r + 1.); + + return value; +} + + + +G4double G4FinalStateIonisationRudd::R(G4double t, + G4double energyTransferred, + G4double slaterEffectiveChg, + G4double shellNumber) +{ + // tElectron = m_electron / m_alpha * t + // Hardcoded in Riccardo's implementation; to be corrected + // Dingfelder, in Chattanooga 2005 proceedings, p 4 + + G4double tElectron = 0.511/3728. * t; + G4double value = 2. * tElectron * slaterEffectiveChg / (energyTransferred * shellNumber); + + return value; +} + + + +G4double G4FinalStateIonisationRudd::CorrectionFactor(G4ParticleDefinition* particleDefinition, G4double k) +{ + G4DNAGenericIonsManager *instance; + instance = G4DNAGenericIonsManager::Instance(); + + if (particleDefinition == G4Proton::Proton()) + { + return(1.); + } + else + if (particleDefinition == instance->GetIon("hydrogen")) + { + G4double value = (std::log(k/eV)-4.2)/0.5; + return((0.8/(1+std::exp(value))) + 0.9); + } + else + { + return(1.); + } +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateKill.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateKill.cc new file mode 100644 index 0000000000..f90526d63b --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateKill.cc @@ -0,0 +1,98 @@ +// +// ******************************************************************** +// * 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: G4FinalStateKill.cc,v 1.1 2007/11/09 20:26:12 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4FinalStateKill.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4DynamicParticle.hh" +#include "Randomize.hh" + +#include "G4ParticleTypes.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" +#include "G4SystemOfUnits.hh" +#include "G4ParticleMomentum.hh" + +G4FinalStateKill::G4FinalStateKill() +{ + name = "KillBelowThreshold"; + lowEnergyLimit = 0.; + highEnergyLimit = 25 * eV; +} + + +G4FinalStateKill::~G4FinalStateKill() +{ + // empty + // G4DynamicParticle objects produced are owned by client +} + + +const G4FinalStateProduct& G4FinalStateKill::GenerateFinalState(const G4Track& track, const G4Step& /* step */) +{ + // Clear previous secondaries, energy deposit and particle kill status + product.Clear(); + + // const G4DynamicParticle* particle = track.GetDynamicParticle(); + // Kinetic energy of primary particle + G4double k = track.GetDynamicParticle()->GetKineticEnergy(); + + + // Primary particle is killed + if (k < highEnergyLimit) + { + product.KillPrimaryParticle(); + } + + return product; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateProduct.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateProduct.cc new file mode 100644 index 0000000000..e3645979ff --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateProduct.cc @@ -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: G4FinalStateProduct.cc,v 1.5 2007/11/09 20:11:04 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA dummy final state for test purpose +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + +#include "G4FinalStateProduct.hh" +#include "G4Track.hh" +#include "G4DynamicParticle.hh" +#include "G4ParticleDefinition.hh" +#include "G4Track.hh" +#include "G4ThreeVector.hh" + +G4FinalStateProduct::G4FinalStateProduct() : killStatus(false), isModified(false), localEnergyDeposit(0.), modifiedEnergy(0) +{ + // empty +} + +G4FinalStateProduct::~G4FinalStateProduct() +{ + // Ownership of DynamicParticle secondaries produced is transferred + // to ParticleChange in process +} + +void G4FinalStateProduct::Clear() +{ + // Reset object status + killStatus = false; + isModified = false; + localEnergyDeposit = 0.; + modifiedEnergy = 0.; + secondaries.clear(); + modifiedDirection.setX(0.); + modifiedDirection.setY(0.); + modifiedDirection.setZ(0.); +} + +void G4FinalStateProduct::AddSecondary(G4DynamicParticle* particle) +{ + secondaries.push_back(particle); +} + +void G4FinalStateProduct::AddEnergyDeposit(G4double energy) +{ + localEnergyDeposit += energy; +} + +G4int G4FinalStateProduct::NumberOfSecondaries() const +{ + size_t n = secondaries.size(); + return n; +} + +const std::vector& G4FinalStateProduct::GetSecondaries() const +{ + return secondaries; +} + +void G4FinalStateProduct::KillPrimaryParticle() +{ + // ---- MGP ---- To be added: Handle local energy deposit here + killStatus = true; +} + +void G4FinalStateProduct::ModifyPrimaryParticle(G4double dirX, G4double dirY, G4double dirZ, G4double energy) +{ + isModified = true; + modifiedEnergy = energy; + modifiedDirection.set(dirX,dirY,dirZ); + modifiedDirection = modifiedDirection.unit(); +} + +void G4FinalStateProduct::ModifyPrimaryParticle(const G4ThreeVector& direction, G4double energy) +{ + isModified = true; + modifiedEnergy = energy; + modifiedDirection = direction.unit(); +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4FluoData.cc b/source/processes/electromagnetic/lowenergy/src/G4FluoData.cc index 82ccbc93ef..2c566a4087 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4FluoData.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4FluoData.cc @@ -308,7 +308,7 @@ void G4FluoData::PrintData() for (size_t k = 0; kpush_back(energyVector[bin]); @@ -160,14 +161,11 @@ void G4PenelopeRayleigh::BuildPhysicsTable(const G4ParticleDefinition& ) cs = cs*(ec/energyVector[bin])*(ec/energyVector[bin])*pi*classic_electr_radius*classic_electr_radius; const G4double* vector_of_atoms = material->GetVecNbOfAtomsPerVolume(); const G4int* stechiometric = material->GetAtomsVector(); - G4double density=0.; + G4double density = vector_of_atoms[iright]; //non-bound molecules (default) if (stechiometric) { - density = vector_of_atoms[iright]/stechiometric[iright]; //number of molecules per volume - } - else - { - density = vector_of_atoms[iright]; //non-bound molecules + if (stechiometric[iright]) + density = vector_of_atoms[iright]/stechiometric[iright]; //number of molecules per volume } G4double cross = density*cs; data->push_back(cross); @@ -195,7 +193,7 @@ void G4PenelopeRayleigh::BuildPhysicsTable(const G4ParticleDefinition& ) } } G4VEMDataSet* dataSet = new G4EMDataSet(m,energies,data,algo,1.,1.); - materialSet->AddComponent(dataSet); + materialSet->AddComponent(dataSet); } meanFreePathTable = materialSet; } @@ -203,7 +201,6 @@ void G4PenelopeRayleigh::BuildPhysicsTable(const G4ParticleDefinition& ) G4VParticleChange* G4PenelopeRayleigh::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) { - aParticleChange.Initialize(aTrack); const G4DynamicParticle* incidentPhoton = aTrack.GetDynamicParticle(); @@ -497,7 +494,7 @@ G4double G4PenelopeRayleigh::MolecularFormFactor(G4double y) fb=std::sin(2*Pg*std::atan(Pq))/(Pg*Pq*std::pow((1+Pq*Pq),Pg)); fa=std::max(fa,fb); } - if (stechiometric) + if (stechiometric && stechiometric[i]!=0) { gradx1=gradx1+stechiometric[i]*(fa*fa); //sum on the molecule } diff --git a/source/processes/electromagnetic/lowenergy/src/G4RangeTest.cc b/source/processes/electromagnetic/lowenergy/src/G4RangeTest.cc index c37dfed9e3..340f34d5dd 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4RangeTest.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4RangeTest.cc @@ -25,7 +25,7 @@ // // // $Id: G4RangeTest.cc,v 1.8 2006/06/29 19:41:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/src/G4SemiLogInterpolation.cc b/source/processes/electromagnetic/lowenergy/src/G4SemiLogInterpolation.cc index 77696d7c31..b3f3aa25c7 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4SemiLogInterpolation.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4SemiLogInterpolation.cc @@ -25,7 +25,7 @@ // // // $Id: G4SemiLogInterpolation.cc,v 1.6 2006/06/29 19:41:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/src/G4ShellData.cc b/source/processes/electromagnetic/lowenergy/src/G4ShellData.cc index 531ee035a8..43874aa6e0 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4ShellData.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4ShellData.cc @@ -25,7 +25,7 @@ // // // $Id: G4ShellData.cc,v 1.8 2006/06/29 19:41:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/src/G4ShellEMDataSet.cc b/source/processes/electromagnetic/lowenergy/src/G4ShellEMDataSet.cc index 3341e2e9b2..0588268ec5 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4ShellEMDataSet.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4ShellEMDataSet.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ShellEMDataSet.cc,v 1.14 2006/06/29 19:41:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ShellEMDataSet.cc,v 1.15 2007/10/15 08:36:35 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // @@ -43,252 +43,242 @@ #include - G4ShellEMDataSet :: G4ShellEMDataSet(G4int argZ, G4VDataSetAlgorithm* argAlgorithm, G4double argUnitEnergies, G4double argUnitData) -: - z(argZ), - algorithm(argAlgorithm), - unitEnergies(argUnitEnergies), - unitData(argUnitData) +G4ShellEMDataSet::G4ShellEMDataSet(G4int argZ, G4VDataSetAlgorithm* argAlgorithm, + G4double argUnitEnergies, + G4double argUnitData) + : + z(argZ), + algorithm(argAlgorithm), + unitEnergies(argUnitEnergies), + unitData(argUnitData) { - if (algorithm == 0) - G4Exception("G4ShellEMDataSet::G4ShellEMDataSet - interpolation == 0"); + if (algorithm == 0) + G4Exception("G4ShellEMDataSet::G4ShellEMDataSet - interpolation == 0"); } - - G4ShellEMDataSet :: ~G4ShellEMDataSet() +G4ShellEMDataSet::~G4ShellEMDataSet() { - CleanUpComponents(); + CleanUpComponents(); - if (algorithm) - delete algorithm; + if (algorithm) + delete algorithm; } - - - -G4double G4ShellEMDataSet :: FindValue(G4double argEnergy, G4int /* argComponentId */) const +G4double G4ShellEMDataSet::FindValue(G4double argEnergy, G4int /* argComponentId */) const { - // Returns the sum over the shells corresponding to e - G4double value = 0.; + // Returns the sum over the shells corresponding to e + G4double value = 0.; - std::vector::const_iterator i(components.begin()); - std::vector::const_iterator end(components.end()); + std::vector::const_iterator i(components.begin()); + std::vector::const_iterator end(components.end()); - while (i!=end) - { - value+=(*i)->FindValue(argEnergy); - i++; - } + while (i!=end) + { + value+=(*i)->FindValue(argEnergy); + i++; + } - return value; + return value; } - - - -void G4ShellEMDataSet :: PrintData(void) const +void G4ShellEMDataSet::PrintData(void) const { - const size_t n(NumberOfComponents()); + const size_t n(NumberOfComponents()); - G4cout << "The data set has " << n << " components" << G4endl; - G4cout << G4endl; + G4cout << "The data set has " << n << " components" << G4endl; + G4cout << G4endl; - size_t i(0); + size_t i(0); - while (iPrintData(); - i++; - } + while (iPrintData(); + i++; + } } - - - -void G4ShellEMDataSet :: SetEnergiesData(G4DataVector * argEnergies, G4DataVector * argData, G4int argComponentId) +void G4ShellEMDataSet :: SetEnergiesData(G4DataVector* argEnergies, + G4DataVector* argData, + G4int argComponentId) { - G4VEMDataSet * component(components[argComponentId]); + G4VEMDataSet * component(components[argComponentId]); - if (component) - { - component->SetEnergiesData(argEnergies, argData, 0); - return; - } - - std::ostringstream message; - message << "G4ShellEMDataSet::SetEnergiesData - component " << argComponentId << " not found"; - - G4Exception(message.str().c_str()); -} - - - - - -G4bool G4ShellEMDataSet :: LoadData(const G4String & argFileName) -{ - CleanUpComponents(); - - G4String fullFileName(FullFileName(argFileName)); - std::ifstream in(fullFileName); - - if (!in.is_open()) - { - G4String message("G4ShellEMDataSet::LoadData - data file \""); - message+=fullFileName; - message+="\" not found"; - G4Exception(message); - } - - G4DataVector * argEnergies(0); - G4DataVector * argData(0); - - G4double a; - G4int shellIndex(0); - bool energyColumn(true); - - do - { - in >> a; - - if (a == -1) - { - if (energyColumn && argEnergies!=0) - { - AddComponent(new G4EMDataSet(shellIndex, argEnergies, argData, algorithm->Clone(), unitEnergies, unitData)); - argEnergies=0; - argData=0; - } - - energyColumn=(!energyColumn); - } - else if (a!=-2) - { - if (argEnergies==0) - { - argEnergies=new G4DataVector; - argData=new G4DataVector; - } - - if (energyColumn) - argEnergies->push_back(a*unitEnergies); - else - argData->push_back(a*unitData); - - energyColumn=(!energyColumn); - } - } - while (a != -2); - - return true; -} - - - -G4bool G4ShellEMDataSet :: SaveData(const G4String & argFileName) const -{ - G4String fullFileName(FullFileName(argFileName)); - std::ofstream out(fullFileName); - - if (!out.is_open()) - { - G4String message("G4EMDataSet::SaveData - cannot open \""); - message+=fullFileName; - message+="\""; - G4Exception(message); - } - - const size_t n(NumberOfComponents()); - size_t k(0); - - while (kGetEnergies(0)); - const G4DataVector & data(component->GetData(0)); - - G4DataVector::const_iterator i(energies.begin()); - G4DataVector::const_iterator endI(energies.end()); - G4DataVector::const_iterator j(data.begin()); - - while (i!=endI) - { - out.precision(10); - out.width(15); - out.setf(std::ofstream::left); - out << ((*i)/unitEnergies) << ' '; + { + component->SetEnergiesData(argEnergies, argData, 0); + return; + } - out.precision(10); - out.width(15); - out.setf(std::ofstream::left); - out << ((*j)/unitData) << std::endl; - i++; - j++; - } - } + std::ostringstream message; + message << "G4ShellEMDataSet::SetEnergiesData - component " << argComponentId << " not found"; + + G4Exception(message.str().c_str()); +} + + +G4bool G4ShellEMDataSet::LoadData(const G4String& argFileName) +{ + CleanUpComponents(); + + G4String fullFileName(FullFileName(argFileName)); + std::ifstream in(fullFileName); + + if (!in.is_open()) + { + G4String message("G4ShellEMDataSet::LoadData - data file \""); + message+=fullFileName; + message+="\" not found"; + G4Exception(message); + } + + G4DataVector* argEnergies(0); + G4DataVector* argData(0); + + G4double a; + G4int shellIndex(0); + bool energyColumn(true); + + do + { + in >> a; + if (a == -1) + { + if (energyColumn && argEnergies!=0) + { + AddComponent(new G4EMDataSet(shellIndex, argEnergies, argData, algorithm->Clone(), unitEnergies, unitData)); + argEnergies=0; + argData=0; + } + + energyColumn=(!energyColumn); + } + else if (a!=-2) + { + if (argEnergies==0) + { + argEnergies=new G4DataVector; + argData=new G4DataVector; + } + + if (energyColumn) + argEnergies->push_back(a*unitEnergies); + else + argData->push_back(a*unitData); + + energyColumn=(!energyColumn); + } + } + while (a != -2); + + return true; +} + + +G4bool G4ShellEMDataSet::SaveData(const G4String& argFileName) const +{ + G4String fullFileName(FullFileName(argFileName)); + std::ofstream out(fullFileName); + + if (!out.is_open()) + { + G4String message("G4EMDataSet::SaveData - cannot open \""); + message+=fullFileName; + message+="\""; + G4Exception(message); + } + + const size_t n(NumberOfComponents()); + size_t k(0); + + while (kGetEnergies(0)); + const G4DataVector & data(component->GetData(0)); + + G4DataVector::const_iterator i(energies.begin()); + G4DataVector::const_iterator endI(energies.end()); + G4DataVector::const_iterator j(data.begin()); + + while (i!=endI) + { + out.precision(10); + out.width(15); + out.setf(std::ofstream::left); + out << ((*i)/unitEnergies) << ' '; + + out.precision(10); + out.width(15); + out.setf(std::ofstream::left); + out << ((*j)/unitData) << std::endl; + i++; + j++; + } + } + + out.precision(10); + out.width(15); + out.setf(std::ofstream::left); + out << -1.f << ' '; + + out.precision(10); + out.width(15); + out.setf(std::ofstream::left); + out << -1.f << std::endl; + + k++; + } + out.precision(10); out.width(15); out.setf(std::ofstream::left); - out << -1.f << ' '; + out << -2.f << ' '; out.precision(10); out.width(15); out.setf(std::ofstream::left); - out << -1.f << std::endl; - - k++; - } - - out.precision(10); - out.width(15); - out.setf(std::ofstream::left); - out << -2.f << ' '; + out << -2.f << std::endl; - out.precision(10); - out.width(15); - out.setf(std::ofstream::left); - out << -2.f << std::endl; - - return true; + return true; } -void G4ShellEMDataSet :: CleanUpComponents(void) +void G4ShellEMDataSet::CleanUpComponents(void) { - while (!components.empty()) - { - if (components.back()) - delete components.back(); + while (!components.empty()) + { + if (components.back()) + delete components.back(); - components.pop_back(); - } + components.pop_back(); + } } -G4String G4ShellEMDataSet :: FullFileName(const G4String & argFileName) const +G4String G4ShellEMDataSet::FullFileName(const G4String & argFileName) const { - char* path = getenv("G4LEDATA"); - if (!path) - G4Exception("G4ShellEMDataSet::FullFileName - G4LEDATA environment variable not set"); + char* path = getenv("G4LEDATA"); + if (!path) + G4Exception("G4ShellEMDataSet::FullFileName - G4LEDATA environment variable not set"); - std::ostringstream fullFileName; + std::ostringstream fullFileName; - fullFileName << path << '/' << argFileName << z << ".dat"; + fullFileName << path << '/' << argFileName << z << ".dat"; - return G4String(fullFileName.str().c_str()); + return G4String(fullFileName.str().c_str()); } diff --git a/source/processes/electromagnetic/lowenergy/src/G4VCrossSectionHandler.cc b/source/processes/electromagnetic/lowenergy/src/G4VCrossSectionHandler.cc index 3f0ea3272e..f89558b2b6 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4VCrossSectionHandler.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4VCrossSectionHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4VCrossSectionHandler.cc,v 1.17 2006/06/29 19:41:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/src/G4VLowEnergyDiscretePhotonProcess.cc b/source/processes/electromagnetic/lowenergy/src/G4VLowEnergyDiscretePhotonProcess.cc index 0ab3f1bf76..ce6139fd68 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4VLowEnergyDiscretePhotonProcess.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4VLowEnergyDiscretePhotonProcess.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VLowEnergyDiscretePhotonProcess.cc,v 1.5 2006/06/29 19:41:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc b/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc index a45244e4d8..85b17a91ec 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc @@ -25,7 +25,7 @@ // // // $Id: G4VeLowEnergyLoss.cc,v 1.25 2006/06/29 19:41:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAElectronElasticScatteringInWater.icc b/source/processes/electromagnetic/lowenergy/src/G4WaterExcitationStructure.cc similarity index 51% rename from source/processes/electromagnetic/lowenergy/include/G4DNAElectronElasticScatteringInWater.icc rename to source/processes/electromagnetic/lowenergy/src/G4WaterExcitationStructure.cc index 3b0780724d..fcd5f92b1b 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAElectronElasticScatteringInWater.icc +++ b/source/processes/electromagnetic/lowenergy/src/G4WaterExcitationStructure.cc @@ -24,45 +24,55 @@ // ******************************************************************** // // -// $Id: G4DNAElectronElasticScatteringInWater.icc,v 1.4 2006/06/29 19:34:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4WaterExcitationStructure.cc,v 1.1 2007/10/15 08:57:54 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 -#ifdef G4DNAELECTRONELASTICSCATTERINGINWATER_HH - template - G4VParticleChange * G4DNAElectronElasticScatteringInWater :: PostStepDoIt(const G4Track & aTrack, const G4Step & aStep) - { - this->aParticleChange.Initialize(aTrack); - - G4double k; - k=aTrack.GetDynamicParticle()->GetKineticEnergy(); +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4WaterExcitationStructure.hh" + +G4WaterExcitationStructure::G4WaterExcitationStructure(): nLevels(5) +{ + energyConstant.push_back(8.22*eV); + energyConstant.push_back(10.00*eV); + energyConstant.push_back(11.24*eV); + energyConstant.push_back(12.61*eV); + energyConstant.push_back(13.77*eV); + + nLevels = energyConstant.size(); +} + + +G4WaterExcitationStructure::~G4WaterExcitationStructure() +{ } - G4double cosTheta; - const G4int z(10); // H2O number of electrons - - cosTheta=FinalStatesPolicy::RandomizeCosTheta(k, z); - - G4double phi; - phi=2*pi*G4UniformRand(); - - G4ThreeVector zVers(aTrack.GetDynamicParticle()->GetMomentumDirection()); - G4ThreeVector xVers(zVers.orthogonal()); - G4ThreeVector yVers(zVers.cross(xVers)); - - G4double xDir; - G4double yDir; - - xDir=std::sqrt(1-cosTheta*cosTheta); - yDir=xDir; - xDir*=std::cos(phi); - yDir*=std::sin(phi); - - G4ThreeVector zPrimeVers((xDir*xVers + yDir*yVers + cosTheta*zVers).unit()); - - this->aParticleChange.ProposeEnergy(k); - this->aParticleChange.ProposeMomentumDirection(zPrimeVers); - this->aParticleChange.SetNumberOfSecondaries(0); - - return G4VDNAProcessInWater::PostStepDoIt(aTrack, aStep); - } -#endif /* G4DNAELECTRONELASTICSCATTERINGINWATER_HH */ + +G4double G4WaterExcitationStructure::ExcitationEnergy(G4int level) +{ + G4double excitation = 0.; + + if (level >=0 && level < nLevels) excitation = energyConstant[level]; + + return excitation; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4WaterIonisationStructure.cc b/source/processes/electromagnetic/lowenergy/src/G4WaterIonisationStructure.cc new file mode 100755 index 0000000000..fdc2a214cc --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4WaterIonisationStructure.cc @@ -0,0 +1,78 @@ +// +// ******************************************************************** +// * 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: G4WaterIonisationStructure.cc,v 1.1 2007/11/08 20:39:35 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Reference: TNS Geant4-DNA paper +// S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: +// design foundation and implementation of the first set of models, +// IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4WaterIonisationStructure.hh" + +G4WaterIonisationStructure::G4WaterIonisationStructure(): nLevels(5) +{ + energyConstant.push_back(10.79*eV); + energyConstant.push_back(13.39*eV); + energyConstant.push_back(16.05*eV); + energyConstant.push_back(32.30*eV); + energyConstant.push_back(539.0*eV); + + nLevels = energyConstant.size(); +} + + +G4WaterIonisationStructure::~G4WaterIonisationStructure() +{ } + + +G4double G4WaterIonisationStructure::IonisationEnergy(G4int level) +{ + G4double ionisation = 0.; + + if (level >=0 && level < nLevels) ionisation = energyConstant[level]; + + return ionisation; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4eBremsstrahlungSpectrum.cc b/source/processes/electromagnetic/lowenergy/src/G4eBremsstrahlungSpectrum.cc index af9c4a273b..132ab9ea42 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4eBremsstrahlungSpectrum.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4eBremsstrahlungSpectrum.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eBremsstrahlungSpectrum.cc,v 1.15 2006/06/29 19:41:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/lowenergy/src/G4eCrossSectionExcitationEmfietzoglou.cc b/source/processes/electromagnetic/lowenergy/src/G4eCrossSectionExcitationEmfietzoglou.cc new file mode 100644 index 0000000000..5c9223d2a7 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4eCrossSectionExcitationEmfietzoglou.cc @@ -0,0 +1,192 @@ +// +// ******************************************************************** +// * 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: G4eCrossSectionExcitationEmfietzoglou.cc,v 1.1 2007/05/04 10:16:06 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +// $Id: G4eCrossSectionExcitationEmfietzoglou.cc,v 1.1 2007/05/04 10:16:06 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4eCrossSectionExcitationEmfietzoglou.hh" +#include "G4Track.hh" +#include "G4DynamicParticle.hh" + +#include "G4ParticleDefinition.hh" +#include "G4Track.hh" +#include "G4Electron.hh" +#include "G4DynamicParticle.hh" +#include "G4Material.hh" + +#include "Randomize.hh" + +G4eCrossSectionExcitationEmfietzoglou::G4eCrossSectionExcitationEmfietzoglou() +{ + + name = "eCrossSectionExcitationEmfietzoglou"; + lowEnergyLimit = 7. * eV; + highEnergyLimit = 10 * keV; + +// if (verboseLevel > 0) +// { +// G4cout << name << " is created " << G4endl +// << "Energy range: " +// << lowEnergyLimit / keV << " keV - " +// << highEnergyLimit / GeV << " GeV" +// << G4endl; +// } +} + + +G4eCrossSectionExcitationEmfietzoglou::~G4eCrossSectionExcitationEmfietzoglou() +{ } + + +G4double G4eCrossSectionExcitationEmfietzoglou::CrossSection(const G4Track& track) +{ + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + // G4Material* material = track.GetMaterial(); + + // Assume that the material is water; proper algorithm to calculate correctly for any material to be inserted here + + // Take into account 5 excitation levels (D. Emfietzoglou et al., NIM B 193, pp. 71-78, 2002. + G4int i = 5; + + G4double crossSection(0.); + + while (i>0) + { + i--; + crossSection += PartialCrossSection(k,i); + } + return crossSection; + } + + +G4double G4eCrossSectionExcitationEmfietzoglou::PartialCrossSection(G4double k, G4int excitationLevel) +{ + // Aj T + // sigma(T) = ------------- (Bj / T) ln(Cj ---) [1 - Bj / T]^Pj + // 2 pi alpha0 R + // + // T is the incoming electron kinetic energy + // alpha0 is the Bohr Radius (Bohr_radius) + // Aj, Bj, Cj & Pj are parameters that can be found in Emfietzoglou's papers + // + // + // From Phys. Med. Biol. 48 (2003) 2355-2371, D.Emfietzoglou, + // Monte Carlo Simulation of the energy loss of low energy electrons in liquid Water + + k = k / eV; + const G4double sigma0 = (10. / 3.343e22) * cm2; + const G4double aj[] = {0.0205, 0.0209, 0.0130, 0.0026, 0.0025}; + const G4double cj[] = {4.9801, 3.3850, 2.8095, 1.9242, 3.4624}; + const G4double pj[] = {0.4757, 0.3483, 0.4443, 0.3429, 0.4379}; + const G4double r = 13.6 * eV; + + G4double cross = 0.; + if (k < EnergyConstant(excitationLevel)) return cross; + + G4double excitationSigma = ( aj[excitationLevel] / (2. * pi * Bohr_radius)) * + (EnergyConstant(excitationLevel) / k) * + std::log(cj[excitationLevel] * (k / r)) * + std::pow((1. - (EnergyConstant(excitationLevel) / k)), pj[excitationLevel]); + G4cout << "Bohr radius = " << Bohr_radius << G4endl; + + cross = excitationSigma * sigma0; + + return cross; +} + + +G4int G4eCrossSectionExcitationEmfietzoglou::RandomizePartialCrossSection(G4double k) +{ + // Assume 5 excitation levels + + G4int i = 5; + G4double value = 0.; + G4double values[5]; + + while (i>0) + { + i--; + values[i] = PartialCrossSection(k,i); + value += values[i]; + } + + value *= G4UniformRand(); + + i = 5; + while (i>0) + { + i--; + + if (values[i] > value) return i; + + value -= values[i]; + } + // One should never end up here; next statement added to avoid compilation warning + // Probably one should throw an exception if one ends up here + return 0; +} + +G4double G4eCrossSectionExcitationEmfietzoglou::EnergyConstant(G4int excitationLevel) +{ + const G4double ej[] ={ 8.22*eV, 10.00*eV, 11.24*eV, 12.61*eV, 13.77*eV}; + G4double e = ej[excitationLevel]; + + return e; +} + + + + +//G4bool G4eCrossSectionExcitationEmfietzoglou::IsApplicable(const G4ParticleDefinition& particle) +//{ +// return ( &particle == G4Electron::Electron() ); +//} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4eCrossSectionScreenedRutherford.cc b/source/processes/electromagnetic/lowenergy/src/G4eCrossSectionScreenedRutherford.cc new file mode 100644 index 0000000000..3e0c06bcdb --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4eCrossSectionScreenedRutherford.cc @@ -0,0 +1,157 @@ +// +// ******************************************************************** +// * 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: G4eCrossSectionScreenedRutherford.cc,v 1.3 2007/10/12 12:27:19 pia Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// Reference: TNS Geant4-DNA paper +// Reference for implementation model: NIM. 155, pp. 145-156, 1978 + +// History: +// ----------- +// Date Name Modification +// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper +// +// ------------------------------------------------------------------- + +// Class description: +// Geant4-DNA Cross total cross section for electron elastic scattering in water +// Further documentation available from http://www.ge.infn.it/geant4/dna + +// ------------------------------------------------------------------- + + +#include "G4eCrossSectionScreenedRutherford.hh" +#include "G4Track.hh" +#include "G4DynamicParticle.hh" +#include "G4ParticleDefinition.hh" +#include "G4Electron.hh" + + +G4eCrossSectionScreenedRutherford::G4eCrossSectionScreenedRutherford() +{ + + name = "eCrossSectionScreenedRutherford"; + lowEnergyLimit = 7. * eV; + highEnergyLimit = 10 * MeV; + +// if (verboseLevel > 0) +// { +// G4cout << name << " is created " << G4endl +// << "Energy range: " +// << lowEnergyLimit / keV << " keV - " +// << highEnergyLimit / GeV << " GeV" +// << G4endl; +// } +} + + +G4eCrossSectionScreenedRutherford::~G4eCrossSectionScreenedRutherford() +{ } + + +G4double G4eCrossSectionScreenedRutherford::CrossSection(const G4Track& track) +{ + const G4DynamicParticle* particle = track.GetDynamicParticle(); + G4double k = particle->GetKineticEnergy(); + + // Cross section = 0 outside the energy validity limits set in the constructor + // ---- MGP ---- Better handling of these limits to be set in a following design iteration + + G4double screenedCrossSection = 0.; + + if (k > lowEnergyLimit && k < highEnergyLimit) + { + // G4Material* material = track.GetMaterial(); + + // Assume that the material is water; proper algorithm to calculate z correctly for any material to be inserted here + // For H20 Z = 10 (total number of electrons) + G4double z = 10.; + + G4double n = ScreeningFactor(k,z); + G4double crossSection = RutherfordCrossSection(k, z); + screenedCrossSection = pi * crossSection / (n * (n + 1.)); + } + + return screenedCrossSection; +} + +G4double G4eCrossSectionScreenedRutherford::RutherfordCrossSection(G4double k, G4double z) +{ + // + // e^4 / K + m_e c^2 \^2 + // sigma_Ruth(K) = Z (Z+1) -------------------- | --------------------- | + // (4 pi epsilon_0)^2 \ K * (K + 2 m_e c^2) / + // + // Where K is the electron non-relativistic kinetic energy + // + // NIM 155, pp. 145-156, 1978 + + G4double length =(e_squared * (k + electron_mass_c2)) / (4 * pi *epsilon0 * k * ( k + 2 * electron_mass_c2)); + G4double cross = z * ( z + 1) * length * length; + + return cross; +} + +//G4bool G4eCrossSectionScreenedRutherford::IsApplicable(const G4ParticleDefinition& particle) +//{ +// return ( &particle == G4Electron::Electron() ); +//} + + +G4double G4eCrossSectionScreenedRutherford::ScreeningFactor(G4double k, G4double z) +{ + // + // alpha_1 + beta_1 ln(K/eV) constK Z^(2/3) + // n(T) = -------------------------- ----------------- + // K/(m_e c^2) 2 + K/(m_e c^2) + // + // Where K is the electron non-relativistic kinetic energy + // + // n(T) > 0 for T < ~ 400 MeV + // + // NIM 155, pp. 145-156, 1978 + // Formulae (2) and (5) + + const G4double alpha_1(1.64); + const G4double beta_1(-0.0825); + const G4double constK(1.7E-5); + + G4double numerator = (alpha_1 + beta_1 * std::log(k/eV)) * constK * std::pow(z, 2./3.); + + k /= electron_mass_c2; + + G4double denominator = k * (2 + k); + + G4double value = 0.; + if (denominator > 0.) value = numerator / denominator; + + return value; + +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4eIonisationCrossSectionHandler.cc b/source/processes/electromagnetic/lowenergy/src/G4eIonisationCrossSectionHandler.cc index b4c2bce8da..99c40b2299 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4eIonisationCrossSectionHandler.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4eIonisationCrossSectionHandler.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eIonisationCrossSectionHandler.cc,v 1.11 2006/06/29 19:42:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/lowenergy/src/G4eIonisationParameters.cc b/source/processes/electromagnetic/lowenergy/src/G4eIonisationParameters.cc index c2365cf597..cacb2224aa 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4eIonisationParameters.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4eIonisationParameters.cc @@ -25,7 +25,7 @@ // // // $Id: G4eIonisationParameters.cc,v 1.23 2006/06/29 19:42:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/src/G4eIonisationSpectrum.cc b/source/processes/electromagnetic/lowenergy/src/G4eIonisationSpectrum.cc index 0aecb11904..3dfa02e5a2 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4eIonisationSpectrum.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4eIonisationSpectrum.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eIonisationSpectrum.cc,v 1.25 2006/06/29 19:42:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/lowenergy/src/G4eLowEnergyLoss.cc b/source/processes/electromagnetic/lowenergy/src/G4eLowEnergyLoss.cc index c0479a31a9..026b9aa7d5 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4eLowEnergyLoss.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4eLowEnergyLoss.cc @@ -25,7 +25,7 @@ // // // $Id: G4eLowEnergyLoss.cc,v 1.35 2006/06/29 19:42:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc b/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc index 2baf5ff112..e92020a4ce 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc @@ -25,7 +25,7 @@ // // // $Id: G4hLowEnergyLoss.cc,v 1.23 2006/06/29 19:42:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExp.cc b/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExp.cc index e8c2db2d63..6e85cc2cec 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExp.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExp.cc @@ -41,7 +41,7 @@ // Empiric Model for shell cross sections in proton ionisation // ------------------------------------------------------------------- // $Id: G4hShellCrossSectionDoubleExp.cc,v 1.8 2006/06/29 19:42:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "globals.hh" #include diff --git a/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExpData.cc b/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExpData.cc index 281ad76c2f..662174762d 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExpData.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExpData.cc @@ -33,7 +33,7 @@ // // ------------------------------------------------------------------- // $Id: G4hShellCrossSectionDoubleExpData.cc,v 1.4 2006/06/29 19:42:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4hShellCrossSectionDoubleExpData.hh" diff --git a/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExp.cc b/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExp.cc index 828977a122..d6599e7fb7 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExp.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExp.cc @@ -41,7 +41,7 @@ // Empiric Model for shell cross sections in proton ionisation // ------------------------------------------------------------------- // $Id: G4hShellCrossSectionExp.cc,v 1.5 2006/06/29 19:42:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "globals.hh" #include diff --git a/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExpData.cc b/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExpData.cc index 93a3947705..d52c27f87a 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExpData.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExpData.cc @@ -33,7 +33,7 @@ // // ------------------------------------------------------------------- // $Id: G4hShellCrossSectionExpData.cc,v 1.3 2006/06/29 19:42:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4hShellCrossSectionExpData.hh" #include diff --git a/source/processes/electromagnetic/muons/History b/source/processes/electromagnetic/muons/History index bf52ec8e7f..a7a2cbdc88 100644 --- a/source/processes/electromagnetic/muons/History +++ b/source/processes/electromagnetic/muons/History @@ -1,4 +1,4 @@ -$Id: History,v 1.100 2007/05/29 04:43:31 vnivanch Exp $ +$Id: History,v 1.106 2007/11/12 10:34:23 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,26 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +12 November 07: V.Ivanchenko (emmuons-V09-00-04) +11 November 07: V.Ivanchenko (emmuons-V09-00-03) +G4MuMscModel - fixed computation of transport cross section + +09 November 07: V.Ivanchenko (emmuons-V09-00-02) +- G4MuMultipleScattering, G4MuMscModel - new classes for simulation + of multiple scattering (beta-version) + +08 November 07: V.Ivanchenko (emmuons-V09-00-01) +- G4MuBremsstrahlungModel - updated sampling algorithm to provide + more precise predictions for the tail + of the gamma energy spectra (NA49 problem) +- G4MuBremsstrahlungModel and G4MuPairProductionModel - add ignoreCut + flag, if this flag is "true" both models provide zero dedx and full + cross sections + +28 July 07: V.Ivanchenko (emmuons-V09-00-00) +- G4EnergyLossForExtrapolator - added maxEnergyTransfer parameter + for computation of energy loss (VI) + 29 May 07: V.Ivanchenko (emmuons-V08-03-04) - G4EnergyLossForExtrapolator - added Set methods for first and last bins in tables. Default max value is set to 10 TeV (CMS request) diff --git a/source/processes/electromagnetic/muons/include/G4EnergyLossForExtrapolator.hh b/source/processes/electromagnetic/muons/include/G4EnergyLossForExtrapolator.hh index f2ee8ee067..5b79fda8e8 100644 --- a/source/processes/electromagnetic/muons/include/G4EnergyLossForExtrapolator.hh +++ b/source/processes/electromagnetic/muons/include/G4EnergyLossForExtrapolator.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4EnergyLossForExtrapolator.hh,v 1.8 2007/05/29 04:43:31 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4EnergyLossForExtrapolator.hh,v 1.9 2007/07/28 13:44:25 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -41,6 +41,7 @@ // 21-03-06 Add verbosity defined in the constructor and Initialisation // start only when first public method is called (V.Ivanchenko) // 03-05-06 Remove unused pointer G4Material* from number of methods (VI) +// 28-07-07 Add maxEnergyTransfer for computation of energy loss (VI) // //---------------------------------------------------------------------------- // @@ -104,6 +105,8 @@ public: inline void SetMinKinEnergy(G4double); inline void SetMaxKinEnergy(G4double); + + inline void SetMaxEnergyTransfer(G4double); private: @@ -170,6 +173,8 @@ private: G4double linLossLimit; G4double emin; G4double emax; + G4double maxEnergyTransfer; + G4int nbins; G4int nmat; G4int verbose; @@ -242,7 +247,8 @@ inline G4double G4EnergyLossForExtrapolator::ComputeScatteringAngle(G4double x) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4double G4EnergyLossForExtrapolator::EnergyDispersion(G4double kinEnergy, +inline G4double G4EnergyLossForExtrapolator::EnergyDispersion( + G4double kinEnergy, G4double stepLength, const G4Material* mat, const G4ParticleDefinition* part) @@ -290,5 +296,12 @@ inline void G4EnergyLossForExtrapolator::SetMaxKinEnergy(G4double val) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +inline void G4EnergyLossForExtrapolator::SetMaxEnergyTransfer(G4double val) +{ + maxEnergyTransfer = val; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + #endif diff --git a/source/processes/electromagnetic/muons/include/G4MuBetheBlochModel.hh b/source/processes/electromagnetic/muons/include/G4MuBetheBlochModel.hh index 05720eecbf..28e9e7a8da 100644 --- a/source/processes/electromagnetic/muons/include/G4MuBetheBlochModel.hh +++ b/source/processes/electromagnetic/muons/include/G4MuBetheBlochModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MuBetheBlochModel.hh,v 1.17 2007/05/22 17:35:58 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.hh b/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.hh index 8984db4ed3..a9118d440a 100644 --- a/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.hh +++ b/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MuBremsstrahlung.hh,v 1.29 2007/05/23 08:49:32 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/muons/include/G4MuBremsstrahlungModel.hh b/source/processes/electromagnetic/muons/include/G4MuBremsstrahlungModel.hh index a0a19b4e9c..ebbfff154f 100644 --- a/source/processes/electromagnetic/muons/include/G4MuBremsstrahlungModel.hh +++ b/source/processes/electromagnetic/muons/include/G4MuBremsstrahlungModel.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4MuBremsstrahlungModel.hh,v 1.16 2007/05/22 17:35:58 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4MuBremsstrahlungModel.hh,v 1.17 2007/10/11 09:25:31 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -45,6 +45,7 @@ // 10-02-04 Add lowestKinEnergy (V.Ivanchenko) // 08-04-05 Major optimisation of internal interfaces (V.Ivantchenko) // 13-02-06 add ComputeCrossSectionPerAtom (mma) +// 11-10-07 Add ignoreCut flag (V.Ivanchenko) // // @@ -125,10 +126,14 @@ public: G4double A, G4double gammaEnergy); + inline void SetIgnoreCutFlag(G4bool); + + inline G4bool IgnoreCutFlag() const; + private: G4DataVector* ComputePartialSumSigma(const G4Material* material, - G4double tkin, G4double cut); + G4double tkin, G4double cut); const G4Element* SelectRandomAtom(const G4MaterialCutsCouple* couple) const; @@ -155,6 +160,8 @@ private: G4double ya[1001], proba[5][8][1001]; G4double cutFixed; + G4bool ignoreCut; + std::vector partialSumSigma; G4bool samplingTablesAreFilled; @@ -164,11 +171,25 @@ private: inline G4double G4MuBremsstrahlungModel::MaxSecondaryEnergy( const G4ParticleDefinition*, - G4double kineticEnergy) + G4double kineticEnergy) { return kineticEnergy; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +inline void G4MuBremsstrahlungModel::SetIgnoreCutFlag(G4bool val) +{ + ignoreCut = val; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline G4bool G4MuBremsstrahlungModel::IgnoreCutFlag() const +{ + return ignoreCut; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/source/processes/electromagnetic/muons/include/G4MuIonisation.hh b/source/processes/electromagnetic/muons/include/G4MuIonisation.hh index 0a40b8814c..6fcab8603d 100644 --- a/source/processes/electromagnetic/muons/include/G4MuIonisation.hh +++ b/source/processes/electromagnetic/muons/include/G4MuIonisation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MuIonisation.hh,v 1.30 2007/05/23 08:49:32 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/muons/include/G4MuMscModel.hh b/source/processes/electromagnetic/muons/include/G4MuMscModel.hh new file mode 100644 index 0000000000..84259eb105 --- /dev/null +++ b/source/processes/electromagnetic/muons/include/G4MuMscModel.hh @@ -0,0 +1,256 @@ +// +// ******************************************************************** +// * 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: G4MuMscModel.hh,v 1.4 2007/11/09 19:48:09 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ------------------------------------------------------------------- +// +// +// GEANT4 Class header file +// +// +// File name: G4MuMscModel +// +// Author: V.Ivanchenko on base of L.Urban model +// +// Creation date: 25.10.2007 +// +// Modifications: +// +// +// Class Description: +// +// Implementation of the model of multiple scattering based on +// H.W.Lewis Phys Rev 78 (1950) 526 and L.Urban model + +// ------------------------------------------------------------------- +// + +#ifndef G4MuMscModel_h +#define G4MuMscModel_h 1 + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4eCoulombScatteringModel.hh" +#include "G4PhysicsTable.hh" +#include "G4MscStepLimitType.hh" +#include "G4MaterialCutsCouple.hh" + +class G4LossTableManager; +class G4ParticleChangeForMSC; +class G4SafetyHelper; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class G4MuMscModel : public G4eCoulombScatteringModel +{ + +public: + + G4MuMscModel(G4double frange = 0.2, + G4double thetaMax = 0.04, + G4double tMax = TeV*TeV, + const G4String& nam = "MuMscUni"); + + virtual ~G4MuMscModel(); + + void Initialise(const G4ParticleDefinition*, const G4DataVector&); + + G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*, + G4double KineticEnergy, + G4double AtomicNumber, + G4double AtomicWeight=0., + G4double cut = DBL_MAX, + G4double emax= DBL_MAX); + + void SampleScattering(const G4DynamicParticle*, G4double safety); + + void SampleSecondaries(std::vector*, + const G4MaterialCutsCouple*, + const G4DynamicParticle*, + G4double, + G4double); + + G4double ComputeTruePathLengthLimit(const G4Track& track, + G4PhysicsTable* theLambdaTable, + G4double currentMinimalStep); + + G4double ComputeGeomPathLength(G4double truePathLength); + + G4double ComputeTrueStepLength(G4double geomStepLength); + + inline void SetStepLimitType(G4MscStepLimitType); + + inline void SetLateralDisplasmentFlag(G4bool val); + + inline G4double GetLambda(G4double kinEnergy); + + inline G4double GetLambda2(G4double kinEnergy); + + // inline void SetThetaLimit(G4double); + + inline void SetRangeFactor(G4double); + +private: + + void BuildTables(); + + G4double ComputeLambda2(G4double kinEnergy, G4double cut); + + inline void DefineMaterial(const G4MaterialCutsCouple*); + + // hide assignment operator + G4MuMscModel & operator=(const G4MuMscModel &right); + G4MuMscModel(const G4MuMscModel&); + + G4ParticleChangeForMSC* fParticleChange; + + G4SafetyHelper* safetyHelper; + G4PhysicsTable* theLambdaTable; + G4PhysicsTable* theLambda2Table; + G4LossTableManager* theManager; + const G4DataVector* currentCuts; + + G4double dtrl; + G4double facrange; + G4double thetaLimit; + G4double numlimit; + G4double tlimitminfix; + G4double invsqrt12; + G4double lowBinEnergy; + G4double highBinEnergy; + + // cash + G4double preKinEnergy; + G4double xSection; + G4double ecut; + G4double lambda0; + G4double tPathLength; + G4double zPathLength; + G4double lambdaeff; + G4double currentRange; + G4double par1; + G4double par2; + G4double par3; + + G4int currentMaterialIndex; + + G4int nbins; + G4int nwarnings; + G4int nwarnlimit; + + const G4MaterialCutsCouple* currentCouple; + + G4MscStepLimitType steppingAlgorithm; + + G4bool samplez; + G4bool latDisplasment; + G4bool isInitialized; + G4bool buildTables; + G4bool newrun; + G4bool inside; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +void G4MuMscModel::SetLateralDisplasmentFlag(G4bool val) +{ + latDisplasment = val; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +/* +inline +void G4MuMscModel::SetThetaLimit(G4double val) +{ + thetaLimit = val; +} +*/ +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +void G4MuMscModel::SetRangeFactor(G4double val) +{ + facrange = val; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +void G4MuMscModel::SetStepLimitType(G4MscStepLimitType val) +{ + steppingAlgorithm = val; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +void G4MuMscModel::DefineMaterial(const G4MaterialCutsCouple* cup) +{ + if(cup != currentCouple) { + currentCouple = cup; + currentMaterialIndex = currentCouple->GetIndex(); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +G4double G4MuMscModel::GetLambda(G4double e) +{ + G4double x; + if(theLambdaTable) { + G4bool b; + x = ((*theLambdaTable)[currentMaterialIndex])->GetValue(e, b); + } else { + x = CrossSection(currentCouple,particle,e); + } + if(x > DBL_MIN) x = 1./x; + else x = DBL_MAX; + return x; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +G4double G4MuMscModel::GetLambda2(G4double e) +{ + G4double x; + if(theLambda2Table) { + G4bool b; + x = ((*theLambda2Table)[currentMaterialIndex])->GetValue(e, b); + } else { + x = ComputeLambda2(e, (*currentCuts)[currentMaterialIndex]); + } + return x; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/source/processes/electromagnetic/muons/include/G4MuMultipleScattering.hh b/source/processes/electromagnetic/muons/include/G4MuMultipleScattering.hh new file mode 100644 index 0000000000..1ba31cbafc --- /dev/null +++ b/source/processes/electromagnetic/muons/include/G4MuMultipleScattering.hh @@ -0,0 +1,108 @@ +// +// ******************************************************************** +// * 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: G4MuMultipleScattering.hh,v 1.1 2007/10/26 09:52:37 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ----------------------------------------------------------------------------- +// +// GEANT4 Class header file +// +// File name: G4MuMultipleScattering +// +// Author: V.Ivanchenko using Laszlo Urban original code +// +// Creation date: 24.10.2007 cloned from G4MultipleScattering by VI +// +// Modifications: +// 20.03.07 Remove local parameter skin (V.Ivanchenko) +// +// +//------------------------------------------------------------------------------ + +// class description +// +// The class simulates the multiple scattering for any kind +// of charged particle. +// +// class description - end + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#ifndef G4MuMultipleScattering_h +#define G4MuMultipleScattering_h 1 + +#include "G4VMultipleScattering.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class G4MuMscModel; + +class G4MuMultipleScattering : public G4VMultipleScattering + +{ +public: // with description + + G4MuMultipleScattering(G4double tet = 0.2, + const G4String& processName="muMsc"); + + virtual ~G4MuMultipleScattering(); + + // returns true for charged particles, false otherwise + G4bool IsApplicable (const G4ParticleDefinition& p); + + // Print few lines of informations about the process: validity range, + void PrintInfo(); + + // geom. step length distribution should be sampled or not + void Setsamplez(G4bool value) { samplez = value;}; + + // to reduce the energy/step dependence + void Setdtrl(G4double value) { dtrl = value;}; + + // 'soften' step limitation above lambdalimit + void SetLimitTheta(G4double value) { thetaLimit = value;}; + +protected: + + // This function initialise models + void InitialiseProcess(const G4ParticleDefinition*); + +private: // data members + + G4MuMscModel* mscModel; + + G4double thetaLimit; + G4double dtrl; + + G4bool samplez; + G4bool isInitialized; + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif diff --git a/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh b/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh index de16e875b4..9c4f4b2c88 100644 --- a/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh +++ b/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MuPairProduction.hh,v 1.29 2007/05/23 08:49:32 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/muons/include/G4MuPairProductionModel.hh b/source/processes/electromagnetic/muons/include/G4MuPairProductionModel.hh index 79604c68c3..62ed11646d 100644 --- a/source/processes/electromagnetic/muons/include/G4MuPairProductionModel.hh +++ b/source/processes/electromagnetic/muons/include/G4MuPairProductionModel.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4MuPairProductionModel.hh,v 1.22 2007/05/22 17:35:58 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4MuPairProductionModel.hh,v 1.24 2007/10/11 13:52:03 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -46,6 +46,7 @@ // 10-02-04 Add lowestKinEnergy (V.Ivanchenko) // 13-02-06 Add ComputeCrossSectionPerAtom (mma) // 12-05-06 Add parameter to SelectRandomAtom (A.Bogdanov) +// 11-10-07 Add ignoreCut flag (V.Ivanchenko) // // Class Description: @@ -64,6 +65,7 @@ class G4Element; class G4ParticleChangeForLoss; +class G4ParticleChangeForGamma; class G4MuPairProductionModel : public G4VEmModel { @@ -71,7 +73,7 @@ class G4MuPairProductionModel : public G4VEmModel public: G4MuPairProductionModel(const G4ParticleDefinition* p = 0, - const G4String& nam = "MuPairProd"); + const G4String& nam = "muPairProd"); virtual ~G4MuPairProductionModel(); @@ -110,8 +112,8 @@ public: protected: - G4double MaxSecondaryEnergy(const G4ParticleDefinition*, - G4double kineticEnergy); + inline G4double MaxSecondaryEnergy(const G4ParticleDefinition*, + G4double kineticEnergy); public: @@ -127,17 +129,25 @@ public: G4double Z, G4double pairEnergy); + inline void SetIgnoreCutFlag(G4bool); + + inline G4bool IgnoreCutFlag() const; + private: - const G4Element* SelectRandomAtom(G4double kinEnergy, G4double dt, G4int it, - const G4MaterialCutsCouple* couple, G4double tmin); + const G4Element* SelectRandomAtom(G4double kinEnergy, + G4double dt, + G4int it, + const G4MaterialCutsCouple* couple, + G4double tmin); void MakeSamplingTables(); void SetCurrentElement(G4double Z); - G4double InterpolatedIntegralCrossSection(G4double dt, G4double dz, G4int iz, - G4int it, G4int iy, G4double z); + inline G4double InterpolatedIntegralCrossSection( + G4double dt, G4double dz, G4int iz, + G4int it, G4int iy, G4double z); // hide assignment operator G4MuPairProductionModel & operator=(const G4MuPairProductionModel &right); @@ -146,6 +156,7 @@ private: G4ParticleDefinition* theElectron; G4ParticleDefinition* thePositron; G4ParticleChangeForLoss* fParticleChange; + G4ParticleChangeForGamma* gParticleChange; G4double minPairEnergy; G4double lowestKinEnergy; @@ -172,6 +183,8 @@ private: G4double ymax; G4double dy; + G4bool ignoreCut; + G4bool samplingTablesAreFilled; std::vector partialSum; }; @@ -215,4 +228,18 @@ inline G4double G4MuPairProductionModel::InterpolatedIntegralCrossSection( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +inline void G4MuPairProductionModel::SetIgnoreCutFlag(G4bool val) +{ + ignoreCut = val; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline G4bool G4MuPairProductionModel::IgnoreCutFlag() const +{ + return ignoreCut; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/source/processes/electromagnetic/muons/src/G4EnergyLossForExtrapolator.cc b/source/processes/electromagnetic/muons/src/G4EnergyLossForExtrapolator.cc index fc492113d9..6680113254 100644 --- a/source/processes/electromagnetic/muons/src/G4EnergyLossForExtrapolator.cc +++ b/source/processes/electromagnetic/muons/src/G4EnergyLossForExtrapolator.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4EnergyLossForExtrapolator.cc,v 1.12 2007/05/29 04:43:31 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4EnergyLossForExtrapolator.cc,v 1.13 2007/07/28 13:44:25 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // @@ -70,7 +70,7 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4EnergyLossForExtrapolator::G4EnergyLossForExtrapolator(G4int verb) - :verbose(verb),isInitialised(false) + :maxEnergyTransfer(DBL_MAX),verbose(verb),isInitialised(false) {} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -179,6 +179,7 @@ G4double G4EnergyLossForExtrapolator::ComputeTrueStep(const G4Material* mat, G4double r = electron_mass_c2/mass; tmax = 2.0*bg2*electron_mass_c2/(1.0 + 2.0*gam*r + r*r); } + if(tmax > maxEnergyTransfer) tmax = maxEnergyTransfer; } G4double theta = ComputeScatteringAngle(stepLength); return stepLength*std::sqrt(1.0 + 0.625*theta*theta); diff --git a/source/processes/electromagnetic/muons/src/G4MuBetheBlochModel.cc b/source/processes/electromagnetic/muons/src/G4MuBetheBlochModel.cc index 6a86e4afcf..b46dda6bc4 100644 --- a/source/processes/electromagnetic/muons/src/G4MuBetheBlochModel.cc +++ b/source/processes/electromagnetic/muons/src/G4MuBetheBlochModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MuBetheBlochModel.cc,v 1.23 2007/05/22 17:35:58 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc b/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc index 51c0ca6a81..34c04adf38 100644 --- a/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc +++ b/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MuBremsstrahlung.cc,v 1.38 2007/05/22 17:35:58 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/muons/src/G4MuBremsstrahlungModel.cc b/source/processes/electromagnetic/muons/src/G4MuBremsstrahlungModel.cc index ca670d445f..4c12a331e6 100644 --- a/source/processes/electromagnetic/muons/src/G4MuBremsstrahlungModel.cc +++ b/source/processes/electromagnetic/muons/src/G4MuBremsstrahlungModel.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4MuBremsstrahlungModel.cc,v 1.22 2007/05/22 17:35:58 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4MuBremsstrahlungModel.cc,v 1.24 2007/11/08 11:48:28 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -49,6 +49,7 @@ // 03-08-05 Angular correlations according to PRM (V.Ivantchenko) // 13-02-06 add ComputeCrossSectionPerAtom (mma) // 21-03-06 Fix problem of initialisation in case when cuts are not defined (VI) +// 07-11-07 Improve sampling of final state (A.Bogdanov) // // @@ -87,17 +88,17 @@ using namespace std; G4MuBremsstrahlungModel::G4MuBremsstrahlungModel(const G4ParticleDefinition* p, const G4String& nam) : G4VEmModel(nam), - particle(0), - lowestKinEnergy(1.0*GeV), - minThreshold(1.0*keV), - nzdat(5), - ntdat(8), - NBIN(1000), - cutFixed(0.98*keV), - samplingTablesAreFilled(false) + particle(0), + lowestKinEnergy(1.0*GeV), + minThreshold(1.0*keV), + nzdat(5), + ntdat(8), + NBIN(1000), + cutFixed(0.98*keV), + ignoreCut(false), + samplingTablesAreFilled(false) { theGamma = G4Gamma::Gamma(); - if(p) SetParticle(p); } @@ -141,7 +142,6 @@ void G4MuBremsstrahlungModel::Initialise(const G4ParticleDefinition* p, highKinEnergy = HighEnergyLimit(); G4double fixedEnergy = 0.5*highKinEnergy; -// G4double fixedEnergy = 500000.*TeV; const G4ProductionCutsTable* theCoupleTable= G4ProductionCutsTable::GetProductionCutsTable(); @@ -161,8 +161,9 @@ void G4MuBremsstrahlungModel::Initialise(const G4ParticleDefinition* p, for (G4int i=0; iGetMaterialCutsCouple(i); + theCoupleTable->GetMaterialCutsCouple(i); const G4Material* material = couple->GetMaterial(); G4DataVector* dv = ComputePartialSumSigma(material,fixedEnergy,cute); partialSumSigma.push_back(dv); @@ -171,8 +172,8 @@ void G4MuBremsstrahlungModel::Initialise(const G4ParticleDefinition* p, } if(!samplingTablesAreFilled) MakeSamplingTables(); if(pParticleChange) - fParticleChange = reinterpret_cast - (pParticleChange); + fParticleChange = + reinterpret_cast(pParticleChange); else fParticleChange = new G4ParticleChangeForLoss(); } @@ -186,10 +187,11 @@ G4double G4MuBremsstrahlungModel::ComputeDEDXPerVolume( G4double cutEnergy) { G4double dedx = 0.0; - if (kineticEnergy <= lowestKinEnergy) return dedx; + if (kineticEnergy <= lowestKinEnergy || ignoreCut) return dedx; G4double tmax = kineticEnergy; G4double cut = min(cutEnergy,tmax); + if(cut < cutFixed) cut = cutFixed; const G4ElementVector* theElementVector = material->GetElementVector(); const G4double* theAtomicNumDensityVector = @@ -360,8 +362,10 @@ G4double G4MuBremsstrahlungModel::ComputeCrossSectionPerAtom( G4double cutEnergy, G4double) { - G4double cross = ComputeMicroscopicCrossSection (kineticEnergy, - Z, A/(g/mole), cutEnergy); + G4double cut = min(cutEnergy, kineticEnergy); + if(cut < cutFixed || ignoreCut) cut = cutFixed; + G4double cross = + ComputeMicroscopicCrossSection (kineticEnergy, Z, A/(g/mole), cut); return cross; } @@ -379,6 +383,7 @@ G4double G4MuBremsstrahlungModel::CrossSectionPerVolume( G4double tmax = min(maxEnergy, kineticEnergy); G4double cut = min(cutEnergy, tmax); + if(cut < cutFixed || ignoreCut) cut = cutFixed; const G4ElementVector* theElementVector = material->GetElementVector(); const G4double* theAtomNumDensityVector = @@ -500,17 +505,18 @@ void G4MuBremsstrahlungModel::MakeSamplingTables() void G4MuBremsstrahlungModel::SampleSecondaries(std::vector* vdp, const G4MaterialCutsCouple* couple, const G4DynamicParticle* dp, - G4double tmin, + G4double minEnergy, G4double maxEnergy) { - G4double kineticEnergy = dp->GetKineticEnergy(); // check against insufficient energy G4double tmax = min(kineticEnergy, maxEnergy); + G4double tmin = min(kineticEnergy, minEnergy); + if(tmin < cutFixed || ignoreCut) tmin = cutFixed; if(tmin >= tmax) return; - static const G4double ysmall = -100. ; - static const G4double ytablelow = -5. ; + // ===== the begining of a new code ====== + // ===== sampling of energy transfer ====== G4ParticleMomentum partDirection = dp->GetMomentumDirection(); @@ -520,81 +526,37 @@ void G4MuBremsstrahlungModel::SampleSecondaries(std::vector* G4double totalEnergy = kineticEnergy + mass; G4double totalMomentum = sqrt(kineticEnergy*(kineticEnergy + 2.0*mass)); - G4double dy = 5./G4float(NBIN); + G4double AtomicNumber = anElement->GetZ(); + G4double AtomicWeight = anElement->GetA()/(g/mole); - // This sampling should be checked!!! VI - G4double ymin=log(log(tmin/cutFixed)/log(tmax/cutFixed)); + G4double func1 = tmin*ComputeDMicroscopicCrossSection( + kineticEnergy,AtomicNumber, + AtomicWeight,tmin); - if(ymin < ysmall) return; - - // sampling using tables - - G4double v,x,y ; - G4int iy; - // select sampling table ; - G4double lnZ = log(anElement->GetZ()) ; - G4double delmin = 1.e10 ; - G4double del ; - G4int izz = 0; - G4int itt = 0; - G4int NBINminus1; - NBINminus1 = NBIN-1 ; - for (G4int iz=0; iz (proba[izz][itt][iy]-proba[izz][itt][iymin])/delmin) - &&(iy < NBINminus1)) ; + } while(func2/func1 < ksi2); - //sampling is Done uniformly in y in the bin - y = ya[iy] + G4UniformRand() * ( ya[iy+1] - ya[iy] ) ; - } - - x = exp(y) ; - - v = cutFixed*exp(x*log(tmax/cutFixed)) ; - - } while ( v <= 0.); + // ===== the end of a new code ===== // create G4DynamicParticle object for the Gamma - G4double gEnergy = v; + G4double gEnergy = epksi; // sample angle G4double gam = totalEnergy/mass; G4double rmax = gam*min(1.0, totalEnergy/gEnergy - 1.0); rmax *= rmax; - x = G4UniformRand()*rmax/(1.0 + rmax); + G4double x = G4UniformRand()*rmax/(1.0 + rmax); G4double theta = sqrt(x/(1.0 - x))/gam; G4double sint = sin(theta); diff --git a/source/processes/electromagnetic/muons/src/G4MuIonisation.cc b/source/processes/electromagnetic/muons/src/G4MuIonisation.cc index 18f93c8b74..e2d3c48ebc 100644 --- a/source/processes/electromagnetic/muons/src/G4MuIonisation.cc +++ b/source/processes/electromagnetic/muons/src/G4MuIonisation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MuIonisation.cc,v 1.54 2007/05/22 17:35:58 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/muons/src/G4MuMscModel.cc b/source/processes/electromagnetic/muons/src/G4MuMscModel.cc new file mode 100644 index 0000000000..895d790821 --- /dev/null +++ b/source/processes/electromagnetic/muons/src/G4MuMscModel.cc @@ -0,0 +1,571 @@ +// +// ******************************************************************** +// * 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: G4MuMscModel.cc,v 1.6 2007/11/11 17:40:48 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4MuMscModel +// +// Author: Laszlo Mu +// +// Creation date: 03.03.2001 +// +// Modifications: +// +// 27-03-03 Move model part from G4MultipleScattering80 (V.Ivanchenko) +// + +// Class Description: +// +// Implementation of the model of multiple scattering based on +// H.W.Lewis Phys Rev 78 (1950) 526 and others + +// ------------------------------------------------------------------- +// + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4MuMscModel.hh" +#include "Randomize.hh" +#include "G4Electron.hh" +#include "G4LossTableManager.hh" +#include "G4ParticleChangeForMSC.hh" +#include "G4TransportationManager.hh" +#include "G4SafetyHelper.hh" +#include "G4eCoulombScatteringModel.hh" +#include "G4PhysicsTableHelper.hh" +#include "G4ElementVector.hh" +#include "G4ProductionCutsTable.hh" +#include "G4PhysicsLogVector.hh" +//#include "G4Poisson.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +using namespace std; + +G4MuMscModel::G4MuMscModel(G4double frange, + G4double thetaMax, + G4double tMax, + const G4String& nam) + : G4eCoulombScatteringModel(0.0,thetaMax,false,tMax,nam), + theLambdaTable(0), + theLambda2Table(0), + dtrl(0.05), + facrange(frange), + thetaLimit(thetaMax), + numlimit(0.2), + lowBinEnergy(keV), + highBinEnergy(PeV), + nbins(60), + nwarnings(0), + nwarnlimit(50), + currentCouple(0), + isInitialized(false), + buildTables(true), + newrun(true), + inside(false) +{ + invsqrt12 = 1./sqrt(12.); + tlimitminfix = 1.e-6*mm; + theManager = G4LossTableManager::Instance(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4MuMscModel::~G4MuMscModel() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4MuMscModel::Initialise(const G4ParticleDefinition* p, + const G4DataVector& cuts) +{ + SetupParticle(p); + newrun = true; + xSection = currentRange = targetZ = ecut = tkin = 0.0; + // set values of some data members + if(!isInitialized) { + isInitialized = true; + if(p->GetParticleName() == "GenericIon") buildTables = false; + + if (pParticleChange) + fParticleChange = reinterpret_cast(pParticleChange); + else + fParticleChange = new G4ParticleChangeForMSC(); + + safetyHelper = G4TransportationManager::GetTransportationManager() + ->GetSafetyHelper(); + safetyHelper->InitialiseHelper(); + } + G4eCoulombScatteringModel::Initialise(p, cuts); + currentCuts = &cuts; + if(buildTables) + theLambda2Table = G4PhysicsTableHelper::PreparePhysicsTable(theLambda2Table); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4MuMscModel::BuildTables() +{ + //G4cout << "G4MuMscModel::BuildTables flags newrun= " << newrun + // << " buildTables= " << buildTables << G4endl; + newrun = false; + if(!buildTables) return; + + // Access to materials + const G4ProductionCutsTable* theCoupleTable= + G4ProductionCutsTable::GetProductionCutsTable(); + size_t numOfCouples = theCoupleTable->GetTableSize(); + G4double e, s, cut; + + for(size_t i=0; iGetFlag(i)) { + + // create physics vector and fill it + DefineMaterial(theCoupleTable->GetMaterialCutsCouple(i)); + cut = (*currentCuts)[currentMaterialIndex]; + G4PhysicsVector* aVector = + new G4PhysicsLogVector(lowBinEnergy, highBinEnergy, nbins); + for(G4int j=0; jGetLowEdgeEnergy(j); + s = ComputeLambda2(e, cut); + //G4cout << j << " " << currentCouple->GetMaterial()->GetName() + // << " e(MeV)= " << e << " cut(MeV)= " << cut + // << " L2= " << s << G4endl; + aVector->PutValue(j, s); + } + + G4PhysicsTableHelper::SetPhysicsVector(theLambda2Table, i, aVector); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4MuMscModel::ComputeCrossSectionPerAtom( + const G4ParticleDefinition* p, + G4double kinEnergy, + G4double Z, G4double A, + G4double cutEnergy, G4double) +{ + if(p == particle && kinEnergy == tkin && Z == targetZ && + cutEnergy == ecut) return xSection; + ecut = cutEnergy; + xSection = 0.0; + SetupParticle(p); + G4double ekin = std::max(keV, kinEnergy); + SetupTarget(Z, A, ekin); + + G4double tmax = tkin; + if(p == theElectron) tmax *= 0.5; + else if(p != thePositron) { + G4double ratio = electron_mass_c2/mass; + tmax = 2.0*mom2/ + (electron_mass_c2*(1.0 + ratio*(tkin/mass + 1.0) + ratio*ratio)); + } + G4double t = std::min(cutEnergy, tmax); + G4double mom21 = t*(t + 2.0*electron_mass_c2); + t = tkin - t; + G4double mom22 = t*(t + 2.0*mass); + cosTetMaxElec = (mom2 + mom22 - mom21)*0.5/sqrt(mom2*mom22); + if(cosTetMaxElec < cosTetMaxNuc) cosTetMaxElec = cosTetMaxNuc; + + if(cosTetMaxElec < 1.0) { + G4double x2 = screenZ/(1.0 - cosTetMaxElec + screenZ); + xSection += (x2 - 1.0 - log(x2))/Z; + } + // G4cout << "cut= " << ecut << " e= " << tkin << " croosE= " + // << xSection/barn << G4endl; + + if(cosTetMaxNuc < 1.0) { + G4double x1 = screenZ*formfactA; + G4double x2 = 1.0 - cosTetMaxNuc + screenZ; + G4double x3 = 1.0 - x1; + G4double x4 = 1.0/(formfactA*x2 + x3); + G4double x5 = screenZ/x2; + xSection += ((1.0 - 2.0*x1/x3)*log(x4/x5) - 1.0 + + x5 - (1.0 - 4.0*x1)*(1.0 - x4))/(x3*x3); + } + xSection *= coeff*Z*Z*chargeSquare*invbeta2/mom2; + // G4cout << " croosE= " << xSection/barn << " screenZ= " + // << screenZ << " formF= " << formfactA << G4endl; + return xSection; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4MuMscModel::ComputeLambda2(G4double kinEnergy, + G4double cutEnergy) +{ + G4double res = 0.0; + SetupParticle(particle); + G4double ekin = std::max(keV, kinEnergy); + + const G4Material* mat = currentCouple->GetMaterial(); + const G4ElementVector* theElementVector = mat->GetElementVector(); + const G4double* theAtomNumDensityVector = mat->GetVecNbOfAtomsPerVolume(); + size_t nelm = mat->GetNumberOfElements(); + + SetupKinematic(ekin); + + G4double tmax = tkin; + if(particle == theElectron) tmax *= 0.5; + else if(particle != thePositron) { + G4double ratio = electron_mass_c2/mass; + tmax = 2.0*mom2/ + (electron_mass_c2*(1.0 + ratio*(tkin/mass + 1.0) + ratio*ratio)); + } + G4double t = std::min(cutEnergy, tmax); + G4double mom21 = t*(t + 2.0*electron_mass_c2); + t = tkin - t; + G4double mom22 = t*(t + 2.0*mass); + cosTetMaxElec = (mom2 + mom22 - mom21)*0.5/sqrt(mom2*mom22); + if(cosTetMaxElec < 0.0) cosTetMaxElec = 0.0; + + G4double x, x1, x2, y; + + for (size_t i=0; iGetZ(); + SetupTarget(Z, elm->GetN(), tkin); + G4double s = 0.0; + G4double costm = cosTetMaxElec; + if(costm < cosTetMaxNuc) costm = cosTetMaxNuc; + if(costm < 1.0) { + x = 1.0 - costm + screenZ; + y = (x - screenZ*(screenZ/x + 2.0*log(x/screenZ)))/Z; + if(y < 0.0) { + nwarnings++; + if(nwarnings < nwarnlimit) + G4cout << "Electron scattering <0 for L2 " << y << G4endl; + y = 0.0; + } + s += y; + } + // G4cout << "cut= " << cut << " e= " << tkin << " croosE= " + // << xSection/barn << G4endl; + + // limit main integral because of nuclear size effect + + if(cosTetMaxNuc < 1.0) { + x1 = screenZ*formfactA; + x2 = 1.0 - cosTetMaxNuc + screenZ; + G4double x3 = 1.0 - x1; + G4double f = 1.0/formfactA; + G4double d = f - screenZ; + G4double x4 = f/(x2 + d); + G4double x5 = screenZ/x2; + y = (screenZ*(1.0 - x5) + (d*d - screenZ*(2.0*d - 3.0*screenZ))*(1.0 - x4)/f - + 2.0*screenZ*f*log(x4/x5)/d)/(x3*x3); + if(y < 0.0) { + nwarnings++; + if(nwarnings < nwarnlimit) + G4cout << "Nuclear scattering <0 for L2 " << y << G4endl; + y = 0.0; + } + s += y; + } + + res += Z*Z*s*theAtomNumDensityVector[i]; + } + res *= 0.25*coeff*chargeSquare*invbeta2/mom2; + // G4cout << " croosE= " << xSection/barn << " screenZ= " + // << screenZ << " formF= " << formfactA << G4endl; + return res; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4MuMscModel::ComputeTruePathLengthLimit( + const G4Track& track, + G4PhysicsTable* theTable, + G4double currentMinimalStep) +{ + G4double tlimit = currentMinimalStep; + const G4DynamicParticle* dp = track.GetDynamicParticle(); + + // initialisation for 1st step + if(track.GetCurrentStepNumber() == 1) { + inside = false; + SetupParticle(dp->GetDefinition()); + theLambdaTable = theTable; + if(newrun && buildTables) BuildTables(); + } + + // initialisation for each step + preKinEnergy = dp->GetKineticEnergy(); + DefineMaterial(track.GetMaterialCutsCouple()); + lambda0 = GetLambda(preKinEnergy); + currentRange = + theManager->GetRangeFromRestricteDEDX(particle,preKinEnergy,currentCouple); + + // extra check for abnormal situation + // this check needed to run MSC with eIoni and eBrem inactivated + if(tlimit > currentRange) tlimit = currentRange; + + // stop here if small range particle + if(inside) return tlimit; + + // pre step + G4StepPoint* sp = track.GetStep()->GetPreStepPoint(); + G4StepStatus stepStatus = sp->GetStepStatus(); + G4double presafety = sp->GetSafety(); + + // compute presafety again if presafety <= 0 and no boundary + // i.e. when it is needed for optimization purposes + if(stepStatus != fGeomBoundary && presafety < tlimitminfix) + presafety = safetyHelper->ComputeSafety(sp->GetPosition()); + + // G4cout << "G4MuMscModel::ComputeTruePathLengthLimit tlimit= " + // <= " << x1 << " sqrt()= " << sqrt(x2) + << " x3= " << x3 + << G4endl; + x3 = std::min(1.0/y1,0.16666); + } + G4double x4 = 0.25*(3.0*x3 + sqrt(x3*(x3 + 8.0)))/(1.0 - x3); + */ + + G4double x = G4UniformRand(); + G4double z; + + //if(x < y1) z = x1*pow(x/y1,x4); + //else z = 1.0 - y1*pow((1.0 - x)/x1,x4); + + z = -x1*log(x); + + G4double cost = 1.0 - 2.0*z; + if(cost < -1.0) cost = -1.0; + else if(cost > 1.0) cost = 1.0; + G4double sint = sqrt((1.0 - cost)*(1.0 + cost)); + + G4double phi = twopi*G4UniformRand(); + + G4double dirx = sint*cos(phi); + G4double diry = sint*sin(phi); + + // G4cout << "G4MuMscModel::SampleSecondaries: tstep(mm)= " << truestep/mm + // << " lambdaeff= " << lambdaeff + // << " rms= " << rms << G4endl; + + G4ThreeVector oldDirection = dynParticle->GetMomentumDirection(); + G4ThreeVector newDirection(dirx,diry,cost); + newDirection.rotateUz(oldDirection); + fParticleChange->ProposeMomentumDirection(newDirection); + + if (latDisplasment && safety > tlimitminfix) { + G4double rms= sqrt(2.0*x1); + G4double rx = zPathLength*(0.5*dirx + invsqrt12*G4RandGauss::shoot(0.0,rms)); + G4double ry = zPathLength*(0.5*diry + invsqrt12*G4RandGauss::shoot(0.0,rms)); + G4double r = sqrt(rx*rx + ry*ry); +/* + G4cout << "G4MuMscModel::SampleSecondaries: e(MeV)= " << kineticEnergy + << " sinTheta= " << sth << " r(mm)= " << r + << " trueStep(mm)= " << truestep + << " geomStep(mm)= " << zPathLength + << G4endl; +*/ + + G4ThreeVector latDirection(rx,ry,0.0); + latDirection.rotateUz(oldDirection); + + G4ThreeVector Position = *(fParticleChange->GetProposedPosition()); + G4double fac = 1.; + if(r > safety) { + // ******* so safety is computed at boundary too ************ + G4double newsafety = safetyHelper->ComputeSafety(Position); + if(r > newsafety) + fac = newsafety/r ; + } + + if(fac > 0.) { + // compute new endpoint of the Step + G4ThreeVector newPosition = Position+fac*r*latDirection; + + // definitely not on boundary + if(1. == fac) { + safetyHelper->ReLocateWithinVolume(newPosition); + + } else { + // check safety after displacement + G4double postsafety = safetyHelper->ComputeSafety(newPosition); + + // displacement to boundary + if(postsafety <= 0.0) { + safetyHelper->Locate(newPosition, newDirection); + + // not on the boundary + } else { + safetyHelper->ReLocateWithinVolume(newPosition); + } + } + fParticleChange->ProposePosition(newPosition); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4MuMscModel::SampleSecondaries(std::vector*, + const G4MaterialCutsCouple*, + const G4DynamicParticle*, + G4double, + G4double) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/muons/src/G4MuMultipleScattering.cc b/source/processes/electromagnetic/muons/src/G4MuMultipleScattering.cc new file mode 100644 index 0000000000..28a9551827 --- /dev/null +++ b/source/processes/electromagnetic/muons/src/G4MuMultipleScattering.cc @@ -0,0 +1,121 @@ +// +// ******************************************************************** +// * 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: G4MuMultipleScattering.cc,v 1.3 2007/11/09 19:48:10 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ----------------------------------------------------------------------------- +// +// GEANT4 Class file +// +// File name: G4MuMultipleScattering +// +// Author: Laszlo Urban +// +// Creation date: 24.10.2006 cloned from G4MultipleScattering +// +// Modified: +// 12-02-07 skin can be changed via UI command (VI) +// 20.03.07 Remove local parameter skin, set facgeom=0.1(V.Ivanchenko) +// +// ----------------------------------------------------------------------------- +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4MuMultipleScattering.hh" +#include "G4MuMscModel.hh" +#include "G4MscStepLimitType.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +using namespace std; + +G4MuMultipleScattering::G4MuMultipleScattering(G4double tet, + const G4String& processName) + : G4VMultipleScattering(processName), thetaLimit(tet) +{ + dtrl = 0.05; + samplez = false ; + isInitialized = false; + SetRangeFactor(0.04); + SetLateralDisplasmentFlag(true); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4MuMultipleScattering::~G4MuMultipleScattering() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4MuMultipleScattering::IsApplicable (const G4ParticleDefinition& p) +{ + return (p.GetPDGCharge() != 0.0 && !p.IsShortLived()); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4MuMultipleScattering::InitialiseProcess(const G4ParticleDefinition* p) +{ + // Modification of parameters between runs + if(isInitialized) { + + if (p->GetParticleType() != "nucleus") { + mscModel->SetStepLimitType(StepLimitType()); + mscModel->SetLateralDisplasmentFlag(LateralDisplasmentFlag()); + //mscModel->SetThetaLimit(thetaLimit); + mscModel->SetRangeFactor(RangeFactor()); + } + return; + } + + if (p->GetParticleType() == "nucleus") { + SetLateralDisplasmentFlag(false); + SetBuildLambdaTable(false); + // SetRangeFactor(0.2); + } + + // initialisation of parameters + // G4String part_name = p->GetParticleName(); + mscModel = new G4MuMscModel(RangeFactor(),thetaLimit); + mscModel->SetLateralDisplasmentFlag(LateralDisplasmentFlag()); + + AddEmModel(1,mscModel); + isInitialized = true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4MuMultipleScattering::PrintInfo() +{ + G4cout << " Boundary/stepping algorithm is active with RangeFactor= " + << RangeFactor() + << " Step limit type " << StepLimitType() + << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc b/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc index 5d9b753e87..2a03c13bff 100644 --- a/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc +++ b/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MuPairProduction.cc,v 1.48 2007/05/22 17:35:58 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/muons/src/G4MuPairProductionModel.cc b/source/processes/electromagnetic/muons/src/G4MuPairProductionModel.cc index 500a702506..89499f9c22 100644 --- a/source/processes/electromagnetic/muons/src/G4MuPairProductionModel.cc +++ b/source/processes/electromagnetic/muons/src/G4MuPairProductionModel.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4MuPairProductionModel.cc,v 1.33 2007/05/22 17:35:58 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4MuPairProductionModel.cc,v 1.35 2007/10/11 13:52:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -59,6 +59,7 @@ // 13-02-06 Add ComputeCrossSectionPerAtom (mma) // 24-04-07 Add protection in SelectRandomAtom method (V.Ivantchenko) // 12-05-06 Updated sampling (use cut) in SelectRandomAtom (A.Bogdanov) +// 11-10-07 Add ignoreCut flag (V.Ivanchenko) // // Class Description: @@ -80,6 +81,7 @@ #include "G4ElementVector.hh" #include "G4ProductionCutsTable.hh" #include "G4ParticleChangeForLoss.hh" +#include "G4ParticleChangeForGamma.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -105,17 +107,18 @@ G4MuPairProductionModel::G4MuPairProductionModel(const G4ParticleDefinition* p, lowestKinEnergy(1.*GeV), factorForCross(4.*fine_structure_const*fine_structure_const *classic_electr_radius*classic_electr_radius/(3.*pi)), - sqrte(sqrt(exp(1.))), - currentZ(0), - particle(0), - nzdat(5), - ntdat(8), - nbiny(1000), - nmaxElements(0), - ymin(-5.), - ymax(0.), - dy((ymax-ymin)/nbiny), - samplingTablesAreFilled(false) + sqrte(sqrt(exp(1.))), + currentZ(0), + particle(0), + nzdat(5), + ntdat(8), + nbiny(1000), + nmaxElements(0), + ymin(-5.), + ymax(0.), + dy((ymax-ymin)/nbiny), + ignoreCut(false), + samplingTablesAreFilled(false) { SetLowEnergyLimit(minPairEnergy); @@ -153,14 +156,24 @@ void G4MuPairProductionModel::SetParticle(const G4ParticleDefinition* p) void G4MuPairProductionModel::Initialise(const G4ParticleDefinition* p, const G4DataVector&) { - if(p) SetParticle(p); - if (!samplingTablesAreFilled) MakeSamplingTables(); - - if(pParticleChange) - fParticleChange = reinterpret_cast - (pParticleChange); - else + if (!samplingTablesAreFilled) { + if(p) SetParticle(p); + MakeSamplingTables(); + } + if(pParticleChange) { + if(ignoreCut) { + gParticleChange = + reinterpret_cast(pParticleChange); + fParticleChange = 0; + } else { + fParticleChange = + reinterpret_cast(pParticleChange); + gParticleChange = 0; + } + } else { fParticleChange = new G4ParticleChangeForLoss(); + gParticleChange = 0; + } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -172,7 +185,8 @@ G4double G4MuPairProductionModel::ComputeDEDXPerVolume( G4double cutEnergy) { G4double dedx = 0.0; - if (cutEnergy <= minPairEnergy || kineticEnergy <= lowestKinEnergy) + if (cutEnergy <= minPairEnergy || kineticEnergy <= lowestKinEnergy + || ignoreCut) return dedx; const G4ElementVector* theElementVector = material->GetElementVector(); @@ -193,8 +207,10 @@ G4double G4MuPairProductionModel::ComputeDEDXPerVolume( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4double G4MuPairProductionModel::ComputMuPairLoss(G4double Z, G4double tkin, - G4double cutEnergy, G4double tmax) +G4double G4MuPairProductionModel::ComputMuPairLoss(G4double Z, + G4double tkin, + G4double cutEnergy, + G4double tmax) { SetCurrentElement(Z); G4double loss = 0.0; @@ -385,7 +401,9 @@ G4double G4MuPairProductionModel::ComputeCrossSectionPerAtom( G4double cutEnergy, G4double) { - G4double cross = ComputeMicroscopicCrossSection (kineticEnergy, Z, cutEnergy); + G4double cut = max(minPairEnergy,cutEnergy); + if(ignoreCut) cut = minPairEnergy; + G4double cross = ComputeMicroscopicCrossSection (kineticEnergy, Z, cut); return cross; } @@ -412,6 +430,7 @@ G4double G4MuPairProductionModel::CrossSectionPerVolume( SetCurrentElement(Z); G4double tmax = min(maxEnergy,MaxSecondaryEnergy(particle, kineticEnergy)); G4double cut = max(minPairEnergy,cutEnergy); + if(ignoreCut) cut = minPairEnergy; if(cut < tmax) { G4double cr = ComputeMicroscopicCrossSection(kineticEnergy, Z, cut) - ComputeMicroscopicCrossSection(kineticEnergy, Z, tmax); @@ -479,8 +498,8 @@ void G4MuPairProductionModel::SampleSecondaries(std::vector* { G4double kineticEnergy = aDynamicParticle->GetKineticEnergy(); G4double totalEnergy = kineticEnergy + particleMass ; - G4ParticleMomentum ParticleDirection = aDynamicParticle-> - GetMomentumDirection(); + G4ParticleMomentum ParticleDirection = + aDynamicParticle->GetMomentumDirection(); G4int it; for(it=1; it* const G4Element* anElement = SelectRandomAtom(kineticEnergy, dt, it, couple, tmin); SetCurrentElement(anElement->GetZ()); + // define interval of enegry transfer G4double maxPairEnergy = MaxSecondaryEnergy(particle,kineticEnergy); G4double maxEnergy = std::min(tmax, maxPairEnergy); G4double minEnergy = std::max(tmin, minPairEnergy); + if(ignoreCut)minEnergy = minPairEnergy; if(minEnergy >= maxEnergy) return; //G4cout << "emin= " << minEnergy << " emax= " << maxEnergy // << " minPair= " << minPairEnergy << " maxpair= " << maxPairEnergy // << " ymin= " << ymin << " dy= " << dy << G4endl; + + // select bins G4int iymin = 0; G4int iymax = nbiny-1; if( minEnergy > minPairEnergy) @@ -587,13 +610,17 @@ void G4MuPairProductionModel::SampleSecondaries(std::vector* PositDirection.rotateUz(ParticleDirection); // create G4DynamicParticle object for the particle2 - G4DynamicParticle* aParticle2= new G4DynamicParticle(thePositron, - PositDirection, - PositronEnergy - electron_mass_c2); + G4DynamicParticle* aParticle2 = + new G4DynamicParticle(thePositron, + PositDirection, + PositronEnergy - electron_mass_c2); // primary change kineticEnergy -= (ElectronEnergy + PositronEnergy); - fParticleChange->SetProposedKineticEnergy(kineticEnergy); + if(fParticleChange) + fParticleChange->SetProposedKineticEnergy(kineticEnergy); + else + gParticleChange->SetProposedKineticEnergy(kineticEnergy); vdp->push_back(aParticle1); vdp->push_back(aParticle2); @@ -627,6 +654,7 @@ const G4Element* G4MuPairProductionModel::SelectRandomAtom( SetCurrentElement(Z); G4double maxPairEnergy = MaxSecondaryEnergy(particle,kinEnergy); G4double minEnergy = std::max(tmin, minPairEnergy); + if(ignoreCut)minEnergy = minPairEnergy; G4int iz; for(iz=1; iz*, + const G4MaterialCutsCouple*, + const G4DynamicParticle*, + G4double tmin, + G4double maxEnergy); + + // polarized routines + /* + inline void SetTargetPolarization(const G4ThreeVector & pTarget); + inline void SetBeamPolarization(const G4ThreeVector & pBeam); + inline const G4ThreeVector & GetTargetPolarization() const; + inline const G4ThreeVector & GetBeamPolarization() const; + inline const G4ThreeVector & GetFinalGammaPolarization() const; + inline const G4ThreeVector & GetFinalElectronPolarization() const; + */ +private: + + // hide assignment operator + G4PolarizedPEEffectModel & operator=(const G4PolarizedPEEffectModel &right); + G4PolarizedPEEffectModel(const G4PolarizedPEEffectModel&); + + G4PolarizedPEEffectCrossSection * crossSectionCalculator; + // incomming + G4StokesVector theBeamPolarization; // photon + // outgoing + G4StokesVector finalElectronPolarization; + + G4int verboseLevel; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + +#endif diff --git a/source/processes/electromagnetic/polarisation/include/G4PolarizedPairProductionCrossSection.hh b/source/processes/electromagnetic/polarisation/include/G4PolarizedPairProductionCrossSection.hh index ccdac6d08d..30e6bfd2bc 100644 --- a/source/processes/electromagnetic/polarisation/include/G4PolarizedPairProductionCrossSection.hh +++ b/source/processes/electromagnetic/polarisation/include/G4PolarizedPairProductionCrossSection.hh @@ -23,19 +23,21 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4PolarizedPairProductionCrossSection.hh,v 1.2 2006/11/17 14:14:19 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PolarizedPairProductionCrossSection.hh,v 1.3 2007/11/01 17:32:34 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // GEANT4 Class file // // -// File name: G4PolarizedBremsstrahlungCrossSection +// File name: G4PolarizedPairProductionCrossSection // // Author: Karim Laihem // // Creation date: 15.05.2005 -// 20-08-06 updated interface to geant4.8.1 (A.Schaelicke) +// // Modifications: +// 20-08-06 updated interface to geant4.8.1 (A.Schaelicke) +// 15-10-07 introduced a more general framework for cross sections (AS) // // Class Description: // determine the polarization of the final state @@ -47,14 +49,12 @@ #include "G4StokesVector.hh" #include "G4VPolarizedCrossSection.hh" -#include "G4RotationMatrix.hh" -class G4PolarizedGammaConversionModel; class G4PolarizedPairProductionCrossSection : public G4VPolarizedCrossSection { public: - G4PolarizedPairProductionCrossSection(G4PolarizedGammaConversionModel * model); + G4PolarizedPairProductionCrossSection(); virtual void Initialize(G4double eps, G4double X, G4double phi, const G4StokesVector & p0, const G4StokesVector & p1, @@ -66,8 +66,6 @@ class G4PolarizedPairProductionCrossSection : public G4VPolarizedCrossSection G4StokesVector GetPol2(); // electron/positron G4StokesVector GetPol3(); // photon private: - - G4PolarizedGammaConversionModel * theModel; G4StokesVector theFinalElectronPolarization; G4StokesVector theFinalPositronPolarization; diff --git a/source/processes/electromagnetic/polarisation/include/G4PolarizedPhotoElectricEffect.hh b/source/processes/electromagnetic/polarisation/include/G4PolarizedPhotoElectricEffect.hh new file mode 100644 index 0000000000..3502a0f809 --- /dev/null +++ b/source/processes/electromagnetic/polarisation/include/G4PolarizedPhotoElectricEffect.hh @@ -0,0 +1,123 @@ +// +// ******************************************************************** +// * 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: G4PolarizedPhotoElectricEffect.hh,v 1.1 2007/11/01 17:29:09 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +//------------------ G4PolarizedPhotoElectricEffect physics process ------------------ +// by Michel Maire, 24 May 1996 +// +// 12-06-96, Added SelectRandomAtom() method and new data member +// for cumulative total cross section, by M.Maire +// 21-06-96, SetCuts implementation, M.Maire +// 17-09-96, Dynamic array PartialSumSigma +// split ComputeBindingEnergy(), M.Maire +// 08-01-97, crossection table + meanfreepath table, M.Maire +// 13-03-97, adapted for the new physics scheme, M.Maire +// 13-08-98, new methods SetBining() PrintInfo() +// 17-11-98, use table of atomic shells in PostStepDoIt, mma +// 06-01-99, Sandia crossSection below 50 keV, V.Grichine mma +// 03-08-01, new methods Store/Retrieve PhysicsTable (mma) +// 06-08-01, BuildThePhysicsTable() called from constructor (mma) +// 19-09-01, come back to previous process name "phot" +// 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) +// 01-10-01, come back to BuildPhysicsTable(const G4ParticleDefinition&) +// 10-01-02, moved few function from icc to cc +// 17-04-02, Keep only Sandia crossSections. Remove BuildPhysicsTables. +// Simplify public interface (mma) +// 29-04-02, Generate theta angle of the photoelectron from Sauter-Gavrila +// distribution (mma) +// 13-08-04, suppress icc file; make public ComputeCrossSectionPerAtom() (mma) +// 21-04-05, Redesign - use G4VEmProcess interface (V.Ivanchenko) +// 02-05-05, move ParticleChange actions in model (mma) +// 04-05-05, Make class to be default (V.Ivanchenko) +// 09-08-06, add SetModel(G4VEmModel*) (mma) +// 12-09-06, move SetModel(G4VEmModel*) in G4VEmProcess (mma) +// ----------------------------------------------------------------------------- + +// class description +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +#ifdef NOIONIZATIONAS +#define G4PolarizedPhotoElectricEffect_h 1 +#endif + + +#ifndef G4PolarizedPhotoElectricEffect_h +#define G4PolarizedPhotoElectricEffect_h 1 + +#include "globals.hh" +#include "G4VEmProcess.hh" +#include "G4Gamma.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class G4ParticleDefinition; +class G4VEmModel; +class G4MaterialCutsCouple; +class G4DynamicParticle; + +class G4PolarizedPhotoElectricEffect : public G4VEmProcess + +{ +public: // with description + + G4PolarizedPhotoElectricEffect(const G4String& processName ="pol-phot", + G4ProcessType type = fElectromagnetic); + + virtual ~G4PolarizedPhotoElectricEffect(); + + // true for Gamma only. + G4bool IsApplicable(const G4ParticleDefinition&); + + // Print few lines of informations about the process: validity range, + void PrintInfo(); + +protected: + + void InitialiseProcess(const G4ParticleDefinition*); + +private: + + G4bool isInitialised; +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline +G4bool G4PolarizedPhotoElectricEffect::IsApplicable(const G4ParticleDefinition& p) +{ + return (&p == G4Gamma::Gamma()); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/source/processes/electromagnetic/polarisation/include/G4StokesVector.hh b/source/processes/electromagnetic/polarisation/include/G4StokesVector.hh index 2421392984..231ea8b54b 100644 --- a/source/processes/electromagnetic/polarisation/include/G4StokesVector.hh +++ b/source/processes/electromagnetic/polarisation/include/G4StokesVector.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4StokesVector.hh,v 1.3 2006/11/17 11:59:03 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4StokesVector.hh,v 1.4 2007/11/01 17:32:34 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // GEANT4 Class header file // @@ -46,7 +46,7 @@ // aim: // - store three components of a stokesvector // - distinguish between boson or fermion state (different transformations) -// - provide unique definition of reference frame (cf. PolarizationHelper) +// - provide unique definition of reference frame (cf. G4PolarizationHelper) // #ifndef G4StokesVector_h diff --git a/source/processes/electromagnetic/polarisation/include/G4VPolarizedCrossSection.hh b/source/processes/electromagnetic/polarisation/include/G4VPolarizedCrossSection.hh index df69452b18..c78431cb5f 100644 --- a/source/processes/electromagnetic/polarisation/include/G4VPolarizedCrossSection.hh +++ b/source/processes/electromagnetic/polarisation/include/G4VPolarizedCrossSection.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VPolarizedCrossSection.hh,v 1.2 2006/11/17 14:14:19 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VPolarizedCrossSection.hh,v 1.4 2007/11/01 17:32:34 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // File name: G4VPolarizedCrossSection // @@ -53,6 +53,7 @@ class G4VPolarizedCrossSection public: G4VPolarizedCrossSection(); virtual ~G4VPolarizedCrossSection(); + public: virtual void Initialize(G4double, G4double, G4double, const G4StokesVector & p0,const G4StokesVector & p1, @@ -66,14 +67,31 @@ public: virtual G4StokesVector GetPol2(); virtual G4StokesVector GetPol3(); + // return basic kinematics properties + // minimal gamma value in TotalXSection + inline G4double GetYmin() {return fYmin; } + // minimal energy fraction in TotalXSection + virtual G4double GetXmin(G4double y); + // maximal energy fraction in TotalXSection + virtual G4double GetXmax(G4double y); + // return appropriate distribute polarisation states; - void DicePolarization(); - G4StokesVector DicedPol2(); - G4StokesVector DicedPol3(); +// void DicePolarization(); +// G4StokesVector DicedPol2(); +// G4StokesVector DicedPol3(); + inline void SetMaterial(G4double A, G4double Z, G4double coul) + { theA=A; theZ=Z; fCoul=coul; } protected: -// G4double costheta; - G4StokesVector pol0, pol1; - G4StokesVector pol2, pol3; + // define kinematics properties + inline void SetXmin(G4double xmin) { fXmin=xmin;} + inline void SetXmax(G4double xmax) { fXmax=xmax;} + inline void SetYmin(G4double ymin) { fYmin=ymin;} + + // kinematic properties + G4double fXmin, fXmax, fYmin; + // material properties + G4double theA, theZ; + G4double fCoul; }; diff --git a/source/processes/electromagnetic/polarisation/include/G4ePolarizedBremsstrahlung.hh b/source/processes/electromagnetic/polarisation/include/G4ePolarizedBremsstrahlung.hh index 1190dc96a1..07882ef4f2 100644 --- a/source/processes/electromagnetic/polarisation/include/G4ePolarizedBremsstrahlung.hh +++ b/source/processes/electromagnetic/polarisation/include/G4ePolarizedBremsstrahlung.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ePolarizedBremsstrahlung.hh,v 1.2 2007/05/23 08:52:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/polarisation/include/G4ePolarizedBremsstrahlungModel.hh b/source/processes/electromagnetic/polarisation/include/G4ePolarizedBremsstrahlungModel.hh index 87cf956222..0af734824d 100644 --- a/source/processes/electromagnetic/polarisation/include/G4ePolarizedBremsstrahlungModel.hh +++ b/source/processes/electromagnetic/polarisation/include/G4ePolarizedBremsstrahlungModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ePolarizedBremsstrahlungModel.hh,v 1.2 2007/05/23 08:52:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/polarisation/include/G4ePolarizedIonisation.hh b/source/processes/electromagnetic/polarisation/include/G4ePolarizedIonisation.hh index 53ab9ab52e..abebaa4958 100644 --- a/source/processes/electromagnetic/polarisation/include/G4ePolarizedIonisation.hh +++ b/source/processes/electromagnetic/polarisation/include/G4ePolarizedIonisation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ePolarizedIonisation.hh,v 1.3 2007/06/11 13:37:56 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------------- // // GEANT4 Class header file diff --git a/source/processes/electromagnetic/polarisation/include/G4eplusPolarizedAnnihilation.hh b/source/processes/electromagnetic/polarisation/include/G4eplusPolarizedAnnihilation.hh index 51f41a6307..92289ad392 100644 --- a/source/processes/electromagnetic/polarisation/include/G4eplusPolarizedAnnihilation.hh +++ b/source/processes/electromagnetic/polarisation/include/G4eplusPolarizedAnnihilation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eplusPolarizedAnnihilation.hh,v 1.3 2007/06/11 13:37:56 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizationHelper.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizationHelper.cc index aa0f063a4a..2a084e2245 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizationHelper.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizationHelper.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4PolarizationHelper.cc,v 1.3 2006/11/17 14:14:19 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PolarizationHelper.cc,v 1.4 2007/11/01 17:30:25 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // GEANT4 Class file // @@ -39,8 +39,7 @@ // // Class Description: // -// Provides polarization information for logical volumes, and some basic -// transformation routines. +// Provides some basic polarization transformation routines. // #include "G4PolarizationHelper.hh" #include "G4StokesVector.hh" @@ -78,6 +77,15 @@ G4ThreeVector G4PolarizationHelper::GetParticleFrameX(const G4ThreeVector &uZ) return G4ThreeVector(uZ.x()*invPerp,uZ.y()*invPerp,-perp); } +G4ThreeVector G4PolarizationHelper::GetRandomFrame(const G4ThreeVector & mom1) +{ + G4double phi =2.*pi*G4UniformRand(); + G4ThreeVector normal = std::cos(phi)*GetParticleFrameX(mom1) + + std::sin(phi)*G4PolarizationHelper::GetParticleFrameY(mom1); + return normal; +} + + G4ThreeVector G4PolarizationHelper::GetSpinInPRF(const G4ThreeVector &uZ, const G4ThreeVector & spin) { // compare also G4ThreeVector::rotateUz() diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizationManager.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizationManager.cc index d6cccad2b7..73e88094c2 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizationManager.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizationManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PolarizationManager.cc,v 1.1 2006/09/21 21:35:11 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // GEANT4 Class file // diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizationMessenger.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizationMessenger.cc index 3b837acfd6..aaec0714c1 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizationMessenger.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizationMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PolarizationMessenger.cc,v 1.1 2006/09/21 21:35:11 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 Class file diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedAnnihilationCrossSection.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedAnnihilationCrossSection.cc index 68401bb92b..f547d4b1a4 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizedAnnihilationCrossSection.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedAnnihilationCrossSection.cc @@ -24,14 +24,14 @@ // ******************************************************************** // // ------------------------------------------------------------------- -// $Id: G4PolarizedAnnihilationCrossSection.cc,v 1.5 2006/11/20 12:21:25 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PolarizedAnnihilationCrossSection.cc,v 1.6 2007/11/01 17:32:34 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------------- // // GEANT4 Class file // // -// File name: PolarizedAnnihilationCrossSection +// File name: G4PolarizedAnnihilationCrossSection // // Author: Andreas Schaelicke // @@ -40,6 +40,8 @@ // Modifications: // 24-03-06 included cross section as given in W.McMaster, Nuovo Cimento 7, 1960, 395 // 27-07-06 new calculation by P.Starovoitov +// 15.10.07 introduced a more general framework for cross sections (AS) +// 16.10.07 some minor corrections in formula longPart // // Class Description: // * calculates the differential cross section in e+e- -> gamma gamma @@ -249,12 +251,15 @@ G4double G4PolarizedAnnihilationCrossSection::TotalXSection( G4double unpME = (gam*(gam + 4.) + 1.)*logMEM; unpME += -(gam + 3.)*sqrtgam1; unpME /= 4.*(gam2 - 1.); - G4double longPart = - 2.*(gam*(gam + 4.) + 1.)*logMEM; - longPart += (gam*(gam + 4.) + 7.)*sqrtgam1; +// G4double longPart = - 2.*(gam*(gam + 4.) + 1.)*logMEM; +// longPart += (gam*(gam + 4.) + 7.)*sqrtgam1; +// longPart /= 4.*sqr(gam - 1.)*(gam + 1.); + G4double longPart = (3+gam*(gam*(gam + 1.) + 7.))*logMEM; + longPart += - (5.+ gam*(3*gam + 4.))*sqrtgam1; longPart /= 4.*sqr(gam - 1.)*(gam + 1.); - G4double tranPart = -(gam*(gam + 2.) + 3.)*logMEM; - tranPart += 2.*(2.*gam + 1.)*sqrtgam1; - tranPart /= 8.*sqr(gam - 1.); + G4double tranPart = -(5*gam + 1.)*logMEM; + tranPart += (gam + 5.)*sqrtgam1; + tranPart /= 4.*sqr(gam - 1.)*(gam + 1.); xs += unpME; xs += polzz*longPart; @@ -296,6 +301,18 @@ void G4PolarizedAnnihilationCrossSection::DefineCoefficients(const G4StokesVecto polxy=pol0.x()*pol1.y(); polyx=pol0.y()*pol1.x(); } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4PolarizedAnnihilationCrossSection::GetXmin(G4double y) +{ + return 0.5*(1.-std::sqrt((y-1.)/(y+1.))); +} +G4double G4PolarizedAnnihilationCrossSection::GetXmax(G4double y) +{ + return 0.5*(1.+std::sqrt((y-1.)/(y+1.))); +} + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4double G4PolarizedAnnihilationCrossSection::DiceEpsilon() { diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedAnnihilationModel.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedAnnihilationModel.cc index da9772b4e9..d43d1c4343 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizedAnnihilationModel.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedAnnihilationModel.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4PolarizedAnnihilationModel.cc,v 1.5 2007/05/23 08:52:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PolarizedAnnihilationModel.cc,v 1.6 2007/07/10 09:38:17 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -41,6 +41,9 @@ // 18-07-06 use newly calculated cross sections (P. Starovoitov) // 21-08-06 update interface (A. Schaelicke) // 17-11-06 add protection agaist e+ zero energy PostStep (V.Ivanchenko) +// 10-07-07 copied Initialise() method from G4eeToTwoGammaModel to provide a +// local ParticleChangeForGamma object and reduce overhead +// in SampleSecondaries() (A. Schaelicke) // // // Class Description: @@ -60,7 +63,8 @@ G4PolarizedAnnihilationModel::G4PolarizedAnnihilationModel(const G4ParticleDefinition* p, const G4String& nam) - : G4eeToTwoGammaModel(p,nam),crossSectionCalculator(0) + : G4eeToTwoGammaModel(p,nam),crossSectionCalculator(0),gParticleChange(0), + gIsInitialised(false) { crossSectionCalculator=new G4PolarizedAnnihilationCrossSection(); } @@ -70,6 +74,24 @@ G4PolarizedAnnihilationModel::~G4PolarizedAnnihilationModel() if (crossSectionCalculator) delete crossSectionCalculator; } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4PolarizedAnnihilationModel::Initialise(const G4ParticleDefinition*, + const G4DataVector&) +{ + // G4eeToTwoGammaModel::Initialise(part,dv); + if(gIsInitialised) return; + + if(pParticleChange) + gParticleChange = + reinterpret_cast(pParticleChange); + else + gParticleChange = new G4ParticleChangeForGamma(); + + gIsInitialised = true; +} + G4double G4PolarizedAnnihilationModel::ComputeCrossSectionPerElectron( const G4ParticleDefinition* pd, G4double kinEnergy, @@ -135,13 +157,13 @@ void G4PolarizedAnnihilationModel::SampleSecondaries(std::vector(pParticleChange); - const G4Track * aTrack = fParticleChange->GetCurrentTrack(); +// G4ParticleChangeForGamma* gParticleChange +// = dynamic_cast(pParticleChange); + const G4Track * aTrack = gParticleChange->GetCurrentTrack(); // kill primary - fParticleChange->SetProposedKineticEnergy(0.); - fParticleChange->ProposeTrackStatus(fStopAndKill); + gParticleChange->SetProposedKineticEnergy(0.); + gParticleChange->ProposeTrackStatus(fStopAndKill); // V.Ivanchenko add protection against zero kin energy G4double PositKinEnergy = dp->GetKineticEnergy(); diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedBhabhaCrossSection.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedBhabhaCrossSection.cc index fc3a1bd9cc..5e495e8100 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizedBhabhaCrossSection.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedBhabhaCrossSection.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4PolarizedBhabhaCrossSection.cc,v 1.4 2006/11/17 14:14:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PolarizedBhabhaCrossSection.cc,v 1.5 2007/11/01 17:32:34 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------------- // // GEANT4 Class file @@ -67,6 +67,8 @@ void G4PolarizedBhabhaCrossSection::Initialize( const G4StokesVector & pol1, G4int flag) { + SetXmax(1.); + G4double re2 = classic_electr_radius * classic_electr_radius; G4double gamma2 = gamma*gamma; G4double gamma3 = gamma2*gamma; diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedBremsstrahlungCrossSection.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedBremsstrahlungCrossSection.cc index 26b528f39f..f8fa8c11c7 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizedBremsstrahlungCrossSection.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedBremsstrahlungCrossSection.cc @@ -23,15 +23,15 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4PolarizedBremsstrahlungCrossSection.cc,v 1.3 2006/11/17 12:12:02 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PolarizedBremsstrahlungCrossSection.cc,v 1.4 2007/11/01 17:32:34 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // // GEANT4 Class file // // -// File name: G4BremsstrahlungCrossSection +// File name: G4PolarizedBremsstrahlungCrossSection // // Author: Andreas Schaelicke on the base of Karim Laihems code // @@ -39,8 +39,8 @@ // #include "G4PolarizedBremsstrahlungCrossSection.hh" -#include "G4ePolarizedBremsstrahlungModel.hh" -#include "G4Element.hh" +//#include "G4ePolarizedBremsstrahlungModel.hh" +//#include "G4Element.hh" G4bool G4PolarizedBremsstrahlungCrossSection::scrnInitialized=false; G4double G4PolarizedBremsstrahlungCrossSection::SCRN [3][20]; @@ -74,9 +74,7 @@ void G4PolarizedBremsstrahlungCrossSection::InitializeMe() } } -G4PolarizedBremsstrahlungCrossSection::G4PolarizedBremsstrahlungCrossSection( - G4ePolarizedBremsstrahlungModel * model) - : theModel(model) +G4PolarizedBremsstrahlungCrossSection::G4PolarizedBremsstrahlungCrossSection() { InitializeMe(); } @@ -106,13 +104,8 @@ void G4PolarizedBremsstrahlungCrossSection::Initialize( G4double GammaE = aGammaE/m0_c2, GammaE2 = GammaE * GammaE ; G4double Lept1E = aLept1E/m0_c2+1., Lept1E2 = Lept1E * Lept1E ; - if (theModel==0) { - G4cout<<" theSelectedElement is not available!!"<SelectedAtom(); + // const G4Element* theSelectedElement = theModel->SelectedAtom(); // ******* Gamma Transvers Momentum @@ -120,9 +113,9 @@ void G4PolarizedBremsstrahlungCrossSection::Initialize( G4double u = TMom , u2 =u * u ; G4double Xsi = 1./(1.+u2) , Xsi2 = Xsi * Xsi ; - G4double theZ = theSelectedElement->GetZ(); + // G4double theZ = theSelectedElement->GetZ(); - G4double fCoul = theSelectedElement->GetfCoulomb(); + // G4double fCoul = theSelectedElement->GetfCoulomb(); G4double delta = 12. * std::pow(theZ, 1./3.) * Lept0E * Lept1E * Xsi / (121. * GammaE); G4double GG=0.; diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedCompton.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedCompton.cc index 0dcf85f7c7..32dd740bf1 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizedCompton.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedCompton.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PolarizedCompton.cc,v 1.6 2007/06/11 13:37:56 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PolarizedCompton.cc,v 1.7 2007/07/10 09:35:37 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // File name: G4PolarizedCompton @@ -332,7 +332,7 @@ void G4PolarizedCompton::BuildAsymmetryTable(const G4ParticleDefinition& part) G4double G4PolarizedCompton::ComputeAsymmetry(G4double energy, const G4MaterialCutsCouple* couple, - const G4ParticleDefinition& particle, + const G4ParticleDefinition& aParticle, G4double cut, G4double & tAsymmetry) { @@ -345,7 +345,7 @@ G4double G4PolarizedCompton::ComputeAsymmetry(G4double energy, G4ThreeVector thePolarization=G4ThreeVector(0.,0.,1.); emModel->SetTargetPolarization(thePolarization); emModel->SetBeamPolarization(thePolarization); - G4double sigma2=emModel->CrossSection(couple,&particle,energy,cut,energy); + G4double sigma2=emModel->CrossSection(couple,&aParticle,energy,cut,energy); // // calculate unpolarized cross section @@ -353,7 +353,7 @@ G4double G4PolarizedCompton::ComputeAsymmetry(G4double energy, thePolarization=G4ThreeVector(); emModel->SetTargetPolarization(thePolarization); emModel->SetBeamPolarization(thePolarization); - G4double sigma0=emModel->CrossSection(couple,&particle,energy,cut,energy); + G4double sigma0=emModel->CrossSection(couple,&aParticle,energy,cut,energy); // determine assymmetries if (sigma0>0.) { diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedComptonCrossSection.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedComptonCrossSection.cc index c2f07dc46f..3ae0f1e17e 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizedComptonCrossSection.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedComptonCrossSection.cc @@ -23,13 +23,13 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4PolarizedComptonCrossSection.cc,v 1.3 2006/11/09 18:00:49 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PolarizedComptonCrossSection.cc,v 1.4 2007/11/01 17:32:34 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // GEANT4 Class file // // -// File name: PolarizedComptonCrossSectionPS +// File name: G4PolarizedComptonCrossSection // // Author: Andreas Schaelicke // @@ -50,9 +50,11 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4PolarizedComptonCrossSection::G4PolarizedComptonCrossSection() { + SetYmin(0.); + // G4cout<<"G4PolarizedComptonCrossSection() init\n"; - re2 = classic_electr_radius * classic_electr_radius; + re2 = classic_electr_radius * classic_electr_radius * sqr(4*pi/hbarc); // G4double unit_conversion = hbarc_squared ; // G4cout<<" (keV)^2* m^2 ="< 1.+1.e-8) cosT = 1.; @@ -179,6 +181,35 @@ G4double G4PolarizedComptonCrossSection::XSection(const G4StokesVector & pol2,co //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4PolarizedComptonCrossSection::TotalXSection(G4double /*xmin*/, G4double /*xmax*/, G4double k0, + const G4StokesVector & pol0, + const G4StokesVector & pol1) +{ + + // G4double k0 = gammaEnergy / electron_mass_c2 ; + G4double k1 = 1 + 2*k0 ; + +// // pi*re^2 +// G4double re=2.81794e-15; //m +// G4double barn=1.e-28; //m^2 + G4double Z=theZ; + + G4double unit = Z*pi*classic_electr_radius + * classic_electr_radius ; // *1./barn; + + G4double pre = unit/(sqr(k0)*sqr(1.+2.*k0)); + + G4double xs_0 = ((k0 - 2.)*k0 -2.)*sqr(k1)*std::log(k1) + 2.*k0*(k0*(k0 + 1.)*(k0 + 8.) + 2.); + G4double xs_pol = (k0 + 1.)*sqr(k1)*std::log(k1) - 2.*k0*(5.*sqr(k0) + 4.*k0 + 1.); + + return pre*(xs_0/k0 + pol0.p3()*pol1.z()*xs_pol); +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + G4StokesVector G4PolarizedComptonCrossSection::GetPol2() { // Note, mean polarization can not contain correlation diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedComptonModel.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedComptonModel.cc index 9738ca016a..60c661d0d6 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizedComptonModel.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedComptonModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4PolarizedComptonModel.cc,v 1.4 2007/05/23 08:52:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedGammaConversion.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedGammaConversion.cc index 300e9cc83b..b5cd070c74 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizedGammaConversion.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedGammaConversion.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PolarizedGammaConversion.cc,v 1.3 2007/05/23 08:52:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedGammaConversionModel.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedGammaConversionModel.cc index 128e1d53a4..dd6ea117a8 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizedGammaConversionModel.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedGammaConversionModel.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4PolarizedGammaConversionModel.cc,v 1.5 2007/05/23 08:52:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PolarizedGammaConversionModel.cc,v 1.6 2007/11/01 17:32:34 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -86,7 +86,7 @@ void G4PolarizedGammaConversionModel::Initialise(const G4ParticleDefinition* pd, { G4BetheHeitlerModel::Initialise(pd,dv); if (!crossSectionCalculator) - crossSectionCalculator = new G4PolarizedPairProductionCrossSection(this); + crossSectionCalculator = new G4PolarizedPairProductionCrossSection(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -114,9 +114,12 @@ void G4PolarizedGammaConversionModel::SampleSecondaries(std::vectorGetMomentumDirection()); // transform polarization into interaction frame - beamPol.InvRotateAz(nInteractionFrame,dp->GetMomentumDirection()); + beamPol.InvRotateAz(nInteractionFrame,dp->GetMomentumDirection()); // calulcate polarization transfer + crossSectionCalculator->SetMaterial(GetCurrentElement()->GetN(), // number of nucleons + GetCurrentElement()->GetZ(), + GetCurrentElement()->GetfCoulomb()); crossSectionCalculator->Initialize(gamEnergy0, lepEnergy1, sintheta, beamPol, G4StokesVector::ZERO); diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedMollerBhabhaModel.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedMollerBhabhaModel.cc index 052fba6844..d2cd49e3a1 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizedMollerBhabhaModel.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedMollerBhabhaModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PolarizedMollerBhabhaModel.cc,v 1.4 2007/05/23 08:52:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------------- // // GEANT4 Class file diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedMollerCrossSection.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedMollerCrossSection.cc index f464dc3d7d..44c70c5732 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizedMollerCrossSection.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedMollerCrossSection.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4PolarizedMollerCrossSection.cc,v 1.4 2006/11/17 14:14:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PolarizedMollerCrossSection.cc,v 1.5 2007/11/01 17:32:34 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------------- // // GEANT4 Class file @@ -51,6 +51,7 @@ G4PolarizedMollerCrossSection::G4PolarizedMollerCrossSection() { + SetXmax(.5); } G4PolarizedMollerCrossSection::~G4PolarizedMollerCrossSection() {} void G4PolarizedMollerCrossSection::Initialize( diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedPEEffectCrossSection.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedPEEffectCrossSection.cc new file mode 100644 index 0000000000..45889fb460 --- /dev/null +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedPEEffectCrossSection.cc @@ -0,0 +1,168 @@ +// +// ******************************************************************** +// * 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: G4PolarizedPEEffectCrossSection.cc,v 1.1 2007/11/01 17:29:09 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// GEANT4 Class file +// +// +// File name: G4PolarizedPEEffectCrossSection +// +// Author: Karim Laihem +// +// Creation date: 15.03.2007 +// +// Modifications: +// 19-03-07 Modified to fit in g4.8.2 framework (A.Schaelicke) +// +// Class Description: +// +#include "G4PolarizedPEEffectCrossSection.hh" +//#include "Randomize.hh" + +using namespace std; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4PolarizedPEEffectCrossSection::G4PolarizedPEEffectCrossSection() + { + cout<<"G4PolarizedPEEffectCrossSection() init\n"; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4PolarizedPEEffectCrossSection::~G4PolarizedPEEffectCrossSection() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void G4PolarizedPEEffectCrossSection::Initialize(G4double aGammaE, + G4double aLept0E, + G4double sinTheta, + const G4StokesVector & beamPol, + const G4StokesVector & /*p1*/, + G4int /*flag*/) +{ + // cout<<"G4PolarizedPEEffectCrossSection::Initialize()\n"; + +// G4StokesVector PolarizedPhotoElectricEffect::Transfer_G4StokesVector( +// G4double aGammaE, // Incoming Primary Gamma Energy. +// G4ThreeVector aGammaDir, // Incoming Primary Gamma Direction. +// G4StokesVector beamPol, // Incoming Primary Gamma polarization. +// G4double aLept0E, // The Lepton e- of interest Total energy. +// G4ThreeVector aParticl_01_Dir, // The Lepton e- of interest direction. +// G4double cos_aTetha_Angle // The lepton of interest Scattering angle. +// ) + +// *********************************************************** +// ************ added by Karim Polarization transfer to e- in PhotoelectricEffect. +// ************ +// *********************************************************** + G4double Gfactor = aLept0E/electron_mass_c2+1; + G4double Gfactor_2 = Gfactor * Gfactor; + + G4double BETA = sqrt(1. - 1./(Gfactor_2)); + + G4double Stokes_P3 = beamPol.z() ; + + G4double m0_c2 = electron_mass_c2; + G4double Lept0E = aLept0E/m0_c2+1, Lept0E2 = Lept0E * Lept0E ; + G4double GammaE = aGammaE/m0_c2; + + +// G4double cosTheta = cos_aTetha_Angle; +// G4double sinTheta = sqrt(1- cos_aTetha_Angle * cos_aTetha_Angle); + G4double cosTheta = std::sqrt(1. - sinTheta*sinTheta); + + G4double D_Lepton0 = (1./GammaE) * ((2./(GammaE*Lept0E*(1-BETA*cosTheta)))-1.); + + G4double I_Lepton0 = 1.0+D_Lepton0; + + G4double A_Lepton0 = (Lept0E/(Lept0E+1))*(2.0/(GammaE*Lept0E) + + BETA*cosTheta + +(2.0/((GammaE*Lept0E2)*(1.0-BETA*cosTheta)))) / I_Lepton0 ; + + G4double B_Lepton0 = (Lept0E/(Lept0E+1.0)) * BETA * sinTheta * (2.0/(GammaE*Lept0E*(1-BETA*cosTheta))-1.0)/I_Lepton0; + + G4double Stokes_S1 = (Stokes_P3 * B_Lepton0) ; + G4double Stokes_S2 = 0.; + G4double Stokes_S3 = (Stokes_P3 * A_Lepton0) ; + + + theFinalElectronPolarization.setX(Stokes_S1); + theFinalElectronPolarization.setY(Stokes_S2); + theFinalElectronPolarization.setZ(Stokes_S3); + + if((theFinalElectronPolarization.x()*theFinalElectronPolarization.x() + + theFinalElectronPolarization.y()* theFinalElectronPolarization.y() + + theFinalElectronPolarization.z()* theFinalElectronPolarization.z())>1) + + { + cout<<"Warning: PhotoelectricEffect Problem in pol-transfer photon to lepton:Px2 + Py2 + Pz2 > 1"<* vdp, + const G4MaterialCutsCouple* couple, + const G4DynamicParticle* dp, + G4double tmin, + G4double maxEnergy) +{ + // std::vector* vdp = + G4PEEffectModel::SampleSecondaries(vdp,couple, dp, tmin, maxEnergy); + + if(vdp && vdp->size()>0) { + G4double gamEnergy0 = dp->GetKineticEnergy(); + G4double lepEnergy1 = (*vdp)[0]->GetKineticEnergy(); + G4double sintheta = dp->GetMomentumDirection().cross((*vdp)[0]->GetMomentumDirection()).mag(); + if (sintheta>1.) sintheta=1.; + + G4StokesVector beamPol = dp->GetPolarization(); + beamPol.SetPhoton(); + // G4cout<<" beamPol "<GetMomentumDirection(), + (*vdp)[0]->GetMomentumDirection()); + // G4cout<<" nInteractionFrame = "<GetMomentumDirection().cross((*vdp)[0]->GetMomentumDirection()).mag()<1.e-10) { + // G4cout<<" nInteractionFrame not well defined "<GetMomentumDirection()); + // G4cout<<"new nInteractionFrame = "<GetMomentumDirection(); + G4ThreeVector mom2=(*vdp)[0]->GetMomentumDirection(); + G4cout<<" mom1 = "<GetMomentumDirection()); + + // calulcate polarization transfer + crossSectionCalculator->SetMaterial(GetCurrentElement()->GetN(), // number of nucleons + GetCurrentElement()->GetZ(), + GetCurrentElement()->GetfCoulomb()); + crossSectionCalculator->Initialize(gamEnergy0, lepEnergy1, sintheta, + beamPol, G4StokesVector::ZERO); + + // deterimine final state polarization + G4StokesVector lep1Pol = crossSectionCalculator->GetPol2(); + // G4cout<<" lepPol "<GetMomentumDirection()); + (*vdp)[0]->SetPolarization(lep1Pol.p1(), + lep1Pol.p2(), + lep1Pol.p3()); + + // G4cout<<" lepPol "<size(); + if (num!=1) G4cout<<" WARNING "<SelectedAtom(); + // const G4Element* theSelectedElement = theModel->SelectedAtom(); // ******* Gamma Transvers Momentum G4double TMom = std::sqrt(Lept0E2 -1.)* sintheta, u = TMom , u2 =u * u ; G4double Xsi = 1./(1.+u2) , Xsi2 = Xsi * Xsi ; - G4double theZ = theSelectedElement->GetZ(); + // G4double theZ = theSelectedElement->GetZ(); - G4double fCoul = theSelectedElement->GetfCoulomb(); + // G4double fCoul = theSelectedElement->GetfCoulomb(); G4double delta = 12. * std::pow(theZ, 1./3.) * Lept0E * Lept1E * Xsi / (121. * GammaE); G4double GG=0.; diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedPhotoElectricEffect.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedPhotoElectricEffect.cc new file mode 100644 index 0000000000..f4f0e17784 --- /dev/null +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedPhotoElectricEffect.cc @@ -0,0 +1,81 @@ +// +// ******************************************************************** +// * 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: G4PolarizedPhotoElectricEffect.cc,v 1.1 2007/11/01 17:29:09 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +//------------------ G4PolarizedPhotoElectricEffect physics process -- +// +// +// ----------------------------------------------------------------------------- + +#ifndef NOIONIZATIONAS + +#include "G4PolarizedPhotoElectricEffect.hh" +#include "G4PolarizedPEEffectModel.hh" +#include "G4Electron.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +using namespace std; + +G4PolarizedPhotoElectricEffect::G4PolarizedPhotoElectricEffect(const G4String& processName, + G4ProcessType type):G4VEmProcess (processName, type), + isInitialised(false) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4PolarizedPhotoElectricEffect::~G4PolarizedPhotoElectricEffect() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4PolarizedPhotoElectricEffect::InitialiseProcess(const G4ParticleDefinition*) +{ + if(!isInitialised) { + isInitialised = true; + SetBuildTableFlag(false); + SetSecondaryParticle(G4Electron::Electron()); + if(!Model()) SetModel(new G4PolarizedPEEffectModel); + Model()->SetLowEnergyLimit(MinKinEnergy()); + Model()->SetHighEnergyLimit(MaxKinEnergy()); + AddEmModel(1, Model()); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4PolarizedPhotoElectricEffect::PrintInfo() +{ + G4cout + << " Total cross sections from Sandia parametrisation. " + << "\n Sampling according " << Model()->GetName() << " model" + << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +#endif // NOIONIZATIONAS diff --git a/source/processes/electromagnetic/polarisation/src/G4StokesVector.cc b/source/processes/electromagnetic/polarisation/src/G4StokesVector.cc index 2fb16e9ba5..ee8f5d03c0 100644 --- a/source/processes/electromagnetic/polarisation/src/G4StokesVector.cc +++ b/source/processes/electromagnetic/polarisation/src/G4StokesVector.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4StokesVector.cc,v 1.3 2006/11/17 11:59:03 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // GEANT4 Class file // diff --git a/source/processes/electromagnetic/polarisation/src/G4VPolarizedCrossSection.cc b/source/processes/electromagnetic/polarisation/src/G4VPolarizedCrossSection.cc index 4855c4548c..d0c6356e08 100644 --- a/source/processes/electromagnetic/polarisation/src/G4VPolarizedCrossSection.cc +++ b/source/processes/electromagnetic/polarisation/src/G4VPolarizedCrossSection.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VPolarizedCrossSection.cc,v 1.2 2006/11/17 14:14:20 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VPolarizedCrossSection.cc,v 1.4 2007/11/01 17:32:34 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // File name: G4VPolarizedCrossSection // // Author: Andreas Schaelicke @@ -44,7 +44,8 @@ #include "G4VPolarizedCrossSection.hh" #include "Randomize.hh" -G4VPolarizedCrossSection::G4VPolarizedCrossSection() +G4VPolarizedCrossSection::G4VPolarizedCrossSection() : + fXmin(0), fXmax(1.), fYmin(1.), theA(1), theZ(1), fCoul(0.) { } @@ -67,8 +68,7 @@ G4StokesVector G4VPolarizedCrossSection::GetPol2() G4double xsPol1=XSection(G4StokesVector::P1,G4StokesVector::ZERO); G4double xsPol2=XSection(G4StokesVector::P2,G4StokesVector::ZERO); G4double xsPol3=XSection(G4StokesVector::P3,G4StokesVector::ZERO); - pol2=G4ThreeVector(invXsecTotal*xsPol1,invXsecTotal*xsPol2,invXsecTotal*xsPol3); - return pol2; + return G4ThreeVector(invXsecTotal*xsPol1,invXsecTotal*xsPol2,invXsecTotal*xsPol3); } G4StokesVector G4VPolarizedCrossSection::GetPol3() @@ -79,10 +79,22 @@ G4StokesVector G4VPolarizedCrossSection::GetPol3() G4double xsPol1=XSection(G4StokesVector::ZERO,G4StokesVector::P1); G4double xsPol2=XSection(G4StokesVector::ZERO,G4StokesVector::P2); G4double xsPol3=XSection(G4StokesVector::ZERO,G4StokesVector::P3); - pol3=G4ThreeVector(invXsecTotal*xsPol1,invXsecTotal*xsPol2,invXsecTotal*xsPol3); - return pol3; + return G4ThreeVector(invXsecTotal*xsPol1,invXsecTotal*xsPol2,invXsecTotal*xsPol3); +} +// minimal energy fraction in TotalXSection +G4double G4VPolarizedCrossSection::GetXmin(G4double /*y*/) +{ + return fXmin; } +// maximal energy fraction in TotalXSection +G4double G4VPolarizedCrossSection::GetXmax(G4double /*y*/) +{ + return fXmax; +} + + +/* void G4VPolarizedCrossSection::DicePolarization() { // can respect correlation effects, but is limited to @@ -115,18 +127,10 @@ void G4VPolarizedCrossSection::DicePolarization() if ((k&1)==0) pol3=G4StokesVector::P3; else pol3=G4StokesVector::M3; - /* - do { - pol3.DiceP1(); - G4double sigma=XSection(G4StokesVector::ZERO,pol3); - greject = sigma/sigma_max; - if (greject<0. || greject>1.) { - G4cout<<" pol3 rejection error occurred "<GetMomentumDirection()); // calulcate polarization transfer + crossSectionCalculator->SetMaterial(GetCurrentElement()->GetN(), // number of nucleons + GetCurrentElement()->GetZ(), + GetCurrentElement()->GetfCoulomb()); crossSectionCalculator->Initialize(lepEnergy0, gamEnergy1, sintheta, beamPol, G4StokesVector::ZERO); diff --git a/source/processes/electromagnetic/polarisation/src/G4ePolarizedIonisation.cc b/source/processes/electromagnetic/polarisation/src/G4ePolarizedIonisation.cc index 12f231efae..9c2c1cb0a8 100644 --- a/source/processes/electromagnetic/polarisation/src/G4ePolarizedIonisation.cc +++ b/source/processes/electromagnetic/polarisation/src/G4ePolarizedIonisation.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ePolarizedIonisation.cc,v 1.4 2007/06/11 13:37:56 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ePolarizedIonisation.cc,v 1.5 2007/07/10 09:35:37 schaelic Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------------- // // GEANT4 Class file @@ -292,7 +292,7 @@ void G4ePolarizedIonisation::BuildPhysicsTable(const G4ParticleDefinition& part) G4double G4ePolarizedIonisation::ComputeAsymmetry(G4double energy, const G4MaterialCutsCouple* couple, - const G4ParticleDefinition& particle, + const G4ParticleDefinition& aParticle, G4double cut, G4double & tAsymmetry) { @@ -304,19 +304,19 @@ G4double G4ePolarizedIonisation::ComputeAsymmetry(G4double energy, theTargetPolarization=G4ThreeVector(0.,0.,1.); emModel->SetTargetPolarization(theTargetPolarization); emModel->SetBeamPolarization(theTargetPolarization); - G4double sigma2=emModel->CrossSection(couple,&particle,energy,cut,energy); + G4double sigma2=emModel->CrossSection(couple,&aParticle,energy,cut,energy); // calculate transversely polarized cross section theTargetPolarization=G4ThreeVector(1.,0.,0.); emModel->SetTargetPolarization(theTargetPolarization); emModel->SetBeamPolarization(theTargetPolarization); - G4double sigma3=emModel->CrossSection(couple,&particle,energy,cut,energy); + G4double sigma3=emModel->CrossSection(couple,&aParticle,energy,cut,energy); // calculate unpolarized cross section theTargetPolarization=G4ThreeVector(); emModel->SetTargetPolarization(theTargetPolarization); emModel->SetBeamPolarization(theTargetPolarization); - G4double sigma0=emModel->CrossSection(couple,&particle,energy,cut,energy); + G4double sigma0=emModel->CrossSection(couple,&aParticle,energy,cut,energy); // determine assymmetries if (sigma0>0.) { lAsymmetry=sigma2/sigma0-1.; diff --git a/source/processes/electromagnetic/polarisation/src/G4eplusPolarizedAnnihilation.cc b/source/processes/electromagnetic/polarisation/src/G4eplusPolarizedAnnihilation.cc index 6cbb1570f5..0d099a211e 100644 --- a/source/processes/electromagnetic/polarisation/src/G4eplusPolarizedAnnihilation.cc +++ b/source/processes/electromagnetic/polarisation/src/G4eplusPolarizedAnnihilation.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4eplusPolarizedAnnihilation.cc,v 1.4 2007/06/11 13:37:56 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4eplusPolarizedAnnihilation.cc,v 1.6 2007/10/02 11:36:44 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -41,6 +41,7 @@ // 26-07-06 modified cross section (P. Starovoitov) // 21-08-06 interface updated (A. Schaelicke) // 11-06-07, add PostStepGetPhysicalInteractionLength (A.Schalicke) +// 02-10-07, enable AtRest (V.Ivanchenko) // // // Class Description: @@ -74,7 +75,9 @@ G4eplusPolarizedAnnihilation::G4eplusPolarizedAnnihilation(const G4String& name) : G4VEmProcess(name), isInitialised(false), theAsymmetryTable(NULL), theTransverseAsymmetryTable(NULL) -{} +{ + enableAtRestDoIt = true; +} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -304,7 +307,7 @@ void G4eplusPolarizedAnnihilation::BuildAsymmetryTable(const G4ParticleDefinitio G4double G4eplusPolarizedAnnihilation::ComputeAsymmetry(G4double energy, const G4MaterialCutsCouple* couple, - const G4ParticleDefinition& particle, + const G4ParticleDefinition& aParticle, G4double cut, G4double &tAsymmetry) { @@ -315,19 +318,19 @@ G4double G4eplusPolarizedAnnihilation::ComputeAsymmetry(G4double energy, theTargetPolarization=G4ThreeVector(0.,0.,1.); emModel->SetTargetPolarization(theTargetPolarization); emModel->SetBeamPolarization(theTargetPolarization); - G4double sigma2=emModel->CrossSection(couple,&particle,energy,cut,energy); + G4double sigma2=emModel->CrossSection(couple,&aParticle,energy,cut,energy); // calculate transversely polarized cross section theTargetPolarization=G4ThreeVector(1.,0.,0.); emModel->SetTargetPolarization(theTargetPolarization); emModel->SetBeamPolarization(theTargetPolarization); - G4double sigma3=emModel->CrossSection(couple,&particle,energy,cut,energy); + G4double sigma3=emModel->CrossSection(couple,&aParticle,energy,cut,energy); // calculate unpolarized cross section theTargetPolarization=G4ThreeVector(); emModel->SetTargetPolarization(theTargetPolarization); emModel->SetBeamPolarization(theTargetPolarization); - G4double sigma0=emModel->CrossSection(couple,&particle,energy,cut,energy); + G4double sigma0=emModel->CrossSection(couple,&aParticle,energy,cut,energy); // determine assymmetries if (sigma0>0.) { diff --git a/source/processes/electromagnetic/standard/History b/source/processes/electromagnetic/standard/History index a811a058dd..5224d714dd 100644 --- a/source/processes/electromagnetic/standard/History +++ b/source/processes/electromagnetic/standard/History @@ -1,4 +1,4 @@ -$Id: History,v 1.316 2007/06/11 15:01:26 vnivanch Exp $ +$Id: History,v 1.360 2007/12/07 17:35:51 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,142 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +07 December 07: V.Ivant (emstand-V09-00-22) +G4UrbanMscModel90 is created on base of G4UrbanMscModel of release 9.0 +G4hMultipleScattering uses G4UrbanMscModel90 + +30 November 07: V.Ivant (emstand-V09-00-21) +G4UrbanMscModel - L.Urban fix sign of mean scattering angle for + negatively changed particles + +29 November 07: V.Ivant (emstand-V09-00-20) +G4UrbanMscModel - added extra protection in sampling of angle - no + sampling if mean angle below tausmall + +28 November 07: V.Ivant (emstand-V09-00-19) +G4UrbanMscModel - L.Urban added extra protection in sampling of angle + to avoid NaN +G4eCoulombScatteringModel - added a protection against precision lost + +22 November 07: V.Ivant (emstand-V09-00-18) +G4UrbanMscModel - change parameter tausmall to avoid lost of numerical + precision and NaN values + +20 November 07: V.Ivant (emstand-V09-00-17) +G4eCoulombScatteringModel - fixed crash happens at initialisation when + several elements with the same Z are defined + +11 November 07: V.Ivant (emstand-V09-00-16) +G4eCoulombScatteringModel - fixed computation of transport cross section + +09 November 07: V.Ivant (emstand-V09-00-15) +- G4ionIonisation, G4ionGasIonisation, G4CoulombScatteringModel: + fill NIEL energy deposit + +29 October 07: V.Ivant (emstand-V09-00-14) +- G4UrbanMscModel (V.Ivanchenko) - fixed nan for heavy ions introduced + in previous tag + +27 October 07: V.Ivant (emstand-V09-00-13) +- G4eCoulombScatteringModel, G4CoulombScatteringModel use precomputed + Z^1/3 and log(A) values to speed up the code; revised nuclear size + correction + +- G4UrbanMscModel (L.Urban): + - changed initialisation for ions - parameters are protected + from modification + - use sampleScattering method instead of SampleSecondaries + - use different correction to Highland formula for different + particle type (electron, muons, others) + - tuning ComputeGeomPathLength in order to get better low + energy behaviour for heavy particles (mu, hadrons) + - small modification of theta0 in ComputeTheta0 (based on data) + - some old inconsistency/bug has been cured in SampleCosineTheta + now the variable prob is always in [0,1] + +08 October 07: V.Ivant (emstand-V09-00-12) +- G4eCoulombScatteringModel, G4CoulombScatteringModel + - add cut dependence for scattering off electrons + - reorganized protected methods + +02 October 07: V.Ivant (emstand-V09-00-11) +G4eplusAnnihilation - enable AtRest +G4PAIModel - general cleanup, fixed memory leak +G4PAIySection - a new class which substitutes G4PAIxSection, + this class is free of memory leak + +27 Septamber 07: V.Ivant (emstand-V09-00-10) +G4IonFluctuations - added dependence on cut in the formula of width on cut, + reduces cut dependence of Bragg peak width for ions; use Fermi energy + from G4Material +G4BohrFluctuations - minor cleanup + +26 Septamber 07: V.Ivant (emstand-V09-00-09) +G4PAIphotonModel, G4PAIModel - fixed MaxSecondaryEnergy method for + e- and e+ and use it for definition of max energy transfer; + added control on all cout by fVerbose; + +28 August 07: V.Ivant (emstand-V09-00-08) +- G4eCoulombScatteringModel - fixed compilation warning + +15 August 07: V.Ivant (emstand-V09-00-07) +- G4eCoulombScatteringModel and G4CoulombScatteringModel - fixed bug in + computation of screening parameters in SampleSecondary method; + reorganised initialisation of kinematics and screening parameters; + used Z(Z+1) factor to take into account scattering off e- + +13 August 07: V.Ivant (emstand-V09-00-06) +- G4CoulombScatteringModel - fixed bug in kinematic of final state +- G4ionIonisation - add protected methods BetheBlochEnergyThreshold() + and NuclearStoppingFlag() +- G4ionGasIonisation - added complete implementation of the method + CorrectionsAlongStep() and do not call base class +- G4UrbanMscModel - tail of angular distribution modified; compare (L.Urban) + safety with zero after lateral displacement (VI) + +02 August 07: V.Ivant (emstand-V09-00-05) +- G4UrbanMscModel - compare safety not with 0 but with tlimitminfix + +31 July 07: V.Ivant (emstand-V09-00-04) +- G4CoulombScatteringModel - introduce energy threshold between models + with and without nuclear recoil +- G4eCoulombScatteringModel - add array to cash screen parameters +- G4CoulombScatteringModel - fix bug in SamplingSecondaries + +30 July 07: V.Ivant (emstand-V09-00-03) +30 July 07: L.Urban +- G4UrbanMscModel - new, simpler model functions to describe the angular + distribution; theta0 of this distribution has been changed too (now + the form of theta0 is the same as in the Highland formula, but the + parameter values are different for e+/e- and the other (heavy) particles; + the change for the UseDistanseToBoundary case: tlimitmin = 10 stepmin; + some cosmetics in ComputeTruePathLengthLimit. + +28 July 07: V.Ivant (emstand-V09-00-02) +- G4eCoulombScatteringModel - updated screen radius model +- G4ionIonisation - remove obsolete method DefineMassCharge +- G4ionGasIonisation - new ion ionisation process with descrete ion charge and + no equilibrium btween ion and media +- G4BraggModel, G4BraggIonModel - more safe computation of scattering angle + +16 July 07: V.Ivant (emstand-V09-00-01) +- G4CoulombScattering - update InitialiseProcess and PrintInfo methods + to ensure parameters of models change between runs and more clear cout +- G4eCoulombScatteringModel, G4CoulombScatteringModel - added nuclear size + effect; added separate simulation of scattering on atomic electrons taking + into account cuts; fixed cross section for compounds. + +13 July 07: V.Ivant (emstand-V09-00-00) +- 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. + +19 June 07: V.Ivant (emstand-V08-03-10) +- G4UrbanMscModel for skin > 0 use range instead of TrueStepLimit + for computation of distance to boundary, this provides stable + step limitation by GeomFactor (L.Urban) + 11 May 07: V.Ivant (emstand-V08-03-09) - G4MultipleScattering, G4hMultipleScattering - substitute name "G4v71" -> "Minimal" diff --git a/source/processes/electromagnetic/standard/include/G4ASTARStopping.hh b/source/processes/electromagnetic/standard/include/G4ASTARStopping.hh index ae7a1d212c..a21509fb3b 100644 --- a/source/processes/electromagnetic/standard/include/G4ASTARStopping.hh +++ b/source/processes/electromagnetic/standard/include/G4ASTARStopping.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ASTARStopping.hh,v 1.5 2006/06/29 19:49:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4ASTARStopping_h #define G4ASTARStopping_h 1 diff --git a/source/processes/electromagnetic/standard/include/G4BetheBlochModel.hh b/source/processes/electromagnetic/standard/include/G4BetheBlochModel.hh index 439ec01bd6..918fd24a12 100644 --- a/source/processes/electromagnetic/standard/include/G4BetheBlochModel.hh +++ b/source/processes/electromagnetic/standard/include/G4BetheBlochModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BetheBlochModel.hh,v 1.9 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4BetheHeitlerModel.hh b/source/processes/electromagnetic/standard/include/G4BetheHeitlerModel.hh index fa82833a8e..e263daed30 100644 --- a/source/processes/electromagnetic/standard/include/G4BetheHeitlerModel.hh +++ b/source/processes/electromagnetic/standard/include/G4BetheHeitlerModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BetheHeitlerModel.hh,v 1.6 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4BohrFluctuations.hh b/source/processes/electromagnetic/standard/include/G4BohrFluctuations.hh index 515caef069..1968743e31 100644 --- a/source/processes/electromagnetic/standard/include/G4BohrFluctuations.hh +++ b/source/processes/electromagnetic/standard/include/G4BohrFluctuations.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4BohrFluctuations.hh,v 1.2 2006/06/29 19:50:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4BohrFluctuations.hh,v 1.3 2007/09/27 13:53:11 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -112,9 +112,9 @@ inline G4double G4BohrFluctuations::Dispersion( if(!particle) InitialiseMe(dp->GetDefinition()); G4double electronDensity = material->GetElectronDensity(); - kineticEnergy = dp->GetKineticEnergy(); - G4double gam = kineticEnergy/particleMass + 1.0; - beta2 = 1.0 - 1.0/(gam*gam); + kineticEnergy = dp->GetKineticEnergy(); + G4double etot = kineticEnergy + particleMass; + beta2 = kineticEnergy*(kineticEnergy + 2.0*particleMass)/(etot*etot); G4double siga = (1.0/beta2 - 0.5) * twopi_mc2_rcl2 * tmax * length * electronDensity * chargeSquare; diff --git a/source/processes/electromagnetic/standard/include/G4BraggIonModel.hh b/source/processes/electromagnetic/standard/include/G4BraggIonModel.hh index b6a2064195..4fb974619a 100644 --- a/source/processes/electromagnetic/standard/include/G4BraggIonModel.hh +++ b/source/processes/electromagnetic/standard/include/G4BraggIonModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BraggIonModel.hh,v 1.8 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4BraggModel.hh b/source/processes/electromagnetic/standard/include/G4BraggModel.hh index ff831abb75..ea601941bb 100644 --- a/source/processes/electromagnetic/standard/include/G4BraggModel.hh +++ b/source/processes/electromagnetic/standard/include/G4BraggModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BraggModel.hh,v 1.10 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh b/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh index b3fc8dee2c..fe73bdf0c7 100644 --- a/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh +++ b/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh @@ -25,7 +25,7 @@ // // // $Id: G4ComptonScattering.hh,v 1.20 2007/05/23 08:47:34 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //------------------ G4ComptonScattering physics process ----------------------- // by Michel Maire, April 1996 diff --git a/source/processes/electromagnetic/standard/include/G4ComptonScattering52.hh b/source/processes/electromagnetic/standard/include/G4ComptonScattering52.hh index fd1817126f..ce135e5c5d 100644 --- a/source/processes/electromagnetic/standard/include/G4ComptonScattering52.hh +++ b/source/processes/electromagnetic/standard/include/G4ComptonScattering52.hh @@ -25,7 +25,7 @@ // // // $Id: G4ComptonScattering52.hh,v 1.4 2007/05/16 14:00:56 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //------------------ G4ComptonScattering52 physics process ----------------------- // by Michel Maire, April 1996 diff --git a/source/processes/electromagnetic/standard/include/G4CoulombScattering.hh b/source/processes/electromagnetic/standard/include/G4CoulombScattering.hh index 7ea8d57b0f..1fce7c6a22 100644 --- a/source/processes/electromagnetic/standard/include/G4CoulombScattering.hh +++ b/source/processes/electromagnetic/standard/include/G4CoulombScattering.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4CoulombScattering.hh,v 1.6 2007/05/23 08:47:34 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4CoulombScattering.hh,v 1.8 2007/07/31 17:24:04 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -70,6 +70,7 @@ public: void SetQ2Max(G4double); + // obsolete method to be removed void SetBuildTableFlag(G4bool); // Print out of the class parameters @@ -88,8 +89,11 @@ private: G4double thetaMin; G4double thetaMax; G4double q2Max; + G4double thEnergy; + G4double thEnergyElec; G4bool isInitialised; - G4bool buildTableFlag; + G4bool buildElmTableFlag; + const G4ParticleDefinition* aParticle; }; @@ -124,10 +128,8 @@ inline void G4CoulombScattering::SetQ2Max(G4double val) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline void G4CoulombScattering::SetBuildTableFlag(G4bool val) -{ - buildTableFlag = val; -} +inline void G4CoulombScattering::SetBuildTableFlag(G4bool) +{} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/include/G4CoulombScatteringModel.hh b/source/processes/electromagnetic/standard/include/G4CoulombScatteringModel.hh index ee88b5abb8..fad0ec1e47 100644 --- a/source/processes/electromagnetic/standard/include/G4CoulombScatteringModel.hh +++ b/source/processes/electromagnetic/standard/include/G4CoulombScatteringModel.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4CoulombScatteringModel.hh,v 1.6 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4CoulombScatteringModel.hh,v 1.11 2007/10/09 08:16:29 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -42,6 +42,7 @@ // logic of building - only elements from G4ElementTable // 08.08.06 V.Ivanchenko build internal table in ekin scale, introduce faclim // 19.10.06 V.Ivanchenko use inheritance from G4eCoulombScatteringModel +// 09.10.07 V.Ivanchenko reorganized methods, add cut dependence in scattering off e- // // Class Description: // @@ -71,11 +72,19 @@ class G4CoulombScatteringModel : public G4eCoulombScatteringModel public: G4CoulombScatteringModel(G4double thetaMin = 0.0, G4double thetaMax = pi, - G4bool build = true, G4double tlim = TeV*TeV, + G4bool build = false, G4double tlim = TeV*TeV, const G4String& nam = "CoulombScattering"); virtual ~G4CoulombScatteringModel(); + virtual G4double ComputeCrossSectionPerAtom( + const G4ParticleDefinition*, + G4double kinEnergy, + G4double Z, + G4double A, + G4double cut, + G4double emax); + virtual void SampleSecondaries(std::vector*, const G4MaterialCutsCouple*, const G4DynamicParticle*, @@ -84,10 +93,6 @@ public: private: - G4double CalculateCrossSectionPerAtom(const G4ParticleDefinition*, - G4double kinEnergy, - G4double Z); - G4double SelectIsotope(const G4Element*); // hide assignment operator @@ -96,8 +101,6 @@ private: G4ParticleTable* theParticleTable; const G4NistManager* theMatManager; - const G4ParticleDefinition* theProton; - }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/standard/include/G4GammaConversion.hh b/source/processes/electromagnetic/standard/include/G4GammaConversion.hh index 1cec6b4a1f..48ed8dfd98 100644 --- a/source/processes/electromagnetic/standard/include/G4GammaConversion.hh +++ b/source/processes/electromagnetic/standard/include/G4GammaConversion.hh @@ -25,7 +25,7 @@ // // // $Id: G4GammaConversion.hh,v 1.22 2007/05/23 08:47:34 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //------------------ G4GammaConversion physics process------------------------ diff --git a/source/processes/electromagnetic/standard/include/G4InitXscPAI.hh b/source/processes/electromagnetic/standard/include/G4InitXscPAI.hh index ff1366fe21..fa1f56d577 100644 --- a/source/processes/electromagnetic/standard/include/G4InitXscPAI.hh +++ b/source/processes/electromagnetic/standard/include/G4InitXscPAI.hh @@ -25,7 +25,7 @@ // // // $Id: G4InitXscPAI.hh,v 1.8 2006/06/29 19:50:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4InitXscPAI.hh -- header file diff --git a/source/processes/electromagnetic/standard/include/G4IonFluctuations.hh b/source/processes/electromagnetic/standard/include/G4IonFluctuations.hh index 2282979614..6452c4b865 100644 --- a/source/processes/electromagnetic/standard/include/G4IonFluctuations.hh +++ b/source/processes/electromagnetic/standard/include/G4IonFluctuations.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4IonFluctuations.hh,v 1.2 2006/06/29 19:50:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4IonFluctuations.hh,v 1.3 2007/09/27 13:53:11 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4KleinNishinaCompton.hh b/source/processes/electromagnetic/standard/include/G4KleinNishinaCompton.hh index a75032f8b7..03fe795f07 100644 --- a/source/processes/electromagnetic/standard/include/G4KleinNishinaCompton.hh +++ b/source/processes/electromagnetic/standard/include/G4KleinNishinaCompton.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4KleinNishinaCompton.hh,v 1.9 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4MollerBhabhaModel.hh b/source/processes/electromagnetic/standard/include/G4MollerBhabhaModel.hh index b2ed61ca6c..159b5e7586 100644 --- a/source/processes/electromagnetic/standard/include/G4MollerBhabhaModel.hh +++ b/source/processes/electromagnetic/standard/include/G4MollerBhabhaModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MollerBhabhaModel.hh,v 1.19 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4MscModel71.hh b/source/processes/electromagnetic/standard/include/G4MscModel71.hh index 8c117fe744..e5fc923b47 100644 --- a/source/processes/electromagnetic/standard/include/G4MscModel71.hh +++ b/source/processes/electromagnetic/standard/include/G4MscModel71.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MscModel71.hh,v 1.5 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4MultipleScattering.hh b/source/processes/electromagnetic/standard/include/G4MultipleScattering.hh index 206f9da9b0..0406e14998 100644 --- a/source/processes/electromagnetic/standard/include/G4MultipleScattering.hh +++ b/source/processes/electromagnetic/standard/include/G4MultipleScattering.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MultipleScattering.hh,v 1.35 2007/05/18 18:43:32 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4MultipleScattering71.hh b/source/processes/electromagnetic/standard/include/G4MultipleScattering71.hh index a7c5f1bd7f..5070da43de 100644 --- a/source/processes/electromagnetic/standard/include/G4MultipleScattering71.hh +++ b/source/processes/electromagnetic/standard/include/G4MultipleScattering71.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MultipleScattering71.hh,v 1.5 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //------------- G4MultipleScattering71 physics process -------------------------- @@ -58,7 +58,7 @@ //------------------------------------------------------------------------------ // // $Id: G4MultipleScattering71.hh,v 1.5 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // class description // diff --git a/source/processes/electromagnetic/standard/include/G4PAIModel.hh b/source/processes/electromagnetic/standard/include/G4PAIModel.hh index 9b867c15c3..63e8925f49 100644 --- a/source/processes/electromagnetic/standard/include/G4PAIModel.hh +++ b/source/processes/electromagnetic/standard/include/G4PAIModel.hh @@ -37,6 +37,7 @@ // // Modifications: // 08-04-05 Major optimisation of internal interfaces (V.Ivantchenko) +// 26-09-07 Fixed tmax computation (V.Ivantchenko) // // // Class Description: @@ -54,6 +55,7 @@ #include "G4VEmModel.hh" #include "globals.hh" #include "G4VEmFluctuationModel.hh" +#include "G4PAIySection.hh" class G4PhysicsLogVector; class G4PhysicsTable; @@ -104,14 +106,15 @@ public: void DefineForRegion(const G4Region* r) ; void ComputeSandiaPhotoAbsCof(); - void BuildPAIonisationTable(const G4ParticleDefinition*); - void BuildLambdaVector(const G4MaterialCutsCouple* matCutsCouple); + void BuildPAIonisationTable(); + void BuildLambdaVector(); + G4double GetdNdxCut( G4int iPlace, G4double transferCut); G4double GetdEdxCut( G4int iPlace, G4double transferCut); G4double GetPostStepTransfer( G4double scaledTkin ); G4double GetEnergyTransfer( G4int iPlace, - G4double position, - G4int iTransfer ); + G4double position, + G4int iTransfer ); void SetVerboseLevel(G4int verbose){fVerbose=verbose;}; @@ -139,6 +142,7 @@ private: G4int fTotBin; G4int fMeanNumber; G4PhysicsLogVector* fParticleEnergyVector ; + G4PAIySection fPAIySection; // vectors @@ -151,6 +155,10 @@ private: std::vector fMaterialCutsCoupleVector; std::vector fPAIRegionVector; + const G4MaterialCutsCouple* fCutCouple; + const G4Material* fMaterial; + G4double fDeltaCutInKinEnergy; + size_t fMatIndex ; G4double** fSandiaPhotoAbsCof ; G4int fSandiaIntervalNumber ; @@ -158,13 +166,15 @@ private: G4PhysicsLogVector* fdEdxVector ; std::vector fdEdxTable ; - G4PhysicsLogVector* fLambdaVector ; - std::vector fLambdaTable ; + G4PhysicsLogVector* fLambdaVector ; + std::vector fLambdaTable ; - G4PhysicsLogVector* fdNdxCutVector ; - std::vector fdNdxCutTable ; + G4PhysicsLogVector* fdNdxCutVector ; + std::vector fdNdxCutTable ; const G4ParticleDefinition* fParticle; + const G4ParticleDefinition* fElectron; + const G4ParticleDefinition* fPositron; G4ParticleChangeForLoss* fParticleChange; G4double fMass; @@ -177,18 +187,24 @@ private: G4double fBg2lim; G4double fTaulim; G4double fQc; + + G4bool isInitialised; }; ///////////////////////////////////////////////////////////////////// -inline G4double G4PAIModel::MaxSecondaryEnergy( const G4ParticleDefinition*, +inline G4double G4PAIModel::MaxSecondaryEnergy( const G4ParticleDefinition* p, G4double kinEnergy) { - - G4double gamma= kinEnergy/fMass + 1.0; - G4double tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) / - (1. + 2.0*gamma*fRatio + fRatio*fRatio); - + G4double tmax = kinEnergy; + if(p == fElectron) tmax *= 0.5; + else if(p != fPositron) { + G4double mass = p->GetPDGMass(); + G4double ratio= electron_mass_c2/mass; + G4double gamma= kinEnergy/mass + 1.0; + tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) / + (1. + 2.0*gamma*ratio + ratio*ratio); + } return tmax; } diff --git a/source/processes/electromagnetic/standard/include/G4PAIPhotonModel.hh b/source/processes/electromagnetic/standard/include/G4PAIPhotonModel.hh index 694cb9caef..17b9222370 100644 --- a/source/processes/electromagnetic/standard/include/G4PAIPhotonModel.hh +++ b/source/processes/electromagnetic/standard/include/G4PAIPhotonModel.hh @@ -37,6 +37,7 @@ // // Modifications: // 11.04.05 Major optimisation of internal interfaces (V.Ivantchenko) +// 26-09-07 Fixed tmax computation (V.Ivantchenko) // // // Class Description: @@ -141,6 +142,7 @@ private: G4double fHighestKineticEnergy; G4int fTotBin; G4int fMeanNumber; + G4int fVerbose; G4PhysicsLogVector* fProtonEnergyVector ; @@ -183,6 +185,8 @@ private: const G4ParticleDefinition* fParticle; + const G4ParticleDefinition* fElectron; + const G4ParticleDefinition* fPositron; G4ParticleChangeForLoss* fParticleChange; G4double fMass; @@ -195,18 +199,24 @@ private: G4double fBg2lim; G4double fTaulim; G4double fQc; + + G4bool isInitialised; }; ///////////////////////////////////////////////////////////////////// -inline G4double G4PAIPhotonModel::MaxSecondaryEnergy( const G4ParticleDefinition*, +inline G4double G4PAIPhotonModel::MaxSecondaryEnergy( const G4ParticleDefinition* p, G4double kinEnergy) { - - G4double gamma= kinEnergy/fMass + 1.0; - G4double tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) / - (1. + 2.0*gamma*fRatio + fRatio*fRatio); - + G4double tmax = kinEnergy; + if(p == fElectron) tmax *= 0.5; + else if(p != fPositron) { + G4double mass = p->GetPDGMass(); + G4double ratio= electron_mass_c2/mass; + G4double gamma= kinEnergy/mass + 1.0; + tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) / + (1. + 2.0*gamma*ratio + ratio*ratio); + } return tmax; } @@ -214,13 +224,9 @@ inline G4double G4PAIPhotonModel::MaxSecondaryEnergy( const G4ParticleDefinition inline void G4PAIPhotonModel::DefineForRegion(const G4Region* r) { - // G4Region* rPAI = r; - // fPAIRegionVector.push_back(rPAI); fPAIRegionVector.push_back(r); } - - #endif diff --git a/source/processes/electromagnetic/standard/include/G4PAIxSection.hh b/source/processes/electromagnetic/standard/include/G4PAIxSection.hh index b7c4fc213b..3b567c0671 100644 --- a/source/processes/electromagnetic/standard/include/G4PAIxSection.hh +++ b/source/processes/electromagnetic/standard/include/G4PAIxSection.hh @@ -25,7 +25,7 @@ // // // $Id: G4PAIxSection.hh,v 1.12 2006/06/29 19:50:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4PAIxSection.hh -- header file diff --git a/source/processes/electromagnetic/standard/include/G4PAIySection.hh b/source/processes/electromagnetic/standard/include/G4PAIySection.hh new file mode 100644 index 0000000000..0675ebd42c --- /dev/null +++ b/source/processes/electromagnetic/standard/include/G4PAIySection.hh @@ -0,0 +1,250 @@ +// +// ******************************************************************** +// * 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: G4PAIySection.hh,v 1.1 2007/10/01 17:45:14 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// G4PAIySection.hh -- header file +// +// +// Preparation of ionizing collision cross section according to Photo Absorption +// Ionization (PAI) model for simulation of ionization energy losses in very thin +// absorbers. Author: Vladimir.Grichine@cern.ch +// +// History: +// +// 01.10.07, V.Ivanchenko create using V.Grichine G4PAIxSection class + +#ifndef G4PAIYSECTION_HH +#define G4PAIYSECTION_HH + +#include "G4ios.hh" +#include "globals.hh" +#include "Randomize.hh" + +#include "G4SandiaTable.hh" + +class G4PAIySection +{ +public: + + G4PAIySection(); + + ~G4PAIySection(); + + void Initialize(const G4Material* material, + G4double maxEnergyTransfer, + G4double betaGammaSq); + + void InitPAI() ; + + void NormShift( G4double betaGammaSq ) ; + + void SplainPAI( G4double betaGammaSq ) ; + + // Physical methods + G4double RutherfordIntegral( G4int intervalNumber, + G4double limitLow, + G4double limitHigh ) ; + + G4double ImPartDielectricConst( G4int intervalNumber, + G4double energy ) ; + + G4double RePartDielectricConst(G4double energy) ; + + G4double DifPAIySection( G4int intervalNumber, + G4double betaGammaSq ) ; + + G4double PAIdNdxCerenkov( G4int intervalNumber, + G4double betaGammaSq ) ; + + G4double PAIdNdxPlasmon( G4int intervalNumber, + G4double betaGammaSq ) ; + + void IntegralPAIySection() ; + void IntegralCerenkov() ; + void IntegralPlasmon() ; + + G4double SumOverInterval(G4int intervalNumber) ; + G4double SumOverIntervaldEdx(G4int intervalNumber) ; + G4double SumOverInterCerenkov(G4int intervalNumber) ; + G4double SumOverInterPlasmon(G4int intervalNumber) ; + + G4double SumOverBorder( G4int intervalNumber, + G4double energy ) ; + G4double SumOverBorderdEdx( G4int intervalNumber, + G4double energy ) ; + G4double SumOverBordCerenkov( G4int intervalNumber, + G4double energy ) ; + G4double SumOverBordPlasmon( G4int intervalNumber, + G4double energy ) ; + + G4double GetStepEnergyLoss( G4double step ) ; + G4double GetStepCerenkovLoss( G4double step ) ; + G4double GetStepPlasmonLoss( G4double step ) ; + + // Inline access functions + + G4int GetNumberOfGammas() const { return fNumberOfGammas ; } + + G4int GetSplineSize() const { return fSplineNumber ; } + + G4int GetIntervalNumber() const { return fIntervalNumber ; } + + G4double GetEnergyInterval(G4int i){ return fEnergyInterval[i] ; } + + G4double GetDifPAIySection(G4int i){ return fDifPAIySection[i] ; } + G4double GetPAIdNdxCrenkov(G4int i){ return fdNdxCerenkov[i] ; } + G4double GetPAIdNdxPlasmon(G4int i){ return fdNdxPlasmon[i] ; } + + G4double GetMeanEnergyLoss() const {return fIntegralPAIySection[0] ; } + G4double GetMeanCerenkovLoss() const {return fIntegralCerenkov[0] ; } + G4double GetMeanPlasmonLoss() const {return fIntegralPlasmon[0] ; } + + G4double GetNormalizationCof() const { return fNormalizationCof ; } + + inline G4double GetPAItable(G4int i,G4int j) const ; + + inline G4double GetLorentzFactor(G4int i) const ; + + inline G4double GetSplineEnergy(G4int i) const ; + + inline G4double GetIntegralPAIySection(G4int i) const ; + inline G4double GetIntegralPAIdEdx(G4int i) const ; + inline G4double GetIntegralCerenkov(G4int i) const ; + inline G4double GetIntegralPlasmon(G4int i) const ; + +private : + +// Local class constants + + static const G4double fDelta ; // energy shift from interval border = 0.001 + static const G4double fError ; // error in lin-log approximation = 0.005 + + static G4int fNumberOfGammas ; // = 111 ; + static const G4double fLorentzFactor[112] ; // static gamma array + + static + const G4int fRefGammaNumber ; // The number of gamma for creation of spline (15) + + G4int fIntervalNumber ; // The number of energy intervals + G4double fNormalizationCof ; // Normalization cof for PhotoAbsorptionXsection + + G4double fDensity ; // Current density + G4double fElectronDensity ; // Current electron (number) density + G4int fSplineNumber ; // Current size of spline + + G4SandiaTable* fSandia; + + G4double fEnergyInterval[500] ; + G4double fA1[500] ; + G4double fA2[500] ; + G4double fA3[500] ; + G4double fA4[500] ; + + static + const G4int fMaxSplineSize ; // Max size of output splain arrays = 500 + + G4double fSplineEnergy[500] ; // energy points of splain + G4double fRePartDielectricConst[500] ; // Real part of dielectric const + G4double fImPartDielectricConst[500] ; // Imaginary part of dielectric const + G4double fIntegralTerm[500] ; // Integral term in PAI cross section + G4double fDifPAIySection[500] ; // Differential PAI cross section + G4double fdNdxCerenkov[500] ; // dNdx of Cerenkov collisions + G4double fdNdxPlasmon[500] ; // dNdx of Plasmon collisions + + G4double fIntegralPAIySection[500] ; // Integral PAI cross section ? + G4double fIntegralPAIdEdx[500] ; // Integral PAI dEdx ? + G4double fIntegralCerenkov[500] ; // Integral Cerenkov N>omega ? + G4double fIntegralPlasmon[500] ; // Integral Plasmon N>omega ? + + G4double fPAItable[500][112] ; // Output array + +} ; + +//////////////// Inline methods ////////////////////////////////// +// + + +inline G4double G4PAIySection::GetPAItable(G4int i, G4int j) const +{ + return fPAItable[i][j] ; +} + +inline G4double G4PAIySection::GetLorentzFactor(G4int j) const +{ + return fLorentzFactor[j] ; +} + +inline G4double G4PAIySection::GetSplineEnergy(G4int i) const +{ + if(i < 1 || i > fSplineNumber) + { + G4Exception("Invalid argument in G4PAIySection::GetSplineEnergy"); + } + return fSplineEnergy[i] ; +} + +inline G4double G4PAIySection::GetIntegralPAIySection(G4int i) const +{ + if(i < 1 || i > fSplineNumber) + { + G4Exception("Invalid argument in G4PAIySection::GetIntegralPAIySection"); + } + return fIntegralPAIySection[i] ; +} + +inline G4double G4PAIySection::GetIntegralPAIdEdx(G4int i) const +{ + if(i < 1 || i > fSplineNumber) + { + G4Exception("Invalid argument in G4PAIySection::GetIntegralPAIySection"); + } + return fIntegralPAIdEdx[i] ; +} + +inline G4double G4PAIySection::GetIntegralCerenkov(G4int i) const +{ + if(i < 1 || i > fSplineNumber) + { + G4Exception("Invalid argument in G4PAIySection::GetIntegralCerenkov"); + } + return fIntegralCerenkov[i] ; +} + +inline G4double G4PAIySection::GetIntegralPlasmon(G4int i) const +{ + if(i < 1 || i > fSplineNumber) + { + G4Exception("Invalid argument in G4PAIySection::GetIntegralPlasmon"); + } + return fIntegralPlasmon[i] ; +} + +#endif + +// ----------------- end of G4PAIySection header file ------------------- diff --git a/source/processes/electromagnetic/standard/include/G4PEEffectModel.hh b/source/processes/electromagnetic/standard/include/G4PEEffectModel.hh index b9c74ae081..9f237e2124 100644 --- a/source/processes/electromagnetic/standard/include/G4PEEffectModel.hh +++ b/source/processes/electromagnetic/standard/include/G4PEEffectModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PEEffectModel.hh,v 1.6 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4PSTARStopping.hh b/source/processes/electromagnetic/standard/include/G4PSTARStopping.hh index 6366b583de..22bc410319 100644 --- a/source/processes/electromagnetic/standard/include/G4PSTARStopping.hh +++ b/source/processes/electromagnetic/standard/include/G4PSTARStopping.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PSTARStopping.hh,v 1.4 2006/06/29 19:50:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4PSTARStopping_h #define G4PSTARStopping_h 1 diff --git a/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh b/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh index 009c7ef6f9..17b10e1135 100644 --- a/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh +++ b/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhotoElectricEffect.hh,v 1.24 2007/05/23 08:47:34 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //------------------ G4PhotoElectricEffect physics process ------------------ diff --git a/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh b/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh index c187448d6e..597d1d3121 100644 --- a/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh +++ b/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh @@ -25,7 +25,7 @@ // // // $Id: G4PolarizedComptonScattering.hh,v 1.9 2006/06/29 19:51:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // --------- G4PolarizedComptonScattering physics process ---------------------- // by Vicente Lara, March 1998 diff --git a/source/processes/electromagnetic/standard/include/G4UniversalFluctuation.hh b/source/processes/electromagnetic/standard/include/G4UniversalFluctuation.hh index 5a4b61d974..c3f65fdf59 100644 --- a/source/processes/electromagnetic/standard/include/G4UniversalFluctuation.hh +++ b/source/processes/electromagnetic/standard/include/G4UniversalFluctuation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4UniversalFluctuation.hh,v 1.5 2007/04/03 11:08:36 urban Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4UrbanMscModel.hh b/source/processes/electromagnetic/standard/include/G4UrbanMscModel.hh index ac6468d710..010569ff58 100644 --- a/source/processes/electromagnetic/standard/include/G4UrbanMscModel.hh +++ b/source/processes/electromagnetic/standard/include/G4UrbanMscModel.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4UrbanMscModel.hh,v 1.29 2007/06/21 15:04:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4UrbanMscModel.hh,v 1.31 2007/10/29 08:42:43 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -114,28 +114,29 @@ public: virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); - virtual G4double ComputeCrossSectionPerAtom( - const G4ParticleDefinition* particle, - G4double KineticEnergy, - G4double AtomicNumber, - G4double AtomicWeight=0., - G4double cut =0., - G4double emax=DBL_MAX); + G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition* particle, + G4double KineticEnergy, + G4double AtomicNumber, + G4double AtomicWeight=0., + G4double cut =0., + G4double emax=DBL_MAX); - virtual void SampleSecondaries(std::vector*, - const G4MaterialCutsCouple*, - const G4DynamicParticle*, - G4double length, - G4double safety); + void SampleSecondaries(std::vector*, + const G4MaterialCutsCouple*, + const G4DynamicParticle*, + G4double, + G4double); - virtual G4double ComputeTruePathLengthLimit( - const G4Track& track, - G4PhysicsTable* theLambdaTable, - G4double currentMinimalStep); + void SampleScattering(const G4DynamicParticle*, + G4double safety); - virtual G4double ComputeGeomPathLength(G4double truePathLength); + G4double ComputeTruePathLengthLimit(const G4Track& track, + G4PhysicsTable* theLambdaTable, + G4double currentMinimalStep); - virtual G4double ComputeTrueStepLength(G4double geomStepLength); + G4double ComputeGeomPathLength(G4double truePathLength); + + G4double ComputeTrueStepLength(G4double geomStepLength); G4double ComputeTheta0(G4double truePathLength, G4double KineticEnergy); @@ -180,6 +181,8 @@ private: G4double mass; G4double charge; + G4double masslimite,masslimitmu; + G4double taubig; G4double tausmall; G4double taulim; diff --git a/source/processes/electromagnetic/standard/include/G4UrbanMscModel90.hh b/source/processes/electromagnetic/standard/include/G4UrbanMscModel90.hh new file mode 100644 index 0000000000..c51592a04c --- /dev/null +++ b/source/processes/electromagnetic/standard/include/G4UrbanMscModel90.hh @@ -0,0 +1,277 @@ +// +// ******************************************************************** +// * 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: G4UrbanMscModel90.hh,v 1.1 2007/12/07 17:35:52 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ------------------------------------------------------------------- +// +// +// GEANT4 Class header file +// +// +// File name: G4UrbanMscModel90 +// +// Author: V.Ivanchenko clone Laszlo Urban model +// +// Creation date: 07.12.2007 +// +// Modifications: +// +// +// Class Description: +// +// Implementation of the model of multiple scattering based on +// H.W.Lewis Phys Rev 78 (1950) 526 and L.Urban model + +// ------------------------------------------------------------------- +// + +#ifndef G4UrbanMscModel90_h +#define G4UrbanMscModel90_h 1 + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4VEmModel.hh" +#include "G4PhysicsTable.hh" +#include "G4MscStepLimitType.hh" + +class G4ParticleChangeForMSC; +class G4SafetyHelper; +class G4LossTableManager; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +class G4UrbanMscModel90 : public G4VEmModel +{ + +public: + + G4UrbanMscModel90(G4double facrange, G4double dtrl, G4double lambdalimit, + G4double facgeom,G4double skin, + G4bool samplez, G4MscStepLimitType stepAlg, + const G4String& nam = "UrbanMscUni"); + + virtual ~G4UrbanMscModel90(); + + virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); + + G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition* particle, + G4double KineticEnergy, + G4double AtomicNumber, + G4double AtomicWeight=0., + G4double cut =0., + G4double emax=DBL_MAX); + + void SampleSecondaries(std::vector*, + const G4MaterialCutsCouple*, + const G4DynamicParticle*, + G4double, + G4double); + + void SampleScattering(const G4DynamicParticle*, + G4double safety); + + G4double ComputeTruePathLengthLimit(const G4Track& track, + G4PhysicsTable* theLambdaTable, + G4double currentMinimalStep); + + G4double ComputeGeomPathLength(G4double truePathLength); + + G4double ComputeTrueStepLength(G4double geomStepLength); + + G4double ComputeTheta0(G4double truePathLength, + G4double KineticEnergy); + + void SetStepLimitType(G4MscStepLimitType); + + void SetLateralDisplasmentFlag(G4bool val); + + void SetRangeFactor(G4double); + + void SetGeomFactor(G4double); + + void SetSkin(G4double); + +private: + + G4double SampleCosineTheta(G4double trueStepLength, G4double KineticEnergy); + + G4double SampleDisplacement(); + + G4double LatCorrelation(); + + G4double GetLambda(G4double kinEnergy); + + void GeomLimit(const G4Track& track); + + void SetParticle(const G4ParticleDefinition* p); + + // hide assignment operator + G4UrbanMscModel90 & operator=(const G4UrbanMscModel90 &right); + G4UrbanMscModel90(const G4UrbanMscModel90&); + + const G4ParticleDefinition* particle; + G4ParticleChangeForMSC* fParticleChange; + + G4SafetyHelper* safetyHelper; + G4PhysicsTable* theLambdaTable; + const G4MaterialCutsCouple* couple; + G4LossTableManager* theManager; + + + G4double mass; + G4double charge; + + G4double masslimite,masslimitmu; + + G4double taubig; + G4double tausmall; + G4double taulim; + G4double currentTau; + G4double dtrl; + + G4double lambdalimit; + G4double facrange; + G4double frscaling1,frscaling2; + G4double tlimit; + G4double tlimitmin; + G4double tlimitminfix; + + G4double nstepmax; + G4double geombig; + G4double geommin; + G4double geomlimit; + G4double facgeom; + G4double skin; + G4double skindepth; + G4double smallstep; + + G4double presafety; + G4double facsafety; + + G4double lambda0; + G4double lambdaeff; + G4double tPathLength; + G4double zPathLength; + G4double par1,par2,par3 ; + + G4double stepmin ; + + G4double currentKinEnergy; + G4double currentRange; + G4double currentRadLength; + + G4double Zeff; + + G4int currentMaterialIndex; + + G4MscStepLimitType steppingAlgorithm; + + G4bool samplez; + G4bool latDisplasment; + G4bool isInitialized; + + G4bool inside; + G4bool insideskin; + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +void G4UrbanMscModel90::SetLateralDisplasmentFlag(G4bool val) +{ + latDisplasment = val; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +void G4UrbanMscModel90::SetSkin(G4double val) +{ + skin = val; + stepmin = tlimitminfix; + skindepth = skin*stepmin; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +void G4UrbanMscModel90::SetRangeFactor(G4double val) +{ + facrange = val; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +void G4UrbanMscModel90::SetGeomFactor(G4double val) +{ + facgeom = val; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +void G4UrbanMscModel90::SetStepLimitType(G4MscStepLimitType val) +{ + steppingAlgorithm = val; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +G4double G4UrbanMscModel90::GetLambda(G4double e) +{ + G4double x; + if(theLambdaTable) { + G4bool b; + x = ((*theLambdaTable)[currentMaterialIndex])->GetValue(e, b); + } else { + x = CrossSection(couple,particle,e); + } + if(x > DBL_MIN) x = 1./x; + else x = DBL_MAX; + return x; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +void G4UrbanMscModel90::SetParticle(const G4ParticleDefinition* p) +{ + if (p != particle) { + particle = p; + mass = p->GetPDGMass(); + charge = p->GetPDGCharge()/eplus; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#endif + diff --git a/source/processes/electromagnetic/standard/include/G4WaterStopping.hh b/source/processes/electromagnetic/standard/include/G4WaterStopping.hh index c521ec5c7a..8f9873ab39 100644 --- a/source/processes/electromagnetic/standard/include/G4WaterStopping.hh +++ b/source/processes/electromagnetic/standard/include/G4WaterStopping.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4WaterStopping.hh,v 1.2 2006/06/29 19:51:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4WaterStopping_h #define G4WaterStopping_h 1 diff --git a/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh b/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh index 0179a310c7..5e9f70ecba 100644 --- a/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh +++ b/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eBremsstrahlung.hh,v 1.36 2007/05/23 08:47:34 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4eBremsstrahlungModel.hh b/source/processes/electromagnetic/standard/include/G4eBremsstrahlungModel.hh index 420cbd5cf7..613dfe3154 100644 --- a/source/processes/electromagnetic/standard/include/G4eBremsstrahlungModel.hh +++ b/source/processes/electromagnetic/standard/include/G4eBremsstrahlungModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eBremsstrahlungModel.hh,v 1.22 2007/05/23 08:47:34 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4eCoulombScatteringModel.hh b/source/processes/electromagnetic/standard/include/G4eCoulombScatteringModel.hh index d910ab5468..b291df9f3f 100644 --- a/source/processes/electromagnetic/standard/include/G4eCoulombScatteringModel.hh +++ b/source/processes/electromagnetic/standard/include/G4eCoulombScatteringModel.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4eCoulombScatteringModel.hh,v 1.6 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4eCoulombScatteringModel.hh,v 1.20 2007/10/24 10:42:05 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -43,6 +43,7 @@ // 08.08.06 V.Ivanchenko build internal table in ekin scale, introduce faclim // 19.08.06 V.Ivanchenko add inline function ScreeningParameter and // make some members protected +// 09.10.07 V.Ivanchenko reorganized methods, add cut dependence in scattering off e- // // Class Description: // @@ -62,9 +63,11 @@ #include "G4VEmModel.hh" #include "G4PhysicsTable.hh" +#include "G4NistManager.hh" #include "globals.hh" class G4ParticleChangeForGamma; +class G4ParticleDefinition; class G4eCoulombScatteringModel : public G4VEmModel { @@ -72,7 +75,7 @@ class G4eCoulombScatteringModel : public G4VEmModel public: G4eCoulombScatteringModel(G4double thetaMin = 0.0, G4double thetaMax = pi, - G4bool build = true, G4double tlim = TeV*TeV, + G4bool build = false, G4double tlim = TeV*TeV, const G4String& nam = "eCoulombScattering"); virtual ~G4eCoulombScatteringModel(); @@ -81,11 +84,11 @@ public: virtual G4double ComputeCrossSectionPerAtom( const G4ParticleDefinition*, - G4double kinEnergy, - G4double Z, - G4double A, - G4double cut, - G4double emax); + G4double kinEnergy, + G4double Z, + G4double A, + G4double cut, + G4double emax); virtual void SampleSecondaries(std::vector*, const G4MaterialCutsCouple*, @@ -95,28 +98,65 @@ public: protected: - G4double ScreeningParameter(G4double Z, G4double q2, - G4double mom2, G4double invbeta2); + G4double ComputeElectronXSectionPerAtom( + const G4ParticleDefinition*, + G4double kinEnergy, + G4double Z, + G4double A, + G4double cut); + + virtual G4double CalculateCrossSectionPerAtom( + const G4ParticleDefinition*, + G4double kinEnergy, + G4double Z, G4double A); + + inline void SetupParticle(const G4ParticleDefinition*); + + inline void SetupKinematic(G4double kinEnergy); + + inline void SetupTarget(G4double Z, G4double A, G4double kinEnergy); private: - G4double CalculateCrossSectionPerAtom(const G4ParticleDefinition*, - G4double kinEnergy, - G4double Z); - // hide assignment operator G4eCoulombScatteringModel & operator=(const G4eCoulombScatteringModel &right); G4eCoulombScatteringModel(const G4eCoulombScatteringModel&); protected: + const G4ParticleDefinition* theProton; + const G4ParticleDefinition* theElectron; + const G4ParticleDefinition* thePositron; + G4ParticleChangeForGamma* fParticleChange; + G4NistManager* fNistManager; G4double coeff; + G4double constn; G4double cosThetaMin; G4double cosThetaMax; + G4double cosTetMaxNuc; + G4double cosTetMaxElec; G4double q2Limit; + G4double elecXSection; + G4double nucXSection; + G4double ecut; + // projectile + const G4ParticleDefinition* particle; + + G4double chargeSquare; + G4double spin; + G4double mass; + G4double tkin; + G4double mom2; + G4double invbeta2; + + // target + G4double targetZ; + G4double targetA; + G4double screenZ; + G4double formfactA; private: @@ -136,36 +176,53 @@ private: G4bool isInitialised; }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4double G4eCoulombScatteringModel::ComputeCrossSectionPerAtom( - const G4ParticleDefinition* p, - G4double kinEnergy, - G4double Z, G4double, - G4double, G4double) +inline +void G4eCoulombScatteringModel::SetupParticle(const G4ParticleDefinition* p) { - G4double x; - G4bool b; - if(theCrossSectionTable) { - x = std::exp((((*theCrossSectionTable)[index[G4int(Z)]])) - ->GetValue(kinEnergy, b)); - } else x = CalculateCrossSectionPerAtom(p, kinEnergy, Z); - - // G4cout << "G4eCoulombScatteringModel: e= " << kinEnergy - // << " cs= " << x << G4endl; - return x; -} - -inline G4double G4eCoulombScatteringModel::ScreeningParameter( - G4double Z, - G4double q2, - G4double mom2, - G4double invbeta2) -{ - G4double a = invbeta2*Z*Z*q2*alpha2; - return std::pow(Z,0.6666667)*a0*(1.13 + 3.76*a)/mom2; + // Initialise mass and charge + if(p != particle) { + particle = p; + mass = particle->GetPDGMass(); + spin = particle->GetPDGSpin(); + G4double q = particle->GetPDGCharge()/eplus; + chargeSquare = q*q; + tkin = 0.0; + } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +inline void G4eCoulombScatteringModel::SetupKinematic(G4double ekin) +{ + if(ekin != tkin) { + tkin = ekin; + mom2 = tkin*(tkin + 2.0*mass); + invbeta2 = 1.0 + mass*mass/mom2; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void G4eCoulombScatteringModel::SetupTarget(G4double Z, G4double A, + G4double e) +{ + if(e != tkin || Z != targetZ || A != targetA) { + targetZ = Z; + targetA = A; + SetupKinematic(e); + cosTetMaxNuc = std::max(cosThetaMax, 1.0 - 0.5*q2Limit/mom2); + G4double x = fNistManager->GetZ13(Z); + screenZ = a0*x*x*(1.13 + 3.76*invbeta2*Z*Z*chargeSquare*alpha2)/mom2; + if(particle == theProton && A < 1.5 && cosTetMaxNuc < 0.0) + cosTetMaxNuc = 0.0; + // A.V. Butkevich et al., NIM A 488 (2002) 282 + x = fNistManager->GetLOGA(A); + formfactA = mom2*constn*std::exp(0.54*x); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + #endif diff --git a/source/processes/electromagnetic/standard/include/G4eIonisation.hh b/source/processes/electromagnetic/standard/include/G4eIonisation.hh index 09a767a868..e5d4196749 100644 --- a/source/processes/electromagnetic/standard/include/G4eIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4eIonisation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eIonisation.hh,v 1.35 2007/05/23 08:47:34 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4eeToTwoGammaModel.hh b/source/processes/electromagnetic/standard/include/G4eeToTwoGammaModel.hh index a5979f4bc7..bffbb787e8 100644 --- a/source/processes/electromagnetic/standard/include/G4eeToTwoGammaModel.hh +++ b/source/processes/electromagnetic/standard/include/G4eeToTwoGammaModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eeToTwoGammaModel.hh,v 1.14 2007/05/23 08:47:34 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh b/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh index d079b3f7e3..222495f79d 100644 --- a/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh +++ b/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eplusAnnihilation.hh,v 1.23 2007/05/23 08:47:34 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4hIonisation.hh b/source/processes/electromagnetic/standard/include/G4hIonisation.hh index 3f2095399b..34ba7e3cdf 100644 --- a/source/processes/electromagnetic/standard/include/G4hIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4hIonisation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4hIonisation.hh,v 1.37 2007/05/23 08:47:34 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4hMultipleScattering.hh b/source/processes/electromagnetic/standard/include/G4hMultipleScattering.hh index 99d3a47fc0..24ac5d5e15 100644 --- a/source/processes/electromagnetic/standard/include/G4hMultipleScattering.hh +++ b/source/processes/electromagnetic/standard/include/G4hMultipleScattering.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4hMultipleScattering.hh,v 1.3 2007/05/18 18:43:32 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4hMultipleScattering.hh,v 1.4 2007/12/07 17:35:52 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // @@ -59,7 +59,7 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -class G4UrbanMscModel; +class G4UrbanMscModel90; class G4hMultipleScattering : public G4VMultipleScattering @@ -92,7 +92,7 @@ protected: private: // data members - G4UrbanMscModel* mscUrban; + G4UrbanMscModel90* mscUrban; G4double lambdalimit; G4double dtrl; diff --git a/source/processes/electromagnetic/standard/include/G4ionGasIonisation.hh b/source/processes/electromagnetic/standard/include/G4ionGasIonisation.hh new file mode 100644 index 0000000000..d76609c0c7 --- /dev/null +++ b/source/processes/electromagnetic/standard/include/G4ionGasIonisation.hh @@ -0,0 +1,112 @@ +// +// ******************************************************************** +// * 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: G4ionGasIonisation.hh,v 1.2 2007/08/13 06:13:30 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ------------------------------------------------------------------- +// +// GEANT4 Class header file +// +// +// File name: G4ionGasIonisation +// +// Author: Vladimir Ivanchenko +// +// Creation date: 23.07.2007 +// +// Modifications: +// +// +// Class Description: +// +// This class manages the ionisation process for ions. It inherites +// from G4ionIonisation and sample ion/media charge exchange +// + +// ------------------------------------------------------------------- +// + +#ifndef G4ionGasIonisation_h +#define G4ionGasIonisation_h 1 + +#include "G4ionIonisation.hh" + +class G4Material; + +class G4ionGasIonisation : public G4ionIonisation +{ +public: + + G4ionGasIonisation(const G4String& name = "ionGasIoni"); + + virtual ~G4ionGasIonisation(); + + virtual void PrintInfo(); + +protected: + + // Initialise process before run + virtual void InitialiseEnergyLossProcess( + const G4ParticleDefinition*, + const G4ParticleDefinition*); + + // Initialise dynamic charge before step + virtual void InitialiseMassCharge(const G4Track&); + + // Apply correction after step and modify dynamic charge + virtual void CorrectionsAlongStep( + const G4MaterialCutsCouple*, + const G4DynamicParticle*, + G4double& eloss, + G4double& length); + +private: + + // Sample change of charge of the projectile ion + G4double SampleChargeAfterStep(G4double qeff, G4double xeff); + + // hide assignment operator + G4ionGasIonisation & operator=(const G4ionGasIonisation &right); + G4ionGasIonisation(const G4ionGasIonisation&); + + const G4ParticleDefinition* currParticle; + const G4ParticleDefinition* baseParticle; + + G4double basePartMass; + G4double currMassRatio; + G4double atomXS; + G4double preStepKinEnergy; + + G4int currentIonZ; + G4int ionZ; + + G4bool initialised; + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#endif diff --git a/source/processes/electromagnetic/standard/include/G4ionIonisation.hh b/source/processes/electromagnetic/standard/include/G4ionIonisation.hh index 851c0ac1eb..0fdc25d4e5 100644 --- a/source/processes/electromagnetic/standard/include/G4ionIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4ionIonisation.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4ionIonisation.hh,v 1.46 2007/05/23 08:47:34 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ionIonisation.hh,v 1.50 2007/11/09 11:45:45 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -54,11 +54,14 @@ // 11-04-05 Move MaxSecondary energy to model (V.Ivanchneko) // 11-04-04 Move MaxSecondaryEnergy to models (V.Ivanchenko) // 10-05-06 Add a possibility to download user data (V.Ivantchenko) +// 22-07-06 Remove obsolete method (V.Ivantchenko) +// 07-11-07 Moved CorrectionsAlongStep to cc (V.Ivantchenko) // // Class Description: // -// This class manages the ionisation process for ions. -// it inherites from G4VContinuousDiscreteProcess via G4VEnergyLoss. +// This class manages the ionisation process for ions. Effective charge, +// nuclear stopping power, energy loss corrections are taken into account. +// It inherites from G4VEnergyLossLoss. // // ------------------------------------------------------------------- @@ -84,7 +87,7 @@ public: virtual ~G4ionIonisation(); - G4bool IsApplicable(const G4ParticleDefinition& p); + inline G4bool IsApplicable(const G4ParticleDefinition& p); // Print out of the class parameters virtual void PrintInfo(); @@ -98,34 +101,33 @@ public: protected: - void CorrectionsAlongStep( - const G4MaterialCutsCouple*, - const G4DynamicParticle*, - G4double& eloss, - G4double& length); + virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*, + const G4ParticleDefinition*); - void InitialiseEnergyLossProcess(const G4ParticleDefinition*, - const G4ParticleDefinition*); + virtual void CorrectionsAlongStep(const G4MaterialCutsCouple*, + const G4DynamicParticle*, + G4double& eloss, + G4double& length); - void InitialiseMassCharge(const G4Track&); + inline void InitialiseMassCharge(const G4Track&); - G4double MinPrimaryEnergy(const G4ParticleDefinition* p, - const G4Material*, G4double cut); + inline G4double MinPrimaryEnergy(const G4ParticleDefinition* p, + const G4Material*, G4double cut); + + inline G4double BetheBlochEnergyThreshold(); + + inline G4bool NuclearStoppingFlag(); + + // protected pointers + G4ionEffectiveCharge* effCharge; + G4EmCorrections* corr; private: - void DefineMassCharge(const G4ParticleDefinition* pd, - const G4Material* mat, - G4double mass, - G4double kinEnergy); - // hide assignment operator G4ionIonisation & operator=(const G4ionIonisation &right); G4ionIonisation(const G4ionIonisation&); - G4ionEffectiveCharge* effCharge; - G4EmCorrections* corr; - // cash const G4Material* curMaterial; const G4ParticleDefinition* curParticle; @@ -178,30 +180,6 @@ inline void G4ionIonisation::InitialiseMassCharge(const G4Track& track) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline void G4ionIonisation::CorrectionsAlongStep( - const G4MaterialCutsCouple* couple, - const G4DynamicParticle* dp, - G4double& eloss, - G4double& s) -{ - if(eloss < preKinEnergy) { - const G4ParticleDefinition* part = dp->GetDefinition(); - const G4Material* mat = couple->GetMaterial(); - if(preKinEnergy*massRatio > eth) - eloss += s*corr->HighOrderCorrections(part,mat,preKinEnergy); - else { - if(stopDataActive) - eloss *= corr->EffectiveChargeCorrection(part,mat,preKinEnergy); - if(nuclearStopping) - eloss += s*corr->NuclearDEDX(part,mat,preKinEnergy - eloss*0.5); - } - fParticleChange.SetProposedCharge(effCharge->EffectiveCharge(part, - mat,preKinEnergy-eloss)); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - inline void G4ionIonisation::ActivateStoppingData(G4bool val) { stopDataActive = val; @@ -216,4 +194,18 @@ inline void G4ionIonisation::ActivateNuclearStopping(G4bool val) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +inline G4double G4ionIonisation::BetheBlochEnergyThreshold() +{ + return eth; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline G4bool G4ionIonisation::NuclearStoppingFlag() +{ + return nuclearStopping; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + #endif diff --git a/source/processes/electromagnetic/standard/src/G4ASTARStopping.cc b/source/processes/electromagnetic/standard/src/G4ASTARStopping.cc index 5a02680b0f..bd99eeaa7d 100644 --- a/source/processes/electromagnetic/standard/src/G4ASTARStopping.cc +++ b/source/processes/electromagnetic/standard/src/G4ASTARStopping.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ASTARStopping.cc,v 1.6 2006/06/29 19:52:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ //--------------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/src/G4BetheBlochModel.cc b/source/processes/electromagnetic/standard/src/G4BetheBlochModel.cc index 72e051f07d..c61be5ed36 100644 --- a/source/processes/electromagnetic/standard/src/G4BetheBlochModel.cc +++ b/source/processes/electromagnetic/standard/src/G4BetheBlochModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BetheBlochModel.cc,v 1.13 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/src/G4BetheHeitlerModel.cc b/source/processes/electromagnetic/standard/src/G4BetheHeitlerModel.cc index 09798138b4..941bce548c 100644 --- a/source/processes/electromagnetic/standard/src/G4BetheHeitlerModel.cc +++ b/source/processes/electromagnetic/standard/src/G4BetheHeitlerModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BetheHeitlerModel.cc,v 1.11 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/src/G4BohrFluctuations.cc b/source/processes/electromagnetic/standard/src/G4BohrFluctuations.cc index 743c86deb5..519ea3e215 100644 --- a/source/processes/electromagnetic/standard/src/G4BohrFluctuations.cc +++ b/source/processes/electromagnetic/standard/src/G4BohrFluctuations.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4BohrFluctuations.cc,v 1.4 2006/06/29 19:52:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4BohrFluctuations.cc,v 1.6 2007/09/27 14:02:41 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -95,19 +95,11 @@ G4double G4BohrFluctuations::SampleFluctuations(const G4Material* material, G4double siga = Dispersion(material,dp,tmax,length); G4double loss = meanLoss; - G4double navr = minNumberInteractionsBohr; - - // Gaussian fluctuation - G4bool gauss = true; - if (meanLoss < minNumberInteractionsBohr*tmax) { - navr = meanLoss*meanLoss/siga; - if (navr < minNumberInteractionsBohr) gauss = false; - } - //G4cout << "### meanLoss= " << meanLoss << " navr= " << navr << " sig= " << sqrt(siga) << G4endl; - - if(gauss) { + G4double navr = meanLoss*meanLoss/siga; + //G4cout << "### meanLoss= " << meanLoss << " navr= " << navr << G4endl; + if (navr >= minNumberInteractionsBohr) { + // Increase fluctuations for big fractional energy loss - if ( meanLoss > minFraction*kineticEnergy ) { G4double gam = (kineticEnergy - meanLoss)/particleMass + 1.0; G4double b2 = 1.0 - 1.0/(gam*gam); diff --git a/source/processes/electromagnetic/standard/src/G4BraggIonModel.cc b/source/processes/electromagnetic/standard/src/G4BraggIonModel.cc index f9be6349ec..5464283a43 100644 --- a/source/processes/electromagnetic/standard/src/G4BraggIonModel.cc +++ b/source/processes/electromagnetic/standard/src/G4BraggIonModel.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4BraggIonModel.cc,v 1.16 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4BraggIonModel.cc,v 1.17 2007/07/28 13:30:53 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -249,10 +249,11 @@ void G4BraggIonModel::SampleSecondaries(std::vector* vdp, G4double deltaMomentum = sqrt(deltaKinEnergy * (deltaKinEnergy + 2.0*electron_mass_c2)); - G4double totMomentum = sqrt(energy2 - mass*mass); + G4double totMomentum = energy*sqrt(beta2); G4double cost = deltaKinEnergy * (energy + electron_mass_c2) / (deltaMomentum * totMomentum); - G4double sint = sqrt(1.0 - cost*cost); + if(cost > 1.0) cost = 1.0; + G4double sint = sqrt((1.0 - cost)*(1.0 + cost)); G4double phi = twopi * G4UniformRand() ; diff --git a/source/processes/electromagnetic/standard/src/G4BraggModel.cc b/source/processes/electromagnetic/standard/src/G4BraggModel.cc index b14b9cb7bc..7d450805e8 100644 --- a/source/processes/electromagnetic/standard/src/G4BraggModel.cc +++ b/source/processes/electromagnetic/standard/src/G4BraggModel.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4BraggModel.cc,v 1.15 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4BraggModel.cc,v 1.16 2007/07/28 13:30:53 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -213,7 +213,7 @@ void G4BraggModel::SampleSecondaries(vector* vdp, G4double maxEnergy) { G4double tmax = MaxSecondaryKinEnergy(dp); - G4double xmax = min(tmax, maxEnergy); + G4double xmax = std::min(tmax, maxEnergy); if(xmin >= xmax) return; G4double kineticEnergy = dp->GetKineticEnergy(); @@ -243,10 +243,11 @@ void G4BraggModel::SampleSecondaries(vector* vdp, G4double deltaMomentum = sqrt(deltaKinEnergy * (deltaKinEnergy + 2.0*electron_mass_c2)); - G4double totMomentum = sqrt(energy2 - mass*mass); + G4double totMomentum = energy*sqrt(beta2); G4double cost = deltaKinEnergy * (energy + electron_mass_c2) / (deltaMomentum * totMomentum); - G4double sint = sqrt(1.0 - cost*cost); + if(cost > 1.0) cost = 1.0; + G4double sint = sqrt((1.0 - cost)*(1.0 + cost)); G4double phi = twopi * G4UniformRand() ; diff --git a/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc b/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc index c19e16cdf3..229610503b 100644 --- a/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc +++ b/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ComptonScattering.cc,v 1.27 2006/09/14 10:27:19 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //------------ G4ComptonScattering physics process ----------------------------- diff --git a/source/processes/electromagnetic/standard/src/G4ComptonScattering52.cc b/source/processes/electromagnetic/standard/src/G4ComptonScattering52.cc index 81a55561a2..60970c3256 100644 --- a/source/processes/electromagnetic/standard/src/G4ComptonScattering52.cc +++ b/source/processes/electromagnetic/standard/src/G4ComptonScattering52.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ComptonScattering52.cc,v 1.5 2007/05/16 14:00:56 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //------------ G4ComptonScattering52 physics process ----------------------------- diff --git a/source/processes/electromagnetic/standard/src/G4CoulombScattering.cc b/source/processes/electromagnetic/standard/src/G4CoulombScattering.cc index a0a542a07e..5966689254 100644 --- a/source/processes/electromagnetic/standard/src/G4CoulombScattering.cc +++ b/source/processes/electromagnetic/standard/src/G4CoulombScattering.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4CoulombScattering.cc,v 1.7 2006/10/19 09:44:27 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4CoulombScattering.cc,v 1.11 2007/11/20 18:43:25 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -51,6 +51,7 @@ #include "G4CoulombScattering.hh" #include "G4CoulombScatteringModel.hh" #include "G4eCoulombScatteringModel.hh" +#include "G4Electron.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -60,10 +61,20 @@ G4CoulombScattering::G4CoulombScattering(const G4String& name) : G4VEmProcess(name),thetaMin(0.0),thetaMax(pi),q2Max(DBL_MAX), isInitialised(false) { - SetLambdaBinning(80); - SetMinKinEnergy(1.0*keV); - SetMaxKinEnergy(100.0*GeV); - buildTableFlag = true; + G4VEmProcess::SetBuildTableFlag(true); + SetStartFromNullFlag(false); + SetIntegral(true); + SetMinKinEnergy(keV); + SetMaxKinEnergy(PeV); + thEnergy = PeV; + thEnergyElec = PeV; + if(name == "CoulombScat") { + thEnergy = 10.*MeV; + thEnergyElec = 10.*GeV; + } + SetLambdaBinning(120); + SetSecondaryParticle(G4Electron::Electron()); + buildElmTableFlag = true; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -73,31 +84,39 @@ G4CoulombScattering::~G4CoulombScattering() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4CoulombScattering::InitialiseProcess(const G4ParticleDefinition*) +void G4CoulombScattering::InitialiseProcess(const G4ParticleDefinition* p) { if(!isInitialised) { isInitialised = true; - // SetVerboseLevel(3); - // SetBuildTableFlag(buildTableFlag); - SetBuildTableFlag(false); - SetStartFromNullFlag(false); - SetIntegral(true); - SetLambdaFactor(0.8); - SetSecondaryParticle(0); + aParticle = p; + G4double mass = p->GetPDGMass(); + if (mass > GeV || p->GetParticleType() == "nucleus") { + buildElmTableFlag = false; + verboseLevel = 0; + } else { + G4String name = p->GetParticleName(); + if(name != "e-" && name != "e+" && + name != "mu+" && name != "mu-" && name != "pi+" && + name != "kaon+" && name != "proton" ) verboseLevel = 0; + } + G4double emin = MinKinEnergy(); G4double emax = MaxKinEnergy(); - if(GetProcessName() == "eCoulombScat") { + G4double eth = thEnergy; + if(mass < MeV) eth = thEnergyElec; + if(eth > emin) { G4eCoulombScatteringModel* model = - new G4eCoulombScatteringModel(thetaMin,thetaMax,buildTableFlag,q2Max); + new G4eCoulombScatteringModel(thetaMin,thetaMax,buildElmTableFlag,q2Max); model->SetLowEnergyLimit(emin); - model->SetHighEnergyLimit(emax); + model->SetHighEnergyLimit(std::min(eth,emax)); AddEmModel(1, model); - } else { + } + if(eth < emax) { G4CoulombScatteringModel* model = - new G4CoulombScatteringModel(thetaMin,thetaMax,buildTableFlag,q2Max); - model->SetLowEnergyLimit(emin); + new G4CoulombScatteringModel(thetaMin,thetaMax,buildElmTableFlag,q2Max); + model->SetLowEnergyLimit(eth); model->SetHighEnergyLimit(emax); - AddEmModel(1, model); + AddEmModel(2, model); } } } @@ -106,10 +125,15 @@ void G4CoulombScattering::InitialiseProcess(const G4ParticleDefinition*) void G4CoulombScattering::PrintInfo() { - G4cout << " Coulomb scattering with ThetaMin(degree)= " << thetaMin/degree - << "; ThetaMax(degree)= " << thetaMax/degree - << "; q2Max(GeV^2)= " << q2Max/(GeV*GeV) - << G4endl; + G4cout << " Scattering of " << aParticle->GetParticleName() + << " with " << thetaMin/degree + << " < Theta(degree) < " << thetaMax/degree + << "; Eth(MeV)= "; + if(aParticle->GetPDGMass() < MeV) G4cout << thEnergyElec; + else G4cout << thEnergy; + + if(q2Max < DBL_MAX) G4cout << "; q2Max(GeV^2)= " << q2Max/(GeV*GeV); + G4cout << G4endl; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/standard/src/G4CoulombScatteringModel.cc b/source/processes/electromagnetic/standard/src/G4CoulombScatteringModel.cc index 6a599ee78e..1a7a9c1e85 100644 --- a/source/processes/electromagnetic/standard/src/G4CoulombScatteringModel.cc +++ b/source/processes/electromagnetic/standard/src/G4CoulombScatteringModel.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4CoulombScatteringModel.cc,v 1.8 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4CoulombScatteringModel.cc,v 1.29 2007/11/09 11:45:45 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -42,6 +42,7 @@ // logic of building - only elements from G4ElementTable // 08.08.06 V.Ivanchenko build internal table in ekin scale, introduce faclim // 19.10.06 V.Ivanchenko use inheritance from G4eCoulombScatteringModel +// 09.10.07 V.Ivanchenko reorganized methods, add cut dependence in scattering off e- // // Class Description: // @@ -69,7 +70,6 @@ G4CoulombScatteringModel::G4CoulombScatteringModel( { theMatManager = G4NistManager::Instance(); theParticleTable = G4ParticleTable::GetParticleTable(); - theProton = G4Proton::Proton(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -79,40 +79,61 @@ G4CoulombScatteringModel::~G4CoulombScatteringModel() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4double G4CoulombScatteringModel::CalculateCrossSectionPerAtom( - const G4ParticleDefinition* p, - G4double kinEnergy, - G4double Z) +G4double G4CoulombScatteringModel::ComputeCrossSectionPerAtom( + const G4ParticleDefinition* p, + G4double kinEnergy, + G4double Z, + G4double A, + G4double cutEnergy, + G4double) { - G4double cross= 0.0; + if(p == particle && kinEnergy == tkin && Z == targetZ && + A == targetA && cutEnergy == ecut) return nucXSection; + + // Lab system + G4double ekin = std::max(keV, kinEnergy); + nucXSection = ComputeElectronXSectionPerAtom(p,ekin,Z,A,cutEnergy); + + // CM system G4int iz = G4int(Z); - G4double m = p->GetPDGMass(); - G4double mom2 = kinEnergy*(kinEnergy + 2.0*m); - G4double mass2= m*m; G4double m1 = theMatManager->GetAtomicMassAmu(iz)*amu_c2; - G4double etot = kinEnergy + m + m1; + G4double etot = tkin + mass; G4double ptot = sqrt(mom2); - G4double bet = ptot/etot; + G4double bet = ptot/(etot + m1); G4double gam = 1.0/sqrt((1.0 - bet)*(1.0 + bet)); - G4double momCM = gam*(ptot - bet*etot); + G4double momCM= gam*(ptot - bet*etot); + + // G4cout << "ptot= " << ptot << " etot= " << etot << " beta= " + // << bet << " gam= " << gam << " Z= " << Z << " A= " << A << G4endl; + // G4cout << " CM. mom= " << momCM << " m= " << m + // << " m1= " << m1 << " iz= " << iz < targetA && p == theProton && cosTetMaxNuc < 0.0) cosTetMaxNuc = 0.0; + //G4cout << " ctmax= " << cosTetMaxNuc + //<< " ctmin= " << cosThetaMin << G4endl; // Cross section in CM system - if(costm < cosThetaMin) { - G4double q = p->GetPDGCharge()/eplus; - G4double q2 = q*q; - G4double invbeta2 = 1.0 + mass2/momCM2; - G4double A = ScreeningParameter(Z, q2, momCM2, invbeta2); - G4double a = 2.0*A + 1.0; - G4double f = q * m1 /(m + m1); - cross = coeff*f*f*Z*(Z + 1.0)*invbeta2*(cosThetaMin - costm)/ - ((a - cosThetaMin)*(a - costm)*momCM2); + if(cosTetMaxNuc < cosThetaMin) { + G4double effmass = mass*m1/(mass + m1); + G4double x1 = 1.0 - cosThetaMin; + G4double x2 = 1.0 - cosTetMaxNuc; + G4double z1 = x1 + screenZ; + G4double z2 = x2 + screenZ; + G4double d = 1.0/formfactA; + G4double zn1= x1 + d; + G4double zn2= x2 + d; + nucXSection += coeff*Z*Z*chargeSquare*(1.0 + effmass*effmass/momCM2) + *(1./z1 - 1./z2 + 1./zn1 - 1./zn2 + + 2.0*formfactA*std::log(z1*zn2/(z2*zn1)))/momCM2; + //G4cout << "XS: x1= " << x1 << " x2= " << x2 + //<< " cross= " << cross << G4endl; + //G4cout << "momCM2= " << momCM2 << " invbeta2= " << invbeta2 + // << " coeff= " << coeff << G4endl; } - //G4cout << "p= " << mom << " momCM= " << momCM << " Z= " << Z << " A= " << A - //<< " cross= " << cross << " m1(GeV)= " << m1/GeV <* fvect, - const G4MaterialCutsCouple* couple, - const G4DynamicParticle* dp, - G4double, - G4double) +void G4CoulombScatteringModel::SampleSecondaries( + std::vector* fvect, + const G4MaterialCutsCouple* couple, + const G4DynamicParticle* dp, + G4double cutEnergy, + G4double maxEnergy) { const G4Material* aMaterial = couple->GetMaterial(); const G4ParticleDefinition* p = dp->GetDefinition(); + G4double kinEnergy = dp->GetKineticEnergy(); + // Select isotope and setup + SetupParticle(p); const G4Element* elm = - SelectRandomAtom(aMaterial, p, dp->GetKineticEnergy()); + SelectRandomAtom(aMaterial,p,kinEnergy,cutEnergy,maxEnergy); G4double Z = elm->GetZ(); - G4double N = SelectIsotope(elm); + G4double A = SelectIsotope(elm); G4int iz = G4int(Z); - G4int in = G4int(N + 0.5); - G4double m2 = theParticleTable->GetIonTable()->GetNucleusMass(iz, in); - G4double m1 = dp->GetMass(); + G4int ia = G4int(A + 0.5); - G4double q = p->GetPDGCharge()/eplus; - G4double q2 = q*q; + G4double cross = + ComputeCrossSectionPerAtom(p,kinEnergy,Z,A,cutEnergy,maxEnergy); - // Transformation to CM system - G4LorentzVector lv1 = dp->Get4Momentum(); - G4ThreeVector dir = dp->GetMomentumDirection(); - G4LorentzVector lv2(0.0,0.0,0.0,m2); - G4LorentzVector lv = lv1 + lv2; - G4ThreeVector bst = lv.boostVector(); - lv1.boost(-bst); - lv2.boost(-bst); - G4ThreeVector p1 = lv1.vect(); - G4double momCM2 = p1.mag2(); - G4double invbeta2 = 1.0 + m1*m1/momCM2; - G4double A = ScreeningParameter(Z, q2, momCM2, invbeta2); - G4double a = 2.0*A + 1.0; - - G4double costm = std::max(cosThetaMax, 1.0 - 0.5*q2Limit/momCM2); - if(1 == iz && p == theProton) costm = std::max(0.0, costm); - if(costm > cosThetaMin) return; - - G4double x = G4UniformRand(); - G4double y = (a + 1.0 - cosThetaMin)/(cosThetaMin - costm); - G4double st2 = 0.5*(y*(1.0 - costm) - a*x)/(y + x); - if(st2 < 0.0 || st2 > 1.0) { - G4cout << "G4CoulombScatteringModel::SampleSecondaries WARNING st2= " - << st2 << G4endl; - st2 = 0.0; + G4double costm = cosTetMaxNuc; + G4double formf = formfactA; + if(G4UniformRand()*cross < elecXSection) { + costm = cosTetMaxElec; + formf = 0.0; } - G4double tet = 2.0*asin(sqrt(st2)); - G4double cost= cos(tet); - G4double sint= sin(tet); + // G4cout << "SampleSec: Ekin= " << kinEnergy << " m1= " << m1 + // << " Z= "<< Z << " A= " <= cosThetaMin) return; - G4ThreeVector v1(cos(phi)*sint,sin(phi)*sint,cost); - G4double p1tot = sqrt(momCM2); - // v1.rotateUz(p1); - G4LorentzVector lfv1(v1.x()*p1tot,v1.y()*p1tot,v1.z(),lv1.e()); - lfv1.boost(bst); + // kinematics in CM system + G4double m1 = theParticleTable->GetIonTable()->GetNucleusMass(iz, ia); + G4double etot = kinEnergy + mass; + G4double ptot = sqrt(mom2); + G4double bet = ptot/(etot + m1); + G4double gam = 1.0/sqrt((1.0 - bet)*(1.0 + bet)); + G4double pCM = gam*(ptot - bet*etot); + G4double eCM = gam*(etot - bet*ptot); - G4LorentzVector lfv2 = lv - lfv1; + G4double x1 = 1. - cosThetaMin + screenZ; + G4double x2 = 1. - costm; + G4double x3 = cosThetaMin - costm; - G4ThreeVector newdir = lfv1.vect().unit(); - fParticleChange->ProposeMomentumDirection(newdir); - G4double ekin = lfv1.e() - m1; + G4double grej, z, z1; + do { + z = G4UniformRand()*x3; + z1 = (x1*x2 - screenZ*z)/(x1 + z); + if(z1 < 0.0) z1 = 0.0; + else if(z1 > 2.0) z1 = 2.0; + grej = 1.0/(1.0 + formf*z1); + } while ( G4UniformRand() > grej*grej ); + + G4double cost = 1.0 - z1; + G4double sint= sqrt(z1*(2.0 - z1)); + + G4double phi = twopi * G4UniformRand(); + + // projectile after scattering + G4double pzCM = pCM*cost; + G4ThreeVector v1(pCM*cos(phi)*sint,pCM*sin(phi)*sint,gam*(pzCM + bet*eCM)); + G4ThreeVector dir = dp->GetMomentumDirection(); + G4ThreeVector newDirection = v1.unit(); + newDirection.rotateUz(dir); + fParticleChange->ProposeMomentumDirection(newDirection); + G4double elab = gam*(eCM + bet*pzCM); + G4double ekin = elab - mass; if(ekin < 0.0) ekin = 0.0; + G4double plab = sqrt(ekin*(ekin + 2.0*mass)); fParticleChange->SetProposedKineticEnergy(ekin); - ekin = lfv2.e() - m2; - if(ekin > Z*aMaterial->GetIonisation()->GetMeanExcitationEnergy()) { - G4ParticleDefinition* ion = theParticleTable->GetIon(iz, in, 0.0); - G4DynamicParticle* newdp = new G4DynamicParticle(ion, lfv2); + // recoil + G4double erec = kinEnergy - ekin; + if(erec > Z*aMaterial->GetIonisation()->GetMeanExcitationEnergy()) { + G4ParticleDefinition* ion = theParticleTable->FindIon(iz, ia, 0, iz); + G4ThreeVector p2 = (ptot*dir - plab*newDirection).unit(); + G4DynamicParticle* newdp = new G4DynamicParticle(ion, p2, erec); fvect->push_back(newdp); - } else if(ekin > 0.0) { - fParticleChange->ProposeLocalEnergyDeposit(ekin); + } else if(erec > 0.0) { + fParticleChange->ProposeLocalEnergyDeposit(erec); + fParticleChange->ProposeNonIonizingEnergyDeposit(erec); } } diff --git a/source/processes/electromagnetic/standard/src/G4GammaConversion.cc b/source/processes/electromagnetic/standard/src/G4GammaConversion.cc index f15210320e..8b55ee45f2 100644 --- a/source/processes/electromagnetic/standard/src/G4GammaConversion.cc +++ b/source/processes/electromagnetic/standard/src/G4GammaConversion.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4GammaConversion.cc,v 1.27 2006/09/14 10:27:19 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //------------------ G4GammaConversion physics process ------------------------- diff --git a/source/processes/electromagnetic/standard/src/G4InitXscPAI.cc b/source/processes/electromagnetic/standard/src/G4InitXscPAI.cc index 42c09850a1..3b07294c80 100644 --- a/source/processes/electromagnetic/standard/src/G4InitXscPAI.cc +++ b/source/processes/electromagnetic/standard/src/G4InitXscPAI.cc @@ -25,7 +25,7 @@ // // // $Id: G4InitXscPAI.cc,v 1.9 2006/06/29 19:53:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4InitXscPAI.cc -- class implementation file diff --git a/source/processes/electromagnetic/standard/src/G4IonFluctuations.cc b/source/processes/electromagnetic/standard/src/G4IonFluctuations.cc index 9a9472153f..f80903a50d 100644 --- a/source/processes/electromagnetic/standard/src/G4IonFluctuations.cc +++ b/source/processes/electromagnetic/standard/src/G4IonFluctuations.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4IonFluctuations.cc,v 1.3 2006/06/29 19:53:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4IonFluctuations.cc,v 1.5 2007/09/27 14:01:12 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -44,6 +44,7 @@ // 13-02-03 Add name (V.Ivanchenko) // 23-05-03 Add control on parthalogical cases (V.Ivanchenko) // 16-10-03 Changed interface to Initialisation (V.Ivanchenko) +// 27-09-07 Use FermiEnergy from material, add cut dependence (V.Ivanchenko) // // Class Description: // @@ -99,28 +100,20 @@ G4double G4IonFluctuations::SampleFluctuations(const G4Material* material, G4double& meanLoss) { if(meanLoss <= minLoss) return meanLoss; - - if(dp->GetDefinition() != particle) { - particle = dp->GetDefinition(); - charge = particle->GetPDGCharge()/eplus; - } + // G4cout << "### meanLoss= " << meanLoss << G4endl; G4double siga = Dispersion(material,dp,tmax,length); G4double loss = meanLoss; - G4double navr = minNumberInteractionsBohr; + navr = meanLoss*meanLoss/siga; + // G4cout << "### siga= " << sqrt(siga) << " navr= " << navr << G4endl; + // Gaussian fluctuation - G4bool gauss = true; - if (meanLoss >= minNumberInteractionsBohr*tmax) { - navr = meanLoss*meanLoss/siga; - if (navr < minNumberInteractionsBohr) gauss = false; - } + if (navr >= minNumberInteractionsBohr) { - if(gauss) { // Increase fluctuations for big fractional energy loss - //G4cout << "siga= " << siga << G4endl; if ( meanLoss > minFraction*kineticEnergy ) { G4double gam = (kineticEnergy - meanLoss)/particleMass + 1.0; @@ -157,36 +150,45 @@ G4double G4IonFluctuations::Dispersion( G4double& tmax, G4double& length) { - particleMass = dp->GetMass(); - G4double q = dp->GetCharge()/eplus; - chargeSquare = q*q; - chargeSqRatio = chargeSquare/(charge*charge); + particle = dp->GetDefinition(); + charge = particle->GetPDGCharge()/eplus; + particleMass = particle->GetPDGMass(); + G4double q = dp->GetCharge()/eplus; + chargeSquare = q*q; + chargeSqRatio = chargeSquare/(charge*charge); + + //chargeSquare = charge*charge; + //chargeSqRatio = 1.0; G4double electronDensity = material->GetElectronDensity(); kineticEnergy = dp->GetKineticEnergy(); - // G4cout << "e= " << kineticEnergy << " m= " << particleMass - // << " tmax= " << tmax << " l= " << length << " q^2= " << chargeSquare << G4endl; - G4double gam = kineticEnergy/particleMass + 1.0; - beta2 = 1.0 - 1.0/(gam*gam); - G4double siga = (1.0/beta2 - 0.5)*tmax*length*electronDensity*twopi_mc2_rcl2*chargeSquare; - // G4cout << "siga= " << siga << G4endl; + G4double etot = kineticEnergy + particleMass; + //G4cout << "e= " << kineticEnergy << " m= " << particleMass + // << " tmax= " << tmax << " l= " << length << " q^2= " << chargeSquare << G4endl; + beta2 = kineticEnergy*(kineticEnergy + 2.*particleMass)/(etot*etot); + + G4double siga = (1. - beta2*0.5)*tmax*length*electronDensity* + twopi_mc2_rcl2*chargeSquare/beta2; // Low velocity - additional ion charge fluctuations according to // Q.Yang et al., NIM B61(1991)149-155. G4double zeff = electronDensity/(material->GetTotNbOfAtomsPerVolume()); - //G4cout << "siga= " << siga << " zeff= " << zeff << G4endl; + //G4cout << "siga= " << siga << " zeff= " << zeff << " c= " << c << G4endl; + // correction factors with cut dependence if ( beta2 < 3.0*theBohrBeta2*zeff ) { G4double a = CoeffitientA (zeff); G4double b = CoeffitientB (material, zeff); - // G4cout << "a= " << a << " b= " << b << G4endl; - siga *= (a*chargeSqRatio + b); + // G4cout << "a= " << a << " b= " << b << G4endl; + siga *= (1. + (a*chargeSqRatio + b - 1.0)*2.0*electron_mass_c2*beta2/tmax); } else { // H.Geissel et al. NIM B, 195 (2002) 3. - siga *= RelativisticFactor(material, zeff); + siga *= (1. + RelativisticFactor(material, zeff)*2.0*electron_mass_c2*beta2/ + (tmax*(1.0 - beta2))); } + // G4cout << "siga= " << siga << G4endl; return siga; } @@ -377,14 +379,19 @@ G4double G4IonFluctuations::CoeffitientB(const G4Material* material, G4double& z //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4double G4IonFluctuations::RelativisticFactor(const G4Material*, G4double& zeff) +G4double G4IonFluctuations::RelativisticFactor(const G4Material* material, + G4double& zeff) { // H.Geissel et al. NIM B, 195 (2002) 3. - G4double factor = 1.0 + 0.667*theBohrBeta2*(1.0 - beta2) - * log(2.0*electron_mass_c2/(5.0*charge*eV)) - / ((1.0 - 0.5*beta2)*beta2*zeff) ; - factor *= (1.0 + 1.415e-4*chargeSquare/beta2); - // G4cout << "factor= " << factor << G4endl; + G4double eF = material->GetIonisation()->GetFermiEnergy(); + G4double bF2= 2.0*eF/electron_mass_c2; + G4double I = material->GetIonisation()->GetMeanExcitationEnergy(); + G4double f = 0.4*bF2*(1.0 - beta2)/((1.0 - 0.5*beta2)*beta2*zeff); + if(beta2 > bF2) f *= log(2.0*electron_mass_c2*beta2/I); + else f *= log(4.0*eF/I); + + G4double factor = (1.0 + f)*(1.0 + 1.415e-4*chargeSquare/beta2); + return factor; } diff --git a/source/processes/electromagnetic/standard/src/G4KleinNishinaCompton.cc b/source/processes/electromagnetic/standard/src/G4KleinNishinaCompton.cc index 6cee6bc6c8..5ffbb113e3 100644 --- a/source/processes/electromagnetic/standard/src/G4KleinNishinaCompton.cc +++ b/source/processes/electromagnetic/standard/src/G4KleinNishinaCompton.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4KleinNishinaCompton.cc,v 1.9 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/src/G4MollerBhabhaModel.cc b/source/processes/electromagnetic/standard/src/G4MollerBhabhaModel.cc index 843d4a3732..341fa50240 100644 --- a/source/processes/electromagnetic/standard/src/G4MollerBhabhaModel.cc +++ b/source/processes/electromagnetic/standard/src/G4MollerBhabhaModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MollerBhabhaModel.cc,v 1.30 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/src/G4MscModel71.cc b/source/processes/electromagnetic/standard/src/G4MscModel71.cc index 65eb6b3ed3..1239ba7fd0 100644 --- a/source/processes/electromagnetic/standard/src/G4MscModel71.cc +++ b/source/processes/electromagnetic/standard/src/G4MscModel71.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MscModel71.cc,v 1.5 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/src/G4MultipleScattering.cc b/source/processes/electromagnetic/standard/src/G4MultipleScattering.cc index 5472937331..a2eca82b9b 100644 --- a/source/processes/electromagnetic/standard/src/G4MultipleScattering.cc +++ b/source/processes/electromagnetic/standard/src/G4MultipleScattering.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4MultipleScattering.cc,v 1.69 2007/06/11 15:01:26 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4MultipleScattering.cc,v 1.70 2007/10/29 08:57:19 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // @@ -172,20 +172,22 @@ void G4MultipleScattering::InitialiseProcess(const G4ParticleDefinition* p) return; } - // initialisation of parameters - G4String part_name = p->GetParticleName(); - mscUrban = new G4UrbanMscModel(RangeFactor(),dtrl,lambdalimit, - GeomFactor(),Skin(), - samplez,StepLimitType()); - mscUrban->SetLateralDisplasmentFlag(LateralDisplasmentFlag()); - + // defaults for ions, which cannot be overwritten if (p->GetParticleType() == "nucleus") { - mscUrban->SetStepLimitType(fMinimal); + SetStepLimitType(fMinimal); SetLateralDisplasmentFlag(false); SetBuildLambdaTable(false); SetSkin(0.0); SetRangeFactor(0.2); } + + // initialisation of parameters - defaults for particles other + // than ions can be overwritten by users + mscUrban = new G4UrbanMscModel(RangeFactor(),dtrl,lambdalimit, + GeomFactor(),Skin(), + samplez,StepLimitType()); + mscUrban->SetLateralDisplasmentFlag(LateralDisplasmentFlag()); + AddEmModel(1,mscUrban); isInitialized = true; /* diff --git a/source/processes/electromagnetic/standard/src/G4MultipleScattering71.cc b/source/processes/electromagnetic/standard/src/G4MultipleScattering71.cc index a84511e774..c3090523c6 100644 --- a/source/processes/electromagnetic/standard/src/G4MultipleScattering71.cc +++ b/source/processes/electromagnetic/standard/src/G4MultipleScattering71.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MultipleScattering71.cc,v 1.4 2006/10/16 15:26:49 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // 16/05/01 value of cparm changed , L.Urban diff --git a/source/processes/electromagnetic/standard/src/G4PAIModel.cc b/source/processes/electromagnetic/standard/src/G4PAIModel.cc index b15d130e8a..aaf9aea915 100644 --- a/source/processes/electromagnetic/standard/src/G4PAIModel.cc +++ b/source/processes/electromagnetic/standard/src/G4PAIModel.cc @@ -44,11 +44,12 @@ #include "G4MaterialCutsCouple.hh" #include "G4MaterialTable.hh" #include "G4SandiaTable.hh" -#include "G4PAIxSection.hh" +#include "G4OrderedTable.hh" #include "G4PAIModel.hh" #include "Randomize.hh" #include "G4Electron.hh" +#include "G4Positron.hh" #include "G4Poisson.hh" #include "G4Step.hh" #include "G4Material.hh" @@ -70,64 +71,67 @@ G4PAIModel::G4PAIModel(const G4ParticleDefinition* p, const G4String& nam) fMeanNumber(20), fParticle(0), fHighKinEnergy(100.*TeV), - fLowKinEnergy(2.0*MeV), fTwoln10(2.0*log(10.0)), fBg2lim(0.0169), fTaulim(8.4146e-3) { if(p) SetParticle(p); - // fLowestKineticEnergy = LowEnergyLimit(); - // fHighestKineticEnergy = HighEnergyLimit(); + fElectron = G4Electron::Electron(); + fPositron = G4Positron::Positron(); - fLowestKineticEnergy = fMass*fLowestGamma; - fHighestKineticEnergy = fMass*fHighestGamma; - - fParticleEnergyVector = new G4PhysicsLogVector(fLowestKineticEnergy, - fHighestKineticEnergy, - fTotBin ); fPAItransferTable = 0; fPAIdEdxTable = 0; fSandiaPhotoAbsCof = 0; fdEdxVector = 0; fLambdaVector = 0; fdNdxCutVector = 0; + + isInitialised = false; } //////////////////////////////////////////////////////////////////////////// G4PAIModel::~G4PAIModel() { + // G4cout << "PAI: start destruction" << G4endl; if(fParticleEnergyVector) delete fParticleEnergyVector; - if(fdEdxVector) delete fdEdxVector ; - if ( fLambdaVector) delete fLambdaVector; - if ( fdNdxCutVector) delete fdNdxCutVector; + if(fdEdxVector) delete fdEdxVector ; + if(fLambdaVector) delete fLambdaVector; + if(fdNdxCutVector) delete fdNdxCutVector; if( fPAItransferTable ) - { - fPAItransferTable->clearAndDestroy(); - delete fPAItransferTable ; - } - if(fSandiaPhotoAbsCof) - { - for(G4int i=0;iclearAndDestroy(); + delete fPAItransferTable ; } - delete[] fSandiaPhotoAbsCof; - } + if( fPAIdEdxTable ) + { + fPAIdEdxTable->clearAndDestroy(); + delete fPAIdEdxTable ; + } + if(fSandiaPhotoAbsCof) + { + for(G4int i=0;iGetPDGMass(); fSpin = fParticle->GetPDGSpin(); G4double q = fParticle->GetPDGCharge()/eplus; fChargeSquare = q*q; - fLowKinEnergy *= fMass/proton_mass_c2; + fLowKinEnergy = 0.2*MeV*fMass/proton_mass_c2; fRatio = electron_mass_c2/fMass; fQc = fMass/fRatio; } @@ -137,56 +141,58 @@ void G4PAIModel::SetParticle(const G4ParticleDefinition* p) void G4PAIModel::Initialise(const G4ParticleDefinition* p, const G4DataVector&) { - if(!fParticle) SetParticle(p); + if(isInitialised) return; + isInitialised = true; + + SetParticle(p); + fLowestKineticEnergy = fMass*(fLowestGamma - 1.0); + fHighestKineticEnergy = fMass*(fHighestGamma - 1.0); + + fParticleEnergyVector = new G4PhysicsLogVector(fLowestKineticEnergy, + fHighestKineticEnergy, + fTotBin); if(pParticleChange) fParticleChange = reinterpret_cast(pParticleChange); else fParticleChange = new G4ParticleChangeForLoss(); + // Prepare initialization + + fPAItransferTable = new G4PhysicsTable(fTotBin); + fPAIdEdxTable = new G4PhysicsTable(fTotBin); + const G4ProductionCutsTable* theCoupleTable = G4ProductionCutsTable::GetProductionCutsTable(); + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + size_t numOfMat = G4Material::GetNumberOfMaterials(); + size_t numRegions = fPAIRegionVector.size(); - for(size_t iReg = 0; iReg < fPAIRegionVector.size();++iReg) // region loop + for(size_t iReg = 0; iReg < numRegions; ++iReg) // region loop { const G4Region* curReg = fPAIRegionVector[iReg]; - - // (*fPAIRegionVector[iRegion]) - - vector::const_iterator matIter = curReg->GetMaterialIterator(); - size_t jMat; - size_t numOfMat = curReg->GetNumberOfMaterials(); - - // for(size_t jMat = 0; jMat < curReg->GetNumberOfMaterials();++jMat){} - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - size_t numberOfMat = G4Material::GetNumberOfMaterials(); - - for(jMat = 0 ; jMat < numOfMat; ++jMat) // region material loop + for(size_t jMat = 0; jMat < numOfMat; ++jMat) // region material loop { - const G4MaterialCutsCouple* matCouple = theCoupleTable-> - GetMaterialCutsCouple( *matIter, curReg->GetProductionCuts() ); - fMaterialCutsCoupleVector.push_back(matCouple); + fMaterial = (*theMaterialTable)[jMat]; + fCutCouple = theCoupleTable->GetMaterialCutsCouple( fMaterial, + curReg->GetProductionCuts() ); + if( fCutCouple ) { + fMaterialCutsCoupleVector.push_back(fCutCouple); - size_t iMatGlob; - for(iMatGlob = 0 ; iMatGlob < numberOfMat ; iMatGlob++ ) - { - if( *matIter == (*theMaterialTable)[iMatGlob]) break ; + fDeltaCutInKinEnergy = + (*theCoupleTable->GetEnergyCutsVector(1))[fCutCouple->GetIndex()]; + + //ComputeSandiaPhotoAbsCof(); + BuildPAIonisationTable(); + + fPAIxscBank.push_back(fPAItransferTable); + fPAIdEdxBank.push_back(fPAIdEdxTable); + fdEdxTable.push_back(fdEdxVector); + + BuildLambdaVector(); + fdNdxCutTable.push_back(fdNdxCutVector); + fLambdaTable.push_back(fLambdaVector); } - fMatIndex = iMatGlob; - - ComputeSandiaPhotoAbsCof(); - BuildPAIonisationTable(p); - - fPAIxscBank.push_back(fPAItransferTable); - fPAIdEdxBank.push_back(fPAIdEdxTable); - fdEdxTable.push_back(fdEdxVector); - - BuildLambdaVector(matCouple); - fdNdxCutTable.push_back(fdNdxCutVector); - fLambdaTable.push_back(fLambdaVector); - - - matIter++; } } } @@ -194,7 +200,7 @@ void G4PAIModel::Initialise(const G4ParticleDefinition* p, ////////////////////////////////////////////////////////////////// void G4PAIModel::ComputeSandiaPhotoAbsCof() -{ +{ G4int i, j, numberOfElements ; static const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); @@ -240,110 +246,77 @@ void G4PAIModel::ComputeSandiaPhotoAbsCof() // the tables are built for MATERIALS // ********* -void -G4PAIModel::BuildPAIonisationTable(const G4ParticleDefinition* p) +void G4PAIModel::BuildPAIonisationTable() { G4double LowEdgeEnergy , ionloss ; - G4double massRatio, tau, Tmax, Tmin, Tkin, deltaLow, gamma, bg2 ; - /* - if( fPAItransferTable ) - { - fPAItransferTable->clearAndDestroy() ; - delete fPAItransferTable ; - } - */ - fPAItransferTable = new G4PhysicsTable(fTotBin); - /* - if( fPAIdEdxTable ) - { - fPAIdEdxTable->clearAndDestroy() ; - delete fPAIdEdxTable ; - } - */ - fPAIdEdxTable = new G4PhysicsTable(fTotBin); + G4double tau, Tmax, Tmin, Tkin, deltaLow, gamma, bg2 ; - // if(fdEdxVector) delete fdEdxVector ; + if(fdEdxVector) delete fdEdxVector; fdEdxVector = new G4PhysicsLogVector( fLowestKineticEnergy, - fHighestKineticEnergy, - fTotBin ) ; - Tmin = fSandiaPhotoAbsCof[0][0] ; // low energy Sandia interval + fHighestKineticEnergy, + fTotBin); + G4SandiaTable* sandia = fMaterial->GetSandiaTable(); + + Tmin = sandia->GetSandiaCofForMaterialPAI(0,0)*keV; deltaLow = 100.*eV; // 0.5*eV ; for (G4int i = 0 ; i < fTotBin ; i++) //The loop for the kinetic energy { LowEdgeEnergy = fParticleEnergyVector->GetLowEdgeEnergy(i) ; tau = LowEdgeEnergy/fMass ; - // if(tau < 0.01) tau = 0.01 ; gamma = tau +1. ; // G4cout<<"gamma = "<GetParticleName() == "e-") - { - Tmax = 0.5*LowEdgeEnergy; - } - else if(p->GetParticleName() == "e+") - { - Tmax = LowEdgeEnergy; // Unclear?? - } - else - { - massRatio = electron_mass_c2/fMass ; - Tmax = 2.*electron_mass_c2*bg2/(1. + 2.*gamma*massRatio+massRatio*massRatio); - } - + Tmax = MaxSecondaryEnergy(fParticle, LowEdgeEnergy); + // Tmax = std::min(fDeltaCutInKinEnergy, Tmax); + Tkin = Tmax ; // G4cout<<"proton Tkin = "< Tmax) // was < - { - Tkin = Tmax ; - } - if ( Tkin < Tmin + deltaLow ) // low energy safety - { + + if ( Tmax < Tmin + deltaLow ) // low energy safety Tkin = Tmin + deltaLow ; - } + + /* G4PAIxSection protonPAI( fMatIndex, Tkin, bg2, fSandiaPhotoAbsCof, fSandiaIntervalNumber ) ; - + */ + fPAIySection.Initialize(fMaterial, Tkin, bg2); // G4cout<<"ionloss = "<insert(fdEdxVector); + // end of material loop + // G4cout<<"G4PAIonisation::BuildPAIonisationTable() have been called"<GetSurfaceTolerance(); - - const G4ProductionCutsTable* theCoupleTable= - G4ProductionCutsTable::GetProductionCutsTable(); - - size_t numOfCouples = theCoupleTable->GetTableSize(); - size_t jMatCC; - - for (jMatCC = 0 ; jMatCC < numOfCouples ; jMatCC++ ) - { - if( matCutsCouple == theCoupleTable->GetMaterialCutsCouple(jMatCC) ) break; - } - if( jMatCC == numOfCouples && jMatCC > 0 ) jMatCC--; - - const vector* deltaCutInKineticEnergy = theCoupleTable-> - GetEnergyCutsVector(idxG4ElectronCut); + //G4double kCarTolerance = G4GeometryTolerance::GetInstance() + // ->GetSurfaceTolerance(); if (fLambdaVector) delete fLambdaVector; if (fdNdxCutVector) delete fdNdxCutVector; @@ -384,18 +339,17 @@ G4PAIModel::BuildLambdaVector(const G4MaterialCutsCouple* matCutsCouple) fdNdxCutVector = new G4PhysicsLogVector( fLowestKineticEnergy, fHighestKineticEnergy, fTotBin ) ; - G4double deltaCutInKineticEnergyNow = (*deltaCutInKineticEnergy)[jMatCC] ; - if(fVerbose) + if(fVerbose > 1) { - G4cout<<"PAIModel DeltaCutInKineticEnergyNow = " - <PutValue(i, lambda) ; fdNdxCutVector->PutValue(i, dNdxCut) ; @@ -588,8 +542,8 @@ void G4PAIModel::SampleSecondaries(std::vector* vdp, fPAItransferTable = fPAIxscBank[jMat]; fdNdxCutVector = fdNdxCutTable[jMat]; - G4double tmax = min(MaxSecondaryKinEnergy(dp), maxEnergy); - if( tmin >= tmax && fVerbose) + G4double tmax = std::min(MaxSecondaryKinEnergy(dp), maxEnergy); + if( tmin >= tmax && fVerbose > 0) { G4cout<<"G4PAIModel::SampleSecondary: tmin >= tmax "<* vdp, // G4cout<<"G4PAIModel::SampleSecondaries; deltaKIn = "< 0) { - G4cout<<"Tkin of secondary e- <= 0."<GetDefinition()->GetParticleName() == "e+") ) deltaTkin = 0.5*kineticEnergy; + if( deltaTkin > tmax) deltaTkin = tmax; G4double deltaTotalMomentum = sqrt(deltaTkin*(deltaTkin + 2. * electron_mass_c2 )); G4double totalMomentum = sqrt(pSquare); G4double costheta = deltaTkin*(totalEnergy + electron_mass_c2) /(deltaTotalMomentum * totalMomentum); - if( costheta >= 0.99999 ) costheta = 0.99999; - G4double sintheta, sin2 = 1. - costheta*costheta; - - if( sin2 <= 0.) sintheta = 0.; - else sintheta = sqrt(sin2); + if( costheta > 0.99999 ) costheta = 0.99999; + G4double sintheta = 0.0; + G4double sin2 = 1. - costheta*costheta; + if( sin2 > 0.) sintheta = sqrt(sin2); // direction of the delta electron - G4double phi = twopi*G4UniformRand(); G4double dirx = sintheta*cos(phi), diry = sintheta*sin(phi), dirz = costheta; @@ -798,8 +742,8 @@ G4double G4PAIModel::SampleFluctuations( const G4Material* material, G4int iTkin, iTransfer, iPlace ; G4long numOfCollisions=0; - // G4cout<<"G4PAIModel::SampleFluctuations"<GetMaterial()->GetName()<GetMaterial()->GetName()<= step) break; numOfCollisions++; } - // G4cout<<"numOfCollisions = "< Tkin) loss=Tkin; if(loss < 0. ) loss = 0.; return loss ; diff --git a/source/processes/electromagnetic/standard/src/G4PAIPhotonModel.cc b/source/processes/electromagnetic/standard/src/G4PAIPhotonModel.cc index 922d7e2537..5038f028d3 100644 --- a/source/processes/electromagnetic/standard/src/G4PAIPhotonModel.cc +++ b/source/processes/electromagnetic/standard/src/G4PAIPhotonModel.cc @@ -49,6 +49,7 @@ #include "G4PAIPhotonModel.hh" #include "Randomize.hh" #include "G4Electron.hh" +#include "G4Positron.hh" #include "G4Gamma.hh" #include "G4Poisson.hh" #include "G4Step.hh" @@ -76,6 +77,11 @@ G4PAIPhotonModel::G4PAIPhotonModel(const G4ParticleDefinition* p, const G4String fTaulim(8.4146e-3) { if(p) SetParticle(p); + + fVerbose = 0; + fElectron = G4Electron::Electron(); + fPositron = G4Positron::Positron(); + fProtonEnergyVector = new G4PhysicsLogVector(fLowestKineticEnergy, fHighestKineticEnergy, fTotBin); @@ -91,6 +97,8 @@ G4PAIPhotonModel::G4PAIPhotonModel(const G4ParticleDefinition* p, const G4String fdNdxCutVector = 0; fdNdxCutPhotonVector = 0; fdNdxCutPlasmonVector = 0; + + isInitialised = false; } //////////////////////////////////////////////////////////////////////////// @@ -146,6 +154,9 @@ void G4PAIPhotonModel::SetParticle(const G4ParticleDefinition* p) void G4PAIPhotonModel::Initialise(const G4ParticleDefinition* p, const G4DataVector&) { + if(isInitialised) return; + isInitialised = true; + if(!fParticle) SetParticle(p); if(pParticleChange) @@ -160,8 +171,6 @@ void G4PAIPhotonModel::Initialise(const G4ParticleDefinition* p, { const G4Region* curReg = fPAIRegionVector[iReg]; - // (*fPAIRegionVector[iRegion]) - vector::const_iterator matIter = curReg->GetMaterialIterator(); size_t jMat; size_t numOfMat = curReg->GetNumberOfMaterials(); @@ -301,15 +310,13 @@ G4PAIPhotonModel::BuildPAIonisationTable() // G4cout<<"gamma = "< Tmax) // was < - { - Tkin = Tmax ; - } + Tkin = Tmax ; if ( Tkin < Tmin + deltaLow ) // low energy safety { Tkin = Tmin + deltaLow ; @@ -359,12 +366,11 @@ G4PAIPhotonModel::BuildPAIonisationTable() fPAIplasmonTable->insertAt(i,plasmonVector) ; fPAIdEdxTable->insertAt(i,dEdxVector) ; - // delete[] transferVector ; - } // end of Tkin loop - // theLossTable->insert(fdEdxVector); - // end of material loop - // G4cout<<"G4PAIonisation::BuildPAIonisationTable() have been called"<insert(fdEdxVector); + // end of material loop + // G4cout<<"G4PAIonisation::BuildPAIonisationTable() have been called"< 0) + { + G4cout<<"PAIPhotonModel deltaCutInKineticEnergyNow = " + <GetPDGMass(); G4double scaledTkin = kineticEnergy*proton_mass_c2/particleMass; - G4double charge = p->GetPDGCharge(); - G4double charge2 = charge*charge, dEdx; + G4double charge = p->GetPDGCharge()/eplus; + G4double charge2 = charge*charge; + G4double dEdx = 0.; for( jMat = 0 ;jMat < fMaterialCutsCoupleVector.size() ; ++jMat ) { @@ -746,7 +755,7 @@ void G4PAIPhotonModel::SampleSecondaries(std::vector* vdp, fdNdxCutPlasmonVector = fdNdxCutPlasmonTable[jMat]; G4double tmax = min(MaxSecondaryKinEnergy(dp), maxEnergy); - if( tmin >= tmax ) + if( tmin >= tmax && fVerbose > 0) { G4cout<<"G4PAIPhotonModel::SampleSecondary: tmin >= tmax "<* vdp, G4ThreeVector direction = dp->GetMomentumDirection(); G4double particleMass = dp->GetMass(); G4double kineticEnergy = dp->GetKineticEnergy(); - G4double scaledTkin = kineticEnergy*proton_mass_c2/particleMass; + G4double scaledTkin = kineticEnergy*fMass/particleMass; G4double totalEnergy = kineticEnergy + particleMass; G4double pSquare = kineticEnergy*(totalEnergy+particleMass); @@ -783,23 +792,23 @@ void G4PAIPhotonModel::SampleSecondaries(std::vector* vdp, if( deltaTkin <= 0. ) { - G4cout<<"Tkin of secondary e- <= 0."<GetDensity(); + fElectronDensity = material->GetElectronDensity() ; + numberOfElements = material->GetNumberOfElements() ; + + fSandia = material->GetSandiaTable(); + + fIntervalNumber = fSandia->GetMaxInterval(); + + fIntervalNumber--; + + for(i=1;i<=fIntervalNumber;i++) + { + G4double e = fSandia->GetSandiaMatTablePAI(i,0); + if(e >= maxEnergyTransfer || i > fIntervalNumber) + { + fEnergyInterval[i] = maxEnergyTransfer ; + fIntervalNumber = i ; + break; + } + fEnergyInterval[i] = e; + fA1[i] = fSandia->GetSandiaMatTablePAI(i,1); + fA2[i] = fSandia->GetSandiaMatTablePAI(i,2); + fA3[i] = fSandia->GetSandiaMatTablePAI(i,3); + fA4[i] = fSandia->GetSandiaMatTablePAI(i,4); + + } + if(fEnergyInterval[fIntervalNumber] != maxEnergyTransfer) + { + fIntervalNumber++; + fEnergyInterval[fIntervalNumber] = maxEnergyTransfer ; + fA1[fIntervalNumber] = fA1[fIntervalNumber-1] ; + fA2[fIntervalNumber] = fA2[fIntervalNumber-1] ; + fA3[fIntervalNumber] = fA3[fIntervalNumber-1] ; + fA4[fIntervalNumber] = fA4[fIntervalNumber-1] ; + } + + // Now checking, if two borders are too close together + for(i=1;i + 1.5*fDelta*(fEnergyInterval[i+1]+fEnergyInterval[i])) + { + continue ; + } + else + { + for(j=i;j 0 (L.Urban) +// 05-07-07 modified model functions in SampleCosineTheta (L.Urban) +// 06-07-07 theta0 is not the same for e-/e+ as for heavy particles (L.Urban) +// 02-08-07 compare safety not with 0. but with tlimitminfix (V.Ivanchenko) +// 09-08-07 tail of angular distribution has been modified (L.Urban) +// 22-10-07 - corr. in ComputeGeomPathLength in order to get better low +// energy behaviour for heavy particles, +// - theta0 is slightly modified, +// - some old inconsistency/bug is cured in SampleCosineTheta, +// now 0 <= prob <= 1 in any case (L.Urban) +// 26-10-07 different correction parameters for e/mu/hadrons in ComputeTheta0 +// 30-11-07 fix in ComputeTheta0 (L.Urban) // // Class Description: @@ -157,7 +168,6 @@ #include "G4LossTableManager.hh" #include "G4ParticleChangeForMSC.hh" #include "G4TransportationManager.hh" -#include "G4Navigator.hh" #include "G4SafetyHelper.hh" #include "G4Poisson.hh" @@ -181,8 +191,11 @@ G4UrbanMscModel::G4UrbanMscModel(G4double m_facrange, G4double m_dtrl, samplez(m_samplez), isInitialized(false) { + masslimite = 0.6*MeV; + masslimitmu = 110.*MeV; + taubig = 8.0; - tausmall = 1.e-20; + tausmall = 1.e-16; taulim = 1.e-6; currentTau = taulim; tlimitminfix = 1.e-6*mm; @@ -530,7 +543,7 @@ G4double G4UrbanMscModel::ComputeTruePathLengthLimit( { //compute geomlimit and presafety GeomLimit(track); - + // is far from boundary if(currentRange <= presafety) { @@ -543,7 +556,6 @@ G4double G4UrbanMscModel::ComputeTruePathLengthLimit( if((stepStatus == fGeomBoundary) || (stepNumber == 1)) { - if(stepNumber == 1) smallstep = 1.e10; else smallstep = 1.; @@ -557,15 +569,7 @@ G4double G4UrbanMscModel::ComputeTruePathLengthLimit( if (currentRange > lambda0) tlimit = facr*currentRange; else tlimit = facr*lambda0; - // constraint from the geometry (if tlimit above is too big) - G4double tgeom = geombig; - if(geomlimit > geommin) - { - if(stepStatus == fGeomBoundary) - tgeom = geomlimit/facgeom; - else - tgeom = 2.*geomlimit/facgeom; - } + if(tlimit > currentRange) tlimit = currentRange; //define stepmin here (it depends on lambda!) //rough estimation of lambda_elastic/lambda_transport @@ -576,15 +580,24 @@ G4double G4UrbanMscModel::ComputeTruePathLengthLimit( skindepth = skin*stepmin; //define tlimitmin - tlimitmin = lambda0/nstepmax; - if(tlimitmin < stepmin) tlimitmin = 1.01*stepmin; + tlimitmin = 10.*stepmin; if(tlimitmin < tlimitminfix) tlimitmin = tlimitminfix; //lower limit for tlimit if(tlimit < tlimitmin) tlimit = tlimitmin; - //check against geometry limit - if(tlimit > tgeom) tlimit = tgeom; + // constraint from the geometry (if tlimit above is too big) + G4double tgeom = geombig; + + if((geomlimit < geombig) && (geomlimit > geommin)) + { + if(stepStatus == fGeomBoundary) + tgeom = geomlimit/facgeom; + else + tgeom = 2.*geomlimit/facgeom; + + if(tlimit > tgeom) tlimit = tgeom; + } } //if track starts far from boundaries increase tlimit! @@ -600,7 +613,7 @@ G4double G4UrbanMscModel::ComputeTruePathLengthLimit( G4double tnow = tlimit; // optimization ... if(geomlimit < geombig) tnow = max(tlimit,facsafety*geomlimit); - + // step reduction near to boundary if(smallstep < skin) { @@ -631,7 +644,7 @@ G4double G4UrbanMscModel::ComputeTruePathLengthLimit( { // compute presafety again if presafety <= 0 and no boundary // i.e. when it is needed for optimization purposes - if((stepStatus != fGeomBoundary) && (presafety <= 0.)) + if((stepStatus != fGeomBoundary) && (presafety < tlimitminfix)) presafety = safetyHelper->ComputeSafety(sp->GetPosition()); // is far from boundary @@ -692,7 +705,8 @@ void G4UrbanMscModel::GeomLimit(const G4Track& track) if((track.GetVolume() != 0) && (track.GetVolume() != safetyHelper->GetWorldVolume())) { - G4double cstep = tPathLength; + G4double cstep = currentRange; + geomlimit = safetyHelper->CheckNextStep( track.GetStep()->GetPreStepPoint()->GetPosition(), track.GetMomentumDirection(), @@ -734,7 +748,7 @@ G4double G4UrbanMscModel::ComputeGeomPathLength(G4double) if (tPathLength < currentRange*dtrl) { if(tau < taulim) zmean = tPathLength*(1.-0.5*tau) ; else zmean = lambda0*(1.-exp(-tau)); - } else if(currentKinEnergy < mass) { + } else if(currentKinEnergy < mass) { par1 = 1./currentRange ; par2 = 1./(par1*lambda0) ; par3 = 1.+par2 ; @@ -832,31 +846,30 @@ G4double G4UrbanMscModel::ComputeTheta0(G4double trueStepLength, KineticEnergy*(KineticEnergy+2.*mass)/ ((currentKinEnergy+mass)*(KineticEnergy+mass))); G4double y = trueStepLength/currentRadLength; - G4double theta0 = c_highland*charge*sqrt(y)/betacp; - y = log(y); - theta0 *= sqrt(1.+y*(0.105+0.0035*y)); - - //correction for small Zeff (based on high energy - // proton scattering data) - // see G.Shen at al. Phys.Rev.D20(1979) p.1584 - theta0 *= 1.-0.24/(Zeff*(Zeff+1.)); - + G4double theta0 = c_highland*std::abs(charge)*sqrt(y)/betacp; + y = log(y); + if(mass < masslimite) + theta0 *= (1.+0.051*y); + else if(mass < masslimitmu) + theta0 *= (1.+0.044*y); + else + theta0 *= (1.+0.038*y); + return theta0; - } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void G4UrbanMscModel::SampleSecondaries(std::vector*, - const G4MaterialCutsCouple*, - const G4DynamicParticle* dynParticle, - G4double truestep, - G4double safety) +void G4UrbanMscModel::SampleScattering(const G4DynamicParticle* dynParticle, + G4double safety) { G4double kineticEnergy = dynParticle->GetKineticEnergy(); - if((kineticEnergy <= 0.0) || (truestep <= tlimitminfix)) return; + if((kineticEnergy <= 0.0) || (tPathLength <= tlimitminfix)) return; - G4double cth = SampleCosineTheta(truestep,kineticEnergy); + G4double cth = SampleCosineTheta(tPathLength,kineticEnergy); + // protection against 'bad' cth values + if(cth > 1.) cth = 1.; + if(cth < -1.) cth = -1.; G4double sth = sqrt((1.0 - cth)*(1.0 + cth)); G4double phi = twopi*G4UniformRand(); G4double dirx = sth*cos(phi); @@ -867,13 +880,13 @@ void G4UrbanMscModel::SampleSecondaries(std::vector*, newDirection.rotateUz(oldDirection); fParticleChange->ProposeMomentumDirection(newDirection); - if (latDisplasment && safety > 0.0) { + if (latDisplasment && safety > tlimitminfix) { G4double r = SampleDisplacement(); /* G4cout << "G4UrbanMscModel::SampleSecondaries: e(MeV)= " << kineticEnergy << " sinTheta= " << sth << " r(mm)= " << r - << " trueStep(mm)= " << truestep + << " trueStep(mm)= " << tPathLength << " geomStep(mm)= " << zPathLength << G4endl; */ @@ -902,7 +915,6 @@ void G4UrbanMscModel::SampleSecondaries(std::vector*, if(r > safety) { // ******* so safety is computed at boundary too ************ G4double newsafety = safetyHelper->ComputeSafety(Position); - //G4double newsafety = safety; if(r > newsafety) fac = newsafety/r ; } @@ -912,18 +924,17 @@ void G4UrbanMscModel::SampleSecondaries(std::vector*, // compute new endpoint of the Step G4ThreeVector newPosition = Position+fac*r*latDirection; - // definetly not on boundary + // definitely not on boundary if(1. == fac) { - //if(0. < fac) { safetyHelper->ReLocateWithinVolume(newPosition); - } else { // check safety after displacement G4double postsafety = safetyHelper->ComputeSafety(newPosition); // displacement to boundary - if(postsafety <= 0.) { + // if(postsafety < tlimitminfix) { + if(postsafety <= 0.0) { safetyHelper->Locate(newPosition, newDirection); // not on the boundary @@ -976,19 +987,20 @@ G4double G4UrbanMscModel::SampleCosineTheta(G4double trueStepLength, sy += st*sin(phi); sz += ct; } - cth = sz/sqrt(sx*sx+sy*sy+sz*sz); + cth = sz/sqrt(sx*sx+sy*sy+sz*sz); } } else { - if(trueStepLength >= currentRange*dtrl) - if(par1*trueStepLength < 1.) - tau = -par2*log(1.-par1*trueStepLength) ; - // for the case if ioni/brems are inactivated - // see the corresponding condition in ComputeGeomPathLength - else if(1.-KineticEnergy/currentKinEnergy > taulim) - tau = taubig ; - + if(trueStepLength >= currentRange*dtrl) + { + if(par1*trueStepLength < 1.) + tau = -par2*log(1.-par1*trueStepLength) ; + // for the case if ioni/brems are inactivated + // see the corresponding condition in ComputeGeomPathLength + else if(1.-KineticEnergy/currentKinEnergy > taulim) + tau = taubig ; + } currentTau = tau ; lambdaeff = trueStepLength/currentTau; currentRadLength = couple->GetMaterial()->GetRadlen(); @@ -996,82 +1008,79 @@ G4double G4UrbanMscModel::SampleCosineTheta(G4double trueStepLength, if (tau >= taubig) cth = -1.+2.*G4UniformRand(); else if (tau >= tausmall) { - G4double b,bx,b1,ebx,eb1; - G4double prob = 0., qprob = 1. ; + G4double b=2.,bp1=3.,bm1=1.; + G4double prob = 0. ; G4double a = 1., ea = 0., eaa = 1.; G4double xmean1 = 1., xmean2 = 0.; - G4double xsi = 3.; - + G4double theta0 = ComputeTheta0(trueStepLength,KineticEnergy); - if(theta0 > taulim) a = 0.5/(1.-cos(theta0)) ; - else a = 1.0/(theta0*theta0) ; + // protexction for very small angles + if(theta0 < tausmall) return cth; + + G4double sth = sin(0.5*theta0); + a = 0.25/(sth*sth); + + ea = exp(-2.*a); + eaa = 1.-ea ; + xmean1 = (1.+ea)/eaa-1./a; G4double xmeanth = exp(-tau); - - G4double c = 3. ; - G4double c1 = c-1.; - - G4double x0 = 1.-xsi/a ; - if(x0 < 0.) + b = 1./xmeanth ; + bp1 = b+1.; + bm1 = b-1.; + // protection + if(bm1 > 0.) + xmean2 = b-0.5*bp1*bm1*log(bp1/bm1); + else { - // 1 model function - b = exp(tau); - bx = b-1.; - b1 = b+1.; - ebx=exp((c1)*log(bx)) ; - eb1=exp((c1)*log(b1)) ; + b = 1.+tau; + bp1 = 2.+tau; + bm1 = tau; + xmean2 = 1.+tau*(1.-log(2./tau)); + } + + if((xmean1 >= xmeanth) && (xmean2 <= xmeanth)) + { + //normal case + prob = (xmeanth-xmean2)/(xmean1-xmean2); } else { - //empirical tail parameter - // based some exp. data - c = 2.40-0.027*exp(2.*log(Zeff)/3.); - - if(c == 2.) c = 2.+taulim ; - if(c <= 1.) c = 1.+taulim ; - c1 = c-1.; - - ea = exp(-xsi) ; - eaa = 1.-ea ; - xmean1 = 1.-(1.-(1.+xsi)*ea)/(eaa*a) ; - - // from the continuity of the 1st derivative at x=x0 - b = 1.+(c-xsi)/a ; - - b1 = b+1. ; - bx = c/a ; - eb1=exp((c1)*log(b1)) ; - ebx=exp((c1)*log(bx)) ; - xmean2 = (x0*eb1+ebx-(eb1*bx-b1*ebx)/(c-2.))/(eb1-ebx) ; - - G4double f1x0 = a*ea/eaa ; - G4double f2x0 = c1*eb1*ebx/(eb1-ebx)/exp(c*log(bx)) ; - - // from continuity at x=x0 - prob = f2x0/(f1x0+f2x0) ; - - // from xmean = xmeanth - qprob = (f1x0+f2x0)*xmeanth/(f2x0*xmean1+f1x0*xmean2) ; + // x1 < xth ( x2 < xth automatically if b = 1/xth) + // correct a (xmean1) + if((xmeanth-xmean1)/xmeanth < 1.e-5) + { + // xmean1 is small probably due to precision problems + xmean1 = 0.50*(1.+xmeanth); + prob = (xmeanth-xmean2)/(xmean1-xmean2); + } + else + { + // correct a in order to have x1=xth + G4int i=0, imax=10; + do + { + a = 1./(1.-xmeanth+2.*ea/eaa); + ea = exp(-2.*a); + eaa = 1.-ea; + xmean1 = (1.+ea)/eaa-1./a; + i += 1; + } while ((std::abs((xmeanth-xmean1)/xmeanth) > 0.05) && (i < imax)); + prob = 1.; + } } // sampling of costheta - if (G4UniformRand() < qprob) - { - if (G4UniformRand() < prob) - cth = 1.+log(ea+G4UniformRand()*eaa)/a ; - else - cth = b-b1*bx/exp(log(ebx-G4UniformRand()*(ebx-eb1))/c1) ; - } + if (G4UniformRand() < prob) + cth = 1.+log(ea+G4UniformRand()*eaa)/a ; else - { - cth = -1.+2.*G4UniformRand(); - } + cth = b-bp1*bm1/(bm1+2.*G4UniformRand()) ; } } - return cth ; } + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4double G4UrbanMscModel::SampleDisplacement() @@ -1135,3 +1144,12 @@ G4double G4UrbanMscModel::LatCorrelation() } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4UrbanMscModel::SampleSecondaries(std::vector*, + const G4MaterialCutsCouple*, + const G4DynamicParticle*, + G4double, + G4double) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/src/G4UrbanMscModel90.cc b/source/processes/electromagnetic/standard/src/G4UrbanMscModel90.cc new file mode 100644 index 0000000000..3203cf27bd --- /dev/null +++ b/source/processes/electromagnetic/standard/src/G4UrbanMscModel90.cc @@ -0,0 +1,1054 @@ +// +// ******************************************************************** +// * 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: G4UrbanMscModel90.cc,v 1.1 2007/12/07 17:35:52 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4UrbanMscModel90 +// +// Author: V.Ivanchenko clone Laszlo Urban model +// +// Creation date: 07.12.2007 +// +// Modifications: +// +// + +// Class Description: +// +// Implementation of the model of multiple scattering based on +// H.W.Lewis Phys Rev 78 (1950) 526 and others + +// ------------------------------------------------------------------- +// + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +#include "G4UrbanMscModel90.hh" +#include "Randomize.hh" +#include "G4Electron.hh" +#include "G4LossTableManager.hh" +#include "G4ParticleChangeForMSC.hh" +#include "G4TransportationManager.hh" +#include "G4SafetyHelper.hh" + +#include "G4Poisson.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +using namespace std; + +G4UrbanMscModel90::G4UrbanMscModel90(G4double m_facrange, G4double m_dtrl, + G4double m_lambdalimit, + G4double m_facgeom,G4double m_skin, + G4bool m_samplez, G4MscStepLimitType m_stepAlg, + const G4String& nam) + : G4VEmModel(nam), + dtrl(m_dtrl), + lambdalimit(m_lambdalimit), + facrange(m_facrange), + facgeom(m_facgeom), + skin(m_skin), + steppingAlgorithm(m_stepAlg), + samplez(m_samplez), + isInitialized(false) +{ + taubig = 8.0; + tausmall = 1.e-20; + taulim = 1.e-6; + currentTau = taulim; + tlimitminfix = 1.e-6*mm; + stepmin = tlimitminfix; + skindepth = skin*stepmin; + smallstep = 1.e10; + currentRange = 0. ; + frscaling2 = 0.25; + frscaling1 = 1.-frscaling2; + tlimit = 1.e10*mm; + tlimitmin = 10.*tlimitminfix; + nstepmax = 25.; + geombig = 1.e50*mm; + geommin = 1.e-3*mm; + geomlimit = geombig; + presafety = 0.*mm; + facsafety = 0.25; + Zeff = 1.; + particle = 0; + theManager = G4LossTableManager::Instance(); + inside = false; + insideskin = false; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4UrbanMscModel90::~G4UrbanMscModel90() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4UrbanMscModel90::Initialise(const G4ParticleDefinition* p, + const G4DataVector&) +{ + if(isInitialized) return; + // set values of some data members + SetParticle(p); + + if (pParticleChange) + fParticleChange = reinterpret_cast(pParticleChange); + else + fParticleChange = new G4ParticleChangeForMSC(); + + safetyHelper = G4TransportationManager::GetTransportationManager() + ->GetSafetyHelper(); + safetyHelper->InitialiseHelper(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4UrbanMscModel90::ComputeCrossSectionPerAtom( + const G4ParticleDefinition* part, + G4double KineticEnergy, + G4double AtomicNumber,G4double, + G4double, G4double) +{ + const G4double sigmafactor = twopi*classic_electr_radius*classic_electr_radius; + const G4double epsfactor = 2.*electron_mass_c2*electron_mass_c2* + Bohr_radius*Bohr_radius/(hbarc*hbarc); + const G4double epsmin = 1.e-4 , epsmax = 1.e10; + + const G4double Zdat[15] = { 4., 6., 13., 20., 26., 29., 32., 38., 47., + 50., 56., 64., 74., 79., 82. }; + + const G4double Tdat[22] = { 100*eV, 200*eV, 400*eV, 700*eV, + 1*keV, 2*keV, 4*keV, 7*keV, + 10*keV, 20*keV, 40*keV, 70*keV, + 100*keV, 200*keV, 400*keV, 700*keV, + 1*MeV, 2*MeV, 4*MeV, 7*MeV, + 10*MeV, 20*MeV}; + + // corr. factors for e-/e+ lambda for T <= Tlim + G4double celectron[15][22] = + {{1.125,1.072,1.051,1.047,1.047,1.050,1.052,1.054, + 1.054,1.057,1.062,1.069,1.075,1.090,1.105,1.111, + 1.112,1.108,1.100,1.093,1.089,1.087 }, + {1.408,1.246,1.143,1.096,1.077,1.059,1.053,1.051, + 1.052,1.053,1.058,1.065,1.072,1.087,1.101,1.108, + 1.109,1.105,1.097,1.090,1.086,1.082 }, + {2.833,2.268,1.861,1.612,1.486,1.309,1.204,1.156, + 1.136,1.114,1.106,1.106,1.109,1.119,1.129,1.132, + 1.131,1.124,1.113,1.104,1.099,1.098 }, + {3.879,3.016,2.380,2.007,1.818,1.535,1.340,1.236, + 1.190,1.133,1.107,1.099,1.098,1.103,1.110,1.113, + 1.112,1.105,1.096,1.089,1.085,1.098 }, + {6.937,4.330,2.886,2.256,1.987,1.628,1.395,1.265, + 1.203,1.122,1.080,1.065,1.061,1.063,1.070,1.073, + 1.073,1.070,1.064,1.059,1.056,1.056 }, + {9.616,5.708,3.424,2.551,2.204,1.762,1.485,1.330, + 1.256,1.155,1.099,1.077,1.070,1.068,1.072,1.074, + 1.074,1.070,1.063,1.059,1.056,1.052 }, + {11.72,6.364,3.811,2.806,2.401,1.884,1.564,1.386, + 1.300,1.180,1.112,1.082,1.073,1.066,1.068,1.069, + 1.068,1.064,1.059,1.054,1.051,1.050 }, + {18.08,8.601,4.569,3.183,2.662,2.025,1.646,1.439, + 1.339,1.195,1.108,1.068,1.053,1.040,1.039,1.039, + 1.039,1.037,1.034,1.031,1.030,1.036 }, + {18.22,10.48,5.333,3.713,3.115,2.367,1.898,1.631, + 1.498,1.301,1.171,1.105,1.077,1.048,1.036,1.033, + 1.031,1.028,1.024,1.022,1.021,1.024 }, + {14.14,10.65,5.710,3.929,3.266,2.453,1.951,1.669, + 1.528,1.319,1.178,1.106,1.075,1.040,1.027,1.022, + 1.020,1.017,1.015,1.013,1.013,1.020 }, + {14.11,11.73,6.312,4.240,3.478,2.566,2.022,1.720, + 1.569,1.342,1.186,1.102,1.065,1.022,1.003,0.997, + 0.995,0.993,0.993,0.993,0.993,1.011 }, + {22.76,20.01,8.835,5.287,4.144,2.901,2.219,1.855, + 1.677,1.410,1.224,1.121,1.073,1.014,0.986,0.976, + 0.974,0.972,0.973,0.974,0.975,0.987 }, + {50.77,40.85,14.13,7.184,5.284,3.435,2.520,2.059, + 1.837,1.512,1.283,1.153,1.091,1.010,0.969,0.954, + 0.950,0.947,0.949,0.952,0.954,0.963 }, + {65.87,59.06,15.87,7.570,5.567,3.650,2.682,2.182, + 1.939,1.579,1.325,1.178,1.108,1.014,0.965,0.947, + 0.941,0.938,0.940,0.944,0.946,0.954 }, + {55.60,47.34,15.92,7.810,5.755,3.767,2.760,2.239, + 1.985,1.609,1.343,1.188,1.113,1.013,0.960,0.939, + 0.933,0.930,0.933,0.936,0.939,0.949 }}; + + G4double cpositron[15][22] = { + {2.589,2.044,1.658,1.446,1.347,1.217,1.144,1.110, + 1.097,1.083,1.080,1.086,1.092,1.108,1.123,1.131, + 1.131,1.126,1.117,1.108,1.103,1.100 }, + {3.904,2.794,2.079,1.710,1.543,1.325,1.202,1.145, + 1.122,1.096,1.089,1.092,1.098,1.114,1.130,1.137, + 1.138,1.132,1.122,1.113,1.108,1.102 }, + {7.970,6.080,4.442,3.398,2.872,2.127,1.672,1.451, + 1.357,1.246,1.194,1.179,1.178,1.188,1.201,1.205, + 1.203,1.190,1.173,1.159,1.151,1.145 }, + {9.714,7.607,5.747,4.493,3.815,2.777,2.079,1.715, + 1.553,1.353,1.253,1.219,1.211,1.214,1.225,1.228, + 1.225,1.210,1.191,1.175,1.166,1.174 }, + {17.97,12.95,8.628,6.065,4.849,3.222,2.275,1.820, + 1.624,1.382,1.259,1.214,1.202,1.202,1.214,1.219, + 1.217,1.203,1.184,1.169,1.160,1.151 }, + {24.83,17.06,10.84,7.355,5.767,3.707,2.546,1.996, + 1.759,1.465,1.311,1.252,1.234,1.228,1.238,1.241, + 1.237,1.222,1.201,1.184,1.174,1.159 }, + {23.26,17.15,11.52,8.049,6.375,4.114,2.792,2.155, + 1.880,1.535,1.353,1.281,1.258,1.247,1.254,1.256, + 1.252,1.234,1.212,1.194,1.183,1.170 }, + {22.33,18.01,12.86,9.212,7.336,4.702,3.117,2.348, + 2.015,1.602,1.385,1.297,1.268,1.251,1.256,1.258, + 1.254,1.237,1.214,1.195,1.185,1.179 }, + {33.91,24.13,15.71,10.80,8.507,5.467,3.692,2.808, + 2.407,1.873,1.564,1.425,1.374,1.330,1.324,1.320, + 1.312,1.288,1.258,1.235,1.221,1.205 }, + {32.14,24.11,16.30,11.40,9.015,5.782,3.868,2.917, + 2.490,1.925,1.596,1.447,1.391,1.342,1.332,1.327, + 1.320,1.294,1.264,1.240,1.226,1.214 }, + {29.51,24.07,17.19,12.28,9.766,6.238,4.112,3.066, + 2.602,1.995,1.641,1.477,1.414,1.356,1.342,1.336, + 1.328,1.302,1.270,1.245,1.231,1.233 }, + {38.19,30.85,21.76,15.35,12.07,7.521,4.812,3.498, + 2.926,2.188,1.763,1.563,1.484,1.405,1.382,1.371, + 1.361,1.330,1.294,1.267,1.251,1.239 }, + {49.71,39.80,27.96,19.63,15.36,9.407,5.863,4.155, + 3.417,2.478,1.944,1.692,1.589,1.480,1.441,1.423, + 1.409,1.372,1.330,1.298,1.280,1.258 }, + {59.25,45.08,30.36,20.83,16.15,9.834,6.166,4.407, + 3.641,2.648,2.064,1.779,1.661,1.531,1.482,1.459, + 1.442,1.400,1.354,1.319,1.299,1.272 }, + {56.38,44.29,30.50,21.18,16.51,10.11,6.354,4.542, + 3.752,2.724,2.116,1.817,1.692,1.554,1.499,1.474, + 1.456,1.412,1.364,1.328,1.307,1.282 }}; + + //data/corrections for T > Tlim + G4double Tlim = 10.*MeV; + G4double beta2lim = Tlim*(Tlim+2.*electron_mass_c2)/ + ((Tlim+electron_mass_c2)*(Tlim+electron_mass_c2)); + G4double bg2lim = Tlim*(Tlim+2.*electron_mass_c2)/ + (electron_mass_c2*electron_mass_c2); + + G4double sig0[15] = {0.2672*barn, 0.5922*barn, 2.653*barn, 6.235*barn, + 11.69*barn , 13.24*barn , 16.12*barn, 23.00*barn , + 35.13*barn , 39.95*barn , 50.85*barn, 67.19*barn , + 91.15*barn , 104.4*barn , 113.1*barn}; + + G4double hecorr[15] = {120.70, 117.50, 105.00, 92.92, 79.23, 74.510, 68.29, + 57.39, 41.97, 36.14, 24.53, 10.21, -7.855, -16.84, + -22.30}; + + G4double sigma; + SetParticle(part); + + G4double Z23 = 2.*log(AtomicNumber)/3.; Z23 = exp(Z23); + + // correction if particle .ne. e-/e+ + // compute equivalent kinetic energy + // lambda depends on p*beta .... + + G4double eKineticEnergy = KineticEnergy; + + if((particle->GetParticleName() != "e-") && + (particle->GetParticleName() != "e+") ) + { + G4double TAU = KineticEnergy/mass ; + G4double c = mass*TAU*(TAU+2.)/(electron_mass_c2*(TAU+1.)) ; + G4double w = c-2. ; + G4double tau = 0.5*(w+sqrt(w*w+4.*c)) ; + eKineticEnergy = electron_mass_c2*tau ; + } + + G4double ChargeSquare = charge*charge; + + G4double eTotalEnergy = eKineticEnergy + electron_mass_c2 ; + G4double beta2 = eKineticEnergy*(eTotalEnergy+electron_mass_c2) + /(eTotalEnergy*eTotalEnergy); + G4double bg2 = eKineticEnergy*(eTotalEnergy+electron_mass_c2) + /(electron_mass_c2*electron_mass_c2); + + G4double eps = epsfactor*bg2/Z23; + + if (eps=0)&&(Zdat[iZ]>=AtomicNumber)) iZ -= 1; + if (iZ==14) iZ = 13; + if (iZ==-1) iZ = 0 ; + + G4double Z1 = Zdat[iZ]; + G4double Z2 = Zdat[iZ+1]; + G4double ratZ = (AtomicNumber-Z1)*(AtomicNumber+Z1)/ + ((Z2-Z1)*(Z2+Z1)); + + if(eKineticEnergy <= Tlim) + { + // get bin number in T (beta2) + G4int iT = 21; + while ((iT>=0)&&(Tdat[iT]>=eKineticEnergy)) iT -= 1; + if(iT==21) iT = 20; + if(iT==-1) iT = 0 ; + + // calculate betasquare values + G4double T = Tdat[iT], E = T + electron_mass_c2; + G4double b2small = T*(E+electron_mass_c2)/(E*E); + + T = Tdat[iT+1]; E = T + electron_mass_c2; + G4double b2big = T*(E+electron_mass_c2)/(E*E); + G4double ratb2 = (beta2-b2small)/(b2big-b2small); + + if (charge < 0.) + { + c1 = celectron[iZ][iT]; + c2 = celectron[iZ+1][iT]; + cc1 = c1+ratZ*(c2-c1); + + c1 = celectron[iZ][iT+1]; + c2 = celectron[iZ+1][iT+1]; + cc2 = c1+ratZ*(c2-c1); + + corr = cc1+ratb2*(cc2-cc1); + + sigma *= sigmafactor/corr; + } + else + { + c1 = cpositron[iZ][iT]; + c2 = cpositron[iZ+1][iT]; + cc1 = c1+ratZ*(c2-c1); + + c1 = cpositron[iZ][iT+1]; + c2 = cpositron[iZ+1][iT+1]; + cc2 = c1+ratZ*(c2-c1); + + corr = cc1+ratb2*(cc2-cc1); + + sigma *= sigmafactor/corr; + } + } + else + { + c1 = bg2lim*sig0[iZ]*(1.+hecorr[iZ]*(beta2-beta2lim))/bg2; + c2 = bg2lim*sig0[iZ+1]*(1.+hecorr[iZ+1]*(beta2-beta2lim))/bg2; + if((AtomicNumber >= Z1) && (AtomicNumber <= Z2)) + sigma = c1+ratZ*(c2-c1) ; + else if(AtomicNumber < Z1) + sigma = AtomicNumber*AtomicNumber*c1/(Z1*Z1); + else if(AtomicNumber > Z2) + sigma = AtomicNumber*AtomicNumber*c2/(Z2*Z2); + } + return sigma; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4UrbanMscModel90::ComputeTruePathLengthLimit( + const G4Track& track, + G4PhysicsTable* theTable, + G4double currentMinimalStep) +{ + tPathLength = currentMinimalStep; + G4int stepNumber = track.GetCurrentStepNumber(); + const G4DynamicParticle* dp = track.GetDynamicParticle(); + + if(stepNumber == 1) { + inside = false; + insideskin = false; + tlimit = geombig; + SetParticle( dp->GetDefinition() ); + } + + theLambdaTable = theTable; + couple = track.GetMaterialCutsCouple(); + currentMaterialIndex = couple->GetIndex(); + currentKinEnergy = dp->GetKineticEnergy(); + currentRange = + theManager->GetRangeFromRestricteDEDX(particle,currentKinEnergy,couple); + lambda0 = GetLambda(currentKinEnergy); + + // stop here if small range particle + if(inside) return tPathLength; + + if(tPathLength > currentRange) tPathLength = currentRange; + + G4StepPoint* sp = track.GetStep()->GetPreStepPoint(); + presafety = sp->GetSafety(); + + // G4cout << "G4UrbanMscModel90::ComputeTruePathLengthLimit tPathLength= " + // <GetParticleName() << " cos(TetMin)= " << cosThetaMin + // << " cos(TetMax)= " << cosThetaMax <(pParticleChange); - else - fParticleChange = new G4ParticleChangeForGamma(); + if(pParticleChange) + fParticleChange = + reinterpret_cast(pParticleChange); + else + fParticleChange = new G4ParticleChangeForGamma(); + } else { + return; + } - if(!buildTable || p->GetParticleName() == "GenericIon") return; + if(p->GetParticleType() == "nucleus") buildTable = false; + if(!buildTable) return; - // Compute cross section multiplied by Ptot^2*beta^2 - theCrossSectionTable = new G4PhysicsTable(); - G4PhysicsLogVector* ptrVector; - G4double e, value; + // Compute log cross section table per atom + if(!theCrossSectionTable) theCrossSectionTable = new G4PhysicsTable(); + nbins = 2*G4int(log10(highKEnergy/lowKEnergy)); +} - const G4ElementTable* elmt = G4Element::GetElementTable(); - size_t nelm = G4Element::GetNumberOfElements(); +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - for(size_t j=0; jGetZ(); - index[G4int(Z)] = j; - for(G4int i=0; i<=nbins; i++) { - e = ptrVector->GetLowEdgeEnergy( i ) ; - value = CalculateCrossSectionPerAtom(p, e, Z); - ptrVector->PutValue( i, log(value) ); + //G4cout << "### G4eCoulombScatteringModel::ComputeCrossSectionPerAtom for " + // << p->GetParticleName() << " Z= " << Z << " A= " << A + // << " e= " << kinEnergy << G4endl; + + nucXSection = ComputeElectronXSectionPerAtom(p,kinEnergy,Z,A,cutEnergy); + + // nuclear cross section + if(theCrossSectionTable) { + G4bool b; + G4int iz = G4int(Z); + G4int idx = index[iz]; + + // compute table for given Z + if(-1 == idx) { + idx = theCrossSectionTable->size(); + index[iz] = idx; + G4PhysicsLogVector* ptrVector + = new G4PhysicsLogVector(lowKEnergy, highKEnergy, nbins); + // G4cout << "New vector Z= " << iz << " A= " << A << " idx= " << idx << G4endl; + G4double e, value; + for(G4int i=0; i<=nbins; i++) { + e = ptrVector->GetLowEdgeEnergy( i ) ; + value = CalculateCrossSectionPerAtom(p, e, Z, A); + ptrVector->PutValue( i, log(value) ); + } + theCrossSectionTable->push_back(ptrVector); } - theCrossSectionTable->insert(ptrVector); + // take value from the table + nucXSection += + std::exp((((*theCrossSectionTable)[idx]))->GetValue(kinEnergy, b)); + + // compute value from scratch + } else nucXSection += CalculateCrossSectionPerAtom(p, kinEnergy, Z, A); + + // G4cout << " cross(bn)= " << nucXSection/barn << G4endl; + + if(nucXSection < 0.0) nucXSection = 0.0; + return nucXSection; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4eCoulombScatteringModel::ComputeElectronXSectionPerAtom( + const G4ParticleDefinition* p, + G4double kinEnergy, + G4double Z, + G4double A, + G4double cutEnergy) +{ + if(p == particle && kinEnergy == tkin && Z == targetZ && + cutEnergy == ecut) return elecXSection; + ecut = cutEnergy; + elecXSection = 0.0; + SetupParticle(p); + G4double ekin = std::max(keV, kinEnergy); + //G4double ekin = kinEnergy; + SetupTarget(Z, A, ekin); + + G4double tmax = tkin; + if(p == theElectron) tmax *= 0.5; + else if(p != thePositron) { + G4double ratio = electron_mass_c2/mass; + G4double tau = tkin/mass; + tmax = 2.0*electron_mass_c2*tau*(tau + 2.)/ + (1.0 + 2.0*ratio*(tau + 1.0) + ratio*ratio); } + + G4double t = std::min(cutEnergy, tmax); + G4double mom21 = t*(t + 2.0*electron_mass_c2); + t = tkin - t; + G4double mom22 = t*(t + 2.0*mass); + cosTetMaxElec = (mom2 + mom22 - mom21)*0.5/sqrt(mom2*mom22); + if(cosTetMaxElec < cosTetMaxNuc) cosTetMaxElec = cosTetMaxNuc; + if(cosTetMaxElec < cosThetaMin) { + G4double x1 = 1.0 - cosThetaMin + screenZ; + G4double x2 = 1.0 - cosTetMaxElec + screenZ; + elecXSection = coeff*Z*chargeSquare*invbeta2* + (cosThetaMin - cosTetMaxElec)/(x1*x2*mom2); + } + // G4cout << "cut= " << ecut << " e= " << tkin + // << " croosE(barn)= " << elecXSection/barn + // << " cosEl= " << cosTetMaxElec << " costmin= " << cosThetaMin << G4endl; + return elecXSection; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4double G4eCoulombScatteringModel::CalculateCrossSectionPerAtom( - const G4ParticleDefinition* p, + const G4ParticleDefinition* p, G4double kinEnergy, - G4double Z) + G4double Z, G4double A) { G4double cross = 0.0; - G4double m = p->GetPDGMass(); - G4double tkin = std::max(keV, kinEnergy); - G4double mom2 = tkin*(tkin + 2.0*m); - G4double costm = std::max(cosThetaMax, 1.0 - 0.5*q2Limit/mom2); - if(costm < cosThetaMin) { - G4double q = p->GetPDGCharge()/eplus; - G4double q2 = q*q; - G4double invbeta2 = 1.0 + m*m/mom2; - G4double A = ScreeningParameter(Z, q2, mom2, invbeta2); - G4double a = 2.0*A + 1.0; - cross = coeff*Z*(Z + 1.0)*q2*invbeta2*(cosThetaMin - costm)/ - ((a - cosThetaMin)*(a - costm)*mom2); - /* - if(Z == 13 || Z == 79) { - G4cout << "## e= " << kinEnergy << " beta= " << sqrt (1.0/invbeta2) - <<" Z= " << Z - << " sig(bn)= " << cross/barn - << " cosMax= " << costm - << " cosMin= " << cosThetaMin - << G4endl; - G4double atommass = 27.0; - if(Z == 79) atommass = 197.0; - G4double u0 = 1.e+6*atommass*cm2/(cross*Avogadro); - G4double u1 = 0.5*u0/( A* ( (1.0 + A)*log(1.0 + 1.0/A) -1.0 ) ); - G4cout << " l0= " << u0 << " l1= " << u1 - << " A= " << A << G4endl; - } - */ + SetupParticle(p); + G4double ekin = std::max(keV, kinEnergy); + //G4double ekin = kinEnergy; + SetupTarget(Z, A, ekin); + + if(cosTetMaxNuc < cosThetaMin) { + G4double x1 = 1.0 - cosThetaMin; + G4double x2 = 1.0 - cosTetMaxNuc; + G4double x3 = cosThetaMin - cosTetMaxNuc; + G4double z1 = x1 + screenZ; + G4double z2 = x2 + screenZ; + G4double d = 1.0/formfactA - screenZ; + G4double d1 = 1.0 - formfactA*screenZ; + G4double zn1= x1 + d; + G4double zn2= x2 + d; + cross = coeff*Z*Z*chargeSquare*invbeta2 + *(x3/(z1*z2) + x3/(zn1*zn2) + + 2.0*std::log(z1*zn2/(z2*zn1))/d) / (mom2*d1*d1); } + + // G4cout << "CalculateCrossSectionPerAtom: e(MeV)= " << tkin + // << " cross(b)= " << cross/barn << " ctmin= " << cosThetaMin + // << " ctmax= " << cosTetMaxNuc << G4endl; + return cross; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4eCoulombScatteringModel::SampleSecondaries(std::vector*, - const G4MaterialCutsCouple* couple, - const G4DynamicParticle* dp, - G4double, - G4double) +void G4eCoulombScatteringModel::SampleSecondaries( + std::vector*, + const G4MaterialCutsCouple* couple, + const G4DynamicParticle* dp, + G4double cutEnergy, + G4double maxEnergy) { const G4Material* aMaterial = couple->GetMaterial(); const G4ParticleDefinition* p = dp->GetDefinition(); - - G4double mass = dp->GetMass(); G4double kinEnergy = dp->GetKineticEnergy(); - G4double mom2 = kinEnergy*(kinEnergy + 2.0*mass); - const G4Element* elm = SelectRandomAtom(aMaterial, p, kinEnergy); + // Select atom and setup + SetupParticle(p); + const G4Element* elm = + SelectRandomAtom(aMaterial,p,kinEnergy,cutEnergy,maxEnergy); G4double Z = elm->GetZ(); - G4double q = p->GetPDGCharge()/eplus; - G4double q2 = q*q; + G4double A = elm->GetN(); - G4double invbeta2 = 1.0 + mass*mass/mom2; - G4double a = 2.*ScreeningParameter(Z, q2, mom2, invbeta2); + G4double cross = + ComputeCrossSectionPerAtom(p,kinEnergy,Z,A,cutEnergy,maxEnergy); - G4double costm = std::max(cosThetaMax, 1.0 - 0.5*q2Limit/mom2); + G4double costm = cosTetMaxNuc; + G4double formf = formfactA; + if(G4UniformRand()*cross < elecXSection) { + costm = cosTetMaxElec; + formf = 0.0; + } + /* + G4cout << "G4eCoul...SampleSecondaries: e(MeV)= " << tkin + << " ctmin= " << cosThetaMin + << " ctmaxN= " << cosTetMaxNuc + << " ctmax= " << costm + << " Z= " << Z << " A= " << A + << " cross= " << cross/barn << " crossE= " << elecXSection/barn + << G4endl; + */ if(costm >= cosThetaMin) return; - G4double x = G4UniformRand(); - G4double y = (a + 1.0 - cosThetaMin)/(cosThetaMin - costm); - G4double st2 = 0.5*(y*(1.0 - costm) - a*x)/(y + x); - if(st2 < 0.0 || st2 > 1.0) { - G4cout << "G4eCoulombScatteringModel::SampleSecondaries WARNING st2= " - << st2 << G4endl; - st2 = 0.0; - } - - G4double tet = 2.0*asin(sqrt(st2)); - G4double cost= cos(tet); - G4double sint= sin(tet); - + G4double x1 = 1. - cosThetaMin + screenZ; + G4double x2 = 1. - costm; + G4double x3 = cosThetaMin - costm; + G4double grej, z, z1; + do { + z = G4UniformRand()*x3; + z1 = (x1*x2 - screenZ*z)/(x1 + z); + if(z1 < 0.0) z1 = 0.0; + else if(z1 > 2.0) z1 = 2.0; + grej = 1.0/(1.0 + formf*z1); + } while ( G4UniformRand() > grej*grej ); + + G4double cost = 1.0 - z1; + G4double sint= sqrt(z1*(2.0 - z1)); + /* + if(sint > 0.1) + G4cout<<"## SampleSecondaries: e(MeV)= " << kinEnergy + << " sint= " << sint << " Z= " << Z << " screenZ= " << screenZ + << " cn= " << formf + << G4endl; + */ G4double phi = twopi * G4UniformRand(); G4ThreeVector direction = dp->GetMomentumDirection(); diff --git a/source/processes/electromagnetic/standard/src/G4eIonisation.cc b/source/processes/electromagnetic/standard/src/G4eIonisation.cc index 2b5e86ff7b..6fc6445180 100644 --- a/source/processes/electromagnetic/standard/src/G4eIonisation.cc +++ b/source/processes/electromagnetic/standard/src/G4eIonisation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eIonisation.cc,v 1.53 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/src/G4eeToTwoGammaModel.cc b/source/processes/electromagnetic/standard/src/G4eeToTwoGammaModel.cc index 604df37ece..f9c49c852f 100644 --- a/source/processes/electromagnetic/standard/src/G4eeToTwoGammaModel.cc +++ b/source/processes/electromagnetic/standard/src/G4eeToTwoGammaModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4eeToTwoGammaModel.cc,v 1.14 2007/05/23 08:47:35 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc b/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc index eccc7d0105..bc3baebcde 100644 --- a/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc +++ b/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4eplusAnnihilation.cc,v 1.26 2006/09/14 10:27:19 maire Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4eplusAnnihilation.cc,v 1.27 2007/10/02 10:17:12 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -66,7 +66,9 @@ using namespace std; G4eplusAnnihilation::G4eplusAnnihilation(const G4String& name) : G4VEmProcess(name), isInitialised(false) -{} +{ + enableAtRestDoIt = true; +} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/standard/src/G4hIonisation.cc b/source/processes/electromagnetic/standard/src/G4hIonisation.cc index 3d00825396..0fe9076398 100644 --- a/source/processes/electromagnetic/standard/src/G4hIonisation.cc +++ b/source/processes/electromagnetic/standard/src/G4hIonisation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4hIonisation.cc,v 1.69 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/src/G4hMultipleScattering.cc b/source/processes/electromagnetic/standard/src/G4hMultipleScattering.cc index 6d97e0f034..2f6a9676b3 100644 --- a/source/processes/electromagnetic/standard/src/G4hMultipleScattering.cc +++ b/source/processes/electromagnetic/standard/src/G4hMultipleScattering.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4hMultipleScattering.cc,v 1.6 2007/06/11 15:01:26 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4hMultipleScattering.cc,v 1.7 2007/12/07 17:35:52 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // @@ -47,6 +47,7 @@ #include "G4hMultipleScattering.hh" #include "G4UrbanMscModel.hh" +#include "G4UrbanMscModel90.hh" #include "G4MscStepLimitType.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -99,7 +100,7 @@ void G4hMultipleScattering::InitialiseProcess(const G4ParticleDefinition* p) // initialisation of parameters G4String part_name = p->GetParticleName(); - mscUrban = new G4UrbanMscModel(RangeFactor(),dtrl,lambdalimit, + mscUrban = new G4UrbanMscModel90(RangeFactor(),dtrl,lambdalimit, GeomFactor(),Skin(), samplez,StepLimitType()); mscUrban->SetLateralDisplasmentFlag(LateralDisplasmentFlag()); diff --git a/source/processes/electromagnetic/standard/src/G4ionGasIonisation.cc b/source/processes/electromagnetic/standard/src/G4ionGasIonisation.cc new file mode 100644 index 0000000000..aad297aa09 --- /dev/null +++ b/source/processes/electromagnetic/standard/src/G4ionGasIonisation.cc @@ -0,0 +1,166 @@ +// +// ******************************************************************** +// * 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: G4ionGasIonisation.cc,v 1.3 2007/11/09 11:45:45 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4ionGasIonisation +// +// Author: Vladimir Ivanchenko +// +// Creation date: 23.07.2007 +// +// Modifications: +// +// +// ------------------------------------------------------------------- +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "G4ionGasIonisation.hh" +#include "G4Electron.hh" +#include "G4Proton.hh" +#include "G4GenericIon.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +using namespace std; + +G4ionGasIonisation::G4ionGasIonisation(const G4String& name) + : G4ionIonisation(name), + currParticle(0), + baseParticle(0), + initialised(false) +{ + atomXS = CLHEP::pi*CLHEP::Bohr_radius*CLHEP::Bohr_radius; + verboseLevel = 1; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4ionGasIonisation::~G4ionGasIonisation() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4ionGasIonisation::InitialiseEnergyLossProcess( + const G4ParticleDefinition* part, + const G4ParticleDefinition* bpart) +{ + G4ionIonisation::InitialiseEnergyLossProcess(part, bpart); + if(initialised) return; + + currParticle = part; + + if(part == bpart || part == G4GenericIon::GenericIon()) baseParticle = 0; + else if(bpart == 0) baseParticle = G4GenericIon::GenericIon(); + else baseParticle = bpart; + + if(baseParticle) basePartMass = baseParticle->GetPDGMass(); + else basePartMass = currParticle->GetPDGMass(); + + initialised = true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4ionGasIonisation::PrintInfo() +{ + G4ionIonisation::PrintInfo(); + G4cout << " Version of ion process with simulation discrete ion/media change exchange." + << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4ionGasIonisation::InitialiseMassCharge(const G4Track& track) +{ + // First step of an ion + if(track.GetCurrentStepNumber() == 1) { + currParticle = track.GetDefinition(); + ionZ = G4int(currParticle->GetPDGCharge()/eplus + 0.5); + currentIonZ = G4int(track.GetDynamicParticle()->GetCharge()/eplus + 0.5); + currMassRatio = basePartMass/currParticle->GetPDGMass(); + } + // any step + G4double q = eplus*currentIonZ; + SetDynamicMassCharge(currMassRatio, q*q); + preStepKinEnergy = track.GetKineticEnergy(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4ionGasIonisation::CorrectionsAlongStep(const G4MaterialCutsCouple* couple, + const G4DynamicParticle* dp, + G4double& eloss, + G4double& s) +{ + // add corrections + if(eloss < preStepKinEnergy) { + const G4ParticleDefinition* part = dp->GetDefinition(); + const G4Material* mat = couple->GetMaterial(); + + // use Bethe-Bloch with corrections + if(preStepKinEnergy*currMassRatio > BetheBlochEnergyThreshold()) + eloss += s*corr->HighOrderCorrections(part,mat,preStepKinEnergy); + + // use nuclear stopping + else if(NuclearStoppingFlag()) { + G4double nloss = s*corr->NuclearDEDX(part,mat,preStepKinEnergy - eloss*0.5); + eloss += nloss; + fParticleChange.ProposeNonIonizingEnergyDeposit(nloss); + } + + // effective number of collisions + G4double x = mat->GetElectronDensity()*s*atomXS; + // equilibrium charge + G4double q = fParticleChange.GetProposedCharge(); + + // sample charge change during the step + fParticleChange.SetProposedCharge(SampleChargeAfterStep(q, x)); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4ionGasIonisation::SampleChargeAfterStep(G4double qeff, G4double xeff) +{ + // qeff - equilibrium charge + // xeff - effective number of collisions + // q - current charge + G4double q = eplus*currentIonZ; + if(verboseLevel > 1) G4cout << "G4ionGasIonisation: Q1= " << currentIonZ + << " Qeff= " << qeff/eplus << " Neff= " << xeff + << G4endl; + return q; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/standard/src/G4ionIonisation.cc b/source/processes/electromagnetic/standard/src/G4ionIonisation.cc index 56b267f510..302495a1b3 100644 --- a/source/processes/electromagnetic/standard/src/G4ionIonisation.cc +++ b/source/processes/electromagnetic/standard/src/G4ionIonisation.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4ionIonisation.cc,v 1.43 2007/05/22 17:34:36 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ionIonisation.cc,v 1.44 2007/11/09 11:45:45 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -53,6 +53,7 @@ // 13-05-06 Add data for light ion stopping in water (V.Ivantchenko) // 14-01-07 use SetEmModel() and SetFluctModel() from G4VEnergyLossProcess (mma) // 16-05-07 Add data for light ion stopping only for GenericIon (V.Ivantchenko) +// 07-11-07 Fill non-ionizing energy loss (V.Ivantchenko) // // // ------------------------------------------------------------------- @@ -169,3 +170,30 @@ void G4ionIonisation::AddStoppingData(G4int Z, G4int A, } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4ionIonisation::CorrectionsAlongStep(const G4MaterialCutsCouple* couple, + const G4DynamicParticle* dp, + G4double& eloss, + G4double& s) +{ + if(eloss < preKinEnergy) { + const G4ParticleDefinition* part = dp->GetDefinition(); + const G4Material* mat = couple->GetMaterial(); + if(preKinEnergy*massRatio > eth) + eloss += s*corr->HighOrderCorrections(part,mat,preKinEnergy); + else { + if(stopDataActive) + eloss *= corr->EffectiveChargeCorrection(part,mat,preKinEnergy); + + if(nuclearStopping) { + G4double nloss = s*corr->NuclearDEDX(part,mat,preKinEnergy - eloss*0.5); + eloss += nloss; + fParticleChange.ProposeNonIonizingEnergyDeposit(nloss); + } + } + fParticleChange.SetProposedCharge(effCharge->EffectiveCharge(part, + mat,preKinEnergy-eloss)); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/utils/History b/source/processes/electromagnetic/utils/History index 99cca86b78..2db6355598 100644 --- a/source/processes/electromagnetic/utils/History +++ b/source/processes/electromagnetic/utils/History @@ -1,4 +1,4 @@ -$Id: History,v 1.290 2007/06/20 12:43:54 vnivanch Exp $ +$Id: History,v 1.307 2007/11/09 11:35:53 vnivanch Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,76 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +09 November 07: V.Ivant (emutils-V09-00-13) +- G4VMultipleScattering - set at initialisation that scattering may be + off lectrons (needed for single scattering) +- G4EmModelmanager - add pointers to G4Gamma and G4Positron at + initialisation + +07 November 07: V.Ivant (emutils-V09-00-12) +- G4VEnergyLossProcess - simplify logic to switch on/off fluctuations +- G4EmProcessOptions - add forgoten initialisation of G4LossTableManager + parameters together with parameters of concrete + processes (fixed initialisation when options + defined before proceeses are instantiated) + +29 October 07: V.Ivant (emutils-V09-00-11) +- G4VEmProcess, G4VEnergyLossProcess, G4VMultipleScattering + cleanup - move virtual method to the source code +- G4VMultipleScattering - use SamleScattering method PostStep +- G4VEmModel - added SampleScattering method for msc models +- G4VEnergyLossProcess - set default flags of fluctuation to "false" + they changed to "true" when first model + of fluctuations is added + +08 October 07: V.Ivant (emutils-V09-00-10) +- G4VEmProcess - use cut in PostStepDoIt (before was zero) + +04 October 07: V.Ivant (emutils-V09-00-09) +- G4VEnergyLossProcess - fixed problem at destruction + +02 October 07: V.Ivant (emutils-V09-00-08) +- G4VEnergyLossProcess, G4VEmProcess, G4VMultipleScattering - fixed + memory leak - proper delete of G4PhysicsTables + +27 September 07: V.Ivant (emutils-V09-00-07) +- G4ionEffectiveCharge - use Fermi energy from G4Material and not + recalculate at each step; reorganized formulas - less calls to + exp, log, pow + +26 September 07: V.Ivant (emutils-V09-00-06) +- G4VEnergyLossProcess and G4VEmProcess - move virtual function + PostStepGetPhysicalInteractionLength from inline to body of classes + +25 September 07: V.Ivant (emutils-V09-00-05) +- G4VEnergyLossProcess and G4VEmProcess - fixed handling zero cross + section in PostStepGetPhysicalInteractionLength method to avoid problem + happans in FanoCavity example when cross section inside cavity is zero +- G4VEmModel - compare cross section with DBL_MIN instead of zero + +16 August 07: V.Ivant (emutils-V09-00-04) +- G4EmCalculator - fixed default region name +- G4VEnergyLossProcess - use prestep time for subcutoff secondaries + and do not use GetVelocity method + +02 August 07: V.Ivant (emutils-V09-00-03) +- G4VEnergyLossProcess - simplify energy loss computation for the case + of big step (few % faster) + +28 July 07: V.Ivant (emutils-V09-00-02) +- G4VEnergyLossProcess - use stl vector of G4VEmModel instead of array +- G4VEmProcess - added cut to ComputeCrossSectionPerAtom method; + added vector of cuts per material for secondaries, + which are needed for single scattering process + +16 July 07: V.Ivant (emutils-V09-00-01) +- G4VEmProcess - integral option coupled with buildLambdaTable option: + integral cannot be true if buildLambdaTable is false + +11 July 07: V.Ivant (emutils-V09-00-00) +- G4VEmModel - fixed SelectRandomAtom method (last element of compound + was never selected - instead first was taken) + 20 June 07: V.Ivant (emutils-V08-03-06) - G4VEnergyLossProcess add initialisation of preStepKinEnergy before run in order to fix a problem of test14 reported by Valgrind diff --git a/source/processes/electromagnetic/utils/include/G4DummyModel.hh b/source/processes/electromagnetic/utils/include/G4DummyModel.hh index f2a1a32b47..e6a2425042 100644 --- a/source/processes/electromagnetic/utils/include/G4DummyModel.hh +++ b/source/processes/electromagnetic/utils/include/G4DummyModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4DummyModel.hh,v 1.3 2007/05/22 17:31:57 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/include/G4EmCalculator.hh b/source/processes/electromagnetic/utils/include/G4EmCalculator.hh index 297f204c20..9b5a1444dd 100644 --- a/source/processes/electromagnetic/utils/include/G4EmCalculator.hh +++ b/source/processes/electromagnetic/utils/include/G4EmCalculator.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4EmCalculator.hh,v 1.18 2007/03/15 12:34:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------------- diff --git a/source/processes/electromagnetic/utils/include/G4EmCorrections.hh b/source/processes/electromagnetic/utils/include/G4EmCorrections.hh index 92db58d6f4..26c784bb7d 100644 --- a/source/processes/electromagnetic/utils/include/G4EmCorrections.hh +++ b/source/processes/electromagnetic/utils/include/G4EmCorrections.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4EmCorrections.hh,v 1.9 2007/05/18 18:39:54 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/include/G4EmModelManager.hh b/source/processes/electromagnetic/utils/include/G4EmModelManager.hh index 3fb24b6718..e844ae44bf 100644 --- a/source/processes/electromagnetic/utils/include/G4EmModelManager.hh +++ b/source/processes/electromagnetic/utils/include/G4EmModelManager.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4EmModelManager.hh,v 1.21 2007/03/17 19:24:39 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4EmModelManager.hh,v 1.22 2007/11/09 11:35:54 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -190,6 +190,8 @@ private: const G4ParticleDefinition* particle; const G4ParticleDefinition* secondaryParticle; + const G4ParticleDefinition* theGamma; + const G4ParticleDefinition* thePositron; G4int verboseLevel; diff --git a/source/processes/electromagnetic/utils/include/G4EmMultiModel.hh b/source/processes/electromagnetic/utils/include/G4EmMultiModel.hh index 29d89ec357..60a3cd298a 100644 --- a/source/processes/electromagnetic/utils/include/G4EmMultiModel.hh +++ b/source/processes/electromagnetic/utils/include/G4EmMultiModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4EmMultiModel.hh,v 1.6 2007/05/22 17:31:57 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/include/G4EmProcessOptions.hh b/source/processes/electromagnetic/utils/include/G4EmProcessOptions.hh index 50b630fd79..99e1fe59e9 100644 --- a/source/processes/electromagnetic/utils/include/G4EmProcessOptions.hh +++ b/source/processes/electromagnetic/utils/include/G4EmProcessOptions.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4EmProcessOptions.hh,v 1.12 2007/05/18 18:39:54 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------------- diff --git a/source/processes/electromagnetic/utils/include/G4EmTableType.hh b/source/processes/electromagnetic/utils/include/G4EmTableType.hh index 0d05997ce2..1e3f14e90b 100644 --- a/source/processes/electromagnetic/utils/include/G4EmTableType.hh +++ b/source/processes/electromagnetic/utils/include/G4EmTableType.hh @@ -25,7 +25,7 @@ // // // $Id: G4EmTableType.hh,v 1.3 2007/01/15 17:27:40 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/include/G4EnergyLossMessenger.hh b/source/processes/electromagnetic/utils/include/G4EnergyLossMessenger.hh index f160688744..eb0891e796 100644 --- a/source/processes/electromagnetic/utils/include/G4EnergyLossMessenger.hh +++ b/source/processes/electromagnetic/utils/include/G4EnergyLossMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4EnergyLossMessenger.hh,v 1.18 2007/05/18 18:39:54 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/include/G4EnergyLossTables.hh b/source/processes/electromagnetic/utils/include/G4EnergyLossTables.hh index d4139381e5..4e5e7527ce 100644 --- a/source/processes/electromagnetic/utils/include/G4EnergyLossTables.hh +++ b/source/processes/electromagnetic/utils/include/G4EnergyLossTables.hh @@ -25,7 +25,7 @@ // // // $Id: G4EnergyLossTables.hh,v 1.19 2006/06/29 19:54:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: // diff --git a/source/processes/electromagnetic/utils/include/G4LossTableBuilder.hh b/source/processes/electromagnetic/utils/include/G4LossTableBuilder.hh index e6985998b4..ade8cf6dee 100644 --- a/source/processes/electromagnetic/utils/include/G4LossTableBuilder.hh +++ b/source/processes/electromagnetic/utils/include/G4LossTableBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4LossTableBuilder.hh,v 1.7 2006/06/29 19:54:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------------- diff --git a/source/processes/electromagnetic/utils/include/G4LossTableManager.hh b/source/processes/electromagnetic/utils/include/G4LossTableManager.hh index 1242dcf3b9..02e7d04d1c 100644 --- a/source/processes/electromagnetic/utils/include/G4LossTableManager.hh +++ b/source/processes/electromagnetic/utils/include/G4LossTableManager.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4LossTableManager.hh,v 1.47 2007/05/18 18:39:54 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4LossTableManager.hh,v 1.48 2007/11/07 18:38:49 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------------- @@ -104,37 +104,37 @@ public: void Clear(); // get the DEDX or the range for a given particle/energy/material - G4double GetDEDX( + inline G4double GetDEDX( const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4MaterialCutsCouple *couple); - G4double GetSubDEDX( + inline G4double GetSubDEDX( const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4MaterialCutsCouple *couple); - G4double GetRange( + inline G4double GetRange( const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4MaterialCutsCouple *couple); - G4double GetCSDARange( + inline G4double GetCSDARange( const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4MaterialCutsCouple *couple); - G4double GetRangeFromRestricteDEDX( + inline G4double GetRangeFromRestricteDEDX( const G4ParticleDefinition *aParticle, G4double kineticEnergy, const G4MaterialCutsCouple *couple); - G4double GetEnergy( + inline G4double GetEnergy( const G4ParticleDefinition *aParticle, G4double range, const G4MaterialCutsCouple *couple); - G4double GetDEDXDispersion( + inline G4double GetDEDXDispersion( const G4MaterialCutsCouple *couple, const G4DynamicParticle* dp, G4double& length); @@ -208,15 +208,15 @@ public: G4double BremsstrahlungTh() const; - G4VEnergyLossProcess* GetEnergyLossProcess(const G4ParticleDefinition*); - const std::vector& GetEnergyLossProcessVector(); const std::vector& GetEmProcessVector(); const std::vector& GetMultipleScatteringVector(); - G4EmCorrections* EmCorrections() {return emCorrections;}; + inline G4VEnergyLossProcess* GetEnergyLossProcess(const G4ParticleDefinition*); + + inline G4EmCorrections* EmCorrections(); private: @@ -417,5 +417,12 @@ inline G4VEnergyLossProcess* G4LossTableManager::GetEnergyLossProcess( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +inline G4EmCorrections* G4LossTableManager::EmCorrections() +{ + return emCorrections; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/source/processes/electromagnetic/utils/include/G4MscStepLimitType.hh b/source/processes/electromagnetic/utils/include/G4MscStepLimitType.hh index 04bf9893ae..4f3983d9ea 100644 --- a/source/processes/electromagnetic/utils/include/G4MscStepLimitType.hh +++ b/source/processes/electromagnetic/utils/include/G4MscStepLimitType.hh @@ -25,7 +25,7 @@ // // // $Id: G4MscStepLimitType.hh,v 1.2 2007/06/11 14:56:51 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/include/G4VEmFluctuationModel.hh b/source/processes/electromagnetic/utils/include/G4VEmFluctuationModel.hh index c08cae6e0d..816f28d928 100644 --- a/source/processes/electromagnetic/utils/include/G4VEmFluctuationModel.hh +++ b/source/processes/electromagnetic/utils/include/G4VEmFluctuationModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VEmFluctuationModel.hh,v 1.10 2006/06/29 19:54:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/include/G4VEmModel.hh b/source/processes/electromagnetic/utils/include/G4VEmModel.hh index 5d77a8c474..d95f4f6d91 100644 --- a/source/processes/electromagnetic/utils/include/G4VEmModel.hh +++ b/source/processes/electromagnetic/utils/include/G4VEmModel.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VEmModel.hh,v 1.46 2007/05/22 17:31:57 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VEmModel.hh,v 1.48 2007/10/29 08:38:58 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -59,6 +59,7 @@ // 06-02-06 add method ComputeMeanFreePath() (mma) // 07-03-06 Optimize msc methods (V.Ivanchenko) // 29-06-06 Add member currentElement and Get/Set methods (V.Ivanchenko) +// 29-10-07 Added SampleScattering (V.Ivanchenko) // // Class Description: // @@ -113,7 +114,7 @@ public: //------------------------------------------------------------------------ virtual G4double MinEnergyCut(const G4ParticleDefinition*, - const G4MaterialCutsCouple*); + const G4MaterialCutsCouple*); virtual G4double ComputeDEDX(const G4MaterialCutsCouple*, const G4ParticleDefinition*, @@ -126,43 +127,48 @@ public: G4double cutEnergy = 0.0, G4double maxEnergy = DBL_MAX); - virtual G4double ComputeDEDXPerVolume( - const G4Material*, - const G4ParticleDefinition*, - G4double kineticEnergy, - G4double cutEnergy = DBL_MAX); + virtual G4double ComputeDEDXPerVolume(const G4Material*, + const G4ParticleDefinition*, + G4double kineticEnergy, + G4double cutEnergy = DBL_MAX); - virtual G4double ComputeCrossSectionPerAtom( - const G4ParticleDefinition*, - G4double kinEnergy, - G4double Z, - G4double A = 0., - G4double cutEnergy = 0.0, - G4double maxEnergy = DBL_MAX); + virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*, + G4double kinEnergy, + G4double Z, + G4double A = 0., + G4double cutEnergy = 0.0, + G4double maxEnergy = DBL_MAX); - virtual G4double ComputeMeanFreePath( - const G4ParticleDefinition*, - G4double kineticEnergy, - const G4Material*, - G4double cutEnergy = 0.0, - G4double maxEnergy = DBL_MAX); - - virtual G4double CrossSectionPerVolume( - const G4Material*, - const G4ParticleDefinition*, - G4double kineticEnergy, - G4double cutEnergy = 0.0, - G4double maxEnergy = DBL_MAX); + virtual G4double ComputeMeanFreePath(const G4ParticleDefinition*, + G4double kineticEnergy, + const G4Material*, + G4double cutEnergy = 0.0, + G4double maxEnergy = DBL_MAX); + virtual G4double CrossSectionPerVolume(const G4Material*, + const G4ParticleDefinition*, + G4double kineticEnergy, + G4double cutEnergy = 0.0, + G4double maxEnergy = DBL_MAX); - - // Methods for msc simulation +protected: - virtual G4double ComputeTruePathLengthLimit( - const G4Track& track, - G4PhysicsTable* theLambdaTable, - G4double currentMinimalStep); + virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*, + G4double kineticEnergy); + + //------------------------------------------------------------------------ + // Methods for msc simulation which needs to be overwritten + //------------------------------------------------------------------------ + +public: + + virtual void SampleScattering(const G4DynamicParticle*, + G4double safety); + + virtual G4double ComputeTruePathLengthLimit(const G4Track& track, + G4PhysicsTable* theLambdaTable, + G4double currentMinimalStep); virtual G4double ComputeGeomPathLength(G4double truePathLength); @@ -170,17 +176,10 @@ public: virtual void DefineForRegion(const G4Region*); -protected: - - virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*, - G4double kineticEnergy); - //------------------------------------------------------------------------ // Generic methods common to all models //------------------------------------------------------------------------ -public: - void SetParticleChange(G4VParticleChange*, G4VEmFluctuationModel*); G4VEmFluctuationModel* GetModelOfFluctuations(); @@ -288,8 +287,8 @@ inline G4double G4VEmModel::MinEnergyCut(const G4ParticleDefinition*, inline G4double G4VEmModel::ComputeDEDXPerVolume( const G4Material*, const G4ParticleDefinition*, - G4double, - G4double) + G4double, + G4double) { return 0.0; } @@ -298,8 +297,8 @@ inline G4double G4VEmModel::ComputeDEDXPerVolume( inline G4double G4VEmModel::ComputeDEDX(const G4MaterialCutsCouple* c, const G4ParticleDefinition* p, - G4double kinEnergy, - G4double cutEnergy) + G4double kinEnergy, + G4double cutEnergy) { return ComputeDEDXPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy); } @@ -308,19 +307,20 @@ inline G4double G4VEmModel::ComputeDEDX(const G4MaterialCutsCouple* c, inline G4double G4VEmModel::CrossSection(const G4MaterialCutsCouple* c, const G4ParticleDefinition* p, - G4double kinEnergy, - G4double cutEnergy, - G4double maxEnergy) + G4double kinEnergy, + G4double cutEnergy, + G4double maxEnergy) { - return CrossSectionPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy,maxEnergy); + return + CrossSectionPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy,maxEnergy); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4VEmModel::ComputeCrossSectionPerAtom( const G4ParticleDefinition*, - G4double, G4double, G4double, - G4double, G4double) + G4double, G4double, G4double, + G4double, G4double) { return 0.0; } @@ -330,14 +330,14 @@ inline G4double G4VEmModel::ComputeCrossSectionPerAtom( inline const G4Element* G4VEmModel::SelectRandomAtom( const G4Material* material, const G4ParticleDefinition* pd, - G4double kinEnergy, - G4double tcut, - G4double tmax) + G4double kinEnergy, + G4double tcut, + G4double tmax) { const G4ElementVector* theElementVector = material->GetElementVector(); - currentElement = (*theElementVector)[0]; - G4int nelm = material->GetNumberOfElements() - 1; - if (nelm > 0) { + G4int nelm = material->GetNumberOfElements(); + currentElement = (*theElementVector)[nelm-1]; + if (nelm > 1) { G4double x = G4UniformRand()* CrossSectionPerVolume(material,pd,kinEnergy,tcut,tmax); for(G4int i=0; i* theCuts; const std::vector* theCutsGamma; const std::vector* theCutsElectron; const std::vector* theCutsPositron; @@ -384,7 +389,8 @@ inline G4double G4VEmProcess::ComputeCurrentLambda(G4double e) G4VEmModel* currentModel = SelectModel(e); G4double x = 0.0; if(currentModel) - x = currentModel->CrossSectionPerVolume(currentMaterial,particle,e); + x = currentModel->CrossSectionPerVolume(currentMaterial,particle, + e,(*theCuts)[currentMaterialIndex]); return x; } @@ -403,7 +409,7 @@ inline void G4VEmProcess::ComputeIntegralLambda(G4double e) mfpKinEnergy = theEnergyOfCrossSectionMax[currentMaterialIndex]; if (e <= mfpKinEnergy) { preStepLambda = GetLambdaFromTable(e); - // mfpKinEnergy = 0.0; + } else { G4double e1 = e*lambdaFactor; if(e1 > mfpKinEnergy) { @@ -417,58 +423,6 @@ inline void G4VEmProcess::ComputeIntegralLambda(G4double e) preStepLambda = theCrossSectionMax[currentMaterialIndex]; } } - // theNumberOfInteractionLengthLeft = -1.; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double G4VEmProcess::PostStepGetPhysicalInteractionLength( - const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition) -{ - // condition is set to "Not Forced" - *condition = NotForced; - G4double x = DBL_MAX; - if(previousStepSize <= DBL_MIN) theNumberOfInteractionLengthLeft = -1.0; - InitialiseStep(track); - - if(preStepKinEnergy < mfpKinEnergy) { - if (integral) ComputeIntegralLambda(preStepKinEnergy); - else preStepLambda = GetCurrentLambda(preStepKinEnergy); - if(preStepLambda <= DBL_MIN) mfpKinEnergy = 0.0; - } - - if(preStepLambda > DBL_MIN) { - - if (theNumberOfInteractionLengthLeft < 0.0) { - // beggining of tracking (or just after DoIt of this process) - ResetNumberOfInteractionLengthLeft(); - } else if(previousStepSize > DBL_MIN) { - // subtract NumberOfInteractionLengthLeft - SubtractNumberOfInteractionLengthLeft(previousStepSize); - if(theNumberOfInteractionLengthLeft<0.) - theNumberOfInteractionLengthLeft=perMillion; - } - - // get mean free path - currentInteractionLength = 1.0/preStepLambda; - x = theNumberOfInteractionLengthLeft * currentInteractionLength; - -#ifdef G4VERBOSE - if (verboseLevel>2){ - G4cout << "G4VEmProcess::PostStepGetPhysicalInteractionLength "; - G4cout << "[ " << GetProcessName() << "]" << G4endl; - G4cout << " for " << particle->GetParticleName() - << " in Material " << currentMaterial->GetName() - << " Ekin(MeV)= " << preStepKinEnergy/MeV - <SelectModel(kinEnergy, currentMaterialIndex); @@ -565,6 +509,16 @@ inline void G4VEmProcess::SetSecondaryParticle(const G4ParticleDefinition* p) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +inline void G4VEmProcess::AddEmModel(G4int order, G4VEmModel* p, + const G4Region* region) +{ + G4VEmFluctuationModel* fm = 0; + modelManager->AddEmModel(order, p, fm, region); + if(p) p->SetParticleChange(pParticleChange); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + inline void G4VEmProcess::SetModel(G4VEmModel* model) { selectedModel = model; @@ -580,7 +534,7 @@ inline G4VEmModel* G4VEmProcess::Model() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... inline void G4VEmProcess::UpdateEmModel(const G4String& nam, - G4double emin, G4double emax) + G4double emin, G4double emax) { modelManager->UpdateEmModel(nam, emin, emax); } @@ -588,10 +542,10 @@ inline void G4VEmProcess::UpdateEmModel(const G4String& nam, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... inline G4double G4VEmProcess::ComputeCrossSectionPerAtom( - G4double kineticEnergy, G4double Z, G4double A) + G4double kineticEnergy, G4double Z, G4double A, G4double cut) { G4VEmModel* model = SelectModel(kineticEnergy); - return model->ComputeCrossSectionPerAtom(particle,kineticEnergy,Z,A); + return model->ComputeCrossSectionPerAtom(particle,kineticEnergy,Z,A,cut); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -668,6 +622,7 @@ inline G4bool G4VEmProcess::IsIntegral() const inline void G4VEmProcess::SetBuildTableFlag(G4bool val) { buildLambdaTable = val; + if(!val) integral = false; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/utils/include/G4VEnergyLoss.hh b/source/processes/electromagnetic/utils/include/G4VEnergyLoss.hh index 530d869d46..b685c40267 100644 --- a/source/processes/electromagnetic/utils/include/G4VEnergyLoss.hh +++ b/source/processes/electromagnetic/utils/include/G4VEnergyLoss.hh @@ -25,7 +25,7 @@ // // // $Id: G4VEnergyLoss.hh,v 1.18 2006/06/29 19:54:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/electromagnetic/utils/include/G4VEnergyLossProcess.hh b/source/processes/electromagnetic/utils/include/G4VEnergyLossProcess.hh index 657b6258cd..0171cf8ae6 100644 --- a/source/processes/electromagnetic/utils/include/G4VEnergyLossProcess.hh +++ b/source/processes/electromagnetic/utils/include/G4VEnergyLossProcess.hh @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VEnergyLossProcess.hh,v 1.68 2007/06/12 11:29:09 vnivanch Exp $ +// $Id: G4VEnergyLossProcess.hh,v 1.76 2007/11/07 18:38:49 vnivanch Exp $ // GEANT4 tag $Name: // // ------------------------------------------------------------------- @@ -74,6 +74,10 @@ // 15-01-07 Add separate ionisation tables and reorganise get/set methods for // dedx tables (V.Ivanchenko) // 13-03-07 use SafetyHelper instead of navigator (V.Ivanchenko) +// 27-07-07 use stl vector for emModels instead of C-array (V.Ivanchenko) +// 25-09-07 More accurate handling zero xsect in +// PostStepGetPhysicalInteractionLength (V.Ivanchenko) +// 27-10-07 Virtual functions moved to source (V.Ivanchenko) // // Class Description: // @@ -138,14 +142,13 @@ protected: //------------------------------------------------------------------------ protected: - inline virtual G4double MinPrimaryEnergy(const G4ParticleDefinition*, - const G4Material*, G4double cut); + virtual G4double MinPrimaryEnergy(const G4ParticleDefinition*, + const G4Material*, G4double cut); - inline virtual void CorrectionsAlongStep( - const G4MaterialCutsCouple*, - const G4DynamicParticle*, - G4double& eloss, - G4double& length); + virtual void CorrectionsAlongStep(const G4MaterialCutsCouple*, + const G4DynamicParticle*, + G4double& eloss, + G4double& length); //------------------------------------------------------------------------ // Generic methods common to all ContinuousDiscrete processes @@ -166,7 +169,7 @@ public: // Return false in case of failure at I/O G4bool StorePhysicsTable(const G4ParticleDefinition*, const G4String& directory, - G4bool ascii = false); + G4bool ascii = false); // Retrieve Physics from a file. // (return true if the Physics Table can be build by using file) @@ -175,21 +178,21 @@ public: // should be placed under the directory specifed by the argument. G4bool RetrievePhysicsTable(const G4ParticleDefinition*, const G4String& directory, - G4bool ascii); + G4bool ascii); protected: - inline G4double GetMeanFreePath(const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition); + G4double GetMeanFreePath(const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition); - inline G4double GetContinuousStepLimit(const G4Track& track, - G4double previousStepSize, - G4double currentMinimumStep, - G4double& currentSafety); + G4double GetContinuousStepLimit(const G4Track& track, + G4double previousStepSize, + G4double currentMinimumStep, + G4double& currentSafety); //------------------------------------------------------------------------ - // Specific methods for along/post step simulation + // Specific methods for along/post step EM processes //------------------------------------------------------------------------ public: @@ -205,7 +208,7 @@ public: G4double length); - inline G4double AlongStepGetPhysicalInteractionLength( + virtual G4double AlongStepGetPhysicalInteractionLength( const G4Track&, G4double previousStepSize, G4double currentMinimumStep, @@ -213,7 +216,7 @@ public: G4GPILSelection* selection ); - inline G4double PostStepGetPhysicalInteractionLength( + virtual G4double PostStepGetPhysicalInteractionLength( const G4Track& track, G4double previousStepSize, G4ForceCondition* condition @@ -419,7 +422,7 @@ protected: private: G4EmModelManager* modelManager; - G4VEmModel* emModel[5]; + std::vector emModels; G4VEmFluctuationModel* fluctModel; std::vector scoffRegions; G4int nSCoffRegions; @@ -492,7 +495,6 @@ private: G4GPILSelection aGPILSelection; G4bool lossFluctuationFlag; - G4bool lossFluctuationArePossible; G4bool rndmStepFlag; G4bool tablesAreBuilt; G4bool integral; @@ -728,7 +730,7 @@ inline void G4VEnergyLossProcess::ComputeLambdaForScaledEnergy(G4double e) mfpKinEnergy = theEnergyOfCrossSectionMax[currentMaterialIndex]; if (e <= mfpKinEnergy) { preStepLambda = GetLambdaForScaledEnergy(e); - // mfpKinEnergy = 0.0; + } else { G4double e1 = e*lambdaFactor; if(e1 > mfpKinEnergy) { @@ -742,7 +744,6 @@ inline void G4VEnergyLossProcess::ComputeLambdaForScaledEnergy(G4double e) preStepLambda = chargeSqRatio*theCrossSectionMax[currentMaterialIndex]; } } - // theNumberOfInteractionLengthLeft = -1.; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -756,45 +757,6 @@ inline G4double G4VEnergyLossProcess::ContinuousStepLimit( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4double G4VEnergyLossProcess::GetContinuousStepLimit( - const G4Track&, - G4double, G4double, G4double&) -{ - return DBL_MAX; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double G4VEnergyLossProcess::AlongStepGetPhysicalInteractionLength( - const G4Track&, - G4double, - G4double currentMinStep, - G4double&, - G4GPILSelection* selection) -{ - G4double x = DBL_MAX; - *selection = aGPILSelection; - if(isIonisation) { - fRange = GetScaledRangeForScaledEnergy(preStepScaledEnergy)*reduceFactor; - - x = fRange; - G4double y = x*dRoverRange; - - // G4double safety = track.GetStep()->GetPreStepPoint()->GetSafety(); - if(x > finalRange && y < currentMinStep) { // && x > safety) { - x = y + finalRange*(1.0 - dRoverRange)*(2.0 - finalRange/fRange); - } else if (rndmStepFlag) x = SampleRange(); - // G4cout< DBL_MIN) { - - if (theNumberOfInteractionLengthLeft < 0.0) { - // beggining of tracking (or just after DoIt of this process) - ResetNumberOfInteractionLengthLeft(); - } else if(previousStepSize > DBL_MIN) { - // subtract NumberOfInteractionLengthLeft - SubtractNumberOfInteractionLengthLeft(previousStepSize); - if(theNumberOfInteractionLengthLeft<0.) - theNumberOfInteractionLengthLeft=perMillion; - } - - // get mean free path - currentInteractionLength = 1.0/preStepLambda; - x = theNumberOfInteractionLengthLeft * currentInteractionLength; -#ifdef G4VERBOSE - if (verboseLevel>2){ - G4cout << "G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength "; - G4cout << "[ " << GetProcessName() << "]" << G4endl; - G4cout << " for " << particle->GetParticleName() - << " in Material " << currentMaterial->GetName() - << " Ekin(MeV)= " << preStepKinEnergy/MeV - <AddEmModel(order, p, fluc, region); if(p) p->SetParticleChange(pParticleChange, fluc); - if(!fluc) { - lossFluctuationFlag = false; - lossFluctuationArePossible = false; - } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -1069,14 +965,18 @@ inline G4int G4VEnergyLossProcess::NumberOfModels() inline void G4VEnergyLossProcess::SetEmModel(G4VEmModel* p, G4int index) { - emModel[index] = p; + G4int n = emModels.size(); + if(index >= n) for(G4int i=n; i= 0 && index < G4int(emModels.size())) p = emModels[index]; + return p; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -1096,7 +996,7 @@ inline G4VEmFluctuationModel* G4VEnergyLossProcess::FluctModel() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... inline void G4VEnergyLossProcess::UpdateEmModel(const G4String& nam, - G4double emin, G4double emax) + G4double emin, G4double emax) { modelManager->UpdateEmModel(nam, emin, emax); } @@ -1140,7 +1040,7 @@ inline void G4VEnergyLossProcess::SetLinearLossLimit(G4double val) inline void G4VEnergyLossProcess::SetLossFluctuations(G4bool val) { - if(!val || lossFluctuationArePossible) lossFluctuationFlag = val; + lossFluctuationFlag = val; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/utils/include/G4VMultipleScattering.hh b/source/processes/electromagnetic/utils/include/G4VMultipleScattering.hh index f8a435e49b..609b2324f2 100644 --- a/source/processes/electromagnetic/utils/include/G4VMultipleScattering.hh +++ b/source/processes/electromagnetic/utils/include/G4VMultipleScattering.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VMultipleScattering.hh,v 1.46 2007/06/11 14:56:51 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VMultipleScattering.hh,v 1.48 2007/10/29 08:38:58 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -61,6 +61,7 @@ // 07-03-06 Move step limit calculation to model (V.Ivanchenko) // 13-05-06 Add method to access model by index (V.Ivanchenko) // 12-02-07 Add get/set skin (V.Ivanchenko) +// 27-10-07 Virtual functions moved to source (V.Ivanchenko) // // ------------------------------------------------------------------- @@ -120,17 +121,17 @@ public: //------------------------------------------------------------------------ // Initialise for build of tables - virtual void PreparePhysicsTable(const G4ParticleDefinition&); + void PreparePhysicsTable(const G4ParticleDefinition&); // Build physics table during initialisation - virtual void BuildPhysicsTable(const G4ParticleDefinition&); + void BuildPhysicsTable(const G4ParticleDefinition&); // Print out of generic class parameters void PrintInfoDefinition(); - inline virtual G4VParticleChange* AlongStepDoIt(const G4Track&, const G4Step&); + G4VParticleChange* AlongStepDoIt(const G4Track&, const G4Step&); - inline virtual G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&); + G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&); // Store PhysicsTable in a file. // Return false in case of failure at I/O @@ -148,16 +149,13 @@ public: G4bool ascii); //------------------------------------------------------------------------ - // Specific methods for multiple scattering + // Specific methods for msc processes //------------------------------------------------------------------------ - // Build empty Physics Vector - G4PhysicsVector* PhysicsVector(const G4MaterialCutsCouple*); - // The function overloads the corresponding function of the base // class.It limits the step near to boundaries only // and invokes the method GetMscContinuousStepLimit at every step. - inline virtual G4double AlongStepGetPhysicalInteractionLength( + G4double AlongStepGetPhysicalInteractionLength( const G4Track&, G4double previousStepSize, G4double currentMinimalStep, @@ -166,21 +164,24 @@ public: // The function overloads the corresponding function of the base // class. - inline virtual G4double PostStepGetPhysicalInteractionLength( + G4double PostStepGetPhysicalInteractionLength( const G4Track&, G4double previousStepSize, G4ForceCondition* condition); // This method does not used for tracking, it is intended only for tests - inline virtual G4double ContinuousStepLimit(const G4Track& track, - G4double previousStepSize, - G4double currentMinimalStep, - G4double& currentSafety); + inline G4double ContinuousStepLimit(const G4Track& track, + G4double previousStepSize, + G4double currentMinimalStep, + G4double& currentSafety); //------------------------------------------------------------------------ // Specific methods to build and access Physics Tables //------------------------------------------------------------------------ + // Build empty Physics Vector + G4PhysicsVector* PhysicsVector(const G4MaterialCutsCouple*); + inline void SetBinning(G4int nbins); inline G4int Binning() const; @@ -206,9 +207,10 @@ public: // Specific methods to set, access, modify models //------------------------------------------------------------------------ - void AddEmModel(G4int, G4VEmModel*, const G4Region* region = 0); + inline void AddEmModel(G4int, G4VEmModel*, const G4Region* region = 0); - inline G4VEmModel* SelectModelForMaterial(G4double kinEnergy, size_t& idxRegion) const; + inline G4VEmModel* SelectModelForMaterial(G4double kinEnergy, + size_t& idxRegion) const; // Access to models inline G4VEmModel* GetModelByIndex(G4int idx = 0); @@ -235,27 +237,27 @@ public: protected: // This method is used for tracking, it returns mean free path value - inline virtual G4double GetMeanFreePath(const G4Track& track, - G4double, - G4ForceCondition* condition); + G4double GetMeanFreePath(const G4Track& track, + G4double, + G4ForceCondition* condition); //------------------------------------------------------------------------ // Run time methods //------------------------------------------------------------------------ + // This method is not used for tracking, it returns step limit + G4double GetContinuousStepLimit(const G4Track& track, + G4double previousStepSize, + G4double currentMinimalStep, + G4double& currentSafety); + inline G4double GetLambda(const G4ParticleDefinition* p, G4double& kineticEnergy); // This method is used for tracking, it returns step limit inline G4double GetMscContinuousStepLimit(const G4Track& track, - G4double previousStepSize, - G4double currentMinimalStep, - G4double& currentSafety); - - // This method is not used for tracking, it returns step limit - inline virtual G4double GetContinuousStepLimit(const G4Track& track, - G4double previousStepSize, - G4double currentMinimalStep, - G4double& currentSafety); + G4double previousStepSize, + G4double currentMinimalStep, + G4double& currentSafety); inline G4VEmModel* SelectModel(G4double kinEnergy); // Select concrete model @@ -333,43 +335,6 @@ inline void G4VMultipleScattering::DefineMaterial(const G4MaterialCutsCouple* co //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4double G4VMultipleScattering::PostStepGetPhysicalInteractionLength( - const G4Track&, G4double, G4ForceCondition* condition) -{ - *condition = Forced; - return DBL_MAX; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double G4VMultipleScattering::GetMeanFreePath( - const G4Track&, G4double, G4ForceCondition* condition) -{ - *condition = Forced; - return DBL_MAX; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline G4double G4VMultipleScattering::AlongStepGetPhysicalInteractionLength( - const G4Track& track, - G4double previousStepSize, - G4double currentMinimalStep, - G4double& currentSafety, - G4GPILSelection* selection) -{ - // get Step limit proposed by the process - valueGPILSelectionMSC = NotCandidateForSelection; - G4double steplength = GetMscContinuousStepLimit(track,previousStepSize, - currentMinimalStep,currentSafety); - // G4cout << "StepLimit= " << steplength << G4endl; - // set return value for G4GPILSelection - *selection = valueGPILSelectionMSC; - return steplength; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - inline G4double G4VMultipleScattering::GetMscContinuousStepLimit( const G4Track& track, G4double, @@ -394,18 +359,6 @@ inline G4double G4VMultipleScattering::GetMscContinuousStepLimit( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4double G4VMultipleScattering::GetContinuousStepLimit( - const G4Track& track, - G4double previousStepSize, - G4double currentMinimalStep, - G4double& currentSafety) -{ - return GetMscContinuousStepLimit(track,previousStepSize,currentMinimalStep, - currentSafety); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - inline G4double G4VMultipleScattering::ContinuousStepLimit( const G4Track& track, G4double previousStepSize, @@ -434,31 +387,6 @@ inline G4double G4VMultipleScattering::GetLambda(const G4ParticleDefinition* p, //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4VParticleChange* G4VMultipleScattering::AlongStepDoIt( - const G4Track&, - const G4Step& step) -{ - fParticleChange.ProposeTrueStepLength( - currentModel->ComputeTrueStepLength(step.GetStepLength())); - return &fParticleChange; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4VParticleChange* G4VMultipleScattering::PostStepDoIt(const G4Track& track, - const G4Step& step) -{ - fParticleChange.Initialize(track); - std::vector* p=0; - currentModel->SampleSecondaries(p, currentCouple, - track.GetDynamicParticle(), - step.GetStepLength(), - step.GetPostStepPoint()->GetSafety()); - return &fParticleChange; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - inline G4VEmModel* G4VMultipleScattering::SelectModel(G4double kinEnergy) { return modelManager->SelectModel(kinEnergy, currentMaterialIndex); @@ -617,12 +545,26 @@ inline G4PhysicsTable* G4VMultipleScattering::LambdaTable() const return theLambdaTable; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + inline const G4MaterialCutsCouple* G4VMultipleScattering::CurrentMaterialCutsCouple() const { return currentCouple; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void G4VMultipleScattering::AddEmModel(G4int order, G4VEmModel* p, + const G4Region* region) +{ + G4VEmFluctuationModel* fm = 0; + modelManager->AddEmModel(order, p, fm, region); + if(p)p->SetParticleChange(pParticleChange); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + inline G4VEmModel* G4VMultipleScattering::GetModelByIndex(G4int idx) { return modelManager->GetModel(idx); diff --git a/source/processes/electromagnetic/utils/include/G4ionEffectiveCharge.hh b/source/processes/electromagnetic/utils/include/G4ionEffectiveCharge.hh index a4ae548d17..568838f0bb 100644 --- a/source/processes/electromagnetic/utils/include/G4ionEffectiveCharge.hh +++ b/source/processes/electromagnetic/utils/include/G4ionEffectiveCharge.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ionEffectiveCharge.hh,v 1.8 2006/08/15 16:21:39 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/src/G4DummyModel.cc b/source/processes/electromagnetic/utils/src/G4DummyModel.cc index c8d76ddc09..51f90cd32d 100644 --- a/source/processes/electromagnetic/utils/src/G4DummyModel.cc +++ b/source/processes/electromagnetic/utils/src/G4DummyModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4DummyModel.cc,v 1.3 2007/05/22 17:31:58 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/src/G4EmCalculator.cc b/source/processes/electromagnetic/utils/src/G4EmCalculator.cc index b98935043c..87a945e03b 100644 --- a/source/processes/electromagnetic/utils/src/G4EmCalculator.cc +++ b/source/processes/electromagnetic/utils/src/G4EmCalculator.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4EmCalculator.cc,v 1.36 2007/03/15 12:34:47 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4EmCalculator.cc,v 1.37 2007/08/16 15:55:42 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -797,7 +797,12 @@ const G4Material* G4EmCalculator::FindMaterial(const G4String& name) const G4Region* G4EmCalculator::FindRegion(const G4String& reg) { - return G4RegionStore::GetInstance()->GetRegion(reg); + const G4Region* r = 0; + if(reg != "" || reg != "world") + r = G4RegionStore::GetInstance()->GetRegion(reg); + else + r = G4RegionStore::GetInstance()->GetRegion("DefaultRegionForTheWorld"); + return r; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/utils/src/G4EmCorrections.cc b/source/processes/electromagnetic/utils/src/G4EmCorrections.cc index e50eae13ba..346f7391c1 100644 --- a/source/processes/electromagnetic/utils/src/G4EmCorrections.cc +++ b/source/processes/electromagnetic/utils/src/G4EmCorrections.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4EmCorrections.cc,v 1.22 2007/05/18 18:39:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/src/G4EmModelManager.cc b/source/processes/electromagnetic/utils/src/G4EmModelManager.cc index d9bf5a05d4..5a3f46430f 100644 --- a/source/processes/electromagnetic/utils/src/G4EmModelManager.cc +++ b/source/processes/electromagnetic/utils/src/G4EmModelManager.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4EmModelManager.cc,v 1.39 2007/04/12 11:55:07 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4EmModelManager.cc,v 1.40 2007/11/09 11:35:54 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -74,18 +74,6 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... #include "G4EmModelManager.hh" -#include "G4LossTableManager.hh" -#include "G4Step.hh" -#include "G4ParticleDefinition.hh" -#include "G4DataVector.hh" -#include "G4PhysicsVector.hh" -#include "G4Gamma.hh" -#include "G4Positron.hh" -#include "G4MaterialCutsCouple.hh" -#include "G4ProductionCutsTable.hh" -#include "G4Region.hh" -#include "G4RegionStore.hh" - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -110,6 +98,21 @@ G4RegionModels::~G4RegionModels() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +#include "G4LossTableManager.hh" +#include "G4Step.hh" +#include "G4ParticleDefinition.hh" +#include "G4PhysicsVector.hh" +#include "G4Gamma.hh" +#include "G4Positron.hh" +#include "G4MaterialCutsCouple.hh" +#include "G4ProductionCutsTable.hh" +#include "G4Region.hh" +#include "G4RegionStore.hh" +#include "G4Gamma.hh" +#include "G4Positron.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + G4EmModelManager::G4EmModelManager(): nEmModels(0), nRegions(0), @@ -127,6 +130,8 @@ G4EmModelManager::G4EmModelManager(): upperEkin.clear(); maxCutInRange = 12.*cm; maxSubCutInRange = 0.7*mm; + theGamma = G4Gamma::Gamma(); + thePositron = G4Positron::Positron(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -408,9 +413,9 @@ const G4DataVector* G4EmModelManager::Initialise(const G4ParticleDefinition* p, G4double subcut = DBL_MAX; if(secondaryParticle) { size_t idx = 1; - if( secondaryParticle == G4Gamma::Gamma() ) idx = 0; + if( secondaryParticle == theGamma ) idx = 0; cut = (*theCoupleTable->GetEnergyCutsVector(idx))[i]; - if( secondaryParticle == G4Positron::Positron() && cut < DBL_MAX ) + if( secondaryParticle == thePositron && cut < DBL_MAX ) cut += (*theCoupleTable->GetEnergyCutsVector(2))[i] + 2.0*electron_mass_c2; diff --git a/source/processes/electromagnetic/utils/src/G4EmMultiModel.cc b/source/processes/electromagnetic/utils/src/G4EmMultiModel.cc index 96ca8caf9f..9ce63de066 100644 --- a/source/processes/electromagnetic/utils/src/G4EmMultiModel.cc +++ b/source/processes/electromagnetic/utils/src/G4EmMultiModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4EmMultiModel.cc,v 1.6 2007/05/22 17:31:58 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/src/G4EmProcessOptions.cc b/source/processes/electromagnetic/utils/src/G4EmProcessOptions.cc index ccfc78db2e..94d559efda 100644 --- a/source/processes/electromagnetic/utils/src/G4EmProcessOptions.cc +++ b/source/processes/electromagnetic/utils/src/G4EmProcessOptions.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4EmProcessOptions.cc,v 1.21 2007/05/18 18:39:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4EmProcessOptions.cc,v 1.22 2007/11/07 18:38:49 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -76,6 +76,7 @@ G4EmProcessOptions::~G4EmProcessOptions() void G4EmProcessOptions::SetLossFluctuations(G4bool val) { + theManager->SetLossFluctuations(val); const std::vector& v = theManager->GetEnergyLossProcessVector(); std::vector::const_iterator itr; @@ -89,6 +90,7 @@ void G4EmProcessOptions::SetLossFluctuations(G4bool val) void G4EmProcessOptions::SetSubCutoff(G4bool val, const G4Region* r) { + theManager->SetSubCutoff(val); const std::vector& v = theManager->GetEnergyLossProcessVector(); std::vector::const_iterator itr; @@ -102,6 +104,7 @@ void G4EmProcessOptions::SetSubCutoff(G4bool val, const G4Region* r) void G4EmProcessOptions::SetIntegral(G4bool val) { + theManager->SetIntegral(val); const std::vector& v = theManager->GetEnergyLossProcessVector(); std::vector::const_iterator itr; @@ -115,6 +118,7 @@ void G4EmProcessOptions::SetIntegral(G4bool val) void G4EmProcessOptions::SetMinSubRange(G4double val) { + theManager->SetMinSubRange(val); const std::vector& v = theManager->GetEnergyLossProcessVector(); std::vector::const_iterator itr; @@ -128,6 +132,7 @@ void G4EmProcessOptions::SetMinSubRange(G4double val) void G4EmProcessOptions::SetMinEnergy(G4double val) { + theManager->SetMinEnergy(val); const std::vector& v = theManager->GetEnergyLossProcessVector(); std::vector::const_iterator itr; @@ -155,6 +160,7 @@ void G4EmProcessOptions::SetMinEnergy(G4double val) void G4EmProcessOptions::SetMaxEnergy(G4double val) { + theManager->SetMaxEnergy(val); const std::vector& v = theManager->GetEnergyLossProcessVector(); std::vector::const_iterator itr; @@ -182,6 +188,7 @@ void G4EmProcessOptions::SetMaxEnergy(G4double val) void G4EmProcessOptions::SetMaxEnergyForCSDARange(G4double val) { + theManager->SetMaxEnergyForCSDARange(val); const std::vector& v = theManager->GetEnergyLossProcessVector(); std::vector::const_iterator itr; @@ -195,6 +202,7 @@ void G4EmProcessOptions::SetMaxEnergyForCSDARange(G4double val) void G4EmProcessOptions::SetMaxEnergyForMuons(G4double val) { + theManager->SetMaxEnergyForMuons(val); const std::vector& v = theManager->GetEnergyLossProcessVector(); std::vector::const_iterator itr; @@ -227,13 +235,13 @@ void G4EmProcessOptions::SetMaxEnergyForMuons(G4double val) } } */ - theManager->SetMaxEnergyForMuons(val); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... void G4EmProcessOptions::SetDEDXBinning(G4int val) { + theManager->SetDEDXBinning(val); const std::vector& v = theManager->GetEnergyLossProcessVector(); std::vector::const_iterator itr; @@ -247,6 +255,7 @@ void G4EmProcessOptions::SetDEDXBinning(G4int val) void G4EmProcessOptions::SetDEDXBinningForCSDARange(G4int val) { + theManager->SetDEDXBinningForCSDARange(val); const std::vector& v = theManager->GetEnergyLossProcessVector(); std::vector::const_iterator itr; @@ -260,6 +269,7 @@ void G4EmProcessOptions::SetDEDXBinningForCSDARange(G4int val) void G4EmProcessOptions::SetLambdaBinning(G4int val) { + theManager->SetLambdaBinning(val); const std::vector& w = theManager->GetEmProcessVector(); std::vector::const_iterator itp; @@ -280,6 +290,7 @@ void G4EmProcessOptions::SetLambdaBinning(G4int val) void G4EmProcessOptions::SetStepFunction(G4double v1, G4double v2) { + theManager->SetStepFunction(v1, v2); const std::vector& v = theManager->GetEnergyLossProcessVector(); std::vector::const_iterator itr; @@ -293,6 +304,7 @@ void G4EmProcessOptions::SetStepFunction(G4double v1, G4double v2) void G4EmProcessOptions::SetRandomStep(G4bool val) { + theManager->SetRandomStep(val); const std::vector& v = theManager->GetEnergyLossProcessVector(); std::vector::const_iterator itr; diff --git a/source/processes/electromagnetic/utils/src/G4EnergyLossMessenger.cc b/source/processes/electromagnetic/utils/src/G4EnergyLossMessenger.cc index 75532ebe3b..d4d959e5d7 100644 --- a/source/processes/electromagnetic/utils/src/G4EnergyLossMessenger.cc +++ b/source/processes/electromagnetic/utils/src/G4EnergyLossMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4EnergyLossMessenger.cc,v 1.29 2007/06/11 14:56:51 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/src/G4EnergyLossTables.cc b/source/processes/electromagnetic/utils/src/G4EnergyLossTables.cc index 48309af1c5..7a4b8de2ec 100644 --- a/source/processes/electromagnetic/utils/src/G4EnergyLossTables.cc +++ b/source/processes/electromagnetic/utils/src/G4EnergyLossTables.cc @@ -25,7 +25,7 @@ // // // $Id: G4EnergyLossTables.cc,v 1.33 2006/06/29 19:55:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // first version created by P.Urban , 06/04/1998 diff --git a/source/processes/electromagnetic/utils/src/G4LossTableBuilder.cc b/source/processes/electromagnetic/utils/src/G4LossTableBuilder.cc index 014aac5e3b..54526008a3 100644 --- a/source/processes/electromagnetic/utils/src/G4LossTableBuilder.cc +++ b/source/processes/electromagnetic/utils/src/G4LossTableBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4LossTableBuilder.cc,v 1.24 2007/02/16 11:59:35 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/src/G4LossTableManager.cc b/source/processes/electromagnetic/utils/src/G4LossTableManager.cc index 477e69dcc7..4025bb5be1 100644 --- a/source/processes/electromagnetic/utils/src/G4LossTableManager.cc +++ b/source/processes/electromagnetic/utils/src/G4LossTableManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4LossTableManager.cc,v 1.84 2007/06/14 07:28:48 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/src/G4VEmFluctuationModel.cc b/source/processes/electromagnetic/utils/src/G4VEmFluctuationModel.cc index a3cde48faa..7239aaac45 100644 --- a/source/processes/electromagnetic/utils/src/G4VEmFluctuationModel.cc +++ b/source/processes/electromagnetic/utils/src/G4VEmFluctuationModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VEmFluctuationModel.cc,v 1.2 2006/06/29 19:55:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/src/G4VEmModel.cc b/source/processes/electromagnetic/utils/src/G4VEmModel.cc index fb615bfaf7..20bec10ca4 100644 --- a/source/processes/electromagnetic/utils/src/G4VEmModel.cc +++ b/source/processes/electromagnetic/utils/src/G4VEmModel.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VEmModel.cc,v 1.6 2006/06/29 19:55:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VEmModel.cc,v 1.8 2007/09/25 10:19:07 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -94,7 +94,7 @@ G4double G4VEmModel::ComputeMeanFreePath(const G4ParticleDefinition* p, { G4double mfp = DBL_MAX; G4double cross = CrossSectionPerVolume(material,p,ekin,emin,emax); - if (cross >0.) mfp = 1./cross; + if (cross > DBL_MIN) mfp = 1./cross; return mfp; } diff --git a/source/processes/electromagnetic/utils/src/G4VEmProcess.cc b/source/processes/electromagnetic/utils/src/G4VEmProcess.cc index 1d9b3b3742..e613d5d63f 100644 --- a/source/processes/electromagnetic/utils/src/G4VEmProcess.cc +++ b/source/processes/electromagnetic/utils/src/G4VEmProcess.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VEmProcess.cc,v 1.40 2007/05/23 08:43:46 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VEmProcess.cc,v 1.48 2007/10/29 08:38:58 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -50,6 +50,7 @@ // 11-01-06 add A to parameters of ComputeCrossSectionPerAtom (VI) // 12-09-06 add SetModel() (mma) // 12-04-07 remove double call to Clear model manager (V.Ivanchenko) +// 27-10-07 Virtual functions moved to source (V.Ivanchenko) // // Class Description: // @@ -118,7 +119,10 @@ G4VEmProcess::~G4VEmProcess() G4cout << "G4VEmProcess destruct " << GetProcessName() << G4endl; Clear(); - if(theLambdaTable) theLambdaTable->clearAndDestroy(); + if(theLambdaTable) { + theLambdaTable->clearAndDestroy(); + delete theLambdaTable; + } delete modelManager; (G4LossTableManager::Instance())->DeRegister(this); } @@ -139,8 +143,7 @@ void G4VEmProcess::PreparePhysicsTable(const G4ParticleDefinition& part) if(particle == &part) { Clear(); InitialiseProcess(particle); - theCutsGamma = - modelManager->Initialise(particle,secondaryParticle,2.,verboseLevel); + theCuts = modelManager->Initialise(particle,secondaryParticle,2.,verboseLevel); const G4ProductionCutsTable* theCoupleTable= G4ProductionCutsTable::GetProductionCutsTable(); theCutsGamma = theCoupleTable->GetEnergyCutsVector(idxG4GammaCut); @@ -229,11 +232,74 @@ void G4VEmProcess::BuildLambdaTable() //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4VEmProcess::AddEmModel(G4int order, G4VEmModel* p, - const G4Region* region) +G4double G4VEmProcess::PostStepGetPhysicalInteractionLength( + const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition) { - modelManager->AddEmModel(order, p, 0, region); - if(p) p->SetParticleChange(pParticleChange); + // condition is set to "Not Forced" + *condition = NotForced; + G4double x = DBL_MAX; + if(previousStepSize <= DBL_MIN) theNumberOfInteractionLengthLeft = -1.0; + InitialiseStep(track); + + if(preStepKinEnergy < mfpKinEnergy) { + if (integral) ComputeIntegralLambda(preStepKinEnergy); + else preStepLambda = GetCurrentLambda(preStepKinEnergy); + if(preStepLambda <= DBL_MIN) mfpKinEnergy = 0.0; + } + + // non-zero cross section + if(preStepLambda > DBL_MIN) { + if (theNumberOfInteractionLengthLeft < 0.0) { + // beggining of tracking (or just after DoIt of this process) + ResetNumberOfInteractionLengthLeft(); + } else if(currentInteractionLength < DBL_MAX) { + // subtract NumberOfInteractionLengthLeft + SubtractNumberOfInteractionLengthLeft(previousStepSize); + if(theNumberOfInteractionLengthLeft < 0.) + theNumberOfInteractionLengthLeft = perMillion; + } + + // get mean free path and step limit + currentInteractionLength = 1.0/preStepLambda; + x = theNumberOfInteractionLengthLeft * currentInteractionLength; +#ifdef G4VERBOSE + if (verboseLevel>2){ + G4cout << "G4VEmProcess::PostStepGetPhysicalInteractionLength "; + G4cout << "[ " << GetProcessName() << "]" << G4endl; + G4cout << " for " << particle->GetParticleName() + << " in Material " << currentMaterial->GetName() + << " Ekin(MeV)= " << preStepKinEnergy/MeV + < DBL_MIN && + currentInteractionLength < DBL_MAX) { + + // subtract NumberOfInteractionLengthLeft + SubtractNumberOfInteractionLengthLeft(previousStepSize); + if(theNumberOfInteractionLengthLeft < 0.) + theNumberOfInteractionLengthLeft = perMillion; + } + currentInteractionLength = DBL_MAX; + } + return x; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4VEmProcess::GetMeanFreePath(const G4Track& track, + G4double, + G4ForceCondition* condition) +{ + *condition = NotForced; + return G4VEmProcess::MeanFreePath(track); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -283,7 +349,8 @@ G4VParticleChange* G4VEmProcess::PostStepDoIt(const G4Track& track, secParticles.clear(); currentModel->SampleSecondaries(&secParticles, currentCouple, - track.GetDynamicParticle()); + track.GetDynamicParticle(), + (*theCuts)[currentMaterialIndex]); // save secondaries G4int num = secParticles.size(); diff --git a/source/processes/electromagnetic/utils/src/G4VEnergyLoss.cc b/source/processes/electromagnetic/utils/src/G4VEnergyLoss.cc index 940ab61622..4877fad9b1 100644 --- a/source/processes/electromagnetic/utils/src/G4VEnergyLoss.cc +++ b/source/processes/electromagnetic/utils/src/G4VEnergyLoss.cc @@ -25,7 +25,7 @@ // // // $Id: G4VEnergyLoss.cc,v 1.46 2006/06/29 19:55:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- diff --git a/source/processes/electromagnetic/utils/src/G4VEnergyLossProcess.cc b/source/processes/electromagnetic/utils/src/G4VEnergyLossProcess.cc index 55d17eb1c9..8334a4a4c5 100644 --- a/source/processes/electromagnetic/utils/src/G4VEnergyLossProcess.cc +++ b/source/processes/electromagnetic/utils/src/G4VEnergyLossProcess.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VEnergyLossProcess.cc,v 1.109 2007/06/20 12:43:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VEnergyLossProcess.cc,v 1.122 2007/11/07 18:38:49 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -105,6 +105,7 @@ // 10-04-07 use unique SafetyHelper (V.Ivanchenko) // 12-04-07 Add verbosity at destruction (V.Ivanchenko) // 25-04-07 move initialisation of safety helper to BuildPhysicsTable (VI) +// 27-10-07 Virtual functions moved to source (V.Ivanchenko) // // Class Description: // @@ -175,7 +176,6 @@ G4VEnergyLossProcess::G4VEnergyLossProcess(const G4String& name, lambdaFactor(0.8), mfpKinEnergy(0.0), lossFluctuationFlag(true), - lossFluctuationArePossible(true), rndmStepFlag(false), tablesAreBuilt(false), integral(true), @@ -205,7 +205,6 @@ G4VEnergyLossProcess::G4VEnergyLossProcess(const G4String& name, // initialise model (G4LossTableManager::Instance())->Register(this); - emModel[0]=emModel[1]=emModel[2]=emModel[3]=emModel[4]=0; fluctModel = 0; scoffRegions.clear(); @@ -232,18 +231,48 @@ G4VEnergyLossProcess::~G4VEnergyLossProcess() if ( !baseParticle ) { if(theDEDXTable && theRangeTableForLoss) { + if(theIonisationTable == theDEDXTable) theIonisationTable = 0; theDEDXTable->clearAndDestroy(); - if(theDEDXSubTable) theDEDXSubTable->clearAndDestroy(); + delete theDEDXTable; + if(theDEDXSubTable) { + if(theIonisationSubTable == theDEDXSubTable) + theIonisationSubTable = 0; + theDEDXSubTable->clearAndDestroy(); + delete theDEDXSubTable; + } } - if(theIonisationTable) theIonisationTable->clearAndDestroy(); - if(theIonisationSubTable) theIonisationSubTable->clearAndDestroy(); - if(theDEDXunRestrictedTable && theCSDARangeTable) + if(theIonisationTable) { + theIonisationTable->clearAndDestroy(); + delete theIonisationTable; + } + if(theIonisationSubTable) { + theIonisationSubTable->clearAndDestroy(); + delete theIonisationSubTable; + } + if(theDEDXunRestrictedTable && theCSDARangeTable) { theDEDXunRestrictedTable->clearAndDestroy(); - if(theCSDARangeTable) theCSDARangeTable->clearAndDestroy(); - if(theRangeTableForLoss) theRangeTableForLoss->clearAndDestroy(); - if(theInverseRangeTable) theInverseRangeTable->clearAndDestroy(); - if(theLambdaTable) theLambdaTable->clearAndDestroy(); - if(theSubLambdaTable) theSubLambdaTable->clearAndDestroy(); + delete theDEDXunRestrictedTable; + } + if(theCSDARangeTable) { + theCSDARangeTable->clearAndDestroy(); + delete theCSDARangeTable; + } + if(theRangeTableForLoss) { + theRangeTableForLoss->clearAndDestroy(); + delete theRangeTableForLoss; + } + if(theInverseRangeTable) { + theInverseRangeTable->clearAndDestroy(); + delete theInverseRangeTable; + } + if(theLambdaTable) { + theLambdaTable->clearAndDestroy(); + delete theLambdaTable; + } + if(theSubLambdaTable) { + theSubLambdaTable->clearAndDestroy(); + delete theSubLambdaTable; + } } delete modelManager; @@ -585,6 +614,118 @@ G4PhysicsTable* G4VEnergyLossProcess::BuildLambdaTable(G4EmTableType tType) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +G4double G4VEnergyLossProcess::GetContinuousStepLimit( + const G4Track&, + G4double, G4double, G4double&) +{ + return DBL_MAX; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4VEnergyLossProcess::AlongStepGetPhysicalInteractionLength( + const G4Track&, + G4double, + G4double currentMinStep, + G4double&, + G4GPILSelection* selection) +{ + G4double x = DBL_MAX; + *selection = aGPILSelection; + if(isIonisation) { + fRange = GetScaledRangeForScaledEnergy(preStepScaledEnergy)*reduceFactor; + + x = fRange; + G4double y = x*dRoverRange; + + if(x > finalRange && y < currentMinStep) { + x = y + finalRange*(1.0 - dRoverRange)*(2.0 - finalRange/fRange); + } else if (rndmStepFlag) x = SampleRange(); + // G4cout< DBL_MIN) { + if (theNumberOfInteractionLengthLeft < 0.0) { + // beggining of tracking (or just after DoIt of this process) + ResetNumberOfInteractionLengthLeft(); + } else if(currentInteractionLength < DBL_MAX) { + // subtract NumberOfInteractionLengthLeft + SubtractNumberOfInteractionLengthLeft(previousStepSize); + if(theNumberOfInteractionLengthLeft < 0.) + theNumberOfInteractionLengthLeft = perMillion; + } + + // get mean free path and step limit + currentInteractionLength = 1.0/preStepLambda; + x = theNumberOfInteractionLengthLeft * currentInteractionLength; + +#ifdef G4VERBOSE + if (verboseLevel>2){ + G4cout << "G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength "; + G4cout << "[ " << GetProcessName() << "]" << G4endl; + G4cout << " for " << particle->GetParticleName() + << " in Material " << currentMaterial->GetName() + << " Ekin(MeV)= " << preStepKinEnergy/MeV + < DBL_MIN && + currentInteractionLength < DBL_MAX) { + // subtract NumberOfInteractionLengthLeft + SubtractNumberOfInteractionLengthLeft(previousStepSize); + if(theNumberOfInteractionLengthLeft < 0.) + theNumberOfInteractionLengthLeft = perMillion; + } + currentInteractionLength = DBL_MAX; + } + return x; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + G4VParticleChange* G4VEnergyLossProcess::AlongStepDoIt(const G4Track& track, const G4Step& step) { @@ -597,7 +738,7 @@ G4VParticleChange* G4VEnergyLossProcess::AlongStepDoIt(const G4Track& track, if(length <= DBL_MIN) return &fParticleChange; G4double eloss = 0.0; - /* + /* if(-1 < verboseLevel) { const G4ParticleDefinition* d = track.GetDefinition(); G4cout << "AlongStepDoIt for " @@ -623,19 +764,17 @@ G4VParticleChange* G4VEnergyLossProcess::AlongStepDoIt(const G4Track& track, // Short step eloss = GetDEDXForScaledEnergy(preStepScaledEnergy)*length; - // if( length <= linLossLimit * fRange ) { - // eloss = GetDEDXForScaledEnergy(preStepScaledEnergy)*length; - // Long step //} else { if(eloss > preStepKinEnergy*linLossLimit) { - G4double r = GetScaledRangeForScaledEnergy(preStepScaledEnergy); - G4double x = r - length/reduceFactor; - eloss = (ScaledKinEnergyForLoss(r) - ScaledKinEnergyForLoss(x))/massRatio; + G4double x = + GetScaledRangeForScaledEnergy(preStepScaledEnergy) - length/reduceFactor; + eloss = preStepKinEnergy - ScaledKinEnergyForLoss(x)/massRatio; /* if(-1 < verboseLevel) - G4cout << "Long STEP: rPre(mm)= " << r/mm + G4cout << "Long STEP: rPre(mm)= " + << GetScaledRangeForScaledEnergy(preStepScaledEnergy)/mm << " rPost(mm)= " << x/mm << " ePre(MeV)= " << preStepScaledEnergy/MeV << " eloss(MeV)= " << eloss/MeV @@ -647,7 +786,7 @@ G4VParticleChange* G4VEnergyLossProcess::AlongStepDoIt(const G4Track& track, const G4DynamicParticle* dynParticle = track.GetDynamicParticle(); G4VEmModel* currentModel = SelectModel(preStepScaledEnergy); - /* + /* G4double eloss0 = eloss; if(-1 < verboseLevel ) { G4cout << "Before fluct: eloss(MeV)= " << eloss/MeV @@ -657,7 +796,7 @@ G4VParticleChange* G4VEnergyLossProcess::AlongStepDoIt(const G4Track& track, << " fluct= " << lossFluctuationFlag << G4endl; } - */ + */ G4double cut = (*theCuts)[currentMaterialIndex]; G4double esec = 0.0; @@ -712,7 +851,6 @@ G4VParticleChange* G4VEnergyLossProcess::AlongStepDoIt(const G4Track& track, cut = (*theSubCuts)[currentMaterialIndex]; eloss -= GetSubDEDXForScaledEnergy(preStepScaledEnergy)*length; - if(eloss < 0.0) eloss = 0.0; scTracks.clear(); SampleSubCutSecondaries(scTracks, step, currentModel,currentMaterialIndex, @@ -749,15 +887,16 @@ G4VParticleChange* G4VEnergyLossProcess::AlongStepDoIt(const G4Track& track, CorrectionsAlongStep(currentCouple, dynParticle, eloss, length); // Sample fluctuations - if (lossFluctuationFlag && + if (lossFluctuationFlag) { + G4VEmFluctuationModel* fluc = currentModel->GetModelOfFluctuations(); + if(fluc && (eloss + esec + esecdep + lowestKinEnergy) < preStepKinEnergy) { - G4double tmax = - std::min(currentModel->MaxSecondaryKinEnergy(dynParticle),cut); - eloss = currentModel->GetModelOfFluctuations()-> - SampleFluctuations(currentMaterial,dynParticle,tmax,length,eloss); - - /* + G4double tmax = + std::min(currentModel->MaxSecondaryKinEnergy(dynParticle),cut); + eloss = fluc->SampleFluctuations(currentMaterial,dynParticle, + tmax,length,eloss); + /* if(-1 < verboseLevel) G4cout << "After fluct: eloss(MeV)= " << eloss/MeV << " fluc= " << (eloss-eloss0)/MeV @@ -765,10 +904,12 @@ G4VParticleChange* G4VEnergyLossProcess::AlongStepDoIt(const G4Track& track, << " massRatio= " << massRatio << " tmax= " << tmax << G4endl; - */ + */ + } } // add low-energy subcutoff particles eloss += esecdep; + if(eloss < 0.0) eloss = 0.0; // Energy balanse G4double finalT = preStepKinEnergy - eloss - esec; @@ -780,7 +921,7 @@ G4VParticleChange* G4VEnergyLossProcess::AlongStepDoIt(const G4Track& track, fParticleChange.SetProposedKineticEnergy(finalT); fParticleChange.ProposeLocalEnergyDeposit(eloss); - /* + /* if(-1 < verboseLevel) { G4cout << "Final value eloss(MeV)= " << eloss/MeV << " preStepKinEnergy= " << preStepKinEnergy @@ -831,7 +972,7 @@ void G4VEnergyLossProcess::SampleSubCutSecondaries( G4ThreeVector prepoint = preStepPoint->GetPosition(); G4ThreeVector dr = step.GetPostStepPoint()->GetPosition() - prepoint; G4double pretime = preStepPoint->GetGlobalTime(); - G4double dt = length/preStepPoint->GetVelocity(); + // G4double dt = length/preStepPoint->GetVelocity(); G4double fragment = 0.0; do { @@ -841,7 +982,8 @@ void G4VEnergyLossProcess::SampleSubCutSecondaries( // sample secondaries secParticles.clear(); - model->SampleSecondaries(&secParticles,track->GetMaterialCutsCouple(),dp,subcut,cut); + model->SampleSecondaries(&secParticles,track->GetMaterialCutsCouple(), + dp,subcut,cut); // position of subcutoff particles G4ThreeVector r = prepoint + fragment*dr; @@ -862,7 +1004,8 @@ void G4VEnergyLossProcess::SampleSubCutSecondaries( } } if(addSec) { - G4Track* t = new G4Track((*it), pretime + fragment*dt, r); + // G4Track* t = new G4Track((*it), pretime + fragment*dt, r); + G4Track* t = new G4Track((*it), pretime, r); t->SetTouchableHandle(track->GetTouchableHandle()); tracks.push_back(t); @@ -969,6 +1112,7 @@ void G4VEnergyLossProcess::PrintInfoDefinition() G4cout << " Step function: finalRange(mm)= " << finalRange/mm << ", dRoverRange= " << dRoverRange << ", integral: " << integral + << ", fluct: " << lossFluctuationFlag << G4endl; if(theCSDARangeTable && isIonisation) diff --git a/source/processes/electromagnetic/utils/src/G4VMultipleScattering.cc b/source/processes/electromagnetic/utils/src/G4VMultipleScattering.cc index dbfb31a7f9..cdebdb14a6 100644 --- a/source/processes/electromagnetic/utils/src/G4VMultipleScattering.cc +++ b/source/processes/electromagnetic/utils/src/G4VMultipleScattering.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VMultipleScattering.cc,v 1.43 2007/05/18 18:39:55 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VMultipleScattering.cc,v 1.47 2007/11/09 11:35:54 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -53,6 +53,7 @@ // 15-04-05 remove boundary flag (V.Ivanchenko) // 27-10-05 introduce virtual function MscStepLimitation() (V.Ivanchenko) // 12-04-07 Add verbosity at destruction (V.Ivanchenko) +// 27-10-07 Virtual functions moved to source (V.Ivanchenko) // // Class Description: // @@ -79,6 +80,7 @@ #include "G4RegionStore.hh" #include "G4PhysicsTableHelper.hh" #include "G4GenericIon.hh" +#include "G4Electron.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -115,7 +117,10 @@ G4VMultipleScattering::~G4VMultipleScattering() G4cout << "G4VMultipleScattering destruct " << GetProcessName() << G4endl; delete modelManager; - if (theLambdaTable) theLambdaTable->clearAndDestroy(); + if (theLambdaTable) { + theLambdaTable->clearAndDestroy(); + delete theLambdaTable; + } (G4LossTableManager::Instance())->DeRegister(this); } @@ -197,7 +202,9 @@ void G4VMultipleScattering::PreparePhysicsTable(const G4ParticleDefinition& part if(buildLambdaTable) theLambdaTable = G4PhysicsTableHelper::PreparePhysicsTable(theLambdaTable); const G4DataVector* theCuts = - modelManager->Initialise(firstParticle, 0, 10.0, verboseLevel); + modelManager->Initialise(firstParticle, + G4Electron::Electron(), + 10.0, verboseLevel); if(2 < verboseLevel) G4cout << theCuts << G4endl; @@ -206,16 +213,6 @@ void G4VMultipleScattering::PreparePhysicsTable(const G4ParticleDefinition& part //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4VMultipleScattering::AddEmModel(G4int order, G4VEmModel* p, - const G4Region* region) -{ - G4VEmFluctuationModel* fm = 0; - modelManager->AddEmModel(order, p, fm, region); - if(p)p->SetParticleChange(pParticleChange); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - void G4VMultipleScattering::PrintInfoDefinition() { if (0 < verboseLevel) { @@ -240,6 +237,76 @@ void G4VMultipleScattering::PrintInfoDefinition() } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4VMultipleScattering::AlongStepGetPhysicalInteractionLength( + const G4Track& track, + G4double previousStepSize, + G4double currentMinimalStep, + G4double& currentSafety, + G4GPILSelection* selection) +{ + // get Step limit proposed by the process + valueGPILSelectionMSC = NotCandidateForSelection; + G4double steplength = GetMscContinuousStepLimit(track,previousStepSize, + currentMinimalStep,currentSafety); + // G4cout << "StepLimit= " << steplength << G4endl; + // set return value for G4GPILSelection + *selection = valueGPILSelectionMSC; + return steplength; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4VMultipleScattering::PostStepGetPhysicalInteractionLength( + const G4Track&, G4double, G4ForceCondition* condition) +{ + *condition = Forced; + return DBL_MAX; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4VMultipleScattering::GetContinuousStepLimit( + const G4Track& track, + G4double previousStepSize, + G4double currentMinimalStep, + G4double& currentSafety) +{ + return GetMscContinuousStepLimit(track,previousStepSize,currentMinimalStep, + currentSafety); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4double G4VMultipleScattering::GetMeanFreePath( + const G4Track&, G4double, G4ForceCondition* condition) +{ + *condition = Forced; + return DBL_MAX; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4VParticleChange* G4VMultipleScattering::AlongStepDoIt(const G4Track&, + const G4Step& step) +{ + fParticleChange.ProposeTrueStepLength( + currentModel->ComputeTrueStepLength(step.GetStepLength())); + return &fParticleChange; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4VParticleChange* G4VMultipleScattering::PostStepDoIt(const G4Track& track, + const G4Step& step) +{ + fParticleChange.Initialize(track); + currentModel->SampleScattering(track.GetDynamicParticle(), + step.GetPostStepPoint()->GetSafety()); + return &fParticleChange; +} + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4PhysicsVector* G4VMultipleScattering::PhysicsVector(const G4MaterialCutsCouple* couple) diff --git a/source/processes/electromagnetic/utils/src/G4ionEffectiveCharge.cc b/source/processes/electromagnetic/utils/src/G4ionEffectiveCharge.cc index 30ba09c5da..230a7698f0 100644 --- a/source/processes/electromagnetic/utils/src/G4ionEffectiveCharge.cc +++ b/source/processes/electromagnetic/utils/src/G4ionEffectiveCharge.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4ionEffectiveCharge.cc,v 1.14 2006/08/15 16:21:39 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ionEffectiveCharge.cc,v 1.17 2007/09/27 17:08:58 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------- // @@ -43,6 +43,7 @@ // 28.04.2006 Set upper energy limit to 50 MeV (V.Ivanchenko) // 23.05.2006 Set upper energy limit to Z*10 MeV (V.Ivanchenko) // 15.08.2006 Add protection for not defined material (V.Ivanchenko) +// 27-09-2007 Use Fermi energy from material, optimazed formulas (V.Ivanchenko) // // ------------------------------------------------------------------- @@ -92,70 +93,10 @@ G4double G4ionEffectiveCharge::EffectiveCharge(const G4ParticleDefinition* p, G4double reducedEnergy = kineticEnergy * proton_mass_c2/mass ; if( reducedEnergy > Zi*energyHighLimit || Zi < 1.5 || !material) return charge; - static G4double vFermi[92] = { - 1.0309, 0.15976, 0.59782, 1.0781, 1.0486, 1.0, 1.058, 0.93942, 0.74562, 0.3424, - 0.45259, 0.71074, 0.90519, 0.97411, 0.97184, 0.89852, 0.70827, 0.39816, 0.36552, 0.62712, - 0.81707, 0.9943, 1.1423, 1.2381, 1.1222, 0.92705, 1.0047, 1.2, 1.0661, 0.97411, - 0.84912, 0.95, 1.0903, 1.0429, 0.49715, 0.37755, 0.35211, 0.57801, 0.77773, 1.0207, - 1.029, 1.2542, 1.122, 1.1241, 1.0882, 1.2709, 1.2542, 0.90094, 0.74093, 0.86054, - 0.93155, 1.0047, 0.55379, 0.43289, 0.32636, 0.5131, 0.695, 0.72591, 0.71202, 0.67413, - 0.71418, 0.71453, 0.5911, 0.70263, 0.68049, 0.68203, 0.68121, 0.68532, 0.68715, 0.61884, - 0.71801, 0.83048, 1.1222, 1.2381, 1.045, 1.0733, 1.0953, 1.2381, 1.2879, 0.78654, - 0.66401, 0.84912, 0.88433, 0.80746, 0.43357, 0.41923, 0.43638, 0.51464, 0.73087, 0.81065, - 1.9578, 1.0257} ; - - static G4double lFactor[92] = { - 1.0, 1.0, 1.1, 1.06, 1.01, 1.03, 1.04, 0.99, 0.95, 0.9, - 0.82, 0.81, 0.83, 0.88, 1.0, 0.95, 0.97, 0.99, 0.98, 0.97, - 0.98, 0.97, 0.96, 0.93, 0.91, 0.9, 0.88, 0.9, 0.9, 0.9, - 0.9, 0.85, 0.9, 0.9, 0.91, 0.92, 0.9, 0.9, 0.9, 0.9, - 0.9, 0.88, 0.9, 0.88, 0.88, 0.9, 0.9, 0.88, 0.9, 0.9, - 0.9, 0.9, 0.96, 1.2, 0.9, 0.88, 0.88, 0.85, 0.9, 0.9, - 0.92, 0.95, 0.99, 1.03, 1.05, 1.07, 1.08, 1.1, 1.08, 1.08, - 1.08, 1.08, 1.09, 1.09, 1.1, 1.11, 1.12, 1.13, 1.14, 1.15, - 1.17, 1.2, 1.18, 1.17, 1.17, 1.16, 1.16, 1.16, 1.16, 1.16, - 1.16, 1.16} ; - static G4double c[6] = {0.2865, 0.1266, -0.001429, 0.02402,-0.01135, 0.001475} ; - // get elements in the actual material, - const G4ElementVector* theElementVector = material->GetElementVector() ; - const G4double* theAtomicNumDensityVector = - material->GetAtomicNumDensityVector() ; - const G4int NumberOfElements = material->GetNumberOfElements() ; - - // loop for the elements in the material - // to find out average values Z, vF, lF - G4double z = 0.0, vF = 0.0, lF = 0.0, norm = 0.0 ; - - if( 1 == NumberOfElements ) { - z = material->GetZ() ; - G4int iz = G4int(z) - 1 ; - if(iz < 0) iz = 0 ; - else if(iz > 91) iz = 91 ; - vF = vFermi[iz] ; - lF = lFactor[iz] ; - - } else { - for (G4int iel=0; ielGetZ() ; - const G4double weight = theAtomicNumDensityVector[iel] ; - norm += weight ; - z += z2 * weight ; - G4int iz = G4int(z2) - 1 ; - if(iz < 0) iz = 0 ; - else if(iz > 91) iz =91 ; - vF += vFermi[iz] * weight ; - lF += lFactor[iz] * weight ; - } - z /= norm ; - vF /= norm ; - lF /= norm ; - } - + G4double z = material->GetIonisation()->GetZeffective(); reducedEnergy = std::max(reducedEnergy,energyLowLimit); G4double q; @@ -169,28 +110,40 @@ G4double G4ionEffectiveCharge::EffectiveCharge(const G4ParticleDefinition* p, y *= Q; x += y * c[i] ; } + G4double ex; + if(x < 0.2) ex = x * (1 - 0.5*x); + else ex = 1. - std::exp(-x); + G4double tq = 7.6 - Q; - q = (1.0 + ( 0.007 + 0.00005 * z ) * std::exp( -tq*tq )) * std::sqrt(1.0 - std::exp(-x)) ; + G4double tq2= tq*tq; + G4double tt = ( 0.007 + 0.00005 * z ); + if(tq2 < 0.2) tt *= (1.0 - tq2 + 0.5*tq2*tq2); + else tt *= std::exp(-tq2); + q = (1.0 + tt) * std::sqrt(ex); // Heavy ion case } else { - G4double z23 = std::pow(z, 0.666667); - G4double zi13 = std::pow(Zi, 0.33333); + G4double z23 = std::pow(z, 0.666666); + G4double zi13 = std::pow(Zi, 0.333333); G4double zi23 = zi13*zi13; G4double e = std::max(reducedEnergy,energyBohr/z23); - + // v1 is ion velocity in vF unit - G4double v1 = std::sqrt( e / energyBohr )/ vF ; + G4double eF = material->GetIonisation()->GetFermiEnergy(); + G4double v1sq = e/eF; + G4double vFsq = eF/energyBohr; + G4double vF = std::sqrt(vFsq); + G4double y ; // Faster than Fermi velocity - if ( v1 > 1.0 ) { - y = vF * v1 * ( 1.0 + 0.2 / (v1*v1) ) / zi23 ; + if ( v1sq > 1.0 ) { + y = vF * std::sqrt(v1sq) * ( 1.0 + 0.2/v1sq ) / zi23 ; // Slower than Fermi velocity } else { - y = 0.6923 * vF * (1.0 + 2.0*v1*v1/3.0 + v1*v1*v1*v1/15.0) / zi23 ; + y = 0.6923 * vF * (1.0 + 0.666666*v1sq + v1sq*v1sq/15.0) / zi23 ; } G4double y3 = std::pow(y, 0.3) ; @@ -204,16 +157,28 @@ G4double G4ionEffectiveCharge::EffectiveCharge(const G4ParticleDefinition* p, if(q < qmin) q = qmin; G4double tq = 7.6 - std::log(reducedEnergy/keV); - G4double sq = 1.0 + ( 0.18 + 0.0015 * z ) * std::exp( -tq*tq )/ (Zi*Zi); + G4double tq2= tq*tq; + G4double sq = ( 0.18 + 0.0015 * z ) / (Zi*Zi); + if(tq2 < 0.2) sq *= (1.0 - tq2 + 0.5*tq2*tq2); + else sq *= std::exp(-tq2); + sq += 1.0; // G4cout << "sq= " << sq << G4endl; // Screen length according to // J.F.Ziegler and J.M.Manoyan, The stopping of ions in compaunds, // Nucl. Inst. & Meth. in Phys. Res. B35 (1988) 215-228. - G4double lambda = 10.0 * vF * std::pow(1.0-q, 0.6667) / (zi13 * (6.0 + q)) ; - chargeCorrection = sq * (1.0 + (0.5/q - 0.5)*std::log(1.0 + lambda*lambda)/(vF*vF) ); - + G4double lambda = 10.0 * vF / (zi13 * (6.0 + q)); + if(q < 0.2) lambda *= (1.0 - 0.666666*q - 0.444444*q*q); + else lambda *= std::pow(1.0-q, 0.666666); + + G4double lambda2 = lambda*lambda; + + G4double xx = (0.5/q - 0.5)/vFsq; + if(lambda2 < 0.2) xx *= lambda2*(1.0 - 0.5*lambda2); + else xx *= std::log(1.0 + lambda2); + + chargeCorrection = sq * (1.0 + xx); } // G4cout << "G4ionEffectiveCharge: charge= " << charge << " q= " << q // << " chargeCor= " << chargeCorrection diff --git a/source/processes/electromagnetic/xrays/History b/source/processes/electromagnetic/xrays/History index b9a241a8b1..5a421a20ae 100644 --- a/source/processes/electromagnetic/xrays/History +++ b/source/processes/electromagnetic/xrays/History @@ -1,4 +1,4 @@ -$Id: History,v 1.56 2007/05/11 14:22:54 gcosmo Exp $ +$Id: History,v 1.62 2007/11/02 20:56:36 gum Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,29 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +02 November 07: P. Gumplinger (xrays-V09-00-03) +- G4Cerenkov constructor add warning printout about the change + to G4VDiscreteProcess + +30 September 07: P. Gumplinger (xrays-V09-00-02) +- G4Cerenkov change inheritance to G4VDiscreteProcess + changed the arguments of G4Cerenkov::GetAverageNumberOfPhotons + +28 September 07: V.Ivant (xrays-V09-00-01) +- G4VXTRenergyLoss: general cleanup of old comments; + removed all static members; + use verboseLevel variable to control cout +- G4XTRTransparentRegRadModel, G4XTRRegularRadModel, + G4StrawTubeXTRadiator : cleanup, use verboseLevel to control cout + +02 July 07: V.Ivant (xrays-V09-00-00) +- G4VXTRenergyLoss: fixed valgrind complains for wrong memory allocation + by removing internal initialisation of Sandia table but using Sandia + table from material + +19 June 07: V.Ivant (xrays-V08-03-01) +- G4VXTRenergyLoss: restore version 1.34 after failing to clean it up + 11 May 07: G.Cosmo (xrays-V08-03-00) - Use call to G4GeometryTolerance instead of kCarTolerance in G4ForwardXrayTR. - Requires tag "global-V08-03-00" and related tag set. diff --git a/source/processes/electromagnetic/xrays/include/G4Cerenkov.hh b/source/processes/electromagnetic/xrays/include/G4Cerenkov.hh index 82e7305a47..3ed6d87ae8 100644 --- a/source/processes/electromagnetic/xrays/include/G4Cerenkov.hh +++ b/source/processes/electromagnetic/xrays/include/G4Cerenkov.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Cerenkov.hh,v 1.8 2006/06/29 19:55:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Cerenkov.hh,v 1.9 2007/09/30 22:17:04 gum Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// @@ -33,11 +33,12 @@ //////////////////////////////////////////////////////////////////////// // // File: G4Cerenkov.hh -// Description: Continuous Process -- Generation of Cerenkov Photons +// Description: Discrete Process - Generation of Cerenkov Photons // Version: 2.0 // Created: 1996-02-21 // Author: Juliet Armstrong -// Updated: 2005-07-28 add G4ProcessType to constructor +// Updated: 2007-09-30 change inheritance to G4VDiscreteProcess +// 2005-07-28 add G4ProcessType to constructor // 1999-10-29 add method and class descriptors // 1997-04-09 by Peter Gumplinger // > G4MaterialPropertiesTable; new physics/tracking scheme @@ -58,7 +59,7 @@ #include "G4ThreeVector.hh" #include "G4ParticleMomentum.hh" #include "G4Step.hh" -#include "G4VContinuousProcess.hh" +#include "G4VDiscreteProcess.hh" #include "G4OpticalPhoton.hh" #include "G4DynamicParticle.hh" #include "G4Material.hh" @@ -67,15 +68,15 @@ #include "G4PhysicsOrderedFreeVector.hh" // Class Description: -// Continuous Process -- Generation of Cerenkov Photons. -// Class inherits publicly from G4VContinuousProcess. +// Discrete Process -- Generation of Cerenkov Photons. +// Class inherits publicly from G4VDiscreteProcess. // Class Description - End: ///////////////////// // Class Definition ///////////////////// -class G4Cerenkov : public G4VContinuousProcess +class G4Cerenkov : public G4VDiscreteProcess { private: @@ -108,14 +109,13 @@ public: // With description G4bool IsApplicable(const G4ParticleDefinition& aParticleType); // Returns true -> 'is applicable', for all charged particles. - G4double GetContinuousStepLimit(const G4Track& aTrack, - G4double , - G4double , - G4double& ); - // Returns the continuous step limit defined by the Cerenkov - // process. + G4double GetMeanFreePath(const G4Track& aTrack, + G4double , + G4ForceCondition* ); + // Returns the discrete step limit and sets the 'StronglyForced' + // condition for the DoIt to be invoked at every step. - G4VParticleChange* AlongStepDoIt(const G4Track& aTrack, + G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); // This is the method implementing the Cerenkov process. @@ -146,7 +146,8 @@ private: // Helper Functions ///////////////////// - G4double GetAverageNumberOfPhotons(const G4DynamicParticle *aParticle, + G4double GetAverageNumberOfPhotons(const G4double charge, + const G4double beta, const G4Material *aMaterial, const G4MaterialPropertyVector* Rindex) const; diff --git a/source/processes/electromagnetic/xrays/include/G4ForwardXrayTR.hh b/source/processes/electromagnetic/xrays/include/G4ForwardXrayTR.hh index 780940753a..4695bbdec8 100644 --- a/source/processes/electromagnetic/xrays/include/G4ForwardXrayTR.hh +++ b/source/processes/electromagnetic/xrays/include/G4ForwardXrayTR.hh @@ -25,7 +25,7 @@ // // // $Id: G4ForwardXrayTR.hh,v 1.14 2006/06/29 19:55:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4ForwardXrayTR -- header file // diff --git a/source/processes/electromagnetic/xrays/include/G4GammaXTRadiator.hh b/source/processes/electromagnetic/xrays/include/G4GammaXTRadiator.hh index b59a59654e..bce8c7e78a 100644 --- a/source/processes/electromagnetic/xrays/include/G4GammaXTRadiator.hh +++ b/source/processes/electromagnetic/xrays/include/G4GammaXTRadiator.hh @@ -25,7 +25,7 @@ // // // $Id: G4GammaXTRadiator.hh,v 1.4 2006/06/29 19:55:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // /////////////////////////////////////////////////////////////////////////// diff --git a/source/processes/electromagnetic/xrays/include/G4RegularXTRadiator.hh b/source/processes/electromagnetic/xrays/include/G4RegularXTRadiator.hh index d19b085d08..cce1f8d828 100644 --- a/source/processes/electromagnetic/xrays/include/G4RegularXTRadiator.hh +++ b/source/processes/electromagnetic/xrays/include/G4RegularXTRadiator.hh @@ -25,7 +25,7 @@ // // // $Id: G4RegularXTRadiator.hh,v 1.3 2006/06/29 19:55:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // /////////////////////////////////////////////////////////////////////////// diff --git a/source/processes/electromagnetic/xrays/include/G4Scintillation.hh b/source/processes/electromagnetic/xrays/include/G4Scintillation.hh index 231ce6a626..9d1d826d62 100644 --- a/source/processes/electromagnetic/xrays/include/G4Scintillation.hh +++ b/source/processes/electromagnetic/xrays/include/G4Scintillation.hh @@ -25,7 +25,7 @@ // // // $Id: G4Scintillation.hh,v 1.13 2006/06/29 19:55:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/processes/electromagnetic/xrays/include/G4StrawTubeXTRadiator.hh b/source/processes/electromagnetic/xrays/include/G4StrawTubeXTRadiator.hh index c2d136e9a0..7785630fd4 100644 --- a/source/processes/electromagnetic/xrays/include/G4StrawTubeXTRadiator.hh +++ b/source/processes/electromagnetic/xrays/include/G4StrawTubeXTRadiator.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4StrawTubeXTRadiator.hh,v 1.2 2006/06/29 19:55:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4StrawTubeXTRadiator.hh,v 1.4 2007/09/29 17:49:34 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // /////////////////////////////////////////////////////////////////////////// @@ -40,47 +40,42 @@ // // History: // 22.04.05 V. Grichine, first version +// 28.09.07, V.Ivanchenko general cleanup without change of algorithms // - #ifndef G4StrawTubeXTRadiator_h #define G4StrawTubeXTRadiator_h 1 #include #include "G4VXTRenergyLoss.hh" +class G4SandiaTable; + class G4StrawTubeXTRadiator : public G4VXTRenergyLoss { public: G4StrawTubeXTRadiator (G4LogicalVolume* anEnvelope, G4Material*, G4Material*, - G4double,G4double,G4Material*,G4bool unishut = false, - const G4String & processName = "StrawTubeXTRadiator"); - ~G4StrawTubeXTRadiator (); + G4double,G4double,G4Material*,G4bool unishut = false, + const G4String & processName = "StrawTubeXTRadiator"); + virtual ~G4StrawTubeXTRadiator (); -// Auxiliary functions for plate/gas material parameters + // Auxiliary functions for plate/gas material parameters G4double GetMediumFormationZone(G4double,G4double,G4double) ; void ComputeMediumPhotoAbsCof() ; G4double GetMediumLinearPhotoAbs(G4double) ; G4complex GetMediumComplexFZ(G4double,G4double,G4double) ; - - - - // Pure virtual function from base class - G4double GetStackFactor( G4double energy, G4double gamma, G4double varAngle); - protected: G4int fMatIndex3; G4double fSigma3; - G4double** fMediumPhotoAbsCof ; - G4int fMediumIntervalNumber ; - + + G4SandiaTable* fMediumPhotoAbsCof; }; #endif diff --git a/source/processes/electromagnetic/xrays/include/G4SynchrotronRadiation.hh b/source/processes/electromagnetic/xrays/include/G4SynchrotronRadiation.hh index 8331295e55..47580033ee 100644 --- a/source/processes/electromagnetic/xrays/include/G4SynchrotronRadiation.hh +++ b/source/processes/electromagnetic/xrays/include/G4SynchrotronRadiation.hh @@ -25,7 +25,7 @@ // // // $Id: G4SynchrotronRadiation.hh,v 1.4 2006/06/29 19:55:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class header file diff --git a/source/processes/electromagnetic/xrays/include/G4SynchrotronRadiationInMat.hh b/source/processes/electromagnetic/xrays/include/G4SynchrotronRadiationInMat.hh index 6f7042c99a..18f481cbda 100644 --- a/source/processes/electromagnetic/xrays/include/G4SynchrotronRadiationInMat.hh +++ b/source/processes/electromagnetic/xrays/include/G4SynchrotronRadiationInMat.hh @@ -25,7 +25,7 @@ // // // $Id: G4SynchrotronRadiationInMat.hh,v 1.2 2006/06/29 19:55:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class header file diff --git a/source/processes/electromagnetic/xrays/include/G4TransitionRadiation.hh b/source/processes/electromagnetic/xrays/include/G4TransitionRadiation.hh index edfd53442c..a2a71197ec 100644 --- a/source/processes/electromagnetic/xrays/include/G4TransitionRadiation.hh +++ b/source/processes/electromagnetic/xrays/include/G4TransitionRadiation.hh @@ -25,7 +25,7 @@ // // // $Id: G4TransitionRadiation.hh,v 1.9 2006/06/29 19:55:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4TransitionRadiation -- header file // diff --git a/source/processes/electromagnetic/xrays/include/G4TransparentRegXTRadiator.hh b/source/processes/electromagnetic/xrays/include/G4TransparentRegXTRadiator.hh index f82c0726e2..720f5015c7 100644 --- a/source/processes/electromagnetic/xrays/include/G4TransparentRegXTRadiator.hh +++ b/source/processes/electromagnetic/xrays/include/G4TransparentRegXTRadiator.hh @@ -25,7 +25,7 @@ // // // $Id: G4TransparentRegXTRadiator.hh,v 1.2 2006/06/29 19:55:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // /////////////////////////////////////////////////////////////////////////// diff --git a/source/processes/electromagnetic/xrays/include/G4VTRModel.hh b/source/processes/electromagnetic/xrays/include/G4VTRModel.hh index d7e9f37798..c4f4c2f746 100644 --- a/source/processes/electromagnetic/xrays/include/G4VTRModel.hh +++ b/source/processes/electromagnetic/xrays/include/G4VTRModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4VTRModel.hh,v 1.3 2006/06/29 19:55:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VTRModel -- header file // diff --git a/source/processes/electromagnetic/xrays/include/G4VTransitionRadiation.hh b/source/processes/electromagnetic/xrays/include/G4VTransitionRadiation.hh index 71c69b32a7..1e28b29699 100644 --- a/source/processes/electromagnetic/xrays/include/G4VTransitionRadiation.hh +++ b/source/processes/electromagnetic/xrays/include/G4VTransitionRadiation.hh @@ -25,7 +25,7 @@ // // // $Id: G4VTransitionRadiation.hh,v 1.3 2006/06/29 19:55:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VTransitionRadiation -- header file // diff --git a/source/processes/electromagnetic/xrays/include/G4VXTRenergyLoss.hh b/source/processes/electromagnetic/xrays/include/G4VXTRenergyLoss.hh index 6a3727b5ad..dd90fd0e3f 100644 --- a/source/processes/electromagnetic/xrays/include/G4VXTRenergyLoss.hh +++ b/source/processes/electromagnetic/xrays/include/G4VXTRenergyLoss.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VXTRenergyLoss.hh,v 1.18 2006/06/29 19:55:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VXTRenergyLoss.hh,v 1.24 2007/09/29 17:49:34 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // /////////////////////////////////////////////////////////////////////////// @@ -38,12 +38,11 @@ // 06.10.05 V. Grichine first step to discrete process // 15.01.02 V. Grichine first version // 28.07.05, P.Gumplinger add G4ProcessType to constructor +// 28.09.07, V.Ivanchenko general cleanup without change of algorithms // - -#ifndef G4XTRenergyLoss_h -#define G4XTRenergyLoss_h 1 - +#ifndef G4VXTRenergyLoss_h +#define G4VXTRenergyLoss_h 1 #include #include "globals.hh" @@ -68,38 +67,27 @@ #include "G4Integrator.hh" #include "G4ParticleChange.hh" - - +class G4SandiaTable; class G4VParticleChange; class G4PhysicsFreeVector; -class G4XTRenergyLoss : public G4VDiscreteProcess // G4VContinuousProcess +class G4VXTRenergyLoss : public G4VDiscreteProcess // G4VContinuousProcess { public: - G4XTRenergyLoss (G4LogicalVolume *anEnvelope,G4Material*,G4Material*, + G4VXTRenergyLoss (G4LogicalVolume *anEnvelope,G4Material*,G4Material*, G4double,G4double,G4int, const G4String & processName = "XTRenergyLoss", G4ProcessType type = fElectromagnetic); - virtual ~G4XTRenergyLoss (); + virtual ~G4VXTRenergyLoss (); // These virtual has to be implemented in inherited particular TR radiators virtual G4double GetStackFactor( G4double energy, G4double gamma, G4double varAngle ); - G4bool IsApplicable(const G4ParticleDefinition&); - G4double GetContinuousStepLimit(const G4Track& aTrack, - G4double , - G4double , - G4double& ); - // Returns the continuous step limit defined by the XTR process. - - G4VParticleChange* AlongStepDoIt(const G4Track& aTrack, - const G4Step& aStep); - G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); @@ -161,91 +149,89 @@ public: void GetGasZmuProduct(); G4double GetGasZmuProduct(G4double,G4double,G4double); - G4double GetPlateCompton(G4double); - G4double GetGasCompton(G4double); - G4double GetComptonPerAtom(G4double,G4double); + G4double GetPlateCompton(G4double); + G4double GetGasCompton(G4double); + G4double GetComptonPerAtom(G4double,G4double); - G4double GetXTRrandomEnergy( G4double scaledTkin, G4int iTkin ); - G4double GetXTRenergy( G4int iPlace, G4double position, G4int iTransfer ); + G4double GetXTRrandomEnergy( G4double scaledTkin, G4int iTkin ); + G4double GetXTRenergy( G4int iPlace, G4double position, G4int iTransfer ); - G4double GetRandomAngle( G4double energyXTR, G4int iTkin ); - G4double GetAngleXTR(G4int iTR,G4double position,G4int iAngle); + G4double GetRandomAngle( G4double energyXTR, G4int iTkin ); + G4double GetAngleXTR(G4int iTR,G4double position,G4int iAngle); - G4double GetGamma() {return fGamma;}; - G4double GetEnergy() {return fEnergy;}; - G4double GetVarAngle(){return fVarAngle;}; + G4double GetGamma() {return fGamma;}; + G4double GetEnergy() {return fEnergy;}; + G4double GetVarAngle(){return fVarAngle;}; void SetGamma(G4double gamma) {fGamma = gamma;}; void SetEnergy(G4double energy) {fEnergy = energy;}; void SetVarAngle(G4double varAngle){fVarAngle = varAngle;}; void SetAngleRadDistr(G4bool pAngleRadDistr){fAngleRadDistr=pAngleRadDistr;}; void SetCompton(G4bool pC){fCompton=pC;}; - void SetVerboseLevel(G4int verbose){fVerbose=verbose;}; - - static G4PhysicsLogVector* GetProtonVector(){ return fProtonEnergyVector;}; - static G4int GetTotBin(){return fTotBin;}; + G4PhysicsLogVector* GetProtonVector(){ return fProtonEnergyVector;}; + G4int GetTotBin(){return fTotBin;}; G4PhysicsFreeVector* GetAngleVector(G4double energy, G4int n); + protected: - G4ParticleDefinition* fPtrGamma ; // pointer to TR photon + G4ParticleDefinition* fPtrGamma ; // pointer to TR photon G4double* fGammaCutInKineticEnergy ; // TR photon cut in energy array - G4double fGammaTkinCut ; // Tkin cut of TR photon in current mat. + + G4double fGammaTkinCut ; // Tkin cut of TR photon in current mat. G4LogicalVolume* fEnvelope ; - G4PhysicsTable* fAngleDistrTable ; - G4PhysicsTable* fEnergyDistrTable ; + G4PhysicsTable* fAngleDistrTable ; + G4PhysicsTable* fEnergyDistrTable ; - static G4PhysicsLogVector* fProtonEnergyVector ; - static G4PhysicsLogVector* fXTREnergyVector ; + G4PhysicsLogVector* fProtonEnergyVector ; + G4PhysicsLogVector* fXTREnergyVector ; + G4double fTheMinEnergyTR; // min TR energy + G4double fTheMaxEnergyTR; // max TR energy + G4double fMinEnergyTR; // min TR energy in material + G4double fMaxEnergyTR; // max TR energy in material + G4double fTheMaxAngle; // max theta of TR quanta + G4double fTheMinAngle; // max theta of TR quanta + G4double fMaxThetaTR; // max theta of TR quanta + G4int fBinTR; // number of bins in TR vectors - static G4double fTheMinEnergyTR; // static min TR energy - static G4double fTheMaxEnergyTR; // static max TR energy - G4double fMinEnergyTR; // min TR energy in material - G4double fMaxEnergyTR; // max TR energy in material - static G4double fTheMaxAngle; // max theta of TR quanta - static G4double fTheMinAngle; // max theta of TR quanta - G4double fMaxThetaTR; // max theta of TR quanta - static G4int fBinTR; // number of bins in TR vectors - - static G4double fMinProtonTkin; // min Tkin of proton in tables - static G4double fMaxProtonTkin; // max Tkin of proton in tables - static G4int fTotBin; // number of bins in log scale - G4double fGamma; // current Lorentz factor - G4double fEnergy; // energy and - G4double fVarAngle; // angle squared + G4double fMinProtonTkin; // min Tkin of proton in tables + G4double fMaxProtonTkin; // max Tkin of proton in tables + G4int fTotBin; // number of bins in log scale + G4double fGamma; // current Lorentz factor + G4double fEnergy; // energy and + G4double fVarAngle; // angle squared G4double fLambda; - static G4double fPlasmaCof ; // physical consts for plasma energy - static G4double fCofTR ; + G4double fPlasmaCof ; // physical consts for plasma energy + G4double fCofTR ; + G4bool fExitFlux; + G4bool fAngleRadDistr; + G4bool fCompton; + G4double fSigma1; + G4double fSigma2; // plasma energy Sq of matter1/2 - G4bool fExitFlux; - G4bool fAngleRadDistr; - G4bool fCompton; - G4double fSigma1, fSigma2 ; // plasma energy Sq of matter1/2 + G4int fMatIndex1; + G4int fMatIndex2; + G4int fPlateNumber; - G4int fMatIndex1, fMatIndex2 ; + G4double fTotalDist; + G4double fPlateThick; + G4double fGasThick; + G4double fAlphaPlate; + G4double fAlphaGas ; - G4int fPlateNumber ; - G4double fTotalDist ; - G4double** fPlatePhotoAbsCof ; - G4int fPlateIntervalNumber ; - G4double fPlateThick ; + G4SandiaTable* fPlatePhotoAbsCof; - G4double** fGasPhotoAbsCof ; - G4int fGasIntervalNumber ; - G4double fGasThick ; - G4double fAlphaPlate, fAlphaGas ; + G4SandiaTable* fGasPhotoAbsCof; G4ParticleChange fParticleChange; G4PhysicsTable* fAngleForEnergyTable; std::vector fAngleBank; - G4int fVerbose; + }; -typedef G4XTRenergyLoss G4VXTRenergyLoss; - #endif diff --git a/source/processes/electromagnetic/xrays/include/G4XTRGammaRadModel.hh b/source/processes/electromagnetic/xrays/include/G4XTRGammaRadModel.hh index 22fd5c2f93..afcb1f745a 100644 --- a/source/processes/electromagnetic/xrays/include/G4XTRGammaRadModel.hh +++ b/source/processes/electromagnetic/xrays/include/G4XTRGammaRadModel.hh @@ -48,22 +48,21 @@ // 03.10.05 V. Grichine, first version // - #ifndef G4XTRGammaRadModel_h #define G4XTRGammaRadModel_h 1 #include "G4VXTRenergyLoss.hh" -class G4XTRGammaRadModel : public G4XTRenergyLoss +class G4XTRGammaRadModel : public G4VXTRenergyLoss { public: - G4XTRGammaRadModel (G4LogicalVolume *anEnvelope, - G4double,G4double, - G4Material*,G4Material*, - G4double,G4double,G4int, - const G4String & processName = "XTRgammaRadiator" ); - ~G4XTRGammaRadModel (); + G4XTRGammaRadModel (G4LogicalVolume *anEnvelope, + G4double,G4double, + G4Material*,G4Material*, + G4double,G4double,G4int, + const G4String & processName = "XTRgammaRadiator" ); + virtual ~G4XTRGammaRadModel (); // Pure virtual function from base class diff --git a/source/processes/electromagnetic/xrays/include/G4XTRRegularRadModel.hh b/source/processes/electromagnetic/xrays/include/G4XTRRegularRadModel.hh index 41c824b333..a94f81bf3e 100644 --- a/source/processes/electromagnetic/xrays/include/G4XTRRegularRadModel.hh +++ b/source/processes/electromagnetic/xrays/include/G4XTRRegularRadModel.hh @@ -41,21 +41,19 @@ // 10.10.05 V. Grichine, first version // - #ifndef G4XTRRegularRadModel_h #define G4XTRRegularRadModel_h 1 #include "G4VXTRenergyLoss.hh" - -class G4XTRRegularRadModel : public G4XTRenergyLoss +class G4XTRRegularRadModel : public G4VXTRenergyLoss { public: - G4XTRRegularRadModel (G4LogicalVolume *anEnvelope,G4Material*,G4Material*, + G4XTRRegularRadModel (G4LogicalVolume *anEnvelope,G4Material*,G4Material*, G4double,G4double,G4int, const G4String & processName = "XTRegularModel"); - ~G4XTRRegularRadModel (); + virtual ~G4XTRRegularRadModel (); // Pure virtual function from base class diff --git a/source/processes/electromagnetic/xrays/src/G4Cerenkov.cc b/source/processes/electromagnetic/xrays/src/G4Cerenkov.cc index ee2d7099af..582b2ff3aa 100644 --- a/source/processes/electromagnetic/xrays/src/G4Cerenkov.cc +++ b/source/processes/electromagnetic/xrays/src/G4Cerenkov.cc @@ -24,19 +24,23 @@ // ******************************************************************** // // -// $Id: G4Cerenkov.cc,v 1.21 2006/06/29 19:56:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Cerenkov.cc,v 1.23 2007/10/15 20:05:23 gum Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //////////////////////////////////////////////////////////////////////// // Cerenkov Radiation Class Implementation //////////////////////////////////////////////////////////////////////// // // File: G4Cerenkov.cc -// Description: Continuous Process -- Generation of Cerenkov Photons +// Description: Discrete Process -- Generation of Cerenkov Photons // Version: 2.1 // Created: 1996-02-21 // Author: Juliet Armstrong -// Updated: 2005-08-17 by Peter Gumplinger +// Updated: 2007-09-30 by Peter Gumplinger +// > change inheritance to G4VDiscreteProcess +// GetContinuousStepLimit -> GetMeanFreePath (StronglyForced) +// AlongStepDoIt -> PostStepDoIt +// 2005-08-17 by Peter Gumplinger // > change variable name MeanNumPhotons -> MeanNumberOfPhotons // 2005-07-28 by Peter Gumplinger // > add G4ProcessType to constructor @@ -81,8 +85,15 @@ using namespace std; ///////////////// G4Cerenkov::G4Cerenkov(const G4String& processName, G4ProcessType type) - : G4VContinuousProcess(processName, type) + : G4VDiscreteProcess(processName, type) { + G4cout << "G4Cerenkov::G4Cerenkov constructor" << G4endl; + G4cout << "NOTE: this is now a G4VDiscreteProcess!" << G4endl; + G4cout << "Required change in UserPhysicsList: " << G4endl; + G4cout << "change: pmanager->AddContinuousProcess(theCerenkovProcess);" << G4endl; + G4cout << "to: pmanager->AddProcess(theCerenkovProcess);" << G4endl; + G4cout << " pmanager->SetProcessOrdering(theCerenkovProcess,idxPostStep);" << G4endl; + fTrackSecondariesFirst = false; fMaxPhotons = 0; @@ -115,11 +126,11 @@ G4Cerenkov::~G4Cerenkov() // Methods //////////// -// AlongStepDoIt +// PostStepDoIt // ------------- // G4VParticleChange* -G4Cerenkov::AlongStepDoIt(const G4Track& aTrack, const G4Step& aStep) +G4Cerenkov::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) // This routine is called for each tracking Step of a charged particle // in a radiator. A Poisson-distributed number of photons is generated @@ -129,6 +140,7 @@ G4Cerenkov::AlongStepDoIt(const G4Track& aTrack, const G4Step& aStep) // they are added to the particle change. { + ////////////////////////////////////////////////////// // Should we ensure that the material is dispersive? ////////////////////////////////////////////////////// @@ -148,15 +160,22 @@ G4Cerenkov::AlongStepDoIt(const G4Track& aTrack, const G4Step& aStep) G4MaterialPropertiesTable* aMaterialPropertiesTable = aMaterial->GetMaterialPropertiesTable(); if (!aMaterialPropertiesTable) - return G4VContinuousProcess::AlongStepDoIt(aTrack, aStep); + return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); const G4MaterialPropertyVector* Rindex = aMaterialPropertiesTable->GetProperty("RINDEX"); if (!Rindex) - return G4VContinuousProcess::AlongStepDoIt(aTrack, aStep); + return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); + + // particle charge + const G4double charge = aParticle->GetDefinition()->GetPDGCharge(); + + // particle beta + const G4double beta = (pPreStepPoint ->GetBeta() + + pPostStepPoint->GetBeta())/2.; G4double MeanNumberOfPhotons = - GetAverageNumberOfPhotons(aParticle,aMaterial,Rindex); + GetAverageNumberOfPhotons(charge,beta,aMaterial,Rindex); if (MeanNumberOfPhotons <= 0.0) { @@ -164,7 +183,7 @@ G4Cerenkov::AlongStepDoIt(const G4Track& aTrack, const G4Step& aStep) aParticleChange.SetNumberOfSecondaries(0); - return G4VContinuousProcess::AlongStepDoIt(aTrack, aStep); + return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); } @@ -181,7 +200,7 @@ G4Cerenkov::AlongStepDoIt(const G4Track& aTrack, const G4Step& aStep) aParticleChange.SetNumberOfSecondaries(0); - return G4VContinuousProcess::AlongStepDoIt(aTrack, aStep); + return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); } //////////////////////////////////////////////////////////////// @@ -201,8 +220,7 @@ G4Cerenkov::AlongStepDoIt(const G4Track& aTrack, const G4Step& aStep) G4double nMax = Rindex->GetMaxProperty(); - G4double BetaInverse = aParticle->GetTotalEnergy() / - aParticle->GetTotalMomentum(); + G4double BetaInverse = 1./beta; G4double maxCos = BetaInverse / nMax; G4double maxSin2 = (1.0 - maxCos) * (1.0 + maxCos); @@ -311,7 +329,7 @@ G4Cerenkov::AlongStepDoIt(const G4Track& aTrack, const G4Step& aStep) << aParticleChange.GetNumberOfSecondaries() << G4endl; } - return G4VContinuousProcess::AlongStepDoIt(aTrack, aStep); + return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); } // BuildThePhysicsTable for the Cerenkov process @@ -418,16 +436,16 @@ void G4Cerenkov::BuildThePhysicsTable() } } -// GetContinuousStepLimit -// ---------------------- +// GetMeanFreePath +// --------------- // -G4double -G4Cerenkov::GetContinuousStepLimit(const G4Track& aTrack, - G4double , - G4double , - G4double& ) +G4double G4Cerenkov::GetMeanFreePath(const G4Track& aTrack, + G4double, + G4ForceCondition* condition) { + *condition = StronglyForced; + // If user has defined an average maximum number of photons to // be generated in a Step, then return the Step length for that // number of photons. @@ -445,8 +463,15 @@ G4Cerenkov::GetContinuousStepLimit(const G4Track& aTrack, aMaterialPropertiesTable->GetProperty("RINDEX"); if (!Rindex) return DBL_MAX; + // particle charge + const G4double charge = aParticle->GetDefinition()->GetPDGCharge(); + + // particle beta + const G4double beta = aParticle->GetTotalMomentum() / + aParticle->GetTotalEnergy(); + G4double MeanNumberOfPhotons = - GetAverageNumberOfPhotons(aParticle,aMaterial,Rindex); + GetAverageNumberOfPhotons(charge,beta,aMaterial,Rindex); if(MeanNumberOfPhotons <= 0.0) return DBL_MAX; @@ -462,16 +487,16 @@ G4Cerenkov::GetContinuousStepLimit(const G4Track& aTrack, // ^^^^^^^^^^ G4double -G4Cerenkov::GetAverageNumberOfPhotons(const G4DynamicParticle* aParticle, +G4Cerenkov::GetAverageNumberOfPhotons(const G4double charge, + const G4double beta, const G4Material* aMaterial, const G4MaterialPropertyVector* Rindex) const { const G4double Rfact = 369.81/(eV * cm); - if(aParticle->GetTotalMomentum() <= 0.0)return 0.0; + if(beta <= 0.0)return 0.0; - G4double BetaInverse = aParticle->GetTotalEnergy() / - aParticle->GetTotalMomentum(); + G4double BetaInverse = 1./beta; // Vectors used in computation of Cerenkov Angle Integral: // - Refraction Indices for the current material @@ -536,9 +561,6 @@ G4Cerenkov::GetAverageNumberOfPhotons(const G4DynamicParticle* aParticle, } } - // particle charge - G4double charge = aParticle->GetDefinition()->GetPDGCharge(); - // Calculate number of photons G4double NumPhotons = Rfact * charge/eplus * charge/eplus * (dp - ge * BetaInverse*BetaInverse); diff --git a/source/processes/electromagnetic/xrays/src/G4ForwardXrayTR.cc b/source/processes/electromagnetic/xrays/src/G4ForwardXrayTR.cc index ac2dc7dd78..2c0d41dee5 100644 --- a/source/processes/electromagnetic/xrays/src/G4ForwardXrayTR.cc +++ b/source/processes/electromagnetic/xrays/src/G4ForwardXrayTR.cc @@ -25,7 +25,7 @@ // // // $Id: G4ForwardXrayTR.cc,v 1.14 2007/05/11 14:23:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4ForwardXrayTR class -- implementation file diff --git a/source/processes/electromagnetic/xrays/src/G4GammaXTRadiator.cc b/source/processes/electromagnetic/xrays/src/G4GammaXTRadiator.cc index aecaf31d24..c278c50254 100644 --- a/source/processes/electromagnetic/xrays/src/G4GammaXTRadiator.cc +++ b/source/processes/electromagnetic/xrays/src/G4GammaXTRadiator.cc @@ -25,7 +25,7 @@ // // // $Id: G4GammaXTRadiator.cc,v 1.5 2006/06/29 19:56:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include diff --git a/source/processes/electromagnetic/xrays/src/G4RegularXTRadiator.cc b/source/processes/electromagnetic/xrays/src/G4RegularXTRadiator.cc index 9b0d4914a3..638e091e0b 100644 --- a/source/processes/electromagnetic/xrays/src/G4RegularXTRadiator.cc +++ b/source/processes/electromagnetic/xrays/src/G4RegularXTRadiator.cc @@ -25,7 +25,7 @@ // // // $Id: G4RegularXTRadiator.cc,v 1.9 2006/06/29 19:56:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include diff --git a/source/processes/electromagnetic/xrays/src/G4Scintillation.cc b/source/processes/electromagnetic/xrays/src/G4Scintillation.cc index f9c0153cd2..502e8b84e4 100644 --- a/source/processes/electromagnetic/xrays/src/G4Scintillation.cc +++ b/source/processes/electromagnetic/xrays/src/G4Scintillation.cc @@ -25,7 +25,7 @@ // // // $Id: G4Scintillation.cc,v 1.26 2006/06/29 19:56:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //////////////////////////////////////////////////////////////////////// // Scintillation Light Class Implementation diff --git a/source/processes/electromagnetic/xrays/src/G4StrawTubeXTRadiator.cc b/source/processes/electromagnetic/xrays/src/G4StrawTubeXTRadiator.cc index 4ca9780665..de6d2415d9 100644 --- a/source/processes/electromagnetic/xrays/src/G4StrawTubeXTRadiator.cc +++ b/source/processes/electromagnetic/xrays/src/G4StrawTubeXTRadiator.cc @@ -24,15 +24,12 @@ // ******************************************************************** // // -// $Id: G4StrawTubeXTRadiator.cc,v 1.4 2006/06/29 19:56:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4StrawTubeXTRadiator.cc,v 1.6 2007/09/29 17:49:34 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -#include - #include "G4StrawTubeXTRadiator.hh" #include "Randomize.hh" - #include "G4Gamma.hh" using namespace std; @@ -48,42 +45,44 @@ G4StrawTubeXTRadiator::G4StrawTubeXTRadiator(G4LogicalVolume *anEnvelope, const G4String& processName) : G4VXTRenergyLoss(anEnvelope,foilMat,gasMat,a,b,1,processName) { - G4cout<<"Straw tube X-ray TR radiator EM process is called"< 0) + G4cout<<"Straw tube X-ray TR radiator EM process is called"< 0) + G4cout<<"medium plasma energy = "<GetNumberOfElements(); - G4int* thisMaterialZ = new G4int[numberOfElements]; - - for(i=0;i - GetElement(i)->GetZ() ; - } - fMediumIntervalNumber = thisMaterialSandiaTable.SandiaIntervals - (thisMaterialZ,numberOfElements) ; - - fMediumIntervalNumber = thisMaterialSandiaTable.SandiaMixing - ( thisMaterialZ , - (*theMaterialTable)[fMatIndex3]->GetFractionVector() , - numberOfElements,fMediumIntervalNumber); - - fMediumPhotoAbsCof = new G4double*[fMediumIntervalNumber]; - - for(i=0;iGetDensity(); - } - } - delete[] thisMaterialZ; - return; + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + const G4Material* mat = (*theMaterialTable)[fMatIndex3]; + fMediumPhotoAbsCof = mat->GetSandiaTable(); } ////////////////////////////////////////////////////////////////////// @@ -239,30 +196,19 @@ void G4StrawTubeXTRadiator::ComputeMediumPhotoAbsCof() G4double G4StrawTubeXTRadiator::GetMediumLinearPhotoAbs(G4double omega) { - G4int i ; G4double omega2, omega3, omega4; omega2 = omega*omega; omega3 = omega2*omega; omega4 = omega2*omega2; - for(i=0;iGetSandiaCofForMaterial(omega); + + G4double cross = SandiaCof[0]/omega + SandiaCof[1]/omega2 + + SandiaCof[2]/omega3 + SandiaCof[3]/omega4; + return cross; } - - - // // //////////////////////////////////////////////////////////////////////////// diff --git a/source/processes/electromagnetic/xrays/src/G4SynchrotronRadiation.cc b/source/processes/electromagnetic/xrays/src/G4SynchrotronRadiation.cc index 6a5293db0c..965d2e2942 100644 --- a/source/processes/electromagnetic/xrays/src/G4SynchrotronRadiation.cc +++ b/source/processes/electromagnetic/xrays/src/G4SynchrotronRadiation.cc @@ -25,7 +25,7 @@ // // // $Id: G4SynchrotronRadiation.cc,v 1.5 2006/06/29 19:56:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/electromagnetic/xrays/src/G4SynchrotronRadiationInMat.cc b/source/processes/electromagnetic/xrays/src/G4SynchrotronRadiationInMat.cc index d8d2574f6e..a9850fb68b 100644 --- a/source/processes/electromagnetic/xrays/src/G4SynchrotronRadiationInMat.cc +++ b/source/processes/electromagnetic/xrays/src/G4SynchrotronRadiationInMat.cc @@ -25,7 +25,7 @@ // // // $Id: G4SynchrotronRadiationInMat.cc,v 1.2 2006/06/29 19:56:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/electromagnetic/xrays/src/G4TransitionRadiation.cc b/source/processes/electromagnetic/xrays/src/G4TransitionRadiation.cc index 023d4eb429..959652da75 100644 --- a/source/processes/electromagnetic/xrays/src/G4TransitionRadiation.cc +++ b/source/processes/electromagnetic/xrays/src/G4TransitionRadiation.cc @@ -25,7 +25,7 @@ // // // $Id: G4TransitionRadiation.cc,v 1.7 2006/06/29 19:56:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4TransitionRadiation class -- implementation file diff --git a/source/processes/electromagnetic/xrays/src/G4TransparentRegXTRadiator.cc b/source/processes/electromagnetic/xrays/src/G4TransparentRegXTRadiator.cc index d637c0aa71..5846b19864 100644 --- a/source/processes/electromagnetic/xrays/src/G4TransparentRegXTRadiator.cc +++ b/source/processes/electromagnetic/xrays/src/G4TransparentRegXTRadiator.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4TransparentRegXTRadiator.cc,v 1.10 2006/06/29 19:56:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4TransparentRegXTRadiator.cc,v 1.11 2007/09/29 17:49:34 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #include @@ -47,7 +47,8 @@ G4TransparentRegXTRadiator::G4TransparentRegXTRadiator(G4LogicalVolume *anEnvelo const G4String& processName) : G4VXTRenergyLoss(anEnvelope,foilMat,gasMat,a,b,n,processName) { - G4cout<<"Regular transparent X-ray TR radiator EM process is called"< 0) + G4cout<<"Regular transparent X-ray TR radiator EM process is called"< 2) + if(verboseLevel > 2) { G4cout<<"k = "<GetNoDaughters() ; + verboseLevel = 1; + + // Initialization of local constants + fTheMinEnergyTR = 1.0*keV; + fTheMaxEnergyTR = 100.0*keV; + fTheMaxAngle = 1.0e-3; + fTheMinAngle = 5.0e-6; + fBinTR = 50; + + fMinProtonTkin = 100.0*GeV; + fMaxProtonTkin = 100.0*TeV; + fTotBin = 50; + + // Proton energy vector initialization + + fProtonEnergyVector = new G4PhysicsLogVector(fMinProtonTkin, + fMaxProtonTkin, + fTotBin ); + + fXTREnergyVector = new G4PhysicsLogVector(fTheMinEnergyTR, + fTheMaxEnergyTR, + fBinTR ); + + fPlasmaCof = 4.0*pi*fine_structure_const*hbarc*hbarc*hbarc/electron_mass_c2; + + fCofTR = fine_structure_const/pi; + + fEnvelope = anEnvelope ; + fPlateNumber = n ; - G4cout<<"the number of TR radiator plates = "< 0) + G4cout<<"### G4VXTRenergyLoss: the number of TR radiator plates = " + < 0) + G4cout<<"total radiator thickness = "<GetIndex() ; - G4cout<<"plate material = "<GetName()< 0) + G4cout<<"plate material = "<GetName()<GetIndex() ; - G4cout<<"gas material = "<GetName()< 0) + G4cout<<"gas material = "<GetName()<GetElectronDensity() ; // fSigma1 = (20.9*eV)*(20.9*eV) ; - G4cout<<"plate plasma energy = "< 0) + G4cout<<"plate plasma energy = "<GetElectronDensity() ; - G4cout<<"gas plasma energy = "< 0) + G4cout<<"gas plasma energy = "<GetLogicalVolume() != fEnvelope ) lambda = DBL_MAX; else @@ -225,7 +197,7 @@ G4double G4XTRenergyLoss::GetMeanFreePath(const G4Track& aTrack, kinEnergy = aParticle->GetKineticEnergy(); mass = aParticle->GetDefinition()->GetPDGMass(); gamma = 1.0 + kinEnergy/mass; - if(verboseLevel) + if(verboseLevel > 1) { G4cout<<" gamma = "< 0) + G4cout<<"Build angle distribution according the transparent regular radiator" + < 0) { + G4cout< - GetLowEdgeEnergy(iTkin)/proton_mass_c2) ; + fGamma = 1.0 + (fProtonEnergyVector-> + GetLowEdgeEnergy(iTkin)/proton_mass_c2) ; - fMaxThetaTR = 25.0/(fGamma*fGamma) ; // theta^2 + fMaxThetaTR = 25.0/(fGamma*fGamma) ; // theta^2 - fTheMinAngle = 1.0e-3 ; // was 5.e-6, e-6 !!!, e-5, e-4 + fTheMinAngle = 1.0e-3 ; // was 5.e-6, e-6 !!!, e-5, e-4 - if( fMaxThetaTR > fTheMaxAngle ) fMaxThetaTR = fTheMaxAngle; - else - { - if( fMaxThetaTR < fTheMinAngle ) fMaxThetaTR = fTheMinAngle; - } -G4PhysicsLinearVector* angleVector = new G4PhysicsLinearVector(0.0, - fMaxThetaTR, - fBinTR ); + if( fMaxThetaTR > fTheMaxAngle ) fMaxThetaTR = fTheMaxAngle; + else + { + if( fMaxThetaTR < fTheMinAngle ) fMaxThetaTR = fTheMinAngle; + } + G4PhysicsLinearVector* angleVector = new G4PhysicsLinearVector(0.0, + fMaxThetaTR, + fBinTR ); - G4double energySum = 0.0; - G4double angleSum = 0.0; + G4double energySum = 0.0; + G4double angleSum = 0.0; -G4Integrator integral; + G4Integrator integral; - energyVector->PutValue(fBinTR-1,energySum); - angleVector->PutValue(fBinTR-1,angleSum); + energyVector->PutValue(fBinTR-1,energySum); + angleVector->PutValue(fBinTR-1,angleSum); - for( iTR = fBinTR - 2 ; iTR >= 0 ; iTR-- ) - { + for( iTR = fBinTR - 2 ; iTR >= 0 ; iTR-- ) + { energySum += radiatorCof*fCofTR*integral.Legendre10( - this,&G4XTRenergyLoss::SpectralXTRdEdx, + this,&G4VXTRenergyLoss::SpectralXTRdEdx, energyVector->GetLowEdgeEnergy(iTR), energyVector->GetLowEdgeEnergy(iTR+1) ); // angleSum += fCofTR*integral.Legendre96( - // this,&G4XTRenergyLoss::AngleXTRdEdx, + // this,&G4VXTRenergyLoss::AngleXTRdEdx, // angleVector->GetLowEdgeEnergy(iTR), // angleVector->GetLowEdgeEnergy(iTR+1) ); energyVector->PutValue(iTR,energySum/fTotalDist); // angleVector ->PutValue(iTR,angleSum); - } - if(fVerbose) - { - G4cout - // < 0) { + G4cout< integral; // // -void G4XTRenergyLoss::BuildEnergyTable() +void G4VXTRenergyLoss::BuildEnergyTable() { - return ; } //////////////////////////////////////////////////////////////////////// @@ -406,17 +383,13 @@ void G4XTRenergyLoss::BuildEnergyTable() // Build XTR angular distribution at given energy based on the model // of transparent regular radiator -void G4XTRenergyLoss::BuildAngleTable() +void G4VXTRenergyLoss::BuildAngleTable() { G4int iTkin, iTR; G4double energy; - // G4double theta, result, tmp, cof1, cof2, cofMin, cofPHC, angleSum=0.; - // G4int k, iTheta, kMax, kMin; - fGammaTkinCut = 0.0; - - + // setting of min/max TR energies if(fGammaTkinCut > fTheMinEnergyTR) fMinEnergyTR = fGammaTkinCut; @@ -428,10 +401,11 @@ void G4XTRenergyLoss::BuildAngleTable() G4cout.precision(4); G4Timer timer; timer.Start(); - G4cout< 0) { + G4cout< kMin) kMin++; - - kMax = kMin + fBinTR -1; - - angleSum = 0.0; - angleVector->PutValue(fBinTR-1,fMaxThetaTR, angleSum); - - for( iTheta = fBinTR - 2 ; iTheta >= 0 ; iTheta-- ) - { - - k = iTheta + kMin; - - tmp = pi*fPlateThick*(k + cof2)/(fPlateThick + fGasThick); - - result = (k - cof1)*(k - cof1)*(k + cof2)*(k + cof2); - // tmp = sin(tmp)*sin(tmp)*abs(k-cofMin)/result; - - if( k == kMin && kMin == G4int(cofMin) ) - { - angleSum += 0.5*sin(tmp)*sin(tmp)*abs(k-cofMin)/result; - } - else - { - angleSum += sin(tmp)*sin(tmp)*abs(k-cofMin)/result; - } - theta = abs(k-cofMin)*cofPHC/energy/(fPlateThick + fGasThick); - if(fVerbose) - { - G4cout<<"k = "< 0) { + G4cout< kMin) kMin++; kMax = kMin + fBinTR -1; - if(fVerbose > 2) + if(verboseLevel > 2) { G4cout<<"n-1 = "< 0) { + G4cout< integral; + G4Integrator integral; angleVector->PutValue(fBinTR-1,angleSum); @@ -663,27 +590,31 @@ void G4XTRenergyLoss::BuildGlobalAngleTable() { angleSum += radiatorCof*fCofTR*integral.Legendre96( - this,&G4XTRenergyLoss::AngleXTRdEdx, + this,&G4VXTRenergyLoss::AngleXTRdEdx, angleVector->GetLowEdgeEnergy(iTR), angleVector->GetLowEdgeEnergy(iTR+1) ); angleVector ->PutValue(iTR,angleSum); } - G4cout - // < 0) { + G4cout< 1) { - G4cout<<"Start of G4XTRenergyLoss::PostStepDoIt "<GetDefinition()->GetPDGMass() ; G4double gamma = 1.0 + kinEnergy/mass ; - if(verboseLevel > 0 ) + if(verboseLevel > 1 ) { G4cout<<"gamma = "< 0) { - G4cout<<"Go out from G4XTRenergyLoss::PostStepDoIt:iTkin = "<GetSolid()->DistanceToOut(localP, localV); - if(verboseLevel) + if(verboseLevel > 1) { G4cout<<"distance to exit = "<GetDefinition()->GetPDGCharge(); - - - // Now we are ready to Generate TR photons - - G4double chargeSq = charge*charge ; - G4double kinEnergy = aParticle->GetKineticEnergy() ; - G4double mass = aParticle->GetDefinition()->GetPDGMass() ; - G4double gamma = 1.0 + kinEnergy/mass ; - - if(verboseLevel > 0 ) - { - G4cout<<"gamma = "<GetPosition(); - G4double startTime = pPreStepPoint->GetGlobalTime(); - - G4ParticleMomentum direction = aParticle->GetMomentumDirection(); - - G4double distance = aStep.GetStepLength() ; - - - for(iTkin=0;iTkinGetLowEdgeEnergy(iTkin)) break; - } - iPlace = iTkin - 1 ; - - if(iTkin == 0) // Tkin is too small, neglect of TR photon generation - { - if(verboseLevel) - { - G4cout<<"Go out from G4XTRenergyLoss::AlongStepDoIt:iTkin = "<GetLowEdgeEnergy(iTkin - 1) ; - E2 = fProtonEnergyVector->GetLowEdgeEnergy(iTkin) ; - W = 1.0/(E2 - E1) ; - W1 = (E2 - TkinScaled)*W ; - W2 = (TkinScaled - E1)*W ; - meanNumOfTR = ( (*(*fEnergyDistrTable)(iPlace ))(0)*W1+ - (*(*fEnergyDistrTable)(iPlace+1))(0)*W2 )*chargeSq*distance ; - - if(verboseLevel > 0 ) - { - G4cout<= 0.1 ) theta = 0.1 ; - - // G4cout<<" : theta = "<GetVelocity()+ - pPostStepPoint->GetVelocity())/2.); - - G4double aSecondaryTime = startTime + deltaTime; - - G4ThreeVector positionTR = startPos + delta*direction ; - - if( fExitFlux ) - { - const G4RotationMatrix* rotM = pPostStepPoint->GetTouchable()->GetRotation(); - G4ThreeVector transl = pPostStepPoint->GetTouchable()->GetTranslation(); - G4AffineTransform transform = G4AffineTransform(rotM,transl); - transform.Invert(); - G4ThreeVector localP = transform.TransformPoint(positionTR); - G4ThreeVector localV = transform.TransformAxis(directionTR); - - G4double distance = fEnvelope->GetSolid()->DistanceToOut(localP, localV); - if(verboseLevel) - { - G4cout<<"distance to exit = "<SetTouchableHandle(aStep.GetPostStepPoint() - ->GetTouchableHandle()); - aSecondaryTrack->SetParentID(aTrack.GetTrackID()); - - aParticleChange.AddSecondary(aSecondaryTrack); - } - kinEnergy -= sumEnergyTR ; - aParticleChange.ProposeEnergy(kinEnergy) ; - } - } - // return G4VContinuousProcess::AlongStepDoIt(aTrack, aStep); - return &aParticleChange; -} - - /////////////////////////////////////////////////////////////////////// // // This function returns the spectral and angle density of TR quanta @@ -1045,7 +764,7 @@ G4VParticleChange* G4XTRenergyLoss::AlongStepDoIt( const G4Track& aTrack, // varAngle =2* (1 - cos(theta)) or approximately = theta*theta // -G4complex G4XTRenergyLoss::OneInterfaceXTRdEdx( G4double energy, +G4complex G4VXTRenergyLoss::OneInterfaceXTRdEdx( G4double energy, G4double gamma, G4double varAngle ) { @@ -1064,7 +783,7 @@ G4complex G4XTRenergyLoss::OneInterfaceXTRdEdx( G4double energy, // For photon energy distribution tables. Integrate first over angle // -G4double G4XTRenergyLoss::SpectralAngleXTRdEdx(G4double varAngle) +G4double G4VXTRenergyLoss::SpectralAngleXTRdEdx(G4double varAngle) { G4double result = GetStackFactor(fEnergy,fGamma,varAngle); if(result < 0.0) result = 0.0; @@ -1075,7 +794,7 @@ G4double G4XTRenergyLoss::SpectralAngleXTRdEdx(G4double varAngle) // // For second integration over energy -G4double G4XTRenergyLoss::SpectralXTRdEdx(G4double energy) +G4double G4VXTRenergyLoss::SpectralXTRdEdx(G4double energy) { G4int i, iMax = 8; G4double result = 0.0; @@ -1084,32 +803,18 @@ G4double G4XTRenergyLoss::SpectralXTRdEdx(G4double energy) for( i = 0; i < iMax; i++ ) lim[i] *= fMaxThetaTR; - G4Integrator integral; + G4Integrator integral; fEnergy = energy; for( i = 0; i < iMax-1; i++ ) { - result += integral.Legendre96(this,&G4XTRenergyLoss::SpectralAngleXTRdEdx, + result += integral.Legendre96(this,&G4VXTRenergyLoss::SpectralAngleXTRdEdx, lim[i],lim[i+1]); - // result += integral.Legendre10(this,&G4XTRenergyLoss::SpectralAngleXTRdEdx, + // result += integral.Legendre10(this,&G4VXTRenergyLoss::SpectralAngleXTRdEdx, // lim[i],lim[i+1]); } - /* - result = integral.Legendre96(this,&G4XTRenergyLoss::SpectralAngleXTRdEdx, - 0.0,0.1*fMaxThetaTR) + - integral.Legendre96(this,&G4XTRenergyLoss::SpectralAngleXTRdEdx, - 0.1*fMaxThetaTR,0.2*fMaxThetaTR) + - integral.Legendre96(this,&G4XTRenergyLoss::SpectralAngleXTRdEdx, - 0.2*fMaxThetaTR,0.4*fMaxThetaTR) + - integral.Legendre96(this,&G4XTRenergyLoss::SpectralAngleXTRdEdx, - 0.4*fMaxThetaTR,0.7*fMaxThetaTR) + - integral.Legendre96(this,&G4XTRenergyLoss::SpectralAngleXTRdEdx, - 0.7*fMaxThetaTR,fMaxThetaTR); - - */ - return result; } @@ -1118,7 +823,7 @@ G4double G4XTRenergyLoss::SpectralXTRdEdx(G4double energy) // for photon angle distribution tables // -G4double G4XTRenergyLoss::AngleSpectralXTRdEdx(G4double energy) +G4double G4VXTRenergyLoss::AngleSpectralXTRdEdx(G4double energy) { G4double result = GetStackFactor(energy,fGamma,fVarAngle); if(result < 0) result = 0.0; @@ -1129,7 +834,7 @@ G4double G4XTRenergyLoss::AngleSpectralXTRdEdx(G4double energy) // // The XTR angular distribution based on transparent regular radiator -G4double G4XTRenergyLoss::AngleXTRdEdx(G4double varAngle) +G4double G4VXTRenergyLoss::AngleXTRdEdx(G4double varAngle) { // G4cout<<"angle2 = "<GetSandiaCofForMaterial(omega); + G4double cross = SandiaCof[0]/omega + SandiaCof[1]/omega2 + + SandiaCof[2]/omega3 + SandiaCof[3]/omega4; + return cross; } + ////////////////////////////////////////////////////////////////////// // // Calculates formation zone for gas. Omega is energy !!! -G4double G4XTRenergyLoss::GetGasFormationZone( G4double omega , +G4double G4VXTRenergyLoss::GetGasFormationZone( G4double omega , G4double gamma , G4double varAngle ) { @@ -1335,7 +1001,6 @@ G4double G4XTRenergyLoss::GetGasFormationZone( G4double omega , lambda = 1.0/gamma/gamma + varAngle + fSigma2/omega/omega ; cof = 2.0*hbarc/omega/lambda ; return cof ; - } @@ -1343,7 +1008,7 @@ G4double G4XTRenergyLoss::GetGasFormationZone( G4double omega , // // Calculates complex formation zone for gas gaps. Omega is energy !!! -G4complex G4XTRenergyLoss::GetGasComplexFZ( G4double omega , +G4complex G4VXTRenergyLoss::GetGasComplexFZ( G4double omega , G4double gamma , G4double varAngle ) { @@ -1367,49 +1032,12 @@ G4complex G4XTRenergyLoss::GetGasComplexFZ( G4double omega , // Computes matrix of Sandia photo absorption cross section coefficients for // gas material -void G4XTRenergyLoss::ComputeGasPhotoAbsCof() +void G4VXTRenergyLoss::ComputeGasPhotoAbsCof() { - G4int i, j, numberOfElements ; - static const G4MaterialTable* - theMaterialTable = G4Material::GetMaterialTable(); - - G4SandiaTable thisMaterialSandiaTable(fMatIndex2) ; - numberOfElements = (*theMaterialTable)[fMatIndex2]->GetNumberOfElements() ; - G4int* thisMaterialZ = new G4int[numberOfElements] ; - - for(i=0;i - GetElement(i)->GetZ() ; - } - fGasIntervalNumber = thisMaterialSandiaTable.SandiaIntervals - (thisMaterialZ,numberOfElements) ; - - fGasIntervalNumber = thisMaterialSandiaTable.SandiaMixing - ( thisMaterialZ , - (*theMaterialTable)[fMatIndex2]->GetFractionVector() , - numberOfElements,fGasIntervalNumber) ; - - fGasPhotoAbsCof = new G4double*[fGasIntervalNumber] ; - - for(i=0;i<=fGasIntervalNumber;i++) - { - fGasPhotoAbsCof[i] = new G4double[5] ; - } - for(i=0;iGetDensity() ; - } - } - delete[] thisMaterialZ ; - return ; + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + const G4Material* mat = (*theMaterialTable)[fMatIndex2]; + fGasPhotoAbsCof = mat->GetSandiaTable(); + return; } ////////////////////////////////////////////////////////////////////// @@ -1417,27 +1045,18 @@ void G4XTRenergyLoss::ComputeGasPhotoAbsCof() // Returns the value of linear photo absorption coefficient (in reciprocal // length) for gas -G4double G4XTRenergyLoss::GetGasLinearPhotoAbs(G4double omega) +G4double G4VXTRenergyLoss::GetGasLinearPhotoAbs(G4double omega) { - G4int i ; G4double omega2, omega3, omega4 ; omega2 = omega*omega ; omega3 = omega2*omega ; omega4 = omega2*omega2 ; - for(i=0;iGetSandiaCofForMaterial(omega); + G4double cross = SandiaCof[0]/omega + SandiaCof[1]/omega2 + + SandiaCof[2]/omega3 + SandiaCof[3]/omega4; + return cross; } @@ -1446,18 +1065,19 @@ G4double G4XTRenergyLoss::GetGasLinearPhotoAbs(G4double omega) // Calculates the product of linear cof by formation zone for plate. // Omega is energy !!! -G4double G4XTRenergyLoss::GetPlateZmuProduct( G4double omega , +G4double G4VXTRenergyLoss::GetPlateZmuProduct( G4double omega , G4double gamma , G4double varAngle ) { - return GetPlateFormationZone(omega,gamma,varAngle)*GetPlateLinearPhotoAbs(omega) ; + return GetPlateFormationZone(omega,gamma,varAngle) + * GetPlateLinearPhotoAbs(omega) ; } ////////////////////////////////////////////////////////////////////// // // Calculates the product of linear cof by formation zone for plate. // G4cout and output in file in some energy range. -void G4XTRenergyLoss::GetPlateZmuProduct() +void G4VXTRenergyLoss::GetPlateZmuProduct() { ofstream outPlate("plateZmu.dat", ios::out ) ; outPlate.setf( ios::scientific, ios::floatfield ); @@ -1466,12 +1086,15 @@ void G4XTRenergyLoss::GetPlateZmuProduct() G4double omega, varAngle, gamma ; gamma = 10000. ; varAngle = 1/gamma/gamma ; - G4cout<<"energy, keV"<<"\t"<<"Zmu for plate"< 0) + G4cout<<"energy, keV"<<"\t"<<"Zmu for plate"< 1) + G4cout< 0) + outPlate< 0) + G4cout<<"energy, keV"<<"\t"<<"Zmu for gas"< 1) + G4cout< 0) + outGas<GetNumberOfElements() ; for( i = 0; i < numberOfElements; i++ ) { - nowZ = (*theMaterialTable)[fMatIndex1]->GetElement(i)->GetZ(); - sumZ += nowZ; - xSection += GetComptonPerAtom(omega,nowZ); // *nowZ; + nowZ = (*theMaterialTable)[fMatIndex1]->GetElement(i)->GetZ(); + sumZ += nowZ; + xSection += GetComptonPerAtom(omega,nowZ); // *nowZ; } xSection /= sumZ; xSection *= (*theMaterialTable)[fMatIndex1]->GetElectronDensity(); - return xSection; + return xSection; } @@ -1538,33 +1164,31 @@ G4double G4XTRenergyLoss::GetPlateCompton(G4double omega) // // Computes Compton cross section for gas material in 1/mm -G4double G4XTRenergyLoss::GetGasCompton(G4double omega) +G4double G4VXTRenergyLoss::GetGasCompton(G4double omega) { G4int i, numberOfElements; G4double xSection = 0., nowZ, sumZ = 0.; - static const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); numberOfElements = (*theMaterialTable)[fMatIndex2]->GetNumberOfElements() ; for( i = 0; i < numberOfElements; i++ ) { - nowZ = (*theMaterialTable)[fMatIndex2]->GetElement(i)->GetZ(); - sumZ += nowZ; - xSection += GetComptonPerAtom(omega,nowZ); // *nowZ; + nowZ = (*theMaterialTable)[fMatIndex2]->GetElement(i)->GetZ(); + sumZ += nowZ; + xSection += GetComptonPerAtom(omega,nowZ); // *nowZ; } xSection /= sumZ; xSection *= (*theMaterialTable)[fMatIndex2]->GetElectronDensity(); - return xSection; + return xSection; } - - //////////////////////////////////////////////////////////////////////// // // Computes Compton cross section per atom with Z electrons for gamma with // the energy GammaEnergy -G4double G4XTRenergyLoss::GetComptonPerAtom(G4double GammaEnergy, G4double Z) +G4double G4VXTRenergyLoss::GetComptonPerAtom(G4double GammaEnergy, G4double Z) { G4double CrossSection = 0.0 ; if ( Z < 0.9999 ) return CrossSection; @@ -1618,7 +1242,7 @@ G4double G4XTRenergyLoss::GetComptonPerAtom(G4double GammaEnergy, G4double Z) // G4double -G4XTRenergyLoss::OneBoundaryXTRNdensity( G4double energy,G4double gamma, +G4VXTRenergyLoss::OneBoundaryXTRNdensity( G4double energy,G4double gamma, G4double varAngle ) const { G4double formationLength1, formationLength2 ; @@ -1635,7 +1259,7 @@ G4XTRenergyLoss::OneBoundaryXTRNdensity( G4double energy,G4double gamma, } -G4double G4XTRenergyLoss::GetStackFactor( G4double energy, G4double gamma, +G4double G4VXTRenergyLoss::GetStackFactor( G4double energy, G4double gamma, G4double varAngle ) { // return stack factor corresponding to one interface @@ -1648,7 +1272,7 @@ G4double G4XTRenergyLoss::GetStackFactor( G4double energy, G4double gamma, // For photon energy distribution tables. Integrate first over angle // -G4double G4XTRenergyLoss::XTRNSpectralAngleDensity(G4double varAngle) +G4double G4VXTRenergyLoss::XTRNSpectralAngleDensity(G4double varAngle) { return OneBoundaryXTRNdensity(fEnergy,fGamma,varAngle)* GetStackFactor(fEnergy,fGamma,varAngle) ; @@ -1658,13 +1282,13 @@ G4double G4XTRenergyLoss::XTRNSpectralAngleDensity(G4double varAngle) // // For second integration over energy -G4double G4XTRenergyLoss::XTRNSpectralDensity(G4double energy) +G4double G4VXTRenergyLoss::XTRNSpectralDensity(G4double energy) { fEnergy = energy ; - G4Integrator integral ; - return integral.Legendre96(this,&G4XTRenergyLoss::XTRNSpectralAngleDensity, + G4Integrator integral ; + return integral.Legendre96(this,&G4VXTRenergyLoss::XTRNSpectralAngleDensity, 0.0,0.2*fMaxThetaTR) + - integral.Legendre10(this,&G4XTRenergyLoss::XTRNSpectralAngleDensity, + integral.Legendre10(this,&G4VXTRenergyLoss::XTRNSpectralAngleDensity, 0.2*fMaxThetaTR,fMaxThetaTR) ; } @@ -1673,7 +1297,7 @@ G4double G4XTRenergyLoss::XTRNSpectralDensity(G4double energy) // for photon angle distribution tables // -G4double G4XTRenergyLoss::XTRNAngleSpectralDensity(G4double energy) +G4double G4VXTRenergyLoss::XTRNAngleSpectralDensity(G4double energy) { return OneBoundaryXTRNdensity(energy,fGamma,fVarAngle)* GetStackFactor(energy,fGamma,fVarAngle) ; @@ -1683,11 +1307,11 @@ G4double G4XTRenergyLoss::XTRNAngleSpectralDensity(G4double energy) // // -G4double G4XTRenergyLoss::XTRNAngleDensity(G4double varAngle) +G4double G4VXTRenergyLoss::XTRNAngleDensity(G4double varAngle) { fVarAngle = varAngle ; - G4Integrator integral ; - return integral.Legendre96(this,&G4XTRenergyLoss::XTRNAngleSpectralDensity, + G4Integrator integral ; + return integral.Legendre96(this,&G4VXTRenergyLoss::XTRNAngleSpectralDensity, fMinEnergyTR,fMaxEnergyTR) ; } @@ -1696,7 +1320,7 @@ G4double G4XTRenergyLoss::XTRNAngleDensity(G4double varAngle) // Check number of photons for a range of Lorentz factors from both energy // and angular tables -void G4XTRenergyLoss::GetNumberOfPhotons() +void G4VXTRenergyLoss::GetNumberOfPhotons() { G4int iTkin ; G4double gamma, numberE ; @@ -1713,10 +1337,11 @@ void G4XTRenergyLoss::GetNumberOfPhotons() GetLowEdgeEnergy(iTkin)/proton_mass_c2) ; numberE = (*(*fEnergyDistrTable)(iTkin))(0) ; // numberA = (*(*fAngleDistrTable)(iTkin))(0) ; - G4cout< 1) + G4cout< 0) + outEn< DBL_MIN/MeV) kineticEnergy = std::log10(anEnergy/MeV); G4double nOfNeutrons = atomicNumber-nOfProtons; const G4double p1=1.3773; const G4double p2=1.+10./atomicNumber-0.0006*atomicNumber; diff --git a/source/processes/hadronic/cross_sections/src/G4PhotoNuclearCrossSection.cc b/source/processes/hadronic/cross_sections/src/G4PhotoNuclearCrossSection.cc index 851a26c9ce..c10acc88bd 100644 --- a/source/processes/hadronic/cross_sections/src/G4PhotoNuclearCrossSection.cc +++ b/source/processes/hadronic/cross_sections/src/G4PhotoNuclearCrossSection.cc @@ -25,7 +25,7 @@ // // // The lust update: M.V. Kossov, CERN/ITEP(Moscow) 17-June-02 -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Physics class: G4PhotoNuclearCrossSection for gamma+A cross sections diff --git a/source/processes/hadronic/cross_sections/src/G4PiData.cc b/source/processes/hadronic/cross_sections/src/G4PiData.cc index 786ec6a288..d7a4c3499c 100644 --- a/source/processes/hadronic/cross_sections/src/G4PiData.cc +++ b/source/processes/hadronic/cross_sections/src/G4PiData.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- // by J.P Wellisch, Sun Sep 15 2002. diff --git a/source/processes/hadronic/cross_sections/src/G4ProtonInelasticCrossSection.cc b/source/processes/hadronic/cross_sections/src/G4ProtonInelasticCrossSection.cc index 3cb00c60a4..c2e7cf586b 100644 --- a/source/processes/hadronic/cross_sections/src/G4ProtonInelasticCrossSection.cc +++ b/source/processes/hadronic/cross_sections/src/G4ProtonInelasticCrossSection.cc @@ -89,15 +89,20 @@ GetCrossSection(G4double kineticEnergy, G4double atomicNumber, G4double nOfProto G4double ff1= 0.70-0.002*a; // slope of the drop at medium energies. G4double ff2= 1.00+1/a; // start of the slope. G4double ff3= 0.8+18/a-0.002*a; // stephight - fac=1-(1/(1+std::exp(-8*ff1*(std::log10(kineticEnergy)+1.37*ff2)))); + fac = 1.0; + if (kineticEnergy > DBL_MIN) + fac= 1.0 - (1.0/(1+std::exp(-8*ff1*(std::log10(kineticEnergy)+1.37*ff2)))); crossSection = crossSection*(1+ff3*fac); // low energy return to zero ff1=1.-1/a-0.001*a; // slope of the rise ff2=1.17-2.7/a-0.0014*a; // start of the rise - fac=-8.*ff1*(std::log10(kineticEnergy)+2.0*ff2); - fac=1/(1+std::exp(fac)); + fac = 0.0; + if (kineticEnergy > DBL_MIN) { + fac=-8.*ff1*(std::log10(kineticEnergy)+2.0*ff2); + fac=1/(1+std::exp(fac)); + } crossSection = crossSection*fac; return crossSection*millibarn; } diff --git a/source/processes/hadronic/management/History b/source/processes/hadronic/management/History index 5078f780ea..5bb2eb42ff 100644 --- a/source/processes/hadronic/management/History +++ b/source/processes/hadronic/management/History @@ -14,6 +14,11 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +15 October 2007 Dennis Wright (hadr-man-V09-00-00) +-------------------------------------------------- +- G4HadronicProcess::FillTotalResult: T. Koi's fix of bug #967 - replaced +aT.GetGlobalTime() with the variable time at line #664. + 15 June 2007 Gabriele Cosmo (hadr-man-V08-03-03) ------------------------------------------------ - G4HadronicProcess: fixed memory leak with deletion of 'theIsoResult' and diff --git a/source/processes/hadronic/management/include/G4EnergyRangeManager.hh b/source/processes/hadronic/management/include/G4EnergyRangeManager.hh index d853bbc7f2..691a695b87 100644 --- a/source/processes/hadronic/management/include/G4EnergyRangeManager.hh +++ b/source/processes/hadronic/management/include/G4EnergyRangeManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4EnergyRangeManager.hh,v 1.9 2006/06/29 19:58:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Energy Range Manager // original by H.P. Wellisch diff --git a/source/processes/hadronic/management/include/G4HadLeadBias.hh b/source/processes/hadronic/management/include/G4HadLeadBias.hh index 0fc44f4b67..893aec631f 100644 --- a/source/processes/hadronic/management/include/G4HadLeadBias.hh +++ b/source/processes/hadronic/management/include/G4HadLeadBias.hh @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- #ifndef G4HadLeadBias_h diff --git a/source/processes/hadronic/management/include/G4VLeadingParticleBiasing.hh b/source/processes/hadronic/management/include/G4VLeadingParticleBiasing.hh index e9121fdff5..e572f33b68 100644 --- a/source/processes/hadronic/management/include/G4VLeadingParticleBiasing.hh +++ b/source/processes/hadronic/management/include/G4VLeadingParticleBiasing.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VLeadingParticleBiasing.hh,v 1.6 2006/06/29 19:58:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------------- #ifndef G4VLeadingParticleBiasing_h diff --git a/source/processes/hadronic/management/src/G4EnergyRangeManager.cc b/source/processes/hadronic/management/src/G4EnergyRangeManager.cc index b463cb089f..8067a036ca 100644 --- a/source/processes/hadronic/management/src/G4EnergyRangeManager.cc +++ b/source/processes/hadronic/management/src/G4EnergyRangeManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4EnergyRangeManager.cc,v 1.15 2006/06/29 19:58:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Energy Range Manager // original by H.P. Wellisch diff --git a/source/processes/hadronic/management/src/G4HadronicProcess.cc b/source/processes/hadronic/management/src/G4HadronicProcess.cc index 99ec9eb0a4..49e81e9ec6 100644 --- a/source/processes/hadronic/management/src/G4HadronicProcess.cc +++ b/source/processes/hadronic/management/src/G4HadronicProcess.cc @@ -661,7 +661,7 @@ G4HadronicProcess::FillTotalResult(G4HadFinalState * aR, const G4Track & aT) if(time<0) time = aT.GetGlobalTime(); G4Track* track = new G4Track(aR->GetSecondary(i)->GetParticle(), - aT.GetGlobalTime(), + time, aT.GetPosition()); G4double newWeight = aT.GetWeight()*aR->GetSecondary(i)->GetWeight(); diff --git a/source/processes/hadronic/models/GNUmakefile b/source/processes/hadronic/models/GNUmakefile index a28a3ac93f..7b0c7643c9 100644 --- a/source/processes/hadronic/models/GNUmakefile +++ b/source/processes/hadronic/models/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.17 2007/05/25 19:27:20 dennis Exp $ +# $Id: GNUmakefile,v 1.21 2007/11/17 18:09:54 dennis Exp $ # -------------------------------------------------------------- # GNUmakefile for hadronic models library. G.Folger 10-Dec-97 # -------------------------------------------------------------- @@ -26,6 +26,7 @@ SUBDIRS += de_excitation/ablation SUBDIRS += em_dissociation SUBDIRS += high_energy SUBDIRS += im_r_matrix +SUBDIRS += incl SUBDIRS += isotope_production SUBDIRS += leading_particle SUBDIRS += low_energy @@ -39,6 +40,8 @@ SUBDIRS += parton_string/management SUBDIRS += parton_string/qgsm SUBDIRS += pre_equilibrium/exciton_model SUBDIRS += radioactive_decay +SUBDIRS += rpg +SUBDIRS += qmd SUBDIRS += theo_high_energy SUBDIRS += util @@ -50,6 +53,8 @@ SUBLIBS += G4had_im_r_matrix SUBLIBS += G4hadronic_iso SUBLIBS += G4hadronic_leading_particle SUBLIBS += G4hadronic_LE +SUBLIBS += G4hadronic_RPG +SUBLIBS += G4hadronic_qmd SUBLIBS += G4had_mod_man SUBLIBS += G4had_neu_hp SUBLIBS += G4had_lll_fis @@ -59,6 +64,7 @@ SUBLIBS += G4had_mod_util SUBLIBS += G4hadronic_bert_cascade SUBLIBS += G4hadronic_hetcpp_evaporation SUBLIBS += G4hadronic_hetcpp_utils +SUBLIBS += G4hadronic_incl_cascade SUBLIBS += G4hadronic_body_ci SUBLIBS += G4hadronic_interface_ci SUBLIBS += G4hadronic_deex_evaporation diff --git a/source/processes/hadronic/models/binary_cascade/History b/source/processes/hadronic/models/binary_cascade/History index e0914c374f..01861c960b 100644 --- a/source/processes/hadronic/models/binary_cascade/History +++ b/source/processes/hadronic/models/binary_cascade/History @@ -13,6 +13,27 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +16-Nov-2007 Gunter Folger had-binary-V09-00-05 +- Correction in G4BinaryCascade for memory leak. + +16-Nov-2007 Gunter Folger had-binary-V09-00-04 +- remove one line of left over debug printing + +05-Nov-2007 Gunter Folger had-binary-V09-00-03 +- deactivate general debug printout in G4BinaryCascade + +05-Nov-2007 Gunter Folger had-binary-V09-00-02 +- Fixes for propagate: particles can decay outside nucleus, correct counting + for late particles + +31-Oct-2007 Gunter Folger had-binary-V09-00-01 +- G4BinaryLightIon... adapt to changes in BIC +- Work around problem with very low energy pion (Coulomb barrier, nuclear mass + difference) + +18-Oct-2007 Gunter Folger had-binary-V09-00-00 +- Collect many changes for propagate interface. + Fix for pion incident at low energy: cannot go to deexitation directly 18-May-2007 Gunter Folger had-binary-V08-03-00 - G4BinaryLightIonReaction: Protect against divide by 0 when energy momentum diff --git a/source/processes/hadronic/models/binary_cascade/include/G4BCLateParticle.hh b/source/processes/hadronic/models/binary_cascade/include/G4BCLateParticle.hh new file mode 100644 index 0000000000..62f11cc780 --- /dev/null +++ b/source/processes/hadronic/models/binary_cascade/include/G4BCLateParticle.hh @@ -0,0 +1,81 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#ifndef G4BCLateParticle_h +#define G4BCLateParticle_h 1 +#include "G4BCAction.hh" +#include "G4CollisionInitialState.hh" +#include "G4KineticTrack.hh" +#include "G4KineticTrackVector.hh" +#include + +//#define debug_BCLateParticle 1 + +class G4BCLateParticle : public G4BCAction +{ + public: + + G4BCLateParticle(){} + virtual ~G4BCLateParticle(){} + virtual const std::vector & + GetCollisions(G4KineticTrack * aProjectile, + std::vector & , + G4double theCurrentTime) + { + theColl.clear(); + G4double ctime=std::max(0.,aProjectile->GetFormationTime()) + theCurrentTime; + + G4KineticTrackVector noTarget; + G4CollisionInitialState * aLate = + new G4CollisionInitialState(ctime, + aProjectile, noTarget, this); + theColl.push_back(aLate); + +#ifdef debug_BCLateParticle + G4cout << "Particle starting late " << aProjectile << " " + << aProjectile->GetDefinition()->GetParticleName() << " " + << 1/MeV*aProjectile->Get4Momentum() << " " + << 1/fermi*aProjectile->GetPosition() << " " + << aProjectile->GetFormationTime() + << G4endl; +#endif + + return theColl; + } + + virtual G4KineticTrackVector * GetFinalState(G4KineticTrack * aProjectile, + std::vector & ) + { + G4KineticTrackVector * result = new G4KineticTrackVector; + G4KineticTrack * lateParticle=new G4KineticTrack(*aProjectile); + result->push_back(lateParticle); + return result; + } + + private: + std::vector theColl; +}; + +#endif diff --git a/source/processes/hadronic/models/binary_cascade/include/G4BinaryCascade.hh b/source/processes/hadronic/models/binary_cascade/include/G4BinaryCascade.hh index 430d8b4e33..586e011fa3 100644 --- a/source/processes/hadronic/models/binary_cascade/include/G4BinaryCascade.hh +++ b/source/processes/hadronic/models/binary_cascade/include/G4BinaryCascade.hh @@ -52,6 +52,7 @@ #include "G4LorentzRotation.hh" #include "G4BCDecay.hh" +#include "G4BCLateParticle.hh" #include "G4BCAction.hh" class G4CollisionManager; @@ -75,8 +76,8 @@ public: G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& theNucleus); - virtual G4ReactionProductVector * Propagate(G4KineticTrackVector * secondaries, - G4V3DNucleus * nucleus); + virtual G4ReactionProductVector * Propagate(G4KineticTrackVector *, + G4V3DNucleus *); private: @@ -92,14 +93,15 @@ private: } void PrintWelcomeMessage(); void BuildTargetList(); - void FindCollisions(G4KineticTrackVector * secondaries); - void FindDecayCollision(G4KineticTrack * secondary); - G4bool ApplyCollision(G4CollisionInitialState * collision); + void FindCollisions(G4KineticTrackVector *); + void FindDecayCollision(G4KineticTrack *); + void FindLateParticleCollision(G4KineticTrack *); + G4bool ApplyCollision(G4CollisionInitialState *); G4bool Capture(G4bool verbose=false); G4bool Absorb(); - G4bool CheckPauliPrinciple(G4KineticTrackVector * products); + G4bool CheckPauliPrinciple(G4KineticTrackVector *); G4double GetExcitationEnergy(); - G4bool CheckDecay(G4KineticTrackVector * products); + G4bool CheckDecay(G4KineticTrackVector *); void CorrectFinalPandE(); void UpdateTracksAndCollisions(G4KineticTrackVector * oldSecondaries, G4KineticTrackVector * oldTarget, @@ -111,8 +113,8 @@ private: void StepParticlesOut(); G4LorentzVector GetFinal4Momentum(); G4LorentzVector GetFinalNucleusMomentum(); - G4ReactionProductVector * Propagate1H1(G4KineticTrackVector * secondaries, - G4V3DNucleus * nucleus); + G4ReactionProductVector * Propagate1H1(G4KineticTrackVector *, + G4V3DNucleus *); G4double GetIonMass(G4int Z, G4int A); // utility methods @@ -122,7 +124,9 @@ private: // for debugging purpose void PrintKTVector(G4KineticTrackVector * ktv, std::string comment=std::string("")); - + void PrintKTVector(G4KineticTrack* kt, std::string comment=std::string("")); + void DebugApplyCollision(G4CollisionInitialState * collision, + G4KineticTrackVector *products); private: G4KineticTrackVector theProjectileList; G4KineticTrackVector theTargetList; @@ -135,6 +139,7 @@ private: std::vector theImR; G4BCDecay * theDecay; + G4BCLateParticle * theLateParticle; G4VFieldPropagation * thePropagator; G4double theCurrentTime; G4double theBCminP; diff --git a/source/processes/hadronic/models/binary_cascade/src/G4BinaryCascade.cc b/source/processes/hadronic/models/binary_cascade/src/G4BinaryCascade.cc index 5655e6d5c0..5d5e6f96cc 100644 --- a/source/processes/hadronic/models/binary_cascade/src/G4BinaryCascade.cc +++ b/source/processes/hadronic/models/binary_cascade/src/G4BinaryCascade.cc @@ -72,14 +72,15 @@ //#define debug_BIC_CorrectFinalPandE 1 //#define debug_BIC_Propagate 1 //#define debug_BIC_Propagate_Excitation 1 +//#define debug_BIC_Propagate_Collisions 1 //#define debug_BIC_Propagate_finals 1 //#define debug_BIC_DoTimeStep 1 //#define debug_BIC_CorrectBarionsOnBoundary 1 //#define debug_BIC_GetExcitationEnergy 1 //#define debug_BIC_FinalNucleusMomentum 1 //#define debug_BIC_FindFragments 1 - - +//#define debug_BIC_BuildTargetList 1 +//#define debug_BIC_FindCollision 1 // C O N S T R U C T O R S A N D D E S T R U C T O R S // @@ -92,15 +93,19 @@ G4BinaryCascade::G4BinaryCascade() : G4VIntraNuclearTransportModel() theCollisionMgr = new G4CollisionManager; theDecay=new G4BCDecay; + theLateParticle= new G4BCLateParticle; theImR.push_back(theDecay); - theImR.push_back(new G4Scatterer); - theImR.push_back(new G4MesonAbsorption); + G4Scatterer * aSc=new G4Scatterer; + theImR.push_back(aSc); + G4MesonAbsorption * aAb=new G4MesonAbsorption; + theImR.push_back(aAb); + thePropagator = new G4RKPropagation; theCurrentTime = 0.; theBCminP = 45*MeV; theCutOnP = 90*MeV; theCutOnPAbsorb= 0*MeV; -// G4ExcitationHandler * + theExcitationHandler = new G4ExcitationHandler; SetDeExcitation(new G4PreCompoundModel(theExcitationHandler)); SetMinEnergy(0.0*GeV); @@ -126,6 +131,7 @@ G4BinaryCascade::~G4BinaryCascade() delete thePropagator; delete theCollisionMgr; std::for_each(theImR.begin(), theImR.end(), Delete()); + delete theLateParticle; delete theExcitationHandler; } @@ -146,7 +152,10 @@ G4HadFinalState * G4BinaryCascade::ApplyYourself(const G4HadProjectile & aTrack, eventcounter++; if(getenv("BCDEBUG") ) G4cerr << " ######### Binary Cascade Reaction number starts ######### "<(aTrack.GetDefinition()); + + if(initial4Momentum.e()-initial4Momentum.m()ApplyYourself(aTrack, aNucleus); } @@ -154,13 +163,9 @@ G4HadFinalState * G4BinaryCascade::ApplyYourself(const G4HadProjectile & aTrack, theParticleChange.Clear(); // initialize the G4V3DNucleus from G4Nucleus the3DNucleus = new G4Fancy3DNucleus; - the3DNucleus->Init(aNucleus.GetN(), aNucleus.GetZ()); - - thePropagator->Init(the3DNucleus); // Build a KineticTrackVector with the G4Track - G4KineticTrackVector * secondaries = new G4KineticTrackVector; - G4ParticleDefinition * definition = const_cast(aTrack.GetDefinition()); + G4KineticTrackVector * secondaries;// = new G4KineticTrackVector; G4ThreeVector initialPosition(0., 0., 0.); // will be set later if(!getenv("I_Am_G4BinaryCascade_Developer") ) @@ -181,53 +186,50 @@ G4HadFinalState * G4BinaryCascade::ApplyYourself(const G4HadProjectile & aTrack, thePrimaryType = definition; thePrimaryEscape = false; -// try untill an interaction will happen +// try until an interaction will happen G4ReactionProductVector * products = 0; - G4double radius = the3DNucleus->GetOuterRadius()+3*fermi; G4int interactionCounter = 0; do { // reset status that could be changed in previous loop event theCollisionMgr->ClearAndDestroy(); - ClearAndDestroy(&theTargetList); // clear and rebuild theTargetList - the3DNucleus->Init(aNucleus.GetN(), aNucleus.GetZ()); - BuildTargetList(); - G4KineticTrack * kt = new G4KineticTrack(definition, 0., initialPosition, - initial4Momentum); -// Note: secondaries has been cleared by Propagate() in the previous loop event - secondaries->push_back(kt); - while(theCollisionMgr->Entries() == 0) // until we FIND a collision... - { - theCurrentTime=0; - initialPosition=GetSpherePoint(1.1*radius, initial4Momentum); // get random position - kt->SetPosition(initialPosition); // kt is in secondaries!! - kt->SetState(G4KineticTrack::outside); - FindCollisions(secondaries); - } - if(products != NULL) + if(products != 0) { // free memory from previous loop event ClearAndDestroy(products); delete products; + products=0; } - products = Propagate(secondaries, the3DNucleus); -// --------- debug -// untill Propagate will be able to return some product... -// if(1) -// return &theParticleChange; -// --------- end debug + the3DNucleus->Init(aNucleus.GetN(), aNucleus.GetZ()); + thePropagator->Init(the3DNucleus); + // GF Leak on kt??? but where to delete? + G4KineticTrack * kt;// = new G4KineticTrack(definition, 0., initialPosition, initial4Momentum); + do // sample impact parameter until collisions are found + { + theCurrentTime=0; + G4double radius = the3DNucleus->GetOuterRadius()+3*fermi; + initialPosition=GetSpherePoint(1.1*radius, initial4Momentum); // get random position + kt = new G4KineticTrack(definition, 0., initialPosition, initial4Momentum); + kt->SetState(G4KineticTrack::outside); + // secondaries has been cleared by Propagate() in the previous loop event + secondaries= new G4KineticTrackVector; + secondaries->push_back(kt); + products = Propagate(secondaries, the3DNucleus); + } while(! products ); // until we FIND a collision... + if(++interactionCounter>99) break; } while(products->size() == 0); // ...untill we find an ALLOWED collision if(products->size()==0) { + if(getenv("BCDEBUG") ) G4cerr << " ######### Binary Cascade Reaction number void ######### "<size() << G4endl; +// G4cout << "BIC Applyyourself: number of products " << products->size() << G4endl; // Fill the G4ParticleChange * with products theParticleChange.SetStatusChange(stopAndKill); @@ -244,11 +246,6 @@ G4HadFinalState * G4BinaryCascade::ApplyYourself(const G4HadProjectile & aTrack, new G4DynamicParticle((*iter)->GetDefinition(), (*iter)->GetTotalEnergy(), (*iter)->GetMomentum()); - if(getenv("BCDEBUG") ) - { - if(std::abs(aNew->GetDefinition()->GetPDGEncoding()) >100 - && std::abs(aNew->GetDefinition()->GetPDGEncoding()) < 300) G4cout << "Pion info "<GetDefinition()->GetPDGEncoding() <<" "<GetKineticEnergy()<::iterator iter; + + // *GF* FIXME ? in propagate mode this test is wrong! Could be in Apply.... if(nucleus->GetMassNumber() == 1) // 1H1 is special case { + #ifdef debug_BIC_Propagate + G4cout << " special case 1H1.... " << G4endl; + #endif return Propagate1H1(secondaries,nucleus); } - for(iter = secondaries->begin(); iter != secondaries->end(); ++iter) - { - theSecondaryList.push_back(*iter); - theProjectileList.push_back(new G4KineticTrack(*(*iter))); - } - secondaries->clear(); // Don't leave "G4KineticTrack *"s in two vectors + BuildTargetList(); + + #ifdef debug_BIC_GetExcitationEnergy + G4cout << "ExcitationEnergy0 " << GetExcitationEnergy() << G4endl; + #endif thePropagator->Init(the3DNucleus); -// if called stand alone, build theTargetList and find first collisions + theCutOnP=90*MeV; if(nucleus->GetMass()>30) theCutOnP = 70*MeV; if(nucleus->GetMass()>60) theCutOnP = 50*MeV; if(nucleus->GetMass()>120) theCutOnP = 45*MeV; - if(theCollisionMgr->Entries() == 0) + + for(iter = secondaries->begin(); iter != secondaries->end(); ++iter) { - the3DNucleus = nucleus; - ClearAndDestroy(&theTargetList); - BuildTargetList(); - FindCollisions(&theSecondaryList); +// G4cout << " Formation time : " << (*iter)->GetDefinition()->GetParticleName() << " " +// << (*iter)->GetFormationTime() << G4endl; + if( (*iter)->GetState() == G4KineticTrack::undefined ) + { + FindLateParticleCollision(*iter); + } else + { + theSecondaryList.push_back(*iter); +#ifdef debug_BIC_Propagate + G4cout << " Adding initial secondary " << *iter + << " time" << (*iter)->GetFormationTime() + << ", state " << (*iter)->GetState() << G4endl; +#endif + } +// theCollisionMgr->Print(); + theProjectileList.push_back(new G4KineticTrack(*(*iter))); + } + FindCollisions(&theSecondaryList); + secondaries->clear(); // Don't leave "G4KineticTrack *"s in two vectors + delete secondaries; + +// if called stand alone, build theTargetList and find first collisions + + if(theCollisionMgr->Entries() == 0 ) //late particles ALWAYS create Entries + { + //G4cout << " no collsions -> return 0" << G4endl; + delete products; + return 0; } -// thePropagator->Init(the3DNucleus); - // end of initialization: do the job now -// loop untill there are collisions +// loop untill there are no more collisions G4bool haveProducts = false; @@ -358,7 +382,11 @@ G4ReactionProductVector * G4BinaryCascade::Propagate( { G4CollisionInitialState * nextCollision = theCollisionMgr->GetNextCollision(); - +#ifdef debug_BIC_Propagate_Collisions + G4cout << " NextCollision * , Time, curtime = " << nextCollision << " " + <GetCollisionTime()<< " " << + theCurrentTime<< G4endl; +#endif debug.push_back("======> test 1"); debug.dump(); if (!DoTimeStep(nextCollision->GetCollisionTime()-theCurrentTime) ) { @@ -373,13 +401,9 @@ G4ReactionProductVector * G4BinaryCascade::Propagate( if( nextCollision ) { -// GF for testing only, must be removed otherwise! -// theCollisionMgr->RemoveCollision(nextCollision); debug.push_back("======> test 3"); debug.dump(); if (ApplyCollision(nextCollision)) -// testing if ( true ) { -// apply the collision //G4cerr << "ApplyCollision sucess " << G4endl; haveProducts = true; collisionCount++; @@ -394,8 +418,9 @@ G4ReactionProductVector * G4BinaryCascade::Propagate( // G4cerr <<"post-post- DoTimeStep 1"< #### through the first loop"); debug.dump(); // No more collisions: absorb, capture and propagate the secondaries out of the nucleus if(Absorb()) { haveProducts = true; @@ -409,6 +434,7 @@ G4ReactionProductVector * G4BinaryCascade::Propagate( if(!haveProducts) // no collisions happened. Return an empty vector. { + //G4cout << " no products return 0" << G4endl; return products; } @@ -505,6 +531,7 @@ G4ReactionProductVector * G4BinaryCascade::Propagate( //#endif } ClearAndDestroy(products); + //G4cout << " negative Excitation E return empty products " << products << G4endl; return products; // return empty products } @@ -680,6 +707,7 @@ G4ReactionProductVector * G4BinaryCascade::Propagate( // G4cerr <<"mon - end of event "<.5) G4cout << " Final nuclmom/mass " << Nucl_mom << " " << Nucl_mom.mag() << " (A,Z)=("<< finalA <<","<GetMomentum(); // G4cout << "Nucleus " << pos.mag()/fermi << " " << mom.e() << G4endl; theInitial4Mom += mom; -// In the kinetic Model, the potential inside the nucleus is taken into account, and nucleons -// are on mass shell. +// the potential inside the nucleus is taken into account, and nucleons are on mass shell. mom.setE( std::sqrt( mom.vect().mag2() + sqr(definition->GetPDGMass()) ) ); G4KineticTrack * kt = new G4KineticTrack(definition, 0., pos, mom); kt->SetState(G4KineticTrack::inside); @@ -811,7 +840,10 @@ void G4BinaryCascade::BuildTargetList() theTargetList.push_back(kt); ++currentA; if (definition->GetPDGCharge() > .5 ) ++currentZ; - } + } +#ifdef debug_BIC_BuildTargetList + else { G4cout << "nucleon is hit" << nucleon << G4endl;} +#endif } massInNucleus = 0; if(currentZ>.5) @@ -822,13 +854,10 @@ void G4BinaryCascade::BuildTargetList() massInNucleus = currentA * G4Neutron::Neutron()->GetPDGMass(); } else { - //G4cout << "G4BinaryCascade::BuildTargetList(): Warning - invalid nucleus (A,Z)=(" - // << currentA << "," << currentZ << ")" << G4endl; + G4cerr << "G4BinaryCascade::BuildTargetList(): Fatal Error - invalid nucleus (A,Z)=(" + << currentA << "," << currentZ << ")" << G4endl; + throw G4HadronicException(__FILE__, __LINE__, "G4BinaryCasacde::BuildTargetList()"); } - //G4cout << "G4BinaryCascade::BuildTargetList(): nucleus (A,Z)=(" - // << currentA << "," << currentZ << ") mass: " << massInNucleus << - // ", theInitial4Mom " << theInitial4Mom << G4endl; - currentInitialEnergy= theInitial4Mom.e(); G4KineticTrackVector::iterator i; for(i = theProjectileList.begin() ; i != theProjectileList.end(); ++i) @@ -836,6 +865,12 @@ void G4BinaryCascade::BuildTargetList() currentInitialEnergy+= (*i)->GetTrackingMomentum().e(); } +#ifdef debug_BIC_BuildTargetList + G4cout << "G4BinaryCascade::BuildTargetList(): nucleus (A,Z)=(" + << currentA << "," << currentZ << ") mass: " << massInNucleus << + ", theInitial4Mom " << theInitial4Mom << + ", currentInitialEnergy " << currentInitialEnergy << G4endl; +#endif } @@ -847,18 +882,24 @@ void G4BinaryCascade::FindCollisions(G4KineticTrackVector * secondaries) for(std::vector::iterator i = secondaries->begin(); i != secondaries->end(); ++i) { +#ifdef debug_G4BinaryCascade if ( (*i)->GetTrackingMomentum().mag2() < -1.*eV ) { G4cout << "G4BinaryCascade::FindCollisions(): negative m2:" << (*i)->GetTrackingMomentum().mag2() << G4endl; - } -for(std::vector::iterator j = theImR.begin(); + } +#endif + + for(std::vector::iterator j = theImR.begin(); j!=theImR.end(); j++) { +// G4cout << "G4BinaryCascade::FindCollisions: at action " << *j << G4endl; const std::vector & aCandList = (*j)->GetCollisions(*i, theTargetList, theCurrentTime); for(size_t count=0; countAddCollision(aCandList[count]); +// G4cout << "====================== New Collision ================="<Print(); } } } @@ -880,22 +921,74 @@ void G4BinaryCascade::FindDecayCollision(G4KineticTrack * secondary) } } +//---------------------------------------------------------------------------- +void G4BinaryCascade::FindLateParticleCollision(G4KineticTrack * secondary) +//---------------------------------------------------------------------------- +{ + if ( secondary->GetTrackingMomentum().mag2() < -1.*eV ) + { + G4cout << "G4BinaryCascade::FindDecayCollision(): negative m2:" << secondary->GetTrackingMomentum().mag2() << G4endl; + } + + G4double tin=0., tout=0.; + if (((G4RKPropagation*)thePropagator)->GetSphereIntersectionTimes(secondary,tin,tout)) + { + if ( tin > 0 ) + { + secondary->SetState(G4KineticTrack::outside); + } else if ( tout > 0 ) + { + secondary->SetState(G4KineticTrack::inside); + } else { + //G4cout << "G4BC set miss , tin, tout " << tin << " , " << tout <SetState(G4KineticTrack::miss_nucleus); + } + } else { + secondary->SetState(G4KineticTrack::miss_nucleus); + //G4cout << "G4BC set miss ,no intersect tin, tout " << tin << " , " << tout <GetDefinition()->GetParticleName() << " " + << secondary->Get4Momentum() + << " times " << tin << " " << tout << " " + << secondary->GetState() << G4endl; +#endif + + const std::vector & aCandList + = theLateParticle->GetCollisions(secondary, theTargetList, theCurrentTime); + for(size_t count=0; countAddCollision(aCandList[count]); + } +} + //---------------------------------------------------------------------------- G4bool G4BinaryCascade::ApplyCollision(G4CollisionInitialState * collision) //---------------------------------------------------------------------------- { G4ping debug("debug_ApplyCollision"); - //G4cerr << "G4BinaryCascade::ApplyCollision start"<Print(); +#endif G4KineticTrack * primary = collision->GetPrimary(); - if(primary->GetState() != G4KineticTrack::inside) + G4KineticTrackVector target_collection=collision->GetTargetCollection(); + G4bool haveTarget=target_collection.size()>0; + if( haveTarget && (primary->GetState() != G4KineticTrack::inside) ) { -#ifdef debug_BinaryCascade - G4cout << "G4BinaryCasacde::ApplyCollision(): StateError (ignored)" << primary << G4endl; +#ifdef debug_G4BinaryCascade + G4cout << "G4BinaryCasacde::ApplyCollision(): StateError " << primary << G4endl; G4KineticTrackVector debug; debug.push_back(primary); - PrintKTVector(&debug,std::string("primay- target")); - throw G4HadronicException(__FILE__, __LINE__, "G4BinaryCasacde::ApplyCollision()"); + PrintKTVector(&debug,std::string("primay- ...")); + PrintKTVector(&target_collection,std::string("... targets")); +//*GF* throw G4HadronicException(__FILE__, __LINE__, "G4BinaryCasacde::ApplyCollision()"); #else return false; #endif @@ -904,38 +997,81 @@ G4bool G4BinaryCascade::ApplyCollision(G4CollisionInitialState * collision) G4RKPropagation * RKprop=(G4RKPropagation *)thePropagator; #ifdef debug_BIC_ApplyCollision -// G4cout << "ApplyCollisions : projte 4mom " << primary->GetTrackingMomentum()<< G4endl; + G4cout << "ApplyCollisions : projte 4mom " << primary->GetTrackingMomentum()<< G4endl; #endif - G4int initialBaryon = primary->GetDefinition()->GetBaryonNumber(); + G4int initialBaryon(0); G4int initialCharge(0); - initialCharge+=G4lrint(primary->GetDefinition()->GetPDGCharge()); + G4double initial_Efermi(0); + G4LorentzVector mom4Primary(0); + + if (primary->GetState() == G4KineticTrack::inside) + { + initialBaryon = primary->GetDefinition()->GetBaryonNumber(); + initialCharge = G4lrint(primary->GetDefinition()->GetPDGCharge()); + } // for primary resonances, subtract neutron ( = proton) field ( ie. add std::abs(field)) G4int PDGcode=std::abs(primary->GetDefinition()->GetPDGEncoding()); - G4LorentzVector mom4Primary=primary->Get4Momentum(); - G4double initial_Efermi=RKprop->GetField(primary->GetDefinition()->GetPDGEncoding(),primary->GetPosition()); + mom4Primary=primary->Get4Momentum(); + initial_Efermi=RKprop->GetField(primary->GetDefinition()->GetPDGEncoding(),primary->GetPosition()); if ( PDGcode > 1000 && PDGcode != 2112 && PDGcode != 2212 ) { initial_Efermi = RKprop->GetField(G4Neutron::Neutron()->GetPDGEncoding(),primary->GetPosition()); primary->Update4Momentum(mom4Primary.e() - initial_Efermi); } - G4KineticTrackVector target_collection=collision->GetTargetCollection(); std::vector::iterator titer; for ( titer=target_collection.begin() ; titer!=target_collection.end(); ++titer) { - initial_Efermi+= RKprop->GetField((*titer)->GetDefinition()->GetPDGEncoding(),(*titer)->GetPosition()); + G4ParticleDefinition * aDef=(*titer)->GetDefinition(); + G4int aCode=aDef->GetPDGEncoding(); + G4ThreeVector aPos=(*titer)->GetPosition(); + initial_Efermi+= RKprop->GetField(aCode, aPos); +// initial_Efermi+= RKprop->GetField((*titer)->GetDefinition()->GetPDGEncoding(),(*titer)->GetPosition()); } +//**************************************** G4KineticTrackVector * products=0; products = collision->GetFinalState(); - + + #ifdef debug_BIC_ApplyCollision + if ( !products ) + { + G4cout << " Collision type: "<< typeid(*collision->GetGenerator()).name() + << ", with NO products! " <GetPrimary()->GetDefinition()->GetParticleName()<GetPrimary()); + for(size_t it=0; itGetTargetCollection().size(); it++) + { + G4cout << "targ: " + <GetTargetCollection()[it]->GetDefinition()->GetParticleName()<GetTargetCollection(),std::string(" Target particles")); + } + #endif + G4bool lateParticleCollision= (!haveTarget) && products && products->size() == 1; + // if ( lateParticleCollision ) G4cout << " Added late particle--------------------------"<Set4Momentum(mom4Primary); + + G4int lateBaryon(0), lateCharge(0); + + if ( lateParticleCollision ) + { // for late particles, reset charges + //G4cout << "lateP, initial B C state " << initialBaryon << " " + // << initialCharge<< " " << primary->GetState() << " "<< primary->GetDefinition()->GetParticleName()<< G4endl; + lateBaryon = initialBaryon; + lateCharge = initialCharge; + initialBaryon=initialCharge=0; + } + initialBaryon += collision->GetTargetBaryonNumber(); initialCharge+=G4lrint(collision->GetTargetCharge()); - if(!products || products->size()==0 || !CheckPauliPrinciple(products)) { #ifdef debug_BIC_ApplyCollision @@ -943,7 +1079,7 @@ G4bool G4BinaryCascade::ApplyCollision(G4CollisionInitialState * collision) G4cerr << "G4BinaryCascade::ApplyCollision blocked"<::iterator i =products->begin(); i != products->end(); i++) { G4int PDGcode=std::abs((*i)->GetDefinition()->GetPDGEncoding()); +// G4cout << " PDGcode, state " << PDGcode << " " << (*i)->GetState()<GetField(PDGcode,(*i)->GetPosition()); if ( PDGcode > 1000 && PDGcode != 2112 && PDGcode != 2212 ) { @@ -968,6 +1105,7 @@ G4bool G4BinaryCascade::ApplyCollision(G4CollisionInitialState * collision) G4double mass2=mom.mag2(); G4double newEnergy=mom.e() + delta_Fermi; G4double newEnergy2= newEnergy*newEnergy; + //G4cout << "mom = " << mom <<" newE " << newEnergy<< G4endl; if ( newEnergy2 < mass2 ) { ClearAndDestroy(products); @@ -981,12 +1119,122 @@ G4bool G4BinaryCascade::ApplyCollision(G4CollisionInitialState * collision) } } - +#ifdef debug_BIC_ApplyCollisionXX + DebugApplyCollsion(collision, products); +#endif + G4int finalBaryon(0); + G4int finalCharge(0); + G4KineticTrackVector toFinalState; + for(std::vector::iterator i =products->begin(); i != products->end(); i++) + { + if ( ! lateParticleCollision ) + { + (*i)->SetState(primary->GetState()); // secondaries are created inside nucleus, except for decay in propagate + finalBaryon+=(*i)->GetDefinition()->GetBaryonNumber(); + finalCharge+=G4lrint((*i)->GetDefinition()->GetPDGCharge()); + } else { + G4double tin=0., tout=0.; + if (((G4RKPropagation*)thePropagator)->GetSphereIntersectionTimes((*i),tin,tout)) + { + if ( tin > 0 ) + { + (*i)->SetState(G4KineticTrack::outside); + } + else if ( tout > 0 ) + { + (*i)->SetState(G4KineticTrack::inside); + finalBaryon+=(*i)->GetDefinition()->GetBaryonNumber(); + finalCharge+=G4lrint((*i)->GetDefinition()->GetPDGCharge()); + } + else + { + (*i)->SetState(G4KineticTrack::gone_out); + toFinalState.push_back((*i)); + } + } else + { + (*i)->SetState(G4KineticTrack::miss_nucleus); + //G4cout << " G4BC - miss -late Part- no intersection found " << G4endl; + toFinalState.push_back((*i)); + } + +// G4cout << " PDGcode, state " << (*i)->GetDefinition()->GetPDGEncoding() << " " << (*i)->GetState()<::iterator iter1, iter2; + for(iter1 = toFinalState.begin(); iter1 != toFinalState.end(); + ++iter1) + { + iter2 = std::find(products->begin(), products->end(), + *iter1); + if ( iter2 != products->end() ) products->erase(iter2); + } + theCollisionMgr->RemoveTracksCollisions(&toFinalState); + } + + //G4cout << " currentA, Z be4: " << currentA << " " << currentZ << G4endl; + currentA += finalBaryon-initialBaryon; + currentZ += finalCharge-initialCharge; + //G4cout << " currentA, Z aft: " << currentA << " " << currentZ << G4endl; + + G4KineticTrackVector oldSecondaries; + if (primary) + { + oldSecondaries.push_back(primary); + primary->Hit(); + } + +#ifdef debug_G4BinaryCascade + if ( (finalBaryon-initialBaryon-lateBaryon) != 0 || (finalCharge-initialCharge-lateCharge) != 0 ) + { + G4cout << "G4BinaryCascade: Error in Balancing: " << G4endl; + G4cout << "initial/final baryon number, initial/final Charge " + << initialBaryon <<" "<< finalBaryon <<" " + << initialCharge <<" "<< finalCharge <<" " + << " in Collision type: "<< typeid(*collision->GetGenerator()).name() + << ", with number of products: "<< products->size() <GetPrimary()->GetDefinition()->GetParticleName()<GetTargetCollection().size(); it++) + { + G4cout << "targ: " + <GetTargetCollection()[it]->GetDefinition()->GetParticleName()<GetTargetCollection(),std::string(" Target particles")); + G4cout << G4endl<GetTargetCollection(); + for(size_t ii=0; ii< oldTarget.size(); ii++) + { + oldTarget[ii]->Hit(); + } + + debug.push_back("=======> we have hit nucleons <======="); + + UpdateTracksAndCollisions(&oldSecondaries, &oldTarget, products); + std::for_each(oldSecondaries.begin(), oldSecondaries.end(), Delete()); + std::for_each(oldTarget.begin(), oldTarget.end(), Delete()); + + delete products; + return true; +} + +//---------------------------------------------------------------------------- +void G4BinaryCascade::DebugApplyCollision(G4CollisionInitialState * collision, + G4KineticTrackVector * products) +{ +//**-------------------------begin debug Block--------------------------- + + G4RKPropagation * RKprop=(G4RKPropagation *)thePropagator; -// debug block -#ifdef debug_BIC_ApplyCollision G4KineticTrackVector debug1; debug1.push_back(collision->GetPrimary()); PrintKTVector(&debug1,std::string(" Primary particle")); @@ -1027,24 +1275,32 @@ G4bool G4BinaryCascade::ApplyCollision(G4CollisionInitialState * collision) G4double final(0); G4double mass_out(0); G4int product_barions(0); - for ( unsigned int it=0; it < products->size(); it++) + if ( products ) { - kt=(*products)[it]; - final += kt->Get4Momentum().e(); - final += RKprop->GetField(kt->GetDefinition()->GetPDGEncoding(),kt->GetPosition()); - final += RKprop->GetBarrier(kt->GetDefinition()->GetPDGEncoding()); - if ( kt->GetDefinition()->GetBaryonNumber()==1 ) product_barions++; - mass_out += kt->GetDefinition()->GetPDGMass(); - G4cout << "sec. def/E/field/Barr/Sum " << kt->GetDefinition()->GetPDGEncoding() - << " " << kt->Get4Momentum().e() - << " " << RKprop->GetField(kt->GetDefinition()->GetPDGEncoding(),kt->GetPosition()) - << " " << RKprop->GetBarrier(kt->GetDefinition()->GetPDGEncoding()) - << " " << final << G4endl;; + for ( unsigned int it=0; it < products->size(); it++) + { + kt=(*products)[it]; + final += kt->Get4Momentum().e(); + final += RKprop->GetField(kt->GetDefinition()->GetPDGEncoding(),kt->GetPosition()); + final += RKprop->GetBarrier(kt->GetDefinition()->GetPDGEncoding()); + if ( kt->GetDefinition()->GetBaryonNumber()==1 ) product_barions++; + mass_out += kt->GetDefinition()->GetPDGMass(); + G4cout << "sec. def/E/field/Barr/Sum " << kt->GetDefinition()->GetPDGEncoding() + << " " << kt->Get4Momentum().e() + << " " << RKprop->GetField(kt->GetDefinition()->GetPDGEncoding(),kt->GetPosition()) + << " " << RKprop->GetBarrier(kt->GetDefinition()->GetPDGEncoding()) + << " " << final << G4endl;; + } } - G4int finalA = currentA - product_barions; - G4int finalZ = currentZ - GetTotalCharge(*products); + G4int finalA = currentA; + G4int finalZ = currentZ; + if ( products ) + { + finalA -= product_barions; + finalZ -= GetTotalCharge(*products); + } G4double delta = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(currentZ,currentA) - (G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass(finalZ,finalA) + mass_out); @@ -1058,61 +1314,11 @@ G4bool G4BinaryCascade::ApplyCollision(G4CollisionInitialState * collision) << currentInitialEnergy - final - mass_out << G4endl; currentInitialEnergy-=final; -#endif - G4int finalBaryon(0); - G4int finalCharge(0); - for(size_t ig=0;igsize();ig++) - { - finalBaryon+=products->operator[](ig)->GetDefinition()->GetBaryonNumber(); - finalCharge+=G4lrint(products->operator[](ig)->GetDefinition()->GetPDGCharge()); -// secondaries are created inside nucleus - products->operator[](ig)->SetState(G4KineticTrack::inside); - } +//**-------------------------end debug Block--------------------------- - currentA += finalBaryon-initialBaryon; - currentZ += finalCharge-initialCharge; - - G4KineticTrackVector oldSecondaries; - oldSecondaries.push_back(primary); -#ifdef debug_G4BinaryCascade - if ( (finalBaryon-initialBaryon) != 0 || (finalCharge-initialCharge) != 0 ) - { - G4cout << "G4BinaryCascade: Error in Balancing: " << G4endl; - G4cout << "initial/final baryon number, initial/final Charge " - << initialBaryon <<" "<< finalBaryon <<" " - << initialCharge <<" "<< finalCharge <<" " - << " in Collision type: "<< typeid(*collision->GetGenerator()).name() - << ", with number of products: "<< products->size() <GetPrimary()->GetDefinition()->GetParticleName()<GetTargetCollection().size(); it++) - { - G4cout << "targ: " - <GetTargetCollection()[it]->GetDefinition()->GetParticleName()<GetTargetCollection(),std::string(" Target particles")); - G4cout << G4endl<GetTargetCollection(); - primary->Hit(); - for(size_t ii=0; ii< oldTarget.size(); ii++) - { - oldTarget[ii]->Hit(); - } - - debug.push_back("=======> we have hit nucleons <======="); - - UpdateTracksAndCollisions(&oldSecondaries, &oldTarget, products); - std::for_each(oldSecondaries.begin(), oldSecondaries.end(), Delete()); - std::for_each(oldTarget.begin(), oldTarget.end(), Delete()); - - delete products; - return true; } - +//---------------------------------------------------------------------------- //---------------------------------------------------------------------------- G4bool G4BinaryCascade::Absorb() @@ -1124,6 +1330,7 @@ G4bool G4BinaryCascade::Absorb() // Build the vector of G4KineticTracks that must be absorbed G4KineticTrackVector absorbList; std::vector::iterator iter; +// PrintKTVector(&theSecondaryList, " testing for Absorb" ); for(iter = theSecondaryList.begin(); iter != theSecondaryList.end(); ++iter) { @@ -1376,6 +1583,8 @@ void G4BinaryCascade::StepParticlesOut() { nextCollision = theCollisionMgr->GetNextCollision(); timeToCollision = nextCollision->GetCollisionTime()-theCurrentTime; + G4cout << " NextCollision * , Time= " << nextCollision << " " + < minTimeStep ) { @@ -1464,15 +1673,11 @@ void G4BinaryCascade::CorrectFinalPandE() // { #ifdef debug_BIC_CorrectFinalPandE - G4cerr << " -CorrectFinalPandE 1" << G4endl; + G4cerr << "BIC: -CorrectFinalPandE called" << G4endl; #endif if ( theFinalState.size() == 0 ) return; -#ifdef debug_BIC_CorrectFinalPandE - G4cerr << " -CorrectFinalPandE 2" << G4endl; -#endif - G4KineticTrackVector::iterator i; G4LorentzVector pNucleus=GetFinal4Momentum(); if ( pNucleus.e() == 0 ) return; // check against explicit 0 from GetNucleus4Momentum() @@ -1588,7 +1793,7 @@ void G4BinaryCascade::UpdateTracksAndCollisions( { iter2 = std::find(theSecondaryList.begin(), theSecondaryList.end(), *iter1); - theSecondaryList.erase(iter2); + if ( iter2 != theSecondaryList.end() ) theSecondaryList.erase(iter2); } theCollisionMgr->RemoveTracksCollisions(oldSecondaries); } @@ -1600,6 +1805,7 @@ void G4BinaryCascade::UpdateTracksAndCollisions( // G4cout << "################## Debugging 0 "<size()!=0) { + // G4cout << "################## Debugging 1 "<size()<begin(); iter1 != oldTarget->end(); ++iter1) { @@ -1655,33 +1861,28 @@ G4bool G4BinaryCascade::DoTimeStep(G4double theTimeStep) #ifdef debug_BIC_DoTimeStep G4ping debug("debug_G4BinaryCascade"); debug.push_back("======> DoTimeStep 1"); debug.dump(); - G4cerr <<"G4BinaryCascade::DoTimeStep: enter "<< theTimeStep << G4endl; + G4cerr <<"G4BinaryCascade::DoTimeStep: enter step="<< theTimeStep + << " , time="<::iterator iter; -// Count particles in nucleus - #ifdef debug_BIC_DoTimeStep - G4int secondaryBarions=0; - G4int secondaryCharge=0; - G4double secondaryMass=0; - #endif G4KineticTrackVector * kt_outside = new G4KineticTrackVector; std::for_each( theSecondaryList.begin(),theSecondaryList.end(), SelectFromKTV(kt_outside,G4KineticTrack::outside)); -// PrintKTVector(kt_outside, std::string("DoTimeStep - found outside")); + //PrintKTVector(kt_outside, std::string("DoTimeStep - found outside")); G4KineticTrackVector * kt_inside = new G4KineticTrackVector; std::for_each( theSecondaryList.begin(),theSecondaryList.end(), SelectFromKTV(kt_inside, G4KineticTrack::inside)); -// PrintKTVector(kt_inside, std::string("DoTimeStep - found inside")); + // PrintKTVector(kt_inside, std::string("DoTimeStep - found inside")); //----- G4KineticTrackVector dummy; // needed for re-usability #ifdef debug_BIC_DoTimeStep - G4cout << "NOW WE ARE ENTERING THE TRANSPORT"< DoTimeStep 1.1.1"); debug.dump(); -#endif - theMomentumTransfer += thePropagator->GetMomentumTransfer(); -#ifdef debug_BIC_DoTimeStep - G4cout << "DoTimeStep : theMomentumTransfer = " << theMomentumTransfer << G4endl; -#endif + theMomentumTransfer += thePropagator->GetMomentumTransfer(); + #ifdef debug_BIC_DoTimeStep + G4cout << "DoTimeStep : theMomentumTransfer = " << theMomentumTransfer << G4endl; + PrintKTVector(&theSecondaryList, std::string("DoTimeStep - secondaries aft trsprt")); + #endif // Partclies which went INTO nucleus G4KineticTrackVector * kt_gone_in = new G4KineticTrackVector; std::for_each( kt_outside->begin(),kt_outside->end(), SelectFromKTV(kt_gone_in,G4KineticTrack::inside)); -// PrintKTVector(kt_gone_in, std::string("DoTimeStep - gone in")); + // PrintKTVector(kt_gone_in, std::string("DoTimeStep - gone in")); - //PrintKTVector(&theSecondaryList,std::string("aft trsprt.....")); // Partclies which went OUT OF nucleus G4KineticTrackVector * kt_gone_out = new G4KineticTrackVector; std::for_each( kt_inside->begin(),kt_inside->end(), SelectFromKTV(kt_gone_out, G4KineticTrack::gone_out)); -// PrintKTVector(kt_gone_out, std::string("DoTimeStep - gone out")); + // PrintKTVector(kt_gone_out, std::string("DoTimeStep - gone out")); + G4KineticTrackVector *fail=CorrectBarionsOnBoundary(kt_gone_in,kt_gone_out); + if ( fail ) { - // some particle(s) supposed to leave was captured by the correction -// PrintKTVector(fail,std::string(" Failed to go out -> captured")); - delete fail; + // some particle(s) supposed to enter/leave were miss_nucleus/captured by the correction + kt_gone_in->clear(); + std::for_each( kt_outside->begin(),kt_outside->end(), + SelectFromKTV(kt_gone_in,G4KineticTrack::inside)); + kt_gone_out->clear(); std::for_each( kt_inside->begin(),kt_inside->end(), SelectFromKTV(kt_gone_out, G4KineticTrack::gone_out)); -// PrintKTVector(kt_gone_out, std::string("recreated kt_gone_out")); - + + #ifdef debug_BIC_DoTimeStep + PrintKTVector(fail,std::string(" Failed to go in/out -> miss_nucleus/captured")); + PrintKTVector(kt_gone_in, std::string("recreated kt_gone_in")); + PrintKTVector(kt_gone_out, std::string("recreated kt_gone_out")); + #endif + delete fail; } // Add tracks missing nucleus and tracks going straight though to addFinals std::for_each( kt_outside->begin(),kt_outside->end(), SelectFromKTV(kt_gone_out,G4KineticTrack::miss_nucleus)); + //PrintKTVector(kt_gone_out, std::string("miss to append to final state..")); std::for_each( kt_outside->begin(),kt_outside->end(), SelectFromKTV(kt_gone_out,G4KineticTrack::gone_out)); #ifdef debug_BIC_DoTimeStep - PrintKTVector(kt_gone_out, std::string("append to final state..")); + PrintKTVector(kt_gone_out, std::string("append to final state..")); #endif theFinalState.insert(theFinalState.end(), @@ -1778,10 +1985,8 @@ G4bool G4BinaryCascade::DoTimeStep(G4double theTimeStep) } } - //G4cout << "Here we are 4 "<size()<size() ) @@ -1796,7 +2001,7 @@ G4bool G4BinaryCascade::DoTimeStep(G4double theTimeStep) { (*i_captured)->Hit(); } -// PrintKTVector(kt_captured," kt_catured be4 updatetrack..."); + // PrintKTVector(kt_captured," kt_captured be4 updatetrack..."); UpdateTracksAndCollisions(kt_captured, NULL, NULL); } @@ -1809,15 +2014,12 @@ G4bool G4BinaryCascade::DoTimeStep(G4double theTimeStep) + GetTotalCharge(theCapturedList) + GetTotalCharge(*kt_inside)) ) { - G4cout << " error-DoTimeStep, aft, A, Z, sec-Z,... " - << currentA << " " - << currentZ << " " - << GetTotalCharge(theTargetList) - + GetTotalCharge(theCapturedList) - + GetTotalCharge(*kt_inside) << " " - << GetTotalCharge(theTargetList) << " " - << GetTotalCharge(theCapturedList) << " " - << GetTotalCharge(*kt_inside) << " " + G4cout << " error-DoTimeStep aft, A, Z: " << currentA << " " << currentZ + << " sum(tgt,capt,active) " + << GetTotalCharge(theTargetList) + GetTotalCharge(theCapturedList) + GetTotalCharge(*kt_inside) + << " targets: " << GetTotalCharge(theTargetList) + << " captured: " << GetTotalCharge(theCapturedList) + << " active: " << GetTotalCharge(*kt_inside) << G4endl; } #endif @@ -1857,9 +2059,9 @@ G4KineticTrackVector* G4BinaryCascade::CorrectBarionsOnBoundary( { ++secondaries_in; secondaryCharge_in += G4lrint((*iter)->GetDefinition()->GetPDGCharge()); - if ((*iter)->GetDefinition()->GetBaryonNumber()==1 ) + if ((*iter)->GetDefinition()->GetBaryonNumber()!=0 ) { - ++secondaryBarions_in; + secondaryBarions_in += (*iter)->GetDefinition()->GetBaryonNumber(); if((*iter)->GetDefinition() == G4Neutron::Neutron() || (*iter)->GetDefinition() == G4Proton::Proton() ) { @@ -1874,7 +2076,7 @@ G4KineticTrackVector* G4BinaryCascade::CorrectBarionsOnBoundary( currentZ += secondaryCharge_in; currentA += secondaryBarions_in; -// G4cout << "CorrectBarionsOnBoundary,secondaryCharge_in, secondaryBarions_in" +// G4cout << "CorrectBarionsOnBoundary,secondaryCharge_in, secondaryBarions_in " // << secondaryCharge_in << " "<< secondaryBarions_in << G4endl; G4double mass_final= GetIonMass(currentZ,currentA); @@ -1899,7 +2101,23 @@ G4KineticTrackVector* G4BinaryCascade::CorrectBarionsOnBoundary( for ( iter = in->begin(); iter != in->end(); ++iter) { - (*iter)->UpdateTrackingMomentum((*iter)->GetTrackingMomentum().e() + correction); + if ((*iter)->GetTrackingMomentum().e()+correction > (*iter)->GetActualMass()) + { + (*iter)->UpdateTrackingMomentum((*iter)->GetTrackingMomentum().e() + correction); + } else { + //particle cannot go in, put to miss_nucleus + G4RKPropagation * RKprop=(G4RKPropagation *)thePropagator; + (*iter)->SetState(G4KineticTrack::miss_nucleus); + // Undo correction for Colomb Barrier + G4double barrier=RKprop->GetBarrier((*iter)->GetDefinition()->GetPDGEncoding()); + (*iter)->UpdateTrackingMomentum((*iter)->GetTrackingMomentum().e() + barrier); + if ( ! kt_fail ) kt_fail=new G4KineticTrackVector; + kt_fail->push_back(*iter); + currentZ -= G4lrint((*iter)->GetDefinition()->GetPDGCharge()); + currentA -= (*iter)->GetDefinition()->GetBaryonNumber(); + + } + } #ifdef debug_BIC_CorrectBarionsOnBoundary G4cout << " CorrectBarionsOnBoundary, aft, A, Z, sec-Z,A,m,m_in_nucleus " @@ -1923,9 +2141,9 @@ G4KineticTrackVector* G4BinaryCascade::CorrectBarionsOnBoundary( { ++secondaries_out; secondaryCharge_out += G4lrint((*iter)->GetDefinition()->GetPDGCharge()); - if ((*iter)->GetDefinition()->GetBaryonNumber()==1 ) + if ((*iter)->GetDefinition()->GetBaryonNumber() !=0 ) { - ++secondaryBarions_out; + secondaryBarions_out += (*iter)->GetDefinition()->GetBaryonNumber(); if((*iter)->GetDefinition() == G4Neutron::Neutron() || (*iter)->GetDefinition() == G4Proton::Proton() ) { @@ -1995,7 +2213,7 @@ G4KineticTrackVector* G4BinaryCascade::CorrectBarionsOnBoundary( if ( kt_fail == 0 ) kt_fail=new G4KineticTrackVector; kt_fail->push_back(*iter); currentZ += G4lrint((*iter)->GetDefinition()->GetPDGCharge()); - if ((*iter)->GetDefinition()->GetBaryonNumber()==1 ) ++currentA; + currentA += (*iter)->GetDefinition()->GetBaryonNumber(); } #ifdef debug_BIC_CorrectBarionsOnBoundary else @@ -2085,18 +2303,9 @@ G4Fragment * G4BinaryCascade::FindFragments() // // if(getenv("BCDEBUG") ) G4cerr << "Fragment A, Z "<< a <<" "<< z<GetMassNumber() - theTargetList.size(); - fragment->SetNumberOfHoles(holes); - G4int excitons = theCapturedList.size(); -//GF fragment->SetNumberOfParticles(excitons-holes); - fragment->SetNumberOfParticles(excitons); - fragment->SetNumberOfCharged(zCaptured); - G4ParticleDefinition * aIonDefinition = - G4ParticleTable::GetParticleTable()->FindIon(a,z,0,z); - fragment->SetParticleDefinition(aIonDefinition); #ifdef debug_BIC_FindFragments G4cout << "Fragment: a= " << a << " z= " << z @@ -2109,6 +2318,16 @@ G4Fragment * G4BinaryCascade::FindFragments() << G4endl; #endif + G4Fragment * fragment = new G4Fragment(a,z,GetFinalNucleusMomentum()); + fragment->SetNumberOfHoles(holes); + +//GF fragment->SetNumberOfParticles(excitons-holes); + fragment->SetNumberOfParticles(excitons); + fragment->SetNumberOfCharged(zCaptured); + G4ParticleDefinition * aIonDefinition = + G4ParticleTable::GetParticleTable()->FindIon(a,z,0,z); + fragment->SetParticleDefinition(aIonDefinition); + return fragment; } @@ -2366,7 +2585,16 @@ void G4BinaryCascade::PrintKTVector(G4KineticTrackVector * ktv, std::string comm for(count = 0, i = ktv->begin(); i != ktv->end(); ++i, ++count) { G4KineticTrack * kt = *i; - G4cout << " track n. " << count << ", id: " << kt << G4endl; + G4cout << " track n. " << count; + PrintKTVector(kt); + } +} +//---------------------------------------------------------------------------- +void G4BinaryCascade::PrintKTVector(G4KineticTrack * kt, std::string comment) +//---------------------------------------------------------------------------- +{ + if (comment.size() > 0 ) G4cout << comment << G4endl; + G4cout << ", id: " << kt << G4endl; G4ThreeVector pos = kt->GetPosition(); G4LorentzVector mom = kt->Get4Momentum(); G4LorentzVector tmom = kt->GetTrackingMomentum(); @@ -2376,7 +2604,6 @@ void G4BinaryCascade::PrintKTVector(G4KineticTrackVector * ktv, std::string comm << 1/MeV*mom <<"Tr_mom" << 1/MeV*tmom << " P: " << 1/MeV*mom.vect().mag() << " M: " << 1/MeV*mom.mag() << G4endl; G4cout <<" trackstatus: "<GetState()<size()); + if (result) { + debug.push_back(result->size()); + } else { + debug.push_back(" -none-"); + } debug.dump(); - std::for_each(initalState->begin(), initalState->end(), Delete()); - delete initalState; +// std::for_each(initalState->begin(), initalState->end(), Delete()); +// delete initalState; - if(result->size()==0) + if(! result || result->size()==0) { - delete result; result=0; + if (result) {delete result; result=0;} delete fancyNucleus; delete projectile; if (++tryCount > 200) diff --git a/source/processes/hadronic/models/binary_cascade/src/G4RKPropagation.cc b/source/processes/hadronic/models/binary_cascade/src/G4RKPropagation.cc index 2348b9599a..2d0563c305 100644 --- a/source/processes/hadronic/models/binary_cascade/src/G4RKPropagation.cc +++ b/source/processes/hadronic/models/binary_cascade/src/G4RKPropagation.cc @@ -287,11 +287,12 @@ void G4RKPropagation::Transport(G4KineticTrackVector & active, #endif // if the particle is already outside nucleus go to next @@GF should never happen? check! - if(t_leave < 0) - { - throw G4HadronicException(__FILE__, __LINE__, "G4RKPropagation:: Attempt to track particle past a nucleus"); - continue; - } +// does happen for particles added as late.... +// if(t_leave < 0 ) +// { +// throw G4HadronicException(__FILE__, __LINE__, "G4RKPropagation:: Attempt to track particle past a nucleus"); +// continue; +// } // Apply a straight line propagation for particle types // not included in the model @@ -334,6 +335,10 @@ void G4RKPropagation::Transport(G4KineticTrackVector & active, // for the moment take it past the nucleus, so we'll not worry next time.. FreeTransport(kt, 1.1*t_leave); // take past nucleus kt->SetState(G4KineticTrack::miss_nucleus); +// G4cout << "G4RKPropagation: Warning particle cannot enter Nucleus :" << G4endl; +// G4cout << " enter nucleus, E out/in: " << kt->GetTrackingMomentum().e() << " / " << newE <GetField(kt->GetPosition()) << " "<< kt->GetPosition()<GetDefinition()->GetParticleName()<GetPosition(); // if (currentField->GetField(kt->GetPosition()) > kt->GetProjectilePotential() || - if ( currTimeStep > 0 && - ! FieldTransport(kt, currTimeStep)) { + if (currTimeStep > 0 && + ! FieldTransport(kt, currTimeStep)) { FreeTransport(kt,currTimeStep); } diff --git a/source/processes/hadronic/models/cascade/History b/source/processes/hadronic/models/cascade/History index 24216e758c..6269685ef5 100644 --- a/source/processes/hadronic/models/cascade/History +++ b/source/processes/hadronic/models/cascade/History @@ -14,6 +14,11 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +17 Nov 2007 Dennis Wright (hadr-casc-V09-00-02) +----------------------------------------------- +- Fix angular distribution for nucleon-nucleon elastic scattering + above 2.8 GeV, by modifying G4ElementaryParticleCollider::getElasticCase + 25 May 2007 Dennis Wright for Aatos Heikkinen (hadr-casc-V08-03-00) ------------------------------------------------------------------- - implemented interfaces for pre-equilibrium and equilbrium evaporation diff --git a/source/processes/hadronic/models/cascade/cascade/include/G4IBertini.hh b/source/processes/hadronic/models/cascade/cascade/include/G4IBertini.hh new file mode 100644 index 0000000000..10391d067d --- /dev/null +++ b/source/processes/hadronic/models/cascade/cascade/include/G4IBertini.hh @@ -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. * +// ******************************************************************** +// +// Defines an development version for interface Bertini (BERT) cascade +// based on INUCL intra-nuclear transport.models +// with bullet hadron energy ~< 10 GeV + +#ifndef G4IBERTINI_H +#define G4IBERTINI_H 1 + +#include "G4Nucleon.hh" +#include "G4Nucleus.hh" +#include "G4VIntraNuclearTransportModel.hh" +#include "G4KineticTrackVector.hh" +#include "G4FragmentVector.hh" +#include "G4ParticleChange.hh" +#include "G4ReactionProductVector.hh" +#include "G4ReactionProduct.hh" + +class G4IBertini : public G4VIntraNuclearTransportModel { + +public: + G4IBertini(); + + ~G4IBertini(){ + } + + G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries, G4V3DNucleus* theNucleus); + + G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& theNucleus); + +private: + G4int operator==(G4IBertini& right) { + return (this == &right); + } + + G4int operator!=(G4IBertini& right) { + return (this != &right); + } + + G4int verboseLevel; + +private: + G4HadFinalState theResult; + +}; + +#endif // G4IBERTINI_H diff --git a/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc b/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc index c512bc21f6..7784c49cc9 100644 --- a/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc +++ b/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc @@ -46,6 +46,8 @@ #include "G4LorentzRotation.hh" +//#define BERTDEV 1 // A flag to activate a development version of Bertini cascade + typedef std::vector::iterator particleIterator; typedef std::vector::iterator nucleiIterator; @@ -194,9 +196,12 @@ G4HadFinalState* G4CascadeInterface::ApplyYourself(const G4HadProjectile& aTrack G4BigBanger* bigb = new G4BigBanger; G4InuclCollider* collider = new G4InuclCollider(colep, inc, noneq, eqil, fiss, bigb); - G4int maxTries = 10; // maximum tries for inelastic collision to avoid infinite loop + G4int maxTries = 100; // maximum tries for inelastic collision to avoid infinite loop G4int nTries = 0; // try counter +#ifdef BERTDEV + G4int coulombOK =0; // flag for correct Coulomb barrier +#endif if (G4int(theNucleusA) == 1) { // special treatment for target H(1,1) (proton) targetH = new G4InuclElementaryParticle(targetMomentum, 1); @@ -232,7 +237,6 @@ G4HadFinalState* G4CascadeInterface::ApplyYourself(const G4HadProjectile& aTrack output.getOutgoingParticles().begin()->type() == proton) ) ); - } else { // only elastic collision is energetically possible output = collider->collide(bullet, targetH); } @@ -253,16 +257,40 @@ G4HadFinalState* G4CascadeInterface::ApplyYourself(const G4HadProjectile& aTrack do // we try to create inelastic interaction { +#ifdef BERTDEV + coulombOK=0; // by default coulomb analysis is OK +#endif output = collider->collide(bullet, target ); nTries++; + +#ifdef BERTDEV + G4double coulumbBarrier = 8.7 * MeV; + std::vector p= output.getOutgoingParticles(); + if(!p.empty()) { + for( particleIterator ipart = p.begin(); ipart != p.end(); ipart++) { + if (ipart->type() == proton) { + G4double e = ipart->getKineticEnergy()*GeV; + if (e < coulumbBarrier) coulombOK= 1; // If event with coulomb barrier violation detected -> retry + // G4cout << "///AH "<< e << "" << coulumbBarrier < 2.5) && + (output.getOutgoingParticles().size()!=0) + ); +#else + } while( (nTries < maxTries) && (output.getOutgoingParticles().size() + output.getNucleiFragments().size() < 2.5) && (output.getOutgoingParticles().size()!=0) && (output.getOutgoingParticles().begin()->type()==bullet->type()) - ); - - } + ); +#endif + } if (verboseLevel > 1) { diff --git a/source/processes/hadronic/models/cascade/cascade/src/G4ElementaryParticleCollider.cc b/source/processes/hadronic/models/cascade/cascade/src/G4ElementaryParticleCollider.cc index db8af57718..1a4eb42dfd 100644 --- a/source/processes/hadronic/models/cascade/cascade/src/G4ElementaryParticleCollider.cc +++ b/source/processes/hadronic/models/cascade/cascade/src/G4ElementaryParticleCollider.cc @@ -1945,9 +1945,9 @@ G4int G4ElementaryParticleCollider::getElasticCase(G4int is, if(l < 3) { // nucleon nucleon if(ekin > 2.8) { - k = 2; - - if(ekin > 10.0) k = 14; + // DHW k = 2; + // DHW if(ekin > 10.0) k = 14; + k = 14; } else { diff --git a/source/processes/hadronic/models/cascade/cascade/src/G4IBertini.cc b/source/processes/hadronic/models/cascade/cascade/src/G4IBertini.cc new file mode 100644 index 0000000000..41d39d5299 --- /dev/null +++ b/source/processes/hadronic/models/cascade/cascade/src/G4IBertini.cc @@ -0,0 +1,541 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// + +#include "G4IBertini.hh" +#include "globals.hh" +#include "G4DynamicParticleVector.hh" +#include "G4IonTable.hh" +#include "G4InuclCollider.hh" +#include "G4IntraNucleiCascader.hh" +#include "G4ElementaryParticleCollider.hh" +#include "G4NonEquilibriumEvaporator.hh" +#include "G4EquilibriumEvaporator.hh" +#include "G4Fissioner.hh" +#include "G4BigBanger.hh" +#include "G4InuclElementaryParticle.hh" +#include "G4InuclNuclei.hh" +#include "G4InuclParticle.hh" +#include "G4CollisionOutput.hh" +#include "G4V3DNucleus.hh" +#include "G4Track.hh" +#include "G4Nucleus.hh" +#include "G4NucleiModel.hh" +#include "G4LorentzRotation.hh" + + +typedef std::vector::iterator particleIterator; +typedef std::vector::iterator nucleiIterator; + +G4IBertini::G4IBertini() + :verboseLevel(0) { + + if (verboseLevel > 3) { + G4cout << " >>> G4IBertini::G4IBertini" << G4endl; + } +} + +G4ReactionProductVector* G4IBertini::Propagate(G4KineticTrackVector* , + G4V3DNucleus* ) { + return 0; +} + +// #define debug_G4IBertini + +G4HadFinalState* G4IBertini::ApplyYourself(const G4HadProjectile& aTrack, + G4Nucleus& theNucleus) { +#ifdef debug_G4IBertini + static G4int counter(0); + counter++; + G4cerr << "Reaction number "<< counter << " "<GetDefinition()->GetParticleName()<<" "<< aTrack.GetDynamicParticle()->GetKineticEnergy()< 3) { + G4cout << " >>> G4IBertini::ApplyYourself" << G4endl; + }; + + G4double eInit = 0.0; + G4double eTot = 0.0; + G4double sumBaryon = 0.0; + G4double sumEnergy = 0.0; + + // Make conversion between native Geant4 and Bertini cascade classes. + // NOTE: Geant4 units are MeV = 1 and GeV = 1000. Cascade code by default use GeV = 1. + + enum particleType { nuclei = 0, proton = 1, neutron = 2, pionPlus = 3, + pionMinus = 5, pionZero = 7, photon = 10, + kaonPlus = 11, kaonMinus = 13, kaonZero = 15, + kaonZeroBar = 17, lambda = 21, sigmaPlus = 23, + sigmaZero = 25, sigmaMinus = 27, xiZero = 29, xiMinus = 31 }; + + G4int bulletType = 0; + + // Coding particles + if (aTrack.GetDefinition() == G4Proton::Proton() ) bulletType = proton; + if (aTrack.GetDefinition() == G4Neutron::Neutron() ) bulletType = neutron; + if (aTrack.GetDefinition() == G4PionPlus::PionPlus() ) bulletType = pionPlus; + if (aTrack.GetDefinition() == G4PionMinus::PionMinus() ) bulletType = pionMinus; + if (aTrack.GetDefinition() == G4PionZero::PionZero() ) bulletType = pionZero; + if (aTrack.GetDefinition() == G4Gamma::Gamma() ) bulletType = photon; + if (aTrack.GetDefinition() == G4KaonPlus::KaonPlus() ) bulletType = kaonPlus; + if (aTrack.GetDefinition() == G4KaonMinus::KaonMinus() ) bulletType = kaonMinus; + if (aTrack.GetDefinition() == G4Lambda::Lambda() ) bulletType = lambda; + if (aTrack.GetDefinition() == G4SigmaPlus::SigmaPlus() ) bulletType = sigmaPlus; + if (aTrack.GetDefinition() == G4SigmaZero::SigmaZero() ) bulletType = sigmaZero; + if (aTrack.GetDefinition() == G4SigmaMinus::SigmaMinus() ) bulletType = sigmaMinus; + if (aTrack.GetDefinition() == G4XiZero::XiZero() ) bulletType = xiZero; + if (aTrack.GetDefinition() == G4XiMinus::XiMinus() ) bulletType = xiMinus; + + if (aTrack.GetDefinition() == G4KaonZeroLong::KaonZeroLong() || + aTrack.GetDefinition() == G4KaonZeroShort::KaonZeroShort() ) { + if (G4UniformRand() > 0.5) { + bulletType = kaonZero; + } else { + bulletType = kaonZeroBar; + } + } + + // Code momentum and energy. + G4double px,py,pz; + px=aTrack.Get4Momentum().px() / GeV; + py=aTrack.Get4Momentum().py() / GeV; + pz=aTrack.Get4Momentum().pz() / GeV; + + G4LorentzVector projectileMomentum = aTrack.Get4Momentum(); + G4LorentzRotation toZ; + toZ.rotateZ(-projectileMomentum.phi()); + toZ.rotateY(-projectileMomentum.theta()); + G4LorentzRotation toLabFrame = toZ.inverse(); + + // G4cout << "projectileMomentum " << projectileMomentum[0] << " " << projectileMomentum[1] << " " << projectileMomentum[2] << " " << projectileMomentum[3] << G4endl; + + G4LorentzVector projectileMomentumLab = projectileMomentum*=toLabFrame; + //G4cout << "projectileMomentumLab " << projectileMomentumLab[0] << " " << projectileMomentumLab[1] << " " << projectileMomentumLab[2] << " " << projectileMomentumLab[3] << G4endl; + // G4cout << "projectileMomentum in lab frame" << projectileMomentum*=toLabFrame << G4endl; + + std::vector momentumBullet(4); + momentumBullet[0] =0.; + momentumBullet[1] =0; + momentumBullet[2] =0; + momentumBullet[3] =std::sqrt(px*px+py*py+pz*pz); + + // G4cout << "momentumBullet[3]" << momentumBullet[3] << G4endl; + + G4InuclElementaryParticle * bullet = new G4InuclElementaryParticle(momentumBullet, bulletType); + + // bullet->printParticle(); //AH + + + + sumEnergy = bullet->getKineticEnergy(); // In GeV + + if (bulletType == proton || bulletType == neutron || bulletType == lambda || + bulletType == sigmaPlus || bulletType == sigmaZero || bulletType == sigmaMinus || + bulletType == xiZero || bulletType == xiMinus) { + + sumBaryon += 1; + } + + // Set target + G4InuclNuclei* target = 0; + G4InuclParticle* targetH = 0; + // and outcoming particles + G4DynamicParticle* cascadeParticle = 0; + + std::vector targetMomentum(4, 0.0); + + G4double theNucleusA = theNucleus.GetN(); + + if ( !(G4int(theNucleusA) == 1) ) { + target = new G4InuclNuclei(targetMomentum, + theNucleusA, + theNucleus.GetZ()); + target->setEnergy(); + + // target->printParticle();//AH + + std::vector bmom = bullet->getMomentum(); + eInit = std::sqrt(bmom[0] * bmom[0]); + std::vector tmom = target->getMomentum(); + eInit += std::sqrt(tmom[0] * tmom[0]); + + sumBaryon += theNucleusA; + + if (verboseLevel > 2) { + G4cout << "Bullet: " << G4endl; + bullet->printParticle(); + } + if (verboseLevel > 2) { + G4cout << "Target: " << G4endl; + target->printParticle(); + } + } + + G4CollisionOutput output; + + // Colliders initialisation + G4ElementaryParticleCollider* colep = new G4ElementaryParticleCollider; + G4IntraNucleiCascader* inc = new G4IntraNucleiCascader; // the actual cascade + inc->setInteractionCase(1); // Interaction type is particle with nuclei. + + G4NonEquilibriumEvaporator* noneq = new G4NonEquilibriumEvaporator; + G4EquilibriumEvaporator* eqil = new G4EquilibriumEvaporator; + G4Fissioner* fiss = new G4Fissioner; + G4BigBanger* bigb = new G4BigBanger; + G4InuclCollider* collider = new G4InuclCollider(colep, inc, noneq, eqil, fiss, bigb); + + + G4int maxTries = 100; // maximum tries for inelastic collision to avoid infinite loop + G4int nTries = 0; // try counter + G4int coulombOK =0; + + if (G4int(theNucleusA) == 1) { // special treatment for target H(1,1) (proton) + + targetH = new G4InuclElementaryParticle(targetMomentum, 1); + + G4float cutElastic[32]; + + cutElastic[proton ] = 1.0; // GeV + cutElastic[neutron ] = 1.0; + cutElastic[pionPlus ] = 0.6; + cutElastic[pionMinus] = 0.2; + cutElastic[pionZero ] = 0.2; + cutElastic[kaonPlus ] = 0.5; + cutElastic[kaonMinus] = 0.5; + cutElastic[kaonMinus] = 0.5; + cutElastic[kaonZero] = 0.5; + cutElastic[kaonZeroBar] = 0.5; + cutElastic[lambda] = 1.0; + cutElastic[sigmaPlus] = 1.0; + cutElastic[sigmaZero] = 1.0; + cutElastic[sigmaMinus] = 1.0; + cutElastic[xiZero] = 1.0; + cutElastic[xiMinus] = 1.0; + + if (momentumBullet[3] > cutElastic[bulletType]) { // inelastic collision possible + + do { // we try to create inelastic interaction + output = collider->collide(bullet, targetH); + nTries++; + } while( + (nTries < maxTries) && + (output.getOutgoingParticles().size() == 2 && // elastic: bullet + p = H(1,1) coming out + (output.getOutgoingParticles().begin()->type() == bulletType || + output.getOutgoingParticles().begin()->type() == proton) + ) + ); + + } else { // only elastic collision is energetically possible + output = collider->collide(bullet, targetH); + } + + sumBaryon += 1; + + std::vector bmom = bullet->getMomentum(); + eInit = std::sqrt(bmom[0] * bmom[0]); + std::vector tmom = targetH->getMomentum(); + eInit += std::sqrt(tmom[0] * tmom[0]); + + if (verboseLevel > 2) { + G4cout << "Target: " << G4endl; + targetH->printParticle(); + } + + } else { // treat all other targets except H(1,1) + + do // we try to create inelastic interaction + { + coulombOK=0; // by default coulomb analysis is OK + output = collider->collide(bullet, target ); + nTries++; + //---------------------------- + // G4double coulumbBarrier = 5.0 * MeV; + G4double coulumbBarrier = 8.7 * MeV; // fro 9 4 Be case 5 + // G4double coulumbBarrier = 8.7 * MeV; // fro 54 26 Fe case 5 + // G4double coulumbBarrier = 7.9 * MeV; // fro 197 79Au case 9 + //G4double coulumbBarrier = 1.0 * MeV; // fro 197 79 case 9 + std::vector p= output.getOutgoingParticles(); + if(!p.empty()) { + for( particleIterator ipart = p.begin(); ipart != p.end(); ipart++) { + if (ipart->type() == proton) { + G4double e = ipart->getKineticEnergy()*GeV; + // G4cout << " e " << e << G4endl; + if (e < coulumbBarrier){ + + // if(nTries>=maxTries ) G4cout << "maxTries" << e << G4endl; + // G4cout << "ERROR: E_Coulomb barrier > proton E_kin " << std::setw(4) << e * MeV << " MeV" << G4endl; + coulombOK= 1; // event with coulomb barrier violation detected -> retry + }; + } + } + } + + // G4cout << "OK: " << coulombOK << " nTries: "<< nTries << G4endl; + } while( + (nTries < maxTries) && // conditions for next try + (coulombOK==1) && + ((output.getOutgoingParticles().size() + output.getNucleiFragments().size()) > 2.5) && + (output.getOutgoingParticles().size()!=0) + ); + //----------------------------- + } + + if (verboseLevel > 1) + { + G4cout << " Cascade output: " << G4endl; + output.printCollisionOutput(); + } + + // Convert cascade data to use hadronics interface + std::vector nucleiFragments = output.getNucleiFragments(); + std::vector particles = output.getOutgoingParticles(); + + theResult.SetStatusChange(stopAndKill); + + if (!particles.empty()) { + particleIterator ipart; + G4int outgoingParticle; + + for (ipart = particles.begin(); ipart != particles.end(); ipart++) { + outgoingParticle = ipart->type(); + std::vector mom = ipart->getMomentum(); + eTot += std::sqrt(mom[0] * mom[0]); + + G4double ekin = ipart->getKineticEnergy() * GeV; + G4ThreeVector aMom(mom[1], mom[2], mom[3]); + aMom = aMom.unit(); + + if (ipart->baryon() ) { + sumBaryon -= 1; + } + + sumEnergy -= ekin / GeV; + + switch(outgoingParticle) { + + case proton: +#ifdef debug_G4IBertini + G4cerr << "proton " << counter << " " << aMom << " " << ekin << G4endl; +#endif + cascadeParticle = + new G4DynamicParticle(G4Proton::ProtonDefinition(), aMom, ekin); + break; + + case neutron: + +#ifdef debug_G4IBertini + G4cerr << "neutron "<< counter<<" "< 0.5) { + cascadeParticle = new G4DynamicParticle( + G4KaonZeroLong::KaonZeroLongDefinition(), + aMom, ekin); + } else { + cascadeParticle = new G4DynamicParticle( + G4KaonZeroShort::KaonZeroShortDefinition(), + aMom, ekin); + } + break; + + case kaonZeroBar: + if (G4UniformRand() > 0.5) { + cascadeParticle = new G4DynamicParticle( + G4KaonZeroLong::KaonZeroLongDefinition(), + aMom, ekin); + } else { + cascadeParticle = new G4DynamicParticle( + G4KaonZeroShort::KaonZeroShortDefinition(), + aMom, ekin); + } + break; + + case lambda: + cascadeParticle = + new G4DynamicParticle(G4Lambda::LambdaDefinition(), aMom, ekin); + break; + + case sigmaPlus: + cascadeParticle = + new G4DynamicParticle(G4SigmaPlus::SigmaPlusDefinition(), aMom, ekin); + break; + + case sigmaZero: + cascadeParticle = + new G4DynamicParticle(G4SigmaZero::SigmaZeroDefinition(), aMom, ekin); + break; + + case sigmaMinus: + cascadeParticle = + new G4DynamicParticle(G4SigmaMinus::SigmaMinusDefinition(), aMom, ekin); + break; + + case xiZero: + cascadeParticle = + new G4DynamicParticle(G4XiZero::XiZeroDefinition(), aMom, ekin); + break; + + case xiMinus: + cascadeParticle = + new G4DynamicParticle(G4XiMinus::XiMinusDefinition(), aMom, ekin); + break; + + default: + G4cout << " ERROR: G4IBertini::Propagate undefined particle type" + << G4endl; + } + + cascadeParticle->Set4Momentum(cascadeParticle->Get4Momentum()*=toLabFrame); + theResult.AddSecondary(cascadeParticle); + } + } + + // get nuclei fragments + G4DynamicParticle * aFragment = 0; + G4ParticleDefinition * aIonDef = 0; + G4ParticleTable *theTableOfParticles = G4ParticleTable::GetParticleTable(); + + if (!nucleiFragments.empty()) { + nucleiIterator ifrag; + + for (ifrag = nucleiFragments.begin(); ifrag != nucleiFragments.end(); ifrag++) + { + G4double eKin = ifrag->getKineticEnergy() * GeV; + std::vector mom = ifrag->getMomentum(); + eTot += std::sqrt(mom[0] * mom[0]); + + G4ThreeVector aMom(mom[1], mom[2], mom[3]); + aMom = aMom.unit(); + + // hpw @@@ ==> Should be zero: G4double fragmentExitation = ifrag->getExitationEnergyInGeV(); + + if (verboseLevel > 2) { + G4cout << " Nuclei fragment: " << G4endl; + ifrag->printParticle(); + } + + G4int A = G4int(ifrag->getA()); + G4int Z = G4int(ifrag->getZ()); + aIonDef = theTableOfParticles->FindIon(Z, A, 0, Z); + + aFragment = new G4DynamicParticle(aIonDef, aMom, eKin); + + sumBaryon -= A; + sumEnergy -= eKin / GeV; + + aFragment->Set4Momentum(aFragment->Get4Momentum()*=toLabFrame); + theResult.AddSecondary(aFragment); + } + } + + if (verboseLevel > 2) { + if (sumBaryon != 0) { + G4cout << "ERROR: no baryon number conservation, sum of baryons = " + << sumBaryon << G4endl; + } + + if (sumEnergy > 0.01 ) { + G4cout << "Kinetic energy conservation violated by " + << sumEnergy << " GeV" << G4endl; + } + + G4cout << "Total energy conservation at level ~" + << (eInit - eTot) * GeV << " MeV" << G4endl; + + if (sumEnergy < -5.0e-5 ) { // 0.05 MeV + G4cout << "FATAL ERROR: energy created " + << sumEnergy * GeV << " MeV" << G4endl; + } + } + + delete bullet; + delete colep; + delete inc; + delete noneq; + delete fiss; + delete eqil; + delete bigb; + delete collider; + + if(target != 0) delete target; + if(targetH != 0) delete targetH; + // if(cascadeParticle != 0) delete cascadeParticle; + // if(aFragment != 0) delete aFragment; + + return &theResult; +} diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Chips.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Chips.hh index a5ea4e306e..369097db02 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Chips.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Chips.hh @@ -25,7 +25,7 @@ // // // $Id: G4Chips.hh,v 1.19 2006/06/29 20:05:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4Chips ---------------- // by Mikhail Kossov, September 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QBesIKJY.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QBesIKJY.hh index 2e27c139a4..c3e64e290a 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QBesIKJY.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QBesIKJY.hh @@ -25,7 +25,7 @@ // // // $Id: G4QBesIKJY.hh,v 1.2 2006/06/29 20:05:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QBesIKJY ---------------- // by Mikhail Kossov, Sept 2000. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCHIPSWorld.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCHIPSWorld.hh index ecaa5a131a..a658b05ca5 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCHIPSWorld.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCHIPSWorld.hh @@ -25,7 +25,7 @@ // // // $Id: G4QCHIPSWorld.hh,v 1.25 2006/06/29 20:05:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCHIPSWorld ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidate.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidate.hh index e8adf0ccd6..dbb88bb0cc 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidate.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidate.hh @@ -25,7 +25,7 @@ // // // $Id: G4QCandidate.hh,v 1.28 2006/06/29 20:05:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCandidate ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidateVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidateVector.hh index 8f2a39797a..617eb0c694 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidateVector.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidateVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4QCandidateVector.hh,v 1.21 2006/06/29 20:06:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCandidateVector ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QChipolino.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QChipolino.hh index 10a54bc088..a66d69465f 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QChipolino.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QChipolino.hh @@ -25,7 +25,7 @@ // // // $Id: G4QChipolino.hh,v 1.23 2006/06/29 20:06:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QChipolino ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QContent.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QContent.hh index 77550584f9..d411a7c44c 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QContent.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QContent.hh @@ -25,7 +25,7 @@ // // // $Id: G4QContent.hh,v 1.28 2006/06/29 20:06:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QContent ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChan.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChan.hh index c12b4c092c..685e2f9b7a 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChan.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChan.hh @@ -25,7 +25,7 @@ // // // $Id: G4QDecayChan.hh,v 1.23 2006/06/29 20:06:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QDecayChan ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChanVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChanVector.hh index b5f628f86e..0042c396ca 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChanVector.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChanVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4QDecayChanVector.hh,v 1.19 2006/06/29 20:06:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCandidateVector ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QEnvironment.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QEnvironment.hh index d4f54cafe6..6ecd616639 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QEnvironment.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QEnvironment.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4QEnvironment.hh,v 1.28 2007/02/28 14:26:25 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QEnvironment.hh,v 1.32 2007/10/07 13:31:41 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QEnvironment ---------------- // by Mikhail Kossov, August 2000. @@ -40,6 +40,7 @@ class G4QEnvironment { public: + G4QEnvironment(const G4QNucleus theEnv); // Create Env and add Quasmons later G4QEnvironment(const G4QHadronVector& projHadrons, const G4int targPDG); G4QEnvironment(const G4QEnvironment& right); // copy QEnvironment by value G4QEnvironment(G4QEnvironment* right); // copy QEnvironment by pointer @@ -57,6 +58,7 @@ public: G4QHadronVector* GetProjectiles(); // User is responsible for Destroy/Clear/Delete // Modifiers + void AddQuasmon(G4Quasmon* Q); // Add aQuasmon to theEnvironment G4QHadronVector* Fragment(); // User must clear and destroy the G4QHadronVec // Static functions @@ -77,15 +79,8 @@ private: void InitClustersVector(G4int maxC, G4int maxA);//Init.NucClust's for 1st int void CleanUp(); // Makes theEnvironment=vacuum & kill Quasmons void PrepareInteractionProbabilities(const G4QContent& projQC, G4double AP); - void EvaporateResidual(G4QHadron* evap, G4bool corFlag=false);// Final Evap. + void EvaporateResidual(G4QHadron* h);// Final Evaporation of a nucl. fragment void DecayBaryon(G4QHadron* dB); // Decay baryon (gamma+N or Delta->N+Pi) - void DecayDibaryon(G4QHadron* dB); // Decay di-baryon (deuteron is kept) - void DecayIsonucleus(G4QHadron* dB); // Decay nP+(Pi+) or nN+(Pi-) system - void DecayMultyBaryon(G4QHadron* dB);// Decay of Ap, An or AL states - void DecayAntiStrange(G4QHadron* dB);// Decay nuclei containing K+/K0 - void DecayAlphaBar(G4QHadron* dB); // Decay of alpha+p or alpha+n states - void DecayAlphaDiN(G4QHadron* dB); // Decay of alpha+p+p states - void DecayAlphaAlpha(G4QHadron* dB); // Decay of alpha+alpha state G4bool CheckGroundState(G4Quasmon* quasm,G4bool corFlag=false);//as G4Q for QHV G4bool DecayInEnvQ(G4Quasmon* quasm); // Use befor evaporation in PANIC case diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QException.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QException.hh index 3bbc6d15d3..010af3241b 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QException.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QException.hh @@ -25,7 +25,7 @@ // // // $Id: G4QException.hh,v 1.10 2006/06/29 20:06:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QException ---------------- // by Mikhail Kossov, November 2003. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QFragmentation.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QFragmentation.hh index 57b71e9ad1..010c16fe47 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QFragmentation.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QFragmentation.hh @@ -25,7 +25,7 @@ // // // $Id: G4QFragmentation.hh,v 1.2 2006/12/12 11:02:22 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadron.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadron.hh index b4731a1e11..6a58513fcf 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadron.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadron.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4QHadron.hh,v 1.34 2006/11/20 16:29:11 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QHadron.hh,v 1.35 2007/08/28 15:42:32 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QHadron ---------------- // by Mikhail Kossov, Sept 1999. @@ -111,8 +111,14 @@ public: G4bool CorMDecayIn2(G4double corM, G4LorentzVector& fr4Mom);// This(newMass corM)+fr4Mom G4bool CorEDecayIn2(G4double corE, G4LorentzVector& fr4Mom);// This(E+=cE,P)+f(fE-=cE,fP) G4bool RelDecayIn2(G4LorentzVector& f4Mom, G4LorentzVector& s4Mom, G4LorentzVector& dir, - G4double maxCost = 1., G4double minCost = -1.); + G4double maxCost = 1., G4double minCost = -1.); + G4bool CopDecayIn2(G4LorentzVector& f4Mom, G4LorentzVector& s4Mom, G4LorentzVector& dir, + G4double cop); G4bool DecayIn3(G4LorentzVector& f4Mom, G4LorentzVector& s4Mom, G4LorentzVector& t4Mom); + G4bool RelDecayIn3(G4LorentzVector& fh4M, G4LorentzVector& sh4M, G4LorentzVector& th4Mom, + G4LorentzVector& dir, G4double maxCost = 1., G4double minCost = -1.); + G4bool CopDecayIn3(G4LorentzVector& fh4M, G4LorentzVector& sh4M, G4LorentzVector& th4Mom, + G4LorentzVector& dir, G4double cosp); void Init3D(); // Initializes 3D nucleus with (Pos,4M)nucleons private: diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadronBuilder.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadronBuilder.hh index 09f5a3af3e..685d53fb87 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadronBuilder.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadronBuilder.hh @@ -25,7 +25,7 @@ // // // $Id: G4QHadronBuilder.hh,v 1.2 2006/12/12 11:02:22 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadronVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadronVector.hh index 738f3c894e..cef41a7466 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadronVector.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadronVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4QHadronVector.hh,v 1.22 2006/11/16 11:36:09 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCandidateVector ---------------- // by Mikhail Kossov, Sept 1999. @@ -36,7 +36,7 @@ #define G4QHadronVector_h 1 // // $Id: G4QHadronVector.hh,v 1.22 2006/11/16 11:36:09 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QInteraction.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QInteraction.hh index 081949a2a4..088bfc12b6 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QInteraction.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QInteraction.hh @@ -25,7 +25,7 @@ // // // $Id: G4QInteraction.hh,v 1.2 2006/12/12 11:02:22 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4QInteraction_h diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QInteractionVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QInteractionVector.hh index 9054333de2..4df310a45f 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QInteractionVector.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QInteractionVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4QInteractionVector.hh,v 1.1 2006/10/30 10:40:34 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCandidateVector ---------------- // by Mikhail Kossov, Sept 1999. @@ -37,7 +37,7 @@ // // $Id: G4QInteractionVector.hh,v 1.1 2006/10/30 10:40:34 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QIsotope.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QIsotope.hh index 1ab112979b..2a4db0a2d6 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QIsotope.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QIsotope.hh @@ -25,7 +25,7 @@ // // // $Id: G4QIsotope.hh,v 1.5 2006/06/29 20:06:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ---------------- G4QIsotope header ---------------- diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QNucleus.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QNucleus.hh index ca7469b5cd..cb36bdd104 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QNucleus.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QNucleus.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4QNucleus.hh,v 1.31 2006/10/27 16:47:34 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QNucleus.hh,v 1.33 2007/10/31 13:23:07 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QNucleus ---------------- // by Mikhail Kossov, Sept 1999. @@ -37,6 +37,7 @@ #include "G4QCandidateVector.hh" #include "G4QHadronVector.hh" +#include "G4QChipolino.hh" #include #include #include "globals.hh" @@ -51,7 +52,7 @@ public: G4QNucleus(G4QContent nucQC, G4LorentzVector p); // Full QuarkCont-Constructor G4QNucleus(G4int z, G4int n, G4int s=0); // At Rest ZNS-Constructor G4QNucleus(G4int z, G4int n, G4int s, G4LorentzVector p);// Full ZNS-Constructor - G4QNucleus(const G4QNucleus& right); // Copy Constructor by value + //G4QNucleus(const G4QNucleus& right); // Copy Constructor by value G4QNucleus(G4QNucleus* right); // Copy Constructor by pointer ~G4QNucleus(); // Public Destructor // Overloaded Operators @@ -93,10 +94,20 @@ public: } G4QHadron* GetNextNucleon() {return (currentNucleon>=0&¤tNucleon* GetBThickness() const {return Tb;} // T(b) function, step .1 fm + //std::vector* GetBThickness() const {return Tb;} // T(b) function, step .1 fm + std::vector const* GetBThickness() {return &Tb;} // T(b) function, step .1 fm // Specific Modifiers G4bool EvaporateBaryon(G4QHadron* h1,G4QHadron* h2); // Evaporate Baryon from Nucleus + void EvaporateNucleus(G4QHadron* hA, G4QHadronVector* oHV);// Evaporate Nucleus + //void DecayBaryon(G4QHadron* dB, G4QHadronVector* oHV); // gamma+N or Delt->N+Pi @@later + void DecayDibaryon(G4QHadron* dB, G4QHadronVector* oHV); // deuteron is kept + void DecayIsonucleus(G4QHadron* dB, G4QHadronVector* oHV); // nP+(Pi+) or nN+(Pi-) + void DecayMultyBaryon(G4QHadron* dB, G4QHadronVector* oHV);// A*p, A*n or A*L + void DecayAntiStrange(G4QHadron* dB, G4QHadronVector* oHV);// nuclei with K+/K0 + void DecayAlphaBar(G4QHadron* dB, G4QHadronVector* oHV); // alpha+p or alpha+n + void DecayAlphaDiN(G4QHadron* dB, G4QHadronVector* oHV); // alpha+p+p + void DecayAlphaAlpha(G4QHadron* dB, G4QHadronVector* oHV); // alpha+alpha G4int SplitBaryon(); // Is it possible to split baryon/alpha G4int HadrToNucPDG(G4int hPDG); // Converts hadronic PDGCode to nuclear G4int NucToHadrPDG(G4int nPDG); // Converts nuclear PDGCode to hadronic @@ -180,7 +191,8 @@ private: G4int currentNucleon; // Current nucleon for the NextNucleon (? M.K.) G4double rho0; // Normalazation density G4double radius; // Nuclear radius - std::vector* Tb; // T(b) function with step .1 fm (@@ make .1 a parameter) + //std::vector* Tb; // T(b) function with step .1 fm (@@ make .1 a parameter) + std::vector Tb; // T(b) function with step .1 fm (@@ make .1 a parameter) }; std::ostream& operator<<(std::ostream& lhs, G4QNucleus& rhs); diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCode.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCode.hh index 8257a19241..230afc0578 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCode.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCode.hh @@ -25,7 +25,7 @@ // // // $Id: G4QPDGCode.hh,v 1.26 2006/06/29 20:06:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QPDGCode ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCodeVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCodeVector.hh index 71549f69f1..103e1e92d8 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCodeVector.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCodeVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4QPDGCodeVector.hh,v 1.19 2006/06/29 20:06:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCandidateVector ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGToG4Particle.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGToG4Particle.hh index 5e03d23178..a4b09ea331 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGToG4Particle.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGToG4Particle.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QPDGToG4Particle.hh,v 1.4 2006/06/29 20:06:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QPDGToG4Particle header ---------------- // by Mikhail Kossov, December 2003. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentCluster.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentCluster.hh index b6b3d8c681..6a970f3118 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentCluster.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentCluster.hh @@ -25,7 +25,7 @@ // // // $Id: G4QParentCluster.hh,v 1.23 2006/06/29 20:06:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QParentCluster ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentClusterVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentClusterVector.hh index 59a244916a..c68c37f209 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentClusterVector.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentClusterVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4QParentClusterVector.hh,v 1.18 2006/06/29 20:06:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCandidateVector ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticle.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticle.hh index cdc1dcf4fe..9b77cdd9a6 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticle.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticle.hh @@ -25,7 +25,7 @@ // // // $Id: G4QParticle.hh,v 1.24 2006/06/29 20:06:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QParticle ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticleVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticleVector.hh index 2220bd0395..3b27167141 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticleVector.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticleVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4QParticleVector.hh,v 1.19 2006/06/29 20:06:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCandidateVector ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParton.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParton.hh index a99026fd2a..cd9d8a94eb 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParton.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParton.hh @@ -28,7 +28,7 @@ #define G4QParton_h 1 // $Id: G4QParton.hh,v 1.2 2006/12/12 11:02:22 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class header file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPartonPair.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPartonPair.hh index 15c70e83c8..0cdea63753 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPartonPair.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPartonPair.hh @@ -27,7 +27,7 @@ #define G4QPartonPair_h 1 // // $Id: G4QPartonPair.hh,v 1.1 2006/10/30 10:40:34 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPartonPairVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPartonPairVector.hh index cee693a01d..5c7e8d488f 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPartonPairVector.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPartonPairVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4QPartonPairVector.hh,v 1.1 2006/11/16 11:36:09 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCandidateVector ---------------- // by Mikhail Kossov, October 2006. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPartonVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPartonVector.hh index c39384e07a..473907018f 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPartonVector.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPartonVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4QPartonVector.hh,v 1.1 2006/10/30 10:40:34 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCandidateVector ---------------- // by Mikhail Kossov, Oct 2006. @@ -36,7 +36,7 @@ #define G4QPartonVector_h 1 // // $Id: G4QPartonVector.hh,v 1.1 2006/10/30 10:40:34 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPomeron.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPomeron.hh index e691577f60..5f7a673f9e 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPomeron.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPomeron.hh @@ -27,7 +27,7 @@ #define G4QPomeron_h 1 // // $Id: G4QPomeron.hh,v 1.2 2006/12/12 11:02:22 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QSplitter.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QSplitter.hh index 20d94f3efb..8855186fae 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QSplitter.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QSplitter.hh @@ -25,7 +25,7 @@ // // // $Id: G4QSplitter.hh,v 1.2 2006/06/29 20:06:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QSplitter ---------------- // by Mikhail Kossov, Avgust 2005. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QString.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QString.hh index bb5e8a63a3..f439b58212 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QString.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QString.hh @@ -26,7 +26,7 @@ // // // $Id: G4QString.hh,v 1.2 2006/12/12 11:02:22 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4QString_h #define G4QString_h 1 diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QStringVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QStringVector.hh index b0fa8d6ae3..5ba40b6d91 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QStringVector.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QStringVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4QStringVector.hh,v 1.1 2006/10/30 10:40:35 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QStringVector ---------------- // by Mikhail Kossov, October 2006. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Quasmon.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Quasmon.hh index 465134accf..fc3faf1011 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Quasmon.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Quasmon.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Quasmon.hh,v 1.38 2006/06/29 20:06:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Quasmon.hh,v 1.39 2007/08/09 13:07:47 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4Quasmon ---------------- // by Mikhail Kossov, July 1999. @@ -100,8 +100,8 @@ private: G4double GetRandomMass(G4int PDGCode, G4double maxM); void ModifyInMatterCandidates(); void CalculateHadronizationProbabilities(G4double excE, G4double kQ, - G4LorentzVector k4M, - G4bool piF, G4bool gaF); + G4LorentzVector k4M, G4bool piF, + G4bool gaF, G4bool first=false); void FillHadronVector(G4QHadron* qHadron); G4int RandomPoisson(G4double meanValue); G4double GetQPartonMomentum(G4double mMinResidual2, G4double mCandidate2); diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonString.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonString.hh index 0e3c7587c2..5ede20169a 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonString.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonString.hh @@ -25,7 +25,7 @@ // // // $Id: G4QuasmonString.hh,v 1.4 2006/06/29 20:06:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QuasmonString ---------------- // by Mikhail Kossov, October 2004. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonVector.hh index 1b6b7b4dee..2bb9cb6412 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonVector.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4QuasmonVector.hh,v 1.19 2006/06/29 20:06:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QuasmonVector ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QBesIKJY.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QBesIKJY.cc index 654052d56b..4ec04c927d 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QBesIKJY.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QBesIKJY.cc @@ -25,7 +25,7 @@ // // // $Id: G4QBesIKJY.cc,v 1.2 2006/06/29 20:06:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QBesIKJY ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCHIPSWorld.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCHIPSWorld.cc index 69aeccc245..27515f60a1 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCHIPSWorld.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCHIPSWorld.cc @@ -25,7 +25,7 @@ // // // $Id: G4QCHIPSWorld.cc,v 1.32 2006/06/29 20:06:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCHIPSWorld ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCandidate.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCandidate.cc index 8c6b3b2250..b8235d3e1d 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCandidate.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCandidate.cc @@ -25,7 +25,7 @@ // // // $Id: G4QCandidate.cc,v 1.34 2006/11/27 10:44:53 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCandidate ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QChipolino.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QChipolino.cc index 6b9b67bde6..6dfdd0ef7e 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QChipolino.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QChipolino.cc @@ -25,7 +25,7 @@ // // // $Id: G4QChipolino.cc,v 1.32 2006/11/27 10:44:53 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QChipolino ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QContent.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QContent.cc index b5b2d8186b..86aaab486d 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QContent.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QContent.cc @@ -25,7 +25,7 @@ // // // $Id: G4QContent.cc,v 1.43 2006/11/27 10:44:53 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QContent ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QDecayChan.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QDecayChan.cc index d55cca6bcb..aaa7f4d130 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QDecayChan.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QDecayChan.cc @@ -25,7 +25,7 @@ // // // $Id: G4QDecayChan.cc,v 1.27 2006/11/27 10:44:54 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QDecayChan ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc index 215786c9f8..7309b76afd 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc @@ -27,23 +27,24 @@ //34567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 // // -// $Id: G4QEnvironment.cc,v 1.123 2007/05/03 07:35:27 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QEnvironment.cc,v 1.135 2007/11/28 13:42:13 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QEnvironment ---------------- // by Mikhail Kossov, August 2000. // class for Multy Quasmon Environment used by the CHIPS Model // ------------------------------------------------------------ -//#define chdebug //#define debug +//#define pdebug +//#define qdebug +//#define chdebug //#define sdebug //#define ppdebug //#define cdebug //#define cldebug //#define edebug //#define fdebug -//#define pdebug //#define rdebug //#define ffdebug //#define pcdebug @@ -54,6 +55,20 @@ #include using namespace std; +G4QEnvironment::G4QEnvironment(const G4QNucleus theEnv) : theEnvironment(theEnv) +{ + G4int envPDG=theEnv.GetPDG(); + G4QPDGCode envQPDG(envPDG); + G4int envA=envQPDG.GetBaryNum(); + G4double envM=envQPDG.GetMass(); + totCharge=envQPDG.GetCharge(); + totBaryoN=envA; + tot4Mom=G4LorentzVector(0.,0.,0.,envM); +#ifdef debug + G4cout<<"G4QEnviron::Const: t4M="<SetQPDG(pimQPDG); //Convert (mu-)u->d to (virt pi-)u->d capture fake=false; // normal pi- for q-muon scattering - //fake=true; // fake pi- for q-muon scattering ***** - //if(G4UniformRand()>.5) fake=false; // normal pi- for q-muon scattering ***** + //fake=true; // fake pi- for q-muon scattering ***** + //if(G4UniformRand()>.5) fake=false; // normal pi- for q-muon scattering ***** opHad->Set4Momentum(fn4m); } } @@ -395,7 +410,7 @@ G4QEnvironment::G4QEnvironment(const G4QHadronVector& projHadrons, const G4int t G4int hPDG = curHadr->GetPDGCode(); // A PDG Code of the projQHadron if(!hPDG||hPDG==10) // Check for the validity of the QHadron { - G4cerr<<"---Warning---G4QEnvironment::Constructor:Vacuum,1st Hadron wrong PDG="<GetQCode(); // One more check for valid of the QHadron if(hQ<0) { - G4cerr<<"---Warning---G4QEnviron::Constructor:Vacuum,Q<0, 1st HPDG="<90000000) else if(pPDG==22&&AP<152.) { if(cBN<2)probab=nOfCl*cBN*fact; //Gamma Under Pi Threshold (QuarkCapture) else probab=0.; } + else if(pPDG==2212) + { + //if(cBN<2)probab=nOfCl*cBN*fact; // Moving nucleons hits only nucleons + //else probab=0.; + probab=nOfCl*cBN*fact; // Moving nucleons hits composed clusters + //probab=nOfCl*fact; // Moving nucleons hits compact clusters + } ////////////////////////else if((pPDG==-211&&AP<10.)&&cBN<2) probab=0;//PiCapAtRst(D) //else if((pPDG==-211||pPDG==-13)&&AP<27.)probab=dOfCl*cBN*fact;//Pi/Mu-CaptureAtRest //else if(pPDG==-211&&AP<10.) probab=nOfCl*fact;// special PiCaptureAtRest @@ -1267,17 +1306,17 @@ G4QHadronVector G4QEnvironment::HadronizeQEnvironment() } if(finCharge!=totCharge || finBaryoN!=totBaryoN) { - G4cerr<<"**G4QE::HQ:T(1) tC="<1&&envA<13) premC = 24/envA; //if(envA>1&&envA<19) premC = 36/envA; //if(envA>1&&envA<25) premC = 48/envA; - if(envA>1&&envA<31) premC = 60/envA; + if(envA>1&&envA<41) premC = 80/envA; G4int sumstat= 2; // Sum of statuses of all Quasmons G4bool force = false; // Prototype of the Force Major Flag G4int cbR =0; // Counter of the "Stoped by Coulomb Barrier" @@ -1608,6 +1647,7 @@ G4QHadronVector G4QEnvironment::HadronizeQEnvironment() G4int nCnMax = 1; // MaxCounterOfHadrFolts for shortCutSolutions //G4int nCnMax = 3; // MaxCounterOfHadrFolts for shortCutSolutions //G4int nCnMax = 9; // MaxCounterOfHadrFolts for shortCutSolutions + G4bool first=true; // Flag of the first interaction (only NucMedia) while (sumstat||totCnCnMax)// Treat PANIC for stat=2 (NothingWasDone) ^ { // ^ G4QContent qQC=pQ->GetQC(); // QuarkContent of the Quasmon ^ G4int pqC=qQC.GetCharge(); // Charge (nP) of the Current Quasmon ^ @@ -1918,7 +1965,7 @@ G4QHadronVector G4QEnvironment::HadronizeQEnvironment() if(pqB>0&&pqS<0&&cqMass>fqMass)// "AntiStrangeNucleus-Chipolino" case ^ { // ^ G4QHadron* nuclQ = new G4QHadron(qQC,cq4M);// Hadron for AntiStrangeNuc.^ - DecayAntiStrange(nuclQ); // Decay the AntyStrangeNucl (Del.Equiv.) ^ + theEnvironment.DecayAntiStrange(nuclQ,&theQHadrons);// AntiStrange(D.E.)^ pQ->KillQuasmon(); // If BackFusion succeeded, kill theQuasmon ^ #ifdef edebug G4cout<<"G4QEnv::HQE:Status after kill (#"<GetStatus()// ^ @@ -2087,7 +2134,7 @@ G4QHadronVector G4QEnvironment::HadronizeQEnvironment() output->clear(); // -->-->-->-->-->-->-->-->-->-->-->-->-->--^ delete output; // >========================================^ #ifdef fdebug - G4cerr<<"--Warning--G4QE::HQE:tM="< totMass");//^ @@ -2121,7 +2168,7 @@ G4QHadronVector G4QEnvironment::HadronizeQEnvironment() G4cout<<"G4QE::HQE:EnvironH="<begin(),output->end(),DeleteQHadron());//-->-->-->-^ @@ -2136,7 +2183,7 @@ G4QHadronVector G4QEnvironment::HadronizeQEnvironment() { // ^ theEnvironment.InitByPDG(NUCPDG);// KillEnvironment(@@ Q's? CleanUp)) ^ #ifdef fdebug - G4cerr<<"G4QEnv::HQE:Evaporate Env+Quasm Env="<"<"<"<totM+.001) // ==> "Try Evaporate or decay" case { - // @@@@ For 1 livingQuasmon & totMass>minRQ+mREnv -> decay in RE+RQ (in RQ direction) #ifdef edebug + G4cout<<"G4QEnv::HadrQE: NQ="< mDel="<Bar+Mes error"); } @@ -2729,7 +2816,7 @@ G4QHadronVector G4QEnvironment::HadronizeQEnvironment() G4LorentzVector h24Mom(0.,0.,0.,h2M); if(!G4QHadron(tot4M).DecayIn2(h14Mom, h24Mom)) { - G4cerr<<"---Warning---G4QEnv::HadronizeQE:h1="< mChipo="<1+2 decay failed"); } @@ -2767,7 +2854,7 @@ G4QHadronVector G4QEnvironment::HadronizeQEnvironment() G4LorentzVector g4Mom(0.,0.,0.,0.); if(!G4QHadron(tot4M).DecayIn2(h4Mom, g4Mom)) { - G4cerr<<"---Warning---G4QEnv::HadronizeQEnv: h="< mTot="< mTot="<h="< mSN="<tM="< mSN="<tM="< mSN="<(?)SN="<G4QE::HQE:M="<"<G4QE::HQE:M="<"< than decaying mass"); #endif @@ -3541,7 +3630,7 @@ G4QHadronVector G4QEnvironment::HadronizeQEnvironment() G4LorentzVector qe4M(0.,0.,0.,m2); if(!G4QHadron(tot4M).DecayIn2(fq4M,qe4M)) { - G4cerr<<"---Warning---G4QE::HadQE:tM="<aK="<aK="<aK="<aK="< h1="< h1="<GetPDGCode(); // Get PDG code of the Residual Nucleus - G4int theBN = qH->GetBaryonNumber(); // Baryon number of the nucleus + static const G4double mAlPr = mAlph+mProt; + static const G4double mAlNt = mAlph+mNeut; + static const G4double dProt = mProt+mProt; + static const G4double dNeut = mNeut+mNeut; + static const G4double dAlph = mAlph+mAlph; + static const G4double eps=.003; + G4int thePDG = qH->GetPDGCode(); // Get PDG code of the Residual Nucleus + G4int theBN = qH->GetBaryonNumber(); // A (Baryon number of the nucleus) +#ifdef pdebug + G4cout<<"G4QE::EvaporateRes:Called for PDG="<Get4Momentum()<Get4Momentum(); // Get 4-momentum of theTotalResidNucleus G4double totMass = q4M.m(); // Get theRealMass of theTotalResidNucleus -#ifdef pdebug - G4cout<<"G4QEnvironment::EvapResid(EvaRes):===IN==> PDG="<totGSM) + { + theEnvironment.EvaporateNucleus(qH,&theQHadrons); +#ifdef qdebug + qH=0; +#endif + } + else // Correction must be done + { +#ifdef pdebug + G4cout<<"G4QE::EvaRes: *Correct* "<"<142.) // @@ to avoid more precise calculations - { - if(thePDG==90001000) // D+ -> n + pi+ - { - gsM=mNeut; - thePDG=90000001; - decPDG=211; - decM=mPi; - } - else if(thePDG==90000001) // D+ -> n + pi+ - { - gsM=mProt; - thePDG=90001000; - decPDG=-211; - decM=mPi; - } - else - { - decPDG=111; - decM=mPi0; - } - } - G4LorentzVector h4Mom(0.,0.,0.,gsM); // GSMass must be updated in previous while-LOOP - G4LorentzVector g4Mom(0.,0.,0.,decM); - if(!G4QHadron(q4M).DecayIn2(h4Mom, g4Mom)) - { - G4cerr<<"***G4QEnv::EvaRes:h="<tM="<"<tM="<"<0&&(theC<0||theC>theBN-theS)) DecayIsonucleus(qH);// "UnavoidableIsonucl" - else if(theBN==2) DecayDibaryon(qH); //=> "Dibaryon" case (del eq.) - else if(thePDG==89999003||thePDG==90002999) //=> "ISO-dibarion" (@@Look at prev.line!) - { - // @@ Check that it never comes here !! - G4int nucPDG = 2112; - G4double nucM = mNeut; - G4int piPDG = -211; - if(thePDG==90002999) - { - nucPDG = 2212; - nucM = mProt; - piPDG = 211; - } - if(totMass>mPi+nucM+nucM) - { - G4LorentzVector n14M(0.,0.,0.,nucM); - G4LorentzVector n24M(0.,0.,0.,nucM); - G4LorentzVector pi4M(0.,0.,0.,mPi); - if(!G4QHadron(q4M).DecayIn3(n14M,n24M,pi4M)) - { - G4cerr<<"***G4QEnv::HadQEnv: tM="< 2N="<2020.) //=> IsoDB - { - // @@ Pi0 can be taken into account ! - G4int n1PDG = 2212; - G4int n2PDG = 2112; - G4int piPDG = -211; - G4double n1M = mProt; - G4double n2M = mNeut; - if (thePDG==90002000) piPDG = 211; // pp -> np + pi- - else if(thePDG==90000002) piPDG = -211; // nn -> np + pi- - else // np -> 50%(nnpi+) 50%(pppi-) - { - if(G4UniformRand()>.5) - { - n1PDG=2112; - n1M=mNeut; - piPDG = 211; - } - else - { - n2PDG=2212; - n2M=mProt; - piPDG = -211; - } - } - if(totMass>mPi+n1M+n2M) - { - G4LorentzVector n14M(0.,0.,0.,n1M); - G4LorentzVector n24M(0.,0.,0.,n2M); - G4LorentzVector pi4M(0.,0.,0.,mPi); - if(!G4QHadron(q4M).DecayIn3(n14M,n24M,pi4M)) - { - G4cerr<<"***G4QEnv::HadQEnv:IsoDN, tM="< N1="<GetQC()<Get4Momentum()<<" AsIs"<1) DecayMultyBaryon(qH); - else if(theBN==5) DecayAlphaBar(qH); // Try to decay unstable A5 system (del eq.) - else theQHadrons.push_back(qH); // Fill as it is (del eq.) - //return; - } - else if(theBN>0&&thePDG>88000000&&thePDG<89000000)//==> 2antiK in the nucleus (!Comment!) - { - G4cerr<<"---Warning---G4QEnv::EvaRes:MustNotBeHere.PDG="<=bN) nucPDG+=999000; - else - { - nucPDG+=999999; - k1PDG = 311; - mK1= mK0; - } - if(bZ>bN) nucPDG+=999000; - else - { - nucPDG+=999999; - k2PDG = 311; - mK2= mK0; - } - G4double nucM = G4QNucleus(nucPDG).GetGSMass(); - G4cerr<<"-Warning-G4QE::EvR:M="< N="< " - < " - <GetQC()<Get4Momentum()<<" AsIs"<GSMass+.003)//==>Fuse&DecayTech (no gamDec) - //if(2>3) // Close "Fuse&Decay Technology" ***@@@*** - { -#ifdef debug - G4cout<<"G4QE::EvaR:SplitBar, s="< GSM="<GetBaryonNumber(); - G4int nFragm = theLast->GetNFragments(); - //////////////////G4int gam = theLast->GetPDGCode(); -#ifdef debug - G4cout<<"G4QE::EvaRes:*BackFus,BN="< "Delete Decayed Hadrons" case - { - G4QHadron* thePrev = theQHadrons[nOfOUT-2]; - nFragm = thePrev->GetNFragments(); -#ifdef debug - G4int prevPDG = thePrev->GetPDGCode(); - G4cout<<"G4QEnv::EvaRes:DelTheLast, nFr="<Get4Momentum(); - G4QContent lastQC = theLast->GetQC(); - G4double lastM = last4M.m(); // Mass of the BackFused Fragment - totQC+=lastQC; // Update (increase) the total QC - q4M+=last4M; // Update (increase) the total 4-momentum - totMass=q4M.m(); // Calculate new real total mass - G4int totPDG=totQC.GetSPDGCode();// The updated PDG for the TotalResidualNucleus - if(totPDG==10&&totQC.GetBaryonNumber()>0) totPDG=totQC.GetZNSPDGCode(); - G4int totBN=totQC.GetBaryonNumber();// BaryonNumber of the Total Residual Nucleus - G4double dM=totMass-GSMass -lastM; -#ifdef debug - G4cout<<"G4QE::EvaRes: tM="<-0.001) - { - G4QHadron* evH = new G4QHadron(totPDG,q4M);// Create QHadron for TotalResidNucl - if(dM<=0.) - { - theQHadrons.pop_back(); // lastQHadron is excluded from QHadrV asIs in TRN - delete theLast; //When kill, DON'T forget to delete lastQHadron asAnInstance! -#ifdef pdebug - G4cout<<"G4QE::EvaR: EVH "<Set4Momentum(last4M);// Already exists:don't create&fill,->set4Mom - G4QHadron* nuclH = new G4QHadron(thePDG,r4Mom); -#ifdef pdebug - G4cout<<"G4QE::EvaR: fill NH "<tM="<totResN="<0&&bA>1) // There's aNeutr in theNucl, which can be split - { - G4QContent resQC=totQC-neutQC; - G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus - nResPDG=resN.GetPDG(); // PDG of the Residual Nucleus - if (nResPDG==90000001) nResM=mNeut; - else if(nResPDG==90001000) nResM=mProt; - else if(nResPDG==91000000) nResM=mLamb; - else nResM=resN.GetMZNS(); // min mass of the Residual Nucleus - } - G4double pResM =1000000.; // Prototype of mass of residual for a proton - G4int pResPDG=0; // Prototype of PDGCode of residual for a proton - if(bsCond==2212&&bZ>0&&bA>1) // There's aProton in Nucl, which can be split - { - G4QContent resQC=totQC-protQC; - G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus - pResPDG=resN.GetPDG(); // PDG of the Residual Nucleus - if (pResPDG==90000001) pResM=mNeut; - else if(pResPDG==90001000) pResM=mProt; - else if(pResPDG==91000000) pResM=mLamb; - else pResM =resN.GetMZNS(); // min mass of the Residual Nucleus - } - G4double lResM =1000000.; // Prototype of mass of residual for a Lambda - G4int lResPDG=0; // Prototype of PDGCode of residual for a Lambda - if(bsCond==3122&&bS>0&&bA>1) // There's aLambd in theNucl, which can be split - { - G4QContent resQC=totQC-lambQC; - G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus - lResPDG=resN.GetPDG(); // PDG of the Residual Nucleus - if (lResPDG==90000001) lResM=mNeut; - else if(lResPDG==90001000) lResM=mProt; - else if(lResPDG==91000000) lResM=mLamb; - else lResM =resN.GetMZNS(); // min mass of the Residual Nucleus - } - G4double dResM =1000000.; // Prototype of mass of residual for a Alpha - G4int dResPDG=0; // Prototype of PDGCode of residual for a Alpha - if(bsCond==90001001&&bN>0&&bZ>0&&bA>2)// There's aDeuter in Nucl, which canBeRadiated - { - G4QContent resQC=totQC-deutQC; - G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus - dResPDG=resN.GetPDG(); // PDG of the Residual Nucleus - if (dResPDG==90000001) dResM=mNeut; - else if(dResPDG==90001000) dResM=mProt; - else if(dResPDG==91000000) dResM=mLamb; - else dResM =resN.GetMZNS(); // minMass of the Residual Nucleus - } - G4double aResM =1000000.; // Prototype of mass of residual for a Alpha - G4int aResPDG=0; // Prototype of PDGCode of residual for a Alpha - if(bsCond==90002002&&bN>1&&bZ>1&&bA>4)// There's Alpha in theNucl, which can be split - { - G4QContent resQC=totQC-alphQC; - G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus - aResPDG=resN.GetPDG(); // PDG of the Residual Nucleus - if (aResPDG==90000001) aResM=mNeut; - else if(aResPDG==90001000) aResM=mProt; - else if(aResPDG==91000000) aResM=mLamb; - else aResM =resN.GetMZNS(); // minMass of the Residual Nucleus - } - G4double nnResM =1000000.; // Prototype of mass of residual for a dineutron - G4int nnResPDG=0; // Prototype of ResidualPDGCode for a dineutron - if(dbsCond&&bN>1&&bA>2) // It's nucleus and there is a dineutron - { - G4QContent resQC=totQC-neutQC-neutQC; - G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus - nnResPDG=resN.GetPDG(); // PDG of the Residual Nucleus - if (nnResPDG==90000001) nnResM=mNeut; - else if(nnResPDG==90001000) nnResM=mProt; - else if(nnResPDG==91000000) nnResM=mLamb; - else nnResM =resN.GetMZNS(); // min mass of the Residual Nucleus - } - G4double ppResM =1000000.; // Prototype of mass of residual for a diproton - G4int ppResPDG=0; // Prototype of ResidualPDGCode for a diproton - if(dbsCond&&bZ>1&&bA>2) // It's nucleus and there is a diproton - { - G4QContent resQC=totQC-protQC-protQC; - G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus - ppResPDG=resN.GetPDG(); // PDG of the Residual Nucleus - if (ppResPDG==90000001) ppResM=mNeut; - else if(ppResPDG==90001000) ppResM=mProt; - else if(ppResPDG==91000000) ppResM=mLamb; - else ppResM =resN.GetMZNS(); // min mass of the Residual Nucleus - } - G4double npResM =1000000.; // Prototype of ResidualMass for proton+neutron - G4int npResPDG=0; // Prototype of ResidualPDGCode for a prot+neut - if(dbsCond&&bN>0&&bZ>0&&bA>2) // It's nucleus and there is aProton & aNeutron - { - G4QContent resQC=totQC-neutQC-protQC; - G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus - npResPDG=resN.GetPDG(); // PDG of the Residual Nucleus - if (npResPDG==90000001) npResM=mNeut; - else if(npResPDG==90001000) npResM=mProt; - else if(npResPDG==91000000) npResM=mLamb; - else npResM =resN.GetMZNS(); // min mass of the Residual Nucleus - } - G4double lnResM =1000000.; // Prototype of residualMass for lambda+neutron - G4int lnResPDG=0; // Prototype of ResidualPDGCode for aLambda+Neut - if(dbsCond&&bN>0&&bS>0&&bA>2) // It's nucleus and there is aLambda & aNeutron - { - G4QContent resQC=totQC-lambQC-protQC; - G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus - lnResPDG=resN.GetPDG(); // PDG of the Residual Nucleus - if (lnResPDG==90000001) lnResM=mNeut; - else if(lnResPDG==90001000) lnResM=mProt; - else if(lnResPDG==91000000) lnResM=mLamb; - else lnResM =resN.GetMZNS(); // min mass of the Residual Nucleus - } - G4double lpResM =1000000.; // Prototype of residualMass for a proton+lambda - G4int lpResPDG=0; // Prototype of ResidualPDGCode for theProt+lamb - if(dbsCond&&bS>0&&bZ>0&&bA>2) // It's nucleus and there is aProton and aLambda - { - G4QContent resQC=totQC-neutQC-protQC; - G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus - lpResPDG=resN.GetPDG(); // PDG of the Residual Nucleus - if (lpResPDG==90000001) lpResM=mNeut; - else if(lpResPDG==90001000) lpResM=mProt; - else if(lpResPDG==91000000) lpResM=mLamb; - else lpResM =resN.GetMZNS(); // minMass of the Residual Nucleus - } - G4double llResM =1000000.; // Prototype of mass of residual for a di-lambda - G4int llResPDG=0; // Prototype of ResidPDGCode for the di-lambda - if(dbsCond&&bS>1&&bA>2) // It's nucleus and there is a di-lambda - { - G4QContent resQC=totQC-neutQC-protQC; - G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus - llResPDG=resN.GetPDG(); // PDG of the Residual Nucleus - if (llResPDG==90000001) llResM=mNeut; - else if(llResPDG==90001000) llResM=mProt; - else if(llResPDG==91000000) llResM=mLamb; - else llResM =resN.GetMZNS(); // min mass of the Residual Nucleus - } -#ifdef debug - G4cout<<"G4QEnv::EvaRes: rP="<DecayIn2(a4Mom,b4Mom)) - { - theQHadrons.push_back(qH); // Fill as it is (delete equivalent) - G4cerr<<"---Warning---G4QEnv::EvaRes:rP="<GetQC(),qH->Get4Momentum()); - //theEnvironment=G4QNucleus(90000000,G4LorentzVector(0.,0.,0.,0.)); - //if(!CheckGroundState(quasH,true)) theQHadrons.push_back(qH);//Correct or FillAsIs - //else delete qH; - //delete quasH; - // @@ Temporary - theQHadrons.push_back(qH); // Correct or fill as it is - return; - } - } - //else if(bA==5) DecayAlphaBar(qH);// Decay alpha-nucleon state (delete equivalent) - //else if(bZ==4&&bN==2&&!bS) DecayAlphaDiN(qH); // Decay alpha+2protons state (del.eq.) - //else if(bZ==4&&bN==4&&!bS) DecayAlphaAlpha(qH); // Decay alpha+alpha state (del.eq.) - else // ===> Evaporation of excited system - { -#ifdef pdebug - G4cout<<"G4QE::EvaRes:***EVA***tPDG="<GSM="< "< bCB="<2 - unexpected evaporated fragment"<2) EvaporateResidual(rHadron); // Continue evaporation (@@ Self-call) - else if(rB==2) // => "Dibaryon" case needs decay @@ DecayDibaryon - { - G4double rGSM = rHadron->GetQPDG().GetMass(); // Ground State mass of the dibaryon -#ifdef debug - G4cout<<"G4QE::EvaRes:ResidDibM="< M="< "Dibaryon Decay" case (del.equivalent) - } - else if(rB==5) DecayAlphaBar(rHadron); // "Alpha+Baryon Decay" case (del.equival.) - else if(rPDG==90004002) DecayAlphaDiN(rHadron);//Decay alph+2p (alph+2n is stable) - else if(rPDG==90004004) DecayAlphaAlpha(rHadron);// "Alpha+Alpha Decay" case(delEq) - else theQHadrons.push_back(rHadron); // Fill ResidNucl=Baryon to OutputHadronVector - if(2>3) // @@ This can be skipped @@ ! @@ - { - G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum()); - theEnvironment=G4QNucleus(90000000,G4LorentzVector(0.,0.,0.,0.)); - if(!CheckGroundState(quasH,true)) - { -#ifdef pdebug - G4cout<<"*G4QE::EvaR:EmerFill(1) "<GetQC()<Get4Momentum()< "Decay if impossible evaporate" case - { -#ifdef debug - G4cout<<"G4QEnv::EvaRes: InputHadron4M="<GetQC(); // Quark content of the hadron - G4QChipolino resChip(totQC); // define the Residual as a Chipolino - G4QPDGCode h1=resChip.GetQPDG1(); - G4double m1 =h1.GetMass(); // Mass of the first hadron - G4QPDGCode h2=resChip.GetQPDG2(); - G4double m2 =h2.GetMass(); // Mass of the second hadron - if(totMass+.0001>m1+m2) - { - delete qH; // Chipolino should not be in a sequence - G4LorentzVector fq4M(0.,0.,0.,m1); - G4LorentzVector qe4M(0.,0.,0.,m2); - if(!G4QHadron(q4M).DecayIn2(fq4M,qe4M)) - { - G4cerr<<"***G4QEnv::EvaRes:tM="< h1M="<h1+h2 DecIn2 error"); - } - G4QHadron* H2 = new G4QHadron(h2.GetPDGCode(),qe4M); -#ifdef pdebug - G4cout<<"G4QE::EvaRes:(2) h2="<2) - { -#ifdef pdebug - G4cout<<"*G4QE::EvaR:EmerFill(2) "<GetQC()<Get4Momentum()<mPi+mPi) // "Decay in pipi" case - { - G4LorentzVector fq4M(0.,0.,0.,mPi); - G4LorentzVector qe4M(0.,0.,0.,mPi); - if(!G4QHadron(q4M).DecayIn2(fq4M,qe4M)) - { - G4cerr<<"***G4QEnv::EvaporateResidual: tM="< pi+ + pi-"<Pi+Pi DecayIn2 error"); - } - delete qH; - G4QHadron* H1 = new G4QHadron(211,fq4M); -#ifdef pdebug - G4cout<<"G4QE::EvaRes:(3) PiPlus="< pi0 + pi0"<Pi+Pi DecayIn2 error"); - } - delete qH; - G4QHadron* H1 = new G4QHadron(111,fq4M); -#ifdef pdebug - G4cout<<"G4QE::EvaRes:(4) Pi01="<h1M="<H+gamma DecIn2 error"); - } - delete qH; - G4QHadron* H2 = new G4QHadron(thePDG,qe4M); -#ifdef pdebug - G4cout<<"G4QE::EvaRes:(5) tot="<gamma + gamma"<g+g DecIn2 error"); - } - delete qH; - G4QHadron* H2 = new G4QHadron(22,qe4M); -#ifdef pdebug - G4cout<<"G4QE::EvaRes:(6) gam1="<>>>End. "<G4QE::HQ:h#"<GetQC()<<",PDG="<GetPDGCode()<G4QE::HQ:h#"<GetQC()<<",PDG="<GetPDGCode()<G4QE::HQ:q#"<GetCharge()<<",QCont="<GetQC()<G4QE::HQ:q#"<GetCharge()<<",QCont="<GetQC()<GetQC(),lh4M); // Fake Quasmon ctreation if(!CheckGroundState(quasH,true))// Try to correct with other hadrons { - G4cerr<<"---Warning---G4QEnv::FSI:Correction error LeaveAsItIs h4m="<"<"<"<"< N="< N="<N="<N="<Get4Momentum(); G4double hM=h4Mom.m(); G4QPDGCode fQPDG=nQPDG; @@ -6036,7 +5046,7 @@ G4QHadronVector* G4QEnvironment::FSInteraction() } else if(hM"<"<Get4Momentum(); G4double hM=h4Mom.m(); G4QPDGCode fQPDG=nQPDG; @@ -6126,7 +5136,7 @@ G4QHadronVector* G4QEnvironment::FSInteraction() } else if(hM"<"<.1) { - G4cerr<<"---Warning---G4QE::FSI:E/Mcons4M="<900.) // MomentumIsConserved - recoverMissing { @@ -6714,7 +5724,7 @@ G4QHadronVector* G4QEnvironment::FSInteraction() //throw G4QException("***G4QEnv::FSInteract: Energy/Momentum conservation"); } tot4Mom=tot4Mom-cor4M; - G4cerr<<"---Warning---G4QE::FSI:En/MomCons.Error is corrected:"<sM="<sM="<GetNFragments(); G4int hPDG = curHadr->GetPDGCode(); if(hPDG==89999003||hPDG==90002999) - G4cerr<<"---Warning---G4QEnv::FSI:nD-/pD++(1)="<SetNFragments(-1); //@@ To avoid looping - G4cerr<<"---Warning---G4QE::FSI:PiNSig Failed, LeaveAsItIs 4m="<GetStrangeness(); // A number of Lambdas in the Hypernucleus G4int nB=curHadr->GetBaryonNumber(); // Total Baryon Number of the Hypernucleus @@ -7787,13 +6797,13 @@ G4QHadronVector* G4QEnvironment::FSInteraction() G4int sPDG=3122; // Prototype for the Hyperon PDG (Lambda) G4double MLa=mLamb; // Prototype for one Hyperon decay #ifdef pdebug - G4cerr<<"G4QEnvironment::FSI:*G4* nS+="< Improve it"< Improve it"< add decay in 3) if(nSP) nL+=nSP; @@ -7813,7 +6823,7 @@ G4QHadronVector* G4QEnvironment::FSInteraction() } } #ifdef pdebug - G4cerr<<"G4QEnvironment::FSI:*G4* mS="<Get4Momentum(); // Get 4-momentum of the Isonucleus - G4double qM=q4M.m(); // Real mass of the Isonucleus - G4QContent qQC = qH->GetQC(); // Get QuarcContent of the Isonucleus - G4int qBN=qQC.GetBaryonNumber(); // Baryon number of the IsoNucleus - G4int qC=qQC.GetCharge(); // Charge of the IsoNucleus - G4int qS=qQC.GetStrangeness(); // Strangness of the IsoNucleus -#ifdef pdebug - G4cout<<"G4QE::DecayIson:QC="< TotM="< TotM="<1)QC="<GetQC()<1)QC="<GetQC()< TotM="<Get4Momentum(); // Get 4-momentum of the Dibaryon - G4int qPDG = qH->GetPDGCode(); // PDG Code of the decaying dybaryon - G4double qM = q4M.m(); - G4double rM = qM+eps; // Just to avoid the computer accuracy -#ifdef pdebug - G4cout<<"G4QEnv::DecayDibaryon: *Called* PDG="<=dmPiN) // "diDelta--" case - { - sPDG = -211; - fPDG = 2112; - sMass= mPi; - fMass= mNeut; - four = true; - } - else if(qPDG==90000002 && rM>=dNeut) // "dineutron" case - { - fPDG = 2112; - sPDG = 2112; - fMass= mNeut; - sMass= mNeut; - } - else if(qPDG==90001001 && rM>=mDeut) // "exited deutron" case - { - if(fabs(qM-mDeut)=dLaNe) // "Lambda-neutron" case - { - fPDG = 2112; - sPDG = 3122; - fMass= mNeut; - sMass= mLamb; - } - else if(qPDG==91001000 && rM>=dLaPr) // "Lambda-proton" case - { - sPDG = 3122; - sMass= mLamb; - } - else if(qPDG==89999003 && rM>=nnPi) // "neutron/Delta-" case - { - fPDG = 2112; - sPDG = 2112; - tPDG = -211; - fMass= mNeut; - sMass= mNeut; - } - else if(qPDG==90002999 && rM>=ppPi) // "proton/Delta++" case - { - tPDG = 211; - } - else if(qPDG==90999002 && rM>=lnPi) // "lambda/Delta-" case - { - fPDG = 2112; - sPDG = 3122; - tPDG = -211; - fMass= mNeut; - sMass= mLamb; - } - else if(qPDG==91001999 && rM>=lpPi) // "lambda/Delta+" case - { - sPDG = 3122; - tPDG = 211; - sMass= mLamb; - } - else if(qPDG==90999002 && rM>=dSiNe) // "Sigma-/neutron" case - { - fPDG = 2112; - sPDG = 3112; - fMass= mNeut; - sMass= mSigM; - } - else if(qPDG==91001999 && rM>=dSiPr) // "Sigma+/proton" case - { - sPDG = 3222; - sMass= mSigP; - } - else if(qPDG==92000000 && rM>=dLamb) // "diLambda" case - { - fPDG = 3122; - sPDG = 3122; - fMass= mLamb; - sMass= mLamb; - } - else if(qPDG==91999001 && rM>=dKsNe) // "Ksi-/neutron" case - { - fPDG = 2112; - sPDG = 3312; - fMass= mNeut; - sMass= mKsiM; - } - else if(qPDG==92000999 && rM>=dKsPr) // "Ksi0/proton" case - { - sPDG = 3322; - sMass= mKsiZ; - } - else if(qPDG!=90002000|| rMGetStrangeness(); - G4int qB = qH->GetBaryonNumber(); - if(qB>0&&qS<0) // Antistrange diBarion - { - DecayAntiStrange(qH); - return; - } - else - { -#ifdef pdebug - G4cerr<<"***G4QE::DecayDibaryon:PDG="<GetQC()<<",M="<? TotM="<GetQC(); - G4Quasmon* quasH = new G4Quasmon(qQC,q4M); - if(!CheckGroundState(quasH,true)) - { - G4cerr<<"---Warning---G4QE::DecDiBaryon: FillAsItIs diBaryon="<tM="<GetQC(); - G4Quasmon* quasH = new G4Quasmon(qQC,qH->Get4Momentum()); - if(!CheckGroundState(quasH,true)) - { - G4cerr<<"---Warning---G4QE::DecDibar:FillAsItIs DelDel QC/4M="<? (DD2,Can't be here) TotM="<TotM="<GetQC(),qH->Get4Momentum()); - if(!CheckGroundState(quasH,true)) theQHadrons.push_back(qH); // Cor or fill asItIs - else delete qH; - delete quasH; - return; - } - else - { - G4cerr<<"***G4QEnv::DecayDibaryon:Cann't Corr.*EmptyEnv*="<Get4Momentum(); // Get 4-mom of the AntiStrangeNuclearState - G4double qM = q4M.m(); // Real mass of the AntiStrangeNuclearState - G4QContent qQC= qH->GetQC(); // PDGCode of theDecayingAntiStrangeNuclSt. - G4int qS = qH->GetStrangeness(); // Strangness of the AntiStrangeNuclearState - G4int qB = qH->GetBaryonNumber(); // BaryonNumber of the AntiStrangeNuclearSt. - G4int qP = qH->GetCharge(); // Charge of the AntiStranNuclState (a#of p) -#ifdef pdebug - G4cout<<"G4QEnv::DecAntS:QC="<=0 || qB<1) - { - G4cerr<<"G4QEnv::DecayAntiStrange:QC="<0 && qP>qN) // a#of protons > a#of neutrons - { - if(qP>=bH) // => "Enough protons in nucleus" case - { - if(qN>=sH) - { - n1=sH; - n2=bH; - } - else - { - G4int dN=qP-qN; - if(dN>=aS) - { - n1=0; - n2=aS; - } - else - { - G4int sS=(aS-dN)/2; - G4int bS=aS-dN-sS; - sS+=dN; - if(qP>=sS&&qN>=bS) - { - n1=bS; - n2=sS; - } - else if(qP=bH) - { - if(qP>=sH) - { - n2=sH; - n1=bH; - } - else - { - G4int dN=qN-qP; - if(dN>=aS) - { - n1=aS; - n2=0; - } - else - { - G4int sS=(aS-dN)/2; - G4int bS=aS-sS; - if(qN>=bS&&qP>=sS) - { - n1=bS; - n2=sS; - } - else if(qNqM+eps && n1==1) // Try to use another K if this is the only kaon - { - G4int naPDG=90000000+(qP-1)*1000+qN; // Prot PDG of the Alternative Residual Nucleus - G4double naM=G4QNucleus(naPDG).GetGSMass(); // Prot Mass of the Alt. Residual Nucleus - G4int akPDG=321; // Prototype PDGCode of the AlternativeKaon (K+) - G4double kaM=mK; // Prototype Mass of the AlternativeKaon (K+) - if(k1PDG==321) // Calculate alternative to the K+ meson - { - naPDG=90000000+qP*1000+qN-1; // PDG of the Alternative Residual Nucleus - naM=G4QNucleus(naPDG).GetGSMass(); // Mass of the Alt. Residual Nucleus - akPDG=311; // PDG Code of the Alternative kaon (K0) - kaM=mK0; // Mass of the Alternative kaon (K0) - } - G4double asum=naM+kaM; - if(asum TotM="<tM="< End of DecayAntiStrangness"<Get4Momentum(); // Get 4-momentum of the MultyBaryon - G4double qM = q4M.m(); // Mass of the Multybaryon - G4int qPDG = qH->GetPDGCode(); // PDG Code of the decaying multybar - G4QContent qQC = qH->GetQC(); // PDG Code of the decaying multibar -#ifdef pdebug - G4cout<<"G4QEnv::DecayMultyBaryon: *Called* PDG="< TotM="<GetQC(); - G4Quasmon* quasH = new G4Quasmon(qQC,q4M); - if(!CheckGroundState(quasH,true)) - { - G4cerr<<"---Warning---G4QE::DecMultyBar:FillAsItIsDiBar(I=1)="<? TotM="<GetQC(); - G4Quasmon* quasH = new G4Quasmon(qQC,q4M); - if(!CheckGroundState(quasH,true)) - { - G4cerr<<"---Warning---G4QEnv::DecMultyBar:FillAsItIs 3Baryon="<Get4Momentum(); // Get 4-momentum of the AlphaDibaryon - G4double qM = q4M.m(); // Real mass of the AlphaDibaryon - G4int qPDG = qH->GetPDGCode(); // PDG Code of the decayin AlphaDybaryon -#ifdef pdebug - G4cout<<"G4QEnv::DecayAlphaDiN: *Called* PDG="<? TotM="<Get4Momentum(); // Get 4-momentum of the Alpha-Baryon - G4double qM = q4M.m(); // Mass of Alpha-Baryon - G4int qPDG = qH->GetPDGCode(); // PDG Code of the decayin Alpha-Baryon - G4QContent qQC = qH->GetQC(); // PDG Code of the decaying Alpha-Bar -#ifdef pdebug - G4cout<<"G4QEnv::DecayAlphaBar: *Called* PDG="<1) - { - DecayMultyBaryon(qH); - //return; - } - else if(qPDG==92001002||qPDG==92002001||qPDG==91003001||qPDG==91001003||qPDG==93001001) - { - theQHadrons.push_back(qH); - //return; - } - else if(qPDG==92000003||qPDG==92003000||qPDG==93000002||qPDG==93002000) - { - G4int fPDG = 3122; // 1st Prototype for 2L+3n case - G4double fMass= mLamb; - G4int sPDG = 2112; - G4double sMass= mNeut; - if (qPDG==92003000) // "2L+3p" case - { - sPDG = 2212; - sMass= mProt; - } - else if(qPDG==93000002) // "2n+3L" case - { - fPDG = 2112; - fMass= mNeut; - sPDG = 3122; - sMass= mLamb; - } - else if(qPDG==93002000) // "2p+3L" case - { - fPDG = 2212; - fMass= mProt; - sPDG = 3122; - sMass= mLamb; - } - G4double tfM=fMass+fMass; - G4double tsM=sMass+sMass+sMass; - G4LorentzVector f4Mom(0.,0.,0.,tfM); - G4LorentzVector s4Mom(0.,0.,0.,tsM); - G4double sum=tfM+tsM; - if(fabs(qM-sum)M="<GetQC(); - G4Quasmon* quasH = new G4Quasmon(qQC,q4M); - if(!CheckGroundState(quasH,true)) - { - G4cerr<<"---Warning---G4QE::DecAlphBar:FillAsItIsAlphaBaryon="< TotM="<GetQC(); - G4Quasmon* quasH = new G4Quasmon(qQC,q4M); - if(!CheckGroundState(quasH,true)) - { - G4cerr<<"---Warning---G4QE::DecAlphBar:FillAsItIsAlphaBaryon="< TotM="<GetQC(); - G4Quasmon* quasH = new G4Quasmon(qQC,q4M); - if(!CheckGroundState(quasH,true)) - { - G4cerr<<"---Warning---G4QE::DecAlphBar:FillAsItIsAlphaBaryon="<0.&&dM<1.) - { -#ifdef pdebug - G4cerr<<"***Corrected***G4QEnv::DecayAlphaBar:fPDG="< TotM="< TotM="<GetQC(); - G4Quasmon* quasH = new G4Quasmon(qQC,q4M); - if(!CheckGroundState(quasH,true)) - { - G4cerr<<"---Warning---G4QE::DecAlphBar:FillAsItIsAlphaBaryon="<Get4Momentum(); // Get 4-momentum of the Dibaryon - G4double qM=q4M.m(); -#ifdef pdebug - G4cout<<"G4QEnv::DecayAlAl: *Called* PDG="<"<aaGSM+.01) // @@ Be8*->gamma+Be8 (as in evaporation) - if(2>3) - { - G4int fPDG = 22; - G4int sPDG = 90004004; - G4double fMass= 0.; - G4double sMass= aaGSM; - G4LorentzVector f4Mom(0.,0.,0.,fMass); - G4LorentzVector s4Mom(0.,0.,0.,sMass); // Mass is random since probab. time - G4double sum=fMass+sMass; - if(fabs(qM-sum) TotM="<GetQC(); - G4Quasmon* quasH = new G4Quasmon(qQC,q4M); - if(!CheckGroundState(quasH,true)) - { - G4cerr<<"---Warning---G4QE::DecAlphAlph:FillAsItIsAlphaAlpha="<Set4Momentum(s4Mom); - q4M=s4Mom; - } - G4int fPDG = 90002002; - G4int sPDG = 90002002; - G4double fMass= mAlph; - G4LorentzVector f4Mom(0.,0.,0.,fMass); - G4LorentzVector s4Mom(0.,0.,0.,fMass); - G4double sum=fMass+fMass; - if(fabs(qM-sum) TotM="<GetQC(); - G4Quasmon* quasH = new G4Quasmon(qQC,q4M); - if(!CheckGroundState(quasH,true)) - { - G4cerr<<"---Warning---G4QE::DecAlphaAlpha:FillAsItIsAlphaAlpha="<Set4Momentum(enva4M); - if(envPDG==92000000||envPDG==90002000||envPDG==90000002) DecayDibaryon(envaH); - else if(envPDG==93000000||envPDG==90003000||envPDG==90000003) - DecayMultyBaryon(envaH); - else if(envPDG==90002003||envPDG==90003002) DecayAlphaBar(envaH); //DelEqu - else if(envPDG==90004002) DecayAlphaDiN(envaH);//Decay alph+2p(alph+2n IsStable) - else if(envPDG==90004004) DecayAlphaAlpha(envaH); //DelEqu - else theQHadrons.push_back(envaH); // Fill 2nd Hadron (delete equivalent) + EvaporateResidual(envaH); // Try to evaporate residual (del.eq.) // Kill environment as it is already included in the decay theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0), G4LorentzVector(0.,0.,0.,0.)); } @@ -10562,19 +7865,13 @@ G4bool G4QEnvironment::CheckGroundState(G4Quasmon* quasm, G4bool corFlag) #ifdef pdebug G4cout<<"G4QE::CGS: fill newQH "< Try to use any hadron from the output @@ -10672,29 +7963,20 @@ G4bool G4QEnvironment::CheckGroundState(G4Quasmon* quasm, G4bool corFlag) { delete rqH; // Delete tmp "Residual Quasmon Hadron" #ifdef cdebug - G4cerr<<"***G4QEnv::CheckGS: Decay in Photon+ResQ tM="<2 && (hB==hS || hB==hC || !hC&&!hS)) DecayMultyBaryon(rqH); - else if(totPDG==90004002) DecayAlphaDiN(rqH);//Dec al+2p (al+2n isStable) - else if(totPDG==90002003||totPDG==90003002) DecayAlphaBar(rqH); //DelEqu - else if(totPDG==90004004) DecayAlphaAlpha(rqH); //DelEqu - else if(hB>0 && (hC<0 || hC>hB)) DecayIsonucleus(rqH); //DelEqu - else theQHadrons.push_back(rqH); // Fill ResidQuasmHadron (del eq) + EvaporateResidual(rqH); // Try to evaporate residual (del.eq.) if(envPDG!=90000000) theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0), G4LorentzVector(0.,0.,0.,0.)); return true; @@ -10741,7 +8023,7 @@ G4bool G4QEnvironment::CheckGroundState(G4Quasmon* quasm, G4bool corFlag) { #ifdef cdebug if(resQPDG==89998005) - G4cerr<<"***G4QEnv::CheckGS:DecayIn3 2N+Pi,tM="<1&&npiz>=0&&(resC<-1||resC-resB>1)) { #ifdef chdebug - G4cerr<<"***G4QE::CGS:Pi0, rPDG="<GetBaryonNumber(); - G4double hS=rqH->GetStrangeness(); - G4double hC=rqH->GetCharge(); #ifdef cdebug //if(resQPDG==89998004) G4cout<<"G4QE::CGS:#"<2 && (hB==hS||hB==hC||!hC&&!hS))DecayMultyBaryon(rqH); - else if(nnPDG==90004002) DecayAlphaDiN(rqH);//DecA+2p(A+2nIsStab) - else if(nnPDG==90002003 || nnPDG==90003002)DecayAlphaBar(rqH); - else if(nnPDG==90004004) DecayAlphaAlpha(rqH);//Delete Equivalent - else if(hB>0 && (hC<0 || hC>hB)) DecayIsonucleus(rqH); //DelEqu - else theQHadrons.push_back(rqH);//Fill ResidQuasmHadron (del eq.) + EvaporateResidual(rqH); // Try to evaporate residual (del.eq.) if(envPDG!=90000000) theEnvironment= G4QNucleus(G4QContent(0,0,0,0,0,0),G4LorentzVector(0.,0.,0.,0.)); return true; @@ -11046,8 +8308,8 @@ G4bool G4QEnvironment::CheckGroundState(G4Quasmon* quasm, G4bool corFlag) G4int tcBN=tcQC.GetBaryonNumber(); // Total Baryon Number if(tcBN==2|| !tcS&&!tcC||tcS==tcBN||tcC==tcBN)//dec DiBar or MulBar { - if(tcBN==2) DecayDibaryon(tcH); // Decay Dibaryon - else DecayMultyBaryon(tcH); // Decay Multibaryon + if(tcBN==2) theEnvironment.DecayDibaryon(tcH,&theQHadrons); // DB + else theEnvironment.DecayMultyBaryon(tcH,&theQHadrons); // MB G4QHadron* theLast = theQHadrons[theQHadrons.size()-1]; curHadr->Set4Momentum(theLast->Get4Momentum());//4-Mom of CurHadr G4QPDGCode lQP=theLast->GetQPDG(); @@ -11066,7 +8328,7 @@ G4bool G4QEnvironment::CheckGroundState(G4Quasmon* quasm, G4bool corFlag) curHadr->Set4Momentum(tt4M);// Change 4M of the Current Hadron curHadr->SetQPDG(tcQPDG); // Change QPDG of theCurrentHadron #ifdef cdebug - G4cerr<<"**G4QE::CGS:DecayIn2 TotComp+gam d="<0 && (hC<0 || hC>hB)) DecayIsonucleus(tcH); - else theQHadrons.push_back(tcH); // Fill Total Compound (delEq) + EvaporateResidual(tcH); // Try to evaporate(d.e.) } } else // @@ Fill the TotalCompound instead of the CurrentHadron @@ @@ -11114,16 +8369,13 @@ G4bool G4QEnvironment::CheckGroundState(G4Quasmon* quasm, G4bool corFlag) { delete rqH; // Delete tmp "Residual Quasmon Hadron" #ifdef cdebug - G4cerr<<"***G4QE::CheckGS:Decay in CurH+ResQ dM="<2 && (hB==hS || hB==hC || !hC&&!hS))DecayMultyBaryon(rqH); - else if(totPDG==90004002) DecayAlphaDiN(rqH);//Dec a+2p(a+2n isStab.) - else if(totPDG==90002003||totPDG==90003002) DecayAlphaBar(rqH);//DelE - else if(totPDG==90004004) DecayAlphaAlpha(rqH); //DelEqu - else if(hB>0 && (hC<0 || hC>hB)) DecayIsonucleus(rqH); //DelEqu - else theQHadrons.push_back(rqH); // Fill ResidQuasmHadron (del. eq.) + EvaporateResidual(rqH); // Try to evaporate(d.e.) if(envPDG!=90000000)theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0) ,G4LorentzVector(0.,0.,0.,0.)); return true; @@ -11191,7 +8436,7 @@ G4bool G4QEnvironment::CheckGroundState(G4Quasmon* quasm, G4bool corFlag) G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,ttGSM); // GSMass of RQ G4LorentzVector fgam4M = G4LorentzVector(0.,0.,0.,0.); // 4Mom of gamma 1 G4LorentzVector sgam4M = G4LorentzVector(0.,0.,0.,0.); // 4Mom of gamma 2 - if(!G4QHadron(tt4M).DecayIn3(quas4M,fgam4M,sgam4M))G4cerr<<"*3*"<Set4Momentum(fgam4M); // Change 4M of the Pion to Gamma @@ -11203,7 +8448,7 @@ G4bool G4QEnvironment::CheckGroundState(G4Quasmon* quasm, G4bool corFlag) return true; } } - else G4cerr<<"**G4QEnv::CheckGS:M="<Set4Momentum(quas4M); - if(resQPDG==92000000||resQPDG==90002000||resQPDG==90000002) DecayDibaryon(quasH); - else if(resQPDG==93000000||resQPDG==90003000||resQPDG==90000003) - DecayMultyBaryon(quasH); - else if(resQPDG==90004002) DecayAlphaDiN(quasH);//Decay alph+2p (alph+2n is stable) - else if(resQPDG==90002003||resQPDG==90003002) DecayAlphaBar(quasH); //DelEqu - else if(resQPDG==90004004) DecayAlphaAlpha(quasH); //DelEqu - else theQHadrons.push_back(quasH); // Fill ResidQuasmHadron (del.equivalent) + EvaporateResidual(quasH); // Try to evaporate quasmon (del. equiv.) envaH->Set4Momentum(enva4M); - if(envPDG==92000000||envPDG==90002000||envPDG==90000002) DecayDibaryon(envaH); - else if(envPDG==93000000||envPDG==90003000||envPDG==90000003) - DecayMultyBaryon(envaH); - else if(envPDG==90004002) DecayAlphaDiN(envaH);// Decay al+2p (a+2n is stable) - else if(envPDG==90002003||envPDG==90003002) DecayAlphaBar(envaH); //DelEqu - else if(envPDG==90004004) DecayAlphaAlpha(envaH); //DelEqu - else theQHadrons.push_back(envaH); // Fill Environment Hadron (del.Equiv.) + EvaporateResidual(envaH); // Try to evaporate residual (del. equiv.) } } else return false; @@ -11305,6 +8538,17 @@ G4bool G4QEnvironment::DecayInEnvQ(G4Quasmon* quasm) return true; } // End of "DecayInEnvQ" +// Add a Quasmon to the Environment +void G4QEnvironment::AddQuasmon(G4Quasmon* Q) +{ // ======================================== + theQuasmons.push_back(Q); + totCharge+=Q->GetCharge(); + totBaryoN+=Q->GetBaryonNumber(); + tot4Mom +=Q->Get4Momentum(); +#ifdef debug + G4cout<<"G4QEnv::AddQuasmon:t4M="<0: ~cost^cp, cp<0: ~(1-cost)^(-cp)] +G4bool G4QHadron::CopDecayIn2(G4LorentzVector& f4Mom, G4LorentzVector& s4Mom, + G4LorentzVector& dir, G4double cosp) +{// =================================================================== + G4double fM2 = f4Mom.m2(); + G4double fM = sqrt(fM2); // Mass of the 1st Hadron + G4double sM2 = s4Mom.m2(); + G4double sM = sqrt(sM2); // Mass of the 2nd Hadron + G4double iM2 = theMomentum.m2(); + G4double iM = sqrt(iM2); // Mass of the decaying hadron + G4double vP = theMomentum.rho(); // Momentum of the decaying hadron + G4double dE = theMomentum.e(); // Energy of the decaying hadron + G4bool neg=false; // Negative (backward) distribution of t + if(cosp<0) + { + cosp=-cosp; + neg=true; + } + if(dEfM="<iM="<1.) ct=1.; + if(ct<-1.) ct=-1.; + } + G4ThreeVector pVect=(ps*sin(phi))*vz+(ps*cos(phi))*vy+p*ct*vx; +#ifdef ppdebug + G4cout<<"G4QH::CopDIn2:ct="<f+s+t (t is with respect to minCf="< iM="< rR) + { + m12s = m12sMin + m12sBase*G4UniformRand(); + G4double e1=m12s+fM2-sM2; + G4double e2=iM2-m12s-tM2; + G4double four12=4*m12s; + G4double m13sRange=0.; + G4double dif=(e1*e1-four12*fM2)*(e2*e2-four12*tM2); + if(dif<0.) + { +#ifdef debug + if(dif<-.01) G4cerr<<"G4QHadron::RelDecayIn3:iM="< Exception2"<f+s+t. dN/dO [cp>0:~cost^cp, cp<0:~(1-cost)^(-cp)] +G4bool G4QHadron::CopDecayIn3(G4LorentzVector& f4Mom, G4LorentzVector& s4Mom, + G4LorentzVector& t4Mom, G4LorentzVector& dir, G4double cosp) +{// ==================================================================================== +#ifdef debug + G4cout<<"G4QH::CopDIn3:"<f="< iM="< rR) + { + m12s = m12sMin + m12sBase*G4UniformRand(); + G4double e1=m12s+fM2-sM2; + G4double e2=iM2-m12s-tM2; + G4double four12=4*m12s; + G4double m13sRange=0.; + G4double dif=(e1*e1-four12*fM2)*(e2*e2-four12*tM2); + if(dif<0.) + { +#ifdef debug + if(dif<-.01) G4cerr<<"G4QHadron::CopDecayIn3:iM="< Exception2"<*>* curA=natElements[i]; diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QNucleus.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QNucleus.cc index 8021cbe6b4..e25b25b932 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QNucleus.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QNucleus.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4QNucleus.cc,v 1.75 2007/05/15 13:30:47 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QNucleus.cc,v 1.91 2007/11/28 13:42:13 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QNucleus ---------------- // by Mikhail Kossov, Sept 1999. @@ -33,8 +33,9 @@ // ------------------------------------------------------------------ //#define debug -//#define cldebug //#define pdebug +//#define cldebug +//#define qdebug //#define pardeb //#define ppdebug @@ -53,10 +54,10 @@ G4double G4QNucleus::clustProb=4.; // clusterization probability in dense r G4double G4QNucleus::mediRatio=1.; // relative vacuum hadronization probability G4double G4QNucleus::nucleonDistance=.8*fermi; // Distance between nucleons (0.8 fm) -G4QNucleus::G4QNucleus() : G4QHadron(),Z(0),N(0),S(0),dZ(0),dN(0),dS(0),maxClust(0), - currentNucleon(-1) +G4QNucleus::G4QNucleus(): G4QHadron(),Z(0),N(0),S(0),dZ(0),dN(0),dS(0),maxClust(0), + probVect(),theImpactParameter(),theNucleons(), currentNucleon(-1),rho0(),radius(),Tb() { - Tb = new std::vector; + //Tb = new std::vector; probVect[0]=mediRatio; #ifdef pardeb G4cout<<"G4QNucleus::Constructor:(1) N="<2, totM="< GSMass="<"<"<"<nCBPP&&r<=lCBPP) { -#ifdef ppdebug +#ifdef pdebug G4cout<<"G4QNuc::EvaB:LAMBDA is selected for evap,r="<zCBPP&&r<=nCBPP) { -#ifdef ppdebug +#ifdef pdebug G4cout<<"G4QNuc::EvaBar: N is selected for evapor,r="<1&&GSResLL!=GSMass&&fMass+mLamb+GSResLL1&&N>1&&a>4&&GSResLA!=GSMass&&fMass+mAlph+ABarr+GSResLA1&&N>1&&a>4&&GSResLA!=GSMass&&fMass+mAlph+ABarr+GSResLAmNeut+mNeut+GSResNN) nnLim+=N*(N-1)*pow(totMass-mNeut-mNeut-GSResNN,2); @@ -2273,12 +2284,12 @@ G4bool G4QNucleus::EvaporateBaryon(G4QHadron* h1, G4QHadron* h2) else laLim+=S*alp*pow(totMass-mLamb-mAlph-GSResLA,2); } G4double aaLim=laLim; - if(alpha&&aaFlag&&totMass>mAlph+mAlph+SAABarr+GSResAA) + if(evalph&&aaFlag&&totMass>mAlph+mAlph+SAABarr+GSResAA) { if(barf) aaLim+=alp*pow(totMass-mAlph-mAlph-SAABarr-GSResAA,2)* - alpha*(Z-2)*(Z-3)*(N-2)*(N-3)*7/(a-5)/(a-6)/(a-7); + evalph*(Z-2)*(Z-3)*(N-2)*(N-3)*7/(a-5)/(a-6)/(a-7); else aaLim+=alp*pow(totMass-mAlph-mAlph-GSResAA,2)* - alpha*(Z-2)*(Z-3)*(N-2)*(N-3)*7/(a-5)/(a-6)/(a-7); + evalph*(Z-2)*(Z-3)*(N-2)*(N-3)*7/(a-5)/(a-6)/(a-7); } G4double r = aaLim*G4UniformRand(); if (aaLim&&laLimSetQPDG(gQPDG); @@ -2731,6 +2742,9 @@ void G4QNucleus::InitCandidateVector(G4QCandidateVector& theQCandidates, #ifdef debug G4int ind=0; #endif + G4int iQC = theQCandidates.size(); + if(iQC) for(G4int jq=0; jqnOfMesons) maxMes=nOfMesons; if(maxMes>=0) for (i=0; iSetPreProbability(pos); curCand->SetDenseProbability(pos*dense); #ifdef cldebug - G4cout<<"G4QN::PrepC: ClasterPDG="< End of Themporary 3 G4double GSM=GetGSMass(); +#ifdef debug + G4cout<<"G4QNucl::CBPenProb:GSM="<3); // @@ Temporary "Mass Barrier for mesons" @@ __________________ //else if(!B) wD=40.; @@ -3169,10 +3180,17 @@ G4double G4QNucleus::CoulBarPenProb(const G4double& CB, const G4double& E, ////else if(B>4) return 1.; //else if(B>4)wD=G4QNucleus(Z-C,N-B+C,S).GetGSMass()+G4QNucleus(C,B-C,S).GetGSMass()-GSM; if(wD<0.) wD=0.; +#ifdef debug + G4cout<<"G4QNucl::CBPenProb: wD="<mT) { - Tb->push_back(T); // Fill the thickness vector starting with b=0 + //Tb->push_back(T); // Fill the thickness vector starting with b=0 + Tb.push_back(T); // Fill the thickness vector starting with b=0 b+=db; // increment impact parameter G4double E=B*std::exp(-D*b*b); // b-dependent factor T=C*E/(1.+E); // T(b) in fm^-2 @@ -3647,17 +3666,25 @@ G4int G4QNucleus::HadrToNucPDG(G4int hPDG) else if(hPDG==3122||hPDG==3212) nPDG=91000000; // Lambda else if(hPDG== 211) nPDG=90000999; // pi+ else if(hPDG==-211) nPDG=89999001; // pi- - else if(hPDG== 213) nPDG=89001000; // K0 (anti-strange) - else if(hPDG== 213) nPDG=89000001; // K+ (anti-strange) - else if(hPDG==-213) nPDG=90999000; // anti-K0 (strange) - else if(hPDG==-213) nPDG=90999999; // K- (strange) - else if(hPDG==1114) nPDG=90001999; // Delta- - else if(hPDG==2224) nPDG=89999002; // Delta++ - else if(hPDG==3112) nPDG=91000999; // Sigma- - else if(hPDG==3222) nPDG=90999001; // Sigma+ - else if(hPDG==3312) nPDG=91999999; // Ksi- - else if(hPDG==3322) nPDG=91999000; // Ksi0 + else if(hPDG== 213) nPDG=89000001; // K0 (anti-strange) + else if(hPDG== 213) nPDG=89001000; // K+ (anti-strange) + else if(hPDG==-213) nPDG=90999999; // anti-K0 (strange) + else if(hPDG==-213) nPDG=90999000; // K- (strange) + else if(hPDG==1114) nPDG=89999002; // Delta- + else if(hPDG==2224) nPDG=90001999; // Delta++ + else if(hPDG==3112) nPDG=90999000; // Sigma- + else if(hPDG==3222) nPDG=91000999; // Sigma+ + else if(hPDG==3312) nPDG=91999000; // Ksi- + else if(hPDG==3322) nPDG=91999999; // Ksi0 else if(hPDG==3334) nPDG=92998999; // Omega- + if (hPDG==-2212) nPDG=8999000; // anti-p + else if(hPDG==-2112) nPDG=8999999; // anti-n + else if(hPDG==-3122||hPDG==3212) nPDG=89000000; //anti- Lambda + else if(hPDG==-3112) nPDG=89000999; // anti-Sigma- + else if(hPDG==-3222) nPDG=88999001; // anti-Sigma+ + else if(hPDG==-3312) nPDG=88001000; // anti-Ksi- + else if(hPDG==-3322) nPDG=88000001; // anti-Ksi0 + else if(hPDG==-3334) nPDG=87001001; // anti-Omega- return nPDG; } @@ -3684,3 +3711,3078 @@ G4int G4QNucleus::NucToHadrPDG(G4int nPDG) else if(nPDG==92998999) hPDG=3334; // Omega- return hPDG; } + +//Evaporate Residual Nucleus +void G4QNucleus::EvaporateNucleus(G4QHadron* qH, G4QHadronVector* evaHV) +{// ======================================================================= + static const G4double mHel6 = G4QPDGCode(2112).GetNuclMass(2,4,0); + static const G4double mAlph = G4QPDGCode(2112).GetNuclMass(2,2,0); + static const G4double mDeut = G4QPDGCode(2112).GetNuclMass(1,1,0); + static const G4double mNeut = G4QPDGCode(2112).GetMass(); + static const G4double mProt = G4QPDGCode(2212).GetMass(); + static const G4double mLamb = G4QPDGCode(3122).GetMass(); + static const G4double mPi = G4QPDGCode(211).GetMass(); + static const G4double mPi0 = G4QPDGCode(111).GetMass(); + static const G4double mK = G4QPDGCode(321).GetMass(); + static const G4double mK0 = G4QPDGCode(311).GetMass(); + static const G4QContent neutQC(2,1,0,0,0,0); + static const G4QContent protQC(1,2,0,0,0,0); + static const G4QContent lambQC(1,1,1,0,0,0); + static const G4QContent deutQC(3,3,0,0,0,0); + static const G4QContent alphQC(6,6,0,0,0,0); + G4int thePDG = qH->GetPDGCode(); // Get PDG code of the Residual Nucleus + G4int theBN = qH->GetBaryonNumber();// Baryon number of the nucleus + G4QContent theQC = qH->GetQC(); // Quark Content of the hadron + if((thePDG || thePDG==10) && theQC.GetBaryonNumber()>0) thePDG=theQC.GetZNSPDGCode(); + G4LorentzVector q4M = qH->Get4Momentum(); // Get 4-momentum of theTotalNucleus + if(theBN<1 || thePDG<80000000 || thePDG==90000000) // Hadron, anti-nucleous, or vacuum + { +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateNucleus: Nucleus="<Get4Momentum()< PDG="<"<142.) // @@ to avoid more precise calculations + { + if(thePDG==90001000) // D+ -> n + pi+ + { + gsM=mNeut; + thePDG=90000001; + decPDG=211; + decM=mPi; + } + else if(thePDG==90000001) // D+ -> n + pi+ + { + gsM=mProt; + thePDG=90001000; + decPDG=-211; + decM=mPi; + } + else + { + decPDG=111; + decM=mPi0; + } + } + G4LorentzVector h4Mom(0.,0.,0.,gsM); // GSMass must be updated in previous while-LOOP + G4LorentzVector g4Mom(0.,0.,0.,decM); + if(!G4QHadron(q4M).DecayIn2(h4Mom, g4Mom)) + { +#ifdef qdebug + if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (3) qH="<tM="<"<size()<tM="<"<0&&(theC<0||theC>theBN-theS)) + { + DecayIsonucleus(qH,evaHV); +#ifdef qdebug + qH=0; // @Not necessary@ +#endif + }//"UnavoidIsonucl" + else if(theBN==2) + { + DecayDibaryon(qH,evaHV); +#ifdef qdebug + qH=0; // @Not necessary@ +#endif + } //=> "Dibaryon" case (del eq.) + else if(thePDG==89999003||thePDG==90002999) //=> "ISO-dibarion" (analyse and decay) + { + // @@ Check that it never comes here !! + G4int nucPDG = 2112; + G4double nucM = mNeut; + G4int piPDG = -211; + if(thePDG==90002999) + { + nucPDG = 2212; + nucM = mProt; + piPDG = 211; + } + if(totMass>mPi+nucM+nucM) + { + G4LorentzVector n14M(0.,0.,0.,nucM); + G4LorentzVector n24M(0.,0.,0.,nucM); + G4LorentzVector pi4M(0.,0.,0.,mPi); + if(!G4QHadron(q4M).DecayIn3(n14M,n24M,pi4M)) + { +#ifdef qdebug + if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (9) qH="< 2N="<2020.) //=> IsoDB + { + // @@ Pi0 can be taken into account ! + G4int n1PDG = 2212; + G4int n2PDG = 2112; + G4int piPDG = -211; + G4double n1M = mProt; + G4double n2M = mNeut; + if (thePDG==90002000) piPDG = 211; // pp -> np + pi- + else if(thePDG==90000002) piPDG = -211; // nn -> np + pi- + else // np -> 50%(nnpi+) 50%(pppi-) + { + if(G4UniformRand()>.5) + { + n1PDG=2112; + n1M=mNeut; + piPDG = 211; + } + else + { + n2PDG=2212; + n2M=mProt; + piPDG = -211; + } + } + if(totMass>mPi+n1M+n2M) + { + G4LorentzVector n14M(0.,0.,0.,n1M); + G4LorentzVector n24M(0.,0.,0.,n2M); + G4LorentzVector pi4M(0.,0.,0.,mPi); + if(!G4QHadron(q4M).DecayIn3(n14M,n24M,pi4M)) + { + G4cerr<<"***G4QNucl::EvapNucleus:IsoDN, tM="< N1="<GetQC()<Get4Momentum()<<" FillAsIs"<1) + { + DecayMultyBaryon(qH,evaHV); +#ifdef qdebug + qH=0; // @Not necessary@ +#endif + } + else if(theBN==5) + { + DecayAlphaBar(qH,evaHV); +#ifdef qdebug + qH=0; // @Not necessary@ +#endif + } // Decay unstable A5 system (del eq.) + else + { + evaHV->push_back(qH); +#ifdef qdebug + qH=0; +#endif + } // Fill as it is (del eq.) + } + else if(theBN>1&&thePDG>88000000&&thePDG<89000000)//==> 2antiK in the nucleus (!Comment!) + { + G4cout<<"---Warning---G4QNucl::EvaNuc:MustNotBeHere.PDG="<=bN) nucPDG+=999000; + else + { + nucPDG+=999999; + k1PDG = 311; + mK1= mK0; + } + if(bZ>bN) nucPDG+=999000; + else + { + nucPDG+=999999; + k2PDG = 311; + mK2= mK0; + } + G4double nucM = G4QNucleus(nucPDG).GetGSMass(); + G4cout<<"-Warning-G4QN::EvN:M="< N="< " + < " + <GetQC()<Get4Momentum()<<" AsIs"<push_back(qH); +#ifdef qdebug + qH=0; // @Not necessary@ (Can't be checked) +#endif + return; + } + else if((bA==1||!bsCond&&!dbsCond)&&totMass>GSMass+.003)//==>Fuse&DecayTech(noGamDec) + //else if(2>3) // Close "Fuse&Decay Technology" ***@@@*** + { +#ifdef pdebug + G4cout<<"G4QN::EvaN:SplitBar, s="< GSM="<size(); // Total#of QHadrons in Vector at this point + G4bool bnfound=true; // Cure "back fusion fragment not found" + while(nOfOUT) // Try BackFusionDecays till something is in + { + G4QHadron* theLast = (*evaHV)[nOfOUT-1]; + G4int lastBN = theLast->GetBaryonNumber(); + G4int nFrag = theLast->GetNFragments(); + //////////////////G4int gam = theLast->GetPDGCode(); +#ifdef pdebug + G4cout<<"G4QN::EvaNuc:*BackFus*,BN="< "Delete Last Decayed Hadron" case + { + G4QHadron* thePrev = (*evaHV)[nOfOUT-2]; + nFrag = thePrev->GetNFragments(); + G4int prevBN = thePrev->GetBaryonNumber(); +#ifdef pdebug + G4int prevPDG = thePrev->GetPDGCode(); + G4cout<<"G4QNucl::EvaNucl: DelTheLast, nFr="<-0.001) // Decay in the qH and the last is impossible + { + G4QHadron* evH = new G4QHadron(totPDG,q4M); // Create QHadron for CompResidNuc + if(dM<=0.) + { + evaHV->pop_back(); // lastQHadron is excluded from QHadrV asIs in TRN + delete theLast; //When kill, DON'T forget to delete lastQHadron asAnInstance! +#ifdef qdebug + if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (16) qH="<push_back(evH);// Fill TRN to HVect asIs (delete equivalent) + } + else // Decay TotalResidualNucleus in GSM+Last + { + G4LorentzVector r4Mom(0.,0.,0.,GSMass); + if(!G4QHadron(q4M).DecayIn2(last4M,r4Mom)) // Decay failed + { + evaHV->pop_back(); // lastQHadron is excluded from QHadrV as is in TRN + delete theLast; //When kill,DON'T forget to delete lastQHadron asAnInstance +#ifdef qdebug + if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (17) qH="<push_back(evH);// Fill TRN to Vect as it is (delete equivalent) +#ifdef pdebug + G4cout<<"***G4QN::EvaN:DecayIn L"<push_back(nucH);// Fill the Residual Nucleus (del.eq.) + } + } + bnfound=false; + break; + } + thePDG=totPDG; // Make ResidualNucleus outOf theTotResidualNucl + GSMass=G4QPDGCode(thePDG).GetMass();// Update the Total Residual Nucleus mass + evaHV->pop_back(); // the last QHadron is excluded from OUTPUT + delete theLast;//!!When kill,DON'T forget to delete theLastQHadron asAnInstance!! + nOfOUT--; // Update the value of OUTPUT entries + } + } + if(bnfound) + { + G4LorentzVector h4Mom(0.,0.,0.,GSMass);//GSMass must be updated inPreviousWhileLOOP + G4LorentzVector g4Mom(0.,0.,0.,0.); + if(!G4QHadron(q4M).DecayIn2(h4Mom, g4Mom)) + { +#ifdef qdebug + if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (19) qH="<tM="<totResN="<0&&bA>1) // There's aNeutr in theNucl, which can be split + { + G4QContent resQC=totQC-neutQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + nResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (nResPDG==90000001) nResM=mNeut; + else if(nResPDG==90001000) nResM=mProt; + else if(nResPDG==91000000) nResM=mLamb; + else nResM=resN.GetMZNS(); // min mass of the Residual Nucleus + } + G4double pResM =1000000.; // Prototype of mass of residual for a proton + G4int pResPDG=0; // Prototype of PDGCode of residual for a proton + if(bsCond==2212&&bZ>0&&bA>1) // There's aProton in Nucl, which can be split + { + G4QContent resQC=totQC-protQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + pResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (pResPDG==90000001) pResM=mNeut; + else if(pResPDG==90001000) pResM=mProt; + else if(pResPDG==91000000) pResM=mLamb; + else pResM =resN.GetMZNS(); // min mass of the Residual Nucleus + } + G4double lResM =1000000.; // Prototype of mass of residual for a Lambda + G4int lResPDG=0; // Prototype of PDGCode of residual for a Lambda + if(bsCond==3122&&bS>0&&bA>1) // There's aLambd in theNucl, which can be split + { + G4QContent resQC=totQC-lambQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + lResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (lResPDG==90000001) lResM=mNeut; + else if(lResPDG==90001000) lResM=mProt; + else if(lResPDG==91000000) lResM=mLamb; + else lResM =resN.GetMZNS(); // min mass of the Residual Nucleus + } + G4double dResM =1000000.; // Prototype of mass of residual for a Alpha + G4int dResPDG=0; // Prototype of PDGCode of residual for a Alpha + if(bsCond==90001001&&bN>0&&bZ>0&&bA>2)// There's aDeuter in Nucl, which canBeRadiated + { + G4QContent resQC=totQC-deutQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + dResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (dResPDG==90000001) dResM=mNeut; + else if(dResPDG==90001000) dResM=mProt; + else if(dResPDG==91000000) dResM=mLamb; + else dResM =resN.GetMZNS(); // minMass of the Residual Nucleus + } + G4double aResM =1000000.; // Prototype of mass of residual for a Alpha + G4int aResPDG=0; // Prototype of PDGCode of residual for a Alpha + if(bsCond==90002002&&bN>1&&bZ>1&&bA>4)// There's Alpha in theNucl, which can be split + { + G4QContent resQC=totQC-alphQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + aResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (aResPDG==90000001) aResM=mNeut; + else if(aResPDG==90001000) aResM=mProt; + else if(aResPDG==91000000) aResM=mLamb; + else aResM =resN.GetMZNS(); // minMass of the Residual Nucleus + } + G4double nnResM =1000000.; // Prototype of mass of residual for a dineutron + G4int nnResPDG=0; // Prototype of ResidualPDGCode for a dineutron + if(dbsCond&&bN>1&&bA>2) // It's nucleus and there is a dineutron + { + G4QContent resQC=totQC-neutQC-neutQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + nnResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (nnResPDG==90000001) nnResM=mNeut; + else if(nnResPDG==90001000) nnResM=mProt; + else if(nnResPDG==91000000) nnResM=mLamb; + else nnResM =resN.GetMZNS(); // min mass of the Residual Nucleus + } + G4double ppResM =1000000.; // Prototype of mass of residual for a diproton + G4int ppResPDG=0; // Prototype of ResidualPDGCode for a diproton + if(dbsCond&&bZ>1&&bA>2) // It's nucleus and there is a diproton + { + G4QContent resQC=totQC-protQC-protQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + ppResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (ppResPDG==90000001) ppResM=mNeut; + else if(ppResPDG==90001000) ppResM=mProt; + else if(ppResPDG==91000000) ppResM=mLamb; + else ppResM =resN.GetMZNS(); // min mass of the Residual Nucleus + } + G4double npResM =1000000.; // Prototype of ResidualMass for proton+neutron + G4int npResPDG=0; // Prototype of ResidualPDGCode for a prot+neut + if(dbsCond&&bN>0&&bZ>0&&bA>2) // It's nucleus and there is aProton & aNeutron + { + G4QContent resQC=totQC-neutQC-protQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + npResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (npResPDG==90000001) npResM=mNeut; + else if(npResPDG==90001000) npResM=mProt; + else if(npResPDG==91000000) npResM=mLamb; + else npResM =resN.GetMZNS(); // min mass of the Residual Nucleus + } + G4double lnResM =1000000.; // Prototype of residualMass for lambda+neutron + G4int lnResPDG=0; // Prototype of ResidualPDGCode for aLambda+Neut + if(dbsCond&&bN>0&&bS>0&&bA>2) // It's nucleus and there is aLambda & aNeutron + { + G4QContent resQC=totQC-lambQC-protQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + lnResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (lnResPDG==90000001) lnResM=mNeut; + else if(lnResPDG==90001000) lnResM=mProt; + else if(lnResPDG==91000000) lnResM=mLamb; + else lnResM =resN.GetMZNS(); // min mass of the Residual Nucleus + } + G4double lpResM =1000000.; // Prototype of residualMass for a proton+lambda + G4int lpResPDG=0; // Prototype of ResidualPDGCode for theProt+lamb + if(dbsCond&&bS>0&&bZ>0&&bA>2) // It's nucleus and there is aProton and aLambda + { + G4QContent resQC=totQC-neutQC-protQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + lpResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (lpResPDG==90000001) lpResM=mNeut; + else if(lpResPDG==90001000) lpResM=mProt; + else if(lpResPDG==91000000) lpResM=mLamb; + else lpResM =resN.GetMZNS(); // minMass of the Residual Nucleus + } + G4double llResM =1000000.; // Prototype of mass of residual for a di-lambda + G4int llResPDG=0; // Prototype of ResidPDGCode for the di-lambda + if(dbsCond&&bS>1&&bA>2) // It's nucleus and there is a di-lambda + { + G4QContent resQC=totQC-neutQC-protQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + llResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (llResPDG==90000001) llResM=mNeut; + else if(llResPDG==90001000) llResM=mProt; + else if(llResPDG==91000000) llResM=mLamb; + else llResM =resN.GetMZNS(); // min mass of the Residual Nucleus + } +#ifdef pdebug + G4cout<<"G4QNucleus::EvaNucl: rP="<DecayIn2(a4Mom,b4Mom)) + { + evaHV->push_back(qH); // Fill as it is (delete equivalent) +#ifdef qdebug + qH=0; // @Not necessary@ (Can't be checked) +#endif + G4cout<<"---Warning---G4QNucleus::EvaNuc:rP="<push_back(qH); // FillAsItIs (del.eq.) +#ifdef qdebug + qH=0; // @Not necessary@ (Can't be checked) +#endif + return; + } + else // "System is below mass shell and can't decay" case + { +#ifdef pdebug + G4cout<<"***G4QNucl::EvaNuc: tM="<push_back(qH); // Correct or fill as it is +#ifdef qdebug + qH=0; // @Not necessary@ (can't be checked) +#endif + return; + } + } + else // ===> Evaporation of excited system + { +#ifdef pdebug + G4cout<<"G4QN::EvaNuc:***EVA***tPDG="<GSM="< "< bCB="<push_back(bHadron); // "Alpha radiation" case (del.eq.) + else if(bB==5) DecayAlphaBar(bHadron,evaHV);// "Alpha+Baryon Decay" case (del.equiv.) + else if(bPDG==90004002) DecayAlphaDiN(bHadron,evaHV); // alph+2p(alph+2n is stable) + else if(bPDG==90004004) DecayAlphaAlpha(bHadron,evaHV);// Alph+Alph Decay (del.eq.) + else + { + delete bHadron; + G4cerr<<"***G4QNuc::EvaNuc:bB="<2 - unexpected evaporated fragment"<2) EvaporateNucleus(rHadron,evaHV); // Continue evaporation (@@ Self-call) + else if(rB==2) // => "Dibaryon" case needs decay @@ DecayDibaryon + { + G4double rGSM = rHadron->GetQPDG().GetMass(); // Ground State mass of the dibaryon +#ifdef pdebug + G4cout<<"G4QNuc::EvaNuc:ResidDibM="< M="<push_back(rHadron); // (DE) + else DecayDibaryon(rHadron,evaHV); // => "Dibaryon Decay" case (del.equivalent) + } + else if(rB==5) DecayAlphaBar(rHadron,evaHV);// "Alpha+Baryon Decay" case (del.equiv.) + else if(rPDG==90004002) DecayAlphaDiN(rHadron,evaHV);//alph+2p (alph+2n is stable) + else if(rPDG==90004004) DecayAlphaAlpha(rHadron,evaHV);//Alpha+Alpha Decay (delEq) + else evaHV->push_back(rHadron); // Fill ResidNucl=Baryon to OutputHadronVector + } // End of Evaporation of excited system +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateNucleus: === End of the evaporation attempt"< "Decay if impossible evaporate" case + { +#ifdef pdebug + G4cout<<"*G4QNucleus::EvaporateNucleus: InputHadron4M="<GetQC(); // Quark content of the hadron + G4QChipolino resChip(totQC); // define the Residual as a Chipolino + G4QPDGCode h1=resChip.GetQPDG1(); + G4double m1 =h1.GetMass(); // Mass of the first hadron + G4QPDGCode h2=resChip.GetQPDG2(); + G4double m2 =h2.GetMass(); // Mass of the second hadron + if(totMass+.0001>m1+m2) + { +#ifdef qdebug + if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (24) qH="< h1M="<h1+h2 DecIn2 error"); + } + G4QHadron* H2 = new G4QHadron(h2.GetPDGCode(),qe4M); +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateNucleus:(2) h2="<push_back(H2); // (delete equivalent) + G4QHadron* H1 = new G4QHadron(h1.GetPDGCode(),fq4M); +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateNucleus:(2) h1="<push_back(H1); // (delete equivalent) + } + else + { +#ifdef qdebug + if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (25) qH="<2) + { +#ifdef pdebug + G4cout<<"**G4QNuc::EvaNuc:EmerFill(2) "<GetQC()<Get4Momentum()<push_back(qH); +#ifdef qdebug + qH=0; +#endif + } + else if ((thePDG==221||thePDG==331)&&totMass>mPi+mPi) // "Decay in pipi" case + { +#ifdef qdebug + if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (26) qH="< pi+ + pi-"<Pi+Pi DecayIn2 error"); + } + G4QHadron* H1 = new G4QHadron(211,fq4M); +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateNucleus:(3) PiPlus="<push_back(H1); // (delete equivalent) + G4QHadron* H2 = new G4QHadron(-211,qe4M); +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateNucleus:(3) PiMinus="<push_back(H2); // (delete equivalent) + } + else if ((thePDG==221||thePDG==331)&&totMass>mPi0+mPi0) // "Decay in 2pi0" case + { +#ifdef qdebug + if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (27) qH="< pi0 + pi0"<Pi+Pi DecayIn2 error"); + } + G4QHadron* H1 = new G4QHadron(111,fq4M); +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateNucleus:(4) Pi01="<push_back(H1); // (delete equivalent) + G4QHadron* H2 = new G4QHadron(111,qe4M); +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateNucleus:(4) Pi02="<push_back(H2); // (delete equivalent) + } + else if (totMass>totM) // "Radiative Hadron decay" case + { +#ifdef qdebug + if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (28) qH="<h1M="<H+gamma DecIn2 error"); + } + G4QHadron* H2 = new G4QHadron(thePDG,qe4M); +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateNucleus:(5) tot="<push_back(H2); // (delete equivalent) + G4QHadron* H1 = new G4QHadron(22,fq4M); +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateNucleus:(5) GamFortot="<push_back(H1); // (delete equivalent) + } + else if (thePDG==111||thePDG==221||thePDG==331) // "Gamma+Gamma decay" case + { +#ifdef qdebug + if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (29) qH="<gamma + gamma"<g+g DecIn2 error"); + } + G4QHadron* H2 = new G4QHadron(22,qe4M); +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateNucleus:(6) gam1="<push_back(H2); // (delete equivalent) + G4QHadron* H1 = new G4QHadron(22,fq4M); +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateNucleus:(6) gam2="<push_back(H1); // (delete equivalent) + } + else + { +#ifdef qdebug + if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (30) qH="<>>> End. "<Get4Momentum(); // Get 4-momentum of the Isonucleus + G4double qM=q4M.m(); // Real mass of the Isonucleus + G4QContent qQC = qH->GetQC(); // Get QuarcContent of the Isonucleus + G4int qBN=qQC.GetBaryonNumber(); // Baryon number of the IsoNucleus + G4int qC=qQC.GetCharge(); // Charge of the IsoNucleus + G4int qS=qQC.GetStrangeness(); // Strangness of the IsoNucleus +#ifdef pdebug + G4cout<<"G4QNuc:DecayIson:QC="<qBN) // *** Should not be here *** + { + G4cout<<"--Warning(Upgrade)--G4QNuc::DecIsonuc:FillAsIs,4M="<push_back(qH); // fill as it is (delete equivalent) +#ifdef qdebug + qH=0; +#endif + return; + } + G4int qPN=qC-qBN; // Number of pions in the Isonucleus + G4int fPDG = 2212; // Prototype for nP+(Pi+) case + G4int sPDG = 211; + G4int tPDG = 3122; // @@ Sigma0 (?) + G4double fMass= mProt; + G4double sMass= mPi; + G4double tMass= mLamb; // @@ Sigma0 (?) + // ========= Negative state ====== + if(qC<0) // ====== Only Pi- can help + { + if(qS&&qBN==qS) // --- n*Lamb + k*(Pi-) State --- + { + sPDG = -211; + if(-qC==qS && qS==1) // Only one Sigma- like (qBN=1) + { + if(fabs(qM-mSigM)push_back(qH); // Fill Sigma- as it is + return; + } + else if(qM>mLamb+mPi) //(2) Sigma- => Lambda + Pi- decay + { + fPDG = 3122; + fMass= mLamb; + } + else if(qM>mSigM) //(2) Sigma+ => Sigma+ + gamma decay + { + fPDG = 3112; + fMass= mSigM; + sPDG = 22; + sMass= 0.; + } + else //(2) Sigma- => Neutron + Pi- decay + { + fPDG = 2112; + fMass= mNeut; + } + qPN = 1; // #of (Pi+ or gamma)'s = 1 + } + else if(-qC==qS) //(2) a few Sigma- like + { + qPN = 1; // One separated Sigma- + fPDG = 3112; + sPDG = 3112; + sMass= mSigM; + qBN--; + fMass= mSigM; + } + else if(-qC>qS) //(2) n*(Sigma-)+m*(Pi-) + { + qPN = -qC-qS; // #of Pi-'s + fPDG = 3112; + fMass= mSigM; + } + else //(2) n*(Sigma-)+m*Lambda (-qCn*Lamb+m*Neut+k*(Pi-) State (qSnPin) //(3) m*P+n*(Sigma+)+k*Lambda + { + qS-=nPin; // #of Lambdas + qPN = nPin; // #of Sigma+ + sPDG = 3112; + sMass= mSigM; + } + else //(3) m*N+n*(Sigma-)+k*(Pi-) (qS1 && qBN==qS) //(2) m*Lamb(m>1) ***Should not be here*** + { + qPN = 1; + fPDG = 3122; + sPDG = 3122; + sMass= mLamb; + qBN--; + fMass= mLamb; + } + else if(!qS && qBN>1) //(2) n*Neut(n>1) ***Should not be here*** + { + qPN = 1; + fPDG = 2112; + sPDG = 2112; + sMass= mNeut; + qBN--; + fMass= mNeut; + } + else G4cout<<"*?*G4QNuc::DecayIsonucleus: (1) QC="<0) // n*Lamb+(m*P)+(k*Pi+) + { + if(qS && qS+qC==qBN) //(2) n*Lamb+m*P ***Should not be here*** + { + qPN = qS; + qS = 0; + fPDG = 2212; + sPDG = 3122; + sMass= mLamb; + qBN = qC; + fMass= mProt; + } + else if(qS && qC n*L+m*Pi+ State + { + if(qC==qS && qS==1) // Only one Sigma+ like State + { + if(fabs(qM-mSigP)push_back(qH); + return; + } + else if(qM>mLamb+mPi) //(2) Sigma+ => Lambda + Pi+ decay + { + fPDG = 3122; + fMass= mLamb; + } + else if(qM>mNeut+mPi) //(2) Sigma+ => Neutron + Pi+ decay + { + fPDG = 2112; + fMass= mNeut; + } + else if(qM>mSigP) //(2) Sigma+ => Sigma+ + gamma decay + { + fPDG = 3222; + fMass= mSigP; + sPDG = 22; + sMass= 0.; + } + else //(2) Sigma+ => Proton + gamma decay + { + fPDG = 2212; + fMass= mProt; + sPDG = 22; + sMass= 0.; + } + qPN = 1; // #of (Pi+ or gamma)'s = 1 + } + else if(qC==qS) //(2) a few Sigma+ like hyperons + { + qPN = 1; + fPDG = 3222; + sPDG = 3222; + sMass= mSigP; + qBN--; + fMass= mSigP; + } + else if(qC>qS) //(2) n*(Sigma+)+m*(Pi+) + { + qPN = qC-qS; // #of Pi+'s + fPDG = 3222; + qBN = qS; // #of Sigma+'s + fMass= mSigP; + } + else //(2) n*(Sigma+)+m*Lambda + { + qBN -= qC; // #of Lambda's + fPDG = 3122; + fMass= mLamb; + qPN = qC; // #of Sigma+'s + sPDG = 3222; + sMass= mSigP; + } + qS = 0; // All above are decays in 2 + } + else if(qS && qC>qBN-qS) // n*Lamb+m*P+k*Pi+ + { + qBN -= qS; // #of protons + G4int nPip = qC-qBN; // #of Pi+'s + if(qS==nPip) //(2) m*P+n*Sigma+ + { + qPN = qS; // #of Sigma+ + sPDG = 3222; + sMass= mSigP; + qS = 0; + } + else if(qS>nPip) //(3) m*P+n*(Sigma+)+k*Lambda + { + qS -= nPip; // #of Lambdas + qPN = nPip; // #of Sigma+ + sPDG = 3222; + sMass= mSigP; + } + else //(3) m*P+n*(Sigma+)+k*(Pi+) + { + qPN = nPip-qS; // #of Pi+ + tPDG = 3222; + tMass= mSigP; + } + } + if(qC1) //(2) m*Prot(m>1) ***Should not be here*** + { + qPN = 1; + fPDG = 2212; + sPDG = 2212; + sMass= mProt; + qBN--; + fMass= mProt; + } + else if(qC<=qBN||!qBN) G4cout<<"*?*G4QNuc::DecayIsonucleus: (2) QC="<qBN //(2) Default condition n*P+m*(Pi+) + } + G4double tfM=qBN*fMass; + G4double tsM=qPN*sMass; + G4double ttM=0.; + if(qS) ttM=qS*tMass; + G4LorentzVector f4Mom(0.,0.,0.,tfM); + G4LorentzVector s4Mom(0.,0.,0.,tsM); + G4LorentzVector t4Mom(0.,0.,0.,ttM); + G4double sum=tfM+tsM+ttM; + if(fabs(qM-sum) TotM="<push_back(qH); // fill as it is (delete equivalent) +#ifdef qdebug + qH=0; +#endif + return; + } + else if(qS && (qM TotM="<push_back(qH); // fill as it is (delete equivalent) +#ifdef qdebug + qH=0; +#endif + return; + } +#ifdef pdebug + G4cout<<"G4QNuc::DecayIsonucleus: *DONE* n="<push_back(Hj); // Fill "Hj" (delete equivalent) + } + } + if(qS) + { + t4Mom/=qS; + for(G4int il=0; ilpush_back(Hk); // Fill "Hk" (delete equivalent) + } + } +#ifdef qdebug + if (qH) + { + G4cout << "G4QNucleus::DecayIsonucleus: deleted at end - PDG: " + << qH->GetPDGCode() << G4endl; + delete qH; + } +#endif +} // End of DecayIsonucleus + +//Decay of the excited dibaryon in two baryons +void G4QNucleus::DecayDibaryon(G4QHadron* qH, G4QHadronVector* evaHV) +{// ============================================ + static const G4double mPi = G4QPDGCode(211).GetMass(); + static const G4double mNeut= G4QPDGCode(2112).GetMass(); + static const G4double mProt= G4QPDGCode(2212).GetMass(); + static const G4double mSigM= G4QPDGCode(3112).GetMass(); + static const G4double mLamb= G4QPDGCode(3122).GetMass(); + static const G4double mSigP= G4QPDGCode(3222).GetMass(); + static const G4double mKsiM= G4QPDGCode(3312).GetMass(); + static const G4double mKsiZ= G4QPDGCode(3322).GetMass(); + static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0); + static const G4double mPiN = mPi+mNeut; + static const G4double mPiP = mPi+mProt; + static const G4double dmPiN= mPiN+mPiN; + static const G4double dmPiP= mPiP+mPiP; + static const G4double nnPi = mNeut+mPiN; + static const G4double ppPi = mProt+mPiP; + static const G4double lnPi = mLamb+mPiN; + static const G4double lpPi = mLamb+mPiP; + static const G4double dNeut= mNeut+mNeut; + static const G4double dProt= mProt+mProt; + static const G4double dLamb= mLamb+mLamb; + static const G4double dLaNe= mLamb+mNeut; + static const G4double dLaPr= mLamb+mProt; + static const G4double dSiPr= mSigP+mProt; + static const G4double dSiNe= mSigM+mNeut; + static const G4double dKsPr= mKsiZ+mProt; + static const G4double dKsNe= mKsiM+mNeut; + static const G4double eps = 0.003; + static const G4QNucleus vacuum(90000000); + G4bool four=false; // defFALSE for 4-particle decay of diDelta + G4LorentzVector q4M = qH->Get4Momentum(); // Get 4-momentum of the Dibaryon + G4int qPDG = qH->GetPDGCode(); // PDG Code of the decaying dybaryon + G4double qM = q4M.m(); + G4double rM = qM+eps; // Just to avoid the computer accuracy +#ifdef pdebug + G4cout<<"G4QNucl::DecayDibaryon: *Called* PDG="<=dmPiN) // "diDelta--" case + { + sPDG = -211; + fPDG = 2112; + sMass= mPi; + fMass= mNeut; + four = true; + } + else if(qPDG==90000002 && rM>=dNeut) // "dineutron" case + { + fPDG = 2112; + sPDG = 2112; + fMass= mNeut; + sMass= mNeut; + } + else if(qPDG==90001001 && rM>=mDeut) // "exited deutron" case + { + if(fabs(qM-mDeut)push_back(qH); // Fill as it is (delete equivalent) + return; + } + else if(mProt+mNeut=dLaNe) // "Lambda-neutron" case + { + fPDG = 2112; + sPDG = 3122; + fMass= mNeut; + sMass= mLamb; + } + else if(qPDG==91001000 && rM>=dLaPr) // "Lambda-proton" case + { + sPDG = 3122; + sMass= mLamb; + } + else if(qPDG==89999003 && rM>=nnPi) // "neutron/Delta-" case + { + fPDG = 2112; + sPDG = 2112; + tPDG = -211; + fMass= mNeut; + sMass= mNeut; + } + else if(qPDG==90002999 && rM>=ppPi) // "proton/Delta++" case + { + tPDG = 211; + } + else if(qPDG==90999002 && rM>=lnPi) // "lambda/Delta-" case + { + fPDG = 2112; + sPDG = 3122; + tPDG = -211; + fMass= mNeut; + sMass= mLamb; + } + else if(qPDG==91001999 && rM>=lpPi) // "lambda/Delta+" case + { + sPDG = 3122; + tPDG = 211; + sMass= mLamb; + } + else if(qPDG==90999002 && rM>=dSiNe) // "Sigma-/neutron" case + { + fPDG = 2112; + sPDG = 3112; + fMass= mNeut; + sMass= mSigM; + } + else if(qPDG==91001999 && rM>=dSiPr) // "Sigma+/proton" case + { + sPDG = 3222; + sMass= mSigP; + } + else if(qPDG==92000000 && rM>=dLamb) // "diLambda" case + { + fPDG = 3122; + sPDG = 3122; + fMass= mLamb; + sMass= mLamb; + } + else if(qPDG==91999001 && rM>=dKsNe) // "Ksi-/neutron" case + { + fPDG = 2112; + sPDG = 3312; + fMass= mNeut; + sMass= mKsiM; + } + else if(qPDG==92000999 && rM>=dKsPr) // "Ksi0/proton" case + { + sPDG = 3322; + sMass= mKsiZ; + } + else if(qPDG!=90002000|| rMGetStrangeness(); + G4int qB = qH->GetBaryonNumber(); + if(qB>0&&qS<0) // Antistrange diBarion + { + DecayAntiStrange(qH,evaHV); +#ifdef qdebug + qH=0; +#endif + return; + } + else + { + delete qH; +#ifdef qdebug + qH=0; +#endif + G4cerr<<"***G4QN::DecDiBar: badPDG="<? TotM="<push_back(qH); +#ifdef qdebug + qH=0; +#endif + return; + } +#ifdef pdebug + G4cout<<"G4QNucleus::DecayDibaryon:(2) *DONE* f4M="<push_back(H2); // Fill "H2" (delete equivalent) + } + else if(four) + { + q4M=q4M/2.; // Divided in 2 !!! + qM/=2.; // Divide the mass in 2 ! + G4double sum=fMass+sMass; + if(fabs(qM-sum)tM="<push_back(qH); +#ifdef qdebug + qH=0; +#endif + return; + } +#ifdef pdebug + G4cout<<"G4QNucleus::DecayDibaryon:(3) *DONE* f4M="<push_back(H2); // Fill "H2" (delete equivalent) + // Now the second pair mus be decayed + if(fabs(qM-sum)? (DD2,Can't be here) TotM="<push_back(H4); // Fill "H2" (delete equivalent) + delete qH; +#ifdef qdebug + qH=0; +#endif + } + else + { + G4double sum=fMass+sMass+tMass; + if(fabs(qM-sum)TotM="<push_back(qH); +#ifdef qdebug + qH=0; +#endif + return; + } +#ifdef pdebug + G4cout<<"G4QNuc::DecayDibaryon:(5) *DONE* f4M="<push_back(H2); // Fill "H2" (delete equivalent) + G4QHadron* H3 = new G4QHadron(tPDG,t4Mom); // Create a Hadron for the meson + evaHV->push_back(H3); // Fill "H3" (delete equivalent) + } +#ifdef qdebug + if (qH) + { + G4cout << "G4QNucleus::DecayDiBaryon: deleted at end - PDG: " + << qH->GetPDGCode() << G4endl; + delete qH; + } +#endif +} // End of DecayDibaryon + +//Decay of the nuclear states with antistrangeness (K:/K0) +void G4QNucleus::DecayAntiStrange(G4QHadron* qH, G4QHadronVector* evaHV) +{// =============================================== + static const G4double mK = G4QPDGCode(321).GetMass(); + static const G4double mK0 = G4QPDGCode(311).GetMass(); + static const G4double eps = 0.003; + G4LorentzVector q4M = qH->Get4Momentum(); // Get 4-mom of the AntiStrangeNuclearState + G4double qM = q4M.m(); // Real mass of the AntiStrangeNuclearState + G4QContent qQC= qH->GetQC(); // PDGCode of theDecayingAntiStrangeNuclSt. + G4int qS = qH->GetStrangeness(); // Strangness of the AntiStrangeNuclearState + G4int qB = qH->GetBaryonNumber(); // BaryonNumber of the AntiStrangeNuclearSt. + G4int qP = qH->GetCharge(); // Charge of the AntiStranNuclState (a#of p) +#ifdef pdebug + G4cout<<"G4QNuc::DecAntS:QC="<=0 || qB<1) + { + delete qH; +#ifdef qdebug + qH=0; +#endif + G4cerr<<"G4QNuc::DecayAntiStrange:QC="<0 && qP>qN) // a#of protons > a#of neutrons + { + if(qP>=bH) // => "Enough protons in nucleus" case + { + if(qN>=sH) + { + n1=sH; + n2=bH; + } + else + { + G4int dPN=qP-qN; + if(dPN>=aS) + { + n1=0; + n2=aS; + } + else + { + G4int sS=(aS-dPN)/2; + G4int bS=aS-dPN-sS; + sS+=dPN; + if(qP>=sS && qN>=bS) + { + n1=bS; + n2=sS; + } + else if(qP=bH) + { + if(qP>=sH) + { + n2=sH; + n1=bH; + } + else + { + G4int dNP=qN-qP; + if(dNP>=aS) + { + n1=aS; + n2=0; + } + else + { + G4int sS=(aS-dNP)/2; + G4int bS=aS-sS; + if(qN>=bS && qP>=sS) + { + n1=bS; + n2=sS; + } + else if(qNqM+eps && n1==1) // Try to use another K if this is the only kaon + { + G4int naPDG=90000000+(qP-1)*1000+qN; // Prot PDG of the Alternative Residual Nucleus + G4double naM=G4QNucleus(naPDG).GetGSMass(); // Prot Mass of the Alt. Residual Nucleus + G4int akPDG=321; // Prototype PDGCode of the AlternativeKaon (K+) + G4double kaM=mK; // Prototype Mass of the AlternativeKaon (K+) + if(k1PDG==321) // Calculate alternative to the K+ meson + { + naPDG=90000000+qP*1000+qN-1; // PDG of the Alternative Residual Nucleus + naM=G4QNucleus(naPDG).GetGSMass(); // Mass of the Alt. Residual Nucleus + akPDG=311; // PDG Code of the Alternative kaon (K0) + kaM=mK0; // Mass of the Alternative kaon (K0) + } + G4double asum=naM+kaM; + if(asumpush_back(qH); // @@ Can cause problems with particle conversion in G4 + return; + } +#ifdef pdebug + G4cout<<"G4QNuc::DecAntiS: nK+N "<push_back(H1); // Fill "H1" (delete equivalent) + } + G4QHadron* H2 = new G4QHadron(qPDG,s4Mom); // Create a Hadron for the Nucleus + //evaHV->push_back(H2); // Fill "H2" (delete equivalent) + EvaporateNucleus(H2,evaHV); // Fill "H2" (delete equivalent) +#ifdef debug + G4cout<<"G4QNucleus::DecAntiStr:*** After EvaporateNucleus nH="<size()<tM="<push_back(qH); // @@ Can cause problems with particle conversion in G4 + return; + } +#ifdef pdebug + G4cout<<"G4QNuc::DecAntiS:*DONE* nPDG="<push_back(H1); // Fill "H1" (delete equivalent) + } + s4Mom/=n2; + for(G4int i2=0; i2push_back(H2); // Fill "H2" (delete equivalent) + } + G4QHadron* H3 = new G4QHadron(qPDG,t4Mom); // Create a Hadron for the nucleus + //evaHV->push_back(H3); // Fill "H3" (delete equivalent) + EvaporateNucleus(H3,evaHV); // Fill "H3" (delete equivalent) + } +#ifdef qdebug + if (qH) + { + G4cout << "G4QNucleus::DecayAntiStrange: deleted at end - PDG: " + << qH->GetPDGCode() << G4endl; + delete qH; + } +#endif +#ifdef debug + G4cout<<"G4QNucleus::DecayAntiStrange: ===> End of DecayAntiStrangness"<Get4Momentum(); // Get 4-momentum of the MultyBaryon + G4double qM = q4M.m(); // Mass of the Multybaryon + G4int qPDG = qH->GetPDGCode(); // PDG Code of the decaying multybar + G4QContent qQC = qH->GetQC(); // PDG Code of the decaying multibar +#ifdef pdebug + G4cout<<"G4QNuc::DecayMultyBaryon: *Called* PDG="<push_back(qH); + else if(totBN==2) + { + G4LorentzVector f4Mom(0.,0.,0.,fMass); + G4LorentzVector s4Mom(0.,0.,0.,fMass); + G4double sum=fMass+fMass; + if(fabs(qM-sum) TotM="<push_back(qH); + return; + } +#ifdef pdebug + G4cout<<"G4QNucleus::DecMulBar:*DONE* fPDG="<push_back(H1); // Fill "H1" (delete equivalent) + G4QHadron* H2 = new G4QHadron(fPDG,s4Mom); // Create a Hadron for the 2-nd baryon + evaHV->push_back(H2); // Fill "H2" (delete equivalent) + } + else if(totBN==3) + { + G4LorentzVector f4Mom(0.,0.,0.,fMass); + G4LorentzVector s4Mom(0.,0.,0.,fMass); + G4LorentzVector t4Mom(0.,0.,0.,fMass); + G4double sum=fMass+fMass+fMass; + if(fabs(qM-sum)? TotM="<push_back(qH); + return; + } +#ifdef pdebug + G4cout<<"G4QNuc::DecMBar:*DONE*, fPDG="<push_back(H1); // Fill "H1" (delete equivalent) + G4QHadron* H2 = new G4QHadron(fPDG,s4Mom); // Create a Hadron for the 2-nd baryon + evaHV->push_back(H2); // Fill "H2" (delete equivalent) + G4QHadron* H3 = new G4QHadron(fPDG,t4Mom); // Create a Hadron for the 3-d baryon + evaHV->push_back(H3); // Fill "H3" (delete equivalent) + } + else + { + // @@It must be checked, that they are not under the mass shell + // !! OK !! Checked by the warning print that they are mostly in the Ground State !! + G4LorentzVector f4Mom=q4M/totBN; // @@ Too simple solution (split in two parts!) +#ifdef pdebug + // Warning for the future development + G4cout<<"*G4QNul::DecMulBar:SplitMultiBar inEqParts M="<GetPDGCode() << G4endl; + delete qH; + } +#endif +} // End of DecayMultyBaryon + +//Decay of the excited alpha+2p or alpha+2n systems +void G4QNucleus::DecayAlphaDiN(G4QHadron* qH, G4QHadronVector* evaHV) +{// ============================================ + static const G4double mNeut= G4QPDGCode(2112).GetMass(); + static const G4double mProt= G4QPDGCode(2212).GetMass(); + static const G4double mAlph= G4QPDGCode(2112).GetNuclMass(2,2,0); + static const G4double mHel6= G4QPDGCode(2112).GetNuclMass(2,4,0); + static const G4double eps=0.003; + G4LorentzVector q4M = qH->Get4Momentum(); // Get 4-momentum of the AlphaDibaryon + G4double qM = q4M.m(); // Real mass of the AlphaDibaryon + G4int qPDG = qH->GetPDGCode(); // PDG Code of the decayin AlphaDybaryon +#ifdef pdebug + G4cout<<"G4QNuc::DecayAlphaDiN: *Called* PDG="<push_back(qH); // Fill as it is (delete equivalent) + return; + } + else if(mNeut+mNeut+mAlph? TotM="<push_back(qH); + return; + } +#ifdef pdebug + G4cout<<"G4QNuc::DecAl2N: fPDG="<push_back(H1); // Fill "H1" (delete equivalent) + G4QHadron* H2 = new G4QHadron(fPDG,s4Mom); // Create a Hadron for the 2-nd baryon + evaHV->push_back(H2); // Fill "H2" (delete equivalent) + G4QHadron* H3 = new G4QHadron(sPDG,t4Mom); // Create a Hadron for the alpha + evaHV->push_back(H3); // Fill "H3" (delete equivalent) +} // End of DecayAlphaDiN + +//Decay of the excited alpha+bayon state in alpha and baryons +void G4QNucleus::DecayAlphaBar(G4QHadron* qH, G4QHadronVector* evaHV) +{// ============================================ + static const G4double mNeut= G4QPDGCode(2112).GetMass(); + static const G4double mProt= G4QPDGCode(2212).GetMass(); + static const G4double mLamb= G4QPDGCode(3122).GetMass(); + static const G4double mAlph= G4QPDGCode(2112).GetNuclMass(2,2,0); + static const G4double mTrit= G4QPDGCode(2112).GetNuclMass(1,2,0); + static const G4double mHe3 = G4QPDGCode(2112).GetNuclMass(2,1,0); + static const G4double eps=0.003; + G4LorentzVector q4M = qH->Get4Momentum(); // Get 4-momentum of the Alpha-Baryon + G4double qM = q4M.m(); // Mass of Alpha-Baryon + G4int qPDG = qH->GetPDGCode(); // PDG Code of the decayin Alpha-Baryon + G4QContent qQC = qH->GetQC(); // PDG Code of the decaying Alpha-Bar +#ifdef pdebug + G4cout<<"G4QNucleus::DecayAlphaBar: *Called* PDG="<1) DecayMultyBaryon(qH,evaHV); + else if(qPDG==92001002||qPDG==92002001||qPDG==91003001||qPDG==91001003||qPDG==93001001) + evaHV->push_back(qH); + else if(qPDG==92000003||qPDG==92003000||qPDG==93000002||qPDG==93002000) + { + G4int fPDG = 3122; // 1st Prototype for 2L+3n case + G4double fMass= mLamb; + G4int sPDG = 2112; + G4double sMass= mNeut; + if (qPDG==92003000) // "2L+3p" case + { + sPDG = 2212; + sMass= mProt; + } + else if(qPDG==93000002) // "2n+3L" case + { + fPDG = 2112; + fMass= mNeut; + sPDG = 3122; + sMass= mLamb; + } + else if(qPDG==93002000) // "2p+3L" case + { + fPDG = 2212; + fMass= mProt; + sPDG = 3122; + sMass= mLamb; + } + G4double tfM=fMass+fMass; + G4double tsM=sMass+sMass+sMass; + G4LorentzVector f4Mom(0.,0.,0.,tfM); + G4LorentzVector s4Mom(0.,0.,0.,tsM); + G4double sum=tfM+tsM; + if(fabs(qM-sum)M="<push_back(qH); +#ifdef qdebug + qH=0; +#endif + return; + } +#ifdef pdebug + G4cout<<"G4QNucleus::DecAlB:*DONE*, fPDG="<push_back(H1); // Fill "H1" (delete equivalent) + evaHV->push_back(H1); // Fill "H1" (delete equivalent) + G4LorentzVector rs4Mom=s4Mom/3; + G4QHadron* H2 = new G4QHadron(sPDG,rs4Mom); // Create a Hadron for the 2-nd baryon + evaHV->push_back(H2); // Fill "H2" (delete equivalent) + evaHV->push_back(H2); // Fill "H2" (delete equivalent) + evaHV->push_back(H2); // Fill "H2" (delete equivalent) + } + else if(qPDG==90004001||qPDG==90001004) + { + G4int fPDG = 90002001; // Prototype for "He3+2p" case + G4double fMass= mHe3; + G4int sPDG = 2212; + G4double sMass= mProt; + if (qPDG==90001004) // "t+2n" case + { + fPDG = 90001002; + fMass= mTrit; + sPDG = 2112; + sMass= mNeut; + } + G4LorentzVector f4Mom(0.,0.,0.,fMass); + G4LorentzVector s4Mom(0.,0.,0.,sMass); + G4LorentzVector t4Mom(0.,0.,0.,sMass); + G4double sum=fMass+sMass+sMass; + if(fabs(qM-sum) TotM="<push_back(qH); +#ifdef qdebug + qH=0; +#endif + return; + } +#ifdef pdebug + G4cout<<"G4QNucl::DecAlB: *DONE*, f="<push_back(H2); // Fill "H2" (delete equivalent) + G4QHadron* H3 = new G4QHadron(sPDG,t4Mom); // Create a Hadron for the 3-d baryon + evaHV->push_back(H3); // Fill "H3" (delete equivalent) + } + else if(qPDG==94000001||qPDG==94001000||qPDG==91000004||qPDG==91004000) + { + G4int fPDG = 3122; // Prototype for "4L+n" case + G4double fMass= mLamb+mLamb; + G4int sPDG = 2112; + G4double sMass= mNeut; + if (qPDG==94001000) // "4L+p" case + { + sPDG = 2212; + sMass= mProt; + } + else if(qPDG==91000004) // "4n+L" case + { + fPDG = 2112; + fMass= mNeut+mNeut; + sPDG = 3122; + sMass= mLamb; + } + else if(qPDG==91004000) // "4p+L" case + { + fPDG = 2212; + fMass= mProt+mProt; + sPDG = 3122; + sMass= mLamb; + } + G4LorentzVector f4Mom(0.,0.,0.,fMass+fMass); + G4LorentzVector s4Mom(0.,0.,0.,sMass); + G4double sum=fMass+fMass+sMass; + if(fabs(qM-sum) TotM="<push_back(qH); +#ifdef qdebug + qH=0; +#endif + return; + } +#ifdef pdebug + G4cout<<"G4QNuc::DecAlphaB: *DONE*, fPDG="<push_back(H1); // Fill "H1" (delete equivalent) + evaHV->push_back(H1); // Fill "H1" (delete equivalent) + evaHV->push_back(H1); // Fill "H1" (delete equivalent) + evaHV->push_back(H1); // Fill "H1" (delete equivalent) + G4QHadron* H2 = new G4QHadron(sPDG,s4Mom); // Create a Hadron for the 2-nd baryon + evaHV->push_back(H2); // Fill "H2" (delete equivalent) + } + else if(qPDG==90003002||qPDG==90002003||qPDG==91002002) + { + G4int fPDG = 90002002; // Prototype for "alpha+n" case + G4int sPDG = 2112; + G4double fMass= mAlph; + G4double sMass= mNeut; + if(qPDG==90003002) // "alpha+p" case + { + sPDG = 2212; + sMass= mProt; + } + else if(qPDG==9100202) // "alpha+l" case + { + sPDG = 3122; + sMass= mLamb; + } + else if(qPDG!=90002003) + { + evaHV->push_back(qH); // Fill hadron as it is (delete equivalent) +#ifdef qdebug + qH=0; +#endif + //EvaporateNucleus(qH, evaHV); // Evaporate Nucleus (delete equivivalent) + return; + } + G4double dM=fMass+sMass-qM; + if(dM>0.&&dM<1.) + { +#ifdef pdebug + G4cout<<"***Corrected***G4QNuc::DecayAlphaBar:fPDG="< TotM="< TotM="<push_back(qH); +#ifdef qdebug + qH=0; +#endif + return; + } +#ifdef pdebug + G4cout<<"G4QNucl::DecAlBar:*DONE*a4M="<push_back(H1); // Fill "H1" (delete equivalent) + G4QHadron* H2 = new G4QHadron(sPDG,s4Mom); // Create a Hadron for the baryon + evaHV->push_back(H2); // Fill "H2" (delete equivalent) + } + else G4cout<<"---Warning---G4QNucleus::DecayAlphaBar: Unknown PDG="<GetPDGCode() << G4endl; + delete qH; + } +#endif +} // End of DecayAlphaBar + +//Decay of the excited alpha+alpha state in 2 alphas +void G4QNucleus::DecayAlphaAlpha(G4QHadron* qH, G4QHadronVector* evaHV) +{// ============================================== + static const G4double mAlph= G4QPDGCode(2112).GetNuclMass(2,2,0); + static const G4double aaGSM= G4QPDGCode(2112).GetNuclMass(4,4,0); + static const G4double eps=0.003; + G4int qPDG = qH->GetPDGCode(); // PDG Code of the decayin dialpha + if(qPDG!=90004004) + { + delete qH; +#ifdef qdebug + qH=0; +#endif + G4cerr<<"***G4QNucleus::DecayAlphaAlpha: qPDG="<Get4Momentum(); // Get 4-momentum of the Dibaryon + G4double qM=q4M.m(); +#ifdef pdebug + G4cout<<"G4QNucleus::DecayAlAl: *Called* PDG="<"<aaGSM+.01) // @@ Be8*->gamma+Be8 (as in evaporation) @@ gamma cooling + if(2>3) + { + G4int fPDG = 22; + G4int sPDG = 90004004; + G4double fMass= 0.; + G4double sMass= aaGSM; + G4LorentzVector f4Mom(0.,0.,0.,fMass); + G4LorentzVector s4Mom(0.,0.,0.,sMass); // Mass is random since probab. time + G4double sum=fMass+sMass; + if(fabs(qM-sum) TotM="<push_back(qH); + return; + } +#ifdef pdebug + G4cout<<"G4QNucleus::DecayAlphaAlpha: *DONE* gam4M="<Set4Momentum(s4Mom); + q4M=s4Mom; + } + G4int fPDG = 90002002; + G4int sPDG = 90002002; + G4double fMass= mAlph; + G4LorentzVector f4Mom(0.,0.,0.,fMass); + G4LorentzVector s4Mom(0.,0.,0.,fMass); + G4double sum=fMass+fMass; + if(fabs(qM-sum) TotM="<push_back(qH); + return; + } +#ifdef pdebug + G4cout<<"G4QNucleus::DecayAlphaAlpha: *DONE* fal4M="<push_back(H2); // Fill "H2" (delete equivalent) +} // End of DecayAlphaAlpha diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGCode.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGCode.cc index f1970f1809..3daa59898c 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGCode.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGCode.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4QPDGCode.cc,v 1.53 2006/11/27 10:44:55 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QPDGCode.cc,v 1.55 2007/10/07 13:31:42 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QPDGCode ---------------- // by Mikhail Kossov, Sept 1999. @@ -1733,12 +1733,12 @@ G4double G4QPDGCode::CalculateNuclMass(G4int z, G4int n, G4int s) } else if(Bn==3) { - if(!S) return mT; // Bn=3 + if(!S) // Bn=3 { if (Z==1 && N== 2) return mT; // tritium else if(Z==2 && N== 1) return mHe3; // hetrium } - if(S== 1 && Z==-1 && N== 3) return dnS; // nnSig- + if(S== 1 && Z==-1 && N== 3) // nnSig- { if (Z==-1 && N== 3) return dnS; // nnSig- else if(Z== 3 && N==-1) return dpS; // ppSig+ @@ -1974,9 +1974,9 @@ G4double G4QPDGCode::CalculateNuclMass(G4int z, G4int n, G4int s) if(S>0) { G4double bs=0.; - if (S==2) bs=a2; - else if(S==3) bs=a3; - else if(S>3) bs=b7*exp(-b8/(A+1.)); + if (A==2) bs=a2; + else if(A==3) bs=a3; + else if(A>3) bs=b7*exp(-b8/(A+1.)); m+=S*(mL-bs); } #ifdef debug @@ -2305,47 +2305,33 @@ void G4QPDGCode::ConvertPDGToZNS(G4int nucPDG, G4int& z, G4int& n, G4int& s) {// ======================================================================= if(nucPDG>80000000&&nucPDG<100000000) // Condition of conversion { - G4int r=nucPDG-90000000; - if(!r) - { - z=0; - n=0; - s=0; - return; - } - // Antinucleus extraction - if(r<-200000) // Negative -> anLambdas + z=0; + n=0; + s=0; + G4int r=nucPDG; + if(r==90000000) return; + G4int cn =r%1000; // candidate to #of neutrons + if(cn) { - G4int ns=(-r-200000)/1000000+1; - r+=ns*1000000; // Get out aL from PDG - s=-ns; // Remember aLambdas + if(cn>500) cn-=1000; // AntiNeutrons + n=cn; // Increment neutrons + r-=cn; // Subtract them from the residual + if(r==90000000) return; } - if(r<-200) // Negative -> aProtons + G4int cz =r%1000000; // candidate to #of neutrons + if(cz) { - G4int nz=(-r-200)/1000+1; - r+=nz*1000; // Get out aP from PDG - z=-nz; // Remember aProtons + if(cz>500000) cz-=1000000; // AntiProtons + z=cz/1000; // Number of protons + r-=cz; // Subtract them from the residual + if(r==90000000) return; } - if(r<0) // Negative -> aNeutrons + G4int cs =r%10000000; // candidate to #of neutrons + if(cs) { - G4int nn=-r; - r=0; // Get out aN from PDG - n=-nn; // Remember aNeutrons + if(cs>5000000) cs-=10000000; // AntiLambda + s=cs/1000000; // Number of Lambdas } - G4int sz =r/1000; // Residual to analize - n+=r%1000; // A#of Neutrons - if(n>700) // AntiNutrons - { - n-=1000; - z++; - } - z+=sz%1000; // A#of Protons - if(z>700) // AntiProtons - { - z-=1000; - s++; - } - s+=sz/1000; // A#of Lambdas } return; } diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGToG4Particle.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGToG4Particle.cc index f1f503761e..2ec6c74303 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGToG4Particle.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGToG4Particle.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QPDGToG4Particle.cc,v 1.5 2006/06/29 20:07:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QG4ToG4Particle singletone class ------------------ // by Mikhail Kossov, December 2003. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParentCluster.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParentCluster.cc index 90d5bcc359..ed7e8263f1 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParentCluster.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParentCluster.cc @@ -25,7 +25,7 @@ // // // $Id: G4QParentCluster.cc,v 1.25 2006/11/27 10:44:55 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QParentCluster ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParticle.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParticle.cc index f40e1a519a..1f7b2658b5 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParticle.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParticle.cc @@ -25,7 +25,7 @@ // // // $Id: G4QParticle.cc,v 1.33 2006/11/27 10:44:55 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QParticle ---------------- // by Mikhail Kossov, Sept 1999. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParton.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParton.cc index b122b429c8..0b0ba50e63 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParton.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParton.cc @@ -25,7 +25,7 @@ // // // $Id: G4QParton.cc,v 1.3 2006/12/12 11:02:22 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPartonPair.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPartonPair.cc index 11f8ad1543..fb191e7e9d 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPartonPair.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPartonPair.cc @@ -26,7 +26,7 @@ #include "G4QPartonPair.hh" // // $Id: G4QPartonPair.cc,v 1.1 2006/10/30 10:40:36 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPomeron.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPomeron.cc index 973fa0c316..56d1e3ee2a 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPomeron.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPomeron.cc @@ -25,7 +25,7 @@ // // // $Id: G4QPomeron.cc,v 1.2 2006/12/12 11:02:22 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QSplitter.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QSplitter.cc index 9c91cb7376..e3829fa466 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QSplitter.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QSplitter.cc @@ -28,7 +28,7 @@ // // // $Id: G4QSplitter.cc,v 1.6 2006/11/27 10:44:55 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QSplitter ---------------- // by Mikhail Kossov, August 2005. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QString.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QString.cc index 5014633186..11f9265ea4 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QString.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QString.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4QString.cc,v 1.3 2006/12/12 11:02:22 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QString.cc,v 1.4 2007/07/06 07:38:36 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file @@ -409,15 +409,14 @@ G4QHadronVector* G4QString::FragmentString(G4bool QL) // Creates a string, using only the end-partons of the string G4QString* G4QString::CPExcited() { - G4QParton* Left = new G4QParton(GetLeftParton()); - G4QParton* Right= new G4QParton(GetRightParton()); - return new G4QString(Left,Right,GetDirection()); + G4QParton* LeftParton = new G4QParton(GetLeftParton()); + G4QParton* RightParton= new G4QParton(GetRightParton()); + return new G4QString(LeftParton,RightParton,GetDirection()); } // End of CPExcited // Simple decay of the string G4QHadronVector* G4QString::LightFragmentationTest() { - static const G4double MassCut = 0.35*GeV; // Check string decay threshold G4QHadronVector* result=0; // return 0 when string exceeds the mass cut diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4Quasmon.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4Quasmon.cc index a46b526576..b1f9df377e 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4Quasmon.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4Quasmon.cc @@ -27,8 +27,8 @@ //34567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 // // -// $Id: G4Quasmon.cc,v 1.94 2007/04/20 15:50:18 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Quasmon.cc,v 1.104 2007/11/29 18:59:57 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4Quasmon ---------------- // by Mikhail Kossov, July 1999. @@ -234,6 +234,7 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) static const G4QContent K0QC(1,0,0,0,0,1); static const G4QContent KpQC(0,1,0,0,0,1); static const G4QContent zeroQC(0,0,0,0,0,0); + //static const G4QContent AlphQC(6,6,0,0,0,0); // ** Temporary ** for Enhancement Attempt static const G4LorentzVector zeroLV(0.,0.,0.,0.); static const G4QNucleus vacuum= G4QNucleus(zeroLV,NUCPDG); static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0); @@ -266,12 +267,20 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) ////////////static const G4double third =1./3.; ////////////static const G4double conCon=197.327; // Conversion constant (hc) ////////////static const G4double rCB = 1.09;// R=r_CB*(a^1/3+A^1/3)(CoulBarRadius(fm)) - static const G4double eps = 0.003; // 3keV cut to split instead of decay + static const G4double eps = 0.003; // 3keV cut to split instead of decay G4double momPhoton=phot4M.rho(); G4double addPhoton=phot4M.e(); #ifdef debug - G4cout<<"G4Quasmon::HadrQ:*=>>>START QUASMON HADRONIZATION<<<=*, aP="<>>START QUASMON HADRONIZATION<<<=*, aP="<0.) gaF=true; theEnvironment=qEnv; // NuclearEnvironment of Quasmon is defined +#ifdef debug + G4cout<<"G4Quasmon::HadrQ:Env="<> Now all possible candidates for hadronization are defined and initialized theWorld= G4QCHIPSWorld::Get(); // Get a pointer to the CHIPS World G4int nP= theWorld->GetQPEntries(); // A#of initialized particles in CHIPS World @@ -338,7 +350,8 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) G4double pMass=0.; // EnvirBoundedParentCluster Mass for sel.fragm G4double pNMass=0.; // NucleBoundedParentCluster Mass for sel.fragm G4double delta=0.; // Binding energy - G4double deltaN=0.; // Binding energy in Total Nucleus + G4double deltaN=0.; // Binding energy in Total Nucleu + G4double minT=0.; // MinimalMass of FreeResidualQuasmon G4double minSqT=0.; // MinimalSqMass of FreeResidualQuasmon G4double minSqB=0.; // MinimalSqMass of BoundedResidualQuasmon G4double minSqN=0.; // MinimalSqMass of ResidQuasm+ResidEnvironment @@ -433,11 +446,11 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) G4int envZ =theEnvironment.GetZ(); // Z of the current Nuclear Environment G4int envS =theEnvironment.GetS(); // S of the current Nuclear Environment G4int envA =theEnvironment.GetA(); // A of the current Nuclear Environment - //G4int maxActEnv=256; // n-Dod + p-Dod // maxEnv.(in d) to compensate the Q recoilMom - G4int maxActEnv=256; // n-Dod + p-Dod // maxEnv.(in d) to compensate the Q recoilMom + //G4int maxActEnv=4; // n-Dod + p-Dod // maxEnv.(in d) to compensate the Q recoilMom + G4int maxActEnv=256; // n-Dod + p-Dod // maxEnv.(in d) to compensate the Q recoilMom G4int dmaxActEnv=maxActEnv+maxActEnv; // 2maxEnv.(in d) to compensate the Q recoilMom //G4double fAE=static_cast(maxActEnv); - if(envA>dmaxActEnv&&envA<256) + if(envA>dmaxActEnv) //if(2>3) // Corresponds to envA>256 { //G4int oEn=static_cast(fAE/sqrt(static_cast(envA))); @@ -541,7 +554,7 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) G4cout<<"G4Q::HQ:eN="<0.&&iniBN>1)// PhotonAbsorbDiagramContrib(@@HiddenPar) //if(addPhoton>0.&&G4UniformRand()<0.5)// PhotonAbsorbDiagramContrib(@@HiddenPar) //if(addPhoton>0.&&G4UniformRand()<0.75)// PhotonAbsorbDiagramContrib(@@HiddenPar) - if(addPhoton>0.&&G4UniformRand()<0.8)// PhotonAbsorbDiagramContrib(@@HiddenPar) + ///if(addPhoton>0.&&G4UniformRand()<0.8)// PhotonAbsorbDiagramContrib(@@HiddenPar) //if(addPhoton>0.&&iniBN>1)//PhotonAbsorbDiagramContrib(Photon's captured by N quark) - //if(addPhoton>0.)// PhotonAbsorbDiagramContrib(Photon is always captured by quarks) + if(addPhoton>0.)// PhotonAbsorbDiagramContrib(Photon is always captured by quarks) //if(2>3) // Photon capture by quark is closed { //nOfQ=valQ.GetQ()-valQ.GetAQ(); // Recover nOfQ for the not excited cluster @@ -757,9 +770,10 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) q4Mom-= phot4M; // recover Quasmon-Cluster without the Photon qM2 = q4Mom.m2(); // Update the Current squared mass of Quasmon quasM = sqrt(qM2); // Update the Current Mass of Quasmon - G4double kpow=static_cast(nOfQ-2); + G4double kpow=static_cast(nOfQ-2); // n-3+1 because of integration if(kpow<1.) kpow=1.; - cost=addPhoton/momPhoton; // =1 for the real photon + G4double xmi=(momPhoton-addPhoton)*quasM; // Minimum residual mass 2kM + if(xmi<0.) xmi=0.; // While must be commented from here and down __________________________ //G4bool frat=true;//[k/(k+p) factor of QuarkExch]*[p/k factor of fixed ct]=p/(p+k) //G4int cMax=27;//For m_gam=0:*[k/(k+p) factor 1/s{m<kMom/(addPhoton+kMom); // //frat=G4UniformRand()>kMom*kMom/(addPhoton+kMom)/(addPhoton+kMom); @@ -802,13 +825,13 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) //if(kMom>=quasM/2.) kMom=quasM/2.-.001; // | // --- End of the pseudo Fermi-motion corection-----------------------------------^ // --- Virtual gluoCompton correction starts here --------------------------------* - G4double hms=32400.; // T_c^2 | - //G4double hms=16200.; // T_c^2/2 (OK) | - //G4double hms=8100.; // T_c^2/4 | - G4double x=kMom*kMom/hms; // | - G4double dc=(pow(x,G4UniformRand())-1.)/x; // smearing delta-function absorbtion | - if(dc<0.)dc=0.; // only positive smearing | - cost-=dc; // @@ for virtPhotons smear in both dir| + //G4double hms=32400.; // T_c^2 | + ////G4double hms=16200.; // T_c^2/2 (OK) | + ////G4double hms=8100.; // T_c^2/4 | + //G4double x=kMom*kMom/hms; // | + //G4double dc=(pow(x,G4UniformRand())-1.)/x; // smearing delta-function absorbtion| + //if(dc<0.)dc=0.; // only positive smearing | + //cost-=dc; // for virtPhotons smear in both dir.| // --- Quark mass correction ends here (?) ---------------------------------------* } else @@ -836,14 +859,14 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) G4double cQM2=qM2-(kMom+kMom)*quasM; if(cQM2<0.) { - if(cQM2<-.0001)G4cerr<<"---Warning---G4Q::HQ:(PhBack) cQM2="<ColResQ+k_parton + if(!G4QHadron(q4Mom).RelDecayIn2(k4Mom,cr4Mom,dir4M,cost,cost)) //Q->ColResQ+k_part { #ifdef debug G4cerr<<"*G4Q::HQ:PB,M="<qCB&&envM+iniQMGSQ+GSE - if(2>3) // Decay in GSQuasmon+GSEnviron **Is closed** +#ifdef debug + G4cout<<"G4Q::HQ:Z="<0. && fabs(quasM-sum)New p-Attempt#"<GetIntegProbability() < totP) i++; if (i>=nCandid) @@ -1218,6 +1260,9 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) G4QCandidate* curCand = theQCandidates[i];// Pointer toSelectedCandidate:hadr/fragm sPDG = curCand->GetPDGCode(); // PDG of the selected candidate //////////////////G4double prpr=curCand->GetPreProbability(); +#ifdef debug + G4cout<<"G4Q::HQ:hsfl="<MINPDG && sPDG!=NUCPDG) // ==> NuclearFragmentCandidate hadronization { #ifdef debug @@ -1455,7 +1501,7 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) dMass=pMass-pNMass; // Remember the difference pMass=pNMass; delta=deltaN; - cl4Mom=G4LorentzVector(0.,0.,0.,pMass);// 4-momentum prototype for parent cluster + cl4Mom=G4LorentzVector(0.,0.,0.,pMass); // 4-momentum proto for parent cluster tot4Mom=q4Mom+cl4Mom; // @@ Just for checking cc4Mom=k4Mom+cl4Mom; // 4-mom of ColoredFragment (before kappa) ccM2=cc4Mom.m2(); @@ -1496,7 +1542,7 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) #endif #ifdef debug G4cout<<"G4Q::HQ: must totM="< rTM="<bEn) tmpEQ=bEnQC; // Leave the minimum environment + if(envA-pBaryn>bEn) tmpEQ=bEnQC; // Leave the minimum environment G4QNucleus tmpN(tmpEQ); // Pseudo nucleus for Residual Environment G4double tmpNM=tmpN.GetMZNS(); // Mass of Residual Environment #ifdef debug - G4cout<<"G4Q::HQ: envQC="<ColDec>>>CF("<F("<=tmpTM2 && fr4Mom.e()>=sCBE) // tmpTM2=SqGSMassOfTotResidualNucleus - // ***VRQ*** - //if(rQM2>=minSqB) // minSqB = SqrdGSMass of BoundedResidualQuasmon(Later...) + //if(reTNM2>=tmpTM2 && fr4Mom.e()>=sCBE) // tmpTM2=SqGSMassOfTotResidNucleus + // ***VBQ*** + //G4double rQM2=rQ4Mom.m2(); // TMP (Before the "kt" is defined) + //if(rQM2>=minSqB && fr4Mom.e()>=sCBE) // minSqB = SqGSMass of BoundResidQ + // ***VFQ*** + //G4double rQM2=rQ4Mom.m2(); // TMP (Before the "kt" is defined) + //if(rQM2>=minSqT && fr4Mom.e()>=sCBE) // minSqB = SqGSMass of BoundResidQ + // ***VQU*** + fQ4Mom=rQ4Mom+G4LorentzVector(0.,0.,0.,tmpBE); // Free Quasmon 4-mom + G4double fQM2=fQ4Mom.m2(); // TMP (Before the "kt" is defined) + if(fQM2>=minSqT && reTNM2>=tmpTM2 && fr4Mom.e()>=sCBE) // minSqT = SqGSMass { qCond=false; // Ok, the appropriate q is found //ffdc=false; #ifdef debug - //G4cout<<"G4Q::HQ:Attemp#"<"<"< CB+M="<"< CB+M="<"<"<MEMrQM2) // Just try to get the maximum ResidualQuasmon mass case + // ***VQU*** + if(reTNM2MEMrQM2 && fr4Mom.e()>=sCBE)//tM>minTM,maxRQM,CB + // ***VBQ***VFQ*** + //if(reTNM2MEMrQM2 && fr4Mom.e()>=sCBE)//tM>minTM,maxRQM,CB // ***VTN*** - if(reTNM2MEMrQM2 && fr4Mom.e()>=sCBE) + //if(reTNM2MEMrQM2 && fr4Mom.e()>=sCBE) { + // ***VQU*** + MEMrQM2=fQM2; + // ***VBQ***VFQ*** //MEMrQM2=rQM2; // ***VTN*** - MEMrQM2=reTNM2; + //MEMrQM2=reTNM2; //------------ MEMkp4M=kp4Mom; MEMfr4M=fr4Mom; MEMrQ4M=rQ4Mom; MEMreM2=reTNM2; } - else if(fr4Mom.e()MEMsCBE && reTNM2>=tmpTM2) + // ***VQU*** + else if(fr4Mom.e()MEMsCBE&&reTNM2>=tmpTM2&&fQM2>MEMrQM2) + // ***VBQ***VFQ*** + //else if(fr4Mom.e()MEMsCBE&&reTNM2>=tmpTM2&&rQM2>MEMrQM2) + // ***VTN*** + //else if(fr4Mom.e()MEMsCBE && reTNM2>=tmpTM2) { - MEMsCBE=fr4Mom.e(); + MEMsCBE=fr4Mom.e(); // Remember the best choice MEMkp4M=kp4Mom; MEMfr4M=fr4Mom; MEMrQ4M=rQ4Mom; @@ -1657,9 +1740,12 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) } else if(!qCount) //@@ Should not be here { + // ***VQU*** + MEMrQM2=fQM2; + // ***VBQ***VFQ*** //MEMrQM2=rQM2; // ***VTN*** - MEMrQM2=reTNM2; + //MEMrQM2=reTNM2; //------------ MEMsCBE=fr4Mom.e(); MEMkp4M=kp4Mom; @@ -1669,11 +1755,14 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) } else { + // ***VQU*** + fQM2=MEMrQM2; + // ***VBQ***VFQ*** //rQM2=MEMrQM2; // ***VTN*** - reTNM2=MEMrQM2; + //reTNM2=MEMrQM2; //----------- - kp4Mom=MEMkp4M; + kp4Mom=MEMkp4M; // Make the best choice actual instead of the last fr4Mom=MEMfr4M; rQ4Mom=MEMrQ4M; reTNM2=MEMreM2; @@ -1681,17 +1770,20 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) } qCount++; } // End of the WHILE of the q-choice for the fixed parent + // If q-choice is exhosted, then get the best, not the last quexf=true; // Quark Exchange is successfully done #ifdef debug G4cout<<"G4Q::HadQ:RQ("<bEn) totC4Mom+=G4LorentzVector(0.,0.,0.,mbEn); - else - totC4Mom+=G4LorentzVector(0.,0.,0.,envM-pMass); + else totC4Mom+=G4LorentzVector(0.,0.,0.,envM-pMass); kn=totC4Mom.m2(); #ifdef debug G4cout<<"G4Q::HQ:A="<"<" - <"<"<"<"<"<"< "HadronicCandidate hadronization" case { - kt = (quasM-dk)*(quasM-sM2/dk); + kt = (quasM-dk)*(quasM-sM2/dk); // squared mass of the RecoilQuasmon + G4double rQM=0.; + if(kt>0.) rQM=sqrt(kt); // Mass of the residual quasmon + fr4Mom=G4LorentzVector(0.,0.,0.,sMass); // 4-mom update for the fragment + rQ4Mom=G4LorentzVector(0.,0.,0.,rQM); // 4-mom update for the RecoilQuasmon + if(!G4QHadron(q4Mom).DecayIn2(fr4Mom, rQ4Mom)) + { + G4cerr<<"*G4Quasm::HadrQ: q4M="<MINPDG&&envPDG!=NUCPDG) - //{ - // // *** LIM *** - // G4LorentzVector TCRN=q4Mom-k4Mom; - // //if(envA>bEn) TCRN+=bEn4M; - // //else - // TCRN+=env4M; - // kn=TCRN.m2(); // tot4M -k4M - //} - //else kn=kt; + if(envPDG>MINPDG&&envPDG!=NUCPDG) + { + // *** LIM *** + G4LorentzVector TCRN=rQ4Mom; + if(envA>bEn) TCRN+=bEn4M; + else TCRN+=env4M; + kn=TCRN.m2(); // tot4M - fr4Mom + } + else kn=kt; } // *** LIM *** G4LorentzVector tL=rQ4Mom; // @@ Is rQ4Mom calculated for hadrons?? @@ -1749,48 +1853,54 @@ G4QHadronVector G4Quasmon::HadronizeQuasmon(G4QNucleus& qEnv, G4int nQuasms) G4double tM=tL.m(); // Real Residual Total Nucleus Mass (hadr/frag) // Residual S+S limit (absoluteLowLimit for corresponding P-res.) for R->S+S Decay #ifdef debug - G4cout<<"G4Q::HQ:k="<"<"<rtM="<"<"<rtM="< T="< T="<"<>>rM="<>>rM="<=minSqB&&sPDGMINPDG&&kn>minSqN) + // ***VFQ*** + //if(kn>minSqN && kt>minSqT) + // ***VQU*** + if(kn>minSqN && ku>minSqT) + // ***VBQ*** + //if(kn>minSqN && kt>minSqB) + // ***VTN*** + //if(kt>minSqB&&sPDGMINPDG&&kn>minSqN) { pCond=false; // Ok, the appropriate parent cluster is found #ifdef debug - // ***VRQ*** - G4cout<<"G4Q::HQ:P-Attempt#"<"<"<" + // <"<" + <"<" + // <"<=minSqB || sPDG>MINPDG&&kn>minSqN) - if(ktPMEMktM2 || knMINPDG && kn>PMEMknM2) + // ***VTN*** (former default) + //if(kt>=minSqB || sPDG>MINPDG&&kn>minSqN) + // ***VBQ*** + //if(kn=minSqB) + // ***VFQ*** + //if(kn=minSqT) + // ***VQU*** + if(knPMEMktM2 || knMINPDG&& kn>PMEMknM2) + // ***VBQ*** + //if(ktPMEMktM2) + // ***VFQ*** + //if(ktPMEMktM2) + // ***VQU*** + if(kuPMEMktM2) { - if (sPDGMINPDG) PMEMknM2=kn; - PMEMfr4M=fr4Mom; - PMEMrQ4M=rQ4Mom; - PMEMreM2=reTNM2; - PMEMrMas=rMass; - PMEMpMas=pMass; - PMEMsMas=sMass; - PMEMdMas=dMass; - PMEMmiSN=minSqN; - PMEMmiST=minSqT; - PMEMmiSB=minSqB; - PMEMrPDG=rPDG; - PMEMsPDG=sPDG; - PMEMpPDG=pPDG; - PMEMpQC =pQC; - PMEMtQC =transQC; - PMEMcQC =curQ; - PMEMhsfl=hsflag; - PMEMnucf=nucflag; -#ifdef pdebug - G4cout<<"G4Q::HQ:RememberBest rPDG="<rPDG="<rPDG="<pPDG="<pPDG="<MINPDG&&envPDG>pPDG&&reTNM2 Decide what to do, if fragmentation in this Candidate is impossible === #ifdef debug - G4cout<<"G4Q::HQ: Yes, hsf="< mMRE="<RE="<pEc) epC=3<2; - //if(sPDG==90000001&&(pPt>270.||envA-sB<4)) epC=3<2; - //if(pPt<420.&&envA-sB>4) epC=2<3; - //if(sB==1&&pPt<450.&&envA>5) epC=2<3; - //if(sPDG==90000001&&pPt<480.&&envA>5) epC=2<3; - //if(sB==1&&pPt<470.&&envA>5) epC=2<3;// !!! Was vimp for E-dep of tot gammaA c.s. - //////////////////////////////////////////////if(sB==1&&pPt<460.&&envA>5) epC=2<3; - //if(sB<3&&envA>5) epC=2<3; - //if(pPt>270.||envA-sB<4) epC=3<2; - //if(envA-sB<4) epC=3<2; - //G4bool ppC=pPt<250.; // RealBindE2&&sB!=4||rB>2&&rB!=4) ppC=3<2; // Bad idea of stupid symmetry - //if(sB>2&&sB!=4||rB>2) ppC=3<2; - //if(rB>2) ppC=3<2; - //if(sB>1&&rB>1) ppC=3<2; - //if(rB>1&&rB!=4) ppC=3<2; - //if(rB>1) ppC=3<2; - //G4bool ppC=pEn3) // *** Attempt GoOutDropExcNucl is closed *** + //if(nQuasms==1&&tmpNM+rMass+rCB+sMass+sCB3) //*** Attempt GoOutDropExcNucl is closed *** { - G4LorentzVector retQ4Mom=retN4Mom-G4LorentzVector(0.,0.,0.,tmpNM); + G4LorentzVector fr4M = G4LorentzVector(0.,0.,0.,sMass);//GSM of Fragment + G4LorentzVector re4M = G4LorentzVector(0.,0.,0.,tmpNM);//GSM of ResidualEnviron + G4LorentzVector rq4M = G4LorentzVector(0.,0.,0.,rMass);//GSM of ResidualQuasmon #ifdef debug - G4double retQ3M=retQ4Mom.rho(); - G4cout<<"G4Q::HQ:CheckFermi,rQ3M="<tmpNM+tmpRM&&retQ3M>100000.)// FermiMotionCut for DecayIn3 (@@dir) - //if(retNM>tmpNM+tmpRM) // DecIn Q+E+F (@@don't conserve dir of Fr.) - if(2>3) // *** Closed *** + G4double sum=tmpNM+sMass+rMass; + if(fabs(totMass-sum)>s="<RQ+F - q4Mom = retQ4Mom; // Update Quasmon's 4-mom - valQ += transQC; // Update the Quark Content of Quasmon -#ifdef rdebug - G4cout<<"G4Q::HQ:**LetAnyway>>s="<3) // ********** Decay in Fragm + GSResidNucleus is Closed ************** + //else if(nQuasms==1&&tmpTM+sMass3) // ********** Decay in Fragm + GSResidNucleus is Closed ************ { G4LorentzVector dif1=tot4M-retN4Mom-fr4Mom; qEnv = G4QNucleus(tmpTQ,retN4Mom); // Createa Nucleus for TotalResidNucl #ifdef debug - G4cout<<"**G4Q::HQ:**KeepEnvironmentMoving**,nQ="<rPDG="<rPDG="<sPDG="<kLim || qMass<=0. || nOfQ<2) + if (kLim.999999999) x=.999999999; r = 1.-x; if (n>2) p = pow(r,n-1); else p = r; @@ -4009,6 +4158,13 @@ G4double G4Quasmon::GetQPartonMomentum(G4double kMax, G4double mC2) G4cout<<"G4Q::GetQPMom: Iter#"< nitMax="<1.) x=.999; - if(x<0.) x=.001; + if(x>xMax) x=xMax; + if(x=kMax)kCand=kMax-.001; if(kCand<=kMin)kCand=kMin+.001; @@ -4222,7 +4378,7 @@ void G4Quasmon::ModifyInMatterCandidates() // Randomize the Resonance masses and calculate probabilities of hadronization for them void G4Quasmon::CalculateHadronizationProbabilities - (G4double E, G4double kVal, G4LorentzVector k4M,G4bool piF, G4bool gaF) + (G4double E, G4double kVal, G4LorentzVector k4M,G4bool piF, G4bool gaF, G4bool first) // =====================================================================E is not used==== { // ^ static const G4double mPi0 = G4QPDGCode(111).GetMass(); // | @@ -4435,8 +4591,8 @@ void G4Quasmon::CalculateHadronizationProbabilities G4int dC=cC-charge; // ChargeDifference for outFragm & ParentCl G4int dS=dI+dC; // Isotop Symmetry Compensation Parameter #ifdef pdebug - if(pPrint)G4cout<<"G4Q::CHP: dI="<"<rQ2&&!piF&&!gaF&&baryn>3) // ==>Check ResidVirtualQuasm //if(minBM2>rQ2&&!piF&&!gaF&&baryn>2) // ==>Check ResidVirtualQuasm //if(minBM2>rQ2&&!piF&&!gaF) // ==> Check of ResidualVirtualQuasmon @@ -4691,16 +4846,17 @@ void G4Quasmon::CalculateHadronizationProbabilities //if(minBM2>rQ2&&piF&&(baryn==1||baryn>2))//==>Check ResidVirtQ //if(minBM2>rQ2&&(!piF||piF&&(cPDG!=90000001||G4UniformRand()<.5))) //if(minBM2>rQ2&&(!piF||piF&&(cPDG!=90000001))) + //if(minBM2>rQ2&&(!piF&&baryn>4 || piF && cPDG!=90000001 && if(minBM2>rQ2&&(!piF || piF && cPDG!=90000001 && cPDG!=90001001 && cPDG!=90001002 )) //if(minBM2>rQ2) // ==> Check of Residual (Virtual?) Quasmon //if(2>3) { - G4double nz=0; - nz=1.-(minBM2-rQ2)/(boundM*rEP); + G4double nz=0.; if(atrest) nz=1.-(minBM2-rQ2+pmk*dked)/(boundM*(rEP+pmk)); - //nz=1.-(minBM2-rQ2)/(nucBM*rEP); + else nz=1.-(minBM2-rQ2)/(boundM*rEP); //if(atrest) nz=1.-(minBM2-rQ2+pmk*dkd)/(nucBM*(rEP+pmk)); + //else nz=1.-(minBM2-rQ2)/(nucBM*rEP); #ifdef pdebug if(pPrint) G4cout<<"G4Q::CHP:q="<"<rQ2&&baryn>1&&cPDG!=90002002) //==> CheckResidualQuasmon //if(minM2>rQ2&&!piF) // ==> Check of Residual Quasmon //if(minM2>rQ2&&baryn>3) //=>CheckResidQuasmon *** The Best *** - if(minM2>rQ2 && - (!piF&&baryn>3 || piF && + //if(minM2>rQ2 && (!piF || piF && + //if(minM2>rQ2 && (!piF&&baryn>3 || piF && + if(minM2>rQ2 && (!piF&&baryn>4 || piF && (cPDG!=90000001||G4UniformRand()>.3333333) && cPDG!=90001001) ) //cPDG!=90001001) ) //if(minM2>rQ2) // ==> Check of Residual Quasmon //if(2>3) { - G4double nz=1.-(minM2-rQ2)/(boundM*rEP); + G4double nz=0.; if(atrest) nz=1.-(minM2-rQ2+pmk*dked)/(boundM*(rEP+pmk)); - //nz=1.-(minM2-rQ2)/(nucBM*rEP); + else nz=1.-(minM2-rQ2)/(boundM*rEP); //if(atrest) nz=1.-(minM2-rQ2+pmk*dkd)/(nucBM*(rEP+pmk)); + //else nz=1.-(minM2-rQ2)/(nucBM*rEP); #ifdef pdebug if(pPrint) G4cout<<"G4Q::CHP:q="<"< +#include "Randomize.hh" +#include "G4MuonPlus.hh" +#include "G4MuonMinus.hh" +#include "G4VQCrossSection.hh" + +class G4QANuANuNuclearCrossSection : public G4VQCrossSection +{ +protected: + + G4QANuANuNuclearCrossSection() {}; + +public: + + ~G4QANuANuNuclearCrossSection() {}; + + static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone + + G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=-14); + + // At present momentum (pMom) must be in GeV (@@ Units) + virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN, + G4int pPDG=0); + + G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z, + G4int N, G4double Momentum); + G4int GetExchangePDGCode(); + + G4double GetDirectPart(G4double Q2); + + G4double GetNPartons(G4double Q2); + + G4double GetQEL_ExchangeQ2(); + + G4double GetNQE_ExchangeQ2(); + + // Get static members + G4double GetLastTOTCS() {return lastSig;} + G4double GetLastQELCS() {return lastQEL;} + +private: + G4int GetFunctions(G4int z, G4int n, G4double* t, G4double* q, G4double* e); + G4double HighEnergyTX(G4double lE); + G4double HighEnergyQE(G4double lE); + +// Body +private: + static G4bool onlyCS; // flag to calculate only CS (not QE) + static G4double lastSig; // Last calculated total cross section + static G4double lastQEL; // Last calculated quasi-elastic cross section + static G4int lastL; // Last bin used in the cross section TheLastBin + static G4double lastE; // Last energy used in the cross section Energy + static G4double* lastEN; // Pointer to the last array of the energy axis + static G4double* lastTX; // Pointer to the last array of the total CS function + static G4double* lastQE; // Pointer to the last array of the QE CS function + static G4int lastPDG; // The last projectile PDG + static G4int lastN; // The last N of calculated nucleus + static G4int lastZ; // The last Z of calculated nucleus + static G4double lastP; // Last used in the cross section Momentum + static G4double lastTH; // Last value of the Momentum Threshold + static G4double lastCS; // Last value of the Cross Section + static G4int lastI; // The last position in the DAMDB +}; + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuENuclearCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuENuclearCrossSection.hh new file mode 100644 index 0000000000..f676796510 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuENuclearCrossSection.hh @@ -0,0 +1,109 @@ +// +// ******************************************************************** +// * 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: G4QANuENuclearCrossSection.hh,v 1.1 2007/10/02 10:00:37 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// GEANT4 physics class: G4QANuENuclearCrossSection -- header file +// M.V. Kossov, CERN-ITEP(Moscow), 20-SEP-2007 +// The last update: M.V. Kossov, CERN/ITEP (Moscow) 20-SEP-2007 +// +// Short description: this G4 singletone class calculates (nu_e,e) Nuclear cross section +// (Energy limit: E<320GeV->badExtrapolation) for a particular isotope (proportional to A) +// **************************************************************************************** + +#ifndef G4QANuENuclearCrossSection_h +#define G4QANuENuclearCrossSection_h 1 + +#include "G4ParticleTable.hh" +#include "G4NucleiProperties.hh" +#include "G4NucleiPropertiesTable.hh" +#include +#include "Randomize.hh" +#include "G4MuonPlus.hh" +#include "G4MuonMinus.hh" +#include "G4VQCrossSection.hh" + +class G4QANuENuclearCrossSection : public G4VQCrossSection +{ +protected: + + G4QANuENuclearCrossSection() {}; + +public: + + ~G4QANuENuclearCrossSection() {}; + + static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone + + G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=-12); + + // At present momentum (pMom) must be in GeV (@@ Units) + virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN, + G4int pPDG=0); + + G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z, + G4int N, G4double Momentum); + G4int GetExchangePDGCode(); + + G4double GetDirectPart(G4double Q2); + + G4double GetNPartons(G4double Q2); + + G4double GetQEL_ExchangeQ2(); + + G4double GetNQE_ExchangeQ2(); + + // Get static members + G4double GetLastTOTCS() {return lastSig;} + G4double GetLastQELCS() {return lastQEL;} + +private: + G4int GetFunctions(G4int z, G4int n, G4double* t, G4double* q, G4double* e); + G4double HighEnergyTX(G4double lE); + G4double HighEnergyQE(G4double lE); + +// Body +private: + static G4bool onlyCS; // flag to calculate only CS (not QE) + static G4double lastSig; // Last calculated total cross section + static G4double lastQEL; // Last calculated quasi-elastic cross section + static G4int lastL; // Last bin used in the cross section TheLastBin + static G4double lastE; // Last energy used in the cross section Energy + static G4double* lastEN; // Pointer to the last array of the energy axis + static G4double* lastTX; // Pointer to the last array of the total CS function + static G4double* lastQE; // Pointer to the last array of the QE CS function + static G4int lastPDG; // The last projectile PDG + static G4int lastN; // The last N of calculated nucleus + static G4int lastZ; // The last Z of calculated nucleus + static G4double lastP; // Last used in the cross section Momentum + static G4double lastTH; // Last value of the Momentum Threshold + static G4double lastCS; // Last value of the Cross Section + static G4int lastI; // The last position in the DAMDB +}; + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuMuNuclearCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuMuNuclearCrossSection.hh index d8ec4bcf82..c38143bea8 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuMuNuclearCrossSection.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QANuMuNuclearCrossSection.hh @@ -25,7 +25,7 @@ // // // $Id: G4QANuMuNuclearCrossSection.hh,v 1.6 2006/12/01 10:57:46 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 physics class: G4QANuMuNuclearCrossSection -- header file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QAtomicElectronScattering.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QAtomicElectronScattering.hh index 7e57382ff6..1c88466b82 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QAtomicElectronScattering.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QAtomicElectronScattering.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QAtomicElectronScattering.hh,v 1.2 2006/12/13 15:45:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QAtomicElectronScattering header ---------------- // by Mikhail Kossov, December 2003. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCaptureAtRest.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCaptureAtRest.hh index fea013e8b2..8f8b74d593 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCaptureAtRest.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCaptureAtRest.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QCaptureAtRest.hh,v 1.3 2007/02/09 09:33:28 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCaptureAtRest header ---------------- // by Mikhail Kossov, December 2003. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCoherentChargeExchange.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCoherentChargeExchange.hh index 5fe5ea3d99..b1719dae72 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCoherentChargeExchange.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCoherentChargeExchange.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4QCoherentChargeExchange.hh,v 1.3 2007/05/23 15:14:25 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QCoherentChargeExchange.hh,v 1.4 2007/08/09 13:04:37 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCoherentChargeExchange header ---------------- // by Mikhail Kossov, December 2003. @@ -57,6 +57,7 @@ #include "G4LorentzVector.hh" // CHIPS Headers +#include "G4QuasiFreeRatios.hh" #include "G4QElasticCrossSection.hh" #include "G4QIsotope.hh" #include "G4QPDGToG4Particle.hh" @@ -107,9 +108,6 @@ private: // Calculate XS/t: oxs=true - only CS; xst=true - calculate XS, xst=false(oxs=f/t) - t/tm G4double CalculateXSt(G4bool oxs, G4bool xst, G4double p, G4int Z, G4int N, G4int pPDG); - // Calculate ChEx/El suppression coefficient - G4double ChExElCoef(G4double p, G4int Z, G4int N, G4int pPDG); - // BODY // Static Parameters -------------------------------------------------------------------- static G4int nPartCWorld; // The#of particles for hadronization (limit of A of fragm.) diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCollision.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCollision.hh index ce763697a1..c6056cd66e 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCollision.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QCollision.hh @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4QCollision.hh,v 1.7 2006/10/30 10:33:36 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QCollision.hh,v 1.10 2007/11/01 16:09:38 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCollision header ---------------- // by Mikhail Kossov, December 2003. @@ -96,7 +96,12 @@ #include "G4QTauNuclearCrossSection.hh" #include "G4QNuMuNuclearCrossSection.hh" #include "G4QANuMuNuclearCrossSection.hh" +#include "G4QNuENuclearCrossSection.hh" +#include "G4QANuENuclearCrossSection.hh" +#include "G4QNuNuNuclearCrossSection.hh" +#include "G4QANuANuNuclearCrossSection.hh" //#include "G4QuasmonString.hh" +#include "G4QuasiFreeRatios.hh" #include "G4QPDGToG4Particle.hh" #include @@ -160,6 +165,9 @@ private: // Copy constructor G4QCollision(const G4QCollision&); + // Random direction in two dimentions pair(first=sin(phi), second=cos(phi)) + std::pair Random2DDirection(); + // BODY // Static Parameters -------------------------------------------------------------------- static G4bool manualFlag; // If false then standard parameters are used diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiffraction.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiffraction.hh new file mode 100644 index 0000000000..c781950ce5 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiffraction.hh @@ -0,0 +1,127 @@ +// +// ******************************************************************** +// * 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: G4QDiffraction.hh,v 1.1 2007/08/23 15:58:43 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ---------------- G4QDiffraction header ---------------- +// by Mikhail Kossov, Aug 2007. +// Header of G4QDiffraction class (hadron+A) of the CHIPS Simulation Branch in GEANT4 +// ------------------------------------------------------------------------------- +// This is a unique CHIPS class for the Hadron-Nuclear Diffractive Interaction Prosesses +// ------------------------------------------------------------------------------- +// At present (Aug-07) it is based on the G4QDiffractionRatio class and is not tested. +// The normalization is based on the temporary G4QProtonNuclearCrossSection class +// ------------------------------------------------------------------------------- + +#ifndef G4QDiffraction_hh +#define G4QDiffraction_hh + +// GEANT4 Headers +#include "globals.hh" +#include "G4ios.hh" +#include "Randomize.hh" +#include "G4VDiscreteProcess.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4ParticleTypes.hh" +#include "G4VParticleChange.hh" +#include "G4ParticleDefinition.hh" +#include "G4DynamicParticle.hh" +#include "G4NucleiPropertiesTable.hh" +#include "G4ThreeVector.hh" +#include "G4LorentzVector.hh" + +// CHIPS Headers +#include "G4QDiffractionRatio.hh" +#include "G4QProtonNuclearCrossSection.hh" +#include "G4QIsotope.hh" +#include "G4QPDGToG4Particle.hh" +#include "G4QCHIPSWorld.hh" +#include "G4QHadronVector.hh" +#include + +class G4QDiffraction : public G4VDiscreteProcess +{ +public: + + // Constructor + G4QDiffraction(const G4String& processName ="CHIPS_DiffractiveInteraction"); + + // Destructor + ~G4QDiffraction(); + + G4bool IsApplicable(const G4ParticleDefinition& particle); + + G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, + G4ForceCondition* condition); + // It returns the MeanFreePath of the process for the current track : + // (energy, material) + // The previousStepSize and G4ForceCondition* are not used. + // This function overloads a virtual function of the base class. + // It is invoked by the ProcessManager of the Particle. + + + G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); + // It computes the final state of the process (at end of step), + // returned as a ParticleChange object. + // This function overloads a virtual function of the base class. + // It is invoked by the ProcessManager of the Particle. + + + G4LorentzVector GetEnegryMomentumConservation(); + + G4int GetNumberOfNeutronsInTarget(); + +private: + + // Hide assignment operator as private + G4QDiffraction& operator=(const G4QDiffraction &right); + + // Copy constructor + G4QDiffraction(const G4QDiffraction&); + + // Calculate Cross-Section of the Diffraction Reaction (p is in GeV @@ units) + G4double CalculateXS(G4double p, G4int Z, G4int N, G4int pPDG); + + // BODY + // Static Parameters -------------------------------------------------------------------- + static G4int nPartCWorld; // The#of particles for hadronization (limit of A of fragm.) + //--------------------------------- End of static parameters --------------------------- + // Working parameters + G4VQCrossSection* theCS; + G4LorentzVector EnMomConservation; // Residual of Energy/Momentum Cons. + G4int nOfNeutrons; // #of neutrons in the target nucleus + + // Modifires for the reaction + G4double Time; // Time shift of the capture reaction + G4double EnergyDeposition; // Energy deposited in the reaction + static std::vector ElementZ; // Z of the element(i) in theLastCalc + static std::vector ElProbInMat; // SumProbabilityElements in Material + static std::vector *> ElIsoN; // N of isotope(j) of Element(i) + static std::vector *> IsoProbInEl;// SumProbabIsotopes in Element i +}; +#endif + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiffractionRatio.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiffractionRatio.hh index 144ffd0fc8..b83a93b593 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiffractionRatio.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiffractionRatio.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 physics class: G4QDiffractionRatio -- header file @@ -45,6 +45,7 @@ //#include "G4NucleiProperties.hh" //#include "G4NucleiPropertiesTable.hh" #include "G4QPDGCode.hh" +#include "G4QEnvironment.hh" #include "G4Quasmon.hh" #include "G4QHadronVector.hh" #include "G4VCrossSectionDataSet.hh" @@ -67,10 +68,18 @@ class G4QDiffractionRatio // Diffraction/Prodaction Ratio (Production=Inelastic-QuasiElastic) G4double GetRatio(G4double pIU, G4int prPDG, G4int tgZ, G4int tgN); - // ==> The following ill be a protected function for internal CHIPS usage - // Fragment(pPDG,p4M) on a nucleus (tgZ, tgN), result: Vector of secondary hadrons - // Whoeve uses this member function is responsible for DEL/DESTROY of the G4QHadronVector - G4QHadronVector* Fragment(G4int pPDG, G4LorentzVector p4M, G4int tgZ, G4int tgN); + // ==> The following will be a protected function for internal CHIPS usage + // ProjFragment(pPDG,p4M) on a nucleus (tgZ, tgN), result: Vector of secondary hadrons + // Whoever uses this member function is responsible for DEL/DESTROY of G4QHadronVector + G4QHadronVector* ProjFragment(G4int pPDG, G4LorentzVector p4M, G4int tgZ, G4int tgN); + + // ==> The following will be a protected function for internal CHIPS usage + // TargFragment(pPDG,p4M) on a nucleus (tgZ, tgN), result: Vector of secondary hadrons + // Whoever uses this member function is responsible for DEL/DESTROY of G4QHadronVector + G4QHadronVector* TargFragment(G4int pPDG, G4LorentzVector p4M, G4int tgZ, G4int tgN); + + // Single Diffraction Target Excitation Cross-Section (independent Units) + G4double GetTargSingDiffXS(G4double pIU, G4int prPDG, G4int tgZ, G4int tgN); private: // These working member functions are in CHIPS units and must not be used externally diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiscProcessMixer.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiscProcessMixer.hh new file mode 100644 index 0000000000..adddea0e3f --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiscProcessMixer.hh @@ -0,0 +1,102 @@ +// +// ******************************************************************** +// * 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: G4QDiscProcessMixer.hh,v 1.2 2007/08/31 09:36:57 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ---------------- G4QDiscProcessMixer header ---------------- +// by Mikhail Kossov, Aug 2007. +// Header of G4QDiscProcessMixer class (hadron+A) of the CHIPS Simulation Branch in GEANT4 +// ------------------------------------------------------------------------------- +// This is a unique CHIPS class for the Hadron-Nuclear Diffractive Interaction Prosesses +// ------------------------------------------------------------------------------- +// At present (Aug-07) it is not tested. +// The normalization is based on the temporary G4QIonIonCrossSection class +// ------------------------------------------------------------------------------- + +#ifndef G4QDiscProcessMixer_hh +#define G4QDiscProcessMixer_hh + +// GEANT4 Headers +#include "globals.hh" +#include "G4ios.hh" +#include "Randomize.hh" +#include "G4VDiscreteProcess.hh" +#include "G4Track.hh" +#include "G4Step.hh" +//#include "G4ParticleTypes.hh" +//#include "G4VParticleChange.hh" +//#include "G4ParticleDefinition.hh" +#include "G4ParticleDefinition.hh" +#include "G4Gamma.hh" +#include "G4DynamicParticle.hh" +#include "G4QDiscreteProcessVector.hh" +//#include "G4NucleiPropertiesTable.hh" +//#include "G4ThreeVector.hh" +//#include "G4LorentzVector.hh" + +#include + +class G4QDiscProcessMixer : public G4VDiscreteProcess +{ +public: + + // Constructor + G4QDiscProcessMixer(const G4String& processName = "Mixed Discrete Process", + const G4ParticleDefinition* proj = G4Gamma::Gamma(), + G4ProcessType pType = fNotDefined ); + + // Destructor + ~G4QDiscProcessMixer(); + + G4bool IsApplicable(const G4ParticleDefinition& particle); + + G4double PostStepGetPhysicalInteractionLength(const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition); + + G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); + + void AddDiscreteProcess(G4VDiscreteProcess* DP, G4double ME); + + //G4LorentzVector GetEnegryMomentumConservation(); + + //G4int GetNumberOfNeutronsInTarget(); + +private: + + // Hide assignment operator as private + G4QDiscProcessMixer& operator=(const G4QDiscProcessMixer &right); + + // Copy constructor + G4QDiscProcessMixer(const G4QDiscProcessMixer& DPM); + + // BODY + const G4ParticleDefinition* DPParticle; // Particle for DiscreteProc mixture + G4QDiscreteProcessVector theDPVector; // Vector of Discrete Processes + //G4LorentzVector EnMomConservation; // Residual of Energy/Momentum Cons. + //G4int nOfNeutrons; // #of neutrons in the target nucleus +}; +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiscreteProcessVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiscreteProcessVector.hh new file mode 100644 index 0000000000..cdae457b0c --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QDiscreteProcessVector.hh @@ -0,0 +1,45 @@ +// +// ******************************************************************** +// * 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: G4QDiscreteProcessVector.hh,v 1.1 2007/08/28 15:48:15 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ---------------- G4QDiscreteProcessVector ---------------- +// by Mikhail Kossov, Aug 2007. +// Type defenition for Vectors of DiscreteProcesses (G4VDiscreteProcess) +// --------------------------------------------------------------------- + +#ifndef G4QDiscreteProcessVector_h +#define G4QDiscreteProcessVector_h 1 + +#include "G4VDiscreteProcess.hh" +#include + +typedef std::vector*> G4QDiscreteProcessVector; +struct DeleteDiscreteProcess { void operator()(std::pair* DP) + {delete DP->first; delete DP;} }; + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElastic.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElastic.hh index c26873faef..ca8e025f94 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElastic.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElastic.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QElastic.hh,v 1.3 2007/05/23 15:14:25 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QElastic header ---------------- // by Mikhail Kossov, December 2003. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElasticCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElasticCrossSection.hh index a155f510d7..02d8f8cf02 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElasticCrossSection.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElasticCrossSection.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 physics class: G4QElasticCrossSection -- header file @@ -51,6 +51,7 @@ #include "G4QElastic.hh" #include "G4QCoherentChargeExchange.hh" #include "G4QuasiFreeRatios.hh" +#include "G4QIonIonCrossSection.hh" class G4QElasticCrossSection : public G4VQCrossSection { @@ -64,7 +65,7 @@ public: static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone - // At present momentum (pMom) must be in GeV (@@ Units) + // Cross-section is mb. At present momentum (pMom) is in MeV=IU (@@ make Indep. Units) virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN, G4int pPDG=0); @@ -74,6 +75,8 @@ protected: friend class G4QElastic; friend class G4QCoherentChargeExchange; friend class G4QuasiFreeRatios; + friend class G4QIonIonCrossSection; + G4double GetSlope(G4int tZ, G4int tN, G4int pPDG); // Slope of the 1st diff. maximum G4double GetExchangeT(G4int tZ, G4int tN, G4int pPDG); // Randomizes -t=Q2 (in IU=MeV^2) G4double GetHMaxT(); // Currrent Max(-t=Q2)/2. (in IU=MeV^2) diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElectronNuclearCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElectronNuclearCrossSection.hh index 216b2df439..33b78f1031 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElectronNuclearCrossSection.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QElectronNuclearCrossSection.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 physics class: G4QElectronNuclearCrossSection -- header file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QGluonString.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QGluonString.hh index 68ef21e99c..f85004771a 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QGluonString.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QGluonString.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGluonString.hh,v 1.1 2006/10/30 10:33:38 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QGluonString header ---------------- // by Mikhail Kossov, October 2006. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QIonIonCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QIonIonCrossSection.hh new file mode 100644 index 0000000000..88d971c505 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QIonIonCrossSection.hh @@ -0,0 +1,104 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// GEANT4 physics class: G4QIonIonCrossSection -- header file +// Created: M.V. Kossov, CERN/ITEP(Moscow), 19-Aug-07 +// The last update: M.V. Kossov, CERN/ITEP (Moscow) 19-Aug-07 +//----------------------------------------------------------------------------------------- +// In this class, just as an experiment the real PDG codes (not CHIPS) are used +//----------------------------------------------------------------------------------------- +// +// **************************************************************************************** +// ********* This HEADER is temporary moved from the chips/interface directory ********* +// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ****** +// **************************************************************************************** + +#ifndef G4QIonIonCrossSection_h +#define G4QIonIonCrossSection_h 1 + +#include "G4ParticleTable.hh" +#include "G4NucleiProperties.hh" +#include "G4NucleiPropertiesTable.hh" +#include +#include "G4VQCrossSection.hh" +#include "G4QPDGCode.hh" +#include "G4QElasticCrossSection.hh" +#include "G4QProtonNuclearCrossSection.hh" +#include "G4QNeutronNuclearCrossSection.hh" + + +class G4QIonIonCrossSection : public G4VQCrossSection +{ +protected: + + G4QIonIonCrossSection() {} + +public: + + ~G4QIonIonCrossSection() {} + + static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone + + // At present momentum (pMom) must be in GeV(@@ Units),fCS=true:Inelastic, =false:Elastic + virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int Z, G4int N, G4int PDG); + + // Momentum=p/A (MeV/c) + G4double CalculateCrossSection(G4bool fCS, G4int F, G4int I, G4int PDG, + G4int tZ, G4int tN, G4double Momentum); + + G4double ThresholdMomentum(G4int pZ, G4int pN, G4int tZ, G4int tN);// P-Threshold(MeV/c) + +private: + G4int GetFunctions(G4int pZ, G4int pN, G4int tZ, G4int tN, + G4double* LI, G4double* HI, // Inelastic + G4double* LE, G4double* HE); // Elastic + + G4double CalculateTotal(G4double pA, G4double tA, G4double Momentum); + G4double CalculateElTot(G4double pA, G4double tA, G4double Momentum); + // Momentum=p/A (MeV/c), first=InelasticCS, second=elasticCS (mb) + std::pair CalculateXS(G4int pZ,G4int pN,G4int tZ,G4int tN,G4double P); + +// Body +private: + static G4double* lastLENI;// Pointer to the last array of LowEnergy Inel cross sections + static G4double* lastHENI;// Pointer to the last array of HighEnergy Inel cross sections + static G4double* lastLENE;// Pointer to the last array of LowEnergy Elast cross sections + static G4double* lastHENE;// Pointer to the last array of HighEnergy Elast cross sections + static G4double lastE; // Last used in the cross section Energy + static G4int lastPDG; // The last projectile PDG + static G4int lastN; // The last N of calculated nucleus + static G4int lastZ; // The last Z of calculated nucleus + static G4double lastP; // Last used in the cross section Momentum + static G4double lastTH; // Last value of the Momentum Threshold + static G4double lastICS; // Last value of the Inelastic Cross Section + static G4double lastECS; // Last value of the Elastic Cross Section + static G4int lastI; // The last position in the DAMDB +}; + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QLowEnergy.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QLowEnergy.hh new file mode 100644 index 0000000000..f25a42a028 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QLowEnergy.hh @@ -0,0 +1,131 @@ +// +// ******************************************************************** +// * 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: G4QLowEnergy.hh,v 1.3 2007/11/15 09:36:43 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// ---------------- G4QLowEnergy header ---------------- +// by Mikhail Kossov, Aug 2007. +// Header of G4QLowEnergy class (A+A) of the CHIPS Simulation Branch in GEANT4 +// ------------------------------------------------------------------------------- +// This is a unique CHIPS class for the Ion-Ion Low Energy Inelastic Interaction Prosesses +// ------------------------------------------------------------------------------- +// At present (Aug-07) it is not tested. +// The normalization is based on the temporary G4QIonIonCrossSection class +// ------------------------------------------------------------------------------- + +#ifndef G4QLowEnergy_hh +#define G4QLowEnergy_hh + +// GEANT4 Headers +#include "globals.hh" +#include "G4ios.hh" +#include "Randomize.hh" +#include "G4VDiscreteProcess.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" +#include "G4VParticleChange.hh" +#include "G4ParticleDefinition.hh" +#include "G4DynamicParticle.hh" +#include "G4NucleiPropertiesTable.hh" +#include "G4ThreeVector.hh" +#include "G4LorentzVector.hh" + +// CHIPS Headers +#include "G4QNucleus.hh" +#include "G4QIonIonCrossSection.hh" +#include "G4QIsotope.hh" +#include "G4QPDGToG4Particle.hh" +#include "G4QCHIPSWorld.hh" +#include "G4QHadronVector.hh" +#include + +class G4QLowEnergy : public G4VDiscreteProcess +{ +public: + + // Constructor + G4QLowEnergy(const G4String& processName ="CHIPS_LowEnergyIonIonInelastic"); + + // Destructor + ~G4QLowEnergy(); + + G4bool IsApplicable(const G4ParticleDefinition& particle); + + G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, + G4ForceCondition* condition); + // It returns the MeanFreePath of the process for the current track : + // (energy, material) + // The previousStepSize and G4ForceCondition* are not used. + // This function overloads a virtual function of the base class. + // It is invoked by the ProcessManager of the Particle. + + + G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); + // It computes the final state of the process (at end of step), + // returned as a ParticleChange object. + // This function overloads a virtual function of the base class. + // It is invoked by the ProcessManager of the Particle. + + G4LorentzVector GetEnegryMomentumConservation(); + + G4int GetNumberOfNeutronsInTarget(); + + void SwitchOnEvaporation() {evaporate=true;} // Evaporation instead of gammas (default) + + void SwitchOffEvaporation() {evaporate=false;} // Gammas instead of evaporation + +private: + + // Hide assignment operator as private + G4QLowEnergy& operator=(const G4QLowEnergy &right); + + // Copy constructor + G4QLowEnergy(const G4QLowEnergy&); + + // Calculate Cross-Section of the Diffraction Reaction (p is in GeV @@ units) + G4double CalculateXS(G4double p, G4int Z, G4int N, G4int pPDG); + + // BODY + // Static Parameters -------------------------------------------------------------------- + static G4int nPartCWorld; // The#of particles for hadronization (limit of A of fragm.) + //--------------------------------- End of static parameters --------------------------- + // Working parameters + G4bool evaporate; + G4VQCrossSection* theCS; + G4LorentzVector EnMomConservation; // Residual of Energy/Momentum Cons. + G4int nOfNeutrons; // #of neutrons in the target nucleus + + // Modifires for the reaction + G4double Time; // Time shift of the capture reaction + G4double EnergyDeposition; // Energy deposited in the reaction + static std::vector ElementZ; // Z of the element(i) in theLastCalc + static std::vector ElProbInMat; // SumProbabilityElements in Material + static std::vector *> ElIsoN; // N of isotope(j) of Element(i) + static std::vector *> IsoProbInEl;// SumProbabIsotopes in Element i +}; +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QMuonNuclearCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QMuonNuclearCrossSection.hh index fbf8fb5fb4..0cdb979ed0 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QMuonNuclearCrossSection.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QMuonNuclearCrossSection.hh @@ -25,7 +25,7 @@ // // // $Id: G4QMuonNuclearCrossSection.hh,v 1.5 2006/12/01 10:57:46 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 physics class: G4QMuonNuclearCrossSection -- header file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNeutronNuclearCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNeutronNuclearCrossSection.hh new file mode 100644 index 0000000000..606d06572b --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNeutronNuclearCrossSection.hh @@ -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. * +// ******************************************************************** +// +// +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// GEANT4 physics class: G4QNeutronNuclearCrossSection -- header file +// Created: M.V. Kossov, CERN/ITEP(Moscow), 20-Dec-01 +// The last update: M.V. Kossov, CERN/ITEP (Moscow) 17-May-02 +// +// **************************************************************************************** +// ********* This HEADER is temporary moved from the photolepton_hadron directory ********* +// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ****** +// **************************************************************************************** + +#ifndef G4QNeutronNuclearCrossSection_h +#define G4QNeutronNuclearCrossSection_h 1 + +#include "G4ParticleTable.hh" +#include "G4NucleiProperties.hh" +#include "G4NucleiPropertiesTable.hh" +#include +#include "G4VQCrossSection.hh" +#include "G4QPDGCode.hh" + +class G4QNeutronNuclearCrossSection : public G4VQCrossSection +{ +protected: + + G4QNeutronNuclearCrossSection() {} + +public: + + ~G4QNeutronNuclearCrossSection() {} + + static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone + + // At present momentum (pMom) in MeV/c, CS is in mb (@@ Units) + virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN, + G4int pPDG=2112); + + G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z, + G4int N, G4double Momentum); + +private: + G4int GetFunctions(G4int tZ, G4int tN, G4double* y, G4double* z); // y&z=ArrayPointers + G4double CrossSectionLin(G4int targZ, G4int targN, G4double P); + G4double CrossSectionLog(G4int targZ, G4int targN, G4double lP); + G4double CrossSectionFormula(G4int targZ, G4int targN, G4double P, G4double lP); + G4double ThresholdMomentum(G4int targZ, G4int targN); // Threshold of pA reaction (MeV/c) +// Body +private: + static G4double lastSig; // Last value of the Cross Section + static G4double* lastLEN; // Pointer to the last array of LowEnergy cross sections + static G4double* lastHEN; // Pointer to the last array of HighEnergy cross sections + static G4double lastE; // Last used in the cross section Energy + static G4int lastPDG; // The last projectile PDG + static G4int lastN; // The last N of calculated nucleus + static G4int lastZ; // The last Z of calculated nucleus + static G4double lastP; // Last used in the cross section Momentum + static G4double lastTH; // Last value of the Momentum Threshold + static G4double lastCS; // Last value of the Cross Section + static G4int lastI; // The last position in the DAMDB +}; + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuENuclearCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuENuclearCrossSection.hh new file mode 100644 index 0000000000..1df93475b1 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuENuclearCrossSection.hh @@ -0,0 +1,110 @@ +// +// ******************************************************************** +// * 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: G4QNuENuclearCrossSection.hh,v 1.1 2007/10/02 10:00:37 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// GEANT4 physics class: G4QNuENuclearCrossSection -- header file +// M.V. Kossov, CERN-ITEP(Moscow), 20-SEP-2007 +// The last update: M.V. Kossov, CERN/ITEP (Moscow) 20-SEP-2007 +// +// Short description: this G4 singletone class calculates (nu_e,e) Nuclear cross section +// (Energy limit: E<320GeV->badExtrapolation) for a particular isotope (proportional to A) +// **************************************************************************************** + +#ifndef G4QNuENuclearCrossSection_h +#define G4QNuENuclearCrossSection_h 1 + +#include "G4ParticleTable.hh" +#include "G4NucleiProperties.hh" +#include "G4NucleiPropertiesTable.hh" +#include +#include "Randomize.hh" +#include "G4MuonPlus.hh" +#include "G4MuonMinus.hh" +#include "G4VQCrossSection.hh" + +class G4QNuENuclearCrossSection : public G4VQCrossSection +{ +protected: + + G4QNuENuclearCrossSection() {}; + +public: + + ~G4QNuENuclearCrossSection() {}; + + static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone + + G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=12); + + // At present momentum (pMom) must be in GeV (@@ Units) + virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN, + G4int pPDG=0); + + G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z, + G4int N, G4double Momentum); + + G4int GetExchangePDGCode(); + + G4double GetDirectPart(G4double Q2); + + G4double GetNPartons(G4double Q2); + + G4double GetQEL_ExchangeQ2(); + + G4double GetNQE_ExchangeQ2(); + + // Get static members + G4double GetLastTOTCS() {return lastSig;} + G4double GetLastQELCS() {return lastQEL;} + +private: + G4int GetFunctions(G4int z, G4int n, G4double* t, G4double* q, G4double* e); + G4double HighEnergyTX(G4double lE); + G4double HighEnergyQE(G4double lE); + +// Body +private: + static G4bool onlyCS; // flag to calculate only CS (not TX & QE) + static G4double lastSig; // Last calculated total cross section + static G4double lastQEL; // Last calculated quasi-elastic cross section + static G4int lastL; // Last bin used in the cross section TheLastBin + static G4double lastE; // Last energy used in the cross section Energy + static G4double* lastEN; // Pointer to the last array of the energy axis + static G4double* lastTX; // Pointer to the last array of the total CS function + static G4double* lastQE; // Pointer to the last array of the QE CS function + static G4int lastPDG; // The last projectile PDG + static G4int lastN; // The last N of calculated nucleus + static G4int lastZ; // The last Z of calculated nucleus + static G4double lastP; // Last used in the cross section Momentum + static G4double lastTH; // Last value of the Momentum Threshold + static G4double lastCS; // Last value of the Cross Section + static G4int lastI; // The last position in the DAMDB +}; + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuMuNuclearCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuMuNuclearCrossSection.hh index e559384485..654eb3009d 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuMuNuclearCrossSection.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuMuNuclearCrossSection.hh @@ -25,7 +25,7 @@ // // // $Id: G4QNuMuNuclearCrossSection.hh,v 1.6 2006/12/01 10:57:46 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 physics class: G4QNuMuNuclearCrossSection -- header file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuNuNuclearCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuNuNuclearCrossSection.hh new file mode 100644 index 0000000000..17f444b094 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QNuNuNuclearCrossSection.hh @@ -0,0 +1,110 @@ +// +// ******************************************************************** +// * 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: G4QNuNuNuclearCrossSection.hh,v 1.1 2007/11/01 16:09:38 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// GEANT4 physics class: G4QNuNuNuclearCrossSection -- header file +// M.V. Kossov, CERN-ITEP(Moscow), 20-DEC-2005 +// The last update: M.V. Kossov, CERN/ITEP (Moscow) 20-DEC-2005 +// +// Short description: this G4 singletone class calculates (nu_mu,mu) Nuclear cross section +// (Energy limit: E<320GeV->badExtrapolation) for a particular isotope (proportional to A) +// **************************************************************************************** + +#ifndef G4QNuNuNuclearCrossSection_h +#define G4QNuNuNuclearCrossSection_h 1 + +#include "G4ParticleTable.hh" +#include "G4NucleiProperties.hh" +#include "G4NucleiPropertiesTable.hh" +#include +#include "Randomize.hh" +#include "G4MuonPlus.hh" +#include "G4MuonMinus.hh" +#include "G4VQCrossSection.hh" + +class G4QNuNuNuclearCrossSection : public G4VQCrossSection +{ +protected: + + G4QNuNuNuclearCrossSection() {}; + +public: + + ~G4QNuNuNuclearCrossSection() {}; + + static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone + + G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=14); + + // At present momentum (pMom) must be in GeV (@@ Units) + virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN, + G4int pPDG=0); + + G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z, + G4int N, G4double Momentum); + + G4int GetExchangePDGCode(); + + G4double GetDirectPart(G4double Q2); + + G4double GetNPartons(G4double Q2); + + G4double GetQEL_ExchangeQ2(); + + G4double GetNQE_ExchangeQ2(); + + // Get static members + G4double GetLastTOTCS() {return lastSig;} + G4double GetLastQELCS() {return lastQEL;} + +private: + G4int GetFunctions(G4int z, G4int n, G4double* t, G4double* q, G4double* e); + G4double HighEnergyTX(G4double lE); + G4double HighEnergyQE(G4double lE); + +// Body +private: + static G4bool onlyCS; // flag to calculate only CS (not TX & QE) + static G4double lastSig; // Last calculated total cross section + static G4double lastQEL; // Last calculated quasi-elastic cross section + static G4int lastL; // Last bin used in the cross section TheLastBin + static G4double lastE; // Last energy used in the cross section Energy + static G4double* lastEN; // Pointer to the last array of the energy axis + static G4double* lastTX; // Pointer to the last array of the total CS function + static G4double* lastQE; // Pointer to the last array of the QE CS function + static G4int lastPDG; // The last projectile PDG + static G4int lastN; // The last N of calculated nucleus + static G4int lastZ; // The last Z of calculated nucleus + static G4double lastP; // Last used in the cross section Momentum + static G4double lastTH; // Last value of the Momentum Threshold + static G4double lastCS; // Last value of the Cross Section + static G4int lastI; // The last position in the DAMDB +}; + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QPhotonNuclearCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QPhotonNuclearCrossSection.hh index e1ccc857fa..cfdcd2a310 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QPhotonNuclearCrossSection.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QPhotonNuclearCrossSection.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 physics class: G4QPhotonNuclearCrossSection -- header file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QProtonNuclearCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QProtonNuclearCrossSection.hh index b85fefc2e3..11cb8c5fe2 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QProtonNuclearCrossSection.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QProtonNuclearCrossSection.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 physics class: G4QProtonNuclearCrossSection -- header file @@ -44,6 +44,7 @@ #include "G4NucleiPropertiesTable.hh" #include #include "G4VQCrossSection.hh" +#include "G4QPDGCode.hh" class G4QProtonNuclearCrossSection : public G4VQCrossSection { @@ -57,30 +58,32 @@ public: static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone - // At present momentum (pMom) must be in GeV (@@ Units) + // At present momentum (pMom) in MeV/c, CS in mb (@@ Units) virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN, - G4int pPDG=0); + G4int pPDG=2212); G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int PDG, G4int Z, G4int N, G4double Momentum); private: - G4int GetFunctions(G4double A, G4double* y, G4double* z);// y&z are pointers to arrays - + G4int GetFunctions(G4int tZ, G4int tN, G4double* y, G4double* z); // y&z=ArrayPointers + G4double CrossSectionLin(G4int targZ, G4int targN, G4double P); + G4double CrossSectionLog(G4int targZ, G4int targN, G4double lP); + G4double CrossSectionFormula(G4int targZ, G4int targN, G4double P, G4double lP); + G4double ThresholdMomentum(G4int targZ, G4int targN); // Threshold of pA reaction (MeV/c) // Body private: static G4double lastSig; // Last value of the Cross Section static G4double* lastLEN; // Pointer to the last array of LowEnergy cross sections static G4double* lastHEN; // Pointer to the last array of HighEnergy cross sections static G4double lastE; // Last used in the cross section Energy - static G4double lastSP; // Last value of the ShadowingPomeron (A-dependent) - static G4int lastPDG; // The last projectile PDG - static G4int lastN; // The last N of calculated nucleus - static G4int lastZ; // The last Z of calculated nucleus - static G4double lastP; // Last used in the cross section Momentum - static G4double lastTH; // Last value of the Momentum Threshold - static G4double lastCS; // Last value of the Cross Section - static G4int lastI; // The last position in the DAMDB + static G4int lastPDG; // The last projectile PDG + static G4int lastN; // The last N of calculated nucleus + static G4int lastZ; // The last Z of calculated nucleus + static G4double lastP; // Last used in the cross section Momentum + static G4double lastTH; // Last value of the Momentum Threshold + static G4double lastCS; // Last value of the Cross Section + static G4int lastI; // The last position in the DAMDB }; #endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QTauNuclearCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QTauNuclearCrossSection.hh index 3224893974..7ce453647f 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QTauNuclearCrossSection.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QTauNuclearCrossSection.hh @@ -25,7 +25,7 @@ // // // $Id: G4QTauNuclearCrossSection.hh,v 1.5 2006/12/01 10:57:46 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 physics class: G4QTauNuclearCrossSection -- header file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QuasiFreeRatios.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QuasiFreeRatios.hh index 75861c14ba..1cfb230817 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QuasiFreeRatios.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4QuasiFreeRatios.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 physics class: G4QuasiFreeRatios -- header file @@ -80,6 +80,9 @@ class G4QuasiFreeRatios // Mean hN El and Tot XS(IU) for the isotopic (Z,N): on p -> (Z=1,N=0), on n -> (Z=0,N=1) std::pair GetElTot(G4double pIU, G4int hPDG, G4int Z, G4int N); //(IU) + // Calculate ChEx/El ratio coefficient (p is in independent units, (Z,N) is a target) + G4double ChExElCoef(G4double p, G4int Z, G4int N, G4int pPDG); + private: // These working member functions are in CHIPS units and must not be used externally G4double GetQF2IN_Ratio(G4double TotCS_mb, G4int A); // QuasiFree/Inelastic (fast) @@ -89,7 +92,6 @@ class G4QuasiFreeRatios // Body private: - static std::vector vE; // Vector of ElastPointers to LogTable static std::vector vT; // Vector of pointers to LinTable static std::vector vL; // Vector of pointers to LogTable static std::vector*> vX; // Vector of ETPointers to LogTable diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4VQCrossSection.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4VQCrossSection.hh index 2a0a180a5e..47bf4ba96e 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4VQCrossSection.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4VQCrossSection.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VQCrossSection.hh,v 1.8 2006/12/09 14:33:35 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VQCrossSection.hh,v 1.9 2007/11/15 09:36:43 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 virtual class: G4VQCrossSection -- header file @@ -119,6 +119,8 @@ public: virtual G4double GetExchangeT(G4int tZ, G4int tN, G4int pPDG); // -t=Q2 for hadronic + virtual G4double GetSlope(G4int tZ, G4int tN, G4int pPDG); // B-slope of the maim maximum + virtual G4double GetHMaxT(); // max(-t=Q2)/2 for hadronic (MeV^2) virtual G4double GetExchangeQ2(G4double nu=0); // Q2 for lepto-nuclear reactions diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuANuNuclearCrossSection.cc b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuANuNuclearCrossSection.cc new file mode 100644 index 0000000000..ac97ced95b --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuANuNuclearCrossSection.cc @@ -0,0 +1,730 @@ +// +// ******************************************************************** +// * 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: G4QANuANuNuclearCrossSection.cc,v 1.2 2007/11/02 15:57:16 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// G4 Physics class: G4QANuANuNuclearCrossSection for gamma+A cross sections +// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-01 +// The last update: M.V. Kossov, CERN/ITEP (Moscow) 17-Oct-03 +// +// **************************************************************************************** +// ********** This CLASS is temporary moved from the photolepton_hadron directory ********* +// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ****** +// **************************************************************************************** +//=============================================================================================== + +//#define debug +//#define edebug +//#define pdebug +//#define ppdebug +//#define tdebug +//#define sdebug + +#include "G4QANuANuNuclearCrossSection.hh" + +// Initialization of the +G4bool G4QANuANuNuclearCrossSection::onlyCS=true;//Flag to calculate only CS (not QE) +G4double G4QANuANuNuclearCrossSection::lastSig=0.;//Last calculated total cross section +G4double G4QANuANuNuclearCrossSection::lastQEL=0.;//Last calculated quasi-el cross section +G4int G4QANuANuNuclearCrossSection::lastL=0; //Last used in cross section TheLastBin +G4double G4QANuANuNuclearCrossSection::lastE=0.; //Last used in cross section TheEnergy +G4double* G4QANuANuNuclearCrossSection::lastEN=0; //Pointer to theEnergy Scale of TX & QE +G4double* G4QANuANuNuclearCrossSection::lastTX=0; //Pointer to theLastArray of TX function +G4double* G4QANuANuNuclearCrossSection::lastQE=0; //Pointer to theLastArray of QE function +G4int G4QANuANuNuclearCrossSection::lastPDG=0; // The last PDG code of the projectile +G4int G4QANuANuNuclearCrossSection::lastN=0; // The last N of calculated nucleus +G4int G4QANuANuNuclearCrossSection::lastZ=0; // The last Z of calculated nucleus +G4double G4QANuANuNuclearCrossSection::lastP=0.; // Last used in cross section Momentum +G4double G4QANuANuNuclearCrossSection::lastTH=0.; // Last threshold momentum +G4double G4QANuANuNuclearCrossSection::lastCS=0.; // Last value of the Cross Section +G4int G4QANuANuNuclearCrossSection::lastI=0; // The last position in the DAMDB + +// Returns Pointer to the G4VQCrossSection class +G4VQCrossSection* G4QANuANuNuclearCrossSection::GetPointer() +{ + static G4QANuANuNuclearCrossSection theCrossSection; //*Static body of the Cross Section* + return &theCrossSection; +} + +// The main member function giving the collision cross section (P is in IU, CS is in mb) +// Make pMom in independent units ! (Now it is MeV) +G4double G4QANuANuNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom, + G4int tgZ, G4int tgN, G4int pPDG) +{ + static G4int j; // A#0f records found in DB for this projectile + static std::vector colPDG;// Vector of the projectile PDG code + static std::vector colN; // Vector of N for calculated nuclei (isotops) + static std::vector colZ; // Vector of Z for calculated nuclei (isotops) + static std::vector colP; // Vector of last momenta for the reaction + static std::vector colTH; // Vector of energy thresholds for the reaction + static std::vector colCS; // Vector of last cross sections for the reaction + // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---*** + G4double pEn=pMom; +#ifdef debug + G4cout<<"G4QAMNCS::GetCS:>> f="< CS=0"< New (inDB) Calculated CS="<lastTH) // Correct the threshold + { +#ifdef pdebug + G4cout<<"G4QAMNCS::GetCS: New T="< Threshold="< Threshold="< CS=0 + } + else if(std::fabs(lastP/pMom-1.) colH; //?? Vector of HighEnergyCoefficients (functional) + static std::vector TX; // Vector of pointers to the TX tabulated functions + static std::vector QE; // Vector of pointers to the QE tabulated functions + static G4bool first=true; // Flag of initialization of the energy axis + // *** End of Static Definitions (Associative Memory) *** + //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Muon + //G4double TotEnergy2=Momentum; + onlyCS=CS; // Flag to calculate only CS (not TX & QE) + lastE=Momentum/GeV; // Kinetic energy of the muon neutrino (in GeV!) + if (lastE<=EMi) // Energy is below the minimum energy in the table + { + lastE=0.; + lastSig=0.; + return 0.; + } + G4int Z=targZ; // New Z, which can change the sign + if(F<=0) // This isotope was not the last used isotop + { + if(F<0) // This isotope was found in DAMDB =========> RETRIEVE + { + lastTX =TX[I]; // Pointer to the prepared TX function (same isotope) + lastQE =QE[I]; // Pointer to the prepared QE function (same isotope) + } + else // This isotope wasn't calculated previously => CREATE + { + if(first) + { + lastEN = new G4double[nE]; // This must be done only once! + Z=-Z; // To explain GetFunctions that E-axis must be filled + first=false; // To make it only once + } + lastTX = new G4double[nE]; // Allocate memory for the new TX function + lastQE = new G4double[nE]; // Allocate memory for the new QE function + G4int res=GetFunctions(Z,targN,lastTX,lastQE,lastEN);//@@analize(0=first,-1=bad,1=OK) + if(res<0) G4cerr<<"*W*G4NuMuNuclearCS::CalcCrossSect:Bad Function Retrieve"<=2) + { + G4int newran=ran/2; + if(lastE<=lastEN[sep]) sep-=newran; + else sep+=newran; + ran=newran; + chk=chk+chk; + } + if(chk+chk!=mL) G4cerr<<"*Warn*G4NuMuNuclearCS::CalcCS:Table! mL="<=mL||lastE>highE) + G4cerr<<"*Warn*G4NuMuNuclearCS::CalcCS:Bin! "<(rXi); + if(iXi<0) iXi=0; + if(iXi>bQ2) iXi=bQ2; + G4double dXi=rXi-iXi; + G4double bnti=inl[iXi]; + G4double inti=bnti+dXi*(inl[iXi+1]-bnti); + // + G4double rXa=(Xma-Xmin)/dX; + G4int iXa=static_cast(rXa); + if(iXa<0) iXa=0; + if(iXa>bQ2) iXa=bQ2; + G4double dXa=rXa-iXa; + G4double bnta=inl[iXa]; + G4double inta=bnta+dXa*(inl[iXa+1]-bnta); + // *** Find X using the reversed table *** + G4double intx=inti+(inta-inti)*G4UniformRand(); + G4int intc=static_cast(intx); + if(intc<0) intc=0; + if(intc>bQ2) intc=bQ2; // If it is more than max, then the BAD extrapolation + G4double dint=intx-intc; + G4double mX=Xl[intc]; + G4double X=mX+dint*(Xl[intc+1]-mX); + G4double Q2=std::pow(X,pconv)-1.; + return Q2*GeV*GeV; +} + +// Randomize Q2 from neutrino to the scattered muon when the scattering is not quasiElastic +G4double G4QANuANuNuclearCrossSection::GetNQE_ExchangeQ2() +{ + static const double mpi=.13957018; // charged pi meson mass in GeV + static const double MN=.931494043; // Nucleon mass (inside nucleus,atomicMassUnit,GeV) + static const double dMN=MN+MN; // 2*M_N in GeV + static const double mcV=(dMN+mpi)*mpi;// constant of W>M+mc cut for Quasi-Elastic + static const G4int power=7; // direct power for the magic variable + static const G4double pconv=1./power; // conversion power for the magic variable + static const G4int nX=21; // #Of point in the Xl table (in GeV^2) + static const G4int lX=nX-1; // index of the last in the Xl table + static const G4int bX=lX-1; // @@ index of the before last in the Xl table + static const G4int nE=20; // #Of point in the El table (in GeV^2) + static const G4int bE=nE-1; // index of the last in the El table + static const G4int pE=bE-1; // index of the before last in the El table + // Reversed table + static const G4double X0[nX]={5.21412e-05, + .437860, .681908, .891529, 1.08434, 1.26751, 1.44494, 1.61915, 1.79198, 1.96493, 2.13937, + 2.31664, 2.49816, 2.68559, 2.88097, 3.08705, 3.30774, 3.54917, 3.82233, 4.15131, 4.62182}; + static const G4double X1[nX]={.00102591, + 1.00443, 1.55828, 2.03126, 2.46406, 2.87311, 3.26723, 3.65199, 4.03134, 4.40835, 4.78561, + 5.16549, 5.55031, 5.94252, 6.34484, 6.76049, 7.19349, 7.64917, 8.13502, 8.66246, 9.25086}; + static const G4double X2[nX]={.0120304, + 2.59903, 3.98637, 5.15131, 6.20159, 7.18024, 8.10986, 9.00426, 9.87265, 10.7217, 11.5564, + 12.3808, 13.1983, 14.0116, 14.8234, 15.6359, 16.4515, 17.2723, 18.1006, 18.9386, 19.7892}; + static const G4double X3[nX]={.060124, + 5.73857, 8.62595, 10.9849, 13.0644, 14.9636, 16.7340, 18.4066, 20.0019, 21.5342, 23.0142, + 24.4497, 25.8471, 27.2114, 28.5467, 29.8564, 31.1434, 32.4102, 33.6589, 34.8912, 36.1095}; + static const G4double X4[nX]={.0992363, + 8.23746, 12.1036, 15.1740, 17.8231, 20.1992, 22.3792, 24.4092, 26.3198, 28.1320, 29.8615, + 31.5200, 33.1169, 34.6594, 36.1536, 37.6044, 39.0160, 40.3920, 41.7353, 43.0485, 44.3354}; + static const G4double X5[nX]={.0561127, + 7.33661, 10.5694, 13.0778, 15.2061, 17.0893, 18.7973, 20.3717, 21.8400, 23.2211, 24.5291, + 25.7745, 26.9655, 28.1087, 29.2094, 30.2721, 31.3003, 32.2972, 33.2656, 34.2076, 35.1265}; + static const G4double X6[nX]={.0145859, + 4.81774, 6.83565, 8.37399, 9.66291, 10.7920, 11.8075, 12.7366, 13.5975, 14.4025, 15.1608, + 15.8791, 16.5628, 17.2162, 17.8427, 18.4451, 19.0259, 19.5869, 20.1300, 20.6566, 21.1706}; + static const G4double X7[nX]={.00241155, + 2.87095, 4.02492, 4.89243, 5.61207, 6.23747, 6.79613, 7.30433, 7.77270, 8.20858, 8.61732, + 9.00296, 9.36863, 9.71682, 10.0495, 10.3684, 10.6749, 10.9701, 11.2550, 11.5306, 11.7982}; + static const G4double X8[nX]={.000316863, + 1.76189, 2.44632, 2.95477, 3.37292, 3.73378, 4.05420, 4.34415, 4.61009, 4.85651, 5.08666, + 5.30299, 5.50738, 5.70134, 5.88609, 6.06262, 6.23178, 6.39425, 6.55065, 6.70149, 6.84742}; + static const G4double X9[nX]={3.73544e-05, + 1.17106, 1.61289, 1.93763, 2.20259, 2.42976, 2.63034, 2.81094, 2.97582, 3.12796, 3.26949, + 3.40202, 3.52680, 3.64482, 3.75687, 3.86360, 3.96557, 4.06323, 4.15697, 4.24713, 4.33413}; + static const G4double XA[nX]={4.19131e-06, + .849573, 1.16208, 1.38955, 1.57379, 1.73079, 1.86867, 1.99221, 2.10451, 2.20770, 2.30332, + 2.39252, 2.47622, 2.55511, 2.62977, 2.70066, 2.76818, 2.83265, 2.89437, 2.95355, 3.01051}; + static const G4double XB[nX]={4.59981e-07, + .666131, .905836, 1.07880, 1.21796, 1.33587, 1.43890, 1.53080, 1.61399, 1.69011, 1.76040, + 1.82573, 1.88682, 1.94421, 1.99834, 2.04959, 2.09824, 2.14457, 2.18878, 2.23107, 2.27162}; + static const G4double XC[nX]={4.99861e-08, + .556280, .752730, .893387, 1.00587, 1.10070, 1.18317, 1.25643, 1.32247, 1.38269, 1.43809, + 1.48941, 1.53724, 1.58203, 1.62416, 1.66391, 1.70155, 1.73728, 1.77128, 1.80371, 1.83473}; + static const G4double XD[nX]={5.40832e-09, + .488069, .657650, .778236, .874148, .954621, 1.02432, 1.08599, 1.14138, 1.19172, 1.23787, + 1.28049, 1.32008, 1.35705, 1.39172, 1.42434, 1.45514, 1.48429, 1.51197, 1.53829, 1.56339}; + static const G4double XE[nX]={5.84029e-10, + .445057, .597434, .705099, .790298, .861468, .922865, .976982, 1.02542, 1.06930, 1.10939, + 1.14630, 1.18050, 1.21233, 1.24208, 1.27001, 1.29630, 1.32113, 1.34462, 1.36691, 1.38812}; + static const G4double XF[nX]={6.30137e-11, + .418735, .560003, .659168, .737230, .802138, .857898, .906854, .950515, .989915, 1.02580, + 1.05873, 1.08913, 1.11734, 1.14364, 1.16824, 1.19133, 1.21306, 1.23358, 1.25298, 1.27139}; + static const G4double XG[nX]={6.79627e-12, + .405286, .539651, .633227, .706417, .766929, .818642, .863824, .903931, .939963, .972639, + 1.00250, 1.02995, 1.05532, 1.07887, 1.10082, 1.12134, 1.14058, 1.15867, 1.17572, 1.19183}; + static const G4double XH[nX]={7.32882e-13, + .404391, .535199, .625259, .695036, .752243, .800752, .842823, .879906, .912994, .942802, + .969862, .994583, 1.01729, 1.03823, 1.05763, 1.07566, 1.09246, 1.10816, 1.12286, 1.13667}; + static const G4double XI[nX]={7.90251e-14, + .418084, .548382, .636489, .703728, .758106, .803630, .842633, .876608, .906576, .933269, + .957233, .978886, .998556, 1.01651, 1.03295, 1.04807, 1.06201, 1.07489, 1.08683, 1.09792}; + static const G4double XJ[nX]={8.52083e-15, + .447299, .579635, .666780, .731788, .783268, .825512, .861013, .891356, .917626, .940597, + .960842, .978802, .994820, 1.00917, 1.02208, 1.03373, 1.04427, 1.05383, 1.06253, 1.07046}; + // Direct table + static const G4double Xmin[nE]={X0[0],X1[0],X2[0],X3[0],X4[0],X5[0],X6[0],X7[0],X8[0], + X9[0],XA[0],XB[0],XC[0],XD[0],XE[0],XF[0],XG[0],XH[0],XI[0],XJ[0]}; + static const G4double dX[nE]={ + (X0[lX]-X0[0])/lX, (X1[lX]-X1[0])/lX, (X2[lX]-X2[0])/lX, (X3[lX]-X3[0])/lX, + (X4[lX]-X4[0])/lX, (X5[lX]-X5[0])/lX, (X6[lX]-X6[0])/lX, (X7[lX]-X7[0])/lX, + (X8[lX]-X8[0])/lX, (X9[lX]-X9[0])/lX, (XA[lX]-XA[0])/lX, (XB[lX]-XB[0])/lX, + (XC[lX]-XC[0])/lX, (XD[lX]-XD[0])/lX, (XE[lX]-XE[0])/lX, (XF[lX]-XF[0])/lX, + (XG[lX]-XG[0])/lX, (XH[lX]-XH[0])/lX, (XI[lX]-XI[0])/lX, (XJ[lX]-XJ[0])/lX}; + static const G4double* Xl[nE]= + {X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,XA,XB,XC,XD,XE,XF,XG,XH,XI,XJ}; + static const G4double I0[nX]={0, + .354631, 1.08972, 2.05138, 3.16564, 4.38343, 5.66828, 6.99127, 8.32858, 9.65998, 10.9680, + 12.2371, 13.4536, 14.6050, 15.6802, 16.6686, 17.5609, 18.3482, 19.0221, 19.5752, 20.0000}; + static const G4double I1[nX]={0, + .281625, .877354, 1.67084, 2.60566, 3.64420, 4.75838, 5.92589, 7.12829, 8.34989, 9.57708, + 10.7978, 12.0014, 13.1781, 14.3190, 15.4162, 16.4620, 17.4496, 18.3724, 19.2245, 20.0000}; + static const G4double I2[nX]={0, + .201909, .642991, 1.24946, 1.98463, 2.82370, 3.74802, 4.74263, 5.79509, 6.89474, 8.03228, + 9.19947, 10.3889, 11.5938, 12.8082, 14.0262, 15.2427, 16.4527, 17.6518, 18.8356, 20.0000}; + static const G4double I3[nX]={0, + .140937, .461189, .920216, 1.49706, 2.17728, 2.94985, 3.80580, 4.73758, 5.73867, 6.80331, + 7.92637, 9.10316, 10.3294, 11.6013, 12.9150, 14.2672, 15.6548, 17.0746, 18.5239, 20.0000}; + static const G4double I4[nX]={0, + .099161, .337358, .694560, 1.16037, 1.72761, 2.39078, 3.14540, 3.98768, 4.91433, 5.92245, + 7.00942, 8.17287, 9.41060, 10.7206, 12.1010, 13.5500, 15.0659, 16.6472, 18.2924, 20.0000}; + static const G4double I5[nX]={0, + .071131, .255084, .543312, .932025, 1.41892, 2.00243, 2.68144, 3.45512, 4.32283, 5.28411, + 6.33859, 7.48602, 8.72621, 10.0590, 11.4844, 13.0023, 14.6128, 16.3158, 18.1115, 20.0000}; + static const G4double I6[nX]={0, + .053692, .202354, .443946, .778765, 1.20774, 1.73208, 2.35319, 3.07256, 3.89177, 4.81249, + 5.83641, 6.96528, 8.20092, 9.54516, 10.9999, 12.5670, 14.2486, 16.0466, 17.9630, 20.0000}; + static const G4double I7[nX]={0, + .043065, .168099, .376879, .672273, 1.05738, 1.53543, 2.10973, 2.78364, 3.56065, 4.44429, + 5.43819, 6.54610, 7.77186, 9.11940, 10.5928, 12.1963, 13.9342, 15.8110, 17.8313, 20.0000}; + static const G4double I8[nX]={0, + .036051, .143997, .327877, .592202, .941572, 1.38068, 1.91433, 2.54746, 3.28517, 4.13277, + 5.09574, 6.17984, 7.39106, 8.73568, 10.2203, 11.8519, 13.6377, 15.5854, 17.7033, 20.0000}; + static const G4double I9[nX]={0, + .030977, .125727, .289605, .528146, .846967, 1.25183, 1.74871, 2.34384, 3.04376, 3.85535, + 4.78594, 5.84329, 7.03567, 8.37194, 9.86163, 11.5150, 13.3430, 15.3576, 17.5719, 20.0000}; + static const G4double IA[nX]={0, + .027129, .111420, .258935, .475812, .768320, 1.14297, 1.60661, 2.16648, 2.83034, 3.60650, + 4.50394, 5.53238, 6.70244, 8.02569, 9.51488, 11.1841, 13.0488, 15.1264, 17.4362, 20.0000}; + static const G4double IB[nX]={0, + .024170, .100153, .234345, .433198, .703363, 1.05184, 1.48607, 2.01409, 2.64459, 3.38708, + 4.25198, 5.25084, 6.39647, 7.70319, 9.18708, 10.8663, 12.7617, 14.8968, 17.2990, 20.0000}; + static const G4double IC[nX]={0, + .021877, .091263, .214670, .398677, .650133, .976322, 1.38510, 1.88504, 2.48555, 3.19709, + 4.03129, 5.00127, 6.12184, 7.40989, 8.88482, 10.5690, 12.4888, 14.6748, 17.1638, 20.0000}; + static const G4double ID[nX]={0, + .020062, .084127, .198702, .370384, .606100, .913288, 1.30006, 1.77535, 2.34912, 3.03253, + 3.83822, 4.78063, 5.87634, 7.14459, 8.60791, 10.2929, 12.2315, 14.4621, 17.0320, 20.0000}; + static const G4double IE[nX]={0, + .018547, .078104, .185102, .346090, .567998, .858331, 1.22535, 1.67824, 2.22735, 2.88443, + 3.66294, 4.57845, 5.64911, 6.89637, 8.34578, 10.0282, 11.9812, 14.2519, 16.8993, 20.0000}; + static const G4double IF[nX]={0, + .017143, .072466, .172271, .323007, .531545, .805393, 1.15288, 1.58338, 2.10754, 2.73758, + 3.48769, 4.37450, 5.41770, 6.64092, 8.07288, 9.74894, 11.7135, 14.0232, 16.7522, 20.0000}; + static const G4double IG[nX]={0, + .015618, .066285, .158094, .297316, .490692, .745653, 1.07053, 1.47479, 1.96931, 2.56677, + 3.28205, 4.13289, 5.14068, 6.33158, 7.73808, 9.40133, 11.3745, 13.7279, 16.5577, 20.0000}; + static const G4double IH[nX]={0, + .013702, .058434, .139923, .264115, .437466, .667179, .961433, 1.32965, 1.78283, 2.33399, + 2.99871, 3.79596, 4.74916, 5.88771, 7.24937, 8.88367, 10.8576, 13.2646, 16.2417, 20.0000}; + static const G4double II[nX]={0, + .011264, .048311, .116235, .220381, .366634, .561656, .813132, 1.13008, 1.52322, 2.00554, + 2.59296, 3.30542, 4.16834, 5.21490, 6.48964, 8.05434, 9.99835, 12.4580, 15.6567, 20.0000}; + static const G4double IJ[nX]={0, + .008628, .037206, .089928, .171242, .286114, .440251, .640343, .894382, 1.21208, 1.60544, + 2.08962, 2.68414, 3.41486, 4.31700, 5.44048, 6.85936, 8.69067, 11.1358, 14.5885, 20.0000}; + static const G4double* Il[nE]= + {I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ}; + static const G4double lE[nE]={ +-1.98842,-1.58049,-1.17256,-.764638,-.356711, .051215, .459141, .867068, 1.27499, 1.68292, + 2.09085, 2.49877, 2.90670, 3.31463, 3.72255, 4.13048, 4.53840, 4.94633, 5.35426, 5.76218}; + static const G4double lEmi=lE[0]; + static const G4double lEma=lE[nE-1]; + static const G4double dlE=(lEma-lEmi)/bE; + //*************************************************************************************** + G4double Enu=lastE; // Get energy of the last calculated cross-section + G4double lEn=std::log(Enu); // log(E) for interpolation + G4double rE=(lEn-lEmi)/dlE; // Position of the energy + G4int fE=static_cast(rE); // Left bin for interpolation + if(fE<0) fE=0; + if(fE>pE)fE=pE; + G4int sE=fE+1; // Right bin for interpolation + G4double dE=rE-fE; // relative log shift from the left bin + G4double dEnu=Enu+Enu; // doubled energy of nu/anu + G4double Enu2=Enu*Enu; // squared energy of nu/anu + G4double Emu=Enu; // Free Energy of neutrino/anti-neutrino + G4double ME=Enu*MN; // M*E + G4double dME=ME+ME; // 2*M*E + G4double dEMN=(dEnu+MN)*ME; + G4double sqE=Enu*ME; + G4double E2M=MN*Enu2; + G4double ymax=(E2M+sqE)/dEMN; + G4double Q2mi=0.; // Q2_min(E_nu) + G4double Q2ma=dME*ymax; // Q2_max(E_nu) + G4double Q2nq=Emu*dMN-mcV; + if(Q2ma>Q2nq) Q2ma=Q2nq; // Correction for Non Quasi Elastic + // --- now r_min=Q2mi/Q2ma and r_max=1.; when r is randomized -> Q2=r*Q2ma --- + G4double Rmi=Q2mi/Q2ma; + G4double shift=.875/(1.+.2977/Enu/Enu)/std::pow(Enu,.78); + // --- E-interpolation must be done in a log scale --- + G4double Xmi=std::pow((shift-Rmi),power);// X_min(E_nu) + G4double Xma=std::pow((shift-1.),power); // X_max(E_nu) + // Find the integral values integ(Xmi) & integ(Xma) using the direct table + G4double idX=dX[fE]+dE*(dX[sE]-dX[fE]); // interpolated X step + G4double iXmi=Xmin[fE]+dE*(Xmin[sE]-Xmin[fE]); // interpolated X minimum + G4double rXi=(Xmi-iXmi)/idX; + G4int iXi=static_cast(rXi); + if(iXi<0) iXi=0; + if(iXi>bX) iXi=bX; + G4double dXi=rXi-iXi; + G4double bntil=Il[fE][iXi]; + G4double intil=bntil+dXi*(Il[fE][iXi+1]-bntil); + G4double bntir=Il[sE][iXi]; + G4double intir=bntir+dXi*(Il[sE][iXi+1]-bntir); + G4double inti=intil+dE*(intir-intil);// interpolated begin of the integral + // + G4double rXa=(Xma-iXmi)/idX; + G4int iXa=static_cast(rXa); + if(iXa<0) iXa=0; + if(iXa>bX) iXa=bX; + G4double dXa=rXa-iXa; + G4double bntal=Il[fE][iXa]; + G4double intal=bntal+dXa*(Il[fE][iXa+1]-bntal); + G4double bntar=Il[sE][iXa]; + G4double intar=bntar+dXa*(Il[sE][iXa+1]-bntar); + G4double inta=intal+dE*(intar-intal);// interpolated end of the integral + // + // *** Find X using the reversed table *** + G4double intx=inti+(inta-inti)*G4UniformRand(); + G4int intc=static_cast(intx); + if(intc<0) intc=0; + if(intc>bX) intc=bX; + G4double dint=intx-intc; + G4double mXl=Xl[fE][intc]; + G4double Xlb=mXl+dint*(Xl[fE][intc+1]-mXl); + G4double mXr=Xl[sE][intc]; + G4double Xrb=mXr+dint*(Xl[sE][intc+1]-mXr); + G4double X=Xlb+dE*(Xrb-Xlb); // interpolated X value + G4double R=shift-std::pow(X,pconv); + G4double Q2=R*Q2ma; + return Q2*GeV*GeV; +} + +// It returns a fraction of the direct interaction of the neutrino with quark-partons +G4double G4QANuANuNuclearCrossSection::GetDirectPart(G4double Q2) +{ + G4double f=Q2/4.62; + G4double ff=f*f; + G4double r=ff*ff; + G4double s=std::pow((1.+.6/Q2),(-1.-(1.+r)/(12.5+r/.3))); + //@@ It is the same for nu/anu, but for nu it is a bit less, and for anu a bit more (par) + return 1.-s*(1.-s/2); +} + +// #of quark-partons in the nonperturbative phase space is the same for neut and anti-neut +G4double G4QANuANuNuclearCrossSection::GetNPartons(G4double Q2) +{ + return 3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space +} + +// This class can provide only virtual exchange pi+ (a substitute for W+ boson) +G4int G4QANuANuNuclearCrossSection::GetExchangePDGCode() {return 22;} diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuENuclearCrossSection.cc b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuENuclearCrossSection.cc new file mode 100644 index 0000000000..fa301becd5 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuENuclearCrossSection.cc @@ -0,0 +1,775 @@ +// +// ******************************************************************** +// * 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: G4QANuENuclearCrossSection.cc,v 1.2 2007/11/01 16:09:38 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// G4 Physics class: G4QANuENuclearCrossSection for (anti_ni_e,e+) cross sections +// Created: M.V. Kossov, CERN/ITEP(Moscow), 24-SEP-2007 +// The last update: M.V. Kossov, CERN/ITEP (Moscow) 24-SEP-2007 +// +// **************************************************************************************** +// ********** This CLASS is temporary moved from the photolepton_hadron directory ********* +// ******* DO NOT MAKE ANY CHANGE! With time it'll move back to photolepton...(M.K.) ****** +// **************************************************************************************** +//=============================================================================================== + +//#define debug +//#define edebug +//#define pdebug +//#define ppdebug +//#define tdebug +//#define sdebug + +#include "G4QANuENuclearCrossSection.hh" + +// Initialization of the +G4bool G4QANuENuclearCrossSection::onlyCS=true;//Flag to calculate only CS (not QE) +G4double G4QANuENuclearCrossSection::lastSig=0.;//Last calculated total cross section +G4double G4QANuENuclearCrossSection::lastQEL=0.;//Last calculated quasi-el. cross section +G4int G4QANuENuclearCrossSection::lastL=0; //Last used in cross section TheLastBin +G4double G4QANuENuclearCrossSection::lastE=0.; //Last used in cross section TheEnergy +G4double* G4QANuENuclearCrossSection::lastEN=0; //Pointer to the Energy Scale of TX & QE +G4double* G4QANuENuclearCrossSection::lastTX=0; //Pointer to the LastArray of TX function +G4double* G4QANuENuclearCrossSection::lastQE=0; //Pointer to the LastArray of QE function +G4int G4QANuENuclearCrossSection::lastPDG=0; // The last PDG code of the projectile +G4int G4QANuENuclearCrossSection::lastN=0; // The last N of calculated nucleus +G4int G4QANuENuclearCrossSection::lastZ=0; // The last Z of calculated nucleus +G4double G4QANuENuclearCrossSection::lastP=0.; // Last used in cross section Momentum +G4double G4QANuENuclearCrossSection::lastTH=0.; // Last threshold momentum +G4double G4QANuENuclearCrossSection::lastCS=0.; // Last value of the Cross Section +G4int G4QANuENuclearCrossSection::lastI=0; // The last position in the DAMDB + +// Returns Pointer to the G4VQCrossSection class +G4VQCrossSection* G4QANuENuclearCrossSection::GetPointer() +{ + static G4QANuENuclearCrossSection theCrossSection;//**Static body of the Cross Section** + return &theCrossSection; +} + +// The main member function giving the collision cross section (P is in IU, CS is in mb) +// Make pMom in independent units ! (Now it is MeV) +G4double G4QANuENuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom, + G4int tgZ, G4int tgN, G4int pPDG) +{ + static G4int j; // A#0f records found in DB for this projectile + static std::vector colPDG;// Vector of the projectile PDG code + static std::vector colN; // Vector of N for calculated nuclei (isotops) + static std::vector colZ; // Vector of Z for calculated nuclei (isotops) + static std::vector colP; // Vector of last momenta for the reaction + static std::vector colTH; // Vector of energy thresholds for the reaction + static std::vector colCS; // Vector of last cross sections for the reaction + // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---*** + G4double pEn=pMom; +#ifdef debug + G4cout<<"G4QAENCS::GetCS:>> f="< CS=0"< New (inDB) Calculated CS="<lastTH) // Correct the threshold + { +#ifdef pdebug + G4cout<<"G4QAENCS::GetCS: New T="< Threshold="< Threshold="< CS=0 + } + else if(std::fabs(lastP/pMom-1.)0||N>0) dN=thresh*GeV; // @@ if upgraded, change it in a total cross section + //@@ "dN=me+me2/G4NucleiProperties::GetNuclearMass((Z+N),(Z)/GeV" + return dN; +} + +// The main member function giving the gamma-A cross section (E_kin in MeV, CS in mb) +G4double G4QANuENuclearCrossSection::CalculateCrossSection(G4bool CS, G4int F, G4int I, + G4int , G4int targZ, G4int targN, G4double Momentum) +{ + static const G4double mb38=1.E-11;// Conversion 10^-38 cm^2 to mb=10^-27 cm^2 + static const G4int nE=65; // !! If change this, change it in GetFunctions() !! + static const G4int mL=nE-1; + static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV) + static const G4double dmN=mN+mN; // Doubled nucleon mass (2*AtomicMassUnit, GeV) + static const G4double me=.00051099892;// electron mass in GeV + static const G4double me2=me*me; // Squared mass of an electron in GeV^2 + static const G4double EMi=me+me2/dmN; // Universal threshold of the reaction in GeV + static const G4double EMa=300.; // Maximum tabulated Energy of nu_e in GeV + // *** Begin of the Associative memory for acceleration of the cross section calculations + static std::vector colH; //?? Vector of HighEnergyCoefficients (functional) + static std::vector TX; // Vector of pointers to the TX tabulated functions + static std::vector QE; // Vector of pointers to the QE tabulated functions + static G4bool first=true; // Flag of initialization of the energy axis + // *** End of Static Definitions (Associative Memory) *** + //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Electron + //G4double TotEnergy2=Momentum; + onlyCS=CS; // Flag to calculate only CS (not TX & QE) + lastE=Momentum/GeV; // Kinetic energy of the electron neutrino (in GeV) + if (lastE<=EMi) // Energy is below the minimum energy in the table + { + lastE=0.; + lastSig=0.; + return 0.; + } + G4int Z=targZ; // New Z, which can change the sign + if(F<=0) // This isotope was not the last used isotop + { + if(F<0) // This isotope was found in DAMDB =========> RETRIEVE + { + lastTX =TX[I]; // Pointer to the prepared TX function (same isotope) + lastQE =QE[I]; // Pointer to the prepared QE function (same isotope) + } + else // This isotope wasn't calculated previously => CREATE + { + if(first) + { + lastEN = new G4double[nE]; // This must be done only once! + Z=-Z; // To explain GetFunctions that E-axis must be filled + first=false; // To make it only once + } + lastTX = new G4double[nE]; // Allocate memory for the new TX function + lastQE = new G4double[nE]; // Allocate memory for the new QE function + G4int res=GetFunctions(Z,targN,lastTX,lastQE,lastEN);//@@analize(0=first,-1=bad,1=OK) + if(res<0) G4cerr<<"*W*G4NuENuclearCS::CalcCrossSect:Bad Function Retrieve"<=2) + { + G4int newran=ran/2; + G4double oldL=lastEN[sep]; + if(lastE<=oldL) sep-=newran; + else sep+=newran; +#ifdef pdebug + G4cout<<"G4ANuE::CCS:n="<(rXi); + if(iXi<0) iXi=0; + if(iXi>bQ2) iXi=bQ2; + G4double dXi=rXi-iXi; + G4double bnti=inl[iXi]; + G4double inti=bnti+dXi*(inl[iXi+1]-bnti); + // + G4double rXa=(Xma-Xmin)/dX; + G4int iXa=static_cast(rXa); + if(iXa<0) iXa=0; + if(iXa>bQ2) iXa=bQ2; + G4double dXa=rXa-iXa; + G4double bnta=inl[iXa]; + G4double inta=bnta+dXa*(inl[iXa+1]-bnta); + // *** Find X using the reversed table *** + G4double intx=inti+(inta-inti)*G4UniformRand(); + G4int intc=static_cast(intx); + if(intc<0) intc=0; + if(intc>bQ2) intc=bQ2; // If it is more than max, then the BAD extrapolation + G4double dint=intx-intc; + G4double mX=Xl[intc]; + G4double X=mX+dint*(Xl[intc+1]-mX); + G4double Q2=std::pow(X,pconv)-1.; + return Q2*GeV*GeV; +} + +// Randomize Q2 from neutrino to the scattered electron when scattering is not quasiElastic +G4double G4QANuENuclearCrossSection::GetNQE_ExchangeQ2() +{ + static const double mpi=.13957018; // charged pi meson mass in GeV + static const G4double me=.00051099892;// electron mass in GeV + static const G4double me2=me*me; // Squared mass of an electron in GeV^2 + static const G4double hme2=me2/2; // .5*m_e^2 in GeV^2 + static const double MN=.931494043; // Nucleon mass (inside nucleus,atomicMassUnit,GeV) + static const double MN2=MN*MN; // M_N^2 in GeV^2 + static const double dMN=MN+MN; // 2*M_N in GeV + static const double mcV=(dMN+mpi)*mpi;// constant of W>M+mc cut for Quasi-Elastic + static const G4int power=7; // direct power for the magic variable + static const G4double pconv=1./power; // conversion power for the magic variable + static const G4int nX=21; // #Of point in the Xl table (in GeV^2) + static const G4int lX=nX-1; // index of the last in the Xl table + static const G4int bX=lX-1; // @@ index of the before last in the Xl table + static const G4int nE=20; // #Of point in the El table (in GeV^2) + static const G4int bE=nE-1; // index of the last in the El table + static const G4int pE=bE-1; // index of the before last in the El table + // Reversed table + static const G4double X0[nX]={5.21412e-05, + .437860, .681908, .891529, 1.08434, 1.26751, 1.44494, 1.61915, 1.79198, 1.96493, 2.13937, + 2.31664, 2.49816, 2.68559, 2.88097, 3.08705, 3.30774, 3.54917, 3.82233, 4.15131, 4.62182}; + static const G4double X1[nX]={.00102591, + 1.00443, 1.55828, 2.03126, 2.46406, 2.87311, 3.26723, 3.65199, 4.03134, 4.40835, 4.78561, + 5.16549, 5.55031, 5.94252, 6.34484, 6.76049, 7.19349, 7.64917, 8.13502, 8.66246, 9.25086}; + static const G4double X2[nX]={.0120304, + 2.59903, 3.98637, 5.15131, 6.20159, 7.18024, 8.10986, 9.00426, 9.87265, 10.7217, 11.5564, + 12.3808, 13.1983, 14.0116, 14.8234, 15.6359, 16.4515, 17.2723, 18.1006, 18.9386, 19.7892}; + static const G4double X3[nX]={.060124, + 5.73857, 8.62595, 10.9849, 13.0644, 14.9636, 16.7340, 18.4066, 20.0019, 21.5342, 23.0142, + 24.4497, 25.8471, 27.2114, 28.5467, 29.8564, 31.1434, 32.4102, 33.6589, 34.8912, 36.1095}; + static const G4double X4[nX]={.0992363, + 8.23746, 12.1036, 15.1740, 17.8231, 20.1992, 22.3792, 24.4092, 26.3198, 28.1320, 29.8615, + 31.5200, 33.1169, 34.6594, 36.1536, 37.6044, 39.0160, 40.3920, 41.7353, 43.0485, 44.3354}; + static const G4double X5[nX]={.0561127, + 7.33661, 10.5694, 13.0778, 15.2061, 17.0893, 18.7973, 20.3717, 21.8400, 23.2211, 24.5291, + 25.7745, 26.9655, 28.1087, 29.2094, 30.2721, 31.3003, 32.2972, 33.2656, 34.2076, 35.1265}; + static const G4double X6[nX]={.0145859, + 4.81774, 6.83565, 8.37399, 9.66291, 10.7920, 11.8075, 12.7366, 13.5975, 14.4025, 15.1608, + 15.8791, 16.5628, 17.2162, 17.8427, 18.4451, 19.0259, 19.5869, 20.1300, 20.6566, 21.1706}; + static const G4double X7[nX]={.00241155, + 2.87095, 4.02492, 4.89243, 5.61207, 6.23747, 6.79613, 7.30433, 7.77270, 8.20858, 8.61732, + 9.00296, 9.36863, 9.71682, 10.0495, 10.3684, 10.6749, 10.9701, 11.2550, 11.5306, 11.7982}; + static const G4double X8[nX]={.000316863, + 1.76189, 2.44632, 2.95477, 3.37292, 3.73378, 4.05420, 4.34415, 4.61009, 4.85651, 5.08666, + 5.30299, 5.50738, 5.70134, 5.88609, 6.06262, 6.23178, 6.39425, 6.55065, 6.70149, 6.84742}; + static const G4double X9[nX]={3.73544e-05, + 1.17106, 1.61289, 1.93763, 2.20259, 2.42976, 2.63034, 2.81094, 2.97582, 3.12796, 3.26949, + 3.40202, 3.52680, 3.64482, 3.75687, 3.86360, 3.96557, 4.06323, 4.15697, 4.24713, 4.33413}; + static const G4double XA[nX]={4.19131e-06, + .849573, 1.16208, 1.38955, 1.57379, 1.73079, 1.86867, 1.99221, 2.10451, 2.20770, 2.30332, + 2.39252, 2.47622, 2.55511, 2.62977, 2.70066, 2.76818, 2.83265, 2.89437, 2.95355, 3.01051}; + static const G4double XB[nX]={4.59981e-07, + .666131, .905836, 1.07880, 1.21796, 1.33587, 1.43890, 1.53080, 1.61399, 1.69011, 1.76040, + 1.82573, 1.88682, 1.94421, 1.99834, 2.04959, 2.09824, 2.14457, 2.18878, 2.23107, 2.27162}; + static const G4double XC[nX]={4.99861e-08, + .556280, .752730, .893387, 1.00587, 1.10070, 1.18317, 1.25643, 1.32247, 1.38269, 1.43809, + 1.48941, 1.53724, 1.58203, 1.62416, 1.66391, 1.70155, 1.73728, 1.77128, 1.80371, 1.83473}; + static const G4double XD[nX]={5.40832e-09, + .488069, .657650, .778236, .874148, .954621, 1.02432, 1.08599, 1.14138, 1.19172, 1.23787, + 1.28049, 1.32008, 1.35705, 1.39172, 1.42434, 1.45514, 1.48429, 1.51197, 1.53829, 1.56339}; + static const G4double XE[nX]={5.84029e-10, + .445057, .597434, .705099, .790298, .861468, .922865, .976982, 1.02542, 1.06930, 1.10939, + 1.14630, 1.18050, 1.21233, 1.24208, 1.27001, 1.29630, 1.32113, 1.34462, 1.36691, 1.38812}; + static const G4double XF[nX]={6.30137e-11, + .418735, .560003, .659168, .737230, .802138, .857898, .906854, .950515, .989915, 1.02580, + 1.05873, 1.08913, 1.11734, 1.14364, 1.16824, 1.19133, 1.21306, 1.23358, 1.25298, 1.27139}; + static const G4double XG[nX]={6.79627e-12, + .405286, .539651, .633227, .706417, .766929, .818642, .863824, .903931, .939963, .972639, + 1.00250, 1.02995, 1.05532, 1.07887, 1.10082, 1.12134, 1.14058, 1.15867, 1.17572, 1.19183}; + static const G4double XH[nX]={7.32882e-13, + .404391, .535199, .625259, .695036, .752243, .800752, .842823, .879906, .912994, .942802, + .969862, .994583, 1.01729, 1.03823, 1.05763, 1.07566, 1.09246, 1.10816, 1.12286, 1.13667}; + static const G4double XI[nX]={7.90251e-14, + .418084, .548382, .636489, .703728, .758106, .803630, .842633, .876608, .906576, .933269, + .957233, .978886, .998556, 1.01651, 1.03295, 1.04807, 1.06201, 1.07489, 1.08683, 1.09792}; + static const G4double XJ[nX]={8.52083e-15, + .447299, .579635, .666780, .731788, .783268, .825512, .861013, .891356, .917626, .940597, + .960842, .978802, .994820, 1.00917, 1.02208, 1.03373, 1.04427, 1.05383, 1.06253, 1.07046}; + // Direct table + static const G4double Xmin[nE]={X0[0],X1[0],X2[0],X3[0],X4[0],X5[0],X6[0],X7[0],X8[0], + X9[0],XA[0],XB[0],XC[0],XD[0],XE[0],XF[0],XG[0],XH[0],XI[0],XJ[0]}; + static const G4double dX[nE]={ + (X0[lX]-X0[0])/lX, (X1[lX]-X1[0])/lX, (X2[lX]-X2[0])/lX, (X3[lX]-X3[0])/lX, + (X4[lX]-X4[0])/lX, (X5[lX]-X5[0])/lX, (X6[lX]-X6[0])/lX, (X7[lX]-X7[0])/lX, + (X8[lX]-X8[0])/lX, (X9[lX]-X9[0])/lX, (XA[lX]-XA[0])/lX, (XB[lX]-XB[0])/lX, + (XC[lX]-XC[0])/lX, (XD[lX]-XD[0])/lX, (XE[lX]-XE[0])/lX, (XF[lX]-XF[0])/lX, + (XG[lX]-XG[0])/lX, (XH[lX]-XH[0])/lX, (XI[lX]-XI[0])/lX, (XJ[lX]-XJ[0])/lX}; + static const G4double* Xl[nE]= + {X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,XA,XB,XC,XD,XE,XF,XG,XH,XI,XJ}; + static const G4double I0[nX]={0, + .354631, 1.08972, 2.05138, 3.16564, 4.38343, 5.66828, 6.99127, 8.32858, 9.65998, 10.9680, + 12.2371, 13.4536, 14.6050, 15.6802, 16.6686, 17.5609, 18.3482, 19.0221, 19.5752, 20.0000}; + static const G4double I1[nX]={0, + .281625, .877354, 1.67084, 2.60566, 3.64420, 4.75838, 5.92589, 7.12829, 8.34989, 9.57708, + 10.7978, 12.0014, 13.1781, 14.3190, 15.4162, 16.4620, 17.4496, 18.3724, 19.2245, 20.0000}; + static const G4double I2[nX]={0, + .201909, .642991, 1.24946, 1.98463, 2.82370, 3.74802, 4.74263, 5.79509, 6.89474, 8.03228, + 9.19947, 10.3889, 11.5938, 12.8082, 14.0262, 15.2427, 16.4527, 17.6518, 18.8356, 20.0000}; + static const G4double I3[nX]={0, + .140937, .461189, .920216, 1.49706, 2.17728, 2.94985, 3.80580, 4.73758, 5.73867, 6.80331, + 7.92637, 9.10316, 10.3294, 11.6013, 12.9150, 14.2672, 15.6548, 17.0746, 18.5239, 20.0000}; + static const G4double I4[nX]={0, + .099161, .337358, .694560, 1.16037, 1.72761, 2.39078, 3.14540, 3.98768, 4.91433, 5.92245, + 7.00942, 8.17287, 9.41060, 10.7206, 12.1010, 13.5500, 15.0659, 16.6472, 18.2924, 20.0000}; + static const G4double I5[nX]={0, + .071131, .255084, .543312, .932025, 1.41892, 2.00243, 2.68144, 3.45512, 4.32283, 5.28411, + 6.33859, 7.48602, 8.72621, 10.0590, 11.4844, 13.0023, 14.6128, 16.3158, 18.1115, 20.0000}; + static const G4double I6[nX]={0, + .053692, .202354, .443946, .778765, 1.20774, 1.73208, 2.35319, 3.07256, 3.89177, 4.81249, + 5.83641, 6.96528, 8.20092, 9.54516, 10.9999, 12.5670, 14.2486, 16.0466, 17.9630, 20.0000}; + static const G4double I7[nX]={0, + .043065, .168099, .376879, .672273, 1.05738, 1.53543, 2.10973, 2.78364, 3.56065, 4.44429, + 5.43819, 6.54610, 7.77186, 9.11940, 10.5928, 12.1963, 13.9342, 15.8110, 17.8313, 20.0000}; + static const G4double I8[nX]={0, + .036051, .143997, .327877, .592202, .941572, 1.38068, 1.91433, 2.54746, 3.28517, 4.13277, + 5.09574, 6.17984, 7.39106, 8.73568, 10.2203, 11.8519, 13.6377, 15.5854, 17.7033, 20.0000}; + static const G4double I9[nX]={0, + .030977, .125727, .289605, .528146, .846967, 1.25183, 1.74871, 2.34384, 3.04376, 3.85535, + 4.78594, 5.84329, 7.03567, 8.37194, 9.86163, 11.5150, 13.3430, 15.3576, 17.5719, 20.0000}; + static const G4double IA[nX]={0, + .027129, .111420, .258935, .475812, .768320, 1.14297, 1.60661, 2.16648, 2.83034, 3.60650, + 4.50394, 5.53238, 6.70244, 8.02569, 9.51488, 11.1841, 13.0488, 15.1264, 17.4362, 20.0000}; + static const G4double IB[nX]={0, + .024170, .100153, .234345, .433198, .703363, 1.05184, 1.48607, 2.01409, 2.64459, 3.38708, + 4.25198, 5.25084, 6.39647, 7.70319, 9.18708, 10.8663, 12.7617, 14.8968, 17.2990, 20.0000}; + static const G4double IC[nX]={0, + .021877, .091263, .214670, .398677, .650133, .976322, 1.38510, 1.88504, 2.48555, 3.19709, + 4.03129, 5.00127, 6.12184, 7.40989, 8.88482, 10.5690, 12.4888, 14.6748, 17.1638, 20.0000}; + static const G4double ID[nX]={0, + .020062, .084127, .198702, .370384, .606100, .913288, 1.30006, 1.77535, 2.34912, 3.03253, + 3.83822, 4.78063, 5.87634, 7.14459, 8.60791, 10.2929, 12.2315, 14.4621, 17.0320, 20.0000}; + static const G4double IE[nX]={0, + .018547, .078104, .185102, .346090, .567998, .858331, 1.22535, 1.67824, 2.22735, 2.88443, + 3.66294, 4.57845, 5.64911, 6.89637, 8.34578, 10.0282, 11.9812, 14.2519, 16.8993, 20.0000}; + static const G4double IF[nX]={0, + .017143, .072466, .172271, .323007, .531545, .805393, 1.15288, 1.58338, 2.10754, 2.73758, + 3.48769, 4.37450, 5.41770, 6.64092, 8.07288, 9.74894, 11.7135, 14.0232, 16.7522, 20.0000}; + static const G4double IG[nX]={0, + .015618, .066285, .158094, .297316, .490692, .745653, 1.07053, 1.47479, 1.96931, 2.56677, + 3.28205, 4.13289, 5.14068, 6.33158, 7.73808, 9.40133, 11.3745, 13.7279, 16.5577, 20.0000}; + static const G4double IH[nX]={0, + .013702, .058434, .139923, .264115, .437466, .667179, .961433, 1.32965, 1.78283, 2.33399, + 2.99871, 3.79596, 4.74916, 5.88771, 7.24937, 8.88367, 10.8576, 13.2646, 16.2417, 20.0000}; + static const G4double II[nX]={0, + .011264, .048311, .116235, .220381, .366634, .561656, .813132, 1.13008, 1.52322, 2.00554, + 2.59296, 3.30542, 4.16834, 5.21490, 6.48964, 8.05434, 9.99835, 12.4580, 15.6567, 20.0000}; + static const G4double IJ[nX]={0, + .008628, .037206, .089928, .171242, .286114, .440251, .640343, .894382, 1.21208, 1.60544, + 2.08962, 2.68414, 3.41486, 4.31700, 5.44048, 6.85936, 8.69067, 11.1358, 14.5885, 20.0000}; + static const G4double* Il[nE]= + {I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ}; + static const G4double lE[nE]={ +-1.98842,-1.58049,-1.17256,-.764638,-.356711, .051215, .459141, .867068, 1.27499, 1.68292, + 2.09085, 2.49877, 2.90670, 3.31463, 3.72255, 4.13048, 4.53840, 4.94633, 5.35426, 5.76218}; + static const G4double lEmi=lE[0]; + static const G4double lEma=lE[nE-1]; + static const G4double dlE=(lEma-lEmi)/bE; + //*************************************************************************************** + G4double Enu=lastE; // Get energy of the last calculated cross-section + G4double lEn=std::log(Enu); // log(E) for interpolation + G4double rE=(lEn-lEmi)/dlE; // Position of the energy + G4int fE=static_cast(rE); // Left bin for interpolation + if(fE<0) fE=0; + if(fE>pE)fE=pE; + G4int sE=fE+1; // Right bin for interpolation + G4double dE=rE-fE; // relative log shift from the left bin + G4double dEnu=Enu+Enu; // doubled energy of nu/anu + G4double Enu2=Enu*Enu; // squared energy of nu/anu + G4double Ee=Enu-me; // Free Energy of neutrino/anti-neutrino + G4double ME=Enu*MN; // M*E + G4double dME=ME+ME; // 2*M*E + G4double dEMN=(dEnu+MN)*ME; + G4double MEm=ME-hme2; + G4double sqE=Enu*std::sqrt(MEm*MEm-me2*MN2); + G4double E2M=MN*Enu2-(Enu+MN)*hme2; + G4double ymax=(E2M+sqE)/dEMN; + G4double ymin=(E2M-sqE)/dEMN; + G4double rmin=1.-ymin; + G4double rhm2E=hme2/Enu2; + G4double Q2mi=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E)); // Q2_min(E_nu) + G4double Q2ma=dME*ymax; // Q2_max(E_nu) + G4double Q2nq=Ee*dMN-mcV; + if(Q2ma>Q2nq) Q2ma=Q2nq; // Correction for Non Quasi Elastic + // --- now r_min=Q2mi/Q2ma and r_max=1.; when r is randomized -> Q2=r*Q2ma --- + G4double Rmi=Q2mi/Q2ma; + G4double shift=.875/(1.+.2977/Enu/Enu)/std::pow(Enu,.78); + // --- E-interpolation must be done in a log scale --- + G4double Xmi=std::pow((shift-Rmi),power);// X_min(E_nu) + G4double Xma=std::pow((shift-1.),power); // X_max(E_nu) + // Find the integral values integ(Xmi) & integ(Xma) using the direct table + G4double idX=dX[fE]+dE*(dX[sE]-dX[fE]); // interpolated X step + G4double iXmi=Xmin[fE]+dE*(Xmin[sE]-Xmin[fE]); // interpolated X minimum + G4double rXi=(Xmi-iXmi)/idX; + G4int iXi=static_cast(rXi); + if(iXi<0) iXi=0; + if(iXi>bX) iXi=bX; + G4double dXi=rXi-iXi; + G4double bntil=Il[fE][iXi]; + G4double intil=bntil+dXi*(Il[fE][iXi+1]-bntil); + G4double bntir=Il[sE][iXi]; + G4double intir=bntir+dXi*(Il[sE][iXi+1]-bntir); + G4double inti=intil+dE*(intir-intil);// interpolated begin of the integral + // + G4double rXa=(Xma-iXmi)/idX; + G4int iXa=static_cast(rXa); + if(iXa<0) iXa=0; + if(iXa>bX) iXa=bX; + G4double dXa=rXa-iXa; + G4double bntal=Il[fE][iXa]; + G4double intal=bntal+dXa*(Il[fE][iXa+1]-bntal); + G4double bntar=Il[sE][iXa]; + G4double intar=bntar+dXa*(Il[sE][iXa+1]-bntar); + G4double inta=intal+dE*(intar-intal);// interpolated end of the integral + // + // *** Find X using the reversed table *** + G4double intx=inti+(inta-inti)*G4UniformRand(); + G4int intc=static_cast(intx); + if(intc<0) intc=0; + if(intc>bX) intc=bX; + G4double dint=intx-intc; + G4double mXl=Xl[fE][intc]; + G4double Xlb=mXl+dint*(Xl[fE][intc+1]-mXl); + G4double mXr=Xl[sE][intc]; + G4double Xrb=mXr+dint*(Xl[sE][intc+1]-mXr); + G4double X=Xlb+dE*(Xrb-Xlb); // interpolated X value + G4double R=shift-std::pow(X,pconv); + G4double Q2=R*Q2ma; + return Q2*GeV*GeV; +} + +// It returns a fraction of the direct interaction of the neutrino with quark-partons +G4double G4QANuENuclearCrossSection::GetDirectPart(G4double Q2) +{ + G4double f=Q2/4.62; + G4double ff=f*f; + G4double r=ff*ff; + G4double s=std::pow((1.+.6/Q2),(-1.-(1.+r)/(12.5+r/.3))); + //@@ It is the same for nu/anu, but for nu it is a bit less, and for anu a bit more (par) + return 1.-s*(1.-s/2); +} + +// #of quark-partons in the nonperturbative phase space is the same for neut and anti-neut +G4double G4QANuENuclearCrossSection::GetNPartons(G4double Q2) +{ + return 3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space +} + +// This class can provide only virtual exchange pi+ (a substitute for W+ boson) +G4int G4QANuENuclearCrossSection::GetExchangePDGCode() {return -211;} diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuMuNuclearCrossSection.cc b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuMuNuclearCrossSection.cc index eb413aded0..b5c106c364 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuMuNuclearCrossSection.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QANuMuNuclearCrossSection.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4QANuMuNuclearCrossSection.cc,v 1.9 2006/12/01 10:57:46 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QANuMuNuclearCrossSection.cc,v 1.11 2007/11/01 16:09:38 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Physics class: G4QANuMuNuclearCrossSection for gamma+A cross sections @@ -38,8 +38,8 @@ // **************************************************************************************** //=============================================================================================== -///#define debug -#define edebug +//#define debug +//#define edebug //#define pdebug //#define ppdebug //#define tdebug @@ -85,7 +85,7 @@ G4double G4QANuMuNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom, static std::vector colCS; // Vector of last cross sections for the reaction // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---*** G4double pEn=pMom; -#ifdef pdebug +#ifdef debug G4cout<<"G4QAMNCS::GetCS:>> f="< CS=0"<1) sep+=newran; + else sep+=newran; ran=newran; chk=chk+chk; } @@ -379,22 +379,32 @@ G4int G4QANuMuNuclearCrossSection::GetFunctions (G4int z, G4int n, static const G4double mmu=.105658369; // Mass of a muon in GeV static const G4double mmu2=mmu*mmu; // Squared mass of a muon in GeV^2 static const G4double thresh=mmu+mmu2/dmN; // Universal threshold in GeV - static const G4int nE=33; // !! If change this, change it in GetCrossSection() (*.cc) !! + static const G4int nE=65; // !! If change this, change it in GetCrossSection() (*.cc) !! static const G4double nuEn[nE]={thresh, - 0.112443, 0.121027, 0.130968, 0.142546, 0.156109, 0.172102, 0.191090, 0.213802, - 0.241183, 0.274476, 0.315330, 0.365955, 0.429353, 0.509647, 0.612580, 0.746264, - 0.922326, 1.157700, 1.477470, 1.919460, 2.541810, 3.435700, 4.747300, 6.716420, - 9.746220, 14.53270, 22.31170, 35.34420, 57.90250, 98.34160, 173.6130, 319.4900}; +.112039,.116079,.120416,.125076,.130090,.135494,.141324,.147626,.154445,.161838, +.169864,.178594,.188105,.198485,.209836,.222272,.235923,.250941,.267497,.285789, +.306045,.328530,.353552,.381466,.412689,.447710,.487101,.531538,.581820,.638893, +.703886,.778147,.863293,.961275,1.07445,1.20567,1.35843,1.53701,1.74667,1.99390, +2.28679,2.63542,3.05245,3.55386,4.15990,4.89644,5.79665,6.90336,8.27224,9.97606, +12.1106,14.8029,18.2223,22.5968,28.2351,35.5587,45.1481,57.8086,74.6682,97.3201, +128.036,170.085,228.220,309.420}; static const G4double TOTX[nE]={0., - 0.084587, 0.288685, 0.410021, 0.511290, 0.602236, 0.686143, 0.764097, 0.836055, - 0.901224, 0.958271, 1.005510, 1.041180, 1.063760, 1.072400, 1.067220, 1.049490, - 1.021490, 0.986186, 0.946382, 0.905672, 0.866103, 0.828985, 0.795853, 0.766550, - 0.740733, 0.717822, 0.697109, 0.677882, 0.659543, 0.641549, 0.622752, 0.603635}; +.077498,.247583,.329691,.386384,.429087,.462699,.489899,.512316,.530996,.546614, +.559616,.570292,.578840,.585395,.590053,.593083,.594197,.593614,.591396,.587611, +.582335,.575653,.567667,.558490,.548417,.537270,.525352,.512825,.499857,.486620, +.473283,.460014,.446970,.434294,.422116,.410656,.399782,.389665,.380349,.371860, +.364207,.357387,.351388,.346192,.341778,.338122,.335198,.332980,.331439,.330544, +.330263,.330558,.331391,.332718,.334494,.336667,.339182,.341697,.344470,.348125, +.351322,.354481,.357507,.359239}; static const G4double QELX[nE]={0., - .0095112, .0349388, .0536998, .0728821, .0940146, .1180870, .1460120, .1787500, - .2173600, .2627240, .3122570, .3633810, .4144780, .4639300, .5103820, .5520940, - .5873830, .6154440, .6358140, .6496310, .6580280, .6629570, .6655750, .6671860, - .6680500, .6687700, .6692590, .6694790, .6697380, .6699010, .6700020, .6699120}; +.008683,.028739,.039700,.048327,.055820,.062693,.069235,.075631,.082010,.088463, +.095059,.101851,.108883,.116192,.123814,.131826,.140185,.148962,.158197,.167933, +.178221,.189119,.200700,.213045,.226326,.240454,.255277,.270612,.286388,.302608, +.319318,.336582,.354468,.373031,.392427,.412445,.433146,.454448,.476222,.498289, +.520430,.542558,.564130,.585003,.604928,.623680,.641266,.657255,.671704,.684586, +.696111,.706028,.714553,.721951,.728085,.733182,.737348,.740958,.743716,.746059, +.747806,.749129,.750331,.751100}; + // -------------------------------- G4int first=0; if(z<0.) @@ -756,4 +766,4 @@ G4double G4QANuMuNuclearCrossSection::GetNPartons(G4double Q2) } // This class can provide only virtual exchange pi+ (a substitute for W+ boson) -G4int G4QANuMuNuclearCrossSection::GetExchangePDGCode() {return 211;} +G4int G4QANuMuNuclearCrossSection::GetExchangePDGCode() {return -211;} diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QAtomicElectronScattering.cc b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QAtomicElectronScattering.cc index dad4f7e273..daabb2ebc2 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QAtomicElectronScattering.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QAtomicElectronScattering.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QAtomicElectronScattering.cc,v 1.2 2006/12/13 15:45:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QAtomicElectronScattering class ----------------- // by Mikhail Kossov, December 2003. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCaptureAtRest.cc b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCaptureAtRest.cc index 3e49aa4d7a..c25dca4efc 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCaptureAtRest.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCaptureAtRest.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4QCaptureAtRest.cc,v 1.12 2007/04/20 15:50:56 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QCaptureAtRest.cc,v 1.13 2007/10/02 10:00:37 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QCaptureAtRest class ----------------- // by Mikhail Kossov, December 2003. @@ -305,6 +305,7 @@ G4VParticleChange* G4QCaptureAtRest::AtRestDoIt(const G4Track& track, const G4St #ifdef debug G4cout<<"G4QCaptureAtRest::AtRestDoIt: projPDG="<Set4Momentum(scat4M); G4Track* aNewTrack = new G4Track(theSec, localtime, position ); + aNewTrack->SetWeight(weight); // weighted aNewTrack->SetTouchableHandle(trTouchable); aParticleChange.AddSecondary( aNewTrack ); // Filling the recoil nucleus @@ -537,6 +539,7 @@ G4VParticleChange* G4QCoherentChargeExchange::PostStepDoIt(const G4Track& track, #endif // Make a recoil nucleus aNewTrack = new G4Track(theSec, localtime, position ); + aNewTrack->SetWeight(weight); // weighted aNewTrack->SetTouchableHandle(trTouchable); aParticleChange.AddSecondary( aNewTrack ); #ifdef debug @@ -551,6 +554,7 @@ G4double G4QCoherentChargeExchange::CalculateXSt(G4bool oxs, G4bool xst, G4doubl static G4bool init=false; static G4bool first=true; static G4VQCrossSection* CSmanager; + G4QuasiFreeRatios* qfMan=G4QuasiFreeRatios::GetPointer(); if(first) // Connection with a singletone { CSmanager=G4QElasticCrossSection::GetPointer(); @@ -560,12 +564,12 @@ G4double G4QCoherentChargeExchange::CalculateXSt(G4bool oxs, G4bool xst, G4doubl if(oxs && xst) // Only the Cross-Section can be returened { res=CSmanager->GetCrossSection(true, p, Z, N, pPDG); // XS for isotope - res*=ChExElCoef(p, Z, N, pPDG); + res*=qfMan->ChExElCoef(p*MeV, Z, N, pPDG); } else if(!oxs && xst) // Calculate Cross-Section & prepare differential { res=CSmanager->GetCrossSection(false, p, Z, N, pPDG);// XS for isotope + init t-distr. - res*=ChExElCoef(p, Z, N, pPDG); // @@ is that necessary? + res*=qfMan->ChExElCoef(p*MeV, Z, N, pPDG); // The XS for the nucleus must be calculated the last init=true; } @@ -577,23 +581,3 @@ G4double G4QCoherentChargeExchange::CalculateXSt(G4bool oxs, G4bool xst, G4doubl else G4cout<<"*Warning*G4QCohChrgExchange::CalculateXSt: NotInitiatedScattering"<first; // #of Neuterons in the isotope j of El i IsN->push_back(N); // Remember Min N for the Element G4double CSI=CSmanager->GetCrossSection(true,Momentum,Z,N,pPDG);//CS(j,i) for isotope + if(CSmanager2)CSI+=CSmanager2->GetCrossSection(true,Momentum,Z,N,pPDG);//CS(j,i)nu,nu #ifdef debug G4cout<<"GQC::GMF:X="<Get4Momentum(); + G4bool scat=false; // No CHEX in proj scattering + G4int scatPDG=0; // Must be filled if true (CHEX) + G4LorentzVector proj4M=projHadron->Get4Momentum(); // 4-momentum of the projectile (IU?) G4LorentzVector scat4M=proj4M; // Must be filled if true G4double momentum = projHadron->GetTotalMomentum(); // 3-momentum of the Particle G4double Momentum=proj4M.rho(); @@ -534,19 +585,23 @@ G4VParticleChange* G4QCollision::PostStepDoIt(const G4Track& track, const G4Step return 0; } aParticleChange.Initialize(track); + G4double weight = track.GetWeight(); + if(photNucBias!=1.) weight/=photNucBias; + else if(weakNucBias!=1.) weight/=weakNucBias; G4double localtime = track.GetGlobalTime(); G4ThreeVector position = track.GetPosition(); G4TouchableHandle trTouchable = track.GetTouchableHandle(); // G4int targPDG=90000000+Z*1000+N; // PDG Code of the target nucleus G4QPDGCode targQPDG(targPDG); - G4double tM=targQPDG.GetMass(); // Target mass + G4double tgM=targQPDG.GetMass(); // Target mass + G4double tM=tgM; // Target mass (copy to be changed) G4QHadronVector* output=new G4QHadronVector;// Prototype of EnvironOutput G4QHadronVector G4double absMom = 0.; // Prototype of absorbed by nucleus Moment G4QHadronVector* leadhs=new G4QHadronVector;// Prototype of QuasmOutput G4QHadronVectorum G4LorentzVector lead4M(0.,0.,0.,0.); // Prototype of LeadingQ 4-momentum if(aProjPDG==11 || aProjPDG==13 || aProjPDG==15) // leptons with photonuclear - { // Lepto-nuclear case with the equivalent photon algorithm. @@InFuture + neutrino & QE + { // Lepto-nuclear case with the equivalent photon algorithm. @@InFuture + NC (?) #ifdef debug G4cout<<"G4QCollision::PostStDoIt:startSt="<? OT="<GetQEL_ExchangeQ2(); // OK, im MeV^2 - G4double ds=s+s; // doubled s + G4double Q2=0.; // Simulate transferred momentum, in MeV^2 + if(secnu) Q2=CSmanager2->GetQEL_ExchangeQ2(); + else Q2=CSmanager->GetQEL_ExchangeQ2(); +#ifdef debug + G4cout<<"G4QCollision::PostStDoIt:QuasiEl(nu="<GetNQE_ExchangeQ2(); - projPDG=CSmanager->GetExchangePDGCode(); + + if(secnu&&projPDG==2212||!secnu&&projPDG==2112) targPDG+=1; // Recover target PDG, + else if(secnu&&projPDG==2112||!secnu&&projPDG==2212) targPDG+=1000; // if not quasiEl + G4double Q2=0; // Simulate transferred momentum, in MeV^2 + if(secnu) Q2=CSmanager->GetNQE_ExchangeQ2(); + else Q2=CSmanager2->GetNQE_ExchangeQ2(); +#ifdef debug + G4cout<<"G4QColl::PStDoIt: MultiPeriferal s="<GetExchangePDGCode();// PDG Code of the effective gamma + else projPDG=CSmanager->GetExchangePDGCode(); // PDG Code of the effective pion //@@ Temporary made only for direct interaction and for N=3 (good for small Q2) //@@ inFuture use N=GetNPartons and directFraction=GetDirectPart, @@ W2... G4double r=G4UniformRand(); - G4double r1=0.5; // (1-x) + G4double r1=0.5; // (1-x) if(r<0.5) r1=std::sqrt(r+r)*(.5+.1579*(r-.5)); else if(r>0.5) r1=1.-std::sqrt(2.-r-r)*(.5+.1579*(.5-r)); - G4double xn=1.-mudM/Momentum; // Normalization of (1-x) [x>mudM/Mom] + G4double xn=1.-mldM/Momentum; // Normalization of (1-x) [x>mldM/Mom] G4double x1=xn*r1; // (1-x) G4double x=1.-x1; // x=2k/M //G4double W2=(hdM2+Q2/x)*x1; // W2 candidate - G4double mx=hdM*x; - G4double we=(Q2/mx-mx)/2; // transfered energy - G4double muQ2=(mu2+Q2)/2; - G4double cost=(kinEnergy*we-muQ2)/kinEnergy/std::sqrt(we*we+Q2); + G4double mx=hdM*x; // Part of the target to interact with + G4double we=Q2/(mx+mx); // transfered energy + if(we>=kinEnergy-ml-.001) we=kinEnergy-ml-.0001; // safety to avoid nan=sqrt(neg) + G4double pot=kinEnergy-we; // energy of the secondary lepton + G4double mlQ2=ml2+Q2; + G4double cost=(pot-mlQ2/dKinE)/std::sqrt(pot*pot-ml2); // LS cos(theta) if(std::fabs(cost)>1) { +#ifdef debug + G4cout<<"*G4QCollision::PostStDoIt: cost="<mu+W"); + if(projPDG<0) fintPDG-= 999; + else fintPDG+= 999; + } + G4double fM=G4QPDGCode(fintPDG).GetMass();// compound nucleus Mass (MeV) + G4double fM2=fM*fM; + G4LorentzVector tg4M=G4LorentzVector(0.,0.,0.,tgM); + G4LorentzVector c4M=tg4M+proj4M; +#ifdef debug + G4cout<<"G4QCol::PSDI:fM2="<QENuc+ResNuc"); + } +#ifdef qedebug + G4cout<<"G4QCol::PStDoIt:QE-N,RA="<(N-1)) // He3 + { + nPDG=90002001; + qM=mHel3; + nZ=2; + restPDG-=2001; + } + else // tritium + { + nPDG=90001002; + qM=mTrit; + nZ=1; + restPDG-=1002; + } + } + else + { + nPDG=90002002; // Alpha + qM=mAlph; + nA=4; + nZ=2; + restPDG-=2002; + } + rA=A-nA; + rZ=Z-nZ; + // This is a simple case of cluster at rest + //G4double rM=G4QPDGCode(restPDG).GetMass();// Mass of the residual nucleus + //r4M=G4LorentzVector(0.,0.,0.,rM); // 4mom of the residual nucleus + //n4M=G4LorentzVector(0.,0.,0.,tM-rM); // 4mom of the quasi-free cluster + // --- End of the "simple case of cluster at rest" + // Make a fake quasi-Fermi distribution for clusters (clusters are not at rest) + G4LorentzVector t4M(0.,0.,0.,tM); // 4m of the target nucleus to be decayed + G4double rM=G4QPDGCode(restPDG).GetMass();// Mass of the residual nucleus + r4M=G4LorentzVector(0.,0.,0.,rM); // 4mom of the residual nucleus + G4double rM2=rM*rM; + G4double nM=std::sqrt(rM2+tM*tM-(tM+tM)*std::sqrt(rM2+dmom*dmom));// M of q-cluster + n4M=G4LorentzVector(0.,0.,0.,nM); // 4mom of the quasi-nucleon +#ifdef qedebug + G4cout<<"G4QCollis::PStDoIt:QEC,p="<QEClu+ResNuc"); + } + // --- End of the moving cluster implementation --- +#ifdef qedebug + G4cout<<"G4QCol::PStDoIt:QEC,RN="<minM*minM) + { +#ifdef qedebug + G4cout<<"G4QCol::PStDoIt:***Enter***,cmM2="< minM2="<rZ || projPDG==2112&&rZ>1))// @@ Use proj chex + if(2>3) + { +#ifdef qedebug + G4cout<<"G4QCol::PStDoIt:-Enter,P="<ChExElCoef(efP*MeV, nZ, nA-nZ, projPDG); // ChEx/Elast(pPDG!) +#ifdef qedebug + G4cout<<"G4QCol::PStDoIt:chl="<0.&&cmM2>minM*minM&&G4UniformRand() sctout=qfMan->Scatter(nPDG, n4M, + projPDG, proj4M); +#ifdef qedebug + G4cout<<"G4QCollis::PStDoIt:QElS,proj="< work for Hisaya @@ @@ -1001,7 +1534,7 @@ G4VParticleChange* G4QCollision::PostStepDoIt(const G4Track& track, const G4Step G4cout<<"G4QCollision::PostStepDoIt: H#"< G4QDiffraction::ElementZ; // Z of element(i) in theLastCalc +std::vector G4QDiffraction::ElProbInMat; // SumProbOfElem in Material +std::vector*> G4QDiffraction::ElIsoN;// N of isotope(j), E(i) +std::vector*>G4QDiffraction::IsoProbInEl;//SumProbIsotE(i) + +// Constructor +G4QDiffraction::G4QDiffraction(const G4String& processName):G4VDiscreteProcess(processName) +{ +#ifdef debug + G4cout<<"G4QDiffraction::Constructor is called processName="<0) G4cout << GetProcessName() << " process is created "<< G4endl; + + G4QCHIPSWorld::Get()->GetParticles(nPartCWorld); // Create CHIPS World (234 part. max) +} + +// Destructor +G4QDiffraction::~G4QDiffraction() {} + + +G4LorentzVector G4QDiffraction::GetEnegryMomentumConservation(){return EnMomConservation;} + +G4int G4QDiffraction::GetNumberOfNeutronsInTarget() {return nOfNeutrons;} + +// output of the function must be in units of length! L=1/sig_V,sig_V=SUM(n(j,i)*sig(j,i)), +// where n(i,j) is a number of nuclei of the isotop j of the element i in V=1(lengtUnit^3) +// ********** All CHIPS cross sections are calculated in the surface units ************ +G4double G4QDiffraction::GetMeanFreePath(const G4Track&Track,G4double Q,G4ForceCondition*F) +{ + *F = NotForced; + const G4DynamicParticle* incidentParticle = Track.GetDynamicParticle(); + G4ParticleDefinition* incidentParticleDefinition=incidentParticle->GetDefinition(); + if( !IsApplicable(*incidentParticleDefinition)) + G4cout<<"-Warning-G4QDiffraction::GetMeanFreePath for notImplemented Particle"<GetTotalMomentum(); // 3-momentum of the Particle +#ifdef debug + G4double KinEn = incidentParticle->GetKineticEnergy(); + G4cout<<"G4QDiffraction::GetMeanFreePath:Prpj, kinE="<* SPI=IsoProbInEl[ip]; // Pointer to the SPI vector + SPI->clear(); + delete SPI; + std::vector* IsN=ElIsoN[ip]; // Pointer to the N vector + IsN->clear(); + delete IsN; + } + ElProbInMat.clear(); // Clean up the SumProb's of Elements (SPE) + ElementZ.clear(); // Clear the body vector for Z of Elements + IsoProbInEl.clear(); // Clear the body vector for SPI + ElIsoN.clear(); // Clear the body vector for N of Isotopes + for(G4int i=0; i(pElement->GetZ()); // Z of the Element + ElementZ.push_back(Z); // Remember Z of the Element + G4int isoSize=0; // The default for the isoVectorLength is 0 + G4int indEl=0; // Index of non-natural element or 0(default) + G4IsotopeVector* isoVector=pElement->GetIsotopeVector(); // Get the predefined IsoVect + if(isoVector) isoSize=isoVector->size();// Get size of the existing isotopeVector +#ifdef debug + G4cout<<"G4QDiffraction::GetMeanFreePath: isovector Length="<GetIndex()+1; // Index of the non-trivial element is an order +#ifdef debug + G4cout<<"G4QDiffr::GetMFP:iE="<IsDefined(Z,indEl)<IsDefined(Z,indEl)) // This index is not defined for this Z: define + { + std::vector*>* newAbund = + new std::vector*>; + G4double* abuVector=pElement->GetRelativeAbundanceVector(); + for(G4int j=0; jGetIsotope(j)->GetN()-Z; // N means A=N+Z ! + if(pElement->GetIsotope(j)->GetZ()!=Z)G4cerr<<"G4QDiffract::GetMeanFreePath: Z=" + <GetIsotope(j)->GetZ()<<"#"<* pr= new std::pair(N,abund); +#ifdef debug + G4cout<<"G4QDiffract::GetMeanFreePath:pair#"<push_back(pr); + } +#ifdef debug + G4cout<<"G4QDiffract::GetMeanFreePath:pairVectorLength="<size()<InitElement(Z,indEl,newAbund); // definition of the newInd + for(G4int k=0; k*>* cs= Isotopes->GetCSVector(Z,indEl);//CSPointer + std::vector* SPI = new std::vector; // Pointer to the SPI vector + IsoProbInEl.push_back(SPI); + std::vector* IsN = new std::vector; // Pointer to the N vector + ElIsoN.push_back(IsN); + G4int nIs=cs->size(); // A#Of Isotopes in the Element +#ifdef debug + G4cout<<"G4QDiffract::GetMFP:=***=>,#isot="<="<GetMeanCrossSection(Z,indEl) + <<",AddSigm="<GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i]<>G4QDiffraction::IsApplicable: projPDG="<GetParticles(nPartCWorld); // Create CHIPS World (234 part.max) + diffRatio=G4QDiffractionRatio::GetPointer(); + } + //------------------------------------------------------------------------------------- + const G4DynamicParticle* projHadron = track.GetDynamicParticle(); + const G4ParticleDefinition* particle=projHadron->GetDefinition(); +#ifdef debug + G4cout<<"G4QDiffraction::PostStepDoIt: Before the GetMeanFreePath is called In4M=" + <Get4Momentum()<<" of PDG="<GetPDGEncoding()<<", Type=" + <GetParticleType()<<",SubType="<GetParticleSubType()<Get4Momentum())/MeV; // Convert to MeV! + G4double momentum = projHadron->GetTotalMomentum()/MeV; // 3-momentum of the Proj in MeV + G4double Momentum = proj4M.rho(); // @@ Just for the test purposes + if(std::fabs(Momentum-momentum)>.000001) + G4cerr<<"-Warning-G4QDiffraction::PostStepDoIt:P_IU="<GetElementVector(); + G4int nE=material->GetNumberOfElements(); +#ifdef debug + G4cout<<"G4QDiffraction::PostStepDoIt: "<GetPDGEncoding(); + G4cout<<"G4QDiffraction::PostStepDoIt: projPDG="<ret 0"<size(); // #of isotopes in the element i +#ifdef debug + G4cout<<"G4QDiffraction::PostStepDoIt: nI="<N="<GetKineticEnergy()*MeV; // Kin energy in MeV (Is *MeV n?) + G4ParticleMomentum dir = projHadron->GetMomentumDirection();// It is a unit three-vector + G4LorentzVector tot4M=proj4M+G4LorentzVector(0.,0.,0.,tM); // Total 4-mom of the reaction +#ifdef debug + G4cout<<"G4QDiffraction::PostStepDoIt: tM="<pM="<TargFragment(projPDG, proj4M, Z, N); + G4int nSec=out->size(); // #of secondaries in the diffraction reaction + G4DynamicParticle* theSec=0; // A prototype for secondary for the secondary + G4LorentzVector dif4M(0.,0.,0.,0.); // Prototype for the secondary 4-momentum + G4int difPDG=0; // PDG code of the secondary + G4QHadron* difQH=0; // Prototype for a Q-secondary +#ifdef pdebug + G4cout<<"G4QDiffraction::PostStepDoIt: =====found===== nSecondaries="<GetPDGCode(); + G4ParticleDefinition* theDefinition=0; + if (difPDG==2212 || difPDG==90001000) theDefinition=G4Proton::Proton(); + else if(difPDG==2112 || difPDG==90000001) theDefinition=G4Neutron::Neutron(); + else if(difPDG== 22) theDefinition=G4Gamma::Gamma(); + else if(difPDG== 111) theDefinition=G4PionZero::PionZero(); + else if(difPDG==-211 || difPDG==89999001) theDefinition=G4PionMinus::PionMinus(); + else if(difPDG== 211 || difPDG==90000999) theDefinition=G4PionPlus::PionPlus(); + else if(difPDG== 321 || difPDG==89001000) theDefinition=G4KaonPlus::KaonPlus(); + else if(difPDG==-321 || difPDG==90999000) theDefinition=G4KaonMinus::KaonMinus(); + else if(difPDG== 130 || difPDG==-311 || difPDG==89000001) + theDefinition=G4KaonZeroLong::KaonZeroLong(); + else if(difPDG== 310 || difPDG== 311 || difPDG==90999999) + theDefinition=G4KaonZeroShort::KaonZeroShort(); + else if(difPDG==3122 || difPDG==91000000) theDefinition=G4Lambda::Lambda(); + else if(difPDG== 3222) theDefinition=G4SigmaPlus::SigmaPlus(); + else if(difPDG== 3112) theDefinition=G4SigmaMinus::SigmaMinus(); + else if(difPDG== 3212) theDefinition=G4SigmaZero::SigmaZero(); + else if(difPDG== 3312) theDefinition=G4XiMinus::XiMinus(); + else if(difPDG== 3322) theDefinition=G4XiZero::XiZero(); + else if(difPDG== 3334) theDefinition=G4OmegaMinus::OmegaMinus(); + else if(difPDG==-2112) theDefinition=G4AntiNeutron::AntiNeutron(); + else if(difPDG==-2212) theDefinition=G4AntiProton::AntiProton(); + else if(difPDG==-3122) theDefinition=G4AntiLambda::AntiLambda(); + else if(difPDG==-3222) theDefinition=G4AntiSigmaPlus::AntiSigmaPlus(); + else if(difPDG==-3112) theDefinition=G4AntiSigmaMinus::AntiSigmaMinus(); + else if(difPDG==-3212) theDefinition=G4AntiSigmaZero::AntiSigmaZero(); + else if(difPDG==-3312) theDefinition=G4AntiXiMinus::AntiXiMinus(); + else if(difPDG==-3322) theDefinition=G4AntiXiZero::AntiXiZero(); + else if(difPDG==-3334) theDefinition=G4AntiOmegaMinus::AntiOmegaMinus(); + else if(difPDG== -11) theDefinition=G4Electron::Electron(); + else if(difPDG== -13) theDefinition=G4MuonMinus::MuonMinus(); + else if(difPDG== 11) theDefinition=G4Positron::Positron(); + else if(difPDG== 13) theDefinition=G4MuonPlus::MuonPlus(); + else + { + G4int Z = difQH->GetCharge(); + G4int B = difQH->GetBaryonNumber(); + G4int S = difQH->GetStrangeness(); + if(S||Z>B||Z<0)G4cout<<"-Warning-G4QDif::PoStDoIt:Z="<FindIon(Z,B,0,0); +#ifdef pdebug + G4cout<<"G4QDiffraction::PoStDoIt:Ion,Z="<SetDefinition(theDefinition); + dif4M = difQH->Get4Momentum(); + EnMomConservation-=dif4M; + theSec->Set4Momentum(dif4M); + G4Track* aNewTrack = new G4Track(theSec, localtime, position ); + aNewTrack->SetWeight(weight); // weighted + aNewTrack->SetTouchableHandle(trTouchable); + aParticleChange.AddSecondary( aNewTrack ); +#ifdef pdebug + G4cout<<"G4QDiffraction::PostStepDoIt: Filled 4M="<GetCrossSection(true, p, Z, N, PDG); // inelastic XS + //G4double pIU=p*GeV; // IndependentUnistMomentum + //G4double r=diffRatio->GetRatio(pIU, PDG, Z, N); // Proj. Diffraction Part + //G4double s=x*r; // XS for proj. diffraction + G4double s=diffRatio->GetTargSingDiffXS(p, PDG, Z, N); // XS for target diffraction +#ifdef debug + G4cout<<"G4QDiff::CXS:p="<push_back(hadron); // It must be cleaned up for real scattering sec + // @@ diffraction is simulated as noncoherent (coherent is small) + G4int tgA=tgZ+tgN; // A of the target + G4int tPDG=90000000+tgZ*1000+tgN; // PDG code of the targetNucleus/recoilNucleus + G4double tgM=G4QPDGCode(tPDG).GetMass(); // Mass of the target nucleus + G4int rPDG=2112; // prototype of PDG code of the recoiled nucleon + if(tgA*G4UniformRand()>tgN) // Substitute by a proton + { + rPDG=2212; // PDG code of the recoiled QF nucleon + tPDG-=1000; // PDG code of the recoiled nucleus + } + else tPDG-=1; // PDG code of the recoiled nucleus + G4double tM=G4QPDGCode(tPDG).GetMass(); // Mass of the recoiled nucleus + G4double tE=std::sqrt(tM*tM+pFm2); // Free energy of the recoil nucleus + G4ThreeVector tP=pFm*G4RandomDirection();// 3-mom of the recoiled nucleus + G4LorentzVector t4M(tP,tE); // 4M of the recoil nucleus + G4LorentzVector tg4M(0.,0.,0.,tgM); // Full target 4-momentum + G4LorentzVector N4M=tg4M-t4M; // 4-mom of Quasi-free target nucleon + G4LorentzVector tot4M=N4M+p4M; // total momentum of quasi-free diffraction + G4double mT=mNeut; // Prototype of mass of QF nucleon + G4double mT2=mNeut2; // Squared mass of a free nucleon to be excited + G4double dmT=dmNeut; // Doubled mass + G4int Z=0; // Prototype of the isotope Z + G4int N=1; // Prototype of the Isotope N + if(rPDG==2212) // Correct it, if this is a proton + { + mT=mProt; // Prototype of mass of QF nucleon to be excited + mT2=mProt2; // Squared mass of the free nucleon + dmT=dmProt; // Doubled mass + Z=1; // Z of the isotope + N=0; // N of the Isotope + } + G4double mP2=pr4M.m2(); // Squared mass of the projectile + if(mP2<0.) mP2=0.; // Can be a problem for photon (m_min = 2*m_pi0) + G4double s=tot4M.m2(); // @@ Check <0 ... + G4double E=(s-mT2-mP2)/dmT; // Effective interactinEnergy (virt.nucl.target) + G4double E2=E*E; + if(E<0. || E2E="<P+Pi0 + G4double dmP=mP+mP; // Doubled mass of the projectile + G4double mMin=mP+mPi0; // Minimum diffractive mass + G4double tA=tgA; // Real A of the target + G4double sA=5./std::pow(tA,third); // Mass-screaning + //mMin+=mPi0+G4UniformRand()*(mP*sA+mPi0); // *Experimental* + mMin+=G4UniformRand()*(mP*sA+mPi0); // *Experimental* + G4double ss=std::sqrt(s); // CM compound mass (sqrt(s)) + G4double mMax=ss-mP; // Maximum diffraction mass of the projectile + if(mMax>maxDM) mMax=maxDM; // Restriction to avoid too big masses + if(mMin>=mMax) + { +#ifdef pdebug + G4cerr<<"Warning-G4DifR::TFra:ZeroDiffractionMRange, mi="<-.0000001); // To make the Warning for NAN + else G4cout<<"******G4QDiffractionRatio::TargFragment: -t="<size(); // A#of collected hadrons from diff.frag. | + if(qNH) for(G4int iq=0; iqpush_back(loh); // Fill in the result | + } // | + delete leadhs; // <----<----<----<----<----<----<----<----<----<----<----<----<----<---* + return ResHV; // Result +} // End of TargFragment + + +G4QHadronVector* G4QDiffractionRatio::ProjFragment(G4int pPDG, G4LorentzVector p4M, + G4int tgZ, G4int tgN) +{ + static const G4double pFm= 250.; // Fermi momentum in MeV (delta function) + static const G4double pFm2= pFm*pFm; // Squared Fermi momentum in MeV^2 (delta function) + static const G4double mPi0= G4QPDGCode(111).GetMass(); // pi0 mass (MeV =min diffraction) + static const G4double mPi= G4QPDGCode(211).GetMass(); // pi+- mass (MeV) + static const G4double mNeut= G4QPDGCode(2112).GetMass(); + static const G4double mNeut2=mNeut*mNeut; + static const G4double dmNeut=mNeut+mNeut; + static const G4double mProt= G4QPDGCode(2212).GetMass(); + static const G4double mProt2=mProt*mProt; + static const G4double dmProt=mProt+mProt; + static const G4double maxDM=mProt*12.; + static const G4double mLamb= G4QPDGCode(3122).GetMass(); + static const G4double mSigZ= G4QPDGCode(3212).GetMass(); + static const G4double mSigM= G4QPDGCode(3112).GetMass(); + static const G4double mSigP= G4QPDGCode(3222).GetMass(); + static const G4double eps=.003; + // G4LorentzVector pr4M=p4M/megaelectronvolt; // Convert 4-momenta in MeV (keep p4M) // prepare the DONOTHING answer G4QHadronVector* ResHV = new G4QHadronVector;// !! MUST BE DESTROYE/DDELETER by CALLER !! @@ -355,7 +564,7 @@ G4QHadronVector* G4QDiffractionRatio::Fragment(G4int pPDG, G4LorentzVector p4M, if(E<0. || E2E="<maxDM) mMax=maxDM; // Restriction to avoid too big masses if(mMin>=mMax) { #ifdef pdebug - G4cerr<<"Warning-G4DifR::Frag:ZeroDiffractionMRange, mi="<-.0000001); // To make the Warning for NAN - else G4cout<<"******G4QDiffR::Frag:-t="<size(); // A#of collected hadrons from diff.frag. | if(qNH) for(G4int iq=0; iqGetStrangeness(); // A number of Lambdas in the Hypernucleus | + G4int nB=loh->GetBaryonNumber(); // Total Baryon Number of the Hypernucleus | + G4int nC = loh->GetCharge(); // Charge of the Hypernucleus | + G4int oPDG = loh->GetPDGCode(); // Original CHIPS PDG Code of the hadron | + //if((nC>nB || nC<0) && nB>0 && nL>=0 && nL<=nB && oPDG>80000000) // Iso-nucleus | + if(2>3) // Closed because "G4QDR::F:90002999,M=-7.768507e-04,B=2,S=0,C=3" is found | + { + G4LorentzVector q4M = loh->Get4Momentum(); // Get 4-momentum of the Isonucleus | + G4double qM=q4M.m(); // Real mass of the Isonucleus +#ifdef fdebug + G4cout<<"G4QDR::PF:"<SetQPDG(G4QPDGCode(3112)); // This is Sigma- | + cont=false; // Skip decay | + } + else if(qM>mLamb+mPi) //(2) Sigma- => Lambda + Pi- decay | + { + fPDG = 3122; + fMass= mLamb; + } + else if(qM>mSigM) //(2) Sigma+=>Sigma++gamma decay | + { + fPDG = 3112; + fMass= mSigM; + sPDG = 22; + sMass= 0.; + } + else //(2) Sigma-=>Neutron+Pi- decay | + { + fPDG = 2112; + fMass= mNeut; + } + qPN = 1; // #of (Pi+ or gamma)'s = 1 | + } + else if(-nC==nL) //(2) a few Sigma- like | + { + qPN = 1; // One separated Sigma- | + fPDG = 3112; + sPDG = 3112; + sMass= mSigM; + nB--; + fMass= mSigM; + } + else if(-nC>nL) //(2) n*(Sigma-)+m*(Pi-) | + { + qPN = -nC-nL; // #of Pi-'s | + fPDG = 3112; + fMass= mSigM; + } + else //(2) n*(Sigma-)+m*Lambda(-nCn*Lamb+m*Neut+k*(Pi-) State (nLnPin) //(3) m*P+n*(Sigma+)+k*Lambda | + { + nL-=nPin; // #of Lambdas | + qPN = nPin; // #of Sigma+ | + sPDG = 3112; + sMass= mSigM; + } + else //(3) m*N+n*(Sigma-)+k*(Pi-) (nL1 && nB==nL) //(2) m*Lamb(m>1) ***Should not be here*** | + { + qPN = 1; + fPDG = 3122; + sPDG = 3122; + sMass= mLamb; + nB--; + fMass= mLamb; + } + else if(!nL && nB>1) //(2) n*Neut(n>1) ***Should not be here*** | + { + qPN = 1; + fPDG = 2112; + sPDG = 2112; + sMass= mNeut; + nB--; + fMass= mNeut; + } + else G4cout<<"*?*G4QDiffractionRatio::ProjFragment: (1) oPDG="<0) // n*Lamb+(m*P)+(k*Pi+) | + { + if(nL && nL+nC==nB) //(2) n*Lamb+m*P ***Should not be here*** | + { + qPN = nL; + nL = 0; + fPDG = 2212; + sPDG = 3122; + sMass= mLamb; + nB = nC; + fMass= mProt; + } + else if(nL && nC n*L+m*Pi+ State | + { + if(nC==nL && nL==1) // Only one Sigma+ like State | + { + if(std::fabs(qM-mSigP)SetQPDG(G4QPDGCode(3222)); // This is GS Sigma+ | + cont=false; // Skip decay | + } + else if(qM>mLamb+mPi) //(2) Sigma+=>Lambda+Pi+ decay | + { + fPDG = 3122; + fMass= mLamb; + } + else if(qM>mNeut+mPi) //(2) Sigma+=>Neutron+Pi+ decay | + { + fPDG = 2112; + fMass= mNeut; + } + else if(qM>mSigP) //(2) Sigma+=>Sigma++gamma decay | + { + fPDG = 3222; + fMass= mSigP; + sPDG = 22; + sMass= 0.; + } + else //(2) Sigma+=>Proton+gamma decay | + { + fPDG = 2212; + fMass= mProt; + sPDG = 22; + sMass= 0.; + } + qPN = 1; // #of (Pi+ or gamma)'s = 1 | + } + else if(nC==nL) //(2) a few Sigma+ like hyperons | + { + qPN = 1; + fPDG = 3222; + sPDG = 3222; + sMass= mSigP; + nB--; + fMass= mSigP; + } + else if(nC>nL) //(2) n*(Sigma+)+m*(Pi+) | + { + qPN = nC-nL; // #of Pi+'s | + fPDG = 3222; + nB = nL; // #of Sigma+'s | + fMass= mSigP; + } + else //(2) n*(Sigma+)+m*Lambda | + { + nB -= nC; // #of Lambda's | + fPDG = 3122; + fMass= mLamb; + qPN = nC; // #of Sigma+'s | + sPDG = 3222; + sMass= mSigP; + } + nL = 0; // All above are decays in 2 | + } + else if(nL && nC>nB-nL) // n*Lamb+m*P+k*Pi+ | + { + nB -= nL; // #of protons | + G4int nPip = nC-nB; // #of Pi+'s | + if(nL==nPip) //(2) m*P+n*Sigma+ | + { + qPN = nL; // #of Sigma+ | + sPDG = 3222; + sMass= mSigP; + nL = 0; + } + else if(nL>nPip) //(3) m*P+n*(Sigma+)+k*Lambda | + { + nL -= nPip; // #of Lambdas | + qPN = nPip; // #of Sigma+ | + sPDG = 3222; + sMass= mSigP; + } + else //(3) m*P+n*(Sigma+)+k*(Pi+) | + { + qPN = nPip-nL; // #of Pi+ | + tPDG = 3222; + tMass= mSigP; + } + } + if(nC1) //(2) m*Prot(m>1) ***Should not be here*** | + { + qPN = 1; + fPDG = 2212; + sPDG = 2212; + sMass= mProt; + nB--; + fMass= mProt; + } + else if(nC<=nB||!nB) G4cout<<"*?*G4QDR::ProjFragm: (2) oPDG="<nB //(2) Default condition n*P+m*(Pi+) | + } + if(cont) // Make a decay | + { + G4double tfM=nB*fMass; + G4double tsM=qPN*sMass; + G4double ttM=0.; + if(nL) ttM=nL*tMass; + G4LorentzVector f4Mom(0.,0.,0.,tfM); + G4LorentzVector s4Mom(0.,0.,0.,tsM); + G4LorentzVector t4Mom(0.,0.,0.,ttM); + G4double sum=tfM+tsM+ttM; + if(std::fabs(qM-sum) TM="< TotM="< ImproveIt"< add decay in 3) | + if(nSP) nL+=nSP; // Convert Sigma+ to Lambda | + else nL+=nSM; // Convert Sigma- to Lambda | + } + if(nSP) // Sibma+ should be decayed | + { + nL=nSP; // #of decaying hyperons | + sPDG=3222; // PDG code of decaying hyperons | + MLa=mSigP; // Mass of decaying hyperons | + } + else // Sibma+ should be decayed | + { + nL=nSM; // #of decaying hyperons | + sPDG=3112; // PDG code of decaying hyperons | + MLa=mSigM; // Mass of decaying hyperons | + } + } +#ifdef fdebug + G4cout<<"G4QDiffRat::ProjFrag:*G4*mS="<1) MLa*=nL; // Total mass of the decaying hyperons | + G4double rlM=G4QNucleus(rlPDG).GetMZNS();// Mass of the NonstrangeNucleus | + if(!nSP&&!nSM&&nL==1&&reM>rlM+mSigZ&&G4UniformRand()>.5) // Conv Lambda->Sigma0 | + { + sPDG=3212; // PDG code of a decaying hyperon | + MLa=mSigZ; // Mass of the decaying hyperon | + } + G4int rnPDG = hPDG-nL*999999; // Convert Lambdas to neutrons (for convInN) | + G4QNucleus rnN(rnPDG); // New nonstrange nucleus | + G4double rnM=rnN.GetMZNS(); // Mass of the new nonstrange nucleus | + // @@ In future take into account Iso-Hypernucleus (Add PI+,R & Pi-,R decays) | + if(rlPDG==90000000) // Multy Hyperon (HyperNuc of only hyperons) | + { + if(nL>1) r4M=r4M/nL; // split the 4-mom for the MultyLambda | + for(G4int il=0; ilpush_back(theLam); // Fill in the Lambda | +#ifdef fdebug + sum4M+=r4M; // Sum 4-momenta for the EnMom check | + G4cout<<"G4QDR::ProjFrag: *additional Lambda*="<rlM+MLa-eps) // Lambda (or Sigma) can be split | + { + G4LorentzVector n4M(0.,0.,0.,rlM); // 4-mom of the residual nucleus | + G4LorentzVector h4M(0.,0.,0.,MLa); // 4-mom of the Hyperon | + G4double sum=rlM+MLa; // Safety sum | + if(std::fabs(reM-sum)A="<Set4Momentum(n4M); // ! Update the Hadron ! | + if(anti && rlPDG==90000001) rlPDG=-2112; // Convert to anti-neutron | + if(anti && rlPDG==90001000) rlPDG=-2212; // Convert to anti-proton | + loh->SetQPDG(G4QPDGCode(rlPDG)); // ConvertedHypernucleus to nonstrange(@anti)| + if(rlPDG==90000002) // Additional action with loH changed to 2n | + { + G4LorentzVector newLV=n4M/2.; // Split 4-momentum | + loh->Set4Momentum(newLV); // Reupdate the hadron | + if(anti) loh->SetQPDG(G4QPDGCode(-2112)); // Make anti-neutron PDG | + else loh->SetQPDG(G4QPDGCode(2112)); // Make neutron PDG | + G4QHadron* secHadr = new G4QHadron(loh); // Duplicate the neutron | + ResHV->push_back(secHadr); // Fill in the additional neutron | +#ifdef fdebug + sum4M+=r4M; // Sum 4-momenta for the EnMom check | + G4cout<<"G4QDR::ProgFrag: *additional Neutron*="<Set4Momentum(newLV); // Reupdate the hadron | + if(anti) loh->SetQPDG(G4QPDGCode(-2212)); // Make anti-neutron PDG | + else loh->SetQPDG(G4QPDGCode(2112)); // Make neutron PDG | + G4QHadron* secHadr = new G4QHadron(loh); // Duplicate the proton | + ResHV->push_back(secHadr); // Fill in the additional neutron | +#ifdef fdebug + sum4M+=r4M; // Sum 4-momenta for the EnMom check | + G4cout<<"G4QDR::ProjFrag: *additional Proton*="<Set4Momentum(n4M); // ! Update the Hadron ! | + if(anti && rnPDG==90000001) rnPDG=-2112; // Convert to anti-neutron | + if(anti && rnPDG==90001000) rnPDG=-2212; // Convert to anti-proton | + loh->SetQPDG(G4QPDGCode(rnPDG)); // convert hyperNuc to nonstrangeNuc(@@anti) | +#ifdef fdebug + G4cout<<"*G4QDR::PF:R="<A="<1) h4M=h4M/nPi; // Split the 4-mom if necessary | + for(G4int ihn=0; ihnpush_back(thePion); // Fill in the Pion | +#ifdef fdebug + sum4M+=r4M; // Sum 4-momenta for the EnMom check | + G4cout<<"G4QDR::ProjFrag: *additional Pion*="<Set4Momentum(newLV); // Reupdate the hadron | + if(anti) loh->SetQPDG(G4QPDGCode(-2112)); // Make anti-neutron PDG | + else loh->SetQPDG(G4QPDGCode(2112)); // Make neutron PDG | + G4QHadron* secHadr = new G4QHadron(loh); // Duplicate the neutron | + ResHV->push_back(secHadr); // Fill in the additional neutron | +#ifdef fdebug + sum4M+=r4M; // Sum 4-momenta for the EnMom check | + G4cout<<"G4QDR::ProjFrag: *additional Neutron*="<Set4Momentum(newLV); // Reupdate the hadron | + if(anti) loh->SetQPDG(G4QPDGCode(-2212)); // Make anti-neutron PDG | + else loh->SetQPDG(G4QPDGCode(2112)); // Make neutron PDG | + G4QHadron* secHadr = new G4QHadron(loh); // Duplicate the proton | + ResHV->push_back(secHadr); // Fill in the additional neutron | +#ifdef fdebug + sum4M+=r4M; // Sum 4-momenta for the EnMom check | + G4cout<<"G4QDR::ProjFrag: *additional Proton*="< include gamma decay | + { + G4double d=rlM+MLa-reM; // Hyperon Excessive energy | + G4cerr<<"G4QDR::PF:R="< End of G4 Hypernuclear decay | ResHV->push_back(loh); // Fill in the result | +#ifdef debug + sum4M+=loh->Get4Momentum(); // Sum 4-momenta for the EnMom check | + G4cout<<"G4QDR::PrFra:#"<Get4Momentum()<GetPDGCode()<theDPVector[theDPVector.size()-1]->second) + { + std::pair* QDiscProc = + new std::pair(DP, ME); + theDPVector.push_back( QDiscProc ); + } + else // Wrong Max Energy Order for the new process in the sequence of processes + { + G4cerr<<"G4QDiscProcessMixer::AddDiscreteProcess:LastMaxE("<second<<" >= MaxE="<GetKineticEnergy(); // Projectile kinetic energy + G4int maxDP=theDPVector.size(); + if(maxDP) for(G4int i=0; isecond) + return theDPVector[i]->first->PostStepGetPhysicalInteractionLength(Track,PrevStSize,F); + return DBL_MAX; +} + +G4VParticleChange* G4QDiscProcessMixer::PostStepDoIt(const G4Track& Track, + const G4Step& Step) +{ + G4double kEn=Track.GetDynamicParticle()->GetKineticEnergy(); // Projectile kinetic energy + G4int maxDP=theDPVector.size(); + if(maxDP) for(G4int i=0; isecond) + { + //EnMomConservation= theDPVector[i]->first->GetEnegryMomentumConservation(); + //nOfNeutrons = theDPVector[i]->first->GetNumberOfNeutronsInTarget(); + return theDPVector[i]->first->PostStepDoIt(Track, Step); + } + return G4VDiscreteProcess::PostStepDoIt(Track, Step); +} + +//G4LorentzVector G4QDiscProcessMixer::GetEnegryMomentumConservation() +// {return EnMomConservation;} + +//G4int G4QDiscProcessMixer::GetNumberOfNeutronsInTarget() +// {return nOfNeutrons;} diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElastic.cc b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElastic.cc index 521b50781d..a3adc79ab6 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElastic.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElastic.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4QElastic.cc,v 1.23 2007/05/23 15:14:25 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QElastic.cc,v 1.25 2007/11/15 09:36:43 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------- G4QElastic class ----------------- // by Mikhail Kossov, December 2003. @@ -399,7 +399,8 @@ G4VParticleChange* G4QElastic::PostStepDoIt(const G4Track& track, const G4Step& #ifdef debug G4cout<<"G4QElastic::PostStepDoIt: track is initialized"<GetExchangeT(Z,N,projPDG); // fanctional randomized -t in MeV^2 + G4double mint=CSmanager->GetExchangeT(Z,N,projPDG); // functional randomized -t in MeV^2 #ifdef pdebug G4cout<<"G4QElast::PSDI:pPDG="< G4QElasticCrossSection::PAR; // Vector of parameters for functional calculations -std::vector G4QElasticCrossSection::CST; // Vector of cross-section table -std::vector G4QElasticCrossSection::SST; // Vector of the first squared slope -std::vector G4QElasticCrossSection::S1T; // Vector of the first mantissa -std::vector G4QElasticCrossSection::B1T; // Vector of the first slope -std::vector G4QElasticCrossSection::S2T; // Vector of the secon mantissa -std::vector G4QElasticCrossSection::B2T; // Vector of the second slope -std::vector G4QElasticCrossSection::S3T; // Vector of the third mantissa -std::vector G4QElasticCrossSection::B3T; // Vector of the third slope -std::vector G4QElasticCrossSection::S4T; // Vector of the 4-th mantissa (gloria) -std::vector G4QElasticCrossSection::B4T; // Vector of the 4-th slope (gloria) +std::vector G4QElasticCrossSection::PAR; // Vector of parameters for functCalcul +std::vector G4QElasticCrossSection::CST; // Vector of cross-section table +std::vector G4QElasticCrossSection::SST; // Vector of the first squared slope +std::vector G4QElasticCrossSection::S1T; // Vector of the first mantissa +std::vector G4QElasticCrossSection::B1T; // Vector of the first slope +std::vector G4QElasticCrossSection::S2T; // Vector of the secon mantissa +std::vector G4QElasticCrossSection::B2T; // Vector of the second slope +std::vector G4QElasticCrossSection::S3T; // Vector of the third mantissa +std::vector G4QElasticCrossSection::B3T; // Vector of the third slope +std::vector G4QElasticCrossSection::S4T; // Vector of the 4-th mantissa (gloria) +std::vector G4QElasticCrossSection::B4T; // Vector of the 4-th slope (gloria) G4QElasticCrossSection::G4QElasticCrossSection() { @@ -1066,15 +1066,41 @@ G4double G4QElasticCrossSection::GetExchangeT(G4int tgZ, G4int tgN, G4int PDG) else { G4cout<<"*Error*G4QElasticCrossSection::GetExchangeT: PDG="<-1.||q2<1.)) G4cout<<"*NAN*G4QElasticCrossSect::GetExT: -t="<lastTM)G4cout<<"*Warning*G4QElasticCrossSect::GetExT:-t="<"<=-1.||q2<=1.)) G4cout<<"*NAN*G4QElasticCrossSect::GetExchangeT: -t="<lastTM) + { +#ifdef tdebug + G4cout<<"*Warning*G4QElasticCrossSect::GetExT:-t="<"<=-1.||theB1<=1.))G4cout<<"*NAN*G4QElasticCrossSect::Getslope:"< colPDG;// Vector of the projectile PDG code + static std::vector colN; // Vector of N for calculated nuclei (isotops) + static std::vector colZ; // Vector of Z for calculated nuclei (isotops) + static std::vector colP; // Vector of last momenta for the reaction + static std::vector colTH; // Vector of energy thresholds for the reaction + static std::vector colICS;// Vector of last inelastic cross-sections + static std::vector colECS;// Vector of last elastic cross-sections + // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---*** +#ifdef pdebug + G4cout<<"G4QIICS::GetCS:>>> f="< CS=0"<XS=0"<New(inDB) InCS="<lastTH) // Correct the threshold + { +#ifdef pdebug + G4cout<<"G4QIonIonCS::GetCS:New,T="< Threshold="<G4QIonIonCrossSec::GetCrosSec: pPDG="<Thresh="<XS=0"< CS=0 + } + else if(std::fabs(lastP/pMom-1.)R conversion [R=1.1*A^(1/3)] + //static const G4double conv=38.; // coeff. R2->sig=c*(pR+tR)^2, c=pi*10(mb/fm^2)*1.21 + // If change the following, please change in ::GetFunctions: + static const G4double THmin=0.; // @@ start from threshold (?) minimum Energy Threshold + static const G4double dP=10.; // step for the LEN table + static const G4int nL=100; // A#of LENesonance points in E (each MeV from 2 to 106) + static const G4double Pmin=THmin+(nL-1)*dP; // minE for the HighE part + static const G4double Pmax=300000.; // maxE for the HighE part + static const G4int nH=100; // A#of HResonance points in lnE + static const G4double milP=std::log(Pmin); // Low logarithm energy for the HighE part + static const G4double malP=std::log(Pmax); // High logarithm energy (each 2.75 percent) + static const G4double dlP=(malP-milP)/(nH-1); // Step in log energy in the HighE part + // + // Associative memory for acceleration + static std::vector LENI; // Vector of pointers: LowEnIneIonIonCrossSection + static std::vector HENI; // Vector of pointers: HighEnIneIonIonCrossSection + static std::vector LENE; // Vector of pointers: LowEnElaIonIonCrossSection + static std::vector HENE; // Vector of pointers: HighEnElaIonIonCrossSection +#ifdef debug + G4cout<<"G4QIonIonCrossSection::CalcCS:N="< RETRIEVE + { + lastLENI=LENI[I]; // Pointer to Low Energy inelastic cross sections + lastHENI=HENI[I]; // Pointer to High Energy inelastic cross sections + lastLENE=LENE[I]; // Pointer to Low Energy inelastic cross sections + lastHENE=HENE[I]; // Pointer to High Energy inelastic cross sections + } + else // This isotope wasn't calculated previously => CREATE + { + lastLENI = new G4double[nL]; // Allocate memory for the new LEN cross sections + lastHENI = new G4double[nH]; // Allocate memory for the new HEN cross sections + lastLENE = new G4double[nL]; // Allocate memory for the new LEN cross sections + lastHENE = new G4double[nH]; // Allocate memory for the new HEN cross sections + G4int er=GetFunctions(pZ,pN,tZ,tN,lastLENI,lastHENI,lastLENE,lastHENE); + if(er<1) G4cerr<<"*W*G4QIonIonCroSec::CalcCrossSection: pA="< inelel = CalculateXS(pZ, pN, tZ, tN, Momentum); + if(XS) sigma=inelel.first; + else sigma=inelel.second; + } +#ifdef debug + G4cout<<"G4IonIonCrossSection::CalculateCrossSection: sigma="< G4QIonIonCrossSection::CalculateXS(G4int pZ,G4int pN,G4int tZ, + G4int tN, G4double Mom) +{ + static G4VQCrossSection* ElCSman = G4QElasticCrossSection::GetPointer(); + static G4VQCrossSection* InelPCSman = G4QProtonNuclearCrossSection::GetPointer(); + static G4VQCrossSection* InelNCSman = G4QNeutronNuclearCrossSection::GetPointer(); + G4double pA=pZ+pN; + G4double tA=tZ+tN; + if(pA<.9 || tA<.9 ||pA>239. || tA>239 || Mom < 0.) return std::make_pair(0.,0.); + G4double inCS=0.; + G4double elCS=0.; + if(pA<1.1 || tA<1.1) // Ion-nucleon/nucleon-ion interaction use NA(in,el) + { + if (pZ==1 && !pN || tZ==1 && !tN) // proton-nuclear + { + elCS=InelPCSman->GetCrossSection(true, Mom, tZ, tN, 2212); + inCS=ElCSman->GetCrossSection(true, Mom, tZ, tN, 2212); + } + else if(pN==1 && !pZ) // neutron-nuclear + { + elCS=InelNCSman->GetCrossSection(true, Mom, tZ, tN, 2112); + inCS=ElCSman->GetCrossSection(true, Mom, tZ, tN, 2112); + } + else G4cerr<<"-Warn-G4QIICS::CaCS:pZ="< G4QLowEnergy::ElementZ; // Z of element(i) in theLastCalc +std::vector G4QLowEnergy::ElProbInMat; // SumProbOfElem in Material +std::vector*> G4QLowEnergy::ElIsoN;// N of isotope(j), E(i) +std::vector*>G4QLowEnergy::IsoProbInEl;//SumProbIsotE(i) + +// Constructor +G4QLowEnergy::G4QLowEnergy(const G4String& processName): + G4VDiscreteProcess(processName), evaporate(true) +{ +#ifdef debug + G4cout<<"G4QLowEnergy::Constructor is called processName="<0) G4cout<GetParticles(nPartCWorld); // Create CHIPS World (234 part. max) +} + +// Destructor +G4QLowEnergy::~G4QLowEnergy() {} + + +G4LorentzVector G4QLowEnergy::GetEnegryMomentumConservation(){return EnMomConservation;} + +G4int G4QLowEnergy::GetNumberOfNeutronsInTarget() {return nOfNeutrons;} + +// output of the function must be in units of length! L=1/sig_V,sig_V=SUM(n(j,i)*sig(j,i)), +// where n(i,j) is a number of nuclei of the isotop j of the element i in V=1(lengtUnit^3) +// ********** All CHIPS cross sections are calculated in the surface units ************ +G4double G4QLowEnergy::GetMeanFreePath(const G4Track&Track, G4double, G4ForceCondition*F) +{ + *F = NotForced; + const G4DynamicParticle* incidentParticle = Track.GetDynamicParticle(); + G4ParticleDefinition* incidentParticleDefinition=incidentParticle->GetDefinition(); + if( !IsApplicable(*incidentParticleDefinition)) + G4cout<<"-Warning-G4QLowEnergy::GetMeanFreePath for notImplemented Particle"<GetTotalMomentum(); // 3-momentum of the Particle +#ifdef debug + G4double KinEn = incidentParticle->GetKineticEnergy(); + G4cout<<"G4QLowEnergy::GetMeanFreePath:Prpj, kinE="<GetPDGEncoding(); +#ifdef debug + G4int B=incidentParticleDefinition->GetBaryonNumber(); + G4int C=incidentParticleDefinition->GetPDGCharge(); + prPDG=100000000+1000*C+B; + G4cout<<"G4QIonIonElastic::GetMeanFreePath: PDG="<GetBaryonNumber(); // Divide Mom by projectile A + G4QIsotope* Isotopes = G4QIsotope::Get(); // Pointer to the G4QIsotopes singleton + G4double sigma=0.; // Sums over elements for the material + G4int IPIE=IsoProbInEl.size(); // How many old elements? + if(IPIE) for(G4int ip=0; ip* SPI=IsoProbInEl[ip]; // Pointer to the SPI vector + SPI->clear(); + delete SPI; + std::vector* IsN=ElIsoN[ip]; // Pointer to the N vector + IsN->clear(); + delete IsN; + } + ElProbInMat.clear(); // Clean up the SumProb's of Elements (SPE) + ElementZ.clear(); // Clear the body vector for Z of Elements + IsoProbInEl.clear(); // Clear the body vector for SPI + ElIsoN.clear(); // Clear the body vector for N of Isotopes + for(G4int i=0; i(pElement->GetZ()); // Z of the Element + ElementZ.push_back(Z); // Remember Z of the Element + G4int isoSize=0; // The default for the isoVectorLength is 0 + G4int indEl=0; // Index of non-natural element or 0(default) + G4IsotopeVector* isoVector=pElement->GetIsotopeVector(); // Get the predefined IsoVect + if(isoVector) isoSize=isoVector->size();// Get size of the existing isotopeVector +#ifdef debug + G4cout<<"G4QLowEnergy::GetMeanFreePath: isovector Length="<GetIndex()+1; // Index of the non-trivial element is an order +#ifdef debug + G4cout<<"G4QLowEn::GetMFP:iE="<IsDefined(Z,indEl)<IsDefined(Z,indEl)) // This index is not defined for this Z: define + { + std::vector*>* newAbund = + new std::vector*>; + G4double* abuVector=pElement->GetRelativeAbundanceVector(); + for(G4int j=0; jGetIsotope(j)->GetN()-Z; // N means A=N+Z ! + if(pElement->GetIsotope(j)->GetZ()!=Z)G4cerr<<"G4QDiffract::GetMeanFreePath: Z=" + <GetIsotope(j)->GetZ()<<"#"<* pr= new std::pair(N,abund); +#ifdef debug + G4cout<<"G4QLowEnergy::GetMeanFreePath:pair#"<push_back(pr); + } +#ifdef debug + G4cout<<"G4QLowEnergy::GetMeanFreePath: pairVectLength="<size()<InitElement(Z,indEl,newAbund); // definition of the newInd + for(G4int k=0; k*>* cs= Isotopes->GetCSVector(Z,indEl);//CSPointer + std::vector* SPI = new std::vector; // Pointer to the SPI vector + IsoProbInEl.push_back(SPI); + std::vector* IsN = new std::vector; // Pointer to the N vector + ElIsoN.push_back(IsN); + G4int nIs=cs->size(); // A#Of Isotopes in the Element +#ifdef debug + G4cout<<"G4QLowEnergy::GetMFP:***=>,#isot="<="<GetMeanCrossSection(Z,indEl) + <<",AddSigm="<GetMeanCrossSection(Z,indEl)*NOfNucPerVolume[i]<>G4QLowEnergy::IsApplicable: projPDG="<GetParticles(nPartCWorld); // Create CHIPS World (234 part.max) + } + //------------------------------------------------------------------------------------- + const G4DynamicParticle* projHadron = track.GetDynamicParticle(); + const G4ParticleDefinition* particle=projHadron->GetDefinition(); +#ifdef debug + G4cout<<"G4QLowEnergy::PostStepDoIt: Before the GetMeanFreePath is called In4M=" + <Get4Momentum()<<" of PDG="<GetPDGEncoding()<<", Type=" + <GetParticleType()<<",SubType="<GetParticleSubType()<Get4Momentum())/MeV; // Convert to MeV! + G4double momentum = projHadron->GetTotalMomentum()/MeV; // 3-momentum of the Proj in MeV + G4double Momentum = proj4M.rho(); // @@ Just for the test purposes + if(std::fabs(Momentum-momentum)>.000001) + G4cerr<<"-Warning-G4QLowEnergy::PostStepDoIt:P_IU="<GetElementVector(); + G4int nE=material->GetNumberOfElements(); +#ifdef debug + G4cout<<"G4QLowEnergy::PostStepDoIt: "<GetPDGEncoding(); +#ifdef debug + G4int B=particle->GetBaryonNumber(); + G4int C=particle->GetPDGCharge(); + prPDG=100000000+1000*C+B; + G4cout<<"G4QLowEnergy::PostStepDoIt: PDG="<GetPDGEncoding(); + G4cout<<"G4QLowEnergy::PostStepDoIt: projPDG="<ret 0"<size(); // #of isotopes in the element i +#ifdef debug + G4cout<<"G4QLowEnergy::PostStepDoIt: nI="<N="<GetQuarkContent(3)-particle->GetAntiQuarkContent(3); // Strangeness + G4int pZ=static_cast(particle->GetPDGCharge()); // Charge of the projectile + G4int pN=particle->GetBaryonNumber()-pZ-pL;// #of neutrons in projectile + G4double pM=targQPDG.GetNuclMass(pZ,pN,0); // CHIPS projectile nucleus mass in MeV + G4double cosp=-14*Momentum*(tM-pM)/tM/pM; // Asymmetry power for angular distribution +#ifdef debug + G4cout<<"G4QLowEnergy::PoStDoIt: Proj("<0) prL=pL/pA; + G4double qval[nCh]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0., + 0.,0.,0.,0.,0.,0.}; + qval[ 0] = totM - mass[ 0]; + qval[ 1] = (totM - mass[ 1] - mNeut)*prN; + qval[ 2] = (totM - mass[ 2] - mProt)*prZ; + qval[ 3] = (totM - mass[ 3] - mDeut)*prD/3.; + qval[ 4] = (totM - mass[ 4] - mTrit)*prT/6.; + qval[ 5] = (totM - mass[ 5] - mHel3)*prH/fhe3; + qval[ 6] = (totM - mass[ 6] - mAlph)*prA/9.; + qval[ 7] = (totM - mass[ 7] - mNeut - mNeut)*prN*prN; + qval[ 8] = (totM - mass[ 8] - mNeut - mProt)*prD; + qval[ 9] = (totM - mass[ 9] - mProt - mProt)*prZ*prZ; + qval[10] = (totM - mass[10] - mProt - mDeut)*prH/3.; + qval[11] = (totM - mass[11] - mNeut - mDeut)*prT/3.; + qval[12] = (totM - mass[12] - mDeut - mDeut)*prA/3./3.; + qval[13] = (totM - mass[13] - mProt - mTrit)*prA/6.; + qval[14] = (totM - mass[14] - mNeut - mTrit)*prT*prN/6.; + qval[15] = (totM - mass[15] - mProt - mHel3)*prH*prZ/fhe3; + qval[16] = (totM - mass[16] - mNeut - mHel3)*prA/fhe3; + qval[17] = (totM - mass[17] - mProt - mAlph)*prZ*prA/9.; + qval[18] = (totM - mass[18] - mNeut - mAlph)*prN*prA/9.; + if(pZ>0) + { + qval[19] = (totM - mass[19] - mLamb)*prL; + qval[20] = (totM - mass[20] - mProt - mLamb)*prL*prZ; + qval[21] = (totM - mass[21] - mNeut - mLamb)*prL*prN; + qval[22] = (totM - mass[22] - mDeut - mLamb)*prL*prD/2.; + qval[23] = (totM - mass[23] - mTrit - mLamb)*prL*prT/3.; + qval[24] = (totM - mass[24] - mHel3 - mLamb)*prL*prH/fhe3; + qval[25] = (totM - mass[25] - mAlph - mLamb)*prL*prA/4; + } +#ifdef debug + G4cout<<"G4QLowEn::PSDI: Q-values are calculated, tgA="<(tA-1.)*(tA-1.)/52900.) qval[0] = 0.0; + if(G4UniformRand()>kinEnergy/7.925*tA) qval[2]=qval[3]=qval[4]=qval[5]=qval[9]=0.; + } + else qval[0] = 0.0; + + G4double qv = 0.0; // Total sum of probabilities (q-values) + for(G4int i=0; i 0.0 ) + { + qv1 += qval[index]/qv; + if( ran <= qv1 ) break; + } + } +#ifdef debug + G4cout<<"G4QLowEn::PSDI: index="<M1="< colN; // Vector of N for calculated nuclei (isotops) + static std::vector colZ; // Vector of Z for calculated nuclei (isotops) + static std::vector colP; // Vector of last momenta for the reaction + static std::vector colTH; // Vector of energy thresholds for the reaction + static std::vector colCS; // Vector of last cross sections for the reaction + // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---*** + G4double pEn=pMom; +#ifdef pdebug + G4cout<<"G4QNtCS::GetCS:>>> f="<New (inDB) Calculated CS="<lastTH) // Correct the threshold + { +#ifdef pdebug + G4cout<<"G4QNtCS::GetCS: New T="< Threshold="<G4QNeutronNuclearCrossSec::GetCrosSec: pPDG=2212, j="< Threshold="< CS=0 + } + else if(std::fabs(lastP/pMom-1.) spA; // shadowing coefficients (A-dependent) + static std::vector LEN; // Vector of pointers to LowEnProtonCrossSection + static std::vector HEN; // Vector of pointers to HighEnProtonCrossSection +#ifdef debug + G4cout<<"G4QNeutronNuclearCS::CalcCS: N="< RETRIEVE + { + lastLEN=LEN[I]; // Pointer to prepared LowEnergy cross sections + lastHEN=HEN[I]; // Pointer to prepared High Energy cross sections + } + else // This isotope wasn't calculated previously => CREATE + { + lastLEN = new G4double[nL]; // Allocate memory for the new LEN cross sections + lastHEN = new G4double[nH]; // Allocate memory for the new HEN cross sections + // --- Instead of making a separate function --- + G4double P=THmiG; // Table threshold in GeV/c + for(G4int m=0; m colPDG;// Vector of the projectile PDG code + static std::vector colN; // Vector of N for calculated nuclei (isotops) + static std::vector colZ; // Vector of Z for calculated nuclei (isotops) + static std::vector colP; // Vector of last momenta for the reaction + static std::vector colTH; // Vector of energy thresholds for the reaction + static std::vector colCS; // Vector of last cross sections for the reaction + // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---*** + G4double pEn=pMom; +#ifdef debug + G4cout<<"G4QNENCS::GetCS:>> f="< CS=0"< New (inDB) Calculated CS="<lastTH) // Correct the threshold + { +#ifdef pdebug + G4cout<<"G4QNENCS::GetCS: New T="< Threshold="< Threshold="< CS=0 + } + else if(std::fabs(lastP/pMom-1.)0||N>0) dN=thresh*GeV; // @@ if upgraded, change it in a total cross section + //@@ "dN=me+me2/G4NucleiProperties::GetNuclearMass((Z+N),(Z)/GeV" + return dN; +} + +// The main member function giving the gamma-A cross section (E_kin in MeV, CS in mb) +G4double G4QNuENuclearCrossSection::CalculateCrossSection(G4bool CS, G4int F, G4int I, + G4int, G4int targZ, G4int targN, G4double Momentum) +{ + static const G4double mb38=1.E-11;// Conversion 10^-38 cm^2 to mb=10^-27 cm^2 + static const G4int nE=65; // !! If change this, change it in GetFunctions()33/65!! + static const G4int mL=nE-1; + static const G4double mN=.931494043;// Nucleon mass (inside nucleus, AtomicMassUnit, GeV) + static const G4double dmN=mN+mN; // Doubled nucleon mass (2*AtomicMassUnit, GeV) + static const G4double me=.00051099892;// electron mass in GeV + static const G4double me2=me*me; // Squared mass of an electron in GeV^2 + static const G4double EMi=me+me2/dmN; // Universal threshold of the reaction in GeV + static const G4double EMa=300.; // Maximum tabulated Energy of nu_e in GeV + // *** Begin of the Associative memory for acceleration of the cross section calculations + static std::vector colH; //?? Vector of HighEnergyCoefficients (functional) + static std::vector TX; // Vector of pointers to the TX tabulated functions + static std::vector QE; // Vector of pointers to the QE tabulated functions + static G4bool first=true; // Flag of initialization of the energy axis + // *** End of Static Definitions (Associative Memory) *** + //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Electron + //G4double TotEnergy2=Momentum; + onlyCS=CS; // Flag to calculate only CS (not TX & QE) + lastE=Momentum/GeV; // Kinetic energy of the electron neutrino (in GeV) + if (lastE<=EMi) // Energy is below the minimum energy in the table + { + lastE=0.; + lastSig=0.; + return 0.; + } + G4int Z=targZ; // New Z, which can change the sign + if(F<=0) // This isotope was not the last used isotop + { + if(F<0) // This isotope was found in DAMDB =========> RETRIEVE + { + lastTX =TX[I]; // Pointer to the prepared TX function (same isotope) + lastQE =QE[I]; // Pointer to the prepared QE function (same isotope) + } + else // This isotope wasn't calculated previously => CREATE + { + if(first) + { + lastEN = new G4double[nE]; // This must be done only once! + Z=-Z; // To explain GetFunctions that E-axis must be filled + first=false; // To make it only once + } + lastTX = new G4double[nE]; // Allocate memory for the new TX function + lastQE = new G4double[nE]; // Allocate memory for the new QE function + G4int res=GetFunctions(Z,targN,lastTX,lastQE,lastEN);//@@analize(0=first,-1=bad,1=OK) + if(res<0) G4cerr<<"*W*G4NuENuclearCS::CalcCrossSect:Bad Function Retrieve"<=2) + { + G4int newran=ran/2; + if(lastE<=lastEN[sep]) sep-=newran; + else sep+=newran; + ran=newran; + chk=chk+chk; + } + if(chk+chk!=mL) G4cerr<<"*Warn*G4NuENuclearCS::CalcCS:Table! mL="<=mL||lastE>highE) + G4cerr<<"*Warn*G4NuENuclearCS::CalcCS:Bin! "<(rXi); + if(iXi<0) iXi=0; + if(iXi>bQ2) iXi=bQ2; + G4double dXi=rXi-iXi; + G4double bnti=inl[iXi]; + G4double inti=bnti+dXi*(inl[iXi+1]-bnti); + // + G4double rXa=(Xma-Xmin)/dX; + G4int iXa=static_cast(rXa); + if(iXa<0) iXa=0; + if(iXa>bQ2) iXa=bQ2; + G4double dXa=rXa-iXa; + G4double bnta=inl[iXa]; + G4double inta=bnta+dXa*(inl[iXa+1]-bnta); + // *** Find X using the reversed table *** + G4double intx=inti+(inta-inti)*G4UniformRand(); + G4int intc=static_cast(intx); + if(intc<0) intc=0; + if(intc>bQ2) intc=bQ2; // If it is more than max, then the BAD extrapolation + G4double dint=intx-intc; + G4double mX=Xl[intc]; + G4double X=mX+dint*(Xl[intc+1]-mX); + G4double Q2=std::pow(X,pconv)-1.; + return Q2*GeV*GeV; +} + +// Randomize Q2 from neutrino to the scattered electron when scattering is not quasiElastic +G4double G4QNuENuclearCrossSection::GetNQE_ExchangeQ2() +{ + static const double mpi=.13957018; // charged pi meson mass in GeV + static const G4double me=.00051099892;// electron mass in GeV + static const G4double me2=me*me; // Squared mass of an electron in GeV^2 + static const G4double hme2=me2/2; // .5*m_e^2 in GeV^2 + static const double MN=.931494043; // Nucleon mass (inside nucleus,atomicMassUnit,GeV) + static const double MN2=MN*MN; // M_N^2 in GeV^2 + static const double dMN=MN+MN; // 2*M_N in GeV + static const double mcV=(dMN+mpi)*mpi;// constant of W>M+mc cut for Quasi-Elastic + static const G4int power=7; // direct power for the magic variable + static const G4double pconv=1./power; // conversion power for the magic variable + static const G4int nX=21; // #Of point in the Xl table (in GeV^2) + static const G4int lX=nX-1; // index of the last in the Xl table + static const G4int bX=lX-1; // @@ index of the before last in the Xl table + static const G4int nE=20; // #Of point in the El table (in GeV^2) + static const G4int bE=nE-1; // index of the last in the El table + static const G4int pE=bE-1; // index of the before last in the El table + // Reversed table + static const G4double X0[nX]={6.14081e-05, + .413394, .644455, .843199, 1.02623, 1.20032, 1.36916, 1.53516, 1.70008, 1.86539, 2.03244, + 2.20256, 2.37723, 2.55818, 2.74762, 2.94857, 3.16550, 3.40582, 3.68379, 4.03589, 4.77419}; + static const G4double X1[nX]={.00125268, + .861178, 1.34230, 1.75605, 2.13704, 2.49936, 2.85072, 3.19611, 3.53921, 3.88308, 4.23049, + 4.58423, 4.94735, 5.32342, 5.71700, 6.13428, 6.58447, 7.08267, 7.65782, 8.38299, 9.77330}; + static const G4double X2[nX]={.015694, + 1.97690, 3.07976, 4.02770, 4.90021, 5.72963, 6.53363, 7.32363, 8.10805, 8.89384, 9.68728, + 10.4947, 11.3228, 12.1797, 13.0753, 14.0234, 15.0439, 16.1692, 17.4599, 19.0626, 21.7276}; + static const G4double X3[nX]={.0866877, + 4.03498, 6.27651, 8.20056, 9.96931, 11.6487, 13.2747, 14.8704, 16.4526, 18.0351, 19.6302, + 21.2501, 22.9075, 24.6174, 26.3979, 28.2730, 30.2770, 32.4631, 34.9243, 37.8590, 41.9115}; + static const G4double X4[nX]={.160483, + 5.73111, 8.88884, 11.5893, 14.0636, 16.4054, 18.6651, 20.8749, 23.0578, 25.2318, 27.4127, + 29.6152, 31.8540, 34.1452, 36.5074, 38.9635, 41.5435, 44.2892, 47.2638, 50.5732, 54.4265}; + static const G4double X5[nX]={.0999307, + 5.25720, 8.11389, 10.5375, 12.7425, 14.8152, 16.8015, 18.7296, 20.6194, 22.4855, 24.3398, + 26.1924, 28.0527, 29.9295, 31.8320, 33.7699, 35.7541, 37.7975, 39.9158, 42.1290, 44.4649}; + static const G4double X6[nX]={.0276367, + 3.53378, 5.41553, 6.99413, 8.41629, 9.74057, 10.9978, 12.2066, 13.3796, 14.5257, 15.6519, + 16.7636, 17.8651, 18.9603, 20.0527, 21.1453, 22.2411, 23.3430, 24.4538, 25.5765, 26.7148}; + static const G4double X7[nX]={.00472383, + 2.08253, 3.16946, 4.07178, 4.87742, 5.62140, 6.32202, 6.99034, 7.63368, 8.25720, 8.86473, + 9.45921, 10.0430, 10.6179, 11.1856, 11.7475, 12.3046, 12.8581, 13.4089, 13.9577, 14.5057}; + static const G4double X8[nX]={.000630783, + 1.22723, 1.85845, 2.37862, 2.84022, 3.26412, 3.66122, 4.03811, 4.39910, 4.74725, 5.08480, + 5.41346, 5.73457, 6.04921, 6.35828, 6.66250, 6.96250, 7.25884, 7.55197, 7.84232, 8.13037}; + static const G4double X9[nX]={7.49179e-05, + .772574, 1.16623, 1.48914, 1.77460, 2.03586, 2.27983, 2.51069, 2.73118, 2.94322, 3.14823, + 3.34728, 3.54123, 3.73075, 3.91638, 4.09860, 4.27779, 4.45428, 4.62835, 4.80025, 4.97028}; + static const G4double XA[nX]={8.43437e-06, + .530035, .798454, 1.01797, 1.21156, 1.38836, 1.55313, 1.70876, 1.85712, 1.99956, 2.13704, + 2.27031, 2.39994, 2.52640, 2.65007, 2.77127, 2.89026, 3.00726, 3.12248, 3.23607, 3.34823}; + static const G4double XB[nX]={9.27028e-07, + .395058, .594211, .756726, .899794, 1.03025, 1.15167, 1.26619, 1.37523, 1.47979, 1.58059, + 1.67819, 1.77302, 1.86543, 1.95571, 2.04408, 2.13074, 2.21587, 2.29960, 2.38206, 2.46341}; + static const G4double XC[nX]={1.00807e-07, + .316195, .474948, .604251, .717911, .821417, .917635, 1.00829, 1.09452, 1.17712, 1.25668, + 1.33364, 1.40835, 1.48108, 1.55207, 1.62150, 1.68954, 1.75631, 1.82193, 1.88650, 1.95014}; + static const G4double XD[nX]={1.09102e-08, + .268227, .402318, .511324, .606997, .694011, .774803, .850843, .923097, .992243, 1.05878, + 1.12309, 1.18546, 1.24613, 1.30530, 1.36313, 1.41974, 1.47526, 1.52978, 1.58338, 1.63617}; + static const G4double XE[nX]={1.17831e-09, + .238351, .356890, .453036, .537277, .613780, .684719, .751405, .814699, .875208, .933374, + .989535, 1.04396, 1.09685, 1.14838, 1.19870, 1.24792, 1.29615, 1.34347, 1.38996, 1.43571}; + static const G4double XF[nX]={1.27141e-10, + .219778, .328346, .416158, .492931, .562525, .626955, .687434, .744761, .799494, .852046, + .902729, .951786, .999414, 1.04577, 1.09099, 1.13518, 1.17844, 1.22084, 1.26246, 1.30338}; + static const G4double XG[nX]={1.3713e-11, + .208748, .310948, .393310, .465121, .530069, .590078, .646306, .699515, .750239, .798870, + .845707, .890982, .934882, .977559, 1.01914, 1.05973, 1.09941, 1.13827, 1.17637, 1.21379}; + static const G4double XH[nX]={1.47877e-12, + .203089, .301345, .380162, .448646, .510409, .567335, .620557, .670820, .718647, .764421, + .808434, .850914, .892042, .931967, .970812, 1.00868, 1.04566, 1.08182, 1.11724, 1.15197}; + static const G4double XI[nX]={1.59454e-13, + .201466, .297453, .374007, .440245, .499779, .554489, .605506, .653573, .699213, .742806, + .784643, .824952, .863912, .901672, .938353, .974060, 1.00888, 1.04288, 1.07614, 1.10872}; + static const G4double XJ[nX]={1.71931e-14, + .202988, .297870, .373025, .437731, .495658, .548713, .598041, .644395, .688302, .730147, + .770224, .808762, .845943, .881916, .916805, .950713, .983728, 1.01592, 1.04737, 1.07813}; + // Direct table + static const G4double Xmin[nE]={X0[0],X1[0],X2[0],X3[0],X4[0],X5[0],X6[0],X7[0],X8[0], + X9[0],XA[0],XB[0],XC[0],XD[0],XE[0],XF[0],XG[0],XH[0],XI[0],XJ[0]}; + static const G4double dX[nE]={ + (X0[lX]-X0[0])/lX, (X1[lX]-X1[0])/lX, (X2[lX]-X2[0])/lX, (X3[lX]-X3[0])/lX, + (X4[lX]-X4[0])/lX, (X5[lX]-X5[0])/lX, (X6[lX]-X6[0])/lX, (X7[lX]-X7[0])/lX, + (X8[lX]-X8[0])/lX, (X9[lX]-X9[0])/lX, (XA[lX]-XA[0])/lX, (XB[lX]-XB[0])/lX, + (XC[lX]-XC[0])/lX, (XD[lX]-XD[0])/lX, (XE[lX]-XE[0])/lX, (XF[lX]-XF[0])/lX, + (XG[lX]-XG[0])/lX, (XH[lX]-XH[0])/lX, (XI[lX]-XI[0])/lX, (XJ[lX]-XJ[0])/lX}; + static const G4double* Xl[nE]= + {X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,XA,XB,XC,XD,XE,XF,XG,XH,XI,XJ}; + static const G4double I0[nX]={0, + .411893, 1.25559, 2.34836, 3.60264, 4.96046, 6.37874, 7.82342, 9.26643, 10.6840, 12.0555, + 13.3628, 14.5898, 15.7219, 16.7458, 17.6495, 18.4217, 19.0523, 19.5314, 19.8501, 20.0000}; + static const G4double I1[nX]={0, + .401573, 1.22364, 2.28998, 3.51592, 4.84533, 6.23651, 7.65645, 9.07796, 10.4780, 11.8365, + 13.1360, 14.3608, 15.4967, 16.5309, 17.4516, 18.2481, 18.9102, 19.4286, 19.7946, 20.0000}; + static const G4double I2[nX]={0, + .387599, 1.17339, 2.19424, 3.37090, 4.65066, 5.99429, 7.37071, 8.75427, 10.1232, 11.4586, + 12.7440, 13.9644, 15.1065, 16.1582, 17.1083, 17.9465, 18.6634, 19.2501, 19.6982, 20.0000}; + static const G4double I3[nX]={0, + .366444, 1.09391, 2.04109, 3.13769, 4.33668, 5.60291, 6.90843, 8.23014, 9.54840, 10.8461, + 12.1083, 13.3216, 14.4737, 15.5536, 16.5512, 17.4573, 18.2630, 18.9603, 19.5417, 20.0000}; + static const G4double I4[nX]={0, + .321962, .959681, 1.79769, 2.77753, 3.85979, 5.01487, 6.21916, 7.45307, 8.69991, 9.94515, + 11.1759, 12.3808, 13.5493, 14.6720, 15.7402, 16.7458, 17.6813, 18.5398, 19.3148, 20.0000}; + static const G4double I5[nX]={0, + .257215, .786302, 1.49611, 2.34049, 3.28823, 4.31581, 5.40439, 6.53832, 7.70422, 8.89040, + 10.0865, 11.2833, 12.4723, 13.6459, 14.7969, 15.9189, 17.0058, 18.0517, 19.0515, 20.0000}; + static const G4double I6[nX]={0, + .201608, .638914, 1.24035, 1.97000, 2.80354, 3.72260, 4.71247, 5.76086, 6.85724, 7.99243, + 9.15826, 10.3474, 11.5532, 12.7695, 13.9907, 15.2117, 16.4275, 17.6337, 18.8258, 20.0000}; + static const G4double I7[nX]={0, + .168110, .547208, 1.07889, 1.73403, 2.49292, 3.34065, 4.26525, 5.25674, 6.30654, 7.40717, + 8.55196, 9.73492, 10.9506, 12.1940, 13.4606, 14.7460, 16.0462, 17.3576, 18.6767, 20.0000}; + static const G4double I8[nX]={0, + .150652, .497557, .990048, 1.60296, 2.31924, 3.12602, 4.01295, 4.97139, 5.99395, 7.07415, + 8.20621, 9.38495, 10.6057, 11.8641, 13.1561, 14.4781, 15.8267, 17.1985, 18.5906, 20.0000}; + static const G4double I9[nX]={0, + .141449, .470633, .941304, 1.53053, 2.22280, 3.00639, 3.87189, 4.81146, 5.81837, 6.88672, + 8.01128, 9.18734, 10.4106, 11.6772, 12.9835, 14.3261, 15.7019, 17.1080, 18.5415, 20.0000}; + static const G4double IA[nX]={0, + .136048, .454593, .912075, 1.48693, 2.16457, 2.93400, 3.78639, 4.71437, 5.71163, 6.77265, + 7.89252, 9.06683, 10.2916, 11.5631, 12.8780, 14.2331, .625500, 17.0525, 18.5115, 20.0000}; + static const G4double IB[nX]={0, + .132316, .443455, .891741, 1.45656, 2.12399, 2.88352, 3.72674, 4.64660, 5.63711, 6.69298, + 7.80955, 8.98262, 10.2084, 11.4833, 12.8042, 14.1681, 15.5721, 17.0137, 18.4905, 20.0000}; + static const G4double IC[nX]={0, + .129197, .434161, .874795, 1.43128, 2.09024, 2.84158, 3.67721, 4.59038, 5.57531, 6.62696, + 7.74084, 8.91291, 10.1395, 11.4173, 12.7432, 14.1143, 15.5280, 16.9817, 18.4731, 20.0000}; + static const G4double ID[nX]={0, + .126079, .424911, .857980, 1.40626, 2.05689, 2.80020, 3.62840, 4.53504, 5.51456, 6.56212, + 7.67342, 8.84458, 10.0721, 11.3527, 12.6836, 14.0618, 15.4849, 16.9504, 18.4562, 20.0000}; + static const G4double IE[nX]={0, + .122530, .414424, .838964, 1.37801, 2.01931, 2.75363, 3.57356, 4.47293, 5.44644, 6.48949, + 7.59795, 8.76815, 9.99673, 11.2806, 12.6170, 14.0032, 15.4369, 16.9156, 18.4374, 20.0000}; + static const G4double IF[nX]={0, + .118199, .401651, .815838, 1.34370, 1.97370, 2.69716, 3.50710, 4.39771, 5.36401, 6.40164, + 7.50673, 8.67581, 9.90572, 11.1936, 12.5367, 13.9326, 15.3790, 16.8737, 18.4146, 20.0000}; + static const G4double IG[nX]={0, + .112809, .385761, .787075, 1.30103, 1.91700, 2.62697, 3.42451, 4.30424, 5.26158, 6.29249, + 7.39341, 8.56112, 9.79269, 11.0855, 12.4369, 13.8449, 15.3071, 16.8216, 18.3865, 20.0000}; + static const G4double IH[nX]={0, + .106206, .366267, .751753, 1.24859, 1.84728, 2.54062, 3.32285, .189160, 5.13543, 6.15804, + 7.25377, 8.41975, 9.65334, 10.9521, 12.3139, 13.7367, 15.2184, 16.7573, 18.3517, 20.0000}; + static const G4double II[nX]={0, + .098419, .343194, .709850, 1.18628, 1.76430, 2.43772, 3.20159, 4.05176, 4.98467, 5.99722, + 7.08663, 8.25043, 9.48633, 10.7923, 12.1663, 13.6067, 15.1118, 16.6800, 18.3099, 20.0000}; + static const G4double IJ[nX]={0, + .089681, .317135, .662319, 1.11536, 1.66960, 2.32002, 3.06260, 3.89397, 4.81126, 5.81196, + 6.89382, 8.05483, 9.29317, 10.6072, 11.9952, 13.4560, 14.9881, 16.5902, 18.2612, 20.0000}; + static const G4double* Il[nE]= + {I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ}; + static const G4double lE[nE]={ +-1.98842,-1.58049,-1.17256,-.764638,-.356711, .051215, .459141, .867068, 1.27499, 1.68292, + 2.09085, 2.49877, 2.90670, 3.31463, 3.72255, 4.13048, 4.53840, 4.94633, 5.35426, 5.76218}; + static const G4double lEmi=lE[0]; + static const G4double lEma=lE[nE-1]; + static const G4double dlE=(lEma-lEmi)/bE; + //*************************************************************************************** + G4double Enu=lastE; // Get energy of the last calculated cross-section + G4double lEn=std::log(Enu); // log(E) for interpolation + G4double rE=(lEn-lEmi)/dlE; // Position of the energy + G4int fE=static_cast(rE); // Left bin for interpolation + if(fE<0) fE=0; + if(fE>pE)fE=pE; + G4int sE=fE+1; // Right bin for interpolation + G4double dE=rE-fE; // relative log shift from the left bin + G4double dEnu=Enu+Enu; // doubled energy of nu/anu + G4double Enu2=Enu*Enu; // squared energy of nu/anu + G4double Ee=Enu-me; // Free Energy of neutrino/anti-neutrino + G4double ME=Enu*MN; // M*E + G4double dME=ME+ME; // 2*M*E + G4double dEMN=(dEnu+MN)*ME; + G4double MEm=ME-hme2; + G4double sqE=Enu*std::sqrt(MEm*MEm-me2*MN2); + G4double E2M=MN*Enu2-(Enu+MN)*hme2; + G4double ymax=(E2M+sqE)/dEMN; + G4double ymin=(E2M-sqE)/dEMN; + G4double rmin=1.-ymin; + G4double rhm2E=hme2/Enu2; + G4double Q2mi=(Enu2+Enu2)*(rmin-rhm2E-std::sqrt(rmin*rmin-rhm2E-rhm2E)); // Q2_min(E_nu) + G4double Q2ma=dME*ymax; // Q2_max(E_nu) + G4double Q2nq=Ee*dMN-mcV; + if(Q2ma>Q2nq) Q2ma=Q2nq; // Correction for Non Quasi Elastic + // --- now r_min=Q2mi/Q2ma and r_max=1.; when r is randomized -> Q2=r*Q2ma --- + G4double Rmi=Q2mi/Q2ma; + G4double shift=1.+.9673/(1.+.323/Enu/Enu)/std::pow(Enu,.78); //@@ different for anti-nu + // --- E-interpolation must be done in a log scale --- + G4double Xmi=std::pow((shift-Rmi),power);// X_min(E_nu) + G4double Xma=std::pow((shift-1.),power); // X_max(E_nu) + // Find the integral values integ(Xmi) & integ(Xma) using the direct table + G4double idX=dX[fE]+dE*(dX[sE]-dX[fE]); // interpolated X step + G4double iXmi=Xmin[fE]+dE*(Xmin[sE]-Xmin[fE]); // interpolated X minimum + G4double rXi=(Xmi-iXmi)/idX; + G4int iXi=static_cast(rXi); + if(iXi<0) iXi=0; + if(iXi>bX) iXi=bX; + G4double dXi=rXi-iXi; + G4double bntil=Il[fE][iXi]; + G4double intil=bntil+dXi*(Il[fE][iXi+1]-bntil); + G4double bntir=Il[sE][iXi]; + G4double intir=bntir+dXi*(Il[sE][iXi+1]-bntir); + G4double inti=intil+dE*(intir-intil);// interpolated begin of the integral + // + G4double rXa=(Xma-iXmi)/idX; + G4int iXa=static_cast(rXa); + if(iXa<0) iXa=0; + if(iXa>bX) iXa=bX; + G4double dXa=rXa-iXa; + G4double bntal=Il[fE][iXa]; + G4double intal=bntal+dXa*(Il[fE][iXa+1]-bntal); + G4double bntar=Il[sE][iXa]; + G4double intar=bntar+dXa*(Il[sE][iXa+1]-bntar); + G4double inta=intal+dE*(intar-intal);// interpolated end of the integral + // + // *** Find X using the reversed table *** + G4double intx=inti+(inta-inti)*G4UniformRand(); + G4int intc=static_cast(intx); + if(intc<0) intc=0; + if(intc>bX) intc=bX; + G4double dint=intx-intc; + G4double mXl=Xl[fE][intc]; + G4double Xlb=mXl+dint*(Xl[fE][intc+1]-mXl); + G4double mXr=Xl[sE][intc]; + G4double Xrb=mXr+dint*(Xl[sE][intc+1]-mXr); + G4double X=Xlb+dE*(Xrb-Xlb); // interpolated X value + G4double R=shift-std::pow(X,pconv); + G4double Q2=R*Q2ma; + return Q2*GeV*GeV; +} + +// It returns a fraction of the direct interaction of the neutrino with quark-partons +G4double G4QNuENuclearCrossSection::GetDirectPart(G4double Q2) +{ + G4double f=Q2/4.62; + G4double ff=f*f; + G4double r=ff*ff; + G4double s=std::pow((1.+.6/Q2),(-1.-(1.+r)/(12.5+r/.3))); + //@@ It is the same for nu/anu, but for nu it is a bit less, and for anu a bit more (par) + return 1.-s*(1.-s/2); +} + +// #of quark-partons in the nonperturbative phase space is the same for neut and anti-neut +G4double G4QNuENuclearCrossSection::GetNPartons(G4double Q2) +{ + return 3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space +} + +// This class can provide only virtual exchange pi+ (a substitute for W+ boson) +G4int G4QNuENuclearCrossSection::GetExchangePDGCode() {return 211;} diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QNuMuNuclearCrossSection.cc b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QNuMuNuclearCrossSection.cc index f0ae31c33b..f8c7bf16e6 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QNuMuNuclearCrossSection.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QNuMuNuclearCrossSection.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4QNuMuNuclearCrossSection.cc,v 1.10 2006/12/01 10:57:47 mkossov Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4QNuMuNuclearCrossSection.cc,v 1.12 2007/11/01 16:09:38 mkossov Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Physics class: G4QNuMuNuclearCrossSection for gamma+A cross sections @@ -38,8 +38,8 @@ // **************************************************************************************** //=============================================================================================== -///#define debug -#define edebug +//#define debug +//#define edebug //#define pdebug //#define ppdebug //#define tdebug @@ -85,7 +85,7 @@ G4double G4QNuMuNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom, static std::vector colCS; // Vector of last cross sections for the reaction // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---*** G4double pEn=pMom; -#ifdef pdebug +#ifdef debug G4cout<<"G4QNMNCS::GetCS:>> f="< colPDG;// Vector of the projectile PDG code + static std::vector colN; // Vector of N for calculated nuclei (isotops) + static std::vector colZ; // Vector of Z for calculated nuclei (isotops) + static std::vector colP; // Vector of last momenta for the reaction + static std::vector colTH; // Vector of energy thresholds for the reaction + static std::vector colCS; // Vector of last cross sections for the reaction + // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---*** + G4double pEn=pMom; +#ifdef debug + G4cout<<"G4QNMNCS::GetCS:>> f="< CS=0"< New (inDB) Calculated CS="<lastTH) // Correct the threshold + { +#ifdef pdebug + G4cout<<"G4QNMNCS::GetCS: New T="< Threshold="< Threshold="< CS=0 + } + else if(std::fabs(lastP/pMom-1.) colH; //?? Vector of HighEnergyCoefficients (functional) + static std::vector TX; // Vector of pointers to the TX tabulated functions + static std::vector QE; // Vector of pointers to the QE tabulated functions + static G4bool first=true; // Flag of initialization of the energy axis + // *** End of Static Definitions (Associative Memory) *** + //const G4double Energy = aPart->GetKineticEnergy()/MeV; // Energy of the Muon + //G4double TotEnergy2=Momentum; + onlyCS=CS; // Flag to calculate only CS (not TX & QE) + lastE=Momentum/GeV; // Kinetic energy of the muon neutrino (in GeV!) + if (lastE<=EMi) // Energy is below the minimum energy in the table + { + lastE=0.; + lastSig=0.; + return 0.; + } + G4int Z=targZ; // New Z, which can change the sign + if(F<=0) // This isotope was not the last used isotop + { + if(F<0) // This isotope was found in DAMDB =========> RETRIEVE + { + lastTX =TX[I]; // Pointer to the prepared TX function (same isotope) + lastQE =QE[I]; // Pointer to the prepared QE function (same isotope) + } + else // This isotope wasn't calculated previously => CREATE + { + if(first) + { + lastEN = new G4double[nE]; // This must be done only once! + Z=-Z; // To explain GetFunctions that E-axis must be filled + first=false; // To make it only once + } + lastTX = new G4double[nE]; // Allocate memory for the new TX function + lastQE = new G4double[nE]; // Allocate memory for the new QE function + G4int res=GetFunctions(Z,targN,lastTX,lastQE,lastEN);//@@analize(0=first,-1=bad,1=OK) + if(res<0) G4cerr<<"*W*G4NuMuNuclearCS::CalcCrossSect:Bad Function Retrieve"<=2) + { + G4int newran=ran/2; + if(lastE<=lastEN[sep]) sep-=newran; + else sep+=newran; + ran=newran; + chk=chk+chk; + } + if(chk+chk!=mL) G4cerr<<"*Warn*G4NuMuNuclearCS::CalcCS:Table! mL="<=mL||lastE>highE) + G4cerr<<"*Warn*G4NuMuNuclearCS::CalcCS:Bin! "<(rXi); + if(iXi<0) iXi=0; + if(iXi>bQ2) iXi=bQ2; + G4double dXi=rXi-iXi; + G4double bnti=inl[iXi]; + G4double inti=bnti+dXi*(inl[iXi+1]-bnti); + // + G4double rXa=(Xma-Xmin)/dX; + G4int iXa=static_cast(rXa); + if(iXa<0) iXa=0; + if(iXa>bQ2) iXa=bQ2; + G4double dXa=rXa-iXa; + G4double bnta=inl[iXa]; + G4double inta=bnta+dXa*(inl[iXa+1]-bnta); + // *** Find X using the reversed table *** + G4double intx=inti+(inta-inti)*G4UniformRand(); + G4int intc=static_cast(intx); + if(intc<0) intc=0; + if(intc>bQ2) intc=bQ2; // If it is more than max, then the BAD extrapolation + G4double dint=intx-intc; + G4double mX=Xl[intc]; + G4double X=mX+dint*(Xl[intc+1]-mX); + G4double Q2=std::pow(X,pconv)-1.; + return Q2*GeV*GeV; +} + +// Randomize Q2 from neutrino to the scattered muon when the scattering is not quasiElastic +G4double G4QNuNuNuclearCrossSection::GetNQE_ExchangeQ2() +{ + static const double mpi=.13957018; // charged pi meson mass in GeV + static const double MN=.931494043; // Nucleon mass (inside nucleus,atomicMassUnit,GeV) + static const double dMN=MN+MN; // 2*M_N in GeV + static const double mcV=(dMN+mpi)*mpi;// constant of W>M+mc cut for Quasi-Elastic + static const G4int power=7; // direct power for the magic variable + static const G4double pconv=1./power; // conversion power for the magic variable + static const G4int nX=21; // #Of point in the Xl table (in GeV^2) + static const G4int lX=nX-1; // index of the last in the Xl table + static const G4int bX=lX-1; // @@ index of the before last in the Xl table + static const G4int nE=20; // #Of point in the El table (in GeV^2) + static const G4int bE=nE-1; // index of the last in the El table + static const G4int pE=bE-1; // index of the before last in the El table + // Reversed table + static const G4double X0[nX]={6.14081e-05, + .413394, .644455, .843199, 1.02623, 1.20032, 1.36916, 1.53516, 1.70008, 1.86539, 2.03244, + 2.20256, 2.37723, 2.55818, 2.74762, 2.94857, 3.16550, 3.40582, 3.68379, 4.03589, 4.77419}; + static const G4double X1[nX]={.00125268, + .861178, 1.34230, 1.75605, 2.13704, 2.49936, 2.85072, 3.19611, 3.53921, 3.88308, 4.23049, + 4.58423, 4.94735, 5.32342, 5.71700, 6.13428, 6.58447, 7.08267, 7.65782, 8.38299, 9.77330}; + static const G4double X2[nX]={.015694, + 1.97690, 3.07976, 4.02770, 4.90021, 5.72963, 6.53363, 7.32363, 8.10805, 8.89384, 9.68728, + 10.4947, 11.3228, 12.1797, 13.0753, 14.0234, 15.0439, 16.1692, 17.4599, 19.0626, 21.7276}; + static const G4double X3[nX]={.0866877, + 4.03498, 6.27651, 8.20056, 9.96931, 11.6487, 13.2747, 14.8704, 16.4526, 18.0351, 19.6302, + 21.2501, 22.9075, 24.6174, 26.3979, 28.2730, 30.2770, 32.4631, 34.9243, 37.8590, 41.9115}; + static const G4double X4[nX]={.160483, + 5.73111, 8.88884, 11.5893, 14.0636, 16.4054, 18.6651, 20.8749, 23.0578, 25.2318, 27.4127, + 29.6152, 31.8540, 34.1452, 36.5074, 38.9635, 41.5435, 44.2892, 47.2638, 50.5732, 54.4265}; + static const G4double X5[nX]={.0999307, + 5.25720, 8.11389, 10.5375, 12.7425, 14.8152, 16.8015, 18.7296, 20.6194, 22.4855, 24.3398, + 26.1924, 28.0527, 29.9295, 31.8320, 33.7699, 35.7541, 37.7975, 39.9158, 42.1290, 44.4649}; + static const G4double X6[nX]={.0276367, + 3.53378, 5.41553, 6.99413, 8.41629, 9.74057, 10.9978, 12.2066, 13.3796, 14.5257, 15.6519, + 16.7636, 17.8651, 18.9603, 20.0527, 21.1453, 22.2411, 23.3430, 24.4538, 25.5765, 26.7148}; + static const G4double X7[nX]={.00472383, + 2.08253, 3.16946, 4.07178, 4.87742, 5.62140, 6.32202, 6.99034, 7.63368, 8.25720, 8.86473, + 9.45921, 10.0430, 10.6179, 11.1856, 11.7475, 12.3046, 12.8581, 13.4089, 13.9577, 14.5057}; + static const G4double X8[nX]={.000630783, + 1.22723, 1.85845, 2.37862, 2.84022, 3.26412, 3.66122, 4.03811, 4.39910, 4.74725, 5.08480, + 5.41346, 5.73457, 6.04921, 6.35828, 6.66250, 6.96250, 7.25884, 7.55197, 7.84232, 8.13037}; + static const G4double X9[nX]={7.49179e-05, + .772574, 1.16623, 1.48914, 1.77460, 2.03586, 2.27983, 2.51069, 2.73118, 2.94322, 3.14823, + 3.34728, 3.54123, 3.73075, 3.91638, 4.09860, 4.27779, 4.45428, 4.62835, 4.80025, 4.97028}; + static const G4double XA[nX]={8.43437e-06, + .530035, .798454, 1.01797, 1.21156, 1.38836, 1.55313, 1.70876, 1.85712, 1.99956, 2.13704, + 2.27031, 2.39994, 2.52640, 2.65007, 2.77127, 2.89026, 3.00726, 3.12248, 3.23607, 3.34823}; + static const G4double XB[nX]={9.27028e-07, + .395058, .594211, .756726, .899794, 1.03025, 1.15167, 1.26619, 1.37523, 1.47979, 1.58059, + 1.67819, 1.77302, 1.86543, 1.95571, 2.04408, 2.13074, 2.21587, 2.29960, 2.38206, 2.46341}; + static const G4double XC[nX]={1.00807e-07, + .316195, .474948, .604251, .717911, .821417, .917635, 1.00829, 1.09452, 1.17712, 1.25668, + 1.33364, 1.40835, 1.48108, 1.55207, 1.62150, 1.68954, 1.75631, 1.82193, 1.88650, 1.95014}; + static const G4double XD[nX]={1.09102e-08, + .268227, .402318, .511324, .606997, .694011, .774803, .850843, .923097, .992243, 1.05878, + 1.12309, 1.18546, 1.24613, 1.30530, 1.36313, 1.41974, 1.47526, 1.52978, 1.58338, 1.63617}; + static const G4double XE[nX]={1.17831e-09, + .238351, .356890, .453036, .537277, .613780, .684719, .751405, .814699, .875208, .933374, + .989535, 1.04396, 1.09685, 1.14838, 1.19870, 1.24792, 1.29615, 1.34347, 1.38996, 1.43571}; + static const G4double XF[nX]={1.27141e-10, + .219778, .328346, .416158, .492931, .562525, .626955, .687434, .744761, .799494, .852046, + .902729, .951786, .999414, 1.04577, 1.09099, 1.13518, 1.17844, 1.22084, 1.26246, 1.30338}; + static const G4double XG[nX]={1.3713e-11, + .208748, .310948, .393310, .465121, .530069, .590078, .646306, .699515, .750239, .798870, + .845707, .890982, .934882, .977559, 1.01914, 1.05973, 1.09941, 1.13827, 1.17637, 1.21379}; + static const G4double XH[nX]={1.47877e-12, + .203089, .301345, .380162, .448646, .510409, .567335, .620557, .670820, .718647, .764421, + .808434, .850914, .892042, .931967, .970812, 1.00868, 1.04566, 1.08182, 1.11724, 1.15197}; + static const G4double XI[nX]={1.59454e-13, + .201466, .297453, .374007, .440245, .499779, .554489, .605506, .653573, .699213, .742806, + .784643, .824952, .863912, .901672, .938353, .974060, 1.00888, 1.04288, 1.07614, 1.10872}; + static const G4double XJ[nX]={1.71931e-14, + .202988, .297870, .373025, .437731, .495658, .548713, .598041, .644395, .688302, .730147, + .770224, .808762, .845943, .881916, .916805, .950713, .983728, 1.01592, 1.04737, 1.07813}; + // Direct table + static const G4double Xmin[nE]={X0[0],X1[0],X2[0],X3[0],X4[0],X5[0],X6[0],X7[0],X8[0], + X9[0],XA[0],XB[0],XC[0],XD[0],XE[0],XF[0],XG[0],XH[0],XI[0],XJ[0]}; + static const G4double dX[nE]={ + (X0[lX]-X0[0])/lX, (X1[lX]-X1[0])/lX, (X2[lX]-X2[0])/lX, (X3[lX]-X3[0])/lX, + (X4[lX]-X4[0])/lX, (X5[lX]-X5[0])/lX, (X6[lX]-X6[0])/lX, (X7[lX]-X7[0])/lX, + (X8[lX]-X8[0])/lX, (X9[lX]-X9[0])/lX, (XA[lX]-XA[0])/lX, (XB[lX]-XB[0])/lX, + (XC[lX]-XC[0])/lX, (XD[lX]-XD[0])/lX, (XE[lX]-XE[0])/lX, (XF[lX]-XF[0])/lX, + (XG[lX]-XG[0])/lX, (XH[lX]-XH[0])/lX, (XI[lX]-XI[0])/lX, (XJ[lX]-XJ[0])/lX}; + static const G4double* Xl[nE]= + {X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,XA,XB,XC,XD,XE,XF,XG,XH,XI,XJ}; + static const G4double I0[nX]={0, + .411893, 1.25559, 2.34836, 3.60264, 4.96046, 6.37874, 7.82342, 9.26643, 10.6840, 12.0555, + 13.3628, 14.5898, 15.7219, 16.7458, 17.6495, 18.4217, 19.0523, 19.5314, 19.8501, 20.0000}; + static const G4double I1[nX]={0, + .401573, 1.22364, 2.28998, 3.51592, 4.84533, 6.23651, 7.65645, 9.07796, 10.4780, 11.8365, + 13.1360, 14.3608, 15.4967, 16.5309, 17.4516, 18.2481, 18.9102, 19.4286, 19.7946, 20.0000}; + static const G4double I2[nX]={0, + .387599, 1.17339, 2.19424, 3.37090, 4.65066, 5.99429, 7.37071, 8.75427, 10.1232, 11.4586, + 12.7440, 13.9644, 15.1065, 16.1582, 17.1083, 17.9465, 18.6634, 19.2501, 19.6982, 20.0000}; + static const G4double I3[nX]={0, + .366444, 1.09391, 2.04109, 3.13769, 4.33668, 5.60291, 6.90843, 8.23014, 9.54840, 10.8461, + 12.1083, 13.3216, 14.4737, 15.5536, 16.5512, 17.4573, 18.2630, 18.9603, 19.5417, 20.0000}; + static const G4double I4[nX]={0, + .321962, .959681, 1.79769, 2.77753, 3.85979, 5.01487, 6.21916, 7.45307, 8.69991, 9.94515, + 11.1759, 12.3808, 13.5493, 14.6720, 15.7402, 16.7458, 17.6813, 18.5398, 19.3148, 20.0000}; + static const G4double I5[nX]={0, + .257215, .786302, 1.49611, 2.34049, 3.28823, 4.31581, 5.40439, 6.53832, 7.70422, 8.89040, + 10.0865, 11.2833, 12.4723, 13.6459, 14.7969, 15.9189, 17.0058, 18.0517, 19.0515, 20.0000}; + static const G4double I6[nX]={0, + .201608, .638914, 1.24035, 1.97000, 2.80354, 3.72260, 4.71247, 5.76086, 6.85724, 7.99243, + 9.15826, 10.3474, 11.5532, 12.7695, 13.9907, 15.2117, 16.4275, 17.6337, 18.8258, 20.0000}; + static const G4double I7[nX]={0, + .168110, .547208, 1.07889, 1.73403, 2.49292, 3.34065, 4.26525, 5.25674, 6.30654, 7.40717, + 8.55196, 9.73492, 10.9506, 12.1940, 13.4606, 14.7460, 16.0462, 17.3576, 18.6767, 20.0000}; + static const G4double I8[nX]={0, + .150652, .497557, .990048, 1.60296, 2.31924, 3.12602, 4.01295, 4.97139, 5.99395, 7.07415, + 8.20621, 9.38495, 10.6057, 11.8641, 13.1561, 14.4781, 15.8267, 17.1985, 18.5906, 20.0000}; + static const G4double I9[nX]={0, + .141449, .470633, .941304, 1.53053, 2.22280, 3.00639, 3.87189, 4.81146, 5.81837, 6.88672, + 8.01128, 9.18734, 10.4106, 11.6772, 12.9835, 14.3261, 15.7019, 17.1080, 18.5415, 20.0000}; + static const G4double IA[nX]={0, + .136048, .454593, .912075, 1.48693, 2.16457, 2.93400, 3.78639, 4.71437, 5.71163, 6.77265, + 7.89252, 9.06683, 10.2916, 11.5631, 12.8780, 14.2331, .625500, 17.0525, 18.5115, 20.0000}; + static const G4double IB[nX]={0, + .132316, .443455, .891741, 1.45656, 2.12399, 2.88352, 3.72674, 4.64660, 5.63711, 6.69298, + 7.80955, 8.98262, 10.2084, 11.4833, 12.8042, 14.1681, 15.5721, 17.0137, 18.4905, 20.0000}; + static const G4double IC[nX]={0, + .129197, .434161, .874795, 1.43128, 2.09024, 2.84158, 3.67721, 4.59038, 5.57531, 6.62696, + 7.74084, 8.91291, 10.1395, 11.4173, 12.7432, 14.1143, 15.5280, 16.9817, 18.4731, 20.0000}; + static const G4double ID[nX]={0, + .126079, .424911, .857980, 1.40626, 2.05689, 2.80020, 3.62840, 4.53504, 5.51456, 6.56212, + 7.67342, 8.84458, 10.0721, 11.3527, 12.6836, 14.0618, 15.4849, 16.9504, 18.4562, 20.0000}; + static const G4double IE[nX]={0, + .122530, .414424, .838964, 1.37801, 2.01931, 2.75363, 3.57356, 4.47293, 5.44644, 6.48949, + 7.59795, 8.76815, 9.99673, 11.2806, 12.6170, 14.0032, 15.4369, 16.9156, 18.4374, 20.0000}; + static const G4double IF[nX]={0, + .118199, .401651, .815838, 1.34370, 1.97370, 2.69716, 3.50710, 4.39771, 5.36401, 6.40164, + 7.50673, 8.67581, 9.90572, 11.1936, 12.5367, 13.9326, 15.3790, 16.8737, 18.4146, 20.0000}; + static const G4double IG[nX]={0, + .112809, .385761, .787075, 1.30103, 1.91700, 2.62697, 3.42451, 4.30424, 5.26158, 6.29249, + 7.39341, 8.56112, 9.79269, 11.0855, 12.4369, 13.8449, 15.3071, 16.8216, 18.3865, 20.0000}; + static const G4double IH[nX]={0, + .106206, .366267, .751753, 1.24859, 1.84728, 2.54062, 3.32285, .189160, 5.13543, 6.15804, + 7.25377, 8.41975, 9.65334, 10.9521, 12.3139, 13.7367, 15.2184, 16.7573, 18.3517, 20.0000}; + static const G4double II[nX]={0, + .098419, .343194, .709850, 1.18628, 1.76430, 2.43772, 3.20159, 4.05176, 4.98467, 5.99722, + 7.08663, 8.25043, 9.48633, 10.7923, 12.1663, 13.6067, 15.1118, 16.6800, 18.3099, 20.0000}; + static const G4double IJ[nX]={0, + .089681, .317135, .662319, 1.11536, 1.66960, 2.32002, 3.06260, 3.89397, 4.81126, 5.81196, + 6.89382, 8.05483, 9.29317, 10.6072, 11.9952, 13.4560, 14.9881, 16.5902, 18.2612, 20.0000}; + static const G4double* Il[nE]= + {I0,I1,I2,I3,I4,I5,I6,I7,I8,I9,IA,IB,IC,ID,IE,IF,IG,IH,II,IJ}; + static const G4double lE[nE]={ +-1.98842,-1.58049,-1.17256,-.764638,-.356711, .051215, .459141, .867068, 1.27499, 1.68292, + 2.09085, 2.49877, 2.90670, 3.31463, 3.72255, 4.13048, 4.53840, 4.94633, 5.35426, 5.76218}; + static const G4double lEmi=lE[0]; + static const G4double lEma=lE[nE-1]; + static const G4double dlE=(lEma-lEmi)/bE; + //*************************************************************************************** + G4double Enu=lastE; // Get energy of the last calculated cross-section + G4double lEn=std::log(Enu); // log(E) for interpolation + G4double rE=(lEn-lEmi)/dlE; // Position of the energy + G4int fE=static_cast(rE); // Left bin for interpolation + if(fE<0) fE=0; + if(fE>pE)fE=pE; + G4int sE=fE+1; // Right bin for interpolation + G4double dE=rE-fE; // relative log shift from the left bin + G4double dEnu=Enu+Enu; // doubled energy of nu/anu + G4double Enu2=Enu*Enu; // squared energy of nu/anu + G4double Emu=Enu; // Free Energy of neutrino/anti-neutrino + G4double ME=Enu*MN; // M*E + G4double dME=ME+ME; // 2*M*E + G4double dEMN=(dEnu+MN)*ME; + G4double sqE=Enu*ME; + G4double E2M=MN*Enu2; + G4double ymax=(E2M+sqE)/dEMN; + G4double Q2mi=0.; // Q2_min(E_nu) + G4double Q2ma=dME*ymax; // Q2_max(E_nu) + G4double Q2nq=Emu*dMN-mcV; + if(Q2ma>Q2nq) Q2ma=Q2nq; // Correction for Non Quasi Elastic + // --- now r_min=Q2mi/Q2ma and r_max=1.; when r is randomized -> Q2=r*Q2ma --- + G4double Rmi=Q2mi/Q2ma; + G4double shift=1.+.9673/(1.+.323/Enu/Enu)/std::pow(Enu,.78); //@@ different for anti-nu + // --- E-interpolation must be done in a log scale --- + G4double Xmi=std::pow((shift-Rmi),power);// X_min(E_nu) + G4double Xma=std::pow((shift-1.),power); // X_max(E_nu) + // Find the integral values integ(Xmi) & integ(Xma) using the direct table + G4double idX=dX[fE]+dE*(dX[sE]-dX[fE]); // interpolated X step + G4double iXmi=Xmin[fE]+dE*(Xmin[sE]-Xmin[fE]); // interpolated X minimum + G4double rXi=(Xmi-iXmi)/idX; + G4int iXi=static_cast(rXi); + if(iXi<0) iXi=0; + if(iXi>bX) iXi=bX; + G4double dXi=rXi-iXi; + G4double bntil=Il[fE][iXi]; + G4double intil=bntil+dXi*(Il[fE][iXi+1]-bntil); + G4double bntir=Il[sE][iXi]; + G4double intir=bntir+dXi*(Il[sE][iXi+1]-bntir); + G4double inti=intil+dE*(intir-intil);// interpolated begin of the integral + // + G4double rXa=(Xma-iXmi)/idX; + G4int iXa=static_cast(rXa); + if(iXa<0) iXa=0; + if(iXa>bX) iXa=bX; + G4double dXa=rXa-iXa; + G4double bntal=Il[fE][iXa]; + G4double intal=bntal+dXa*(Il[fE][iXa+1]-bntal); + G4double bntar=Il[sE][iXa]; + G4double intar=bntar+dXa*(Il[sE][iXa+1]-bntar); + G4double inta=intal+dE*(intar-intal);// interpolated end of the integral + // + // *** Find X using the reversed table *** + G4double intx=inti+(inta-inti)*G4UniformRand(); + G4int intc=static_cast(intx); + if(intc<0) intc=0; + if(intc>bX) intc=bX; + G4double dint=intx-intc; + G4double mXl=Xl[fE][intc]; + G4double Xlb=mXl+dint*(Xl[fE][intc+1]-mXl); + G4double mXr=Xl[sE][intc]; + G4double Xrb=mXr+dint*(Xl[sE][intc+1]-mXr); + G4double X=Xlb+dE*(Xrb-Xlb); // interpolated X value + G4double R=shift-std::pow(X,pconv); + G4double Q2=R*Q2ma; + return Q2*GeV*GeV; +} + +// It returns a fraction of the direct interaction of the neutrino with quark-partons +G4double G4QNuNuNuclearCrossSection::GetDirectPart(G4double Q2) +{ + G4double f=Q2/4.62; + G4double ff=f*f; + G4double r=ff*ff; + G4double s=std::pow((1.+.6/Q2),(-1.-(1.+r)/(12.5+r/.3))); + //@@ It is the same for nu/anu, but for nu it is a bit less, and for anu a bit more (par) + return 1.-s*(1.-s/2); +} + +// #of quark-partons in the nonperturbative phase space is the same for neut and anti-neut +G4double G4QNuNuNuclearCrossSection::GetNPartons(G4double Q2) +{ + return 3.+.3581*std::log(1.+Q2/.04); // a#of partons in the nonperturbative phase space +} + +// This class can provide only virtual exchange pi+ (a substitute for W+ boson) +G4int G4QNuNuNuclearCrossSection::GetExchangePDGCode() {return 22;} diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QPhotonNuclearCrossSection.cc b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QPhotonNuclearCrossSection.cc index 2359abfa3c..d09ae7d042 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QPhotonNuclearCrossSection.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QPhotonNuclearCrossSection.cc @@ -25,7 +25,7 @@ // // // The lust update: M.V. Kossov, CERN/ITEP(Moscow) 17-June-02 -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Physics class: G4QPhotonNuclearCrossSection for gamma+A cross sections @@ -1708,7 +1708,7 @@ G4int G4QPhotonNuclearCrossSection::GetFunctions(G4double a, G4double* y, G4doub if(y[m]<0.)G4cout<<"G4QPhotNucCS::GetF:y="<>> f="< CS=0"< New (inDB) Calculated CS="<lastTH) // Correct the threshold { @@ -150,11 +133,10 @@ G4double G4QProtonNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom break; // Go out of the LOOP } #ifdef pdebug - G4cout<<"---G4QPrCrossSec::GetCrosSec:pPDG="<G4QPrCrossSec::GetCrosSec: pPDG=2212, j="< CS=0 } @@ -215,7 +192,6 @@ G4double G4QProtonNuclearCrossSection::GetCrossSection(G4bool fCS, G4double pMom { #ifdef pdebug G4cout<<"G4QPrCS::GetCS:OldCur P="< spA; // shadowing coefficients (A-dependent) - static std::vector LEN; // Vector of pointers to LowEnProtonCrossSection - static std::vector HEN; // Vector of pointers to HighEnProtonCrossSection + //static std::vector spA; // shadowing coefficients (A-dependent) + static std::vector LEN; // Vector of pointers to LowEnProtonCrossSection + static std::vector HEN; // Vector of pointers to HighEnProtonCrossSection #ifdef debug - G4cout<<"G4QProtonNuclearCrossSection::CalcCS: N="<=nLA) k=nLA-1; // Extrapolation from the last bin (U) - G4int k1=k-1; - G4double xi=LA[k1]; - G4double b=(a-xi)/(LA[k]-xi); - for(G4int m=0; m1.5) - { - G4double yi=SL[k1][m]; - y[m]=yi+(SL[k][m]-yi)*b; -#ifdef debugs - if(y[m]<0.)G4cout<<"G4QProtonNucleCS::GetF: y="< G4QuasiFreeRatios::vE; // Vector of ElastPointers to LogTable in C++ heap -std::vector G4QuasiFreeRatios::vT; // Vector of pointers to LinTable in C++ heap -std::vector G4QuasiFreeRatios::vL; // Vector of pointers to LogTable in C++ heap -std::vector*> G4QuasiFreeRatios::vX; // Vector of ETPointers to LogTable +std::vector G4QuasiFreeRatios::vT; // Vector of pointers to LinTable in C++ heap +std::vector G4QuasiFreeRatios::vL; // Vector of pointers to LogTable in C++ heap +std::vector*> G4QuasiFreeRatios::vX; // ETPointers to LogTable G4QuasiFreeRatios::G4QuasiFreeRatios() { +#ifdef pdebug + G4cout<<"***^^^*** G4QuasiFreeRatios singletone is created ***^^^***"<::iterator pos; - for(pos=vE.begin(); pos G4QuasiFreeRatios::Scatter(G4int NPDG G4double mT2=mT*mT; G4double mP2=pr4M.m2(); G4double E=(tot4M.m2()-mT2-mP2)/(mT+mT); +#ifdef pdebug + G4cerr<<"G4QFR::Scat:qM="< G4QuasiFreeRatios::Scatter(G4int NPDG // @@ Temporary NN t-dependence for all hadrons if(pPDG>3400 || pPDG<-3400) G4cout<<"-Warning-G4QElast::Scatter: pPDG="<GetCrossSection(false, P, Z, N, PDG); // Rec.CrossSect *TMP* //G4double xSec=CSmanager->GetCrossSection(false, P, Z, N, pPDG); // Rec.CrossSect #ifdef debug @@ -823,16 +865,17 @@ std::pair G4QuasiFreeRatios::Scatter(G4int NPDG } G4double mint=CSmanager->GetExchangeT(Z,N,PDG); // functional randomized -t (MeV^2) *TMP* //G4double mint=CSmanager->GetExchangeT(Z,N,pPDG); // functional randomized -t in MeV^2 -#ifdef pdebug - G4cout<<"G4QFR::Scat:PDG="<-.0000001); else G4cout<<"*Warning*G4QFR::Scat: -t="<GetHMaxT(); // cos(theta) in CMS + G4double cost=1.-(mint+mint)/maxt; // cos(theta) in CMS #ifdef ppdebug - G4cout<<"G4QFR::Scat:-t="<GetHMaxT()<<",cost="< fAngleBank; + + std::vector fElementNumberVector; + std::vector fElementNameVector; + const G4ParticleDefinition* fParticle; G4double fWaveVector; G4double fAtomicWeight; + G4double fAtomicNumber; G4double fNuclearRadius; + G4double fBeta; + G4double fZommerfeld; + G4double fAm; + G4bool fAddCoulomb; }; + inline void G4DiffuseElastic::SetRecoilKinEnergyLimit(G4double value) { lowEnergyRecoilLimit = value; @@ -257,7 +352,7 @@ inline G4double G4DiffuseElastic::BesselJone(G4double value) //////////////////////////////////////////////////////////////////// // -// damp factor in diffraction x*pi/sh(x*pi) +// damp factor in diffraction x/sh(x), x was already *pi inline G4double G4DiffuseElastic::DampFactor(G4double x) { @@ -299,4 +394,148 @@ inline G4double G4DiffuseElastic::BesselOneByArg(G4double x) return result; } +//////////////////////////////////////////////////////////////////// +// +// return particle beta + +inline G4double G4DiffuseElastic::CalculateParticleBeta( const G4ParticleDefinition* particle, + G4double momentum ) +{ + G4double mass = particle->GetPDGMass(); + G4double a = momentum/mass; + fBeta = a/std::sqrt(1+a*a); + + return fBeta; +} + +//////////////////////////////////////////////////////////////////// +// +// return Zommerfeld parameter for Coulomb scattering + +inline G4double G4DiffuseElastic::CalculateZommerfeld( G4double beta, G4double Z1, G4double Z2 ) +{ + fZommerfeld = fine_structure_const*Z1*Z2/beta; + + return fZommerfeld; +} + +//////////////////////////////////////////////////////////////////// +// +// return Wentzel correction for Coulomb scattering + +inline G4double G4DiffuseElastic::CalculateAm( G4double momentum, G4double n, G4double Z) +{ + G4double k = momentum/hbarc; + G4double ch = 1.13 + 3.76*n*n; + G4double zn = 1.77*k*std::pow(Z,-1./3.)*Bohr_radius; + G4double zn2 = zn*zn; + fAm = ch/zn2; + + return fAm; +} + +//////////////////////////////////////////////////////////////////// +// +// calculate nuclear radius for different atomic weights using different approximations + +inline G4double G4DiffuseElastic::CalculateNuclearRad( G4double A) +{ + G4double r0; + + if(A < 50.) + { + if(A > 10.) r0 = 1.16*( 1 - std::pow(A, -2./3.) )*fermi; // 1.08*fermi; + else r0 = 1.1*fermi; + + fNuclearRadius = r0*std::pow(A, 1./3.); + } + else + { + r0 = 1.7*fermi; + + fNuclearRadius = r0*std::pow(A, 0.27); + } + return fNuclearRadius; +} + +//////////////////////////////////////////////////////////////////// +// +// return Coulomb scattering differential xsc with Wentzel correction + +inline G4double G4DiffuseElastic::GetCoulombElasticXsc( const G4ParticleDefinition* particle, + G4double theta, + G4double momentum, + G4double Z ) +{ + G4double sinHalfTheta = std::sin(0.5*theta); + G4double sinHalfTheta2 = sinHalfTheta*sinHalfTheta; + G4double beta = CalculateParticleBeta( particle, momentum); + G4double z = particle->GetPDGCharge(); + G4double n = CalculateZommerfeld( beta, z, Z ); + G4double am = CalculateAm( momentum, n, Z); + G4double k = momentum/hbarc; + G4double ch = 0.5*n/k; + G4double ch2 = ch*ch; + G4double xsc = ch2/(sinHalfTheta2+am)/(sinHalfTheta2+am); + + return xsc; +} + + +//////////////////////////////////////////////////////////////////// +// +// return Coulomb scattering total xsc with Wentzel correction + +inline G4double G4DiffuseElastic::GetCoulombTotalXsc( const G4ParticleDefinition* particle, + G4double momentum, G4double Z ) +{ + G4double beta = CalculateParticleBeta( particle, momentum); + G4cout<<"beta = "<GetPDGCharge(); + G4double n = CalculateZommerfeld( beta, z, Z ); + G4cout<<"fZomerfeld = "<clearAndDestroy(); + delete fAngleTable ; + } } +////////////////////////////////////////////////////////////////////////////// +// +// Initialisation for given particle using element table of application +void G4DiffuseElastic::Initialise() +{ + + // fEnergyVector = new G4PhysicsLogVector( theMinEnergy, theMaxEnergy, fEnergyBin ); + + const G4ElementTable* theElementTable = G4Element::GetElementTable(); + + size_t jEl, numOfEl = G4Element::GetNumberOfElements(); + + for(jEl = 0 ; jEl < numOfEl; ++jEl) // application element loop + { + fAtomicNumber = (*theElementTable)[jEl]->GetZ(); // atomic number + fAtomicWeight = (*theElementTable)[jEl]->GetN(); // number of nucleons + fNuclearRadius = CalculateNuclearRad(fAtomicWeight); + if(verboseLevel > 0) + G4cout<<"G4DiffuseElastic::Initialise() the element: " + <<(*theElementTable)[jEl]->GetName()<GetName()); + + BuildAngleTable(); + fAngleBank.push_back(fAngleTable); + } + return; +} + +////////////////////////////////////////////////////////////////////////////// +// +// Initialisation for given particle on fly using new element number + +void G4DiffuseElastic::InitialiseOnFly(G4double Z, G4double A) +{ + fAtomicNumber = Z; // atomic number + fAtomicWeight = A; // number of nucleons + fNuclearRadius = CalculateNuclearRad(fAtomicWeight); + if(verboseLevel > 0) + G4cout<<"G4DiffuseElastic::Initialise() the element with Z = " + < 3) Pnucl = 0.176 + 0.00275*A; else Pnucl = 0.4; +//G4cout<<" Deault: A= "<= 100) Aeff = 0.7; else if(A < 100 && A > 75) Aeff = 1.5 - 0.008*A; else Aeff = 0.9; break; } +//G4cout<<" Result: A= "<FindIon(Z,A,0,Z); + else theDef = G4ParticleTable:: + GetParticleTable()->FindIon(Z,A,0,Z); G4double m2 = theDef->GetPDGMass(); G4LorentzVector lv1 = aParticle->Get4Momentum(); @@ -408,14 +462,17 @@ G4HadFinalState * G4ElasticHadrNucleusHE::ApplyYourself( // // -G4double G4ElasticHadrNucleusHE::SampleT( const G4ParticleDefinition* p, - G4double inLabMom, G4int Z, G4int N) +G4double G4ElasticHadrNucleusHE:: + SampleT( const G4ParticleDefinition* p, + G4double inLabMom, G4int Z, G4int N) { G4double plab = inLabMom/GeV; // (GeV/c) G4double Q2 = 0; - +// G4int ii, jj; iHadrCode = p->GetPDGEncoding(); + NumbN = N; + if(verboseLevel > 1) { G4cout<< " G4ElasticHadrNucleusHE::SampleT: " @@ -437,6 +494,26 @@ G4double G4ElasticHadrNucleusHE::SampleT( const G4ParticleDefinition* p, iHadron = HadronType[idx]; iHadrCode = HadronCode[idx]; + + if(Z==1) + { + hMass = p->GetPDGMass()/GeV; + hMass2 = hMass*hMass; + + G4double T = sqrt(plab*plab+hMass2)-hMass; + + if(T < 0.4) Q2 = 0; + else Q2 = HadronProtonQ2(p, plab); + + if (verboseLevel>1) + G4cout<<" Proton : Q2 "< 1) G4cout<<" SampleT: Q2(GeV^2)= "<Aeff; Pnucl = pElD->Pnucl; hLabMomentum = std::sqrt(hLabMomentum2); + DefineHadronValues(Z); - G4int AWeight = pElD->AtomicWeight; - Weight = GetLightFq2(Z, AWeight, Q2max); + + if(verboseLevel >0) + { + G4cout<<"1 plab T "<AtomicWeight; + +/// Weight = GetLightFq2(Z, AWeight, Q2max); + pElD->CrossSecMaxQ2[NumbOnE] = Weight; if(verboseLevel > 1) @@ -532,6 +630,24 @@ G4double G4ElasticHadrNucleusHE::HadronNucleusQ2_2(G4ElasticData* pElD, G4int Z, pElD->TableCrossSec[index] = 0; + + dQ2 = pElD->TableQ2[1]-pElD->TableQ2[0]; + + GetHeavyFq2(NumbN, LineFq2); // %%%%%%%%%%%%%%%%%%%%%%%%% + + for(G4int ii=0; ii 2) + G4cout<<" ii LineFq2 "<TableCrossSec[index+ii] = LineFq2[ii]/LineFq2[ONQ2-1]; + + } + + pElD->dnkE[NumbOnE] = ONQ2; + rmax = 1; +/* for(G4int ii=1; iiTableQ2[ii]; @@ -544,12 +660,20 @@ G4double G4ElasticHadrNucleusHE::HadronNucleusQ2_2(G4ElasticData* pElD, G4int Z, if(verboseLevel > 1) G4cout<<" HadrNucleusQ2_2: ii= " << ii << " Q2= " < 1) + G4cout<<" ii Q2 DiffCrSec "<dnkE[NumbOnE] = ONQ0; - +*/ } else { @@ -570,6 +694,8 @@ G4double G4ElasticHadrNucleusHE::HadronNucleusQ2_2(G4ElasticData* pElD, G4int Z, } + +/* else // Build second part of the vector { if(!isIni) @@ -596,10 +722,10 @@ G4double G4ElasticHadrNucleusHE::HadronNucleusQ2_2(G4ElasticData* pElD, G4int Z, pElD->TableCrossSec[index+iNumbQ2] = Buf; - if(verboseLevel > 1) - G4cout<<" HadrNucleusQ2_2: NumbOnE= " << NumbOnE - << " iNumbQ2= " << iNumbQ2 << " Q2= " - < 1) + G4cout<<" HadrNucleusQ2_2: NumbOnE= " << NumbOnE + << " iNumbQ2= " << iNumbQ2 << " Q2= " + <2) + G4cout<<" GetHeavy: Q2 dQ2 totSum "<1) + G4cout<<" Fq2 Before for i Tot B Im "< 1) { - G4cout << "Stot= " << Stot << " Bhad= " << Bhad << " Asq= " << Asq << G4endl; + G4cout << "GetFq2: Stot= " << Stot << " Bhad= " << Bhad + <<" Im "< 10) TotP = TotN = 7.5*logE - 40.12525 + 103*std::pow(sHadr,-0.165); // mb - if(hLabMomentum<10.) - { - // ================== neutron ================ + else + { +// ================== neutron ================ + +//// if(iHadrCode == 2112) + - if(iHadrCode == 2112) - { if( hLabMomentum > 1.4 ) - TotN = 33.3+15.2*(hLabMomentum2-1.35)/(std::pow(hLabMomentum,2.37)+0.95); + TotN = 33.3+15.2*(hLabMomentum2-1.35)/ + (std::pow(hLabMomentum,2.37)+0.95); else if(hLabMomentum > 0.8) { @@ -870,91 +1239,100 @@ void G4ElasticHadrNucleusHE::DefineHadronValues(G4int Z) G4double A0 = logE - 0.2634; // log(1.3) TotN = 33.0 + 30.*A0*A0*A0*A0; } - // ================= proton =============== - } - else if(iHadrCode == 2212) +// ================= proton =============== +// else if(iHadrCode == 2212) { - if(hLabMomentum>1.05) - TotP = 39.0+75.*(hLabMomentum-1.2)/(hLabMomentum2*hLabMomentum+0.15); - - else if(hLabMomentum > 0.7) - { + if(hLabMomentum >= 1.05) + { + TotP = 39.0+75.*(hLabMomentum-1.2)/ + (hLabMomentum2*hLabMomentum+0.15); + } + + else if(hLabMomentum >= 0.7) + { G4double A0 = logE + 0.3147; TotP = 23.0 + 40.*A0*A0; - } + } else + { TotP = 23.+50.*std::pow(std::log(0.73/hLabMomentum),3.5); + } } } - HadrTot = 0.5*(TotP+TotN); - + +// HadrTot = 0.5*(82*TotP+126*TotN)/104; // $$$$$$$$$$$$$$$$$$ + HadrTot = 0.5*(TotP+TotN); +// ................................................... // Proton slope - HadrSlope = 5.44 + 0.88*logS; // GeV-2 + if(hLabMomentum >= 2.) HadrSlope = 5.44 + 0.88*logS; - if( hLabMomentum < 2.) HadrSlope = 1.5; + else if(hLabMomentum >= 0.5) HadrSlope = 3.73*hLabMomentum-0.37; - if(hLabMomentum>1.2) + else HadrSlope = 1.5; + +// ................................................... + if(hLabMomentum >= 1.2) HadrReIm = 0.13*(logS - 5.8579332)*std::pow(sHadr,-0.18); - else if(hLabMomentum > 0.6) + else if(hLabMomentum >= 0.6) HadrReIm = -75.5*(std::pow(hLabMomentum,0.25)-0.95)/ - (std::pow(3*hLabMomentum,2.2)+1); - + (std::pow(3*hLabMomentum,2.2)+1); + else HadrReIm = 15.5*hLabMomentum/(27*hLabMomentum2*hLabMomentum+2); - - DDSect2 = 11; //mb*GeV-2 - DDSect3 = 3; //mb*GeV-2 +// ................................................... + DDSect2 = 2.2; //mb*GeV-2 + DDSect3 = 0.6; //mb*GeV-2 // ================== lambda ================== if( iHadrCode == 3122) { - HadrTot *= 0.88; + HadrTot *= 0.88; HadrSlope *=0.85; } // ================== sigma + ================== - if( iHadrCode == 3222) + else if( iHadrCode == 3222) { HadrTot *=0.81; HadrSlope *=0.85; } // ================== sigma 0,- ================== - if(iHadrCode == 3112 || iHadrCode == 3212 ) + else if(iHadrCode == 3112 || iHadrCode == 3212 ) { HadrTot *=0.88; HadrSlope *=0.85; } // =================== xi ================= - if( iHadrCode == 3312 || iHadrCode == 3322 ) + else if( iHadrCode == 3312 || iHadrCode == 3322 ) { HadrTot *=0.77; HadrSlope *=0.75; } // ================= omega ================= - if( iHadrCode == 3334) + else if( iHadrCode == 3334) { HadrTot *=0.78; HadrSlope *=0.7; } break; - - case 1: - case 7: // antiproton +// =========================================================== + case 1: // antiproton + case 7: // antineutron HadrTot = 5.2+5.2*logE + 123.2/sqrS; // mb - HadrSlope = 8.32+0.57*logS; //GeV-2 + HadrSlope = 8.32+0.57*logS; //(GeV/c)^-2 if( HadrEnergy < 1000 ) HadrReIm = 0.06*(sqrS-2.236)*(sqrS-14.14)*std::pow(sHadr,-0.8); else HadrReIm = 0.6*(logS - 5.8579332)*std::pow(sHadr,-0.25); - DDSect2 = 11; //mb*GeV-2 - DDSect3 = 3; //mb*GeV-2 + DDSect2 = 11; //mb*(GeV/c)^-2 + DDSect3 = 3; //mb*(GeV/c)^-2 // ================== lambda ================== if( iHadrCode == -3122) { - HadrTot *= 0.88; + HadrTot *= 0.88; HadrSlope *=0.85; } // ================== sigma + ================== @@ -983,47 +1361,49 @@ void G4ElasticHadrNucleusHE::DefineHadronValues(G4int Z) } break; - // ------------------------------------------- +// ------------------------------------------- case 2: // pi plus, pi minus case 3: - if(hLabMomentum>3.5) + if(hLabMomentum >= 3.5) TotP = 10.6+2.*logE + 25.*std::pow(HadrEnergy,-0.43); // mb - // ========================================= - else if(hLabMomentum >1.15) +// ========================================= + else if(hLabMomentum >= 1.15) { G4double x = (hLabMomentum - 2.55)/0.55; G4double y = (hLabMomentum - 1.47)/0.225; TotP = 3.2*std::exp(-x*x) + 12.*std::exp(-y*y) + 27.5; } - // ========================================= - else if(hLabMomentum >0.4) +// ========================================= + else if(hLabMomentum >= 0.4) + { TotP = 88*(logE+0.2877)*(logE+0.2877)+14.0; - - // ========================================= + } +// ========================================= else { G4double x = (hLabMomentum - 0.29)/0.085; TotP = 20. + 180.*std::exp(-x*x); } - // ------------------------------------------- +// ------------------------------------------- - if(hLabMomentum > 3.0 ) + if(hLabMomentum >= 3.0 ) TotN = 10.6 + 2.*logE + 30.*std::pow(HadrEnergy,-0.43); // mb - else if(hLabMomentum > 1.3) + else if(hLabMomentum >= 1.3) { G4double x = (hLabMomentum - 2.1)/0.4; G4double y = (hLabMomentum - 1.4)/0.12; - TotN = 36.1+0.079 - 4.313*logE + 3.*std::exp(-x*x) + 1.5*std::exp(-y*y); + TotN = 36.1+0.079 - 4.313*logE + 3.*std::exp(-x*x) + + 1.5*std::exp(-y*y); } - else if(hLabMomentum > 0.65) + else if(hLabMomentum >= 0.65) { G4double x = (hLabMomentum - 0.72)/0.06; G4double y = (hLabMomentum - 1.015)/0.075; TotN = 36.1 + 10.*std::exp(-x*x) + 24*std::exp(-y*y); } - else if(hLabMomentum > 0.37) + else if(hLabMomentum >= 0.37) { G4double x = std::log(hLabMomentum/0.48); TotN = 26. + 110.*x*x; @@ -1034,15 +1414,15 @@ void G4ElasticHadrNucleusHE::DefineHadronValues(G4int Z) TotN = 28.0 + 40.*std::exp(-x*x); } HadrTot = (TotP+TotN)/2; - +// ........................................ HadrSlope = 7.28+0.245*logS; // GeV-2 HadrReIm = 0.2*(logS - 4.6051702)*std::pow(sHadr,-0.15); - DDSect2 = 4.6; //mb*GeV-2 - DDSect3 = 1.33; //mb*GeV-2 + DDSect2 = 0.7; //mb*GeV-2 + DDSect3 = 0.27; //mb*GeV-2 break; - +// ========================================================== case 4: // K plus HadrTot = 10.6+1.8*logE + 9.0*std::pow(HadrEnergy,-0.55); // mb @@ -1050,23 +1430,28 @@ void G4ElasticHadrNucleusHE::DefineHadronValues(G4int Z) else HadrSlope = 1.0+1.76*logS - 2.84/sqrS; // GeV-2 HadrReIm = 0.4*(sHadr-20)*(sHadr-150)*std::pow(sHadr+50,-2.1); - DDSect2 = 3.5; //mb*GeV-2 - DDSect3 = 1.03; //mb*GeV-2 + DDSect2 = 0.7; //mb*GeV-2 + DDSect3 = 0.21; //mb*GeV-2 break; - +// ========================================================= case 5: // K minus HadrTot = 10+1.8*logE + 25./sqrS; // mb HadrSlope = 6.98+0.127*logS; // GeV-2 HadrReIm = 0.4*(sHadr-20)*(sHadr-20)*std::pow(sHadr+50,-2.1); - DDSect2 = 3.5; //mb*GeV-2 - DDSect3 = 1.03; //mb*GeV-2 + DDSect2 = 0.7; //mb*GeV-2 + DDSect3 = 0.27; //mb*GeV-2 break; } +// ========================================================= if(verboseLevel>2) G4cout << "HadrTot= " << HadrTot << " HadrSlope= " << HadrSlope << " HadrReIm= " << HadrReIm << " DDSect2= " << DDSect2 << " DDSect3= " << DDSect3 << G4endl; + + // HadrTot1 = HadrTot; + // HadrSlope1 = HadrSlope; + // HadrReIm1 = HadrReIm; if(Z != 1) return; @@ -1129,52 +1514,191 @@ void G4ElasticHadrNucleusHE::DefineHadronValues(G4int Z) { case 0 : - if(hLabMomentum < EnP0[5]) + + if(hLabMomentum 2) + G4cout<<" HadrVal : Plasb "<1) + G4cout<<"1 GetKin.: HadronName MomentumH " + <GetParticleName()<<" "<1) + G4cout<<"3 GetKin. : NumberH "<1) + G4cout<<"Old: Coeff0 Coeff1 Coeff2 "< 0.0001) + { + if(delta>0) + { + DDD2 = DDD0; + DDD0 = (DDD0+DDD1)*0.5; + } + else if(delta<0) + { + DDD1 = DDD0; + DDD0 = (DDD0+DDD2)*0.5; + } + delta = GetDistrFun(DDD0)-Ran; + } + + Q2 = DDD0; + + return Q2; + } +// ++++++++++++++++++++++++++++++++++++++++++ + G4double G4ElasticHadrNucleusHE:: + HadronProtonQ2(const G4ParticleDefinition * p, + G4double inLabMom) + { + + hMass = p->GetPDGMass()/GeV; + hMass2 = hMass*hMass; + hLabMomentum = inLabMom; + hLabMomentum2 = hLabMomentum*hLabMomentum; + HadrEnergy = sqrt(hLabMomentum2+hMass2); + + + G4double Rand = G4UniformRand(), Q2=0; + + GetKinematics(p, inLabMom); + + Q2 = GetQ2(Rand); + + return Q2; + } + +// =========================================== + /////////////////////////////////////////////////////////////////// // // diff --git a/source/processes/hadronic/models/coherent_elastic/src/G4HadronElastic.cc b/source/processes/hadronic/models/coherent_elastic/src/G4HadronElastic.cc index 558cba7909..290f483043 100644 --- a/source/processes/hadronic/models/coherent_elastic/src/G4HadronElastic.cc +++ b/source/processes/hadronic/models/coherent_elastic/src/G4HadronElastic.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HadronElastic.cc,v 1.54 2007/05/25 17:50:49 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4HadronElastic.cc,v 1.55 2007/12/10 09:56:01 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Physics model class G4HadronElastic (derived from G4LElastic) @@ -86,7 +86,7 @@ G4HadronElastic::G4HadronElastic(G4ElasticHadrNucleusHE* HModel) verboseLevel= 0; lowEnergyRecoilLimit = 100.*keV; lowEnergyLimitQ = 0.0*GeV; - lowEnergyLimitHE = 1.0*GeV; + lowEnergyLimitHE = DBL_MAX; lowestEnergyLimit= 0.0*keV; plabLowLimit = 20.0*MeV; @@ -187,7 +187,8 @@ G4HadFinalState* G4HadronElastic::ApplyYourself( // S-wave for very low energy if(plab < plabLowLimit) gtype = fSWave; // HE-elastic for energetic projectile mesons - else if(ekin >= lowEnergyLimitHE && theParticle->GetBaryonNumber() == 0) + // else if(ekin >= lowEnergyLimitHE && theParticle->GetBaryonNumber() == 0) + else if(ekin >= lowEnergyLimitHE && (theParticle == thePionPlus || theParticle == thePionMinus)) gtype = fHElastic; } diff --git a/source/processes/hadronic/models/coherent_elastic/src/G4LEnp.cc b/source/processes/hadronic/models/coherent_elastic/src/G4LEnp.cc index 99449ede85..32715b21b8 100644 --- a/source/processes/hadronic/models/coherent_elastic/src/G4LEnp.cc +++ b/source/processes/hadronic/models/coherent_elastic/src/G4LEnp.cc @@ -24,9 +24,11 @@ // ******************************************************************** // - // G4 Low energy model: n-p scattering - // F.W. Jones, L.G. Greeniaus, H.P. Wellisch +// G4 Low energy model: n-p scattering +// F.W. Jones, L.G. Greeniaus, H.P. Wellisch +// 11-OCT-2007 F.W. Jones: removed erroneous code for identity +// exchange of particles. #include "G4LEnp.hh" #include "Randomize.hh" @@ -312,30 +314,14 @@ G4LEnp::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& targetNucleus) << G4endl; } - // charge symmetry.... - if(G4UniformRand()<.5) - { - theParticleChange.SetMomentumChange(newP->GetMomentumDirection()); - theParticleChange.SetEnergyChange(newP->GetKineticEnergy()); - delete newP; - G4DynamicParticle* p1 = new G4DynamicParticle; - p1->SetDefinition(targetParticle->GetDefinition()); - p1->SetMomentum(targetParticle->GetMomentum()); - theParticleChange.AddSecondary(p1); - } - else - { - theParticleChange.SetStatusChange(stopAndKill); - G4DynamicParticle * pA = new G4DynamicParticle; - pA->SetDefinition(targetParticle->GetDefinition()); - pA->SetMomentum(newP->GetMomentum()); - G4DynamicParticle * pB = new G4DynamicParticle; - pB->SetDefinition(newP->GetDefinition()); - pB->SetMomentum(targetParticle->GetMomentum()); - delete newP; - theParticleChange.AddSecondary(pA); - theParticleChange.AddSecondary(pB); - } + theParticleChange.SetMomentumChange(newP->GetMomentumDirection()); + theParticleChange.SetEnergyChange(newP->GetKineticEnergy()); + delete newP; + G4DynamicParticle* p1 = new G4DynamicParticle; + p1->SetDefinition(targetParticle->GetDefinition()); + p1->SetMomentum(targetParticle->GetMomentum()); + theParticleChange.AddSecondary(p1); + return &theParticleChange; } diff --git a/source/processes/hadronic/models/coherent_elastic/src/G4UHadronElasticProcess.cc b/source/processes/hadronic/models/coherent_elastic/src/G4UHadronElasticProcess.cc index 2912b27355..b76a3978ee 100644 --- a/source/processes/hadronic/models/coherent_elastic/src/G4UHadronElasticProcess.cc +++ b/source/processes/hadronic/models/coherent_elastic/src/G4UHadronElasticProcess.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4UHadronElasticProcess.cc,v 1.34 2007/06/14 17:08:27 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4UHadronElasticProcess.cc,v 1.35 2007/11/15 15:53:25 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Geant4 Hadron Elastic Scattering Process -- header file // @@ -118,12 +118,14 @@ G4double G4UHadronElasticProcess::GetMeanFreePath(const G4Track& track, G4double temp = material->GetTemperature(); G4int nelm = material->GetNumberOfElements(); +#ifdef G4VERBOSE if(verboseLevel>1) G4cout << "G4UHadronElasticProcess get mfp for " << theParticle->GetParticleName() << " p(GeV)= " << dp->GetTotalMomentum()/GeV << " in " << material->GetName() << G4endl; +#endif for (G4int i=0; i1) G4cout << "G4UHadronElasticProcess cross(1/mm)= " << cross << " E(MeV)= " << dp->GetKineticEnergy() << " " << theParticle->GetParticleName() << " in " << material->GetName() << G4endl; - if(cross > DBL_MIN) x = 1./cross; +#endif + if(cross > DBL_MIN) x = 1./cross; return x; } @@ -165,11 +170,14 @@ G4double G4UHadronElasticProcess::GetMicroscopicCrossSection( G4int N = G4int(elm->GetN()+0.5) - iz; x = qCManager->GetCrossSection(true,momentum,iz,N,pPDG); xsecH[0] = x; +#ifdef G4VERBOSE if(verboseLevel>1) G4cout << "G4UHadronElasticProcess compute CHIPS CS for Z= " << iz << " N= " << N << " pdg= " << pPDG << " mom(GeV)= " << momentum/GeV << " " << qCManager << G4endl; +#endif + } else { G4double* ab = elm->GetRelativeAbundanceVector(); for(G4int j=0; j1) G4cout << "G4UHadronElasticProcess compute GHAD CS for element " << elm->GetName() << G4endl; +#endif x = store->GetCrossSection(dp, elm, temp); } // NaN finder @@ -211,12 +221,14 @@ G4double G4UHadronElasticProcess::GetMicroscopicCrossSection( x = 0.0; } +#ifdef G4VERBOSE if(verboseLevel>1) G4cout << "G4UHadronElasticProcess cross(mb)= " << x/millibarn << " E(MeV)= " << dp->GetKineticEnergy() << " " << theParticle->GetParticleName() << " in Z= " << iz << G4endl; +#endif return x; } diff --git a/source/processes/hadronic/models/de_excitation/History b/source/processes/hadronic/models/de_excitation/History index f70e3f46d0..eadadacfe1 100644 --- a/source/processes/hadronic/models/de_excitation/History +++ b/source/processes/hadronic/models/de_excitation/History @@ -13,6 +13,70 @@ code and to keep track of all tags. --------------------------------------------------------------- * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- + 15 November 2007 Alex Howard (hadr-deex-V09-00-06) +--------------------------------------------------- +- Added Jose Manuel Quesada's modification to util/src/G4CoulombBarrier.cc in + order to the original Dostrovski's formulation as opposed the modified that + was giving to low values. + + + + 15 November 2007 F Lei (hadr-deex-V09-00-05) +--------------------------------------------------- +- photon_evaporation + bug fix #952. Changes to G4VGammaDeexciation.cc:line 279; + G4NuclearLevelManageer.cc:line 189; + G4ContinuumGammaDeexcitation.cc:line133. + + + 01 November 2007 Dennis Wright (hadr-deex-V09-00-04) +----------------------------------------------------- +- suppressed gamma level file warnings in G4NuclearLevelManager.cc + To turn them on again, set pre-compiler flag + CPPFLAGS += -DGAMMAFILEWARNING + + + 01 October 2007 Alex Howard (hadr-deex-V09-00-03) +--------------------------------------------------- +- Protected Rj (Q_beta) factor against divide by zeroes - occurs occasionally. + Following files were altered: + G4AlphaEvaporationProbability.hh, G4He3EvaporationProbability.hh, + G4DeuteronEvaporationProbability.hh, G4NeutronEvaporationProbability.hh, + G4TritonEvaporationProbability.hh, G4ProtonEvaporationProbability.hh + + + 19 September 2007 Alex Howard (hadr-deex-V09-00-02) +--------------------------------------------------- +- Removed atomic mass number from "gamma factor" within + G4DeuteronEvaporationProbability.cc, G4TritonEvaporationProbability.cc, + G4He3EvaporationProbability.cc, G4AlphaEvaporationProbability.cc + + + 23 August 2007 Alex Howard (hadr-deex-V09-00-01) +----------------------------------------------- +- Removed Coulomb Barrier to beta parameter as it's already included in the + inverse cross-section formula and is introduced in terms of the energy limit + of the integration. +- Introduced missing Rj factor in the following files (evaporation module): + G4EvaporationProbability.cc, G4EvaporationProbability.hh, + G4AlphaEvaporationProbability.hh, G4DeuteronEvaporationProbability.hh, + G4He3EvaporationProbability.hh, G4NeutronEvaporationProbability.hh, + G4ProtonEvaporationProbability.hh, G4TritonEvaporationProbability.hh + + + 28 July 2007 Alex Howard (hadr-deex-V09-00-00) +----------------------------------------------- +- Added Coulomb Barrier to Beta parameter for inverse channel +cross-section. Needs verification. Required additions and changes to the +following files: +G4EvaporationProbability.hh, G4EvaporationProbability.cc, +G4AlphaEvaporationProbability.hh, G4DeuteronEvaporationProbability.hh, +G4He3EvaporationProbability.hh, G4NeutronEvaporationProbability.hh, +G4ProtonEvaporationProbability.hh, G4TritonEvaporationProbability.hh, +G4AlphaEvaporationProbability.cc, G4DeuteronEvaporationProbability.cc, +G4He3EvaporationProbability.cc, G4NeutronEvaporationProbability.cc, +G4ProtonEvaporationProbability.cc, G4TritonEvaporationProbability.cc + 5 June 2007 Alex Howard (hadr-deex-V08-03-01) ----------------------------------------------- diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4AlphaEvaporationChannel.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4AlphaEvaporationChannel.hh index e3e84e23fb..ac95cb286a 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4AlphaEvaporationChannel.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4AlphaEvaporationChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4AlphaEvaporationChannel.hh,v 1.3 2006/06/29 20:09:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4AlphaEvaporationProbability.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4AlphaEvaporationProbability.hh index 3e5457abf5..fc39b6b10e 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4AlphaEvaporationProbability.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4AlphaEvaporationProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4AlphaEvaporationProbability.hh,v 1.3 2006/06/29 20:09:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4DeuteronEvaporationChannel.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4DeuteronEvaporationChannel.hh index fa5620d9e1..6c00ff6b42 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4DeuteronEvaporationChannel.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4DeuteronEvaporationChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4DeuteronEvaporationChannel.hh,v 1.3 2006/06/29 20:09:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4DeuteronEvaporationProbability.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4DeuteronEvaporationProbability.hh index 9fa61c5296..c484bdc8b4 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4DeuteronEvaporationProbability.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4DeuteronEvaporationProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4DeuteronEvaporationProbability.hh,v 1.3 2006/06/29 20:09:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4Evaporation.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4Evaporation.hh index 94747eb3d8..58ff75df2a 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4Evaporation.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4Evaporation.hh @@ -25,7 +25,7 @@ // // // $Id: G4Evaporation.hh,v 1.4 2007/02/14 13:37:49 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4EvaporationChannel.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4EvaporationChannel.hh index cab6ae3e55..75b27626b6 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4EvaporationChannel.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4EvaporationChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4EvaporationChannel.hh,v 1.3 2006/06/29 20:09:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4EvaporationFactory.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4EvaporationFactory.hh index 480f5ee025..6ab3a8baa3 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4EvaporationFactory.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4EvaporationFactory.hh @@ -25,7 +25,7 @@ // // // $Id: G4EvaporationFactory.hh,v 1.3 2006/06/29 20:09:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4EvaporationProbability.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4EvaporationProbability.hh index 33577f932c..aaf8cd0ad9 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4EvaporationProbability.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4EvaporationProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4EvaporationProbability.hh,v 1.3 2006/06/29 20:09:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4He3EvaporationChannel.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4He3EvaporationChannel.hh index b44c1ad1ed..cb471abdf9 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4He3EvaporationChannel.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4He3EvaporationChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4He3EvaporationChannel.hh,v 1.3 2006/06/29 20:09:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4He3EvaporationProbability.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4He3EvaporationProbability.hh index 75ba7941e9..f7792e38ae 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4He3EvaporationProbability.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4He3EvaporationProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4He3EvaporationProbability.hh,v 1.3 2006/06/29 20:10:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4NeutronEvaporationChannel.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4NeutronEvaporationChannel.hh index 93b12e155f..2ee956f59a 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4NeutronEvaporationChannel.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4NeutronEvaporationChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronEvaporationChannel.hh,v 1.3 2006/06/29 20:10:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4NeutronEvaporationProbability.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4NeutronEvaporationProbability.hh index cc9110b32d..1f6c4c24f3 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4NeutronEvaporationProbability.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4NeutronEvaporationProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronEvaporationProbability.hh,v 1.4 2006/06/29 20:10:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4ProtonEvaporationChannel.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4ProtonEvaporationChannel.hh index 6a2e3633ec..28e98184ce 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4ProtonEvaporationChannel.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4ProtonEvaporationChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProtonEvaporationChannel.hh,v 1.3 2006/06/29 20:10:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4ProtonEvaporationProbability.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4ProtonEvaporationProbability.hh index b231386481..b119828277 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4ProtonEvaporationProbability.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4ProtonEvaporationProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProtonEvaporationProbability.hh,v 1.3 2006/06/29 20:10:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4TritonEvaporationChannel.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4TritonEvaporationChannel.hh index ec10949737..b594219fee 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4TritonEvaporationChannel.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4TritonEvaporationChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4TritonEvaporationChannel.hh,v 1.3 2006/06/29 20:10:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4TritonEvaporationProbability.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4TritonEvaporationProbability.hh index e022a67cb1..6c5cfc8f55 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4TritonEvaporationProbability.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4TritonEvaporationProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4TritonEvaporationProbability.hh,v 1.3 2006/06/29 20:10:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/include/G4VEvaporation.hh b/source/processes/hadronic/models/de_excitation/evaporation/include/G4VEvaporation.hh index 39890be2c7..2d70beeedc 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/include/G4VEvaporation.hh +++ b/source/processes/hadronic/models/de_excitation/evaporation/include/G4VEvaporation.hh @@ -25,7 +25,7 @@ // // // $Id: G4VEvaporation.hh,v 1.3 2006/06/29 20:10:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) written from G4Evaporation.hh (May 1998) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4AlphaEvaporationChannel.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4AlphaEvaporationChannel.cc index f9e98650f4..919d59875b 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4AlphaEvaporationChannel.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4AlphaEvaporationChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4AlphaEvaporationChannel.cc,v 1.4 2006/06/29 20:10:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4AlphaEvaporationProbability.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4AlphaEvaporationProbability.cc index 6b331f08f8..fb9a2e3e04 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4AlphaEvaporationProbability.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4AlphaEvaporationProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4AlphaEvaporationProbability.cc,v 1.4 2006/06/29 20:10:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4DeuteronEvaporationChannel.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4DeuteronEvaporationChannel.cc index f36e57c243..be10faa4b7 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4DeuteronEvaporationChannel.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4DeuteronEvaporationChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4DeuteronEvaporationChannel.cc,v 1.4 2006/06/29 20:10:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4DeuteronEvaporationProbability.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4DeuteronEvaporationProbability.cc index f659a15d1e..0421be72fb 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4DeuteronEvaporationProbability.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4DeuteronEvaporationProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4DeuteronEvaporationProbability.cc,v 1.4 2006/06/29 20:10:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4Evaporation.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4Evaporation.cc index bf02674326..b41dc74383 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4Evaporation.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4Evaporation.cc @@ -25,7 +25,7 @@ // // // $Id: G4Evaporation.cc,v 1.7 2007/02/14 13:37:49 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4EvaporationChannel.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4EvaporationChannel.cc index 980e9a940d..11d8411584 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4EvaporationChannel.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4EvaporationChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4EvaporationChannel.cc,v 1.5 2006/06/29 20:10:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4EvaporationFactory.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4EvaporationFactory.cc index 7ea7141543..b853c117cb 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4EvaporationFactory.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4EvaporationFactory.cc @@ -25,7 +25,7 @@ // // // $Id: G4EvaporationFactory.cc,v 1.4 2006/06/29 20:10:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4EvaporationProbability.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4EvaporationProbability.cc index 162f25e416..f0202b16c6 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4EvaporationProbability.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4EvaporationProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4EvaporationProbability.cc,v 1.5 2006/06/29 20:10:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4He3EvaporationChannel.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4He3EvaporationChannel.cc index 1662e84e71..fa9bb358d8 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4He3EvaporationChannel.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4He3EvaporationChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4He3EvaporationChannel.cc,v 1.4 2006/06/29 20:10:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4He3EvaporationProbability.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4He3EvaporationProbability.cc index cc2b94b3f9..3b0be7607f 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4He3EvaporationProbability.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4He3EvaporationProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4He3EvaporationProbability.cc,v 1.4 2006/06/29 20:10:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4NeutronEvaporationChannel.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4NeutronEvaporationChannel.cc index f5ca1503fd..c2437ab1f4 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4NeutronEvaporationChannel.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4NeutronEvaporationChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4NeutronEvaporationChannel.cc,v 1.4 2006/06/29 20:10:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4NeutronEvaporationProbability.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4NeutronEvaporationProbability.cc index 1647d7d299..f824a6efbc 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4NeutronEvaporationProbability.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4NeutronEvaporationProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4NeutronEvaporationProbability.cc,v 1.4 2006/06/29 20:10:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4ProtonEvaporationChannel.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4ProtonEvaporationChannel.cc index 57540a18b5..0449628b8f 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4ProtonEvaporationChannel.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4ProtonEvaporationChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProtonEvaporationChannel.cc,v 1.4 2006/06/29 20:10:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4ProtonEvaporationProbability.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4ProtonEvaporationProbability.cc index 942d067396..676c88c9d5 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4ProtonEvaporationProbability.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4ProtonEvaporationProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProtonEvaporationProbability.cc,v 1.4 2006/06/29 20:10:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4TritonEvaporationChannel.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4TritonEvaporationChannel.cc index c03f02483c..54a1916933 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4TritonEvaporationChannel.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4TritonEvaporationChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4TritonEvaporationChannel.cc,v 1.4 2006/06/29 20:10:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4TritonEvaporationProbability.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4TritonEvaporationProbability.cc index 6faa397917..d89917ddaf 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4TritonEvaporationProbability.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4TritonEvaporationProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4TritonEvaporationProbability.cc,v 1.4 2006/06/29 20:10:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/evaporation/src/G4VEvaporation.cc b/source/processes/hadronic/models/de_excitation/evaporation/src/G4VEvaporation.cc index fb5e08021c..d2f69b18bb 100644 --- a/source/processes/hadronic/models/de_excitation/evaporation/src/G4VEvaporation.cc +++ b/source/processes/hadronic/models/de_excitation/evaporation/src/G4VEvaporation.cc @@ -25,7 +25,7 @@ // // // $Id: G4VEvaporation.cc,v 1.5 2006/06/29 20:10:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) writen from G4Evaporation.cc (May 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4B9FermiFragment.hh b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4B9FermiFragment.hh index c3d32f1759..cc09f9d0da 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4B9FermiFragment.hh +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4B9FermiFragment.hh @@ -25,7 +25,7 @@ // // // $Id: G4B9FermiFragment.hh,v 1.3 2006/06/29 20:10:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4Be8FermiFragment.hh b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4Be8FermiFragment.hh index f07d5a1fd1..8b9675bfe8 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4Be8FermiFragment.hh +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4Be8FermiFragment.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be8FermiFragment.hh,v 1.3 2006/06/29 20:10:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiBreakUp.hh b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiBreakUp.hh index c42dce803d..2032b7edff 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiBreakUp.hh +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiBreakUp.hh @@ -25,7 +25,7 @@ // // // $Id: G4FermiBreakUp.hh,v 1.3 2006/06/29 20:11:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiConfiguration.hh b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiConfiguration.hh index 645b60d4a2..bc9ef327d9 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiConfiguration.hh +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiConfiguration.hh @@ -25,7 +25,7 @@ // // // $Id: G4FermiConfiguration.hh,v 1.4 2006/06/29 20:11:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiConfigurationList.hh b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiConfigurationList.hh index 3ba20ac751..5a67a3ca6f 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiConfigurationList.hh +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4FermiConfigurationList.hh @@ -25,7 +25,7 @@ // // // $Id: G4FermiConfigurationList.hh,v 1.5 2006/06/29 20:12:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4He5FermiFragment.hh b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4He5FermiFragment.hh index ce2fecba6d..0c1f270cb1 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4He5FermiFragment.hh +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4He5FermiFragment.hh @@ -25,7 +25,7 @@ // // // $Id: G4He5FermiFragment.hh,v 1.3 2006/06/29 20:12:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4Li5FermiFragment.hh b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4Li5FermiFragment.hh index 73b2f12c35..7a525113da 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4Li5FermiFragment.hh +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4Li5FermiFragment.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li5FermiFragment.hh,v 1.3 2006/06/29 20:12:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4StableFermiFragment.hh b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4StableFermiFragment.hh index d55d8693f0..f187fd113e 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4StableFermiFragment.hh +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4StableFermiFragment.hh @@ -25,7 +25,7 @@ // // // $Id: G4StableFermiFragment.hh,v 1.3 2006/06/29 20:12:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4UnstableFermiFragment.hh b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4UnstableFermiFragment.hh index b829da4846..377b8bf7bb 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4UnstableFermiFragment.hh +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4UnstableFermiFragment.hh @@ -25,7 +25,7 @@ // // // $Id: G4UnstableFermiFragment.hh,v 1.3 2006/06/29 20:12:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4VFermiBreakUp.hh b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4VFermiBreakUp.hh index 92bcd645f2..7d2ae0da3c 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4VFermiBreakUp.hh +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4VFermiBreakUp.hh @@ -25,7 +25,7 @@ // // // $Id: G4VFermiBreakUp.hh,v 1.3 2006/06/29 20:12:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4VFermiFragment.hh b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4VFermiFragment.hh index f33bc3452f..bb7f568c4b 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4VFermiFragment.hh +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/include/G4VFermiFragment.hh @@ -25,7 +25,7 @@ // // // $Id: G4VFermiFragment.hh,v 1.3 2006/06/29 20:12:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4B9FermiFragment.cc b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4B9FermiFragment.cc index 7598eafdaf..795f3f8a64 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4B9FermiFragment.cc +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4B9FermiFragment.cc @@ -25,7 +25,7 @@ // // // $Id: G4B9FermiFragment.cc,v 1.7 2006/06/29 20:12:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4Be8FermiFragment.cc b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4Be8FermiFragment.cc index f1cadba2de..b76e49c23e 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4Be8FermiFragment.cc +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4Be8FermiFragment.cc @@ -25,7 +25,7 @@ // // // $Id: G4Be8FermiFragment.cc,v 1.7 2006/06/29 20:12:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4FermiConfiguration.cc b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4FermiConfiguration.cc index dfbfb38d5e..1064cb6005 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4FermiConfiguration.cc +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4FermiConfiguration.cc @@ -25,7 +25,7 @@ // // // $Id: G4FermiConfiguration.cc,v 1.9 2006/06/29 20:12:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4He5FermiFragment.cc b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4He5FermiFragment.cc index 37d2e57bfd..52a8211a60 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4He5FermiFragment.cc +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4He5FermiFragment.cc @@ -25,7 +25,7 @@ // // // $Id: G4He5FermiFragment.cc,v 1.7 2006/06/29 20:13:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4Li5FermiFragment.cc b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4Li5FermiFragment.cc index 91d35fb802..df778f8c37 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4Li5FermiFragment.cc +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4Li5FermiFragment.cc @@ -25,7 +25,7 @@ // // // $Id: G4Li5FermiFragment.cc,v 1.7 2006/06/29 20:13:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4StableFermiFragment.cc b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4StableFermiFragment.cc index d6104b4932..654a5fedfe 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4StableFermiFragment.cc +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4StableFermiFragment.cc @@ -25,7 +25,7 @@ // // // $Id: G4StableFermiFragment.cc,v 1.5 2006/06/29 20:13:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4UnstableFermiFragment.cc b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4UnstableFermiFragment.cc index 32cafe1415..746a3a7e5a 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4UnstableFermiFragment.cc +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4UnstableFermiFragment.cc @@ -25,7 +25,7 @@ // // // $Id: G4UnstableFermiFragment.cc,v 1.8 2006/06/29 20:13:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4VFermiBreakUp.cc b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4VFermiBreakUp.cc index baab1e2ef0..84d440e0c1 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4VFermiBreakUp.cc +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4VFermiBreakUp.cc @@ -25,7 +25,7 @@ // // // $Id: G4VFermiBreakUp.cc,v 1.5 2006/06/29 20:13:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4VFermiFragment.cc b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4VFermiFragment.cc index ad5c011cea..64edb99097 100644 --- a/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4VFermiFragment.cc +++ b/source/processes/hadronic/models/de_excitation/fermi_breakup/src/G4VFermiFragment.cc @@ -25,7 +25,7 @@ // // // $Id: G4VFermiFragment.cc,v 1.5 2006/06/29 20:13:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/fission/include/G4CompetitiveFission.hh b/source/processes/hadronic/models/de_excitation/fission/include/G4CompetitiveFission.hh index 4aa9497633..709d2b0ab3 100644 --- a/source/processes/hadronic/models/de_excitation/fission/include/G4CompetitiveFission.hh +++ b/source/processes/hadronic/models/de_excitation/fission/include/G4CompetitiveFission.hh @@ -25,7 +25,7 @@ // // // $Id: G4CompetitiveFission.hh,v 1.3 2006/06/29 20:13:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/fission/include/G4FissionBarrier.hh b/source/processes/hadronic/models/de_excitation/fission/include/G4FissionBarrier.hh index 0e20b5b486..347083018f 100644 --- a/source/processes/hadronic/models/de_excitation/fission/include/G4FissionBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/fission/include/G4FissionBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4FissionBarrier.hh,v 1.3 2006/06/29 20:13:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/fission/include/G4FissionLevelDensityParameter.hh b/source/processes/hadronic/models/de_excitation/fission/include/G4FissionLevelDensityParameter.hh index 95e3bb3d1b..f80e36d61e 100644 --- a/source/processes/hadronic/models/de_excitation/fission/include/G4FissionLevelDensityParameter.hh +++ b/source/processes/hadronic/models/de_excitation/fission/include/G4FissionLevelDensityParameter.hh @@ -25,7 +25,7 @@ // // // $Id: G4FissionLevelDensityParameter.hh,v 1.3 2006/06/29 20:13:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/fission/include/G4FissionParameters.hh b/source/processes/hadronic/models/de_excitation/fission/include/G4FissionParameters.hh index 577ac9e826..f3251bb682 100644 --- a/source/processes/hadronic/models/de_excitation/fission/include/G4FissionParameters.hh +++ b/source/processes/hadronic/models/de_excitation/fission/include/G4FissionParameters.hh @@ -25,7 +25,7 @@ // // // $Id: G4FissionParameters.hh,v 1.3 2006/06/29 20:13:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/fission/include/G4FissionProbability.hh b/source/processes/hadronic/models/de_excitation/fission/include/G4FissionProbability.hh index 7059438880..3b2056af48 100644 --- a/source/processes/hadronic/models/de_excitation/fission/include/G4FissionProbability.hh +++ b/source/processes/hadronic/models/de_excitation/fission/include/G4FissionProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4FissionProbability.hh,v 1.3 2006/06/29 20:13:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/fission/include/G4VFissionBarrier.hh b/source/processes/hadronic/models/de_excitation/fission/include/G4VFissionBarrier.hh index ce78b81041..f67971b61a 100644 --- a/source/processes/hadronic/models/de_excitation/fission/include/G4VFissionBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/fission/include/G4VFissionBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4VFissionBarrier.hh,v 1.4 2006/06/29 20:13:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/fission/src/G4CompetitiveFission.cc b/source/processes/hadronic/models/de_excitation/fission/src/G4CompetitiveFission.cc index 29e38e02ec..d38521acc2 100644 --- a/source/processes/hadronic/models/de_excitation/fission/src/G4CompetitiveFission.cc +++ b/source/processes/hadronic/models/de_excitation/fission/src/G4CompetitiveFission.cc @@ -25,7 +25,7 @@ // // // $Id: G4CompetitiveFission.cc,v 1.5 2006/06/29 20:13:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/fission/src/G4FissionBarrier.cc b/source/processes/hadronic/models/de_excitation/fission/src/G4FissionBarrier.cc index fe57220c4c..bdfaa8907a 100644 --- a/source/processes/hadronic/models/de_excitation/fission/src/G4FissionBarrier.cc +++ b/source/processes/hadronic/models/de_excitation/fission/src/G4FissionBarrier.cc @@ -25,7 +25,7 @@ // // // $Id: G4FissionBarrier.cc,v 1.5 2006/06/29 20:13:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/fission/src/G4FissionLevelDensityParameter.cc b/source/processes/hadronic/models/de_excitation/fission/src/G4FissionLevelDensityParameter.cc index e88ceee8f4..72568f071c 100644 --- a/source/processes/hadronic/models/de_excitation/fission/src/G4FissionLevelDensityParameter.cc +++ b/source/processes/hadronic/models/de_excitation/fission/src/G4FissionLevelDensityParameter.cc @@ -25,7 +25,7 @@ // // // $Id: G4FissionLevelDensityParameter.cc,v 1.4 2006/06/29 20:13:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/fission/src/G4FissionParameters.cc b/source/processes/hadronic/models/de_excitation/fission/src/G4FissionParameters.cc index 305badddf6..65f59c3789 100644 --- a/source/processes/hadronic/models/de_excitation/fission/src/G4FissionParameters.cc +++ b/source/processes/hadronic/models/de_excitation/fission/src/G4FissionParameters.cc @@ -25,7 +25,7 @@ // // // $Id: G4FissionParameters.cc,v 1.5 2006/06/29 20:13:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/fission/src/G4FissionProbability.cc b/source/processes/hadronic/models/de_excitation/fission/src/G4FissionProbability.cc index 46569d7d4e..bca5c7da43 100644 --- a/source/processes/hadronic/models/de_excitation/fission/src/G4FissionProbability.cc +++ b/source/processes/hadronic/models/de_excitation/fission/src/G4FissionProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4FissionProbability.cc,v 1.8 2007/02/12 09:39:58 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/fission/src/G4VFissionBarrier.cc b/source/processes/hadronic/models/de_excitation/fission/src/G4VFissionBarrier.cc index 28135247f2..5263872e06 100644 --- a/source/processes/hadronic/models/de_excitation/fission/src/G4VFissionBarrier.cc +++ b/source/processes/hadronic/models/de_excitation/fission/src/G4VFissionBarrier.cc @@ -25,7 +25,7 @@ // // // $Id: G4VFissionBarrier.cc,v 1.4 2006/06/29 20:13:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4AlphaGEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4AlphaGEMChannel.hh index b268738e44..f610eb91b4 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4AlphaGEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4AlphaGEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4AlphaGEMChannel.hh,v 1.3 2006/06/29 20:13:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4AlphaGEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4AlphaGEMProbability.hh index a0932d4c99..495eaf2613 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4AlphaGEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4AlphaGEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4AlphaGEMProbability.hh,v 1.3 2006/06/29 20:13:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B10GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B10GEMChannel.hh index 7cebee22b8..05a130a42d 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B10GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B10GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4B10GEMChannel.hh,v 1.3 2006/06/29 20:13:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B10GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B10GEMCoulombBarrier.hh index 6a3c1b7dc5..7204055af7 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B10GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B10GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4B10GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:13:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B10GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B10GEMProbability.hh index bee9db932a..bad5e589ca 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B10GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B10GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4B10GEMProbability.hh,v 1.3 2006/06/29 20:13:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B11GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B11GEMChannel.hh index a3c1b0ca2e..baf9ca4528 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B11GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B11GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4B11GEMChannel.hh,v 1.3 2006/06/29 20:13:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B11GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B11GEMCoulombBarrier.hh index 5718f9643c..6012ee7553 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B11GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B11GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4B11GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:13:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B11GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B11GEMProbability.hh index c7ca028b7e..ed072c17a9 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B11GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B11GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4B11GEMProbability.hh,v 1.3 2006/06/29 20:14:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B12GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B12GEMChannel.hh index 4dcf353f94..7ab8435f54 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B12GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B12GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4B12GEMChannel.hh,v 1.3 2006/06/29 20:14:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B12GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B12GEMCoulombBarrier.hh index 2d367026a7..0cbe79a01d 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B12GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B12GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4B12GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:14:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B12GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B12GEMProbability.hh index 2c292d1dc4..59e10ffdbb 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B12GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B12GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4B12GEMProbability.hh,v 1.3 2006/06/29 20:14:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B13GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B13GEMChannel.hh index da6bc6b1a7..739e345b04 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B13GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B13GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4B13GEMChannel.hh,v 1.3 2006/06/29 20:14:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B13GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B13GEMCoulombBarrier.hh index 6678caf2fe..751f704998 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B13GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B13GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4B13GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:14:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B13GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B13GEMProbability.hh index 614d2de064..fa78918f6f 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B13GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B13GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4B13GEMProbability.hh,v 1.3 2006/06/29 20:14:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B8GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B8GEMChannel.hh index 150c636eb6..31c5dc6f5b 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B8GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B8GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4B8GEMChannel.hh,v 1.3 2006/06/29 20:14:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B8GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B8GEMCoulombBarrier.hh index bfef766a19..cae969ef64 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B8GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B8GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4B8GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:14:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B8GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B8GEMProbability.hh index df52a8a7ce..828cdde4af 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B8GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4B8GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4B8GEMProbability.hh,v 1.3 2006/06/29 20:14:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be10GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be10GEMChannel.hh index 7f7ff75741..2ac0c19a4b 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be10GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be10GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be10GEMChannel.hh,v 1.3 2006/06/29 20:14:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be10GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be10GEMCoulombBarrier.hh index 14df0dd861..5a2fbcf46a 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be10GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be10GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be10GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:14:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be10GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be10GEMProbability.hh index 25297ca4b9..760443f0af 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be10GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be10GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be10GEMProbability.hh,v 1.3 2006/06/29 20:14:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be11GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be11GEMChannel.hh index fb9143d3a4..d5f02a1e45 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be11GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be11GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be11GEMChannel.hh,v 1.3 2006/06/29 20:14:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be11GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be11GEMCoulombBarrier.hh index c3087691f7..1bb20385d9 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be11GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be11GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be11GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:14:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be11GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be11GEMProbability.hh index 495c2b6252..aebdd79514 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be11GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be11GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be11GEMProbability.hh,v 1.3 2006/06/29 20:14:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be12GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be12GEMChannel.hh index 31517e1c25..bfcfb1b025 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be12GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be12GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be12GEMChannel.hh,v 1.3 2006/06/29 20:14:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be12GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be12GEMCoulombBarrier.hh index 476c854ee6..18c6142b46 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be12GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be12GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be12GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:14:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be12GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be12GEMProbability.hh index 9040d71dda..746eaaa327 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be12GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be12GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be12GEMProbability.hh,v 1.3 2006/06/29 20:14:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be7GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be7GEMChannel.hh index a7a4ad5e38..b1c977f5ce 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be7GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be7GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be7GEMChannel.hh,v 1.3 2006/06/29 20:14:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be7GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be7GEMCoulombBarrier.hh index 2620867d42..bddda3a9c1 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be7GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be7GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be7GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:14:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be7GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be7GEMProbability.hh index 4ae45783a5..a08a83d70e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be7GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be7GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be7GEMProbability.hh,v 1.3 2006/06/29 20:14:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be9GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be9GEMChannel.hh index f2a59a27c9..58167e51e9 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be9GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be9GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be9GEMChannel.hh,v 1.3 2006/06/29 20:14:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be9GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be9GEMCoulombBarrier.hh index d6d815a901..383952817f 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be9GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be9GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be9GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:14:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be9GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be9GEMProbability.hh index 2e95096803..272e96d728 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be9GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Be9GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Be9GEMProbability.hh,v 1.3 2006/06/29 20:14:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C10GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C10GEMChannel.hh index 283ed0f73d..737ff580b4 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C10GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C10GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4C10GEMChannel.hh,v 1.3 2006/06/29 20:14:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C10GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C10GEMCoulombBarrier.hh index 916d6f14fb..a5e906916b 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C10GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C10GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4C10GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:14:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C10GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C10GEMProbability.hh index 33c460833c..beb13ca745 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C10GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C10GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4C10GEMProbability.hh,v 1.3 2006/06/29 20:14:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C11GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C11GEMChannel.hh index 1d0bb1b908..88a5ddc294 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C11GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C11GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4C11GEMChannel.hh,v 1.3 2006/06/29 20:14:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C11GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C11GEMCoulombBarrier.hh index e6a043120f..141c347138 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C11GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C11GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4C11GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:14:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C11GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C11GEMProbability.hh index 6c3d823ee2..4610de5bbe 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C11GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C11GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4C11GEMProbability.hh,v 1.3 2006/06/29 20:15:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C12GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C12GEMChannel.hh index 92c0ee866b..653faffcea 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C12GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C12GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4C12GEMChannel.hh,v 1.3 2006/06/29 20:15:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C12GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C12GEMCoulombBarrier.hh index 45d9956a9c..0b7270851c 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C12GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C12GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4C12GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:15:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C12GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C12GEMProbability.hh index af968e4a31..1031e435cb 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C12GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C12GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4C12GEMProbability.hh,v 1.3 2006/06/29 20:15:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C13GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C13GEMChannel.hh index 3c057caeef..7d133a0476 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C13GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C13GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4C13GEMChannel.hh,v 1.3 2006/06/29 20:15:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C13GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C13GEMCoulombBarrier.hh index 26a5a159b0..88632787a7 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C13GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C13GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4C13GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:15:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C13GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C13GEMProbability.hh index cc37999b0e..43343bcb21 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C13GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C13GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4C13GEMProbability.hh,v 1.3 2006/06/29 20:15:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C14GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C14GEMChannel.hh index 6cf32c3282..b877a6c8c9 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C14GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C14GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4C14GEMChannel.hh,v 1.3 2006/06/29 20:15:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C14GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C14GEMCoulombBarrier.hh index 764a8db9d7..1a3d55f23e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C14GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C14GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4C14GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:15:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C14GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C14GEMProbability.hh index 95d7f9f96b..e7b402a810 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C14GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C14GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4C14GEMProbability.hh,v 1.3 2006/06/29 20:15:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C15GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C15GEMChannel.hh index 3e25354350..89bbada09e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C15GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C15GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4C15GEMChannel.hh,v 1.3 2006/06/29 20:15:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C15GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C15GEMCoulombBarrier.hh index 0833e4c6c9..eb6557663f 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C15GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C15GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4C15GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:15:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C15GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C15GEMProbability.hh index 0dc1549200..b49a9829cb 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C15GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C15GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4C15GEMProbability.hh,v 1.3 2006/06/29 20:15:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C16GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C16GEMChannel.hh index 83b3f3b916..9f80782624 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C16GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C16GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4C16GEMChannel.hh,v 1.3 2006/06/29 20:15:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C16GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C16GEMCoulombBarrier.hh index bf37c221a1..9213aa1351 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C16GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C16GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4C16GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:15:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C16GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C16GEMProbability.hh index d0e30b0591..445ce25509 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C16GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4C16GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4C16GEMProbability.hh,v 1.3 2006/06/29 20:15:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4DeuteronGEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4DeuteronGEMChannel.hh index 4d20b10be1..5f02ca7cc6 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4DeuteronGEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4DeuteronGEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4DeuteronGEMChannel.hh,v 1.3 2006/06/29 20:15:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4DeuteronGEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4DeuteronGEMProbability.hh index a97dc131e4..400a1a9ccf 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4DeuteronGEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4DeuteronGEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4DeuteronGEMProbability.hh,v 1.3 2006/06/29 20:15:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4EvaporationGEMFactory.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4EvaporationGEMFactory.hh index edf4b0f9eb..d415844609 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4EvaporationGEMFactory.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4EvaporationGEMFactory.hh @@ -25,7 +25,7 @@ // // // $Id: G4EvaporationGEMFactory.hh,v 1.5 2006/06/29 20:15:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F17GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F17GEMChannel.hh index 8c6c94118d..ac833e4f88 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F17GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F17GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4F17GEMChannel.hh,v 1.3 2006/06/29 20:15:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F17GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F17GEMCoulombBarrier.hh index b1dddd293f..818a72ff6e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F17GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F17GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4F17GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:15:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F17GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F17GEMProbability.hh index 62a1df4e67..2e37f3c1a6 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F17GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F17GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4F17GEMProbability.hh,v 1.3 2006/06/29 20:15:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F18GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F18GEMChannel.hh index 4f32ee2559..c5c282928d 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F18GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F18GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4F18GEMChannel.hh,v 1.3 2006/06/29 20:15:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F18GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F18GEMCoulombBarrier.hh index 550e2522af..58281c7aac 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F18GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F18GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4F18GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:15:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F18GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F18GEMProbability.hh index 99c6417161..54ed2d6271 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F18GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F18GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4F18GEMProbability.hh,v 1.3 2006/06/29 20:15:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F19GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F19GEMChannel.hh index 5ae5c252e9..705a3157ff 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F19GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F19GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4F19GEMChannel.hh,v 1.3 2006/06/29 20:15:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F19GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F19GEMCoulombBarrier.hh index 8611bd1578..6e8a1b99b3 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F19GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F19GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4F19GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:15:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F19GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F19GEMProbability.hh index 5c4ad994bb..25c99a79bc 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F19GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F19GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4F19GEMProbability.hh,v 1.3 2006/06/29 20:15:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F20GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F20GEMChannel.hh index 753f1f0349..3d35929bb6 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F20GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F20GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4F20GEMChannel.hh,v 1.3 2006/06/29 20:15:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F20GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F20GEMCoulombBarrier.hh index ff5e93088b..09787fa7e4 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F20GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F20GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4F20GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:15:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F20GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F20GEMProbability.hh index f9f70b6912..62ffaed172 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F20GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F20GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4F20GEMProbability.hh,v 1.3 2006/06/29 20:16:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F21GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F21GEMChannel.hh index 8e49f3d461..e7a2f09e0b 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F21GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F21GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4F21GEMChannel.hh,v 1.3 2006/06/29 20:16:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F21GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F21GEMCoulombBarrier.hh index b52bf52f13..48743a3cbd 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F21GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F21GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4F21GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:16:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F21GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F21GEMProbability.hh index 50ef7280e4..ad9d516a3c 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F21GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4F21GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4F21GEMProbability.hh,v 1.3 2006/06/29 20:16:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4GEMChannel.hh index 7ff2960c6e..3444947ae2 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4GEMChannel.hh,v 1.4 2006/06/29 20:16:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4GEMCoulombBarrierHE.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4GEMCoulombBarrierHE.hh index 1e7f76d7a0..258deb0cb1 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4GEMCoulombBarrierHE.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4GEMCoulombBarrierHE.hh @@ -25,7 +25,7 @@ // // // $Id: G4GEMCoulombBarrierHE.hh,v 1.3 2006/06/29 20:16:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He3GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He3GEMChannel.hh index 070c51f764..1392e121f4 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He3GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He3GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4He3GEMChannel.hh,v 1.3 2006/06/29 20:16:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He3GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He3GEMProbability.hh index 17c2b91bc7..a111e7a523 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He3GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He3GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4He3GEMProbability.hh,v 1.3 2006/06/29 20:16:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He6GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He6GEMChannel.hh index 8dd08a0918..da54dc0b3a 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He6GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He6GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4He6GEMChannel.hh,v 1.3 2006/06/29 20:16:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He6GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He6GEMCoulombBarrier.hh index 7bea4fdfa9..8af9cfa776 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He6GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He6GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4He6GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:16:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He6GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He6GEMProbability.hh index a31f98c5bf..95b387c80f 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He6GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He6GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4He6GEMProbability.hh,v 1.3 2006/06/29 20:16:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He8GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He8GEMChannel.hh index edfaf79614..ddf8e79953 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He8GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He8GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4He8GEMChannel.hh,v 1.3 2006/06/29 20:16:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He8GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He8GEMCoulombBarrier.hh index 6b3beb6f25..74d1d022f4 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He8GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He8GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4He8GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:16:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He8GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He8GEMProbability.hh index d99375cad9..37a53ba939 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He8GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4He8GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4He8GEMProbability.hh,v 1.3 2006/06/29 20:16:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li6GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li6GEMChannel.hh index 00b729aafa..3d404f8715 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li6GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li6GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li6GEMChannel.hh,v 1.3 2006/06/29 20:16:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li6GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li6GEMCoulombBarrier.hh index c0a50e99f1..cbd236e8d0 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li6GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li6GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li6GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:16:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li6GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li6GEMProbability.hh index 8d5ac0a1ed..754c5c508b 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li6GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li6GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li6GEMProbability.hh,v 1.3 2006/06/29 20:16:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li7GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li7GEMChannel.hh index abf04c826f..fdf2907f57 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li7GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li7GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li7GEMChannel.hh,v 1.3 2006/06/29 20:16:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li7GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li7GEMCoulombBarrier.hh index d7cbf67fc4..c46536b2b4 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li7GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li7GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li7GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:16:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li7GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li7GEMProbability.hh index 7fe05460f2..c4055d361e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li7GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li7GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li7GEMProbability.hh,v 1.3 2006/06/29 20:16:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li8GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li8GEMChannel.hh index 27e85bbd54..4d829a0565 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li8GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li8GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li8GEMChannel.hh,v 1.3 2006/06/29 20:16:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li8GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li8GEMCoulombBarrier.hh index c76f78cee6..ed70e54aa7 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li8GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li8GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li8GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:16:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li8GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li8GEMProbability.hh index 1a6115de85..aa690e6a5d 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li8GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li8GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li8GEMProbability.hh,v 1.3 2006/06/29 20:16:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li9GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li9GEMChannel.hh index db4edb8671..a7ba5386f6 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li9GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li9GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li9GEMChannel.hh,v 1.3 2006/06/29 20:16:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li9GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li9GEMCoulombBarrier.hh index 307ba90646..0d9108fef0 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li9GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li9GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li9GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:16:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li9GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li9GEMProbability.hh index c9d14e8a7d..4229b5c6e1 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li9GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Li9GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Li9GEMProbability.hh,v 1.3 2006/06/29 20:16:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg22GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg22GEMChannel.hh index 201133445b..5f95ae77b6 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg22GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg22GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg22GEMChannel.hh,v 1.3 2006/06/29 20:16:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg22GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg22GEMCoulombBarrier.hh index de368bc9b5..525d1f0877 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg22GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg22GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg22GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:16:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg22GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg22GEMProbability.hh index 520ca5596b..c9510eb6a3 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg22GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg22GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg22GEMProbability.hh,v 1.3 2006/06/29 20:16:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg23GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg23GEMChannel.hh index aea4ed64ca..b2353b02e2 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg23GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg23GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg23GEMChannel.hh,v 1.3 2006/06/29 20:17:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg23GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg23GEMCoulombBarrier.hh index 708c9c6595..bb0d24472a 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg23GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg23GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg23GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:17:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg23GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg23GEMProbability.hh index 7c51d1666d..0b31dad838 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg23GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg23GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg23GEMProbability.hh,v 1.3 2006/06/29 20:17:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg24GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg24GEMChannel.hh index e1645c6925..f8c043db5d 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg24GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg24GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg24GEMChannel.hh,v 1.3 2006/06/29 20:17:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg24GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg24GEMCoulombBarrier.hh index f05e2b35fe..9d773506dc 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg24GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg24GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg24GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:17:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg24GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg24GEMProbability.hh index 580ca79082..aa6984844b 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg24GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg24GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg24GEMProbability.hh,v 1.3 2006/06/29 20:17:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg25GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg25GEMChannel.hh index f22a5d5556..22fcba1330 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg25GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg25GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg25GEMChannel.hh,v 1.3 2006/06/29 20:17:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg25GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg25GEMCoulombBarrier.hh index 267bc5f8d0..1b3858305f 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg25GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg25GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg25GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:17:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg25GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg25GEMProbability.hh index b194c2f059..72d0570165 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg25GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg25GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg25GEMProbability.hh,v 1.3 2006/06/29 20:17:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg26GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg26GEMChannel.hh index af9ea181f8..6e54132dee 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg26GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg26GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg26GEMChannel.hh,v 1.3 2006/06/29 20:17:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg26GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg26GEMCoulombBarrier.hh index dfdabd0a79..07d3af9311 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg26GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg26GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg26GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:17:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg26GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg26GEMProbability.hh index 8bca613e74..d5d8bb72aa 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg26GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg26GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg26GEMProbability.hh,v 1.3 2006/06/29 20:17:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg27GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg27GEMChannel.hh index 26c71507a0..48db682fac 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg27GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg27GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg27GEMChannel.hh,v 1.3 2006/06/29 20:17:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg27GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg27GEMCoulombBarrier.hh index 0b21a0d674..6e9bcc6d59 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg27GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg27GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg27GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:17:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg27GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg27GEMProbability.hh index bc6a414b6c..f94efa6c99 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg27GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg27GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg27GEMProbability.hh,v 1.3 2006/06/29 20:17:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg28GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg28GEMChannel.hh index ddb166ee2e..60120428b2 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg28GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg28GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg28GEMChannel.hh,v 1.3 2006/06/29 20:17:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg28GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg28GEMCoulombBarrier.hh index a774d367d1..ea4124adbb 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg28GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg28GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg28GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:17:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg28GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg28GEMProbability.hh index 8812bd429b..a6fbb3d63f 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg28GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Mg28GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mg28GEMProbability.hh,v 1.3 2006/06/29 20:17:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N12GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N12GEMChannel.hh index 732ab3b34e..b89beb7d69 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N12GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N12GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4N12GEMChannel.hh,v 1.3 2006/06/29 20:17:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N12GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N12GEMCoulombBarrier.hh index 931c583449..958963b73d 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N12GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N12GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4N12GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:17:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N12GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N12GEMProbability.hh index 9d1ceb3d08..95591d4eee 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N12GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N12GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4N12GEMProbability.hh,v 1.3 2006/06/29 20:17:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N13GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N13GEMChannel.hh index f4201b421c..9f1239195c 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N13GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N13GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4N13GEMChannel.hh,v 1.3 2006/06/29 20:17:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N13GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N13GEMCoulombBarrier.hh index 5dff36773a..4f6ca917c4 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N13GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N13GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4N13GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:17:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N13GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N13GEMProbability.hh index 3f3aed279a..e32012aff8 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N13GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N13GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4N13GEMProbability.hh,v 1.3 2006/06/29 20:17:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N14GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N14GEMChannel.hh index 3b5add4c2a..e5b4d0eb57 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N14GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N14GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4N14GEMChannel.hh,v 1.3 2006/06/29 20:17:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N14GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N14GEMCoulombBarrier.hh index dbb9fe5058..eba03b1944 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N14GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N14GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4N14GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:17:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N14GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N14GEMProbability.hh index dac9045028..4851c20b9c 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N14GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N14GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4N14GEMProbability.hh,v 1.3 2006/06/29 20:17:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N15GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N15GEMChannel.hh index 5b8a4b5cc7..f53555094b 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N15GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N15GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4N15GEMChannel.hh,v 1.3 2006/06/29 20:17:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N15GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N15GEMCoulombBarrier.hh index 59506d397f..eacd1f3b65 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N15GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N15GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4N15GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:17:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N15GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N15GEMProbability.hh index 0024d0f1ac..b764978fdb 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N15GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N15GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4N15GEMProbability.hh,v 1.3 2006/06/29 20:17:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N16GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N16GEMChannel.hh index 766b8d195b..f6a5b9b826 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N16GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N16GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4N16GEMChannel.hh,v 1.3 2006/06/29 20:18:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N16GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N16GEMCoulombBarrier.hh index d73210054e..ecaeb40908 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N16GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N16GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4N16GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:18:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N16GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N16GEMProbability.hh index 75529c2d8d..6c3811b893 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N16GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N16GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4N16GEMProbability.hh,v 1.3 2006/06/29 20:18:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N17GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N17GEMChannel.hh index d2c3b1242b..2ecb505cc8 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N17GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N17GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4N17GEMChannel.hh,v 1.3 2006/06/29 20:18:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N17GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N17GEMCoulombBarrier.hh index b8d2e56229..ad392f3676 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N17GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N17GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4N17GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:18:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N17GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N17GEMProbability.hh index 47b5fe6254..38b062b9ac 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N17GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4N17GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4N17GEMProbability.hh,v 1.3 2006/06/29 20:18:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na21GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na21GEMChannel.hh index 682b2cf9dc..101c90d444 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na21GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na21GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na21GEMChannel.hh,v 1.3 2006/06/29 20:18:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na21GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na21GEMCoulombBarrier.hh index 84c024d735..54910e9ab0 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na21GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na21GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na21GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:18:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na21GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na21GEMProbability.hh index c02956b063..21167ded8c 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na21GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na21GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na21GEMProbability.hh,v 1.3 2006/06/29 20:18:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na22GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na22GEMChannel.hh index 25de76eabf..78a8d51fe5 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na22GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na22GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na22GEMChannel.hh,v 1.3 2006/06/29 20:18:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na22GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na22GEMCoulombBarrier.hh index 4951c177f9..1843266be3 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na22GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na22GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na22GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:18:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na22GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na22GEMProbability.hh index 2e3c2e5af7..98b099a3d5 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na22GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na22GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na22GEMProbability.hh,v 1.3 2006/06/29 20:18:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na23GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na23GEMChannel.hh index 2cbed6652a..dc48482e3b 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na23GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na23GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na23GEMChannel.hh,v 1.3 2006/06/29 20:18:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na23GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na23GEMCoulombBarrier.hh index 04e32975e9..4dcd82f9ed 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na23GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na23GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na23GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:18:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na23GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na23GEMProbability.hh index 5ca0239465..d06b31fd3e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na23GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na23GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na23GEMProbability.hh,v 1.3 2006/06/29 20:18:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na24GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na24GEMChannel.hh index e5559c147a..df337dde01 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na24GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na24GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na24GEMChannel.hh,v 1.3 2006/06/29 20:18:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na24GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na24GEMCoulombBarrier.hh index ba868b3b6f..8a3a7dd747 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na24GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na24GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na24GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:18:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na24GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na24GEMProbability.hh index 57f2864760..8086b6fe10 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na24GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na24GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na24GEMProbability.hh,v 1.3 2006/06/29 20:18:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na25GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na25GEMChannel.hh index ae57d75bca..5899252939 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na25GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na25GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na25GEMChannel.hh,v 1.3 2006/06/29 20:18:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na25GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na25GEMCoulombBarrier.hh index c5e5b3eaf3..12fca93ca1 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na25GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na25GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na25GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:18:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na25GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na25GEMProbability.hh index f8c479ebc2..e2bc3b38ae 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na25GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Na25GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Na25GEMProbability.hh,v 1.3 2006/06/29 20:18:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne18GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne18GEMChannel.hh index 33548ae089..5c604d7a52 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne18GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne18GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne18GEMChannel.hh,v 1.3 2006/06/29 20:18:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne18GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne18GEMCoulombBarrier.hh index 6d8a7c06ee..7e2d9b9f4b 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne18GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne18GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne18GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:18:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne18GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne18GEMProbability.hh index ee47c9527f..aaef921224 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne18GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne18GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne18GEMProbability.hh,v 1.3 2006/06/29 20:18:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne19GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne19GEMChannel.hh index 232afa8dc6..d0ec13a859 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne19GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne19GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne19GEMChannel.hh,v 1.3 2006/06/29 20:18:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne19GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne19GEMCoulombBarrier.hh index abfe48c23c..9766478542 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne19GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne19GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne19GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:18:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne19GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne19GEMProbability.hh index 2b5efc4854..e02dfb3365 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne19GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne19GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne19GEMProbability.hh,v 1.3 2006/06/29 20:18:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne20GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne20GEMChannel.hh index bb09ffd799..db2679654b 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne20GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne20GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne20GEMChannel.hh,v 1.3 2006/06/29 20:18:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne20GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne20GEMCoulombBarrier.hh index 47aee2bb89..575ac5c978 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne20GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne20GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne20GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:18:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne20GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne20GEMProbability.hh index b3cdebb0e7..6e67ee5cf3 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne20GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne20GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne20GEMProbability.hh,v 1.3 2006/06/29 20:18:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne21GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne21GEMChannel.hh index 3f11d09cd8..c933d5f711 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne21GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne21GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne21GEMChannel.hh,v 1.3 2006/06/29 20:19:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne21GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne21GEMCoulombBarrier.hh index 76dc17c6d4..700906ca28 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne21GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne21GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne21GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:19:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne21GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne21GEMProbability.hh index ab5ae8aff4..14b56ddf7e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne21GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne21GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne21GEMProbability.hh,v 1.3 2006/06/29 20:19:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne22GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne22GEMChannel.hh index 8fe1d01a08..3e39825c1e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne22GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne22GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne22GEMChannel.hh,v 1.3 2006/06/29 20:19:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne22GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne22GEMCoulombBarrier.hh index a3ddc79e4f..c9b9c4d901 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne22GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne22GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne22GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:19:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne22GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne22GEMProbability.hh index 67b903ecc1..fb587812e2 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne22GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne22GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne22GEMProbability.hh,v 1.3 2006/06/29 20:19:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne23GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne23GEMChannel.hh index ea7cd29f79..583631a072 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne23GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne23GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne23GEMChannel.hh,v 1.3 2006/06/29 20:19:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne23GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne23GEMCoulombBarrier.hh index a16a1b498f..cbefdd703c 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne23GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne23GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne23GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:19:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne23GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne23GEMProbability.hh index 7f25526ef1..0b865005fd 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne23GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne23GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne23GEMProbability.hh,v 1.3 2006/06/29 20:19:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne24GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne24GEMChannel.hh index 6bbeec0085..184429678b 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne24GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne24GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne24GEMChannel.hh,v 1.3 2006/06/29 20:19:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne24GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne24GEMCoulombBarrier.hh index cfec3cfb5e..65ecf60242 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne24GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne24GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne24GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:19:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne24GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne24GEMProbability.hh index f7b54fb8e4..94c770e52b 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne24GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4Ne24GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4Ne24GEMProbability.hh,v 1.3 2006/06/29 20:19:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4NeutronGEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4NeutronGEMChannel.hh index b4488427e5..1e80bf60a6 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4NeutronGEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4NeutronGEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronGEMChannel.hh,v 1.3 2006/06/29 20:19:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4NeutronGEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4NeutronGEMProbability.hh index fd4df6c248..4c3dcb49ae 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4NeutronGEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4NeutronGEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronGEMProbability.hh,v 1.4 2006/06/29 20:19:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O14GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O14GEMChannel.hh index 0632d5f135..7daa656061 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O14GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O14GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4O14GEMChannel.hh,v 1.3 2006/06/29 20:19:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O14GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O14GEMCoulombBarrier.hh index 484ee185f7..06d66684a8 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O14GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O14GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4O14GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:19:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O14GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O14GEMProbability.hh index 2db77c1701..8a0554d6cf 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O14GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O14GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4O14GEMProbability.hh,v 1.3 2006/06/29 20:19:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O15GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O15GEMChannel.hh index c0f2ea40ff..3e828d6808 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O15GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O15GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4O15GEMChannel.hh,v 1.3 2006/06/29 20:19:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O15GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O15GEMCoulombBarrier.hh index 03a0329c43..9d97fdc213 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O15GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O15GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4O15GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:19:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O15GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O15GEMProbability.hh index 178b7c82f8..8be7c531c2 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O15GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O15GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4O15GEMProbability.hh,v 1.3 2006/06/29 20:19:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O16GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O16GEMChannel.hh index 2e46e2d881..22237f42eb 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O16GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O16GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4O16GEMChannel.hh,v 1.3 2006/06/29 20:19:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O16GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O16GEMCoulombBarrier.hh index 5efcf4edb9..8ecdfcff62 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O16GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O16GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4O16GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:19:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O16GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O16GEMProbability.hh index 3cdfb03ce6..790230d2ee 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O16GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O16GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4O16GEMProbability.hh,v 1.3 2006/06/29 20:19:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O17GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O17GEMChannel.hh index 1e523cc03c..1cfc32243c 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O17GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O17GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4O17GEMChannel.hh,v 1.3 2006/06/29 20:19:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O17GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O17GEMCoulombBarrier.hh index 9eee4d1c15..30a219a5c2 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O17GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O17GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4O17GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:19:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O17GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O17GEMProbability.hh index 684f7d622d..1813ae7cc8 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O17GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O17GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4O17GEMProbability.hh,v 1.3 2006/06/29 20:19:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O18GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O18GEMChannel.hh index ab08487547..90497d888f 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O18GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O18GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4O18GEMChannel.hh,v 1.3 2006/06/29 20:19:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O18GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O18GEMCoulombBarrier.hh index 80eba2ebaf..97e82990e7 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O18GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O18GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4O18GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:19:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O18GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O18GEMProbability.hh index 018159a08b..4cdaa78659 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O18GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O18GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4O18GEMProbability.hh,v 1.3 2006/06/29 20:19:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O19GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O19GEMChannel.hh index 739456e165..ee0a3cfb3e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O19GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O19GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4O19GEMChannel.hh,v 1.3 2006/06/29 20:19:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O19GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O19GEMCoulombBarrier.hh index 0137ed8529..74e046505d 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O19GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O19GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4O19GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:20:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O19GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O19GEMProbability.hh index 12978d85eb..dbd23d2497 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O19GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O19GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4O19GEMProbability.hh,v 1.3 2006/06/29 20:20:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O20GEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O20GEMChannel.hh index 7eab2aa993..cfe8cfc0d5 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O20GEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O20GEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4O20GEMChannel.hh,v 1.3 2006/06/29 20:20:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O20GEMCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O20GEMCoulombBarrier.hh index 4b2309bfed..4bfa58e335 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O20GEMCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O20GEMCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4O20GEMCoulombBarrier.hh,v 1.3 2006/06/29 20:20:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O20GEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O20GEMProbability.hh index 2fb3d1941f..f9f67b83de 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O20GEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4O20GEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4O20GEMProbability.hh,v 1.3 2006/06/29 20:20:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4ProtonGEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4ProtonGEMChannel.hh index d9a796d880..76070f92cd 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4ProtonGEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4ProtonGEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProtonGEMChannel.hh,v 1.3 2006/06/29 20:20:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4ProtonGEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4ProtonGEMProbability.hh index 8cf2fe27ac..2957acc38e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4ProtonGEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4ProtonGEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProtonGEMProbability.hh,v 1.3 2006/06/29 20:20:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4TritonGEMChannel.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4TritonGEMChannel.hh index 47f5b7e9f9..a789e62587 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4TritonGEMChannel.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4TritonGEMChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4TritonGEMChannel.hh,v 1.3 2006/06/29 20:20:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept. 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4TritonGEMProbability.hh b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4TritonGEMProbability.hh index 7266c1e206..0142116f09 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4TritonGEMProbability.hh +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/include/G4TritonGEMProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4TritonGEMProbability.hh,v 1.3 2006/06/29 20:20:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4AlphaGEMChannel.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4AlphaGEMChannel.cc index eb513d9204..146b34aa69 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4AlphaGEMChannel.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4AlphaGEMChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4AlphaGEMChannel.cc,v 1.4 2006/06/29 20:20:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4AlphaGEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4AlphaGEMProbability.cc index 1c24f7e5b2..4044cc7990 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4AlphaGEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4AlphaGEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4AlphaGEMProbability.cc,v 1.4 2006/06/29 20:20:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B10GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B10GEMProbability.cc index 5361e640d0..74c4110c59 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B10GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B10GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4B10GEMProbability.cc,v 1.5 2006/06/29 20:20:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B11GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B11GEMProbability.cc index 90a6ef6aed..a97f27e972 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B11GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B11GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4B11GEMProbability.cc,v 1.5 2006/06/29 20:20:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B12GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B12GEMProbability.cc index f13e70af44..893d282116 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B12GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B12GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4B12GEMProbability.cc,v 1.5 2006/06/29 20:20:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B13GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B13GEMProbability.cc index a885424299..a0d3dd0acf 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B13GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B13GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4B13GEMProbability.cc,v 1.4 2006/06/29 20:20:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B8GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B8GEMProbability.cc index 7a5c2f52f0..aaac32b84d 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B8GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4B8GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4B8GEMProbability.cc,v 1.5 2006/06/29 20:21:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be10GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be10GEMProbability.cc index 6b39d20dcf..c0c6183e29 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be10GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be10GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Be10GEMProbability.cc,v 1.5 2006/06/29 20:21:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be11GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be11GEMProbability.cc index 7d076feebf..f91fe30209 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be11GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be11GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Be11GEMProbability.cc,v 1.5 2006/06/29 20:21:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be12GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be12GEMProbability.cc index ec5e1c5c3c..9f795f5865 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be12GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be12GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Be12GEMProbability.cc,v 1.4 2006/06/29 20:21:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be7GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be7GEMProbability.cc index 559b86a256..9629e93a71 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be7GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be7GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Be7GEMProbability.cc,v 1.5 2006/06/29 20:21:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be9GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be9GEMProbability.cc index 6cd5cf7c84..3008d688b7 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be9GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Be9GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Be9GEMProbability.cc,v 1.5 2006/06/29 20:21:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C10GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C10GEMProbability.cc index df182a791a..c9e220af90 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C10GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C10GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4C10GEMProbability.cc,v 1.5 2006/06/29 20:21:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C11GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C11GEMProbability.cc index b5d340e6b0..f3339c9505 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C11GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C11GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4C11GEMProbability.cc,v 1.5 2006/06/29 20:21:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C12GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C12GEMProbability.cc index 6c4d60f6ab..ed606e9e1f 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C12GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C12GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4C12GEMProbability.cc,v 1.5 2006/06/29 20:21:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C13GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C13GEMProbability.cc index 24f6504366..83fdf00905 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C13GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C13GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4C13GEMProbability.cc,v 1.5 2006/06/29 20:21:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C14GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C14GEMProbability.cc index abc421debd..0addf355a4 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C14GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C14GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4C14GEMProbability.cc,v 1.5 2006/06/29 20:21:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C15GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C15GEMProbability.cc index fab1273c3f..40be630677 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C15GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C15GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4C15GEMProbability.cc,v 1.5 2006/06/29 20:21:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C16GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C16GEMProbability.cc index b6bb0865c7..619138fda3 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C16GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4C16GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4C16GEMProbability.cc,v 1.4 2006/06/29 20:21:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4DeuteronGEMChannel.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4DeuteronGEMChannel.cc index c81bca492f..d242274710 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4DeuteronGEMChannel.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4DeuteronGEMChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4DeuteronGEMChannel.cc,v 1.4 2006/06/29 20:21:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4DeuteronGEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4DeuteronGEMProbability.cc index 75ca586609..e2c9f106c9 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4DeuteronGEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4DeuteronGEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4DeuteronGEMProbability.cc,v 1.4 2006/06/29 20:21:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4EvaporationGEMFactory.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4EvaporationGEMFactory.cc index 17e2c5ec4b..9839c43c99 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4EvaporationGEMFactory.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4EvaporationGEMFactory.cc @@ -25,7 +25,7 @@ // // // $Id: G4EvaporationGEMFactory.cc,v 1.7 2006/06/29 20:21:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F17GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F17GEMProbability.cc index 9b67b23cf5..af847914f2 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F17GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F17GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4F17GEMProbability.cc,v 1.5 2006/06/29 20:21:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F18GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F18GEMProbability.cc index 6ee530e8b3..403a75e432 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F18GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F18GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4F18GEMProbability.cc,v 1.5 2006/06/29 20:21:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F19GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F19GEMProbability.cc index d22d764827..1715d33628 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F19GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F19GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4F19GEMProbability.cc,v 1.5 2006/06/29 20:22:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F20GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F20GEMProbability.cc index a3c68b980c..15827c9e26 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F20GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F20GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4F20GEMProbability.cc,v 1.5 2006/06/29 20:22:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F21GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F21GEMProbability.cc index 65a7e1fa1b..300e2cb908 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F21GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4F21GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4F21GEMProbability.cc,v 1.4 2006/06/29 20:22:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4GEMChannel.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4GEMChannel.cc index d375a299e1..b5db73a78c 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4GEMChannel.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4GEMChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4GEMChannel.cc,v 1.5 2006/06/29 20:22:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4GEMCoulombBarrierHE.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4GEMCoulombBarrierHE.cc index 52a3753f10..50c4e89592 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4GEMCoulombBarrierHE.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4GEMCoulombBarrierHE.cc @@ -25,7 +25,7 @@ // // // $Id: G4GEMCoulombBarrierHE.cc,v 1.6 2006/06/29 20:22:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He3GEMChannel.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He3GEMChannel.cc index 14c146d371..ff3026b328 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He3GEMChannel.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He3GEMChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4He3GEMChannel.cc,v 1.4 2006/06/29 20:22:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He3GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He3GEMProbability.cc index f7216abcdb..0b7d82f0e6 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He3GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He3GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4He3GEMProbability.cc,v 1.4 2006/06/29 20:22:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He6GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He6GEMProbability.cc index 87df98deec..83b05aac10 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He6GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He6GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4He6GEMProbability.cc,v 1.5 2006/06/29 20:22:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He8GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He8GEMProbability.cc index 23a4f4325a..2e2d260fb2 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He8GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4He8GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4He8GEMProbability.cc,v 1.4 2006/06/29 20:22:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li6GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li6GEMProbability.cc index e8288d6cad..4b351453b0 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li6GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li6GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Li6GEMProbability.cc,v 1.5 2006/06/29 20:22:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li7GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li7GEMProbability.cc index c7553169cb..cfa12a457a 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li7GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li7GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Li7GEMProbability.cc,v 1.5 2006/06/29 20:22:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li8GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li8GEMProbability.cc index 04ca26aa02..1027b64235 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li8GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li8GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Li8GEMProbability.cc,v 1.5 2006/06/29 20:22:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li9GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li9GEMProbability.cc index 23f5ca1265..4ad89e744c 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li9GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Li9GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Li9GEMProbability.cc,v 1.5 2006/06/29 20:22:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg22GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg22GEMProbability.cc index 95f9b04a6e..04aa787a75 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg22GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg22GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Mg22GEMProbability.cc,v 1.4 2006/06/29 20:22:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg23GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg23GEMProbability.cc index 260ff82779..554e3a02c8 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg23GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg23GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Mg23GEMProbability.cc,v 1.4 2006/06/29 20:22:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg24GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg24GEMProbability.cc index 24c12c96e2..9e021bfbb3 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg24GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg24GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Mg24GEMProbability.cc,v 1.5 2006/06/29 20:22:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg25GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg25GEMProbability.cc index 02942ca42e..39985cc188 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg25GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg25GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Mg25GEMProbability.cc,v 1.5 2006/06/29 20:22:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg26GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg26GEMProbability.cc index b781b8aae4..9e995e0b19 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg26GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg26GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Mg26GEMProbability.cc,v 1.4 2006/06/29 20:22:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg27GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg27GEMProbability.cc index ccbf5e6ae1..f9ca35b8c8 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg27GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg27GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Mg27GEMProbability.cc,v 1.4 2006/06/29 20:22:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg28GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg28GEMProbability.cc index 8cc91c98c1..97cf3b73df 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg28GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Mg28GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Mg28GEMProbability.cc,v 1.4 2006/06/29 20:22:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N12GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N12GEMProbability.cc index 34af42c673..8a45175ac4 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N12GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N12GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4N12GEMProbability.cc,v 1.5 2006/06/29 20:22:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N13GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N13GEMProbability.cc index 3d4c67f621..8479e00406 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N13GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N13GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4N13GEMProbability.cc,v 1.5 2006/06/29 20:22:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N14GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N14GEMProbability.cc index ea5b43c8f3..a173f767eb 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N14GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N14GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4N14GEMProbability.cc,v 1.5 2006/06/29 20:22:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N15GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N15GEMProbability.cc index fcc5b039e8..62ed1433c5 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N15GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N15GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4N15GEMProbability.cc,v 1.5 2006/06/29 20:22:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N16GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N16GEMProbability.cc index 26790e1a64..5b4d9e126d 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N16GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N16GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4N16GEMProbability.cc,v 1.5 2006/06/29 20:22:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N17GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N17GEMProbability.cc index f5cb8727bb..5e7984ff3e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N17GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4N17GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4N17GEMProbability.cc,v 1.4 2006/06/29 20:22:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na21GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na21GEMProbability.cc index 73328dba1b..fb3e61ab6f 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na21GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na21GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Na21GEMProbability.cc,v 1.5 2006/06/29 20:22:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na22GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na22GEMProbability.cc index 143b726d86..b9e640a4fe 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na22GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na22GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Na22GEMProbability.cc,v 1.5 2006/06/29 20:22:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na23GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na23GEMProbability.cc index a08b00b76c..8f4c5b516e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na23GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na23GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Na23GEMProbability.cc,v 1.5 2006/06/29 20:22:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na24GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na24GEMProbability.cc index eac5ac59b9..8586918d61 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na24GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na24GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Na24GEMProbability.cc,v 1.4 2006/06/29 20:23:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na25GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na25GEMProbability.cc index 1688daa14d..5f29a9bdd3 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na25GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Na25GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Na25GEMProbability.cc,v 1.4 2006/06/29 20:23:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne18GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne18GEMProbability.cc index 0dfd98e6e8..0caa3f7884 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne18GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne18GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Ne18GEMProbability.cc,v 1.5 2006/06/29 20:23:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne19GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne19GEMProbability.cc index 2852aab79d..768e3bbc51 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne19GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne19GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Ne19GEMProbability.cc,v 1.5 2006/06/29 20:23:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne20GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne20GEMProbability.cc index f33ada215e..f4e87bc7b3 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne20GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne20GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Ne20GEMProbability.cc,v 1.5 2006/06/29 20:23:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne21GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne21GEMProbability.cc index 2554fb0312..18928b4db5 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne21GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne21GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Ne21GEMProbability.cc,v 1.5 2006/06/29 20:23:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne22GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne22GEMProbability.cc index d84054f0cb..90cc0d6d5f 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne22GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne22GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Ne22GEMProbability.cc,v 1.4 2006/06/29 20:23:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne23GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne23GEMProbability.cc index f8e897f5ac..93f2c3ae74 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne23GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne23GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Ne23GEMProbability.cc,v 1.4 2006/06/29 20:23:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne24GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne24GEMProbability.cc index b7bb9ba393..aca8e1cc54 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne24GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4Ne24GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4Ne24GEMProbability.cc,v 1.4 2006/06/29 20:23:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4NeutronGEMChannel.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4NeutronGEMChannel.cc index 7ec927ac64..c9f8c21932 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4NeutronGEMChannel.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4NeutronGEMChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4NeutronGEMChannel.cc,v 1.4 2006/06/29 20:23:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4NeutronGEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4NeutronGEMProbability.cc index b19e208377..01182d05c5 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4NeutronGEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4NeutronGEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4NeutronGEMProbability.cc,v 1.4 2006/06/29 20:23:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O14GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O14GEMProbability.cc index c3baad5a55..9df57a7720 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O14GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O14GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4O14GEMProbability.cc,v 1.5 2006/06/29 20:23:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O15GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O15GEMProbability.cc index c27d772a9b..372bd9cc8e 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O15GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O15GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4O15GEMProbability.cc,v 1.5 2006/06/29 20:23:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O16GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O16GEMProbability.cc index 6fa87e03df..b2a65f6dcd 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O16GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O16GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4O16GEMProbability.cc,v 1.5 2006/06/29 20:23:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O17GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O17GEMProbability.cc index 0fa47a58d2..397179a6ec 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O17GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O17GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4O17GEMProbability.cc,v 1.5 2006/06/29 20:23:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O18GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O18GEMProbability.cc index ff4d725c5c..8a37e526c3 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O18GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O18GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4O18GEMProbability.cc,v 1.5 2006/06/29 20:23:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O19GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O19GEMProbability.cc index dca3e791f2..a06b7c2c50 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O19GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O19GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4O19GEMProbability.cc,v 1.5 2006/06/29 20:23:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O20GEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O20GEMProbability.cc index 0ebbfed28c..d15367c631 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O20GEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4O20GEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4O20GEMProbability.cc,v 1.4 2006/06/29 20:23:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4ProtonGEMChannel.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4ProtonGEMChannel.cc index c986e64bf3..9fe7673adf 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4ProtonGEMChannel.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4ProtonGEMChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProtonGEMChannel.cc,v 1.4 2006/06/29 20:23:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4ProtonGEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4ProtonGEMProbability.cc index de09669127..15938d0583 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4ProtonGEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4ProtonGEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProtonGEMProbability.cc,v 1.4 2006/06/29 20:23:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Sept 2001) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4TritonGEMChannel.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4TritonGEMChannel.cc index a06ad381ee..c8277f79ff 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4TritonGEMChannel.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4TritonGEMChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4TritonGEMChannel.cc,v 1.4 2006/06/29 20:23:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4TritonGEMProbability.cc b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4TritonGEMProbability.cc index c4f1bc9552..9ade2bb0e4 100644 --- a/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4TritonGEMProbability.cc +++ b/source/processes/hadronic/models/de_excitation/gem_evaporation/src/G4TritonGEMProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4TritonGEMProbability.cc,v 1.4 2006/06/29 20:23:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/handler/include/G4ExcitationHandler.hh b/source/processes/hadronic/models/de_excitation/handler/include/G4ExcitationHandler.hh index 10ed6840de..67f163ff22 100644 --- a/source/processes/hadronic/models/de_excitation/handler/include/G4ExcitationHandler.hh +++ b/source/processes/hadronic/models/de_excitation/handler/include/G4ExcitationHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4ExcitationHandler.hh,v 1.7 2006/08/19 19:55:59 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (May 1998) diff --git a/source/processes/hadronic/models/de_excitation/management/include/G4VEvaporationChannel.hh b/source/processes/hadronic/models/de_excitation/management/include/G4VEvaporationChannel.hh index 13984fe01e..5648c722fa 100644 --- a/source/processes/hadronic/models/de_excitation/management/include/G4VEvaporationChannel.hh +++ b/source/processes/hadronic/models/de_excitation/management/include/G4VEvaporationChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4VEvaporationChannel.hh,v 1.3 2006/06/29 20:23:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/management/include/G4VEvaporationFactory.hh b/source/processes/hadronic/models/de_excitation/management/include/G4VEvaporationFactory.hh index 96594c122e..6049c0bd92 100644 --- a/source/processes/hadronic/models/de_excitation/management/include/G4VEvaporationFactory.hh +++ b/source/processes/hadronic/models/de_excitation/management/include/G4VEvaporationFactory.hh @@ -25,7 +25,7 @@ // // // $Id: G4VEvaporationFactory.hh,v 1.3 2006/06/29 20:23:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/management/src/G4VEvaporationChannel.cc b/source/processes/hadronic/models/de_excitation/management/src/G4VEvaporationChannel.cc index 4ae9624a3d..f2ee7b5bbe 100644 --- a/source/processes/hadronic/models/de_excitation/management/src/G4VEvaporationChannel.cc +++ b/source/processes/hadronic/models/de_excitation/management/src/G4VEvaporationChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4VEvaporationChannel.cc,v 1.5 2006/06/29 20:23:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/management/src/G4VEvaporationFactory.cc b/source/processes/hadronic/models/de_excitation/management/src/G4VEvaporationFactory.cc index fcb0a9c3a7..3b7e32bbb3 100644 --- a/source/processes/hadronic/models/de_excitation/management/src/G4VEvaporationFactory.cc +++ b/source/processes/hadronic/models/de_excitation/management/src/G4VEvaporationFactory.cc @@ -25,7 +25,7 @@ // // // $Id: G4VEvaporationFactory.cc,v 1.5 2006/06/29 20:23:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4Solver.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4Solver.hh index cc96edb4ab..9bf7ce403b 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4Solver.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4Solver.hh @@ -25,7 +25,7 @@ // // // $Id: G4Solver.hh,v 1.4 2006/06/29 20:23:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMF.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMF.hh index 7811ff64ad..fae3cad86f 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMF.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMF.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMF.hh,v 1.3 2006/06/29 20:24:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFChannel.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFChannel.hh index 86fa0c9184..4d2e618688 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFChannel.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFChannel.hh,v 1.3 2006/06/29 20:24:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFFragment.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFFragment.hh index 39c17877c4..ab10b86fd1 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFFragment.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFFragment.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFFragment.hh,v 1.3 2006/06/29 20:24:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroBiNucleon.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroBiNucleon.hh index 276e76dc4a..8d985fdb57 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroBiNucleon.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroBiNucleon.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroBiNucleon.hh,v 1.3 2006/06/29 20:24:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroChemicalPotential.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroChemicalPotential.hh index a17b4f6377..6b9ff612c6 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroChemicalPotential.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroChemicalPotential.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroChemicalPotential.hh,v 1.3 2006/06/29 20:24:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroMultiNucleon.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroMultiNucleon.hh index 6609b1b81e..2006f4146e 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroMultiNucleon.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroMultiNucleon.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroMultiNucleon.hh,v 1.3 2006/06/29 20:24:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroMultiplicity.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroMultiplicity.hh index 9acc66b2c7..93bd45ffd1 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroMultiplicity.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroMultiplicity.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroMultiplicity.hh,v 1.3 2006/06/29 20:24:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroNucleon.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroNucleon.hh index 0f8508521e..ed3caadb71 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroNucleon.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroNucleon.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroNucleon.hh,v 1.3 2006/06/29 20:24:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroTemperature.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroTemperature.hh index ef56fbe25a..1964df337d 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroTemperature.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroTemperature.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroTemperature.hh,v 1.3 2006/06/29 20:24:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroTetraNucleon.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroTetraNucleon.hh index f406a73fb5..6a82133929 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroTetraNucleon.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroTetraNucleon.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroTetraNucleon.hh,v 1.3 2006/06/29 20:24:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroTriNucleon.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroTriNucleon.hh index f1b8c3b77a..3dad376700 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroTriNucleon.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMacroTriNucleon.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroTriNucleon.hh,v 1.3 2006/06/29 20:24:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMicroCanonical.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMicroCanonical.hh index e61bf826f1..b63872627d 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMicroCanonical.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMicroCanonical.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMicroCanonical.hh,v 1.3 2006/06/29 20:24:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMicroManager.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMicroManager.hh index a41681478f..5fbfe66675 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMicroManager.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMicroManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMicroManager.hh,v 1.3 2006/06/29 20:24:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMicroPartition.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMicroPartition.hh index 1054a93f0c..18d53d308d 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMicroPartition.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFMicroPartition.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMicroPartition.hh,v 1.3 2006/06/29 20:24:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFParameters.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFParameters.hh index 189aa04d12..1a30b79cfb 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFParameters.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4StatMFParameters.hh @@ -25,7 +25,7 @@ // // // $Id: G4StatMFParameters.hh,v 1.3 2006/06/29 20:24:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4VMultiFragmentation.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4VMultiFragmentation.hh index 5f60f12b35..a323d8e7a0 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4VMultiFragmentation.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4VMultiFragmentation.hh @@ -25,7 +25,7 @@ // // // $Id: G4VMultiFragmentation.hh,v 1.3 2006/06/29 20:24:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4VStatMFEnsemble.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4VStatMFEnsemble.hh index 4088aed0c8..57779be3ff 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4VStatMFEnsemble.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4VStatMFEnsemble.hh @@ -25,7 +25,7 @@ // // // $Id: G4VStatMFEnsemble.hh,v 1.3 2006/06/29 20:24:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4VStatMFMacroCluster.hh b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4VStatMFMacroCluster.hh index 58dbe1758c..25b252bd05 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4VStatMFMacroCluster.hh +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/include/G4VStatMFMacroCluster.hh @@ -25,7 +25,7 @@ // // // $Id: G4VStatMFMacroCluster.hh,v 1.5 2006/08/19 19:55:09 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4Solver.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4Solver.cc index 3dcab8cd46..ce1f982461 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4Solver.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4Solver.cc @@ -25,7 +25,7 @@ // // // $Id: G4Solver.cc,v 1.3 2006/06/29 20:24:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMF.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMF.cc index 0891de8dd8..4a5acdf191 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMF.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMF.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMF.cc,v 1.5 2006/06/29 20:24:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFChannel.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFChannel.cc index f21cd80ae3..f124648e56 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFChannel.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFChannel.cc,v 1.6 2006/06/29 20:24:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFFragment.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFFragment.cc index 9722afecbe..765e7adeb3 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFFragment.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFFragment.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFFragment.cc,v 1.6 2006/06/29 20:24:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroBiNucleon.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroBiNucleon.cc index b3c1d96174..8d49b3f8d9 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroBiNucleon.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroBiNucleon.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroBiNucleon.cc,v 1.5 2006/06/29 20:24:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroCanonical.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroCanonical.cc index bdb0978236..da1b9ebd9d 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroCanonical.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroCanonical.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroCanonical.cc,v 1.6 2006/06/29 20:24:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara // -------------------------------------------------------------------- diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroChemicalPotential.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroChemicalPotential.cc index 3c082229fb..df1bd238e9 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroChemicalPotential.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroChemicalPotential.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroChemicalPotential.cc,v 1.5 2006/06/29 20:24:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroMultiNucleon.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroMultiNucleon.cc index aea57fd34e..e333cf28a7 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroMultiNucleon.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroMultiNucleon.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroMultiNucleon.cc,v 1.5 2006/06/29 20:25:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroMultiplicity.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroMultiplicity.cc index ef7463f651..0093afa23e 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroMultiplicity.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroMultiplicity.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroMultiplicity.cc,v 1.5 2006/06/29 20:25:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroNucleon.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroNucleon.cc index 6ec5bfdd9e..7c68bb783c 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroNucleon.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroNucleon.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroNucleon.cc,v 1.5 2006/06/29 20:25:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroTemperature.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroTemperature.cc index 66dd1c2bf9..30ae99edd5 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroTemperature.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroTemperature.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroTemperature.cc,v 1.5 2006/06/29 20:25:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroTetraNucleon.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroTetraNucleon.cc index 1ea0507486..11886a4c4d 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroTetraNucleon.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroTetraNucleon.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroTetraNucleon.cc,v 1.5 2006/06/29 20:25:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroTriNucleon.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroTriNucleon.cc index 768bc7ac8e..86f0c420c6 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroTriNucleon.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMacroTriNucleon.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMacroTriNucleon.cc,v 1.5 2006/06/29 20:25:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMicroCanonical.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMicroCanonical.cc index 9bcdc0cb26..fe8abee246 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMicroCanonical.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMicroCanonical.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMicroCanonical.cc,v 1.6 2006/06/29 20:25:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMicroManager.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMicroManager.cc index 5e15a145ac..59853013ad 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMicroManager.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMicroManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMicroManager.cc,v 1.5 2006/06/29 20:25:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMicroPartition.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMicroPartition.cc index cb39b6522b..603a5c25bf 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMicroPartition.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFMicroPartition.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFMicroPartition.cc,v 1.7 2006/06/29 20:25:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara // -------------------------------------------------------------------- diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFParameters.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFParameters.cc index 17c8a90bbd..3736bf72d3 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFParameters.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4StatMFParameters.cc @@ -25,7 +25,7 @@ // // // $Id: G4StatMFParameters.cc,v 1.4 2006/06/29 20:25:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4VMultiFragmentation.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4VMultiFragmentation.cc index 2eadd2c7a3..6ae45565b0 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4VMultiFragmentation.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4VMultiFragmentation.cc @@ -25,7 +25,7 @@ // // // $Id: G4VMultiFragmentation.cc,v 1.5 2006/06/29 20:25:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4VStatMFEnsemble.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4VStatMFEnsemble.cc index b492d35701..ddccd85908 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4VStatMFEnsemble.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4VStatMFEnsemble.cc @@ -25,7 +25,7 @@ // // // $Id: G4VStatMFEnsemble.cc,v 1.5 2006/06/29 20:25:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4VStatMFMacroCluster.cc b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4VStatMFMacroCluster.cc index b29a6808fe..66079e3335 100644 --- a/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4VStatMFMacroCluster.cc +++ b/source/processes/hadronic/models/de_excitation/multifragmentation/src/G4VStatMFMacroCluster.cc @@ -25,7 +25,7 @@ // // // $Id: G4VStatMFMacroCluster.cc,v 1.4 2006/06/29 20:25:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4ContinuumGammaDeexcitation.cc b/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4ContinuumGammaDeexcitation.cc index e4b2123bac..8d17cba950 100644 --- a/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4ContinuumGammaDeexcitation.cc +++ b/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4ContinuumGammaDeexcitation.cc @@ -129,8 +129,8 @@ G4bool G4ContinuumGammaDeexcitation::CanDoTransition() const << "G4ContinuumGammaDeexcitation::CanDoTransition - Excitation <= 0" << G4endl; } - - if (excitation <= _levelManager->MaxLevelEnergy()) + G4double tolerance = 10*eV; + if (excitation <= (_levelManager->MaxLevelEnergy()+ tolerance)) { canDo = false; if (_verbose > 0) diff --git a/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4NuclearLevelManager.cc b/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4NuclearLevelManager.cc index 62cb076fc1..2bafde1136 100644 --- a/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4NuclearLevelManager.cc +++ b/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4NuclearLevelManager.cc @@ -186,7 +186,7 @@ const G4NuclearLevel* G4NuclearLevelManager::LowestLevel() const G4bool G4NuclearLevelManager::Read(std::ifstream& dataFile) { - const G4double minProbability = 0.001; + const G4double minProbability = 1e-8; G4bool result = true; @@ -258,9 +258,11 @@ void G4NuclearLevelManager::MakeLevels() std::ifstream inFile(_fileName, std::ios::in); if (! inFile) { +#ifdef GAMMAFILEWARNING if (_nucleusZ > 10) G4cout << " G4NuclearLevelManager: nuclide (" << _nucleusZ << "," << _nucleusA << ") does not have a gamma levels file" << G4endl; +#endif return; } diff --git a/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4VGammaDeexcitation.cc b/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4VGammaDeexcitation.cc index 84884ddff1..ad13f5910b 100644 --- a/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4VGammaDeexcitation.cc +++ b/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4VGammaDeexcitation.cc @@ -276,7 +276,11 @@ void G4VGammaDeexcitation::Update() if (_transition != 0) { _transition->SetEnergyFrom(_nucleus.GetExcitationEnergy()); - if ( _vSN != -1) (dynamic_cast (_transition))->SetICM(false); + // if ( _vSN != -1) (dynamic_cast (_transition))->SetICM(false); + // the above line is commented out for bug fix #952. It was intruduced for reason that + // the k-shell electron is most likely one to be kicked out and there is no time for + // the atom to deexcite before the next IC. But this limitation is causing other problems as + // reported in #952 } return; diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4AlphaCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4AlphaCoulombBarrier.hh index 844a361398..39ec7e2b5e 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4AlphaCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4AlphaCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4AlphaCoulombBarrier.hh,v 1.3 2006/06/29 20:27:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertPairingCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertPairingCorrections.hh index 0f170251c7..e1ec04a5cb 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertPairingCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertPairingCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CameronGilbertPairingCorrections.hh,v 1.3 2006/06/29 20:27:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertShellCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertShellCorrections.hh index a2f8d09bb0..7f397ea559 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertShellCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertShellCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CameronGilbertShellCorrections.hh,v 1.3 2006/06/29 20:27:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CameronShellPlusPairingCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CameronShellPlusPairingCorrections.hh index c81a47fac4..ce7dc670d3 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CameronShellPlusPairingCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CameronShellPlusPairingCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CameronShellPlusPairingCorrections.hh,v 1.3 2006/06/29 20:27:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfPairingCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfPairingCorrections.hh index ee8d41eb3a..69ee844c3b 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfPairingCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfPairingCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CameronTruranHilfPairingCorrections.hh,v 1.3 2006/06/29 20:27:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfShellCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfShellCorrections.hh index 5bcab75355..ec54fa0764 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfShellCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfShellCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CameronTruranHilfShellCorrections.hh,v 1.3 2006/06/29 20:27:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4ConstantLevelDensityParameter.hh b/source/processes/hadronic/models/de_excitation/util/include/G4ConstantLevelDensityParameter.hh index bfbc4478db..2754d244c0 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4ConstantLevelDensityParameter.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4ConstantLevelDensityParameter.hh @@ -25,7 +25,7 @@ // // // $Id: G4ConstantLevelDensityParameter.hh,v 1.3 2006/06/29 20:27:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations (photon evaporation) // by C. Dallapiccola (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CookPairingCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CookPairingCorrections.hh index f9a28946dd..1db97b1a82 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CookPairingCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CookPairingCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CookPairingCorrections.hh,v 1.3 2006/06/29 20:27:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CookShellCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CookShellCorrections.hh index a407a737ca..974034205f 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CookShellCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CookShellCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CookShellCorrections.hh,v 1.3 2006/06/29 20:27:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CoulombBarrier.hh index c9f5bf5491..0182e5fd02 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4CoulombBarrier.hh,v 1.4 2006/06/29 20:27:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4DeuteronCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4DeuteronCoulombBarrier.hh index 2d9204902c..ada9d043c9 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4DeuteronCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4DeuteronCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4DeuteronCoulombBarrier.hh,v 1.3 2006/06/29 20:27:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4EvaporationLevelDensityParameter.hh b/source/processes/hadronic/models/de_excitation/util/include/G4EvaporationLevelDensityParameter.hh index 1b39b782b6..de621a7910 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4EvaporationLevelDensityParameter.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4EvaporationLevelDensityParameter.hh @@ -25,7 +25,7 @@ // // // $Id: G4EvaporationLevelDensityParameter.hh,v 1.3 2006/06/29 20:27:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4He3CoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4He3CoulombBarrier.hh index 0929b91a71..f4cabac568 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4He3CoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4He3CoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4He3CoulombBarrier.hh,v 1.3 2006/06/29 20:27:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4NeutronCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4NeutronCoulombBarrier.hh index 3f4eb7e3b2..ca9bcf14db 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4NeutronCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4NeutronCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronCoulombBarrier.hh,v 1.3 2006/06/29 20:27:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4PairingCorrection.hh b/source/processes/hadronic/models/de_excitation/util/include/G4PairingCorrection.hh index 2b346f73cd..ab900a1fef 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4PairingCorrection.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4PairingCorrection.hh @@ -25,7 +25,7 @@ // // // $Id: G4PairingCorrection.hh,v 1.4 2006/06/29 20:27:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4ProtonCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4ProtonCoulombBarrier.hh index b13059e95d..093a004c09 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4ProtonCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4ProtonCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProtonCoulombBarrier.hh,v 1.3 2006/06/29 20:27:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4ShellCorrection.hh b/source/processes/hadronic/models/de_excitation/util/include/G4ShellCorrection.hh index c6787e0018..01730262f8 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4ShellCorrection.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4ShellCorrection.hh @@ -25,7 +25,7 @@ // // // $Id: G4ShellCorrection.hh,v 1.3 2006/06/29 20:27:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4TritonCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4TritonCoulombBarrier.hh index c7e463a5de..e22650745c 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4TritonCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4TritonCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4TritonCoulombBarrier.hh,v 1.3 2006/06/29 20:27:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4VCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4VCoulombBarrier.hh index 02bd3b2b66..ca208b5c51 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4VCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4VCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4VCoulombBarrier.hh,v 1.3 2006/06/29 20:27:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4VEmissionProbability.hh b/source/processes/hadronic/models/de_excitation/util/include/G4VEmissionProbability.hh index f5cf85fc10..f1b0019d6a 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4VEmissionProbability.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4VEmissionProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4VEmissionProbability.hh,v 1.3 2006/06/29 20:27:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4VLevelDensityParameter.hh b/source/processes/hadronic/models/de_excitation/util/include/G4VLevelDensityParameter.hh index 676d2fd79a..bf21e57ce4 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4VLevelDensityParameter.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4VLevelDensityParameter.hh @@ -25,7 +25,7 @@ // // // $Id: G4VLevelDensityParameter.hh,v 1.4 2006/06/29 20:28:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4AlphaCoulombBarrier.cc b/source/processes/hadronic/models/de_excitation/util/src/G4AlphaCoulombBarrier.cc index 842cf18e68..fef6fef320 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4AlphaCoulombBarrier.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4AlphaCoulombBarrier.cc @@ -25,7 +25,7 @@ // // // $Id: G4AlphaCoulombBarrier.cc,v 1.4 2006/06/29 20:28:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertPairingCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertPairingCorrections.cc index 5d7a5178ef..1df2a20916 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertPairingCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertPairingCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CameronGilbertPairingCorrections.cc,v 1.3 2006/06/29 20:28:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertShellCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertShellCorrections.cc index 49b3464e29..3161daaa20 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertShellCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertShellCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CameronGilbertShellCorrections.cc,v 1.3 2006/06/29 20:28:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CameronShellPlusPairingCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CameronShellPlusPairingCorrections.cc index 4ca4acda80..4be931daab 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CameronShellPlusPairingCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CameronShellPlusPairingCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CameronShellPlusPairingCorrections.cc,v 1.3 2006/06/29 20:28:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfPairingCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfPairingCorrections.cc index d45c55a5a6..8757e1e5d9 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfPairingCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfPairingCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CameronTruranHilfPairingCorrections.cc,v 1.3 2006/06/29 20:28:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfShellCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfShellCorrections.cc index 4229816885..e3cbe8dcee 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfShellCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfShellCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CameronTruranHilfShellCorrections.cc,v 1.3 2006/06/29 20:28:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CookPairingCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CookPairingCorrections.cc index 6478d08055..ec6283ca49 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CookPairingCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CookPairingCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CookPairingCorrections.cc,v 1.3 2006/06/29 20:28:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CookShellCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CookShellCorrections.cc index 4420e039bc..dbc3723fa9 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CookShellCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CookShellCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CookShellCorrections.cc,v 1.3 2006/06/29 20:28:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CoulombBarrier.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CoulombBarrier.cc index 2d6c47f7b0..dca2733356 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CoulombBarrier.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CoulombBarrier.cc @@ -24,12 +24,12 @@ // ******************************************************************** // // -// $Id: G4CoulombBarrier.cc,v 1.6 2006/06/29 20:28:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4CoulombBarrier.cc,v 1.7 2007/11/15 17:10:51 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) - +// modified barrier by JMQ (test30) by 14-11-07 #include "G4CoulombBarrier.hh" #include "G4HadronicException.hh" @@ -59,7 +59,7 @@ G4bool G4CoulombBarrier::operator!=(const G4CoulombBarrier & ) const -G4double G4CoulombBarrier::GetCoulombBarrier(const G4int ARes, const G4int ZRes, const G4double U) const +G4double G4CoulombBarrier::GetCoulombBarrier(const G4int ARes, const G4int ZRes, const G4double) const // Calculation of Coulomb potential energy (barrier) for outgoing fragment { G4double Barrier = 0.0; @@ -75,16 +75,34 @@ G4double G4CoulombBarrier::GetCoulombBarrier(const G4int ARes, const G4int ZRes, if (GetA() == 1 && GetZ() == 0) { Barrier = 0.0; // Neutron Coulomb Barrier is 0 } else { - G4double CompoundRadius = CalcCompoundRadius(static_cast(ZRes)); - Barrier = elm_coupling/CompoundRadius * static_cast(GetZ())*static_cast(ZRes)/ - (std::pow(static_cast(GetA()),1./3.) + std::pow(static_cast(ARes),1./3.)); + +// JMQ: old coulomb barrier commented since it does not agree with Dostrovski's prescription +// and too low barriers are obtained (for protons at least) +// calculation of K penetration factor is correct +// G4double CompoundRadius = CalcCompoundRadius(static_cast(ZRes)); +// Barrier = elm_coupling/CompoundRadius * static_cast(GetZ())*static_cast(ZRes)/ +// (std::pow(static_cast(GetA()),1./3.) + std::pow(static_cast(ARes),1./3.)); + +///New coulomb Barrier according to original Dostrovski's paper + G4double rho=1.2*fermi; + if(GetA()==1 && GetZ()==1){ rho=0.0;} + + G4double RN=1.5*fermi; +Barrier=elm_coupling* static_cast(GetZ())*static_cast(ZRes)/(RN*std::pow(static_cast(ARes),1./3.)+rho); // Barrier penetration coeficient G4double K = BarrierPenetrationFactor(ZRes); - + + Barrier *= K; +// + + + - Barrier /= (1.0 + std::sqrt(U/(2.0*static_cast(ARes)))); +// JMQ : the following statement has unknown origin and dimensionally is meaningless( energy divided by mass number in argument of sqrt function). Energy dependence of Coulomb barrier penetrability should be included in proper way (if needed..) +// Barrier /= (1.0 + std::sqrt(U/(2.0*static_cast(ARes)))); +// } return Barrier; } diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4DeuteronCoulombBarrier.cc b/source/processes/hadronic/models/de_excitation/util/src/G4DeuteronCoulombBarrier.cc index 253c850776..dc4840dc60 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4DeuteronCoulombBarrier.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4DeuteronCoulombBarrier.cc @@ -25,7 +25,7 @@ // // // $Id: G4DeuteronCoulombBarrier.cc,v 1.4 2006/06/29 20:28:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4EvaporationLevelDensityParameter.cc b/source/processes/hadronic/models/de_excitation/util/src/G4EvaporationLevelDensityParameter.cc index 8a4262e5e9..da2a5da39b 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4EvaporationLevelDensityParameter.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4EvaporationLevelDensityParameter.cc @@ -25,7 +25,7 @@ // // // $Id: G4EvaporationLevelDensityParameter.cc,v 1.5 2006/06/29 20:28:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4He3CoulombBarrier.cc b/source/processes/hadronic/models/de_excitation/util/src/G4He3CoulombBarrier.cc index 30402393a7..5d3f063fe3 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4He3CoulombBarrier.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4He3CoulombBarrier.cc @@ -25,7 +25,7 @@ // // // $Id: G4He3CoulombBarrier.cc,v 1.4 2006/06/29 20:28:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4NeutronCoulombBarrier.cc b/source/processes/hadronic/models/de_excitation/util/src/G4NeutronCoulombBarrier.cc index 4d73522ad2..b3a772817d 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4NeutronCoulombBarrier.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4NeutronCoulombBarrier.cc @@ -25,7 +25,7 @@ // // // $Id: G4NeutronCoulombBarrier.cc,v 1.4 2006/06/29 20:28:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4PairingCorrection.cc b/source/processes/hadronic/models/de_excitation/util/src/G4PairingCorrection.cc index 801a8d08f9..467b855255 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4PairingCorrection.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4PairingCorrection.cc @@ -25,7 +25,7 @@ // // // $Id: G4PairingCorrection.cc,v 1.3 2006/06/29 20:28:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4ProtonCoulombBarrier.cc b/source/processes/hadronic/models/de_excitation/util/src/G4ProtonCoulombBarrier.cc index 40d19975c6..8575df368e 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4ProtonCoulombBarrier.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4ProtonCoulombBarrier.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProtonCoulombBarrier.cc,v 1.4 2006/06/29 20:28:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4ShellCorrection.cc b/source/processes/hadronic/models/de_excitation/util/src/G4ShellCorrection.cc index 4c016a9847..5477c1ed31 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4ShellCorrection.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4ShellCorrection.cc @@ -25,7 +25,7 @@ // // // $Id: G4ShellCorrection.cc,v 1.3 2006/06/29 20:28:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4TritonCoulombBarrier.cc b/source/processes/hadronic/models/de_excitation/util/src/G4TritonCoulombBarrier.cc index c48fafe6ab..e00bcb991d 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4TritonCoulombBarrier.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4TritonCoulombBarrier.cc @@ -25,7 +25,7 @@ // // // $Id: G4TritonCoulombBarrier.cc,v 1.4 2006/06/29 20:28:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4VCoulombBarrier.cc b/source/processes/hadronic/models/de_excitation/util/src/G4VCoulombBarrier.cc index 72e9fa4a0f..284a5ce838 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4VCoulombBarrier.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4VCoulombBarrier.cc @@ -25,7 +25,7 @@ // // // $Id: G4VCoulombBarrier.cc,v 1.5 2006/06/29 20:28:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4VEmissionProbability.cc b/source/processes/hadronic/models/de_excitation/util/src/G4VEmissionProbability.cc index 7922ee7b99..e9d699b464 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4VEmissionProbability.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4VEmissionProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4VEmissionProbability.cc,v 1.5 2006/06/29 20:28:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4VLevelDensityParameter.cc b/source/processes/hadronic/models/de_excitation/util/src/G4VLevelDensityParameter.cc index 565ab016e0..656b60f65a 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4VLevelDensityParameter.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4VLevelDensityParameter.cc @@ -25,7 +25,7 @@ // // // $Id: G4VLevelDensityParameter.cc,v 1.4 2006/06/29 20:28:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/high_energy/History b/source/processes/hadronic/models/high_energy/History index ff694ae1ef..93542974e8 100644 --- a/source/processes/hadronic/models/high_energy/History +++ b/source/processes/hadronic/models/high_energy/History @@ -14,6 +14,18 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +19 Nov 2007 - Dennis Wright (hadr-hep-V09-00-01) +------------------------------------------------ + G4HEInelastic::TuningOfHighEnergyCascading: fixed incorrect assignment + of leading particle to low energy backward nucleons and fragments. + This bug caused high energy backward particles to be emitted from + high energy collisions. + +11 Oct 2007 - F.W. Jones (hadr-hep-V09-00-00) +--------------------------------------------- + G4HEPionMinusInelastic: fixed incorrect Imax (should be Imin) in + sampling of charge exchange. + 11 April 2007 - Dennis Wright (hadr-hep-V08-02-00) -------------------------------------------------- Add model names to all high energy models in order to complete diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiKaonZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiKaonZeroInelastic.hh index cbe3b0403d..c777810b9e 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiKaonZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiKaonZeroInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiKaonZeroInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiLambdaInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiLambdaInelastic.hh index ef65b24249..da2bcd5349 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiLambdaInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiLambdaInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiLambdaInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiNeutronInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiNeutronInelastic.hh index 7b755c9191..b4137004c1 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiNeutronInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiNeutronInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiNeutronInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiOmegaMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiOmegaMinusInelastic.hh index 28edfcb0d6..ab4d5637d4 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiOmegaMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiOmegaMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiOmegaMinusInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiProtonInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiProtonInelastic.hh index 43bff77eec..8806e5bae2 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiProtonInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiProtonInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiProtonInelastic.hh,v 1.15 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaMinusInelastic.hh index 64d13a4c51..369c8a9055 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiSigmaMinusInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaPlusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaPlusInelastic.hh index 8df9694293..bab9841ba0 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaPlusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaPlusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiSigmaPlusInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaZeroInelastic.hh index 7263882f7d..f90fd3093f 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaZeroInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiSigmaZeroInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiXiMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiXiMinusInelastic.hh index ec9e8fd6b5..779463749d 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiXiMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiXiMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiXiMinusInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiXiZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiXiZeroInelastic.hh index f95d98e429..339b7ed6d4 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiXiZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiXiZeroInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiXiZeroInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEInelastic.hh index f8d2ec4729..6e4d9d16ca 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy (GHE) model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEKaonMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEKaonMinusInelastic.hh index f75a8e7b41..251a212882 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEKaonMinusInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEKaonPlusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEKaonPlusInelastic.hh index 5b860da747..2e40f174c5 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonPlusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonPlusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEKaonPlusInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroInelastic.hh index 8b99b1b80a..feacbe1f2a 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEKaonZeroInelastic.hh,v 1.13 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroLongInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroLongInelastic.hh index 7fd627760c..c0a1b3f63a 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroLongInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroLongInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEKaonZeroLongInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroShortInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroShortInelastic.hh index 3882840023..50729d785e 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroShortInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroShortInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEKaonZeroShortInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HELambdaInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HELambdaInelastic.hh index 4cc1839fd8..1732839b49 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HELambdaInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HELambdaInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HELambdaInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HENeutronInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HENeutronInelastic.hh index 97b8e3f072..074f840e39 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HENeutronInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HENeutronInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HENeutronInelastic.hh,v 1.15 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEOmegaMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEOmegaMinusInelastic.hh index e1c8416da4..12520696c8 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEOmegaMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEOmegaMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEOmegaMinusInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEPionMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEPionMinusInelastic.hh index c273af7b01..3c45c99437 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEPionMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEPionMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEPionMinusInelastic.hh,v 1.15 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEPionPlusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEPionPlusInelastic.hh index 511f5981ea..d580f09ce3 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEPionPlusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEPionPlusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEPionPlusInelastic.hh,v 1.15 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEPlot.hh b/source/processes/hadronic/models/high_energy/include/G4HEPlot.hh index de458bb106..2391832152 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEPlot.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEPlot.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEPlot.hh,v 1.9 2006/06/29 20:29:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha friend class G4HEPlot -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEProtonInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEProtonInelastic.hh index 462ee4f1e9..bc40bdeace 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEProtonInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEProtonInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEProtonInelastic.hh,v 1.15 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HESigmaMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HESigmaMinusInelastic.hh index 014831b6db..0a4e240562 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HESigmaMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HESigmaMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HESigmaMinusInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HESigmaPlusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HESigmaPlusInelastic.hh index 369951ea41..a672f5a4e0 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HESigmaPlusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HESigmaPlusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HESigmaPlusInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HESigmaZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HESigmaZeroInelastic.hh index db59eff281..de6238dd5e 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HESigmaZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HESigmaZeroInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HESigmaZeroInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEVector.hh b/source/processes/hadronic/models/high_energy/include/G4HEVector.hh index 0a106fd0ae..951e1c2d01 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEVector.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEVector.hh,v 1.12 2006/06/29 20:29:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha friend class G4KinematicParticle -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEXiMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEXiMinusInelastic.hh index b0ff4e260c..eff0decc1d 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEXiMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEXiMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEXiMinusInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEXiZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEXiZeroInelastic.hh index 076f28c6d1..f34b1c824a 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEXiZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEXiZeroInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HEXiZeroInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiKaonZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiKaonZeroInelastic.cc index 19b7ce1ac0..a5c9e9c1ec 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiKaonZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiKaonZeroInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiKaonZeroInelastic.cc,v 1.14 2006/06/29 20:29:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiLambdaInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiLambdaInelastic.cc index 0da4083b14..5ab6ce9d1e 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiLambdaInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiLambdaInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiLambdaInelastic.cc,v 1.14 2006/06/29 20:29:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiNeutronInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiNeutronInelastic.cc index 8435275cfc..716b2a78ef 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiNeutronInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiNeutronInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiNeutronInelastic.cc,v 1.14 2006/06/29 20:29:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiOmegaMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiOmegaMinusInelastic.cc index 8a326b27f6..c1789a1120 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiOmegaMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiOmegaMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiOmegaMinusInelastic.cc,v 1.14 2006/06/29 20:30:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiProtonInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiProtonInelastic.cc index 3330087c4e..517dfa3465 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiProtonInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiProtonInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiProtonInelastic.cc,v 1.13 2006/06/29 20:30:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaMinusInelastic.cc index d9c1360c08..f95e38ddda 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiSigmaMinusInelastic.cc,v 1.14 2006/06/29 20:30:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaPlusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaPlusInelastic.cc index 9fd809b8f4..661dd7f9e3 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaPlusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaPlusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiSigmaPlusInelastic.cc,v 1.14 2006/06/29 20:30:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaZeroInelastic.cc index 98aec15cf8..25aea6547c 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaZeroInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiSigmaZeroInelastic.cc,v 1.10 2006/06/29 20:30:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiXiMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiXiMinusInelastic.cc index ea21935274..0a2c3713ba 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiXiMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiXiMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiXiMinusInelastic.cc,v 1.14 2006/06/29 20:30:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiXiZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiXiZeroInelastic.cc index a385e68316..3cb1564233 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiXiZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiXiZeroInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEAntiXiZeroInelastic.cc,v 1.14 2006/06/29 20:30:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEInelastic.cc index 67cf48a9f9..a13c02ab04 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEInelastic.cc @@ -1332,7 +1332,7 @@ G4HEInelastic::HighEnergyCascading(G4bool &successful, G4double cost = Amax(-1., Amin(1., std::log(2.23*G4UniformRand()+0.383)/0.96)); G4double sint = std::sqrt(1. - cost*cost); G4double phi = twopi*G4UniformRand(); - G4double pp = std::sqrt(ekit*(ekit+2*pvMass)); + G4double pp = std::sqrt(ekit*(ekit+2*pv[i].getMass())); pv[i].setMomentum( pp*sint*std::sin(phi), pp*sint*std::cos(phi), pp*cost ); @@ -2038,7 +2038,11 @@ G4HEInelastic::TuningOfHighEnergyCascading( G4HEVector pv[], pv[i].Print(i); } } - if (iphmf != pionZeroCode) + + // Neither pi0s, backward nucleons from intra-nuclear cascade, + // nor evaporation fragments can be leading particles + + if (iphmf != pionZeroCode && pv[i].getSide() > -3) { pvmx[7].Sub3( incidentParticle, pv[i] ); reddec[4] = pvmx[7].Length()/incidentTotalMomentum; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonMinusInelastic.cc index 2501c88ab3..9f714c5880 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEKaonMinusInelastic.cc,v 1.13 2006/06/29 20:30:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonPlusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonPlusInelastic.cc index 2fcc495f43..addeae04a5 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonPlusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonPlusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEKaonPlusInelastic.cc,v 1.13 2006/06/29 20:30:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroInelastic.cc index 6ecfc5437a..773ac64598 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEKaonZeroInelastic.cc,v 1.14 2006/06/29 20:30:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroLongInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroLongInelastic.cc index 47c780dc5a..904aa2e641 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroLongInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroLongInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEKaonZeroLongInelastic.cc,v 1.10 2006/06/29 20:30:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroShortInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroShortInelastic.cc index e05f2eff3f..3dd024db32 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroShortInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroShortInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEKaonZeroShortInelastic.cc,v 1.10 2006/06/29 20:30:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HELambdaInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HELambdaInelastic.cc index 87dc0d6a1e..1ab8702e93 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HELambdaInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HELambdaInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HELambdaInelastic.cc,v 1.14 2006/06/29 20:30:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HENeutronInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HENeutronInelastic.cc index 02bd3e661e..6476b99143 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HENeutronInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HENeutronInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HENeutronInelastic.cc,v 1.14 2006/06/29 20:30:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEOmegaMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEOmegaMinusInelastic.cc index 8eccb12985..8d1bd62cd8 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEOmegaMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEOmegaMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEOmegaMinusInelastic.cc,v 1.14 2006/06/29 20:30:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEPionMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEPionMinusInelastic.cc index 948d5f1bb3..87002d1c2b 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEPionMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEPionMinusInelastic.cc @@ -24,10 +24,12 @@ // ******************************************************************** // // -// $Id: G4HEPionMinusInelastic.cc,v 1.13 2006/06/29 20:30:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// -// +// $Id: G4HEPionMinusInelastic.cc,v 1.14 2007/10/16 19:13:35 fjones Exp $ +// GEANT4 tag $Name: geant4-09-01 $ + +// 11-OCT-2007 F.W. Jones: fixed incorrect Imax (should be Imin) in +// sampling of charge exchange. + #include "globals.hh" #include "G4ios.hh" @@ -312,7 +314,7 @@ G4HEPionMinusInelastic::FirstIntInCasPionMinus( G4bool &inElastic, // suppress high multiplicity events at low momentum // only one additional pion will be produced G4double cech[] = {1., 0.95, 0.79, 0.32, 0.19, 0.16, 0.14, 0.12, 0.10, 0.08}; - G4int iplab = Imax(9, G4int( incidentTotalMomentum*5.)); + G4int iplab = Imin(9, G4int( incidentTotalMomentum*5.)); if( G4UniformRand() < cech[iplab] ) { if( targetCode == protonCode ) diff --git a/source/processes/hadronic/models/high_energy/src/G4HEPionPlusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEPionPlusInelastic.cc index db5c947d07..e8a53b93b6 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEPionPlusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEPionPlusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEPionPlusInelastic.cc,v 1.14 2006/06/29 20:30:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEPlot.cc b/source/processes/hadronic/models/high_energy/src/G4HEPlot.cc index 15b8cd8bc0..78983187e1 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEPlot.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEPlot.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEPlot.cc,v 1.11 2006/06/29 20:30:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEProtonInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEProtonInelastic.cc index 9f5a2ab585..3a87104c94 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEProtonInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEProtonInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEProtonInelastic.cc,v 1.13 2006/06/29 20:30:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HESigmaMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HESigmaMinusInelastic.cc index f8246df464..b5843d8683 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HESigmaMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HESigmaMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HESigmaMinusInelastic.cc,v 1.14 2006/06/29 20:30:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HESigmaPlusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HESigmaPlusInelastic.cc index 7d7333cdfb..3f8d8adbfb 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HESigmaPlusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HESigmaPlusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HESigmaPlusInelastic.cc,v 1.14 2006/06/29 20:30:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HESigmaZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HESigmaZeroInelastic.cc index b8383827a6..7d648cd7f8 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HESigmaZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HESigmaZeroInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HESigmaZeroInelastic.cc,v 1.11 2006/06/29 20:30:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEVector.cc b/source/processes/hadronic/models/high_energy/src/G4HEVector.cc index 71bae68e4c..b38c75facd 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEVector.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEVector.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEVector.cc,v 1.20 2006/11/22 23:52:32 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEXiMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEXiMinusInelastic.cc index 44dc5b8d14..1a922c8331 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEXiMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEXiMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEXiMinusInelastic.cc,v 1.14 2006/06/29 20:30:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEXiZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEXiZeroInelastic.cc index f40fd334a0..81c1e51621 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEXiZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEXiZeroInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4HEXiZeroInelastic.cc,v 1.14 2006/06/29 20:30:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/hadronic/models/im_r_matrix/History b/source/processes/hadronic/models/im_r_matrix/History new file mode 100644 index 0000000000..0f9af16036 --- /dev/null +++ b/source/processes/hadronic/models/im_r_matrix/History @@ -0,0 +1,39 @@ +------------------------------------------------------------------- + + ========================================================== + Geant4 - an Object-Oriented Toolkit for Physics Simulation + ========================================================== + + History file for hadronic/models/im_r_matrix + -------------------------------------------- + +This file should be used to summarize modifications introduced in the +code and to keep track of all tags. + + --------------------------------------------------------------- + * Please list in reverse chronological order (last date on top) + --------------------------------------------------------------- + +15-Nov-2007 Gunter Folger hadr-im_r_V09-00-03 +---------------------------------------------------------------- +- In G4ParticleTypeConverter, remove warning on unknown particle; + occurs for eta_prime, k_star+, anti_... etc. in BiC propagate interface + +03-Oct-2007 Gunter Folger hadr-im_r_V09-00-02 +---------------------------------------------------------------- +- Incorporate change by Dennis for G4CollisionComposite.cc: SUN compiler + warning of hiding variable components. + hadr-im_r_V09-00-01 had many files from head. + +5 Jul 2007 Dennis Wright (hadr-im_r_V09-00-01) +----------------------------------------------- +- G4CollisionComposite.cc : remove duplicate declaration of local variable + "components" to avoid Sun compiler hiding warning + +- use 2006 versions of G4Scatterer.cc and G4CollisionComposite.hh + leave all files named G4CollisionN... at HEAD but not tagged + +- create History file + + + diff --git a/source/processes/hadronic/models/im_r_matrix/include/G4CollisionInitialState.hh b/source/processes/hadronic/models/im_r_matrix/include/G4CollisionInitialState.hh index 74a4ad76e1..8fa727ee6b 100644 --- a/source/processes/hadronic/models/im_r_matrix/include/G4CollisionInitialState.hh +++ b/source/processes/hadronic/models/im_r_matrix/include/G4CollisionInitialState.hh @@ -25,7 +25,7 @@ // // // $Id: G4CollisionInitialState.hh,v 1.4.4.2 2006/06/29 20:31:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: G4CollisionInitialState.hh,v 1.0 1998/06/30 // ----------------------------------------------------------------------------- diff --git a/source/processes/hadronic/models/im_r_matrix/include/G4ListOfCollisions.hh b/source/processes/hadronic/models/im_r_matrix/include/G4ListOfCollisions.hh index fa10d6eefd..14e2bb4c7b 100644 --- a/source/processes/hadronic/models/im_r_matrix/include/G4ListOfCollisions.hh +++ b/source/processes/hadronic/models/im_r_matrix/include/G4ListOfCollisions.hh @@ -25,7 +25,7 @@ // // // $Id: G4ListOfCollisions.hh,v 1.1.4.2 2006/06/29 20:35:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: G4ListOfCollisions.hh,v 1.0 1998/06/30 // ----------------------------------------------------------------------------- diff --git a/source/processes/hadronic/models/im_r_matrix/src/G4CollisionComposite.cc b/source/processes/hadronic/models/im_r_matrix/src/G4CollisionComposite.cc index 42b6e5f0c6..0c0e081ec7 100644 --- a/source/processes/hadronic/models/im_r_matrix/src/G4CollisionComposite.cc +++ b/source/processes/hadronic/models/im_r_matrix/src/G4CollisionComposite.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // -// $Id: G4CollisionComposite.cc,v 1.6 2006/06/29 20:37:18 gunter Exp $ // +// $Id: G4CollisionComposite.cc,v 1.7 2007/07/05 21:43:24 dennis Exp $ // #include "globals.hh" #include "G4CollisionComposite.hh" @@ -121,11 +121,11 @@ G4bool G4CollisionComposite::IsInCharge(const G4KineticTrack& trk1, // The composite is in charge if any of its components is in charge - const G4CollisionVector* components = GetComponents(); - if (components) + const G4CollisionVector* comps = GetComponents(); + if (comps) { G4CollisionVector::const_iterator iter; - for (iter = components->begin(); iter != components->end(); ++iter) + for (iter = comps->begin(); iter != comps->end(); ++iter) { if ( ((*iter))->IsInCharge(trk1,trk2) ) isInCharge = true; } diff --git a/source/processes/hadronic/models/im_r_matrix/src/G4ParticleTypeConverter.cc b/source/processes/hadronic/models/im_r_matrix/src/G4ParticleTypeConverter.cc index f94f748d95..74031fcf64 100644 --- a/source/processes/hadronic/models/im_r_matrix/src/G4ParticleTypeConverter.cc +++ b/source/processes/hadronic/models/im_r_matrix/src/G4ParticleTypeConverter.cc @@ -219,9 +219,9 @@ G4ParticleTypeConverter::GenericType G4ParticleTypeConverter::GetGenericType(con if(defMap[i].first == aParticleDef) return defMap[i].second; } - G4cerr << "Unknown Particle : " << aParticleDef->GetParticleName() << G4endl; +//GF G4cerr << "Unknown Particle : " << aParticleDef->GetParticleName() << G4endl; return UNKNOWN; - throw G4HadronicException(__FILE__, __LINE__, "G4ParticleTypeConverter: unknown particle type!"); +// throw G4HadronicException(__FILE__, __LINE__, "G4ParticleTypeConverter: unknown particle type!"); } diff --git a/source/processes/hadronic/models/incl/GNUmakefile b/source/processes/hadronic/models/incl/GNUmakefile new file mode 100644 index 0000000000..6350d7b164 --- /dev/null +++ b/source/processes/hadronic/models/incl/GNUmakefile @@ -0,0 +1,41 @@ +# $Id: GNUmakefile,v 1.3 2007/10/11 07:25:55 gcosmo Exp $ +# ----------------------------------------------------------- +# GNUmakefile for hadronic library. Gabriele Cosmo, 18/9/96. +# ----------------------------------------------------------- + +name := G4hadronic_incl_cascade + +ifndef G4INSTALL + G4INSTALL = ../../../../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +CPPFLAGS += -I$(G4BASE)/global/management/include \ + -I$(G4BASE)/global/HEPRandom/include \ + -I$(G4BASE)/global/HEPNumerics/include \ + -I$(G4BASE)/global/HEPGeometry/include \ + -I$(G4BASE)/track/include \ + -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/management/include \ + -I$(G4BASE)/processes/management/include \ + -I$(G4BASE)/processes/hadronic/management/include/ \ + -I$(G4BASE)/processes/hadronic/util/include \ + -I$(G4BASE)/processes/hadronic/processes/include \ + -I$(G4BASE)/processes/hadronic/cross_sections/include \ + -I$(G4BASE)/processes/hadronic/models/management/include \ + -I$(G4BASE)/processes/hadronic/models/util/include \ + -I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \ + -I$(G4BASE)/processes/hadronic/models/cascade/utils/include \ + -I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \ + -I$(G4BASE)/particles/management/include \ + -I$(G4BASE)/particles/leptons/include \ + -I$(G4BASE)/particles/bosons/include \ + -I$(G4BASE)/particles/hadrons/mesons/include \ + -I$(G4BASE)/particles/hadrons/barions/include \ + -I$(G4BASE)/particles/hadrons/ions/include \ + -I$(G4BASE)/particles/shortlived/include \ + -I$(G4BASE)/materials/include + +include $(G4INSTALL)/config/common.gmk + diff --git a/source/processes/hadronic/models/incl/History b/source/processes/hadronic/models/incl/History new file mode 100644 index 0000000000..cd84cff144 --- /dev/null +++ b/source/processes/hadronic/models/incl/History @@ -0,0 +1,104 @@ +------------------------------------------------------------------- + + ========================================================== + Geant4 - an Object-Oriented Toolkit for Physics Simulation + ========================================================== +$Id: History,v 1.9 2007/12/04 09:52:49 gcosmo Exp $ +--------------------------------------------------------------------- + + History file for the Liege cascade INCL Model + --------------------------------------------- + +This file should be used to summarize modifications introduced in the +code and to keep track of all tags. + + --------------------------------------------------------------- + * Please list in reverse chronological order (last date on top) + --------------------------------------------------------------- + +04 December 2007 - Gabriele Cosmo (hadr-incl-V09-00-09) +--------------------------------- +- Again commented out call to isnan() in G4Incl.cc for allow + porting to platforms other than Linux.... + +15 November 2007 - Pekka Kaitaniemi +----------------------------------- +- First fix to secondary particle Pt, Px and Phi distributions. + o Momentum x-component was transformed incorrectly from spherical to + cartesian coordinates. + +08 November 2007 - Pekka Kaitaniemi +----------------------------------- +- Started using G4UniformRand as a random number generator. + o It is much more sophisticated generator than the original INCL one + was. + o This should eliminate infinite loop in test runs on 64-bit + plattforms. The old generator probably was not 64-bit clean. + +31 October 2007 - Gabriele Cosmo (hadr-incl-V09-00-05) +-------------------------------- +- Again commented out calls to isnan() and isinf() in G4Abla.cc for allow + porting to platforms other than Linux. + +30 October 2007 - Pekka Kaitaniemi +---------------------------------- +- Abla now runs. Integrated energy spectrums for protons and neutrons + seem to be OK. Isotope production is still problematic. There seems + to be too much fission. + +24 October 2007 - Pekka Kaitaniemi (hadr-incl-V09-00-04) +---------------------------------- +- Modified INCL to filter out unphysical events containing particles + that have more energy than the energy of the projectile. This should + fix problem we had with outcoming neutrons (and protons) that have + more energy than the projectile particle. +- Added G4InclAblaDataFile class that reads data used by INCL/ABLA + from datafiles located in $G4ABLADATA. If this environment variable + is not correctly set INCL/ABLA returns G4Exception. +- Problematic hardcoded data has been removed. + +16 October 2007 - Pekka Kaitaniemi +------------------------------------------------------ +- Silenced the rather verbose output. Now nothing should be printed on + terminal by default. +- Fixed INCL internal random number generator bug that sometimes + (rarely) produced random numbers that were greater than 1.0. +- Random number seeds are now taken from CLHEP::HepRandom. +- Cleaned up some commented code. +- Found new NaN bugs in ABLA. + +13 October 2007 - Pekka Kaitaniemi +------------------------------------------------------ +- Interface cleanup. G4InclCascadeInterface and + G4InclLightIonInterface should be fully operational. +- INCL was reverted back to using simple random number generator for + test result compatibility (to produce exactly same results as the + FORTRAN version does). +- Fixes for ABLA evaporation/fission: + o Fission barrier problem fixed. Now fission code is called during + the run. + o Several NaN bugs fixed. + o Random seed initialization bug fixed. + o Stand-alone INCL/ABLA program (test/standaloneinclabla) mostly + works (produces results that are sometimes in good agreement with + FORTRAN version and sometimes in not so good agreement). With + heavy targets and lots of energy fission is overestimated. + o INCL+ABLA interface not yet fully operational. G4 simulation run + crashes. + +11 October 2007 - Gabriele Cosmo (hadr-incl-V09-00-01) +------------------------------------------------------ +- Fixes for porting: + o Commented out usage of isnan() and isinf() in assertions. + o Replaced usage of M_PI with CLHEP::pi. + o Use std namespace for standard mathematical functions. + o Casted to double arguments used in std::pow() function. + o Commented out initialisation of data in G4InclAblaHardcodedData.cc + for Windows; temporary solution to allow for compilation, pending + solution of loading of data from file ! + +23 May 2007 - Aatos Heikkinen (hadr-incl-V09-00-00) +--------------------------------------------------- +- First version of the Liege cascade INCL Model. + + diff --git a/source/processes/hadronic/models/incl/include/G4Abla.hh b/source/processes/hadronic/models/incl/include/G4Abla.hh new file mode 100644 index 0000000000..ff20d34d1d --- /dev/null +++ b/source/processes/hadronic/models/incl/include/G4Abla.hh @@ -0,0 +1,331 @@ +// +// ******************************************************************** +// * 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: G4Abla.hh,v 1.7 2007/12/03 19:36:05 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +#include "globals.hh" + +#include "G4AblaDataDefs.hh" +#include "G4InclDataDefs.hh" + +/** + * Class containing ABLA de-excitation code. + */ + +class G4Abla { + +public: + /** + * + * We support Doxygen with JavaDoc style. + * + * \author{pekka.kaitaniemi@helsinki.fi} + */ + + /** + * A constructor. + */ + G4Abla(); + + /** + * This constructor is used by standalone test driver and the Geant4 interface. + * + * @param aHazard random seeds + * @param aVolant data structure for ABLA output + * @param aVarNtp data structure for transfering ABLA output to Geant4 interface + */ + G4Abla(G4Hazard *aHazard, G4Volant *aVolant, G4VarNtp *aVarntp); + + /** + * + */ + G4Abla(G4Hazard *hazard, G4Volant *volant); + + /** + * A destructor. + * A more elaborate description of the destructor. + */ + ~G4Abla(); + + /** + * + */ + void setVerboseLevel(G4int level); + + /** + * Main interface to the de-excitation code. + * + * @param nucleusA mass number of the nucleus + * @param nucleusZ charge number of the nucleus + * @param nucleusMass mass of the nucleus + * @param excitationEnergy excitation energy of the nucleus + * @param angularMomentum angular momentum of the nucleus (produced as output by INCL4) + * @param recoilEnergy recoil energy of the nucleus + * @param momX momentum x-component + * @param momY momentum y-component + * @param momZ momentum z-component + * @param eventnumber number of the event + */ + void breakItUp(G4double nucleusA, G4double nucleusZ, G4double nucleusMass, G4double excitationEnergy, + G4double angularMomentum, G4double recoilEnergy, G4double momX, G4double momY, G4double momZ, + G4int eventnumber); + + // Evaporation +public: + /** + * Initialize ABLA evaporation code. + */ + void initEvapora(); + + /** + * qrot including damping + * Input: z,a,bet,sig,u + * Output: qr - collective enhancement factor + * See junghans et al., nucl. phys. a 629 (1998) 635 + */ + void qrot(G4double z, G4double a, G4double bet, G4double sig, G4double u, G4double *qr); + + /** + * Model de la goutte liquide de c. f. weizsacker. + * usually an obsolete option + */ + void mglw(G4double a, G4double z, G4double *el); + + /** + * Mglms + */ + void mglms(G4double a, G4double z, G4int refopt4, G4double *el); + + /** + * + */ + // G4double spdef(G4int a, G4int z, G4int optxfis); + + /** + * Calculation of fissility parameter + */ + // G4double fissility(int a,int z, int optxfis); + + /** + * Main evaporation routine. + */ + void evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf, + G4double *zf_par, G4double *af_par, G4double *mtota_par, + G4double *pleva_par, G4double *pxeva_par, G4double *pyeva_par, + G4int *ff_par, G4int *inttype_par, G4int *inum_par); + + /** + * Calculation of particle emission probabilities. + */ + void direct(G4double zprf,G4double a, G4double ee, G4double jprf, + G4double *probp_par, G4double *probn_par, G4double *proba_par, + G4double *probf_par, G4double *ptotl_par, G4double *sn_par, G4double *sbp_par, G4double *sba_par, G4double *ecn_par, + G4double *ecp_par,G4double *eca_par, G4double *bp_par, G4double *ba_par, G4int inttype, G4int inum, G4int itest); + + /** + * Level density parameters. + */ + void densniv(G4double a, G4double z, G4double ee, G4double esous, G4double *dens, G4double bshell, G4double bs, G4double bk, + G4double *temp, G4int optshp, G4int optcol, G4double defbet); + + /** + * This subroutine calculates the fission barriers + * of the liquid-drop model of Myers and Swiatecki (1967). + * Analytic parameterization of Dahlinger 1982 + * replaces tables. Barrier heights from Myers and Swiatecki + */ + G4double bfms67(G4double zms, G4double ams); + + /** + * This subroutine calculates the ordinary legendre polynomials of + * order 0 to n-1 of argument x and stores them in the vector pl. + * They are calculated by recursion relation from the first two + * polynomials. + * Written by A.J.Sierk LANL t-9 February, 1984 + */ + void lpoly(G4double x, G4int n, G4double pl[]); + + /** + * This function will calculate the liquid-drop nuclear mass for spheri + * configuration according to the preprint NUCLEAR GROUND-STATE + * MASSES and DEFORMATIONS by P. Mo"ller et al. from August 16, 1993 p. + * All constants are taken from this publication for consistency. + */ + G4double eflmac(G4int ia, G4int iz, G4int flag, G4int optshp); + + /** + * Procedure for calculating the pairing correction to the binding + * energy of a specific nucleus. + */ + void appariem(G4double a, G4double z, G4double *del); + + /** + * PROCEDURE FOR CALCULATING THE PARITY OF THE NUMBER N. + * RETURNS -1 IF N IS ODD AND +1 IF N IS EVEN + */ + void parite(G4double n, G4double *par); + + /** + * RISE TIME IN WHICH THE FISSION WIDTH HAS REACHED + * 90 PERCENT OF ITS FINAL VALUE + */ + G4double tau(G4double bet, G4double homega, G4double ef, G4double t); + + /** + * KRAMERS FAKTOR - REDUCTION OF THE FISSION PROBABILITY + * INDEPENDENT OF EXCITATION ENERGY + */ + G4double cram(G4double bet, G4double homega); + + /** + * CALCULATION OF THE SURFACE BS OR CURVATURE BK OF A NUCLEUS + * RELATIVE TO THE SPHERICAL CONFIGURATION + * BASED ON MYERS, DROPLET MODEL FOR ARBITRARY SHAPES + */ + G4double bipol(int iflag, G4double y); + + /** + * THIS SUBROUTINE RETURNS THE BARRIER HEIGHT BFIS, THE + * GROUND-STATE ENERGY SEGS, IN MEV, AND THE ANGULAR MOMENTUM + * AT WHICH THE FISSION BARRIER DISAPPEARS, LMAX, IN UNITS OF + * H-BAR, WHEN CALLED WITH INTEGER AGUMENTS IZ, THE ATOMIC + * NUMBER, IA, THE ATOMIC MASS NUMBER, AND IL, THE ANGULAR + * MOMENTUM IN UNITS OF H-BAR. (PLANCK'S CONSTANT DIVIDED BY + * 2*PI). + */ + void barfit(G4int iz, G4int ia, G4int il, G4double *sbfis, G4double *segs, G4double *selmax); + + /** + * TIRAGE ALEATOIRE DANS UNE EXPONENTIELLLE : Y=EXP(-X/T) + */ + G4double expohaz(G4int k, G4double T); + + /** + * DISTRIBUTION DE MAXWELL + */ + G4double fd(G4double E); + + /** + *FONCTION INTEGRALE DE FD(E) + */ + G4double f(G4double E); + + /** + * tirage aleatoire dans une maxwellienne + */ + G4double fmaxhaz(G4double T); + + /** + * + */ + G4double pace2(G4double a, G4double z); + + /** + * + */ + void guet(G4double *x_par, G4double *z_par, G4double *find_par); + + // Fission +public: + /** + * + */ + G4double spdef(G4int a, G4int z, G4int optxfis); + + /** + * + */ + G4double fissility(G4int a, G4int z, G4int optxfis); + +// void evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf, +// G4double *zf_par, G4double *af_par, G4double *mtota_par, +// G4double *pleva_par, G4double *pxeva_par); +// G4double bfms67(G4double zms, G4double ams); + // void lpoly(G4double x, G4int n, G4double pl[]); + // G4double expohaz(G4int k, G4double T); + // G4double fd(G4double E); + // G4double f(G4double E); + // G4double fmaxhaz(G4double k, G4double T); + void even_odd(G4double r_origin,G4double r_even_odd,G4int &i_out); + G4double umass(G4double z,G4double n,G4double beta); + G4double ecoul(G4double z1,G4double n1,G4double beta1,G4double z2,G4double n2,G4double beta2,G4double d); + void fissionDistri(G4double &a,G4double &z,G4double &e, + G4double &a1,G4double &z1,G4double &e1,G4double &v1, + G4double &a2,G4double &z2,G4double &e2,G4double &v2); + void standardRandom(G4double *rndm, G4long *seed); + G4double haz(G4int k); + G4double gausshaz(int k, double xmoy, double sig); + + +public: + // Coordinate system transformations: + void lorab(G4double gam, G4double eta, G4double ein, G4double pin[], + G4double *eout, G4double pout[]); + + void translab(G4double gamrem, G4double etrem, G4double csrem[4], G4int nopart, G4int ndec); + void translabpf(G4double masse1, G4double t1, G4double p1, G4double ctet1, + G4double phi1, G4double gamrem, G4double etrem, G4double R[][4], + G4double *plab1, G4double *gam1, G4double *eta1, G4double csdir[]); + + void rotab(G4double R[4][4], G4double pin[4], G4double pout[4]); + + // Utils + G4int min(G4int a, G4int b); + G4double min(G4double a, G4double b); + G4int max(G4int a, G4int b); + G4double max(G4double a, G4double b); + + G4int nint(G4double number); + G4int secnds(G4int x); + G4int mod(G4int a, G4int b); + G4double dmod(G4double a, G4double b); + G4double dint(G4double a); + G4int idint(G4double a); + G4int idnint(G4double value); + G4double utilabs(G4double a); + G4double dmin1(G4double a, G4double b, G4double c); + +private: + G4int verboseLevel; + + G4Pace *pace; + G4Hazard *hazard; + G4Ald *ald; + G4Ablamain *ablamain; + G4Emdpar *emdpar; + G4Eenuc *eenuc; + G4Ec2sub *ec2sub; + G4Ecld *ecld; + G4Fb *fb; + G4Fiss *fiss; + G4Opt *opt; + G4Volant *volant; + G4VarNtp *varntp; +}; diff --git a/source/processes/hadronic/models/incl/include/G4AblaDataDefs.hh b/source/processes/hadronic/models/incl/include/G4AblaDataDefs.hh new file mode 100644 index 0000000000..d5aa291944 --- /dev/null +++ b/source/processes/hadronic/models/incl/include/G4AblaDataDefs.hh @@ -0,0 +1,229 @@ +// +// ******************************************************************** +// * 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: G4AblaDataDefs.hh,v 1.6 2007/12/03 19:36:06 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +// Data structures needed by ABLA evaporation code. + +#ifndef G4AblaDataDefs_hh +#define G4AblaDataDefs_hh 1 + +// ABLA + +class G4Nevent { +public: + G4Nevent() {}; + ~G4Nevent() {}; + + G4int ii; +}; + +// ABLA +#define PACESIZEROWS 500 +#define PACESIZECOLS 500 +/** + * Masses. + */ + +class G4Pace { + +public: + G4Pace() {}; + + ~G4Pace() {}; + + G4double dm[PACESIZEROWS][PACESIZECOLS]; +}; + +#define EC2SUBROWS 154 +#define EC2SUBCOLS 99 + /** + * + */ + +class G4Ec2sub { +public: + G4Ec2sub() {}; + + ~G4Ec2sub() {}; + + G4double ecnz[EC2SUBROWS][EC2SUBCOLS]; +}; + +class G4Ald { +public: + /** + * + */ + G4Ald() {}; + ~G4Ald() {}; + + G4double av,as,ak,optafan; +}; + +class G4Ablamain { +public: + G4Ablamain() {}; + ~G4Ablamain() {}; + + G4double ap,zp,at,zt,eap,beta,bmaxnuc,crtot,crnuc,r_0, r_p,r_t,pi,bfpro,snpro,sppro,shell; + G4int imax, inum; +}; + +#define ECLDROWS 154 +#define ECLDCOLS 99 +/** + * Shell corrections and deformations. + */ + +class G4Ecld { + +public: + G4Ecld() {}; + ~G4Ecld() {}; + + /** + * Ground state shell correction frldm for a spherical ground state. + */ + G4double ecgnz[ECLDROWS][ECLDCOLS]; + + /** + * Shell correction for the saddle point (now: == 0). + */ + G4double ecfnz[ECLDROWS][ECLDCOLS]; + + /** + * Difference between deformed ground state and ldm value. + */ + G4double vgsld[ECLDROWS][ECLDCOLS]; + + /** + * Alpha ground state deformation (this is not beta2!) + * beta2 = std::sqrt(5/(4pi)) * alpha + */ + G4double alpha[ECLDROWS][ECLDCOLS]; +}; + +class G4Fiss { + /** + * Options and parameters for fission channel. + */ + +public: + G4Fiss() {}; + ~G4Fiss() {}; + + G4double akap,bet,homega,koeff,ifis; + G4int optshp, optxfis,optles,optcol; +}; + +#define FBROWS 101 +#define FBCOLS 161 +/** + * Fission barriers. + */ + +class G4Fb { + +public: + G4Fb() {}; + ~G4Fb() {;} + + // G4double efa[FBROWS][FBCOLS]; + G4double efa[FBCOLS][FBROWS]; +}; + +/** + * Options + */ + +class G4Opt { + +public: + G4Opt() {}; + ~G4Opt() {}; + + G4int optemd,optcha; + G4double eefac; +}; + +#define EENUCSIZE 2002 +#define XHESIZE 50 +class G4Eenuc { +public: + G4Eenuc() {}; + ~G4Eenuc() {}; + + G4double she[EENUCSIZE],xhe[XHESIZE][EENUCSIZE]; +}; + +#define EMDPARSIZE 1000 +/** + * Energies widths and cross sections for em excitation. + */ + +class G4Emdpar { + +public: + G4Emdpar() {}; + ~G4Emdpar() {}; + + G4double egdr,egqr,fwhmgdr,fwhmgqr,cremde1,cremde2; + G4double ae1[EMDPARSIZE],be1[EMDPARSIZE],ce1[EMDPARSIZE],ae2[EMDPARSIZE]; + G4double be2[EMDPARSIZE],ce2[EMDPARSIZE],sre1[EMDPARSIZE],sre2[EMDPARSIZE]; + G4double xre1[EMDPARSIZE],xre2[EMDPARSIZE],ds1,ds2; +}; + +//#define VOLANTSIZE 200 +#define VOLANTSIZE 2000 +/** + * Evaporation and fission output data. + */ + +class G4Volant { + +public: + G4Volant() {}; + ~G4Volant() {}; + + void dump() + { + G4cout <<"i \t ACV \t ZPCV \t PCV" << G4endl; + for(G4int i = 0; i <= iv; i++) { + G4cout << "volant" << i << "\t" << acv[i] << " \t " << zpcv[i] << " \t " << pcv[i] << G4endl; + } + } + + G4double acv[VOLANTSIZE],zpcv[VOLANTSIZE],pcv[VOLANTSIZE],xcv[VOLANTSIZE]; + G4double ycv[VOLANTSIZE],zcv[VOLANTSIZE]; + G4int iv; +}; + +#endif diff --git a/source/processes/hadronic/models/incl/include/G4AblaEvaporation.hh b/source/processes/hadronic/models/incl/include/G4AblaEvaporation.hh new file mode 100644 index 0000000000..c0dc42ff4c --- /dev/null +++ b/source/processes/hadronic/models/incl/include/G4AblaEvaporation.hh @@ -0,0 +1,104 @@ +// +// ******************************************************************** +// * 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: G4AblaEvaporation.hh,v 1.1 2007/09/11 13:18:42 miheikki Exp $ +// Defines an interface to evaporation models of Bertini cascase (BERT) +// based on INUCL code. +// +#ifndef G4ABLAEVAPORATION_h +#define G4ABLAEVAPORATION_h 1 + +#include "globals.hh" +#include "G4VEvaporation.hh" +#include "G4Fragment.hh" +#include "G4DynamicParticle.hh" + +#include "G4Abla.hh" + +//#include "G4VCoulombBarrier.hh" + +//#define DEBUG + +/** + * Geant4 interface to the ABLA evaporation code. + */ + +class G4AblaEvaporation : public G4VEvaporation { +public: + /** + * Constructor. + */ + G4AblaEvaporation(); + + /** + * Destructor. + */ + ~G4AblaEvaporation(); + +private: + G4AblaEvaporation(const G4AblaEvaporation &right); + + const G4AblaEvaporation & operator=(const G4AblaEvaporation &right); + G4bool operator==(const G4AblaEvaporation &right) const; + G4bool operator!=(const G4AblaEvaporation &right) const; + void fillResult( std::vector secondaryParticleVector, + G4FragmentVector * aResult ); + +public: + + /** + * The method for calling + */ + G4FragmentVector * BreakItUp(const G4Fragment &theNucleus); + + void setVerboseLevel( const G4int verbose ); + +private: + /** + * Seeds for the random number generator. + */ + G4Hazard *hazard; + + /** + * The verbosity of the interface class. + */ + G4int verboseLevel; + + /** + * Event number used in the ABLA code. + */ + G4int eventNumber; + + // For Coulomb Barrier calculation + // G4VCoulombBarrier * theCoulombBarrierPtr; + G4double CoulombBarrier; + +#ifdef DEBUG + +#endif + +}; + +#endif diff --git a/source/processes/hadronic/models/incl/include/G4Incl.hh b/source/processes/hadronic/models/incl/include/G4Incl.hh new file mode 100644 index 0000000000..0cd5f6c304 --- /dev/null +++ b/source/processes/hadronic/models/incl/include/G4Incl.hh @@ -0,0 +1,820 @@ +// +// ******************************************************************** +// * 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: G4Incl.hh,v 1.10 2007/12/03 19:36:06 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +#ifndef G4Incl_hh +#define G4Incl_hh 1 + +#include "globals.hh" +#include "G4InclDataDefs.hh" +#include "G4Abla.hh" +#include + +using namespace std; +/** + * Class containing INCL4 hadronic cascade algorithm. + */ + +class G4Incl { + +public: + /** + * + * Support for Doxygen JavaDoc style. + * + * \author{pekka.kaitaniemi@helsinki.fi} + */ + + /** + * Constructor to be used with Geant4. + * @param hazard a pointer to G4Hazard structure. + * @param calincl a pointer to G4Calincl structure. + * @param ws a pointer to G4Ws structure. + * @param mat a pointer to G4Mat structure. + * @param varntp a pointer to G4VarNtp structure. + */ + G4Incl(G4Hazard *hazard, G4Calincl *calincl, G4Ws *ws, G4Mat *mat, G4VarNtp *varntp); + + /** + * Constructor for private unit testing purposes. + * @param hazard a pointer to G4Hazard structure. + * @param dton a pointer to G4Dton structure. + * @param saxw a pointer to G4Saxw structure. + * @param ws a pointer to G4Ws structure. + */ + G4Incl(G4Hazard *hazard, G4Dton *dton, G4Saxw *saxw, G4Ws *ws); + + G4Incl(); + + ~G4Incl(); // Destructor + + G4double energyTest(G4int i); // Test for NaN energy of particle i. + void dumpBl5(std::ofstream& dumpOut); // Dump the contents of G4Bl5. + void dumpSaxw(std::ofstream& dumpOut); // Dump the contents of G4Saxw. + void dumpBl1(std::ofstream& dumpOut); // Dump the contents of G4Bl1. + void dumpBl2(std::ofstream& dumpOut); // Dump the contents of G4Bl2. + void dumpBl3(std::ofstream& dumpOut); // Dump the contents of G4Bl3. + + /** + * Set verbosity level. + */ + void setVerboseLevel(G4int level); + /** + * Get verbosity level. + */ + G4int getVerboseLevel(); + + void setDtonData(G4Dton *newDton); // Set internal data. + void setWsData(G4Ws *newWs); + void setHazardData(G4Hazard *newHazard); + void setSaxwData(G4Saxw *newSaxw); + void setSpl2Data(G4Spl2 *newSpl2); + void setMatData(G4Mat *newMat); + void setCalinclData(G4Calincl *newCalincl); + void setLightNucData(G4LightNuc *newLightNuc); + void setLightGausNucData(G4LightGausNuc *newLightGausNuc); + void setBl1Data(G4Bl1 *newBl1); + void setBl2Data(G4Bl2 *newBl2); + void setBl3Data(G4Bl3 *newBl3); + void setBl4Data(G4Bl4 *newBl4); + void setBl5Data(G4Bl5 *newBl5); + void setBl6Data(G4Bl6 *newBl6); + void setBl8Data(G4Bl8 *newBl8); + void setBl9Data(G4Bl9 *newBl9); + void setBl10Data(G4Bl10 *newBl10); + void setKindData(G4Kind *newKind); + +public: + /** + * Process one event with INCL4 only. + */ + void processEventIncl(); + + /** + * Process one event with INCL4 and built-in ABLA evaporation and fission. + */ + void processEventInclAbla(G4int eventnumber); + +public: // Methods used to initialize INCL + /** + * Initialize INCL. + * + * @param initRandomSeed choose whether INCL should initialize random seeds. + */ + void initIncl(G4bool initRandomSeed); + + /** + * Initialize target materials. + * + * @param izmat charge number + * @param iamat mass number + * @param imat material number (array index) + */ + void initMaterial(G4int izmat, G4int iamat, G4int imat); + + /** + * A normal member taking two arguments and returning an integer value. + * + * @param l an integer argument. + * @param q a constant character pointer. + * @return The test results + */ + G4double deutv(G4int l, G4double q); + + /** + * Returns the values of the function: + * \f[ + * (0.23162461 + (j - 1))^2 + * \f] + * + * @param j an integer parameter + * @return a double value + */ + G4double fm2(G4int j); + + /** + * Interpolates function described by class G4Saxw around a point. + * + * @param xv interpolation point + * @return a double value + */ + G4double interpolateFunction(G4double xv); + + /** + * Calculates the first derivative of the function stored in class G4Saxw. + * + * @param xv an integer parameter + */ + void firstDerivative(G4int k); + + /** + * Returns the values of the function: + * \f[ + * \frac{r^2}{1 + e^{\frac{r - r_{0}}{A_{dif}}}} + * \f] + * + * @param r a G4double argument + * @return a double value + */ + G4double wsax(G4double r); + + /** + * Returns the values of the function: + * \f[ + * \frac{1}{A_{dif}^{2}} \frac{r^3 e^{r - r_0}}{1 + e^{\frac{r - r_{0}}{A_{dif}}}} + * \f] + * + * @param r a G4double argument + * @return a double value + */ + G4double derivWsax(G4double r); + + /** + * Returns the values of the function: + * \f[ + * r^2 (1.0 + r_0 \frac{r^2}{A_{dif}}) e^{-\frac{r^2}{A_{dif}^2}} + * \f] + * @param r a G4double argument + * @return a double value + */ + G4double dmho(G4double r); + + /** + * Returns the values of the function: + * \f[ + * -\frac{2r^4}{A_{dif}^2} (r_0(1.0 - \frac{r^2}{A_{dif}^2}) - 1.0) e^{-\frac{r^2}{A_{dif}^2}} + * \f] + * + * @param r a G4double argument + * @return a double value + */ + G4double derivMho(G4double r); + + /** + * Returns the values of the function: + * \f[ + * \frac{r^4}{A_{dif}^2} e^{-\frac{1}{2} \frac{r^2}{A_{dif}^2}} + * \f] + * + * @param r a G4double argument + * @return a double value + */ + G4double derivGaus(G4double r); + + /** + * Ce subroutine appele sur le premier tir va calculer la densite du deuton + * dans l'espace des impulsions et preparer l'interpolation permettant ensuite + * le tir au hasard d'un module de l'impulsion (q). + * Ce subroutine remplit le G4Spl2: + * xsp, ysp integrale normalisee de la densite de 0 a q. + * a(),b(),c() coefs des nsp points pour une interpolation du second degre. + * q est en fm-1. + */ + void densDeut(); + + /** + * Integrate using Alkazhov's method. + * + * @param ami a double parameter + * @param ama a double parameter + * @param dr a double parameter + * @param functionChoice an integer parameter + * @return a double value + */ + G4double integrate(G4double ami, G4double ama, G4double step, G4int functionChoice); + + /** + * Deuteron density + * + * @param q a double parameter + * @return a double value + */ + G4double dens(G4double q); + + /** + * + */ + void spl2ab(); + + /** + * + * @param xv a double parameter + * @return a double value + */ + G4double splineab(G4double xv); + +public: // Main INCL routines + /** + * INCL model as a function. + */ + void pnu(G4int *ibert_p, G4int *nopart_p, G4int *izrem_p, G4int *iarem_p, G4double *esrem_p, + G4double *erecrem_p, G4double *alrem_p, G4double *berem_p, G4double *garem_p, + G4double *bimpact_p, G4int *l_p); + + /** + * Single nucleon-nucleon collision. + */ + void collis(G4double *p1_p, G4double *p2_p, G4double *p3_p, G4double *e1_p, G4double *pout11_p, G4double *pout12_p, + G4double *pout13_p, G4double *eout1_p, G4double *q1_p, G4double *q2_p, G4double *q3_p, + G4double *q4_p, G4int *np_p, G4int *ip_p, G4int *k2_p, G4int *k3_p, G4int *k4_p, + G4int *k5_p, G4int *m1_p, G4int *m2_p, G4int *is1_p, G4int *is2_p); + + /** + * This routine describes the anisotropic decay of a particle of + * mass xi into 2 particles of masses x1,x2. + * The anisotropy is supposed to follow a 1+3*hel*(std::cos(theta))**2 law + * with respect to the direction of the incoming particle. + * + * In the input, p1,p2,p3 is the momentum of particle xi. + * + * In the output, p1,p2,p3 is the momentum of particle x1, + * while q1,q2,q3 is the momentum of particle x2. + * + * @param p1_p pointer to momentum component 1 + * @param p2_p pointer to momentum component 2 + * @param p3_p pointer to momentum component 3 + * @param wp_p pointer to a double parameter + * @param q1_p pointer to momentum component 1 + * @param q2_p pointer to momentum component 2 + * @param q3_p pointer to momentum component 3 + * @param wq_p pointer to a double parameter + * @param xi_p pointer to a double parameter + * @param x1_p pointer to momentum component 1 + * @param x2_p pointer to momentum component 2 + * @param x3_p pointer to momentum compone n3 + * @param hel_p pointer to a double parameter + */ + void decay2(G4double *p1_p, G4double *p2_p, G4double *p3_p, G4double *wp_p, G4double *q1_p, + G4double *q2_p, G4double *q3_p, G4double *wq_p, G4double *xi_p, G4double *x1_p, + G4double *x2_p, G4double *hel_p); + + /** + * Time calculation. + * + * @param i an index of particle 1 + * @param j an index of particle 2 + */ + void time(G4int i, G4int j); + + /** + * New time. + * + * @param l1 an integer parameter + * @param l2 an integer parameter + */ + void newt(G4int l1, G4int l2); + + /** + * + * + * @param l1 an integer parameter + */ + void new1(G4int l1); + + /** + * + * + * @param y1 a double parameter + * @param y2 a double parameter + * @param y3 a double parameter + * @param q1 a double parameter + * @param q2 a double parameter + * @param q3 a double parameter + * @param q4 a double parameter + * @param npion number of pions + * @param l1 an integer parameter + */ + void new2(G4double y1, G4double y2, G4double y3, G4double q1, G4double q2, G4double q3, + G4double q4, G4int npion, G4int l1); + + /** + * + * + * @param y1 a double parameter + * @param y2 a double parameter + * @param y3 a double parameter + * @param q1 a double parameter + * @param q2 a double parameter + * @param q3 a double parameter + * @param q4 a double parameter + * @param npion number of pions + * @param l1 an integer parameter + */ + void new3(G4double y1, G4double y2, G4double y3, G4double q1, G4double q2, G4double q3, + G4double q4, G4int npion, G4int l1); + + /** + * Lorentz transformation. + * + * @param q1 a double parameter + * @param q2 a double parameter + * @param q3 a double parameter + * @param b1 a double parameter + * @param b2 a double parameter + * @param b3 a double parameter + * @param E energy + */ + void loren(G4double *q1, G4double *q2, G4double *q3, G4double *b1, G4double *b2, G4double *b3, G4double *E); + + /** + * Pauli blocking. + * + * @param l an integer parameter + * @param xr a double parameter + * @param pr a double parameter + * @return a double value + */ + G4double pauliBlocking(G4int l, G4double xr, G4double pr); + + /** + * Fit by J. Vandermeulen. + * Low energy fit from reference J.Cugnon, D. L'hote and J. Vandermeulen, NIM B111 (1996) 215. + * + * @param E energy + * @param m a double parameter m = 0, 1, 2 for nucleon-nucleon, nucleon-delta, delta-delta + * @param i a double parameter i = 2, 0, -2 for pp, pn, nn + * @return a double value + */ + G4double lowEnergy(G4double E, G4double m, G4double i); + + /** + * Total cross-sections. + * + * @param E energy + * @param m an integer parameter m=0,1,2 for nucleon-nucleon, nucleon-delta, delta-delta + * @param i an integer parameter i = 2, 0, -2 for pp, pn, nn + * @return a double value + */ + G4double totalCrossSection(G4double E, G4int m, G4int i); + + /** + * + * + * @param Ein energy + * @param d a double parameter + * @param i an integer parameter + * @param isa an integer parameter + * @return a double value + */ + G4double srec(G4double Ein, G4double d, G4int i, G4int isa); + + /** + * Delta production cross section. + * + * @param E energy + * @param i an integer parameter + * @return a double value + */ + G4double deltaProductionCrossSection(G4double E, G4int i); + + /** + * Sigma(pi+ + p) in the (3,3) region. + * New fit by J. Vandermeulen and constant value above the (3,3) resonance. + * + * @param x a double parameter + * @return a double value + */ + G4double pionNucleonCrossSection(G4double x); + + /** + * Transmission probability for a nucleon of kinetic energy + * E on the edge of the well of depth v0 (nr approximation). + * , + * of the nucleus and r is the target radius + * + * @param E kinetic energy + * @param iz the isospin of the nucleon + * @param izn the instanteneous charge + * @param r + * @param v0 + * @return a double value + */ + G4double transmissionProb(G4double E, G4double iz, G4double izn, G4double r, G4double v0); + + /** + * + * + * @param x1 a double parameter + * @param x2 a double parameter + * @param x3 a double parameter + * @param p1 a double parameter + * @param p2 a double parameter + * @param p3 a double parameter + * @param E a double parameter + * @param r2 a double parameter + * @return a double value + */ + G4double ref(G4double x1, G4double x2, G4double x3, G4double p1, + G4double p2, G4double p3, G4double E, G4double r2); + + /** + * ForceAbsor + */ + void forceAbsor(G4int *nopart, G4int *iarem, G4int *izrem, G4double *esrem, G4double *erecrem, + G4double *alrem, G4double *berem, G4double *garem, G4int *jrem); + + /** + * ForceAbs + * @param iprojo projectile + * @param at target mass number + * @param zt target charge number + * @param ep projectile energy + * @param bmax a double parameter + * @param pt a double parameter + * @return absorption probability + */ + G4double forceAbs(G4double iprojo, G4double at, G4double zt, G4double ep, G4double bmax, G4double pt); + + /** + * absoprption xsec revised version rkt-97/5 + * neutron data from barashenkov + * this gives absorption xsec for given zp,ap,zt,at,e (mev/nucleon) + * arguement changed to mev; then e=ep/ap mev/nucleon + * can be used for neutrons also. + * this has coulomb as ours + * @param zp projectile charge number + * @param zp projectile mass number + * @param zt a double parameter + * @param zt target charge number + * @param at target mass number + * @param ep projectile energy + */ + G4double xabs2(G4double zp, G4double ap, G4double zt, G4double at, G4double ep); + + /** + * Standard random number generator. + * @param *rndm pointer to the variable reserved for random number + * @param *seed pointer to the random seed + */ + void standardRandom(G4double *rndm, G4long *seed); + + /** + * First derivative of a gaussian potential. + * @param *rndm pointer to the variable reserved for random number + */ + void gaussianRandom(G4double *rndm); + + /** + * Safe exponential function which eliminates the CPU under and overflows. + * @param x a double parameter + * @return a double value + */ + G4double safeExp(G4double x); + + /** + * Nuclear radius + * @param A mass number (double parameter) + */ + G4double radius(G4double A); + + /** Parametrisation de la section efficace de réaction calculée par incl4.1 + * iprojo=1 proton incident, iprojo=2, neutron incident). + * entre al et u, entre 10 et 100 mev protons, 20 et 100 mev neutrons. + * bon ordre de grandeur pour les noyaux légers (c, o ...), trés faux + * a energie sup a 100 mev. + * (Comment needs to be translated) + * @param projectile an integer parameter (1 = proton, 2 = neutron) + * @param E energy of the projectile (double parameter) + * @param A target mass number (double parameter) + * @return cross section (double value) + */ + G4double crossSection(G4int projectile, G4double E, G4double A); + + /** + * coulombTransm + * subroutine coulomb_transm(e,fm1,z1,fm2,z2,proba) + * calcul du coulombien dans lahet (proba de transmission ou + * d'entree dans le potentiel nucleaire). + * @param E energy (a double parameter) + * @param fm1 a double parameter + * @param z1 a double parameter + * @param fm2 a double parameter + * @param z2 a double parameter + * @return a double value + */ + G4double coulombTransm(G4double E, G4double fm1, G4double z1, G4double fm2, G4double z2); + + /** + * Clmb1 + * @param eta a double parameter \f$\eta = c_2*z_1*z_2*\sqrt{m/E}\f$ + * @param rho a double parameter \f$\rho = c_3*(r_1+r_2)*\sqrt{mE}\f$ + * @return a double value + */ + G4double clmb1(G4double rho, G4double eta, G4double *ml); + + /** + * First derivative of a gaussian potential. + * @param eta a double parameter \f$\eta = c_2*z_1*z_2*\sqrt{m/E}\f$ + * @param rho a double parameter \f$\rho = c_3*(r_1+r_2)*\sqrt{mE}\f$ + * @return a double value + */ + G4double clmb2(G4double rho, G4double eta, G4double *t1); + +public: // Utilities + /** + * Returns the smaller of two numbers. + * @param a a double value + * @param b a double value + * @return a double value + */ + G4double min(G4double a, G4double b); + + /** + * Returns the smaller of two numbers. + * @param a an integer value + * @param b an integer value + * @return an integer value + */ + G4int min(G4int a, G4int b); + + /** + * Returns the greater of two numbers. + * @param a a double value + * @param b a double value + * @return a double value + */ + G4double max(G4double a, G4double b); + + /** + * Returns the greater of two numbers. + * @param a an integer value + * @param b an integer value + * @return an integer value + */ + G4int max(G4int a, G4int b); + + /** + * Rounds a double to the nearest int + * @param a double parameter + * @return an integer value + */ + G4int nint(G4double number); + + /** + * Calls a function + * @param functionChoice an integer value representing the choice of + * function (0 = wsax, 1 = derivWsax, 2 = dmho, 3 = derivMho, 4 = derivGaus) + * @param r a double parameter + * @return a double value + */ + G4double callFunction(G4int functionChoice, G4double r); + + G4double am(G4double a, G4double b, G4double c, G4double d); + G4double pcm(G4double e, G4double a, G4double c); + G4double sign(G4double a, G4double b); + G4double utilabs(G4double a); + G4double amax1(G4double a, G4double b); + G4double w(G4double a, G4double b, G4double c, G4double d); + G4int idnint(G4double a); + private: + + /** + * Random seeds for INCL4 internal random number generators. + */ + G4Hazard *hazard; + + /** + * Data structure for INCL4. + */ + G4Dton *dton; + + /** + * Data structure for INCL4. Contains the Woods-Saxon potential + * functions for target nuclei. + */ + G4Saxw *saxw; + + /** + * Data structure for INCL4. + */ + G4Ws *ws; + + /** + * G4Spl2 + */ + G4Spl2 *spl2; + + /** + * G4LightGausNuc + */ + G4LightGausNuc *light_gaus_nuc; + + /** + * G4LightNuc + */ + G4LightNuc *light_nuc; + + /** + * G4Calincl + */ + G4Calincl *calincl; + + /** + * G4Mat + */ + G4Mat *mat; + + /** + * + */ + G4Bl1 *bl1; + + /** + * + */ + G4Bl2 *bl2; + + /** + * + */ + G4Bl3 *bl3; + + /** + * + */ + G4Bl4 *bl4; + + /** + * + */ + G4Bl5 *bl5; + + /** + * + */ + G4Bl6 *bl6; + + /** + * + */ + G4Bl8 *bl8; + + /** + * + */ + G4Bl9 *bl9; + + /** + * + */ + G4Bl10 *bl10; + + /** + * + */ + G4Kind *kindstruct; + + /** + * + */ + G4Paul *paul; + + /** + * Detailed information of the cascade + */ + G4VarAvat *varavat; + + /** + * Cascade output. + */ + G4VarNtp *varntp; + + /** + * For storing the results of the evaporation. + */ + G4VarNtp *evaporationResult; + + /** + * Defines the verbosity of console output. Values can be between 0 + * and 4 where 0 means silent and 4 the most verbose possible + * output. + */ + G4int verboseLevel; + + /** + * Function ID for wsax. + * @see wsax + * @see integrate + * @see callFunction + */ + G4int wsaxFunction; + + /** + * Function ID for derivWsax. + * @see derivWsax + * @see integrate + * @see callFunction + */ + G4int derivWsaxFunction; + + /** + * Function ID for dmho. + * @see derivWsax + * @see integrate + * @see callFunction + */ + G4int dmhoFunction; + + /** + * Function ID for derivMho. + * @see derivMho + * @see integrate + * @see callFunction + */ + G4int derivMhoFunction; + + /** + * Function ID for derivGaus. + * @see derivGaus + * @see integrate + * @see callFunction + */ + G4int derivGausFunction; + + /** + * Function ID for dens. + * @see dens + * @see integrate + * @see callFunction + */ + G4int densFunction; + + G4int kind[300]; //= (*kind_p); + G4double ep[300]; // = (*ep_p); + G4double alpha[300]; // = (*alpha_p); + G4double beta[300]; // = (*beta_p); + G4double gam[300]; // = (*gam_p); + + G4Volant *volant; + G4Abla *abla; +}; + +#endif diff --git a/source/processes/hadronic/models/incl/include/G4InclAblaCascadeInterface.hh b/source/processes/hadronic/models/incl/include/G4InclAblaCascadeInterface.hh new file mode 100644 index 0000000000..1fd411725d --- /dev/null +++ b/source/processes/hadronic/models/incl/include/G4InclAblaCascadeInterface.hh @@ -0,0 +1,122 @@ +// +// ******************************************************************** +// * 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: G4InclAblaCascadeInterface.hh,v 1.6 2007/10/31 10:44:22 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + + +// CLASS DESCRIPTION +// This class is a preliminary interface code for INCL4 cascade +// code. This class is intended to be used as an interface for +// colliding hadrons (protons, neutrons, pions) to nuclei. + +// This class was created by Pekka Kaitaniemi +// (kaitanie@cc.helsinki.fi) , Helsinki Institute of Physics using +// G4CascadeInterface as a template. + + +#ifndef G4INCLABLACASCADEINTERFACE_H +#define G4INCLABLACASCADEINTERFACE_H 1 + +#include "G4Nucleon.hh" +#include "G4Nucleus.hh" +#include "G4HadronicInteraction.hh" +#include "G4VIntraNuclearTransportModel.hh" +#include "G4KineticTrackVector.hh" +#include "G4FragmentVector.hh" +#include "G4ParticleChange.hh" +#include "G4ReactionProductVector.hh" +#include "G4ReactionProduct.hh" + +// INCL includes +#include "G4InclDataDefs.hh" +#include "G4AblaDataDefs.hh" +#include "G4Incl.hh" + +#include +#include + +using namespace std; + +/** + * Interface for INCL/ABLA. This interface handles basic hadron + * bullet particles (protons, neutrons, pions). + * @see G4InclAblaLightIonInterface + */ + +class G4InclAblaCascadeInterface : public G4VIntraNuclearTransportModel { + +public: + /** + * Basic constructor. + */ + G4InclAblaCascadeInterface(); + + + G4int operator==(G4InclAblaCascadeInterface& right) { + return (this == &right); + } + + G4int operator!=(G4InclAblaCascadeInterface& right) { + return (this != &right); + } + + ~G4InclAblaCascadeInterface(); // Destructor + + G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries, G4V3DNucleus* theNucleus); // Idle + + /** + * Main method to apply the INCL/ABLA physics model. + * @param aTrack the projectile particle + * @param theNucleus target nucleus + * @return the output of the INCL/ABLA physics model + */ + G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& theNucleus); + +private: + G4int outputVerbosity; + G4int verboseLevel; + +private: + G4Hazard *hazard; // The random seeds used by INCL. + G4VarNtp *varntp; + G4Calincl *calincl; + G4Ws *ws; + G4Mat *mat; + G4Incl *incl; + + G4HadFinalState theResult; + ofstream diagdata; + + G4int eventNumber; + G4double previousTargetA; + G4double previousTargetZ; +}; + +#endif // G4INCLABLACASCADEINTERFACE_H diff --git a/source/processes/hadronic/models/incl/include/G4InclAblaDataFile.hh b/source/processes/hadronic/models/incl/include/G4InclAblaDataFile.hh new file mode 100644 index 0000000000..2b8a65d735 --- /dev/null +++ b/source/processes/hadronic/models/incl/include/G4InclAblaDataFile.hh @@ -0,0 +1,57 @@ +// +// ******************************************************************** +// * 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: G4InclAblaDataFile.hh,v 1.2 2007/10/31 10:44:22 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +#ifndef G4InclAblaDataFile_hh +#define G4InclAblaDataFile_hh 1 + +#include "G4InclAblaVirtualData.hh" + +/** + * Read INCL/ABLA data from files. + */ +class G4InclAblaDataFile : public G4InclAblaVirtualData { + +public: + G4InclAblaDataFile(); + + /** + * Read all data from files. + */ + bool readData(); + +private: + G4int verboseLevel; + + G4String *dataPath; +}; + +#endif diff --git a/source/processes/hadronic/models/incl/include/G4InclAblaLightIonInterface.hh b/source/processes/hadronic/models/incl/include/G4InclAblaLightIonInterface.hh new file mode 100644 index 0000000000..6f3a40a9f7 --- /dev/null +++ b/source/processes/hadronic/models/incl/include/G4InclAblaLightIonInterface.hh @@ -0,0 +1,123 @@ +// +// ******************************************************************** +// * 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: G4InclAblaLightIonInterface.hh,v 1.5 2007/10/31 10:44:22 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + + +// CLASS DESCRIPTION +// This class is a preliminary interface code for INCL4 cascade and +// ABLA evaporation codes. This class is intended to be used as an +// interface for colliding light ions (deuterons, tritons, he3 and +// alphas) to nuclei. + +// This class was created by Pekka Kaitaniemi +// (kaitanie@cc.helsinki.fi) , Helsinki Institute of Physics using +// G4CascadeInterface as a template. + + +#ifndef G4INCLABLALIGHTIONINTERFACE_H +#define G4INCLABLALIGHTIONINTERFACE_H 1 + +#include "G4Nucleon.hh" +#include "G4Nucleus.hh" +#include "G4HadronicInteraction.hh" +#include "G4VIntraNuclearTransportModel.hh" +#include "G4KineticTrackVector.hh" +#include "G4FragmentVector.hh" +#include "G4ParticleChange.hh" +#include "G4ReactionProductVector.hh" +#include "G4ReactionProduct.hh" + +// INCL includes +#include "G4InclDataDefs.hh" +#include "G4AblaDataDefs.hh" +#include "G4Incl.hh" + +#include +#include + +using namespace std; + +/** + * Interface for INCL/ABLA. This interface handles basic light ion + * bullet particles (deuterons, tritons, he3 and alphas). + * @see G4InclAblaLightIonInterface + */ + +class G4InclAblaLightIonInterface : public G4VIntraNuclearTransportModel { + +public: + /** + * Basic constructor. + */ + G4InclAblaLightIonInterface(); + + + G4int operator==(G4InclAblaLightIonInterface& right) { + return (this == &right); + } + + G4int operator!=(G4InclAblaLightIonInterface& right) { + return (this != &right); + } + + ~G4InclAblaLightIonInterface(); // Destructor + + G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries, G4V3DNucleus* theNucleus); // Idle + + /** + * Main method to apply the INCL/ABLA physics model. + * @param aTrack the projectile particle + * @param theNucleus target nucleus + * @return the output of the INCL/ABLA physics model + */ + G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& theNucleus); + +private: + G4int outputVerbosity; + G4int verboseLevel; + +private: + G4Hazard *hazard; // The random seeds used by INCL. + G4VarNtp *varntp; + G4Calincl *calincl; + G4Ws *ws; + G4Mat *mat; + G4Incl *incl; + + G4HadFinalState theResult; + ofstream diagdata; + + G4int eventNumber; + G4double previousTargetA; + G4double previousTargetZ; +}; + +#endif // G4INCLABLALIGHTIONINTERFACE_H diff --git a/source/processes/hadronic/models/incl/include/G4InclAblaVirtualData.hh b/source/processes/hadronic/models/incl/include/G4InclAblaVirtualData.hh new file mode 100644 index 0000000000..854ca031c0 --- /dev/null +++ b/source/processes/hadronic/models/incl/include/G4InclAblaVirtualData.hh @@ -0,0 +1,113 @@ +// +// ******************************************************************** +// * 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: G4InclAblaVirtualData.hh,v 1.3 2007/12/03 19:36:06 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +#ifndef G4InclAblaVirtualData_hh +#define G4InclAblaVirtualData_hh 1 + +#include "globals.hh" + +/** + * An interface to data used by INCL and ABLA. This interface allows + * us to abstract the actual source of data. Currently the data is + * read from datafiles by using class G4InclAblaDataFile. @see + * G4InclAblaDataFile + */ + +class G4InclAblaVirtualData { +protected: + + /** + * Constructor + */ + G4InclAblaVirtualData(); + +public: + /** + * Set the value of Alpha. + */ + G4bool setAlpha(G4int A, G4int Z, G4double value); + + /** + * Set the value of Ecnz. + */ + G4bool setEcnz(G4int A, G4int Z, G4double value); + + /** + * Set the value of Vgsld. + */ + G4bool setVgsld(G4int A, G4int Z, G4double value); + + /** + * Set the value of Pace2. + */ + G4bool setPace2(G4int A, G4int Z, G4double value); + + G4double getAlpha(G4int A, G4int Z); + + /** + * Get the value of Alpha. + */ + G4double getEcnz(G4int A, G4int Z); + + /** + * Get the value of Vgsld. + */ + G4double getVgsld(G4int A, G4int Z); + + /** + * Get the value of Pace2. + */ + G4double getPace2(G4int A, G4int Z); + + G4int getAlphaRows(); + G4int getAlphaCols(); + + G4int getPaceRows(); + G4int getPaceCols(); + + virtual G4bool readData() = 0; + +private: + + static const G4int alphaRows = 155; + static const G4int alphaCols = 100; + + static const G4int paceRows = 500; + static const G4int paceCols = 500; + + G4double alpha[alphaRows][alphaCols]; + G4double ecnz[alphaRows][alphaCols]; + G4double vgsld[alphaRows][alphaCols]; + G4double pace2[paceRows][paceCols]; +}; + +#endif diff --git a/source/processes/hadronic/models/incl/include/G4InclCascadeInterface.hh b/source/processes/hadronic/models/incl/include/G4InclCascadeInterface.hh new file mode 100644 index 0000000000..bb161c2e05 --- /dev/null +++ b/source/processes/hadronic/models/incl/include/G4InclCascadeInterface.hh @@ -0,0 +1,122 @@ +// +// ******************************************************************** +// * 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: G4InclCascadeInterface.hh,v 1.5 2007/10/31 10:44:22 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + + +// CLASS DESCRIPTION +// This class is a preliminary interface code for INCL4 cascade +// code. This class is intended to be used as an interface for +// colliding hadrons (protons, neutrons, pions) to nuclei. + +// This class was created by Pekka Kaitaniemi +// (kaitanie@cc.helsinki.fi) , Helsinki Institute of Physics using +// G4CascadeInterface as a template. + + +#ifndef G4INCLCASCADEINTERFACE_H +#define G4INCLCASCADEINTERFACE_H 1 + +#include "G4Nucleon.hh" +#include "G4Nucleus.hh" +#include "G4HadronicInteraction.hh" +#include "G4VIntraNuclearTransportModel.hh" +#include "G4KineticTrackVector.hh" +#include "G4FragmentVector.hh" +#include "G4ParticleChange.hh" +#include "G4ReactionProductVector.hh" +#include "G4ReactionProduct.hh" + +// INCL includes +#include "G4InclDataDefs.hh" +#include "G4AblaDataDefs.hh" +#include "G4Incl.hh" + +#include +#include + +using namespace std; + +/** + * Interface for INCL. This interface handles basic hadron + * bullet particles (protons, neutrons, pions). + * @see G4InclAblaLightIonInterface + */ + +class G4InclCascadeInterface : public G4VIntraNuclearTransportModel { + +public: + /** + * Basic constructor. + */ + G4InclCascadeInterface(); + + + G4int operator==(G4InclCascadeInterface& right) { + return (this == &right); + } + + G4int operator!=(G4InclCascadeInterface& right) { + return (this != &right); + } + + ~G4InclCascadeInterface(); // Destructor + + G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries, G4V3DNucleus* theNucleus); // Idle + + /** + * Main method to apply the INCL/ABLA physics model. + * @param aTrack the projectile particle + * @param theNucleus target nucleus + * @return the output of the INCL/ABLA physics model + */ + G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& theNucleus); + +private: + G4int outputVerbosity; + G4int verboseLevel; + +private: + G4Hazard *hazard; // The random seeds used by INCL. + G4VarNtp *varntp; + G4Calincl *calincl; + G4Ws *ws; + G4Mat *mat; + G4Incl *incl; + + G4HadFinalState theResult; + ofstream diagdata; + + G4int eventNumber; + G4double previousTargetA; + G4double previousTargetZ; +}; + +#endif // G4INCLCASCADEINTERFACE_H diff --git a/source/processes/hadronic/models/incl/include/G4InclDataDefs.hh b/source/processes/hadronic/models/incl/include/G4InclDataDefs.hh new file mode 100644 index 0000000000..3e0454ccb1 --- /dev/null +++ b/source/processes/hadronic/models/incl/include/G4InclDataDefs.hh @@ -0,0 +1,687 @@ +// +// ******************************************************************** +// * 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: G4InclDataDefs.hh,v 1.2 2007/09/11 13:18:43 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +// All data structures needed by INCL4 are defined here. + +#ifndef InclDataDefs_hh +#define InclDataDefs_hh 1 + +#define FSIZE 15 +/** + * Initial values of a hadronic cascade problem. + */ +class G4Calincl { +public: + G4Calincl() {}; + ~G4Calincl() {}; + + /** + * Here f is an array containing the following initial values: + * - f[0] : target mass number + * - f[1] : target charge number + * - f[2] : bullet energy + * - f[3] : minimum proton energy to leave the target (default: 0.0) + * - f[4] : nuclear potential (default: 45.0 MeV) + * - f[5] : time scale (default: 1.0) + * - f[6] : bullet type (1: proton, 2: neutron, 3: pi+, 4: pi0 5: pi-, 6:H2, 7: H3, 8: He3, 9: He4 + * - f[7] : minimum neutron energy to leave the target (default: 0.0) + * - f[8] : target material identifier (G4Mat) + * - f[9] : not used + * - f[10] : not used + * - f[11] : not used + * - f[12] : not used + * - f[13] : not used + * - f[14] : not used + */ + G4double f[FSIZE]; + + /** + * Number of events to be processed. + */ + G4int icoup; +}; + +#define IGRAINESIZE 19 +/** + * Random seeds used by internal random number generators. + * @see G4Incl::standardRandom + * @see G4Incl::gaussianRandom + */ +class G4Hazard{ +public: + G4Hazard() {}; + ~G4Hazard() {}; + + /** + * Random seed + */ + G4long ial; + + /** + * An array of random seeds. + */ + G4long igraine[IGRAINESIZE]; +}; + +#define MATSIZE 500 +#define MATGEOSIZE 6 +/** + * Target nuclei to be taken into account in the cascade problem. + */ +class G4Mat { +public: + G4Mat() { }; + ~G4Mat() { }; + + /** + * Charge numbers. + */ + G4int zmat[MATSIZE]; + + /** + * Mass number + */ + G4int amat[MATSIZE]; + + /** + * + */ + G4double bmax_geo[MATGEOSIZE][MATSIZE]; + + /** + * Number of materials. + */ + G4int nbmat; +}; + +#define LGNSIZE 9 +/** + * Properties of light nucleus used as a bullet. + */ +class G4LightGausNuc { +public: + G4LightGausNuc() {}; + ~G4LightGausNuc() {}; + + G4double rms1t[LGNSIZE]; + G4double pf1t[LGNSIZE]; + G4double pfln[LGNSIZE]; + G4double tfln[LGNSIZE]; + G4double vnuc[LGNSIZE]; +}; + +#define LNSIZE 30 +/** + * Data of light nuclei. + */ +class G4LightNuc { +public: + G4LightNuc() {}; + ~G4LightNuc() {}; + + /** + * r + */ + G4double r[LNSIZE]; + + /** + * a + */ + G4double a[LNSIZE]; +}; + +#define SAXWROWS 30 +#define SAXWCOLS 500 +/** + * Woods-Saxon density and its first derivative. + */ +class G4Saxw { +public: + G4Saxw() {}; + ~G4Saxw() {}; + + /** + * x + */ + G4double x[SAXWROWS][SAXWCOLS]; + + /** + * y + */ + G4double y[SAXWROWS][SAXWCOLS]; + + /** + * s + */ + G4double s[SAXWROWS][SAXWCOLS]; + + /** + * imat + */ + G4int imat; + + /** + * n + */ + G4int n; + + /** + * k + */ + G4int k; +}; + +/** + * Parameters for INCL4 model. + */ +class G4Ws { +public: + G4Ws() {}; + ~G4Ws() {}; + + /** + * r0 + */ + G4double r0; + + /** + * adif + */ + G4double adif; + + /** + * Maximum radius of the nucleus + */ + G4double rmaxws; + + /** + * drws + */ + G4double drws; + + /** + * Shape of the surface of the nucleus: + * - -1: Woods-Saxon density with impact parameter dependence + * - 0: Woods-Saxon density without impact parameter dependence + * - 1: Sharp surface (hard sphere) + */ + G4double nosurf; + + /** + * Parameter related to the maximum radius of the nucleus. + * + * rmaxws = r0 + xfoisa*A + */ + G4double xfoisa; + + /** + * Pauli blocking used in the simulation: + * - 0: statistic Pauli blocking + * - 1: strict Pauli blocking + * - 2: no Pauli blocking + */ + G4double npaulstr; + + /** + * Maximum impact parameter + */ + G4double bmax; +}; + +#define DTONSIZE 13 +/** + * Random seeds used by internal random number generators. + * @see G4Incl::standardRandom + * @see G4Incl::gaussianRandom + */ +class G4Dton { +public: + G4Dton() {}; + ~G4Dton() {}; + + G4double c[DTONSIZE]; + G4double d[DTONSIZE]; + G4double fn; +}; + +#define SPL2SIZE 100 +/** + * Random seeds used by internal random number generators. + * @see G4Incl::standardRandom + * @see G4Incl::gaussianRandom + */ +class G4Spl2 { +public: + G4Spl2() {}; + ~G4Spl2() {}; + + G4double x[SPL2SIZE]; + G4double y[SPL2SIZE]; + G4double a[SPL2SIZE]; + G4double b[SPL2SIZE]; + G4double c[SPL2SIZE]; + G4int n; +}; + +// incl4.2.cc: + +//#define BL1SIZE 300 +#define BL1SIZE 3000 +/** + * Random seeds used by internal random number generators. + * @see G4Incl::standardRandom + * @see G4Incl::gaussianRandom + */ +class G4Bl1 { +public: + G4Bl1() {}; + ~G4Bl1() {}; + + G4double p1[BL1SIZE],p2[BL1SIZE],p3[BL1SIZE]; + G4double eps[BL1SIZE]; + G4int ind1[BL1SIZE],ind2[BL1SIZE]; + G4double ta; +}; + +#define BL2CROISSIZE 19900 +#define BL2INDSIZE 19900 +/** + * + */ +class G4Bl2 { +public: + G4Bl2() {}; + ~G4Bl2() {}; + + /** + * + */ + G4double crois[BL2CROISSIZE]; + + /** + * + */ + G4int k; + + /** + * + */ + G4int ind[BL2INDSIZE]; + + /** + * + */ + G4int jnd[BL2INDSIZE]; +}; + +//#define BL3SIZE 300 +#define BL3SIZE 3000 +/** + * + */ +class G4Bl3 { +public: + G4Bl3() {}; + ~G4Bl3() {}; + + /** + * r1 and r2 + */ + G4double r1,r2; + + /** + * Nucleon positions + */ + G4double x1[BL3SIZE], x2[BL3SIZE],x3[BL3SIZE]; + + /** + * Mass numbers + */ + G4int ia1,ia2; + + /** + * rab2 + */ + G4double rab2; +}; + +/** + * G4Bl4 + */ +class G4Bl4 { +public: + G4Bl4() {}; + ~G4Bl4() {}; + + /** + * tmax5 + */ + G4double tmax5; +}; + +//#define BL5SIZE 300 +#define BL5SIZE 3000 +/** + * G4Bl5 + */ +class G4Bl5 { +public: + G4Bl5() {}; + ~G4Bl5() {}; + + /** + * tlg + */ + G4double tlg[BL5SIZE]; + + /** + * nesc + */ + G4int nesc[BL5SIZE]; +}; + +/** + * G4Bl6 + */ +class G4Bl6 { +public: + G4Bl6() {}; + ~G4Bl6() {}; + + /** + * xx10 + */ + G4double xx10; + + /** + * isa + */ + G4double isa; +}; + +/** + * G4Bl8 + */ +class G4Bl8 { +public: + G4Bl8() {}; + ~G4Bl8() {}; + + /** + * rathr + */ + G4double rathr; + + /** + * ramass + */ + G4double ramass; +}; + +//#define BL9SIZE 300 +#define BL9SIZE 3000 +/** + * G4Bl9 + */ +class G4Bl9 { +public: + G4Bl9() { + l1 = 0; + l2 = 0; + }; + ~G4Bl9() {}; + + /** + * hel + */ + G4double hel[BL9SIZE]; + + /** + * l1 and l2 + */ + G4int l1,l2; +}; + +/** + * G4Bl10 + */ +class G4Bl10 { +public: + G4Bl10() {}; + ~G4Bl10() {}; + + /** + * ri4, rs4, r2i, r2s, pdummy, pf + */ + G4double ri4,rs4,r2i,r2s,pdummy,pf; +}; + +/** + * G4Kind + */ +class G4Kind { +public: + G4Kind() {}; + ~G4Kind() {}; + + /** + * kindf7 + */ + G4int kindf7; +}; + +#define VARSIZE 3 +#define VAEPSSIZE 250 +#define VAAVM 1000 +/** + * Extra information on collisions between nucleons. + */ +class G4VarAvat { +public: + G4VarAvat() {}; + ~G4VarAvat() {}; + + /** + * + */ + G4int kveux; + + /** + * + */ + G4double bavat; + + /** + * + */ + G4int nopartavat,ncolavat; + + /** + * + */ + G4double r1_in[VARSIZE],r1_first_avat[VARSIZE]; + + /** + * + */ + G4double epsd[VAEPSSIZE],eps2[VAEPSSIZE],eps4[VAEPSSIZE],eps6[VAEPSSIZE],epsf[VAEPSSIZE]; + + /** + * + */ + G4int nb_avat; + + /** + * + */ + G4double timeavat[VAAVM],l1avat[VAAVM],l2avat[VAAVM],jpartl1[VAAVM],jpartl2[VAAVM]; + + /** + * + */ + G4double del1avat[VAAVM],del2avat[VAAVM],energyavat[VAAVM]; + + /** + * + */ + G4double bloc_paul[VAAVM],bloc_cdpp[VAAVM],go_out[VAAVM]; +}; + +#define VARNTPSIZE 255 +class G4VarNtp { +public: + G4VarNtp() {}; + ~G4VarNtp() {}; + + /** + * A of the remnant. + */ + G4double massini; + + /** + * Z of the remnant. + */ + G4double mzini; + + /** + * Excitation energy. + */ + G4double exini; + + /** + * Cascade n multip. + */ + G4int mulncasc; + + /** + * Evaporation n multip. + */ + G4int mulnevap; + + /** + * Total n multip. + */ + G4int mulntot; + + /** + * Impact parameter. + */ + G4double bimpact; + + /** + * Remnant Intrinsic Spin. + */ + G4int jremn; + + /** + * Fission 1/0=Y/N. + */ + G4int kfis; + + /** + * Excit energy at fis. + */ + G4double estfis; + + /** + * Z of fiss nucleus. + */ + G4int izfis; + + /** + * A of fiss nucleus. + */ + G4int iafis; + + /** + * Number of particles. + */ + G4int ntrack; + + /** + * emitted in cascade (0) or evaporation (1). + */ + G4int itypcasc[VARNTPSIZE]; + + + /** + * A (-1 for pions). + */ + G4int avv[VARNTPSIZE]; + + /** + * Z + */ + G4int zvv[VARNTPSIZE]; + + /** + * Kinetic energy. + */ + G4double enerj[VARNTPSIZE]; + + /** + * Momentum. + */ + G4double plab[VARNTPSIZE]; + + /** + * Theta angle. + */ + G4double tetlab[VARNTPSIZE]; + + /** + * Phi angle. + */ + G4double philab[VARNTPSIZE]; +}; + +/** + * Pauli blocking. + */ +class G4Paul { +public: + G4Paul() {}; + ~G4Paul() {}; + + /** + * + */ + G4double ct0,ct1,ct2,ct3,ct4,ct5,ct6,pr,pr2,xrr,xrr2; + + /** + * + */ + G4double cp0,cp1,cp2,cp3,cp4,cp5,cp6; +}; + + +#endif diff --git a/source/processes/hadronic/models/incl/include/G4InclLightIonInterface.hh b/source/processes/hadronic/models/incl/include/G4InclLightIonInterface.hh new file mode 100644 index 0000000000..74a97b58a4 --- /dev/null +++ b/source/processes/hadronic/models/incl/include/G4InclLightIonInterface.hh @@ -0,0 +1,123 @@ +// +// ******************************************************************** +// * 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: G4InclLightIonInterface.hh,v 1.5 2007/10/31 10:44:22 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + + +// CLASS DESCRIPTION +// This class is a preliminary interface code for INCL4 cascade and +// ABLA evaporation codes. This class is intended to be used as an +// interface for colliding light ions (deuterons, tritons, he3 and +// alphas) to nuclei. + +// This class was created by Pekka Kaitaniemi +// (kaitanie@cc.helsinki.fi) , Helsinki Institute of Physics using +// G4CascadeInterface as a template. + + +#ifndef G4INCLLIGHTIONINTERFACE_H +#define G4INCLLIGHTIONINTERFACE_H 1 + +#include "G4Nucleon.hh" +#include "G4Nucleus.hh" +#include "G4HadronicInteraction.hh" +#include "G4VIntraNuclearTransportModel.hh" +#include "G4KineticTrackVector.hh" +#include "G4FragmentVector.hh" +#include "G4ParticleChange.hh" +#include "G4ReactionProductVector.hh" +#include "G4ReactionProduct.hh" + +// INCL includes +#include "G4InclDataDefs.hh" +#include "G4AblaDataDefs.hh" +#include "G4Incl.hh" + +#include +#include + +using namespace std; + +/** + * Interface for INCL. This interface handles basic light ion + * bullet particles (deuterons, tritons, he3 and alphas). + * @see G4InclAblaLightIonInterface + */ + +class G4InclLightIonInterface : public G4VIntraNuclearTransportModel { + +public: + /** + * Basic constructor. + */ + G4InclLightIonInterface(); + + + G4int operator==(G4InclLightIonInterface& right) { + return (this == &right); + } + + G4int operator!=(G4InclLightIonInterface& right) { + return (this != &right); + } + + ~G4InclLightIonInterface(); // Destructor + + G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries, G4V3DNucleus* theNucleus); // Idle + + /** + * Main method to apply the INCL/ABLA physics model. + * @param aTrack the projectile particle + * @param theNucleus target nucleus + * @return the output of the INCL/ABLA physics model + */ + G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& theNucleus); + +private: + G4int outputVerbosity; + G4int verboseLevel; + +private: + G4Hazard *hazard; // The random seeds used by INCL. + G4VarNtp *varntp; + G4Calincl *calincl; + G4Ws *ws; + G4Mat *mat; + G4Incl *incl; + + G4HadFinalState theResult; + ofstream diagdata; + + G4int eventNumber; + G4double previousTargetA; + G4double previousTargetZ; +}; + +#endif // G4INCLLIGHTIONINTERFACE_H diff --git a/source/processes/hadronic/models/incl/src/G4Abla.cc b/source/processes/hadronic/models/incl/src/G4Abla.cc new file mode 100644 index 0000000000..13b95397ac --- /dev/null +++ b/source/processes/hadronic/models/incl/src/G4Abla.cc @@ -0,0 +1,5304 @@ +// +// ******************************************************************** +// * 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: G4Abla.cc,v 1.14 2007/12/03 19:36:06 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +#include + +#include "G4Abla.hh" +#include "G4InclAblaDataFile.hh" +#include "Randomize.hh" +#include + +G4Abla::G4Abla() +{ + +} + +G4Abla::G4Abla(G4Hazard *hazard, G4Volant *volant) +{ + verboseLevel = 0; + + volant = volant; // ABLA internal particle data + volant->iv = 0; + hazard = hazard; // Random seeds + + varntp = new G4VarNtp(); + pace = new G4Pace(); + ald = new G4Ald(); + ablamain = new G4Ablamain(); + emdpar = new G4Emdpar(); + eenuc = new G4Eenuc(); + ec2sub = new G4Ec2sub(); + ecld = new G4Ecld(); + fb = new G4Fb(); + fiss = new G4Fiss(); + opt = new G4Opt(); +} + +G4Abla::G4Abla(G4Hazard *aHazard, G4Volant *aVolant, G4VarNtp *aVarntp) +{ + verboseLevel = 0; + + volant = aVolant; // ABLA internal particle data + volant->iv = 0; + hazard = aHazard; // Random seeds + varntp = aVarntp; // Output data structure + varntp->ntrack = 0; + + pace = new G4Pace(); + ald = new G4Ald(); + ablamain = new G4Ablamain(); + emdpar = new G4Emdpar(); + eenuc = new G4Eenuc(); + ec2sub = new G4Ec2sub(); + ecld = new G4Ecld(); + fb = new G4Fb(); + fiss = new G4Fiss(); + opt = new G4Opt(); +} + +G4Abla::~G4Abla() +{ + delete pace; + delete ald; + delete ablamain; + delete emdpar; + delete eenuc; + delete ec2sub; + delete ecld; + delete fb; + delete fiss; + delete opt; +} + +// Main interface to the evaporation + +// Possible problem with generic Geant4 interface: ABLA evaporation +// needs angular momentum information (calculated by INCL) to +// work. Maybe there is a way to obtain this information from +// G4Fragment? + +void G4Abla::breakItUp(G4double nucleusA, G4double nucleusZ, G4double nucleusMass, G4double excitationEnergy, + G4double angularMomentum, G4double recoilEnergy, G4double momX, G4double momY, G4double momZ, + G4int eventnumber) +{ + // C ************************* EVAPORATION KHS ********* + + const G4double uma = 931.4942; + const G4double melec = 0.511; + const G4double fmp = 938.27231; + const G4double fmn = 939.56563; + + // Rotation matrix... + G4double sitet = 0.0; + G4double R[4][4]; + + G4double plab1, gam1, eta1; + + G4double plab2, gam2, eta2; + + G4double stet1; + G4double stet2; + + G4int nbpevap; + G4int mempaw = 0, memiv = 0; + + G4double csdir1[4]; + G4double csdir2[4]; + + G4double csrem[4]; + G4double alrem = 0.0, berem = 0.0, garem = 0.0; + + G4double pfis_rem[4]; + G4double pf1_rem[4]; + + G4double e_evapo = 0.0; + G4double el; + G4double fmcv; + + G4double aff1; + G4double zff1; + G4double eff1; + + G4double aff2; + G4double zff2; + G4double eff2; + + G4double v1, v2; + + G4double t2 = 0.0; + G4double ctet1; + G4double ctet2 = 0.0; + G4double phi1; + G4double phi2 = 0.0; + G4double p2 = 0.0; + G4double epf2_out = 0.0 ; ///AH adding initialization + G4int lma_pf1 = 0, lmi_pf1 = 0; + G4int lma_pf2 = 0, lmi_pf2 = 0; + G4int nopart = 0; + + G4double cst, sst, csf, ssf; + + G4double zf, af, mtota, pleva, pxeva, pyeva; + G4int ff = 0; + G4int inum = eventnumber; + G4int inttype; + G4double esrem = excitationEnergy; + + G4double aprf = nucleusA; + G4double zprf = nucleusZ; + G4double mcorem = nucleusMass; + G4double ee = excitationEnergy; + G4double jprf = angularMomentum; // actually root-mean-squared + + G4double erecrem = recoilEnergy; + G4double trem; + G4double pxrem = momX; + G4double pyrem = momY; + G4double pzrem = momZ; + + G4double remmass; + + varntp->ntrack = 0; + volant->iv = 0; + + G4double pcorem = std::sqrt(erecrem*(erecrem +2.*938.2796*nucleusA)); + // G4double pcorem = std::sqrt(std::pow(momX,2) + std::pow(momY,2) + std::pow(momZ,2)); + // assert(isnan(pcorem) == false); + if(esrem >= 1.0e-3) { //then + // void evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf, + // G4double *zf_par, G4double *af_par, G4double *mtota_par, + // G4double *pleva_par, G4double *pxeva_par, G4double *pyeva_par, + // G4double *ff_par, G4int *inttype_par, G4int *inum_par); + // G4cout <<"Evaporating nucleus: " << G4endl; + // G4cout <<"A = " << aprf << " Z = " << zprf << G4endl; + evapora(zprf,aprf,ee,jprf, &zf, &af, &mtota, &pleva, &pxeva, &pyeva, &ff, &inttype, &inum); + // assert(isnan(pleva) == false); + // assert(isnan(pxeva) == false); + // assert(isnan(pyeva) == false); + } + else { + ff = 0; + zf = zprf; + af = aprf; + pxeva = pxrem; + pyeva = pyrem; + pleva = pzrem; + } // endif + // assert(isnan(zf) == false); + // assert(isnan(af) == false); + // assert(isnan(ee) == false); + // + // AFP,ZFP is the final fragment if no fission occurs (FF=0) + // In case of fission (FF=1) it is the nucleus that undergoes fission. +// G4double zfp = idnint(zf); +// G4double afp = idnint(af); + + if (ff == 1) { //then + // --------------------- Here, a FISSION occures -------------------------- + // + // FEE: (EE) energy of fissioning nucleus ABOVE the fission barrier. + // + // calcul des impulsions des particules evaporees (avant fission) + // dans le systeme labo: + + trem = double(erecrem); + remmass = pace2(aprf,zprf) + aprf*uma - zprf*melec; // canonic + remmass = mcorem + double(esrem); // ok + remmass = mcorem; //cugnon + varntp->kfis = 1; + G4double gamrem = (remmass + trem)/remmass; + G4double etrem = std::sqrt(trem*(trem + 2.0*remmass))/remmass; + // assert(isnan(etrem) == false); + // This is not treated as accurately as for the non fission case for which + // the remnant mass is computed to satisfy the energy conservation + // of evaporated particles. But it is not bad and more canonical! + remmass = pace2(aprf,zprf) + aprf*uma - zprf*melec+double(esrem); // !canonic + // Essais avec la masse de KHS (9/2002): + el = 0.0; + mglms(aprf,zprf,0,&el); + remmass = zprf*fmp + (aprf-zprf)*fmn + el + double(esrem); + + gamrem = std::sqrt(std::pow(pcorem,2) + std::pow(remmass,2))/remmass; + // assert(isnan(gamrem) == false); + etrem = pcorem/remmass; + // assert(isnan(etrem) == false); + + alrem = pxrem/pcorem; + // assert(isnan(alrem) == false); + berem = pyrem/pcorem; + // assert(isnan(berem) == false); + garem = pzrem/pcorem; + // assert(isnan(garem) == false); + + csrem[0] = 0.0; // Should not be used. + csrem[1] = alrem; + csrem[2] = berem; + csrem[3] = garem; + + // C Pour Vérif Remnant = evapo(Pre fission) + Noyau_fissionant (système Remnant) + G4double bil_e = 0.0; + G4double bil_px = 0.0; + G4double bil_py = 0.0; + G4double bil_pz = 0.0; + G4double masse = 0.0; + + for(G4int iloc = 1; iloc <= volant->iv; iloc++) { //DO iloc=1,iv + // assert(isnan(volant->zpcv[iloc]) == false); + // assert(volant->acv[iloc] != 0); + // assert(volant->zpcv[iloc] != 0); + mglms(double(volant->acv[iloc]),double(volant->zpcv[iloc]),0,&el); + // assert(isnan(el) == false); + masse = volant->zpcv[iloc]*fmp + (volant->acv[iloc] - volant->zpcv[iloc])*fmn + el; + // assert(isnan(masse) == false); + bil_e = bil_e + std::sqrt(std::pow(volant->pcv[iloc],2) + std::pow(masse,2)); + // assert(isnan(bil_e) == false); + bil_px = bil_px + volant->pcv[iloc]*(volant->xcv[iloc]); + bil_py = bil_py + volant->pcv[iloc]*(volant->ycv[iloc]); + bil_pz = bil_pz + volant->pcv[iloc]*(volant->zcv[iloc]); + } // enddo + // C Ce bilan (impulsion nulle) est parfait. (Bil_Px=Bil_Px+PXEVA....) + + G4int ndec = 1; + + if(volant->iv != 0) { //then + if(verboseLevel > 2) { + G4cout <<"varntp->ntrack = " << varntp->ntrack << G4endl; + G4cout <<"1st Translab: Adding indices from " << ndec << " to " << volant->iv << G4endl; + } + nopart = varntp->ntrack - 1; + translab(gamrem,etrem,csrem,nopart,ndec); + if(verboseLevel > 2) { + G4cout <<"Translab complete!" << G4endl; + G4cout <<"varntp->ntrack = " << varntp->ntrack << G4endl; + } + } + nbpevap = volant->iv; // nombre de particules d'evaporation traitees + + // C + // C Now calculation of the fission fragment distribution including + // C evaporation from the fragments. + // C + + // C Distribution of the fission fragments: + + // void fissionDistri(G4double a,G4double z,G4double e, + // G4double &a1,G4double &z1,G4double &e1,G4double &v1, + // G4double &a2,G4double &z2,G4double &e2,G4double &v2); + + fissionDistri(af,zf,ee,aff1,zff1,eff1,v1,aff2,zff2,eff2,v2); + + // C verif des A et Z decimaux: + G4int na_f = int(std::floor(af + 0.5)); + G4int nz_f = int(std::floor(zf + 0.5)); + varntp->izfis = nz_f; // copie dans le ntuple + varntp->iafis = na_f; + G4int na_pf1 = int(std::floor(aff1 + 0.5)); + G4int nz_pf1 = int(std::floor(zff1 + 0.5)); + G4int na_pf2 = int(std::floor(aff2 + 0.5)); + G4int nz_pf2 = int(std::floor(zff2 + 0.5)); + + if((na_f != (na_pf1+na_pf2)) || (nz_f != (nz_pf1+nz_pf2))) { + if(verboseLevel > 2) { + G4cout <<"problemes arrondis dans la fission " << G4endl; + G4cout << "af,zf,aff1,zff1,aff2,zff2" << G4endl; + G4cout << af <<" , " << zf <<" , " << aff1 <<" , " << zff1 <<" , " << aff2 <<" , " << zff2 << G4endl; + G4cout << "a,z,a1,z1,a2,z2 integer" << G4endl; + G4cout << na_f <<" , " << nz_f <<" , " << na_pf1 <<" , " << nz_pf1 <<" , " << na_pf2 <<" , " << nz_pf2 << G4endl; + } + } + + // Calcul de l'impulsion des PF dans le syteme noyau de fission: + G4int kboud = idnint(zf); + G4int jboud = idnint(af-zf); + //G4double ef = fb->efa[kboud][jboud]; // barriere de fission + G4double ef = fb->efa[jboud][kboud]; // barriere de fission + // assert(isnan(ef) == false); + varntp->estfis = ee + ef; // copie dans le ntuple + + // C MASSEF = pace2(AF,ZF) + // C MASSEF = MASSEF + AF*UMA - ZF*MELEC + EE + EF + // C MASSE1 = pace2(DBLE(AFF1),DBLE(ZFF1)) + // C MASSE1 = MASSE1 + AFF1*UMA - ZFF1*MELEC + EFF1 + // C MASSE2 = pace2(DBLE(AFF2),DBLE(ZFF2)) + // C MASSE2 = MASSE2 + AFF2*UMA - ZFF2*MELEC + EFF2 + // C WRITE(6,*) 'MASSEF,MASSE1,MASSE2',MASSEF,MASSE1,MASSE2 + // C MGLMS est la fonction de masse cohérente avec KHS evapo-fis. + // C Attention aux parametres, ici 0=OPTSHP, NO microscopic correct. + mglms(af,zf,0,&el); + // assert(isnan(el) == false); + G4double massef = zf*fmp + (af - zf)*fmn + el + ee + ef; + // assert(isnan(massef) == false); + mglms(double(aff1),double(zff1),0,&el); + // assert(isnan(el) == false); + G4double masse1 = zff1*fmp + (aff1-zff1)*fmn + el + eff1; + // assert(isnan(masse1) == false); + mglms(aff2,zff2,0,&el); + // assert(isnan(el) == false); + G4double masse2 = zff2*fmp + (aff2 - zff2)*fmn + el + eff2; + // assert(isnan(masse2) == false); + // C WRITE(6,*) 'MASSEF,MASSE1,MASSE2',MASSEF,MASSE1,MASSE2 + G4double b = massef - masse1 - masse2; + if(b < 0.0) { //then + b=0.0; + if(verboseLevel > 2) { + G4cout <<"anomalie dans la fission: " << G4endl; + G4cout << inum<< " , " << af<< " , " <igraine[13])); + ctet1 = 2.0*rndm - 1.0; + standardRandom(&rndm,&(hazard->igraine[9])); + phi1 = rndm*2.0*3.141592654; + + // C ----Coefs de la transformation de Lorentz (noyau de fission -> Remnant) + G4double peva = std::pow(pxeva,2) + std::pow(pyeva,2) + std::pow(pleva,2); + G4double gamfis = std::sqrt(std::pow(massef,2) + peva)/massef; + // assert(isnan(gamfis) == false); + peva = std::sqrt(peva); + // assert(isnan(peva) == false); + G4double etfis = peva/massef; + + G4double epf1_in; + G4double epf1_out; + + // C ----Matrice de rotation (noyau de fission -> Remnant) + if(peva >= 1.0e-4) { + sitet = std::sqrt(std::pow(pxeva,2)+std::pow(pyeva,2))/peva; + // assert(isnan(sitet) == false); + } + if(sitet > 1.0e-5) { //then + G4double cstet = pleva/peva; + G4double siphi = pyeva/(sitet*peva); + G4double csphi = pxeva/(sitet*peva); + + R[1][1] = cstet*csphi; + R[1][2] = -siphi; + R[1][3] = sitet*csphi; + R[2][1] = cstet*siphi; + R[2][2] = csphi; + R[2][3] = sitet*siphi; + R[3][1] = -sitet; + R[3][2] = 0.0; + R[3][3] = cstet; + } + else { + R[1][1] = 1.0; + R[1][2] = 0.0; + R[1][3] = 0.0; + R[2][1] = 0.0; + R[2][2] = 1.0; + R[2][3] = 0.0; + R[3][1] = 0.0; + R[3][2] = 0.0; + R[3][3] = 1.0; + } // endif + // c test de verif: + + if((zff1 <= 0.0) || (aff1 <= 0.0) || (aff1 < zff1)) { //then + if(verboseLevel > 2) { + G4cout <<"zf = " << zf <<" af = " << af <<"ee = " << ee <<"zff1 = " << zff1 <<"aff1 = " << aff1 << G4endl; + } + } + else { + // C ---------------------- PF1 will evaporate + epf1_in = double(eff1); + epf1_out = epf1_in; + // void evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf, + // G4double *zf_par, G4double *af_par, G4double *mtota_par, + // G4double *pleva_par, G4double *pxeva_par, G4double *pyeva_par, + // G4double *ff_par, G4int *inttype_par, G4int *inum_par); + G4double zf1, af1, malpha1, ffpleva1, ffpxeva1, ffpyeva1; + G4int ff1, ftype1; + evapora(zff1, aff1, epf1_out, 0.0, &zf1, &af1, &malpha1, &ffpleva1, + &ffpxeva1, &ffpyeva1, &ff1, &ftype1, &inum); + // C On ajoute le fragment: + // assert(af1 > 0); + volant->iv = volant->iv + 1; + // assert(af1 != 0); + // assert(zf1 != 0); + volant->acv[volant->iv] = af1; + volant->zpcv[volant->iv] = zf1; + if(verboseLevel > 2) { + G4cout <<"Added fission fragment: a = " << volant->acv[volant->iv] << " z = " << volant->zpcv[volant->iv] << G4endl; + } + peva = std::sqrt(std::pow(ffpxeva1,2) + std::pow(ffpyeva1,2) + std::pow(ffpleva1,2)); + // assert(isnan(peva) == false); + volant->pcv[volant->iv] = peva; + if(peva > 0.001) { // then + volant->xcv[volant->iv] = ffpxeva1/peva; + volant->ycv[volant->iv] = ffpyeva1/peva; + volant->zcv[volant->iv] = ffpleva1/peva; + } + else { + volant->xcv[volant->iv] = 1.0; + volant->ycv[volant->iv] = 0.0; + volant->zcv[volant->iv] = 0.0; + } // end if + + // C Pour Vérif evapo de PF1 dans le systeme du Noyau Fissionant + G4double bil1_e = 0.0; + G4double bil1_px = 0.0; + G4double bil1_py=0.0; + G4double bil1_pz=0.0; + for(G4int iloc = nbpevap + 1; iloc <= volant->iv; iloc++) { //do iloc=nbpevap+1,iv + // for(G4int iloc = nbpevap + 1; iloc <= volant->iv + 1; iloc++) { //do iloc=nbpevap+1,iv + mglms(volant->acv[iloc], volant->zpcv[iloc],0,&el); + masse = volant->zpcv[iloc]*fmp + (volant->acv[iloc] - volant->zpcv[iloc])*fmn + el; + // assert(isnan(masse) == false); + bil1_e = bil1_e + std::sqrt(std::pow(volant->pcv[iloc],2) + std::pow(masse,2)); + // assert(isnan(bil1_e) == false); + bil1_px = bil1_px + volant->pcv[iloc]*(volant->xcv[iloc]); + bil1_py = bil1_py + volant->pcv[iloc]*(volant->ycv[iloc]); + bil1_pz = bil1_pz + volant->pcv[iloc]*(volant->zcv[iloc]); + } // enddo + + // Calcul des cosinus directeurs de PF1 dans le Remnant et calcul + // des coefs pour la transformation de Lorentz Systeme PF --> Systeme Remnant + translabpf(masse1,t1,p1,ctet1,phi1,gamfis,etfis,R,&plab1,&gam1,&eta1,csdir1); + + // calcul des impulsions des particules evaporees dans le systeme Remnant: + if(verboseLevel > 2) { + G4cout <<"2nd Translab (pf1 evap): Adding indices from " << nbpevap+1 << " to " << volant->iv << G4endl; + } + nopart = varntp->ntrack - 1; + translab(gam1,eta1,csdir1,nopart,nbpevap+1); + if(verboseLevel > 2) { + G4cout <<"After translab call... varntp->ntrack = " << varntp->ntrack << G4endl; + } + memiv = nbpevap + 1; // memoires pour la future transformation + mempaw = nopart; // remnant->labo pour pf1 et pf2. + lmi_pf1 = nopart + nbpevap + 1; // indices min et max dans /var_ntp/ + lma_pf1 = nopart + volant->iv; // des particules issues de pf1 + nbpevap = volant->iv; // nombre de particules d'evaporation traitees + } // end if + // C --------------------- End of PF1 calculation + + // c test de verif: + if((zff2 <= 0.0) || (aff2 <= 0.0) || (aff2 <= zff2)) { //then + if(verboseLevel > 2) { + G4cout << zf << " " << af << " " << ee << " " << zff2 << " " << aff2 << G4endl; + } + } + else { + // C ---------------------- PF2 will evaporate + G4double epf2_in = double(eff2); + G4double epf2_out = epf2_in; + // void evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf, + // G4double *zf_par, G4double *af_par, G4double *mtota_par, + // G4double *pleva_par, G4double *pxeva_par, G4double *pyeva_par, + // G4double *ff_par, G4int *inttype_par, G4int *inum_par); + G4double zf2, af2, malpha2, ffpleva2, ffpxeva2, ffpyeva2; + G4int ff2, ftype2; + evapora(zff2,aff2,epf2_out,0.0,&zf2,&af2,&malpha2,&ffpleva2, + &ffpxeva2,&ffpyeva2,&ff2,&ftype2,&inum); + // C On ajoute le fragment: + volant->iv = volant->iv + 1; + volant->acv[volant->iv] = af2; + volant->zpcv[volant->iv] = zf2; + if(verboseLevel > 2) { + G4cout <<"Added fission fragment: a = " << volant->acv[volant->iv] << " z = " << volant->zpcv[volant->iv] << G4endl; + } + peva = std::sqrt(std::pow(ffpxeva2,2) + std::pow(ffpyeva2,2) + std::pow(ffpleva2,2)); + // assert(isnan(peva) == false); + volant->pcv[volant->iv] = peva; + // exit(0); + if(peva > 0.001) { //then + volant->xcv[volant->iv] = ffpxeva2/peva; + volant->ycv[volant->iv] = ffpyeva2/peva; + volant->zcv[volant->iv] = ffpleva2/peva; + } + else { + volant->xcv[volant->iv] = 1.0; + volant->ycv[volant->iv] = 0.0; + volant->zcv[volant->iv] = 0.0; + } //end if + // C Pour Vérif evapo de PF1 dans le systeme du Noyau Fissionant + G4double bil2_e = 0.0; + G4double bil2_px = 0.0; + G4double bil2_py = 0.0; + G4double bil2_pz = 0.0; + // for(G4int iloc = nbpevap + 1; iloc <= volant->iv; iloc++) { //do iloc=nbpevap+1,iv + for(G4int iloc = nbpevap + 1; iloc <= volant->iv; iloc++) { //do iloc=nbpevap+1,iv + mglms(volant->acv[iloc],volant->zpcv[iloc],0,&el); + masse = volant->zpcv[iloc]*fmp + (volant->acv[iloc] - volant->zpcv[iloc])*fmn + el; + bil2_e = bil2_e + std::sqrt(std::pow(volant->pcv[iloc],2) + std::pow(masse,2)); + // assert(isnan(bil2_e) == false); + bil2_px = bil2_px + volant->pcv[iloc]*(volant->xcv[iloc]); + bil2_py = bil2_py + volant->pcv[iloc]*(volant->ycv[iloc]); + bil2_pz = bil2_pz + volant->pcv[iloc]*(volant->zcv[iloc]); + } //enddo + + // C ----Calcul des cosinus directeurs de PF2 dans le Remnant et calcul + // c des coefs pour la transformation de Lorentz Systeme PF --> Systeme Remnant + G4double t2 = b - t1; + // G4double ctet2 = -ctet1; + ctet2 = -1.0*ctet1; + assert(std::fabs(ctet2) <= 1.0); + // assert(isnan(ctet2) == false); + phi2 = dmod(phi1+3.141592654,6.283185308); + // assert(isnan(phi2) == false); + G4double p2 = std::sqrt(t2*(t2+2.0*masse2)); + // assert(isnan(p2) == false); + + // void translabpf(G4double masse1, G4double t1, G4double p1, G4double ctet1, + // G4double phi1, G4double gamrem, G4double etrem, G4double R[][4], + // G4double *plab1, G4double *gam1, G4double *eta1, G4double csdir[]); + translabpf(masse2,t2,p2,ctet2,phi2,gamfis,etfis,R,&plab2,&gam2,&eta2,csdir2); + // C + // C calcul des impulsions des particules evaporees dans le systeme Remnant: + // c + if(verboseLevel > 2) { + G4cout <<"3rd Translab (pf2 evap): Adding indices from " << nbpevap+1 << " to " << volant->iv << G4endl; + } + nopart = varntp->ntrack - 1; + translab(gam2,eta2,csdir2,nopart,nbpevap+1); + lmi_pf2 = nopart + nbpevap + 1; // indices min et max dans /var_ntp/ + lma_pf2 = nopart + volant->iv; // des particules issues de pf2 + } // end if + // C --------------------- End of PF2 calculation + + // C Pour vérifications: calculs du noyau fissionant et des PF dans + // C le systeme du remnant. + for(G4int iloc = 1; iloc <= 3; iloc++) { // do iloc=1,3 + pfis_rem[iloc] = 0.0; + } // enddo + G4double efis_rem, pfis_trav[4]; + lorab(gamfis,etfis,massef,pfis_rem,&efis_rem,pfis_trav); + rotab(R,pfis_trav,pfis_rem); + + stet1 = std::sqrt(1.0 - std::pow(ctet1,2)); + // assert(isnan(stet1) == false); + pf1_rem[1] = p1*stet1*std::cos(phi1); + pf1_rem[2] = p1*stet1*std::sin(phi1); + pf1_rem[3] = p1*ctet1; + G4double e1_rem; + lorab(gamfis,etfis,masse1+t1,pf1_rem,&e1_rem,pfis_trav); + rotab(R,pfis_trav,pf1_rem); + + stet2 = std::sqrt(1.0 - std::pow(ctet2,2)); + assert(std::pow(ctet2,2) >= 0.0); + assert(std::pow(ctet2,2) <= 1.0); + // assert(isnan(stet2) == false); + + G4double pf2_rem[4]; + G4double e2_rem; + pf2_rem[1] = p2*stet2*std::cos(phi2); + pf2_rem[2] = p2*stet2*std::sin(phi2); + pf2_rem[3] = p2*ctet2; + lorab(gamfis,etfis,masse2+t2,pf2_rem,&e2_rem,pfis_trav); + rotab(R,pfis_trav,pf2_rem); + // C Verif 0: Remnant = evapo_pre_fission + Noyau Fissionant + bil_e = remmass - efis_rem - bil_e; + bil_px = bil_px + pfis_rem[1]; + bil_py = bil_py + pfis_rem[2]; + bil_pz = bil_pz + pfis_rem[3]; + // C Verif 1: noyau fissionant = PF1 + PF2 dans le systeme remnant + // G4double bilan_e = efis_rem - e1_rem - e2_rem; + // G4double bilan_px = pfis_rem[1] - pf1_rem[1] - pf2_rem[1]; + // G4double bilan_py = pfis_rem[2] - pf1_rem[2] - pf2_rem[2]; + // G4double bilan_pz = pfis_rem[3] - pf1_rem[3] - pf2_rem[3]; + // C Verif 2: PF1 et PF2 egaux a toutes leurs particules evaporees + // C (Systeme remnant) + if((lma_pf1-lmi_pf1) != 0) { //then + G4double bil_e_pf1 = e1_rem - epf1_out; + G4double bil_px_pf1 = pf1_rem[1]; + G4double bil_py_pf1 = pf1_rem[2]; + G4double bil_pz_pf1 = pf1_rem[3]; + for(G4int ipf1 = lmi_pf1; ipf1 <= lma_pf1; ipf1++) { //do ipf1=lmi_pf1,lma_pf1 + bil_e_pf1 = bil_e_pf1 - (std::pow(varntp->plab[ipf1],2) + std::pow(varntp->enerj[ipf1],2))/(2.0*(varntp->enerj[ipf1])); + cst = std::cos(varntp->tetlab[ipf1]/57.2957795); + sst = std::sin(varntp->tetlab[ipf1]/57.2957795); + csf = std::cos(varntp->philab[ipf1]/57.2957795); + ssf = std::sin(varntp->philab[ipf1]/57.2957795); + bil_px_pf1 = bil_px_pf1 - varntp->plab[ipf1]*sst*csf; + bil_py_pf1 = bil_py_pf1 - varntp->plab[ipf1]*sst*ssf; + bil_pz_pf1 = bil_pz_pf1 - varntp->plab[ipf1]*cst; + } // enddo + } //endif + + if((lma_pf2-lmi_pf2) != 0) { //then + G4double bil_e_pf2 = e2_rem - epf2_out; + G4double bil_px_pf2 = pf2_rem[1]; + G4double bil_py_pf2 = pf2_rem[2]; + G4double bil_pz_pf2 = pf2_rem[3]; + for(G4int ipf2 = lmi_pf2; ipf2 <= lma_pf2; ipf2++) { //do ipf2=lmi_pf2,lma_pf2 + bil_e_pf2 = bil_e_pf2 - (std::pow(varntp->plab[ipf2],2) + std::pow(varntp->enerj[ipf2],2))/(2.0*(varntp->enerj[ipf2])); + G4double cst = std::cos(varntp->tetlab[ipf2]/57.2957795); + G4double sst = std::sin(varntp->tetlab[ipf2]/57.2957795); + G4double csf = std::cos(varntp->philab[ipf2]/57.2957795); + G4double ssf = std::sin(varntp->philab[ipf2]/57.2957795); + bil_px_pf2 = bil_px_pf2 - varntp->plab[ipf2]*sst*csf; + bil_py_pf2 = bil_py_pf2 - varntp->plab[ipf2]*sst*ssf; + bil_pz_pf2 = bil_pz_pf2 - varntp->plab[ipf2]*cst; + } // enddo + } //endif + // C + // C ---- Transformation systeme Remnant -> systeme labo. (evapo de PF1 ET PF2) + // C + // G4double mempaw, memiv; + if(verboseLevel > 2) { + G4cout <<"4th Translab: Adding indices from " << memiv << " to " << volant->iv << G4endl; + } + translab(gamrem,etrem,csrem,mempaw,memiv); + // C ******************* END of fission calculations ************************ + } + else { + // C ************************ Evapo sans fission ***************************** + // C Here, FF=0, --> Evapo sans fission, on ajoute le fragment: + // C ************************************************************************* + varntp->kfis = 0; + if(verboseLevel > 2) { + G4cout <<"Evaporation without fission" << G4endl; + } + volant->iv = volant->iv + 1; + volant->acv[volant->iv] = af; + volant->zpcv[volant->iv] = zf; + G4double peva = std::sqrt(std::pow(pxeva,2)+std::pow(pyeva,2)+std::pow(pleva,2)); + // assert(isnan(peva) == false); + volant->pcv[volant->iv] = peva; + if(peva > 0.001) { //then + volant->xcv[volant->iv] = pxeva/peva; + volant->ycv[volant->iv] = pyeva/peva; + volant->zcv[volant->iv] = pleva/peva; + } + else { + volant->xcv[volant->iv] = 1.0; + volant->ycv[volant->iv] = 0.0; + volant->zcv[volant->iv] = 0.0; + } // end if + + // C + // C calcul des impulsions des particules evaporees dans le systeme labo: + // c + trem = double(erecrem); + // C REMMASS = pace2(APRF,ZPRF) + APRF*UMA - ZPRF*MELEC !Canonic + // C REMMASS = MCOREM + DBLE(ESREM) !OK + remmass = mcorem; //Cugnon + // C GAMREM = (REMMASS + TREM)/REMMASS !OK + // C ETREM = DSQRT(TREM*(TREM + 2.*REMMASS))/REMMASS !OK + csrem[0] = 0.0; // Should not be used. + csrem[1] = alrem; + csrem[2] = berem; + csrem[3] = garem; + + // for(G4int j = 1; j <= volant->iv; j++) { //do j=1,iv + for(G4int j = 1; j <= volant->iv; j++) { //do j=1,iv + if(volant->acv[j] == 0) { + if(verboseLevel > 2) { + G4cout <<"volant->acv[" << j << "] = 0" << G4endl; + G4cout <<"volant->iv = " << volant->iv << G4endl; + } + } + if(volant->acv[j] > 0) { + assert(volant->acv[j] != 0); + // assert(volant->zpcv[j] != 0); + mglms(volant->acv[j],volant->zpcv[j],0,&el); + fmcv = volant->zpcv[j]*fmp + (volant->acv[j] - volant->zpcv[j])*fmn + el; + e_evapo = e_evapo + std::sqrt(std::pow(volant->pcv[j],2) + std::pow(fmcv,2)); + // assert(isnan(e_evapo) == false); + } + } // enddo + + // C Redefinition pour conservation d'impulsion!!! + // C this mass obtained by energy balance is very close to the + // C mass of the remnant computed by pace2 + excitation energy (EE). (OK) + remmass = e_evapo; + + G4double gamrem = std::sqrt(std::pow(pcorem,2)+std::pow(remmass,2))/remmass; + // assert(isnan(gamrem) == false); + G4double etrem = pcorem/remmass; + + if(verboseLevel > 2) { + G4cout <<"5th Translab (no fission): Adding indices from " << 1 << " to " << volant->iv << G4endl; + } + nopart = varntp->ntrack - 1; + translab(gamrem,etrem,csrem,nopart,1); + + // C End of the (FISSION - NO FISSION) condition (FF=1 or 0) + } //end if + // C *********************** FIN de l'EVAPO KHS ******************** +} + +// Evaporation code +void G4Abla::initEvapora() +{ + // 6 C ******************************************************************* + // 7 C + // 8 C SUBROUTINE ABLAINIT(STATUS,TSTAT,NAME,FPATH) + // 9 C******************************************************************** + // 10 + // 11 SUBROUTINE INIT_EVAPORA(RACINE) + // 12 + // 13 C******************************************************************** + // 14 C ON INPUT: INPUT PARAMETERS FROM FILE + // 15 C--------------------------------------------------------------------- + // 16 C ON OUTPUT: + // 17 C STATUS - FLAG FOR END OF INPUT FILE + // 18 C TSTAT - FLAG FOR NTUPLE-OUTPUT + // 19 C NAME - NAME FOR ISOTOPIC PRODUCTION CROSS SECTION FILES + // 20 C FPATH - PATH FOR " " " " " + // 21 C--------------------------------------------------------------------- + // 22 C + // 23 C Modification 5-january-2000 by KHS and BJ + // 24 C + // 25 C New treatment of dissipation. + // 26 C See report of Beatriz Jurado, Jan. 2000 + // 27 C + // 28 C--------------------------------------------------------------------- + // 29 C + // 30 C MODIFICATION 6-aug-1999 by JB and MVR + // 31 C + // 32 C Some problems arised from an uncorrect evaluation of the fission barrier + // 33 C { 1) shell correction ( ECGNZ(J,K) ) was not subctracted (20-jul-99) + // 34 C 2) fiss. barrier EF was calc. before ang. mom. correct. (6-aug-99) } + // 35 C + // 36 C--------------------------------------------------------------------- + // 37 C PROJECTILE AND TARGET PARAMETERS + CROSS SECTIONS + // 38 C COMMON /ABLAMAIN/ AP,ZP,AT,ZT,EAP,BETA,BMAXNUC,CRTOT,CRNUC, + // 39 C R_0,R_P,R_T, IMAX,IRNDM,PI, + // 40 C BFPRO,SNPRO,SPPRO,SHELL + // 41 C + // 42 C AP,ZP,AT,ZT - PROJECTILE AND TARGET MASSES + // 43 C EAP,BETA - BEAM ENERGY PER NUCLEON, V/C + // 44 C BMAXNUC - MAX. IMPACT PARAMETER FOR NUCL. REAC. + // 45 C CRTOT,CRNUC - TOTAL AND NUCLEAR REACTION CROSS SECTION + // 46 C R_0,R_P,R_T, - RADIUS PARAMETER, PROJECTILE+ TARGET RADII + // 47 C IMAX,IRNDM,PI - MAXIMUM NUMBER OF EVENTS, DUMMY, 3.141... + // 48 C BFPRO - FISSION BARRIER OF THE PROJECTILE + // 49 C SNPRO - NEUTRON SEPARATION ENERGY OF THE PROJECTILE + // 50 C SPPRO - PROTON " " " " " + // 51 C SHELL - GROUND STATE SHELL CORRECTION + // 52 C--------------------------------------------------------------------- + // 53 C + // 54 C ENERGIES WIDTHS AND CROSS SECTIONS FOR EM EXCITATION + // 55 C COMMON /EMDPAR/ EGDR,EGQR,FWHMGDR,FWHMGQR,CREMDE1,CREMDE2, + // 56 C AE1,BE1,CE1,AE2,BE2,CE2,SR1,SR2,XR + // 57 C + // 58 C EGDR,EGQR - MEAN ENERGY OF GDR AND GQR + // 59 C FWHMGDR,FWHMGQR - FWHM OF GDR, GQR + // 60 C CREMDE1,CREMDE2 - EM CROSS SECTION FOR E1 AND E2 + // 61 C AE1,BE1,CE1 - ARRAYS TO CALCULATE + // 62 C AE2,BE2,CE2 - THE EXCITATION ENERGY AFTER E.M. EXC. + // 63 C SR1,SR2,XR - WITH MONTE CARLO + // 64 C--------------------------------------------------------------------- + // 65 C + // 66 C DEFORMATIONS AND G.S. SHELL EFFECTS + // 67 C COMMON /ECLD/ ECGNZ,ECFNZ,VGSLD,ALPHA + // 68 C + // 69 C ECGNZ - GROUND STATE SHELL CORR. FRLDM FOR A SPHERICAL G.S. + // 70 C ECFNZ - SHELL CORRECTION FOR THE SADDLE POINT (NOW: == 0) + // 71 C VGSLD - DIFFERENCE BETWEEN DEFORMED G.S. AND LDM VALUE + // 72 C ALPHA - ALPHA GROUND STATE DEFORMATION (THIS IS NOT BETA2!) + // 73 C BETA2 = SQRT(5/(4PI)) * ALPHA + // 74 C--------------------------------------------------------------------- + // 75 C + // 76 C ARRAYS FOR EXCITATION ENERGY BY STATISTICAL HOLE ENERY MODEL + // 77 C COMMON /EENUC/ SHE, XHE + // 78 C + // 79 C SHE, XHE - ARRAYS TO CALCULATE THE EXC. ENERGY AFTER + // 80 C ABRASION BY THE STATISTICAL HOLE ENERGY MODEL + // 81 C--------------------------------------------------------------------- + // 82 C + // 83 C G.S. SHELL EFFECT + // 84 C COMMON /EC2SUB/ ECNZ + // 85 C + // 86 C ECNZ G.S. SHELL EFFECT FOR THE MASSES (IDENTICAL TO ECGNZ) + // 87 C--------------------------------------------------------------------- + // 88 C + // 89 C OPTIONS AND PARAMETERS FOR FISSION CHANNEL + // 90 C COMMON /FISS/ AKAP,BET,HOMEGA,KOEFF,IFIS, + // 91 C OPTSHP,OPTXFIS,OPTLES,OPTCOL + // 92 C + // 93 C AKAP - HBAR**2/(2* MN * R_0**2) = 10 MEV + // 94 C BET - REDUCED NUCLEAR FRICTION COEFFICIENT IN (10**21 S**-1) + // 95 C HOMEGA - CURVATURE OF THE FISSION BARRIER = 1 MEV + // 96 C KOEFF - COEFFICIENT FOR THE LD FISSION BARRIER == 1.0 + // 97 C IFIS - 0/1 FISSION CHANNEL OFF/ON + // 98 C OPTSHP - INTEGER SWITCH FOR SHELL CORRECTION IN MASSES/ENERGY + // 99 C = 0 NO MICROSCOPIC CORRECTIONS IN MASSES AND ENERGY + // 100 C = 1 SHELL , NO PAIRING + // 101 C = 2 PAIRING, NO SHELL + // 102 C = 3 SHELL AND PAIRING + // 103 C OPTCOL - 0/1 COLLECTIVE ENHANCEMENT SWITCHED ON/OFF + // 104 C OPTXFIS- 0,1,2 FOR MYERS & SWIATECKI, DAHLINGER, ANDREYEV + // 105 C FISSILITY PARAMETER. + // 106 C OPTLES - CONSTANT TEMPERATURE LEVEL DENSITY FOR A,Z > TH-224 + // 107 C OPTCOL - 0/1 COLLECTIVE ENHANCEMENT OFF/ON + // 108 C--------------------------------------------------------------------- + // 109 C + // 110 C OPTIONS + // 111 C COMMON /OPT/ OPTEMD,OPTCHA,EEFAC + // 112 C + // 113 C OPTEMD - 0/1 NO EMD / INCL. EMD + // 114 C OPTCHA - 0/1 0 GDR / 1 HYPERGEOMETRICAL PREFRAGMENT-CHARGE-DIST. + // 115 C *** RECOMMENDED IS OPTCHA = 1 *** + // 116 C EEFAC - EXCITATION ENERGY FACTOR, 2.0 RECOMMENDED + // 117 C--------------------------------------------------------------------- + // 118 C + // 119 C FISSION BARRIERS + // 120 C COMMON /FB/ EFA + // 121 C EFA - ARRAY OF FISSION BARRIERS + // 122 C--------------------------------------------------------------------- + // 123 C + // 124 C p LEVEL DENSITY PARAMETERS + // 125 C COMMON /ALD/ AV,AS,AK,OPTAFAN + // 126 C AV,AS,AK - VOLUME,SURFACE,CURVATURE DEPENDENCE OF THE + // 127 C LEVEL DENSITY PARAMETER + // 128 C OPTAFAN - 0/1 AF/AN >=1 OR AF/AN ==1 + // 129 C RECOMMENDED IS OPTAFAN = 0 + // 130 C--------------------------------------------------------------------- + // 131 C ____________________________________________________________________ + // 132 C / + // 133 C / INITIALIZES PARAMETERS IN COMMON /ABRAMAIN/, /EMDPAR/, /ECLD/ ... + // 134 C / PROJECTILE PARAMETERS, EMD PARAMETERS, SHELL CORRECTION TABLES. + // 135 C / CALCULATES MAXIMUM IMPACT PARAMETER FOR NUCLEAR COLLISIONS AND + // 136 C / TOTAL GEOMETRICAL CROSS SECTION + EMD CROSS SECTIONS + // 137 C ____________________________________________________________________ + // 138 C + // 139 C + // 201 C + // 202 C---------- SET INPUT VALUES + // 203 C + // 204 C *** INPUT FROM UNIT 10 IN THE FOLLOWING SEQUENCE ! + // 205 C AP1 = INTEGER ! + // 206 C ZP1 = INTEGER ! + // 207 C AT1 = INTEGER ! + // 208 C ZT1 = INTEGER ! + // 209 C EAP = REAL ! + // 210 C IMAX = INTEGER ! + // 211 C IFIS = INTEGER SWITCH FOR FISSION + // 212 C OPTSHP = INTEGER SWITCH FOR SHELL CORRECTION IN MASSES/ENERGY + // 213 C =0 NO MICROSCOPIC CORRECTIONS IN MASSES AND ENERGY + // 214 C =1 SHELL , NO PAIRING CORRECTION + // 215 C =2 PAIRING, NO SHELL CORRECTION + // 216 C =3 SHELL AND PAIRING CORRECTION IN MASSES AND ENERGY + // 217 C OPTEMD =0,1 0 NO EMD, 1 INCL. EMD + // 218 C ELECTROMAGNETIC DISSOZIATION IS CALCULATED AS WELL. + // 219 C OPTCHA =0,1 0 GDR- , 1 HYPERGEOMETRICAL PREFRAGMENT-CHARGE-DIST. + // 220 C RECOMMENDED IS OPTCHA=1 + // 221 C OPTCOL =0,1 COLLECTIVE ENHANCEMENT SWITCHED ON 1 OR OFF 0 IN DENSN + // 222 C OPTAFAN=0,1 SWITCH FOR AF/AN = 1 IN DENSNIV 0 AF/AN>1 1 AF/AN=1 + // 223 C AKAP = REAL ALWAYS EQUALS 10 + // 224 C BET = REAL REDUCED FRICTION COEFFICIENT / 10**(+21) S**(-1) + // 225 C HOMEGA = REAL CURVATURE / MEV RECOMMENDED = 1. MEV + // 226 C KOEFF = REAL COEFFICIENT FOR FISSION BARRIER + // 227 C OPTXFIS= INTEGER 0,1,2 FOR MYERS & SWIATECKI, DAHLINGER, ANDREYEV + // 228 C FISSILITY PARAMETER. + // 229 C EEFAC = REAL EMPIRICAL FACTOR FOR THE EXCITATION ENERGY + // 230 C RECOMMENDED 2.D0, STATISTICAL ABRASION MODELL 1.D0 + // 231 C AV = REAL KOEFFICIENTS FOR CALCULATION OF A(TILDE) + // 232 C AS = REAL LEVEL DENSITY PARAMETER + // 233 C AK = REAL + // 234 C + // 235 C This following inputs will be initialized in the main through the + // 236 C common /ABLAMAIN/ (A.B.) + // 237 + + // switch-fission.1=on.0=off + fiss->ifis = 1; + + // shell+pairing.0-1-2-3 + fiss->optshp = 0; + + // optemd =0,1 0 no emd, 1 incl. emd + opt->optemd = 1; + // read(10,*,iostat=io) dum(10),optcha + opt->optcha = 1; + + // not.to.be.changed.(akap) + fiss->akap = 10.0; + + // nuclear.viscosity.(beta) + fiss->bet = 1.5; + + // potential-curvature + fiss->homega = 1.0; + + // fission-barrier-coefficient + fiss->koeff = 1.; + + //collective enhancement switched on 1 or off 0 in densn (qr=val or =1.) + fiss->optcol = 0; + + // switch-for-low-energy-sys + fiss->optles = 0; + + opt->eefac = 2.; + + ald->optafan = 0; + + ald->av = 0.073e0; + ald->as = 0.095e0; + ald->ak = 0.0e0; + + if(verboseLevel > 3) { + G4cout <<"ifis " << fiss->ifis << G4endl; + G4cout <<"optshp " << fiss->optshp << G4endl; + G4cout <<"optemd " << opt->optemd << G4endl; + G4cout <<"optcha " << opt->optcha << G4endl; + G4cout <<"akap " << fiss->akap << G4endl; + G4cout <<"bet " << fiss->bet << G4endl; + G4cout <<"homega " << fiss->homega << G4endl; + G4cout <<"koeff " << fiss->koeff << G4endl; + G4cout <<"optcol " << fiss->optcol << G4endl; + G4cout <<"optles " << fiss->optles << G4endl; + G4cout <<"eefac " << opt->eefac << G4endl; + G4cout <<"optafan " << ald->optafan << G4endl; + G4cout <<"av " << ald->av << G4endl; + G4cout <<"as " << ald->as << G4endl; + G4cout <<"ak " << ald->ak << G4endl; + } + fiss->optxfis = 1; + + G4InclAblaDataFile *dataInterface = new G4InclAblaDataFile(); + if(dataInterface->readData() == true) { + if(verboseLevel > 0) { + G4cout <<"G4Abla: Datafiles read successfully." << G4endl; + } + } + else { + G4Exception("ERROR: Failed to read datafiles."); + } + + for(int z = 0; z < 98; z++) { //do 30 z = 0,98,1 + for(int n = 0; n < 154; n++) { //do 31 n = 0,153,1 + ecld->ecfnz[n][z] = 0.e0; + ec2sub->ecnz[n][z] = dataInterface->getEcnz(n,z); + ecld->ecgnz[n][z] = dataInterface->getEcnz(n,z); + ecld->alpha[n][z] = dataInterface->getAlpha(n,z); + ecld->vgsld[n][z] = dataInterface->getVgsld(n,z); + } + } + + for(int z = 0; z < 500; z++) { + for(int a = 0; a < 500; a++) { + pace->dm[z][a] = dataInterface->getPace2(z,a); + } + } + + delete dataInterface; +} + +void G4Abla::qrot(G4double z, G4double a, G4double bet, G4double sig, G4double u, G4double *qr) +{ + // QROT INCLUDING DAMPING + // INPUT: Z,A,BET,SIG,U + // OUTPUT: QR - COLLECTIVE ENHANCEMENT FACTOR + // + // SEE JUNGHANS ET AL., NUCL. PHYS. A 629 (1998) 635 + // + // + // FR(U) EXPONENTIAL FUNCTION TO DEFINE DAMPING + // UCR CRITICAL ENERGY FOR DAMPING + // DCR WIDTH OF DAMPING + // BET BETA-DEFORMATION ! + // SIG PERPENDICULAR SPIN CUTOFF FACTOR + // U ENERGY + // QR COEFFICIENT OF COLLECTIVE ENHANCEMENT + // A MASS NUMBER + // Z CHARGE NUMBER + + G4double ucr,dcr,ponq,dn,n,dz; + + dcr = 10.0; + + ucr = 40.0; + + if(((std::fabs(bet)-1.15) < 0) || ((std::fabs(bet)-1.15) == 0)) { + goto qrot10; + } + + if((std::fabs(bet)-1.15) > 0) { + goto qrot11; + } + + qrot10: + n = a - z; + dz = std::fabs(z - 82.0); + if (n > 104) { + dn = std::fabs(n-126.e0); + } + else { + dn = std::fabs(n - 82.0); + } + + bet = 0.022 + 0.003*dn + 0.005*dz; + + sig = 25.0*std::pow(bet,2) * sig; + + qrot11: + ponq = (u - ucr)/dcr; + + if (ponq > 700.0) { + ponq = 700.0; + } + if (sig < 1.0) { + sig = 1.0; + } + (*qr) = 1.0/(1.0 + std::exp(ponq)) * (sig - 1.0) + 1.0; + + if ((*qr) < 1.0) { + (*qr) = 1.0; + } + + return; +} + +void G4Abla::mglw(G4double a, G4double z, G4double *el) +{ + // MODEL DE LA GOUTTE LIQUIDE DE C. F. WEIZSACKER. + // USUALLY AN OBSOLETE OPTION + + G4int a1,z1; + G4double xv = 0.0, xs = 0.0, xc = 0.0, xa = 0.0; + + a1 = idnint(a); + z1 = idnint(z); + + if ((a <= 0.01) || (z < 0.01)) { + (*el) = 1.0e38; + } + else { + xv = -15.56*a; + xs = 17.23*std::pow(a,(2.0/3.0)); + + if (a > 1.0) { + xc = 0.7*z*(z-1.0)*std::pow((a-1.0),(-1.e0/3.e0)); + } + else { + xc = 0.0; + } + } + + xa = 23.6*(std::pow((a-2.0*z),2)/a); + (*el) = xv+xs+xc+xa; + return; +} + +void G4Abla::mglms(G4double a, G4double z, G4int refopt4, G4double *el) +{ + // USING FUNCTION EFLMAC(IA,IZ,0) + // + // REFOPT4 = 0 : WITHOUT MICROSCOPIC CORRECTIONS + // REFOPT4 = 1 : WITH SHELL CORRECTION + // REFOPT4 = 2 : WITH PAIRING CORRECTION + // REFOPT4 = 3 : WITH SHELL- AND PAIRING CORRECTION + + // 1839 C----------------------------------------------------------------------- + // 1840 C A1 LOCAL MASS NUMBER (INTEGER VARIABLE OF A) + // 1841 C Z1 LOCAL NUCLEAR CHARGE (INTEGER VARIABLE OF Z) + // 1842 C REFOPT4 OPTION, SPECIFYING THE MASS FORMULA (SEE ABOVE) + // 1843 C A MASS NUMBER + // 1844 C Z NUCLEAR CHARGE + // 1845 C DEL PAIRING CORRECTION + // 1846 C EL BINDING ENERGY + // 1847 C ECNZ( , ) TABLE OF SHELL CORRECTIONS + // 1848 C----------------------------------------------------------------------- + // 1849 C + G4int a1 = idnint(a); + G4int z1 = idnint(z); + + if ( (a1 <= 0) || (z1 <= 0) || ((a1-z1) <= 0) ) { //then + // modif pour récupérer une masse p et n correcte: + (*el) = 0.0; + return; + // goto mglms50; + } + else { + // binding energy incl. pairing contr. is calculated from + // function eflmac + assert(a1 != 0); + (*el) = eflmac(a1,z1,0,refopt4); + // assert(isnan((*el)) == false); + if (refopt4 > 0) { + if (refopt4 != 2) { + (*el) = (*el) + ec2sub->ecnz[a1-z1][z1]; + //(*el) = (*el) + ec2sub->ecnz[z1][a1-z1]; + //assert(isnan((*el)) == false); + } + } + } + return; +} + +G4double G4Abla::spdef(G4int a, G4int z, G4int optxfis) +{ + + // INPUT: A,Z,OPTXFIS MASS AND CHARGE OF A NUCLEUS, + // OPTION FOR FISSILITY + // OUTPUT: SPDEF + + // ALPHA2 SADDLE POINT DEF. COHEN&SWIATECKI ANN.PHYS. 22 (1963) 406 + // RANGING FROM FISSILITY X=0.30 TO X=1.00 IN STEPS OF 0.02 + + G4int index; + G4double x,v,dx; + + const G4int alpha2Size = 37; + // The value 0.0 at alpha2[0] added by PK. + G4double alpha2[alpha2Size] = {0.0, 2.5464e0, 2.4944e0, 2.4410e0, 2.3915e0, 2.3482e0, + 2.3014e0, 2.2479e0, 2.1982e0, 2.1432e0, 2.0807e0, 2.0142e0, 1.9419e0, + 1.8714e0, 1.8010e0, 1.7272e0, 1.6473e0, 1.5601e0, 1.4526e0, 1.3164e0, + 1.1391e0, 0.9662e0, 0.8295e0, 0.7231e0, 0.6360e0, 0.5615e0, 0.4953e0, + 0.4354e0, 0.3799e0, 0.3274e0, 0.2779e0, 0.2298e0, 0.1827e0, 0.1373e0, + 0.0901e0, 0.0430e0, 0.0000e0}; + + dx = 0.02; + x = fissility(a,z,optxfis); + + if (x > 1.0) { + x = 1.0; + } + + if (x < 0.0) { + x = 0.0; + } + + v = (x - 0.3)/dx + 1.0; + index = idnint(v); + + if (index < 1) { + return(alpha2[1]); // alpha2[0] -> alpha2[1] + } + + if (index == 36) { //then // :::FIXME:: Possible off-by-one bug... + return(alpha2[36]); + } + else { + return(alpha2[index] + (alpha2[index+1] - alpha2[index]) / dx * ( x - (0.3e0 + dx*(index-1)))); //:::FIXME::: Possible off-by-one + } + + return alpha2[0]; // The algorithm is not supposed to reach this point. +} + +G4double G4Abla::fissility(int a,int z, int optxfis) +{ + // CALCULATION OF FISSILITY PARAMETER + // + // INPUT: A,Z INTEGER MASS & CHARGE OF NUCLEUS + // OPTXFIS = 0 : MYERS, SWIATECKI + // 1 : DAHLINGER + // 2 : ANDREYEV + + G4double aa,zz,i; + G4double fissilityResult = 0.0; + + aa = double(a); + zz = double(z); + i = double(a-2*z) / aa; + + // myers & swiatecki droplet modell + if (optxfis == 0) { //then + fissilityResult = std::pow(zz,2) / aa /50.8830e0 / (1.0e0 - 1.7826e0 * std::pow(i,2)); + } + + if (optxfis == 1) { + // dahlinger fit: + fissilityResult = std::pow(zz,2) / aa * std::pow((49.22e0*(1.e0 - 0.3803e0*std::pow(i,2) - 20.489e0*std::pow(i,4))),(-1)); + } + + if (optxfis == 2) { + // dubna fit: + fissilityResult = std::pow(zz,2) / aa /(48.e0*(1.e0 - 17.22e0*std::pow(i,4))); + } + + return fissilityResult; +} + +void G4Abla::evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf, + G4double *zf_par, G4double *af_par, G4double *mtota_par, + G4double *pleva_par, G4double *pxeva_par, G4double *pyeva_par, + G4int *ff_par, G4int *inttype_par, G4int *inum_par) +{ + G4double zf = (*zf_par); + G4double af = (*af_par); + G4double mtota = (*mtota_par); + G4double pleva = (*pleva_par); + G4double pxeva = (*pxeva_par); + G4double pyeva = (*pyeva_par); + G4int ff = (*ff_par); + G4int inttype = (*inttype_par); + G4int inum = (*inum_par); + + // 533 C + // 534 C INPUT: + // 535 C + // 536 C ZPRF, APRF, EE(EE IS MODIFIED!), JPRF + // 537 C + // 538 C PROJECTILE AND TARGET PARAMETERS + CROSS SECTIONS + // 539 C COMMON /ABRAMAIN/ AP,ZP,AT,ZT,EAP,BETA,BMAXNUC,CRTOT,CRNUC, + // 540 C R_0,R_P,R_T, IMAX,IRNDM,PI, + // 541 C BFPRO,SNPRO,SPPRO,SHELL + // 542 C + // 543 C AP,ZP,AT,ZT - PROJECTILE AND TARGET MASSES + // 544 C EAP,BETA - BEAM ENERGY PER NUCLEON, V/C + // 545 C BMAXNUC - MAX. IMPACT PARAMETER FOR NUCL. REAC. + // 546 C CRTOT,CRNUC - TOTAL AND NUCLEAR REACTION CROSS SECTION + // 547 C R_0,R_P,R_T, - RADIUS PARAMETER, PROJECTILE+ TARGET RADII + // 548 C IMAX,IRNDM,PI - MAXIMUM NUMBER OF EVENTS, DUMMY, 3.141... + // 549 C BFPRO - FISSION BARRIER OF THE PROJECTILE + // 550 C SNPRO - NEUTRON SEPARATION ENERGY OF THE PROJECTILE + // 551 C SPPRO - PROTON " " " " " + // 552 C SHELL - GROUND STATE SHELL CORRECTION + // 553 C + // 554 C--------------------------------------------------------------------- + // 555 C FISSION BARRIERS + // 556 C COMMON /FB/ EFA + // 557 C EFA - ARRAY OF FISSION BARRIERS + // 558 C--------------------------------------------------------------------- + // 559 C OUTPUT: + // 560 C ZF, AF, MTOTA, PLEVA, PTEVA, FF, INTTYPE, INUM + // 561 C + // 562 C ZF,AF - CHARGE AND MASS OF FINAL FRAGMENT AFTER EVAPORATION + // 563 C MTOTA _ NUMBER OF EVAPORATED ALPHAS + // 564 C PLEVA,PXEVA,PYEVA - MOMENTUM RECOIL BY EVAPORATION + // 565 C INTTYPE - TYPE OF REACTION 0/1 NUCLEAR OR ELECTROMAGNETIC + // 566 C FF - 0/1 NO FISSION / FISSION EVENT + // 567 C INUM - EVENTNUMBER + // 568 C ____________________________________________________________________ + // 569 C / + // 570 C / CALCUL DE LA MASSE ET CHARGE FINALES D'UNE CHAINE D'EVAPORATION + // 571 C / + // 572 C / PROCEDURE FOR CALCULATING THE FINAL MASS AND CHARGE VALUES OF A + // 573 C / SPECIFIC EVAPORATION CHAIN, STARTING POINT DEFINED BY (APRF, ZPRF, + // 574 C / EE) + // 575 C / On ajoute les 3 composantes de l'impulsion (PXEVA,PYEVA,PLEVA) + // 576 C / (actuellement PTEVA n'est pas correct; mauvaise norme...) + // 577 C /____________________________________________________________________ + // 578 C + // 612 C + // 613 C----------------------------------------------------------------------- + // 614 C IRNDM DUMMY ARGUMENT FOR RANDOM-NUMBER FUNCTION + // 615 C SORTIE LOCAL HELP VARIABLE TO END THE EVAPORATION CHAIN + // 616 C ZF NUCLEAR CHARGE OF THE FRAGMENT + // 617 C ZPRF NUCLEAR CHARGE OF THE PREFRAGMENT + // 618 C AF MASS NUMBER OF THE FRAGMENT + // 619 C APRF MASS NUMBER OF THE PREFRAGMENT + // 620 C EPSILN ENERGY BURNED IN EACH EVAPORATION STEP + // 621 C MALPHA LOCAL MASS CONTRIBUTION TO MTOTA IN EACH EVAPORATION + // 622 C STEP + // 623 C EE EXCITATION ENERGY (VARIABLE) + // 624 C PROBP PROTON EMISSION PROBABILITY + // 625 C PROBN NEUTRON EMISSION PROBABILITY + // 626 C PROBA ALPHA-PARTICLE EMISSION PROBABILITY + // 627 C PTOTL TOTAL EMISSION PROBABILITY + // 628 C E LOWEST PARTICLE-THRESHOLD ENERGY + // 629 C SN NEUTRON SEPARATION ENERGY + // 630 C SBP PROTON SEPARATION ENERGY PLUS EFFECTIVE COULOMB + // 631 C BARRIER + // 632 C SBA ALPHA-PARTICLE SEPARATION ENERGY PLUS EFFECTIVE + // 633 C COULOMB BARRIER + // 634 C BP EFFECTIVE PROTON COULOMB BARRIER + // 635 C BA EFFECTIVE ALPHA COULOMB BARRIER + // 636 C MTOTA TOTAL MASS OF THE EVAPORATED ALPHA PARTICLES + // 637 C X UNIFORM RANDOM NUMBER FOR NUCLEAR CHARGE + // 638 C AMOINS LOCAL MASS NUMBER OF EVAPORATED PARTICLE + // 639 C ZMOINS LOCAL NUCLEAR CHARGE OF EVAPORATED PARTICLE + // 640 C ECP KINETIC ENERGY OF PROTON WITHOUT COULOMB + // 641 C REPULSION + // 642 C ECN KINETIC ENERGY OF NEUTRON + // 643 C ECA KINETIC ENERGY OF ALPHA PARTICLE WITHOUT COULOMB + // 644 C REPULSION + // 645 C PLEVA TRANSVERSAL RECOIL MOMENTUM OF EVAPORATION + // 646 C PTEVA LONGITUDINAL RECOIL MOMENTUM OF EVAPORATION + // 647 C FF FISSION FLAG + // 648 C INTTYPE INTERACTION TYPE FLAG + // 649 C RNDX RECOIL MOMENTUM IN X-DIRECTION IN A SINGLE STEP + // 650 C RNDY RECOIL MOMENTUM IN Y-DIRECTION IN A SINGLE STEP + // 651 C RNDZ RECOIL MOMENTUM IN Z-DIRECTION IN A SINGLE STEP + // 652 C RNDN NORMALIZATION OF RECOIL MOMENTUM FOR EACH STEP + // 653 C----------------------------------------------------------------------- + // 654 C + // 655 SAVE + // SAVE -> static + + static G4int sortie; + static G4double epsiln,probp,probn,proba,ptotl,e; + static G4double sn,sbp,sba,x,amoins,zmoins,ecn,ecp,eca,bp,ba; + static G4double pteva; + + static G4int itest; + static G4double probf; + + static G4int k, j, il; + + static G4double ctet1,stet1,phi1; + static G4double sbfis,rnd; + static G4double selmax; + static G4double segs; + static G4double ef; + static G4int irndm; + + static G4double pc, malpha; + + zf = zprf; + af = aprf; + pleva = 0.0; + pteva = 0.0; + pxeva = 0.0; + pyeva = 0.0; + + sortie = 0; + ff = 0; + + itest = 0; + if (itest == 1) { + G4cout << "***************************" << G4endl; + } + + evapora10: + + if (itest == 1) { + G4cout <<"------zf,af,ee------" << idnint(zf) << "," << idnint(af) << "," << ee << G4endl; + } + + // calculation of the probabilities for the different decay channels + // plus separation energies and kinetic energies of the particles + direct(zf,af,ee,jprf,&probp,&probn,&proba,&probf,&ptotl, + &sn,&sbp,&sba,&ecn,&ecp,&eca,&bp,&ba,inttype,inum,itest); //:::FIXME::: Call + // assert(isnan(proba) == false); + // assert(isnan(probp) == false); + // assert(isnan(probn) == false); + // assert(isnan(probf) == false); + assert((eca+ba) >= 0); + assert((ecp+bp) >= 0); + // assert(isnan(ecp) == false); + // assert(isnan(ecn) == false); + // assert(isnan(bp) == false); + // assert(isnan(ba) == false); + k = idnint(zf); + j = idnint(af-zf); + + // now ef is calculated from efa that depends on the subroutine + // barfit which takes into account the modification on the ang. mom. + // jb mvr 6-aug-1999 + // note *** shell correction! (ecgnz) jb mvr 20-7-1999 + il = idnint(jprf); + barfit(k,k+j,il,&sbfis,&segs,&selmax); + // assert(isnan(sbfis) == false); + + if ((fiss->optshp == 1) || (fiss->optshp == 3)) { //then + // fb->efa[k][j] = G4double(sbfis) - ecld->ecgnz[j][k]; + fb->efa[j][k] = G4double(sbfis) - ecld->ecgnz[j][k]; + } + else { + fb->efa[j][k] = G4double(sbfis); + // fb->efa[j][k] = G4double(sbfis); + } //end if + ef = fb->efa[j][k]; + // ef = fb->efa[j][k]; + // assert(isnan(fb->efa[j][k]) == false); + // here the final steps of the evaporation are calculated + if ((sortie == 1) || (ptotl == 0.e0)) { + e = dmin1(sn,sbp,sba); + if (e > 1.0e30) { + if(verboseLevel > 2) { + G4cout <<"erreur a la sortie evapora,e>1.e30,af=" << af <<" zf=" << zf << G4endl; + } + } + if (zf <= 6.0) { + goto evapora100; + } + if (e < 0.0) { + if (sn == e) { + af = af - 1.e0; + } + else if (sbp == e) { + af = af - 1.0; + zf = zf - 1.0; + } + else if (sba == e) { + af = af - 4.0; + zf = zf - 2.0; + } + if (af < 2.5) { + goto evapora100; + } + goto evapora10; + } + goto evapora100; + } + irndm = irndm + 1; + + // here the normal evaporation cascade starts + + // random number for the evaporation + // x = double(Rndm(irndm))*ptotl; + x = double(haz(1))*ptotl; + +// G4cout <<"proba = " << proba << G4endl; +// G4cout <<"probp = " << probp << G4endl; +// G4cout <<"probn = " << probn << G4endl; +// G4cout <<"probf = " << probf << G4endl; + + itest = 0; + if (x < proba) { + // alpha evaporation + if (itest == 1) { + G4cout <<"< alpha evaporation >" << G4endl; + } + amoins = 4.0; + zmoins = 2.0; + epsiln = sba + eca; + assert((std::pow((1.0 + (eca+ba)/3.72834e3),2) - 1.0) >= 0); + pc = std::sqrt(std::pow((1.0 + (eca+ba)/3.72834e3),2) - 1.0) * 3.72834e3; + // assert(isnan(pc) == false); + malpha = 4.0; + + // volant: + volant->iv = volant->iv + 1; + volant->acv[volant->iv] = 4.; + volant->zpcv[volant->iv] = 2.; + volant->pcv[volant->iv] = pc; + } + else if (x < proba+probp) { + // proton evaporation + if (itest == 1) { + G4cout <<"< proton evaporation >" << G4endl; + } + amoins = 1.0; + zmoins = 1.0; + epsiln = sbp + ecp; + assert((std::pow((1.0 + (ecp + bp)/9.3827e2),2) - 1.0) >= 0); + pc = std::sqrt(std::pow((1.0 + (ecp + bp)/9.3827e2),2) - 1.0) * 9.3827e2; + // assert(isnan(pc) == false); + malpha = 0.0; + // volant: + volant->iv = volant->iv + 1; + volant->acv[volant->iv] = 1.; + volant->zpcv[volant->iv] = 1.; + volant->pcv[volant->iv] = pc; + } + else if (x < proba+probp+probn) { + // neutron evaporation + if (itest == 1) { + G4cout <<"< neutron evaporation >" << G4endl; + } + amoins = 1.0; + zmoins = 0.0; + epsiln = sn + ecn; + assert((std::pow((1.0 + (ecn)/9.3956e2),2) - 1.0) >= 0); + pc = std::sqrt(std::pow((1.0 + (ecn)/9.3956e2),2) - 1.0) * 9.3956e2; + // assert(isnan(pc) == false); + malpha = 0.0; + + // volant: + volant->iv = volant->iv + 1; + volant->acv[volant->iv] = 1.; + volant->zpcv[volant->iv] = 0.; + volant->pcv[volant->iv] = pc; + } + else { + // fission + // in case of fission-events the fragment nucleus is the mother nucleus + // before fission occurs with excitation energy above the fis.- barrier. + // fission fragment mass distribution is calulated in subroutine fisdis + if (itest == 1) { + G4cout <<"< fission >" << G4endl; + } + amoins = 0.0; + zmoins = 0.0; + epsiln = ef; + + malpha = 0.0; + pc = 0.0; + ff = 1; + // ff = 0; // For testing, allows to disable fission! + } + + if (itest == 1) { + G4cout <<"sn,sbp,sba,ef" << sn << "," << sbp << "," << sba <<"," << ef << G4endl; + G4cout <<"probn,probp,proba,probf,ptotl " <<","<< probn <<","<< probp <<","<< proba <<","<< probf <<","<< ptotl << G4endl; + } + + // calculation of the daughter nucleus + af = af - amoins; + zf = zf - zmoins; + ee = ee - epsiln; + if (ee <= 0.01) { + ee = 0.01; + } + mtota = mtota + malpha; + + if(ff == 0) { + standardRandom(&rnd,&(hazard->igraine[8])); + ctet1 = 2.0*rnd - 1.0; + standardRandom(&rnd,&(hazard->igraine[4])); + phi1 = rnd*2.0*3.141592654; + stet1 = std::sqrt(1.0 - std::pow(ctet1,2)); + // assert(isnan(stet1) == false); + volant->xcv[volant->iv] = stet1*std::cos(phi1); + volant->ycv[volant->iv] = stet1*std::sin(phi1); + volant->zcv[volant->iv] = ctet1; + pxeva = pxeva - pc * volant->xcv[volant->iv]; + pyeva = pyeva - pc * volant->ycv[volant->iv]; + pleva = pleva - pc * ctet1; + // assert(isnan(pleva) == false); + } + + // condition for end of evaporation + if ((af < 2.5) || (ff == 1)) { + goto evapora100; + } + goto evapora10; + + evapora100: + (*zf_par) = zf; + (*af_par) = af; + (*mtota_par) = mtota; + (*pleva_par) = pleva; + (*pxeva_par) = pxeva; + (*pyeva_par) = pyeva; + (*ff_par) = ff; + (*inttype_par) = inttype; + (*inum_par) = inum; + + return; +} + +void G4Abla::direct(G4double zprf, G4double a, G4double ee, G4double jprf, + G4double *probp_par, G4double *probn_par, G4double *proba_par, + G4double *probf_par, G4double *ptotl_par, G4double *sn_par, + G4double *sbp_par, G4double *sba_par, G4double *ecn_par, + G4double *ecp_par,G4double *eca_par, G4double *bp_par, + G4double *ba_par, G4int inttype, G4int inum, G4int itest) +{ + G4int dummy0; + + G4double probp = (*probp_par); + G4double probn = (*probn_par); + G4double proba = (*proba_par); + G4double probf = (*probf_par); + G4double ptotl = (*ptotl_par); + G4double sn = (*sn_par); + G4double sbp = (*sbp_par); + G4double sba = (*sba_par); + G4double ecn = (*ecn_par); + G4double ecp = (*ecp_par); + G4double eca = (*eca_par); + G4double bp = (*bp_par); + G4double ba = (*ba_par); + + // CALCULATION OF PARTICLE-EMISSION PROBABILITIES & FISSION / + // BASED ON THE SIMPLIFIED FORMULAS FOR THE DECAY WIDTH BY / + // MORETTO, ROCHESTER MEETING TO AVOID COMPUTING TIME / + // INTENSIVE INTEGRATION OF THE LEVEL DENSITIES / + // USES EFFECTIVE COULOMB BARRIERS AND AN AVERAGE KINETIC ENERGY/ + // OF THE EVAPORATED PARTICLES / + // COLLECTIVE ENHANCMENT OF THE LEVEL DENSITY IS INCLUDED / + // DYNAMICAL HINDRANCE OF FISSION IS INCLUDED BY A STEP FUNCTION/ + // APPROXIMATION. SEE A.R. JUNGHANS DIPLOMA THESIS / + // SHELL AND PAIRING STRUCTURES IN THE LEVEL DENSITY IS INCLUDED/ + + // INPUT: + // ZPRF,A,EE CHARGE, MASS, EXCITATION ENERGY OF COMPOUND + // NUCLEUS + // JPRF ROOT-MEAN-SQUARED ANGULAR MOMENTUM + + // DEFORMATIONS AND G.S. SHELL EFFECTS + // COMMON /ECLD/ ECGNZ,ECFNZ,VGSLD,ALPHA + + // ECGNZ - GROUND STATE SHELL CORR. FRLDM FOR A SPHERICAL G.S. + // ECFNZ - SHELL CORRECTION FOR THE SADDLE POINT (NOW: == 0) + // VGSLD - DIFFERENCE BETWEEN DEFORMED G.S. AND LDM VALUE + // ALPHA - ALPHA GROUND STATE DEFORMATION (THIS IS NOT BETA2!) + // BETA2 = SQRT((4PI)/5) * ALPHA + + //OPTIONS AND PARAMETERS FOR FISSION CHANNEL + //COMMON /FISS/ AKAP,BET,HOMEGA,KOEFF,IFIS, + // OPTSHP,OPTXFIS,OPTLES,OPTCOL + // + // AKAP - HBAR**2/(2* MN * R_0**2) = 10 MEV, R_0 = 1.4 FM + // BET - REDUCED NUCLEAR FRICTION COEFFICIENT IN (10**21 S**-1) + // HOMEGA - CURVATURE OF THE FISSION BARRIER = 1 MEV + // KOEFF - COEFFICIENT FOR THE LD FISSION BARRIER == 1.0 + // IFIS - 0/1 FISSION CHANNEL OFF/ON + // OPTSHP - INTEGER SWITCH FOR SHELL CORRECTION IN MASSES/ENERGY + // = 0 NO MICROSCOPIC CORRECTIONS IN MASSES AND ENERGY + // = 1 SHELL , NO PAIRING + // = 2 PAIRING, NO SHELL + // = 3 SHELL AND PAIRING + // OPTCOL - 0/1 COLLECTIVE ENHANCEMENT SWITCHED ON/OFF + // OPTXFIS- 0,1,2 FOR MYERS & SWIATECKI, DAHLINGER, ANDREYEV + // FISSILITY PARAMETER. + // OPTLES - CONSTANT TEMPERATURE LEVEL DENSITY FOR A,Z > TH-224 + // OPTCOL - 0/1 COLLECTIVE ENHANCEMENT OFF/ON + + // LEVEL DENSITY PARAMETERS + // COMMON /ALD/ AV,AS,AK,OPTAFAN + // AV,AS,AK - VOLUME,SURFACE,CURVATURE DEPENDENCE OF THE + // LEVEL DENSITY PARAMETER + // OPTAFAN - 0/1 AF/AN >=1 OR AF/AN ==1 + // RECOMMENDED IS OPTAFAN = 0 + + // FISSION BARRIERS + // COMMON /FB/ EFA + // EFA - ARRAY OF FISSION BARRIERS + + + // OUTPUT: PROBN,PROBP,PROBA,PROBF,PTOTL: + // - EMISSION PROBABILITIES FOR N EUTRON, P ROTON, A LPHA + // PARTICLES, F ISSION AND NORMALISATION + // SN,SBP,SBA: SEPARATION ENERGIES N P A + // INCLUDING EFFECTIVE BARRIERS + // ECN,ECP,ECA,BP,BA + // - AVERAGE KINETIC ENERGIES (2*T) AND EFFECTIVE BARRIERS + + static G4double bk; + static G4int afp; + static G4double at; // = 0.0; + static G4double bet; // = 0.0; + static G4double bs; + static G4double bshell; + static G4double cf; + static G4double dconst; + static G4double defbet; + static G4double denomi; + static G4double densa; + static G4double densf; + static G4double densg; + static G4double densn; + static G4double densp; + static G4double edyn; + static G4double eer; + static G4double ef; + static G4double ft; + static G4double ga; // = 0.0; + static G4double gf; // = 0.0; + static G4double gn; // = 0.0; + static G4double gngf; + static G4double gp; // = 0.0; + static G4double gsum; + static G4double hbar = 6.582122e-22; // = 0.0; + static G4double homega; // = 0.0; + static G4double iflag; + static G4int il; + static G4int ilast; + static G4int imaxwell; + static G4int in; + static G4int iz; + static G4int j; + static G4int k; + static G4double ma1z; + static G4double ma1z1; + static G4double ma4z2; + static G4double maz; + static G4double nprf; + static G4double nt; + static G4double parc; + static G4double pi = 3.14159265; + static G4double pt; + static G4double ra; + static G4double rat; + static G4double refmod; + static G4double rf; + static G4double rn; + static G4double rnd; + static G4double rnt; + static G4double rp; + static G4double rpt; + static G4double sa; + static G4double sbf; + static G4double sbfis; + static G4double segs; + static G4double selmax; + static G4double sp; + static G4double tauc; + static G4double tconst; + static G4double temp; + static G4double ts1; + static G4double tsum; + static G4double wf; // = 0.0; + static G4double wfex; + static G4double xx; + static G4double y; + + imaxwell = 1; + inttype = 0; + + // limiting of excitation energy where fission occurs + // Note, this is not the dynamical hindrance (see end of routine) + edyn = 1000.0; + + // no limit if statistical model is calculated. + if (bet <= 1.0e-16) { + edyn = 10000.0; + } + + // just a change of name until the end of this subroutine + eer = ee; + if (inum == 1) { + ilast = 1; + } + + // calculation of masses + // refmod = 1 ==> myers,swiatecki model + // refmod = 0 ==> weizsaecker model + refmod = 1; // Default = 1 + + if (refmod == 1) { + mglms(a,zprf,fiss->optshp,&maz); + mglms(a-1.0,zprf,fiss->optshp,&ma1z); + mglms(a-1.0,zprf-1.0,fiss->optshp,&ma1z1); + mglms(a-4.0,zprf-2.0,fiss->optshp,&ma4z2); + } + else { + mglw(a,zprf,&maz); + mglw(a-1.0,zprf,&ma1z); + mglw(a-1.0,zprf-1.0,&ma1z1); + mglw(a-4.0,zprf-2.0,&ma4z2); + } + // assert(isnan(maz) == false); + // assert(isnan(ma1z) == false); + // assert(isnan(ma1z1) == false); + // assert(isnan(ma4z2) == false); + + // separation energies and effective barriers + sn = ma1z - maz; + sp = ma1z1 - maz; + sa = ma4z2 - maz - 28.29688; + if (zprf < 1.0e0) { + sbp = 1.0e75; + goto direct30; + } + + // parameterisation gaimard: + // bp = 1.44*(zprf-1.d0)/(1.22*std::pow((a - 1.0),(1.0/3.0))+5.6) + // parameterisation khs (12-99) + bp = 1.44*(zprf - 1.0)/(2.1*std::pow((a - 1.0),(1.0/3.0)) + 0.0); + + sbp = sp + bp; + // assert(isnan(sbp) == false); + // assert(isinf(sbp) == false); + if (a-4.0 <= 0.0) { + sba = 1.0e+75; + goto direct30; + } + + // new effective barrier for alpha evaporation d=6.1: khs + // ba = 2.88d0*(zprf-2.d0)/(1.22d0*(a-4.d0)**(1.d0/3.d0)+6.1d0) + // parametrisation khs (12-99) + ba = 2.88*(zprf - 2.0)/(2.2*std::pow((a - 4.0),(1.0/3.0)) + 0.0); + + sba = sa + ba; + // assert(isnan(sba) == false); + // assert(isinf(sba) == false); + direct30: + + // calculation of surface and curvature integrals needed to + // to calculate the level density parameter (in densniv) + if (fiss->ifis > 0) { + k = idnint(zprf); + j = idnint(a - zprf); + + // now ef is calculated from efa that depends on the subroutine + // barfit which takes into account the modification on the ang. mom. + // jb mvr 6-aug-1999 + // note *** shell correction! (ecgnz) jb mvr 20-7-1999 + il = idnint(jprf); + barfit(k,k+j,il,&sbfis,&segs,&selmax); + // assert(isnan(sbfis) == false); + if ((fiss->optshp == 1) || (fiss->optshp == 3)) { + // fb->efa[k][j] = G4double(sbfis) - ecld->ecgnz[j][k]; + // fb->efa[j][k] = G4double(sbfis) - ecld->ecgnz[j][k]; + fb->efa[j][k] = double(sbfis) - ecld->ecgnz[j][k]; + } + else { + // fb->efa[k][j] = G4double(sbfis); + fb->efa[j][k] = double(sbfis); + } + // ef = fb->efa[k][j]; + ef = fb->efa[j][k]; + + // to avoid negative values for impossible nuclei + // the fission barrier is set to zero if smaller than zero. + // if (fb->efa[k][j] < 0.0) { + // fb->efa[k][j] = 0.0; + // } + if (fb->efa[j][k] < 0.0) { + if(verboseLevel > 2) { + G4cout <<"Setting fission barrier to 0" << G4endl; + } + fb->efa[j][k] = 0.0; + } + // assert(isnan(fb->efa[j][k]) == false); + + // factor with jprf should be 0.0025d0 - 0.01d0 for + // approximate influence of ang. momentum on bfis a.j. 22.07.96 + // 0.0 means no angular momentum + + if (ef < 0.0) { + ef = 0.0; + } + xx = fissility((k+j),k,fiss->optxfis); + // assert(isnan(xx) == false); + // assert(isinf(xx) == false); + + y = 1.00 - xx; + if (y < 0.0) { + y = 0.0; + } + if (y > 1.0) { + y = 1.0; + } + bs = bipol(1,y); + // assert(isnan(bs) == false); + // assert(isinf(bs) == false); + bk = bipol(2,y); + // assert(isnan(bk) == false); + // assert(isinf(bk) == false); + } + else { + ef = 1.0e40; + bs = 1.0; + bk = 1.0; + } + sbf = ee - ef; + + afp = idnint(a); + iz = idnint(zprf); + in = afp - iz; + bshell = ecld->ecfnz[in][iz]; + // assert(isnan(bshell) == false); + + // ld saddle point deformation + // here: beta2 = std::sqrt(5/(4pi)) * alpha2 + + // for the ground state def. 1.5d0 should be used + // because this was just the factor to produce the + // alpha-deformation table 1.5d0 should be used + // a.r.j. 6.8.97 + defbet = 1.58533e0 * spdef(idnint(a),idnint(zprf),fiss->optxfis); + // assert(isnan(defbet) == false); + + // level density and temperature at the saddle point + // G4cout <<"a = " << a << G4endl; + // G4cout <<"zprf = " << zprf << G4endl; + // G4cout <<"ee = " << ee << G4endl; + // G4cout <<"ef = " << ef << G4endl; + // G4cout <<"bshell = " << bshell << G4endl; + // G4cout <<"bs = " << bs << G4endl; + // G4cout <<"bk = " << bk << G4endl; + // G4cout <<"defbet = " << defbet << G4endl; + densniv(a,zprf,ee,ef,&densf,bshell,bs,bk,&temp,int(fiss->optshp),int(fiss->optcol),defbet); + // G4cout <<"densf = " << densf << G4endl; + // G4cout <<"temp = " << temp << G4endl; + // assert(isnan(densf) == false); + // assert(isnan(temp) == false); + // assert(temp != 0); + ft = temp; + if (iz >= 2) { + bshell = ecld->ecgnz[in][iz-1] - ecld->vgsld[in][iz-1]; + defbet = 1.5 * (ecld->alpha[in][iz-1]); + + // level density and temperature in the proton daughter + densniv(a-1.0,zprf-1.0e0,ee,sbp,&densp, bshell,1.e0,1.e0,&temp,int(fiss->optshp),int(fiss->optcol),defbet); + assert(temp >= 0); + // assert(isnan(temp) == false); + pt = temp; + if (imaxwell == 1) { + // valentina - random kinetic energy in a maxwelliam distribution + // modif juin/2002 a.b. c.v. for light targets; limit on the energy + // from the maxwell distribution. + rpt = pt; + ecp = 2.0 * pt; + if(rpt <= 1.0e-3) { + goto direct2914; + } + iflag = 0; + direct1914: + ecp = fmaxhaz(rpt); + iflag = iflag + 1; + if(iflag >= 10) { + standardRandom(&rnd,&(hazard->igraine[5])); + ecp=std::sqrt(rnd)*(eer-sbp); + // assert(isnan(ecp) == false); + goto direct2914; + } + if((ecp+sbp) > eer) { + goto direct1914; + } + } + else { + ecp = 2.0 * pt; + } + + direct2914: + dummy0 = 0; + // G4cout <<""<= 2) { + bshell = ecld->ecgnz[in-1][iz] - ecld->vgsld[in-1][iz]; + defbet = 1.5e0 * (ecld->alpha[in-1][iz]); + + // level density and temperature in the neutron daughter + densniv(a-1.0,zprf,ee,sn,&densn,bshell, 1.e0,1.e0,&temp,int(fiss->optshp),int(fiss->optcol),defbet); + nt = temp; + + if (imaxwell == 1) { + // valentina - random kinetic energy in a maxwelliam distribution + // modif juin/2002 a.b. c.v. for light targets; limit on the energy + // from the maxwell distribution. + rnt = nt; + ecn = 2.0 * nt; + if(rnt <= 1.e-3) { + goto direct2915; + } + + iflag=0; + + ecn = fmaxhaz(rnt); + iflag=iflag+1; + if(iflag >= 10) { + standardRandom(&rnd,&(hazard->igraine[6])); + ecn = std::sqrt(rnd)*(eer-sn); + // assert(isnan(ecn) == false); + goto direct2915; + } + // if((ecn+sn) > eer) { + // goto direct1915; + // } + // else { + // ecn = 2.e0 * nt; + // } + if((ecn + sn) <= eer) { + ecn = 2.0 * nt; + } + direct2915: + dummy0 = 0; + // G4cout <<"" <= 3) && (iz >= 3)) { + bshell = ecld->ecgnz[in-2][iz-2] - ecld->vgsld[in-2][iz-2]; + defbet = 1.5 * (ecld->alpha[in-2][iz-2]); + + // level density and temperature in the alpha daughter + densniv(a-4.0,zprf-2.0e0,ee,sba,&densa,bshell,1.e0,1.e0,&temp,int(fiss->optshp),int(fiss->optcol),defbet); + + // valentina - random kinetic energy in a maxwelliam distribution + at = temp; + if (imaxwell == 1) { + // modif juin/2002 a.b. c.v. for light targets; limit on the energy + // from the maxwell distribution. + rat = at; + eca= 2.e0 * at; + if(rat <= 1.e-3) { + goto direct2916; + } + iflag=0; + direct1916: + eca = fmaxhaz(rat); + iflag=iflag+1; + if(iflag >= 10) { + standardRandom(&rnd,&(hazard->igraine[7])); + eca=std::sqrt(rnd)*(eer-sba); + // assert(isnan(eca) == false); + goto direct2916; + } + if((eca+sba) > eer) { + goto direct1916; + } + else { + eca = 2.0 * at; + } + direct2916: + dummy0 = 0; + // G4cout <<"" << G4endl; + } + else { + densa = 0.0; + eca = 0.0; + at = 0.0; + } + } // PK + + // special treatment for unbound nuclei + if (sn < 0.0) { + probn = 1.0; + probp = 0.0; + proba = 0.0; + probf = 0.0; + goto direct70; + } + if (sbp < 0.0) { + probp = 1.0; + probn = 0.0; + proba = 0.0; + probf = 0.0; + goto direct70; + } + + if ((a < 50.e0) || (ee > edyn)) { // no fission if e*> edyn or mass < 50 + // G4cout <<"densf = 0.0" << G4endl; + densf = 0.e0; + } + + bshell = ecld->ecgnz[in][iz] - ecld->vgsld[in][iz]; + defbet = 1.5e0 * (ecld->alpha[in][iz]); + + // compound nucleus level density + densniv(a,zprf,ee,0.0e0,&densg,bshell,1.e0,1.e0,&temp,int(fiss->optshp),int(fiss->optcol),defbet); + // assert(isnan(densg) == false); + // assert(isnan(temp) == false); + + if ( densg > 0.e0) { + // calculation of the partial decay width + // used for both the time scale and the evaporation decay width + gp = (std::pow(a,(2.0/3.0))/fiss->akap)*densp/densg/pi*std::pow(pt,2); + gn = (std::pow(a,(2.0/3.0))/fiss->akap)*densn/densg/pi*std::pow(nt,2); + ga = (std::pow(a,(2.0/3.0))/fiss->akap)*densa/densg/pi*2.0*std::pow(at,2); + gf = densf/densg/pi/2.0*ft; + // assert(isnan(gf) == false); + + // assert(isnan(gp) == false); + // assert(isnan(gn) == false); + // assert(isnan(ga) == false); + // assert(isnan(ft) == false); + // assert(ft != 0); + // assert(isnan(gf) == false); + + if(itest == 1) { + G4cout <<"gn,gp,ga,gf " << gn <<","<< gp <<","<< ga <<","<< gf << G4endl; + } + } + else { + if(verboseLevel > 2) { + G4cout <<"direct: densg <= 0.e0 " << a <<","<< zprf <<","<< ee << G4endl; + } + } + + gsum = ga + gp + gn; + // assert(isinf(gsum) == false); + // assert(isnan(gsum) == false); + if (gsum > 0.0) { + ts1 = hbar / gsum; + } + else { + ts1 = 1.0e99; + } + + if (inum > ilast) { // new event means reset the time scale + tsum = 0; + } + + // calculate the relative probabilities for all decay channels + if (densf == 0.0) { + if (densp == 0.0) { + if (densn == 0.0) { + if (densa == 0.0) { + // no reaction is possible + probf = 0.0; + probp = 0.0; + probn = 0.0; + proba = 0.0; + goto direct70; + } + + // alpha evaporation is the only open channel + rf = 0.0; + rp = 0.0; + rn = 0.0; + ra = 1.0; + goto direct50; + } + + // alpha emission and neutron emission + rf = 0.0; + rp = 0.0; + rn = 1.0; + ra = densa*2.0/densn*std::pow((at/nt),2); + goto direct50; + } + // alpha, proton and neutron emission + rf = 0.0; + rp = 1.0; + rn = densn/densp*std::pow((nt/pt),2); + // assert(isnan(rn) == false); + ra = densa*2.0/densp*std::pow((at/pt),2); + // assert(isnan(ra) == false); + goto direct50; + } + + // here fission has taken place + rf = 1.0; + + // cramers and weidenmueller factors for the dynamical hindrances of + // fission + if (bet <= 1.0e-16) { + cf = 1.0; + wf = 1.0; + } + else if (sbf > 0.0e0) { + cf = cram(bet,homega); + // if fission barrier ef=0.d0 then fission is the only possible + // channel. to avoid std::log(0) in function tau + // a.j. 7/28/93 + if (ef <= 0.0) { + rp = 0.0; + rn = 0.0; + ra = 0.0; + goto direct50; + } + else { + // transient time tau() + tauc = tau(bet,homega,ef,ft); + // assert(isnan(tauc) == false); + } + wfex = (tauc - tsum)/ts1; + + if (wfex < 0.0) { + wf = 1.0; + } + else { + wf = std::exp( -wfex); + } + } + else { + cf=1.0; + wf=1.0; + } + + if(verboseLevel > 2) { + G4cout <<"tsum,wf,cf " << tsum <<","<< wf <<","<< cf << G4endl; + } + + tsum = tsum + ts1; + + // change by g.k. and a.h. 5.9.95 + tconst = 0.7; + dconst = 12.0/std::sqrt(a); + // assert(isnan(dconst) == false); + nprf = a - zprf; + + if (fiss->optshp >= 2) { //then + parite(nprf,&parc); + // assert(isnan(parc) == false); + dconst = dconst*parc; + } + else { + dconst= 0.0; + } + if ((ee <= 17.e0) && (fiss->optles == 1) && (iz >= 90) && (in >= 134)) { //then + // constant changed to 5.0 accord to moretto & vandenbosch a.j. 19.3.96 + gngf = std::pow(a,(2.0/3.0))*tconst/10.0*std::exp((ef-sn+dconst)/tconst); + + // if the excitation energy is so low that densn=0 ==> gn = 0 + // fission remains the only channel. + // a. j. 10.1.94 + if (gn == 0.0) { + rn = 0.0; + rp = 0.0; + ra = 0.0; + } + else { + rn=gngf; + // assert(isnan(rn) == false); + rp=gngf*gp/gn; + // assert(isnan(rp) == false); + ra=gngf*ga/gn; + // assert(isnan(ra) == false); + } + } else { + // assert(isnan(cf) == false); + // assert(isinf(gn) == false); + // assert(isinf(gf) == false); + // assert(isinf(cf) == false); + assert(gn > 0 || (gf != 0 && cf != 0)); + rn = gn/(gf*cf); +// G4cout <<"rn = " << G4endl; +// G4cout <<"gn = " << gn << " gf = " << gf << " cf = " << cf << G4endl; + // assert(isnan(rn) == false); + rp = gp/(gf*cf); + // assert(isnan(rp) == false); + ra = ga/(gf*cf); + // assert(isnan(ra) == false); + } + direct50: + // relative decay probabilities + // assert(isnan(ra) == false); + // assert(isnan(rp) == false); + // assert(isnan(rn) == false); + // assert(isnan(rf) == false); + + denomi = rp+rn+ra+rf; + // assert(isnan(denomi) == false); + assert(denomi > 0); + // decay probabilities after transient time + probf = rf/denomi; + // assert(isnan(probf) == false); + probp = rp/denomi; + // assert(isnan(probp) == false); + probn = rn/denomi; + // assert(isnan(probn) == false); + proba = ra/denomi; + // assert(isnan(proba) == false); + // assert(isinf(proba) == false); + + // new treatment of grange-weidenmueller factor, 5.1.2000, khs !!! + + // decay probabilites with transient time included + // assert(isnan(wf) == false); + assert(std::fabs(probf) <= 1.0); + probf = probf * wf; + if(probf == 1.0) { + probp = 0.0; + probn = 0.0; + proba = 0.0; + } + else { + probp = probp * (wf + (1.e0-wf)/(1.e0-probf)); + probn = probn * (wf + (1.e0-wf)/(1.e0-probf)); + proba = proba * (wf + (1.e0-wf)/(1.e0-probf)); + } + direct70: + // assert(isnan(probp) == false); + // assert(isnan(probn) == false); + // assert(isnan(probf) == false); + // assert(isnan(proba) == false); + ptotl = probp+probn+proba+probf; + // assert(isnan(ptotl) == false); + + ee = eer; + ilast = inum; + + // Return values: + // assert(isnan(proba) == false); + (*probp_par) = probp; + (*probn_par) = probn; + (*proba_par) = proba; + (*probf_par) = probf; + (*ptotl_par) = ptotl; + (*sn_par) = sn; + (*sbp_par) = sbp; + (*sba_par) = sba; + (*ecn_par) = ecn; + (*ecp_par) = ecp; + (*eca_par) = eca; + (*bp_par) = bp; + (*ba_par) = ba; +} + +void G4Abla::densniv(G4double a, G4double z, G4double ee, G4double esous, G4double *dens, G4double bshell, G4double bs, G4double bk, + G4double *temp, G4int optshp, G4int optcol, G4double defbet) +{ + // 1498 C + // 1499 C INPUT: + // 1500 C A,EE,ESOUS,OPTSHP,BS,BK,BSHELL,DEFBET + // 1501 C + // 1502 C LEVEL DENSITY PARAMETERS + // 1503 C COMMON /ALD/ AV,AS,AK,OPTAFAN + // 1504 C AV,AS,AK - VOLUME,SURFACE,CURVATURE DEPENDENCE OF THE + // 1505 C LEVEL DENSITY PARAMETER + // 1506 C OPTAFAN - 0/1 AF/AN >=1 OR AF/AN ==1 + // 1507 C RECOMMENDED IS OPTAFAN = 0 + // 1508 C--------------------------------------------------------------------- + // 1509 C OUTPUT: DENS,TEMP + // 1510 C + // 1511 C ____________________________________________________________________ + // 1512 C / + // 1513 C / PROCEDURE FOR CALCULATING THE STATE DENSITY OF A COMPOUND NUCLEUS + // 1514 C /____________________________________________________________________ + // 1515 C + // 1516 INTEGER AFP,IZ,OPTSHP,OPTCOL,J,OPTAFAN + // 1517 REAL*8 A,EE,ESOUS,DENS,E,Y0,Y1,Y2,Y01,Y11,Y21,PA,BS,BK,TEMP + // 1518 C=====INSERTED BY KUDYAEV=============================================== + // 1519 COMMON /ALD/ AV,AS,AK,OPTAFAN + // 1520 REAL*8 ECR,ER,DELTAU,Z,DELTPP,PARA,PARZ,FE,HE,ECOR,ECOR1,Pi6 + // 1521 REAL*8 BSHELL,DELTA0,AV,AK,AS,PONNIV,PONFE,DEFBET,QR,SIG,FP + // 1522 C======================================================================= + // 1523 C + // 1524 C + // 1525 C----------------------------------------------------------------------- + // 1526 C A MASS NUMBER OF THE DAUGHTER NUCLEUS + // 1527 C EE EXCITATION ENERGY OF THE MOTHER NUCLEUS + // 1528 C ESOUS SEPARATION ENERGY PLUS EFFECTIVE COULOMB BARRIER + // 1529 C DENS STATE DENSITY OF DAUGHTER NUCLEUS AT EE-ESOUS-EC + // 1530 C BSHELL SHELL CORRECTION + // 1531 C TEMP NUCLEAR TEMPERATURE + // 1532 C E LOCAL EXCITATION ENERGY OF THE DAUGHTER NUCLEUS + // 1533 C E1 LOCAL HELP VARIABLE + // 1534 C Y0,Y1,Y2,Y01,Y11,Y21 + // 1535 C LOCAL HELP VARIABLES + // 1536 C PA LOCAL STATE-DENSITY PARAMETER + // 1537 C EC KINETIC ENERGY OF EMITTED PARTICLE WITHOUT + // 1538 C COULOMB REPULSION + // 1539 C IDEN FAKTOR FOR SUBSTRACTING KINETIC ENERGY IDEN*TEMP + // 1540 C DELTA0 PAIRING GAP 12 FOR GROUND STATE + // 1541 C 14 FOR SADDLE POINT + // 1542 C EITERA HELP VARIABLE FOR TEMPERATURE ITERATION + // 1543 C----------------------------------------------------------------------- + // 1544 C + // 1545 C + G4double afp; + G4double delta0; + G4double deltau; + G4double deltpp; + G4double e; + G4double ecor = 0.0; + G4double ecor1; + G4double ecr; + G4double er; + G4double fe; + G4double fp; + G4double he; + G4double iz; + G4double pa; + G4double para; + G4double parz; + G4double ponfe; + G4double ponniv; + G4double qr; + G4double sig; + G4double y01; + G4double y11; + G4double y2; + G4double y21; + G4double y1; + G4double y0; + + G4double pi6 = std::pow(3.1415926535,2) / 6.0; + ecr=10.0; + er=28.0; + afp=idnint(a); + iz=idnint(z); + + // level density parameter + if((ald->optafan == 1)) { + pa = (ald->av)*a + (ald->as)*std::pow(a,(2.e0/3.e0)) + (ald->ak)*std::pow(a,(1.e0/3.e0)); + } + else { + pa = (ald->av)*a + (ald->as)*bs*std::pow(a,(2.e0/3.e0)) + (ald->ak)*bk*std::pow(a,(1.e0/3.e0)); + } + + fp = 0.01377937231e0 * std::pow(a,(5.e0/3.e0)) * (1.e0 + defbet/3.e0); + + // pairing corrections + if (bs > 1.0) { + delta0 = 14; + } + else { + delta0 = 12; + } + + if (esous > 1.0e30) { + (*dens) = 0.0; + (*temp) = 0.0; + goto densniv100; + } + + e = ee - esous; + + if (e < 0.0) { + (*dens) = 0.0; + (*temp) = 0.0; + goto densniv100; + } + + // shell corrections + if (optshp > 0) { + deltau = bshell; + if (optshp == 2) { + deltau = 0.0; + } + if (optshp >= 2) { + // pairing energy shift with condensation energy a.r.j. 10.03.97 + // deltpp = -0.25e0* (delta0/std::pow(std::sqrt(a),2)) * pa /pi6 + 2.e0*delta0/std::sqrt(a); + deltpp = -0.25e0* std::pow((delta0/std::sqrt(a)),2) * pa /pi6 + 2.e0*delta0/std::sqrt(a); + // assert(isnan(deltpp) == false); + + parite(a,¶); + if (para < 0.0) { + e = e - delta0/std::sqrt(a); + // assert(isnan(e) == false); + } else { + parite(z,&parz); + if (parz > 0.e0) { + e = e - 2.0*delta0/std::sqrt(a); + // assert(isnan(e) == false); + } else { + e = e; + // assert(isnan(e) == false); + } + } + } else { + deltpp = 0.0; + } + } else { + deltau = 0.0; + deltpp = 0.0; + } + if (e < 0.0) { + e = 0.0; + (*temp) = 0.0; + } + + // washing out is made stronger ! g.k. 3.7.96 + ponfe = -2.5*pa*e*std::pow(a,(-4.0/3.0)); + + if (ponfe < -700.0) { + ponfe = -700.0; + } + fe = 1.0 - std::exp(ponfe); + if (e < ecr) { + // priv. comm. k.-h. schmidt + he = 1.0 - std::pow((1.0 - e/ecr),2); + } + else { + he = 1.0; + } + + // Excitation energy corrected for pairing and shell effects + // washing out with excitation energy is included. + ecor = e + deltau*fe + deltpp*he; + + if (ecor <= 0.1) { + ecor = 0.1; + } + + // statt 170.d0 a.r.j. 8.11.97 + + // iterative procedure according to grossjean and feldmeier + // to avoid the singularity e = 0 + if (ee < 5.0) { + y1 = std::sqrt(pa*ecor); + // assert(isnan(y1) == false); + for(int j = 0; j < 5; j++) { + y2 = pa*ecor*(1.e0-std::exp(-y1)); + // assert(isnan(y2) == false); + y1 = std::sqrt(y2); + // assert(isnan(y1) == false); + } + + y0 = pa/y1; + // assert(isnan(y0) == false); + assert(y0 != 0.0); + (*temp)=1.0/y0; + (*dens) = std::exp(y0*ecor)/ (std::pow((std::pow(ecor,3)*y0),0.5)*std::pow((1.0-0.5*y0*ecor*std::exp(-y1)),0.5))* std::exp(y1)*(1.0-std::exp(-y1))*0.1477045; + if (ecor < 1.0) { + ecor1=1.0; + y11 = std::sqrt(pa*ecor1); + // assert(isnan(y11) == false); + for(int j = 0; j < 7; j++) { + y21 = pa*ecor1*(1.0-std::exp(-y11)); + // assert(isnan(21) == false); + y11 = std::sqrt(y21); + // assert(isnan(y11) == false); + } + + y01 = pa/y11; + // assert(isnan(y01) == false); + (*dens) = (*dens)*std::pow((y01/y0),1.5); + (*temp) = (*temp)*std::pow((y01/y0),1.5); + } + } + else { + ponniv = 2.0*std::sqrt(pa*ecor); + // assert(isnan(ponniv) == false); + if (ponniv > 700.0) { + ponniv = 700.0; + } + + // fermi gas state density + (*dens) = std::pow(pa,(-0.25e0))*std::pow(ecor,(-1.25e0))*std::exp(ponniv) * 0.1477045e0; + // assert(isnan(std::sqrt(ecor/pa)) == false); + (*temp) = std::sqrt(ecor/pa); + } + densniv100: + + // spin cutoff parameter + sig = fp * (*temp); + + // collective enhancement + if (optcol == 1) { + qrot(z,a,defbet,sig,ecor,&qr); + } + else { + qr = 1.0; + } + + (*dens) = (*dens) * qr; +} + + +G4double G4Abla::bfms67(G4double zms, G4double ams) +{ + // This subroutine calculates the fission barriers + // of the liquid-drop model of Myers and Swiatecki (1967). + // Analytic parameterization of Dahlinger 1982 + // replaces tables. Barrier heights from Myers and Swiatecki !!! + + G4double nms,ims,ksims,xms, ums; + + nms = ams - zms; + ims = (nms-zms)/ams; + ksims= 50.15e0 * (1.- 1.78 * std::pow(ims,2)); + xms = std::pow(zms,2) / (ams * ksims); + ums = 0.368e0-5.057e0*xms+8.93e0*std::pow(xms,2)-8.71*std::pow(xms,3); + return(0.7322e0*std::pow(zms,2)/std::pow(ams,(0.333333e0))*std::pow(10.e0,ums)); +} + +void G4Abla::lpoly(G4double x, G4int n, G4double pl[]) +{ + // THIS SUBROUTINE CALCULATES THE ORDINARY LEGENDRE POLYNOMIALS OF + // ORDER 0 TO N-1 OF ARGUMENT X AND STORES THEM IN THE VECTOR PL. + // THEY ARE CALCULATED BY RECURSION RELATION FROM THE FIRST TWO + // POLYNOMIALS. + // WRITTEN BY A.J.SIERK LANL T-9 FEBRUARY, 1984 + + // NOTE: PL AND X MUST BE DOUBLE PRECISION ON 32-BIT COMPUTERS! + + pl[0] = 1.0; + pl[1] = x; + + for(int i = 2; i < n; i++) { + pl[i] = ((2*double(i+1) - 3.0)*x*pl[i-1] - (double(i+1) - 2.0)*pl[i-2])/(double(i+1)-1.0); + } +} + +G4double G4Abla::eflmac(G4int ia, G4int iz, G4int flag, G4int optshp) +{ + // CHANGED TO CALCULATE TOTAL BINDING ENERGY INSTEAD OF MASS EXCESS. + // SWITCH FOR PAIRING INCLUDED AS WELL. + // BINDING = EFLMAC(IA,IZ,0,OPTSHP) + // FORTRAN TRANSCRIPT OF /U/GREWE/LANG/EEX/FRLDM.C + // A.J. 15.07.96 + + // this function will calculate the liquid-drop nuclear mass for spheri + // configuration according to the preprint NUCLEAR GROUND-STATE + // MASSES and DEFORMATIONS by P. M"oller et al. from August 16, 1993 p. + // All constants are taken from this publication for consistency. + + // Parameters: + // a: nuclear mass number + // z: nuclear charge + // flag: 0 - return mass excess + // otherwise - return pairing (= -1/2 dpn + 1/2 (Dp + Dn)) + + G4double eflmacResult; + + G4int in; + G4double z,n,a,av,as,a0,c1,c4,b1,b3,f,ca,w,dp,dn,dpn,efl,pi; + G4double rmac,bs,h,r0,kf,ks,kv,rp,ay,aden,x0,y0,mh,mn,esq,ael,i; + pi = 3.141592653589793238e0; + + // fundamental constants + // hydrogen-atom mass excess + mh = 7.289034; + + // neutron mass excess + mn = 8.071431; + + // electronic charge squared + esq = 1.4399764; + + // constants from considerations other than nucl. masses + // electronic binding + ael = 1.433e-5; + + // proton rms radius + rp = 0.8; + + // nuclear radius constant + r0 = 1.16; + + // range of yukawa-plus-expon. potential + ay = 0.68; + + // range of yukawa function used to generate + // nuclear charge distribution + aden= 0.70; + + // constants from considering odd-even mass differences + // average pairing gap + rmac= 4.80; + + // neutron-proton interaction + h = 6.6; + + // wigner constant + w = 30.0; + + // adjusted parameters + // volume energy + av = 16.00126; + + // volume asymmetry + kv = 1.92240; + + // surface energy + as = 21.18466; + + // surface asymmetry + ks = 2.345; + // a^0 constant + a0 = 2.615; + + // charge asymmetry + ca = 0.10289; + + // we will account for deformation by using the microscopic + // corrections tabulated from p. 68ff */ + bs = 1.0; + + z = double(iz); + a = double(ia); + in = ia - iz; + n = double(in); + dn = rmac*bs/std::pow(n,(1.0/3.0)); + dp = rmac*bs/std::pow(z,(1.0/3.0)); + dpn = h/bs/std::pow(a,(2.0/3.0)); + // assert(isnan(dpn) == false); + + c1 = 3.0/5.0*esq/r0; + // assert(isnan(c1) == false); + // assert(isinf(c1) == false); + + c4 = 5.0/4.0*std::pow((3.0/(2.0*pi)),(2.0/3.0)) * c1; + // assert(isnan(c4) == false); + // assert(isinf(c4) == false); + + // assert(isnan(pi) == false); + // assert(isnan(z) == false); + // assert(isnan(a) == false); + // assert(isnan(r0) == false); + kf = std::pow((9.0*pi*z/(4.0*a)),(1.0/3.0))/r0; + // assert(isnan(kf) == false); + // assert(isinf(kf) == false); + + f = -1.0/8.0*rp*rp*esq/std::pow(r0,3) * (145.0/48.0 - 327.0/2880.0*std::pow(kf,2) * std::pow(rp,2) + 1527.0/1209600.0*std::pow(kf,4) * std::pow(rp,4)); + i = (n-z)/a; + + x0 = r0 * std::pow(a,(1.0/3.0)) / ay; + y0 = r0 * std::pow(a,(1.0/3.0)) / aden; + + b1 = 1.0 - 3.0/(std::pow(x0,2)) + (1.0 + x0) * (2.0 + 3.0/x0 + 3.0/std::pow(x0,2)) * std::exp(-2.0*x0); + + b3 = 1.0 - 5.0/std::pow(y0,2) * (1.0 - 15.0/(8.0*y0) + 21.0/(8.0 * std::pow(y0,3)) + - 3.0/4.0 * (1.0 + 9.0/(2.0*y0) + 7.0/std::pow(y0,2) + + 7.0/(2.0 * std::pow(y0,3))) * std::exp(-2.0*y0)); + + // now calulation of total binding energy a.j. 16.7.96 + + efl = -1.0 * av*(1.0 - kv*i*i)*a + as*(1.0 - ks*i*i)*b1 * std::pow(a,(2.0/3.0)) + a0 + + c1*z*z*b3/std::pow(a,(1.0/3.0)) - c4*std::pow(z,(4.0/3.0))/std::pow(a,(1.e0/3.e0)) + + f*std::pow(z,2)/a -ca*(n-z) - ael * std::pow(z,(2.39e0)); + + if ((in == iz) && (mod(in,2) == 1) && (mod(iz,2) == 1)) { + // n and z odd and equal + efl = efl + w*(utilabs(i)+1.e0/a); + } + else { + efl= efl + w* utilabs(i); + } + + // pairing is made optional + if (optshp >= 2) { + // average pairing + if ((mod(in,2) == 1) && (mod(iz,2) == 1)) { + efl = efl - dpn; + } + if (mod(in,2) == 1) { + efl = efl + dn; + } + if (mod(iz,2) == 1) { + efl = efl + dp; + } + // end if for pairing term + } + + if (flag != 0) { + eflmacResult = (0.5*(dn + dp) - 0.5*dpn); + } + else { + eflmacResult = efl; + } + + return eflmacResult; +} + +void G4Abla::appariem(G4double a, G4double z, G4double *del) +{ + // CALCUL DE LA CORRECTION, DUE A L'APPARIEMENT, DE L'ENERGIE DE + // LIAISON D'UN NOYAU + // PROCEDURE FOR CALCULATING THE PAIRING CORRECTION TO THE BINDING + // ENERGY OF A SPECIFIC NUCLEUS + + double para,parz; + // A MASS NUMBER + // Z NUCLEAR CHARGE + // PARA HELP VARIABLE FOR PARITY OF A + // PARZ HELP VARIABLE FOR PARITY OF Z + // DEL PAIRING CORRECTION + + parite(a, ¶); + + if (para < 0.0) { + (*del) = 0.0; + } + else { + parite(z, &parz); + if (parz > 0.0) { + // assert(isnan(std::sqrt(a)) == false); + (*del) = -12.0/std::sqrt(a); + } + else { + // assert(isnan(std::sqrt(a)) == false); + (*del) = 12.0/std::sqrt(a); + } + } +} + +void G4Abla::parite(G4double n, G4double *par) +{ + // CALCUL DE LA PARITE DU NOMBRE N + // + // PROCEDURE FOR CALCULATING THE PARITY OF THE NUMBER N. + // RETURNS -1 IF N IS ODD AND +1 IF N IS EVEN + + G4double n1, n2, n3; + + // N NUMBER TO BE TESTED + // N1,N2 HELP VARIABLES + // PAR HELP VARIABLE FOR PARITY OF N + + n3 = double(idnint(n)); + n1 = n3/2.0; + n2 = n1 - dint(n1); + + if (n2 > 0.0) { + (*par) = -1.0; + } + else { + (*par) = 1.0; + } +} + +G4double G4Abla::tau(G4double bet, G4double homega, G4double ef, G4double t) +{ + // INPUT : BET, HOMEGA, EF, T + // OUTPUT: TAU - RISE TIME IN WHICH THE FISSION WIDTH HAS REACHED + // 90 PERCENT OF ITS FINAL VALUE + // + // BETA - NUCLEAR VISCOSITY + // HOMEGA - CURVATURE OF POTENTIAL + // EF - FISSION BARRIER + // T - NUCLEAR TEMPERATURE + + G4double tauResult; + + G4double tlim; + tlim = 8.e0 * ef; + if (t > tlim) { + t = tlim; + } + + // modified bj and khs 6.1.2000: + if (bet/(std::sqrt(2.0)*10.0*(homega/6.582122)) <= 1.0) { + tauResult = std::log(10.0*ef/t)/(bet*1.0e21); + // assert(isnan(tauResult) == false); + } + else { + tauResult = std::log(10.0*ef/t)/ (2.0*std::pow((10.0*homega/6.582122),2))*(bet*1.0e-21); + // assert(isnan(tauResult) == false); + } //end if + + return tauResult; +} + +G4double G4Abla::cram(G4double bet, G4double homega) +{ + // INPUT : BET, HOMEGA NUCLEAR VISCOSITY + CURVATURE OF POTENTIAL + // OUTPUT: KRAMERS FAKTOR - REDUCTION OF THE FISSION PROBABILITY + // INDEPENDENT OF EXCITATION ENERGY + + G4double rel = bet/(20.0*homega/6.582122); + G4double cramResult = std::sqrt(1.0 + std::pow(rel,2)) - rel; + // limitation introduced 6.1.2000 by khs + + if (cramResult > 1.0) { + cramResult = 1.0; + } + + // assert(isnan(cramResult) == false); + return cramResult; +} + +G4double G4Abla::bipol(int iflag, G4double y) +{ + // CALCULATION OF THE SURFACE BS OR CURVATURE BK OF A NUCLEUS + // RELATIVE TO THE SPHERICAL CONFIGURATION + // BASED ON MYERS, DROPLET MODEL FOR ARBITRARY SHAPES + + // INPUT: IFLAG - 0/1 BK/BS CALCULATION + // Y - (1 - X) COMPLEMENT OF THE FISSILITY + + // LINEAR INTERPOLATION OF BS BK TABLE + + int i; + + G4double bipolResult; + + const int bsbkSize = 54; + + G4double bk[bsbkSize] = {0.0, 1.00000,1.00087,1.00352,1.00799,1.01433,1.02265,1.03306, + 1.04576,1.06099,1.07910,1.10056,1.12603,1.15651,1.19348, + 1.23915,1.29590,1.35951,1.41013,1.44103,1.46026,1.47339, + 1.48308,1.49068,1.49692,1.50226,1.50694,1.51114,1.51502, + 1.51864,1.52208,1.52539,1.52861,1.53177,1.53490,1.53803, + 1.54117,1.54473,1.54762,1.55096,1.55440,1.55798,1.56173, + 1.56567,1.56980,1.57413,1.57860,1.58301,1.58688,1.58688, + 1.58688,1.58740,1.58740, 0.0}; //Zeroes at bk[0], and at the end added by PK + + G4double bs[bsbkSize] = {0.0, 1.00000,1.00086,1.00338,1.00750,1.01319, + 1.02044,1.02927,1.03974, + 1.05195,1.06604,1.08224,1.10085,1.12229,1.14717,1.17623,1.20963, + 1.24296,1.26532,1.27619,1.28126,1.28362,1.28458,1.28477,1.28450, + 1.28394,1.28320,1.28235,1.28141,1.28042,1.27941,1.27837,1.27732, + 1.27627,1.27522,1.27418,1.27314,1.27210,1.27108,1.27006,1.26906, + 1.26806,1.26707,1.26610,1.26514,1.26418,1.26325,1.26233,1.26147, + 1.26147,1.26147,1.25992,1.25992, 0.0}; + + i = idint(y/(2.0e-02)) + 1; + assert(i >= 1); + + if(i >= bsbkSize) { + if(verboseLevel > 2) { + G4cout <<"G4Abla error: index i = " << i << " is greater than array size permits." << G4endl; + } + bipolResult = 0.0; + } + else { + if (iflag == 1) { + bipolResult = bs[i] + (bs[i+1] - bs[i])/2.0e-02 * (y - 2.0e-02*(i - 1)); + } + else { + bipolResult = bk[i] + (bk[i+1] - bk[i])/2.0e-02 * (y - 2.0e-02*(i - 1)); + } + } + + // assert(isnan(bipolResult) == false); + return bipolResult; +} + +void G4Abla::barfit(G4int iz, G4int ia, G4int il, G4double *sbfis, G4double *segs, G4double *selmax) +{ + // 2223 C VERSION FOR 32BIT COMPUTER + // 2224 C THIS SUBROUTINE RETURNS THE BARRIER HEIGHT BFIS, THE + // 2225 C GROUND-STATE ENERGY SEGS, IN MEV, AND THE ANGULAR MOMENTUM + // 2226 C AT WHICH THE FISSION BARRIER DISAPPEARS, LMAX, IN UNITS OF + // 2227 C H-BAR, WHEN CALLED WITH INTEGER AGUMENTS IZ, THE ATOMIC + // 2228 C NUMBER, IA, THE ATOMIC MASS NUMBER, AND IL, THE ANGULAR + // 2229 C MOMENTUM IN UNITS OF H-BAR. (PLANCK'S CONSTANT DIVIDED BY + // 2230 C 2*PI). + // 2231 C + // 2232 C THE FISSION BARRIER FO IL = 0 IS CALCULATED FROM A 7TH + // 2233 C ORDER FIT IN TWO VARIABLES TO 638 CALCULATED FISSION + // 2234 C BARRIERS FOR Z VALUES FROM 20 TO 110. THESE 638 BARRIERS ARE + // 2235 C FIT WITH AN RMS DEVIATION OF 0.10 MEV BY THIS 49-PARAMETER + // 2236 C FUNCTION. + // 2237 C IF BARFIT IS CALLED WITH (IZ,IA) VALUES OUTSIDE THE RANGE OF + // 2238 C THE BARRIER HEIGHT IS SET TO 0.0, AND A MESSAGE IS PRINTED + // 2239 C ON THE DEFAULT OUTPUT FILE. + // 2240 C + // 2241 C FOR IL VALUES NOT EQUAL TO ZERO, THE VALUES OF L AT WHICH + // 2242 C THE BARRIER IS 80% AND 20% OF THE L=0 VALUE ARE RESPECTIVELY + // 2243 C FIT TO 20-PARAMETER FUNCTIONS OF Z AND A, OVER A MORE + // 2244 C RESTRICTED RANGE OF A VALUES, THAN IS THE CASE FOR L = 0. + // 2245 C THE VALUE OF L WHERE THE BARRIER DISAPPEARS, LMAX IS FIT TO + // 2246 C A 24-PARAMETER FUNCTION OF Z AND A, WITH THE SAME RANGE OF + // 2247 C Z AND A VALUES AS L-80 AND L-20. + // 2248 C ONCE AGAIN, IF AN (IZ,IA) PAIR IS OUTSIDE OF THE RANGE OF + // 2249 C VALIDITY OF THE FIT, THE BARRIER VALUE IS SET TO 0.0 AND A + // 2250 C MESSAGE IS PRINTED. THESE THREE VALUES (BFIS(L=0),L-80, AND + // 2251 C L-20) AND THE CONSTRINTS OF BFIS = 0 AND D(BFIS)/DL = 0 AT + // 2252 C L = LMAX AND L=0 LEAD TO A FIFTH-ORDER FIT TO BFIS(L) FOR + // 2253 C L>L-20. THE FIRST THREE CONSTRAINTS LEAD TO A THIRD-ORDER FIT + // 2254 C FOR THE REGION L < L-20. + // 2255 C + // 2256 C THE GROUND STATE ENERGIES ARE CALCULATED FROM A + // 2257 C 120-PARAMETER FIT IN Z, A, AND L TO 214 GROUND-STATE ENERGIES + // 2258 C FOR 36 DIFFERENT Z AND A VALUES. + // 2259 C (THE RANGE OF Z AND A IS THE SAME AS FOR L-80, L-20, AND + // 2260 C L-MAX) + // 2261 C + // 2262 C THE CALCULATED BARRIERS FROM WHICH THE FITS WERE MADE WERE + // 2263 C CALCULATED IN 1983-1984 BY A. J. SIERK OF LOS ALAMOS + // 2264 C NATIONAL LABORATORY GROUP T-9, USING YUKAWA-PLUS-EXPONENTIAL + // 2265 C G4DOUBLE FOLDED NUCLEAR ENERGY, EXACT COULOMB DIFFUSENESS + // 2266 C CORRECTIONS, AND DIFFUSE-MATTER MOMENTS OF INERTIA. + // 2267 C THE PARAMETERS OF THE MODEL R-0 = 1.16 FM, AS 21.13 MEV, + // 2268 C KAPPA-S = 2.3, A = 0.68 FM. + // 2269 C THE DIFFUSENESS OF THE MATTER AND CHARGE DISTRIBUTIONS USED + // 2270 C CORRESPONDS TO A SURFACE DIFFUSENESS PARAMETER (DEFINED BY + // 2271 C MYERS) OF 0.99 FM. THE CALCULATED BARRIERS FOR L = 0 ARE + // 2272 C ACCURATE TO A LITTLE LESS THAN 0.1 MEV; THE OUTPUT FROM + // 2273 C THIS SUBROUTINE IS A LITTLE LESS ACCURATE. WORST ERRORS MAY BE + // 2274 C AS LARGE AS 0.5 MEV; CHARACTERISTIC UNCERTAINY IS IN THE RANGE + // 2275 C OF 0.1-0.2 MEV. THE RMS DEVIATION OF THE GROUND-STATE FIT + // 2276 C FROM THE 214 INPUT VALUES IS 0.20 MEV. THE MAXIMUM ERROR + // 2277 C OCCURS FOR LIGHT NUCLEI IN THE REGION WHERE THE GROUND STATE + // 2278 C IS PROLATE, AND MAY BE GREATER THAN 1.0 MEV FOR VERY NEUTRON + // 2279 C DEFICIENT NUCLEI, WITH L NEAR LMAX. FOR MOST NUCLEI LIKELY TO + // 2280 C BE ENCOUNTERED IN REAL EXPERIMENTS, THE MAXIMUM ERROR IS + // 2281 C CLOSER TO 0.5 MEV, AGAIN FOR LIGHT NUCLEI AND L NEAR LMAX. + // 2282 C + // 2283 C WRITTEN BY A. J. SIERK, LANL T-9 + // 2284 C VERSION 1.0 FEBRUARY, 1984 + // 2285 C + // 2286 C THE FOLLOWING IS NECESSARY FOR 32-BIT MACHINES LIKE DEC VAX, + // 2287 C IBM, ETC + + G4double pa[7],pz[7],pl[10]; + G4double a,z,amin,amax,amin2,amax2,aa,zz,bfis; + G4double bfis0,ell,el,egs,el80,el20,elmax,sel80,sel20,x,y,q,qa,qb; + G4double aj,ak,a1,a2; + + G4int i,j,k,m; + G4int l; + + G4double emncof[4][5] = {{-9.01100e+2,-1.40818e+3, 2.77000e+3,-7.06695e+2, 8.89867e+2}, + {1.35355e+4,-2.03847e+4, 1.09384e+4,-4.86297e+3,-6.18603e+2}, + {-3.26367e+3, 1.62447e+3, 1.36856e+3, 1.31731e+3, 1.53372e+2}, + {7.48863e+3,-1.21581e+4, 5.50281e+3,-1.33630e+3, 5.05367e-2}}; + + G4double elmcof[4][5] = {{1.84542e+3,-5.64002e+3, 5.66730e+3,-3.15150e+3, 9.54160e+2}, + {-2.24577e+3, 8.56133e+3,-9.67348e+3, 5.81744e+3,-1.86997e+3}, + {2.79772e+3,-8.73073e+3, 9.19706e+3,-4.91900e+3, 1.37283e+3}, + {-3.01866e+1, 1.41161e+3,-2.85919e+3, 2.13016e+3,-6.49072e+2}}; + + G4double emxcof[4][6] = {{9.43596e4,-2.241997e5,2.223237e5,-1.324408e5,4.68922e4,-8.83568e3}, + {-1.655827e5,4.062365e5,-4.236128e5,2.66837e5,-9.93242e4,1.90644e4}, + {1.705447e5,-4.032e5,3.970312e5,-2.313704e5,7.81147e4,-1.322775e4}, + {-9.274555e4,2.278093e5,-2.422225e5,1.55431e5,-5.78742e4,9.97505e3}}; + + G4double elzcof[7][7] = {{5.11819909e+5,-1.30303186e+6, 1.90119870e+6,-1.20628242e+6, 5.68208488e+5, 5.48346483e+4,-2.45883052e+4}, + {-1.13269453e+6, 2.97764590e+6,-4.54326326e+6, 3.00464870e+6, -1.44989274e+6,-1.02026610e+5, 6.27959815e+4}, + {1.37543304e+6,-3.65808988e+6, 5.47798999e+6,-3.78109283e+6, 1.84131765e+6, 1.53669695e+4,-6.96817834e+4}, + {-8.56559835e+5, 2.48872266e+6,-4.07349128e+6, 3.12835899e+6, -1.62394090e+6, 1.19797378e+5, 4.25737058e+4}, + {3.28723311e+5,-1.09892175e+6, 2.03997269e+6,-1.77185718e+6, 9.96051545e+5,-1.53305699e+5,-1.12982954e+4}, + {4.15850238e+4, 7.29653408e+4,-4.93776346e+5, 6.01254680e+5, -4.01308292e+5, 9.65968391e+4,-3.49596027e+3}, + {-1.82751044e+5, 3.91386300e+5,-3.03639248e+5, 1.15782417e+5, -4.24399280e+3,-6.11477247e+3, 3.66982647e+2}}; + + const G4int sizex = 5; + const G4int sizey = 6; + const G4int sizez = 4; + + G4double egscof[sizey][sizey][sizez]; + + G4double egs1[sizey][sizex] = {{1.927813e5, 7.666859e5, 6.628436e5, 1.586504e5,-7.786476e3}, + {-4.499687e5,-1.784644e6,-1.546968e6,-4.020658e5,-3.929522e3}, + {4.667741e5, 1.849838e6, 1.641313e6, 5.229787e5, 5.928137e4}, + {-3.017927e5,-1.206483e6,-1.124685e6,-4.478641e5,-8.682323e4}, + {1.226517e5, 5.015667e5, 5.032605e5, 2.404477e5, 5.603301e4}, + {-1.752824e4,-7.411621e4,-7.989019e4,-4.175486e4,-1.024194e4}}; + + G4double egs2[sizey][sizex] = {{-6.459162e5,-2.903581e6,-3.048551e6,-1.004411e6,-6.558220e4}, + {1.469853e6, 6.564615e6, 6.843078e6, 2.280839e6, 1.802023e5}, + {-1.435116e6,-6.322470e6,-6.531834e6,-2.298744e6,-2.639612e5}, + {8.665296e5, 3.769159e6, 3.899685e6, 1.520520e6, 2.498728e5}, + {-3.302885e5,-1.429313e6,-1.512075e6,-6.744828e5,-1.398771e5}, + {4.958167e4, 2.178202e5, 2.400617e5, 1.167815e5, 2.663901e4}}; + + G4double egs3[sizey][sizex] = {{3.117030e5, 1.195474e6, 9.036289e5, 6.876190e4,-6.814556e4}, + {-7.394913e5,-2.826468e6,-2.152757e6,-2.459553e5, 1.101414e5}, + {7.918994e5, 3.030439e6, 2.412611e6, 5.228065e5, 8.542465e3}, + {-5.421004e5,-2.102672e6,-1.813959e6,-6.251700e5,-1.184348e5}, + {2.370771e5, 9.459043e5, 9.026235e5, 4.116799e5, 1.001348e5}, + {-4.227664e4,-1.738756e5,-1.795906e5,-9.292141e4,-2.397528e4}}; + + G4double egs4[sizey][sizex] = {{-1.072763e5,-5.973532e5,-6.151814e5, 7.371898e4, 1.255490e5}, + {2.298769e5, 1.265001e6, 1.252798e6,-2.306276e5,-2.845824e5}, + {-2.093664e5,-1.100874e6,-1.009313e6, 2.705945e5, 2.506562e5}, + {1.274613e5, 6.190307e5, 5.262822e5,-1.336039e5,-1.115865e5}, + {-5.715764e4,-2.560989e5,-2.228781e5,-3.222789e3, 1.575670e4}, + {1.189447e4, 5.161815e4, 4.870290e4, 1.266808e4, 2.069603e3}}; + + for(i = 0; i < sizey; i++) { + for(j = 0; j < sizex; j++) { + // egscof[i][j][0] = egs1[i][j]; + // egscof[i][j][1] = egs2[i][j]; + // egscof[i][j][2] = egs3[i][j]; + // egscof[i][j][3] = egs4[i][j]; + egscof[i][j][0] = egs1[i][j]; + egscof[i][j][1] = egs2[i][j]; + egscof[i][j][2] = egs3[i][j]; + egscof[i][j][3] = egs4[i][j]; + } + } + + // the program starts here + if (iz < 19 || iz > 111) { + goto barfit900; + } + + if(iz > 102 && il > 0) { + goto barfit902; + } + + z=double(iz); + a=double(ia); + el=double(il); + amin= 1.2e0*z + 0.01e0*z*z; + amax= 5.8e0*z - 0.024e0*z*z; + + if(a < amin || a > amax) { + goto barfit910; + } + + // angul.mom.zero barrier + aa=2.5e-3*a; + zz=1.0e-2*z; + ell=1.0e-2*el; + bfis0 = 0.0; + lpoly(zz,7,pz); + lpoly(aa,7,pa); + + for(i = 0; i < 7; i++) { //do 10 i=1,7 + for(j = 0; j < 7; j++) { //do 10 j=1,7 + bfis0=bfis0+elzcof[j][i]*pz[i]*pa[j]; + //bfis0=bfis0+elzcof[i][j]*pz[j]*pa[i]; + } + } + + bfis=bfis0; + // assert(isnan(bfis) == false); + + (*sbfis)=bfis; + egs=0.0; + (*segs)=egs; + + // values of l at which the barrier + // is 20%(el20) and 80%(el80) of l=0 value + amin2 = 1.4e0*z + 0.009e0*z*z; + amax2 = 20.e0 + 3.0e0*z; + + if((a < amin2-5.e0 || a > amax2+10.e0) && il > 0) { + goto barfit920; + } + + lpoly(zz,5,pz); + lpoly(aa,4,pa); + el80=0.0; + el20=0.0; + elmax=0.0; + + for(i = 0; i < 4; i++) { + for(j = 0; j < 5; j++) { +// el80 = el80 + elmcof[j][i]*pz[j]*pa[i]; +// el20 = el20 + emncof[j][i]*pz[j]*pa[i]; + el80 = el80 + elmcof[i][j]*pz[j]*pa[i]; + el20 = el20 + emncof[i][j]*pz[j]*pa[i]; + } + } + + sel80 = el80; + sel20 = el20; + + // value of l (elmax) where barrier disapp. + lpoly(zz,6,pz); + lpoly(ell,9,pl); + + for(i = 0; i < 4; i++) { //do 30 i= 1,4 + for(j = 0; j < 6; j++) { //do 30 j=1,6 + //elmax = elmax + emxcof[j][i]*pz[j]*pa[i]; + // elmax = elmax + emxcof[j][i]*pz[i]*pa[j]; + elmax = elmax + emxcof[i][j]*pz[j]*pa[i]; + } + } + + // assert(isnan(elmax) == false); + (*selmax)=elmax; + + // value of barrier at ang.mom. l + if(il < 1){ + return; + } + + x = sel20/(*selmax); + // assert(isnan(x) == false); + y = sel80/(*selmax); + // assert(isnan(y) == false); + + if(el <= sel20) { + // low l + q = 0.2/(std::pow(sel20,2)*std::pow(sel80,2)*(sel20-sel80)); + qa = q*(4.0*std::pow(sel80,3) - std::pow(sel20,3)); + qb = -q*(4.0*std::pow(sel80,2) - std::pow(sel20,2)); + bfis = bfis*(1.0 + qa*std::pow(el,2) + qb*std::pow(el,3)); + } + else { + // high l + aj = (-20.0*std::pow(x,5) + 25.e0*std::pow(x,4) - 4.0)*std::pow((y-1.0),2)*y*y; + ak = (-20.0*std::pow(y,5) + 25.0*std::pow(y,4) - 1.0) * std::pow((x-1.0),2)*x*x; + q = 0.2/(std::pow((y-x)*((1.0-x)*(1.0-y)*x*y),2)); + qa = q*(aj*y - ak*x); + qb = -q*(aj*(2.0*y + 1.0) - ak*(2.0*x + 1.0)); + z = el/(*selmax); + a1 = 4.0*std::pow(z,5) - 5.0*std::pow(z,4) + 1.0; + a2 = qa*(2.e0*z + 1.e0); + bfis=bfis*(a1 + (z - 1.e0)*(a2 + qb*z)*z*z*(z - 1.e0)); + } + + if(bfis <= 0.0) { + bfis=0.0; + } + + if(el > (*selmax)) { + bfis=0.0; + } + (*sbfis)=bfis; + + // now calculate rotating ground state energy + if(el > (*selmax)) { + return; + } + + for(k = 0; k < 4; k++) { + for(l = 0; l < 6; l++) { + for(m = 0; m < 5; m++) { + //egs = egs + egscof[l][m][k]*pz[l]*pa[k]*pl[2*m-1]; + egs = egs + egscof[l][m][k]*pz[l]*pa[k]*pl[2*m]; + // egs = egs + egscof[m][l][k]*pz[l]*pa[k]*pl[2*m-1]; + } + } + } + + (*segs)=egs; + if((*segs) < 0.0) { + (*segs)=0.0; + } + + return; + + barfit900: //continue + (*sbfis)=0.0; + // for z<19 sbfis set to 1.0e3 + if (iz < 19) { + (*sbfis) = 1.0e3; + } + (*segs)=0.0; + (*selmax)=0.0; + return; + + barfit902: + (*sbfis)=0.0; + (*segs)=0.0; + (*selmax)=0.0; + return; + + barfit910: + (*sbfis)=0.0; + (*segs)=0.0; + (*selmax)=0.0; + return; + + barfit920: + (*sbfis)=0.0; + (*segs)=0.0; + (*selmax)=0.0; + return; +} + +G4double G4Abla::expohaz(G4int k, G4double T) +{ + // TIRAGE ALEATOIRE DANS UNE EXPONENTIELLLE : Y=EXP(-X/T) + + // assert(isnan((-1*T*std::log(haz(k)))) == false); + return (-1.0*T*std::log(haz(k))); +} + +G4double G4Abla::fd(G4double E) +{ + // DISTRIBUTION DE MAXWELL + + return (E*std::exp(-E)); +} + +G4double G4Abla::f(G4double E) +{ + // FONCTION INTEGRALE DE FD(E) + return (1.0 - (E + 1.0) * std::exp(-E)); +} + +G4double G4Abla::fmaxhaz(G4double T) +{ + // tirage aleatoire dans une maxwellienne + // t : temperature + // + // declaration des variables + // + + const int pSize = 101; + static G4double p[pSize]; + + // ial generateur pour le cascade (et les iy pour eviter les correlations) + static G4int i; + static G4int itest = 0; + // programme principal + + // calcul des p(i) par approximation de newton + p[pSize-1] = 8.0; + G4double x = 0.1; + G4double x1; + G4double y; + + if (itest == 1) { + goto fmaxhaz120; + } + + for(i = 1; i <= 99; i++) { + fmaxhaz20: + x1 = x - (f(x) - double(i)/100.0)/fd(x); + x = x1; + if (std::fabs(f(x) - double(i)/100.0) < 1e-5) { + goto fmaxhaz100; + } + goto fmaxhaz20; + fmaxhaz100: + p[i] = x; + } //end do + + // itest = 1; + itest = 0; + // tirage aleatoire et calcul du x correspondant + // par regression lineaire + fmaxhaz120: + standardRandom(&y, &(hazard->igraine[17])); + i = nint(y*100); + + // 2590 c ici on evite froidement les depassements de tableaux....(a.b. 3/9/99) + if(i == 0) { + goto fmaxhaz120; + } + + if (i == 1) { + x = p[i]*y*100; + } + else { + x = (p[i] - p[i-1])*(y*100 - i) + p[i]; + } + + return(x*T); +} + +G4double G4Abla::pace2(G4double a, G4double z) +{ + // PACE2 + // Cette fonction retourne le defaut de masse du noyau A,Z en MeV + // Révisée pour a, z flottants 25/4/2002 = + + G4double pace2; + + G4int ii = idint(a+0.5); + G4int jj = idint(z+0.5); + + if(ii <= 0 || jj < 0) { + pace2=0.; + return pace2; + } + + if(jj > 300) { + pace2=0.0; + } + else { + pace2=pace->dm[ii][jj]; + } + pace2=pace2/1000.; + + if(pace->dm[ii][jj] == 0.) { + if(ii < 12) { + pace2=-500.; + } + else { + guet(&a, &z, &pace2); + pace2=pace2-ii*931.5; + pace2=pace2/1000.; + } + } + + return pace2; +} + +void G4Abla::guet(G4double *x_par, G4double *z_par, G4double *find_par) +{ + // TABLE DE MASSES ET FORMULE DE MASSE TIRE DU PAPIER DE BRACK-GUET + // Gives the theoritical value for mass excess... + // Révisée pour x, z flottants 25/4/2002 + + //real*8 x,z + // dimension q(0:50,0:70) + G4double x = (*x_par); + G4double z = (*z_par); + G4double find = (*find_par); + + const G4int qrows = 50; + const G4int qcols = 70; + G4double q[qrows][qcols]; + + G4int ix=G4int(std::floor(x+0.5)); + G4int iz=G4int(std::floor(z+0.5)); + G4double zz = iz; + G4double xx = ix; + find = 0.0; + G4double avol = 15.776; + G4double asur = -17.22; + G4double ac = -10.24; + G4double azer = 8.0; + G4double xjj = -30.03; + G4double qq = -35.4; + G4double c1 = -0.737; + G4double c2 = 1.28; + + if(ix <= 7) { + q[0][1]=939.50; + q[1][1]=938.21; + q[1][2]=1876.1; + q[1][3]=2809.39; + q[2][4]=3728.34; + q[2][3]=2809.4; + q[2][5]=4668.8; + q[2][6]=5606.5; + q[3][5]=4669.1; + q[3][6]=5602.9; + q[3][7]=6535.27; + q[4][6]=5607.3; + q[4][7]=6536.1; + q[5][7]=6548.3; + find=q[iz][ix]; + } + else { + G4double xneu=xx-zz; + G4double si=(xneu-zz)/xx; + G4double x13=std::pow(xx,.333); + G4double ee1=c1*zz*zz/x13; + G4double ee2=c2*zz*zz/xx; + G4double aux=1.+(9.*xjj/4./qq/x13); + G4double ee3=xjj*xx*si*si/aux; + G4double ee4=avol*xx+asur*(std::pow(xx,.666))+ac*x13+azer; + G4double tota = ee1 + ee2 + ee3 + ee4; + find = 939.55*xneu+938.77*zz - tota; + } + + (*x_par) = x; + (*z_par) = z; + (*find_par) = find; +} + + +// Fission code + +void G4Abla::even_odd(G4double r_origin,G4double r_even_odd,G4int &i_out) +{ + // Procedure to calculate I_OUT from R_IN in a way that + // on the average a flat distribution in R_IN results in a + // fluctuating distribution in I_OUT with an even-odd effect as + // given by R_EVEN_ODD + + // /* ------------------------------------------------------------ */ + // /* EXAMPLES : */ + // /* ------------------------------------------------------------ */ + // /* If R_EVEN_ODD = 0 : */ + // /* CEIL(R_IN) ---- */ + // /* */ + // /* R_IN -> */ + // /* (somewhere in between CEIL(R_IN) and FLOOR(R_IN)) */ */ + // /* */ + // /* FLOOR(R_IN) ---- --> I_OUT */ + // /* ------------------------------------------------------------ */ + // /* If R_EVEN_ODD > 0 : */ + // /* The interval for the above treatment is */ + // /* larger for FLOOR(R_IN) = even and */ + // /* smaller for FLOOR(R_IN) = odd */ + // /* For R_EVEN_ODD < 0 : just opposite treatment */ + // /* ------------------------------------------------------------ */ + + // /* ------------------------------------------------------------ */ + // /* On input: R_ORIGIN nuclear charge (real number) */ + // /* R_EVEN_ODD requested even-odd effect */ + // /* Intermediate quantity: R_IN = R_ORIGIN + 0.5 */ + // /* On output: I_OUT nuclear charge (integer) */ + // /* ------------------------------------------------------------ */ + + // G4double R_ORIGIN,R_IN,R_EVEN_ODD,R_REST,R_HELP; + G4double r_in,r_rest,r_help; + G4double r_floor; + G4double r_middle; + // G4int I_OUT,N_FLOOR; + G4int n_floor; + + r_in = r_origin + 0.5; + r_floor = (float)((int)(r_in)); + if (r_even_odd < 0.001) { + i_out = (int)(r_floor); + } + else { + r_rest = r_in - r_floor; + r_middle = r_floor + 0.5; + n_floor = (int)(r_floor); + if (n_floor%2 == 0) { + // even before modif. + r_help = r_middle + (r_rest - 0.5) * (1.0 - r_even_odd); + } + else { + // odd before modification + r_help = r_middle + (r_rest - 0.5) * (1.0 + r_even_odd); + } + i_out = (int)(r_help); + } +} + +G4double G4Abla::umass(G4double z,G4double n,G4double beta) +{ + // liquid-drop mass, Myers & Swiatecki, Lysekil, 1967 + // pure liquid drop, without pairing and shell effects + + // On input: Z nuclear charge of nucleus + // N number of neutrons in nucleus + // beta deformation of nucleus + // On output: binding energy of nucleus + + G4double a,umass; + G4double alpha; + G4double xcom,xvs,xe; + const G4double pi = 3.1416; + + a = n + z; + alpha = ( std::sqrt(5.0/(4.0*pi)) ) * beta; + // assert(isnan(alpha) == false); + + xcom = 1.0 - 1.7826 * ((a - 2.0*z)/a)*((a - 2.0*z)/a); + // assert(isnan(xcom) == false); + // factor for asymmetry dependence of surface and volume term + xvs = - xcom * ( 15.4941 * a - + 17.9439 * std::pow(a,0.66667) * (1.0+0.4*alpha*alpha) ); + // sum of volume and surface energy + xe = z*z * (0.7053/(std::pow(a,0.33333)) * (1.0-0.2*alpha*alpha) - 1.1529/a); + // assert(isnan(xe) == false); + umass = xvs + xe; + + return umass; +} + +G4double G4Abla::ecoul(G4double z1,G4double n1,G4double beta1,G4double z2,G4double n2,G4double beta2,G4double d) +{ + // Coulomb potential between two nuclei + // surfaces are in a distance of d + // in a tip to tip configuration + + // approximate formulation + // On input: Z1 nuclear charge of first nucleus + // N1 number of neutrons in first nucleus + // beta1 deformation of first nucleus + // Z2 nuclear charge of second nucleus + // N2 number of neutrons in second nucleus + // beta2 deformation of second nucleus + // d distance of surfaces of the nuclei + + // G4double Z1,N1,beta1,Z2,N2,beta2,d,ecoul; + G4double ecoul; + G4double dtot; + const G4double r0 = 1.16; + + dtot = r0 * ( std::pow((z1+n1),0.33333) * (1.0+(2.0/3.0)*beta1) + + std::pow((z2+n2),0.33333) * (1.0+(2.0/3.0)*beta2) ) + d; + ecoul = z1 * z2 * 1.44 / dtot; + + // assert(isnan(ecoul) == false); + return ecoul; +} + +void G4Abla::fissionDistri(G4double &a,G4double &z,G4double &e, + G4double &a1,G4double &z1,G4double &e1,G4double &v1, + G4double &a2,G4double &z2,G4double &e2,G4double &v2) +{ + // On input: A, Z, E (mass, atomic number and exc. energy of compound nucleus + // before fission) + // On output: Ai, Zi, Ei (mass, atomic number and exc. energy of fragment 1 and 2 + // after fission) + + // Additionally calculated but not put in the parameter list: + // Kinetic energy of prefragments EkinR1, EkinR2 + + // Translation of SIMFIS18.PLI (KHS, 2.1.2001) + + // This program calculates isotopic distributions of fission fragments + // with a semiempirical model + // Copy from SIMFIS3, KHS, 8. February 1995 + // Modifications made by Jose Benlliure and KHS in August 1996 + // Energy counted from lowest barrier (J. Benlliure, KHS 1997) + // Some bugs corrected (J. Benlliure, KHS 1997) + // Version used for thesis S. Steinhaueser (August 1997) + // (Curvature of LD potential increased by factor of 2!) + + // Weiter veraendert mit der Absicht, eine Version zu erhalten, die + // derjenigen entspricht, die von J. Benlliure et al. + // in Nucl. Phys. A 628 (1998) 458 verwendet wurde, + // allerdings ohne volle Neutronenabdampfung. + + // The excitation energy was calculate now for each fission channel + // separately. The dissipation from saddle to scission was taken from + // systematics, the deformation energy at scission considers the shell + // effects in a simplified way, and the fluctuation is included. + // KHS, April 1999 + + // The width in N/Z was carefully adapted to values given by Lang et al. + + // The width and eventually a shift in N/Z (polarization) follows the + // following rules: + + // The line N/Z following UCD has an angle of std::atan(Zcn/Ncn) + // to the horizontal axis on a chart of nuclides. + // (For 238U the angle is 32.2 deg.) + + // The following relations hold: (from Armbruster) + // + // sigma(N) (A=const) = sigma(Z) (A=const) + // sigma(A) (N=const) = sigma(Z) (N=const) + // sigma(A) (Z=const) = sigma(N) (Z=const) + // + // From this we get: + // sigma(Z) (N=const) * N = sigma(N) (Z=const) * Z + // sigma(A) (Z=const) = sigma(Z) (A=const) * A/Z + // sigma(N) (Z=const) = sigma(Z) (A=const) * A/Z + // Z*sigma(N) (Z=const) = N*sigma(Z) (N=const) = A*sigma(Z) (A=const) + + // Excitation energy now calculated above the lowest potential point + // Inclusion of a distribution of excitation energies + + // Several modifications, starting from SIMFIS12: KHS November 2000 + // This version seems to work quite well for 238U. + // The transition from symmetric to asymmetric fission around 226Th + // is reasonably well reproduced, although St. I is too strong and St. II + // is too weak. St. I and St. II are also weakly seen for 208Pb. + + // Extensions for an event generator of fission events (21.11.2000,KHS) + + // Defalt parameters (IPARS) rather carefully adjusted to + // pre-neutron mass distributions of Vives et al. (238U + n) + // Die Parameter Fgamma1 und Fgamma2 sind kleiner als die resultierenden + // Breiten der Massenverteilungen!!! + // Fgamma1 und Fgamma2 wurden angepa�, so da� + // Sigma-A(ST-I) = 3.3, Sigma-A(St-II) = 5.8 (nach Vives) + + // Parameters of the model carefully adjusted by KHS (2.2.2001) to + // 238U + 208Pb, 1000 A MeV, Timo Enqvist et al. + + + G4double n; + G4double nlight1,nlight2; + G4double aheavy1,alight1,aheavy2,alight2; + G4double eheavy1,elight1,eheavy2,elight2; + G4double zheavy1_shell,zheavy2_shell; + G4double zlight1,zlight2; + G4double masscurv; + G4double sasymm1,sasymm2,ssymm,ysum,yasymm; + G4double ssymm_mode1,ssymm_mode2; + G4double cz_asymm1_saddle,cz_asymm2_saddle; + // Curvature at saddle, modified by ld-potential + G4double wzasymm1_saddle, wzasymm2_saddle, wzsymm_saddle; + G4double wzasymm1_scission, wzasymm2_scission, wzsymm_scission; + G4double wzasymm1,wzasymm2,wzsymm; + G4double nlight1_eff, nlight2_eff; + G4int imode = 0; + G4double rmode; + G4double z1mean = 0.0, z2mean = 0.0, z1width = 0.0, za1width = 0.0; + // G4double Z1,Z2,N1R,N2R,A1R,A2R,N1,N2,A1,A2; + G4double n1r,n2r,a1r,a2r,n1,n2; + + G4double zsymm,nsymm,asymm; + G4double n1mean = 0.0, n2mean, n1width; + G4double dueff; + // effective shell effect at lowest barrier + G4double eld; + // Excitation energy with respect to ld barrier + G4double re1,re2,re3; + G4double eps1,eps2; + G4double n1ucd,n2ucd,z1ucd,z2ucd; + G4double beta = 0.0, beta1 = 0.0, beta2 = 0.0; + + G4double dn1_pol; + // shift of most probable neutron number for given Z, + // according to polarization + G4int i_help; + + // /* Parameters of the semiempirical fission model */ + G4double a_levdens; + // /* level-density parameter */ + G4double a_levdens_light1,a_levdens_light2; + G4double a_levdens_heavy1,a_levdens_heavy2; + const G4double r_null = 1.16; + // /* radius parameter */ + G4double epsilon_1_saddle,epsilon0_1_saddle; + G4double epsilon_2_saddle,epsilon0_2_saddle,epsilon_symm_saddle; + G4double epsilon_1_scission,epsilon0_1_scission; + G4double epsilon_2_scission,epsilon0_2_scission; + G4double epsilon_symm_scission; + // /* modified energy */ + G4double e_eff1_saddle,e_eff2_saddle; + G4double epot0_mode1_saddle,epot0_mode2_saddle,epot0_symm_saddle; + G4double epot_mode1_saddle,epot_mode2_saddle,epot_symm_saddle; + G4double e_defo, e_defo1,e_defo2, e_scission = 0.0, e_asym; + G4double e1exc = 0.0, e2exc = 0.0; + G4double e1exc_sigma,e2exc_sigma; + G4double e1final,e2final; + + const G4double r0 = 1.16; + G4double tker; + G4double ekin1,ekin2; + // G4double EkinR1,EkinR2,E1,E2,V1,V2; + G4double ekinr1,ekinr2; + G4int icz,k; + + // Input parameters: + //OMMENT(Nuclear charge number); + // G4double Z; + //OMMENT(Nuclear mass number); + // G4double A; + //OMMENT(Excitation energy above fission barrier); + // G4double E; + + // Model parameters: + //OMMENT(position of heavy peak valley 1); + const G4double nheavy1 = 83.0; + //OMMENT(position of heavy peak valley 2); + const G4double nheavy2 = 90.0; + //OMMENT(Shell effect for valley 1); + const G4double delta_u1_shell = -2.65; + // Parameter (Delta_U1_shell = -2) + //OMMENT(Shell effect for valley 2); + const G4double delta_u2_shell = -3.8; + // Parameter (Delta_U2_shell = -3.2) + //OMMENT(I: used shell effect); + G4double delta_u1; + //omment(I: used shell effect); + G4double delta_u2; + //OMMENT(Curvature of asymmetric valley 1); + const G4double cz_asymm1_shell = 0.7; + //OMMENT(Curvature of asymmetric valley 2); + const G4double cz_asymm2_shell = 0.15; + //OMMENT(Factor for width of distr. valley 1); + const G4double fwidth_asymm1 = 0.63; + //OMMENT(Factor for width of distr. valley 2); + const G4double fwidth_asymm2 = 0.97; + // Parameter (CZ_asymm2_scission = 0.12) + //OMMENT(Parameter x: a = A/x); + const G4double xlevdens = 12.0; + //OMMENT(Factor to gamma_heavy1); + const G4double fgamma1 = 2.0; + //OMMENT(I: fading of shells (general)); + G4double gamma; + //OMMENT(I: fading of shell 1); + G4double gamma_heavy1; + //OMMENT(I: fading of shell 2); + G4double gamma_heavy2; + //OMMENT(Zero-point energy at saddle); + const G4double e_zero_point = 0.5; + //OMMENT(I: friction from saddle to scission); + G4double e_saddle_scission; + //OMMENT(Friction factor); + const G4double friction_factor = 1.0; + //OMMENT(I: Internal counter for different modes); INIT(0,0,0) + // Integer*4 I_MODE(3) + //OMMENT(I: Yield of symmetric mode); + G4double ysymm = 0.0; + //OMMENT(I: Yield of asymmetric mode 1); + G4double yasymm1 = 0.0; + //OMMENT(I: Yield of asymmetric mode 2); + G4double yasymm2 = 0.0; + //OMMENT(I: Effective position of valley 1); + G4double nheavy1_eff; + //OMMENT(I: position of heavy peak valley 1); + G4double zheavy1; + //omment(I: Effective position of valley 2); + G4double nheavy2_eff; + //OMMENT(I: position of heavy peak valley 2); + G4double zheavy2; + //omment(I: Excitation energy above saddle 1); + G4double eexc1_saddle; + //omment(I: Excitation energy above saddle 2); + G4double eexc2_saddle; + //omment(I: Excitation energy above lowest saddle); + G4double eexc_max; + //omment(I: Effective mass mode 1); + G4double aheavy1_mean; + //omment(I: Effective mass mode 2); + G4double aheavy2_mean; + //omment(I: Width of symmetric mode); + G4double wasymm_saddle; + //OMMENT(I: Width of asymmetric mode 1); + G4double waheavy1_saddle; + //OMMENT(I: Width of asymmetric mode 2); + G4double waheavy2_saddle; + //omment(I: Width of symmetric mode); + G4double wasymm; + //OMMENT(I: Width of asymmetric mode 1); + G4double waheavy1; + //OMMENT(I: Width of asymmetric mode 2); + G4double waheavy2; + //OMMENT(I: Even-odd effect in Z); + G4double r_e_o,r_e_o_exp; + //OMMENT(I: Curveture of symmetric valley); + G4double cz_symm; + //OMMENT(I: Curvature of mass distribution for fixed Z); + G4double cn; + //OMMENT(I: Curvature of Z distribution for fixed A); + G4double cz; + //OMMENT(Minimum neutron width for constant Z); + const G4double sigzmin = 1.16; + //OMMENT(Surface distance of scission configuration); + const G4double d = 2.0; + + // /* Charge polarisation from Wagemanns p. 397: */ + //OMMENT(Charge polarisation standard I); + const G4double cpol1 = 0.65; + //OMMENT(Charge polarisation standard II); + const G4double cpol2 = 0.55; + //OMMENT(=1: Polarisation simult. in N and Z); + const G4int nzpol = 1; + //OMMENT(=1: test output, =0: no test output); + const G4int itest = 0; + + // G4double UMASS, ECOUL, reps1, reps2, rn1_pol; + G4double reps1, reps2, rn1_pol; + // Float_t HAZ,GAUSSHAZ; + G4int kkk = 0; + // G4int kkk = 10; // PK + + // I_MODE = 0; + + if(itest == 1) { + G4cout << " cn mass " << a << G4endl; + G4cout << " cn charge " << z << G4endl; + G4cout << " cn energy " << e << G4endl; + } + + // /* average Z of asymmetric and symmetric components: */ + n = a - z; /* neutron number of the fissioning nucleus */ + + k = 0; + icz = 0; + if ( (std::pow(z,2)/a < 25.0) || (n < nheavy2) || (e > 500.0) ) { + icz = -1; + // GOTO 1002; + goto milledeux; + } + + nlight1 = n - nheavy1; + nlight2 = n - nheavy2; + + // /* Polarisation assumed for standard I and standard II: + // Z - Zucd = cpol (for A = const); + // from this we get (see Armbruster) + // Z - Zucd = Acn/Ncn * cpol (for N = const) */ + + zheavy1_shell = ((nheavy1/n) * z) - ((a/n) * cpol1); + zheavy2_shell = ((nheavy2/n) * z) - ((a/n) * cpol2); + + e_saddle_scission = + (-24.0 + 0.02227 * (std::pow(z,2))/(std::pow(a,0.33333)) ) * friction_factor; + + // /* Energy dissipated from saddle to scission */ + // /* F. Rejmund et al., Nucl. Phys. A 678 (2000) 215, fig. 4 b */ + // E_saddle_scission = DMAX1(0.,E_saddle_scission); + if (e_saddle_scission > 0.) { + e_saddle_scission = e_saddle_scission; + } + else { + e_saddle_scission = 0.; + } + // /* Semiempirical fission model: */ + + // /* Fit to experimental result on curvature of potential at saddle */ + // /* reference: */ + // /* IF Z**2/A < 33.15E0 THEN + // MassCurv = 30.5438538E0 - 4.00212049E0 * Z**2/A + // + 0.11983384E0 * Z**4 / (A**2) ; + // ELSE + // MassCurv = 10.E0 ** (7.16993332E0 - 0.26602401E0 * Z**2/A + // + 0.00283802E0 * Z**4 / (A**2)) ; */ + // /* New parametrization of T. Enqvist according to Mulgin et al. 1998 */ + if ( (std::pow(z,2))/a < 34.0) { + masscurv = std::pow( 10.0,(-1.093364 + 0.082933 * (std::pow(z,2)/a) + - 0.0002602 * (std::pow(z,4)/std::pow(a,2))) ); + } else { + masscurv = std::pow( 10.0,(3.053536 - 0.056477 * (std::pow(z,2)/a) + + 0.0002454 * (std::pow(z,4)/std::pow(a,2))) ); + } + + cz_symm = (8.0/std::pow(z,2)) * masscurv; + + if(itest == 1) { + G4cout << "cz_symmetry= " << cz_symm << G4endl; + } + + if (cz_symm < 0) { + icz = -1; + // GOTO 1002; + goto milledeux; + } + + // /* proton number in symmetric fission (centre) */ + zsymm = z/2.0; + nsymm = n/2.0; + asymm = nsymm + zsymm; + + zheavy1 = (cz_symm*zsymm + cz_asymm1_shell*zheavy1_shell)/(cz_symm + cz_asymm1_shell); + zheavy2 = (cz_symm*zsymm + cz_asymm2_shell*zheavy2_shell)/(cz_symm + cz_asymm2_shell); + // /* position of valley due to influence of liquid-drop potential */ + nheavy1_eff = (zheavy1 + (a/n * cpol1))*(n/z); + nheavy2_eff = (zheavy2 + (a/n * cpol2))*(n/z); + nlight1_eff = n - nheavy1_eff; + nlight2_eff = n - nheavy2_eff; + // /* proton number of light fragments (centre) */ + zlight1 = z - zheavy1; + // /* proton number of light fragments (centre) */ + zlight2 = z - zheavy2; + aheavy1 = nheavy1_eff + zheavy1; + aheavy2 = nheavy2_eff + zheavy2; + aheavy1_mean = aheavy1; + aheavy2_mean = aheavy2; + alight1 = nlight1_eff + zlight1; + alight2 = nlight2_eff + zlight2; + + a_levdens = a / xlevdens; + a_levdens_heavy1 = aheavy1 / xlevdens; + a_levdens_heavy2 = aheavy2 / xlevdens; + a_levdens_light1 = alight1 / xlevdens; + a_levdens_light2 = alight2 / xlevdens; + gamma = a_levdens / (0.4 * (std::pow(a,1.3333)) ); + gamma_heavy1 = ( a_levdens_heavy1 / (0.4 * (std::pow(aheavy1,1.3333)) ) ) * fgamma1; + gamma_heavy2 = a_levdens_heavy2 / (0.4 * (std::pow(aheavy2,1.3333)) ); + + cz_asymm1_saddle = cz_asymm1_shell + cz_symm; + cz_asymm2_saddle = cz_asymm2_shell + cz_symm; + + // Up to here: Ok! Checked CS 10/10/05 + + cn = umass(zsymm,(nsymm+1.),0.0) + umass(zsymm,(nsymm-1.),0.0) + + 1.44 * (std::pow(zsymm,2))/ + ( (std::pow(r_null,2)) * + ( std::pow((asymm+1.0),0.33333) + std::pow((asymm-1.0),0.33333) ) * + ( std::pow((asymm+1.0),0.33333) + std::pow((asymm-1.0),0.33333) ) ) + - 2.0 * umass(zsymm,nsymm,0.0) + - 1.44 * (std::pow(zsymm,2))/ + ( ( 2.0 * r_null * (std::pow(asymm,0.33333)) ) * + ( 2.0 * r_null * (std::pow(asymm,0.33333)) ) ); + + // /* shell effect in valley of mode 1 */ + delta_u1 = delta_u1_shell + (std::pow((zheavy1_shell-zheavy1),2))*cz_asymm1_shell; + // /* shell effect in valley of mode 2 */ + delta_u2 = delta_u2_shell + (std::pow((zheavy2_shell-zheavy2),2))*cz_asymm2_shell; + + // /* liquid drop energies + // at the centres of the different shell effects + // with respect to liquid drop at symmetry: */ + epot0_mode1_saddle = (std::pow((zheavy1-zsymm),2)) * cz_symm; + epot0_mode2_saddle = (std::pow((zheavy2-zsymm),2)) * cz_symm; + epot0_symm_saddle = 0.0; + + if (itest == 1) { + G4cout << "check zheavy1 = " << zheavy1 << G4endl; + G4cout << "check zheavy2 = " << zheavy2 << G4endl; + G4cout << "check zsymm = " << zsymm << G4endl; + G4cout << "check czsymm = " << cz_symm << G4endl; + G4cout << "check epot0_mode1_saddle = " << epot0_mode1_saddle << G4endl; + G4cout << "check epot0_mode2_saddle = " << epot0_mode2_saddle << G4endl; + G4cout << "check epot0_symm_saddle = " << epot0_symm_saddle << G4endl; + G4cout << "delta_u1 = " << delta_u1 << G4endl; + G4cout << "delta_u2 = " << delta_u2 << G4endl; + } + + // /* energies including shell effects + // at the centres of the different shell effects + // with respect to liquid drop at symmetry: */ + epot_mode1_saddle = epot0_mode1_saddle + delta_u1; + epot_mode2_saddle = epot0_mode2_saddle + delta_u2; + epot_symm_saddle = epot0_symm_saddle; + if (itest == 1) { + G4cout << "check epot_mode1_saddle = " << epot_mode1_saddle << G4endl; + G4cout << "check epot_mode2_saddle = " << epot_mode2_saddle << G4endl; + G4cout << "check epot_symm_saddle = " << epot_symm_saddle << G4endl; + } + + // /* Minimum of potential with respect to ld potential at symmetry */ + dueff = min(epot_mode1_saddle,epot_mode2_saddle); + dueff = min(dueff,epot_symm_saddle); + dueff = dueff - epot_symm_saddle; + + eld = e + dueff + e_zero_point; + + if (itest == 1) { + G4cout << "check dueff = " << dueff << G4endl; + G4cout << "check e = " << e << G4endl; + G4cout << "check e_zero_point = " << e_zero_point << G4endl; + G4cout << "check eld = " << eld << G4endl; + } + // Up to here: Ok! Checked CS 10/10/05 + + // /* E = energy above lowest effective barrier */ + // /* Eld = energy above liquid-drop barrier */ + + // /* Due to this treatment the energy E on input means the excitation */ + // /* energy above the lowest saddle. */ + + // /* These energies are not used */ + eheavy1 = e * aheavy1 / a; + eheavy2 = e * aheavy2 / a; + elight1 = e * alight1 / a; + elight2 = e * alight2 / a; + + epsilon0_1_saddle = eld - e_zero_point - epot0_mode1_saddle; + // /* excitation energy at saddle mode 1 without shell effect */ + epsilon0_2_saddle = eld - e_zero_point - epot0_mode2_saddle; + // /* excitation energy at saddle mode 2 without shell effect */ + + epsilon_1_saddle = eld - e_zero_point - epot_mode1_saddle; + // /* excitation energy at saddle mode 1 with shell effect */ + epsilon_2_saddle = eld - e_zero_point - epot_mode2_saddle; + // /* excitation energy at saddle mode 2 with shell effect */ + epsilon_symm_saddle = eld - e_zero_point - epot_symm_saddle; + + // /* global parameters */ + eexc1_saddle = epsilon_1_saddle; + eexc2_saddle = epsilon_2_saddle; + eexc_max = max(eexc1_saddle,eexc2_saddle); + eexc_max = max(eexc_max,eld); + + // /* EEXC_MAX is energy above the lowest saddle */ + + + epsilon0_1_scission = eld + e_saddle_scission - epot0_mode1_saddle; + // /* excitation energy without shell effect */ + epsilon0_2_scission = eld + e_saddle_scission - epot0_mode2_saddle; + // /* excitation energy without shell effect */ + + epsilon_1_scission = eld + e_saddle_scission - epot_mode1_saddle; + // /* excitation energy at scission */ + epsilon_2_scission = eld+ e_saddle_scission - epot_mode2_saddle; + // /* excitation energy at scission */ + epsilon_symm_scission = eld + e_saddle_scission - epot_symm_saddle; + // /* excitation energy of symmetric fragment at scission */ + + // /* Calculate widhts at the saddle: */ + + e_eff1_saddle = epsilon0_1_saddle - delta_u1 * (std::exp((-epsilon_1_saddle*gamma))); + + if (e_eff1_saddle > 0.0) { + wzasymm1_saddle = std::sqrt( (0.5 * + (std::sqrt(1.0/a_levdens*e_eff1_saddle)) / + (cz_asymm1_shell * std::exp((-epsilon_1_saddle*gamma)) + cz_symm) ) ); + } + else { + wzasymm1_saddle = 1.0; + } + + e_eff2_saddle = epsilon0_2_saddle - delta_u2 * (std::exp((-epsilon_2_saddle*gamma))); + if (e_eff2_saddle > 0.0) { + wzasymm2_saddle = std::sqrt( (0.5 * + (std::sqrt(1.0/a_levdens*e_eff2_saddle)) / + (cz_asymm2_shell * std::exp((-epsilon_2_saddle*gamma)) + cz_symm) ) ); + } + else { + wzasymm2_saddle = 1.0; + } + + if (eld > e_zero_point) { + if ( (eld + epsilon_symm_saddle) < 0.0) { + G4cout << " eld + epsilon_symm_saddle < 0" << G4endl; + } + wzsymm_saddle = std::sqrt( (0.5 * + (std::sqrt(1.0/a_levdens*(eld+epsilon_symm_saddle))) / cz_symm ) ); + } else { + wzsymm_saddle = 1.0; + } + + if (itest == 1) { + G4cout << "wz1(saddle) = " << wzasymm1_saddle << G4endl; + G4cout << "wz2(saddle) = " << wzasymm2_saddle << G4endl; + G4cout << "wzsymm(saddle) = " << wzsymm_saddle << G4endl; + } + + // /* Calculate widhts at the scission point: */ + // /* fits of ref. Beizin 1991 (Plots brought to GSI by Sergei Zhdanov) */ + + wzsymm_scission = wzsymm_saddle; + + if (e_saddle_scission == 0.0) { + + wzasymm1_scission = wzasymm1_saddle; + wzasymm2_scission = wzasymm2_saddle; + + } + else { + + if (nheavy1_eff > 75.0) { + wzasymm1_scission = (std::sqrt(21.0)) * z/a; + wzasymm2_scission = (std::sqrt (max( (70.0-28.0)/3.0*(z*z/a-35.0)+28.,0.0 )) ) * z/a; + } + else { + wzasymm1_scission = wzasymm1_saddle; + wzasymm2_scission = wzasymm2_saddle; + } + + } + + wzasymm1_scission = max(wzasymm1_scission,wzasymm1_saddle); + wzasymm2_scission = max(wzasymm2_scission,wzasymm2_saddle); + + wzasymm1 = wzasymm1_scission * fwidth_asymm1; + wzasymm2 = wzasymm2_scission * fwidth_asymm2; + wzsymm = wzsymm_scission; + + /* if (ITEST == 1) { + G4cout << "WZ1(scission) = " << WZasymm1_scission << G4endl; + G4cout << "WZ2(scission) = " << WZasymm2_scission << G4endl; + G4cout << "WZsymm(scission) = " << WZsymm_scission << G4endl; + } + if (ITEST == 1) { + G4cout << "WZ1(scission) final= " << WZasymm1 << G4endl; + G4cout << "WZ2(scission) final= " << WZasymm2 << G4endl; + G4cout << "WZsymm(scission) final= " << WZsymm << G4endl; + } */ + + wasymm = wzsymm * a/z; + waheavy1 = wzasymm1 * a/z; + waheavy2 = wzasymm2 * a/z; + + wasymm_saddle = wzsymm_saddle * a/z; + waheavy1_saddle = wzasymm1_saddle * a/z; + waheavy2_saddle = wzasymm2_saddle * a/z; + + if (itest == 1) { + G4cout << "wasymm = " << wzsymm << G4endl; + G4cout << "waheavy1 = " << waheavy1 << G4endl; + G4cout << "waheavy2 = " << waheavy2 << G4endl; + } + // Up to here: Ok! Checked CS 11/10/05 + + if ( (epsilon0_1_saddle - delta_u1*std::exp((-epsilon_1_saddle*gamma_heavy1))) < 0.0) { + sasymm1 = -10.0; + } + else { + sasymm1 = 2.0 * std::sqrt( a_levdens * (epsilon0_1_saddle - + delta_u1*(std::exp((-epsilon_1_saddle*gamma_heavy1))) ) ); + } + + if ( (epsilon0_2_saddle - delta_u2*std::exp((-epsilon_2_saddle*gamma_heavy2))) < 0.0) { + sasymm2 = -10.0; + } + else { + sasymm2 = 2.0 * std::sqrt( a_levdens * (epsilon0_2_saddle - + delta_u2*(std::exp((-epsilon_2_saddle*gamma_heavy2))) ) ); + } + + if (epsilon_symm_saddle > 0.0) { + ssymm = 2.0 * std::sqrt( a_levdens*(epsilon_symm_saddle) ); + } + else { + ssymm = -10.0; + } + + if (ssymm > -10.0) { + ysymm = 1.0; + + if (epsilon0_1_saddle < 0.0) { + // /* low energy */ + yasymm1 = std::exp((sasymm1-ssymm)) * wzasymm1_saddle / wzsymm_saddle * 2.0; + // /* factor of 2 for symmetry classes */ + } + else { + // /* high energy */ + ssymm_mode1 = 2.0 * std::sqrt( a_levdens*(epsilon0_1_saddle) ); + yasymm1 = ( std::exp((sasymm1-ssymm)) - std::exp((ssymm_mode1 - ssymm)) ) + * wzasymm1_saddle / wzsymm_saddle * 2.0; + } + + if (epsilon0_2_saddle < 0.0) { + // /* low energy */ + yasymm2 = std::exp((sasymm2-ssymm)) * wzasymm2_saddle / wzsymm_saddle * 2.0; + // /* factor of 2 for symmetry classes */ + } + else { + // /* high energy */ + ssymm_mode2 = 2.0 * std::sqrt( a_levdens*(epsilon0_2_saddle) ); + yasymm2 = ( std::exp((sasymm2-ssymm)) - std::exp((ssymm_mode2 - ssymm)) ) + * wzasymm2_saddle / wzsymm_saddle * 2.0; + } + // /* difference in the exponent in order */ + // /* to avoid numerical overflow */ + + } + else { + if ( (sasymm1 > -10.0) && (sasymm2 > -10.0) ) { + ysymm = 0.0; + yasymm1 = std::exp(sasymm1) * wzasymm1_saddle * 2.0; + yasymm2 = std::exp(sasymm2) * wzasymm2_saddle * 2.0; + } + } + + // /* normalize */ + ysum = ysymm + yasymm1 + yasymm2; + if (ysum > 0.0) { + ysymm = ysymm / ysum; + yasymm1 = yasymm1 / ysum; + yasymm2 = yasymm2 / ysum; + yasymm = yasymm1 + yasymm2; + } + else { + ysymm = 0.0; + yasymm1 = 0.0; + yasymm2 = 0.0; + // /* search minimum threshold and attribute all events to this mode */ + if ( (epsilon_symm_saddle < epsilon_1_saddle) && (epsilon_symm_saddle < epsilon_2_saddle) ) { + ysymm = 1.0; + } + else { + if (epsilon_1_saddle < epsilon_2_saddle) { + yasymm1 = 1.0; + } + else { + yasymm2 = 1.0; + } + } + } + + if (itest == 1) { + G4cout << "ysymm normalized= " << ysymm << G4endl; + G4cout << "yasymm1 normalized= " << yasymm1 << G4endl; + G4cout << "yasymm2 normalized= " << yasymm2 << G4endl; + } + // Up to here: Ok! Ckecked CS 11/10/05 + + // /* even-odd effect */ + // /* simple parametrization KHS, Nov. 2000. From Rejmund et al. */ + if ((int)(z) % 2 == 0) { + r_e_o_exp = -0.017 * (e_saddle_scission + eld) * (e_saddle_scission + eld); + if ( r_e_o_exp < -307.0) { + r_e_o_exp = -307.0; + r_e_o = std::pow(10.0,r_e_o_exp); + } + else { + r_e_o = std::pow(10.0,r_e_o_exp); + } + } + else { + r_e_o = 0.0; + } + + // $LOOP; /* event loop */ + // I_COUNT = I_COUNT + 1; + + // /* random decision: symmetric or asymmetric */ + // /* IMODE = 1 means asymmetric fission, mode 1, + // IMODE = 2 means asymmetric fission, mode 2, + // IMODE = 3 means symmetric */ + // RMODE = dble(HAZ(k)); + // rmode = rnd.rndm(); + rmode = haz(k); + // Cast for test CS 11/10/05 + // RMODE = 0.54; + // rmode = 0.54; + if (rmode < yasymm1) { + imode = 1; + } + if ( (rmode > yasymm1) && (rmode < (yasymm1+yasymm2)) ) { + imode = 2; + } + if ( (rmode > yasymm1) && (rmode > (yasymm1+yasymm2)) ) { + imode = 3; + } + + // /* determine parameters of the Z distribution */ + // force imode (for testing, PK) + // imode = 3; + if (imode == 1) { + z1mean = zheavy1; + z1width = wzasymm1; + } + if (imode == 2) { + z1mean = zheavy2; + z1width = wzasymm2; + } + if (imode == 3) { + z1mean = zsymm; + z1width = wzsymm; + } + + if (itest == 1) { + G4cout << "nbre aleatoire tire " << rmode << G4endl; + G4cout << "fission mode " << imode << G4endl; + G4cout << "z1mean= " << z1mean << G4endl; + G4cout << "z1width= " << z1width << G4endl; + } + + // /* random decision: Z1 and Z2 at scission: */ + z1 = 1.0; + z2 = 1.0; + while ( (z1<5.0) || (z2<5.0) ) { + // Z1 = dble(GAUSSHAZ(K,sngl(Z1mean),sngl(Z1width))); + // z1 = rnd.gaus(z1mean,z1width); + z1 = gausshaz(k, z1mean, z1width); + z2 = z - z1; + } + if (itest == 1) { + G4cout << "ff charge sample " << G4endl; + G4cout << "z1 = " << z1 << G4endl; + G4cout << "z2 = " << z2 << G4endl; + } + + // CALL EVEN_ODD(Z1,R_E_O,I_HELP); + // /* Integer proton number with even-odd effect */ + // Z1 = REAL(I_HELP) + // /* Z1 = INT(Z1+0.5E0); */ + z2 = z - z1; + + // /* average N of both fragments: */ + if (imode == 1) { + n1mean = (z1 + cpol1 * a/n) * n/z; + } + if (imode == 2) { + n1mean = (z1 + cpol2 * a/n) * n/z; + } + /* CASE(99) ! only for testing; + N1UCD = Z1 * N/Z; + N2UCD = Z2 * N/Z; + re1 = UMASS(Z1,N1UCD,0.6) +; + & UMASS(Z2,N2UCD,0.6) +; + & ECOUL(Z1,N1UCD,0.6,Z2,N2UCD,0.6,d); + re2 = UMASS(Z1,N1UCD+1.,0.6) +; + & UMASS(Z2,N2UCD-1.,0.6) +; + & ECOUL(Z1,N1UCD+1.,0.6,Z2,N2UCD-1.,0.6,d); + re3 = UMASS(Z1,N1UCD+2.,0.6) +; + & UMASS(Z2,N2UCD-2.,0.6) +; + & ECOUL(Z1,N1UCD+2.,0.6,Z2,N2UCD-2.,0.6,d); + eps2 = (re1-2.0*re2+re3) / 2.0; + eps1 = re2 - re1 - eps2; + DN1_POL = - eps1 / (2.0 * eps2); + N1mean = N1UCD + DN1_POL; */ + if (imode == 3) { + n1ucd = z1 * n/z; + n2ucd = z2 * n/z; + re1 = umass(z1,n1ucd,0.6) + umass(z2,n2ucd,0.6) + ecoul(z1,n1ucd,0.6,z2,n2ucd,0.6,d); + re2 = umass(z1,n1ucd+1.,0.6) + umass(z2,n2ucd-1.,0.6) + ecoul(z1,n1ucd+1.,0.6,z2,n2ucd-1.,0.6,d); + re3 = umass(z1,n1ucd+2.,0.6) + umass(z2,n2ucd-2.,0.6) + ecoul(z1,n1ucd+2.,0.6,z2,n2ucd-2.,0.6,d); + eps2 = (re1-2.0*re2+re3) / 2.0; + eps1 = re2 - re1 - eps2; + dn1_pol = - eps1 / (2.0 * eps2); + n1mean = n1ucd + dn1_pol; + } + // all fission modes features have been checked CS 11/10/05 + n2mean = n - n1mean; + z2mean = z - z1mean; + + // /* Excitation energies */ + // /* formulated in energies in close consistency with the fission model */ + + // /* E_defo = UMASS(Z*0.5E0,N*0.5E0,0.6E0) - + // UMASS(Z*0.5E0,N*0.5E0,0); */ + // /* calculates the deformation energy of the liquid drop for + // deformation beta = 0.6 which is most probable at scission */ + + // /* N1R and N2R provisionaly taken without fluctuations in + // polarisation: */ + n1r = n1mean; + n2r = n2mean; + a1r = n1r + z1; + a2r = n2r + z2; + + if (imode == 1) { /* N = 82 */; + //! /* Eexc at scission */ + e_scission = max(epsilon_1_scission,1.0); + if (n1mean > (n * 0.5) ) { + //! /* 1. fragment is spherical */ + beta1 = 0.0; + beta2 = 0.6; + e1exc = epsilon_1_scission * a1r / a; + e_defo = umass(z2,n2r,beta2) - umass(z2,n2r,0.0); + e2exc = epsilon_1_scission * a2r / a + e_defo; + } + else { + //! /* 2. fragment is spherical */ + beta1 = 0.6; + beta2 = 0.0; + e_defo = umass(z1,n1r,beta1) - umass(z1,n1r,0.0); + e1exc = epsilon_1_scission * a1r / a + e_defo; + e2exc = epsilon_1_scission * a2r / a; + } + } + + if (imode == 2) { + //! /* N appr. 86 */ + e_scission = max(epsilon_2_scission,1.0); + if (n1mean > (n * 0.5) ) { + //! /* 2. fragment is spherical */ + beta1 = (n1r - nheavy2) * 0.034 + 0.3; + e_defo = umass(z1,n1r,beta1) - umass(z1,n1r,0.0); + e1exc = epsilon_2_scission * a1r / a + e_defo; + beta2 = 0.6 - beta1; + e_defo = umass(z2,n2r,beta2) - umass(z2,n2r,0.0); + e2exc = epsilon_2_scission * a2r / a + e_defo; + } + else { + //! /* 1. fragment is spherical */ + beta2 = (n2r - nheavy2) * 0.034 + 0.3; + e_defo = umass(z2,n2r,beta2) - umass(z2,n2r,0.0); + e2exc = epsilon_2_scission * a2r / a + e_defo; + beta1 = 0.6 - beta2; + e_defo = umass(z1,n1r,beta1) - umass(z1,n1r,0.0); + e1exc = epsilon_2_scission * a1r / a + e_defo; + } + } + + if (imode == 3) { + // ! /* Symmetric fission channel */ + + // /* the fit function for beta is the deformation for + // optimum energy at the scission point, d = 2 */ + // /* beta : deformation of symmetric fragments */ + // /* beta1 : deformation of first fragment */ + // /* beta2 : deformation of second fragment */ + beta = 0.177963 + 0.0153241 * zsymm - 0.000162037 * zsymm*zsymm; + beta1 = 0.177963 + 0.0153241 * z1 - 0.000162037 * z1*z1; + // beta1 = 0.6 + e_defo1 = umass(z1,n1r,beta1) - umass(z1,n1r,0.0); + beta2 = 0.177963 + 0.0153241 * z2 - 0.000162037 * z2*z2; + // beta2 = 0.6 + e_defo2 = umass(z2,n2r,beta2) - umass(z2,n2r,0.0); + e_asym = umass(z1 , n1r, beta1) + umass(z2, n2r ,beta2) + + ecoul(z1,n1r,beta1,z2,n2r,beta2,2.0) + - 2.0 * umass(zsymm,nsymm,beta) + - ecoul(zsymm,nsymm,beta,zsymm,nsymm,beta,2.0); + // E_asym = CZ_symm * (Z1 - Zsymm)**2 + e_scission = max((epsilon_symm_scission - e_asym),1.0); + // /* $LIST(Z1,N1R,Z2,N2R,E_asym,E_scission); */ + e1exc = e_scission * a1r / a + e_defo1; + e2exc = e_scission * a2r / a + e_defo2; + } + // Energies checked for all the modes CS 11/10/05 + + // /* random decision: N1R and N2R at scission, before evaporation: */ + // /* CN = UMASS(Zsymm , Nsymm + 1.E0,0) + + // UMASS(Zsymm, Nsymm - 1.E0,0) + // + 1.44E0 * (Zsymm)**2 / + // (r_null**2 * ((Asymm+1)**1/3 + (Asymm-1)**1/3)**2 ) + // - 2.E0 * UMASS(Zsymm,Nsymm,0) + // - 1.44E0 * (Zsymm)**2 / (r_null * 2.E0 * (Asymm)**1/3)**2; */ + + + // /* N1width = std::sqrt(0.5E0 * std::sqrt(1.E0/A_levdens*(Eld+E_saddle_scission)) / CN); */ + // /* 8. 9. 1998: KHS (see also consideration in the first comment block) + // sigma_N(Z=const) = A/Z * sigma_Z(A=const) + // sigma_Z(A=const) = 0.4 to 0.5 (from Lang paper Nucl Phys. A345 (1980) 34) + // sigma_N(Z=const) = 0.45 * A/Z (= 1.16 for 238U) + // therefore: SIGZMIN = 1.16 */ + + if ( (imode == 1) || (imode == 2) ) { + cn=(umass(z1,n1mean+1.,beta1) + umass(z1,n1mean-1.,beta1) + + umass(z2,n2mean+1.,beta2) + umass(z2,n2mean-1.,beta2) + + ecoul(z1,n1mean+1.,beta1,z2,n2mean-1.,beta2,2.0) + + ecoul(z1,n1mean-1.,beta1,z2,n2mean+1.,beta2,2.0) + - 2.0 * ecoul(z1,n1mean,beta1,z2,n2mean,beta2,2.0) + - 2.0 * umass(z1, n1mean, beta1) + - 2.0 * umass(z2, n2mean, beta2) ) * 0.5; + // /* Coulomb energy neglected for the moment! */ + // IF (E_scission.lt.0.) Then + // write(6,*)' E_scission < 0, MODE 1,2' + // ENDIF + // IF (CN.lt.0.) Then + // write(6,*)'CN < 0, MODE 1,2' + // ENDIF + n1width=std::sqrt( (0.5 * (std::sqrt(1.0/a_levdens*(e_scission)))/cn) ); + n1width=max(n1width, sigzmin); + + // /* random decision: N1R and N2R at scission, before evaporation: */ + n1r = 1.0; + n2r = 1.0; + while ( (n1r<5.0) || (n2r<5.0) ) { + // n1r = dble(gausshaz(k,sngl(n1mean),sngl(n1width))); + // n1r = rnd.gaus(n1mean,n1width); + n1r = gausshaz(k, n1mean, n1width); + n2r = n - n1r; + } + // N1R = GAUSSHAZ(K,N1mean,N1width) + if (itest == 1) { + G4cout << "after neutron sample " << n1r << G4endl; + } + n1r = (float)( (int)((n1r+0.5)) ); + n2r = n - n1r; + + even_odd(z1,r_e_o,i_help); + // /* proton number with even-odd effect */ + z1 = (float)(i_help); + z2 = z - z1; + + a1r = z1 + n1r; + a2r = z2 + n2r; + } + + if (imode == 3) { + //! /* When(3) */ + if (nzpol > 0.0) { + // /* We treat a simultaneous split in Z and N to determine polarisation */ + cz = ( umass(z1-1., n1mean+1.,beta1) + + umass(z2+1., n2mean-1.,beta1) + + umass(z1+1., n1mean-1.,beta2) + + umass(z2 - 1., n2mean + 1.,beta2) + + ecoul(z1-1.,n1mean+1.,beta1,z2+1.,n2mean-1.,beta2,2.0) + + ecoul(z1+1.,n1mean-1.,beta1,z2-1.,n2mean+1.,beta2,2.0) + - 2.0 * ecoul(z1,n1mean,beta1,z2,n2mean,beta2,2.0) + - 2.0 * umass(z1, n1mean,beta1) + - 2.0 * umass(z2, n2mean,beta2) ) * 0.5; + // IF (E_scission.lt.0.) Then + // write(6,*) ' E_scission < 0, MODE 1,2' + // ENDIF + // IF (CZ.lt.0.) Then + // write(6,*) 'CZ < 0, MODE 1,2' + // ENDIF + za1width=std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*(e_scission)) / cz) ); + za1width=std::sqrt( (max((za1width*za1width-(1.0/12.0)),0.1)) ); + // /* Check the value of 0.1 ! */ + // /* Shephard correction */ + a1r = z1 + n1mean; + a1r = (float)((int)((a1r+0.5))); + a2r = a - a1r; + // /* A1R and A2R are integer numbers now */ + // /* $LIST(A1R,A2R,ZA1WIDTH); */ + + n1ucd = n/a * a1r; + n2ucd = n/a * a2r; + z1ucd = z/a * a1r; + z2ucd = z/a * a2r; + + re1 = umass(z1ucd-1.,n1ucd+1.,beta1) + umass(z2ucd+1.,n2ucd-1.,beta2) + + ecoul(z1ucd-1.,n1ucd+1.,beta1,z2ucd+1.,n2ucd-1.,beta2,d); + re2 = umass(z1ucd,n1ucd,beta1) + umass(z2ucd,n2ucd,beta2) + + ecoul(z1ucd,n1ucd,beta1,z2ucd,n2ucd,beta2,d); + re3 = umass(z1ucd+1.,n1ucd-1.,beta1) + umass(z2ucd-1.,n2ucd+1.,beta2) + + + ecoul(z1ucd+1.,n1ucd-1.,beta1,z2ucd-1.,n2ucd+1.,beta2,d); + + eps2 = (re1-2.0*re2+re3) / 2.0; + eps1 = (re3 - re1)/2.0; + dn1_pol = - eps1 / (2.0 * eps2); + z1 = z1ucd + dn1_pol; + if (itest == 1) { + G4cout << "before proton sample " << z1 << G4endl; + } + // Z1 = dble(GAUSSHAZ(k,sngl(Z1),sngl(ZA1width))); + // z1 = rnd.gaus(z1,za1width); + z1 = gausshaz(k, z1, za1width); + if (itest == 1) { + G4cout << "after proton sample " << z1 << G4endl; + } + even_odd(z1,r_e_o,i_help); + // /* proton number with even-odd effect */ + z1 = (float)(i_help); + z2 = (float)((int)( (z - z1 + 0.5)) ); + + n1r = a1r - z1; + n2r = n - n1r; + } + else { + // /* First division of protons, then adjustment of neutrons */ + cn = ( umass(z1, n1mean+1.,beta1) + umass(z1, n1mean-1., beta1) + + umass(z2, n2mean+1.,beta2) + umass(z2, n2mean-1., beta2) + + ecoul(z1,n1mean+1.,beta1,z2,n2mean-1.,beta2,2.0) + + ecoul(z1,n1mean-1.,beta1,z2,n2mean+1.,beta2,2.0) + - 2.0 * ecoul(z1,n1mean,beta1,z2,n2mean,beta2,2.0) + - 2.0 * umass(z1, n1mean, 0.6) + - 2.0 * umass(z2, n2mean, 0.6) ) * 0.5; + // /* Coulomb energy neglected for the moment! */ + // IF (E_scission.lt.0.) Then + // write(6,*) ' E_scission < 0, MODE 1,2' + // Endif + // IF (CN.lt.0.) Then + // write(6,*) 'CN < 0, MODE 1,2' + // Endif + n1width=std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*(e_scission)) / cn) ); + n1width=max(n1width, sigzmin); + + // /* random decision: N1R and N2R at scission, before evaporation: */ + // N1R = dble(GAUSSHAZ(k,sngl(N1mean),sngl(N1width))); + // n1r = rnd.gaus(n1mean,n1width); + n1r = gausshaz(k, n1mean, n1width); + n1r = (float)( (int)((n1r+0.5)) ); + n2r = n - n1r; + + even_odd(z1,r_e_o,i_help); + // /* Integer proton number with even-odd effect */ + z1 = (float)(i_help); + z2 = z - z1; + + a1r = z1 + n1r; + a2r = z2 + n2r; + + } + } + + if (itest == 1) { + G4cout << "remid imode = " << imode << G4endl; + G4cout << "n1width = " << n1width << G4endl; + G4cout << "n1r = " << n1r << G4endl; + G4cout << "a1r = " << a1r << G4endl; + G4cout << "n2r = " << n2r << G4endl; + G4cout << "a2r = " << a2r << G4endl; + } + // Up to here: checked CS 11/10/05 + + // /* Extracted from Lang et al. Nucl. Phys. A 345 (1980) 34 */ + e1exc_sigma = 5.5; + e2exc_sigma = 5.5; + + neufcentquatrevingtsept: + // E1final = dble(Gausshaz(k,sngl(E1exc),sngl(E1exc_sigma))); + // E2final = dble(Gausshaz(k,sngl(E2exc),sngl(E2exc_sigma))); + // e1final = rnd.gaus(e1exc,e1exc_sigma); + // e2final = rnd.gaus(e2exc,e2exc_sigma); + e1final = gausshaz(k, e1exc, e1exc_sigma); + e2final = gausshaz(k, e2exc, e2exc_sigma); + if ( (e1final < 0.0) || (e2final < 0.0) ) goto neufcentquatrevingtsept; + if (itest == 1) { + G4cout << "sampled exc 1 " << e1final << G4endl; + G4cout << "sampled exc 2 " << e2final << G4endl; + } + + // /* OUTPUT QUANTITIES OF THE EVENT GENERATOR: */ + + // /* Quantities before neutron evaporation */ + + // /* Neutron number of prefragments: N1R and N2R */ + // /* Atomic number of fragments: Z1 and Z2 */ + // /* Kinetic energy of fragments: EkinR1, EkinR2 *7 + + // /* Quantities after neutron evaporation: */ + + // /* Neutron number of fragments: N1 and N2 */ + // /* Mass number of fragments: A1 and A2 */ + // /* Atomic number of fragments: Z1 and Z2 */ + // /* Number of evaporated neutrons: N1R-N1 and N2R-N2 */ + // /* Kinetic energy of fragments: EkinR1*A1/A1R and + // EkinR2*A2/A2R */ + + n1 = n1r; + n2 = n2r; + a1 = n1 + z1; + a2 = n2 + z2; + e1 = e1final; + e2 = e2final; + + // /* Pre-neutron-emission total kinetic energy: */ + tker = (z1 * z2 * 1.44) / + ( r0 * std::pow(a1,0.33333) * (1.0 + 2.0/3.0 * beta1) + + r0 * std::pow(a2,0.33333) * (1.0 + 2.0/3.0 * beta2) + 2.0 ); + // /* Pre-neutron-emission kinetic energy of 1. fragment: */ + ekinr1 = tker * a2 / a; + // /* Pre-neutron-emission kinetic energy of 2. fragment: */ + ekinr2 = tker * a1 / a; + + v1 = std::sqrt( (ekinr1/a1) ) * 1.3887; + v2 = std::sqrt( (ekinr2/a2) ) * 1.3887; + + if (itest == 1) { + G4cout << "ekinr1 " << ekinr1 << G4endl; + G4cout << "ekinr2 " << ekinr2 << G4endl; + } + + milledeux: + //************************** + //*** only symmetric fission + //************************** + // Symmetric fission: Ok! Checked CS 10/10/05 + if ( (icz == -1) || (a1 < 0.0) || (a2 < 0.0) ) { + // IF (z.eq.92) THEN + // write(6,*)'symmetric fission' + // write(6,*)'Z,A,E,A1,A2,icz,Atot',Z,A,E,A1,A2,icz,Atot + // END IF + + if (itest == 1) { + G4cout << "milledeux: liquid-drop option " << G4endl; + } + + n = a-z; + // proton number in symmetric fission (centre) * + zsymm = z / 2.0; + nsymm = n / 2.0; + asymm = nsymm + zsymm; + + a_levdens = a / xlevdens; + + masscurv = 2.0; + cz_symm = 8.0 / std::pow(z,2) * masscurv; + + wzsymm = std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*e) / cz_symm) ) ; + + if (itest == 1) { + G4cout << " symmetric high energy fission " << G4endl; + G4cout << "wzsymm " << wzsymm << G4endl; + } + + z1mean = zsymm; + z1width = wzsymm; + + // random decision: Z1 and Z2 at scission: */ + z1 = 1.0; + z2 = 1.0; + while ( (z1 < 5.0) || (z2 < 5.0) ) { + // z1 = dble(gausshaz(kkk,sngl(z1mean),sngl(z1width))); + // z1 = rnd.gaus(z1mean,z1width); + z1 = gausshaz(kkk, z1mean, z1width); + z2 = z - z1; + } + + if (itest == 1) { + G4cout << " z1 " << z1 << G4endl; + G4cout << " z2 " << z2 << G4endl; + } + if (itest == 1) { + G4cout << " zsymm " << zsymm << G4endl; + G4cout << " nsymm " << nsymm << G4endl; + G4cout << " asymm " << asymm << G4endl; + } + // CN = UMASS(Zsymm , Nsymm + 1.E0) + UMASS(Zsymm, Nsymm - 1.E0) + // # + 1.44E0 * (Zsymm)**2 / + // # (r_null**2 * ((Asymm+1)**(1./3.) + + // # (Asymm-1)**(1./3.))**2 ) + // # - 2.E0 * UMASS(Zsymm,Nsymm) + // # - 1.44E0 * (Zsymm)**2 / + // # (r_null * 2.E0 * (Asymm)**(1./3.))**2 + + n1ucd = z1 * n/z; + n2ucd = z2 * n/z; + re1 = umass(z1,n1ucd,0.6) + umass(z2,n2ucd,0.6) + + ecoul(z1,n1ucd,0.6,z2,n2ucd,0.6,2.0); + re2 = umass(z1,n1ucd+1.,0.6) + umass(z2,n2ucd-1.,0.6) + + ecoul(z1,n1ucd+1.,0.6,z2,n2ucd-1.,0.6,2.0); + re3 = umass(z1,n1ucd+2.,0.6) + umass(z2,n2ucd-2.,0.6) + + ecoul(z1,n1ucd+2.,0.6,z2,n2ucd-2.,0.6,2.0); + reps2 = (re1-2.0*re2+re3)/2.0; + reps1 = re2 - re1 -reps2; + rn1_pol = -reps1/(2.0*reps2); + n1mean = n1ucd + rn1_pol; + n2mean = n - n1mean; + + if (itest == 1) { + G4cout << " n1mean " << n1mean << G4endl; + G4cout << " n2mean " << n2mean << G4endl; + } + + cn = (umass(z1,n1mean+1.,0.0) + umass(z1,n1mean-1.,0.0) + + + umass(z2,n2mean+1.,0.0) + umass(z2,n2mean-1.,0.0) + - 2.0 * umass(z1,n1mean,0.0) + + - 2.0 * umass(z2,n2mean,0.0) ) * 0.5; + // This is an approximation! Coulomb energy is neglected. + + n1width = std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*e) / cn) ); + + if (itest == 1) { + G4cout << " cn " << cn << G4endl; + G4cout << " n1width " << n1width << G4endl; + } + + // random decision: N1R and N2R at scission, before evaporation: */ + // N1R = dfloat(NINT(GAUSSHAZ(KKK,sngl(N1mean),sngl(N1width)))); + // n1r = (float)( (int)(rnd.gaus(n1mean,n1width)) ); + n1r = (float)( (int)(gausshaz(k, n1mean,n1width)) ); + n2r = n - n1r; + // Mass of first and second fragment */ + a1 = z1 + n1r; + a2 = z2 + n2r; + + e1 = e*a1/(a1+a2); + e2 = e - e*a1/(a1+a2); + if (itest == 1) { + G4cout << " n1r " << n1r << G4endl; + G4cout << " n2r " << n2r << G4endl; + } + + } + + if (itest == 1) { + G4cout << " a1 " << a1 << G4endl; + G4cout << " z1 " << z1 << G4endl; + G4cout << " a2 " << a2 << G4endl; + G4cout << " z2 " << z2 << G4endl; + G4cout << " e1 " << e1 << G4endl; + G4cout << " e2 " << e << G4endl; + } + + // /* Pre-neutron-emission total kinetic energy: */ + tker = (z1 * z2 * 1.44) / + ( r0 * std::pow(a1,0.33333) * (1.0 + 2.0/3.0 * beta1) + + r0 * std::pow(a2,0.33333) * (1.0 + 2.0/3.0 * beta2) + 2.0 ); + // /* Pre-neutron-emission kinetic energy of 1. fragment: */ + ekin1 = tker * a2 / a; + // /* Pre-neutron-emission kinetic energy of 2. fragment: */ + ekin2 = tker * a1 / a; + + v1 = std::sqrt( (ekin1/a1) ) * 1.3887; + v2 = std::sqrt( (ekin2/a2) ) * 1.3887; + + if (itest == 1) { + G4cout << " kinetic energies " << G4endl; + G4cout << " ekin1 " << ekin1 << G4endl; + G4cout << " ekin2 " << ekin2 << G4endl; + } +} + +// SUBROUTINE TRANSLAB(GAMREM,ETREM,CSREM,NOPART,NDEC) +void G4Abla::translab(G4double gamrem, G4double etrem, G4double csrem[4], G4int nopart, G4int ndec) +{ + // c Ce subroutine transforme dans un repere 1 les impulsions pcv des + // c particules acv, zcv et de cosinus directeurs xcv, ycv, zcv calculees + // c dans un repere 2. + // c La transformation de lorentz est definie par GAMREM (gamma) et + // c ETREM (eta). La direction du repere 2 dans 1 est donnees par les + // c cosinus directeurs ALREM,BEREM,GAREM (axe oz du repere 2). + // c L'axe oy(2) est fixe par le produit vectoriel oz(1)*oz(2). + // c Le calcul est fait pour les particules de NDEC a iv du common volant. + // C Resultats dans le NTUPLE (common VAR_NTP) decale de NOPART (cascade). + + // REAL*8 GAMREM,ETREM,ER,PLABI(3),PLABF(3),R(3,3) + // real*8 MASSE,PTRAV2,CSREM(3),UMA,MELEC,EL + // real*4 acv,zpcv,pcv,xcv,ycv,zcv + // common/volant/acv(200),zpcv(200),pcv(200),xcv(200), + // s ycv(200),zcv(200),iv + + // parameter (max=250) + // real*4 EXINI,ENERJ,BIMPACT,PLAB,TETLAB,PHILAB,ESTFIS + // integer AVV,ZVV,JREMN,KFIS,IZFIS,IAFIS + // common/VAR_NTP/MASSINI,MZINI,EXINI,MULNCASC,MULNEVAP, + // +MULNTOT,BIMPACT,JREMN,KFIS,ESTFIS,IZFIS,IAFIS,NTRACK, + // +ITYPCASC(max),AVV(max),ZVV(max),ENERJ(max),PLAB(max), + // +TETLAB(max),PHILAB(max) + + // DATA UMA,MELEC/931.4942,0.511/ + + // C Matrice de rotation dans le labo: + G4double sitet = std::sqrt(std::pow(csrem[1],2)+std::pow(csrem[2],2)); + G4double cstet, siphi, csphi; + G4double R[4][4]; + + if(sitet > 1.0e-6) { //then + cstet = csrem[3]; + siphi = csrem[2]/sitet; + csphi = csrem[1]/sitet; + + R[1][1] = cstet*csphi; + R[1][2] = -siphi; + R[1][3] = sitet*csphi; + R[2][1] = cstet*siphi; + R[2][2] = csphi; + R[2][3] = sitet*siphi; + R[3][1] = -sitet; + R[3][2] = 0.0; + R[3][3] = cstet; + } + else { + R[1][1] = 1.0; + R[1][2] = 0.0; + R[1][3] = 0.0; + R[2][1] = 0.0; + R[2][2] = 1.0; + R[2][3] = 0.0; + R[3][1] = 0.0; + R[3][2] = 0.0; + R[3][3] = 1.0; + } //endif + + G4int intp = 0; + G4double el = 0.0; + G4double masse = 0.0; + G4double er = 0.0; + G4double plabi[4]; + G4double ptrav2 = 0.0; + G4double plabf[4]; + G4double bidon = 0.0; + + for(G4int i = ndec; i <= volant->iv; i++) { //do i=ndec,iv + intp = i + nopart; + varntp->ntrack = varntp->ntrack + 1; + if(nint(volant->acv[i]) == 0 && nint(volant->zpcv[i]) == 0) { + if(verboseLevel > 2) { + G4cout <<"Error: Particles with A = 0 Z = 0 detected! " << G4endl; + } + continue; + } + if(varntp->ntrack >= VARNTPSIZE) { + if(verboseLevel > 2) { + G4cout <<"Error! Output data structure not big enough!" << G4endl; + } + } + varntp->avv[intp] = nint(volant->acv[i]); + varntp->zvv[intp] = nint(volant->zpcv[i]); + varntp->itypcasc[intp] = 0; + // transformation de lorentz remnan --> labo: + if (varntp->avv[intp] == -1) { //then + masse = 138.00; // cugnon + // c if (avv(intp).eq.1) masse=938.2796 !cugnon + // c if (avv(intp).eq.4) masse=3727.42 !ok + } + else { + mglms(double(volant->acv[i]),double(volant->zpcv[i]),0, &el); + // assert(isnan(el) == false); + masse = volant->zpcv[i]*938.27 + (volant->acv[i] - volant->zpcv[i])*939.56 + el; + } //end if + + er = std::sqrt(std::pow(volant->pcv[i],2) + std::pow(masse,2)); + // assert(isnan(er) == false); + plabi[1] = volant->pcv[i]*(volant->xcv[i]); + plabi[2] = volant->pcv[i]*(volant->ycv[i]); + plabi[3] = er*etrem + gamrem*(volant->pcv[i])*(volant->zcv[i]); + + ptrav2 = std::pow(plabi[1],2) + std::pow(plabi[2],2) + std::pow(plabi[3],2); + // assert(isnan(ptrav2) == false); + varntp->plab[intp] = std::sqrt(ptrav2); + varntp->enerj[intp] = std::sqrt(ptrav2 + std::pow(masse,2)) - masse; + + // Rotation dans le labo: + for(G4int j = 1; j <= 3; j++) { //do j=1,3 + plabf[j] = 0.0; + for(G4int k = 1; k <= 3; k++) { //do k=1,3 + plabf[j] = plabf[j] + R[k][j]*plabi[k]; // :::Fixme::: (indices?) + } // end do + } // end do + // C impulsions dans le nouveau systeme copiees dans /volant/ + volant->pcv[i] = varntp->plab[intp]; + ptrav2 = std::sqrt(std::pow(plabf[1],2) + std::pow(plabf[2],2) + std::pow(plabf[3],2)); + if(ptrav2 >= 1.0e-6) { //then + volant->xcv[i] = plabf[1]/ptrav2; + volant->ycv[i] = plabf[2]/ptrav2; + volant->zcv[i] = plabf[3]/ptrav2; + } + else { + volant->xcv[i] = 1.0; + volant->ycv[i] = 0.0; + volant->zcv[i] = 0.0; + } //endif + // impulsions dans le nouveau systeme copiees dans /VAR_NTP/ + if(varntp->plab[intp] >= 1.0e-6) { //then + bidon = plabf[3]/(varntp->plab[intp]); + // assert(isnan(bidon) == false); + if(bidon > 1.0) { + bidon = 1.0; + } + if(bidon < -1.0) { + bidon = -1.0; + } + varntp->tetlab[intp] = std::acos(bidon); + sitet = std::sin(varntp->tetlab[intp]); + varntp->philab[intp] = std::atan2(plabf[2],plabf[1]); + varntp->tetlab[intp] = varntp->tetlab[intp]*57.2957795; + varntp->philab[intp] = varntp->philab[intp]*57.2957795; + } + else { + varntp->tetlab[intp] = 90.0; + varntp->philab[intp] = 0.0; + } // endif + } // end do +} +// C------------------------------------------------------------------------- + +// SUBROUTINE TRANSLABPF(MASSE1,T1,P1,CTET1,PHI1,GAMREM,ETREM,R, +// s PLAB1,GAM1,ETA1,CSDIR) +void G4Abla::translabpf(G4double masse1, G4double t1, G4double p1, G4double ctet1, + G4double phi1, G4double gamrem, G4double etrem, G4double R[][4], + G4double *plab1, G4double *gam1, G4double *eta1, G4double csdir[]) +{ + // C Calcul de l'impulsion du PF (PLAB1, cos directeurs CSDIR(3)) dans le + // C systeme remnant et des coefs de Lorentz GAM1,ETA1 de passage + // c du systeme PF --> systeme remnant. + // c + // C Input: MASSE1, T1 (energie cinetique), CTET1,PHI1 (cosTHETA et PHI) + // C (le PF dans le systeme du Noyau de Fission (NF)). + // C GAMREM,ETREM les coefs de Lorentz systeme NF --> syst remnant, + // C R(3,3) la matrice de rotation systeme NF--> systeme remnant. + // C + // C + // REAL*8 MASSE1,T1,P1,CTET1,PHI1,GAMREM,ETREM,R(3,3), + // s PLAB1,GAM1,ETA1,CSDIR(3),ER,SITET,PLABI(3),PLABF(3) + + G4double er = t1 + masse1; + + G4double sitet = std::sqrt(1.0 - std::pow(ctet1,2)); + + G4double plabi[4]; + G4double plabf[4]; + // C ----Transformation de Lorentz Noyau fissionnant --> Remnant: + plabi[1] = p1*sitet*std::cos(phi1); + plabi[2] = p1*sitet*std::sin(phi1); + plabi[3] = er*etrem + gamrem*p1*ctet1; + + // C ----Rotation du syst Noyaut Fissionant vers syst remnant: + for(G4int j = 1; j <= 3; j++) { // do j=1,3 + plabf[j] = 0.0; + for(G4int k = 1; k <= 3; k++) { //do k=1,3 + // plabf[j] = plabf[j] + R[j][k]*plabi[k]; + plabf[j] = plabf[j] + R[k][j]*plabi[k]; + } //end do + } //end do + // C ----Cosinus directeurs et coefs de la transf de Lorentz dans le + // c nouveau systeme: + (*plab1) = std::pow(plabf[1],2) + std::pow(plabf[2],2) + std::pow(plabf[3],2); + (*gam1) = std::sqrt(std::pow(masse1,2) + (*plab1))/masse1; + (*plab1) = std::sqrt((*plab1)); + (*eta1) = (*plab1)/masse1; + + if((*plab1) <= 1.0e-6) { //then + csdir[1] = 0.0; + csdir[2] = 0.0; + csdir[3] = 1.0; + } + else { + for(G4int i = 1; i <= 3; i++) { //do i=1,3 + csdir[i] = plabf[i]/(*plab1); + } // end do + } //endif +} + +// SUBROUTINE LOR_AB(GAM,ETA,Ein,Pin,Eout,Pout) +void G4Abla::lorab(G4double gam, G4double eta, G4double ein, G4double pin[], + G4double *eout, G4double pout[]) +{ + // C Transformation de lorentz brute pour vérifs. + // C P(3) = P_longitudinal (transformé) + // C P(1) et P(2) = P_transvers (non transformés) + // DIMENSION Pin(3),Pout(3) + // REAL*8 GAM,ETA,Ein + + pout[1] = pin[1]; + pout[2] = pin[2]; + (*eout) = gam*ein + eta*pin[3]; + pout[3] = eta*ein + gam*pin[3]; +} + +// SUBROUTINE ROT_AB(R,Pin,Pout) +void G4Abla::rotab(G4double R[4][4], G4double pin[4], G4double pout[4]) +{ + // C Rotation d'un vecteur + // DIMENSION Pin(3),Pout(3) + // REAL*8 R(3,3) + + for(G4int i = 1; i <= 3; i++) { // do i=1,3 + pout[i] = 0.0; + for(G4int j = 1; j <= 3; j++) { //do j=1,3 + // pout[i] = pout[i] + R[i][j]*pin[j]; + pout[i] = pout[i] + R[j][i]*pin[j]; + } // enddo + } //enddo +} + +// Methods related to the internal ABLA random number generator. In +// the future the random number generation must be factored into its +// own class + +void G4Abla::standardRandom(G4double *rndm, G4long *seed) +{ + (*seed) = (*seed); // Avoid warning during compilation. + // Use Geant4 G4UniformRand + (*rndm) = G4UniformRand(); +} + +G4double G4Abla::haz(G4int k) +{ + const G4int pSize = 110; + static G4double p[pSize]; + static G4long ix,i; + static G4double x,y,a,haz; + // k =< -1 on initialise + // k = -1 c'est reproductible + // k < -1 || k > -1 ce n'est pas reproductible + + // Zero is invalid random seed. Set proper value from our random seed collection: + if(ix == 0) { + ix = hazard->ial; + } + + if (k <= -1) { //then + if(k == -1) { //then + ix = 0; + } + else { + x = 0.0; + y = secnds(int(x)); + ix = int(y * 100 + 43543000); + if(mod(ix,2) == 0) { + ix = ix + 1; + } + } + + // Here we are using random number generator copied from INCL code + // instead of the CERNLIB one! This causes difficulties for + // automatic testing since the random number generators, and thus + // the behavior of the routines in C++ and FORTRAN versions is no + // longer exactly the same! + standardRandom(&x, &ix); + for(G4int i = 0; i < pSize; i++) { //do i=1,110 + standardRandom(&(p[i]), &ix); + } + standardRandom(&a, &ix); + k = 0; + } + + i = nint(100*a)+1; + haz = p[i]; + standardRandom(&a, &ix); + p[i] = a; + + hazard->ial = ix; + + return haz; +} + + +G4double G4Abla::gausshaz(int k, double xmoy, double sig) +{ + // Gaussian random numbers: + + // 1005 C*** TIRAGE ALEATOIRE DANS UNE GAUSSIENNE DE LARGEUR SIG ET MOYENNE XMOY + static G4int iset = 0; + static G4double v1,v2,r,fac,gset,gausshaz; + + if(iset == 0) { //then + do { + v1 = 2.0*haz(k) - 1.0; + v2 = 2.0*haz(k) - 1.0; + r = std::pow(v1,2) + std::pow(v2,2); + } while(r >= 1); + + fac = std::sqrt(-2.*std::log(r)/r); + // assert(isnan(fac) == false); + gset = v1*fac; + gausshaz = v2*fac*sig+xmoy; + iset = 1; + } + else { + gausshaz=gset*sig+xmoy; + iset=0; + } + + return gausshaz; +} + + +// Utilities + +G4double G4Abla::min(G4double a, G4double b) +{ + if(a < b) { + return a; + } + else { + return b; + } +} + +G4int G4Abla::min(G4int a, G4int b) +{ + if(a < b) { + return a; + } + else { + return b; + } +} + +G4double G4Abla::max(G4double a, G4double b) +{ + if(a > b) { + return a; + } + else { + return b; + } +} + +G4int G4Abla::max(G4int a, G4int b) +{ + if(a > b) { + return a; + } + else { + return b; + } +} + +G4int G4Abla::nint(G4double number) +{ + G4double intpart; + G4double fractpart; + fractpart = std::modf(number, &intpart); + if(number == 0) { + return 0; + } + if(number > 0) { + if(fractpart < 0.5) { + return int(std::floor(number)); + } + else { + return int(std::ceil(number)); + } + } + if(number < 0) { + if(fractpart < -0.5) { + return int(std::floor(number)); + } + else { + return int(std::ceil(number)); + } + } + + return int(std::floor(number)); +} + +G4int G4Abla::secnds(G4int x) +{ + time_t mytime; + tm *mylocaltime; + + time(&mytime); + mylocaltime = localtime(&mytime); + + if(x == 0) { + return(mylocaltime->tm_hour*60*60 + mylocaltime->tm_min*60 + mylocaltime->tm_sec); + } + else { + return(mytime - x); + } +} + +G4int G4Abla::mod(G4int a, G4int b) +{ + if(b != 0) { + return (a - (a/b)*b); + } + else { + return 0; + } +} + +G4double G4Abla::dmod(G4double a, G4double b) +{ + if(b != 0) { + return (a - (a/b)*b); + } + else { + return 0.0; + } +} + +G4double G4Abla::dint(G4double a) +{ + G4double value = 0.0; + + if(a < 0.0) { + value = double(std::ceil(a)); + } + else { + value = double(std::floor(a)); + } + + return value; +} + +G4int G4Abla::idint(G4double a) +{ + G4int value = 0; + + if(a < 0) { + value = int(std::ceil(a)); + } + else { + value = int(std::floor(a)); + } + + return value; +} + +G4int G4Abla::idnint(G4double value) +{ + G4double valueCeil = int(std::ceil(value)); + G4double valueFloor = int(std::floor(value)); + + if(std::fabs(value - valueCeil) < std::fabs(value - valueFloor)) { + return int(valueCeil); + } + else { + return int(valueFloor); + } +} + +G4double G4Abla::dmin1(G4double a, G4double b, G4double c) +{ + if(a < b && a < c) { + return a; + } + if(b < a && b < c) { + return b; + } + if(c < a && c < b) { + return c; + } + return a; +} + +G4double G4Abla::utilabs(G4double a) +{ + if(a > 0) { + return a; + } + if(a < 0) { + return (-1*a); + } + if(a == 0) { + return a; + } + + return a; +} diff --git a/source/processes/hadronic/models/incl/src/G4AblaEvaporation.cc b/source/processes/hadronic/models/incl/src/G4AblaEvaporation.cc new file mode 100644 index 0000000000..ba8012faa0 --- /dev/null +++ b/source/processes/hadronic/models/incl/src/G4AblaEvaporation.cc @@ -0,0 +1,317 @@ +// +// ******************************************************************** +// * 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: G4AblaEvaporation.cc,v 1.3 2007/10/11 08:20:08 gcosmo Exp $ +// +#include +// #include "G4IonTable.hh" +// #include "globals.hh" +// #include "G4V3DNucleus.hh" +// #include "G4DynamicParticleVector.hh" +// #include "G4EvaporationInuclCollider.hh" +// #include "G4InuclEvaporation.hh" +// #include "G4InuclNuclei.hh" +// #include "G4Track.hh" +// #include "G4Nucleus.hh" +// #include "G4Nucleon.hh" +// #include "G4NucleiModel.hh" +#include "G4HadronicException.hh" +// #include "G4LorentzVector.hh" +// #include "G4EquilibriumEvaporator.hh" +// #include "G4Fissioner.hh" +// #include "G4BigBanger.hh" +// #include "G4InuclElementaryParticle.hh" +// #include "G4InuclParticle.hh" +// #include "G4CollisionOutput.hh" + +#include "G4AblaEvaporation.hh" + +#include "G4PionPlus.hh" +#include "G4PionMinus.hh" +#include "G4PionZero.hh" + +G4AblaEvaporation::G4AblaEvaporation() { + verboseLevel=0; + hazard = new G4Hazard(); + // set initial values: + // First random seed: + // (Premiere graine) + // hazard->ial = 38035; + hazard->ial = 979678188; + // other seeds: + hazard->igraine[0] = 3997; + hazard->igraine[1] = 15573; + hazard->igraine[2] = 9971; + hazard->igraine[3] = 9821; + hazard->igraine[4] = 99233; + hazard->igraine[5] = 11167; + hazard->igraine[6] = 12399; + hazard->igraine[7] = 11321; + hazard->igraine[8] = 9825; + hazard->igraine[9] = 2587; + hazard->igraine[10] = 1775; + hazard->igraine[11] = 56799; + hazard->igraine[12] = 1156; + // hazard->igraine[13] = 11207; + hazard->igraine[13] = 38957; + hazard->igraine[14] = 35779; + hazard->igraine[15] = 10055; + hazard->igraine[16] = 76533; + hazard->igraine[17] = 33759; + hazard->igraine[18] = 13227; +} + +G4AblaEvaporation::G4AblaEvaporation(const G4AblaEvaporation &) : G4VEvaporation() { + throw G4HadronicException(__FILE__, __LINE__, "G4AblaEvaporation::copy_constructor meant to not be accessable."); +} + +G4AblaEvaporation::~G4AblaEvaporation() { +} + +const G4AblaEvaporation & G4AblaEvaporation::operator=(const G4AblaEvaporation &) { + throw G4HadronicException(__FILE__, __LINE__, "G4AblaEvaporation::operator= meant to not be accessable."); + return *this; +} + +G4bool G4AblaEvaporation::operator==(const G4AblaEvaporation &) const { + return false; +} + +G4bool G4AblaEvaporation::operator!=(const G4AblaEvaporation &) const { + return true; +} + +void G4AblaEvaporation::setVerboseLevel( const G4int verbose ) { + verboseLevel = verbose; +} + +G4FragmentVector * G4AblaEvaporation::BreakItUp(const G4Fragment &theNucleus) { + + + G4VarNtp *varntp = new G4VarNtp(); + G4Volant *volant = new G4Volant(); + + G4Abla *abla = new G4Abla(hazard, volant, varntp); + G4cout <<"Initializing evaporation..." << G4endl; + abla->initEvapora(); + G4cout <<"Initialization complete!" << G4endl; + + G4double nucleusA = theNucleus.GetA(); + G4double nucleusZ = theNucleus.GetZ(); + G4double nucleusMass = G4NucleiProperties::GetAtomicMass(nucleusA, nucleusZ); + G4double excitationEnergy = theNucleus.GetExcitationEnergy(); + G4double angularMomentum = 0.0; // Don't know how to get this quantity... From Geant4??? + + G4LorentzVector tmp = theNucleus.GetMomentum(); + + G4ThreeVector momentum = tmp.vect(); + + G4double recoilEnergy = tmp.e(); + G4double momX = momentum.x(); + G4double momY = momentum.y(); + G4double momZ = momentum.z(); + // G4double energy = tmp.e(); + G4double exitationE = theNucleus.GetExcitationEnergy() * MeV; + + varntp->ntrack = -1; + varntp->massini = theNucleus.GetA(); + varntp->mzini = theNucleus.GetZ(); + + std::vector cascadeParticles; + G4FragmentVector * theResult = new G4FragmentVector; + if (theNucleus.GetExcitationEnergy() <= 0.0) { // Check that Excitation Energy > 0 + theResult->push_back(new G4Fragment(theNucleus)); + return theResult; + } + + // G4double mTar = G4NucleiProperties::GetAtomicMass(A, Z); // Mass of the target nucleus + varntp->exini = exitationE; + + G4int particleI, n = 0; + + // Print diagnostic messages. 0 = silent, 1 and 2 = verbose + // verboseLevel = 3; + + // Increase the event number: + eventNumber++; + + G4DynamicParticle *cascadeParticle = 0; + // G4ParticleDefinition *aParticleDefinition = 0; + + // Map Geant4 particle types to corresponding INCL4 types. + enum bulletParticleType {nucleus = 0, proton = 1, neutron = 2, pionPlus = 3, pionZero = 4, + pionMinus = 5, deuteron = 6, triton = 7, he3 = 8, he4 = 9}; + + // Check wheter the input is acceptable. This will contain more tests in the future. + +// void breakItUp(G4double nucleusA, G4double nucleusZ, G4double nucleusMass, G4double excitationEnergy, +// G4double angularMomentum, G4double recoilEnergy, G4double momX, G4double momY, G4double momZ) + G4cout <<"Calling the actual ABLA model..." << G4endl; + G4cout <<"Excitation energy: " << excitationEnergy << G4endl; + abla->breakItUp(nucleusA, nucleusZ, nucleusMass, excitationEnergy, angularMomentum, recoilEnergy, momX, momY, momZ, + eventNumber); + G4cout <<"Done." << G4endl; + + if(verboseLevel > 0) { + // Diagnostic output + G4cout <<"G4AblaEvaporation: Target A: " << nucleusA << G4endl; + G4cout <<"G4AblaEvaporation: Target Z: " << nucleusZ << G4endl; + + for(particleI = 0; particleI < varntp->ntrack; particleI++) { + G4cout << n << " "; + G4cout << varntp->massini << " " << varntp->mzini << " "; + G4cout << varntp->exini << " " << varntp->mulncasc << " " << varntp->mulnevap << " " << varntp->mulntot << " "; + G4cout << varntp->bimpact << " " << varntp->jremn << " " << varntp->kfis << " " << varntp->estfis << " "; + G4cout << varntp->izfis << " " << varntp->iafis << " " << varntp->ntrack << " " << varntp->itypcasc[particleI] << " "; + G4cout << varntp->avv[particleI] << " " << varntp->zvv[particleI] << " " << varntp->enerj[particleI] << " "; + G4cout << varntp->plab[particleI] << " " << varntp->tetlab[particleI] << " " << varntp->philab[particleI] << G4endl; + } + } + + // Loop through the INCL4+ABLA output. + G4double momx, momy, momz; // Momentum components of the outcoming particles. + G4double eKin; + G4cout <<"varntp->ntrack = " << varntp->ntrack << G4endl; + for(particleI = 0; particleI < varntp->ntrack; particleI++) { + // Get energy/momentum and construct momentum vector: + // In INCL4 coordinates! + momx = varntp->plab[particleI]*std::cos(varntp->tetlab[particleI]*CLHEP::pi/180.0)*std::sin(varntp->philab[particleI]*CLHEP::pi/180.0)*MeV; + momy = varntp->plab[particleI]*std::sin(varntp->tetlab[particleI]*CLHEP::pi/180.0)*std::sin(varntp->philab[particleI]*CLHEP::pi/180.0)*MeV; + momz = varntp->plab[particleI]*std::cos(varntp->tetlab[particleI]*CLHEP::pi/180.0)*MeV; + + eKin = varntp->enerj[particleI] * MeV; + + if(verboseLevel > 1) { + // G4cout <<"Momentum direction: (x ,y,z)"; + // G4cout << "(" << momx <<"," << momy << "," << momz << ")" << G4endl; + } + + // This vector tells the direction of the particle. + G4ThreeVector momDirection(momx, momy, momz); + momDirection = momDirection.unit(); + + // Identify the particle/nucleus: + G4int particleIdentified = 0; + + // Proton + if((varntp->avv[particleI] == 1) && (varntp->zvv[particleI] == 1)) { + cascadeParticle = + new G4DynamicParticle(G4Proton::ProtonDefinition(), momDirection, eKin); + particleIdentified++; + } + + // Neutron + if((varntp->avv[particleI] == 1) && (varntp->zvv[particleI] == 0)) { + cascadeParticle = + new G4DynamicParticle(G4Neutron::NeutronDefinition(), momDirection, eKin); + particleIdentified++; + } + + // PionPlus + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == 1)) { + cascadeParticle = + new G4DynamicParticle(G4PionPlus::PionPlusDefinition(), momDirection, eKin); + particleIdentified++; + } + + // PionZero + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == 0)) { + cascadeParticle = + new G4DynamicParticle(G4PionZero::PionZeroDefinition(), momDirection, eKin); + particleIdentified++; + } + + // PionMinus + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == -1)) { + cascadeParticle = + new G4DynamicParticle(G4PionMinus::PionMinusDefinition(), momDirection, eKin); + particleIdentified++; + } + + // Nuclei fragment + if((varntp->avv[particleI] > 1) && (varntp->zvv[particleI] >= 1)) { + G4ParticleDefinition * aIonDef = 0; + G4ParticleTable *theTableOfParticles = G4ParticleTable::GetParticleTable(); + + G4int A = G4int(varntp->avv[particleI]); + G4int Z = G4int(varntp->zvv[particleI]); + aIonDef = theTableOfParticles->FindIon(Z, A, 0, Z); + + cascadeParticle = + new G4DynamicParticle(aIonDef, momDirection, eKin); + particleIdentified++; + } + + // Check that the particle was identified properly. + if(particleIdentified == 1) { + // Put data into G4HadFinalState: + cascadeParticle->Set4Momentum(cascadeParticle->Get4Momentum()); + cascadeParticles.push_back(cascadeParticle); + // theResult.AddSecondary(cascadeParticle); + } + // Particle identification failed. Checking why... + else { + // Particle was identified as more than one particle type. + if(particleIdentified > 1) { + G4cout <<"G4InclCascadeInterface: One outcoming particle was identified as"; + G4cout <<"more than one particle type. This is probably due to a bug in the interface." << G4endl; + G4cout <<"Particle A:" << varntp->avv[particleI] << "Z: " << varntp->zvv[particleI] << G4endl; + G4cout << "(particleIdentified =" << particleIdentified << ")" << G4endl; + } + } + } + + // End of conversion + + // Clean up: Clean up the number of generated particles in the + // common block VARNTP_ for the processing of the next event. + varntp->ntrack = 0; + // End of cleanup. + +// Free allocated memory + delete varntp; + delete abla; + + fillResult(cascadeParticles, theResult); + return theResult; +} + +void G4AblaEvaporation::fillResult( std::vector secondaryParticleVector, + G4FragmentVector * aResult ) +{ + // Fill the vector pParticleChange with secondary particles stored in vector. + G4cout <<"Size of the secondary particle vector = " << secondaryParticleVector.size() << G4endl; + for ( size_t i = 0 ; i < secondaryParticleVector.size() ; i++ ) { + G4int aZ = static_cast (secondaryParticleVector[i]->GetDefinition()->GetPDGCharge() ); + G4int aA = static_cast (secondaryParticleVector[i]->GetDefinition()->GetBaryonNumber()); + G4LorentzVector aMomentum = secondaryParticleVector[i]->Get4Momentum(); + if(aA>0) { + aResult->push_back( new G4Fragment(aA, aZ, aMomentum) ); + } else { + aResult->push_back( new G4Fragment(aMomentum, secondaryParticleVector[i]->GetDefinition()) ); + } + } + return; +} diff --git a/source/processes/hadronic/models/incl/src/G4Incl.cc b/source/processes/hadronic/models/incl/src/G4Incl.cc new file mode 100644 index 0000000000..6e2247b4b2 --- /dev/null +++ b/source/processes/hadronic/models/incl/src/G4Incl.cc @@ -0,0 +1,7918 @@ +// +// ******************************************************************** +// * 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: G4Incl.cc,v 1.14 2007/12/04 09:49:49 gcosmo Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +#include "G4Incl.hh" +#include +#include +#include "Randomize.hh" + +G4Incl::G4Incl() +{ + verboseLevel = 0; + + // Set functions to be used for integration routine. + wsaxFunction = 0; + derivWsaxFunction = 1; + dmhoFunction = 2; + derivMhoFunction = 3; + derivGausFunction = 4; + densFunction = 5; +} + +G4Incl::G4Incl(G4Hazard *aHazard, G4Dton *aDton, G4Saxw *aSaxw, G4Ws *aWs) +{ + verboseLevel = 0; + + // Set functions to be used for integration routine. + wsaxFunction = 0; + derivWsaxFunction = 1; + dmhoFunction = 2; + derivMhoFunction = 3; + derivGausFunction = 4; + densFunction = 5; + + // Set input data for testing. + hazard = aHazard; + dton = aDton; + saxw = aSaxw; + ws = aWs; +} + +G4Incl::G4Incl(G4Hazard *aHazard, G4Calincl *aCalincl, G4Ws *aWs, G4Mat *aMat, G4VarNtp *aVarntp) +{ + verboseLevel = 0; + + // Set functions to be used for integration routine. + wsaxFunction = 0; + derivWsaxFunction = 1; + dmhoFunction = 2; + derivMhoFunction = 3; + derivGausFunction = 4; + densFunction = 5; + + // Set input data for INCL run. + hazard = aHazard; + calincl = aCalincl; + ws = aWs; + mat = aMat; + varntp = aVarntp; + + light_gaus_nuc = new G4LightGausNuc(); + light_nuc = new G4LightNuc(); + spl2 = new G4Spl2(); + saxw = new G4Saxw(); + dton = new G4Dton(); + bl1 = new G4Bl1(); + bl2 = new G4Bl2(); + bl3 = new G4Bl3(); + bl4 = new G4Bl4(); + bl5 = new G4Bl5(); + bl6 = new G4Bl6(); + bl8 = new G4Bl8(); + bl9 = new G4Bl9(); + bl10 = new G4Bl10(); + kindstruct = new G4Kind(); + paul = new G4Paul(); + varavat = new G4VarAvat(); + varavat->kveux = 0; + + volant = new G4Volant(); + volant->iv = 0; + evaporationResult = new G4VarNtp(); + evaporationResult->ntrack = -1; + + // Initialize evaporation. + abla = new G4Abla(hazard, volant, evaporationResult); + abla->initEvapora(); +} + +G4Incl::~G4Incl() +{ + delete light_gaus_nuc; + delete light_nuc; + delete spl2; + delete saxw; + delete dton; + delete bl1; + delete bl2; + delete bl3; + delete bl4; + delete bl5; + delete bl6; + delete bl8; + delete bl9; + delete bl10; + delete kindstruct; + delete paul; + delete varavat; + + delete abla; + delete evaporationResult; + delete volant; +} + +/** + *Methods for debugging. + */ +G4double G4Incl::energyTest(G4int i) +{ + return am(bl1->p1[i]+bl1->p1[i],bl1->p2[i]+bl1->p2[i],bl1->p3[i]+bl1->p3[i],bl1->eps[i]+bl1->eps[i]); +} + +void G4Incl::dumpBl5(std::ofstream& dumpOut) +{ + dumpOut <<"Dumping G4Bl5:" << G4endl; + for(G4int i = 0; i < 300; i++) { + dumpOut <<"i = " << i << " nesc[i] = " << bl5->nesc[i] << G4endl; + } +} + +void G4Incl::dumpSaxw(std::ofstream& dumpOut) +{ + dumpOut << "Dumping G4Saxw" << G4endl; + dumpOut << "saxw->k = " << saxw->k << G4endl; + dumpOut << "saxw->n = " << saxw->n << G4endl; + dumpOut << "saxw->imat = " << saxw->imat << G4endl; + for(G4int i = 0; i < 30; i++) { + dumpOut <<"i = " << i << " x = " << saxw->x[i][0] << " y = " << saxw->y[i][0] << " s = " << saxw->s[i][0] << G4endl; + } +} + +void G4Incl::dumpBl1(std::ofstream& dumpOut) +{ + dumpOut <<"Dumping Bl1: " << G4endl; + dumpOut <<"bl1->ta = " << bl1->ta << G4endl; + for(G4int i = 0; i <= bl2->k; i++) { + dumpOut <<"i = " << i; + dumpOut <<" bl1->p1 = " << bl1->p1[i] << " bl1->p2 = " << bl1->p2[i] <<" bl1->p3 = " << bl1->p3[i]; + dumpOut <<" bl1->eps = " << bl1->eps[i]; + dumpOut <<" bl1->ind1 = " << bl1->ind1[i] <<" bl1->ind2 = " << bl1->ind2[i] << G4endl; + } + dumpOut <<"End of Bl1 dump." << G4endl << G4endl; +} + +void G4Incl::dumpBl2(std::ofstream& dumpOut) +{ + dumpOut <<"Dumping Bl2: bl2->k = " << bl2->k << G4endl; + for(G4int i = 0; i <= bl2->k; i++) { + dumpOut <<"i = " << i; + dumpOut <<" bl2->ind " << bl2->ind[i] << " bl2->jnd = " << bl2->jnd[i] <<" bl2->crois = " << bl2->crois[i] << G4endl; + } + dumpOut <<"End of Bl2 dump." << G4endl << G4endl;} + + +void G4Incl::dumpBl3(std::ofstream& dumpOut) +{ + dumpOut <<"Dumping Bl3:" << G4endl; + dumpOut <<"r1 = " << bl3->r1 << " r2 = " << bl3->r2 << G4endl; + dumpOut <<"ia1 = " << bl3->ia1 << " ia2 = " << bl3->ia2 << G4endl; + dumpOut <<"rab2 = " << bl3->rab2 << G4endl; + + for(G4int i = 0; i <= bl2->k; i++) { + dumpOut <<"i = " << i; + dumpOut <<" bl3->x1 = " << bl3->x1[i] << " bl3->x2 = " << bl3->x2[i] <<" bl3->x3 = " << bl3->x3[i] << G4endl; + } + dumpOut <<"End of Bl2 dump." << G4endl << G4endl; +} + +// End debug functions + +void G4Incl::setVerboseLevel(G4int level) +{ + verboseLevel = level; +} + +G4int G4Incl::getVerboseLevel() +{ + return verboseLevel; +} + +void G4Incl::setDtonData(G4Dton *newDton) +{ + dton = newDton; +} + +void G4Incl::setWsData(G4Ws *newWs) +{ + ws = newWs; +} + +void G4Incl::setHazardData(G4Hazard *newHazard) +{ + hazard = newHazard; +} + +void G4Incl::setSaxwData(G4Saxw *newSaxw) +{ + saxw = newSaxw; +} + +void G4Incl::setSpl2Data(G4Spl2 *newSpl2) +{ + spl2 = newSpl2; +} + +void G4Incl::setCalinclData(G4Calincl *newCalincl) +{ + calincl = newCalincl; +} + +void G4Incl::setMatData(G4Mat *newMat) +{ + mat = newMat; +} + +void G4Incl::setLightNucData(G4LightNuc *newLightNuc) +{ + light_nuc = newLightNuc; +} + +void G4Incl::setLightGausNucData(G4LightGausNuc *newLightGausNuc) +{ + light_gaus_nuc = newLightGausNuc; +} + +void G4Incl::setBl1Data(G4Bl1 *newBl1) +{ + bl1 = newBl1; +} + +void G4Incl::setBl2Data(G4Bl2 *newBl2) +{ + bl2 = newBl2; +} + +void G4Incl::setBl3Data(G4Bl3 *newBl3) +{ + bl3 = newBl3; +} + +void G4Incl::setBl4Data(G4Bl4 *newBl4) +{ + bl4 = newBl4; +} + +void G4Incl::setBl5Data(G4Bl5 *newBl5) +{ + bl5 = newBl5; +} + +void G4Incl::setBl6Data(G4Bl6 *newBl6) +{ + bl6 = newBl6; +} + +void G4Incl::setBl8Data(G4Bl8 *newBl8) +{ + bl8 = newBl8; +} + +void G4Incl::setBl9Data(G4Bl9 *newBl9) +{ + bl9 = newBl9; +} + +void G4Incl::setBl10Data(G4Bl10 *newBl10) +{ + bl10 = newBl10; +} + +void G4Incl::setKindData(G4Kind *newKind) +{ + kindstruct = newKind; +} + +/** + * INCL main routines for event processing. + */ + +void G4Incl::processEventIncl() +{ + const G4double uma = 931.4942; + const G4double melec = 0.511; + + G4double pcorem; + G4double pxrem; + G4double pyrem; + G4double pzrem; + + G4double ap = 0.0, zp = 0.0, mprojo = 0.0, pbeam = 0.0; + + if(calincl->f[6] == 3.0) { // pi+ + mprojo = 139.56995; + ap = 0.0; + zp = 1.0; + } + + if(calincl->f[6] == 4.0) { // pi0 + mprojo = 134.9764; + ap = 0.0; + zp = 0.0; + } + + if(calincl->f[6] == 5.0) { // pi- + mprojo = 139.56995; + ap = 0.0; + zp = -1.0; + } + + // Coulomb en entree seulement pour les particules ci-dessous. + if(calincl->f[6] == 1.0) { // proton + mprojo = 938.27231; + ap = 1.0; + zp = 1.0; + } + + if(calincl->f[6] == 2.0) { // neutron + mprojo = 939.56563; + ap = 1.0; + zp = 0.0; + } + + if(calincl->f[6] == 6.0) { // deuteron + mprojo = 1875.61276; + ap = 2.0; + zp = 1.0; + } + + if(calincl->f[6] == 7.0) { // triton + mprojo = 2808.95; + ap = 3.0; + zp = 1.0; + } + + if(calincl->f[6] == 8.0) { // He3 + mprojo = 2808.42; + ap = 3.0; + zp = 2.0; + } + + if(calincl->f[6] == 9.0) { // Alpha + mprojo = 3727.42; + ap = 4.0; + zp = 2.0; + } + + pbeam = std::sqrt(calincl->f[2]*(calincl->f[2] + 2.0*mprojo)); + + G4double at = calincl->f[0]; + + calincl->f[3] = 0.0; // seuil sortie proton + calincl->f[7] = 0.0; // seuil sortie neutron + + G4int ibert = 1; + + G4int nopart; + G4int izrem; + G4int iarem; + G4double esrem; + G4double erecrem; + G4double berem; + G4double garem; + G4double bimpac; + G4int jrem; + G4double alrem; + + /** + * Coulomb barrier treatment. + */ + G4double probaTrans; + G4double rndm; + if((calincl->f[6] == 1.0) || (calincl->f[6] >= 6.0)) { + probaTrans = coulombTransm(calincl->f[2],ap,zp,calincl->f[0],calincl->f[1]); + standardRandom(&rndm, &(hazard->ial)); + if(rndm <= (1.0 - probaTrans)) { + varntp->ntrack = -1; + return; + } + } + + /** + * Call the actual INCL routine. + */ + pnu(&ibert, &nopart,&izrem,&iarem,&esrem,&erecrem,&alrem,&berem,&garem,&bimpac,&jrem); + forceAbsor(&nopart, &iarem, &izrem, &esrem, &erecrem, &alrem, &berem, &garem, &jrem); + G4double aprf = double(iarem); // mass number of the prefragment + G4double jprf = 0.0; // angular momentum of the prefragment + + // Mean angular momentum of prefragment. + jprf = 0.165 * std::pow(at,(2.0/3.0)) * aprf * (at - aprf) / (at - 1.0); + if (jprf < 0) { + jprf = 0.0; + } + + // Reference M. de Jong, Ignatyuk, Schmidt Nuc. Phys A 613, p442, 7th line + jprf = std::sqrt(2*jprf); + jprf = jrem; + varntp->jremn = jrem; // Copy jrem to output tuple. + + G4double numpi = 0; // Number of pions. + G4double multn = 0; // Number (multiplicity) of neutrons. + G4double multp = 0; // Number (multiplicity) of protons. + + // Ecriture dans le ntuple des particules de cascade (sauf remnant). + varntp->ntrack = nopart; // Nombre de particules pour ce tir. + varntp->massini = iarem; + varntp->mzini = izrem; + varntp->exini = esrem; + varntp->bimpact = bimpac; + + /** + * Three ways to compute the mass of the remnant: + * -from the output of the cascade and the canonic mass + * -from energy balance (input - all emitted energies) + * -following the approximations of the cugnon code (esrem...) + */ + G4double f0 = calincl->f[0]; + G4double f1 = calincl->f[1]; + G4double f2 = calincl->f[2]; + G4double mcorem = mprojo + f2 + abla->pace2(f0, f1) + f0 * uma - f1 * melec; + + G4double pxbil = 0.0; + G4double pybil = 0.0; + G4double pzbil = 0.0; + + if(nopart > -1) { + for(G4int j = 0; j < nopart; j++) { + varntp->itypcasc[j] = 1; + // kind(): 1=proton, 2=neutron, 3=pi+, 4=pi0, 5=pi - + if(kind[j] == 1) { + varntp->avv[j] = 1; + varntp->zvv[j] = 1; + varntp->plab[j] = std::sqrt(ep[j] * (ep[j] + 1876.5592)); // cugnon + multp = multp + 1; + mcorem = mcorem - ep[j] - 938.27231; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Proton produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 2) { + varntp->avv[j] = 1; + varntp->zvv[j] = 0; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j]+1876.5592)); // cugnon + //varntp->plab[j] = std::sqrt(ep[j] * (ep[j] + 1879.13126)); // PK mass check + multn = multn + 1; + mcorem = mcorem - ep[j] - 939.56563; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Neutron produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 3) { + varntp->avv[j] = -1; + varntp->zvv[j] = 1; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j]+276.0)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 139.56995; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Pi+ produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 4) { + varntp->avv[j] = -1; + varntp->zvv[j] = 0; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j]+276.0)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 134.9764; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Pi0 produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 5) { + varntp->avv[j] = -1; + varntp->zvv[j] = -1; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j]+276.0)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 139.56995; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Pi+ produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 6) { + varntp->avv[j] = 2; + varntp->zvv[j] = 1; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j] + 2.0*1874.34)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 2806.359; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Deuteron produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 7) { + varntp->avv[j] = 3; + varntp->zvv[j] = 1; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j] + 2.0*2806.359)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 2806.359; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Triton produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 8) { + varntp->avv[j] = 3; + varntp->zvv[j] = 2; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j] + 2.0*2807.119)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 2807.119; + if(verboseLevel > 3) { + G4cout <<"G4Incl: He3 produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 9) { + varntp->avv[j] = 4; + varntp->zvv[j] = 2; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j] + 2.0*3724.818)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 3724.818; + if(verboseLevel > 3) { + G4cout <<"G4Incl: He4 produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + varntp->enerj[j] = ep[j]; + varntp->tetlab[j] = 180.0*std::acos(gam[j])/3.141592654; + varntp->philab[j] = 180.0*std::atan2(beta[j],alpha[j])/3.141592654; + pxbil = pxbil + varntp->plab[j]*alpha[j]; + pybil = pybil + varntp->plab[j]*beta[j]; + pzbil = pzbil + varntp->plab[j]*gam[j]; + + if(verboseLevel > 3) { + G4cout <<"Momentum: " << varntp->plab[j] << G4endl; + G4cout <<"Theta: " << varntp->tetlab[j] << G4endl; + G4cout <<"Phi: " << varntp->philab[j] << G4endl; + } + } + + // calcul de la masse (impulsion) du remnant coherente avec la conservation d'energie: + pcorem=std::sqrt(erecrem*(erecrem +2.*938.2796*iarem)); // cugnon + mcorem = 938.2796*iarem; // cugnon + + // Note: Il faut negliger l'energie d'excitation (ESREM) pour que le bilan + // d'impulsion soit correct a la sortie de la cascade.....et prendre la + // masse MCOREM comme ci-dessus (fausse de ~1GeV par rapport aux tables...) + pxrem=pcorem*alrem; + pyrem=pcorem*berem; + pzrem=pcorem*garem; + + pxbil=pxbil+pxrem; + pybil=pybil+pyrem; + pzbil=pzbil+pzrem; + + if((std::fabs(pzbil-pbeam) > 5.0) || (std::sqrt(std::pow(pxbil,2)+std::pow(pybil,2)) >= 3.0)) { + if(verboseLevel > 3) { + G4cout <<"bad momentum conservation after incl:" << G4endl; + } + } + + volant->iv = 0; // init du compteur des part evaporees + varntp->kfis = 0; //drapeau de fission copie dans le ntuple + varntp->estfis = 0.0; + varntp->izfis = 0; + varntp->iafis = 0; + + // varntp->ntrack = varntp->ntrack + 1; // on recopie le remnant dans le ntuple + varntp->massini = iarem; + varntp->mzini = izrem; + varntp->exini = esrem; + varntp->itypcasc[varntp->ntrack] = 1; + varntp->avv[varntp->ntrack] = iarem; + varntp->zvv[varntp->ntrack]= izrem; + varntp->plab[varntp->ntrack] = pcorem; + varntp->enerj[varntp->ntrack] = std::sqrt(std::pow(pcorem,2) + std::pow(mcorem,2)) - mcorem; + varntp->tetlab[varntp->ntrack] = 180.0*std::acos(garem)/3.141592654; + varntp->philab[varntp->ntrack] = 180.0*std::atan2(berem,alrem)/3.141592654; + varntp->ntrack++; + varntp->mulncasc = varntp->ntrack; + varntp->mulnevap = 0; + varntp->mulntot = varntp->mulncasc + varntp->mulnevap; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Returning nucleus fragment. " << G4endl; + G4cout <<"G4Incl: Fragment A = " << varntp->avv[varntp->ntrack] << " Z = " << varntp->zvv[varntp->ntrack] << G4endl; + G4cout <<"Energy: " << varntp->enerj[varntp->ntrack] << G4endl; + G4cout <<"Momentum: " << varntp->plab[varntp->ntrack] << G4endl; + G4cout <<"Theta: " << varntp->tetlab[varntp->ntrack] << G4endl; + G4cout <<"Phi: " << varntp->philab[varntp->ntrack] << G4endl; + } + } + else { + if(nopart == -2) { + varntp->ntrack = -2; //FIX: Error flag to remove events containing unphysical events (Ekin > Ebullet). + } + else { + varntp->ntrack = -1; + } + } +} + + +void G4Incl::processEventInclAbla(G4int eventnumber) +{ + const G4double uma = 931.4942; + const G4double melec = 0.511; + + G4double pcorem; + G4double pxrem; + G4double pyrem; + G4double pzrem; + + G4double ap = 0.0, zp = 0.0, mprojo = 0.0, pbeam = 0.0; + + // pi+ + if(calincl->f[6] == 3.0) { + mprojo = 139.56995; + ap = 0.0; + zp = 1.0; + } + + // pi0 + if(calincl->f[6] == 4.0) { + mprojo = 134.9764; + ap = 0.0; + zp = 0.0; + } + + // pi- + if(calincl->f[6] == 5.0) { + mprojo = 139.56995; + ap = 0.0; + zp = -1.0; + } + + // coulomb en entree seulement pour les particules ci-dessous + + // proton + if(calincl->f[6] == 1.0) { + mprojo = 938.27231; + ap = 1.0; + zp = 1.0; + } + + // neutron + if(calincl->f[6] == 2.0) { + mprojo = 939.56563; + ap = 1.0; + zp = 0.0; + } + + // deuteron + if(calincl->f[6] == 6.0) { + mprojo = 1875.61276; + ap = 2.0; + zp = 1.0; + } + + // triton + if(calincl->f[6] == 7.0) { + mprojo = 2808.95; + ap = 3.0; + zp = 1.0; + } + + // He3 + if(calincl->f[6] == 8.0) { + mprojo = 2808.42; + ap = 3.0; + zp = 2.0; + } + + // Alpha + if(calincl->f[6] == 9.0) { + mprojo = 3727.42; + ap = 4.0; + zp = 2.0; + } + + pbeam = std::sqrt(calincl->f[2]*(calincl->f[2] + 2.0*mprojo)); + + G4double at = calincl->f[0]; + + calincl->f[3] = 0.0; // !seuil sortie proton + calincl->f[7] = 0.0; // !seuil sortie neutron + + G4int ibert = 1; + + G4int nopart; + G4int izrem; + G4int iarem; + G4double esrem; + G4double erecrem; + G4double berem; + G4double garem; + G4double bimpac; + G4int jrem; + G4double alrem; + + // Coulomb barrier + + G4double probaTrans; + G4double rndm; + + if((calincl->f[6] == 1.0) || (calincl->f[6] >= 6.0)) { + // probaTrans = coulombTransm(calincl->f[2],apro,zpro,calincl->f[0],calincl->f[1]); + probaTrans = coulombTransm(calincl->f[2],ap,zp,calincl->f[0],calincl->f[1]); + standardRandom(&rndm, &(hazard->ial)); + if(rndm <= (1.0 - probaTrans)) { + varntp->ntrack = -1; + return; + } + } + + // Call the actual INCL routine: + pnu(&ibert, &nopart,&izrem,&iarem,&esrem,&erecrem,&alrem,&berem,&garem,&bimpac,&jrem); + + forceAbsor(&nopart, &iarem, &izrem, &esrem, &erecrem, &alrem, &berem, &garem, &jrem); + G4double aprf = double(iarem); // mass number of the prefragment + G4double jprf = 0.0; // angular momentum of the prefragment + + // Mean angular momentum of prefragment + jprf = 0.165 * std::pow(at,(2.0/3.0)) * aprf*(at - aprf)/(at - 1.0); + if (jprf < 0) { + jprf = 0.0; + } + + // check m.de jong, ignatyuk, schmidt nuc.phys a 613, pg442, 7th line + jprf = std::sqrt(2*jprf); + + jprf = jrem; + varntp->jremn = jrem; // jrem copie dans le ntuple + + G4double numpi = 0; // compteurs de pions, neutrons protons + G4double multn = 0; + G4double multp = 0; + + // ecriture dans le ntuple des particules de cascade (sauf remnant) + varntp->ntrack = nopart; // nombre de particules pour ce tir + if(varntp->ntrack >= VARNTPSIZE) { + if(verboseLevel > 2) { + G4cout <<"G4Incl error: Output data structure not big enough." << G4endl; + } + } + varntp->massini = iarem; + varntp->mzini = izrem; + varntp->exini = esrem; + varntp->bimpact = bimpac; + + // three ways to compute the mass of the remnant: + // -from the output of the cascade and the canonic mass + // -from energy balance (input - all emitted energies) + // -following the approximations of the cugnon code (esrem...) + G4double mcorem = mprojo + calincl->f[2] + abla->pace2(double(calincl->f[0]),double(calincl->f[1])) + + calincl->f[0]*uma - calincl->f[1]*melec; + + G4double pxbil = 0.0; + G4double pybil = 0.0; + G4double pzbil = 0.0; + + if(nopart > -1) { + for(G4int j = 0; j < nopart; j++) { + varntp->itypcasc[j] = 1; + // kind(): 1=proton, 2=neutron, 3=pi+, 4=pi0, 5=pi - + if(kind[j] == 1) { + varntp->avv[j] = 1; + varntp->zvv[j] = 1; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j]+1876.5592)); // cugnon + multp = multp + 1; + mcorem = mcorem - ep[j] - 938.27231; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Proton produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 2) { + varntp->avv[j] = 1; + varntp->zvv[j] = 0; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j]+1876.5592)); // cugnon + multn = multn + 1; + mcorem = mcorem - ep[j] - 939.56563; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Neutron produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 3) { + varntp->avv[j] = -1; + varntp->zvv[j] = 1; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j]+276.0)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 139.56995; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Pi+ produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 4) { + varntp->avv[j] = -1; + varntp->zvv[j] = 0; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j]+276.0)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 134.9764; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Pi0 produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 5) { + varntp->avv[j] = -1; + varntp->zvv[j] = -1; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j]+276.0)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 139.56995; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Pi+ produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 6) { + varntp->avv[j] = 2; + varntp->zvv[j] = 1; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j] + 2.0*1874.34)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 2806.359; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Deuteron produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 7) { + varntp->avv[j] = 3; + varntp->zvv[j] = 1; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j] + 2.0*2806.359)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 2806.359; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Triton produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 8) { + varntp->avv[j] = 3; + varntp->zvv[j] = 2; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j] + 2.0*2807.119)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 2807.119; + if(verboseLevel > 3) { + G4cout <<"G4Incl: He3 produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + if(kind[j] == 9) { + varntp->avv[j] = 4; + varntp->zvv[j] = 2; + varntp->plab[j] = std::sqrt(ep[j]*(ep[j] + 2.0*3724.818)); // cugnon + numpi = numpi + 1; + mcorem = mcorem - ep[j] - 3724.818; + if(verboseLevel > 3) { + G4cout <<"G4Incl: He3 produced! " << G4endl; + G4cout <<"G4Incl: Momentum: "<< varntp->plab[j] << G4endl; + } + } + + varntp->enerj[j] = ep[j]; + varntp->tetlab[j] = 180.0*std::acos(gam[j])/3.141592654; + varntp->philab[j] = 180.0*std::atan2(beta[j],alpha[j])/3.141592654; + pxbil = pxbil + varntp->plab[j]*alpha[j]; + pybil = pybil + varntp->plab[j]*beta[j]; + pzbil = pzbil + varntp->plab[j]*gam[j]; + + if(verboseLevel > 3) { + G4cout <<"Momentum: " << varntp->plab[j] << G4endl; + G4cout <<"Theta: " << varntp->tetlab[j] << G4endl; + G4cout <<"Phi: " << varntp->philab[j] << G4endl; + } + } + + // calcul de la masse (impulsion) du remnant coherente avec la conservation d'energie: + pcorem = std::sqrt(erecrem*(erecrem + 2.0 * 938.2796 * iarem)); // cugnon + mcorem = 938.2796 * iarem; // cugnon + + // Note: Il faut negliger l'energie d'excitation (ESREM) pour que le bilan + // d'impulsion soit correct a la sortie de la cascade.....et prendre la + // masse MCOREM comme ci-dessus (fausse de ~1GeV par rapport aux tables...) + pxrem = pcorem * alrem; + pyrem = pcorem * berem; + pzrem = pcorem * garem; + + pxbil = pxbil + pxrem; + pybil = pybil + pyrem; + pzbil = pzbil + pzrem; + + if((std::fabs(pzbil - pbeam) > 5.0) || (std::sqrt(std::pow(pxbil,2) + std::pow(pybil,2)) >= 3.0)) { + if(verboseLevel > 3) { + G4cout <<"bad momentum conservation after incl:" << G4endl; + } + } + + volant->iv = 0; // init du compteur des part evaporees + varntp->kfis = 0; //drapeau de fission copie dans le ntuple + varntp->estfis = 0.0; + varntp->izfis = 0; + varntp->iafis = 0; + + // on recopie le remnant dans le ntuple + // varntp->ntrack = varntp->ntrack + 1; + varntp->massini = iarem; + varntp->mzini = izrem; + varntp->exini = esrem; + + // Evaporation/fission: + evaporationResult->ntrack = 0; + abla->breakItUp(varntp->massini, varntp->mzini, mcorem, varntp->exini, varntp->jremn, + erecrem, pxrem, pyrem, pzrem, eventnumber); + + // assert(evaporationResult->ntrack > 0); + for(G4int evaporatedParticle = 1; evaporatedParticle < evaporationResult->ntrack; evaporatedParticle++) { + if(evaporationResult->avv[evaporatedParticle] == 0 && evaporationResult->zvv[evaporatedParticle] == 0) { //Fix: Skip "empty" particles with A = 0 and Z = 0 + continue; + } + varntp->kfis = evaporationResult->kfis; + varntp->itypcasc[varntp->ntrack] = evaporationResult->itypcasc[evaporatedParticle]; + varntp->avv[varntp->ntrack] = evaporationResult->avv[evaporatedParticle]; + varntp->zvv[varntp->ntrack]= evaporationResult->zvv[evaporatedParticle]; + varntp->plab[varntp->ntrack] = evaporationResult->plab[evaporatedParticle]; + varntp->enerj[varntp->ntrack] = evaporationResult->enerj[evaporatedParticle]; + varntp->tetlab[varntp->ntrack] = evaporationResult->tetlab[evaporatedParticle]; + varntp->philab[varntp->ntrack] = evaporationResult->philab[evaporatedParticle]; + varntp->ntrack++; + if(verboseLevel > 3) { + G4cout <<"G4Incl: Returning evaporation result" << G4endl; + G4cout <<"G4Incl: A = " << varntp->avv[varntp->ntrack] << " Z = " << varntp->zvv[varntp->ntrack] << G4endl; + G4cout <<"Energy: " << varntp->enerj[varntp->ntrack] << G4endl; + G4cout <<"Momentum: " << varntp->plab[varntp->ntrack] << G4endl; + G4cout <<"Theta: " << varntp->tetlab[varntp->ntrack] << G4endl; + G4cout <<"Phi: " << varntp->philab[varntp->ntrack] << G4endl; + } + } + if(verboseLevel > 2) { + G4cout <<"G4Incl: ntrack = " << varntp->ntrack << G4endl; + G4cout <<"G4Incl: Done extracting..." << G4endl; + } + } + if(nopart == -2) { + varntp->ntrack = -2; //FIX: Error flag to remove events containing unphysical events (Ekin > Ebullet). + evaporationResult->ntrack = -2; //FIX: Error flag to remove events containing unphysical events (Ekin > Ebullet). + } + else if(nopart == -1) { + varntp->ntrack = -1; + evaporationResult->ntrack = -1; + } +} + +// Initialization routines +void G4Incl::initIncl(G4bool initRandomSeed) +{ + // Subroutine for initialisation of intranuclear cascade incl + // + // this will read some specific parameters for incl, + // prepare the saxon-wood density for each nucleus + // compute the deuteron momentum space density from paris pot. + // print some global informations + // + // input: should contain z and a for nbmat nucleus considered in this problem + // + // input: should contain a seed (ial, odd and of 5 digits) to start the work. + + G4double xrand; + G4double ialdep; + G4int imat; + G4int iamat, izmat; + + // for the 19 secondary seeds of hazard: + G4int nbtirhaz[IGRAINESIZE] = {38,82,76,18,39,31,41,59,26,54, + 14,84,13,15,91,89,10,6,52}; + + // specific parameters for incl: + // espace de phases test (r et p) pour pauli: + // valeur recommandee par j.c. v-test=0.592 h**3: + G4double rbl = 2.; + + // valeur pour avoir v-test=2 h**3 (avec pbl=200) + rbl = 3.1848; + + // preparation of 19 other seeds (can also be initialized from outside): + if(initRandomSeed) { + ialdep=hazard->ial; + for(int i = 0; i < IGRAINESIZE; i++) { + for(int j = 0; j < nbtirhaz[i]; j++) { + standardRandom(&xrand,&(hazard->ial)); + } + + // Zero is not accepted as random seed! + do { + standardRandom(&xrand,&(hazard->ial)); + } while(xrand == 0); + + xrand = xrand * 100000; + + while(xrand < 10000) { + xrand = xrand * 10; + } + hazard->igraine[i] = (int) xrand; + if(hazard->igraine[i] == ((hazard->igraine[i] / 2) * 2)) { + hazard->igraine[i] = hazard->igraine[i] + 1; + } + } + + hazard->ial = int(ialdep); + } + + // calculation with realistic nuclear density (saxon-wood) + if (ws->nosurf <= 0) { + // prepare nucleus density for nbmat nucleus defined in struct mat + if(mat->nbmat >= 500) { + if(verboseLevel > 2) { + G4cout <<"You need " << mat->nbmat << " nuclei in your problem. The maximum number of nuclei is 500 " << G4endl; + } + return; + } + + for(G4int i = 0; i < mat->nbmat; i++) { + imat = i; + izmat = int(mat->zmat[i]); + iamat = int(mat->amat[i]); + + initMaterial(izmat, iamat, imat); + } + } + + // deuteron density in momentum space: + densDeut(); +} + + +void G4Incl::initMaterial(G4int izmat, G4int iamat, G4int imat) +{ + G4double res_dws; + G4double fnor; + + G4double rcour, geom; + G4int nbr; + + G4double step, f_r; + + // rms espace r, espace p, fermi momentum and energy for light gauss nuc. + const G4double datarms1t[LGNSIZE] = {0.0, 0.0, 0.0, 0.0, 0.0, 2.10, 1.80, 1.80, 1.63}; + const G4double datapf1t[LGNSIZE] = {0.0, 0.0, 0.0, 0.0, 0.0, 77.0, 110.0, 110.0, 153.0}; + + for(G4int i = 0; i < LGNSIZE; i++) { + light_gaus_nuc->rms1t[i] = datarms1t[i]; + light_gaus_nuc->pf1t[i] = datapf1t[i]; + } + + // fermi 2 param from a=19 to 28, modified harm oscil a=6 to 18 + // (h. de vries et al. at. data and nuc. data tab. 36 (1987) 495) + const G4double datarln[LNSIZE] = {0.0,0.0,0.0,0.0,0.0,0.334,0.327,0.479,0.631,0.838, + 0.811,1.07,1.403,1.335,1.25,1.544,1.498,1.513, + 2.58,2.77, 2.775,2.78,2.88,2.98,3.22,3.03,2.84, + 3.14,0.0,0.0}; + + const G4double dataaln[LNSIZE] = {0.0,0.0,0.0,0.0,0.0,1.78,1.77,1.77,1.77,1.71, + 1.69,1.69,1.635,1.730,1.81,1.833,1.798, + 1.841,0.567,0.571, 0.560,0.549,0.550,0.551, + 0.580,0.575,0.569,0.537,0.0,0.0}; + + for(G4int i = 0; i < LNSIZE; i++) { + light_nuc->r[i] = datarln[i]; + light_nuc->a[i] = dataaln[i]; + } + + if(verboseLevel > 3) { + G4cout <<"Nuclear density for nucleus (z, a): " << izmat << " " << iamat << " " << imat << G4endl; + } + + const G4double fmp = 938.2796; + + // parametres moyens de densite de la cible (fermi 2 parametres) + if (iamat >= 28) { + ws->r0 = (2.745e-4*iamat+1.063)*std::pow(G4double(iamat), 0.33333333); + ws->adif = 1.63e-4*iamat+0.510; + ws->rmaxws = ws->r0 + (ws->xfoisa)*(ws->adif); + } + else if(iamat >= 19) { + ws->r0 = light_nuc->r[iamat]; + ws->adif = light_nuc->a[iamat]; + ws->rmaxws = ws->r0 + (ws->xfoisa)*(ws->adif); + } + else if(iamat >= 6) { + ws->r0 = light_nuc->r[iamat]; + ws->adif = light_nuc->a[iamat]; + ws->rmaxws = 5.5 + 0.3*(iamat-6.)/12.; + } + else if(iamat >= 2) { + if(iamat == 2) { + ws->r0=light_gaus_nuc->rms1t[5]; // Orig: rms1t(6) + light_gaus_nuc->pfln[5] = light_gaus_nuc->pf1t[5]*1.291; // Orig [6], std::sqrt(5/3)=1.291 + light_gaus_nuc->tfln[5] = std::sqrt(std::pow(light_gaus_nuc->pfln[5],2) + fmp*fmp) - fmp; + light_gaus_nuc->vnuc[5] = light_gaus_nuc->tfln[5] + 2.22; + if(verboseLevel > 2) { + G4cout <<"Nuclear potential: " << light_gaus_nuc->vnuc[5] << "MeV, Fermi momentum and energy: " << light_gaus_nuc->pfln[5] << " " << light_gaus_nuc->tfln[5] << G4endl; + } + } + if(iamat == 3 && izmat == 1) { + ws->r0=light_gaus_nuc->rms1t[6]; // Orig: rms1t(7) + light_gaus_nuc->pfln[6] = light_gaus_nuc->pf1t[6]*1.291; // Orig [7], std::sqrt(5/3)=1.291 + light_gaus_nuc->tfln[6] = std::sqrt(std::pow(light_gaus_nuc->pfln[6],2) + fmp*fmp) - fmp; + light_gaus_nuc->vnuc[6] = light_gaus_nuc->tfln[6] + 4.24; + if(verboseLevel > 2) { + G4cout <<"Nuclear potential: " << light_gaus_nuc->vnuc[6] << "MeV, Fermi momentum and energy: " << light_gaus_nuc->pfln[6] << " " << light_gaus_nuc->tfln[6] << G4endl; + } + } + if(iamat == 3 && izmat == 2) { + ws->r0 = light_gaus_nuc->rms1t[7]; // Orig: rms1t(8) + light_gaus_nuc->pfln[7] = light_gaus_nuc->pf1t[7]*1.291; //!sqrt(5/3)=1.291 + light_gaus_nuc->tfln[7] = std::sqrt(std::pow(light_gaus_nuc->pfln[7],2) + fmp*fmp) - fmp; + light_gaus_nuc->vnuc[7] = light_gaus_nuc->tfln[7] + 3.86; + if(verboseLevel > 2) { + G4cout <<"Nuclear potential: " << light_gaus_nuc->vnuc[7] << "MeV, Fermi momentum and energy: " << light_gaus_nuc->pfln[7] << " " << light_gaus_nuc->tfln[7] << G4endl; + } + } + if(iamat == 4) { + ws->r0 = light_gaus_nuc->rms1t[8]; // Orig: rms1t(9) + light_gaus_nuc->pfln[8] = light_gaus_nuc->pf1t[8]*1.291; // !sqrt(5/3)=1.291 + light_gaus_nuc->tfln[8] = std::sqrt(std::pow(light_gaus_nuc->pfln[8],2) + fmp*fmp) - fmp; + light_gaus_nuc->vnuc[8] = light_gaus_nuc->tfln[8] + 9.43; + if(verboseLevel > 2) { + G4cout <<"Nuclear potential: " << light_gaus_nuc->vnuc[8] << "MeV, Fermi momentum and energy: " << light_gaus_nuc->pfln[8] << " " << light_gaus_nuc->tfln[8] << G4endl; + } + } + ws->adif = 0.57735*ws->r0; + ws->rmaxws = ws->r0 + 2.5; + } + ws->drws = (ws->rmaxws)/29.0; + + // bmax for sigma geom and various projectiles (p,n,pion/d/t/he3/he4/) + G4int j; + for(G4int i = 0; i < MATGEOSIZE; i++) { // Orig: do i=1,6 + j = i; + if(i >= 2) { + j = i + 3; + } + mat->bmax_geo[i][imat] = (ws->rmaxws) + (light_gaus_nuc->rms1t[j]); + } + + // preparation de la distribution w.s.: + if (iamat >= 19) { + G4double step = 0.2; + res_dws = integrate(0.0, 13.5, step, derivWsaxFunction); + } + else { + // preparation de la distribution m.h.o.: + if(iamat >= 6) { + step=0.1; + res_dws = integrate(0.0, 10.0, step, derivMhoFunction); + } + else { + // preparation de la distribution gaussienne: + // G4double cte = std::pow(ws->adif,3)*std::sqrt(2.*3.141592654); + res_dws = 3.0*(std::pow(ws->adif, 3)*std::sqrt(2.0*3.141592654))/2.0; + } + } + fnor = res_dws; + + // calcul de q/pf=f(r) + nbr = int(std::floor((ws->rmaxws)/(ws->drws) + 1.5)); + rcour = -1*(ws->drws); + + j = 0; + for(G4int i = 0; i < nbr; i++) { // do i=1,nbr + rcour = rcour + (ws->drws); + if(i == 0) { // 1->0 + f_r = 0.0; + saxw->x[j][imat] = f_r; + saxw->y[j][imat] = 0.0; //!on impose x(1)=0., y(1)=0. + res_dws = 0.0; + } + else { + step = rcour/20.; + if(step >= 0.05) { + step = 0.05; + } + if (iamat >= 19) { + //integ(ws, dton, 0.,rcour,step,&derivwsax,&res_dws); + res_dws = integrate(0.0, rcour, step, derivWsaxFunction); + f_r = res_dws/fnor; + } + else { + if(iamat >= 6) { + //integ(ws, dton, 0.,rcour,step,&derivmho,&res_dws); + res_dws = integrate(0.0, rcour, step, derivMhoFunction); + f_r = res_dws/fnor; + } + else { + //integ(ws, dton, 0.,rcour,step,&derivgaus,&res_dws); + res_dws = integrate(0.0, rcour, step, derivGausFunction); + f_r = res_dws/fnor; + } + } + // modif le 20/10/2003; éviter les valeurs négatives avant **1/3 ! + // } + if(f_r >= 0.0) { + f_r = std::pow(f_r,(1./3.)); + saxw->x[j][imat] = f_r; + saxw->y[j][imat] = rcour; + } + } + j = j + 1; + } + saxw->n = j; + saxw->x[j-1][imat] = 1.; // !on impose saxw->x[nbpinter-1]=1. (y=rmax) + + // interpolation de f_inv(r) (fonction inverse de f(r)) + // flin2(imat, saxw, ws); + firstDerivative(imat); + + if(verboseLevel > 3) { + if(iamat >= 19) { + G4cout <<"Wood-Saxon density, r0 = " << ws->r0 << " a = " << ws->adif << G4endl; + } + if(iamat >= 6 && iamat <= 19) { + G4cout <<"Modif. harm. oscil. density, alpha = " << ws->r0 << " a = " << ws->adif << G4endl; + } + if(iamat >= 2 && iamat <= 6) { + G4cout <<"Gaussian density, r.m.s = " << ws->r0 << " sigma = " << ws->adif << G4endl; + } + } + + geom = 31.41592653*std::pow(ws->rmaxws,2); + + if(verboseLevel > 3) { + G4cout <<"For incident nucleons or pions rmax = " << ws->rmaxws << " and geometrical (pi*rmaxws*rmaxws) reaction cross section (mb) is " << geom << G4endl; + for(G4int k = 2; k < MATGEOSIZE; k++) { + G4cout << "Rmaxws for d/t/3he/4he = " << mat->bmax_geo[k][imat] << G4endl; + } + + G4cout <<"Exact calculation of the r(q) function for the target nucleus density q/pf r(q/pf)" << G4endl; + } +} + +G4double G4Incl::deutv(G4int l, G4double q) +{ + G4double res = 0.0; + + if (l == 0) { + for(G4int i = 0; i < DTONSIZE; i++) { + res = res + dton->c[i]/(std::pow(q,2) + fm2(i+1)); + } + } + if(l != 0) { + for(G4int i = 0; i < DTONSIZE; i++) { + res = res + dton->d[i]/(std::pow(q,2) + fm2(i+1)); + } + } + + return res*std::sqrt(2./CLHEP::pi)*dton->fn; // See G4InclDataDefs.hh +} + +G4double G4Incl::fm2(G4int j) +{ + /** + * In implementation Returns the values of the function: + * \f[ + * (0.23162461 + (j - 1))^2 + * \f] + * @param j an integer parameter + * @return a double value + */ + + return std::pow((0.23162461 + (j - 1)),2); +} + +G4double G4Incl::interpolateFunction(G4double xv) +{ + // fonction d'interpolation au point xv ( meme hors bornes ) + // de la fn x->y dont les derivees premieres (s) ont ete + // evaluees par l'appel prealable de flin2 + // les indices vont de 1 a n + + saxw->k = saxw->imat; + G4double tz = xv - saxw->x[0][saxw->imat]; + G4int j = 0; + + if(tz < 0) { + return (saxw->y[0][saxw->imat] + saxw->s[0][saxw->imat]*tz); + } + else if(tz == 0) { + return (saxw->y[0][saxw->imat]); + } + else { + for(G4int i = 1; i < saxw->n; i++) { + j = i - 1; + tz = xv - saxw->x[j][saxw->imat]; + if(tz < 0) { + break; + } + else if(tz == 0) { + return saxw->y[j][saxw->imat]; + } + } + } + + G4double dgx = xv - saxw->x[j][saxw->imat]; + return(saxw->y[j][saxw->imat] + saxw->s[j][saxw->imat]*dgx); +} + +void G4Incl::firstDerivative(G4int k) +{ + for(G4int i=0; i < saxw->n-1; i++) { + saxw->s[i][k] = (saxw->y[i+1][k] - saxw->y[i][k]) / (saxw->x[i+1][k] - saxw->x[i][k]); + } + saxw->s[saxw->n-1][k] = saxw->s[saxw->n-2][k]; +} + +G4double G4Incl::wsax(G4double r) { + return std::pow(r,2) / (1.0+std::exp(r-(ws->r0)/(ws->adif))); +} + +G4double G4Incl::derivWsax(G4double r) +{ + G4double derivwsax = std::pow(r,3)*std::exp((r-(ws->r0))/(ws->adif))/std::pow((1.0+std::exp((r-(ws->r0))/(ws->adif))),2); + return derivwsax/(ws->adif); +} + +G4double G4Incl::dmho(G4double r) +{ + G4double arg=std::pow((r/(ws->adif)),2); + return r*r*(1.+(ws->r0)*arg)*std::exp(-arg); +} + +G4double G4Incl::derivMho(G4double r) +{ + G4double arg=std::pow((r/(ws->adif)),2); + return -2.*r*r*arg*((ws->r0) -1.-(ws->r0)*arg)*std::exp(-arg); +} + +G4double G4Incl::derivGaus(G4double r) +{ + G4double arg=std::pow((r/(ws->adif)),2); + return r*r*arg*std::exp(-arg/2.); +} + +void G4Incl::densDeut() +{ + // ce subroutine appele sur le premier tir va calculer la densite du deuton + // dans l'espace des impulsions et preparer l'interpolation permettant ensuite + // le tir au hasard d'un module de l'impulsion (q). + // ce subroutine remplit le common /spl2/: + // xsp(0:1), ysp integrale normalisee de la densite de 0 a q. + // a(),b(),c() coefs des nsp points pour une interpolation du second degre. + // q est en fm-1. + + // 495 dimension q(100),f(100) + // 496 common/spl2/ xsp(100),ysp(100),a(100),b(100),cc(100),nbp + G4double cData[DTONSIZE] = {0.88688076e+00,-0.34717093e+00,-.30502380e+01, + .56207766e+02,-.74957334e+03,.53365279e+04,-.22706863e+05, + .60434469e+05,-.10292058e+06,.11223357e+06,-.75925226e+05, + .29059715e+05,-.48157368e+04}; + + G4double dData[DTONSIZE] = {.23135193e-01,-.85604572e+00,.56068193e+01, + -.69462922e+02,.41631118e+03,-.12546621e+04,.12387830e+04, + .33739172e+04,-.13041151e+05,.19512524e+05,-.15634324e+05, + .66231089e+04,-.11698185e+04}; + + G4double fnData = 0.28212e+00; + + for(G4int i = 0; i < DTONSIZE; i++) { + dton->c[i] = cData[i]; + dton->d[i] = dData[i]; + } + dton->fn = fnData; + + // 509 c avec fn=.28212 les fo radiales suivantes sont normalisees a: deu00470 + // 510 c somme(0,infini)(deut0(q)**2 + deut2(q)**2))*q*q*dq = 1./4*pi deu00480 + // 511 c et ceci dans l'espace r et dans l'espace q. pd=5.74% deu00490 + // 512 cjcd + // 513 common /inout/ in, io, itty, iscrt + // 514 cjcd + + const G4int qsize = 100; + G4double q[qsize]; + G4double f[qsize]; + G4double dq=0.01; + q[0]=0.0; + for(G4int i = 1; i < 50; i++) { + q[i] = q[i-1] + dq; + f[i] = 0.0; + } + + spl2->n = 77; // nombre de points de calcul + + dq=0.1; + for(G4int i = 50; i < spl2->n; i++) { + q[i] = q[i-1] + dq; + } + + f[0]=0.0; + + G4double sumint=0.0; + + // the id if the function we wish to integrate (in this case: G4Incl::dens + for(G4int i = 1; i < spl2->n; i++) { + dq = (q[i]-q[i-1])/10.0; + sumint = sumint + integrate(q[i-1], q[i], dq, densFunction); + f[i] = sumint; + } + + for(G4int i = 0; i < spl2->n; i++) { + spl2->x[i] = f[i]/f[spl2->n-1]; + spl2->y[i] = q[i]; + } + + spl2ab(); + + if(verboseLevel > 3) { + G4cout << "deuteron density in q space from Paris potential: " << spl2->n << " Exact values from 0 to " + << q[spl2->n-1] << " fm-1 " << G4endl; + } +} + +G4double G4Incl::integrate(G4double ami, G4double ama, G4double step, G4int functionChoice) +{ + G4double res; + G4double x1[5]; + G4double ri = ami; + G4double ra = ama; + G4int nb; + G4double acont = 1.0; + G4double dr = step; + + if(ama <= ami) { + acont = -1.0; + ri = ama; + ra = ami; + } + + x1[0] = 95.0/288.0; + x1[1] = 317.0/240.0; + x1[2] = 23.0/30.0; + x1[3] = 793.0/720.0; + x1[4] = 157.0/160.0; + nb = int(std::floor(((ra - ri)/step + 1.0000000001))); // 1.0000000001 -> 0.0 + dr = (ra - ri)/(double(nb - 1)); + res = 0.0; + + if(nb < 10) { + if(verboseLevel > 2) { + G4cout <<"pas assez de points d'integration" << G4endl; + } + return 0.0; + } + + for(G4int i = 0; i < 5; i++) { + res = res + (callFunction(functionChoice, ri) + callFunction(functionChoice, ra))*x1[i]; + ri = ri + dr; + ra = ra - dr; + } + + nb = nb - 10; + + if(nb == 0) { + return (res*dr*acont); + } + + for(G4int i = 0; i < nb; i++) { + res = res + callFunction(functionChoice, ri); + ri = ri + dr; + } + + return(res*dr*acont); +} + + +G4double G4Incl::dens(G4double q) +{ + return q*q*(std::pow(deutv(0,q),2)+std::pow(deutv(2,q),2)); +} + +void G4Incl::spl2ab() +{ + G4int i, j, k; + + for(i=0; i <= spl2->n-3; i++) { + j = i + 1; + k = i + 2; + + spl2->c[i] = ((spl2->y[k]-spl2->y[i])*(spl2->x[j]-spl2->x[i])-(spl2->x[k]-spl2->x[i])*(spl2->y[j]-spl2->y[i])) + /((spl2->x[j]-spl2->x[i])*(spl2->x[k]-spl2->x[i])*(spl2->x[k]-spl2->x[j])); + + spl2->b[i] = (spl2->y[j]-spl2->y[i])/(spl2->x[j]-spl2->x[i]); + + spl2->a[i] = spl2->y[i]; + } + + for(i = spl2->n-2; i < spl2->n; i++) { + spl2->c[i] = spl2->c[spl2->n-3]; + spl2->b[i] = spl2->b[spl2->n-3]; + spl2->a[i] = spl2->a[spl2->n-3]; + } +} + +G4double G4Incl::splineab(G4double xv) +{ + G4double tz; + G4int j; + + tz = xv-spl2->x[0]; + + if(tz < 0) { + return spl2->a[0] + spl2->b[0] * tz + spl2->c[0] * tz * (xv - spl2->x[1]); + } + if(tz == 0) { + return spl2->y[0]; + } + if(tz > 0) { + for(G4int i = 1; i <= spl2->n-1; i++) { + j = i; + tz = xv - spl2->x[i]; + + if(tz < 0) { + j = j - 1; + tz = xv - spl2->x[j]; + return spl2->a[j] + spl2->b[j] * tz + spl2->c[j] * tz * (xv - spl2->x[j+1]); + } + if(tz == 0) { + return spl2->y[j]; + } + } + } + + // Returns 0.0 if the point xv is outside the defined region (xv > spl2->x[spl2->n-1]) + if(verboseLevel > 2) { + G4cout <<"G4Incl::splineab : requested point outside defined region! Returning 0.0." << G4endl; + } + return 0.0; +} + +// Actual calculation + +void G4Incl::pnu(G4int *ibert_p, G4int *nopart_p, G4int *izrem_p, G4int *iarem_p, G4double *esrem_p, + G4double *erecrem_p, G4double *alrem_p, G4double *berem_p, G4double *garem_p, + G4double *bimpact_p, G4int *l_p) +{ + G4int ibert = (*ibert_p); + // float f[15]; // = (*f_p); + G4int nopart = (*nopart_p); +// G4int kind[300]; //= (*kind_p); +// G4double ep[300]; // = (*ep_p); +// G4double alpha[300]; // = (*alpha_p); +// G4double beta[300]; // = (*beta_p); +// G4double gam[300]; // = (*gam_p); + G4int izrem = (*izrem_p); + G4int iarem = (*iarem_p); + G4double esrem = (*esrem_p); + G4double erecrem = (*erecrem_p); + G4double alrem = (*alrem_p); + G4double berem = (*berem_p); + G4double garem = (*garem_p); + G4double bimpact = (*bimpact_p); + G4int l = (*l_p); + + G4double minus_b1, minus_b2, minus_b3; + //alog + G4double aml1; + G4double aml2; + G4double amlnew; + G4double arg; + G4double b1; + G4double b2; + G4double b3; + G4double bb2; + G4double be; + G4double bmass[2000]; + G4double bmax2; + G4double c1; + G4double c2; + G4double cb0; + G4double cchi; + G4double ccr; + G4double cg; + G4double cif; + G4double cmultn; + G4double cobe; + G4double coeffb0; + G4double comom; + G4double cstet; + G4double dis1; + G4double dis2; + G4double dis3; + G4double dist; + G4double eb0; + G4double ecoreh5; + G4double efer; + G4double egs; + G4double eh5; + G4double eh6; + G4double eij; + G4double ekout; + G4double elead; + G4double energie_in; + G4double ener_max; + G4double eout; + G4double eps_c[BL1SIZE]; + G4double epsv; + G4double erecg; + G4double erem; + G4double exi; + G4double expob0; + G4double factemp; + G4double fffc; + G4double fm; + G4double g1; + G4double g2; + G4double ge; + G4double geff; + G4double gg; + G4double gl1; + G4double gl2; + G4double gpsg; + G4int i1; + G4int i20; + G4int ic33; + G4int ich1; + G4int ich2; + G4int ich3; + G4int ich4; + G4int ichd; + G4int ichpion; + G4int idecf; + G4int idep; + G4int iej; + G4int iejn; + G4int iejp; + G4int i_emax; + G4int iflag; + G4int iflag20 = 0; + G4int iflag40 = 0; + G4int iflag60 = 0; + G4int ilm = 0; + G4int imin; + G4int indic[3000]; + G4int inrem; + G4int ip; + G4int ipi[2000]; + G4int iqe; + G4int irem; + G4int irst_avatar; + G4int isos = 0; + G4int itch; + G4int iteste; + G4int itt; + G4int ixr1; + G4int ixr2; + G4int ixr3; + // G4int k; + G4int kcol; + G4int kd; + // G4int klm = 0; +// G4int l1; +// G4int l2; + G4int ldel; + G4int lead; + G4int led; + G4int lnew; + G4int lp = 0; + G4int lp1; + G4double mcdd; + //G4double mg; + G4int mg; + G4double mpaul1; + G4double mpaul2; + G4double mrdd; + G4double mrdn; + G4double mrdp; + G4double mrnd; + G4double mrnn; + G4double mrpd; + G4int n20; + G4int nbalttf; + G4int nbquit; + G4int nbtest; + G4int nc[300]; + G4int ncol; + G4int ncol_2c; + G4int next; + G4int nmiss; + G4int np; + G4int npidir; + G4int npion = 0; + G4int npproj[300]; + G4int npx; + G4int nsum_col; + G4double p1v; + G4double p2v; + G4double p3_c[BL1SIZE]; + G4double p3v; + G4double pfrem1; + G4double pfrem2; + G4double pfrem3; + G4double pfreml; + G4double pfreml2; + G4double phi; + G4double p_mod; + G4double pot; + G4double pout1; + G4double pout2; + G4double pout3; + G4double pppp; + G4double prem1; + G4double prem2; + G4double prem3; + G4double psf; + G4double pspr; + G4double ptotl; + G4double qdeut; + G4double qqq; + G4double r22; + G4double rcm1; + G4double rcm2; + G4double rcm3; + G4double rcorr; + G4double rhopi; + G4double rndm; + G4double rr; + G4double rrrr; + G4double s; + G4double s1t1; + G4double s2t1; + G4double s3t1; + G4double schi; + G4double sepa; + G4double sif; + G4double sitet; + G4double sp1t1; + G4double sp2t1; + G4double sp3t1; + G4double sq = 0.0; + G4double sueps; + G4double t[50]; + G4double t0; + G4double t1; + G4double t2; + G4double t3; + G4double t33; + G4double t4; + G4double t5; + G4double t6; + G4double t7; + G4double t8; + G4double tau; + G4double tbid; + G4double tdel; + G4double temfin; + G4double tim; + G4double timi; + G4double tlabu; + G4double tp; + G4double tref; + G4double tri; + G4double tt31; + G4double tt32; + G4double tt33; + G4double tt34; + G4double tt35; + G4double tt36; + G4double tte; + G4double u; + G4double v; + G4double var_ab; + G4double x; + G4double x1l1; + G4double x1l2; + G4double x1_target = 0.0; + G4double x2_target = 0.0; + G4double x3_target = 0.0; + G4double x2cour; + G4double x2l1; + G4double x2l2; + G4double x3l1; + G4double x3l2; + G4double xapres; + G4double xavant; + G4double xbl1; + G4double xbl2; + G4double xc; + G4double xe; + G4double xga; + G4double xl1; + G4double xl2; + G4double xl3; + G4double xlab; + G4double xleng; + G4double xlengm; + G4double xmodp; + G4double xpb; + G4double xq; + G4double xr1; + G4double xr2; + G4double xr3; + G4double xr4; + G4double xr5; + G4double xr6; + G4double xr7; + G4double xr8; + G4double xv; + G4double xxx; + G4double xy1; + G4double xy2; + G4double xy3; + G4double xye; + G4double y; + G4double q1[BL1SIZE]; + G4double q2[BL1SIZE]; + G4double q3[BL1SIZE]; + G4double q4[BL1SIZE]; + G4double y1[BL3SIZE]; + G4double y2[BL3SIZE]; + G4double y3[BL3SIZE]; + // G4double ym[2000]; + G4double ym[BL1SIZE]; + G4double z; + G4double za_i; + G4double zai2; + G4double zshif; + G4double ztouch = 0.0; + G4double ztu; + + // LIEGE INC-model as a subroutine + + // The Liege INC model has been applied to several systems and in + // several conditions. Refinements are still in progress. + + // PLEASE refer to this version as INCL4.1 in order to avoid + // confusion when comparing to the results of your colleagues. + + // DIFFERENT from INCL2.0 in the sense that the cascade is stopped + // when the excitation energy vanishes if this occurs before the + // predetermined stopping time (herein denoted as temfin) Special + // are taken to avoid emission of slow particles due to the + // imperfect Pauli blocking + + // PLEASE notice: There are basically only two parameters in the + // model: the average potential depth, denoted as V0, and the time + // at which the cascade is stopped denoted as temfin. In this + // program, the "standard" values (those G4introduced in the ref + // NPA620(1997)475) are V0=40MeV and temfin=1.25*some function of + // incident energy and impact parameter. You may, of course, change + // these parameters V0 and the numerical coefficient in temfin, + // within reasonable limits (i.e. V0 cannot be lower than 38MeV; + // V0=45MeV is recommended for heavy nuclei). If you do, PLEASE + // indicate your choice, once again, for the same reason as above. + + // The description of the cascade model(incl2.0) can be found in: + // J.C., C.VOLANT & S.VUILLIER, NPA620(1997)475 It is basically the + // same model as described in J.C. NPA462(1987)751 (version 7 (in + // our jargon), sketched below) + a refinement of the + // parametrization of the cross-sections, based on J.C., D. L'HOTE, + // J.VANDERMEULEN, NIM B111(1996)215 and J.C., S.LERAY, E.MARTINEZ, + // Y.PATIN & S.VUILLIER PRC56(1998)2431 + + // technical notes: + // 1.for the parametrizations of cross sections, see + // notes of 4/10/96, 9/10/96, 31/12/97 and 13/10/98 + // 2.temfin=1.25*... 18/6/98 + // 3.sepa in concordance with v0-tf 2/7/98 + // 4.special care for stopping the cascade before t=temfin 27/04/99 + + // 84 c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + // 85 C P-N00030 + // 86 C VERSION 7: 2/2/93 P-N00040 + // 87 C + // 88 C++++++++++++ DESCRIPTION OF INPUT AND OUTPUT+++++++++++++++++++++++++++++ + // 89 C + // 90 C **INPUT DATA** + // 91 C + // 92 C IBERT=O IN THE FIRST CALL + // 93 C 1 IN THE SUBSEQUENT CALLS + // 94 C + // 95 C F= (REAL) ARRAY OF DIMENSION 8 + // 96 C + // 97 C F(1)= A (TARGET) + // 98 C F(2)= Z (TARGET) + // 99 C F(3)= KINETIC ENERGY (IN MEV) OF THE INCIDENT PARTICLE + // 100 C F(4)= SUPPOSED TO BE THE MINIMUM PROTON ENERGY REQUIRED TO LEAVE + // 101 C THE TARGET. IN THIS CASCADE MODEL, IT IS ZERO + // 102 C F(5)= Nuclear potential V0 (standard value=45 MeV for heavy nuclei) + // 103 C F(6)= Rescale the cascade duration (the standard value t0 is MULTIPLIED + // 104 c by this value. F(6)=1. is the standard) + // 105 C F(7)= TYPE OF INCIDENT PARTICLE + // 106 C 1.00 FOR PROTON + // 107 C 2.00 FOR NEUTRON + // 108 C 3.00 FOR PI+ + // 109 C 4.00 FOR PI0 + // 110 C 5.00 FOR PI- + // 111 C 6.00 FOR DEUTERON + // 112 C 7.00 FOR TRITON + // 113 C 8.00 FOR HE3 + // 114 C 9.00 FOR HE4 + // 115 C F(8)= SUPPOSED TO BE THE MINIMUM NEUTRON ENERGY REQUIRED TO LEAVE + // 116 C THE TARGET. IN THIS CASCADE MODEL, IT IS ZERO + // 117 C + // 118 C NOSURF=1 Sharp density (hard sphere), + // 119 C NOSURF=0 Wood-Saxon density, stopping time "70" + // 120 C without B (impact) dependence. + // 121 C NOSURF=-1 Wood-Saxon density, stopping time "70" + // 122 C with B (impact) dependence + // 123 C (on peut toujours nenormaliser ces fonctions + // 124 C de temps avec le facteur F(6): t=t0*F(6) ) + // 125 C XFOISA Rmaxws = R0 + XFOISA*A + // 126 C Bmax = Rmaxws for pions and nucleons + // 127 C Bmax = Rmaxws + rms1t (data) for composits + // 128 C Pauli strict (1) or statistic (0) or without pauli (2): NPAULSTR + // 129 C + // 130 C F(9)= imat, target material identifier for the right choose of Sax.-Wood density + // 131 c + // 132 c common/hazard/ial,IY1,IY2,IY3,IY4,IY5,IY6,IY7,IY8,IY9,IY10, + // 133 c s IY11,IY12,IY13,IY14,IY15,IY16,IY17,IY18,IY19 + // 134 c ......20 numbers in the main routine to initialize the random numbers + // 135 c + // 136 C **OUTPUT DATA** + // 137 C + // 138 C NOPART=-1 PSEUDO REACTION (VOID EVENT) + // 139 C 0 ABSORPTION + // 140 C >0 TRUE EVENT, = NUMBER OF PARTICLES EMITTED (EXCLUDING THE REMNANT) + // 141 C + // 142 C FOR N=1,NOPART: + // 143 C KIND(N)= TYPE OF PARTICLES (SAME CONVENTION AS FOR F(7), BUT IN G4INTEGERS) + // 144 C + // 145 C EP(N)= KINETIC ENERGY + // 146 C + // 147 C ALPHA(N),BETA(N),GAM(N)= DIRECTION COSINES + // 148 C + // 149 C IZREM= Z (REMNANT) + // 150 C + // 151 C IAREM= A (REMNANT) + // 152 C + // 153 C ESREM= EXCITATION ENERGY OF THE REMNANT + // 154 C + // 155 C ERECREM= RECOIL ENERGY OF THE REMNANT + // 156 C + // 157 C ALREM,BEREM,GAREM=DIRECTION COSINES OF THE REMNANT + // 158 C + // 159 C BIMPACT impact parameter + // 160 C + // 161 C L G4intrinsic momentum of the remnant in units of h/2pi=hbar=197.328 + // 162 C+++++++++ DESCRIPTION OF THE INC MODEL ++++++++++++++++++++++++++++++++++++ + // 163 C + // 164 C MODEL DESCRIBED IN J.CUGNON (NP A462(1987)751) P-N00050 + // 165 C =MODEL (DR) OF J.CUGNON,D.KINET,J.VANDERMEULEN(NP A379(1982)567) P-N00060 + // 166 C P-N00110 + // 167 C +REFLECTION OR TRANSMISSION ON THE POTENTIAL WALL P-N00120 + // 168 C (THE POTENTIAL DEPTH IS THE SAME FOR NUCLEONS & DELTA'S) P-N00130 + // 169 C (CONTAINS A COULOMB BARRIER) P-N00140 + // 170 C P-N00150 + // 171 C +ABSORPTION OF THE PION ABOVE THE (3,3) RESONANCE (NOT IN P-N00160 + // 172 C VERSION 2) P-N00170 + // 173 C P-N00180 + // 174 C +POSSIBLE PAULI BLOCKING OF TWO BODY COLLISIONS P-N00190 + // 175 C +POSSIBLE PAULI BLOCKING OF DELTA DECAY P-N00200 + // 176 C THE PAULI BLOCKING IS APPLIED TO THE NUCLEONS P-N00210 + // 177 C ONLY.THE PAULI BLOCKING FACTORS ARE EVALUATED P-N00220 + // 178 C BY COUNTING THE NUCLEONS INSIDE A VOLUME IN P-N00230 + // 179 C PHASE SPACE.THE EXTENSION OF THIS VOLUME IS P-N00240 + // 180 C OF THE ORDER OF H**3 P-N00250 + // 181 C P-N00260 + // 182 C ADDITIONAL FEATURES: P-N00270 + // 183 C P-N00280 + // 184 C +ISOSPIN (WITH NEW PN BACKWARD-FORWARD ASYMMETRY) P-N00290 + // 185 C P-N00300 + // 186 C +"LONGITUDINAL GROWTH" OF THE BARYONS (NOT ACTIVATED HERE) + // 187 C + // 188 C + PARTICLE #1 IS ALWAYS THE FASTEST PARTICLE IN THE Z-DIRECTIONP-N00100 + // 189 C (NOT ACTIVATED HERE) + // 190 C +SIMPLIFIED NEUTRON EVAPORATION AT THE END OF THE CASCADE P-N00310 + // 191 C (NOT PRESENT HERE) + // 192 C + // 193 C +POSSIBLE CONSERVATION OF ANGULAR MOMENTUM (NOT ACTIVATED + // 194 C HERE, COPIED FROM P_NUCJ) + // 195 C P-NU7=SAME AS P-NU6 + EVAPORATION P-N00330 + // 196 C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++P-N00340 + // 197 + // 198 DIMENSION f(15),kind(300),ep(300),alpha(300),beta(300),gam(300) + // 199 DIMENSION bmass(300) + // 200 COMMON/hazard/ial,IY1,IY2,IY3,IY4,IY5,IY6,IY7,IY8,IY9,IY10, + // 201 s IY11,IY12,IY13,IY14,IY15,IY16,IY17,IY18,IY19 + // 202 COMMON/kind/kindf7 + // 203 DIMENSION IND(20000),JND(20000) P-N00350 + // 204 DIMENSION INDIC(3000) P-N00360 + // 205 DIMENSION NPAR(625,15),NIMP(600,15),NNCO(15),NIMPP(600) P-N00370 + // 206 DIMENSION NENTR(10,8,20,10),NOUT1(15),NOUT2(15) P-N00380 + // 207 + // 208 c DIMENSION TEM(15),NSR(40),NSP(40),NSR1(40),NSP1(40) P-N00400 + // 209 DIMENSION TEM(15),NSR1(40),NSP1(40) P-N00400 + // 210 DIMENSION T(200),LINE(132),Q1(200),Q2(200),Q3(200),Q4(200),NC(300)P-N00410 + // 211 DIMENSION Y1(200),Y2(200),Y3(200),YM(200),IPI(200) P-N00420 + // 212 DIMENSION NRNN(15),NRND(15),NRDD(15),NRDN(15),NRDP(15),NRPD(15),NCP-N00430 + // 213 -DD(15),NPAUL1(15),NPAUL2(15) P-N00440 + // 214 DIMENSION NPDIR(600) P-N00450 + // 215 DIMENSION NEJ(6,15),NRES(6,15),NPIA(6,15),NCHPRO(15),NDEL(15) P-N00460 + // 216 DIMENSION EDEP1(15),EDEP2(15),EDEP3(15),EDEP4(15),NG4INT(15) P-N00470 + // 217 -,EPAR1(15),EPAR2(15),EPAR3(15),EPAR4(15),ENPI(15),E1(15),EZ3(15) P-N00480 + // 218 DIMENSION IHF1(50),IHF2(50),IHF3(50),IHF4(50),IHP(2,100),IHC(50), P-N00490 + // 219 -IHE(2,100),IHF5(100),IHREM(100,100) + // 220 + // 221 DIMENSION JPARTICIP(300),eps_c(4),p3_c(4) + // 222 + // 223 C Dialogue with INCL: function R(q/pf) for each nucleus + // 224 COMMON/SAXW/ XX(30,500),YY(30,500),SS(30,500),NBPG4INTER,IMAT + // 225 COMMON/WS/R0,ADIF,RMAXWS,DRWS,NOSURF,XFOISA,NPAULSTR,BMAX + // 226 + // 227 C RMS espace R, espace P, Fermi momentum and energy for light gauss nuc. + // 228 COMMON/light_gaus_nuc/rms1t(9),pf1t(9),pfln(9),tfln(9),vnuc(9) + // 229 + // 230 C Fermi 2 param from A=19 to 28, modified harm oscil A=6 to 18 + // 231 C (H. De Vries et al. At. Data and Nuc. Data Tab. 36 (1987) 495) + // 232 COMMON/light_nuc/R_light_nuc(30),a_light_nuc(30) + // 233 + // 234 c common for study of avatars through an ntuple optionally produced + // 235 real*4 bavat,timeavat,energyavat + // 236 G4integer bloc_paul,bloc_cdpp,go_out,avm,del1avat,del2avat + // 237 parameter (avm=1000) + // 238 common/var_avat/kveux,bavat,nopartavat,ncolavat, + // 239 s r1_in(3),r1_first_avat(3), + // 240 s epsd(250),eps2(250),eps4(250),eps6(250),epsf(250), + // 241 s nb_avat, + // 242 s timeavat(avm),l1avat(avm),l2avat(avm),jpartl1(avm),jpartl2(avm), + // 243 s del1avat(avm),del2avat(avm),energyavat(avm), + // 244 s bloc_paul(avm),bloc_cdpp(avm),go_out(avm) + // 245 + // 246 dimension npproj(300) + // 247 common/spl2/ xsp(100),ysp(100),ad(100),bd(100),cd(100),ndeut + // 248 c deutons + // 249 c dimension ltt(15) p-n00520 + // 250 common/bl1/p1(300),p2(300),p3(300),eps(300),ind1(300),ind2(300),tap-n00530 + // 251 common/bl2/crois(19900),k,ind,jnd p-n00540 + // 252 common/bl3/r1,r2,x1(300),x2(300),x3(300),ia1,ia2,rab2 p-n00550 + // 253 common/bl4/tmax5 p-n00560 + // 254 common/bl5/tlg(300),nesc(300) p-n00570 + // 255 common/bl6/xx10,isa p-n00580 + // 256 common/bl8/rathr,ramass + // 257 common/bl9/hel(300),l1,l2 + // 258 common/bl10/ri4,rs4,r2i,r2s,pf + // 259 common/paul/ct0,ct1,ct2,ct3,ct4,ct5,ct6,pr,pr2,xrr,xrr2, + // 260 s cp0,cp1,cp2,cp3,cp4,cp5,cp6 + // 261 + // 262 dimension ia1t(9),iz1t(9),fmpinct(9) + // 264 data line/132*1h*/,hc,fmp,fmd,fmpi/197.328,938.2796,1232.,138.00/ p-n00590 + G4double hc = 197.328; + G4double fmp = 938.2796; + G4double fmpi = 138.00; + // 265 data /ia1t,iz1t,fmpinct/1,1,0,0,0,2,3,3,4,1,0,1,0,-1,1,1,2,2, + // 266 -938.2796,938.2796,138.0,138.0,138.0,1874.35,2806.8,2806.8,3727. + G4int ia1t[9] = {1,1,0,0,0,2,3,3,4}; + G4int iz1t[9] = {1,0,1,0,-1,1,1,2,2}; + G4double fmpinct[9] = {938.2796,938.2796,138.0,138.0,138.0,1874.35,2806.8,2806.8,3727.}; + + // Initialize array: + for(G4int i = 0; i < 300; i++) { + npproj[i] = 0; + nc[i] = 0; + } + + // 266 + // 267 c data rms1t,pf1t/0.,0.,0.,0.,0.,2.10,1.80,1.80,1.63, + // 268 c -0.,0.,0.,0.,0.,77.,110.,110.,153./ + // 269 + // 270 + // 271 c deutons + // 272 data nentr/16000*0/ p-n00620 + // 389 c p-n01700 + // 390 ccc reading of the data p-n01710 + // 391 c p-n01720 + // 392 c-------explanation of some physical quantities------------------------ p-n01730 + // 393 c (basically input data, when run as a program) + // 394 c p-n01740 + // 395 c ia1=mass number of the incident ion p-n01750 + // 396 c p-n01760 + // 397 c ia2=mass number of the target p-n01770 + // 398 c iz1=atomic number of the projectile p-n01780 + // 399 c p-n01790 + // 400 c iz2=atomic number of the target p-n01800 + // 401 c r01=radius parameter of the projectile p-n01810 + // 402 c r01 should be put to 1.000 p-n01820 + // 403 c r02=radius parameter of the target p-n01830 + // 404 c adif1=diffuseness of the projectile p-n01840 + // 405 c adif1 should be put to 1.0000 p-n01850 + // 406 c adif2=diffuseness of the target p-n01860 + // 407 c p-n01870 + // 408 c tlab = incident energy (in mev) p-n01880 + // 409 c p-n01890 + // 410 c k1=1 reference frame=c.m. of the covering matter p-n01900 + // 411 c k1=2 reference frame=c.m. frame of the incident ion and its p-n01910 + // 412 c G4intercept p-n01920 + // 413 c k1=3 reference frame=c.m. frame of a n-n system with the same p-n01930 + // 414 c kinematics as the two ions p-n01940 + // 415 c k1=4 reference frame=c.m. frame for the total system p-n01950 + // 416 c k1=5 reference frame=lab system p-n01960 + // 417 c k1 should be put to 5 in this version p-n01970 + // 418 c k2=0 relativistic kinematics p-n01980 + // 419 c k2=1 non-relativistic kinematics(abandonned in this version) p-n01990 + // 420 c k3=0 deltas are produced p-n02000 + // 421 c k3=1 no delta production p-n02010 + // 422 c k4=0 the delta is given a vanishing lifetime p-n02020 + // 423 c k4=1 the delta has a very large lifetime p-n02030 + // 424 c k4=2 the delta has a exponentially random lifetime p-n02040 + // 425 c k5=0 no delta-nucleon,delta-delta G4interactions p-n02050 + // 426 c k5=1 delta-nucleon=delta-delta=nucleon-nucleon elastic x-section p-n02060 + // 427 c k6=0 no angular momentum conservation p-n02070 + // 428 c k6=1 angular momentum conservation p-n02080 + // 429 c p-n02090 + // 430 c b=impact parameter p-n02100 + // 431 c p-n02110 + // 432 c rbl(pbl) is the radius in real(momentum) space of the volume p-n02120 + // 433 c on which the nucleons are counted to evaluate the pauli p-n02130 + // 434 c blocking factors p-n02140 + // 435 c recommended values are 2 fm and 200 mev/c respectively p-n02150 + // 436 c p-n02160 + // 437 c nrun= number of runs (irrelevant here) p-n02170 + // 438 c p-n02180 + // 439 c ntm=number of G4intermediate times at which the spatial and momentump-n02190 + // 440 c distributions are stored (not relevant here) p-n02200 + // 441 c p-n02210 + // 442 c tem(it)=values of the G4intermediate times p-n02220 + // 443 c p-n02230 + // 444 c v0=depth of the nucleon potential p-n02240 + // 445 c v1=depth of the delta potential p-n02250 + // 446 c in this version v1 should be equal to v0 p-n02260 + // 447 c (attention! a v0 > 0 corresponds to an attractive potential) p-n02270 + // 448 c p-n02280 + // 449 c ncase=number of cells necessary to depict the spatial distributionp-n02290 + // 450 c in the x and z directions p-n02300 + // 451 c p-n02310 + // 452 c xp,xg,zp,zg=limits of the box in the x and z directions p-n02320 + // 453 c in order to have the same scale in the two directions ,put xg-xp= p-n02330 + // 454 c 0.9*(zg-zp) p-n02340 + // 455 c dy=dimension of the box in the y direction p-n02350 + // 456 c p-n02360 + // 457 c rap1,rap2,pp1,pp2=limits of the box in the rapidity-p(perpendicu- p-n02370 + // 458 c -lar) space p-n02380 + // 459 c the box is divided G4into 15 cells along p(perp) and 40 cells along p-n02390 + // 460 c the rapidity p-n02400 + // 461 c p-n02410 + // 462 c en,sn=average energy carried away by a nucleon,separation energy p-n02420 + // 463 c p-n02430 + // 464 c (ntm,ncase,xp,...,sn are not used here) + // 465 c-----------------------------------------------------------------------p-n02440 + + // for logging + // std::ofstream dumpOut("inclDump.txt"); + // end for logging + + // G4int jparticip[300]; + G4int jparticip[BL1SIZE]; + G4double beproj = 0.; + bl3->ia2 = G4int(calincl->f[0]); // f(1)->f[0] and so on..., calincl added + G4int iz2 = G4int(calincl->f[1]); + G4double r02 = 1.12; + kindstruct->kindf7 = int(std::floor(calincl->f[6] + 0.1)); + + bl3->ia1 = ia1t[G4int(kindstruct->kindf7)-1]; + G4int iz1 = iz1t[G4int(kindstruct->kindf7)-1]; + G4double fmpinc = fmpinct[G4int(kindstruct->kindf7)-1]; + G4double rms1 = light_gaus_nuc->rms1t[G4int(kindstruct->kindf7)-1]; + G4double pf1 = light_gaus_nuc->pf1t[G4int(kindstruct->kindf7)-1]; + G4double tlab = calincl->f[2]; + + G4int k2 = 0; + G4int k3 = 0; + // G4int k3 = 1; // No deltas! + G4int k4 = 2; + G4int k5 = 1; + G4int k6 = 0; + + // material number: + saxw->imat = G4int(std::floor(calincl->f[8] + 0.5)); // f(9) -> f[8] + // espace de phases test (r et p) pour pauli: + // valeur recommandee par j.c. v-test=0.589 h**3: + G4double rbl = 2.0; + G4double pbl=200.0; + + paul->xrr = rbl; + paul->xrr2 = (paul->xrr) * (paul->xrr); + paul->pr=pbl; + paul->pr2 = paul->pr*(paul->pr); + + G4double tem[10]; + tem[0] = 100000.0; // tem(1) -> tem[0] + // temfin (time at which the inc is stopped), tmax5 defined after chosing b + + G4double v0 = calincl->f[4]; // f(5)->f[4] + G4double v1 = v0; + bl8->rathr = 0.; + bl8->ramass = 0.; + + // constants and derived data + bl10->pf = 1.37*hc; + G4double tf = std::sqrt(bl10->pf*(bl10->pf)+fmp*fmp)-fmp; + G4double g0 = 115.0; + G4double th = 0.; + G4double pm2 = fmp*fmp; + G4int ia = bl3->ia1 + bl3->ia2; + G4int a2 = bl3->ia2; + bl3->r2 = r02*std::pow(G4double(a2),0.33333333); + + // parametres moyens de densite de la cible (fermi 2 parametres) + if (bl3->ia2 > 28) { //then + ws->r0 = (2.745e-4*bl3->ia2+1.063)*std::pow(G4double(bl3->ia2),0.33333333); + ws->adif = 1.63e-4*bl3->ia2 + 0.510; + ws->rmaxws = ws->r0 + ws->xfoisa*(ws->adif); + } + else if(bl3->ia2 >= 0.19) { //then + ws->r0 = light_nuc->r[bl3->ia2]; + ws->adif = light_nuc->a[bl3->ia2]; + ws->rmaxws = ws->r0 + ws->xfoisa*(ws->adif); + } + else if(bl3->ia2>=6) { //then + ws->r0 = 1.581*(light_nuc->a[bl3->ia2]) * (2.0 + 5.0 * (light_nuc->r[bl3->ia2])/(2.0 + 3.0*(light_nuc->r[bl3->ia2]))); + ws->adif = light_nuc->a[bl3->ia2]; + ws->rmaxws = 5.5 + 0.3*(bl3->ia2 - 6.0)/12.0; + } + else if(bl3->ia2 >= 2) { // then + if(bl3->ia2 == 2) { //then + ws->r0 = light_gaus_nuc->rms1t[5]; // rms1t(6) -> rms1t[5] + bl10->pf = light_gaus_nuc->pfln[5]; //pfln(6)->pfln[5] + tf = light_gaus_nuc->tfln[5]; // tfln(6) -> tfln[5] + v0 = light_gaus_nuc->vnuc[5]; // vnuc(6) -> vnuc(5) + } //endif + if(bl3->ia2 == 3 && iz2 == 1) { //then + ws->r0 = light_gaus_nuc->rms1t[6]; //rms1t(7)->rms1t[6] and so on... + bl10->pf = light_gaus_nuc->pfln[6]; + tf = light_gaus_nuc->tfln[6]; + v0 = light_gaus_nuc->vnuc[6]; + } //endif + if(bl3->ia2 == 3 && iz2 == 2) { //then + ws->r0 = light_gaus_nuc->rms1t[7]; //rms1t(8)->rms1t[7] and so on... + bl10->pf = light_gaus_nuc->pf1t[7]; + tf = light_gaus_nuc->tfln[7]; + v0 = light_gaus_nuc->vnuc[7]; + } //endif + if(bl3->ia2 == 4) { //then + ws->r0 = light_gaus_nuc->rms1t[8]; // rms1t(9) -> rms1t[8] and so on... + bl10->pf = light_gaus_nuc->pf1t[8]; + tf = light_gaus_nuc->tfln[8]; + v0 = light_gaus_nuc->vnuc[8]; + } //endif + v1 = v0; + ws->adif = 0.57735*(ws->r0); + ws->rmaxws = ws->r0+2.5; + } // end if + if(ws->nosurf > 0) { //then + ws->adif=0.0; + ws->rmaxws=ws->r0; + } //end if + ws->drws = ws->rmaxws/29.0; + + // on impose le rayon du noyau: + // ....voir coherence function wsax(r) et derivwsax(r) + bl3->r2 = ws->r0; + if(verboseLevel > 3) { + G4cout <<"Radius bl3->r2 = " << bl3->r2 << G4endl; + } + + G4double tnr = tlab; + assert((tnr*tnr + 2.0*tlab*fmpinc) >= 0); + assert((tnr+fmpinc) != 0); + G4double binc = std::sqrt(tnr*tnr + 2.0*tlab*fmpinc)/(tnr+fmpinc); + assert((1.0 - binc*binc) > 0); + G4double ginc=1.0/std::sqrt(1.0 - binc*binc); + G4double pinc = fmpinc*binc*ginc; + +// for(G4int i = 0; i < ia; i++) { +// jparticip[i]=0; +// } + for(G4int i = 0; i < 300; i++) { + jparticip[i] = 0; + } + + for(G4int bli = 0; bli < BL1SIZE; bli++) { + bl1->eps[bli] = 0.0; + bl1->p1[bli] = 0.0; + bl1->p2[bli] = 0.0; + bl1->p3[bli] = 0.0; + q1[bli] = 0.0; + q2[bli] = 0.0; + q3[bli] = 0.0; + q4[bli] = 0.0; + } + + // skip initialisations + G4double efrun = 0.0; + G4int iavat = 0; + + // generation of the initial distribution in the rest frame of the iop-n03870 + // surface + // 700 c bmax=r2+2.2*adif + // 701 c r2i=(r2-2.2*adif) + // 702 c r2s=(r2+2.2*adif) + // 703 c ********** + // 704 + + ws->bmax = ws->rmaxws; // maximum extension of the nucleus ( w.s.) + + // fin surface (que faire aux pions ?) + // 709 c if (kindf7.gt.2) bmax=r2+2.2 + // 710 c if (kindf7.gt.2) bmax=bmax ! a.b. (avec w.s., idem les nucleons) + // deutons cv 22/01/2001 + if (kindstruct->kindf7 <= 2) { //then + ws->bmax = ws->bmax; // comme alain + } + else { + if (kindstruct->kindf7 < 6) { // then + ws->bmax = ws->bmax; // comme alain + } + else { + beproj = fmpinc - bl3->ia1*fmp; + ws->bmax = ws->rmaxws + rms1; // maximum extension of the nucleus ( w.s.) + } + } + + // deutons + G4double al; + standardRandom(&al, &(hazard->ial)); + G4double b = std::sqrt(al)*(ws->bmax); + G4double bred = b/bl3->r2; + //G4double bimpact=b; + bimpact = b; + G4double tnor; + + if(ws->nosurf != -2) { // la suite, c'est la version temps avant 2001 + if(ws->nosurf <= 0) { + tnor = 70.0/30.6349; + } + // PK endif removed + else { + tnor=1.; + } //endif + if(ws->nosurf == 0) { + bred = 0.; + } + if (kindstruct->kindf7 <= 2) { + if (tlab < 400.0) { + cb0 = 6.86 - 0.0035 * tlab; + eb0 = 0.32 - 0.00005 * tlab; + } + else { + if (tlab < 1000.0) { //then + cb0 = 5.23 + 0.000575 * tlab; + eb0 = 0.32 - 0.00005 * tlab; + } + else { + cb0 = 5.73 + 0.00007 * tlab; + eb0 = 0.283 - 0.000013 * tlab; + } + } + temfin = 1.25*cb0/amax1(1.0,0.854 + 0.438*bred)*std::pow(G4double(bl3->ia2),(eb0/amax1(1.0,0.941+0.177*bred))); + temfin = temfin*tnor; + } + else { + if (kindstruct->kindf7 < 6) { + // here for pions: + temfin = 30.0*std::pow((float(bl3->ia2)/208.0),0.25)*(1.0 - 0.2*bred)*(1.0 - tlab/1250.0); + // correction for pions in the case nosurf=0 or -1 (a.b., c.v. 2/2002) + temfin = temfin*tnor; + } + else { + // deutons + tlabu = tlab/bl3->ia1; + if (tlabu <= 400) { + coeffb0 = -0.0035*tlabu + 6.86; + expob0 = -0.00005*tlabu + 0.32; + } + else { + if (tlabu <= 1000) { //then + coeffb0 = 0.000575*tlabu + 5.23; + expob0 = -0.00005*tlabu + 0.32; + } + else { + coeffb0 = 0.00007*tlabu + 5.73; + expob0 = -0.000013*tlabu + 0.283; + } + } + if (bred <= 0.33333) { + xc = 1.0; + xe = 1.0; + } + else { + xc = 0.438*bred + 0.854; + xe = 0.177*bred + 0.941; + } + temfin = 1.25*(coeffb0/xc)*std::pow(G4double(bl3->ia2),(expob0/xe)); + // same renormalisation of time for p,n and composit particles. + temfin = temfin*tnor; + } + } + } + else { //ici,nosurf=-2 c'est la fonction temps 2001 (avec surface). + if(kindstruct->kindf7 >= 3 && kindstruct->kindf7 <= 5) { + // here for pions (arbitrary multiplied by 2 for surface) (a.b., c.v.) 2/2002: + // temfin=60.*(float(ia2)/208.)**0.25*(1.-0.2*bred)*(1.-tlab/1250.) + // modified in april 2003 (more reasonable but not yet checked!) + temfin = 25.5*std::pow(G4double(bl3->ia2),0.16); // pb208->60fm/c + } + else { + // here for other hadrons + temfin = 29.8*std::pow(G4double(bl3->ia2),0.16); // pb208->70fm/c + } + } + + // deutons + // a way to change stopping time f[5] not used here + factemp = calincl->f[5]; // f(6)->f[5] + // attention !!! 30/04/2001 scaling time is now a multiplication factor + temfin = temfin*factemp; + + exi = 0.0; + nbquit = 0; + iqe = 0; + idecf = 0; + bl4->tmax5 = temfin+0.1; + npion = 0; + efer = 0.0; + + // deutons + if (bl3->ia1 > 1) { + goto pnu7; + } + + // deutons + if (bl3->ia1 == 1) { //then + // bl5->nesc[0] = 0; // nesc(1)->nesc[0] and so on... + bl5->nesc[1] = 0; + // bl1->ind2[0] = 2*iz1 - 1; + bl1->ind2[1] = 2*iz1 - 1; + bl1->ind1[1] = 0; + bl3->x1[1] = 0.0; + bl3->x2[1] = 0.0; + bl3->x3[1] = 0.0; + bl1->p1[1] = 0.0; + bl1->p2[1] = 0.0; + bl1->p3[1] = 0.0; + bl9->hel[0] = 0.0; + bl9->hel[1] = 0.0; + jparticip[0] = 0; + jparticip[1] = 1; + } + else { + npion = 1; + ipi[1] = 8 - 2*(kindstruct->kindf7); + y1[1] = 0.0; + y2[1] = 0.0; + y3[1] = 0.0; + q1[1] = 0.0; + q2[1] = 0.0; + q3[1] = 0.0; + q4[1] = fmpi; + } + + // deutons + goto pnu9; + // 850 + pnu7: + s1t1 = 0.0; + s2t1 = 0.0; + s3t1 = 0.0; + sp1t1 = 0.0; + sp2t1 = 0.0; + sp3t1 = 0.0; + for(G4int i = 1; i <= bl3->ia1; i++) { + //for(G4int i = 1; i <= (bl3->ia1-1); i++) { + // for(G4int i = 1; i < (bl3->ia1-1); i++) { + bl9->hel[i] = 0; + bl5->nesc[i] = 0; + bl1->ind2[i] = 1; + if (i > iz1) { + bl1->ind2[i] = -1; + } + bl1->ind1[i] = 0; + // deutons + jparticip[i] = 1; + + // deutons + gaussianRandom(&xga); + bl3->x1[i] = xga*rms1*0.57735; + s1t1 = s1t1 + bl3->x1[i]; + gaussianRandom(&xga); + bl3->x2[i] = xga*rms1*0.57735; + s2t1 = s2t1 + bl3->x2[i]; + gaussianRandom(&xga); + bl3->x3[i] = xga*rms1*0.57735; + s3t1 = s3t1 + bl3->x3[i]; + + if(kindstruct->kindf7 == 6) { //then + // deuteron density from paris potential in q space: + standardRandom(&xq, &(hazard->igraine[9])); + qdeut = splineab(xq) * 197.3289; + standardRandom(&u, &(hazard->igraine[10])); + cstet = u*2 - 1; + assert((1.0 - std::pow(cstet,2)) >= 0); + sitet = std::sqrt(1.0 - std::pow(cstet,2)); + standardRandom(&v, &(hazard->igraine[11])); + phi = 2.0*3.141592654*v; + + bl1->p1[i] = qdeut*sitet*std::cos(phi); + bl1->p2[i] = qdeut*sitet*std::sin(phi); + bl1->p3[i] = qdeut*cstet; + } + else { + // density of composite as a gaussien in q space: + gaussianRandom(&xga); + bl1->p1[i] = xga*pf1*0.57735; + gaussianRandom(&xga); + bl1->p2[i] = xga*pf1*0.57735; + gaussianRandom(&xga); + bl1->p3[i] = xga*pf1*0.57735; + } + + bl1->eps[i] = w(bl1->p1[i],bl1->p2[i],bl1->p3[i],fmp); + // assert(isnan(bl1->eps[i]) == false); + // assert(isnan(energyTest(i)) == false); + + sp1t1 = sp1t1 + bl1->p1[i]; + sp2t1 = sp2t1 + bl1->p2[i]; + sp3t1 = sp3t1 + bl1->p3[i]; + } + + bl9->hel[bl3->ia1] = 0; + bl5->nesc[bl3->ia1] = 0; + bl1->ind2[bl3->ia1] = -1; + bl1->ind1[bl3->ia1] = 0; + bl3->x1[bl3->ia1] = -s1t1; + bl3->x2[bl3->ia1] = -s2t1; + bl3->x3[bl3->ia1] = -s3t1; + bl1->p1[bl3->ia1] = -sp1t1; + bl1->p2[bl3->ia1] = -sp2t1; + bl1->p3[bl3->ia1] = -sp3t1; + bl1->eps[bl3->ia1] = w(bl1->p1[bl3->ia1],bl1->p2[bl3->ia1],bl1->p3[bl3->ia1],fmp); + // assert(isnan(bl1->eps[bl3->ia1]) == false); + // assert(isnan(energyTest(bl3->ia1)) == false); + + // deutons + jparticip[bl3->ia1] = 1; + if(verboseLevel > 3) { + G4cout <<"Particle " << bl3->ia1-1 << " is now participant." << G4endl; + } + pnu9: // continue + // deutons + // target preparation for 1 < a < 5 (with sum of momentum =0) + if(bl3->ia2 >= 2 && bl3->ia2 <= 4) { + pnu1633: + s1t1 = 0.0; + s2t1 = 0.0; + s3t1 = 0.0; + sp1t1 = 0.0; + sp2t1 = 0.0; + sp3t1 = 0.0; + efer = 0.0; + for(G4int i = bl3->ia1+1; i <= ia; i++) { + // for(G4int i = bl3->ia1; i < ia-1; i++) { + // for(G4int i = bl3->ia1; i < ia; i++) { + bl1->ind2[i] = 1; + bl5->nesc[i] = 0; + if (i > (iz2+bl3->ia1)) { + bl1->ind2[i] = -1; + } + for(G4int j = 0; j < 7; j++) { + standardRandom(&t[j], &(hazard->ial)); + } + + t[1] = -1.0 + 2.0*t[1]; // t(2)->t[1] + t[2] = 6.283185*t[2]; // t(3)->t[2] + t[4] = -1.0 + 2.0*t[4]; // t(5)->t[4] + t[5] = 6.283185*t[5]; // t(6) -> t[5] + t1 = t[1]; // t(2)->t[1] + assert((1.0 - t1*t1) >= 0); + t2 = std::sqrt(1.0 - t1*t1); + t3 = std::cos(t[2]); //t(3)->t[2] + t4 = std::sin(t[2]); //t(3)->t[2] + t5 = t[4]; // t(5)->t[4] + assert((1.0 - t5*t5) >= 0); + t6 = std::sqrt(1.0 - t5*t5); + t7 = std::cos(t[5]); //t(6) -> t[5] + t8 = std::sin(t[5]); // t(6)->t[5] + if (ws->nosurf == 1) { + x = bl3->r2*std::pow(t[0],0.33333333); // t(1)->t[0] + y = (bl10->pf)*std::pow(t[3],0.33333333); // t(4)->t[3] + } + else { + // surface..w.s.: impulsion (sphere dure), puis r(q) + t33 = std::pow(t[6],0.33333333); // t(7)->t[6] + y = (bl10->pf)*t33; + + rr = interpolateFunction(t33); + x = rr*std::pow(t[3],0.33333333); // t(4)->t[3] + // fin surface on a redefini x et y + } + bl3->x1[i] = x*t2*t3; + bl3->x2[i] = x*t2*t4; + bl3->x3[i] = x*t1; + s1t1 = s1t1 + bl3->x1[i]; + s2t1 = s2t1 + bl3->x2[i]; + s3t1 = s3t1+bl3->x3[i]; + bl1->p1[i] = y*t6*t7; + bl1->p2[i] = y*t6*t8; + bl1->p3[i] = y*t5; + sp1t1 = sp1t1+bl1->p1[i]; + sp2t1 = sp2t1+bl1->p2[i]; + sp3t1 = sp3t1+bl1->p3[i]; + bl1->ind1[i] = 0; + bl1->eps[i] = w(bl1->p1[i],bl1->p2[i],bl1->p3[i],fmp); + // assert(isnan(bl1->eps[i]) == false); + // assert(isnan(energyTest(i)) == false); + bl9->hel[i] = 0.0; + efer = efer + bl1->eps[i] - fmp; + } + + bl9->hel[ia] = 0; + bl5->nesc[ia] = 0; + bl1->ind2[ia] = -1; + bl1->ind1[ia] = 0; + bl3->x1[ia] = -s1t1; + bl3->x2[ia] = -s2t1; + bl3->x3[ia] = -s3t1; + // assert(isnan(bl3->x3[ia]) == false); + bl1->p1[ia] = -sp1t1; + bl1->p2[ia] = -sp2t1; + bl1->p3[ia] = -sp3t1; + + assert((std::pow(bl1->p1[ia],2) + std::pow(bl1->p2[ia],2) + std::pow(bl1->p3[ia],2)) >= 0); + p_mod = std::sqrt(std::pow(bl1->p1[ia],2) + std::pow(bl1->p2[ia],2) + std::pow(bl1->p3[ia],2)); + if(p_mod > ((bl10->pf)+0.05)) { + goto pnu1633; + } + + bl1->eps[ia] = w(bl1->p1[ia],bl1->p2[ia],bl1->p3[ia],fmp); + // assert(isnan(energyTest(ia)) == false); + + efer = efer + bl1->eps[ia]-fmp; + + } //end if !(bl3->ia2 >= 2 && bl3->ia2 <= 4) + + // target preparation for a > 4 + if(bl3->ia2 > 4) { + x1_target = 0.0; + x2_target = 0.0; + x3_target = 0.0; + for(G4int i = bl3->ia1+1; i <= ia; i++) { //do 1 i=bl3->ia1+1,ia + bl5->nesc[i] = 0; + bl1->ind2[i] = 1; + if (i > (iz2+bl3->ia1)) { + bl1->ind2[i] = -1; + } + // surface ajout de t(7) surface.f avait do 6 j=2,7 ici 1,6 ? + for(G4int j = 0; j < 7; j++) { + standardRandom(&t[j], &(hazard->ial)); + } + + // pnu6: // continue + t[1] = -1.0 + 2.0*t[1]; //t(2)->t[1] + t[2] = 6.283185*t[2]; + t[4] = -1.0 + 2.0*t[4]; // t(5)->t[4] + t[5] = 6.283185*t[5]; //t(6)->t[5] + t1 = t[1]; // t(2)->t[1] + assert((1.0 - t1*t1) >= 0); + t2 = std::sqrt(1.0 - t1*t1); + t3 = std::cos(t[2]); //t(3)->t[2] + t4 = std::sin(t[2]); //t(3)->t[2] + t5 = t[4]; //t(5)->t[4] + assert((1.0 - t5*t5) >= 0); + t6 = std::sqrt(1.0 - t5*t5); + t7 = std::cos(t[5]); //t(6)->t[5] + t8 = std::sin(t[5]); // t(6)->t[5] + + if (ws->nosurf == 1) { + x = bl3->r2*std::pow(t[0],0.33333333); // t(1)->t[0] + y = bl10->pf*std::pow(t[3],0.33333333); // t(4)->t3 + } + else { + // surface..w.s.: impulsion (sphere dure), puis r(q) + t33 = std::pow(t[6],0.33333333); // t(7)->t[6] + y=bl10->pf*t33; + rr=interpolateFunction(t33); + x=rr*std::pow(t[3],0.33333333); // t(4)->t[3] + // fin surface on a redefini x et y + } + bl3->x1[i] = x*t2*t3; + bl3->x2[i] = x*t2*t4; + bl3->x3[i] = x*t1; + bl1->p1[i] = y*t6*t7; + bl1->p2[i] = y*t6*t8; + bl1->p3[i] = y*t5; + x1_target = x1_target + bl3->x1[i]; + x2_target = x2_target + bl3->x2[i]; + x3_target = x3_target + bl3->x3[i]; + bl1->ind1[i] = 0; + bl1->eps[i] = w(bl1->p1[i],bl1->p2[i],bl1->p3[i],fmp); + // assert(isnan(energyTest(i)) == false); + + bl9->hel[i] = 0.0; + efer = efer + bl1->eps[i] - fmp; + } + x1_target = x1_target/bl3->ia2; + x2_target = x2_target/bl3->ia2; + x3_target = x3_target/bl3->ia2; + } + + efrun = efrun + efer; + + // location of incident particle at point (b,z) + r22 = bl3->r2*(bl3->r2); + z = ws->bmax * (ws->bmax) - b*b; // for the wood-saxon density... + + if (z < 0.0) { + z=0.0; + } + + assert(z >= 0); + z = std::sqrt(z); + // random azimuthal direction of the impact parameter (sept 99) + + if (kindstruct->kindf7 <= 2) { + G4long testseed = hazard->igraine[13]; + // standardRandom(&tbid, &(hazard->igraine[13])); + standardRandom(&tbid, &testseed); + hazard->igraine[13] = testseed; + tbid = tbid*6.283185; + bl3->x1[1] = bl3->x1[1] + b*std::cos(tbid); //x1(1)->x1[1] + bl3->x2[1] = bl3->x2[1] + b*std::sin(tbid); //x2(1)->x2[1] + bl3->x3[1] = bl3->x3[1] - z; + // pour le ntuple des avatars: + if(varavat->kveux == 1) { + varavat->r1_in[0] = bl3->x1[1]; //r1_in(1)->r1_in[0] and x1(1)->x1[0] + varavat->r1_in[1] = bl3->x2[1]; //r1_in(2)->r1_in[1] and x1(2)->x1[1] + varavat->r1_in[2] = bl3->x3[1]; //r1_in(3)->r1_in[2] and x1(3)->x1[2] + } //endif + } + else { + if (kindstruct->kindf7 < 6) { //then ! pour les pions on laisse + //call standardRandom(tbid,iy14) + standardRandom(&tbid, &(hazard->igraine[13])); + tbid = tbid*6.283185; + y1[1] = y1[1] + b*std::cos(tbid); //y1(1)->y1[0] + y2[1] = y2[1] + b*std::sin(tbid); //y2(1)->y2[0] + y3[1] = y3[1] - z; + } + else { + // deutons + //nmiss=0.; + nmiss = 0; + xlengm=1000.0; + + for(G4int i = 1; i <= bl3->ia1; i++) { + // for(G4int i = 1; i < bl3->ia1; i++) { + // assert(isnan(ginc) == false); + assert(ginc != 0); + bl3->x3[i] = bl3->x3[i]/ginc; + // assert(isnan(bl3->x3[i]) == false); + zai2 = ws->rmaxws*(ws->rmaxws) - std::pow((b+bl3->x1[i]),2) - std::pow(bl3->x2[i],2); + if (zai2 < 0.0) { + goto pnu22; + } + ztu = -std::sqrt(zai2); + // r22 remplace par rmaxws*rmaxws et r2 par rmaxws cv correct ? + za_i = 2.0*(ws->rmaxws) + ztu; + xleng = za_i - bl3->x3[i]; + if (xleng > xlengm) { + // goto pnu21; + continue; + } + ilm = i; + xlengm = xleng; + // assert(isnan(ztu) == false); + ztouch = ztu; + // goto pnu21; + continue; + pnu22: + nmiss = nmiss + 1; + } + // pnu21: + if (nmiss == bl3->ia1) { //then + nopart = -1; + // return; + if(verboseLevel > 3) { + G4cout <<"nmiss == bl3->ia1" << G4endl; + G4cout <<"End of algorithm after pnu21." << G4endl; + } + goto pnureturn; + } + else { + zshif = bl3->x3[ilm] - ztouch; + standardRandom(&tbid, &(hazard->igraine[13])); + tbid = tbid*6.283185; + for(G4int i = 1; i <= bl3->ia1; i++) { + xxx = bl3->x1[i] + b; + bl3->x1[i] = xxx*std::cos(tbid) - bl3->x2[i]*std::sin(tbid); + bl3->x2[i] = xxx*std::sin(tbid) + bl3->x2[i]*std::cos(tbid); + bl3->x3[i] = bl3->x3[i] - zshif; + } + if (std::fabs(std::pow(bl3->x1[ilm],2)+std::pow(bl3->x2[ilm],2)+std::pow(bl3->x3[ilm],2)-ws->rmaxws*(ws->rmaxws)) > 0.01) { + if(verboseLevel > 2) { + G4cout <<"wrong position" << G4endl; + } + } + } + } + } + + // initial momentum for all type of incident particles: + xl1 = b*pinc*std::sin(tbid); + xl2 = -b*pinc*std::cos(tbid); + xl3 = 0.0; + + // transcription in the general frame of reference + // (here,=lab frame) + + be = 0.0; + ge = 1.0; + b1 = (binc - be)/(1.0 - be*binc); + b2 = -be; + assert((1.0 - b1*b1) > 0); + g1 = 1.0/std::sqrt(1.0 - b1*b1); + g2 = 1.0; + // deutons + // here for nucleons + if (kindstruct->kindf7 <= 2) { + bl1->eps[1] = g1*fmp + v0; + assert((std::pow(bl1->eps[1],2) - std::pow(fmp,2)) >= 0); + bl1->p3[1] = std::sqrt(std::pow(bl1->eps[1],2) - std::pow(fmp,2)); + // assert(isnan(energyTest(1)) == false); + } + else { + // here for pions + if (kindstruct->kindf7 < 6) { //then + q4[1] = g1*fmpi; // q4(1)->q4[0] + q3[1] = b1*q4[1]; + } + else { + // here for composite projectiles: + // the kinetic energy is below the threshold. put all + // fermi momentum to 0... projectile nucleons not on shell! + energie_in = tlab + fmpinc; + if((energie_in) <= (bl3->ia1*fmp)) { + for(G4int i = 1; i <= bl3->ia1; i++) { + bl1->eps[i] = energie_in/bl3->ia1; + bl1->p1[i] = 0.0; + bl1->p2[i] = 0.0; + bl1->p3[i] = pinc/bl3->ia1; + // assert(isnan(energyTest(i)) == false); + } + goto pnu1871; + } + // here the composit is above threshold + for(G4int i = 1; i <= bl3->ia1; i++) { //do i=1,bl3->ia1 !save e,p in the composit rest frame + eps_c[i] = bl1->eps[i]; + p3_c[i] = bl1->p3[i]; + } //enddo + + nbtest = bl3->ia1 - 1; + if(kindstruct->kindf7 == 6) { + nbtest = 2; + } + iflag = 0; + pnu1870: + sueps = 0.0; + + iflag = iflag + 1; + + for(G4int i = 1; i <= bl3->ia1; i++) { //do i=1,bl3->ia1 + tte = eps_c[i]; + bl1->eps[i] = g1*(eps_c[i] + b1*p3_c[i]); + bl1->p3[i] = g1*(b1*tte + p3_c[i]); + // assert(isnan(energyTest(i)) == false); + sueps = sueps + bl1->eps[i]; + } //enddo + + assert(sueps != 0); + cobe = (tlab + fmpinc)/sueps; + + // off shell problem for incident clusters (a.b. 2/2002) + + if(iflag == nbtest) { // too much..all momentum to 0 + for(G4int klm = 1; klm <= bl3->ia1; klm++) { //do klm=1,bl3->ia1 + eps_c[klm] = fmp; + bl1->p1[klm] = 0.0; + bl1->p2[klm] = 0.0; + p3_c[klm] = 0; + } + goto pnu1870; + } + for(G4int i = 1; i <= bl3->ia1; i++) { //do i=1,bl3->ia1 + // assert(isnan(energyTest(i)) == false); + arg = std::pow((cobe*(bl1->eps[i])),2)-pm2; + if (arg <= 0.) { //then ! put maximum momentum to 0. + i_emax = 1; // !find maximum + ener_max = bl1->eps[1]; + for(G4int klm = 2; klm <= bl3->ia1; klm++) { //do klm=2,bl3->ia1 + if(bl1->eps[klm] > ener_max) { + ener_max = bl1->eps[klm]; + i_emax = klm; + } + } + eps_c[i_emax] = fmp; + bl1->p1[i_emax] = 0.0; + bl1->p2[i_emax] = 0.0; + p3_c[i_emax] = 0.0; + + if(i_emax == bl3->ia1) { // circular permut if the last one + epsv = eps_c[bl3->ia1]; // permutation circulaire + p1v = bl1->p1[bl3->ia1]; + p2v = bl1->p2[bl3->ia1]; + p3v = p3_c[bl3->ia1]; + for(bl2->k = bl3->ia1-1; bl2->k >= 1; bl2->k = bl2->k - 1) { //do k=bl3->ia1-1,1,-1 + eps_c[bl2->k+1] = eps_c[bl2->k]; + bl1->p1[bl2->k+1] = bl1->p1[bl2->k]; + bl1->p2[bl2->k+1] = bl1->p2[bl2->k]; + p3_c[bl2->k+1] = p3_c[bl2->k]; + } + eps_c[1] = epsv; + bl1->p1[1] = p1v; + bl1->p2[1] = p2v; + p3_c[1] = p3v; // fin permut. + } + sp1t1 = 0.0; // re-compute the last one + sp2t1 = 0.0; + sp3t1 = 0.0; + for(G4int j = 1; j <= bl3->ia1-1; j++) { //do j=1,bl3->ia1-1 + sp1t1 = sp1t1 + bl1->p1[j]; + sp2t1 = sp2t1 + bl1->p2[j]; + sp3t1 = sp3t1 + p3_c[j]; + } + bl1->p1[bl3->ia1] = -sp1t1; + bl1->p2[bl3->ia1] = -sp2t1; + p3_c[bl3->ia1] = -sp3t1; + eps_c[bl3->ia1] = w(bl1->p1[bl3->ia1],bl1->p2[bl3->ia1],p3_c[bl3->ia1],fmp); + + goto pnu1870; // ..and boost all of them. + } + } + + for(G4int i = 1; i <= bl3->ia1; i++) { //do i=1,bl3->ia1 + // for(G4int i = 1; i < bl3->ia1; i++) { //do i=1,bl3->ia1 + // assert(isnan(energyTest(i)) == false); + arg = std::pow((cobe*(bl1->eps[i])),2) - pm2; + comom = std::sqrt(arg/(std::pow(bl1->eps[i],2) - pm2)); + // assert(isnan(comom) == false); + bl1->p1[i] = comom*(bl1->p1[i]); + bl1->p2[i] = comom*(bl1->p2[i]); + bl1->p3[i] = comom*(bl1->p3[i]); + bl1->eps[i] = bl1->eps[i]*cobe; + // assert(isnan(energyTest(i)) == false); + if (std::fabs(am(bl1->p1[i],bl1->p2[i],bl1->p3[i],bl1->eps[i])-fmp) > 0.01) { + if(verboseLevel > 2) { + G4cout <<"wrong correction " << i << G4endl; + } + } + } + bl1->eps[ilm] = bl1->eps[ilm] + v0; + } + } + + pnu1871: + // evaluation of the times t(a,b) + bl2->k = 0; + kcol = 0; + if (kindstruct->kindf7 <= 2) { + // modif s.vuillier tient compte propagation projectile,1e collision + // imposee pour lui (c'est une maniere de faire!!) + G4int ioldk = 0; + for(G4int i = 1; i <= ia; i++) { //do 40 i=1,ia + ioldk = bl2->k; + // bl2->k = bl2->k + 1; + // tref=ref(x1(i),x2(i),x3(i),p1(i),p2(i),p3(i),eps(i),r22) p-n04740 + // assert(isnan(energyTest(i)) == false); + tref = ref(bl3->x1[i], bl3->x2[i], bl3->x3[i], bl1->p1[i], bl1->p2[i], bl1->p3[i], bl1->eps[i], r22); + // assert(isnan(tref) == false); + if (tref > bl4->tmax5) { + goto pnu45; + } + + bl2->k = bl2->k + 1; + assert((bl2->k >= 0) && (bl2->k < BL2INDSIZE)); + bl2->crois[bl2->k]=tref; + bl2->ind[bl2->k]=i; + bl2->jnd[bl2->k]=-1; + pnu45: + i1=i-1; + if (i == 1) { + //goto pnu40; + continue; + } + // 1326 c ici on ne calcule que les G4interactions nn impliquant le projectile !!! (2/02) + if (i1 > bl3->ia1) { + i1=bl3->ia1; + } + for(G4int j = 1; j <= i1; j++) { //do 41 j=1,i1 + // no collisions before the first collision of the incident particle + time (i, j); + if (bl1->ta < 0.0) { + continue; + } + if(bl1->ta > bl4->tmax5) { + continue; + } + eij=am(bl1->p1[i]+bl1->p1[j],bl1->p2[i]+bl1->p2[j],bl1->p3[i]+bl1->p3[j],bl1->eps[i]+bl1->eps[j]); + // assert(isnan(eij) == false); + if (eij < 1925.0) { + continue; + } + isos=bl1->ind2[i]+bl1->ind2[j]; + + // assert(isnan(eij) == false); + // assert(isnan(isos) == false); + if (31.0*(bl3->rab2) > totalCrossSection(eij,0,isos)) { + continue; + } + + bl2->k = bl2->k + 1; + assert((bl2->k >= 0) && (bl2->k < BL2INDSIZE)); + if (j == 1) { + kcol = kcol + 1; + } + bl2->crois[bl2->k]=bl1->ta; + bl2->ind[bl2->k]=i; + bl2->jnd[bl2->k]=j; + } + if(verboseLevel > 3) { + if(bl2->k == (ioldk + 2)) { + if(verboseLevel > 2) { + G4cout <<"bl2->k incremented twice!" << G4endl; + } + } + } + } + } + else { + // deutons + if (kindstruct->kindf7 < 6) { //then + // here for incoming pions: + for(G4int i = bl3->ia1+1; i <= ia; i++) { //do i=ia1+1,ia + // assert(isnan(energyTest(i)) == false); + tref = ref(bl3->x1[i], bl3->x2[i], bl3->x3[i], bl1->p1[i], bl1->p2[i], bl1->p3[i], bl1->eps[i], r22); + // assert(isnan(tref) == false); + // assert(isnan(tref) == false); + if (tref < bl4->tmax5) { + bl2->k = bl2->k + 1; + assert((bl2->k >= 0) && (bl2->k < BL2INDSIZE)); + bl2->crois[bl2->k] = tref; + bl2->ind[bl2->k] = i; + bl2->jnd[bl2->k] = -1; + } + } + new2(y1[1], y2[1], y3[1], q1[1], q2[1], q3[1], q4[1], 1, 0); + + // modif a.b. 21/06/2002: should check at least one valid collision + // 1361 c with incoming pion. + // 1362 c kcol=1 + if(bl2->k != 0) { + kcol = 1; + } + } + else { + for(G4int i = 1; i <= bl3->ia1; i++) { //do 38 i=1,ia1 + bl5->nesc[i] = 1; + if (i != ilm) { + goto pnu36; + } + // assert(isnan(energyTest(i)) == false); + tref = ref(bl3->x1[i], bl3->x2[i], bl3->x3[i], bl1->p1[i], bl1->p2[i], bl1->p3[i], bl1->eps[i], r22); + // assert(isnan(tref) == false); + if(verboseLevel > 3) { + if(tref < 0.0) { + if(verboseLevel > 2) { + G4cout <<"G4Incl: Reflection time < 0! (line 2579)" << G4endl; + } + } + } + bl5->nesc[i] = 0; + npproj[i] = 0; + goto pnu37; + pnu36: + t1 = bl3->x1[i]*(bl1->p1[i])+bl3->x2[i]*(bl1->p2[i])+bl3->x3[i]*(bl1->p3[i]); + t2 = bl1->p1[i]*(bl1->p1[i])+bl1->p2[i]*(bl1->p2[i])+bl1->p3[i]*(bl1->p3[i]); + assert(t2 != 0); + t3 = t1/t2; + t4 = bl3->x1[i]*(bl3->x1[i])+bl3->x2[i]*(bl3->x2[i])+bl3->x3[i]*(bl3->x3[i]); + // 1379 c incoming nucleons enter potential at maximum radius (modif. 13/06/01) + t5 = t3*t3 + ((ws->rmaxws)*(ws->rmaxws) - t4)/t2; + if(verboseLevel > 3) { + G4cout <<"x1 = " << bl3->x1[i] <<" x2 = " << bl3->x2[i] <<" x3 = " << bl3->x3[i] << G4endl; + G4cout <<"t1 = " << t1 << G4endl; + G4cout <<"t2 = " << t2 << G4endl; + G4cout <<"t3 = " << t3 << G4endl; + G4cout <<"t4 = " << t4 << G4endl; + G4cout <<"rmaxws = " << ws->rmaxws << G4endl; + G4cout <<"t5 = " << t5 << G4endl; + } + if (t5 < 0.) { + continue; + } + tref = (-1.0*t3 - std::sqrt(t5))*(bl1->eps[i]); + // assert(isnan(tref) == false); + if (tref > bl4->tmax5) { + continue; + } + npproj[i] = 1; + pnu37: + bl2->k = bl2->k + 1; + assert((bl2->k >= 0) && (bl2->k < BL2INDSIZE)); + bl2->crois[bl2->k] = tref; + bl2->ind[bl2->k] = i; + bl2->jnd[bl2->k] = -1; + } + kcol = 1; + + // for(G4int i = bl3->ia1+1; i < ia; i++) { //do 39 i=ia1+1,ia + for(G4int i = bl3->ia1+1; i <= ia; i++) { //do 39 i=ia1+1,ia + npproj[i] = 0; + // assert(isnan(energyTest(i)) == false); + tref = ref(bl3->x1[i], bl3->x2[i], bl3->x3[i], bl1->p1[i], bl1->p2[i], bl1->p3[i], bl1->eps[i], r22); // line 2609 + // assert(isnan(tref) == false); + if(verboseLevel > 3) { + if(tref < 0.0) { + G4cout <<"G4Incl: Reflection time < 0! (line 2609)" << G4endl; + } + } + + if (tref < bl4->tmax5) { //then + bl2->k = bl2->k + 1; + bl2->crois[bl2->k]=tref; + bl2->ind[bl2->k]=i; + bl2->jnd[bl2->k]=-1; + } //endif + + time (i, ilm); + if (bl1->ta < 0.) { + continue; + } + if (bl1->ta > bl4->tmax5) { + continue; + } + eij=am(bl1->p1[i]+bl1->p1[ilm],bl1->p2[i]+bl1->p2[ilm],bl1->p3[i]+bl1->p3[ilm],bl1->eps[i]+bl1->eps[ilm]); + // assert(isnan(eij) == false); + if (eij < 1925.0) { + continue; + } + isos=bl1->ind2[i]+bl1->ind2[ilm]; + // assert(isnan(eij) == false); + // assert(isnan(isos) == false); + if (31.*(bl3->rab2) > totalCrossSection(eij,0,isos)) { + continue; + } + bl2->k = bl2->k + 1; + kcol=kcol+1; + bl2->crois[bl2->k]=bl1->ta; + bl2->ind[bl2->k]=i; + bl2->jnd[bl2->k]=ilm; + } + } + } + + // dumpBl3(dumpOut); + + if(verboseLevel > 3) { + G4cout <<"Variables after time evaluation:" << G4endl; + + G4cout <<"bl3->ia1 + bl3->ia2 = ia " << G4endl; + G4cout << bl3->ia1 << " " << bl3->ia2 << " " << ia << G4endl; + G4cout <<"B11" << G4endl; + + for(G4int idebugtest = 0; idebugtest <= bl2->k; idebugtest++) { + G4cout <<"index = " << idebugtest << " ind1 = " << bl1->ind1[idebugtest] << " ind2 = " << bl1->ind2[idebugtest] << " p1 = " << bl1->p1[idebugtest] << " p2 = " << bl1->p2[idebugtest] << " p3 = " << bl1->p3[idebugtest] << " bl1->eps = " << bl1->eps[idebugtest] << G4endl; + } + + G4cout <<"Bl2" << G4endl; + for(G4int idebugtest = 0; idebugtest <= bl2->k; idebugtest++) { + G4cout <<"index = " << idebugtest << " ind = " << bl2->ind[idebugtest] << " jnd = " << bl2->jnd[idebugtest] << " crois = " << bl2->crois[idebugtest] << G4endl; + } + + G4cout <<"jparticip[i]" << G4endl; + for(G4int idebugtest = 0; idebugtest < 300; idebugtest++) { + G4cout <<" " << jparticip[idebugtest]; + } + G4cout << G4endl; + } + + + // deutons + if (kcol != 0) { + if(verboseLevel > 3) { + G4cout <<"After time evaluation: kcol != 0!" << G4endl; + } + goto pnu48; + } + nopart = -1; + // Pour eviter renvoi des resultats du run precedent cv 7/7/98 + iarem = bl3->ia2; + izrem = iz2; + esrem = 0.0; + erecrem = 0.0; + + if(verboseLevel > 3) { + G4cout <<"kcol == 0. No collisions..." << G4endl; + G4cout <<"End of algorithm because kcol == 0." << G4endl; + G4cout <<"kcol = " << kcol << G4endl; + G4cout <<"Return after pnu39." << G4endl; + } + // fin ajout cv + goto pnureturn; + + // Initialization at the beginning of the run + pnu48: + if(verboseLevel > 3) { + G4cout <<"Beginning a run..." << G4endl; + } + timi = 0.0; + tim = 0.0; + ncol = 0; + + // compteur des collisions a deux corps (call collis acceptes par pauli) + ncol_2c = 0; + + //C npion=0; + mrnn = 0; + mrnd = 0; + mrdd = 0; + mrdn = 0; + mrdp = 0; + mrpd = 0; + mcdd = 0; + mpaul2 = 0; + mpaul1 = 0; + + // approx. (not considering escaping protons of incident clusters) 11/03 a.b. + itch = iz1 + iz2 - 1; + for(G4int i = 1; i <= ia; i++) { //do 47 i=1,ia + bl5->tlg[i] = 0.0; + nc[i] = 0; + } + itt = 1; + + // tableau des energies a l'initialisation + if(varavat->kveux == 1) { + for(G4int i = bl3->ia1+1; i <= ia; i++) { + varavat->epsd[i] = bl1->eps[i]; + } + iflag20 = 0; + iflag40 = 0; + iflag60 = 0; + } + + // search for the smallest positive t(a,b) + // pour tests, =0 G4interdit les reflexions avant un avatar du projectile, + // =1 comme avant (reflexions autorisees). (a.b. 3/2002) + irst_avatar = 1; + + if(verboseLevel > 3) { + G4cout <<"Now arriving to label pnu449." << G4endl; + } + pnu449: + if(verboseLevel > 3) { + G4cout <<"Now at 449" << G4endl; + G4cout <<"G4Incl: Now at label pnu449." << G4endl; + } + next = 1; + indic[next] = 1; + + pnu44: + if(verboseLevel > 3) { + G4cout <<"Now at 44" << G4endl; + G4cout <<"Starting a new loop at pnu44..." << G4endl; + } + if(next == 0) { + if(verboseLevel > 3) { + G4cout <<"next == 0. Returning to label pnu449." << G4endl; + G4cout <<"next == 0" << G4endl; + } + goto pnu449; + } + + idep = indic[next] + 1; + tau = bl2->crois[idep-1]; + + if(idep > bl2->k) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: idep > bl2->k. Going to pnu448." << G4endl; + } + goto pnu448; + } + for(G4int i = idep; i <= bl2->k; i++) { //do 42 i=idep,k + if (bl2->crois[i] > tau) { + continue; + } + tau = bl2->crois[i]; + next = next + 1; + indic[next] = i; + } + + // assert(isnan(tau) == false); + if(verboseLevel > 3) { + G4cout <<"next = " << next << G4endl; + } + pnu448: + imin = indic[next]; + bl9->l1 = bl2->ind[imin]; //NOTE: l1 changed to bl9->l1. + bl9->l2 = bl2->jnd[imin]; //NOTE: l2 changed to bl9->l2. + + // test le 20/3/2003: tue sinon le dernier avatar? + if (bl2->k == 0) { + if(verboseLevel > 2) { + G4cout <<"k == 0. Going to the end of the avatar." << G4endl; + } + goto pnu230; + } + bl2->k = bl2->k - 1; // bugfix k belongs to struct bl2! + next = next - 1; + + // correction s.vuillier 25/1/96 decalage temps correct + if (imin > bl2->k) { + goto pnu46; + } + + for(G4int i = imin; i <= bl2->k; i++) { //do 43 i=imin,k + bl2->crois[i] = bl2->crois[i+1]; + bl2->ind[i] = bl2->ind[i+1]; + bl2->jnd[i] = bl2->jnd[i+1]; + } + pnu46: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu46." << G4endl; + } + tim = timi + tau; + + // tableau des energies a t=20,40,60 fm/c + if(varavat->kveux == 1) { + if(iflag20 == 0 && tim >= 20.0) { + iflag20 = 1; + for(G4int i = 1; i <= ia; i++) { + if(bl5->nesc[i] == 0) { + if(jparticip[i] == 1) { + varavat->eps2[i] = bl1->eps[i]; + } + else { + varavat->eps2[i] = 0.0; + } + } + else { + varavat->eps2[i] = 0.; + } + } + } + + if(iflag40 == 0 && tim >= 40.0) { + iflag40 = 1; + for(G4int i = 1; i <= ia; i++) { + if(bl5->nesc[i] == 0) { + if(jparticip[i] == 1) { + varavat->eps4[i] = bl1->eps[i]; + } + else { + varavat->eps4[i] = 0.0; + } + } + else { + varavat->eps4[i] = 0.0; + } + } + } + + if(iflag60 == 0 && tim >= 60.) { + iflag60=1; + for(G4int i = 1; i <= ia; i++) { + if(bl5->nesc[i] == 0) { + if(jparticip[i] == 1) { + varavat->eps6[i] = bl1->eps[i]; + } + else { + varavat->eps6[i] = 0.0; + } + } + else { + varavat->eps6[i] = 0.0; + } + } + } + } + + // modif: pas de reflexions avant au moins un avatar du (des) nucleon incident + // celui-ci ne peut etre qu'une collision nn (ou pin) + + if((irst_avatar == 0) && (bl9->l2 == -1)) { + if(verboseLevel > 3) { + G4cout <<"Interaction type: reflection (l2 = " << bl9->l2 << "). No first interaction with a participant yet." << G4endl; + } + goto pnu44; + } + + irst_avatar = irst_avatar+1; + + if (tim < temfin) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: tim < temfin. Going to pnu49 (line 2886)" << G4endl; + } + goto pnu49; // line 2886 + } + + goto pnu255; + pnu49: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu49. " << G4endl; + } + + if (bl2->k == 0) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: bl2->k == 0. Going to pnu255." << G4endl; + } + goto pnu255; + } + // l1 va a la surface du noyau: + if (bl9->l2 == -1) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: l2 == -1. Going to pnu220." << G4endl; + } + goto pnu220; + } + + if((k4-1) <= 0) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: (k4 - 1) <= 0. Going to pnu803." << G4endl; + } + goto pnu803; + } + if((k4-1) > 0) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: (k4 - 1) > 0. Going to pnu830." << G4endl; + } + goto pnu830; + } + + // l1 est un delta: + pnu830: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu830." << G4endl; + } + + if(bl9->l2 == 0) { + goto pnu220; + } + // interaction pi(l1-ia)-nucleon(l2) + if(bl9->l1 > ia) { // line 2916 + if(verboseLevel > 3) { + G4cout <<"G4Incl: l1 > ia (line 2916)" << G4endl; + } + goto pnu801; + } + pnu803: + // pas de collision entre 2 non participants: + if(jparticip[bl9->l1] == 0 && jparticip[bl9->l2] == 0) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: both particles are spectators. No collision. " << G4endl; + } + goto pnu44; + } + + // parameters for the next colliding pair + // assert(isnan(energyTest(l1)) == false); + // assert(isnan(energyTest(l2)) == false); + t[9] = bl1->eps[bl9->l1] + bl1->eps[bl9->l2]; //t(10)->t[9] + t0 = 1.0/t[9]; // t(10)->t[9] + b1 = (bl1->p1[bl9->l1] + bl1->p1[bl9->l2])*t0; + b2 = (bl1->p2[bl9->l1] + bl1->p2[bl9->l2])*t0; + b3 = (bl1->p3[bl9->l1] + bl1->p3[bl9->l2])*t0; + s = (1.0 - b1*b1 - b2*b2 - b3*b3)*t[9]*t[9]; //t(10)->t[9] + sq = std::sqrt(s); + + if(sq < 1925.5) { + if(verboseLevel > 3) { + G4cout <<"sq < 1925.5" << G4endl; + G4cout <<"Particles: l1 = " << bl9->l1 << " l2 = " << bl9->l2 << G4endl; + G4cout <<"eps[bl9->l1] = " << bl1->eps[bl9->l1] << " eps[bl9->l2] = " << bl1->eps[bl9->l2] << G4endl; + G4cout <<"p1[bl9->l1] = " << bl1->p1[bl9->l1] << " p1[bl9->l2] = " << bl1->p1[bl9->l2] << G4endl; + G4cout <<"p2[bl9->l1] = " << bl1->p2[bl9->l1] << " p2[bl9->l2] = " << bl1->p2[bl9->l2] << G4endl; + G4cout <<"p3[bl9->l1] = " << bl1->p3[bl9->l1] << " p3[bl9->l2] = " << bl1->p3[bl9->l2] << G4endl; + G4cout <<"sq = " << sq << G4endl; + } + goto pnu44; + } + + assert(bl1->eps[bl9->l1] != 0); + bl1->ta = tau/bl1->eps[bl9->l1]; + x1l1 = bl3->x1[bl9->l1] + bl1->p1[bl9->l1]*(bl1->ta); + x2l1 = bl3->x2[bl9->l1] + bl1->p2[bl9->l1]*(bl1->ta); + x3l1 = bl3->x3[bl9->l1] + bl1->p3[bl9->l1]*(bl1->ta); + + assert(bl1->eps[bl9->l2] != 0); + bl1->ta = tau/bl1->eps[bl9->l2]; + x1l2 = bl3->x1[bl9->l2] + bl1->p1[bl9->l2]*(bl1->ta); + x2l2 = bl3->x2[bl9->l2] + bl1->p2[bl9->l2]*(bl1->ta); + x3l2 = bl3->x3[bl9->l2] + bl1->p3[bl9->l2]*(bl1->ta); + + // test on the minimum distance of approach + t[10] = x1l1 - x1l2; //t(11)->t[10] + t[11] = x2l1 - x2l2; //t(12)->t[11] + t[12] = x3l1 - x3l2; //t(13)->t[12] + t[13] = t[10]*t[10] + t[11]*t[11] + t[12]*t[12]; //t(N)->t[N-1] + t[14] = b1*t[10] + b2*t[11] + b3*t[12]; //t(N)->t[N-1] + t[15] = b1*b1 + b2*b2 + b3*b3; //t(16)->t[15] + bb2 = t[13] + t[14]*t[14]/(1.0 - t[15]); //t(N)->t[N-1] + + if(verboseLevel > 3) { + G4cout <<"Minimum dist. of approach tested..." << G4endl; + } + + // Replaced goto structure: + // if (k3 == 1) go to 260 + // if (k4 == 0) go to 260 + mg=bl1->ind1[bl9->l1]+bl1->ind1[bl9->l2]; + if((k3 != 1) && (k4 != 0) && (mg == 1)) { + isos=bl1->ind2[bl9->l1]+bl1->ind2[bl9->l2]; + // if (mg != 1) go to 260 + ldel = bl9->l2; + if(mg-bl1->ind1[bl9->l1] == 0) { + ldel = bl9->l1; + } + // assert(isnan(energyTest(ldel)) == false); + bl6->xx10 = std::sqrt(std::pow(bl1->eps[ldel],2) - std::pow(bl1->p1[ldel],2) - std::pow(bl1->p2[ldel],2) - std::pow(bl1->p3[ldel],2)); + bl6->isa = bl1->ind2[ldel]; + // assert(isnan(sq) == false); + // assert(isnan(mg) == false); + // assert(isnan(isos) == false); + bmax2 = totalCrossSection(sq,mg,isos)/31.415926; + if (k5 == 0 && mg != 0) { + bmax2 = bmax2 - lowEnergy(sq,mg,isos)/31.415926; + } + // go to 261 + } + else { + // assert(isnan(sq) == false); + // assert(isnan(mg) == false); + // assert(isnan(isos) == false); + bmax2 = totalCrossSection(sq,mg,isos)/31.41592; + } + + if (bb2 < bmax2) { + goto pnu220; + } + if (bl2->k == 0) { + goto pnu230; + } + + if(verboseLevel > 3) { + G4cout <<"bb2 >= bmax2 or bl2->k == 0" << G4endl; + } + goto pnu44; + // loop while((bb2 >= bmax2) && (k != 0)) (PK) + // evaluation of the positions at time = tim + pnu220: + timi = tim; + if(verboseLevel > 3) { + G4cout <<"Evaluating positions at time = tim" << G4endl; + G4cout <<"tim = " << tim << G4endl; + } + +// dumpSaxw(dumpOut); +// dumpBl1(dumpOut); +// dumpBl2(dumpOut); +// dumpBl3(dumpOut); + + if(varavat->kveux == 1) { //then + iavat = iavat + 1; + varavat->timeavat[iavat] = tim; + varavat->l1avat[iavat] = bl9->l1; + varavat->l2avat[iavat] = bl9->l2; + varavat->energyavat[iavat] = sq; + + if(bl9->l1 <= ia) { + varavat->jpartl1[iavat] = jparticip[bl9->l1]; + } + else { + varavat->jpartl1[iavat] = 0; + } + + if(bl9->l2 > 0) { + varavat->jpartl2[iavat] = jparticip[bl9->l2]; + } + else { + varavat->jpartl2[iavat] = 0; + } + } + + // gel des nucleons non participants sur le premier avatar (nn)=(l1,1) + if (irst_avatar == 1) { + for(G4int i = 1; i <= bl9->l1; i = i + bl9->l1 - 1) { // bugfix! + assert(bl1->eps[i] != 0); + // assert(isnan(energyTest(i)) == false); + bl1->ta = tau/bl1->eps[i]; + bl3->x1[i] = bl3->x1[i] + bl1->p1[i]*(bl1->ta); + bl3->x2[i] = bl3->x2[i] + bl1->p2[i]*(bl1->ta); + bl3->x3[i] = bl3->x3[i] + bl1->p3[i]*(bl1->ta); + if(verboseLevel > 3) { + G4cout <<"G4Incl: i = " << G4endl; + } + } + for(G4int i = 1; i <= bl2->k; i++) { + bl2->crois[i] = bl2->crois[i] + tau; + } + } + else { + for(G4int i = 1; i <= ia; i++) { + // assert(isnan(energyTest(i)) == false); + assert(bl1->eps[i] != 0); + bl1->ta = tau/bl1->eps[i]; + bl3->x1[i] = bl3->x1[i] + bl1->p1[i]*(bl1->ta); + bl3->x2[i] = bl3->x2[i] + bl1->p2[i]*(bl1->ta); + bl3->x3[i] = bl3->x3[i] + bl1->p3[i]*(bl1->ta); + } + } + + // if(npion != 0) { + if(npion > 0) { + for(G4int i = 1; i <= npion; i++) { + bl1->ta = tau/q4[i]; + y1[i] = y1[i] + q1[i]*(bl1->ta); + y2[i] = y2[i] + q2[i]*(bl1->ta); + y3[i] = y3[i] + q3[i]*(bl1->ta); + } + } + + if(bl9->l2 == 0) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: l2 == 0. Going to pnu805." << G4endl; + } + goto pnu805; + } + // Candidate: if(l2!=0)... + + // reflexions sur le potentiel, sortie eventuelle de la particule: + if (bl9->l2 == -1) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: l2 == -1. Going to pnu600." << G4endl; + } + goto pnu600; + } + + if(bl9->l1 > ia) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: l1 > ia. Going to pnu831." << G4endl; + } + goto pnu831; + } + + // collision of particles l1 and l2 + if(verboseLevel > 3) { + G4cout <<"Particles l1 and l2 collide!" << G4endl; + } + + ich1 = bl1->ind1[bl9->l1]; + ich2 = bl1->ind1[bl9->l2]; + ich3 = bl1->ind2[bl9->l1]; + ich4 = bl1->ind2[bl9->l2]; + // assert(isnan(energyTest(l1)) == false); + // assert(isnan(energyTest(l2)) == false); + aml1 = std::sqrt(std::pow(bl1->eps[bl9->l1],2) - std::pow(bl1->p1[bl9->l1],2) - std::pow(bl1->p2[bl9->l1],2) - std::pow(bl1->p3[bl9->l1],2)); + aml2 = std::sqrt(std::pow(bl1->eps[bl9->l2],2) - std::pow(bl1->p1[bl9->l2],2) - std::pow(bl1->p2[bl9->l2],2) - std::pow(bl1->p3[bl9->l2],2)); + gl1 = bl1->eps[bl9->l1]/aml1; + gl2 = bl1->eps[bl9->l2]/aml2; + // l-conservation + if (k6 == 1) { + t[30] = (aml1*(bl3->x1[bl9->l1]) + aml2*(bl3->x1[bl9->l2]))/(aml1 + aml2); //t(31)->t[30] + t[31] = (aml1*(bl3->x2[bl9->l1]) + aml2*(bl3->x2[bl9->l2]))/(aml1 + aml2); //t(32)->t[31] + t[32] = (aml1*(bl3->x3[bl9->l1]) + aml2*(bl3->x3[bl9->l2]))/(aml1 + aml2); //t(33)->t[32] + tt31 = bl3->x1[bl9->l1] - bl3->x1[bl9->l2]; + tt32 = bl3->x2[bl9->l1] - bl3->x2[bl9->l2]; + tt33 = bl3->x3[bl9->l1] - bl3->x3[bl9->l2]; + t[33] = (aml2*(bl1->p1[bl9->l1]) - aml1*(bl1->p1[bl9->l2]))/(aml1 + aml2); //t(34)->t[33] + t[34] = (aml2*(bl1->p2[bl9->l1]) - aml1*(bl1->p2[bl9->l2]))/(aml1 + aml2); //t(35)->t[34] + t[35] = (aml2*(bl1->p3[bl9->l1]) - aml1*(bl1->p3[bl9->l2]))/(aml1 + aml2); //t(36)->t[35] + tt34 = bl1->p1[bl9->l1] + bl1->p1[bl9->l2]; + tt35 = bl1->p2[bl9->l1] + bl1->p2[bl9->l2]; + tt36 = bl1->p3[bl9->l1] + bl1->p3[bl9->l2]; + } + + // l-conservation + t[20] = bl1->p1[bl9->l1]; //t(21)->t[20] + t[21] = bl1->p2[bl9->l1]; //t(22)->t[21] + t[22] = bl1->p3[bl9->l1]; //t(23)->t[22] + t[23] = bl1->eps[bl9->l1]; //t(24)->t[23] + t[24] = bl1->p1[bl9->l2]; //t(25)->t[24] + t[25] = bl1->p2[bl9->l2]; //t(26)->t[25] + t[26] = bl1->p3[bl9->l2]; //t(27)->t[26] + t[27] = bl1->eps[bl9->l2]; //t(28)->t[27] + + // info delta ou nucleon: + if(varavat->kveux == 1) { + varavat->del1avat[iavat] = bl1->ind1[bl9->l1]; + varavat->del2avat[iavat] = bl1->ind1[bl9->l2]; + } + + minus_b1 = -1.0*b1; + minus_b2 = -1.0*b2; + minus_b3 = -1.0*b3; + loren(&(bl1->p1[bl9->l1]), &(bl1->p2[bl9->l1]), &(bl1->p3[bl9->l1]), &minus_b1, &minus_b2, &minus_b3, &(bl1->eps[bl9->l1])); + loren(&(bl1->p1[bl9->l2]), &(bl1->p2[bl9->l2]), &(bl1->p3[bl9->l2]), &minus_b1, &minus_b2, &minus_b3, &(bl1->eps[bl9->l2])); + + if(verboseLevel > 3) { + G4cout <<"Calling collis..." << G4endl; + G4cout <<"Energy eps[bl9->l1] = " << bl1->eps[bl9->l1] << G4endl; + G4cout <<"Momentum: p1 = " << bl1->p1[bl9->l1] << " p2 = " << bl1->p2[bl9->l1] << " p3 = " << bl1->p3[bl9->l1] << G4endl; + G4cout <<"Energy eps[bl9->l2] = " << bl1->eps[bl9->l2] << G4endl; + G4cout <<"Momentum: p1 = " << bl1->p1[bl9->l2] << " p2 = " << bl1->p2[bl9->l2] << " p3 = " << bl1->p3[bl9->l2] << G4endl; + } + // assert(isnan(energyTest(l1)) == false); + // assert(isnan(energyTest(l2)) == false); +// bl9->l1 = l1; +// bl9->l2 = l2; + collis(&(bl1->p1[bl9->l1]), &(bl1->p2[bl9->l1]), &(bl1->p3[bl9->l1]), + &(bl1->eps[bl9->l1]), &(bl1->p1[bl9->l2]), &(bl1->p2[bl9->l2]), &(bl1->p3[bl9->l2]), &(bl1->eps[bl9->l2]), + &(t[11]), &(t[12]), &(t[13]), &(t[14]), &np, &ip, &k2, &k3, &k4, &k5, + &(bl1->ind1[bl9->l1]), &(bl1->ind1[bl9->l2]), &(bl1->ind2[bl9->l1]), &(bl1->ind2[bl9->l2])); +// l1 = bl9->l1; +// l2 = bl9->l2; + // assert(isnan(energyTest(l1)) == false); + // assert(isnan(energyTest(l2)) == false); + if(verboseLevel > 3) { + G4cout <<"End of collis call" << G4endl; + G4cout <<"Energy eps[bl9->l1] = " << bl1->eps[bl9->l1] << G4endl; + G4cout <<"Energy eps[bl9->l2] = " << bl1->eps[bl9->l2] << G4endl; + } + + if(verboseLevel > 3) { + G4cout <<"Variables after collis call: "<< G4endl; + G4cout <<"bl1->p1[" << bl9->l1 <<"] = " << bl1->p1[bl9->l1] <<" bl1->p2[" << bl9->l1 <<"] = " << bl1->p2[bl9->l1] <<" bl1->p3[" << bl9->l1 <<"] = " << bl1->p3[bl9->l1] <<" bl1->eps[" << bl9->l1 <<"] = " << bl1->eps[bl9->l1] << G4endl; + G4cout <<"bl1->p1[" << bl9->l2 <<"] = " << bl1->p1[bl9->l2] <<" bl2->p2[" << bl9->l2 <<"] = " << bl1->p2[bl9->l2] <<" bl2->p3[" << bl9->l2 <<"] = " << bl1->p3[bl9->l2] <<" bl1->eps[" << bl9->l2 <<"] = " << bl1->eps[bl9->l2] << G4endl; + } + + loren(&(bl1->p1[bl9->l1]), &(bl1->p2[bl9->l1]), &(bl1->p3[bl9->l1]), &b1, &b2, &b3, &(bl1->eps[bl9->l1])); + loren(&(bl1->p1[bl9->l2]), &(bl1->p2[bl9->l2]), &(bl1->p3[bl9->l2]), &b1, &b2, &b3, &(bl1->eps[bl9->l2])); + + if (bl1->ind1[bl9->l1] == 1) { // bugfix 1 -> 0 + goto pnu243; + } + xbl1 = pauliBlocking(bl9->l1, rbl, pbl); + standardRandom(&rndm,&(hazard->igraine[10])); + if (rndm > (1.0 - xbl1)) { + goto pnu248; + } + pnu243: + if (bl1->ind1[bl9->l2] == 1) { // bugfix 1 -> 0 + goto pnu241; + } + xbl2 = pauliBlocking(bl9->l2, rbl, pbl); + standardRandom(&rndm,&(hazard->igraine[10])); + if (rndm > (1.0 - xbl2)) { + goto pnu248; + } + goto pnu241; + pnu248: + if(verboseLevel > 3) { + G4cout <<"Pauli blocked transition!" << G4endl; + } + + mpaul1 = mpaul1 + 1; + if(varavat->kveux == 1) { + varavat->bloc_paul[iavat] = 1; + } + // restitution de l1 et l2 si rejet de la col. par pauli: + // assert(isnan(energyTest(l1)) == false); + // assert(isnan(energyTest(l2)) == false); + bl1->p1[bl9->l1] = t[20]; //t(21)->t[20] + bl1->p2[bl9->l1] = t[21]; //t(22)->t[21] + bl1->p3[bl9->l1] = t[22]; //t(23)->t[22] + bl1->eps[bl9->l1] = t[23]; //t(24)->t[23] + bl1->p1[bl9->l2] = t[24]; //t(25)->t[24] + bl1->p2[bl9->l2] = t[25]; //t(26)->t[25] + bl1->p3[bl9->l2] = t[26]; //t(27)->t[26] + bl1->eps[bl9->l2] = t[27]; //t(28)->t[27] + bl1->ind1[bl9->l1] = ich1; + bl1->ind1[bl9->l2] = ich2; + bl1->ind2[bl9->l1] = ich3; + bl1->ind2[bl9->l2] = ich4; + // assert(isnan(energyTest(l1)) == false); + // assert(isnan(energyTest(l2)) == false); + + if (bl2->k == 0) { + goto pnu230; + } + for(G4int i = 1; i <= bl2->k; i++) { + bl2->crois[i] = bl2->crois[i] - tau; + } + + // pour le temps de calcul (a.b. 02/2002) + if(verboseLevel > 3) { + G4cout <<"G4Incl: bl2->k != 0" << G4endl; + } + goto pnu44; + + pnu241: + + // la premiere collision a deux corps ne peut pas baisser l'energie + // du nucleon de recul (bloque par pauli dans un noyau cible froid). + // (ici, toujours l2 < l1) + ncol_2c = ncol_2c + 1; + if(ncol_2c == 1) { + for (G4int icomp = 1; icomp <= bl3->ia1; icomp++) { + // test on the first collision modified 4/07/2001 for direct and exchange. + if(icomp == bl9->l1 || icomp == bl9->l2) { + xavant = min(t[23],t[27]); //t(24)->t[23], t(28)->t[27] + xapres = min(bl1->eps[bl9->l1],bl1->eps[bl9->l2]); + if(xapres <= xavant) { + if(varavat->kveux == 1) { + varavat->bloc_cdpp[iavat] = 1; + } + goto pnu248; + } + } + } + + // pour le ntuple des avatars: + if(varavat->kveux == 1) { //then + varavat->r1_first_avat[0] = bl3->x1[1]; //(N)->[N-1] + varavat->r1_first_avat[1] = bl3->x2[1]; //(N)->[N-1] + varavat->r1_first_avat[2] = bl3->x3[1]; //(N)->[N-1] + } //endif + } + else { + // les collisions suivantes ne penvent conduire a un noyau de a nucleons + // sous l'energie de fermi et dans une config. d'energie inferieure a + // efer-(ia2-nbalttf)*tf). + egs = 0.0; + nbalttf = 0; + // for(G4int i = 1; i <= ia-1; i++) { + for(G4int i = 1; i <= ia; i++) { + if(bl5->nesc[i] == 0) { + if(std::sqrt(std::pow(bl1->p1[i],2)+std::pow(bl1->p2[i],2)+std::pow(bl1->p3[i],2)) < bl10->pf) { + nbalttf = nbalttf + 1; + egs = egs + bl1->eps[i] - fmp; + } + } + } + + if(egs < (efer-(bl3->ia2-nbalttf)*tf)) { + if(varavat->kveux == 1) { + varavat->bloc_cdpp[iavat] = 1; + } + goto pnu248; + } + } + + if(varavat->kveux == 1) { + varavat->bloc_cdpp[iavat] = 0; + varavat->bloc_paul[iavat] = 0; + } + + jparticip[bl9->l1] = 1; + jparticip[bl9->l2] = 1; + if(verboseLevel > 3) { + G4cout <<"Particle " << bl9->l1 << " is now participant." << G4endl; + G4cout <<"Particle " << bl9->l2 << " is now participant." << G4endl; + } + + if (ws->nosurf <= 0) { + // surface + pppp = std::sqrt(std::pow(bl1->p1[bl9->l1],2) + std::pow(bl1->p2[bl9->l1],2) + std::pow(bl1->p3[bl9->l1],2)); + rrrr = std::sqrt(std::pow(bl3->x1[bl9->l1],2) + std::pow(bl3->x2[bl9->l1],2) + std::pow(bl3->x3[bl9->l1],2)); + if (pppp <= bl10->pf) { + xv = pppp/bl10->pf; + rcorr = interpolateFunction(xv); + if (rrrr > rcorr) { + bl3->x1[bl9->l1] = bl3->x1[bl9->l1]*rcorr/rrrr; + bl3->x2[bl9->l1] = bl3->x2[bl9->l1]*rcorr/rrrr; + bl3->x3[bl9->l1] = bl3->x3[bl9->l1]*rcorr/rrrr; + } + } + pppp = std::sqrt(std::pow(bl1->p1[bl9->l2],2) + std::pow(bl1->p2[bl9->l2],2) + std::pow(bl1->p3[bl9->l2],2)); + rrrr = std::sqrt(std::pow(bl3->x1[bl9->l2],2) + std::pow(bl3->x2[bl9->l2],2) + std::pow(bl3->x3[bl9->l2],2)); + if (pppp <= bl10->pf) { + xv = pppp/bl10->pf; + rcorr = interpolateFunction(xv); + if (rrrr > rcorr) { + bl3->x1[bl9->l2] = bl3->x1[bl9->l2]*rcorr/rrrr; + bl3->x2[bl9->l2] = bl3->x2[bl9->l2]*rcorr/rrrr; + bl3->x3[bl9->l2] = bl3->x3[bl9->l2]*rcorr/rrrr; + } + } + } + + if (np == 0) { + goto pnu240; + } + + npion = npion + 1; + loren(&(t[11]), &(t[12]), &(t[13]), &b1, &b2, &b3, &(t[14])); //t(N)->t[N-1] + q1[npion] = t[11]; //t(12)->t[11] + q2[npion] = t[12]; //t(13)->t[12] + q3[npion] = t[13]; //t(14)->t[13] + q4[npion] = t[14]; //t(15)->t[14] + pnu240: + ncol = ncol + 1; + if (bl9->l2 != 1) { + goto pnu870; + } + + // critere pour la leading particle: avant impulsion longitudinale max l=1 + // change en fevrier 2002: leading part. = energie totale max (l=1) + if (bl1->p3[bl9->l2] > bl1->p3[bl9->l1]) { + goto pnu870; + } + + // attention, il faut mieux faire et selectionner la plus grande energie + // des particules participantes (jparticip()=1) et dans le noyau (nesc()=0)! + + xr1 = bl1->p1[bl9->l1]; + xr2 = bl1->p2[bl9->l1]; + xr3 = bl1->p3[bl9->l1]; + xr4 = bl1->eps[bl9->l1]; + xr5 = bl3->x1[bl9->l1]; + xr6 = bl3->x2[bl9->l1]; + xr7 = bl3->x3[bl9->l1]; + xr8 = gl1; + ixr1 = bl1->ind1[bl9->l1]; + ixr2 = bl1->ind2[bl9->l1]; + ixr3 = ich1; + bl1->p1[bl9->l1] = bl1->p1[bl9->l2]; + bl1->p2[bl9->l1] = bl1->p2[bl9->l2]; + bl1->p3[bl9->l1] = bl1->p3[bl9->l2]; + bl1->eps[bl9->l1] = bl1->eps[bl9->l2]; + // assert(isnan(energyTest(l1)) == false); + + bl3->x1[bl9->l1] = bl3->x1[bl9->l2]; + bl3->x2[bl9->l1] = bl3->x2[bl9->l2]; + bl3->x3[bl9->l1] = bl3->x3[bl9->l2]; + gl1 = gl2; + bl1->ind1[bl9->l1] = bl1->ind1[bl9->l2]; + bl1->ind2[bl9->l1] = bl1->ind2[bl9->l2]; + ich1 = ich2; + bl1->p1[bl9->l2] = xr1; + bl1->p2[bl9->l2] = xr2; + bl1->p3[bl9->l2] = xr3; + bl1->eps[bl9->l2] = xr4; + // assert(isnan(energyTest(l2)) == false); + + bl3->x1[bl9->l2] = xr5; + bl3->x2[bl9->l2] = xr6; + bl3->x3[bl9->l2] = xr7; + gl2 = xr8; + bl1->ind1[bl9->l2] = ixr1; + bl1->ind2[bl9->l2] = ixr2; + ich2 = ixr3; + + if(ich1 + ich2 - bl1->ind1[bl9->l1] - bl1->ind1[bl9->l2] != 0 || (ich1 + ich2) != 1) { + goto pnu870; + } + if (bl2->k == 0) { + goto pnu870; + } + + for(G4int i = 1; i <= bl2->k; i++) { + if((bl2->ind[i] != 1) || (bl2->jnd[i] != 0)) { + if((bl2->ind[i] != bl9->l1) || (bl2->jnd[i] != 0)) { + continue; + } + bl2->ind[i] = 1; + break; + } + + bl2->ind[i] = bl9->l1; + break; + } + + pnu870: + bl5->tlg[bl9->l1] = th*(bl1->eps[bl9->l1])/std::sqrt(std::pow(bl1->eps[bl9->l1],2)-std::pow(bl1->p1[bl9->l1],2)-std::pow(bl1->p2[bl9->l1],2)-std::pow(bl1->p3[bl9->l1],2)); + bl5->tlg[bl9->l2] = th*(bl1->eps[bl9->l2])/std::sqrt(std::pow(bl1->eps[bl9->l2],2)-std::pow(bl1->p1[bl9->l2],2)-std::pow(bl1->p2[bl9->l2],2)-std::pow(bl1->p3[bl9->l2],2)); + nc[bl9->l1] = nc[bl9->l1] + 1; + nc[bl9->l2] = nc[bl9->l2] + 1; + led = 0; + + if((ich1+ich2-bl1->ind1[bl9->l1]-bl1->ind1[bl9->l2]) < 0) { + mrnd = mrnd + 1; + } + if((ich1+ich2-bl1->ind1[bl9->l1]-bl1->ind1[bl9->l2]) == 0) { + if((ich1+ich2-1) < 0) { + mrnn = mrnn + 1; + } + if((ich1+ich2-1) == 0) { + mrdd = mrdd + 1; + led = 1; + } + if((ich1+ich2-1) == 0) { + mcdd = mcdd + 1; + led = 1; + } + } + if((ich1+ich2-bl1->ind1[bl9->l1]-bl1->ind1[bl9->l2]) > 0) { + mrdn = mrdn + 1; + } + + + // reevaluation of the times t(a,b) for (a or b)=(l1 or l2) + + // l-conservation + if (k6 == 1) { + aml1 = am(bl1->p1[bl9->l1],bl1->p2[bl9->l1],bl1->p3[bl9->l1],bl1->eps[bl9->l1]); + aml2 = am(bl1->p1[bl9->l2],bl1->p2[bl9->l2],bl1->p3[bl9->l2],bl1->eps[bl9->l2]); + // assert(isnan(aml1) == false); + // assert(isnan(aml2) == false); + + t[36] = (aml2*(bl1->p1[bl9->l1]) - aml1*(bl1->p1[bl9->l2]))/(aml1+aml2); //t(37)->t[36] + t[37] = (aml2*(bl1->p2[bl9->l1]) - aml1*(bl1->p2[bl9->l2]))/(aml1+aml2); //t(38)->t[37] + t[38] = (aml2*(bl1->p3[bl9->l1]) - aml1*(bl1->p3[bl9->l2]))/(aml1+aml2); //t(39)->t[38] + t[39] = std::sqrt(t[33]*t[33] + t[34]*t[34] + t[35]*t[35]); //t(N)->t[N-1] + t[40] = std::sqrt(t[36]*t[36] + t[37]*t[37] + t[38]*t[38]); //t(N)->t[N-1] + rhopi = tt31*t[33] + tt32*t[34] + tt33*t[35]; //t(N)->t[N-1] + t[42] = tt31 - rhopi*t[33]/std::pow(t[39],2); //t(N)->t[N-1] + t[43] = tt32 - rhopi*t[34]/std::pow(t[39],2); //t(N)->t[N-1] + t[44] = tt33 - rhopi*t[35]/std::pow(t[39],2); //t(N)->t[N-1] + t[45] = std::sqrt(t[42]*t[42] + t[43]*t[43] + t[44]*t[44]); //t(N)->t[N-1] + t[42] = t[42]/t[45]; //t(N)->t[N-1] + t[43] = t[43]/t[45]; //t(N)->t[N-1] + t[45] = t[45]/t[46]; + cif = (t[33]*t[36] + t[34]*t[37] + t[35]*t[38])/t[39]/t[40]; //t(N)->t[N-1] + + // trouble with forward scattering 22/3/95 + if(std::fabs(cif) > 1.) { + cif = sign(1.0,cif); + } + sif = std::sqrt(1.0 - cif*cif); + t[36] = (t[33]*cif/t[39] + t[42]*sif)*t[40]; //t(N)->t[N-1] + t[37] = (t[34]*cif/t[39] + t[43]*sif)*t[40]; //t(N)->t[N-1] + t[38] = (t[35]*cif/t[39] + t[44]*sif)*t[40]; //t(N)->t[N-1] + tri = std::sqrt(tt31*tt31 + tt32*tt32 + tt33*tt33); + cchi = rhopi/tri/t[39]; //t(40)->t[39] + schi = std::sqrt(1.0 - cchi*cchi); + c1 = cif*cchi - sif*schi; + c2 = sif*cchi + cif*schi; + tt31 = (c1*t[33]/t[39] + c2*t[42])*tri*t[39]/t[40]; //t(N)->t[N-1] + tt32 = (c1*t[34]/t[39] + c2*t[43])*tri*t[39]/t[40]; //t(N)->t[N-1] + tt33 = (c1*t[35]/t[39] + c2*t[44])*tri*t[39]/t[40]; //t(N)->t[N-1] + bl3->x1[bl9->l1] = t[30] + aml2*tt31/(aml1 + aml2); //t(31)->t[30] + bl3->x2[bl9->l1] = t[31] + aml2*tt32/(aml1 + aml2); //t(32)->t[30] + bl3->x3[bl9->l1] = t[32] + aml2*tt33/(aml1 + aml2); //t(33)->t[32] + bl3->x1[bl9->l2] = t[30] - aml1*tt31/(aml1 + aml2); //t(31)->t[30] + bl3->x2[bl9->l2] = t[31] - aml1*tt32/(aml1 + aml2); //t(32)->t[31] + bl3->x3[bl9->l2] = t[32] - aml1*tt33/(aml1 + aml2); //t(33)->t[32] + bl1->p1[bl9->l1] = aml1*tt34/(aml1 + aml2) + t[36]; //t(37)->t[36] + bl1->p2[bl9->l1] = aml1*tt35/(aml1 + aml2) + t[37]; //t(38)->t[37] + bl1->p3[bl9->l1] = aml1*tt36/(aml1 + aml2) + t[38]; //t(39)->t[38] + bl1->eps[bl9->l1] = w(bl1->p1[bl9->l1],bl1->p2[bl9->l1],bl1->p3[bl9->l1],aml1); + // assert(isnan(energyTest(l1)) == false); + bl1->p1[bl9->l2] = aml2*tt34/(aml1 + aml2) - t[36]; //t(37)->t[36] + bl1->p2[bl9->l2] = aml2*tt35/(aml1 + aml2) - t[37]; //t(38)->t[37] + bl1->p3[bl9->l2] = aml2*tt36/(aml1 + aml2) - t[38]; //t(39)->t[38] + bl1->eps[bl9->l2] = w(bl1->p1[bl9->l2],bl1->p2[bl9->l2],bl1->p3[bl9->l2],aml2); + // assert(isnan(energyTest(l2)) == false); + } + // l-conservation + + if(bl2->k != 0) { + kd = 0; + ccr = tau; +// for(G4int i = 1; i <= bl2->k; i++) { +// i20 = i - kd; +// if (k4 != 2 || led != 1) { +// if((bl2->ind[i] == l1) || (bl2->ind[i] == l2) || (bl2->jnd[i] == l1) || (bl2->jnd[i] == l2)) { +// kd = kd + 1; +// continue; +// } +// } +// else { +// if(bl2->jnd[i] == 0) { +// if (bl2->ind[i] == l1 && bl1->ind1[l1] == 1) { +// bl2->crois[i]=(bl2->crois[i]-ccr)*(bl1->eps[l1])/std::sqrt(std::pow(bl1->eps[l1],2)-std::pow(bl1->p1[l1],2)-std::pow(bl1->p2[l1],2)-std::pow(bl1->p3[l1],2))/gl1+ccr; +// } +// if (bl2->ind[i] == l2 && bl1->ind1[l2] == 1) { +// bl2->crois[i]=(bl2->crois[i]-ccr)*(bl1->eps[l2])/std::sqrt(std::pow(bl1->eps[l2],2)-std::pow(bl1->p1[l2],2)-std::pow(bl1->p2[l2],2)-std::pow(bl1->p3[l2],2))/gl2+ccr; +// } +// } +// } + +// bl2->crois[i20]=bl2->crois[i]-ccr; +// bl2->ind[i20]=bl2->ind[i]; +// bl2->jnd[i20]=bl2->jnd[i]; +// } + + for(G4int i = 1; i <= bl2->k; i++) { //do 50 i=1,k p-n09070 + i20 = i - kd; + if(k4 != 2 || led != 1) { //if (k4.ne.2.or.led.ne.1) go to 512 p-n09090 + goto pnu512; + } + if(bl2->jnd[i] == 0) {//if (jnd(i).eq.0) go to 511 p-n09100 + goto pnu511; + } + pnu512: + if(bl2->ind[i] == bl9->l1) {//if (ind(i).eq.l1) go to 52 p-n09120 + goto pnu52; + + } + if(bl2->ind[i] == bl9->l2) {//if (ind(i).eq.l2) go to 52 p-n09130 + goto pnu52; + } + if(bl2->jnd[i] == bl9->l2) {//if (jnd(i).eq.l2) go to 52 p-n09140 + goto pnu52; + } + if(bl2->jnd[i] == bl9->l1) {//if (jnd(i).eq.l1) go to 52 p-n09150 + goto pnu52; + } + goto pnu513; + pnu511: + //if (ind(i).eq.l1.and.ind1(l1).eq.1) crois(i)=(crois(i)-ccr)*eps(l1p-n09170 + //-)/std::sqrt(eps(l1)**2-p1(l1)**2-p2(l1)**2-p3(l1)**2)/gl1+ccr p-n09180 + if(bl2->ind[i] == bl9->l1 && bl1->ind1[bl9->l1] == 1) { + bl2->crois[i]=(bl2->crois[i]-ccr)*bl1->eps[bl9->l1]/std::sqrt(std::pow(bl1->eps[bl9->l1],2)-std::pow(bl1->p1[bl9->l1],2)-std::pow(bl1->p2[bl9->l1],2)-std::pow(bl1->p3[bl9->l1],2))/gl1+ccr; + } + //if (ind(i).eq.l2.and.ind1(l2).eq.1) crois(i)=(crois(i)-ccr)*eps(l2p-n09190 + //-)/std::sqrt(eps(l2)**2-p1(l2)**2-p2(l2)**2-p3(l2)**2)/gl2+ccr p-n09200 + if(bl2->ind[i] == bl9->l2 && bl1->ind1[bl9->l2] == 1) { + bl2->crois[i]=(bl2->crois[i]-ccr)*bl1->eps[bl9->l2]/std::sqrt(std::pow(bl1->eps[bl9->l2],2)-std::pow(bl1->p1[bl9->l2],2)-std::pow(bl1->p2[bl9->l2],2)-std::pow(bl1->p3[bl9->l2],2))/gl1+ccr; + } + pnu513: + bl2->crois[i20]=bl2->crois[i]-ccr; + bl2->ind[i20]=bl2->ind[i]; + bl2->jnd[i20]=bl2->jnd[i]; + continue; // goto pnu50 + pnu52: + kd=kd+1; + } + + bl2->k = bl2->k - kd; + } + + newt(bl9->l1,bl9->l2); + + tref=ref(bl3->x1[bl9->l1], bl3->x2[bl9->l1], bl3->x3[bl9->l1], bl1->p1[bl9->l1], bl1->p2[bl9->l1], bl1->p3[bl9->l1], bl1->eps[bl9->l1],r22); // line 3502 + // assert(isnan(tref) == false); + + if(verboseLevel > 3) { + if(tref < 0.0) { + G4cout <<"G4Incl: Reflection time < 0! (line 3502)" << G4endl; + } + } + + if(tref <= bl4->tmax5) { + bl2->k = bl2->k + 1; + bl2->crois[bl2->k] = tref; + bl2->ind[bl2->k] = bl9->l1; + bl2->jnd[bl2->k] = -1; + } + + tref=ref(bl3->x1[bl9->l2], bl3->x2[bl9->l2], bl3->x3[bl9->l2], bl1->p1[bl9->l2], bl1->p2[bl9->l2], bl1->p3[bl9->l2], bl1->eps[bl9->l2],r22); // line 3516 + // assert(isnan(tref) == false); + + if(verboseLevel > 3) { + if(tref < 0.0) { + G4cout <<"G4Incl: Reflection time < 0! (line 3516)" << G4endl; + } + } + + if(tref <= bl4->tmax5) { + bl2->k = bl2->k + 1; + bl2->crois[bl2->k] = tref; + bl2->ind[bl2->k] = bl9->l2; + bl2->jnd[bl2->k] = -1; + } + + if (k4 == 2) { + goto pnu848; + } + + if(bl2->k < 0) { + goto pnu230; + } + if(bl2->k == 0) { + goto pnu230; + } + if(bl2->k > 0) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: bl2->k > 0 at line 3488. Going back to label pnu449." << G4endl; + } + goto pnu449; + } + + pnu848: + if (npion == 0) { + goto pnu844; + } + if (bl1->ind1[bl9->l1] == 1) { + goto pnu843; + } + for(G4int k20 = 1; k20 <= npion; k20++) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: calling G4Incl::new3" << G4endl; + } + new3((y1[k20]), (y2[k20]), (y3[k20]), (q1[k20]), (q2[k20]), (q3[k20]), (q4[k20]), k20, bl9->l1); + if(verboseLevel > 3) { + G4cout <<"G4Incl: After new3:" << G4endl; + G4cout <<"y1[" << k20 << "] = " << y1[k20] <<" y2[" << k20 << "] = " << y2[k20] <<" y3[" << k20 << "] = " << y3[k20] << G4endl; + G4cout <<"q1[" << k20 << "] = " << q1[k20] <<" q2[" << k20 << "] = " << q2[k20] <<" q3[" << k20 << "] = " << q3[k20] << G4endl; + } + } + + pnu843: + if(bl1->ind1[bl9->l2] != 1) { + for(G4int k20 = 1; k20 <= npion; k20++) { + //new3(y1[k20], y2[k20], y3[k20], q1[k20], q2[k20], q3[k20], q4[k20], -k20, l2); + new3(y1[k20], y2[k20], y3[k20], q1[k20], q2[k20], q3[k20], q4[k20], k20, bl9->l2); + } + } + pnu844: + + if(bl1->ind1[bl9->l1]+bl1->ind1[bl9->l2] <= ich1+ich2) { + goto pnu849; + } + if(bl1->ind1[bl9->l1]-ich1 != 1) { + goto pnu820; + } + lnew = bl9->l1; + goto pnu821; + pnu820: + if(bl1->ind1[bl9->l2]-ich2 != 1) { + goto pnu849; + } + lnew = bl9->l2; + + pnu821: + standardRandom(&rndm,&(hazard->igraine[16])); + // largeur variable du delta (phase space factor G4introduced 4/2001) + amlnew = std::sqrt(std::pow(bl1->eps[lnew],2)-std::pow(bl1->p1[lnew],2)-std::pow(bl1->p2[lnew],2)-std::pow(bl1->p3[lnew],2)); + // assert(isnan(amlnew) == false); + + geff = bl1->eps[lnew]/amlnew; + qqq = std::sqrt((std::pow(amlnew,2) - std::pow((fmp+fmpi),2))*(std::pow(amlnew,2) - std::pow((fmp-fmpi),2)))/(2.0*amlnew); + // assert(isnan(qqq) == false); + + psf = std::pow(qqq,3)/(std::pow(qqq,3) + 5832000.0); + tdel = -hc/(g0*psf)*std::log(rndm)*geff; + // assert(isnan(tdel) == false); + + if(tdel <= bl4->tmax5) { + bl2->k = bl2->k + 1; + bl2->crois[bl2->k] = tdel; + bl2->ind[bl2->k] = lnew; + bl2->jnd[bl2->k] = 0; + } + + pnu849: + if (bl2->k == 0) { + goto pnu230; + } + if(verboseLevel > 3) { + G4cout <<"G4Incl: bl2->k != 0. Going back to label pnu449." << G4endl; + } + goto pnu449; + + // decay of the delta particle p-n09780 + pnu805: + npion = npion + 1; + ichd = bl1->ind2[bl9->l1]; + t[30] = bl1->p1[bl9->l1]; //t(31)->t[30] + t[31] = bl1->p2[bl9->l1]; //t(32)->t[31] + t[32] = bl1->p3[bl9->l1]; //t(33)->t[32] + t[33] = bl1->eps[bl9->l1]; //t(34)->t[33] + var_ab = std::pow(bl1->eps[bl9->l1],2) - std::pow(bl1->p1[bl9->l1],2) - std::pow(bl1->p2[bl9->l1],2) - std::pow(bl1->p3[bl9->l1],2); + assert(var_ab > 0); + ym[npion] = 0.0; + + if(var_ab > 0.0) { + ym[npion] = std::sqrt(var_ab); + } + + //PK: This workaround avoids a NaN problem encountered with + //geant4. The problem does not seem to exist if we run in standalone + //mode. + // if(((std::pow(ym[npion],2)-std::pow(fmp+fmpi,2))*(std::pow(ym[npion],2)-std::pow(fmp-fmpi,2))) < 0) { + // ym[npion] = ym[npion]+fmpi+100.0; + // } + // PK + // assert(isnan(ym[npion]) == false); + assert(ym[npion] != 0); + // assert(isnan(pcm(ym[npion], fmp, fmpi)) == false); + if(varavat->kveux == 1) { + varavat->del1avat[iavat] = bl1->ind1[bl9->l1]; + varavat->energyavat[iavat] = ym[npion]; + } + + if(verboseLevel > 3) { + G4cout <<"Calling decay2 from pnu" << G4endl; + G4cout <<"npion = " << npion << G4endl; + G4cout <<"q1 = " << q1[npion] << " q2 = " << q2[npion] << " q3 = " << q3[npion] << " q4 = " << q4[npion] << G4endl; + } + assert(ym[npion] != 0); + decay2(&(bl1->p1[bl9->l1]), &(bl1->p2[bl9->l1]), &(bl1->p3[bl9->l1]), &(bl1->eps[bl9->l1]), &(q1[npion]), &(q2[npion]), &(q3[npion]), + &(q4[npion]), &(ym[npion]), &fmp, &fmpi, &(bl9->hel[bl9->l1])); + + if(verboseLevel > 3) { + G4cout <<"Quantities after decay2: " << G4endl; + G4cout <<"l1 = " << bl9->l1 << " bl1->p1[l1] = " << bl1->p1[bl9->l1] << " bl1->p2[l1] = " << bl1->p2[bl9->l1] << " bl1->p3[l1] = " << bl1->p3[bl9->l1] << " bl1->eps[l1] = " << bl1->eps[bl9->l1] << G4endl; + } + + // decay + if (bl1->ind2[bl9->l1]*(bl1->ind2[bl9->l1]) == 9) { + goto pnu806; + } + + standardRandom(&rndm, &(hazard->ial)); + if (rndm < 0.333333333) { + goto pnu837; + } + + ipi[npion]=0; + goto pnu809; + + pnu837: + ipi[npion]=bl1->ind2[bl9->l1]*2; + bl1->ind2[bl9->l1]=-1*(bl1->ind2[bl9->l1]); + goto pnu809; + pnu806: + bl1->ind2[bl9->l1]=bl1->ind2[bl9->l1]/3; + ipi[npion]=2*(bl1->ind2[bl9->l1]); + pnu809: // continue + bl1->ind1[bl9->l1]=0; + bl5->tlg[bl9->l1]=0.; + + // escape ? + if (bl5->nesc[bl9->l1] > 0) { + goto pnu850; + } + + iteste = 0; + xpb = pauliBlocking(bl9->l1, rbl, pbl); + standardRandom(&rndm,&(hazard->igraine[10])); + + // pauli blocking? + if (rndm <= xpb) { + goto pnu1848; + } + // le decay ne peut conduire a un noyau de a nucleons + // sous l'energie de fermi et dans une config. d'energie inferieure a + // c efer-(ia2-nbalttf)*tf). + egs = 0.0; + nbalttf = 0; + iteste = 1; + for(G4int i = 1; i <= ia; i++) { + if(bl5->nesc[i] == 0) { + if(std::sqrt(std::pow(bl1->p1[i],2)+std::pow(bl1->p2[i],2)+std::pow(bl1->p3[i],2)) < bl10->pf) { + nbalttf = nbalttf + 1; + egs = egs + bl1->eps[i] - fmp; + } + } + } + if(egs >= (efer-(bl3->ia2-nbalttf)*tf)) { + goto pnu850; + } + + // attention, logique negative!!! liberer le goto si on veut supprimer la + // sequence precedente (cdpp sur delta-> pi n) + + if(varavat->kveux == 1) { + varavat->bloc_cdpp[iavat] = 1; + } + + // it is blocked! + pnu1848: + mpaul2 = mpaul2 + 1; + if(varavat->kveux == 1) { + varavat->bloc_paul[iavat] = 1; + } + + // largeur variable du delta (phase space factor G4introduced 4/2001) + // (180.**3 = 5832000.) + qqq = std::sqrt((std::pow(ym[npion],2) - std::pow((fmp+fmpi),2))*(std::pow(ym[npion],2) - std::pow((fmp-fmpi),2)))/(2.*ym[npion]); + psf = std::pow(qqq,3)/(std::pow(qqq,3)+5832000.0); + tdel = hc*t[33]/(g0*psf*ym[npion]); //t(34)->t[33] + + if (iteste == 0) { + tdel = tdel*xpb/(1.000001-xpb); + } + + if(tdel <= bl4->tmax5) { + bl2->k = bl2->k + 1; + bl2->crois[bl2->k] = tdel; + bl2->ind[bl2->k] = bl9->l1; + bl2->jnd[bl2->k] = 0; + } + + bl1->p1[bl9->l1] = t[30]; //t(31)->t[30] + bl1->p2[bl9->l1] = t[31]; //t(32)->t[31] + bl1->p3[bl9->l1] = t[32]; //t(33)->t[32] + bl1->eps[bl9->l1] = t[33]; //t(34)->t[33] + bl1->ind1[bl9->l1] = 1; + bl1->ind2[bl9->l1] = ichd; + npion = npion - 1; + + if (bl2->k == 0) { + goto pnu230; + } + + for(G4int i = 1; i <= bl2->k; i++) { + bl2->crois[i] = bl2->crois[i] - tau; + } + + if(verboseLevel > 3) { + G4cout <<"G4Incl: Going back to label pnu449 after a loop from 1 to bl2->k" << G4endl; + } + goto pnu449; + + // valid decay of the delta + pnu850: + if(varavat->kveux == 1) { + varavat->bloc_paul[iavat] = 0; + varavat->bloc_cdpp[iavat] = 0; + } + + if (ws->nosurf <= 0) { + // surface + pppp = std::sqrt(std::pow(bl1->p1[bl9->l1],2) + std::pow(bl1->p2[bl9->l1],2) + std::pow(bl1->p3[bl9->l1],2)); + rrrr = std::sqrt(std::pow(bl3->x1[bl9->l1],2) + std::pow(bl3->x2[bl9->l1],2) + std::pow(bl3->x3[bl9->l1],2)); + if (pppp <= bl10->pf) { + xv = pppp/bl10->pf; + rcorr = interpolateFunction(xv); + if (rrrr > rcorr) { + bl3->x1[bl9->l1] = bl3->x1[bl9->l1]*rcorr/rrrr; + bl3->x2[bl9->l1] = bl3->x2[bl9->l1]*rcorr/rrrr; + bl3->x3[bl9->l1] = bl3->x3[bl9->l1]*rcorr/rrrr; + } + } + } + + ncol = ncol + 1; + mrdp = mrdp + 1; + y1[npion] = bl3->x1[bl9->l1]; + y2[npion] = bl3->x2[bl9->l1]; + y3[npion] = bl3->x3[bl9->l1]; + + if (bl2->k == 0) { + goto pnu4047; + } + + kd = 0; + ccr = tau; + for(G4int i = 1; i <= bl2->k; i++) { + i20 = i - kd; + + if((bl2->ind[i] == bl9->l1) || (bl2->jnd[i] == bl9->l1)) { + kd = kd + 1; + } + else { + bl2->crois[i20] = bl2->crois[i] - ccr; + bl2->ind[i20] = bl2->ind[i]; + bl2->jnd[i20] = bl2->jnd[i]; + } + } + bl2->k = bl2->k - kd; + + pnu4047: + if (bl5->nesc[bl9->l1] != 0) { + goto pnu845; + } + + new1(bl9->l1); + bl2->k = bl2->k + 1; + bl2->crois[bl2->k] = ref(bl3->x1[bl9->l1], bl3->x2[bl9->l1], bl3->x3[bl9->l1], bl1->p1[bl9->l1], bl1->p2[bl9->l1], bl1->p3[bl9->l1], bl1->eps[bl9->l1],r22); + bl2->ind[bl2->k] = bl9->l1; + bl2->jnd[bl2->k] = -1; + if(verboseLevel > 3) { + if(bl2->crois[bl2->k] < 0.0) { + G4cout <<"G4Incl: Reflection time < 0! (line 3797)" << G4endl; + } + } + + + if(npion > 1) { + n20 = npion - 1; + for(G4int k20 = 1; k20 <= n20; k20++) { + new3(y1[k20], y2[k20], y3[k20], q1[k20], q2[k20], q3[k20], q4[k20], k20, bl9->l1); + } + } + + pnu845: + new2(y1[npion], y2[npion], y3[npion], q1[npion], q2[npion], q3[npion], q4[npion], npion, bl9->l1); + if(bl2->k == 0) { + goto pnu230; + } + + if(verboseLevel > 3) { + G4cout <<"G4Incl: bl2->k == 0 after a call to new2. Going back to label pnu449." << G4endl; + } + goto pnu449; + + // pion-nucleon collision + pnu801: + if(verboseLevel > 3) { + G4cout <<"Pion-nucleon collision!" << G4endl; + } + lp = bl9->l1 - ia; + dis1 = bl3->x1[bl9->l2]-y1[lp] + (bl1->p1[bl9->l2]/bl1->eps[bl9->l2] - q1[lp]/q4[lp])*tau; + dis2 = bl3->x2[bl9->l2]-y2[lp] + (bl1->p2[bl9->l2]/bl1->eps[bl9->l2] - q2[lp]/q4[lp])*tau; + dis3 = bl3->x3[bl9->l2]-y3[lp] + (bl1->p3[bl9->l2]/bl1->eps[bl9->l2] - q3[lp]/q4[lp])*tau; + dist = dis1*dis1 + dis2*dis2 + dis3*dis3; + t[9] = bl1->eps[bl9->l2] + q4[lp]; //t(10)->t[9] + t0 = 1.0/t[9]; //t(10)->t[9] + b1 = (bl1->p1[bl9->l2] + q1[lp])*t0; + b2 = (bl1->p2[bl9->l2] + q2[lp])*t0; + b3 = (bl1->p3[bl9->l2] + q3[lp])*t0; + s = (1.0 - b1*b1 - b2*b2 - b3*b3)*t[9]*t[9]; //t(10)->t[9] + sq = std::sqrt(s); + cg = 4+bl1->ind2[bl9->l2]*ipi[lp]; + + if(verboseLevel > 3) { + G4cout <<"Pion-Nucleon collision done! " << G4endl; + } + + if(sq > 3000.0) { + if(verboseLevel > 3) { + G4cout <<"sq = " << sq << G4endl; + } + goto pnu832; + } + if(31.41592*dist > pionNucleonCrossSection(sq)*cg/6.0) { + goto pnu832; + } + + if(verboseLevel > 3) { + G4cout <<"Going to pnu220!" << G4endl; + } + + goto pnu220; + + pnu832: + if (bl2->k == 0) { + goto pnu230; + } + + if(verboseLevel > 3) { + G4cout <<"G4Incl: bl2->k != 0. Going back to pnu44." << G4endl; + } + goto pnu44; + pnu831: + standardRandom(&rndm, &(hazard->igraine[18])); + geff = t[9]/sq; //t(10)->t[9] + gg = g0; + if (sq > 1500.0) { + gg=200.0; + } + + // largeur variable du delta (phase space factor G4introduced 4/2001) + // (180.**3 = 5832000.) + qqq = std::sqrt((std::pow(sq,2) - std::pow((fmp+fmpi),2))*(std::pow(sq,2) - std::pow((fmp-fmpi),2)))/(2.0*sq); + psf = std::pow(qqq,3)/(std::pow(qqq,3)+5832000.); + tdel = -hc/(gg*psf)*std::log(rndm)*geff; + + bl1->ind1[bl9->l2] = 1; + bl1->ind2[bl9->l2] = bl1->ind2[bl9->l2] + ipi[lp]; + nc[bl9->l2] = nc[bl9->l2] + 1; + bl1->eps[bl9->l2] = t[9]; //t(10)->t[9] + bl1->p1[bl9->l2] = bl1->p1[bl9->l2] + q1[lp]; + bl1->p2[bl9->l2] = bl1->p2[bl9->l2] + q2[lp]; + bl1->p3[bl9->l2] = bl1->p3[bl9->l2] + q3[lp]; + + // ce nucleon (ici delta) devient un participant: + jparticip[bl9->l2] = 1; + if(verboseLevel > 3) { + G4cout <<"Particle " << bl9->l2 << " is now participant." << G4endl; + } + + if (ws->nosurf <= 0) { + // surface + pppp = std::sqrt(std::pow(bl1->p1[bl9->l2],2) + std::pow(bl1->p2[bl9->l2],2) + std::pow(bl1->p3[bl9->l2],2)); + rrrr = std::sqrt(std::pow(bl3->x1[bl9->l2],2) + std::pow(bl3->x2[bl9->l2],2) + std::pow(bl3->x3[bl9->l2],2)); + if (pppp <= bl10->pf) { + xv = pppp/bl10->pf; + rcorr = interpolateFunction(xv); + if (rrrr > rcorr) { + bl3->x1[bl9->l2] = bl3->x1[bl9->l2]*rcorr/rrrr; + bl3->x2[bl9->l2] = bl3->x2[bl9->l2]*rcorr/rrrr; + bl3->x3[bl9->l2] = bl3->x3[bl9->l2]*rcorr/rrrr; + } + } + // fin surface + } + + // difference with standard cascade : + // the delta is located at the nucleon site to avoid problems + // with the reflexion on the wall + if(lp != npion) { + lp1 = lp + 1; + // for(G4int i10 = lp1; i10 <= npion; lp1++) { + for(G4int i10 = lp1; i10 <= npion; i10++) { + ipi[i10-1] = ipi[i10]; + ym[i10-1] = ym[i10]; + q1[i10-1] = q1[i10]; + q2[i10-1] = q2[i10]; + q3[i10-1] = q3[i10]; + q4[i10-1] = q4[i10]; + y1[i10-1] = y1[i10]; + y2[i10-1] = y2[i10]; + y3[i10-1] = y3[i10]; + } + } + npion = npion-1; + ncol = ncol+1; + mrpd = mrpd+1; + + if(bl2->k != 0) { + kd = 0; + ccr = tau; + for(G4int i = 1; i <= bl2->k; i++) { + i20 = i - kd; + if((bl2->ind[i] == bl9->l1) || (bl2->ind[i] == bl9->l2) || (bl2->jnd[i] == bl9->l1) || (bl2->jnd[i] == bl9->l2)) { + kd = kd + 1; + } + else { + bl2->crois[i20] = bl2->crois[i] - ccr; + bl2->ind[i20] = bl2->ind[i]; + bl2->jnd[i20] = bl2->jnd[i]; + } + } + + bl2->k = bl2->k - kd; + for(G4int i10 = 1; i10 <= bl2->k; i10++) { + if(bl2->ind[i10] <= bl9->l1) { + continue; + } + else { + bl2->ind[i10] = bl2->ind[i10] - 1; + } + } + } + + new1(bl9->l2); + + if(tdel <= bl4->tmax5) { + bl2->k = bl2->k + 1; + bl2->crois[bl2->k] = tdel; + bl2->ind[bl2->k] = bl9->l2; + bl2->jnd[bl2->k] = 0; + } + + bl2->k = bl2->k + 1; + bl2->crois[bl2->k] = ref(bl3->x1[bl9->l2], bl3->x2[bl9->l2], bl3->x3[bl9->l2], bl1->p1[bl9->l2], bl1->p2[bl9->l2], bl1->p3[bl9->l2], bl1->eps[bl9->l2],r22); + if(verboseLevel > 3) { + if(bl2->crois[bl2->k] < 0.0) { + G4cout <<"G4Incl: Reflection time < 0! (line 3955)" << G4endl; + } + } + bl2->ind[bl2->k] = bl9->l2; + bl2->jnd[bl2->k] = -1; + + if(verboseLevel > 3) { + G4cout <<"G4Incl: Going back to pnu449 at line 3917." << G4endl; + } + goto pnu449; // Line 3917 + + // reflection on or transmission through the potential wall + pnu600: + // deutons pas bien compris ici cv ? + if (npproj[bl9->l1] == 0) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: npproj[l1] == 0. Going to pnu608." << G4endl; + } + goto pnu608; + } + + if (bl1->ind1[bl9->l1] != 0) { + if(verboseLevel > 3) { + G4cout <<"wrong reentering particle (ind1[l1] != 0)" << G4endl; + G4cout <<"ind1[" << bl9->l1 << "] = " << bl1->ind1[bl9->l1] << G4endl; + } + } + + if (bl3->x1[bl9->l1]*(bl1->p1[bl9->l1])+bl3->x2[bl9->l1]*(bl1->p2[bl9->l1])+bl3->x3[bl9->l1]*(bl1->p3[bl9->l1]) > 0.0) { + if(verboseLevel > 3) { + G4cout <<"wrong reentering particle" << G4endl; + G4cout <<"particle: l1 = " << bl9->l1 << G4endl; + } + } + + var_ab = std::pow(bl1->p1[bl9->l1],2) + std::pow(bl1->p2[bl9->l1],2) + std::pow(bl1->p3[bl9->l1],2); + assert(var_ab > 0); + gpsg = 0.0; + if (var_ab > 0.0) { + gpsg = std::sqrt((std::pow(bl1->eps[bl9->l1]+v0,2)-pm2)/var_ab); + } + + bl1->p1[bl9->l1] = gpsg*(bl1->p1[bl9->l1]); + bl1->p2[bl9->l1] = gpsg*(bl1->p2[bl9->l1]); + bl1->p3[bl9->l1] = gpsg*(bl1->p3[bl9->l1]); + bl1->eps[bl9->l1] = bl1->eps[bl9->l1] + v0; + npproj[bl9->l1] = 0; + bl5->nesc[bl9->l1] = 0; + + // reevaluation of the times tab after entrance of 2nd,..nucleon + // of the projectile (goto 602 instead of 607 modif. 13/06/01) + goto pnu602; + + // deutons + // pour un non participant la transmission est impossible: + pnu608: + if(varavat->kveux == 1) { + varavat->del1avat[iavat] = bl1->ind1[bl9->l1]; + varavat->energyavat[iavat] = bl1->eps[bl9->l1] - fmp; + } + if(jparticip[bl9->l1] == 0) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: jparticip[l1] == 0. Going to pnu601." << G4endl; + } + goto pnu601; + } + if(varavat->kveux == 1) { + varavat->go_out[iavat]=1; + } + if (bl1->ind1[bl9->l1] == 0) { + goto pnu605; + } + fm = am(bl1->p1[bl9->l1],bl1->p2[bl9->l1],bl1->p3[bl9->l1],bl1->eps[bl9->l1]); + pot = v1; + goto pnu606; + + pnu605: + fm = fmp; + pot = v0; + + pnu606: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu606. Calculating transmission probability." << G4endl; + } + tp = transmissionProb(bl1->eps[bl9->l1]-fm,bl1->ind2[bl9->l1],itch,bl3->r2,v0); + if(varavat->kveux == 1) { + varavat->energyavat[iavat] = bl1->eps[bl9->l1] - fm; + } + standardRandom(&rndm,&(hazard->igraine[10])); + + if (rndm > tp) { + if(verboseLevel > 3) { + G4cout <<"G4Incl:" << G4endl; + } + goto pnu601; + } + + // ici la particule l1 s'échappe du noyau: + bl5->nesc[bl9->l1] = 1; + nbquit = nbquit + 1; + itch = itch - (1 + bl1->ind2[bl9->l1])/2; + var_ab = std::pow(bl1->p1[bl9->l1],2) + std::pow(bl1->p2[bl9->l1],2) + std::pow(bl1->p3[bl9->l1],2); + assert(var_ab > 0); + gpsg = 0.0; + if(var_ab > 0.0) { + gpsg = std::sqrt((std::pow(bl1->eps[bl9->l1]-pot,2) - fm*fm)/(var_ab)); + } + bl1->p1[bl9->l1] = gpsg*(bl1->p1[bl9->l1]); + bl1->p2[bl9->l1] = gpsg*(bl1->p2[bl9->l1]); + bl1->p3[bl9->l1] = gpsg*(bl1->p3[bl9->l1]); + bl1->eps[bl9->l1] = bl1->eps[bl9->l1] - pot; + + // comptage des particules hors du noyau (7/6/2002): + // (remnant minimum=1 nucleon) + if(nbquit >= (ia-1)) { + if(verboseLevel > 3) { + G4cout <<"G4Incl: nbquit >= (ia - 1). Going to pnu255." << G4endl; + } + goto pnu255; + } + + if(verboseLevel > 3) { + G4cout <<"G4Incl: Going to pnu 602." << G4endl; + } + goto pnu602; + + // here no transmission possible + pnu601: + pspr=bl3->x1[bl9->l1]*(bl1->p1[bl9->l1])+bl3->x2[bl9->l1]*(bl1->p2[bl9->l1])+bl3->x3[bl9->l1]*(bl1->p3[bl9->l1]); + if(varavat->kveux == 1) { + varavat->go_out[iavat]=0; + } + + // surface: modif a.b. pour tenir compte du rayon variable du noyau. + // (x2cour remplace r22 le rayon**2 fixe du noyau) + x2cour = std::pow(bl3->x1[bl9->l1],2) + std::pow(bl3->x2[bl9->l1],2) + std::pow(bl3->x3[bl9->l1],2); + bl1->p1[bl9->l1] = bl1->p1[bl9->l1] - 2.0*(bl3->x1[bl9->l1])*pspr/x2cour; + bl1->p2[bl9->l1] = bl1->p2[bl9->l1] - 2.0*(bl3->x2[bl9->l1])*pspr/x2cour; + bl1->p3[bl9->l1] = bl1->p3[bl9->l1] - 2.0*(bl3->x3[bl9->l1])*pspr/x2cour; + // fin modif surface a.b. + + pnu602: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu602." << G4endl; + } + + if(bl2->k != 0) { + kd = 0; + ccr = tau; + for(G4int i = 1; i <= bl2->k; i++) { + i20 = i - kd; + + if((bl2->jnd[i] == bl9->l1) || ((bl2->ind[i] == bl9->l1) && (bl2->jnd[i] != 0))) { + kd = kd + 1; + continue; + } + + bl2->crois[i20] = bl2->crois[i] - ccr; + bl2->ind[i20] = bl2->ind[i]; + bl2->jnd[i20] = bl2->jnd[i]; + } + bl2->k = bl2->k - kd; + + if (bl5->nesc[bl9->l1] == 1) { + goto pnu613; + } + } + + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now calling new1(l1) (new1(" << bl9->l1 << "))" << G4endl; + } + new1(bl9->l1); + + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now calling ref." << G4endl; + G4cout <<"x1 = " << bl3->x1[bl9->l1] <<" x2 = " << bl3->x2[bl9->l1] <<" x3 = " << bl3->x3[bl9->l1] << G4endl; + G4cout <<"p1 = " << bl1->p1[bl9->l1] <<" p2 = " << bl1->p2[bl9->l1] <<" p3 = " << bl1->p3[bl9->l1] <<" eps = " << bl1->eps[bl9->l1] << G4endl; + } + tref = ref(bl3->x1[bl9->l1],bl3->x2[bl9->l1],bl3->x3[bl9->l1],bl1->p1[bl9->l1],bl1->p2[bl9->l1],bl1->p3[bl9->l1],bl1->eps[bl9->l1],r22); // line 4101 + if(verboseLevel > 3) { + G4cout <<"Returned from function ref. tref = " << tref << G4endl; + } + + if(verboseLevel > 3) { + if(tref < 0.0) { + G4cout <<"G4Incl: Reflection time < 0 (line 4101)!" << G4endl; + G4cout <<"G4Incl: bl1->eps[" << bl9->l1 << "] = " << bl1->eps[bl9->l1] << G4endl; + } + } + + if (tref > bl4->tmax5) { + goto pnu615; + } + bl2->k = bl2->k + 1; + bl2->crois[bl2->k] = tref; + bl2->ind[bl2->k] = bl9->l1; + bl2->jnd[bl2->k] = -1; + + pnu615: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu615." << G4endl; + } + + if (npion == 0) { + goto pnu613; + } + if (bl1->ind1[bl9->l1] == 1) { + goto pnu613; + } + for(G4int k20 = 1; k20 <= npion; k20++) { //do 614 k20=1,npion + new3(y1[k20], y2[k20], y3[k20], q1[k20], q2[k20], q3[k20], q4[k20], k20, bl9->l1); + } + pnu613: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu613." << G4endl; + } + + if (bl2->k == 0) { + goto pnu230; + } + + if(verboseLevel > 3) { + G4cout <<"G4Incl. bl2->k != 0. Going back to pnu449 from line 4077." << G4endl; + G4cout <<"G4Incl: bl2->k = " << bl2->k << G4endl; + for(G4int myindex = 0; myindex <= bl2->k; myindex++) { + G4cout <<"index = " << myindex << " ind = " << bl2->ind[myindex] << " jnd = " << bl2->jnd[myindex] << " crois = " << bl2->crois[myindex] << G4endl; + if(bl2->crois[myindex] < 0.0) { + G4cout <<"Negative time!!! Dumping information on collision: " << G4endl; + G4int part1 = bl2->ind[myindex]; + G4int part2 = bl2->jnd[myindex]; + G4cout <<"particle 1 index = " << bl2->ind[myindex] << " \t particle 2 index = " << bl2->jnd[myindex] << G4endl; + if(part1 >= 0) { + G4cout <<"Particle 1: " << G4endl; + G4cout <<"p1 = " << bl1->p1[part1] <<"p2 = " << bl1->p2[part1] <<"p3 = " << bl1->p3[part1] <<" eps = " << bl1->eps[part1] << G4endl; + G4cout <<"x1 = " << bl3->x1[part1] <<"x2 = " << bl3->x2[part1] <<"x3 = " << bl3->x3[part1] << G4endl; + } + if(part2 >= 0) { + G4cout <<"Particle 2: " << G4endl; + G4cout <<"p1 = " << bl1->p1[part2] <<"p2 = " << bl1->p2[part2] <<"p3 = " << bl1->p3[part2] <<" eps = " << bl1->eps[part2] << G4endl; + G4cout <<"x1 = " << bl3->x1[part2] <<"x2 = " << bl3->x2[part2] <<"x3 = " << bl3->x3[part2] << G4endl; + } + } + } + } + + goto pnu449; // Line 4077 + + // decay of the surviving deltas + pnu230: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu230." << G4endl; + } + // decay of the surviving deltas +pnu255: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu6255." << G4endl; + } + + if (k3 == 1) { + goto pnu256; + } + if (k4 == 0) { + goto pnu256; + } + + npidir = npion; + for(G4int i = 1; i <= ia; i++) { + if (bl1->ind1[i] == 0) { + continue; + } + npion = npion + 1; + var_ab = std::pow(bl1->eps[i],2) - std::pow(bl1->p1[i],2) - std::pow(bl1->p2[i],2) - std::pow(bl1->p3[i],2); + assert(var_ab > 0); + ym[npion] = 0.0; + + if(var_ab > 0.0) { + ym[npion] = std::sqrt(var_ab); + } + xy1 = bl1->p1[i]; + xy2 = bl1->p2[i]; + xy3 = bl1->p3[i]; + xye = bl1->eps[i]; + if(varavat->kveux == 1) { + iavat = iavat + 1; + varavat->timeavat[iavat] = tim; + varavat->l1avat[iavat] = i; + varavat->l2avat[iavat] = -2; + varavat->energyavat[iavat] = ym[npion]; + varavat->bloc_paul[iavat] = 0; + varavat->bloc_cdpp[iavat] = 0; + varavat->del1avat[iavat] = bl1->ind1[bl9->l1]; + varavat->jpartl1[iavat] = 1; + varavat->jpartl2[iavat] = 0; + } + + decay2(&(bl1->p1[i]), &(bl1->p2[i]), &(bl1->p3[i]), &(bl1->eps[i]), &(q1[npion]), &(q2[npion]), &(q3[npion]), + &(q4[npion]), &(ym[npion]), &fmp, &fmpi, &(bl9->hel[i])); + + if(verboseLevel > 3) { + G4cout <<"Quantities after decay2: " << G4endl; + G4cout <<"i = " << i << " bl1->p1[i] = " << bl1->p1[i] << " bl1->p2[i] = " << bl1->p2[i] << " bl1->p3[i] = " << bl1->p3[i] << " bl1->eps[i] = " << bl1->eps[i] << G4endl; + } + + if(bl5->nesc[i] == 0) { + idecf = 1; + } + + if (ws->nosurf <= 0) { + // surface + if (bl5->nesc[i] == 0.0) { + pppp = std::sqrt(std::pow(bl1->p1[i],2) + std::pow(bl1->p2[i],2) + std::pow(bl1->p3[i],2)); + rrrr = std::sqrt(std::pow(bl3->x1[i],2) + std::pow(bl3->x2[i],2) + std::pow(bl3->x3[i],2)); + if (pppp <= bl10->pf) { + xv = pppp/bl10->pf; + rcorr = interpolateFunction(xv); + if (rrrr > rcorr) { //then + bl3->x1[i] = bl3->x1[i]*rcorr/rrrr; + bl3->x2[i] = bl3->x2[i]*rcorr/rrrr; + bl3->x3[i] = bl3->x3[i]*rcorr/rrrr; + } + } + } + // fin surface + } + + if (bl1->ind2[i]*(bl1->ind2[i]) == 9) { + goto pnu280; + } + + standardRandom(&rndm, &(hazard->ial)); + + if (rndm*3. < 1.0) { + goto pnu283; + } + ipi[npion] = 0; + goto pnu285; + + pnu283: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu283." << G4endl; + } + + ipi[npion] = bl1->ind2[i]*2; + bl1->ind2[i] = -1*(bl1->ind2[i]); + goto pnu285; + + pnu280: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu280." << G4endl; + } + + bl1->ind2[i] = bl1->ind2[i]/3; + ipi[npion] = 2*(bl1->ind2[i]); + + pnu285: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu285." << G4endl; + } + + y1[npion] = bl3->x1[i]; + y2[npion] = bl3->x2[i]; + y3[npion] = bl3->x3[i]; + } + + if(verboseLevel > 3) { + G4cout <<"out of the loop..." << G4endl; + } + + if(varavat->kveux == 1) { + varavat->bavat = b; + varavat->nopartavat = nopart; + varavat->ncolavat = ncol; + varavat->nb_avat = iavat; + } + + // final properties of the incoming nucleon and of the remnant + // before evaporation + + // tableau des energies a la fin (avatar.hbk) + if(varavat->kveux == 1) { + for(G4int i = 1; i <= ia; i++) { + if(bl5->nesc[i] == 0) { + if(jparticip[i] == 1) { + varavat->epsf[i] = bl1->eps[i]; + } + else { + varavat->epsf[i] = 0.0; + } + } + else { + varavat->epsf[i] = 0.0; + } + } + } + + pnu256: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu256." << G4endl; + } + + elead = 0.0; + lead = 0; + npx = 0; + erem = 0.; + izrem = 0; + inrem = 0; + iarem = 0; + rcm1 = 0.0; + rcm2 = 0.0; + rcm3 = 0.0; + prem1 = 0.0; + prem2 = 0.0; + prem3 = 0.0; + pout1 = 0.0; + pout2 = 0.0; + pout3 = 0.0; + eout = 0.0; + cmultn = 0.0; + + if (kindstruct->kindf7 <= 2) { + if (ncol == 0 || nc[1] == 0) { // then nc(1)->nc[0] + if(verboseLevel > 3) { + G4cout <<"no collisioms" << G4endl; + } + goto pnu9100; + } + } + else { + if (kindstruct->kindf7 <= 5) { + if (ncol == 0) { + if(verboseLevel > 3) { + G4cout <<"no collisioms" << G4endl; + } + goto pnu9100; + } + } + else { + // ici faisceau composite: modif a.b. 2/2002 pour tous les composites: + nsum_col = 0; + for(G4int i = 1; i <= bl3->ia1; i++) { + nsum_col = nsum_col + nc[i]; + } + if (ncol == 0 || nsum_col == 0) { //then + goto pnu9100; + } + } + } + + goto pnu9101; + // pour eviter renvoi des resultats du run precedent cv 20/11/98 + pnu9100: + iarem = bl3->ia2; + izrem = iz2; + esrem = 0.0; + erecrem = 0.0; + nopart = -1; + // fin ajout cv + if(verboseLevel > 3) { + G4cout <<"End of algorithm after pnu9100." << G4endl; + } + goto pnureturn; + + pnu9101: + if(verboseLevel > 3) { + G4cout <<"G4Incl: Now at pnu9101." << G4endl; + } + + nopart = 0; + ekout = 0.0; + + for(G4int i = 1; i <= ia; i++) { + if(bl5->nesc[i] != 0) { + xl1 = xl1-bl3->x2[i]*(bl1->p3[i]) + (bl3->x3[i])*(bl1->p2[i]); + xl2 = xl2-bl3->x3[i]*(bl1->p1[i]) + bl3->x1[i]*(bl1->p3[i]); + xl3 = xl3-bl3->x1[i]*(bl1->p2[i]) + bl3->x2[i]*(bl1->p1[i]); + + // ici ajout de pout cv le 5/7/95 + pout1 = pout1 + bl1->p1[i]; + pout2 = pout2 + bl1->p2[i]; + pout3 = pout3 + bl1->p3[i]; + eout = eout+bl1->eps[i] - fmp; + // ic33 = int((std::floor(double(bl1->ind2[i]+3))/double(2))); + ic33 = (bl1->ind2[i]+3)/2; + //nopart = nopart + 1; + kind[nopart] = 3 - ic33; + if(verboseLevel > 3) { + G4cout <<"kind[" << nopart << "] = " << kind[nopart] << G4endl; + } + ep[nopart] = bl1->eps[i] - fmp; + if(verboseLevel > 2) { + if(ep[nopart] > calincl->f[2]) { + G4cout <<"ep[" << nopart << "] = " << ep[nopart] << " > " << calincl->f[2] << G4endl; + G4cout <<"E = " << bl1->eps[nopart] << G4endl; + G4cout <<"px = " << bl1->p1[nopart] << " py = " << bl1->p2[nopart] << " pz = " << bl1->p3[nopart] << G4endl; + G4cout <<"Particle mass = " << fmp << G4endl; + } + } + bmass[nopart] = fmp; + ekout = ekout + ep[nopart]; + ptotl = std::sqrt(std::pow(bl1->p1[i],2) + std::pow(bl1->p2[i],2) + std::pow(bl1->p3[i],2)); + alpha[nopart] = bl1->p1[i]/ptotl; + beta[nopart] = bl1->p2[i]/ptotl; + gam[nopart] = bl1->p3[i]/ptotl; + nopart = nopart + 1; + continue; + } + + t[3] = bl3->x1[i]*(bl3->x1[i]) + bl3->x2[i]*(bl3->x2[i]) + bl3->x3[i]*(bl3->x3[i]); //t(4)->t[3] + erem = erem + bl1->eps[i] - fmp; + rcm1 = rcm1 + bl3->x1[i]; + rcm2 = rcm2 + bl3->x2[i]; + rcm3 = rcm3 + bl3->x3[i]; + prem1 = prem1 + bl1->p1[i]; + prem2 = prem2 + bl1->p2[i]; + prem3 = prem3 + bl1->p3[i]; + izrem = izrem + (1 + bl1->ind2[i])/2; + iarem = iarem + 1; + } + + // correction pions 21/3/95 jc + ichpion = 0; + if(npion != 0) { + for(G4int ipion = 1; ipion <= npion; ipion++) { + pout1 = pout1 + q1[ipion]; + pout2 = pout2 + q2[ipion]; + pout3 = pout3 + q3[ipion]; + eout = eout + q4[ipion]; + xl1 = xl1 - y2[ipion]*q3[ipion] + y3[ipion]*q2[ipion]; + xl2 = xl2 - y3[ipion]*q1[ipion] + y1[ipion]*q3[ipion]; + xl3 = xl3 - y1[ipion]*q2[ipion] + y2[ipion]*q1[ipion]; + ichpion = ichpion + ipi[ipion]/2; + // nopart = nopart + 1; + kind[nopart] = 4 - ipi[ipion]/2; + ptotl = std::sqrt(std::pow(q1[ipion],2) + std::pow(q2[ipion],2) + std::pow(q3[ipion],2)); + ep[nopart] = q4[ipion] - fmpi; + bmass[nopart] = fmpi; + ekout = ekout + ep[nopart]; + alpha[nopart] = q1[ipion]/ptotl; + beta[nopart] = q2[ipion]/ptotl; + gam[nopart] = q3[ipion]/ptotl; + nopart++; + } + } + + // fin correction pions sur impulsion et moment angulaire et charge + // ici ajout de pfrem cv le 5/7/95 + pfrem1 = -pout1; + pfrem2 = -pout2; + pfrem3 = pinc - pout3; + + inrem = iarem - izrem; + iejp = iz2 - izrem; + iejn = bl3->ia2 - inrem - iz2; + irem = inrem + izrem; + + // intrinsic momentum of the remnant (a.b. 05/2001): + // momentum of projectile minus momentum of all outgoing particles + // minus angular momentum of the remnant computed + // from the sum of all inside nucleons. + // 2675 c xl1=xl1-rcm2/irem*prem3+rcm3/irem*prem2 + // 2676 c xl2=xl2-rcm3/irem*prem1+rcm1/irem*prem3 + // 2677 c xl3=xl3-rcm1/irem*prem2+rcm2/irem*prem1 + // 2678 c here the remnant momentum is pin - sig(pout), + // 2679 c and the distance with respect to the barycenter of the actual target + xl1 = xl1 - (rcm2/irem - x2_target)*pfrem3+(rcm3/irem - x3_target)*pfrem2; + xl2 = xl2 - (rcm3/irem - x3_target)*pfrem1+(rcm1/irem - x1_target)*pfrem3; + xl3 = xl3 - (rcm1/irem - x1_target)*pfrem2+(rcm2/irem - x2_target)*pfrem1; + l = int(std::sqrt(xl1*xl1 + xl2*xl2 + xl3*xl3)/hc + 0.5); + + iej = bl3->ia2 - irem; + + eh5 = erem - std::pow(double(irem)/double(a2),1.666667)*efer; + if(verboseLevel > 3) { + G4cout <<"erem used for excitation energy calculation = " << erem << G4endl; + G4cout <<"irem used for excitation energy calculation = " << irem << G4endl; + G4cout <<"a2 used for excitation energy calculation = " << a2 << G4endl; + G4cout <<"eh5 used for excitation energy calculation = " << eh5 << G4endl; + } + sepa = (bl3->ia2 - irem)*(v0 - tf); + eh6 = eh5; + + // deutons ajout beproj ?????? on retire beproj (18/06/2002 ab cv) + // eh5=erem-efer-beproj+(ia2-irem)*tf + eh5 = erem - efer + (bl3->ia2 - irem)*tf; + if (eh5 < 0.0) { + eh5 = 0.00000001; + } + + xlab = tlab - eout - eh5 - sepa; + ecoreh5 = 0.0; + + if (iqe == 1) { + eh5=0.00000001; + } + else { + if (eh5 < 0.0) { + if (npion == 0) { + nopart = -1; + if(verboseLevel > 3) { + G4cout <<"npion == 0" << G4endl; + G4cout <<"End of algorithm because npion == 0" << G4endl; + } + goto pnureturn; + } + else { + ecoreh5 = -eh5; + eh5 = 0.000000001; + } + } + } + if (idecf != 0 && eh5 < 0.0) { + ecoreh5 = -eh5; + eh5 = 0.000001; + } + + iarem = irem; + pfreml2 = std::pow(pfrem1,2) + std::pow(pfrem2,2) + std::pow(pfrem3,2); + if (pfreml2 > 1.0e-12) { + pfreml = std::sqrt(pfreml2); + alrem = pfrem1/pfreml; + berem = pfrem2/pfreml; + garem = pfrem3/pfreml; + } + else { + alrem = 0.0; + berem = 0.0; + garem = 1.0; + } + + erecrem = pfreml2/(std::sqrt(pfreml2 + std::pow((fmp*iarem),2)) + fmp*iarem); + + if(iarem == 1) { + erecrem = erecrem + eh5; + } + + // correction recul + erecg = erecrem + ecoreh5; + // correction energie d'excitation pour une absorption (a.b., c.v. 2/2002) + esrem = eh5; + + if (ekout < 0.001) { + if(verboseLevel > 3) { + G4cout <<"ekout < 0.001" << G4endl; + G4cout <<"End of algorithm because kout < 0.001" << G4endl; + } + goto pnureturn; + } + + // on ote l'instruction precedente car esrem toujours nulle 14/9/99 + + if (erecg > 0.25) { + fffc = (ekout - erecg)/ekout; + if (fffc < 0.0) { + fffc = 0.0; + } + + for(G4int ipart = 0; ipart < nopart; ipart++) { + ep[ipart] = ep[ipart]*fffc; + } + } + + // modif boudard juillet 99 (il faut tenir compte de la renormalisation + // des energies pour les impulsions.) + pfrem1 = 0.0; + pfrem2 = 0.0; + pfrem3 = pinc; + for(G4int ipart = 0; ipart < nopart; ipart++) { + xmodp = std::sqrt(ep[ipart]*(2.0*bmass[ipart] + ep[ipart])); + pfrem1 = pfrem1 - alpha[ipart]*xmodp; + pfrem2 = pfrem2 - beta[ipart]*xmodp; + pfrem3 = pfrem3 - gam[ipart]*xmodp; + } + // fin modif a.b. + + pfreml2 = std::pow(pfrem1,2) + std::pow(pfrem2,2) + std::pow(pfrem3,2); + erecrem = pfreml2/(std::sqrt(pfreml2 + std::pow((fmp*iarem),2)) + fmp*iarem); + + if (pfreml2 > 1.0e-12) { + pfreml = std::sqrt(pfreml2); + alrem = pfrem1/pfreml; + berem = pfrem2/pfreml; + garem = pfrem3/pfreml; + } + else { + alrem = 0.0; + berem = 0.0; + garem = 1.0; + } + // fin modif a.b. pour incl3 + + esrem = eh5; + + // if the remnant is a nucleon, no excitation energy + if(iarem == 1) { + esrem = 0.0; + } + + if(verboseLevel > 3) { + G4cout <<"Reached end of routine..." << G4endl; + } + goto pnureturn; + + if(verboseLevel > 3) { + G4cout <<"ia1 > 1 ! " << G4endl; + } + pnureturn: + (*ibert_p) = ibert; + (*nopart_p) = nopart; + (*izrem_p) = izrem; + (*iarem_p) = iarem; + (*esrem_p) = esrem; + (*erecrem_p) = erecrem; + (*alrem_p) = alrem; + (*berem_p) = berem; + (*garem_p) = garem; + (*bimpact_p) = bimpact; + (*l_p) = l; +} + + +void G4Incl::collis(G4double *p1_p, G4double *p2_p, G4double *p3_p, G4double *e1_p, G4double *pout11_p, G4double *pout12_p, + G4double *pout13_p, G4double *eout1_p, G4double *q1_p, G4double *q2_p, G4double *q3_p, + G4double *q4_p, G4int *np_p, G4int *ip_p, G4int *k2_p, G4int *k3_p, G4int *k4_p, + G4int *k5_p, G4int *m1_p, G4int *m2_p, G4int *is1_p, G4int *is2_p) +{ + G4double p1 = (*p1_p); + G4double p2 = (*p2_p); + G4double p3 = (*p3_p); + + G4double e1 = (*e1_p); + + G4double debugOutput; + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + + G4double pout11 = (*pout11_p); + G4double pout12 = (*pout12_p); + G4double pout13 = (*pout13_p); + G4double eout1 = (*eout1_p); + + G4double q1 = (*q1_p); + G4double q2 = (*q2_p); + G4double q3 = (*q3_p); + // G4double q4 = -1*(*q4_p); + G4double q4 = (*q4_p); + + G4int np = (*np_p); + G4int ip = (*ip_p); + + G4int k2 = (*k2_p); + G4int k3 = (*k3_p); + G4int k4 = (*k4_p); + G4int k5 = (*k5_p); + + G4int m1 = (*m1_p); + G4int m2 = (*m2_p); + + G4int is1 = (*is1_p); + G4int is2 = (*is2_p); + + // Variables: + G4double a; + G4double aaa; + G4double aac; + // G4double alog; + G4double alphac; + // G4double amax1; + G4double apt; + G4double argu; + G4double b; + G4double btmax; + G4double cfi; + G4double cpt; + G4double ctet; + G4double e3; + G4double ecm; + G4double ex[3]; + G4double ey[3]; + G4double ez[3]; + G4double f3; + G4double f3max; + G4double fi; + G4double fracpn; + G4double heli; + G4int iexpi; + G4int ii; + G4int index; + G4int index2; + G4int isi; + G4double pin; + G4double pl; + G4double pnorm; + // G4double pq = 0.0; + G4double psq; + G4double qq[3]; + G4double qq4; + G4double ranres; + G4double rndm; + G4double s; + G4double s1; + // G4double sel; + G4double sfi; + G4double stet; + G4double t; + G4double x; + G4double xkh; + G4double xp1; + G4double xp2; + G4double xp3; + G4double xx; + G4double y; + G4double yn; + G4double z; + G4double zn; + G4double zz; + + // !!! q4 = -1*q4; + // 2837 c + // 2838 c collis p-n17770 + // 2839 subroutine collis(p1,p2,p3,e1,pout11,pout12,pout13,eout1,q1,q2,q3,p-n17780 + // 2840 -q4,np,ip,k2,k3,k4,k5,m1,m2,is1,is2) p-n17790 + + // 2841 common/bl6/xx10,isa p-n17800 + // 2842 common/bl8/rathr,ramass p-n17810 + // 2843 common/hazard/ial,iy1,iy2,iy3,iy4,iy5,iy6,iy7,iy8,iy9,iy10, + // 2844 s iy11,iy12,iy13,iy14,iy15,iy16,iy17,iy18,iy19 + // 2845 common/bl9/hel(300),l1,l2 + // 2846 dimension ex(3),ey(3),ez(3),qq(3) p-n17820 + // 2847 data xm,xm2,xmdel,ezero,xpi/938.2796,8.8037e5,1232.,1876.6,138./ p-n17830 + G4double xm = 938.2796; + G4double xm2 = 8.8037e5; + G4double xmdel = 1232.0; + G4double xpi = 138.0; + + // 2848 c data iy1,iy2,iy3,iy4,iy5,iy6,iy7,iy8,iy10,iy11,iy12,iy13/ p-n17840 + // 2849 c 1 12345,22345,32345,42345,52345,62345,72345,82345,34567,47059,21033p-n17850 + // 2850 c 1 12345,22345,32345,42345,52345,62345,72345,82341,34567,47059,21033p-n17850 + // 2851 c 2,32835/ p-n17860 + // 2852 c data iy9/15637/ + // 2853 pcm(e,a,c)=0.5*std::sqrt((e**2-(a+c)**2)*(e**2-(a-c)**2))/e p-n17870 + G4int iso = is1 + is2; + np = 0; + psq = p1*p1 + p2*p2 + p3*p3; + assert(psq >= 0); + pnorm = std::sqrt(psq); + ecm = e1 + eout1; + // assert(isnan(ecm) == false); + + if(ecm < 1925.0) { + goto collis160; + } + + if (k3 == 1) { + goto collis17; + } + + // assert(isnan(bl8->rathr) == false); + if(ecm < (2065.0 + bl8->rathr)) { + goto collis17; + } + + if((k4-1) < 0) { + goto collis18; + } + if((k4-1) == 0) { + goto collis10; + } + if((k4-1) > 0) { + goto collis20; + } + + collis10: + if((m1+m2-1) < 0) { + goto collis19; + } + if((m1+m2-1) == 0) { + goto collis14; + } + if((m1+m2-1) > 0) { + goto collis13; + } + + collis19: + // assert(isnan(bl8->ramass) == false); + if((ecm-2170.4-bl8->ramass) <= 0) { + goto collis17; + } + if((ecm-2170.4-bl8->ramass) > 0) { + goto collis18; + } + + collis20: + if((m1+m2-1) < 0) { + goto collis18; + } + if((m1+m2-1) == 0) { + goto collis14; + } + if((m1+m2-1) > 0) { + goto collis13; + } + + // test on the recombination possibility for the n-delta system + collis14: + if (k5 == 0) { + goto collis170; + } + + standardRandom(&rndm, &(hazard->igraine[10])); + + // assert(isnan(ecm) == false); + // assert(isnan(iso) == false); + s1 = lowEnergy(ecm, 1, iso); + // assert(isnan(s1) == false); + + if(m1 != 0) { + assert((e1*e1 - psq) >= 0); + bl6->xx10=std::sqrt(e1*e1-psq); + bl6->isa=is1; + // assert(isnan(bl6->isa) == false); + } + else { + assert((std::pow(eout1,2)-psq) >= 0); + bl6->xx10 = std::sqrt(std::pow(eout1,2)-psq); + bl6->isa = is2; + // assert(isnan(bl6->isa) == false); + } + + s = s1 + srec(ecm,bl6->xx10, iso,int(bl6->isa)); + // assert(isnan(s) == false); + assert(s != 0); + a = (s - s1)/s; + // assert(isnan(a) == false); + + if((rndm-a) <= 0) { + goto collis170; + } + if((rndm-a) > 0) { + goto collis17; + } + + // test for the behaviour of the delta-delta system + collis13: + if (k5 == 0) { + goto collis160; + } + goto collis17; + + // test on the inelasticity + collis18: + standardRandom(&rndm, &(hazard->igraine[0])); + s = lowEnergy(ecm,0,iso); + // assert(isnan(ecm) == false); + // assert(isnan(iso) == false); + a = deltaProductionCrossSection(ecm,iso); + a = s/(s+a); + if(rndm > a) { + goto collis100; + } + + // elastic scattering + // fit of the b parameter in the differential x-section: + // taken from :j.c.,d.l'hote, j.vandermeulen,nimb111(1996)215 + // for pn :improvement of the backward scattering according + // j.c et al, prc56(1997)2431 + collis17: + assert((std::pow(ecm,2) - 4.0*xm2) >= 0); + pl = 0.5*ecm*std::sqrt(std::pow(ecm,2) - 4.0*xm2)/xm; + x = 0.001*pl; + // assert(isnan(x) == false); + + if (iso == 0) { + goto collis80; + } + if (pl > 2000.0) { + goto collis81; + } + x = x*x; + x = std::pow(x,4); + b = 5.5e-6*x/(7.7+x); + goto collis82; + + collis81: + b = (5.34 + 0.67*(x-2.0))*1.e-6; + goto collis82; + + collis80: + if (pl < 800.) { + b = (7.16 - 1.63*x)*1.e-6; + b = b/(1.0 + std::exp(-(x - 0.45)/0.05)); + } + else { + if (pl < 1100.) { + b = (9.87 - 4.88*x)*1.e-6; + } + else { + b = (3.68 + 0.76*x)*1.e-6; + } + } + + collis82: + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + + btmax = 4.0*psq*b; + z = std::exp(-btmax); + standardRandom(&rndm, &(hazard->igraine[1])); + ranres = rndm; + y = 1.0 - rndm*(1.0 - z); + assert(y >= 0); + t = std::log(y)/b; + iexpi = 0; + + if (((m1+m2) == 0) && (iso == 0)) { + apt = 1.0; + if (pl > 800.) { + apt = std::pow((800.0/pl),2); + cpt = amax1(6.23*std::exp(-1.79*x),0.3); + alphac = 100.0*1.e-6; + aaa = (1 + apt)*(1 - std::exp(-btmax))/b; + argu = psq*alphac; + + if (argu >= 8) { + argu = 0.0; + } + else { + argu = std::exp(-4.0*argu); + } + + aac = cpt*(1.0 - argu)/alphac; + fracpn = aaa/(aac + aaa); + standardRandom(&rndm, &(hazard->igraine[7])); + if (rndm > fracpn) { + z = std::exp(-4.0*psq*alphac); + iexpi = 1; + // y = 1.0 - ranres*(10.0 - z); + y = 1.0 - ranres*(1.0 - z); + assert(y >= 0); + t = std::log(y)/alphac; + } + } + } + + ctet = 1.0 + 0.5*t/psq; + if(std::fabs(ctet) > 1.0) { + ctet = sign(1.0,ctet); + } + + assert((1.0 - std::pow(ctet,2)) >= 0); + stet = std::sqrt(1.0 - std::pow(ctet,2)); + standardRandom(&rndm, &(hazard->igraine[2])); + fi = 6.2832*rndm; + cfi = std::cos(fi); + sfi = std::sin(fi); + xx = p1*p1 + p2*p2; + zz = p3*p3; + + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + + if(xx >= (zz*1.0e-8)) { + assert(xx >= 0); + yn=std::sqrt(xx); + zn=yn*pnorm; + assert(pnorm != 0); + ez[0] = p1/pnorm; // ez(1) -> ez[0] and so on... + ez[1] = p2/pnorm; + ez[2] = p3/pnorm; + assert(yn != 0); + ex[0] = p2/yn; + ex[1] = -p1/yn; + ex[2] = 0.0; + assert(zn != 0); + ey[0] = p1*p3/zn; + ey[1] = p2*p3/zn; + ey[2] = -xx/zn; + p1 = (ex[0]*cfi*stet + ey[0]*sfi*stet + ez[0]*ctet)*pnorm; + p2 = (ex[1]*cfi*stet + ey[1]*sfi*stet + ez[1]*ctet)*pnorm; + p3 = (ex[2]*cfi*stet + ey[2]*sfi*stet + ez[2]*ctet)*pnorm; + } + else { + p1 = p3*cfi*stet; + p2 = p3*sfi*stet; + p3 = p3*ctet; + } + pout11 = -p1; + pout12 = -p2; + pout13 = -p3; + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + + // backward scattering according the parametrization of ref + // prc56(1997)1 + + if(((m1+m2) != 1) || (iso == 0)) { + standardRandom(&rndm, &(hazard->igraine[7])); + apt = 1.0; + if (pl > 800.0) { + apt = std::pow((800.0/pl),2); + } + if ((iexpi == 1) || (rndm > (1./(1.+apt)))) { + ii = is1; + is1 = is2; + is2 = ii; + } + } + + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + goto exitRoutine; + + // delta production + // the production is not isotropic in this version + // it has the same std::exp(b*t) structure as the nn elastic scatteringp-n19170 + // (formula 2.3 of j.cugnon et al, nucl phys a352(1981)505) + // parametrization of b taken from ref. prc56(1997)2431 + collis100: + if (k4 != 1) { + goto collis101; + } + xmdel = 1232.0 + bl8->ramass; + goto collis103; + collis101: + //call ribm(rndm,iy10) + standardRandom(&rndm, &(hazard->igraine[9])); + + y = std::tan(3.1415926*(rndm - 0.5)); + x = 1232.0 + 0.5*130.0*y + bl8->ramass; + if (x < (xm+xpi+2.0)) { + goto collis101; + } + if (ecm < (x+xm+1.)) { + goto collis101; + } + + // generation of the delta mass with the penetration factor + // (see prc56(1997)2431) + y = std::pow(ecm,2); + q2 = (y - std::pow(1076.0,2))*(y - std::pow(800.0,2))/y/4.0; + assert(q2 >= 0); + q3 = std::pow((std::sqrt(q2)),3); + f3max = q3/(q3 + std::pow(180.0,3)); + y = std::pow(x,2); + q2 = (y - std::pow(1076.0,2))*(y - std::pow(800.0,2))/y/4.0; + assert(q2 >= 0); + q3 = std::pow((std::sqrt(q2)),3); + f3 = q3/(q3 + std::pow(180.0,3)); + + standardRandom(&rndm, &(hazard->igraine[10])); + if (rndm > (f3/f3max)) { + goto collis101; + } + xmdel = x; + + collis103: + pin = pnorm; + pnorm = pcm(ecm,xm,xmdel); + // assert(isnan(pnorm) == false); + if (pnorm <= 0) { + pnorm = 0.000001; + } + index = 0; + index2 = 0; + + standardRandom(&rndm, &(hazard->igraine[3])); + if (rndm < 0.5) { + index = 1; + } + + if (iso == 0) { + standardRandom(&rndm, &(hazard->igraine[4])); + if (rndm < 0.5) { + index2 = 1; + } + } + + standardRandom(&rndm, &(hazard->igraine[5])); + assert((std::pow(ecm,2) - 4.0*xm2) >= 0); + x = 0.001*0.5*ecm*std::sqrt(std::pow(ecm,2) - 4.0*xm2)/xm; + if(x < 1.4) { + b = (5.287/(1.0 + std::exp((1.3 - x)/0.05)))*1.e-6; + } + else { + b = (4.65 + 0.706*(x - 1.4))*1.e-6; + } + + xkh = 2.0*b*pin*pnorm; + ctet=1.0 + std::log(1.0 - rndm*(1.0 - std::exp(-2.0*xkh)))/xkh; + if(std::fabs(ctet) > 1.0) { + ctet = sign(1.0,ctet); + } + + assert((1.0 - std::pow(ctet,2)) >= 0); + stet = std::sqrt(1.0 - std::pow(ctet,2)); + standardRandom(&rndm, &(hazard->igraine[6])); + fi = 6.2832*rndm; + cfi = std::cos(fi); + sfi = std::sin(fi); + + // delta production: correction of the angular distribution 02/09/02 + xx = p1*p1 + p2*p2; + zz = p3*p3; + if(xx >= (zz*1.0e-8)) { + assert(xx >= 0); + yn = std::sqrt(xx); + zn = yn*pin; + ez[0] = p1/pin; // ez(1) -> ez[0] and so on... + ez[1] = p2/pin; + ez[2] = p3/pin; + ex[0] = p2/yn; + ex[1] = -p1/yn; + ex[2] = 0.0; + ey[0] = p1*p3/zn; + ey[1] = p2*p3/zn; + ey[2] = -xx/zn; + xp1 = (ex[0]*cfi*stet + ey[0]*sfi*stet + ez[0]*ctet)*pnorm; + xp2 = (ex[1]*cfi*stet + ey[1]*sfi*stet + ez[1]*ctet)*pnorm; + xp3 = (ex[2]*cfi*stet + ey[2]*sfi*stet + ez[2]*ctet)*pnorm; + } + else { + xp1 = pnorm*stet*cfi; + xp2 = pnorm*stet*sfi; + xp3 = pnorm*ctet; + } + // end of correction angular distribution of delta production + + assert((xp1*xp1 + xp2*xp2 + xp3*xp3 + xm*xm) >= 0); + e3 = std::sqrt(xp1*xp1 + xp2*xp2 + xp3*xp3 + xm*xm); + if(k4 != 0) { + goto collis161; + } + + // decay of the delta particle (k4=0) + np = 1; + ip = 0; + qq[0] = xp1; //qq(1) -> qq[0] + qq[1] = xp2; + qq[2] = xp3; + assert((xp1*xp1 + xp2*xp2 + xp3*xp3 + xmdel*xmdel) >= 0); + qq4 = std::sqrt(xp1*xp1 + xp2*xp2 + xp3*xp3 + xmdel*xmdel); + heli = std::pow(ctet,2); + + if(verboseLevel > 3) { + G4cout <<"Caling decay2 from collis" << G4endl; + } + decay2(&qq[0],&qq[1],&qq[2],&qq4,&q1,&q2,&q3,&q4,&xmdel,&xm,&xpi,&heli); + + if(index != 0) { + p1 = qq[0]; //qq(1) -> qq[0] and so on... + p2 = qq[1]; + p3 = qq[2]; + pout11 = -xp1; + pout12 = -xp2; + pout13 = -xp3; + eout1 = e3; + } + else { + pout11 = qq[0]; //qq(1) -> qq[0] and so on... + pout12 = qq[1]; + pout13 = qq[2]; + eout1 = e1; + p1 = -xp1; + p2 = -xp2; + p3 = -xp3; + e1 = e3; + } + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + + if (iso == 0) { + goto collis150; + } + if (rndm > 0.333333) { + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + goto exitRoutine; + } + + is1 = -is1; + ip = -2*is1; + + collis150: + if (index == 1) { + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + goto exitRoutine; + } + if (rndm < 0.5) { + goto collis152; + } + is1 = 1; + is2 = 1; + ip = -2; + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + goto exitRoutine; + + collis152: + is1 = -1; + is2 = -1; + ip = 2; + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + goto exitRoutine; + + collis160: + pout11 = -p1; + pout12 = -p2; + pout13 = -p3; + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + goto exitRoutine; + + // long-lived delta + collis161: + if(index != 1) { + p1=xp1; + p2=xp2; + p3=xp3; + eout1=e3; + e1=ecm-eout1; + m1=1; + } + else { + p1=-xp1; + p2=-xp2; + p3=-xp3; + eout1=e3; + e1=ecm-eout1; + m1=1; + } + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + + // symmetrization of charges in pn -> n delta + // the test on "index" above symetrizes the excitation of one + // of the nucleons with respect to the delta excitation + // (see note 16/10/97) + if (iso == 0) { + if (index2 == 1) { + isi = is1; + is1 = is2; + is2 = isi; + } + goto collis160; + } + + bl9->hel[bl9->l1] = std::pow(ctet,2); + standardRandom(&rndm, &(hazard->igraine[7])); + if (rndm < 0.25) { + goto collis160; + } + + is1=3*is1*m1-(1-m1)*is1; + is2=3*is2*m2-(1-m2)*is2; + goto collis160; + + // recombination process + collis170: + pnorm = pcm(ecm,xm,xm); + // assert(isnan(pnorm) == false); + standardRandom(&rndm, &(hazard->igraine[11])); + ctet = -1.0 + 2.0*rndm; + if(std::fabs(ctet) > 1.0) { + ctet = sign(1.0,ctet); + } + assert((1.0 - ctet*ctet) >= 0); + stet = std::sqrt(1.0 - ctet*ctet); + standardRandom(&rndm, &(hazard->igraine[12])); + fi = 6.2832*rndm; + cfi = std::cos(fi); + sfi = std::sin(fi); + p1 = pnorm*stet*cfi; + p2 = pnorm*stet*sfi; + p3 = pnorm*ctet; + m1 = 0; + m2 = 0; + assert((p1*p1 + p2*p2 + p3*p3 + xm*xm) >= 0); + e1 = std::sqrt(p1*p1 + p2*p2 + p3*p3 + xm*xm); + eout1 = ecm - e1; + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + + if (iso == 0) { + goto collis160; + } + is1=iso/2; + is2=iso/2; + goto collis160; + + exitRoutine: + debugOutput = am(p1,p2,p3,e1); + // assert(isnan(debugOutput) == false); + (*p1_p) = p1;// Was pq + (*p2_p) = p2; + (*p3_p) = p3; + + (*e1_p) = e1; + + debugOutput = am(pout11,pout12,pout13,eout1); + // assert(isnan(debugOutput) == false); + (*pout11_p) = pout11; + (*pout12_p) = pout12; + (*pout13_p) = pout13; + (*eout1_p) = eout1; + + (*q1_p) = q1; + (*q2_p) = q2; + (*q3_p) = q3; + (*q4_p) = q4; + + (*np_p) = np; + (*ip_p) = np; + + (*k2_p) = k2; + (*k3_p) = k2; + (*k4_p) = k4; + (*k5_p) = k5; + + (*m1_p) = m1; + (*m2_p) = m2; + + (*is1_p) = is1; + (*is2_p) = is2; +} + +void G4Incl::decay2(G4double *p1_p, G4double *p2_p, G4double *p3_p, G4double *wp_p, G4double *q1_p, + G4double *q2_p, G4double *q3_p, G4double *wq_p, G4double *xi_p, G4double *x1_p, G4double *x2_p, + G4double *hel_p) +{ + // This routine describes the anisotropic decay of a particle of mass + // xi into 2 particles of masses x1,x2 + // the anisotropy is supposed to follow a 1+3*hel*(std::cos(theta))**2 + // law with respect to the direction of the incoming particle + // in the input, p1,p2,p3 is the momentum of particle xi + // in the output, p1,p2,p3 is the momentum of particle x1 , while + // q1,q2,q3 is the momentum of particle x2 + + // Temporary variables for input/output data: + + G4double p1 = (*p1_p); + G4double p2 = (*p2_p); + G4double p3 = (*p3_p); + + G4double q1 = (*q1_p); + G4double q2 = (*q2_p); + G4double q3 = (*q3_p); + + G4double wp = (*wp_p); + G4double wq = (*wq_p); + + G4double xi = (*xi_p); + G4double x1 = (*x1_p); + G4double x2 = (*x2_p); + G4double hel = (*hel_p); + + G4double rndm; + + G4double xe = wp; + G4double b1 = p1/xe; + G4double b2 = p2/xe; + G4double b3 = p3/xe; + // PK: NaN workaround + // if(((std::pow(xi,2)-std::pow(x1+x2,2))*(std::pow(xi,2)-std::pow(x1-x2,2))) < 0) { + // xi = xi+x2+100.0; + // } + // PK + G4double xq = pcm(xi,x1,x2); + // assert(isnan(xq) == false); + G4double ctet, stet; + + G4double fi, cfi, sfi; + G4double sal, cal; + G4double t1, t2; + G4double w1; + G4double beta; + + if(verboseLevel > 3) { + G4cout <<"Delta decay in progress: " << G4endl; + G4cout <<"Starting values: " << G4endl; + G4cout <<"p1 = " << p1 << " p2 = " << p2 << " p3 = " << p3 << " wp = " << wp << G4endl; + G4cout <<"q1 = " << q1 << " q2 = " << q2 << " q3 = " << q3 << " wq = " << wq << G4endl; + } + + do { + standardRandom(&rndm, &(hazard->igraine[7])); + ctet = -1.0 + 2.0*rndm; + if(std::fabs(ctet) > 1.0) { + ctet = sign(1.0,ctet); + } + assert((1.0 - std::pow(ctet,2)) >= 0); + stet = std::sqrt(1.0 - std::pow(ctet,2)); + standardRandom(&rndm, &(hazard->igraine[9])); + } while(rndm > ((1.0 + 3.0*hel*std::pow(ctet,2))/(1.0 + 3.0*hel))); + + standardRandom(&rndm, &(hazard->igraine[8])); + fi = 6.2832*rndm; + cfi = std::cos(fi); + sfi = std::sin(fi); + assert((b1*b1+b2*b2+b3*b3) >= 0); + beta = std::sqrt(b1*b1+b2*b2+b3*b3); + // assert(isnan(beta) == false); + assert(beta != 0); + + assert((std::pow(b1,2) + std::pow(b2,2)) >= 0); + sal = std::sqrt(std::pow(b1,2) + std::pow(b2,2))/beta; + cal = b3/beta; + + if((beta >= 1.0e-10) || (sal >= 1.0e-6)) { + t1 = ctet + cal*stet*sfi/sal; + assert(sal != 0); + t2 = stet/sal; + q1 = xq*(b1*t1 + b2*t2*cfi)/beta; + q2 = xq*(b2*t1 - b1*t2*cfi)/beta; + q3 = xq*(b3*t1/beta - t2*sfi); + } + else { + q1 = xq*stet*cfi; + q2 = xq*stet*sfi; + q3 = xq*ctet; + } + + hel = 0.0; + w1 = q1*q1 + q2*q2 + q3*q3; + assert((w1 + x2*x2) >= 0); + wq = std::sqrt(w1 + x2*x2); + p1 = -q1; + p2 = -q2; + p3 = -q3; + assert((w1+x1*x1) >= 0); + wp = std::sqrt(w1+x1*x1); + loren(&q1, &q2, &q3, &b1, &b2, &b3, &wq); + loren(&p1, &p2, &p3, &b1, &b2, &b3, &wp); + + // Return calculated values: + (*p1_p) = p1; + (*p2_p) = p2; + (*p3_p) = p3; + + (*q1_p) = q1; + (*q2_p) = q2; + (*q3_p) = q3; + + (*wp_p) = wp; + (*wq_p) = wq; + + (*xi_p) = xi; + (*x1_p) = x1; + (*x2_p) = x2; + (*hel_p) = hel; +} + +void G4Incl::time(G4int i, G4int j) +{ + // time + G4double t[10]; + + t[0] = bl1->p1[i]/bl1->eps[i] - bl1->p1[j]/bl1->eps[j]; // t(1)->t[0] + t[1] = bl1->p2[i]/bl1->eps[i] - bl1->p2[j]/bl1->eps[j]; // t(2)->t[1] and so on ... + t[2] = bl1->p3[i]/bl1->eps[i] - bl1->p3[j]/bl1->eps[j]; + t[3] = bl3->x1[i] - bl3->x1[j]; + t[4] = bl3->x2[i] - bl3->x2[j]; + t[5] = bl3->x3[i] - bl3->x3[j]; + + t[6] = t[0]*t[3] + t[1]*t[4] + t[2]*t[5]; + t[9] = t[0]*t[0] + t[1]*t[1] + t[2]*t[2]; + + if(t[9] <= 1.0e-10) { + bl1->ta = 100000; + } + else { + bl1->ta = -1.0*t[6]/t[9]; + } + + bl3->rab2 = t[3]*t[3] + t[4]*t[4] + t[5]*t[5] + bl1->ta*t[6]; +} + +void G4Incl::newt(G4int l1, G4int l2) +{ + G4int ig, id, kg, kd; + G4int iy, ix; + G4double E; + + G4int ia = bl3->ia1 + bl3->ia2; + for(G4int i = 1; i <= ia; i++) { // do 52 i=1,ia + if (bl5->nesc[i] != 0) { + continue; + } + // if (i-l2) 53,52,54 + if((i-l2) < 0) { + goto newt53; + } + if((i-l2) == 0) { + continue; + } + if((i-l2) > 0) { + goto newt54; + } + newt53: + ig=l2; + id=i; + kg=l1; + kd=i; + goto newt55; + newt54: + // if (i-l1) 56,52,57 + if((i-l1) == 0) { + continue; + } + if((i-l1) < 0) { + goto newt56; + } + if((i-l1) > 0) { + goto newt57; + } + newt56: + kg=l1; + kd=i; + goto newt58; + newt57: + kg=i; + kd=l1; + newt58: + ig=i; + id=l2; + newt55: + // call time(ig,id) + time(ig, id); + if (bl1->ta < 0.0) { + goto newt50; + } + if(bl1->ta > bl4->tmax5) { + goto newt50; + } + if (bl1->ta < bl5->tlg[l1]) { // tlg(12)->tlg[11] + goto newt50; + } + if ((bl1->ind1[ig]+bl1->ind1[id]) > 0) { + goto newt60; + } + + E=am(bl1->p1[ig]+bl1->p1[id],bl1->p2[ig]+bl1->p2[id],bl1->p3[ig]+bl1->p3[id],bl1->eps[ig]+bl1->eps[id]); + if (E < 1925.0) { + goto newt50; + } + iy=bl1->ind1[ig]+bl1->ind1[id]; + if (iy != 1) { + goto newt61; + } + ix=ig*(bl1->ind1[ig])+id*(bl1->ind1[id]); + bl6->xx10=am(bl1->p1[ix],bl1->p2[ix],bl1->p3[ix],bl1->eps[ix]); + bl6->isa=bl1->ind2[ix]; + newt61: + // assert(isnan(E) == false); + // assert(isnan(iy) == false); + // assert(isnan(bl1->ind2[ig]) == false); + // assert(isnan(bl1->ind2[id]) == false); + if ((31.*(bl3->rab2)) > totalCrossSection(E,iy,bl1->ind2[ig]+bl1->ind2[id])) { + goto newt50; + } + newt60: // continue + bl2->k=bl2->k+1; + bl2->crois[bl2->k]=bl1->ta; + bl2->ind[bl2->k]=ig; + bl2->jnd[bl2->k]=id; + newt50: + time(kg,kd); + if (bl1->ta < 0.) { + continue; + } + if(bl1->ta > bl4->tmax5) { + continue; + } + if (bl1->ta < bl5->tlg[10]) { //tlg(11)->tlg[10] + continue; + } + if ((bl1->ind1[kg]+bl1->ind1[kd]) > 0) { + goto newt62; + } + E=am(bl1->p1[kg]+bl1->p1[kd],bl1->p2[kg]+bl1->p2[kd],bl1->p3[kg]+bl1->p3[kd],bl1->eps[kg]+bl1->eps[kd]); + if (E < 1925.) { + continue; + } + iy=bl1->ind1[kg]+bl1->ind1[kd]; + if (iy != 1) { + goto newt63; + } + ix=kg*(bl1->ind1[kg])+kd*(bl1->ind1[kd]); + bl6->xx10=am(bl1->p1[ix],bl1->p2[ix],bl1->p3[ix],bl1->eps[ix]); + bl6->isa=bl1->ind2[ix]; + newt63: + // assert(isnan(E) == false); + // assert(isnan(iy) == false); + // assert(isnan(bl1->ind2[kg]) == false); + // assert(isnan(bl1->ind2[kd]) == false); + if ((31.*(bl3->rab2)) > totalCrossSection(E,iy,bl1->ind2[kg]+bl1->ind2[kd])) { + continue; + } + newt62: + bl2->k=bl2->k+1; + bl2->crois[bl2->k]=bl1->ta; + bl2->ind[bl2->k]=kg; + bl2->jnd[bl2->k]=kd; + } +} + +void G4Incl::new1(G4int l1) +{ + G4int ia, iy, ix; + G4double E; + + ia=bl3->ia1+bl3->ia2; + for(G4int i = 1; i <= ia; i++) { + if (bl5->nesc[i] != 0) { + continue; + } + //if(i-l1) 53,52,54 + if((i-l1) < 0) { + goto new153; + } + if((i-l1) == 0) { + continue; + } + if((i-l1) > 0) { + goto new154; + } + new153: + time(i, l1); + if(bl1->ta < 0.0) { + continue; + } + if(bl1->ta > bl4->tmax5) { + continue; + } + if (bl1->ind1[i]+bl1->ind1[l1] > 0) { + goto new160; + } + E=am(bl1->p1[i]+bl1->p1[l1],bl1->p2[i]+bl1->p2[l1],bl1->p3[i]+bl1->p3[l1],bl1->eps[i]+bl1->eps[l1]); + if (E < 1925.0) { + continue; + } + iy=bl1->ind1[i]+bl1->ind1[l1]; + if (iy != 1) { + goto new161; + } + ix=i*(bl1->ind1[i])+l1*(bl1->ind1[l1]); + bl6->xx10=am(bl1->p1[ix],bl1->p2[ix],bl1->p3[ix],bl1->eps[ix]); + bl6->isa=bl1->ind2[ix]; + new161: + // assert(isnan(E) == false); + // assert(isnan(iy) == false); + // assert(isnan(bl1->ind2[i]) == false); + // assert(isnan(bl1->ind2[l1]) == false); + if ((31.*(bl3->rab2)) > totalCrossSection(E ,iy,bl1->ind2[i]+bl1->ind2[l1])) { + continue; + } + new160: //continue + bl2->k=bl2->k+1; + bl2->crois[bl2->k]=bl1->ta; + bl2->ind[bl2->k]=l1; + bl2->jnd[bl2->k]=i; + continue; + new154: + time(i, l1); + if(bl1->ta < 0.) { + continue; + } + if(bl1->ta > bl4->tmax5) { + continue; + } + if ((bl1->ind1[i]+bl1->ind1[l1]) > 0) { + goto new170; + } + E=am(bl1->p1[i]+bl1->p1[l1],bl1->p2[i]+bl1->p2[l1],bl1->p3[i]+bl1->p3[l1],bl1->eps[i]+bl1->eps[l1]); + if (E < 1925.0) { + continue; + } + iy=bl1->ind1[i]+bl1->ind1[l1]; + if (iy != 1) { + goto new171; + } + ix=i*(bl1->ind1[i])+l1*(bl1->ind1[l1]); + bl6->xx10=am(bl1->p1[ix],bl1->p2[ix],bl1->p3[ix],bl1->eps[ix]); + bl6->isa=bl1->ind2[ix]; + new171: + // assert(isnan(E) == false); + // assert(isnan(iy) == false); + // assert(isnan(bl1->ind2[i]) == false); + // assert(isnan(bl1->ind2[l1]) == false); + if ((31.0*(bl3->rab2)) > totalCrossSection(E,iy,bl1->ind2[i]+bl1->ind2[l1])) { + continue; + } + new170: + bl2->k=bl2->k+1; + bl2->crois[bl2->k]=bl1->ta; + bl2->ind[bl2->k]=i; + bl2->jnd[bl2->k]=l1; + } + // std::ofstream newout("new1Dump.out"); + // dumpBl2(newout); + // dumpBl5(newout); + // newout.close(); + // exit(0); +} + +void G4Incl::new2(G4double y1, G4double y2, G4double y3, G4double q1, G4double q2, G4double q3, + G4double q4, G4int npion, G4int l1) +{ + G4double t[10]; + + G4int ia = bl3->ia1 + bl3->ia2; + for(G4int i = 1; i <= ia; i++) { + if (bl5->nesc[i] != 0) { + continue; + } + if(i == l1) { + continue; + } + if(bl1->ind1[i] == 1) { + continue; + } + + assert(q4 != 0); + assert(bl1->eps[i] != 0); + t[0] = bl1->p1[i]/bl1->eps[i] - q1/q4; + t[1] = bl1->p2[i]/bl1->eps[i] - q2/q4; + t[2] = bl1->p3[i]/bl1->eps[i] - q3/q4; + t[3] = bl3->x1[i] - y1; + t[4] = bl3->x2[i] - y2; + t[5] = bl3->x3[i] - y3; + t[6] = t[0]*t[3] + t[1]*t[4] + t[2]*t[5]; + + if(t[6] > 0.0) { + continue; + } + + t[9] = t[0]*t[0] + t[1]*t[1] + t[2]*t[2]; + bl1->ta = -1 * t[6]/t[9]; + if(bl1->ta > bl4->tmax5) { + continue; + } + G4double xx2 = t[3]*t[3] + t[4]*t[4] + t[5]*t[5] + (bl1->ta)*t[6]; + G4double E = std::sqrt(std::pow((bl1->eps[i]+q4),2) - std::pow((bl1->p1[i]+q1),2) - std::pow((bl1->p2[i]+q2),2) - std::pow((bl1->p3[i]+q3),2)); + // assert(isnan(E) == false); + if ((31.0*xx2) > pionNucleonCrossSection(E)) { + continue; + } + bl2->k=bl2->k+1; + bl2->crois[bl2->k]=bl1->ta; + bl2->ind[bl2->k]=ia+npion; + bl2->jnd[bl2->k]=i; + } +} + +void G4Incl::new3(G4double y1, G4double y2, G4double y3, G4double q1, G4double q2, G4double q3, + G4double q4, G4int npion, G4int l1) +{ + G4double t[10]; + G4double E, xx2; + G4int ia; + + if(bl5->nesc[l1] > 0) { + return; + } + + assert(q4 != 0); + assert(bl1->eps[l1] != 0); + t[0] = bl1->p1[l1]/bl1->eps[l1] - q1/q4; + t[1] = bl1->p2[l1]/bl1->eps[l1] - q2/q4; + t[2] = bl1->p3[l1]/bl1->eps[l1] - q3/q4; + t[3] = bl3->x1[l1] - y1; + t[4] = bl3->x2[l1] - y2; + t[5] = bl3->x3[l1] - y3; + t[6] = t[0]*t[3] + t[1]*t[4] + t[2]*t[5]; + + if(t[6] > 0.0) { + return; + } + + t[9] = t[0]*t[0] + t[1]*t[1] + t[2]*t[2]; + bl1->ta = -1 * t[6]/t[9]; + if(bl1->ta > bl4->tmax5) { + return; + } + if (bl1->ta < bl5->tlg[l1]) { + return; + } + xx2 = t[3]*t[3] + t[4]*t[4] + t[5]*t[5] + (bl1->ta)*t[6]; + E = std::sqrt(std::pow((bl1->eps[l1]+q4),2) - std::pow((bl1->p1[l1]+q1),2) - std::pow((bl1->p2[l1]+q2),2) - std::pow((bl1->p3[l1]+q3),2)); + // assert(isnan(E) == false); + if ((31.0*xx2) > pionNucleonCrossSection(E)) { + return; + } + + bl2->k = bl2->k + 1; + bl2->crois[bl2->k] = bl1->ta; + ia = bl3->ia1+bl3->ia2; + bl2->ind[bl2->k] = ia + npion; + bl2->jnd[bl2->k] = l1; +} + +void G4Incl::loren(G4double *q1, G4double *q2, G4double *q3, G4double *b1, G4double *b2, G4double *b3, G4double *E) +{ + // Transforms momentum q and energy E from a frame moving with + // velocity beta + + G4double bb2 = (*b1) * (*b1) + (*b2) * (*b2) + (*b3) * (*b3); + G4double bq = (*b1) * (*q1) + (*b2) * (*q2) + (*b3) * (*q3); + G4double gam2 = 1.0/(1.0 - bb2); + G4double gam = std::sqrt(gam2); + G4double c = gam2/(gam + 1.0); + G4double g = c * bq + gam*(*E); + (*E) = gam * ((*E) + bq); + (*q1) = (*q1) + (*b1) * g; + (*q2) = (*q2) + (*b2) * g; + (*q3) = (*q3) + (*b3) * g; +} + +G4double G4Incl::pauliBlocking(G4int l, G4double xr, G4double pr) +{ + // G4int l = (*l_p); + // G4double xr = (*xr_p); + // G4double pr = (*pr_p); + // G4double f = (*f_p); + + // This subroutine calculates the occupation in phase space around + // nucleon l , by counting the particles in a volume around l the + // volume is the product of a sphere of radius xr in r-space by a + // sphere of radius pr in momentum space average is taken on the spin + // only + + // 3756 common/bl1/p1(300),p2(300),p3(300),eps(300),ind1(300),ind2(300),tap-n24950 + // 3757 common/bl3/r1,r2,x1(300),x2(300),x3(300),ia1,ia2,rab2 p-n24960 + // 3758 common/bl5/tlg(300),nesc(300) p-n24970 + // 3759 common/saxw/ xx(30,500),yy(30,500),ss(30,500),nbpG4inter,imat + // 3760 common/ws/r0,adif,rmaxws,drws,nosurf,xfoisa,npaulstr,bmax + + G4double pmod, pr2; + G4double xr2, rdeq, dx2, dp2; + G4double rs, vol; + G4int nl; + G4int ia; + + if (ws->npaulstr == 2) { + return 0.0; + } + + if (ws->npaulstr == 1) { + // pauli strict + pmod = std::sqrt(std::pow(bl1->p1[l],2) + std::pow(bl1->p2[l],2) + std::pow(bl1->p3[l],2)); + if (pmod < 270.0) { + return 1.0; + } + else { + return 0.0; + } + } + else { + // Statistic Pauli blocking + xr2 = xr*xr; + pr2 = pr*pr; + vol = std::pow((40.0*3.1415926/3.0),2) * (std::pow((xr*pr)/(2.0*3.1415926*197.13),3)); + rs = std::sqrt(bl3->x1[l]*bl3->x1[l] + bl3->x2[l]*bl3->x2[l] + bl3->x3[l]*bl3->x3[l]); + // assert(isnan(rs) == false); + if (ws->nosurf <= 0) { + // modifs a.b.: r2 -> rmaxws pour la densite en w.s. + rdeq = ws->rmaxws; + } + else { + rdeq = ws->r0; + } + + if ((rs - xr) <= rdeq) { + if ((rs + xr) > rdeq) { + vol = vol*0.5*(rdeq-rs+xr)/xr; + } + + ia = bl3->ia1 + bl3->ia2; + nl = 0; + + for(G4int i = 1; i <= ia; i++) { + dx2 = std::pow((bl3->x1[l]-bl3->x1[i]),2) + std::pow((bl3->x2[l]-bl3->x2[i]),2) + std::pow((bl3->x3[l]-bl3->x3[i]),2); + dp2 = std::pow((bl1->p1[l]-bl1->p1[i]),2) + std::pow((bl1->p2[l]-bl1->p2[i]),2) + std::pow((bl1->p3[l]-bl1->p3[i]),2); + + if((bl5->nesc[i] > 0) || (bl1->ind1[i] > 0) || (bl1->ind2[i] != bl1->ind2[l]) || (dx2 > xr2) || (dp2 > pr2)) { + if(((nl - 1)/vol/2.0) > 1.0) { + return 1.0; + } + else { + return ((nl - 1)/vol/2.0); + } + } + nl = nl + 1; + } + } + else { + return 0.0; + } + } + + return 0.0; // The algorithm is not supposed to reach this point. +} + +G4double G4Incl::lowEnergy(G4double E, G4double m, G4double i) +{ + // fit by j.vandermeulen + // low enrgy fit of j.c., d. l'hote, j. vdm, nim b111(1996)215 + // i = 2,0,-2 for pp,pn,nn + // m = 0,1,2 for nucleon-nucleon,nucleon-delta,delta,delta + + G4double scale = 1.0; + G4double plab = E*std::sqrt(E*E-3.52e6)/1876.6; + G4double p1 = 0.001*plab; + G4double alp; + + if(plab > 2000.0) { + // goto sel13; + // sel13: + return ((77.0/(p1 + 1.5))*scale); + } + + if((m-1) < 0) { + if (i == 0) { + if (plab < 800.0) { + if (plab < 450.0) { + alp = std::log(p1); + return(6.3555*std::exp(-3.2481*alp - 0.377*alp*alp)); + } + else { + return((33.0 + 196.0*std::sqrt(std::fabs(std::pow((p1 - 0.95),5))))*scale); + } + } + else { + return(31.0/std::sqrt(p1)*scale); + } + } + } + + if (plab < 800.0) { + if (plab < 440.0) { + return(34.0*std::pow((p1/0.4),(-2.104))); + } + else { + return((23.5 + 1000.*std::pow((p1 - 0.7),4))*scale); + } + } + else if(plab > 2000.0) { + return ((77.0/(p1 + 1.5))*scale); + } + else { + return((1250.0/(50.0 + p1) - 4.0*std::pow((p1 - 1.3),2))*scale); + } +} + +G4double G4Incl::totalCrossSection(G4double E, G4int m, G4int i) +{ + // total cross-sections + // i=2,0,-2 for pp,pn,nn + // m=0,1,2 for nucleon-nucleon,nucleon-delta,delta,delta + + G4double stotResult; + G4double sine = 0.0; + + if((m-1) < 0) { + // assert(isnan(E) == false); + // assert(isnan(i) == false); + sine = deltaProductionCrossSection(E,int(i)); + } + + if((m-1) == 0) { + sine = srec(E,(bl6->xx10),i,int(bl6->isa)); + } + + if((m-1) > 0) { + sine = 0.0; + } + + stotResult = sine + lowEnergy(E,m,i); + // assert(isnan(stotResult) == false); + return stotResult; +} + +G4double G4Incl::srec(G4double Ein, G4double d, G4int i, G4int isa) +{ + G4double E = Ein; + G4double s; + G4double x, y; + G4double srecResult; + + if (i*i == 16) { + return 0.0; + } + + if(E <= (938.3 + d)) { + return 0.0; + } + else { + if(E < (938.3 + d + 2.0)) { + E = 938.3 + d + 2.0; + } + s = E*E; + x = (s - 3.523e6)/(s - std::pow((938.3 + d),2)); + y = s/(s - std::pow((d - 938.3),2)); + // assert(isnan(E) == false); + // assert(isnan(i) == false); + srecResult = 0.5*x*y*deltaProductionCrossSection(E, i); + srecResult = srecResult*(32.0 + i*i*(isa*isa - 5))/64.0; + srecResult = srecResult/(1.0 + 0.25*i*i); + srecResult = 3.0*srecResult; //pi absorption increased also for internal pions (7/3/01) + + return srecResult; + } +} + +G4double G4Incl::deltaProductionCrossSection(G4double E, G4int i) +{ + // delta production cross-sections + // fit by j.vandermeulen + // i = 2,0,-2 for pp,pn,nn + +// G4double scali = 1.0; +// G4double plab; +// G4double p1; +// G4double sproResult; + +// G4double EE = E - bl8->rathr; + +// if(EE*EE-3.53e6 < 0) { +// return 0.0; +// } +// else { +// plab = EE*std::sqrt(EE*EE-3.52e6)/1876.6; +// p1 = 0.001*plab; +// if (plab > 800.0) { +// //goto spro1; +// // spro1: +// if (i*i == 4) { +// // goto spro10; +// //spro10: +// if (plab < 2000.0) { +// // goto spro11; +// // spro11: +// if (plab < 1500.0) { +// // goto spro12; +// // spro12: +// sproResult = 23.5 + 24.6/(1.0 + std::exp(-10.0*p1 + 12.0)) - 1250.0/(p1+50.0)+4.0*std::pow((p1-1.3),2); +// return (sproResult*scali); +// } +// else { +// sproResult = 41.0 + 60.0*(p1 - 0.9)*std::exp(-1.2*p1) - 1250.0/(p1+50.0) + 4.*std::pow((p1 - 1.3),2); +// return (sproResult*scali); +// } +// } +// else { +// return ((41.0 + (60.0*p1 - 54.0)*std::exp(-1.2*p1) - 77.0/(p1 + 1.5))*scali); +// } +// } +// else { +// if (plab < 2000.0) { +// //goto spro2; +// // spro2: +// if (plab < 1000.0) { +// //goto spro3; +// // spro3: +// return ((33.0 + 196.0*std::sqrt(std::pow(std::fabs(p1 - 0.95),5)) - 31.1/std::sqrt(p1))*scali); +// } +// else { +// return ((24.2 + 8.9*p1 - 31.1/std::sqrt(p1))*scali); +// } +// } +// else { +// return ((42.-77./(p1+1.5))*scali); +// } +// } +// } +// // plab <= 800.0 +// else { +// return 0.0; +// } +// } + double scali=1.0; + double plab; + double p1; + double sproResult; + + double EE=E-(bl8->rathr); + + // assert(isnan(EE) == false); + if(EE*EE-3.53e6 < 0) { + goto spro22; + } + plab=EE*std::sqrt(EE*EE-3.52e6)/1876.6; + // assert(isnan(plab) == false); + p1=0.001*plab; + if (plab > 800.) { + goto spro1; + } + spro22: + sproResult=0.0; + return sproResult; + + spro1: + if (i*i == 4) { + goto spro10; + } + if (plab < 2000.) { + goto spro2; + } + sproResult=(42.-77./(p1+1.5))*scali; + return sproResult; + spro2: if (plab < 1000.) { + goto spro3; + } + sproResult=(24.2+8.9*p1-31.1/std::sqrt(p1))*scali; + return sproResult; + spro3: sproResult=(33.0 + 196.0*std::sqrt(std::pow(std::fabs(p1-0.95),5))-31.1/std::sqrt(p1))*scali; + return sproResult; + spro10: if (plab < 2000.) { + goto spro11; + } + sproResult=(41.+(60.*p1-54.)*std::exp(-1.2*p1)-77./(p1+1.5))*scali; + return sproResult; + spro11: if (plab < 1500.) { + goto spro12; + } + sproResult=41.+60.*(p1-0.9)*std::exp(-1.2*p1)-1250./(p1+50.)+4.*std::pow((p1-1.3),2); + sproResult=sproResult*scali; + return sproResult; + spro12: sproResult=23.5+24.6/(1.+std::exp(-10.*p1+12.))-1250./(p1+50.)+4.*std::pow((p1-1.3),2); + sproResult=sproResult*scali; + return sproResult; + +} + +G4double G4Incl::pionNucleonCrossSection(G4double x) +{ + // sigma(pi+ + p) in the (3,3) region + // new fit by j.vandermeulen + constant value above the (3,3) + // resonance + + G4double y = x*x; + G4double q2 = (y-std::pow(1076.0,2))*(y-std::pow(800.0,2))/y/4.0; + assert(q2 >= 0); + G4double q3, f3; + G4double spn; + + if(q2 <= 0) { + return 0.0; + } + else { + q3 = std::pow((std::sqrt(q2)),3); + f3 = q3/(q3+std::pow(180.0,3)); + spn = 326.5/(std::pow(((x - 1215.0 - bl8->ramass)*2.0/110.0),2)+1.0); + spn = spn*(1.0 - 5.0 * (bl8->ramass/1215.0)); + return (spn*f3); + } +} + +G4double G4Incl::transmissionProb(G4double E, G4double iz, G4double izn, G4double r, G4double v0) +{ + // transmission probability for a nucleon of kinetic energy + // E on the edge of the well of depth v0 (nr approximation) + // iz is the isospin of the nucleon,izn the instanteneous charge + // of the nucleus and r is the target radius + + G4double x; + G4double barr = 0.0; + + // We need enough energy to escape from the potential well. + if (E > v0) { + x = std::sqrt(E*(E-v0)); + // assert(isnan(x) == false); + barr = 4.*x/(E+E-v0+x+x); + // assert(isnan(barr) == false); + if (iz > 0) { + G4double b = izn*1.44/r; + G4double px = std::sqrt((E-v0)/b); + // assert(isnan(px) == false); + + if (px < 1.0) { + G4double g = izn/137.03*std::sqrt(2.*938.3/(E-v0))*(std::acos(px)-px*std::sqrt(1.-px*px)); + // assert(isnan(g) == false); + if (g > 35.){ + barr=0.0; + } + else { + barr = barr*std::exp(-2.0*g); + } + return barr; + } + else { + return barr; + } + } + else { + return barr; + } + } + else { + return barr; + } +} + +G4double G4Incl::ref(G4double x1, G4double x2, G4double x3, G4double p1, G4double p2, G4double p3, G4double E, G4double r2) +{ + const G4double pf = 270.339 , pf2 = 73083.4; + + G4double ref; + G4double t1, t3, t4, t5; + + G4double t2 = p1*p1+p2*p2+p3*p3; + assert(t2 >= 0); + G4double p = std::sqrt(t2); + G4double r = r2; + G4double xv; + G4double s; + + if (ws->nosurf <= 0) { + xv = p/pf; + // assert(isnan(xv) == false); + r = interpolateFunction(xv); + // assert(isnan(r) == false); + r = r*r; + if (t2 > pf2) { + r = std::pow(ws->rmaxws,2); + } + } + + t4 = x1*x1 + x2*x2 + x3*x3; + while(t4 > r) { + s = std::sqrt(r*0.99/t4); + x1 = x1*s; + x2 = x2*s; + x3 = x3*s; + t4 = x1*x1 + x2*x2 + x3*x3; + } + + t1 = x1*p1 + x2*p2 + x3*p3; + t3 = t1/t2; + + t5 = t3*t3 + (r - t4)/t2; + if (t5 > 0) { + ref = (-t3 + std::sqrt(t5))*E; + // assert(isnan(ref) == false); + return ref; + } + else { + ref = 10000.0; + return ref; + } +} + +// void G4Incl::forceAbsor(G4int nopart, G4double iarem, G4double izrem, G4double esrem, G4double erecrem, +// G4double alrem, G4double berem, G4double garem, G4double jrem) +void G4Incl::forceAbsor(G4int *nopart, G4int *iarem, G4int *izrem, G4double *esrem, G4double *erecrem, + G4double *alrem, G4double *berem, G4double *garem, G4int *jrem) +{ + // 4341 C------------------------------------------------------------------------------ + // 4342 SUBROUTINE FORCE_ABSOR(nopart,F,IAREM,IZREM,ESREM,ERECREM, + // 4343 s ALREM,BEREM,GAREM,JREM) + + // 4346 DIMENSION F(15) + // 4347 REAL*4 ia1,iz1 + // 4348 + // 4349 COMMON/hazard/ial,IY(19) + // 4350 C Dialogue with INCL for nucleus density and parameters. + // 4351 COMMON/WS/R0,ADIF,RMAXWS,DRWS,NOSURF,XFOISA,NPAULSTR,BMAX + // 4352 C RMS espace R, espace P, Fermi momentum and energy for light gauss nuc. + // 4353 COMMON/light_gaus_nuc/rms1t(9),pf1t(9),pfln(9),tfln(9),vnuc(9) + + G4int itg = 0; + G4double sep = 0.0; + G4double iz1 = 0.0; + G4double del = 0.0; + G4double bmaxt = 0.0; + G4double proba, proba_trans; + G4double alea; + + if((*nopart) != -1) { + return; + } + + bl3->ia2 = int(calincl->f[0]); // f(1) -> f[0] + sep = 6.8309; + + if(bl3->ia2 <= 4) { + if(bl3->ia2 == 2) { + itg = 6 - 1; + } + if(bl3->ia2 == 3 && calincl->f[1] == 1) { + itg = 7 - 1; + } + if(bl3->ia2 == 3 && calincl->f[1] == 2) { + itg = 8 - 1; + } + if(bl3->ia2 == 4) { + itg = 9 - 1; + } + sep = light_gaus_nuc->vnuc[itg] - light_gaus_nuc->tfln[itg]; // :::BUG::: Off-by-one!!! + } + + if((calincl->f[2] >= 10.0) && (calincl->f[2] <= 100.0)) { + if(calincl->f[6] == 1.0) { + bl3->ia1 = int(1.0); + iz1 = 1.0; + G4double fmpinc = 938.2796; + G4double pbeam2 = calincl->f[2]*(calincl->f[2] + 2.0*fmpinc); + bmaxt = ws->bmax; + proba_trans = coulombTransm(calincl->f[2],bl3->ia1,iz1,calincl->f[0],calincl->f[1]); + // assert(isnan(proba_trans) == false); + + proba = forceAbs(1,calincl->f[0],calincl->f[1],calincl->f[2],bmaxt,proba_trans); + // assert(isnan(proba) == false); + + standardRandom(&alea,&(hazard->igraine[4])); + if(alea > proba) { + return; + } + + (*iarem) = int(calincl->f[0]) + bl3->ia1; + (*izrem) = int(calincl->f[1]) + int(iz1); + + del = std::sqrt(std::pow(((calincl->f[0] + 1.0)*fmpinc + calincl->f[2]),2) - pbeam2); + // assert(isnan(del) == false); + + (*erecrem) = pbeam2/((calincl->f[0] + 1.0)*fmpinc+calincl->f[2] + del); + + (*esrem) = calincl->f[2] + sep - (*erecrem); + + (*alrem) = 0.00001; + (*berem) = 0.0; + (*garem) = 0.99999; + (*jrem) = 0; + (*nopart) = 0; + return; + } + else if((calincl->f[6] == 2) && (calincl->f[2] >= 20.0)) { + bl3->ia1 = int(1.0); + iz1 = 0.0; + G4double fmpinc = 938.2796; + G4double pbeam2 = calincl->f[2]*(calincl->f[2] + 2.0*fmpinc); + bmaxt = ws->bmax; + proba_trans = coulombTransm(calincl->f[2],bl3->ia1,iz1,calincl->f[0],calincl->f[1]); + // assert(isnan(proba_trans) == false); + + proba = forceAbs(1,calincl->f[0],calincl->f[1],calincl->f[2],bmaxt,proba_trans); + // assert(isnan(proba) == false); + + standardRandom(&alea,&(hazard->igraine[4])); + if(alea > proba) { + return; + } + + (*iarem) = int(calincl->f[0]) + bl3->ia1; + (*izrem) = int(calincl->f[1]) + int(iz1); + + del = std::sqrt(std::pow(((calincl->f[0]+1.)*fmpinc+calincl->f[2]),2)-pbeam2); + // assert(isnan(del) == false); + + (*erecrem) = pbeam2/((calincl->f[0] + 1.0)*fmpinc + calincl->f[2] + del); + + (*esrem) = calincl->f[2] + sep - (*erecrem); + + (*alrem) = 0.00001; + (*berem) = 0.0; + (*garem) = 0.99999; + (*jrem) = 0; + (*nopart) = 0; + return; + } + } // end if +} + +G4double G4Incl::forceAbs(G4double iprojo, G4double at, G4double zt, G4double ep, G4double bmax, G4double pt) +{ + // Results of xabs2 and sig_reac + G4double sig_exp, sig_incl; + G4double proba; + + G4double ap,zp,A,Z,E; + A=at; + Z=zt; + E=ep; + double sig_g = 31.41592654*bmax*bmax; + if(iprojo == 1) { + ap = 1.0; + zp = 1.0; + } + else { + ap=1.0; + zp=0.0; + } + + sig_exp = xabs2(zp, ap, zt, at, ep); + // assert(isnan(sig_exp) == false); + + sig_incl = crossSection(int(iprojo), ep, at); + // assert(isnan(sig_incl) == false); + + proba = (sig_exp-pt*sig_incl)/(pt*(sig_g - sig_incl)); + if(proba <= 0.0) { + proba = 0.0; + } + if(proba > 1.0) { + proba = 1.0; + } + + return proba; +} + +G4double G4Incl::xabs2(G4double zp, G4double ap, G4double zt, G4double at, G4double ep) +{ + G4double sig = 0.0; + + G4double Const, xzt, xat, Const1 = 0.0, t1, gcm, bcm, plab, ecmp, ecmt, rela, ecm, rm, bigr, bigb; + G4double xm, x1, sl, phst, ce, term1, delta, beta, twxsec; + G4double xsec; + + const G4double dp0 = 0.e0, dp1 = 1.e0, dp2 = 2.e0, dp3 = 3.e0, dph = 0.5e0; + const G4double dp10 = 1.e1, dpth = dp1/dp3, dppi = 3.1415926535898; + + // absoprption xsec revised version rkt-97/5 neutron data from + // barashenkov this gives absorption xsec for given zp,ap,zt,at,e + // (mev/nucleon) arguement changed to mev; then e=ep/ap mev/nucleon + // can be used for neutrons also. this has coulomb as ours + + G4double E = ep/ap; + + // nucleon-nucleon inelastc xsec not included here + if ((nint(ap*at) == 1) || (nint(zp+zt) == 1)) { + return dp0; + } + G4double rp = radius(ap); + G4double rt = radius(at); + G4double vp = (dp1 + dpth)*dppi*std::pow(rp,3); + G4double vt = (dp1 + dpth)*dppi*std::pow(rt,3); + G4double density = dph*((ap/vp) + (at/vt)); + Const=1.75e0*density/8.824728e-02; + + if ((zt < zp) || ((zt == zp) && (at < ap))) { + xzt = zp; + xat = ap; + zp = zt; + ap = at; + zt = xzt; + at = xat; + } + + if (nint(ap) == 1) { + Const=2.05; + } + if ((nint(zp) == 2) && (nint(ap) == 4)) { + Const1 = 2.77 - at*8.0e-03 + (at*at)*1.8e-05; + } + if (nint(zp) == 3) { + Const=Const/3.0; + } + t1=40.0; + if (nint(zp) == 0) { + if ((nint(at) >= 11) && (nint(at) < 40)) { + t1=30.0; + } + if (nint(zt) == 14) { + t1=35.0; + } + if (nint(zt) == 26) { + t1=30.0; + } + } + + gcm = (ap*(dp1 + E/938.0) + at)/(std::pow((std::pow(ap,2) + std::pow(at,2) + dp2*ap*(E + 938.0)*at/938.e0),dph)); + bcm = std::sqrt(dp1-dp1/(std::pow(gcm,2))); + // assert(isnan(bcm) == false); + + plab = ap*std::sqrt(dp2*938.0*E + E*E); + // assert(isnan(plab) == false); + ecmp = gcm*(E+938.0)*ap - bcm*gcm*plab - ap*938.0; + ecmt = gcm*938.0*at - at*938.0; + rela = ecmp + ecmt; + ecm = rela; + if (ecm < (0.1*rela)) { + ecm = 0.1*rela; + } + rm = (197.32/137.01)*zp*zt/ecm; + bigr = rp + rt + 1.2*(std::pow(ap,dpth) + std::pow(at,dpth))/(std::pow(ecm,dpth)); + // assert(isnan(bigr) == false); + + bigb = 1.44*zp*zt/bigr; + // assert(isnan(bigb) == false); + + if ((nint(zp) == 1) && (nint(at) > 56)) { + bigb = 0.90*bigb; + } + if ((nint(ap) > 56) && (nint(zt) == 1)) { + bigb = 0.90*bigb; + } + if ((nint(ap) == 1) && (nint(at) == 12)) { + bigb = 3.5*bigb; + } + if (nint(ap) == 1) { + if ((nint(at) <= 16) && (nint(at) >= 13)) { + bigb = (at/7.)*bigb; + } + if (nint(zt) == 12) { + bigb = 1.8*bigb; + } + if (nint(zt) == 14) { + bigb = 1.4*bigb; + } + if (nint(zt) == 20) { + bigb = 1.3*bigb; + } + } + if ((nint(ap) == 1) && (nint(at) < 4)) { + bigb = 21.0*bigb; + } + if ((nint(ap) < 4) && (nint(at) == 1)) { + bigb = 21.0*bigb; + } + if ((nint(ap) == 1) && (nint(at) == 4)) { + bigb = 27.0*bigb; + } + if ((nint(ap) == 4) && (nint(at) == 1)) { + bigb = 27.0*bigb; + } + if ((nint(zp) == 0) || (nint(zt) == 0)) { + bigb = dp0; + } + xsec = dp10*dppi*bigr*bigr*(dp1-bigb/ecm); + xm=1.0; + if (nint(zp) == 0) { + if (nint(at) < 200) { + x1 = 2.83 - 3.1e-02*at + 1.7e-04*at*at; + if (x1 <= 1) { + x1=1.0; + } + sl=dp1; + if (nint(at) == 12) { + sl=1.6; + } + if (nint(at) < 12) { + sl=0.6; + } + xm = (1 - x1*std::exp(-E/(sl*x1))); + if (E < 20) { + // cout <<"e,xm= " << e << " " << xm << endl; + } + } + else { + xm = (1-0.3*std::exp(-(E-1)/15))*(1 - std::exp(-(E-0.9))); + } + } + if ((nint(zp) == 2) && (nint(ap) == 4)) { + Const = Const1 - 0.8/(1 + std::exp((250.0-E)/75.0)); + } + if ((nint(zp) == 1) && (nint(ap) == 1)) { + if (nint(at) > 45) { + t1 = 40.0 + at/dp3; + } + if (nint(at) < 4) { + t1 = 55; + } + Const = 2.05 - 0.05/(1 + std::exp((250.0-E)/75.0)); + if (nint(at) < 4) { + Const = 1.7; + } + if (nint(zt) == 12) { + t1=40.0; + Const=2.05 - dp3/(1.0 + safeExp((E - 20.0)/dp10)); + } + if (nint(zt) == 14) { + t1 = 40.0; + Const = 2.05 - 1.75/(1.0 + safeExp((E - 20.0)/dp10)); + } + if (nint(zt) == 18) { + t1 = 40.0; + Const = 2.05 - dp2/(1.0 + safeExp((E - 20.0)/dp10)); + } + if (nint(zt) == 20) { + t1 = 40.0; + Const = 2.05 - dp1/(1.0 + safeExp((E - 40.0)/dp10)); + Const = Const - 0.25/(1 + std::exp((250.0 - E)/75.0)); + } + if (nint(zt) >= 35) { + phst = (nint(zt)-35.e0)/260.e0; + Const = Const - phst/(1 + std::exp((250.0 - E)/75.0)); + } + } + + if ((nint(zp) == 0) && (nint(ap) == 1)) { + Const = 2*(0.134457/density); + if ((nint(at) > 140) && (nint(at) <200)) { + Const = Const - 1.5*(at - dp2*zt)/at; + } + if (nint(at) < 60) { + Const = Const - 1.5*(at - dp2*zt)/at; + } + if (nint(at) <= 40) { + Const = Const + 0.25/(dp1 + safeExp(-(170.0 - E)/100.0)); + } + if (nint(zt) > 82) { + Const = Const - zt/(at - zt); + } + if (nint(zt) >= 82) { + Const = Const - dp2/(1.0 + safeExp((E - 20.0)/20.0)); + } + if ((nint(zt) <= 20) && (nint(zt) >= 10)) { + Const = Const - dp1/(dp1 + safeExp((E - 20.0)/dp10)); + } + } + + ce = Const * (1.0 - std::exp(-E/t1)) - 0.292*std::exp(-E / 792) * std::cos(0.229*std::pow(E,0.453)); + term1 = std::pow((at*ap),dpth)/(std::pow(at,dpth) + std::pow(ap,dpth)); + delta = 1.615*term1 - 0.873*ce; + delta = delta + 0.140*term1/(std::pow(ecm,dpth)); + delta = delta + 0.794*(at - dp2*zt)*zp/(at*ap); + delta = -delta; + beta = 1.0; + twxsec = dp10*dppi*1.26e0*1.26e0*beta*std::pow((0.873e0*std::pow(ap,dpth) + 0.873e0*std::pow(at,dpth)-delta),2); + sig = twxsec*(dp1-bigb/ecm)*xm; + if (sig < dp0) { + sig = dp0; + } + +// if(isnan(sig)) { +// sig = 0.0; +// } + + return sig; +} + +void G4Incl::standardRandom(G4double *rndm, G4long *seed) +{ + (*seed) = (*seed); // Avoid warning during compilation. + // Use Geant4 G4UniformRand + (*rndm) = G4UniformRand(); +} + +void G4Incl::gaussianRandom(G4double *rndm) +{ + // Gaussian random number generator + + G4double tempRandom = 0.0, random = 0.0, randomShuffle = 0.0; + + do { + random = 0.0; + + for(G4int i = 0; i < 12; i++) { + standardRandom(&tempRandom, &(hazard->ial)); + random = random + tempRandom; + } + + random = random - 6.0; + } while(random*random > 9); + + // Shuffle the random seeds + standardRandom(&randomShuffle, &(hazard->igraine[10])); + + if(randomShuffle > 0.5) { + standardRandom(&tempRandom, &(hazard->ial)); + } + + (*rndm) = random; +} + +G4double G4Incl::safeExp(G4double x) +{ + if (x < -80.0) { + x = -80.0; + } + if (x > 80.0) { + x = 80.0; + } + + return std::exp(x); +} + +G4double G4Incl::radius(G4double A) +{ + const G4double dp1 = 1.0, dp3 = 3.0; + const G4double dp5 = 5.0, dpth = dp1/dp3; + const G4int naSize = 23; + const G4int rmsSize = naSize; + + const G4int na[naSize] = {1,2,3,4,6,7,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26}; + + const G4double rms[rmsSize] = {0.85,2.095,1.976,1.671,2.57,2.41,2.519,2.45, + 2.42,2.471,2.440,2.58,2.611,2.730,2.662,2.727, + 2.900,3.040,2.969,2.94,3.075,3.11,3.06}; + + G4double fact = std::sqrt(dp5/dp3); + G4int ia = int(std::floor(A+0.4)); + G4double result = fact * (0.84 * std::pow(A,dpth) + 0.55); + for(G4int i = 0; i < naSize; i++) { + if (ia == na[i]) { + result = fact*rms[i]; + } + } + + return result; +} + +G4double G4Incl::crossSection(G4int projectile, G4double E, G4double A) +{ + const G4double coefp[4][3] = {{ -5.9260e-9, 6.89450e-6, -6.0980e-6}, + { 2.1544e-6,-1.84800e-3, -5.9820e-4}, + { -2.5900e-4, 0.17595e+0, 1.1741e+0}, + { 1.1504e-3, 2.82810e+0,-28.7300e+0}}; + + const G4double coefn[4][3] = {{1.6105e-9,3.3985e-7,1.4678e-5}, + {-5.35e-7,-3.465e-4,-0.01633e+0}, + {-4.755e-6,0.07608e+0,2.8135e+0}, + {-3.622e-3,3.5924e+0,-38.294e+0}}; + + const G4double coef2p[5][3] = {{6.8108e-9,-2.163e-7,2.1898e-6}, + {-2.187e-6,7.8331e-5,-7.164e-4}, + {2.3651e-4,-9.690e-3,0.076424e+0}, + {-9.195e-3,0.5030e+0,-2.4979e+0}, + {-0.01087e+0,2.6494e+0,-2.5173e+0}}; + + G4double apow[3], epow[5]; + G4int ii, jj; + + if(A >= 27.0) { + ii = 3; + jj = 4; + } + else { + ii = 3; + jj = 5; + } + + for(int i = 1; i <= ii; i++) { + apow[i-1] = std::pow(A,(ii-i)); + } + + for(int j = 1; j <= jj; j++) { + epow[j-1] = std::pow(E,(jj-j)); + } + + double result = 0.0; + + if(A >= 27.0) { + if(projectile == 1) { + for(G4int i = 0; i < ii; i++) { + for(G4int j = 0; j < jj; j++) { + result = result + coefp[j][i]*apow[i]*epow[j]; + } + } + } + else { + for(G4int i = 0; i < ii; i++ ) { + for(G4int j = 0; j < jj; j++) { + result = result + coefn[j][i]*apow[i]*epow[j]; + } + } + } + } + else { + for(G4int i = 0; i < ii; i++) { + for(G4int j = 0; j < jj; j++) { + result = result + coef2p[j][i]*apow[i]*epow[j]; + } + } + } + + return result; +} + +G4double G4Incl::coulombTransm(G4double E, G4double fm1, G4double z1, G4double fm2, G4double z2) +{ + G4double eta,rho; + const G4double c2 = 0.00516; + const G4double c3 = 0.007165; + const G4double uma = 938.0; + G4double ml; + + G4double ecm = E*fm2/(fm1+fm2); + G4double fm = fm1*fm2*uma/(fm1+fm2); + G4double r1 = 0.0; + G4double r2 = 0.0; + if(fm1 >= 2.0) { + r1 = 1.2*std::pow(fm1,0.33333333); + } + r2 = 1.2*std::pow(fm2,0.33333333); + eta = c2*z1*z2*std::sqrt(fm/ecm); + rho = c3*(r1+r2)*std::sqrt(fm*ecm); + + return clmb1(rho,eta,&ml); +} + +G4double G4Incl::clmb1(G4double rho, G4double eta, G4double *ml) +{ + const G4double dp1 = 1.0, dp2 = 2.e0, dp4 = 4.e0, dph = 0.5, dp5 = 5.0; + + const G4double prm1 = 69.06; + const G4int ln0 = 81, lt0 = 21; + const G4int ln1 = 61, lt1 = 61; + static G4double psi0[ln0], trans0[lt0][ln0], x0[lt0], f0[ln0], psi1[ln1]; + static G4double trans1[lt1][ln1], x1[lt1], f1[ln1]; + + const G4double pi = 3.14159; + const G4double c0 = 0.11225, c1 = dph, gamma = 0.5772157e0, s3 = 0.2020569; + const G4double s4 = 0.08232323; + static G4double y = dp2*eta; + static G4double psi = rho*y; + + static G4int i0, j0; + + static G4double prob; + static G4double dumm, x, cx; + static G4double t, t1, t2, t3; + static G4double f, g; + static G4double temp, temp1, temp2; + static G4double xk, delp0, delp1, delx0, delx1; + + if (rho > y) { + if (psi > dp4 && psi < 50.0) { + prob = clmb2(rho,eta,&dumm); + } + else { + x = std::exp(std::log(eta)/6.0); + prob = std::sqrt(dp1 - y*x/(c0 + c1 * std::pow(x,3) + rho * x)); + } + (*ml) = 0; + } + else { + x = rho/y; + if (psi <= psi0[0]) { + t = min(pi*y,prm1); + cx = t/(std::exp(t) - dp1); + t1 = std::cos(rho) * (dp1-0.75*std::pow(psi,2) + dp5 * x * std::pow(psi,2)) - dph * psi * rho * std::sin(rho); + t2 = dp1 + dph * psi * (dp1 - x/6.0); + if (eta > dp1) { + t3 = std::log(psi)+dp2*gamma - dp1 + dp1/(12.e0*std::pow(eta,2))+dp1/(12.e1*std::pow(eta,4)); + } + else { + t3 = std::log(dp2*rho) + gamma - dp1/(dp1 + std::pow(eta,2)) + s3*std::pow(eta,2) + s4*std::pow(eta,4); + } + g = t1 + psi*t2*t3; + f = cx*rho*t2; + prob = cx/(std::pow(g,2)+std::pow(f,2)); + (*ml) = 3; + } + else if (psi <= psi0[ln0-1]) { + if (x <= x0[0]) { + temp = std::log(psi/psi0[0]); + j0 = 1 + int(temp/delp0); + j0 = min(max(j0,1),(ln0-1)); + temp = temp - (j0-1)*delp0; + t = f0[j0] + (f0[j0+1] - f0[j0])*temp/delp0; + xk = x*std::sqrt(psi); + prob = (dp1+3.33e-1*x+3.e-1*xk+1.e-1*std::pow(xk,2))*std::exp(t); + t = min(pi*y,prm1); + cx = t/(std::exp(t)-dp1); + prob = cx/std::pow(prob,2); + (*ml) = 1; + } + else { + temp1 = std::log(x/x0[0]); + i0 = min(max(1 + int(temp1/delx0),1),lt0-1); + temp1 = temp1 - (i0 - 1)*delx0; + temp2 = std::log(psi/psi0[0]); + j0 = min(max(1+int(temp2/delp0),1),ln0-1); + temp2 = temp2-(j0-1)*delp0; + t1 = trans0[i0][j0] + (trans0[i0+1][j0] - trans0[i0][j0]) * temp1/delx0; + t2 = trans0[i0][j0+1] + (trans0[i0+1][j0+1] - trans0[i0][j0+1]) * temp1/delx0; + prob = std::exp(t1 + (t2 - t1)*temp2/delp0); + (*ml)=2; + } + } + else if (psi <= psi1[ln1-1]) { + if (x <= x1[0]) { + temp = std::log(psi/psi1[0]); + j0 = min(max(1+int(temp/delp1), 1), ln1-1); + t = f1[j0]+(f1[j0+1]-f1[j0])*(temp - (j0 - 1)*delp1)/delp1; + xk = x*std::sqrt(psi); + prob = (dp1+3.33e-1*x+3.0e-1*xk+1.e-1*std::pow(xk,2))*std::exp(t); + t = min(pi*y,prm1); + cx = t/(std::exp(t)-dp1); + prob = cx/std::pow(prob,2); + (*ml) = 1; + } + else { + temp1 = std::log(x/x1[0]); + i0 = min(max(1+int(temp1/delx1),1),lt1-1); + temp1 = temp1-(i0-1)*delx1; + temp2 = std::log(psi/psi1[0]); + j0 = min(max(1+int(temp2/delp1),1),ln1-1); + temp2 = temp2 - (j0-1)*delp1; + t1 = trans1[i0][j0] + (trans1[i0+1][j0] - trans1[i0][j0])*temp1/delx1; + t2 = trans1[i0][j0+1] + (trans1[i0+1][j0+1] - trans1[i0][j0+1])*temp1/delx1; + prob = std::exp(t1 + (t2-t1)*temp2/delp1); + (*ml)=2; + } + } + else { + prob = clmb2(rho,eta,&dumm); + (*ml) = 4; + } + } + + return prob; +} + +G4double G4Incl::clmb2(G4double rho, G4double eta, G4double *t1) +{ + const G4double dp0 = 0.0, dp1 = 1.0, dp2 = 2.0, dp3 = 3.0; + const G4double dph = 0.5, dpth = dp1/dp3; + const G4int ln = 102; + + const G4double t0[ln] = {0.0, dp0,.1083,.1369,.1572,.1736,.1876,.2,.2113, + 0.2216,.2312,.2403,.2489,.2571,.265,.2725,.2798, + .2869,.2938,.3006,.3071,.3136,.3199,.3261,.3322, + .3382,.3442,.3499,.3557,.3615,.3672,.3729,.3785, + .3841,.3897,.3952,.4008,.4063,.4118,.4173,.4228, + .4283,.4338,.4393,.4448,.4504,.4559,.4615,.4671, + .4728,.4784,.4841,.4899,.4957,.5015,.5074,.5133, + .5193,.5253,.5315,.5376,.5439,.5503,.5567,.5632, + .5698,.5765,.5833,.5903,.5973,.6045,.6118,.6193, + .6269,.6346,.6426,.6507,.659,.6675,.6763,.6853, + .6945,.704,.7139,.724,.7345,.7453,.7566,.7683, + .7805,.7932,.8065,.8205,.8352,.8508,.8673,.8849, + .9038,.9243,.9467,.9715,dp1}; + const G4double x1 = 0.01; + const G4double xi = 100; + static G4double x,temp,prob; + static G4int i; + + x = dp1/(dp1 + std::sqrt(dph*rho*eta)); + if (x < x1) { + temp = t0[2] * std::pow((x/x1),dpth); + } + else { + i = int(std::floor(xi*x)); + i = i + 1; + if(i == 101) { + i = 100; + } + i = max(min(i,ln-1),2); // 2->1 + temp = t0[i] + (t0[i+1] - t0[i]) * (x - i * x1)/x1; + } + (*t1) = dp1 - temp; + prob = dp1 - dp2 * (*t1) * eta/rho; + + return (max(prob,dp0)); +} + +// Utilities + +G4double G4Incl::min(G4double a, G4double b) +{ + if(a < b) { + return a; + } + else { + return b; + } +} + +G4int G4Incl::min(G4int a, G4int b) +{ + if(a < b) { + return a; + } + else { + return b; + } +} + +G4double G4Incl::max(G4double a, G4double b) +{ + if(a > b) { + return a; + } + else { + return b; + } +} + +G4int G4Incl::max(G4int a, G4int b) +{ + if(a > b) { + return a; + } + else { + return b; + } +} + +G4int G4Incl::nint(G4double number) +{ + G4double intpart; + G4double fractpart; + fractpart = std::modf(number, &intpart); + if(number == 0) { + return 0; + } + if(number > 0) { + if(fractpart < 0.5) { + return int(std::floor(number)); + } + else { + return int(std::ceil(number)); + } + } + if(number < 0) { + if(fractpart < -0.5) { + return int(std::floor(number)); + } + else { + return int(std::ceil(number)); + } + } + + return 0; +} + +G4double G4Incl::callFunction(G4int functionChoice, G4double r) +{ + if(functionChoice == wsaxFunction) { + return wsax(r); + } + else if(functionChoice == derivWsaxFunction) { + return derivWsax(r); + } + else if(functionChoice == dmhoFunction) { + return dmho(r); + } + else if(functionChoice == derivMhoFunction) { + return derivMho(r); + } + else if(functionChoice == derivGausFunction) { + return derivGaus(r); + } + else if(functionChoice == densFunction) { + return dens(r); + } + + return 0.0; +} + +G4double G4Incl::am(G4double a, G4double b, G4double c, G4double d) +{ + return std::sqrt(d*d-a*a-b*b-c*c); +} + +G4double G4Incl::pcm(G4double E, G4double A, G4double C) +{ +// assert(((std::pow(E,2)-std::pow((A+C),2))*(std::pow(E,2)-std::pow((A-C),2))) >= 0); +// assert(E != 0); + return (0.5*std::sqrt((std::pow(E,2)-std::pow((A+C),2))*(std::pow(E,2)-std::pow((A-C),2)))/E); +} + +G4double G4Incl::sign(G4double a, G4double b) +{ + if(b >= 0) { + return utilabs(a); + } + if(b < 0) { + return (-1.0*utilabs(a)); + } + + if(verboseLevel > 2) { + G4cout <<"Error: sign function failed. " << G4endl; + } + return a; // The algorithm is never supposed to reach this point. +} + +G4double G4Incl::utilabs(G4double a) +{ + if(a > 0) { + return a; + } + if(a < 0) { + return (-1.0*a); + } + if(a == 0) { + return a; + } + + if(verboseLevel > 2) { + G4cout <<"Error: utilabs function failed. " << G4endl; + } + return a; +} + +G4double G4Incl::amax1(G4double a, G4double b) +{ + if(a > b) { + return a; + } + else if(b > a) { + return b; + } + else if(a == b) { + return a; + } + + return a; // The algorithm is never supposed to reach this point. +} + +G4double G4Incl::w(G4double a, G4double b, G4double c, G4double d) +{ + return (std::sqrt(a*a+b*b+c*c+d*d)); +} + +G4int G4Incl::idnint(G4double a) +{ + G4int value = 0; + + G4int valueCeil = int(std::ceil(a)); + G4int valueFloor = int(std::floor(a)); + + if(std::abs(value - valueCeil) < std::abs(value - valueFloor)) { + return valueCeil; + } + else { + return valueFloor; + } +} diff --git a/source/processes/hadronic/models/incl/src/G4InclAblaCascadeInterface.cc b/source/processes/hadronic/models/incl/src/G4InclAblaCascadeInterface.cc new file mode 100644 index 0000000000..b6ce07dfb6 --- /dev/null +++ b/source/processes/hadronic/models/incl/src/G4InclAblaCascadeInterface.cc @@ -0,0 +1,508 @@ +// +// ******************************************************************** +// * 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: G4InclAblaCascadeInterface.cc,v 1.10 2007/12/10 16:31:55 gunter Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +//#define DEBUGINCL 1 + +#include "G4InclAblaCascadeInterface.hh" +#include "math.h" +#include "G4GenericIon.hh" +#include "CLHEP/Random/Random.h" + +G4InclAblaCascadeInterface::G4InclAblaCascadeInterface() +{ + hazard = new G4Hazard(); + const G4long* table_entry = CLHEP::HepRandom::getTheSeeds(); // Get random seed from CLHEP. + hazard->ial = (*table_entry); + + varntp = new G4VarNtp(); + calincl = new G4Calincl(); + ws = new G4Ws(); + mat = new G4Mat(); + incl = new G4Incl(hazard, calincl, ws, mat, varntp); + + verboseLevel = 0; +} + +G4InclAblaCascadeInterface::~G4InclAblaCascadeInterface() +{ + delete hazard; + delete varntp; + delete calincl; + delete ws; + delete mat; + delete incl; +} + +G4HadFinalState* G4InclAblaCascadeInterface::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& theNucleus) +{ + G4int maxTries = 200; + + G4int particleI, n = 0; + + G4int bulletType = 0; + + // Print diagnostic messages: 0 = silent, 1 and 2 = verbose + verboseLevel = 0; + + // Increase the event number: + eventNumber++; + + if (verboseLevel > 1) { + G4cout << " >>> G4InclAblaCascadeInterface::ApplyYourself called" << G4endl; + } + + if(verboseLevel > 1) { + G4cout <<"G4InclAblaCascadeInterface: Now processing INCL4 event number:" << eventNumber << G4endl; + } + + // INCL4 needs the energy in units MeV + G4double bulletE = aTrack.GetKineticEnergy() * MeV; + +#ifdef DEBUGINCL + G4cout <<"Bullet energy = " << bulletE / MeV << G4endl; +#endif + + G4double targetA = theNucleus.GetN(); + G4double targetZ = theNucleus.GetZ(); + + G4double eKin; + G4double momx = 0.0, momy = 0.0, momz = 0.0; + G4DynamicParticle *cascadeParticle = 0; + G4ParticleDefinition *aParticleDefinition = 0; + + // INCL assumes the projectile particle is going in the direction of + // the Z-axis. Here we construct proper rotation to convert the + // momentum vectors of the outcoming particles to the original + // coordinate system. + G4LorentzVector projectileMomentum = aTrack.Get4Momentum(); + G4LorentzRotation toZ; + toZ.rotateZ(-projectileMomentum.phi()); + toZ.rotateY(-projectileMomentum.theta()); + G4LorentzRotation toLabFrame = toZ.inverse(); + + theResult.Clear(); // Make sure the output data structure is clean. + + // Map Geant4 particle types to corresponding INCL4 types. + enum bulletParticleType {nucleus = 0, proton = 1, neutron = 2, pionPlus = 3, pionZero = 4, + pionMinus = 5, deuteron = 6, triton = 7, he3 = 8, he4 = 9}; + + // Coding particles for use with INCL4 and ABLA + if (aTrack.GetDefinition() == G4Proton::Proton() ) bulletType = proton; + if (aTrack.GetDefinition() == G4Neutron::Neutron() ) bulletType = neutron; + if (aTrack.GetDefinition() == G4PionPlus::PionPlus() ) bulletType = pionPlus; + if (aTrack.GetDefinition() == G4PionMinus::PionMinus() ) bulletType = pionMinus; + if (aTrack.GetDefinition() == G4PionZero::PionZero() ) bulletType = pionZero; + +#ifdef DEBUGINCL + G4int baryonBullet = 0, chargeBullet = 0; + if(bulletType == proton || bulletType == neutron) baryonBullet = 1; + if(bulletType == proton || bulletType == pionPlus) chargeBullet = 1; + if(bulletType == pionMinus) chargeBullet = -1; + G4int baryonNumber = int(std::floor(targetA)) + baryonBullet; + G4int chargeNumber = int(std::floor(targetZ)) + chargeBullet; + G4double mass = aTrack.GetDefinition()->GetPDGMass(); + G4double amass = theNucleus.AtomicMass(targetA, targetZ); + G4double eKinSum = bulletE; + G4LorentzVector labv = G4LorentzVector(0.0, 0.0, std::sqrt(bulletE*(bulletE + 2.*mass)), bulletE + mass + amass); + G4LorentzVector labvA = G4LorentzVector(0.0, 0.0, 0.0, 0.0); + G4cout <<"Energy in the beginning = " << labv.e() / MeV << G4endl; +#endif + + for(int i = 0; i < 15; i++) { + calincl->f[i] = 0.0; // Initialize INCL input data + } + + // Check wheter the input is acceptable. + if((bulletType != 0) && ((targetA != 1) && (targetZ != 1))) { + calincl->f[0] = targetA; // Target mass number + calincl->f[1] = targetZ; // Charge number + calincl->f[6] = bulletType; // Type + calincl->f[2] = bulletE; // Energy [MeV] + calincl->f[5] = 1.0; // Time scaling + calincl->f[4] = 45.0; // Nuclear potential + + ws->nosurf = -2; // Nucleus surface, -2 = Woods-Saxon + ws->xfoisa = 8; + ws->npaulstr = 0; + + int nTries = 0; + varntp->ntrack = 0; + + mat->nbmat = 1; + mat->amat[0] = int(calincl->f[0]); + mat->zmat[0] = int(calincl->f[1]); + + incl->initIncl(true); + + while((varntp->ntrack <= 0) && (nTries < maxTries)) { // Loop until we produce real cascade + nTries++; + if(verboseLevel > 1) { + G4cout <<"G4InclAblaCascadeInterface: Try number = " << nTries << G4endl; + } + incl->processEventInclAbla(eventNumber); + + if(verboseLevel > 1) { + G4cout <<"G4InclAblaCascadeInterface: number of tracks = " << varntp->ntrack < 1) { + /** + * Diagnostic output + */ + G4cout <<"G4InclAblaCascadeInterface: Bullet type: " << bulletType << G4endl; + G4cout <<"G4Incl4AblaCascadeInterface: Bullet energy: " << bulletE << " MeV" << G4endl; + + G4cout <<"G4InclAblaCascadeInterface: Target A: " << targetA << G4endl; + G4cout <<"G4InclAblaCascadeInterface: Target Z: " << targetZ << G4endl; + + if(verboseLevel > 3) { + diagdata <<"G4InclAblaCascadeInterface: Bullet type: " << bulletType << G4endl; + diagdata <<"G4InclAblaCascadeInterface: Bullet energy: " << bulletE << " MeV" << G4endl; + + diagdata <<"G4InclAblaCascadeInterface: Target A: " << targetA << G4endl; + diagdata <<"G4InclAblaCascadeInterface: Target Z: " << targetZ << G4endl; + } + + for(particleI = 0; particleI < varntp->ntrack; particleI++) { + G4cout << n << " " << calincl->f[6] << " " << calincl->f[2] << " "; + G4cout << varntp->massini << " " << varntp->mzini << " "; + G4cout << varntp->exini << " " << varntp->mulncasc << " " << varntp->mulnevap << " " << varntp->mulntot << " "; + G4cout << varntp->bimpact << " " << varntp->jremn << " " << varntp->kfis << " " << varntp->estfis << " "; + G4cout << varntp->izfis << " " << varntp->iafis << " " << varntp->ntrack << " " << varntp->itypcasc[particleI] << " "; + G4cout << varntp->avv[particleI] << " " << varntp->zvv[particleI] << " " << varntp->enerj[particleI] << " "; + G4cout << varntp->plab[particleI] << " " << varntp->tetlab[particleI] << " " << varntp->philab[particleI] << G4endl; + // For diagnostic output + if(verboseLevel > 3) { + diagdata << n << " " << calincl->f[6] << " " << calincl->f[2] << " "; + diagdata << varntp->massini << " " << varntp->mzini << " "; + diagdata << varntp->exini << " " << varntp->mulncasc << " " << varntp->mulnevap << " " << varntp->mulntot << " "; + diagdata << varntp->bimpact << " " << varntp->jremn << " " << varntp->kfis << " " << varntp->estfis << " "; + diagdata << varntp->izfis << " " << varntp->iafis << " " << varntp->ntrack << " "; + diagdata << varntp->itypcasc[particleI] << " "; + diagdata << varntp->avv[particleI] << " " << varntp->zvv[particleI] << " " << varntp->enerj[particleI] << " "; + diagdata << varntp->plab[particleI] << " " << varntp->tetlab[particleI] << " " << varntp->philab[particleI] << G4endl; + } + } + } + + // Check whether a valid cascade was produced. + // If not return the original bullet particle with the same momentum. + if(varntp->ntrack <= 0) { + if(verboseLevel > 1) { + G4cout <<"WARNING G4InclAblaCascadeInterface: No cascade. Returning original particle with original momentum." << G4endl; + G4cout <<"\t Reached maximum trials of 200 to produce inelastic scattering." << G4endl; + } + + theResult.SetStatusChange(stopAndKill); + + if(bulletType == proton) { + aParticleDefinition = G4Proton::ProtonDefinition(); + } + if(bulletType == neutron) { + aParticleDefinition = G4Neutron::NeutronDefinition(); + } + if(bulletType == pionPlus) { + aParticleDefinition = G4PionPlus::PionPlusDefinition(); + } + if(bulletType == pionZero) { + aParticleDefinition = G4PionZero::PionZeroDefinition(); + } + if(bulletType == pionMinus) { + aParticleDefinition = G4PionMinus::PionMinusDefinition(); + } + + cascadeParticle = new G4DynamicParticle(); + cascadeParticle->SetDefinition(aParticleDefinition); + cascadeParticle->Set4Momentum(aTrack.Get4Momentum()); + theResult.AddSecondary(cascadeParticle); + } + + // Convert INCL4 output to Geant4 compatible data structures. + // Elementary particles are converted to G4DynamicParticle. + theResult.SetStatusChange(stopAndKill); + +#ifdef DEBUGINCL + G4cout << "E [MeV]" << std::setw(12) + << " Ekin [MeV]" << std::setw(12) + << "Px [MeV]" << std::setw(12) + << " Py [MeV]" << std::setw(12) + << "Pz [MeV]" << std::setw(12) + << "Pt [MeV]" << std::setw(12) + << "A" << std::setw(12) + << "Z" << G4endl; +#endif + + for(particleI = 0; particleI < varntp->ntrack; particleI++) { // Loop through the INCL4+ABLA output. + // Get energy/momentum and construct momentum vector in INCL4 coordinates. + momx = varntp->plab[particleI]*std::sin(varntp->tetlab[particleI]*CLHEP::pi/180.0)*std::cos(varntp->philab[particleI]*CLHEP::pi/180.0)*MeV; + momy = varntp->plab[particleI]*std::sin(varntp->tetlab[particleI]*CLHEP::pi/180.0)*std::sin(varntp->philab[particleI]*CLHEP::pi/180.0)*MeV; + momz = varntp->plab[particleI]*std::cos(varntp->tetlab[particleI]*CLHEP::pi/180.0)*MeV; + + eKin = varntp->enerj[particleI] * MeV; + + G4ThreeVector momDirection(momx, momy, momz); // Direction of the particle. + momDirection = momDirection.unit(); + if(verboseLevel > 2) { + G4cout <<"G4InclAblaCascadeInterface: " << G4endl; + G4cout <<"A = " << varntp->avv[particleI] << " Z = " << varntp->zvv[particleI] << G4endl; + G4cout <<"eKin = " << eKin << " MeV" << G4endl; + G4cout <<"px = " << momDirection.x() << " py = " << momDirection.y() <<" pz = " << momDirection.z() << G4endl; + } + + G4int particleIdentified = 0; // Check particle ID. + + if((varntp->avv[particleI] == 1) && (varntp->zvv[particleI] == 1)) { // Proton + cascadeParticle = + new G4DynamicParticle(G4Proton::ProtonDefinition(), momDirection, eKin); + particleIdentified++; +#ifdef DEBUGINCL + baryonNumber--; + chargeNumber--; +#endif + } + + if((varntp->avv[particleI] == 1) && (varntp->zvv[particleI] == 0)) { // Neutron + cascadeParticle = + new G4DynamicParticle(G4Neutron::NeutronDefinition(), momDirection, eKin); + particleIdentified++; +#ifdef DEBUGINCL + baryonNumber--; +#endif + } + + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == 1)) { // PionPlus + cascadeParticle = + new G4DynamicParticle(G4PionPlus::PionPlusDefinition(), momDirection, eKin); + particleIdentified++; +#ifdef DEBUGINCL + chargeNumber--; +#endif + } + + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == 0)) { // PionZero + cascadeParticle = + new G4DynamicParticle(G4PionZero::PionZeroDefinition(), momDirection, eKin); + particleIdentified++; + } + + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == -1)) { // PionMinus + cascadeParticle = + new G4DynamicParticle(G4PionMinus::PionMinusDefinition(), momDirection, eKin); + particleIdentified++; +#ifdef DEBUGINCL + chargeNumber++; +#endif + } + + if((varntp->avv[particleI] > 1) && (varntp->zvv[particleI] >= 1)) { // Nucleus fragment + G4ParticleDefinition * aIonDef = 0; + G4ParticleTable *theTableOfParticles = G4ParticleTable::GetParticleTable(); + + G4int A = G4int(varntp->avv[particleI]); + G4int Z = G4int(varntp->zvv[particleI]); + G4double excitationE = G4double(varntp->exini) * MeV; + + if(verboseLevel > 1) { + G4cout <<"Finding ion: A = " << A << " Z = " << Z << " E* = " << excitationE/MeV << G4endl; + } + aIonDef = theTableOfParticles->GetIon(Z, A, excitationE); + + if(aIonDef == 0) { + if(verboseLevel > 1) { + G4cout <<"G4InclAblaCascadeInterface: " << G4endl; + G4cout <<"FATAL ERROR: aIonDef = 0" << G4endl; + G4cout <<"A = " << A << " Z = " << Z << " E* = " << excitationE << G4endl; + } + } + + if(aIonDef != 0) { // If the ion was identified add it to output. + cascadeParticle = + new G4DynamicParticle(aIonDef, momDirection, eKin); + particleIdentified++; +#ifdef DEBUGINCL + baryonNumber = baryonNumber - A; + chargeNumber = chargeNumber - Z; +#endif + } + } + + if(particleIdentified == 1) { // Particle identified properly. + cascadeParticle->Set4Momentum(cascadeParticle->Get4Momentum()*=toLabFrame); +#ifdef DEBUGINCL + G4ParticleDefinition *pd = cascadeParticle->GetDefinition(); + G4LorentzVector fm = cascadeParticle->Get4Momentum(); + G4ThreeVector mom = cascadeParticle->GetMomentum(); + G4double m = pd->GetPDGMass(); + G4double p = mom.mag(); + labv -= fm; + if(varntp->avv[particleI] > 1) { + labvA += fm; + } + G4double px = mom.x() * MeV; + G4double py = mom.y() * MeV; + G4double pz = mom.z() * MeV; + G4double pt = std::sqrt(px*px+py*py); + G4double e = fm.e(); + eKinSum -= cascadeParticle->GetKineticEnergy() * MeV; + G4double exE; + if(varntp->avv[particleI] > 1) { + exE = varntp->exini; + } + else { + exE = 0.0; + } + G4cout << fm.e() / MeV + << std::setw(12) << cascadeParticle->GetKineticEnergy() / MeV + << std::setw(12) << mom.x() / MeV + << std::setw(12) << mom.y() / MeV + << std::setw(12) << mom.z() / MeV + << std::setw(12) << pt / MeV + << std::setw(12) << varntp->avv[particleI] + << std::setw(12) << varntp->zvv[particleI] << G4endl; +#endif + theResult.AddSecondary(cascadeParticle); // Put data into G4HadFinalState. + } + else { // Particle identification failed. + if(particleIdentified > 1) { // Particle was identified as more than one particle type. + if(verboseLevel > 1) { + G4cout <<"G4InclAblaCascadeInterface: One outcoming particle was identified as"; + G4cout <<"more than one particle type. This is probably due to a bug in the interface." << G4endl; + G4cout <<"Particle A:" << varntp->avv[particleI] << "Z: " << varntp->zvv[particleI] << G4endl; + G4cout << "(particleIdentified =" << particleIdentified << ")" << G4endl; + } + } + } + } + +#ifdef DEBUGINCL + G4cout <<"--------------------------------------------------------------------------------" << G4endl; + G4double pt = std::sqrt(std::pow(labv.x(), 2) + std::pow(labv.y(), 2)); + G4double ptA = std::sqrt(std::pow(labvA.x(), 2) + std::pow(labvA.y(), 2)); + G4cout << labv.e() / MeV << std::setw(12) + << eKinSum / MeV << std::setw(12) + << labv.x() / MeV << std::setw(12) + << labv.y() / MeV << std::setw(12) + << labv.z() / MeV << std::setw(12) + << pt / MeV << std::setw(12) + << baryonNumber << std::setw(12) + << chargeNumber << " totals" << G4endl; + G4cout << " - " << std::setw(12) + << " - " << std::setw(12) + << labvA.x() / MeV << std::setw(12) + << labvA.y() / MeV << std::setw(12) + << labvA.z() / MeV << std::setw(12) + << ptA / MeV << std::setw(12) + << " - " << std::setw(12) << " - " << " totals ABLA" << G4endl; + G4cout << G4endl; + + if(verboseLevel > 3) { + if(baryonNumber != 0) { + G4cout <<"WARNING G4InclCascadeInterface: Baryon number conservation violated." << G4endl; + G4cout <<"Baryon number balance after the event: " << baryonNumber << G4endl; + if(baryonNumber < 0) { + G4cout <<"Too many baryons produced." << G4endl; + } else { + G4cout <<"Too few baryons produced." << G4endl; + } + } + } +#endif + + varntp->ntrack = 0; // Clean up the number of generated particles in the event. + } + /** + * Report unsupported features. + * (Check bullet, target, energy range) + */ + else { // If the bullet type was not recognized by the interface, it will be returned back without any interaction. + theResult.SetStatusChange(stopAndKill); + + G4ParticleTable *theTableOfParticles = G4ParticleTable::GetParticleTable(); + cascadeParticle = new G4DynamicParticle(theTableOfParticles->FindParticle(aTrack.GetDefinition()), aTrack.Get4Momentum()); + + theResult.AddSecondary(cascadeParticle); + + if(verboseLevel > 1) { + G4cout <<"ERROR G4InclAblaCascadeInterface: Processing event number (internal) failed " << eventNumber << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"ERROR G4InclAblaCascadeInterface: Error processing event number (internal) failed " << eventNumber << G4endl; + } + + if(bulletType == 0) { + if(verboseLevel > 1) { + G4cout <<"G4InclAblaCascadeInterface: Unknown bullet type" << G4endl; + G4cout <<"Bullet particle name: " << cascadeParticle->GetDefinition()->GetParticleName() << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"G4InclAblaCascadeInterface: Unknown bullet type" << G4endl; + diagdata <<"Bullet particle name: " << cascadeParticle->GetDefinition()->GetParticleName() << G4endl; + } + } + + if((targetA == 1) && (targetZ == 1)) { // Unsupported target + if(verboseLevel > 1) { + G4cout <<"Unsupported target: " << G4endl; + G4cout <<"Target A: " << targetA << G4endl; + G4cout <<"TargetZ: " << targetZ << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"Unsupported target: " << G4endl; + diagdata <<"Target A: " << targetA << G4endl; + diagdata <<"TargetZ: " << targetZ << G4endl; + } + } + + if(bulletE < 100) { // INCL does not support E < 100 MeV. + if(verboseLevel > 1) { + G4cout <<"Unsupported bullet energy: " << bulletE << " MeV. (Lower limit is 100 MeV)." << G4endl; + G4cout <<"WARNING: Returning the original bullet with original energy back to Geant4." << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"Unsupported bullet energy: " << bulletE << " MeV. (Lower limit is 100 MeV)." << G4endl; + } + } + + if(verboseLevel > 3) { + diagdata <<"WARNING: returning the original bullet with original energy back to Geant4." << G4endl; + } + } + + return &theResult; +} + +G4ReactionProductVector* G4InclAblaCascadeInterface::Propagate(G4KineticTrackVector* , G4V3DNucleus* ) { + return 0; +} + + diff --git a/source/processes/hadronic/models/incl/src/G4InclAblaDataFile.cc b/source/processes/hadronic/models/incl/src/G4InclAblaDataFile.cc new file mode 100644 index 0000000000..dde6fb9e28 --- /dev/null +++ b/source/processes/hadronic/models/incl/src/G4InclAblaDataFile.cc @@ -0,0 +1,138 @@ +// +// ******************************************************************** +// * 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: G4InclAblaDataFile.cc,v 1.5 2007/12/03 19:36:06 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +#include "G4InclAblaDataFile.hh" +//#include "G4HadronicException.hh" +#include "globals.hh" // Needed for G4Exception. +#include + +G4InclAblaDataFile::G4InclAblaDataFile() +{ + verboseLevel = 0; +} + +/** + * Read all data from files. + */ +bool G4InclAblaDataFile::readData() +{ + if(!getenv("G4ABLADATA")) { + // throw G4HadronicException(__FILE__, __LINE__, "ERROR: Data + // missing. Set environment variable G4ABLA3.0 to point to the + // directory containing data files needed by INCL and ABLA + // models."); + G4String errorMessage1 = "ERROR: Data missing. Set environment variable G4ABLADATA\n"; + G4String errorMessage2 = "\t to point to the directory containing data files needed\n"; + G4String errorMessage3 = "\t by INCL and ABLA models.\n"; + G4String errorMessage = errorMessage1 + errorMessage2 + errorMessage3; + G4Exception(errorMessage); + } + + G4String dataPath(getenv("G4ABLADATA")); + G4String flAlphaFile(dataPath + "/flalpha.dat"); + G4String frldmFile( dataPath + "/frldm.dat"); + G4String vgsldFile( dataPath + "/vgsld.dat"); + G4String pace2File( dataPath + "/pace2.dat"); + + if(verboseLevel > 1) { + G4cout <<"Data path = " << dataPath << G4endl; + G4cout <<"FlAlphaFile = " << flAlphaFile << G4endl; + G4cout <<"FrldmFile = " << frldmFile << G4endl; + G4cout <<"VgsldFile = " << vgsldFile << G4endl; + G4cout <<"Pace2File = " << pace2File << G4endl; + } + + std::ifstream flalphain(flAlphaFile.c_str()); + std::ifstream frldmin(frldmFile.c_str()); + std::ifstream vgsldin(vgsldFile.c_str()); + std::ifstream pace2in(pace2File.c_str()); + + std::filebuf *buf1 = flalphain.rdbuf(); + std::filebuf *buf2 = frldmin.rdbuf(); + std::filebuf *buf3 = vgsldin.rdbuf(); + std::filebuf *buf4 = pace2in.rdbuf(); + if (!((buf1->is_open()) && (buf2->is_open()) && (buf3->is_open()) && (buf4->is_open()))) { + G4Exception("ERROR: Data missing. Could not find ABLA data file in " + dataPath + + " defined by environment variable G4ABLADATA"); + } + + G4double flalpha, frldm, vgsld, pace2; + const G4int rows = 98; + const G4int cols = 153; + const G4int massnumbers = 263; + for(int i = 0; i < rows; i++) { + for(int j = 0; j < cols; j++) { + setAlpha(j, i, 0.0); + setEcnz( j, i, 0.0); + setVgsld(j, i, 0.0); + } + } + + for(int i = 0; i < rows; i++) { + for(int j = 0; j < cols; j++) { + flalphain >> flalpha; + frldmin >> frldm; + vgsldin >> vgsld; + setAlpha(j, i, flalpha); + setEcnz( j, i, frldm); + setVgsld(j, i, vgsld); + } + } + flalphain.close(); + frldmin.close(); + vgsldin.close(); + + int A = 0, Zbegin = 0, Zend = 0; + G4String str1, str2, str3; + for(int i = 0; i < 500; i++) { + for(int j = 0; j < 500; j++) { + setPace2(i, j, 0.0); + } + } + + for(int i = 0; i < massnumbers; i++) { + pace2in >> str1 >> A >> str2 >> Zbegin >> str3 >> Zend; + for(int j = Zbegin; j <= Zend; j++) { + pace2in >> pace2; + setPace2(A, j, pace2); + } + } + pace2in.close(); + if(std::fabs(getPace2(A, Zend) - 114516.10) > 1e-6) { + G4cout <<"ERROR: Problem in parsing datafile " + pace2File << G4endl; + return false; + } + + return true; +} + + diff --git a/source/processes/hadronic/models/incl/src/G4InclAblaLightIonInterface.cc b/source/processes/hadronic/models/incl/src/G4InclAblaLightIonInterface.cc new file mode 100644 index 0000000000..8f4c1dfb4f --- /dev/null +++ b/source/processes/hadronic/models/incl/src/G4InclAblaLightIonInterface.cc @@ -0,0 +1,393 @@ +// +// ******************************************************************** +// * 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: G4InclAblaLightIonInterface.cc,v 1.10 2007/12/10 16:31:57 gunter Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +#include "G4InclAblaLightIonInterface.hh" +#include "math.h" +#include "G4GenericIon.hh" +#include "CLHEP/Random/Random.h" + +G4InclAblaLightIonInterface::G4InclAblaLightIonInterface() +{ + hazard = new G4Hazard(); + + const G4long* table_entry = CLHEP::HepRandom::getTheSeeds(); // Get random seed from CLHEP. + hazard->ial = (*table_entry); + + varntp = new G4VarNtp(); + calincl = new G4Calincl(); + ws = new G4Ws(); + mat = new G4Mat(); + incl = new G4Incl(hazard, calincl, ws, mat, varntp); + + verboseLevel = 0; +} + +G4InclAblaLightIonInterface::~G4InclAblaLightIonInterface() +{ + delete hazard; + delete varntp; + delete calincl; + delete ws; + delete mat; + delete incl; +} + +G4HadFinalState* G4InclAblaLightIonInterface::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& theNucleus) +{ + G4int maxTries = 200; + + G4int particleI, n = 0; + + G4int bulletType = 0; + + // Print diagnostic messages: 0 = silent, 1 and 2 = verbose + verboseLevel = 0; + + // Increase the event number: + eventNumber++; + + if (verboseLevel > 1) { + G4cout << " >>> G4InclAblaLightIonInterface::ApplyYourself called" << G4endl; + } + + if(verboseLevel > 1) { + G4cout <<"G4InclAblaLightIonInterface: Now processing INCL4 event number:" << eventNumber << G4endl; + } + + // INCL4 needs the energy in units MeV + G4double bulletE = aTrack.GetKineticEnergy() / MeV; + + G4double targetA = theNucleus.GetN(); + G4double targetZ = theNucleus.GetZ(); + + G4double eKin; + G4double momx = 0.0, momy = 0.0, momz = 0.0; + G4DynamicParticle *cascadeParticle = 0; + G4ParticleDefinition *aParticleDefinition = 0; + + // INCL assumes the projectile particle is going in the direction of + // the Z-axis. Here we construct proper rotation to convert the + // momentum vectors of the outcoming particles to the original + // coordinate system. + G4LorentzVector projectileMomentum = aTrack.Get4Momentum(); + G4LorentzRotation toZ; + toZ.rotateZ(-projectileMomentum.phi()); + toZ.rotateY(-projectileMomentum.theta()); + G4LorentzRotation toLabFrame = toZ.inverse(); + + theResult.Clear(); // Make sure the output data structure is clean. + + // Map Geant4 particle types to corresponding INCL4 types. + enum bulletParticleType {nucleus = 0, proton = 1, neutron = 2, pionPlus = 3, pionZero = 4, + pionMinus = 5, deuteron = 6, triton = 7, he3 = 8, he4 = 9}; + + // Coding particles for use with INCL4 and ABLA + if (aTrack.GetDefinition() == G4Deuteron::Deuteron() ) bulletType = deuteron; + if (aTrack.GetDefinition() == G4Triton::Triton() ) bulletType = triton; + if (aTrack.GetDefinition() == G4He3::He3() ) bulletType = he3; + if (aTrack.GetDefinition() == G4Alpha::Alpha() ) bulletType = he4; + + for(int i = 0; i < 15; i++) { + calincl->f[i] = 0.0; // Initialize INCL input data + } + + // Check wheter the input is acceptable. + if((bulletType != 0) && ((targetA != 1) && (targetZ != 1))) { + calincl->f[0] = targetA; // Target mass number + calincl->f[1] = targetZ; // Charge number + calincl->f[6] = bulletType; // Type + calincl->f[2] = bulletE; // Energy [MeV] + calincl->f[5] = 1.0; // Time scaling + calincl->f[4] = 45.0; // Nuclear potential + + ws->nosurf = -2; // Nucleus surface, -2 = Woods-Saxon + ws->xfoisa = 8; + ws->npaulstr = 0; + + int nTries = 0; + varntp->ntrack = 0; + + mat->nbmat = 1; + mat->amat[0] = int(calincl->f[0]); + mat->zmat[0] = int(calincl->f[1]); + + incl->initIncl(true); + + while((varntp->ntrack <= 0) && (nTries < maxTries)) { // Loop until we produce real cascade + nTries++; + if(verboseLevel > 1) { + G4cout <<"G4InclAblaLightIonInterface: Try number = " << nTries << G4endl; + } + incl->processEventInclAbla(eventNumber); + + if(verboseLevel > 1) { + G4cout <<"G4InclAblaLightIonInterface: number of tracks = " << varntp->ntrack < 1) { + /** + * Diagnostic output + */ + G4cout <<"G4InclAblaLightIonInterface: Bullet type: " << bulletType << G4endl; + G4cout <<"G4Incl4AblaCascadeInterface: Bullet energy: " << bulletE << " MeV" << G4endl; + + G4cout <<"G4InclAblaLightIonInterface: Target A: " << targetA << G4endl; + G4cout <<"G4InclAblaLightIonInterface: Target Z: " << targetZ << G4endl; + + if(verboseLevel > 3) { + diagdata <<"G4InclAblaLightIonInterface: Bullet type: " << bulletType << G4endl; + diagdata <<"G4InclAblaLightIonInterface: Bullet energy: " << bulletE << " MeV" << G4endl; + + diagdata <<"G4InclAblaLightIonInterface: Target A: " << targetA << G4endl; + diagdata <<"G4InclAblaLightIonInterface: Target Z: " << targetZ << G4endl; + } + + for(particleI = 0; particleI < varntp->ntrack; particleI++) { + G4cout << n << " " << calincl->f[6] << " " << calincl->f[2] << " "; + G4cout << varntp->massini << " " << varntp->mzini << " "; + G4cout << varntp->exini << " " << varntp->mulncasc << " " << varntp->mulnevap << " " << varntp->mulntot << " "; + G4cout << varntp->bimpact << " " << varntp->jremn << " " << varntp->kfis << " " << varntp->estfis << " "; + G4cout << varntp->izfis << " " << varntp->iafis << " " << varntp->ntrack << " " << varntp->itypcasc[particleI] << " "; + G4cout << varntp->avv[particleI] << " " << varntp->zvv[particleI] << " " << varntp->enerj[particleI] << " "; + G4cout << varntp->plab[particleI] << " " << varntp->tetlab[particleI] << " " << varntp->philab[particleI] << G4endl; + // For diagnostic output + if(verboseLevel > 3) { + diagdata << n << " " << calincl->f[6] << " " << calincl->f[2] << " "; + diagdata << varntp->massini << " " << varntp->mzini << " "; + diagdata << varntp->exini << " " << varntp->mulncasc << " " << varntp->mulnevap << " " << varntp->mulntot << " "; + diagdata << varntp->bimpact << " " << varntp->jremn << " " << varntp->kfis << " " << varntp->estfis << " "; + diagdata << varntp->izfis << " " << varntp->iafis << " " << varntp->ntrack << " "; + diagdata << varntp->itypcasc[particleI] << " "; + diagdata << varntp->avv[particleI] << " " << varntp->zvv[particleI] << " " << varntp->enerj[particleI] << " "; + diagdata << varntp->plab[particleI] << " " << varntp->tetlab[particleI] << " " << varntp->philab[particleI] << G4endl; + } + } + } + + // Check whether a valid cascade was produced. + // If not return the original bullet particle with the same momentum. + if(varntp->ntrack <= 0) { + if(verboseLevel > 1) { + G4cout <<"WARNING G4InclAblaLightIonInterface: No cascade. Returning original particle with original momentum." << G4endl; + G4cout <<"\t Reached maximum trials of 200 to produce inelastic scattering." << G4endl; + } + + theResult.SetStatusChange(stopAndKill); + + if(bulletType == proton) { + aParticleDefinition = G4Proton::ProtonDefinition(); + } + if(bulletType == neutron) { + aParticleDefinition = G4Neutron::NeutronDefinition(); + } + if(bulletType == pionPlus) { + aParticleDefinition = G4PionPlus::PionPlusDefinition(); + } + if(bulletType == pionZero) { + aParticleDefinition = G4PionZero::PionZeroDefinition(); + } + if(bulletType == pionMinus) { + aParticleDefinition = G4PionMinus::PionMinusDefinition(); + } + + cascadeParticle = new G4DynamicParticle(); + cascadeParticle->SetDefinition(aParticleDefinition); + cascadeParticle->Set4Momentum(aTrack.Get4Momentum()); + theResult.AddSecondary(cascadeParticle); + } + + // Convert INCL4 output to Geant4 compatible data structures. + // Elementary particles are converted to G4DynamicParticle. + theResult.SetStatusChange(stopAndKill); + + for(particleI = 0; particleI < varntp->ntrack; particleI++) { // Loop through the INCL4+ABLA output. + // Get energy/momentum and construct momentum vector in INCL4 coordinates. + momx = varntp->plab[particleI]*std::sin(varntp->tetlab[particleI]*CLHEP::pi/180.0)*std::cos(varntp->philab[particleI]*CLHEP::pi/180.0)*MeV; + momy = varntp->plab[particleI]*std::sin(varntp->tetlab[particleI]*CLHEP::pi/180.0)*std::sin(varntp->philab[particleI]*CLHEP::pi/180.0)*MeV; + momz = varntp->plab[particleI]*std::cos(varntp->tetlab[particleI]*CLHEP::pi/180.0)*MeV; + + eKin = varntp->enerj[particleI] * MeV; + + G4ThreeVector momDirection(momx, momy, momz); // Direction of the particle. + momDirection = momDirection.unit(); + if(verboseLevel > 2) { + G4cout <<"G4InclAblaLightIonInterface: " << G4endl; + G4cout <<"A = " << varntp->avv[particleI] << " Z = " << varntp->zvv[particleI] << G4endl; + G4cout <<"eKin = " << eKin << " MeV" << G4endl; + G4cout <<"px = " << momDirection.x() << " py = " << momDirection.y() <<" pz = " << momDirection.z() << G4endl; + } + + G4int particleIdentified = 0; // Check particle ID. + + if((varntp->avv[particleI] == 1) && (varntp->zvv[particleI] == 1)) { // Proton + cascadeParticle = + new G4DynamicParticle(G4Proton::ProtonDefinition(), momDirection, eKin); + particleIdentified++; + } + + if((varntp->avv[particleI] == 1) && (varntp->zvv[particleI] == 0)) { // Neutron + cascadeParticle = + new G4DynamicParticle(G4Neutron::NeutronDefinition(), momDirection, eKin); + particleIdentified++; + } + + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == 1)) { // PionPlus + cascadeParticle = + new G4DynamicParticle(G4PionPlus::PionPlusDefinition(), momDirection, eKin); + particleIdentified++; + } + + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == 0)) { // PionZero + cascadeParticle = + new G4DynamicParticle(G4PionZero::PionZeroDefinition(), momDirection, eKin); + particleIdentified++; + } + + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == -1)) { // PionMinus + cascadeParticle = + new G4DynamicParticle(G4PionMinus::PionMinusDefinition(), momDirection, eKin); + particleIdentified++; + } + + if((varntp->avv[particleI] > 1) && (varntp->zvv[particleI] >= 1)) { // Nucleus fragment + G4ParticleDefinition * aIonDef = 0; + G4ParticleTable *theTableOfParticles = G4ParticleTable::GetParticleTable(); + + G4int A = G4int(varntp->avv[particleI]); + G4int Z = G4int(varntp->zvv[particleI]); + G4double excitationE = G4double(varntp->exini) * MeV; + + if(verboseLevel > 1) { + G4cout <<"Finding ion: A = " << A << " Z = " << Z << " E* = " << excitationE/MeV << G4endl; + } + aIonDef = theTableOfParticles->GetIon(Z, A, excitationE); + + if(aIonDef == 0) { + if(verboseLevel > 1) { + G4cout <<"G4InclAblaLightIonInterface: " << G4endl; + G4cout <<"FATAL ERROR: aIonDef = 0" << G4endl; + G4cout <<"A = " << A << " Z = " << Z << " E* = " << excitationE << G4endl; + } + } + + if(aIonDef != 0) { // If the ion was identified add it to output. + cascadeParticle = + new G4DynamicParticle(aIonDef, momDirection, eKin); + particleIdentified++; + } + } + + if(particleIdentified == 1) { // Particle identified properly. + cascadeParticle->Set4Momentum(cascadeParticle->Get4Momentum()*=toLabFrame); + theResult.AddSecondary(cascadeParticle); // Put data into G4HadFinalState. + } + else { // Particle identification failed. + if(particleIdentified > 1) { // Particle was identified as more than one particle type. + if(verboseLevel > 1) { + G4cout <<"G4InclAblaLightIonInterface: One outcoming particle was identified as"; + G4cout <<"more than one particle type. This is probably due to a bug in the interface." << G4endl; + G4cout <<"Particle A:" << varntp->avv[particleI] << "Z: " << varntp->zvv[particleI] << G4endl; + G4cout << "(particleIdentified =" << particleIdentified << ")" << G4endl; + } + } + } + } + + varntp->ntrack = 0; // Clean up the number of generated particles in the event. + } + /** + * Report unsupported features. + * (Check bullet, target, energy range) + */ + else { // If the bullet type was not recognized by the interface, it will be returned back without any interaction. + theResult.SetStatusChange(stopAndKill); + + G4ParticleTable *theTableOfParticles = G4ParticleTable::GetParticleTable(); + cascadeParticle = new G4DynamicParticle(theTableOfParticles->FindParticle(aTrack.GetDefinition()), aTrack.Get4Momentum()); + + theResult.AddSecondary(cascadeParticle); + + if(verboseLevel > 1) { + G4cout <<"G4InclAblaLightIonInterface: Error processing event number (internal) " << eventNumber << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"G4InclAblaLightIonInterface: Error processing event number (internal) " << eventNumber << G4endl; + } + + if(bulletType == 0) { + if(verboseLevel > 1) { + G4cout <<"G4InclAblaLightIonInterface: Unknown bullet type" << G4endl; + G4cout <<"Bullet particle name: " << cascadeParticle->GetDefinition()->GetParticleName() << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"G4InclAblaLightIonInterface: Unknown bullet type" << G4endl; + diagdata <<"Bullet particle name: " << cascadeParticle->GetDefinition()->GetParticleName() << G4endl; + } + } + + if((targetA == 1) && (targetZ == 1)) { // Unsupported target + if(verboseLevel > 1) { + G4cout <<"Unsupported target: " << G4endl; + G4cout <<"Target A: " << targetA << G4endl; + G4cout <<"TargetZ: " << targetZ << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"Unsupported target: " << G4endl; + diagdata <<"Target A: " << targetA << G4endl; + diagdata <<"TargetZ: " << targetZ << G4endl; + } + } + + if(bulletE < 100) { // INCL does not support E < 100 MeV. + if(verboseLevel > 1) { + G4cout <<"Unsupported bullet energy: " << bulletE << " MeV. (Lower limit is 100 MeV)." << G4endl; + G4cout <<"WARNING: Returning the original bullet with original energy back to Geant4." << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"Unsupported bullet energy: " << bulletE << " MeV. (Lower limit is 100 MeV)." << G4endl; + } + } + + if(verboseLevel > 3) { + diagdata <<"WARNING: returning the original bullet with original energy back to Geant4." << G4endl; + } + } + + return &theResult; +} + +G4ReactionProductVector* G4InclAblaLightIonInterface::Propagate(G4KineticTrackVector* , G4V3DNucleus* ) { + return 0; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4DNAHeliumChargeIncrease.cc b/source/processes/hadronic/models/incl/src/G4InclAblaVirtualData.cc similarity index 55% rename from source/processes/electromagnetic/lowenergy/src/G4DNAHeliumChargeIncrease.cc rename to source/processes/hadronic/models/incl/src/G4InclAblaVirtualData.cc index b8907b52e1..39f0a6910e 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4DNAHeliumChargeIncrease.cc +++ b/source/processes/hadronic/models/incl/src/G4InclAblaVirtualData.cc @@ -23,57 +23,82 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// $Id: G4DNAHeliumChargeIncrease.cc,v 1.2 2006/06/29 19:39:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4InclAblaVirtualData.cc,v 1.2 2007/09/11 13:19:25 miheikki Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) -#include "G4DNAHeliumChargeIncrease.hh" -#include "G4DNAGenericIonsManager.hh" +#include "G4InclAblaVirtualData.hh" - G4DNAHeliumChargeIncreaseEnergyLimitsPolicy :: G4DNAHeliumChargeIncreaseEnergyLimitsPolicy() -: - lowEnergyLimit(1.*keV), - zeroBelowLowEnergyLimit(true), - highEnergyLimit(10.*MeV), - zeroAboveHighEnergyLimit(true) +G4InclAblaVirtualData::G4InclAblaVirtualData() { + } - G4DNAHeliumChargeIncreaseIncomingParticlePolicy :: G4DNAHeliumChargeIncreaseIncomingParticlePolicy() +bool G4InclAblaVirtualData::setAlpha(int A, int Z, double value) { - f0[0]=1.; - a0[0]=2.25; - a1[0]=-0.75; - b0[0]=-30.93; - c0[0]=0.590; - d0[0]=2.35; - x0[0]=4.29; + alpha[A][Z] = value; - f0[1]=1.; - a0[1]=2.25; - a1[1]=-0.75; - b0[1]=-32.61; - c0[1]=0.435; - d0[1]=2.70; - x0[1]=4.45; - - // x1 and b1 will be calculated by G4DNADingfelderChargeChangeTotalCrossSectionPolicy<, > :: PartialCrossSection - x1[0]=-1.; - b1[0]=-1.; - - x1[1]=-1.; - b1[1]=-1.; + return true; } -const G4ParticleDefinition * G4DNAHeliumChargeIncreaseIncomingParticlePolicy :: IncomingParticleDefinition(void) const +bool G4InclAblaVirtualData::setEcnz(int A, int Z, double value) { - G4DNAGenericIonsManager *instance; - instance = G4DNAGenericIonsManager::Instance(); - - return instance->GetIon("helium"); + ecnz[A][Z] = value; + + return true; } -G4int G4DNAHeliumChargeIncreaseIncomingParticlePolicy :: NumberOfPartialCrossSections(void) const +bool G4InclAblaVirtualData::setVgsld(int A, int Z, double value) { - return 2; + vgsld[A][Z] = value; + + return true; +} + +bool G4InclAblaVirtualData::setPace2(int A, int Z, double value) +{ + pace2[A][Z] = value; + + return true; +} + +double G4InclAblaVirtualData::getAlpha(int A, int Z) +{ + return alpha[A][Z]; +} + +double G4InclAblaVirtualData::getEcnz(int A, int Z) +{ + return ecnz[A][Z]; +} + +double G4InclAblaVirtualData::getVgsld(int A, int Z) +{ + return vgsld[A][Z]; +} + +double G4InclAblaVirtualData::getPace2(int A, int Z) +{ + return pace2[A][Z]; +} + +int G4InclAblaVirtualData::getAlphaRows() +{ + return alphaRows; +} + +int G4InclAblaVirtualData::getAlphaCols() +{ + return alphaCols; +} +int G4InclAblaVirtualData::getPaceRows() +{ + return paceRows; +} +int G4InclAblaVirtualData::getPaceCols() +{ + return paceCols; } diff --git a/source/processes/hadronic/models/incl/src/G4InclCascadeInterface.cc b/source/processes/hadronic/models/incl/src/G4InclCascadeInterface.cc new file mode 100644 index 0000000000..ade194687c --- /dev/null +++ b/source/processes/hadronic/models/incl/src/G4InclCascadeInterface.cc @@ -0,0 +1,482 @@ +// +// ******************************************************************** +// * 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: G4InclCascadeInterface.cc,v 1.10 2007/12/10 16:32:02 gunter Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +//#define DEBUGINCL 1 + +#include "G4InclCascadeInterface.hh" +#include "math.h" +#include "G4GenericIon.hh" +#include "CLHEP/Random/Random.h" + +G4InclCascadeInterface::G4InclCascadeInterface() +{ + hazard = new G4Hazard(); + const G4long* table_entry = CLHEP::HepRandom::getTheSeeds(); // Get random seed from CLHEP. + hazard->ial = (*table_entry); + + varntp = new G4VarNtp(); + calincl = new G4Calincl(); + ws = new G4Ws(); + mat = new G4Mat(); + incl = new G4Incl(hazard, calincl, ws, mat, varntp); + + verboseLevel = 0; +} + +G4InclCascadeInterface::~G4InclCascadeInterface() +{ + delete hazard; + delete varntp; + delete calincl; + delete ws; + delete mat; + delete incl; +} + +G4HadFinalState* G4InclCascadeInterface::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& theNucleus) +{ + G4int maxTries = 200; + + G4int particleI, n = 0; + + G4int bulletType = 0; + + // Print diagnostic messages: 0 = silent, 1 and 2 = verbose + verboseLevel = 0; + + // Increase the event number: + eventNumber++; + + if (verboseLevel > 1) { + G4cout << " >>> G4InclCascadeInterface::ApplyYourself called" << G4endl; + } + + if(verboseLevel > 1) { + G4cout <<"G4InclCascadeInterface: Now processing INCL4 event number:" << eventNumber << G4endl; + } + + // INCL4 needs the energy in units MeV + G4double bulletE = aTrack.GetKineticEnergy() * MeV; + +#ifdef DEBUGINCL + G4cout <<"Bullet energy = " << bulletE / MeV << G4endl; +#endif + + G4double targetA = theNucleus.GetN(); + G4double targetZ = theNucleus.GetZ(); + + G4double eKin; + G4double momx = 0.0, momy = 0.0, momz = 0.0; + G4DynamicParticle *cascadeParticle = 0; + G4ParticleDefinition *aParticleDefinition = 0; + + // INCL assumes the projectile particle is going in the direction of + // the Z-axis. Here we construct proper rotation to convert the + // momentum vectors of the outcoming particles to the original + // coordinate system. + G4LorentzVector projectileMomentum = aTrack.Get4Momentum(); + G4LorentzRotation toZ; + toZ.rotateZ(-projectileMomentum.phi()); + toZ.rotateY(-projectileMomentum.theta()); + G4LorentzRotation toLabFrame = toZ.inverse(); + + theResult.Clear(); // Make sure the output data structure is clean. + + // Map Geant4 particle types to corresponding INCL4 types. + enum bulletParticleType {nucleus = 0, proton = 1, neutron = 2, pionPlus = 3, pionZero = 4, + pionMinus = 5, deuteron = 6, triton = 7, he3 = 8, he4 = 9}; + + // Coding particles for use with INCL4 and ABLA + if (aTrack.GetDefinition() == G4Proton::Proton() ) bulletType = proton; + if (aTrack.GetDefinition() == G4Neutron::Neutron() ) bulletType = neutron; + if (aTrack.GetDefinition() == G4PionPlus::PionPlus() ) bulletType = pionPlus; + if (aTrack.GetDefinition() == G4PionMinus::PionMinus() ) bulletType = pionMinus; + if (aTrack.GetDefinition() == G4PionZero::PionZero() ) bulletType = pionZero; + +#ifdef DEBUGINCL + G4int baryonBullet = 0, chargeBullet = 0; + if(bulletType == proton || bulletType == neutron) baryonBullet = 1; + if(bulletType == proton || bulletType == pionPlus) chargeBullet = 1; + if(bulletType == pionMinus) chargeBullet = -1; + G4int baryonNumber = int(std::floor(targetA)) + baryonBullet; + G4int chargeNumber = int(std::floor(targetZ)) + chargeBullet; + G4double mass = aTrack.GetDefinition()->GetPDGMass(); + G4double amass = theNucleus.AtomicMass(targetA, targetZ); + G4double eKinSum = bulletE; + G4LorentzVector labv = G4LorentzVector(0.0, 0.0, std::sqrt(bulletE*(bulletE + 2.*mass)), bulletE + mass + amass); + G4cout <<"Energy in the beginning = " << labv.e() / MeV << G4endl; +#endif + + for(int i = 0; i < 15; i++) { + calincl->f[i] = 0.0; // Initialize INCL input data + } + + // Check wheter the input is acceptable. + if((bulletType != 0) && ((targetA != 1) && (targetZ != 1))) { + calincl->f[0] = targetA; // Target mass number + calincl->f[1] = targetZ; // Charge number + calincl->f[6] = bulletType; // Type + calincl->f[2] = bulletE; // Energy [MeV] + calincl->f[5] = 1.0; // Time scaling + calincl->f[4] = 45.0; // Nuclear potential + + ws->nosurf = -2; // Nucleus surface, -2 = Woods-Saxon + ws->xfoisa = 8; + ws->npaulstr = 0; + + int nTries = 0; + varntp->ntrack = 0; + + mat->nbmat = 1; + mat->amat[0] = int(calincl->f[0]); + mat->zmat[0] = int(calincl->f[1]); + + incl->initIncl(true); + + while((varntp->ntrack <= 0) && (nTries < maxTries)) { // Loop until we produce real cascade + nTries++; + if(verboseLevel > 1) { + G4cout <<"G4InclCascadeInterface: Try number = " << nTries << G4endl; + } + incl->processEventIncl(); + + if(verboseLevel > 1) { + G4cout <<"G4InclCascadeInterface: number of tracks = " << varntp->ntrack < 1) { + /** + * Diagnostic output + */ + G4cout <<"G4InclCascadeInterface: Bullet type: " << bulletType << G4endl; + G4cout <<"G4Incl4AblaCascadeInterface: Bullet energy: " << bulletE << " MeV" << G4endl; + + G4cout <<"G4InclCascadeInterface: Target A: " << targetA << G4endl; + G4cout <<"G4InclCascadeInterface: Target Z: " << targetZ << G4endl; + + if(verboseLevel > 3) { + diagdata <<"G4InclCascadeInterface: Bullet type: " << bulletType << G4endl; + diagdata <<"G4InclCascadeInterface: Bullet energy: " << bulletE << " MeV" << G4endl; + + diagdata <<"G4InclCascadeInterface: Target A: " << targetA << G4endl; + diagdata <<"G4InclCascadeInterface: Target Z: " << targetZ << G4endl; + } + + for(particleI = 0; particleI < varntp->ntrack; particleI++) { + G4cout << n << " " << calincl->f[6] << " " << calincl->f[2] << " "; + G4cout << varntp->massini << " " << varntp->mzini << " "; + G4cout << varntp->exini << " " << varntp->mulncasc << " " << varntp->mulnevap << " " << varntp->mulntot << " "; + G4cout << varntp->bimpact << " " << varntp->jremn << " " << varntp->kfis << " " << varntp->estfis << " "; + G4cout << varntp->izfis << " " << varntp->iafis << " " << varntp->ntrack << " " << varntp->itypcasc[particleI] << " "; + G4cout << varntp->avv[particleI] << " " << varntp->zvv[particleI] << " " << varntp->enerj[particleI] << " "; + G4cout << varntp->plab[particleI] << " " << varntp->tetlab[particleI] << " " << varntp->philab[particleI] << G4endl; + // For diagnostic output + if(verboseLevel > 3) { + diagdata << n << " " << calincl->f[6] << " " << calincl->f[2] << " "; + diagdata << varntp->massini << " " << varntp->mzini << " "; + diagdata << varntp->exini << " " << varntp->mulncasc << " " << varntp->mulnevap << " " << varntp->mulntot << " "; + diagdata << varntp->bimpact << " " << varntp->jremn << " " << varntp->kfis << " " << varntp->estfis << " "; + diagdata << varntp->izfis << " " << varntp->iafis << " " << varntp->ntrack << " "; + diagdata << varntp->itypcasc[particleI] << " "; + diagdata << varntp->avv[particleI] << " " << varntp->zvv[particleI] << " " << varntp->enerj[particleI] << " "; + diagdata << varntp->plab[particleI] << " " << varntp->tetlab[particleI] << " " << varntp->philab[particleI] << G4endl; + } + } + } + + // Check whether a valid cascade was produced. + // If not return the original bullet particle with the same momentum. + if(varntp->ntrack <= 0) { + if(verboseLevel > 1) { + G4cout <<"WARNING G4InclCascadeInterface: No cascade. Returning original particle with original momentum." << G4endl; + G4cout <<"\t Reached maximum trials of 200 to produce inelastic scattering." << G4endl; + } + + theResult.SetStatusChange(stopAndKill); + + if(bulletType == proton) { + aParticleDefinition = G4Proton::ProtonDefinition(); + } + if(bulletType == neutron) { + aParticleDefinition = G4Neutron::NeutronDefinition(); + } + if(bulletType == pionPlus) { + aParticleDefinition = G4PionPlus::PionPlusDefinition(); + } + if(bulletType == pionZero) { + aParticleDefinition = G4PionZero::PionZeroDefinition(); + } + if(bulletType == pionMinus) { + aParticleDefinition = G4PionMinus::PionMinusDefinition(); + } + + cascadeParticle = new G4DynamicParticle(); + cascadeParticle->SetDefinition(aParticleDefinition); + cascadeParticle->Set4Momentum(aTrack.Get4Momentum()); + theResult.AddSecondary(cascadeParticle); + } + + // Convert INCL4 output to Geant4 compatible data structures. + // Elementary particles are converted to G4DynamicParticle. + theResult.SetStatusChange(stopAndKill); + +#ifdef DEBUGINCL + G4cout << "E [MeV]" << std::setw(12) << " Ekin [MeV]" << std::setw(12) << " E* [MeV]" << std::setw(12) << "Px [MeV]" << std::setw(12) << " Py [MeV]" << std::setw(12) << "Pz [MeV]" << std::setw(12) << "Pt [MeV]" << std::setw(12) << "A" << std::setw(12) << "Z" << G4endl; +#endif + + for(particleI = 0; particleI < varntp->ntrack; particleI++) { // Loop through the INCL4+ABLA output. + // Get energy/momentum and construct momentum vector in INCL4 coordinates. + momx = varntp->plab[particleI]*std::sin(varntp->tetlab[particleI]*CLHEP::pi/180.0)*std::cos(varntp->philab[particleI]*CLHEP::pi/180.0)*MeV; + momy = varntp->plab[particleI]*std::sin(varntp->tetlab[particleI]*CLHEP::pi/180.0)*std::sin(varntp->philab[particleI]*CLHEP::pi/180.0)*MeV; + momz = varntp->plab[particleI]*std::cos(varntp->tetlab[particleI]*CLHEP::pi/180.0)*MeV; + + eKin = varntp->enerj[particleI] * MeV; + + G4ThreeVector momDirection(momx, momy, momz); // Direction of the particle. + momDirection = momDirection.unit(); + if(verboseLevel > 2) { + G4cout <<"G4InclCascadeInterface: " << G4endl; + G4cout <<"A = " << varntp->avv[particleI] << " Z = " << varntp->zvv[particleI] << G4endl; + G4cout <<"eKin = " << eKin << " MeV" << G4endl; + G4cout <<"px = " << momDirection.x() << " py = " << momDirection.y() <<" pz = " << momDirection.z() << G4endl; + } + + G4int particleIdentified = 0; // Check particle ID. + + if((varntp->avv[particleI] == 1) && (varntp->zvv[particleI] == 1)) { // Proton + cascadeParticle = + new G4DynamicParticle(G4Proton::ProtonDefinition(), momDirection, eKin); + particleIdentified++; +#ifdef DEBUGINCL + baryonNumber--; + chargeNumber--; +#endif + } + + if((varntp->avv[particleI] == 1) && (varntp->zvv[particleI] == 0)) { // Neutron + cascadeParticle = + new G4DynamicParticle(G4Neutron::NeutronDefinition(), momDirection, eKin); + particleIdentified++; +#ifdef DEBUGINCL + baryonNumber--; +#endif + } + + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == 1)) { // PionPlus + cascadeParticle = + new G4DynamicParticle(G4PionPlus::PionPlusDefinition(), momDirection, eKin); + particleIdentified++; +#ifdef DEBUGINCL + chargeNumber--; +#endif + } + + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == 0)) { // PionZero + cascadeParticle = + new G4DynamicParticle(G4PionZero::PionZeroDefinition(), momDirection, eKin); + particleIdentified++; + } + + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == -1)) { // PionMinus + cascadeParticle = + new G4DynamicParticle(G4PionMinus::PionMinusDefinition(), momDirection, eKin); + particleIdentified++; +#ifdef DEBUGINCL + chargeNumber++; +#endif + } + + if((varntp->avv[particleI] > 1) && (varntp->zvv[particleI] >= 1)) { // Nucleus fragment + G4ParticleDefinition * aIonDef = 0; + G4ParticleTable *theTableOfParticles = G4ParticleTable::GetParticleTable(); + + G4int A = G4int(varntp->avv[particleI]); + G4int Z = G4int(varntp->zvv[particleI]); + G4double excitationE = G4double(varntp->exini) * MeV; + + if(verboseLevel > 1) { + G4cout <<"Finding ion: A = " << A << " Z = " << Z << " E* = " << excitationE/MeV << G4endl; + } + aIonDef = theTableOfParticles->GetIon(Z, A, excitationE); + + if(aIonDef == 0) { + if(verboseLevel > 1) { + G4cout <<"G4InclCascadeInterface: " << G4endl; + G4cout <<"FATAL ERROR: aIonDef = 0" << G4endl; + G4cout <<"A = " << A << " Z = " << Z << " E* = " << excitationE << G4endl; + } + } + + if(aIonDef != 0) { // If the ion was identified add it to output. + cascadeParticle = + new G4DynamicParticle(aIonDef, momDirection, eKin); + particleIdentified++; +#ifdef DEBUGINCL + baryonNumber = baryonNumber - A; + chargeNumber = chargeNumber - Z; +#endif + } + } + + if(particleIdentified == 1) { // Particle identified properly. + cascadeParticle->Set4Momentum(cascadeParticle->Get4Momentum()*=toLabFrame); +#ifdef DEBUGINCL + G4ParticleDefinition *pd = cascadeParticle->GetDefinition(); + G4LorentzVector fm = cascadeParticle->Get4Momentum(); + G4ThreeVector mom = cascadeParticle->GetMomentum(); + G4double m = pd->GetPDGMass(); + G4double p = mom.mag(); + labv -= fm; + G4double px = mom.x() * MeV; + G4double py = mom.y() * MeV; + G4double pz = mom.z() * MeV; + G4double pt = std::sqrt(px*px+py*py); + G4double e = fm.e(); + eKinSum -= cascadeParticle->GetKineticEnergy() * MeV; + G4double exE; + if(varntp->avv[particleI] > 1) { + exE = varntp->exini; + } + else { + exE = 0.0; + } + G4cout << fm.e() / MeV + << std::setw(12) << cascadeParticle->GetKineticEnergy() / MeV + << std::setw(12) << exE / MeV + << std::setw(12) << mom.x() / MeV + << std::setw(12) << mom.y() / MeV + << std::setw(12) << mom.z() / MeV + << std::setw(12) << pt / MeV + << std::setw(12) << varntp->avv[particleI] + << std::setw(12) << varntp->zvv[particleI] << G4endl; +#endif + theResult.AddSecondary(cascadeParticle); // Put data into G4HadFinalState. + } + else { // Particle identification failed. + if(particleIdentified > 1) { // Particle was identified as more than one particle type. + if(verboseLevel > 1) { + G4cout <<"G4InclCascadeInterface: One outcoming particle was identified as"; + G4cout <<"more than one particle type. This is probably due to a bug in the interface." << G4endl; + G4cout <<"Particle A:" << varntp->avv[particleI] << "Z: " << varntp->zvv[particleI] << G4endl; + G4cout << "(particleIdentified =" << particleIdentified << ")" << G4endl; + } + } + } + } +#ifdef DEBUGINCL + G4cout <<"--------------------------------------------------------------------------------" << G4endl; + G4double pt = std::sqrt(std::pow(labv.x(), 2) + std::pow(labv.y(), 2)); + G4cout << labv.e() / MeV << std::setw(12) << eKinSum / MeV << std::setw(12) << labv.x() << std::setw(12) << labv.y() << std::setw(12) << labv.z() << std::setw(12) << pt / MeV << std::setw(12) << baryonNumber << std::setw(12) << chargeNumber << " totals" << G4endl; + G4cout << G4endl; + + if(verboseLevel > 3) { + if(baryonNumber != 0) { + G4cout <<"WARNING G4InclCascadeInterface: Baryon number conservation violated." << G4endl; + G4cout <<"Baryon number balance after the event: " << baryonNumber << G4endl; + if(baryonNumber < 0) { + G4cout <<"Too many baryons produced." << G4endl; + } else { + G4cout <<"Too few baryons produced." << G4endl; + } + } + } +#endif + + varntp->ntrack = 0; // Clean up the number of generated particles in the event. + } + /** + * Report unsupported features. + * (Check bullet, target, energy range) + */ + else { // If the bullet type was not recognized by the interface, it will be returned back without any interaction. + theResult.SetStatusChange(stopAndKill); + + G4ParticleTable *theTableOfParticles = G4ParticleTable::GetParticleTable(); + cascadeParticle = new G4DynamicParticle(theTableOfParticles->FindParticle(aTrack.GetDefinition()), aTrack.Get4Momentum()); + + theResult.AddSecondary(cascadeParticle); + + if(verboseLevel > 1) { + G4cout <<"ERROR G4InclCascadeInterface: Processing event number (internal) failed " << eventNumber << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"ERROR G4InclCascadeInterface: Processing event number (internal) failed " << eventNumber << G4endl; + } + + if(bulletType == 0) { + if(verboseLevel > 1) { + G4cout <<"G4InclCascadeInterface: Unknown bullet type" << G4endl; + G4cout <<"Bullet particle name: " << cascadeParticle->GetDefinition()->GetParticleName() << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"G4InclCascadeInterface: Unknown bullet type" << G4endl; + diagdata <<"Bullet particle name: " << cascadeParticle->GetDefinition()->GetParticleName() << G4endl; + } + } + + if((targetA == 1) && (targetZ == 1)) { // Unsupported target + if(verboseLevel > 1) { + G4cout <<"Unsupported target: " << G4endl; + G4cout <<"Target A: " << targetA << G4endl; + G4cout <<"TargetZ: " << targetZ << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"Unsupported target: " << G4endl; + diagdata <<"Target A: " << targetA << G4endl; + diagdata <<"TargetZ: " << targetZ << G4endl; + } + } + + if(bulletE < 100) { // INCL does not support E < 100 MeV. + if(verboseLevel > 1) { + G4cout <<"Unsupported bullet energy: " << bulletE << " MeV. (Lower limit is 100 MeV)." << G4endl; + G4cout <<"WARNING: Returning the original bullet with original energy back to Geant4." << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"Unsupported bullet energy: " << bulletE << " MeV. (Lower limit is 100 MeV)." << G4endl; + } + } + + if(verboseLevel > 3) { + diagdata <<"WARNING: returning the original bullet with original energy back to Geant4." << G4endl; + } + } + + return &theResult; +} + +G4ReactionProductVector* G4InclCascadeInterface::Propagate(G4KineticTrackVector* , G4V3DNucleus* ) { + return 0; +} + + diff --git a/source/processes/hadronic/models/incl/src/G4InclLightIonInterface.cc b/source/processes/hadronic/models/incl/src/G4InclLightIonInterface.cc new file mode 100644 index 0000000000..edbe634f6c --- /dev/null +++ b/source/processes/hadronic/models/incl/src/G4InclLightIonInterface.cc @@ -0,0 +1,391 @@ +// +// ******************************************************************** +// * 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: G4InclLightIonInterface.cc,v 1.10 2007/12/10 16:32:07 gunter Exp $ +// Translation of INCL4.2/ABLA V3 +// Pekka Kaitaniemi, HIP (translation) +// Christelle Schmidt, IPNL (fission code) +// Alain Boudard, CEA (contact person INCL/ABLA) +// Aatos Heikkinen, HIP (project coordination) + +#include "G4InclLightIonInterface.hh" +#include "math.h" +#include "G4GenericIon.hh" +#include "CLHEP/Random/Random.h" + +G4InclLightIonInterface::G4InclLightIonInterface() +{ + hazard = new G4Hazard(); + const G4long* table_entry = CLHEP::HepRandom::getTheSeeds(); // Get random seed from CLHEP. + hazard->ial = (*table_entry); + + varntp = new G4VarNtp(); + calincl = new G4Calincl(); + ws = new G4Ws(); + mat = new G4Mat(); + incl = new G4Incl(hazard, calincl, ws, mat, varntp); + + verboseLevel = 0; +} + +G4InclLightIonInterface::~G4InclLightIonInterface() +{ + delete hazard; + delete varntp; + delete calincl; + delete ws; + delete mat; + delete incl; +} + +G4HadFinalState* G4InclLightIonInterface::ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& theNucleus) +{ + G4int maxTries = 200; + + G4int particleI, n = 0; + + G4int bulletType = 0; + + // Print diagnostic messages: 0 = silent, 1 and 2 = verbose + verboseLevel = 0; + + // Increase the event number: + eventNumber++; + + if (verboseLevel > 1) { + G4cout << " >>> G4InclLightIonInterface::ApplyYourself called" << G4endl; + } + + if(verboseLevel > 1) { + G4cout <<"G4InclLightIonInterface: Now processing INCL4 event number:" << eventNumber << G4endl; + } + + // INCL4 needs the energy in units MeV + G4double bulletE = aTrack.GetKineticEnergy() / MeV; + + G4double targetA = theNucleus.GetN(); + G4double targetZ = theNucleus.GetZ(); + + G4double eKin; + G4double momx = 0.0, momy = 0.0, momz = 0.0; + G4DynamicParticle *cascadeParticle = 0; + G4ParticleDefinition *aParticleDefinition = 0; + + // INCL assumes the projectile particle is going in the direction of + // the Z-axis. Here we construct proper rotation to convert the + // momentum vectors of the outcoming particles to the original + // coordinate system. + G4LorentzVector projectileMomentum = aTrack.Get4Momentum(); + G4LorentzRotation toZ; + toZ.rotateZ(-projectileMomentum.phi()); + toZ.rotateY(-projectileMomentum.theta()); + G4LorentzRotation toLabFrame = toZ.inverse(); + + theResult.Clear(); // Make sure the output data structure is clean. + + // Map Geant4 particle types to corresponding INCL4 types. + enum bulletParticleType {nucleus = 0, proton = 1, neutron = 2, pionPlus = 3, pionZero = 4, + pionMinus = 5, deuteron = 6, triton = 7, he3 = 8, he4 = 9}; + + // Coding particles for use with INCL4 and ABLA + if (aTrack.GetDefinition() == G4Deuteron::Deuteron() ) bulletType = deuteron; + if (aTrack.GetDefinition() == G4Triton::Triton() ) bulletType = triton; + if (aTrack.GetDefinition() == G4He3::He3() ) bulletType = he3; + if (aTrack.GetDefinition() == G4Alpha::Alpha() ) bulletType = he4; + + for(int i = 0; i < 15; i++) { + calincl->f[i] = 0.0; // Initialize INCL input data + } + + // Check wheter the input is acceptable. + if((bulletType != 0) && ((targetA != 1) && (targetZ != 1))) { + calincl->f[0] = targetA; // Target mass number + calincl->f[1] = targetZ; // Charge number + calincl->f[6] = bulletType; // Type + calincl->f[2] = bulletE; // Energy [MeV] + calincl->f[5] = 1.0; // Time scaling + calincl->f[4] = 45.0; // Nuclear potential + + ws->nosurf = -2; // Nucleus surface, -2 = Woods-Saxon + ws->xfoisa = 8; + ws->npaulstr = 0; + + int nTries = 0; + varntp->ntrack = 0; + + mat->nbmat = 1; + mat->amat[0] = int(calincl->f[0]); + mat->zmat[0] = int(calincl->f[1]); + + incl->initIncl(true); + + while((varntp->ntrack <= 0) && (nTries < maxTries)) { // Loop until we produce real cascade + nTries++; + if(verboseLevel > 1) { + G4cout <<"G4InclLightIonInterface: Try number = " << nTries << G4endl; + } + incl->processEventIncl(); + + if(verboseLevel > 1) { + G4cout <<"G4InclLightIonInterface: number of tracks = " << varntp->ntrack < 1) { + /** + * Diagnostic output + */ + G4cout <<"G4InclLightIonInterface: Bullet type: " << bulletType << G4endl; + G4cout <<"G4Incl4AblaCascadeInterface: Bullet energy: " << bulletE << " MeV" << G4endl; + + G4cout <<"G4InclLightIonInterface: Target A: " << targetA << G4endl; + G4cout <<"G4InclLightIonInterface: Target Z: " << targetZ << G4endl; + + if(verboseLevel > 3) { + diagdata <<"G4InclLightIonInterface: Bullet type: " << bulletType << G4endl; + diagdata <<"G4InclLightIonInterface: Bullet energy: " << bulletE << " MeV" << G4endl; + + diagdata <<"G4InclLightIonInterface: Target A: " << targetA << G4endl; + diagdata <<"G4InclLightIonInterface: Target Z: " << targetZ << G4endl; + } + + for(particleI = 0; particleI < varntp->ntrack; particleI++) { + G4cout << n << " " << calincl->f[6] << " " << calincl->f[2] << " "; + G4cout << varntp->massini << " " << varntp->mzini << " "; + G4cout << varntp->exini << " " << varntp->mulncasc << " " << varntp->mulnevap << " " << varntp->mulntot << " "; + G4cout << varntp->bimpact << " " << varntp->jremn << " " << varntp->kfis << " " << varntp->estfis << " "; + G4cout << varntp->izfis << " " << varntp->iafis << " " << varntp->ntrack << " " << varntp->itypcasc[particleI] << " "; + G4cout << varntp->avv[particleI] << " " << varntp->zvv[particleI] << " " << varntp->enerj[particleI] << " "; + G4cout << varntp->plab[particleI] << " " << varntp->tetlab[particleI] << " " << varntp->philab[particleI] << G4endl; + // For diagnostic output + if(verboseLevel > 3) { + diagdata << n << " " << calincl->f[6] << " " << calincl->f[2] << " "; + diagdata << varntp->massini << " " << varntp->mzini << " "; + diagdata << varntp->exini << " " << varntp->mulncasc << " " << varntp->mulnevap << " " << varntp->mulntot << " "; + diagdata << varntp->bimpact << " " << varntp->jremn << " " << varntp->kfis << " " << varntp->estfis << " "; + diagdata << varntp->izfis << " " << varntp->iafis << " " << varntp->ntrack << " "; + diagdata << varntp->itypcasc[particleI] << " "; + diagdata << varntp->avv[particleI] << " " << varntp->zvv[particleI] << " " << varntp->enerj[particleI] << " "; + diagdata << varntp->plab[particleI] << " " << varntp->tetlab[particleI] << " " << varntp->philab[particleI] << G4endl; + } + } + } + + // Check whether a valid cascade was produced. + // If not return the original bullet particle with the same momentum. + if(varntp->ntrack <= 0) { + if(verboseLevel > 1) { + G4cout <<"WARNING G4InclLightIonInterface: No cascade. Returning original particle with original momentum." << G4endl; + G4cout <<"\t Reached maximum trials of 200 to produce inelastic scattering." << G4endl; + } + + theResult.SetStatusChange(stopAndKill); + + if(bulletType == proton) { + aParticleDefinition = G4Proton::ProtonDefinition(); + } + if(bulletType == neutron) { + aParticleDefinition = G4Neutron::NeutronDefinition(); + } + if(bulletType == pionPlus) { + aParticleDefinition = G4PionPlus::PionPlusDefinition(); + } + if(bulletType == pionZero) { + aParticleDefinition = G4PionZero::PionZeroDefinition(); + } + if(bulletType == pionMinus) { + aParticleDefinition = G4PionMinus::PionMinusDefinition(); + } + + cascadeParticle = new G4DynamicParticle(); + cascadeParticle->SetDefinition(aParticleDefinition); + cascadeParticle->Set4Momentum(aTrack.Get4Momentum()); + theResult.AddSecondary(cascadeParticle); + } + + // Convert INCL4 output to Geant4 compatible data structures. + // Elementary particles are converted to G4DynamicParticle. + theResult.SetStatusChange(stopAndKill); + + for(particleI = 0; particleI < varntp->ntrack; particleI++) { // Loop through the INCL4+ABLA output. + // Get energy/momentum and construct momentum vector in INCL4 coordinates. + momx = varntp->plab[particleI]*std::sin(varntp->tetlab[particleI]*CLHEP::pi/180.0)*std::cos(varntp->philab[particleI]*CLHEP::pi/180.0)*MeV; + momy = varntp->plab[particleI]*std::sin(varntp->tetlab[particleI]*CLHEP::pi/180.0)*std::sin(varntp->philab[particleI]*CLHEP::pi/180.0)*MeV; + momz = varntp->plab[particleI]*std::cos(varntp->tetlab[particleI]*CLHEP::pi/180.0)*MeV; + + eKin = varntp->enerj[particleI] * MeV; + + G4ThreeVector momDirection(momx, momy, momz); // Direction of the particle. + momDirection = momDirection.unit(); + if(verboseLevel > 2) { + G4cout <<"G4InclLightIonInterface: " << G4endl; + G4cout <<"A = " << varntp->avv[particleI] << " Z = " << varntp->zvv[particleI] << G4endl; + G4cout <<"eKin = " << eKin << " MeV" << G4endl; + G4cout <<"px = " << momDirection.x() << " py = " << momDirection.y() <<" pz = " << momDirection.z() << G4endl; + } + + G4int particleIdentified = 0; // Check particle ID. + + if((varntp->avv[particleI] == 1) && (varntp->zvv[particleI] == 1)) { // Proton + cascadeParticle = + new G4DynamicParticle(G4Proton::ProtonDefinition(), momDirection, eKin); + particleIdentified++; + } + + if((varntp->avv[particleI] == 1) && (varntp->zvv[particleI] == 0)) { // Neutron + cascadeParticle = + new G4DynamicParticle(G4Neutron::NeutronDefinition(), momDirection, eKin); + particleIdentified++; + } + + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == 1)) { // PionPlus + cascadeParticle = + new G4DynamicParticle(G4PionPlus::PionPlusDefinition(), momDirection, eKin); + particleIdentified++; + } + + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == 0)) { // PionZero + cascadeParticle = + new G4DynamicParticle(G4PionZero::PionZeroDefinition(), momDirection, eKin); + particleIdentified++; + } + + if((varntp->avv[particleI] == -1) && (varntp->zvv[particleI] == -1)) { // PionMinus + cascadeParticle = + new G4DynamicParticle(G4PionMinus::PionMinusDefinition(), momDirection, eKin); + particleIdentified++; + } + + if((varntp->avv[particleI] > 1) && (varntp->zvv[particleI] >= 1)) { // Nucleus fragment + G4ParticleDefinition * aIonDef = 0; + G4ParticleTable *theTableOfParticles = G4ParticleTable::GetParticleTable(); + + G4int A = G4int(varntp->avv[particleI]); + G4int Z = G4int(varntp->zvv[particleI]); + G4double excitationE = G4double(varntp->exini) * MeV; + + if(verboseLevel > 1) { + G4cout <<"Finding ion: A = " << A << " Z = " << Z << " E* = " << excitationE/MeV << G4endl; + } + aIonDef = theTableOfParticles->GetIon(Z, A, excitationE); + + if(aIonDef == 0) { + if(verboseLevel > 1) { + G4cout <<"G4InclLightIonInterface: " << G4endl; + G4cout <<"FATAL ERROR: aIonDef = 0" << G4endl; + G4cout <<"A = " << A << " Z = " << Z << " E* = " << excitationE << G4endl; + } + } + + if(aIonDef != 0) { // If the ion was identified add it to output. + cascadeParticle = + new G4DynamicParticle(aIonDef, momDirection, eKin); + particleIdentified++; + } + } + + if(particleIdentified == 1) { // Particle identified properly. + cascadeParticle->Set4Momentum(cascadeParticle->Get4Momentum()*=toLabFrame); + theResult.AddSecondary(cascadeParticle); // Put data into G4HadFinalState. + } + else { // Particle identification failed. + if(particleIdentified > 1) { // Particle was identified as more than one particle type. + if(verboseLevel > 1) { + G4cout <<"G4InclLightIonInterface: One outcoming particle was identified as"; + G4cout <<"more than one particle type. This is probably due to a bug in the interface." << G4endl; + G4cout <<"Particle A:" << varntp->avv[particleI] << "Z: " << varntp->zvv[particleI] << G4endl; + G4cout << "(particleIdentified =" << particleIdentified << ")" << G4endl; + } + } + } + } + + varntp->ntrack = 0; // Clean up the number of generated particles in the event. + } + /** + * Report unsupported features. + * (Check bullet, target, energy range) + */ + else { // If the bullet type was not recognized by the interface, it will be returned back without any interaction. + theResult.SetStatusChange(stopAndKill); + + G4ParticleTable *theTableOfParticles = G4ParticleTable::GetParticleTable(); + cascadeParticle = new G4DynamicParticle(theTableOfParticles->FindParticle(aTrack.GetDefinition()), aTrack.Get4Momentum()); + + theResult.AddSecondary(cascadeParticle); + + if(verboseLevel > 1) { + G4cout <<"G4InclLightIonInterface: Error processing event number (internal) " << eventNumber << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"G4InclLightIonInterface: Error processing event number (internal) " << eventNumber << G4endl; + } + + if(bulletType == 0) { + if(verboseLevel > 1) { + G4cout <<"G4InclLightIonInterface: Unknown bullet type" << G4endl; + G4cout <<"Bullet particle name: " << cascadeParticle->GetDefinition()->GetParticleName() << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"G4InclLightIonInterface: Unknown bullet type" << G4endl; + diagdata <<"Bullet particle name: " << cascadeParticle->GetDefinition()->GetParticleName() << G4endl; + } + } + + if((targetA == 1) && (targetZ == 1)) { // Unsupported target + if(verboseLevel > 1) { + G4cout <<"Unsupported target: " << G4endl; + G4cout <<"Target A: " << targetA << G4endl; + G4cout <<"TargetZ: " << targetZ << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"Unsupported target: " << G4endl; + diagdata <<"Target A: " << targetA << G4endl; + diagdata <<"TargetZ: " << targetZ << G4endl; + } + } + + if(bulletE < 100) { // INCL does not support E < 100 MeV. + if(verboseLevel > 1) { + G4cout <<"Unsupported bullet energy: " << bulletE << " MeV. (Lower limit is 100 MeV)." << G4endl; + G4cout <<"WARNING: Returning the original bullet with original energy back to Geant4." << G4endl; + } + if(verboseLevel > 3) { + diagdata <<"Unsupported bullet energy: " << bulletE << " MeV. (Lower limit is 100 MeV)." << G4endl; + } + } + if(verboseLevel > 3) { + diagdata <<"WARNING: returning the original bullet with original energy back to Geant4." << G4endl; + } + } + + return &theResult; +} + +G4ReactionProductVector* G4InclLightIonInterface::Propagate(G4KineticTrackVector* , G4V3DNucleus* ) { + return 0; +} + + diff --git a/source/processes/hadronic/models/leading_particle/include/G4Mars5GeV.hh b/source/processes/hadronic/models/leading_particle/include/G4Mars5GeV.hh index a93ebd0336..f94dc7151a 100644 --- a/source/processes/hadronic/models/leading_particle/include/G4Mars5GeV.hh +++ b/source/processes/hadronic/models/leading_particle/include/G4Mars5GeV.hh @@ -25,7 +25,7 @@ // // // $Id: G4Mars5GeV.hh,v 1.5 2006/06/29 20:43:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/hadronic/models/leading_particle/src/G4Mars5GeV.cc b/source/processes/hadronic/models/leading_particle/src/G4Mars5GeV.cc index c156748eca..d682f9557f 100644 --- a/source/processes/hadronic/models/leading_particle/src/G4Mars5GeV.cc +++ b/source/processes/hadronic/models/leading_particle/src/G4Mars5GeV.cc @@ -25,7 +25,7 @@ // // // $Id: G4Mars5GeV.cc,v 1.14 2006/06/29 20:43:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/hadronic/models/lll_fission/include/G4FissLib.hh b/source/processes/hadronic/models/lll_fission/include/G4FissLib.hh index e5deb2bbd8..83c93cbcf4 100755 --- a/source/processes/hadronic/models/lll_fission/include/G4FissLib.hh +++ b/source/processes/hadronic/models/lll_fission/include/G4FissLib.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FissLib.hh,v 1.2 2007/06/01 13:46:53 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ******************************************************************** // ! A neutron-induced fission package ! diff --git a/source/processes/hadronic/models/lll_fission/include/G4FissionLibrary.hh b/source/processes/hadronic/models/lll_fission/include/G4FissionLibrary.hh index 1243286872..edc93ab025 100755 --- a/source/processes/hadronic/models/lll_fission/include/G4FissionLibrary.hh +++ b/source/processes/hadronic/models/lll_fission/include/G4FissionLibrary.hh @@ -53,7 +53,7 @@ // UCRL-CODE-224807 // // $Id: G4FissionLibrary.hh,v 1.4 2007/06/01 14:02:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4FissionLibrary_h diff --git a/source/processes/hadronic/models/low_energy/include/G4LCapture.hh b/source/processes/hadronic/models/low_energy/include/G4LCapture.hh index bcba85df4b..4b82fe863a 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LCapture.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LCapture.hh @@ -25,7 +25,7 @@ // // // $Id: G4LCapture.hh,v 1.11 2006/06/29 20:43:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Low energy model: neutron capture -- header file diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAlphaInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAlphaInelastic.hh index cbb01c781c..20e74dadaf 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAlphaInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAlphaInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEAlphaInelastic.hh,v 1.10 2007/02/24 06:06:38 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy Alpha Inelastic Process // J.L. Chuma, TRIUMF, 21-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiKaonZeroInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiKaonZeroInelastic.hh index 1f9640df52..4a871b40dc 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiKaonZeroInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiKaonZeroInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiKaonZeroInelastic.hh,v 1.7 2007/02/24 06:10:26 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy KaonZeroL Inelastic Process // J.L. Chuma, TRIUMF, 12-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiLambdaInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiLambdaInelastic.hh index 3235c4a9c1..ef9db8e27d 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiLambdaInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiLambdaInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiLambdaInelastic.hh,v 1.11 2007/02/24 06:11:24 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy AntiLambda Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiNeutronInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiNeutronInelastic.hh index 10b411de55..6be534713d 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiNeutronInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiNeutronInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiNeutronInelastic.hh,v 1.11 2007/02/24 06:13:02 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy AntiNeutron Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiOmegaMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiOmegaMinusInelastic.hh index 0c6b6d6058..513942f3b6 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiOmegaMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiOmegaMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiOmegaMinusInelastic.hh,v 1.11 2007/02/24 06:13:54 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy AntiOmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiProtonInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiProtonInelastic.hh index 7c3fb5739b..1481604e62 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiProtonInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiProtonInelastic.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4LEAntiProtonInelastic.hh,v 1.11 2007/02/24 05:07:32 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy AntiProton Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaMinusInelastic.hh index db210a4493..5dfa5faacf 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiSigmaMinusInelastic.hh,v 1.11 2007/02/24 06:38:14 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy AntiSigmaMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaPlusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaPlusInelastic.hh index 383521dcd9..deb952a7df 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaPlusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaPlusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiSigmaPlusInelastic.hh,v 1.11 2007/02/24 06:39:17 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy AntiSigmaPlus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiXiMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiXiMinusInelastic.hh index 51d4e85781..249acf60e8 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiXiMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiXiMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiXiMinusInelastic.hh,v 1.11 2007/02/24 06:42:10 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy AntiXiMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiXiZeroInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiXiZeroInelastic.hh index 85aed0ed37..69409939d2 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiXiZeroInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiXiZeroInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiXiZeroInelastic.hh,v 1.11 2007/02/24 06:43:02 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy AntiXiZero Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEDeuteronInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEDeuteronInelastic.hh index e170cc109a..ea4c20d1c8 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEDeuteronInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEDeuteronInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEDeuteronInelastic.hh,v 1.10 2007/02/24 06:45:04 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy Deuteron Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEKaonMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEKaonMinusInelastic.hh index 1797523ca8..78cc5325ae 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEKaonMinusInelastic.hh,v 1.11 2007/02/26 18:21:07 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy KaonMinus Inelastic Process // J.L. Chuma, TRIUMF, 12-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEKaonPlusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEKaonPlusInelastic.hh index 9ebfff5a23..5b4669b330 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonPlusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonPlusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEKaonPlusInelastic.hh,v 1.11 2007/02/26 18:21:57 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy KaonPlus Inelastic Process // J.L. Chuma, TRIUMF, 12-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroInelastic.hh index 9c050472b3..3b65d6eaf1 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEKaonZeroInelastic.hh,v 1.7 2007/02/26 18:23:45 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy KaonZeroS Inelastic Process // J.L. Chuma, TRIUMF, 12-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroLInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroLInelastic.hh index 1856b86edb..337b1a97f2 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroLInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroLInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEKaonZeroLInelastic.hh,v 1.12 2007/02/26 18:24:54 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroSInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroSInelastic.hh index 869eea5461..eb75df6930 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroSInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroSInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEKaonZeroSInelastic.hh,v 1.12 2007/02/26 18:25:37 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/low_energy/include/G4LELambdaInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LELambdaInelastic.hh index f3fc1f4aae..803fcbd173 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LELambdaInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LELambdaInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LELambdaInelastic.hh,v 1.11 2007/02/26 18:27:08 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy Lambda Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEOmegaMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEOmegaMinusInelastic.hh index 151c6e65b0..893b2e8057 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEOmegaMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEOmegaMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEOmegaMinusInelastic.hh,v 1.11 2007/02/26 18:29:56 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy OmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Nov-1996 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEPionMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEPionMinusInelastic.hh index 4ecaa83737..a91ca4f5f3 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEPionMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEPionMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEPionMinusInelastic.hh,v 1.12 2007/02/24 05:23:37 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy PionMinus Inelastic Process // original by J.L. Chuma, TRIUMF, 03-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEPionPlusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEPionPlusInelastic.hh index 02e866b54f..f41eeff42f 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEPionPlusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEPionPlusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEPionPlusInelastic.hh,v 1.12 2007/02/24 05:23:52 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy PionPlus Inelastic Process // J.L. Chuma, TRIUMF, 19-Nov-1996 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEProtonInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEProtonInelastic.hh index 17c7f892e2..5079a49bb5 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEProtonInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEProtonInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEProtonInelastic.hh,v 1.12 2007/02/26 18:31:19 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy Proton Inelastic Process // original by H.P. Wellisch diff --git a/source/processes/hadronic/models/low_energy/include/G4LESigmaMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LESigmaMinusInelastic.hh index f529c30691..d961a10331 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LESigmaMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LESigmaMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LESigmaMinusInelastic.hh,v 1.11 2007/02/26 18:33:03 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy SigmaMinus Inelastic Process // original by J.L. Chuma, TRIUMF, 03-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LESigmaPlusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LESigmaPlusInelastic.hh index 1c8c63b121..94c4c31aef 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LESigmaPlusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LESigmaPlusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LESigmaPlusInelastic.hh,v 1.11 2007/02/26 18:33:48 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy SigmaPlus Inelastic Process // original by J.L. Chuma, TRIUMF, 03-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LETritonInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LETritonInelastic.hh index 24b6d6feb1..9dde86725e 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LETritonInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LETritonInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LETritonInelastic.hh,v 1.10 2007/02/26 18:34:35 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy Triton Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEXiMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEXiMinusInelastic.hh index ce63a267ce..1e2cda435a 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEXiMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEXiMinusInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEXiMinusInelastic.hh,v 1.11 2007/02/26 18:35:18 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy XiMinus Inelastic Process // original by J.L. Chuma, TRIUMF, 03-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEXiZeroInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEXiZeroInelastic.hh index ea5ac11cc9..a51491765e 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEXiZeroInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEXiZeroInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LEXiZeroInelastic.hh,v 1.11 2007/02/26 18:36:05 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy XiZero Inelastic Process // original by J.L. Chuma, TRIUMF, 03-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LElastic.hh b/source/processes/hadronic/models/low_energy/include/G4LElastic.hh index 6127d6bb53..045dc66497 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LElastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LElastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4LElastic.hh,v 1.12 2007/02/26 19:05:01 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Model: Low energy elastic scattering -- header file diff --git a/source/processes/hadronic/models/low_energy/include/G4LFission.hh b/source/processes/hadronic/models/low_energy/include/G4LFission.hh index c206205b51..dfe63fabf7 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LFission.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LFission.hh @@ -25,7 +25,7 @@ // // // $Id: G4LFission.hh,v 1.11 2006/06/29 20:44:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Low-energy Model: Fission -- header file diff --git a/source/processes/hadronic/models/low_energy/src/G4LCapture.cc b/source/processes/hadronic/models/low_energy/src/G4LCapture.cc index 1d15a7bc68..65f03a69a8 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LCapture.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LCapture.cc @@ -25,7 +25,7 @@ // // // $Id: G4LCapture.cc,v 1.14 2007/02/24 05:17:29 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Model: Low-energy Neutron Capture diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiKaonZeroInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiKaonZeroInelastic.cc index a673fbb9c0..f0cde567ca 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiKaonZeroInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiKaonZeroInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiKaonZeroInelastic.cc,v 1.10 2006/06/29 20:44:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy KaonZeroLong Inelastic Process // J.L. Chuma, TRIUMF, 11-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiLambdaInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiLambdaInelastic.cc index 8e2e0ffd7c..65c46fed3a 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiLambdaInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiLambdaInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiLambdaInelastic.cc,v 1.11 2006/06/29 20:44:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: AntiLambda Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiNeutronInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiNeutronInelastic.cc index 5d693c832b..f5cce283df 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiNeutronInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiNeutronInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiNeutronInelastic.cc,v 1.14 2006/06/29 20:44:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: AntiNeutron Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiOmegaMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiOmegaMinusInelastic.cc index 4d35891c88..66131f3b8c 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiOmegaMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiOmegaMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiOmegaMinusInelastic.cc,v 1.12 2006/06/29 20:44:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: AntiOmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiProtonInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiProtonInelastic.cc index 408503084b..ff16e69e20 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiProtonInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiProtonInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiProtonInelastic.cc,v 1.15 2007/02/24 05:11:27 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: AntiProton Inelastic Process // J.L. Chuma, TRIUMF, 13-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaMinusInelastic.cc index a9da26d221..56327a764e 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiSigmaMinusInelastic.cc,v 1.11 2006/06/29 20:44:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: AntiSigmaMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaPlusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaPlusInelastic.cc index 9b330acd27..f05471439d 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaPlusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaPlusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiSigmaPlusInelastic.cc,v 1.11 2006/06/29 20:44:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: AntiSigmaPlus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiXiMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiXiMinusInelastic.cc index 1fa3372747..423fbb522f 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiXiMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiXiMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiXiMinusInelastic.cc,v 1.11 2006/06/29 20:44:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: AntiXiMinus Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiXiZeroInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiXiZeroInelastic.cc index b2a2f22a71..7a10931140 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiXiZeroInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiXiZeroInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEAntiXiZeroInelastic.cc,v 1.11 2006/06/29 20:44:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: AntiXiZero Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEKaonMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEKaonMinusInelastic.cc index a7c7412025..14bfce9fb8 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEKaonMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEKaonMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEKaonMinusInelastic.cc,v 1.15 2006/06/29 20:44:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy KaonMinus Inelastic Process // J.L. Chuma, TRIUMF, 12-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEKaonPlusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEKaonPlusInelastic.cc index d17e85a59e..f70c203bce 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEKaonPlusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEKaonPlusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEKaonPlusInelastic.cc,v 1.13 2006/06/29 20:45:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy KaonPlus Inelastic Process // J.L. Chuma, TRIUMF, 05-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroInelastic.cc index ac14267598..ad3d25c2cb 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEKaonZeroInelastic.cc,v 1.9 2006/06/29 20:45:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Low Energy KaonZeroShort Inelastic Process // J.L. Chuma, TRIUMF, 11-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LELambdaInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LELambdaInelastic.cc index fe289376ad..16eee96e12 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LELambdaInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LELambdaInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LELambdaInelastic.cc,v 1.11 2006/06/29 20:45:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Lambda Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEOmegaMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEOmegaMinusInelastic.cc index 2f741f6e8f..e4124e4e92 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEOmegaMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEOmegaMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEOmegaMinusInelastic.cc,v 1.12 2006/06/29 20:45:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: OmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEPionPlusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEPionPlusInelastic.cc index ed7194cf04..c9388faf63 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEPionPlusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEPionPlusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEPionPlusInelastic.cc,v 1.15 2007/02/24 06:28:52 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: PionPlus Inelastic Process // J.L. Chuma, TRIUMF, 19-Nov-1996 diff --git a/source/processes/hadronic/models/low_energy/src/G4LESigmaMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LESigmaMinusInelastic.cc index c9f392102b..5877a6a044 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LESigmaMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LESigmaMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LESigmaMinusInelastic.cc,v 1.11 2006/06/29 20:45:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: SigmaMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LESigmaPlusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LESigmaPlusInelastic.cc index 4e01558fae..4dcfb20c42 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LESigmaPlusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LESigmaPlusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LESigmaPlusInelastic.cc,v 1.11 2006/06/29 20:45:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: SigmaPlus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEXiMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEXiMinusInelastic.cc index 3e12a70c1d..c182d1bae4 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEXiMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEXiMinusInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEXiMinusInelastic.cc,v 1.11 2006/06/29 20:45:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: XiMinus Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEXiZeroInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEXiZeroInelastic.cc index 7a5a82cde3..a7d0b4b4da 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEXiZeroInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEXiZeroInelastic.cc @@ -25,7 +25,7 @@ // // // $Id: G4LEXiZeroInelastic.cc,v 1.11 2006/06/29 20:45:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: XiZero Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LFission.cc b/source/processes/hadronic/models/low_energy/src/G4LFission.cc index f5dd25492c..145a3c490f 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LFission.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LFission.cc @@ -25,7 +25,7 @@ // // // $Id: G4LFission.cc,v 1.15 2007/02/26 19:29:30 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4 Model: Low Energy Fission diff --git a/source/processes/hadronic/models/management/include/G4HadronicInteraction.hh b/source/processes/hadronic/models/management/include/G4HadronicInteraction.hh index 8d8395a8af..55f37a4b58 100644 --- a/source/processes/hadronic/models/management/include/G4HadronicInteraction.hh +++ b/source/processes/hadronic/models/management/include/G4HadronicInteraction.hh @@ -25,7 +25,7 @@ // // // $Id: G4HadronicInteraction.hh,v 1.8 2007/01/11 05:30:01 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Interaction abstract base class // This class is the base class for the model classes. diff --git a/source/processes/hadronic/models/management/include/G4InelasticInteraction.hh b/source/processes/hadronic/models/management/include/G4InelasticInteraction.hh index 733f55b000..c156e56598 100644 --- a/source/processes/hadronic/models/management/include/G4InelasticInteraction.hh +++ b/source/processes/hadronic/models/management/include/G4InelasticInteraction.hh @@ -25,7 +25,7 @@ // // // $Id: G4InelasticInteraction.hh,v 1.5 2007/01/11 05:30:12 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Inelastic Interaction // This class is an abstract base class, since the pure virtual diff --git a/source/processes/hadronic/models/management/include/G4V3DNucleus.hh b/source/processes/hadronic/models/management/include/G4V3DNucleus.hh index 1979d0704c..0387dea619 100644 --- a/source/processes/hadronic/models/management/include/G4V3DNucleus.hh +++ b/source/processes/hadronic/models/management/include/G4V3DNucleus.hh @@ -25,7 +25,7 @@ // // // $Id: G4V3DNucleus.hh,v 1.5 2006/06/29 20:45:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4V3DNucleus_h #define G4V3DNucleus_h 1 diff --git a/source/processes/hadronic/models/management/include/G4VHighEnergyGenerator.hh b/source/processes/hadronic/models/management/include/G4VHighEnergyGenerator.hh index c264b3421b..4b361597e2 100644 --- a/source/processes/hadronic/models/management/include/G4VHighEnergyGenerator.hh +++ b/source/processes/hadronic/models/management/include/G4VHighEnergyGenerator.hh @@ -25,7 +25,7 @@ // // // $Id: G4VHighEnergyGenerator.hh,v 1.4 2006/06/29 20:45:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VHighEnergyGenerator_h #define G4VHighEnergyGenerator_h 1 diff --git a/source/processes/hadronic/models/management/include/G4VIntraNuclearTransportModel.hh b/source/processes/hadronic/models/management/include/G4VIntraNuclearTransportModel.hh index 50b10dd09e..665d738fba 100644 --- a/source/processes/hadronic/models/management/include/G4VIntraNuclearTransportModel.hh +++ b/source/processes/hadronic/models/management/include/G4VIntraNuclearTransportModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4VIntraNuclearTransportModel.hh,v 1.4 2007/01/11 05:29:46 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: G4IntraNuclearTransportMode.hh,v 1.0 1998/06/30 // ----------------------------------------------------------------------------- diff --git a/source/processes/hadronic/models/management/include/G4VKineticNucleon.hh b/source/processes/hadronic/models/management/include/G4VKineticNucleon.hh index 8a7e708583..d00cf1b06f 100644 --- a/source/processes/hadronic/models/management/include/G4VKineticNucleon.hh +++ b/source/processes/hadronic/models/management/include/G4VKineticNucleon.hh @@ -25,7 +25,7 @@ // // // $Id: G4VKineticNucleon.hh,v 1.4 2006/06/29 20:45:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VKineticNucleon_h #define G4VKineticNucleon_h 1 diff --git a/source/processes/hadronic/models/management/include/G4VNuclearDensity.hh b/source/processes/hadronic/models/management/include/G4VNuclearDensity.hh index 9aa1e2272b..1a47181571 100644 --- a/source/processes/hadronic/models/management/include/G4VNuclearDensity.hh +++ b/source/processes/hadronic/models/management/include/G4VNuclearDensity.hh @@ -25,7 +25,7 @@ // // // $Id: G4VNuclearDensity.hh,v 1.4 2006/06/29 20:45:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VNuclearDensity_h #define G4VNuclearDensity_h 1 diff --git a/source/processes/hadronic/models/management/include/G4VPreCompoundModel.hh b/source/processes/hadronic/models/management/include/G4VPreCompoundModel.hh index aaa43e9976..d11f2ab656 100644 --- a/source/processes/hadronic/models/management/include/G4VPreCompoundModel.hh +++ b/source/processes/hadronic/models/management/include/G4VPreCompoundModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4VPreCompoundModel.hh,v 1.5 2007/01/11 05:29:34 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VPreCompoundModel_h diff --git a/source/processes/hadronic/models/management/src/G4V3DNucleus.cc b/source/processes/hadronic/models/management/src/G4V3DNucleus.cc index 9df544342d..6d580c0834 100644 --- a/source/processes/hadronic/models/management/src/G4V3DNucleus.cc +++ b/source/processes/hadronic/models/management/src/G4V3DNucleus.cc @@ -25,7 +25,7 @@ // // // $Id: G4V3DNucleus.cc,v 1.5 2006/06/29 20:45:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4V3DNucleus.hh" #include "G4HadronicException.hh" diff --git a/source/processes/hadronic/models/management/src/G4VHighEnergyGenerator.cc b/source/processes/hadronic/models/management/src/G4VHighEnergyGenerator.cc index b97608314d..de34d5f99e 100644 --- a/source/processes/hadronic/models/management/src/G4VHighEnergyGenerator.cc +++ b/source/processes/hadronic/models/management/src/G4VHighEnergyGenerator.cc @@ -25,7 +25,7 @@ // // // $Id: G4VHighEnergyGenerator.cc,v 1.5 2006/06/29 20:46:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VHighEnergyGenerator #include "G4VHighEnergyGenerator.hh" diff --git a/source/processes/hadronic/models/management/src/G4VIntraNuclearTransportModel.cc b/source/processes/hadronic/models/management/src/G4VIntraNuclearTransportModel.cc index 1cac01e657..1ff1312ba7 100644 --- a/source/processes/hadronic/models/management/src/G4VIntraNuclearTransportModel.cc +++ b/source/processes/hadronic/models/management/src/G4VIntraNuclearTransportModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4VIntraNuclearTransportModel.cc,v 1.5 2007/01/11 05:28:56 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: G4VIntraNuclearTransportModel.cc,v 1.0 1998/06/30 // ----------------------------------------------------------------------------- diff --git a/source/processes/hadronic/models/management/src/G4VKineticNucleon.cc b/source/processes/hadronic/models/management/src/G4VKineticNucleon.cc index db149a9708..4678562ac8 100644 --- a/source/processes/hadronic/models/management/src/G4VKineticNucleon.cc +++ b/source/processes/hadronic/models/management/src/G4VKineticNucleon.cc @@ -25,7 +25,7 @@ // // // $Id: G4VKineticNucleon.cc,v 1.3 2006/06/29 20:46:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4VKineticNucleon.hh" diff --git a/source/processes/hadronic/models/management/src/G4VNuclearDensity.cc b/source/processes/hadronic/models/management/src/G4VNuclearDensity.cc index e2c0825901..fa4c666d5d 100644 --- a/source/processes/hadronic/models/management/src/G4VNuclearDensity.cc +++ b/source/processes/hadronic/models/management/src/G4VNuclearDensity.cc @@ -25,7 +25,7 @@ // // // $Id: G4VNuclearDensity.cc,v 1.3 2006/06/29 20:46:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4VNuclearDensity.hh" diff --git a/source/processes/hadronic/models/management/src/G4VPreCompoundModel.cc b/source/processes/hadronic/models/management/src/G4VPreCompoundModel.cc index cc19957ac7..0bd0d665a4 100644 --- a/source/processes/hadronic/models/management/src/G4VPreCompoundModel.cc +++ b/source/processes/hadronic/models/management/src/G4VPreCompoundModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4VPreCompoundModel.cc,v 1.6 2007/01/11 05:29:10 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4VPreCompoundModel.hh" diff --git a/source/processes/hadronic/models/neutron_hp/History b/source/processes/hadronic/models/neutron_hp/History index e94db185c4..c536751e08 100644 --- a/source/processes/hadronic/models/neutron_hp/History +++ b/source/processes/hadronic/models/neutron_hp/History @@ -12,9 +12,47 @@ code and to keep track of all tags. --------------------------------------------------------------- * Please list in reverse chronological order (last date on top) - --------------------------------------------------------------- + --------------------------------------------------------------- +31 Oct 2007 Tatsumi Koi (hadr-hpn-V09-00-03) +--------------------------------------------- +- Bug fix which pointed out by A. Howard + G4NeutronHPChannel.cc + +2 Oct 2007 Tatsumi Koi (hadr-hpn-V09-00-02) +--------------------------------------------- +- Enalble element based cross-section dump + G4NeutronHPElasticData.cc + G4NeutronHPInelasticData.cc + G4NeutronHPCaptureData.cc + G4NeutronHPFissionData.cc + +9 Jul 2007 Tatsumi Koi (hadr-hpn-V09-00-01) +--------------------------------------------- +- Allow _nat_ final state even for isotoped cross sections + G4NeutronHPNames.cc + +5 Jul 2007 Dennis Wright (hadr-hpn-V09-00-00) +--------------------------------------------- +- G4NeutronHPThermalScattering.cc : remove duplicate declaration of dirName + (already a class member). + +25 Jun 2007 Tatsumi Koi (hadr-hpn-V08-03-07) +-------------------------------------------- +- Changed logic of data selection when G4NEUTRONHP_SKIP_MISSING_ISOTOPES turn on + natural abandance data are allowed. + G4NeutronHPDataUsed.hh + G4NeutronHPNames.cc + +25 Jun 2007 Tatsumi Koi (hadr-hpn-V08-03-06) +-------------------------------------------- +- fixes for memory leaking + G4NeutronHPFissionData.cc + G4NeutronHPThermalScattering.cc + G4NeutronHPThermalScatteringData.hh + G4NeutronHPThermalScatteringData.cc 22 Jun 2007 Gabriele Cosmo (hadr-hpn-V08-03-05) +----------------------------------------------- - Replaced following environment variables: o NeutronHP_ALWAYS_USE_PHOTONEVAPORATION_FOR_CAPTURE_FS with: G4NEUTRONHP_USE_ONLY_PHOTONEVAPORATION @@ -28,12 +66,14 @@ code and to keep track of all tags. pointer when performing deletion. 18 Jun 2007 Tatsumi Koi (hadr-hpn-V08-03-04) +-------------------------------------------- - fixes for memory leaking G4NeutronHPPartial.hh G4NeutronHPPhotonDist.hh G4NeutronHPPhotonDist.cc 08 Jun 2007 Tatsumi Koi (hadr-hpn-V08-03-03) +-------------------------------------------- - fixes for memory leaking G4NeutronHPAngular.hh G4NeutronHPChannel.hh G4NeutronHPPhotonDist.hh G4NeutronHPCaptureData.cc G4NeutronHPElasticData.cc G4NeutronHPInelasticData.cc @@ -41,6 +81,7 @@ code and to keep track of all tags. 08 Jun 2007 Tatsumi Koi (hadr-hpn-V08-03-02) +-------------------------------------------- - Bug fixes for valgrind & delete Unnecessary comment out from G4NeutronHPFissionERelease.hh diff --git a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationIterator.hh b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationIterator.hh index a492cee4a3..4331f7d9eb 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationIterator.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationIterator.hh @@ -25,7 +25,7 @@ // // // $Id: G4InterpolationIterator.hh,v 1.9 2006/06/29 20:46:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4InterpolationIterator_h #define G4InterpolationIterator_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationManager.hh b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationManager.hh index 480470a812..32a8d37893 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationManager.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4InterpolationManager.hh,v 1.13 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4InterpolationManager_h #define G4InterpolationManager_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationScheme.hh b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationScheme.hh index 62ff5528fe..aa00f162a2 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationScheme.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationScheme.hh @@ -25,7 +25,7 @@ // // // $Id: G4InterpolationScheme.hh,v 1.8 2006/06/29 20:46:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4InterpolationScheme_h #define G4InterpolationScheme_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2AInelasticFS.hh index ec3005666a..0596b0a6db 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2AInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHP2AInelasticFS.hh,v 1.9 2006/06/29 20:46:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHP2AInelasticFS_h #define G4NeutronHP2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2N2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2N2AInelasticFS.hh index f3bef3ea83..6578ce8e19 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2N2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2N2AInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHP2N2AInelasticFS.hh,v 1.9 2006/06/29 20:46:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHP2N2AInelasticFS_h #define G4NeutronHP2N2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NAInelasticFS.hh index a909189506..6516f91e8b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NAInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHP2NAInelasticFS.hh,v 1.9 2006/06/29 20:46:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHP2NAInelasticFS_h #define G4NeutronHP2NAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NDInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NDInelasticFS.hh index b3dfd782e8..5156b6997b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NDInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NDInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHP2NDInelasticFS.hh,v 1.9 2006/06/29 20:46:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHP2NDInelasticFS_h #define G4NeutronHP2NDInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NInelasticFS.hh index 8c2a18297b..367365417d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHP2NInelasticFS.hh,v 1.9 2006/06/29 20:46:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHP2NInelasticFS_h #define G4NeutronHP2NInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NPInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NPInelasticFS.hh index 38f38f1623..6c145aa536 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NPInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NPInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHP2NPInelasticFS.hh,v 1.9 2006/06/29 20:46:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHP2NPInelasticFS_h #define G4NeutronHP2NPInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2PInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2PInelasticFS.hh index d86405f617..e4cfd81d96 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2PInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2PInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHP2PInelasticFS.hh,v 1.9 2006/06/29 20:46:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHP2PInelasticFS_h #define G4NeutronHP2PInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3AInelasticFS.hh index b47383c8b5..83acbe8da8 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3AInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHP3AInelasticFS.hh,v 1.9 2006/06/29 20:46:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHP3AInelasticFS_h #define G4NeutronHP3AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NAInelasticFS.hh index eb84bba89e..71ad2070c2 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NAInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHP3NAInelasticFS.hh,v 1.9 2006/06/29 20:46:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHP3NAInelasticFS_h #define G4NeutronHP3NAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NInelasticFS.hh index 813c22c80d..15104831ba 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHP3NInelasticFS.hh,v 1.9 2006/06/29 20:46:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHP3NInelasticFS_h #define G4NeutronHP3NInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NPInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NPInelasticFS.hh index 739ecad354..a0219318d1 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NPInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NPInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHP3NPInelasticFS.hh,v 1.9 2006/06/29 20:46:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHP3NPInelasticFS_h #define G4NeutronHP3NPInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP4NInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP4NInelasticFS.hh index 7717c0d295..c20739391f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP4NInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP4NInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHP4NInelasticFS.hh,v 1.9 2006/06/29 20:46:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHP4NInelasticFS_h #define G4NeutronHP4NInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAInelasticFS.hh index ede493581d..c03ab77d79 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPAInelasticFS.hh,v 1.9 2006/06/29 20:46:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPAInelasticFS_h #define G4NeutronHPAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngular.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngular.hh index 38682e07f9..32034e0204 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngular.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngular.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPAngular.hh,v 1.12 2007/06/22 09:23:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // 070613 fix memory leaking by T. Koi // diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngularP.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngularP.hh index 34acf49aaa..757a3d0b89 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngularP.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngularP.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPAngularP.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPAngularP_h #define G4NeutronHPAngularP_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPArbitaryTab.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPArbitaryTab.hh index 90669b5409..cf7393dbd9 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPArbitaryTab.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPArbitaryTab.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPArbitaryTab.hh,v 1.12 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPArbitaryTab_h #define G4NeutronHPArbitaryTab_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCapture.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCapture.hh index 5f540f39db..96192852a3 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCapture.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCapture.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPCapture.hh,v 1.10 2006/06/29 20:46:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Very Low Energy Neutron X-Sections // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureData.hh index 2a4698f9eb..604ecc5925 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureData.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPCaptureData.hh,v 1.9 2006/06/29 20:46:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPCaptureData_h #define G4NeutronHPCaptureData_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureFS.hh index 542d79c6ae..91f33e980d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPCaptureFS.hh,v 1.11 2006/06/29 20:46:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPCaptureFS_h #define G4NeutronHPCaptureFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannel.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannel.hh index a743a69f23..dccefe9d71 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannel.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPChannel.hh,v 1.14 2007/06/14 17:17:30 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Very Low Energy Neutron X-Sections // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannelList.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannelList.hh index bc5b3b2791..841c279b12 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannelList.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannelList.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPChannelList.hh,v 1.10 2006/06/29 20:46:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Very Low Energy Neutron X-Sections // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContAngularPar.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContAngularPar.hh index 06f5971e43..c5b9836e39 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContAngularPar.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContAngularPar.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPContAngularPar.hh,v 1.12 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPContAngularPar_h #define G4NeutronHPContAngularPar_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContEnergyAngular.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContEnergyAngular.hh index 06dd6b9143..8a7a7bd629 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContEnergyAngular.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContEnergyAngular.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPContEnergyAngular.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPContEnergyAngular_h #define G4NeutronHPContEnergyAngular_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPD2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPD2AInelasticFS.hh index ea0b8c74ab..f51bc05931 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPD2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPD2AInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPD2AInelasticFS.hh,v 1.9 2006/06/29 20:47:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPD2AInelasticFS_h #define G4NeutronHPD2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDAInelasticFS.hh index b4ff62dc5e..b516699f8e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDAInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPDAInelasticFS.hh,v 1.9 2006/06/29 20:47:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPDAInelasticFS_h #define G4NeutronHPDAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDInelasticFS.hh index bdf9058064..9b882e96ee 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPDInelasticFS.hh,v 1.9 2006/06/29 20:47:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPDInelasticFS_h #define G4NeutronHPDInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPData.hh index 4289520c79..64bed34c6e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPData.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPData.hh,v 1.9 2006/06/29 20:47:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Very Low Energy Neutron X-Sections // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataPoint.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataPoint.hh index eae340f0e6..f4a489202e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataPoint.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataPoint.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPDataPoint.hh,v 1.8 2006/06/29 20:47:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPDataPoint_h #define G4NeutronHPDataPoint_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataUsed.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataUsed.hh index ac4a0ca9ce..7c0c8090ff 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataUsed.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataUsed.hh @@ -23,6 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// 070625 add natural abundance (nat) flag by T. Koi +// #ifndef G4NeutronHPDataUsed_h #define G4NeutronHPDataUsed_h 1 @@ -37,6 +39,7 @@ class G4NeutronHPDataUsed theName = ""; theA = 0; theZ = 0; + nat = false; } void SetA(G4double anA){theA = anA;} @@ -52,6 +55,12 @@ class G4NeutronHPDataUsed G4String theName; G4double theA; G4int theZ; + public: + G4bool IsThisNaturalAbundance() { return nat; }; + void SetNaturalAbundanceFlag() { nat = TRUE; }; + + private: + G4bool nat; }; #endif diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDeExGammas.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDeExGammas.hh index f943422993..4a77388c3c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDeExGammas.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDeExGammas.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPDeExGammas.hh,v 1.13 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPDeExGammas_h #define G4NeutronHPDeExGammas_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDiscreteTwoBody.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDiscreteTwoBody.hh index ca2589064d..3acdb1a61f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDiscreteTwoBody.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDiscreteTwoBody.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPDiscreteTwoBody.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPDiscreteTwoBody_h #define G4NeutronHPDiscreteTwoBody_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElastic.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElastic.hh index 98f66d1e41..d1fddb941f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElastic.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPElastic.hh,v 1.10 2006/06/29 20:47:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: High Precision low E neutron tracking // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticData.hh index 55463d63ef..2a7c17446f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticData.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPElasticData.hh,v 1.9 2006/06/29 20:47:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPElasticData_h #define G4NeutronHPElasticData_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticFS.hh index 40e3037b97..e8903c5b2e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPElasticFS.hh,v 1.12 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // 25-08-06 New Final State type (refFlag==3 , Legendre (Low Energy) + Probability (High Energy) ) // is added by T. KOI diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElementData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElementData.hh index 44939c5392..1aa6c0c8ec 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElementData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElementData.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPElementData.hh,v 1.9 2006/06/29 20:47:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Very Low Energy Neutron X-Sections // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnAngCorrelation.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnAngCorrelation.hh index 1b101a39eb..a8fe720332 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnAngCorrelation.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnAngCorrelation.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPEnAngCorrelation.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPEnAngCorrelation_h #define G4NeutronHPEnAngCorrelation_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnergyDistribution.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnergyDistribution.hh index 31011fea8a..81c3b2a6de 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnergyDistribution.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnergyDistribution.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPEnergyDistribution.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPEnergyDistribution_h #define G4NeutronHPEnergyDistribution_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEvapSpectrum.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEvapSpectrum.hh index b73f86780d..e16081e077 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEvapSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEvapSpectrum.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPEvapSpectrum.hh,v 1.10 2006/06/29 20:47:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPEvapSpectrum_h #define G4NeutronHPEvapSpectrum_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFCFissionFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFCFissionFS.hh index 0edb27e804..d0e3fdc410 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFCFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFCFissionFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPFCFissionFS.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPFCFissionFS_h #define G4NeutronHPFCFissionFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFSFissionFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFSFissionFS.hh index 539f5fbf83..4d917f765c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFSFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFSFissionFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPFSFissionFS.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPFSFissionFS_h #define G4NeutronHPFSFissionFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFastLegendre.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFastLegendre.hh index 6af6f6501d..c2eed1a04c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFastLegendre.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFastLegendre.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPFastLegendre.hh,v 1.11 2006/06/29 20:47:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPFastLegendre_h #define G4NeutronHPFastLegendre_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPField.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPField.hh index 6365f999e5..cea29b1d6a 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPField.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPField.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPField.hh,v 1.8 2006/06/29 20:47:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPField_h #define G4NeutronHPField_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFieldPoint.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFieldPoint.hh index e3cc5b9436..211a9ec8e7 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFieldPoint.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFieldPoint.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPFieldPoint.hh,v 1.9 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPFieldPoint_h #define G4NeutronHPFieldPoint_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFinalState.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFinalState.hh index b3febe9b29..9ecef1849e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFinalState.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFinalState.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPFinalState.hh,v 1.13 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPFinalState_h #define G4NeutronHPFinalState_h diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFission.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFission.hh index b99be18e66..78429c5054 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFission.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFission.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPFission.hh,v 1.10 2006/06/29 20:47:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: High Precision low E neutron tracking // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionBaseFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionBaseFS.hh index 8b300f94eb..09aff1e297 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionBaseFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionBaseFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPFissionBaseFS.hh,v 1.13 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPFissionBaseFS_h #define G4NeutronHPFissionBaseFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionData.hh index d3784c6b58..8bc0c3aad1 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionData.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPFissionData.hh,v 1.9 2006/06/29 20:47:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPFissionData_h #define G4NeutronHPFissionData_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionERelease.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionERelease.hh index 5e82d4538a..83304f5499 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionERelease.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionERelease.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPFissionERelease.hh,v 1.12 2007/06/08 22:39:50 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // 070606 fix for Valgrind by T. Koi // diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionFS.hh index c27756a660..6577fa0d28 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPFissionFS.hh,v 1.9 2006/06/29 20:47:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPFissionFS_h #define G4NeutronHPFissionFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionSpectrum.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionSpectrum.hh index 1fad400412..ca9de04de7 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionSpectrum.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPFissionSpectrum.hh,v 1.11 2006/06/29 20:47:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPFissionSpectrum_h #define G4NeutronHPFissionSpectrum_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPGamma.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPGamma.hh index aa80b5810e..6d160cb770 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPGamma.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPGamma.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPGamma.hh,v 1.14 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPGamma_h #define G4NeutronHPGamma_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHe3InelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHe3InelasticFS.hh index 661bf66ba7..e33f66b0d7 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHe3InelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHe3InelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPHe3InelasticFS.hh,v 1.9 2006/06/29 20:48:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPHe3InelasticFS_h #define G4NeutronHPHe3InelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelastic.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelastic.hh index cd5587c0db..ab442f94f9 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelastic.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPInelastic.hh,v 1.9 2006/06/29 20:48:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: High Precision low E neutron tracking // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticBaseFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticBaseFS.hh index 995fea8743..3eb051a1f6 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticBaseFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticBaseFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPInelasticBaseFS.hh,v 1.12 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPInelasticBaseFS_h #define G4NeutronHPInelasticBaseFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticCompFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticCompFS.hh index 2f28f2a0a5..0e67667a8e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticCompFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticCompFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPInelasticCompFS.hh,v 1.13 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPInelasticCompFS_h #define G4NeutronHPInelasticCompFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticData.hh index 4f7949acd5..259132b8f1 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticData.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPInelasticData.hh,v 1.9 2006/06/29 20:48:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPInelasticData_h #define G4NeutronHPInelasticData_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInterpolator.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInterpolator.hh index 59ab35c93f..5c8538032e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInterpolator.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInterpolator.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPInterpolator.hh,v 1.19 2006/06/29 20:48:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPInterpolator_h #define G4NeutronHPInterpolator_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsoData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsoData.hh index 7802305758..7218273edc 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsoData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsoData.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPIsoData.hh,v 1.16 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPIsoData_h #define G4NeutronHPIsoData_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsotropic.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsotropic.hh index b8f2f92e31..2d569a29c1 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsotropic.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsotropic.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPIsotropic.hh,v 1.10 2006/06/29 20:48:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPIsotropic_h #define G4NeutronHPIsotropic_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPKallbachMannSyst.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPKallbachMannSyst.hh index bad4d6d2a7..522037d203 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPKallbachMannSyst.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPKallbachMannSyst.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPKallbachMannSyst.hh,v 1.8 2006/06/29 20:48:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPKallbachMannSyst_h #define G4NeutronHPKallbachMannSyst_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLCFissionFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLCFissionFS.hh index 842054d119..910bb68634 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLCFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLCFissionFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPLCFissionFS.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPLCFissionFS_h #define G4NeutronHPLCFissionFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLabAngularEnergy.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLabAngularEnergy.hh index 654c08bb0e..8c01e1659b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLabAngularEnergy.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLabAngularEnergy.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPLabAngularEnergy.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPLabAngularEnergy_h #define G4NeutronHPLabAngularEnergy_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreStore.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreStore.hh index a9739da5e9..d0369a0cb2 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreStore.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreStore.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPLegendreStore.hh,v 1.11 2006/06/29 20:48:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPLegendreStore_h #define G4NeutronHPLegendreStore_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreTable.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreTable.hh index d659c6060b..9911ad0b88 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreTable.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreTable.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPLegendreTable.hh,v 1.12 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPLegendreTable_h #define G4NeutronHPLegendreTable_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLevel.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLevel.hh index 61ac5f10cc..340b61f577 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLevel.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLevel.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPLevel.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPLevel_h #define G4NeutronHPLevel_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPMadlandNixSpectrum.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPMadlandNixSpectrum.hh index 70b7bbc4de..45c6fb0c28 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPMadlandNixSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPMadlandNixSpectrum.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPMadlandNixSpectrum.hh,v 1.12 2006/06/29 20:48:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPMadlandNixSpectrum_h #define G4NeutronHPMadlandNixSpectrum_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2AInelasticFS.hh index 7fefeab2cf..d1a11e3526 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2AInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPN2AInelasticFS.hh,v 1.9 2006/06/29 20:48:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPN2AInelasticFS_h #define G4NeutronHPN2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2PInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2PInelasticFS.hh index 6ccf198c54..1fc70e4030 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2PInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2PInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPN2PInelasticFS.hh,v 1.9 2006/06/29 20:48:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPN2PInelasticFS_h #define G4NeutronHPN2PInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN3AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN3AInelasticFS.hh index 697622b380..94eda66e31 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN3AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN3AInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPN3AInelasticFS.hh,v 1.9 2006/06/29 20:48:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPN3AInelasticFS_h #define G4NeutronHPN3AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNAInelasticFS.hh index 84d2e86ac0..4373f31d47 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNAInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPNAInelasticFS.hh,v 1.9 2006/06/29 20:48:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPNAInelasticFS_h #define G4NeutronHPNAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNBodyPhaseSpace.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNBodyPhaseSpace.hh index f0e9472195..f09d64ad73 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNBodyPhaseSpace.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNBodyPhaseSpace.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPNBodyPhaseSpace.hh,v 1.12 2006/06/29 20:48:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPNBodyPhaseSpace_h #define G4NeutronHPNBodyPhaseSpace_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPND2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPND2AInelasticFS.hh index 6ad376d662..dff677164b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPND2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPND2AInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPND2AInelasticFS.hh,v 1.9 2006/06/29 20:48:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPND2AInelasticFS_h #define G4NeutronHPND2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNDInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNDInelasticFS.hh index b32c98bb1c..52a9fdc419 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNDInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNDInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPNDInelasticFS.hh,v 1.9 2006/06/29 20:48:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPNDInelasticFS_h #define G4NeutronHPNDInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNHe3InelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNHe3InelasticFS.hh index 0eb4f400a0..c6a7f29ae0 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNHe3InelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNHe3InelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPNHe3InelasticFS.hh,v 1.9 2006/06/29 20:48:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPNHe3InelasticFS_h #define G4NeutronHPNHe3InelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNInelasticFS.hh index f338b6388f..3122cbff38 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPNInelasticFS.hh,v 1.9 2006/06/29 20:48:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPNInelasticFS_h #define G4NeutronHPNInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPAInelasticFS.hh index ecd3221b3d..3ff4305b12 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPAInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPNPAInelasticFS.hh,v 1.9 2006/06/29 20:48:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPNPAInelasticFS_h #define G4NeutronHPNPAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPInelasticFS.hh index 46d215be36..0426adfa9e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPNPInelasticFS.hh,v 1.9 2006/06/29 20:48:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPNPInelasticFS_h #define G4NeutronHPNPInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNT2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNT2AInelasticFS.hh index a72db1010a..26a3b72e16 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNT2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNT2AInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPNT2AInelasticFS.hh,v 1.9 2006/06/29 20:48:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPNT2AInelasticFS_h #define G4NeutronHPNT2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNTInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNTInelasticFS.hh index 05659614fe..ecb12c341b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNTInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNTInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPNTInelasticFS.hh,v 1.9 2006/06/29 20:48:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPNTInelasticFS_h #define G4NeutronHPNTInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNXInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNXInelasticFS.hh index fc5e2e5480..51fff49a95 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNXInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNXInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPNXInelasticFS.hh,v 1.9 2006/06/29 20:49:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPNXInelasticFS_h #define G4NeutronHPNXInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNames.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNames.hh index 59d7d4f55f..6cc26f5a74 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNames.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNames.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPNames.hh,v 1.15 2006/06/29 20:49:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPNames_h #define G4NeutronHPNames_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNeutronYield.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNeutronYield.hh index 9362ae1fbc..1775805761 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNeutronYield.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNeutronYield.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPNeutronYield.hh,v 1.10 2006/06/29 20:49:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPNeutronYield_h #define G4NeutronHPNeutronYield_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPAInelasticFS.hh index efed0f626c..a83e523af2 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPAInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPPAInelasticFS.hh,v 1.9 2006/06/29 20:49:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPPAInelasticFS_h #define G4NeutronHPPAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPDInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPDInelasticFS.hh index 347d7d935c..d43fcf9ac7 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPDInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPDInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPPDInelasticFS.hh,v 1.9 2006/06/29 20:49:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPPDInelasticFS_h #define G4NeutronHPPDInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPInelasticFS.hh index 2e051464be..85e7587754 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPPInelasticFS.hh,v 1.9 2006/06/29 20:49:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPPInelasticFS_h #define G4NeutronHPPInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPTInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPTInelasticFS.hh index 61a8c0365d..bc6d671d34 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPTInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPTInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPPTInelasticFS.hh,v 1.9 2006/06/29 20:49:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPPTInelasticFS_h #define G4NeutronHPPTInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPartial.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPartial.hh index 0a3ceeae3d..d54a0f631a 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPartial.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPartial.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPPartial.hh,v 1.13 2007/06/18 20:56:05 tkoi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // 070618 Comment out unused private member leaking by T. Koi // diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonDist.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonDist.hh index 84fad16e8a..34eb195a73 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonDist.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonDist.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPPhotonDist.hh,v 1.16 2007/06/22 09:23:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Very Low Energy Neutron X-Sections // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonXSection.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonXSection.hh index d40660d311..b65046c126 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonXSection.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonXSection.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPPhotonXSection.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPPhotonXSection_h #define G4NeutronHPPhotonXSection_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPolynomExpansion.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPolynomExpansion.hh index a4dc444f40..188281c41d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPolynomExpansion.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPolynomExpansion.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPPolynomExpansion.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPPolynomExpansion_h #define G4NeutronHPPolynomExpansion_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPProduct.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPProduct.hh index 2988f41c53..8dd1d65a15 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPProduct.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPProduct.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPProduct.hh,v 1.12 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPProduct_h #define G4NeutronHPProduct_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSCFissionFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSCFissionFS.hh index 3a1127c12f..f5fa47e2f4 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSCFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSCFissionFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPSCFissionFS.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPSCFissionFS_h #define G4NeutronHPSCFissionFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSimpleEvapSpectrum.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSimpleEvapSpectrum.hh index bf506d2091..f59f899a0a 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSimpleEvapSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSimpleEvapSpectrum.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPSimpleEvapSpectrum.hh,v 1.11 2006/06/29 20:49:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPSimpleEvapSpectrum_h #define G4NeutronHPSimpleEvapSpectrum_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPT2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPT2AInelasticFS.hh index 91f04d4e05..b5074c3151 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPT2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPT2AInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPT2AInelasticFS.hh,v 1.9 2006/06/29 20:49:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPT2AInelasticFS_h #define G4NeutronHPT2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTCFissionFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTCFissionFS.hh index 2f2450877b..c322062ecd 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTCFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTCFissionFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPTCFissionFS.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPTCFissionFS_h #define G4NeutronHPTCFissionFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTInelasticFS.hh index 1d50a42932..a78fa684ad 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTInelasticFS.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPTInelasticFS.hh,v 1.9 2006/06/29 20:49:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPTInelasticFS_h #define G4NeutronHPTInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPThermalScatteringData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPThermalScatteringData.hh index ac34cba906..b19be2b5cd 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPThermalScatteringData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPThermalScatteringData.hh @@ -40,6 +40,7 @@ // Class Description - End // 15-Nov-06 First implementation is done by T. Koi (SLAC/SCCS) +// 070625 create clearCurrentXSData to fix memory leaking by T. Koi #include "G4NeutronHPThermalScatteringNames.hh" #include "G4NeutronHPVector.hh" @@ -77,6 +78,7 @@ class G4NeutronHPThermalScatteringData : public G4VCrossSectionDataSet G4double emax; + void clearCurrentXSData(); // element temp x section from E std::map< G4int , std::map< G4double , G4NeutronHPVector* >* > coherent; diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPWattSpectrum.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPWattSpectrum.hh index d57463a9a1..ba2b1c0a9f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPWattSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPWattSpectrum.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronHPWattSpectrum.hh,v 1.11 2006/06/29 20:49:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4NeutronHPWattSpectrum_h #define G4NeutronHPWattSpectrum_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEDis.hh b/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEDis.hh index 1c6f551411..c9bc82f785 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEDis.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEDis.hh @@ -25,7 +25,7 @@ // // // $Id: G4VNeutronHPEDis.hh,v 1.10 2006/06/29 20:50:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VNeutronHPEDis_h #define G4VNeutronHPEDis_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEnergyAngular.hh b/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEnergyAngular.hh index d0c8ca7e94..f3db579e04 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEnergyAngular.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEnergyAngular.hh @@ -25,7 +25,7 @@ // // // $Id: G4VNeutronHPEnergyAngular.hh,v 1.11 2007/06/06 12:45:13 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VNeutronHPEnergyAngular_h #define G4VNeutronHPEnergyAngular_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPCaptureData.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPCaptureData.cc index 6fb398defa..fc741f0131 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPCaptureData.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPCaptureData.cc @@ -29,6 +29,7 @@ // // 070523 add neglecting doppler broadening on the fly. T. Koi // 070613 fix memory leaking by T. Koi +// 071002 enable cross section dump by T. Koi // #include "G4NeutronHPCaptureData.hh" #include "G4Neutron.hh" @@ -88,7 +89,50 @@ void G4NeutronHPCaptureData::DumpPhysicsTable(const G4ParticleDefinition& aP) { if(&aP!=G4Neutron::Neutron()) throw G4HadronicException(__FILE__, __LINE__, "Attempt to use NeutronHP data for particles other than neutrons!!!"); - G4cout << "G4NeutronHPCaptureData::DumpPhysicsTable still to be implemented"<GetName() << G4endl; + + G4int ie = 0; + + for ( ie = 0 ; ie < 130 ; ie++ ) + { + G4double eKinetic = 1.0e-5 * std::pow ( 10.0 , ie/10.0 ) *eV; + G4bool outOfRange = false; + + if ( eKinetic < 20*MeV ) + { + G4cout << eKinetic/eV << " " << (*((*theCrossSections)(i))).GetValue(eKinetic, outOfRange)/barn << G4endl; + } + + } + + G4cout << G4endl; + } + + +// G4cout << "G4NeutronHPCaptureData::DumpPhysicsTable still to be implemented"<GetZ()-5) throw G4HadronicException(__FILE__, __LINE__, "Channel: Do not know what to do with this material"); + //if(Z=theElement->GetZ()-5) throw G4HadronicException(__FILE__, __LINE__, "Channel: Do not know what to do with this material"); + // Bug fix by TK on behalf of AH + if ( Z <=theElement->GetZ()-5 ) throw G4HadronicException(__FILE__, __LINE__, "Channel: Do not know what to do with this material"); G4int count = 0; if(registerCount==0) count = theElement->GetNumberOfIsotopes(); if(count == 0||registerCount!=0) count += diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPElasticData.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPElasticData.cc index 077d7a4aeb..7a32897953 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPElasticData.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPElasticData.cc @@ -29,6 +29,7 @@ // // 070523 add neglecting doppler broadening on the fly. T. Koi // 070613 fix memory leaking by T. Koi +// 071002 enable cross section dump by T. Koi // #include "G4NeutronHPElasticData.hh" #include "G4Neutron.hh" @@ -82,6 +83,49 @@ void G4NeutronHPElasticData::DumpPhysicsTable(const G4ParticleDefinition& aP) { if(&aP!=G4Neutron::Neutron()) throw G4HadronicException(__FILE__, __LINE__, "Attempt to use NeutronHP data for particles other than neutrons!!!"); + +// +// Dump element based cross section +// range 10e-5 eV to 20 MeV +// 10 point per decade +// in barn +// + + G4cout << G4endl; + G4cout << G4endl; + G4cout << "Elastic Cross Section of Neutron HP"<< G4endl; + G4cout << "(Pointwise cross-section at 0 Kelvin.)" << G4endl; + G4cout << G4endl; + G4cout << "Name of Element" << G4endl; + G4cout << "Energy[eV] XS[barn]" << G4endl; + G4cout << G4endl; + + size_t numberOfElements = G4Element::GetNumberOfElements(); + static const G4ElementTable *theElementTable = G4Element::GetElementTable(); + + for ( size_t i = 0 ; i < numberOfElements ; ++i ) + { + + G4cout << (*theElementTable)[i]->GetName() << G4endl; + + G4int ie = 0; + + for ( ie = 0 ; ie < 130 ; ie++ ) + { + G4double eKinetic = 1.0e-5 * std::pow ( 10.0 , ie/10.0 ) *eV; + G4bool outOfRange = false; + + if ( eKinetic < 20*MeV ) + { + G4cout << eKinetic/eV << " " << (*((*theCrossSections)(i))).GetValue(eKinetic, outOfRange)/barn << G4endl; + } + + } + + G4cout << G4endl; + } + + // G4cout << "G4NeutronHPElasticData::DumpPhysicsTable still to be implemented"<clearAndDestroy(); + delete theCrossSections; + } } void G4NeutronHPFissionData::BuildPhysicsTable(const G4ParticleDefinition& aP) @@ -56,7 +65,9 @@ void G4NeutronHPFissionData::BuildPhysicsTable(const G4ParticleDefinition& aP) if(&aP!=G4Neutron::Neutron()) throw G4HadronicException(__FILE__, __LINE__, "Attempt to use NeutronHP data for particles other than neutrons!!!"); size_t numberOfElements = G4Element::GetNumberOfElements(); - theCrossSections = new G4PhysicsTable( numberOfElements ); + //theCrossSections = new G4PhysicsTable( numberOfElements ); + // TKDB + if ( theCrossSections == NULL ) theCrossSections = new G4PhysicsTable( numberOfElements ); // make a PhysicsVector for each element @@ -73,7 +84,49 @@ void G4NeutronHPFissionData::DumpPhysicsTable(const G4ParticleDefinition& aP) { if(&aP!=G4Neutron::Neutron()) throw G4HadronicException(__FILE__, __LINE__, "Attempt to use NeutronHP data for particles other than neutrons!!!"); - G4cout << "G4NeutronHPFissionData::DumpPhysicsTable still to be implemented"<GetName() << G4endl; + + G4int ie = 0; + + for ( ie = 0 ; ie < 130 ; ie++ ) + { + G4double eKinetic = 1.0e-5 * std::pow ( 10.0 , ie/10.0 ) *eV; + G4bool outOfRange = false; + + if ( eKinetic < 20*MeV ) + { + G4cout << eKinetic/eV << " " << (*((*theCrossSections)(i))).GetValue(eKinetic, outOfRange)/barn << G4endl; + } + + } + + G4cout << G4endl; + } + + //G4cout << "G4NeutronHPFissionData::DumpPhysicsTable still to be implemented"<GetName() << G4endl; + + G4int ie = 0; + + for ( ie = 0 ; ie < 130 ; ie++ ) + { + G4double eKinetic = 1.0e-5 * std::pow ( 10.0 , ie/10.0 ) *eV; + G4bool outOfRange = false; + + if ( eKinetic < 20*MeV ) + { + G4cout << eKinetic/eV << " " << (*((*theCrossSections)(i))).GetValue(eKinetic, outOfRange)/barn << G4endl; + } + + } + + G4cout << G4endl; + } + + //G4cout << "G4NeutronHPInelasticData::DumpPhysicsTable still to be implemented"< FS Type -> read file for ( size_t i = 0 ; i < indexOfThermalElement.size() ; i++ ) { @@ -101,7 +101,67 @@ G4NeutronHPThermalScattering::G4NeutronHPThermalScattering() G4NeutronHPThermalScattering::~G4NeutronHPThermalScattering() { - ; + + { // separate name scope of it + std::map < G4int , std::map < G4double , std::vector < E_isoAng* >* >* >::iterator it; + for ( it = incoherentFSs.begin() ; it != incoherentFSs.end() ; it++ ) + { + std::map < G4double , std::vector < E_isoAng* >* >::iterator itt; + for ( itt = it->second->begin() ; itt != it->second->end() ; itt++ ) + { + std::vector< E_isoAng* >::iterator ittt; + for ( ittt = itt->second->begin(); ittt != itt->second->end() ; ittt++ ) + { + delete *ittt; + } + delete itt->second; + } + delete it->second; + } + } + + { + std::map < G4int , std::map < G4double , std::vector < std::pair< G4double , G4double >* >* >* >::iterator it; + for ( it = coherentFSs.begin() ; it != coherentFSs.end() ; it++ ) + { + std::map < G4double , std::vector < std::pair< G4double , G4double >* >* >::iterator itt; + for ( itt = it->second->begin() ; itt != it->second->end() ; itt++ ) + { + std::vector < std::pair< G4double , G4double >* >::iterator ittt; + for ( ittt = itt->second->begin(); ittt != itt->second->end() ; ittt++ ) + { + delete *ittt; + } + delete itt->second; + } + delete it->second; + } + } + + { + std::map < G4int , std::map < G4double , std::vector < E_P_E_isoAng* >* >* >::iterator it; + for ( it = inelasticFSs.begin() ; it != inelasticFSs.end() ; it++ ) + { + std::map < G4double , std::vector < E_P_E_isoAng* >* >::iterator itt; + for ( itt = it->second->begin() ; itt != it->second->end() ; itt++ ) + { + std::vector < E_P_E_isoAng* >::iterator ittt; + for ( ittt = itt->second->begin(); ittt != itt->second->end() ; ittt++ ) + { + std::vector < E_isoAng* >::iterator it4; + for ( it4 = (*ittt)->vE_isoAngle.begin() ; it4 != (*ittt)->vE_isoAngle.end() ; it4++ ) + { + delete *it4; + } + delete *ittt; + } + delete itt->second; + } + delete it->second; + } + } + + delete theXSection; } diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPThermalScatteringData.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPThermalScatteringData.cc index 0b92efb7f7..b1a2cba98e 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPThermalScatteringData.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPThermalScatteringData.cc @@ -37,6 +37,7 @@ // Class Description - End // 15-Nov-06 First implementation is done by T. Koi (SLAC/SCCS) +// 070625 implement clearCurrentXSData to fix memory leaking by T. Koi #include "G4NeutronHPThermalScatteringData.hh" #include "G4Neutron.hh" @@ -61,10 +62,61 @@ G4NeutronHPThermalScatteringData::G4NeutronHPThermalScatteringData() G4NeutronHPThermalScatteringData::~G4NeutronHPThermalScatteringData() { + + clearCurrentXSData(); + delete names; } +void G4NeutronHPThermalScatteringData::clearCurrentXSData() +{ + std::map< G4int , std::map< G4double , G4NeutronHPVector* >* >::iterator it; + std::map< G4double , G4NeutronHPVector* >::iterator itt; + + for ( it = coherent.begin() ; it != coherent.end() ; it++ ) + { + if ( it->second != NULL ) + { + for ( itt = it->second->begin() ; itt != it->second->end() ; itt++ ) + { + delete itt->second; + } + } + delete it->second; + } + + for ( it = incoherent.begin() ; it != incoherent.end() ; it++ ) + { + if ( it->second != NULL ) + { + for ( itt = it->second->begin() ; itt != it->second->end() ; itt++ ) + { + delete itt->second; + } + } + delete it->second; + } + + for ( it = inelastic.begin() ; it != inelastic.end() ; it++ ) + { + if ( it->second != NULL ) + { + for ( itt = it->second->begin() ; itt != it->second->end() ; itt++ ) + { + delete itt->second; + } + } + delete it->second; + } + + coherent.clear(); + incoherent.clear(); + inelastic.clear(); + +} + + G4bool G4NeutronHPThermalScatteringData::IsApplicable( const G4DynamicParticle* aP , const G4Element* anEle ) { @@ -107,6 +159,8 @@ void G4NeutronHPThermalScatteringData::BuildPhysicsTable(const G4ParticleDefinit indexOfThermalElement.clear(); + clearCurrentXSData(); + static const G4ElementTable* theElementTable = G4Element::GetElementTable(); size_t numberOfElements = G4Element::GetNumberOfElements(); size_t numberOfThermalElements = 0; diff --git a/source/processes/hadronic/models/parton_string/diffraction/include/G4DiffractiveSplitableHadron.hh b/source/processes/hadronic/models/parton_string/diffraction/include/G4DiffractiveSplitableHadron.hh index 4a7971eac5..3efa3e6aea 100644 --- a/source/processes/hadronic/models/parton_string/diffraction/include/G4DiffractiveSplitableHadron.hh +++ b/source/processes/hadronic/models/parton_string/diffraction/include/G4DiffractiveSplitableHadron.hh @@ -25,7 +25,7 @@ // // // $Id: G4DiffractiveSplitableHadron.hh,v 1.4 2006/06/29 20:54:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4DiffractiveSplitableHadron_h diff --git a/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFModel.hh b/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFModel.hh index 93e6cd9578..269ab09bfa 100644 --- a/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFModel.hh +++ b/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4FTFModel.hh,v 1.5 2007/04/24 10:32:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description // Final state production code for hadron inelastic scattering above 20 GeV diff --git a/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFParticipants.hh b/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFParticipants.hh index c169830200..74a8c49a3d 100644 --- a/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFParticipants.hh +++ b/source/processes/hadronic/models/parton_string/diffraction/include/G4FTFParticipants.hh @@ -25,7 +25,7 @@ // // // $Id: G4FTFParticipants.hh,v 1.4 2006/06/29 20:54:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4FTFParticipants_h diff --git a/source/processes/hadronic/models/parton_string/diffraction/src/G4DiffractiveSplitableHadron.cc b/source/processes/hadronic/models/parton_string/diffraction/src/G4DiffractiveSplitableHadron.cc index 605c4673cf..0e4fcc2334 100644 --- a/source/processes/hadronic/models/parton_string/diffraction/src/G4DiffractiveSplitableHadron.cc +++ b/source/processes/hadronic/models/parton_string/diffraction/src/G4DiffractiveSplitableHadron.cc @@ -25,7 +25,7 @@ // // // $Id: G4DiffractiveSplitableHadron.cc,v 1.6 2006/06/29 20:54:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ diff --git a/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFModel.cc b/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFModel.cc index 1fcde06051..bcd12d1d00 100644 --- a/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFModel.cc +++ b/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4FTFModel.cc,v 1.7 2007/04/24 10:32:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ diff --git a/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFParticipants.cc b/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFParticipants.cc index 949e699ed3..ec5f6272b3 100644 --- a/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFParticipants.cc +++ b/source/processes/hadronic/models/parton_string/diffraction/src/G4FTFParticipants.cc @@ -25,7 +25,7 @@ // // // $Id: G4FTFParticipants.cc,v 1.7 2007/04/24 10:33:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/parton_string/hadronization/include/G4ExcitedStringDecay.hh b/source/processes/hadronic/models/parton_string/hadronization/include/G4ExcitedStringDecay.hh index 71f20d3663..14a28c5e81 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/include/G4ExcitedStringDecay.hh +++ b/source/processes/hadronic/models/parton_string/hadronization/include/G4ExcitedStringDecay.hh @@ -25,7 +25,7 @@ // // // $Id: G4ExcitedStringDecay.hh,v 1.7 2007/05/03 22:06:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4ExcitedStringDecay_h #define G4ExcitedStringDecay_h 1 diff --git a/source/processes/hadronic/models/parton_string/hadronization/include/G4FragmentingString.hh b/source/processes/hadronic/models/parton_string/hadronization/include/G4FragmentingString.hh index 951cb7beca..de1c1fe4e1 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/include/G4FragmentingString.hh +++ b/source/processes/hadronic/models/parton_string/hadronization/include/G4FragmentingString.hh @@ -25,7 +25,7 @@ // // // $Id: G4FragmentingString.hh,v 1.3 2006/06/29 20:54:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4FragmentingString_h diff --git a/source/processes/hadronic/models/parton_string/hadronization/include/G4HadronBuilder.hh b/source/processes/hadronic/models/parton_string/hadronization/include/G4HadronBuilder.hh index 7f4628f6f6..54c614ac1c 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/include/G4HadronBuilder.hh +++ b/source/processes/hadronic/models/parton_string/hadronization/include/G4HadronBuilder.hh @@ -25,7 +25,7 @@ // // // $Id: G4HadronBuilder.hh,v 1.3 2006/06/29 20:54:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/processes/hadronic/models/parton_string/hadronization/include/G4LundStringFragmentation.hh b/source/processes/hadronic/models/parton_string/hadronization/include/G4LundStringFragmentation.hh index e235d8c6d9..dd80bdaabd 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/include/G4LundStringFragmentation.hh +++ b/source/processes/hadronic/models/parton_string/hadronization/include/G4LundStringFragmentation.hh @@ -25,7 +25,7 @@ // // // $Id: G4LundStringFragmentation.hh,v 1.4 2007/04/24 14:55:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ Maxim Komogorov +// GEANT4 tag $Name: geant4-09-01 $ Maxim Komogorov // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/parton_string/hadronization/include/G4QGSMFragmentation.hh b/source/processes/hadronic/models/parton_string/hadronization/include/G4QGSMFragmentation.hh index 48e6ab28c7..05fa84dba5 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/include/G4QGSMFragmentation.hh +++ b/source/processes/hadronic/models/parton_string/hadronization/include/G4QGSMFragmentation.hh @@ -25,7 +25,7 @@ // // // $Id: G4QGSMFragmentation.hh,v 1.4 2007/04/24 14:55:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/parton_string/hadronization/include/G4VKinkyStringDecay.hh b/source/processes/hadronic/models/parton_string/hadronization/include/G4VKinkyStringDecay.hh index 661b1ff567..2733e1f87d 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/include/G4VKinkyStringDecay.hh +++ b/source/processes/hadronic/models/parton_string/hadronization/include/G4VKinkyStringDecay.hh @@ -25,7 +25,7 @@ // // // $Id: G4VKinkyStringDecay.hh,v 1.3 2006/06/29 20:54:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // Maxim Komogorov // // ----------------------------------------------------------------------------- diff --git a/source/processes/hadronic/models/parton_string/hadronization/include/G4VLongitudinalStringDecay.hh b/source/processes/hadronic/models/parton_string/hadronization/include/G4VLongitudinalStringDecay.hh index ca6231357a..858890aee2 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/include/G4VLongitudinalStringDecay.hh +++ b/source/processes/hadronic/models/parton_string/hadronization/include/G4VLongitudinalStringDecay.hh @@ -25,7 +25,7 @@ // // // $Id: G4VLongitudinalStringDecay.hh,v 1.4 2007/04/24 14:55:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // Maxim Komogorov // // ----------------------------------------------------------------------------- diff --git a/source/processes/hadronic/models/parton_string/hadronization/src/G4HadronBuilder.cc b/source/processes/hadronic/models/parton_string/hadronization/src/G4HadronBuilder.cc index 90ff344eb8..409b779057 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/src/G4HadronBuilder.cc +++ b/source/processes/hadronic/models/parton_string/hadronization/src/G4HadronBuilder.cc @@ -25,7 +25,7 @@ // // // $Id: G4HadronBuilder.cc,v 1.6 2006/06/29 20:55:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/parton_string/hadronization/src/G4LundStringFragmentation.cc b/source/processes/hadronic/models/parton_string/hadronization/src/G4LundStringFragmentation.cc index 85cd4dc1fb..966c166e10 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/src/G4LundStringFragmentation.cc +++ b/source/processes/hadronic/models/parton_string/hadronization/src/G4LundStringFragmentation.cc @@ -25,7 +25,7 @@ // // // $Id: G4LundStringFragmentation.cc,v 1.7 2007/04/24 14:55:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/parton_string/hadronization/src/G4QGSMFragmentation.cc b/source/processes/hadronic/models/parton_string/hadronization/src/G4QGSMFragmentation.cc index 38fc5a2a5a..6ae4795a51 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/src/G4QGSMFragmentation.cc +++ b/source/processes/hadronic/models/parton_string/hadronization/src/G4QGSMFragmentation.cc @@ -25,7 +25,7 @@ // // // $Id: G4QGSMFragmentation.cc,v 1.6 2007/04/24 14:55:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/parton_string/hadronization/src/G4VKinkyStringDecay.cc b/source/processes/hadronic/models/parton_string/hadronization/src/G4VKinkyStringDecay.cc index e0f17d9c71..a7a3a4af12 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/src/G4VKinkyStringDecay.cc +++ b/source/processes/hadronic/models/parton_string/hadronization/src/G4VKinkyStringDecay.cc @@ -25,7 +25,7 @@ // // // $Id: G4VKinkyStringDecay.cc,v 1.3 2006/06/29 20:55:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // Maxim Komogorov // // ----------------------------------------------------------------------------- diff --git a/source/processes/hadronic/models/parton_string/hadronization/src/G4VLongitudinalStringDecay.cc b/source/processes/hadronic/models/parton_string/hadronization/src/G4VLongitudinalStringDecay.cc index 40a085363d..b6c5bf1f56 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/src/G4VLongitudinalStringDecay.cc +++ b/source/processes/hadronic/models/parton_string/hadronization/src/G4VLongitudinalStringDecay.cc @@ -25,7 +25,7 @@ // // // $Id: G4VLongitudinalStringDecay.cc,v 1.8 2007/04/24 14:55:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/parton_string/management/include/G4EventGenerator.hh b/source/processes/hadronic/models/parton_string/management/include/G4EventGenerator.hh index cef9af9360..3192587dd9 100644 --- a/source/processes/hadronic/models/parton_string/management/include/G4EventGenerator.hh +++ b/source/processes/hadronic/models/parton_string/management/include/G4EventGenerator.hh @@ -25,7 +25,7 @@ // // // $Id: G4EventGenerator.hh,v 1.3 2006/06/29 20:55:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4EventGenerator_h #define G4EventGenerator_h 1 diff --git a/source/processes/hadronic/models/parton_string/management/include/G4FTFCrossSection.hh b/source/processes/hadronic/models/parton_string/management/include/G4FTFCrossSection.hh index f072c12348..09567c05eb 100644 --- a/source/processes/hadronic/models/parton_string/management/include/G4FTFCrossSection.hh +++ b/source/processes/hadronic/models/parton_string/management/include/G4FTFCrossSection.hh @@ -27,7 +27,7 @@ #define G4FTFCrossSection_h 1 // // $Id: G4FTFCrossSection.hh,v 1.2 2007/04/24 10:37:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4Proton.hh" class G4FTFCrossSection diff --git a/source/processes/hadronic/models/parton_string/management/include/G4InteractionCode.hh b/source/processes/hadronic/models/parton_string/management/include/G4InteractionCode.hh index 997854baa7..b834755eeb 100644 --- a/source/processes/hadronic/models/parton_string/management/include/G4InteractionCode.hh +++ b/source/processes/hadronic/models/parton_string/management/include/G4InteractionCode.hh @@ -25,7 +25,7 @@ // // // $Id: G4InteractionCode.hh,v 1.3 2006/06/29 20:55:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4InteractionCode_h #define G4InteractionCode_h 1 diff --git a/source/processes/hadronic/models/parton_string/management/include/G4InteractionContent.hh b/source/processes/hadronic/models/parton_string/management/include/G4InteractionContent.hh index 8b91f35cee..319173045a 100644 --- a/source/processes/hadronic/models/parton_string/management/include/G4InteractionContent.hh +++ b/source/processes/hadronic/models/parton_string/management/include/G4InteractionContent.hh @@ -25,7 +25,7 @@ // // // $Id: G4InteractionContent.hh,v 1.4 2007/01/24 10:28:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4InteractionContent_h diff --git a/source/processes/hadronic/models/parton_string/management/include/G4PomeronCrossSection.hh b/source/processes/hadronic/models/parton_string/management/include/G4PomeronCrossSection.hh index 9ce5d7d22a..0001eb802f 100644 --- a/source/processes/hadronic/models/parton_string/management/include/G4PomeronCrossSection.hh +++ b/source/processes/hadronic/models/parton_string/management/include/G4PomeronCrossSection.hh @@ -27,7 +27,7 @@ #define G4PomeronCrossSection_h 1 // // $Id: G4PomeronCrossSection.hh,v 1.3 2006/06/29 20:55:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4Proton.hh" #include "G4Neutron.hh" diff --git a/source/processes/hadronic/models/parton_string/management/include/G4StringModel.hh b/source/processes/hadronic/models/parton_string/management/include/G4StringModel.hh index 0c17ba746f..4681a05b69 100644 --- a/source/processes/hadronic/models/parton_string/management/include/G4StringModel.hh +++ b/source/processes/hadronic/models/parton_string/management/include/G4StringModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4StringModel.hh,v 1.3 2006/06/29 20:55:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4StringModel_h #define G4StringModel_h 1 diff --git a/source/processes/hadronic/models/parton_string/management/include/G4VParticipants.hh b/source/processes/hadronic/models/parton_string/management/include/G4VParticipants.hh index 827b79c39d..c5e273a996 100644 --- a/source/processes/hadronic/models/parton_string/management/include/G4VParticipants.hh +++ b/source/processes/hadronic/models/parton_string/management/include/G4VParticipants.hh @@ -25,7 +25,7 @@ // // // $Id: G4VParticipants.hh,v 1.3 2006/06/29 20:55:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VParticipants_h diff --git a/source/processes/hadronic/models/parton_string/management/include/G4VPartonStringModel.hh b/source/processes/hadronic/models/parton_string/management/include/G4VPartonStringModel.hh index 518ded5b67..ca458940da 100644 --- a/source/processes/hadronic/models/parton_string/management/include/G4VPartonStringModel.hh +++ b/source/processes/hadronic/models/parton_string/management/include/G4VPartonStringModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4VPartonStringModel.hh,v 1.3 2006/06/29 20:55:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VPartonStringModel_h #define G4VPartonStringModel_h 1 diff --git a/source/processes/hadronic/models/parton_string/management/include/G4VSplitableHadron.hh b/source/processes/hadronic/models/parton_string/management/include/G4VSplitableHadron.hh index b832e805e8..57222bcc8d 100644 --- a/source/processes/hadronic/models/parton_string/management/include/G4VSplitableHadron.hh +++ b/source/processes/hadronic/models/parton_string/management/include/G4VSplitableHadron.hh @@ -25,7 +25,7 @@ // // // $Id: G4VSplitableHadron.hh,v 1.3 2006/06/29 20:55:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VSplitableHadron_h diff --git a/source/processes/hadronic/models/parton_string/management/include/G4VStringFragmentation.hh b/source/processes/hadronic/models/parton_string/management/include/G4VStringFragmentation.hh index 83e4fb3a56..a63c4e07f2 100644 --- a/source/processes/hadronic/models/parton_string/management/include/G4VStringFragmentation.hh +++ b/source/processes/hadronic/models/parton_string/management/include/G4VStringFragmentation.hh @@ -25,7 +25,7 @@ // // // $Id: G4VStringFragmentation.hh,v 1.3 2006/06/29 20:55:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VStringFragmentation_h #define G4VStringFragmentation_h 1 diff --git a/source/processes/hadronic/models/parton_string/management/include/G4VertexCode.hh b/source/processes/hadronic/models/parton_string/management/include/G4VertexCode.hh index b10cdea342..52827ceeef 100644 --- a/source/processes/hadronic/models/parton_string/management/include/G4VertexCode.hh +++ b/source/processes/hadronic/models/parton_string/management/include/G4VertexCode.hh @@ -25,7 +25,7 @@ // // // $Id: G4VertexCode.hh,v 1.3 2006/06/29 20:55:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VertexCode_h #define G4VertexCode_h 1 diff --git a/source/processes/hadronic/models/parton_string/management/src/G4EventGenerator.cc b/source/processes/hadronic/models/parton_string/management/src/G4EventGenerator.cc index 9ab5ae1e42..ee24ba2e7c 100644 --- a/source/processes/hadronic/models/parton_string/management/src/G4EventGenerator.cc +++ b/source/processes/hadronic/models/parton_string/management/src/G4EventGenerator.cc @@ -25,7 +25,7 @@ // // // $Id: G4EventGenerator.cc,v 1.4 2006/06/29 20:55:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4EventGenerator #include "G4EventGenerator.hh" diff --git a/source/processes/hadronic/models/parton_string/management/src/G4FTFCrossSection.cc b/source/processes/hadronic/models/parton_string/management/src/G4FTFCrossSection.cc index 4bf247d6bd..1da3145478 100644 --- a/source/processes/hadronic/models/parton_string/management/src/G4FTFCrossSection.cc +++ b/source/processes/hadronic/models/parton_string/management/src/G4FTFCrossSection.cc @@ -25,7 +25,7 @@ // // // $Id: G4FTFCrossSection.cc,v 1.2 2007/04/24 10:37:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4FTFCrossSection.hh" diff --git a/source/processes/hadronic/models/parton_string/management/src/G4InteractionContent.cc b/source/processes/hadronic/models/parton_string/management/src/G4InteractionContent.cc index 4a686fbda9..09b0f9437a 100644 --- a/source/processes/hadronic/models/parton_string/management/src/G4InteractionContent.cc +++ b/source/processes/hadronic/models/parton_string/management/src/G4InteractionContent.cc @@ -25,7 +25,7 @@ // // // $Id: G4InteractionContent.cc,v 1.4 2006/06/29 20:55:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/parton_string/management/src/G4PomeronCrossSection.cc b/source/processes/hadronic/models/parton_string/management/src/G4PomeronCrossSection.cc index edbc95ea02..1982f97ae5 100644 --- a/source/processes/hadronic/models/parton_string/management/src/G4PomeronCrossSection.cc +++ b/source/processes/hadronic/models/parton_string/management/src/G4PomeronCrossSection.cc @@ -25,7 +25,7 @@ // // // $Id: G4PomeronCrossSection.cc,v 1.6 2006/11/07 12:51:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4PomeronCrossSection.hh" diff --git a/source/processes/hadronic/models/parton_string/management/src/G4StringModel.cc b/source/processes/hadronic/models/parton_string/management/src/G4StringModel.cc index 62928b9c6c..e5181a9271 100644 --- a/source/processes/hadronic/models/parton_string/management/src/G4StringModel.cc +++ b/source/processes/hadronic/models/parton_string/management/src/G4StringModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4StringModel.cc,v 1.4 2006/06/29 20:55:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4StringModel #include "G4StringModel.hh" diff --git a/source/processes/hadronic/models/parton_string/management/src/G4VParticipants.cc b/source/processes/hadronic/models/parton_string/management/src/G4VParticipants.cc index 986bfbd0e7..fe80174898 100644 --- a/source/processes/hadronic/models/parton_string/management/src/G4VParticipants.cc +++ b/source/processes/hadronic/models/parton_string/management/src/G4VParticipants.cc @@ -25,7 +25,7 @@ // // // $Id: G4VParticipants.cc,v 1.3 2006/06/29 20:55:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/parton_string/management/src/G4VPartonStringModel.cc b/source/processes/hadronic/models/parton_string/management/src/G4VPartonStringModel.cc index 57aef4f1f3..f761a20ff4 100644 --- a/source/processes/hadronic/models/parton_string/management/src/G4VPartonStringModel.cc +++ b/source/processes/hadronic/models/parton_string/management/src/G4VPartonStringModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4VPartonStringModel.cc,v 1.5 2007/01/24 10:29:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //// ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/parton_string/management/src/G4VSplitableHadron.cc b/source/processes/hadronic/models/parton_string/management/src/G4VSplitableHadron.cc index b046f10250..5c0563891d 100644 --- a/source/processes/hadronic/models/parton_string/management/src/G4VSplitableHadron.cc +++ b/source/processes/hadronic/models/parton_string/management/src/G4VSplitableHadron.cc @@ -25,7 +25,7 @@ // // // $Id: G4VSplitableHadron.cc,v 1.4 2006/06/29 20:55:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ diff --git a/source/processes/hadronic/models/parton_string/management/src/G4VStringFragmentation.cc b/source/processes/hadronic/models/parton_string/management/src/G4VStringFragmentation.cc index c292c09fb7..49e8c63e09 100644 --- a/source/processes/hadronic/models/parton_string/management/src/G4VStringFragmentation.cc +++ b/source/processes/hadronic/models/parton_string/management/src/G4VStringFragmentation.cc @@ -25,7 +25,7 @@ // // // $Id: G4VStringFragmentation.cc,v 1.4 2006/06/29 20:55:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VStringFragmentation #include "G4VStringFragmentation.hh" diff --git a/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/include/G4MuNuclearInteraction.hh b/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/include/G4MuNuclearInteraction.hh index a84153beb7..8fd0d047d3 100644 --- a/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/include/G4MuNuclearInteraction.hh +++ b/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/include/G4MuNuclearInteraction.hh @@ -25,7 +25,7 @@ // // // $Id: G4MuNuclearInteraction.hh,v 1.4 2006/06/29 20:57:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: // ------------------------------------------------------------ diff --git a/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/include/G4MuNuclearInteraction.icc b/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/include/G4MuNuclearInteraction.icc index c3350383f6..06417a083f 100644 --- a/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/include/G4MuNuclearInteraction.icc +++ b/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/include/G4MuNuclearInteraction.icc @@ -25,7 +25,7 @@ // // // $Id: G4MuNuclearInteraction.icc,v 1.3 2006/06/29 20:57:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: // --------------------------------------------------------------- diff --git a/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4MuNuclearInteraction.cc b/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4MuNuclearInteraction.cc index 822c7bb713..1817e506fb 100644 --- a/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4MuNuclearInteraction.cc +++ b/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4MuNuclearInteraction.cc @@ -25,7 +25,7 @@ // // // $Id: G4MuNuclearInteraction.cc,v 1.7 2006/11/04 02:15:05 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: // -------------------------------------------------------------- diff --git a/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4MuonNucleusInteractionModel.cc b/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4MuonNucleusInteractionModel.cc index 29f11c1748..18d2aacb60 100644 --- a/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4MuonNucleusInteractionModel.cc +++ b/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4MuonNucleusInteractionModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4MuonNucleusInteractionModel.cc,v 1.6 2006/06/29 20:57:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // G4MuonNucleusInteractionModel.cc diff --git a/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4ParametrizedHadronicVertex.cc b/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4ParametrizedHadronicVertex.cc index ef34d6edb7..fe84c06489 100644 --- a/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4ParametrizedHadronicVertex.cc +++ b/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4ParametrizedHadronicVertex.cc @@ -25,7 +25,7 @@ // // // $Id: G4ParametrizedHadronicVertex.cc,v 1.6 2006/06/29 20:57:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- #include "G4ParametrizedHadronicVertex.hh" diff --git a/source/processes/hadronic/models/pre_equilibrium/History b/source/processes/hadronic/models/pre_equilibrium/History index 16d281d1bf..9b4ca0d135 100644 --- a/source/processes/hadronic/models/pre_equilibrium/History +++ b/source/processes/hadronic/models/pre_equilibrium/History @@ -14,6 +14,53 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +25-October 2007 A.Howard hadr-pre-V09-00-04 +----------------------------------------------- +- Removed compilation warning on unused parameter in G4PreCompoundIon.cc + + +11-October 2007 A.Howard hadr-pre-V09-00-03 +----------------------------------------------- +- Corrected for integer arithmetic bug in G4PreCompoundModel.cc + (ratio of charged to neutral excitons) + + +01-October 2007 A.Howard hadr-pre-V09-00-02 +----------------------------------------------- +- Protected Rj (Q_beta) factor against divide by zeroes (should never happen?) + The following files have been modified: + G4PreCompoundAlpha.hh, G4PreCompoundDeuteron.hh, G4PreCompoundHe3.hh, + G4PreCompoundTriton.hh, G4PreCompoundNeutron.hh, G4PreCompoundProton.hh + + +23-August 2007 A.Howard hadr-pre-V09-00-01 +---------------------------------------------- +- Development tag incorporating further suggestions/corrections from + Jose-Manuel Quesada particularly with respect to light ion production. + The following files have been modified: + G4PreCompoundIon.cc, G4PreCompoundDeuteron.hh, G4PreCompoundHe3.hh, + G4PreCompoundTriton.hh, G4PreCompoundAlpha.hh, G4PreCompoundIon.hh, + G4VPreCompoundIon.hh (unused?) + + +23-July 2007 A.Howard hadr-pre-V09-00-00 +---------------------------------------------- +- Development tag incorporating the suggestions/corrections of Jose-Manuel + Quesada. These should reflect the literature and units expected for the + exciton model. The following files have been modified: + G4PreCompoundNucleon.hh, G4VPreCompoundNucleon.hh, G4PreCompoundAlpha.hh, + G4PreCompoundHe3.hh, G4PreCompoundDeuteron.hh, G4PreCompoundNeutron.hh, + G4PreCompoundProton.hh, G4PreCompoundTriton.hh + G4VPreCompoundIon.cc, G4PreCompoundIon.cc, G4PreCompoundModel.cc, + G4VPreCompoundFragment.cc, G4PreCompoundTransitions.cc, + G4PreCompoundNucleon.cc, G4VPreCompoundNucleon.cc + The main changes are: + - introducing an Rj factor into the probability calculation, + - correcting the units for the Pauli Blocking Factor - missing a g factor, + - decreasing the number of charged particles if the number excitons is + decreased (previously this number was only increased with increasing + excitons). + 04-May 2007 G.Folger hadr-pre-V08-02-00 ---------------------------------------------- diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4LowEIonFragmentation.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4LowEIonFragmentation.hh index 18a70bccd9..3ec9a1103d 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4LowEIonFragmentation.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4LowEIonFragmentation.hh @@ -25,7 +25,7 @@ // // // $Id: G4LowEIonFragmentation.hh,v 1.3 2006/06/29 20:58:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by H.P. Wellisch diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundAlpha.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundAlpha.hh index d7bbc6f045..7fe3f1fb33 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundAlpha.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundAlpha.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PreCompoundAlpha.hh,v 1.3 2006/06/29 20:58:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PreCompoundAlpha.hh,v 1.6 2007/10/01 10:41:59 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -78,6 +78,18 @@ public: } private: + +// added Rj method according to literature and JMQ + virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged) + { + G4double rj = 1.0; + G4double denominator = NumberParticles*(NumberParticles-1)*(NumberParticles-2)*(NumberParticles-3); + if(denominator !=0) rj = 6.0*static_cast(NumberCharged*(NumberCharged-1)*(NumberParticles-NumberCharged)*(NumberParticles-NumberCharged-1))/static_cast(denominator); //JMQ 23/8/07 + + return rj; + } + + virtual G4double GetAlpha() { G4double C = 0.0; diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundDeuteron.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundDeuteron.hh index 022a919615..ed4c4b28ea 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundDeuteron.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundDeuteron.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PreCompoundDeuteron.hh,v 1.3 2006/06/29 20:58:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PreCompoundDeuteron.hh,v 1.7 2007/10/01 10:41:59 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -78,6 +78,20 @@ public: } private: + +// added Rj method according to literature and JMQ - formula from Jose Quesada + virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged) + { + G4double rj = 1.0; + G4double denominator = NumberParticles*(NumberParticles-1); + if(denominator != 0) rj = 2.0*static_cast(NumberCharged*(NumberParticles-NumberCharged))/static_cast(denominator); //JMQ re-corrected 23/8/07 + // return static_cast(NumberCharged*(NumberCharged-1))/static_cast(NumberParticles*(NumberParticles-1)); + + return rj; + } + + + virtual G4double GetAlpha() { G4double C = 0.0; diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundEmission.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundEmission.hh index c26db01892..0cd01f39a6 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundEmission.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundEmission.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PreCompoundEmission.hh,v 1.3 2006/06/29 20:58:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear Preequilibrium // by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.hh index 3c89bc7f38..1b6812b55f 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundFragmentVector.hh,v 1.3 2006/06/29 20:58:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear Preequilibrium // by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.icc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.icc index e9684bc328..35ddbe1fc0 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.icc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.icc @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundFragmentVector.icc,v 1.3 2006/06/29 20:58:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear Preequilibrium // by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundHe3.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundHe3.hh index b9a9bf96d3..992065b25c 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundHe3.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundHe3.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PreCompoundHe3.hh,v 1.3 2006/06/29 20:58:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PreCompoundHe3.hh,v 1.6 2007/10/01 10:42:00 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -78,6 +78,19 @@ public: } private: + +// added Rj method according to literature and JMQ + virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged) + { + G4double rj = 1.0; + G4double denominator = NumberParticles*(NumberParticles-1)*(NumberParticles-2); + if(denominator != 0) rj = 3.0*static_cast(NumberCharged*(NumberCharged-1)*(NumberParticles-NumberCharged))/static_cast(denominator); //JMQ 23/8/07 + + return rj; + } + + + virtual G4double GetAlpha() { G4double C = 0.0; diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundIon.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundIon.hh index 8b6bc96fa2..bf18d00977 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundIon.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundIon.hh @@ -82,6 +82,7 @@ protected: virtual G4double GetAlpha() = 0; virtual G4double GetBeta() = 0; + virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged) = 0; virtual G4double FactorialFactor(const G4double N, const G4double P) = 0; virtual G4double CoalescenceFactor(const G4double A) = 0; diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundModel.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundModel.hh index 4fc92b216f..8eb9b6a10b 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundModel.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundModel.hh,v 1.3 2006/06/29 20:58:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundNeutron.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundNeutron.hh index 19a9cede84..ea46c71795 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundNeutron.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundNeutron.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PreCompoundNeutron.hh,v 1.4 2006/06/29 20:58:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PreCompoundNeutron.hh,v 1.7 2007/10/01 10:42:00 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -80,6 +80,16 @@ public: } private: + +// added Rj method according to literature and JMQ - formula from Jose Quesada + virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged) + { + G4double rj = 1.0; + if(NumberParticles != 0) rj = static_cast(NumberParticles - NumberCharged)/static_cast(NumberParticles); + return rj; + } + + virtual G4double GetAlpha() { return 0.76+2.2/std::pow(GetRestA(),1.0/3.0); diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundNucleon.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundNucleon.hh index e53983b0c0..13d27ecbe5 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundNucleon.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundNucleon.hh @@ -75,6 +75,8 @@ public: protected: +// added Rj method according to literature and JMQ + virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged) = 0; virtual G4double GetAlpha() = 0; virtual G4double GetBeta() = 0; virtual G4bool IsItPossible(const G4Fragment&) = 0; diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundParameters.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundParameters.hh index d865ddc70d..630eabc2e5 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundParameters.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundParameters.hh @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundParameters.hh,v 1.3 2006/06/29 20:58:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundProton.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundProton.hh index d55e8bfe75..c1e21f6f1a 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundProton.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundProton.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PreCompoundProton.hh,v 1.3 2006/06/29 20:58:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PreCompoundProton.hh,v 1.7 2007/10/01 10:42:00 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -80,6 +80,16 @@ public: } private: + +// added Rj method according to literature and JMQ - formula from Jose Quesada + virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged) + { + G4double rj = 1.0; + if(NumberParticles != 0) rj = static_cast(NumberCharged)/static_cast(NumberParticles); + return rj; + } + + virtual G4double GetAlpha() { G4double aZ = static_cast(GetRestZ()); diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundTransitions.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundTransitions.hh index 2cbbec1262..1bec679a3b 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundTransitions.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundTransitions.hh @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundTransitions.hh,v 1.3 2006/06/29 20:58:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundTriton.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundTriton.hh index 81e72edfaa..26138c0268 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundTriton.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundTriton.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PreCompoundTriton.hh,v 1.3 2006/06/29 20:58:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PreCompoundTriton.hh,v 1.6 2007/10/01 10:42:00 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -78,6 +78,17 @@ public: } private: + +// added Rj method according to literature and JMQ + virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged) + { + G4double rj = 1.0; + G4double denominator = NumberParticles*(NumberParticles-1)*(NumberParticles-2); + if(denominator != 0) rj = 3.0*static_cast(NumberCharged*(NumberParticles-NumberCharged)*(NumberParticles-NumberCharged-1))/static_cast(denominator); //JMQ 23/8/07 + + return rj; + } + virtual G4double GetAlpha() { G4double C = 0.0; diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.hh index 5df464b5b0..2154912487 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.hh @@ -25,7 +25,7 @@ // // // $Id: G4VPreCompoundFragment.hh,v 1.4 2006/08/20 01:07:28 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.icc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.icc index 045bd1f267..849115b1e8 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.icc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.icc @@ -25,7 +25,7 @@ // // // $Id: G4VPreCompoundFragment.icc,v 1.4 2006/08/20 01:07:40 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundIon.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundIon.hh index 451bcfd335..d7d57abc1b 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundIon.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundIon.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VPreCompoundIon.hh,v 1.3 2006/06/29 20:58:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VPreCompoundIon.hh,v 1.5 2007/08/23 16:29:01 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -83,6 +83,7 @@ protected: virtual G4double GetAlpha() = 0; virtual G4double GetBeta() = 0; + virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged) = 0; virtual G4double FactorialFactor(const G4double N, const G4double P) = 0; virtual G4double CoalescenceFactor(const G4double A) = 0; diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundNucleon.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundNucleon.hh index 81b676b806..475a704716 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundNucleon.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundNucleon.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VPreCompoundNucleon.hh,v 1.3 2006/06/29 20:58:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VPreCompoundNucleon.hh,v 1.4 2007/07/23 09:56:40 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -75,6 +75,9 @@ public: protected: + +// added Rj method according to literature and JMQ + virtual G4double GetRj(const G4int NumberParticles, const G4int NumberCharged) = 0; virtual G4double GetAlpha() = 0; virtual G4double GetBeta() = 0; virtual G4bool IsItPossible(const G4Fragment&) = 0; diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundFragmentVector.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundFragmentVector.cc index 627ca98b43..0255dc898f 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundFragmentVector.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundFragmentVector.cc @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundFragmentVector.cc,v 1.5 2006/06/29 20:59:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Hadronic Process: Nuclear Preequilibrium // by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundIon.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundIon.cc index 1b59402b74..06810452b7 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundIon.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundIon.cc @@ -43,15 +43,6 @@ ProbabilityDistributionFunction(const G4double eKin, G4double H = aFragment.GetNumberOfHoles(); G4double N = P + H; - G4double A0 = (P*P+H*H+P-H)/4.0 - H/2.0; - G4double A1 = std::max(0.0,A0 + GetA()*(GetA()-2.0*P-1.0)/4.0); - G4double Aj = GetA()*(GetA()+1.0)/4.0; - - G4double E0 = std::max(0.0,U - A0); - if (E0 == 0.0) return 0.0; - G4double E1 = std::max(0.0,GetMaximalKineticEnergy() + GetCoulombBarrier() - eKin - A1); - G4double Ej = std::max(0.0,U + GetBindingEnergy() - Aj); - // g = (6.0/pi2)*a*A // G4EvaporationLevelDensityParameter theLDP; G4double g0 = (6.0/pi2)*aFragment.GetA() * @@ -60,19 +51,31 @@ ProbabilityDistributionFunction(const G4double eKin, G4double g1 = (6.0/pi2)*GetRestA() * G4PreCompoundParameters::GetAddress()->GetLevelDensity(); // theLDP.LevelDensityParameter(GetRestA(),GetRestZ(),U); - G4double gj = (6.0/pi2)*GetA() * - G4PreCompoundParameters::GetAddress()->GetLevelDensity(); + //no longer used: G4double gj = (6.0/pi2)*GetA() * + // -----"----- G4PreCompoundParameters::GetAddress()->GetLevelDensity(); // theLDP.LevelDensityParameter(GetA(),GetZ(),U); + G4double A0 = ((P*P+H*H+P-H)/4.0 - H/2.0)/g0; + G4double A1 = std::max(0.0,(A0*g0 + GetA()*(GetA()-2.0*P-1.0)/4.0)/g1); + G4double Aj = GetA()*(GetA()+1.0)/4.0; + + G4double E0 = std::max(0.0,U - A0); + if (E0 == 0.0) return 0.0; + // G4double E1 = std::max(0.0,GetMaximalKineticEnergy() + GetCoulombBarrier() - eKin - A1); + G4double E1 = (std::max(0.0,GetMaximalKineticEnergy() - eKin - A1))/g1; //JMQ fix + // G4double Ej = std::max(0.0,U + GetBindingEnergy() - Aj); + G4double Ej = std::max(0.0,eKin + GetBindingEnergy() - Aj); //JMQ fix + G4double pA = (3.0/4.0) * std::sqrt(std::max(0.0, 2.0/(GetReducedMass()*(eKin+GetBindingEnergy()))))* GetAlpha()*(eKin+GetBeta())/(r0*std::pow(GetRestA(),1.0/3.0)) * CoalescenceFactor(aFragment.GetA()) * FactorialFactor(N,P); G4double pB = std::pow((g1*E1)/(g0*E0),N-GetA()-1.0)*(g1/g0); - G4double pC = std::pow((gj*Ej)/(g0*E0),GetA()-1.0)*(gj/g0)/E0; + // G4double pC = std::pow((gj*Ej)/(g0*E0),GetA()-1.0)*(gj/g0)/E0; + G4double pC = std::pow((g1*Ej)/(g0*E0),GetA()-1.0)*(g1/g0)/E0; //JMQ fix - G4double Probability = pA * pB * pC; + G4double Probability = pA * pB * pC * GetRj(aFragment.GetNumberOfParticles(), aFragment.GetNumberOfCharged()); return Probability; } diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundModel.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundModel.cc index 4d38a3c701..44e2af7670 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundModel.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundModel.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PreCompoundModel.cc,v 1.8 2006/06/29 20:59:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PreCompoundModel.cc,v 1.11 2007/10/11 14:19:36 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -85,9 +85,16 @@ G4HadFinalState * G4PreCompoundModel::ApplyYourself(const G4HadProjectile & theP anInitialState.SetNumberOfParticles(1+thePrimary.GetDefinition()->GetBaryonNumber()); // Number of Charged Excited Particles - anInitialState.SetNumberOfCharged(static_cast(thePrimary.GetDefinition()->GetPDGCharge()+.01) + - static_cast(0.5+G4UniformRand())); - + // JMQ/AH modify number of charged particles with probability of the Z/A ratio of the nucleus: + // if(G4UniformRand() <= aZ/anA) BUG! - integer arithmetic + if(G4UniformRand() <= (static_cast(aZ))/(static_cast(anA))) + anInitialState.SetNumberOfCharged(static_cast(thePrimary.GetDefinition()->GetPDGCharge()+.01) + 1); + else + anInitialState.SetNumberOfCharged(static_cast(thePrimary.GetDefinition()->GetPDGCharge()+.01)); + +//AH anInitialState.SetNumberOfCharged(static_cast(thePrimary.GetDefinition()->GetPDGCharge()+.01) + +//AH static_cast(0.5+G4UniformRand())); + // Number of Holes anInitialState.SetNumberOfHoles(1); diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNucleon.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNucleon.cc index 8a24bb50b2..04deebe78f 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNucleon.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNucleon.cc @@ -42,14 +42,6 @@ ProbabilityDistributionFunction(const G4double eKin, G4double H = aFragment.GetNumberOfHoles(); G4double N = P + H; - G4double A0 = (P*P+H*H+P-H)/4.0 - H/2.0; - G4double A1 = A0 - P/2.0; - - G4double E0 = std::max(0.0,U - A0); - if (E0 == 0.0) return 0.0; - G4double E1 = std::max(0.0,U - eKin - GetBindingEnergy() - A1); - if (E1 == 0.0) return 0.0; - // g = (6.0/pi2)*a*A // G4EvaporationLevelDensityParameter theLDP; G4double g0 = (6.0/pi2)*aFragment.GetA() * @@ -59,9 +51,17 @@ ProbabilityDistributionFunction(const G4double eKin, G4PreCompoundParameters::GetAddress()->GetLevelDensity(); // theLDP.LevelDensityParameter(static_cast(GetRestA()),static_cast(GetRestZ()),U); + G4double A0 = ((P*P+H*H+P-H)/4.0 - H/2.0)/g0; + G4double A1 = (A0*g0 - P/2.0)/g1; + + G4double E0 = std::max(0.0,U - A0); + if (E0 == 0.0) return 0.0; + G4double E1 = std::max(0.0,U - eKin - GetBindingEnergy() - A1); + if (E1 == 0.0) return 0.0; + G4double Probability = 2.0/(hbarc*hbarc*hbarc) * GetReducedMass() * - r0 * r0 * std::pow(GetRestA(),2.0/3.0) * GetAlpha() * (eKin + GetBeta()) * + GetRj(aFragment.GetNumberOfParticles(), aFragment.GetNumberOfCharged()) * r0 * r0 * std::pow(GetRestA(),2.0/3.0) * GetAlpha() * (eKin + GetBeta()) * P*(N-1.0) * std::pow(g1*E1/(g0*E0),N-2.0)/E0 * g1/(g0*g0); diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundParameters.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundParameters.cc index d64ca9e8df..4a91e94013 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundParameters.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundParameters.cc @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundParameters.cc,v 1.3 2006/06/29 20:59:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundTransitions.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundTransitions.cc index 5a180e2b41..cdea6ba661 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundTransitions.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundTransitions.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PreCompoundTransitions.cc,v 1.9 2007/05/04 14:50:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PreCompoundTransitions.cc,v 1.13 2007/07/23 12:48:54 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -133,9 +133,10 @@ CalculateProbability(const G4Fragment & aFragment) // F(p,h) = 0.25*(p^2 + h^2 + p - h) - 0.5*h - G4double Fph = (P*P+H*H+P-H)/4.0 - H/2.0; + G4double Fph = ((P*P+H*H+P-H)/4.0 - H/2.0); G4bool NeverGoBack(false); - if (U-Fph < 0.0) NeverGoBack = true; + //AH if (U-Fph < 0.0) NeverGoBack = true; + if (GE-Fph < 0.0) NeverGoBack = true; // F(p+1,h+1) G4double Fph1 = Fph + N/2.0; // (n+1)/n ((g*E - F(p,h))/(g*E - F(p+1,h+1)))^(n+1) @@ -182,11 +183,20 @@ G4Fragment G4PreCompoundTransitions::PerformTransition(const G4Fragment & aFragm // Number of excitons is increased on \Delta n = -2 deltaN = -2; } + + // AH/JMQ: Randomly decrease the number of charges if deltaN is -2 and in proportion to the number charges w.r.t. number of particles + if(deltaN < 0 && G4UniformRand() <= static_cast(result.GetNumberOfCharged())/static_cast(result.GetNumberOfParticles()) && (result.GetNumberOfCharged() >= 1)) + result.SetNumberOfCharged(result.GetNumberOfCharged()+deltaN/2); // deltaN is negative! + + // result.SetNumberOfParticles was here + // result.SetNumberOfHoles was here + // the following lines have to be before SetNumberOfCharged, otherwise the check on number of charged vs. number of particles fails result.SetNumberOfParticles(result.GetNumberOfParticles()+deltaN/2); result.SetNumberOfHoles(result.GetNumberOfHoles()+deltaN/2); // With weight Z/A, number of charged particles is decreased on +1 - if ((deltaN > 0 || result.GetNumberOfCharged() > 0) && + // if ((deltaN > 0 || result.GetNumberOfCharged() > 0) && // AH/JMQ check is now in initialize within G4VPreCompoundFragment + if ( ( deltaN > 0 ) && (G4UniformRand() <= static_cast(result.GetZ()-result.GetNumberOfCharged())/ std::max(static_cast(result.GetA()-Nexcitons),1.))) { @@ -199,6 +209,10 @@ G4Fragment G4PreCompoundTransitions::PerformTransition(const G4Fragment & aFragm result.SetNumberOfCharged(result.GetNumberOfParticles()); } + // moved from above to make code more readable + // result.SetNumberOfParticles(result.GetNumberOfParticles()+deltaN/2); + // result.SetNumberOfHoles(result.GetNumberOfHoles()+deltaN/2); + return result; } diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundFragment.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundFragment.cc index 1a586e83e3..e29b85631e 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundFragment.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundFragment.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VPreCompoundFragment.cc,v 1.3 2006/06/29 20:59:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VPreCompoundFragment.cc,v 1.4 2007/07/23 09:56:40 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -141,7 +141,8 @@ Initialize(const G4Fragment & aFragment) if ((theRestNucleusA < theRestNucleusZ) || (theRestNucleusA < theA) || - (theRestNucleusZ < theZ)) + (theRestNucleusZ < theZ) || + (aFragment.GetNumberOfCharged() < theZ)) // AH last argument from JMQ { // In order to be sure that emission probability will be 0. theMaximalKineticEnergy = 0.0; diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundIon.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundIon.cc index 9ce11cd175..09d7501b26 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundIon.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundIon.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VPreCompoundIon.cc,v 1.4 2006/06/29 20:59:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VPreCompoundIon.cc,v 1.5 2007/07/23 09:56:40 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -47,15 +47,6 @@ ProbabilityDistributionFunction(const G4double eKin, G4double H = aFragment.GetNumberOfHoles(); G4double N = P + H; - G4double A0 = (P*P+H*H+P-H)/4.0 - H/2.0; - G4double A1 = std::max(0.0,A0 + GetA()*(GetA()-2.0*P-1.0)/4.0); - G4double Aj = GetA()*(GetA()+1.0)/4.0; - - G4double E0 = std::max(0.0,U - A0); - if (E0 == 0.0) return 0.0; - G4double E1 = std::max(0.0,GetMaximalKineticEnergy() + GetCoulombBarrier() - eKin - A1); - G4double Ej = std::max(0.0,U + GetBindingEnergy() - Aj); - // g = (6.0/pi2)*a*A // G4EvaporationLevelDensityParameter theLDP; G4double g0 = (6.0/pi2)*aFragment.GetA() * @@ -68,6 +59,15 @@ ProbabilityDistributionFunction(const G4double eKin, G4PreCompoundParameters::GetAddress()->GetLevelDensity(); // theLDP.LevelDensityParameter(GetA(),GetZ(),U); + G4double A0 = ((P*P+H*H+P-H)/4.0 - H/2.0)/g0; + G4double A1 = std::max(0.0,(A0*g0 + GetA()*(GetA()-2.0*P-1.0)/4.0)/g1); + G4double Aj = GetA()*(GetA()+1.0)/4.0; + + G4double E0 = std::max(0.0,U - A0); + if (E0 == 0.0) return 0.0; + G4double E1 = std::max(0.0,GetMaximalKineticEnergy() + GetCoulombBarrier() - eKin - A1); + G4double Ej = std::max(0.0,U + GetBindingEnergy() - Aj); + G4double pA = (3.0/4.0) * std::sqrt(std::max(0.0, 2.0/(GetReducedMass()*(eKin+GetBindingEnergy()))))* GetAlpha()*(eKin+GetBeta())/(r0*std::pow(GetRestA(),1.0/3.0)) * CoalescenceFactor(aFragment.GetA()) * FactorialFactor(N,P); diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundNucleon.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundNucleon.cc index be9d4d374b..d8a345a8c4 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundNucleon.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundNucleon.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VPreCompoundNucleon.cc,v 1.4 2006/06/29 20:59:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VPreCompoundNucleon.cc,v 1.5 2007/07/23 09:56:40 ahoward Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // by V. Lara @@ -47,13 +47,6 @@ ProbabilityDistributionFunction(const G4double eKin, G4double H = aFragment.GetNumberOfHoles(); G4double N = P + H; - G4double A0 = (P*P+H*H+P-H)/4.0 - H/2.0; - G4double A1 = A0 - P/2.0; - - G4double E0 = std::max(0.0,U - A0); - if (E0 == 0.0) return 0.0; - G4double E1 = std::max(0.0,U - eKin - GetBindingEnergy() - A1); - // g = (6.0/pi2)*a*A // G4EvaporationLevelDensityParameter theLDP; G4double g0 = (6.0/pi2)*aFragment.GetA() * @@ -64,8 +57,15 @@ ProbabilityDistributionFunction(const G4double eKin, // theLDP.LevelDensityParameter(G4int(GetRestA()),G4int(GetRestZ()),U); + G4double A0 = ((P*P+H*H+P-H)/4.0 - H/2.0)/g0; + G4double A1 = (A0*g0 - P/2.0)/g1; + + G4double E0 = std::max(0.0,U - A0); + if (E0 == 0.0) return 0.0; + G4double E1 = std::max(0.0,U - eKin - GetBindingEnergy() - A1); + G4double Probability = 2.0/(hbarc*hbarc*hbarc) * GetReducedMass() * - r0 * r0 * std::pow(GetRestA(),2.0/3.0) * GetAlpha() * (eKin + GetBeta()) * + GetRj(aFragment.GetNumberOfParticles(), aFragment.GetNumberOfCharged()) * r0 * r0 * std::pow(GetRestA(),2.0/3.0) * GetAlpha() * (eKin + GetBeta()) * P*(N-1.0) * std::pow(g1*E1/(g0*E0),N-2.0)/E0 * g1/(g0*g0); diff --git a/source/processes/hadronic/models/qmd/GNUmakefile b/source/processes/hadronic/models/qmd/GNUmakefile new file mode 100644 index 0000000000..4e871edc82 --- /dev/null +++ b/source/processes/hadronic/models/qmd/GNUmakefile @@ -0,0 +1,48 @@ +# $Id: GNUmakefile,v 1.1 2007/11/17 16:27:35 dennis Exp $ +# ----------------------------------------------------------- +# GNUmakefile for hadronic library. Gabriele Cosmo, 18/9/96. +# ----------------------------------------------------------- + +name := G4hadronic_qmd + +ifndef G4INSTALL + G4INSTALL = ../../../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +CPPFLAGS += -I$(G4BASE)/global/management/include \ + -I$(G4BASE)/global/HEPRandom/include \ + -I$(G4BASE)/global/HEPNumerics/include \ + -I$(G4BASE)/global/HEPGeometry/include \ + -I$(G4BASE)/track/include \ + -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/magneticfield/include \ + -I$(G4BASE)/geometry/management/include \ + -I$(G4BASE)/processes/management/include \ + -I$(G4BASE)/processes/hadronic/management/include/ \ + -I$(G4BASE)/processes/hadronic/util/include \ + -I$(G4BASE)/processes/hadronic/processes/include \ + -I$(G4BASE)/processes/hadronic/cross_sections/include \ + -I$(G4BASE)/processes/hadronic/models/management/include \ + -I$(G4BASE)/processes/hadronic/models/util/include \ + -I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \ + -I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \ + -I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \ + -I$(G4BASE)/processes/hadronic/models/de_excitation/fermi_breakup/include \ + -I$(G4BASE)/processes/hadronic/models/de_excitation/photon_evaporation/include \ + -I$(G4BASE)/processes/hadronic/models/de_excitation/multifragmentation/include \ + -I$(G4BASE)/processes/hadronic/models/de_excitation/handler/include \ + -I$(G4BASE)/processes/hadronic/models/de_excitation/management/include \ + -I$(G4BASE)/processes/hadronic/models/pre_equilibrium/exciton_model/include \ + -I$(G4BASE)/particles/management/include \ + -I$(G4BASE)/particles/leptons/include \ + -I$(G4BASE)/particles/bosons/include \ + -I$(G4BASE)/particles/hadrons/mesons/include \ + -I$(G4BASE)/particles/hadrons/barions/include \ + -I$(G4BASE)/particles/hadrons/ions/include \ + -I$(G4BASE)/particles/shortlived/include \ + -I$(G4BASE)/materials/include + +include $(G4INSTALL)/config/common.gmk + diff --git a/source/processes/hadronic/models/qmd/History b/source/processes/hadronic/models/qmd/History new file mode 100644 index 0000000000..5b58782bbd --- /dev/null +++ b/source/processes/hadronic/models/qmd/History @@ -0,0 +1,62 @@ + + ========================================================== + Geant4 - an Object-Oriented Toolkit for Physics Simulation + ========================================================== + + History file for hadronic/models/qmd directory + -------------------------------------------------------- + +This file should be used to summarize modifications introduced in the +code and to keep track of all tags. + + --------------------------------------------------------------- + * Please list in reverse chronological order (last date on top) + --------------------------------------------------------------- +26-Nov-2007 Tatsumi Koi (hadr-qmd-V09-00-05) +- Fix of typo which introduced at (hadr-qmd-V09-00-04) + src/G4QMDNucleus.cc + +20-Nov-2007 Tatsumi Koi (hadr-qmd-V09-00-04) +- Fixed failed initialization of some parameter + src/G4QMDParameters.cc +- Reduce standard outputted information + src/G4QMDNucleus.cc ( included fix in hadr-qmd-V09-00-03) +- Reduce multiple calculation of identical and symmetric parameters + (enhance computing speed) + src/G4QMDMeanField.cc +- Change reaction system CM to NN + (usually enhanced stability of ground state nucleus) + include/G4QMDReaction.hh + src/G4QMDReaction.cc + +22-Nov-2007 Gabriele Cosmo (hadr-qmd-V09-00-03) +- Fixed compilation problem on WIN32-VC for usage of std::pow() function + in file G4QMDNucleus.cc. + +20-Nov-2007 Gabriele Cosmo (hadr-qmd-V09-00-02) +- Fixed compilation problem on SUN-CC for handling of 'multimap' + structures in G4QMDMeanField.cc. + +15-Nov-2007 Tatsumi Koi (hadr-qmd-V09-00-01) +- First implmentation of QMD reaction model + based on JQMD (Niita et al., JAERI-Data/Code 99-042) + Use Collision library of Geant4 + + History (this file) + GNUMakefile + include/G4QMDGroundStateNucleus.hh + include/G4QMDNucleus.hh + include/G4QMDParticipant.hh + include/G4QMDSystem.hh + include/G4QMDCollision.hh + include/G4QMDMeanField.hh + include/G4QMDParameters.hh + include/G4QMDReaction.hh + src/G4QMDCollision.cc + src/G4QMDGroundStateNucleus.cc + src/G4QMDMeanField.cc + src/G4QMDNucleus.cc + src/G4QMDParameters.cc + src/G4QMDParticipant.cc + src/G4QMDReaction.cc + src/G4QMDSystem.cc diff --git a/examples/extended/gdml/src/g4rwDetectorConstruction.cc b/source/processes/hadronic/models/qmd/include/G4QMDCollision.hh similarity index 61% rename from examples/extended/gdml/src/g4rwDetectorConstruction.cc rename to source/processes/hadronic/models/qmd/include/G4QMDCollision.hh index 22f49de8e6..83d0fb04c7 100644 --- a/examples/extended/gdml/src/g4rwDetectorConstruction.cc +++ b/source/processes/hadronic/models/qmd/include/G4QMDCollision.hh @@ -23,55 +23,49 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// ------------------------------------------------------------------- +// GEANT4 Class file // -// $Id: g4rwDetectorConstruction.cc,v 1.3 2006/06/29 17:21:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ // +// File name: G4QMDCollision.hh +// +// Author: Koi, Tatsumi (tkoi@slac.stanford.edu) // -// -------------------------------------------------------------- -// Comments -// -// -------------------------------------------------------------- +// Creation date: 9 April 2007 +// ----------------------------------------------------------------------------- -#include "globals.hh" -#include "G4VisAttributes.hh" +#ifndef G4QMDCollision_hh +#define G4QMDCollision_hh -#include "g4rwDetectorConstruction.hh" +#include "G4QMDSystem.hh" +#include "G4QMDMeanField.hh" -#include "G4Processor/GDMLProcessor.h" +#include "G4Scatterer.hh" -// Added here just to help resolve properly dependencies -#include "G4BooleanSolid.hh" -#include "G4CSGSolid.hh" - -gogdmlDetectorConstruction::gogdmlDetectorConstruction() +class G4QMDCollision { - sxp.Initialize(); - config.SetURI( "test.gdml" ); - config.SetSetupName( "Default" ); - sxp.Configure( &config ); -} + public: + G4QMDCollision(); + ~G4QMDCollision(); -gogdmlDetectorConstruction::~gogdmlDetectorConstruction() -{ - sxp.Finalize(); -} + void CalKinematicsOfBinaryCollisions(); + G4bool CalFinalStateOfTheBinaryCollision( G4int , G4int ); + G4bool CalFinalStateOfTheBinaryCollisionJQMD( G4double , G4double , G4ThreeVector , G4double , G4double , G4ThreeVector , G4double , G4int , G4int ); + // CalFinalStateOfTheBinaryCollision ( sig , cutoff , pcm , prcm , srt, beta , gamma , i , j ); -G4VPhysicalVolume* gogdmlDetectorConstruction::Construct() -{ - sxp.Run(); - - fWorld = (G4VPhysicalVolume *)GDMLProcessor::GetInstance()->GetWorldVolume(); + void SetMeanField ( G4QMDMeanField* meanfield ){ theMeanField = meanfield; theSystem = meanfield->GetSystem(); } - fWorld->GetLogicalVolume()->SetVisAttributes (G4VisAttributes::Invisible); - - if( fWorld == 0 ) { - G4Exception( - "World volume not set properly check your setup selection criteria or GDML input!" - ); - } + private: + G4QMDSystem* theSystem; + G4QMDMeanField* theMeanField; - return fWorld; -} + G4double deltar; + G4double bcmax0 , bcmax1; + G4double sig0 , sig1; + G4double epse; + G4Scatterer* theScatterer; +}; + +#endif diff --git a/source/processes/hadronic/models/qmd/include/G4QMDGroundStateNucleus.hh b/source/processes/hadronic/models/qmd/include/G4QMDGroundStateNucleus.hh new file mode 100644 index 0000000000..093bce9f81 --- /dev/null +++ b/source/processes/hadronic/models/qmd/include/G4QMDGroundStateNucleus.hh @@ -0,0 +1,103 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// ------------------------------------------------------------------- +// GEANT4 Class file +// +// +// File name: G4QMDGroundStateNucleus.hh +// +// Author: Koi, Tatsumi (tkoi@slac.stanford.edu) +// +// Creation date: 11 May 2007 +// ------------------------------------------------------------------- + +#ifndef G4QMDGroundStateNucleus_hh +#define G4QMDGroundStateNucleus_hh + +#include "G4QMDNucleus.hh" +#include "G4QMDMeanField.hh" + +#include "G4QMDParameters.hh" + +class G4QMDGroundStateNucleus : public G4QMDNucleus +{ + public: + G4QMDGroundStateNucleus(); + G4QMDGroundStateNucleus( G4int z , G4int a ); + ~G4QMDGroundStateNucleus() + { + rho_l.clear(); + d_pot.clear(); + }; + + + + private: + + void packNucleons(); + + void killCMMotionAndAngularM(); + + G4int maxTrial; + G4bool samplingPosition( G4int ); + + G4bool samplingMomentum( G4int ); + + G4double r00 , r01 , saa , rada , radb; + + G4double dsam, ddif, dsam2, ddif2; + + G4double c0, c3 , cs , cl , wl; + + + + G4double rho0,aaa,bbb; + + G4double cdp; + G4double c0p,clp,c3p,csp; + + G4double hbc; + G4double gamm; + G4double cpw; + G4double cph; + G4double epsx; + G4double cpc; + + G4double rmax,rt00,radm; + + std::vector< G4double > phase_g; + + std::vector< G4double > rho_l; + std::vector< G4double > d_pot; + G4double ebini; + G4double edepth; + G4double epse; + + + G4QMDMeanField* meanfield; +}; + +#endif diff --git a/source/processes/hadronic/models/qmd/include/G4QMDMeanField.hh b/source/processes/hadronic/models/qmd/include/G4QMDMeanField.hh new file mode 100644 index 0000000000..7b0052949d --- /dev/null +++ b/source/processes/hadronic/models/qmd/include/G4QMDMeanField.hh @@ -0,0 +1,114 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// ------------------------------------------------------------------- +// GEANT4 Class file +// +// +// File name: G4QMDMeanField.hh +// +// Author: Koi, Tatsumi (tkoi@slac.stanford.edu) +// +// Creation date: 29 March 2007 +// ----------------------------------------------------------------------------- + +#ifndef G4QMDMeanField_hh +#define G4QMDMeanField_hh + +#include "G4QMDSystem.hh" +#include "G4QMDNucleus.hh" + +class G4QMDMeanField +{ + public: + G4QMDMeanField(); + ~G4QMDMeanField(); + + void SetSystem ( G4QMDSystem* aSystem ); + void SetNucleus ( G4QMDNucleus* aSystem ); + G4QMDSystem* GetSystem () {return system; }; + + void Cal2BodyQuantities(); + void Cal2BodyQuantities( G4int ); + + void CalGraduate(); + + G4bool IsPauliBlocked( G4int ); + + G4double GetTotalPotential(); + + void DoPropagation( G4double ); + + std::vector< G4QMDNucleus* > DoClusterJudgment(); + + G4double GetRR2( G4int i , G4int j ) { return rr2[i][j]; }; + + G4double GetRHA( G4int i , G4int j ) { return rha[i][j]; }; + G4double GetRHE( G4int i , G4int j ) { return rhe[i][j]; }; + G4ThreeVector GetFFr( G4int i ) { return ffr[i]; }; + G4ThreeVector GetFFp( G4int i ) { return ffp[i]; }; + + std::vector< G4double > GetLocalDensity(); + std::vector< G4double > GetDepthOfPotential(); + + private: + G4double calPauliBlockingFactor( G4int ); + + G4QMDSystem* system; + + G4double rclds; + + G4double hbc , rho0; + G4double epsx , epscl; + + G4double cpc; + + G4int icoul, irelcr; + G4double gamm, c0, c3, cs, cl, wl; + G4double c0w, c3w, clw, c0sw; + + G4double c0g,c3g,csg,pag; + + G4double cpw,cph; + + // 2 Body Quantities + std::vector < std::vector < G4double > > rr2; + std::vector < std::vector < G4double > > pp2; + std::vector < std::vector < G4double > > rbij; + + // Gauss + std::vector < std::vector < G4double > > rha; + + // Coulomb + std::vector < std::vector < G4double > > rhe; + std::vector < std::vector < G4double > > rhc; + + std::vector < G4ThreeVector > ffr; + std::vector < G4ThreeVector > ffp; + std::vector < G4double > rh3d; + +}; + +#endif diff --git a/source/processes/hadronic/models/qmd/include/G4QMDNucleus.hh b/source/processes/hadronic/models/qmd/include/G4QMDNucleus.hh new file mode 100644 index 0000000000..1531077369 --- /dev/null +++ b/source/processes/hadronic/models/qmd/include/G4QMDNucleus.hh @@ -0,0 +1,84 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// ------------------------------------------------------------------- +// GEANT4 Class file +// +// +// File name: G4QMDNucleus.hh +// +// Author: Koi, Tatsumi (tkoi@slac.stanford.edu) +// +// Creation date: 3 April 2007 +// ------------------------------------------------------------------- + +#ifndef G4QMDNucleus_hh +#define G4QMDNucleus_hh + +#include "G4QMDSystem.hh" +#include "G4QMDParameters.hh" + +class G4QMDNucleus : public G4QMDSystem +{ + public: + G4QMDNucleus(); + ~G4QMDNucleus(); + + G4LorentzVector Get4Momentum(); + + // Number of Nucleons (Proton or Neutron) + G4int GetMassNumber(); + + // Number of Protons + G4int GetAtomicNumber(); + + void CalEnergyAndAngularMomentumInCM(); + + // rest mass from G4NucleiPropertiesTable + G4double GetNuclearMass(); + + void SetTotalPotential( G4double x ){ potentialEnergy = x; }; + G4double GetExcitationEnergy(){ return excitationEnergy; }; + + G4int GetAngularMomentum(){ return jj; }; + + private: + + G4double hbc; + + std::vector < G4ThreeVector > rcm, pcm; + std::vector < G4double > es; + G4int jj; + + G4double potentialEnergy; + G4double excitationEnergy; + G4double bindingEnergy; + + G4double kineticEnergyPerNucleon; + //G4double bindingEnergyPerNucleon; + //G4double potentialEnergyPerNucleon; +}; + +#endif diff --git a/source/processes/hadronic/models/qmd/include/G4QMDParameters.hh b/source/processes/hadronic/models/qmd/include/G4QMDParameters.hh new file mode 100644 index 0000000000..746027d5a2 --- /dev/null +++ b/source/processes/hadronic/models/qmd/include/G4QMDParameters.hh @@ -0,0 +1,101 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// ------------------------------------------------------------------- +// GEANT4 Class file +// +// +// File name: G4QMDParameters.hh +// +// Author: Koi, Tatsumi (tkoi@slac.stanford.edu) +// +// Creation date: 12 May 2007 +// ----------------------------------------------------------------------------- + +#ifndef G4QMDParameters_hh +#define G4QMDParameters_hh + +#include "globals.hh" + +class G4QMDParameters +{ + static G4QMDParameters* parameters; + + G4QMDParameters(); + public: + ~G4QMDParameters(); + static G4QMDParameters* GetInstance() + { + if ( parameters == NULL ) parameters = new G4QMDParameters(); + return parameters; + } + + + // GroundStateNucleus + G4double Get_wl() { return wl; }; + G4double Get_cl() { return cl; }; + G4double Get_hbc() { return hbc; }; + G4double Get_rho0() { return rho0; }; + G4double Get_gamm() { return gamm; }; + G4double Get_cpw() { return cpw; }; + G4double Get_cph() { return cph; }; + G4double Get_epsx() { return epsx; }; + G4double Get_cpc() { return cpc; }; + G4double Get_cs() { return cs; }; + G4double Get_c0() { return c0; }; + G4double Get_c0p() { return c0p; }; + G4double Get_clp() { return clp; }; + G4double Get_c3() { return c3; }; + G4double Get_c3p() { return c3p; }; + G4double Get_csp() { return csp; }; + G4double Get_cdp() { return cdp; }; + + protected: + G4double wl; + G4double cl; + G4double hbc; + G4double rho0; + G4double gamm; + +/* + G4double rho0; + G4double t0; + + G4double aaa; + +*/ + // MeanField + G4double c0, c3, cs; + + // GroundStateNucleus + G4double cpw; + G4double cph; + G4double epsx; + G4double cpc; + G4double c0p , clp , c3p , csp , cdp; + +}; + +#endif diff --git a/source/processes/hadronic/models/qmd/include/G4QMDParticipant.hh b/source/processes/hadronic/models/qmd/include/G4QMDParticipant.hh new file mode 100644 index 0000000000..1cad26514b --- /dev/null +++ b/source/processes/hadronic/models/qmd/include/G4QMDParticipant.hh @@ -0,0 +1,86 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// ------------------------------------------------------------------- +// GEANT4 Class file +// +// +// File name: G4QMDParticipant.hh +// +// Author: Koi, Tatsumi (tkoi@slac.stanford.edu) +// +// Creation date: 29 March 2007 +// ----------------------------------------------------------------------------- + +#ifndef G4QMDParticipant_hh +#define G4QMDParticipant_hh + +#include "G4ParticleDefinition.hh" +#include "G4ThreeVector.hh" +#include "G4LorentzVector.hh" + +class G4QMDParticipant +{ + public: + // momentum position + G4QMDParticipant( G4ParticleDefinition* , G4ThreeVector , G4ThreeVector ); + ~G4QMDParticipant(); + + void SetDefinition( G4ParticleDefinition* pd ) { definition = pd; }; + G4ParticleDefinition* GetDefinition() { return definition; }; + + void SetPosition( G4ThreeVector r ) { position = r; }; + G4ThreeVector GetPosition() { return position; }; + + void SetMomentum( G4ThreeVector p ) { momentum = p; }; + G4ThreeVector GetMomentum() { return momentum; }; + + G4double GetMass() { return definition->GetPDGMass()/GeV; }; + + G4LorentzVector Get4Momentum(); + + G4double GetKineticEnergy() { return Get4Momentum().e() - GetMass(); }; + + G4int GetBaryonNumber() { return definition->GetBaryonNumber(); }; + G4int GetNuc() { return definition->GetBaryonNumber(); }; + + G4int GetChargeInUnitOfEplus() { return int ( definition->GetPDGCharge()/eplus ); }; + + void UnsetInitialMark() { projectile = false; target = false; } + void SetProjectile() { projectile = true; } + void SetTarget() { target = true; } + G4bool IsThisProjectile() { return projectile; } + G4bool IsThisTarget() { return target; } + + private: + G4ParticleDefinition* definition; + G4ThreeVector momentum; + G4ThreeVector position; + + G4bool projectile; + G4bool target; +}; + +#endif diff --git a/source/processes/hadronic/models/qmd/include/G4QMDReaction.hh b/source/processes/hadronic/models/qmd/include/G4QMDReaction.hh new file mode 100644 index 0000000000..8a3cdc2449 --- /dev/null +++ b/source/processes/hadronic/models/qmd/include/G4QMDReaction.hh @@ -0,0 +1,106 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// ------------------------------------------------------------------- +// GEANT4 Class file +// +// +// File name: G4QMDReaction.hh +// +// Author: Koi, Tatsumi (tkoi@slac.stanford.edu) +// +// Creation date: 02 April 2007 +// ----------------------------------------------------------------------------- + +#ifndef G4QMDReaction_hh +#define G4QMDReaction_hh + +#include "G4QMDSystem.hh" +#include "G4QMDCollision.hh" +#include "G4QMDMeanField.hh" +#include "G4QMDParticipant.hh" + +#include "G4IonsShenCrossSection.hh" +#include "G4GeneralSpaceNNCrossSection.hh" + +#include "G4HadronicInteraction.hh" + +#include "G4Evaporation.hh" +#include "G4ExcitationHandler.hh" +//#include "G4PreCompoundModel.hh" + +class G4QMDReaction : public G4HadronicInteraction +{ + public: + G4QMDReaction(); + ~G4QMDReaction(); + + std::vector< G4QMDSystem* > GetFinalStates(); + + + G4HadFinalState *ApplyYourself( const G4HadProjectile &aTrack, G4Nucleus & targetNucleus ); + + private: + void setInitialCondition( G4QMDSystem* , G4QMDSystem* ); + + G4QMDMeanField* meanField; + + G4QMDCollision* collision; + + void doPropagation(); + void doCollision(); + std::vector< G4QMDSystem* > doClusterJudgment(); + + G4QMDSystem* system; + G4double deltaT; + G4int maxTime; + + G4Evaporation* evaporation; + G4ExcitationHandler* excitationHandler; +// G4VPreCompoundModel* preco; + + + // b pd_proj pd_targ z_p a_p z_t a_t plab elab +// G4double offSetOfCollision( G4double , G4ParticleDefinition* , G4ParticleDefinition* , G4int , G4int , G4int , G4int , G4double , G4double ); + // b pd_proj pd_targ plab elab bmax boostToCM + void calcOffSetOfCollision( G4double , G4ParticleDefinition* , G4ParticleDefinition* , G4double , G4double , G4double , G4ThreeVector ); + G4double coulomb_collision_gamma_proj; + G4double coulomb_collision_rx_proj; + G4double coulomb_collision_rz_proj; + G4double coulomb_collision_px_proj; + G4double coulomb_collision_pz_proj; + + G4double coulomb_collision_gamma_targ; + G4double coulomb_collision_rx_targ; + G4double coulomb_collision_rz_targ; + G4double coulomb_collision_px_targ; + G4double coulomb_collision_pz_targ; + + G4IonsShenCrossSection shenXS; + G4IonsShenCrossSection genspaXS; + +}; + +#endif diff --git a/source/processes/hadronic/models/qmd/include/G4QMDSystem.hh b/source/processes/hadronic/models/qmd/include/G4QMDSystem.hh new file mode 100644 index 0000000000..097e2fcdd3 --- /dev/null +++ b/source/processes/hadronic/models/qmd/include/G4QMDSystem.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +// ------------------------------------------------------------------- +// GEANT4 Class file +// +// +// File name: G4QMDSystem.hh +// +// Author: Koi, Tatsumi (tkoi@slac.stanford.edu) +// +// Creation date: 29 March 2007 +// ----------------------------------------------------------------------------- + +#ifndef G4QMDSystem_hh +#define G4QMDSystem_hh + +#include "G4QMDParticipant.hh" + +class G4QMDSystem +{ + public: + G4QMDSystem(); + ~G4QMDSystem(); + + void SetParticipant( G4QMDParticipant* particle ) { participants.push_back ( particle ); }; + void SetSystem ( G4QMDSystem* , G4ThreeVector , G4ThreeVector ); + + void SubtractSystem ( G4QMDSystem* ); + + void DeleteParticipant( G4int i ) { participants.erase( std::find ( participants.begin() , participants.end() , participants[ i ] ) ); }; + + G4int GetTotalNumberOfParticipant() { return participants.size(); }; + + G4QMDParticipant* GetParticipant( G4int i ) { return participants[i]; }; + + void IncrementCollisionCounter() { numberOfCollision++; }; + G4int GetNOCollision() { return numberOfCollision; }; + + void ShowParticipants(); + + void Clear(); + + protected: + std::vector< G4QMDParticipant* > participants; + + private: + G4int numberOfCollision; +}; + +#endif diff --git a/source/processes/hadronic/models/qmd/src/G4QMDCollision.cc b/source/processes/hadronic/models/qmd/src/G4QMDCollision.cc new file mode 100644 index 0000000000..34b01a82ce --- /dev/null +++ b/source/processes/hadronic/models/qmd/src/G4QMDCollision.cc @@ -0,0 +1,770 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#include "G4QMDCollision.hh" +#include "G4ParticleDefinition.hh" +#include "G4Scatterer.hh" +#include "Randomize.hh" +#include "G4PionZero.hh" + +G4QMDCollision::G4QMDCollision() +: deltar ( 4 ) +, bcmax0 ( 1.323142 ) // NN maximum impact parameter +, bcmax1 ( 2.523 ) // others maximum impact parameter +, sig0 ( 55 ) // NN cross section +, sig1 ( 200 ) // others cross section +, epse ( 0.0001 ) +{ + theScatterer = new G4Scatterer(); +} + + + +G4QMDCollision::~G4QMDCollision() +{ + delete theScatterer; +} + + +void G4QMDCollision::CalKinematicsOfBinaryCollisions() +{ + + + G4int n = theSystem->GetTotalNumberOfParticipant(); + +//071101 + for ( G4int i = 0 ; i < n ; i++ ) + { + //std::cout << i << " " << theSystem->GetParticipant( i )->GetDefinition()->GetParticleName() << " " << theSystem->GetParticipant( i )->GetPosition() << std::endl; + if ( theSystem->GetParticipant( i )->GetDefinition()->IsShortLived() ) + { + G4ParticleDefinition* pd0 = theSystem->GetParticipant( i )->GetDefinition(); + G4ThreeVector p0 = theSystem->GetParticipant( i )->GetMomentum(); + G4ThreeVector r0 = theSystem->GetParticipant( i )->GetPosition(); + + G4LorentzVector p40 = theSystem->GetParticipant( i )->Get4Momentum(); + + G4double epot = theMeanField->GetTotalPotential(); + G4double eini = epot + p40.e(); + + G4int n0 = theSystem->GetTotalNumberOfParticipant(); + G4int i0 = 0; +G4bool isThisEnergyOK = false; + for ( G4int ii = 0 ; ii < 4 ; ii++ ) +{ + + //G4LorentzVector p4 = theSystem->GetParticipant( i )->Get4Momentum(); + G4LorentzVector p400 = p40; + + p400 *= GeV; + //G4KineticTrack kt( theSystem->GetParticipant( i )->GetDefinition() , 0.0 , (theSystem->GetParticipant( i )->GetPosition())*fermi , p4 ); + G4KineticTrack kt( pd0 , 0.0 , r0*fermi , p400 ); +// std::cout << "G4KineticTrack " << i << " " << kt.GetDefinition()->GetParticleName() << kt.GetPosition() << std::endl; + G4KineticTrackVector* secs = NULL; + secs = kt.Decay(); + G4int id = 0; + G4double et = 0; + if ( secs ) + { + for ( G4KineticTrackVector::iterator it + = secs->begin() ; it != secs->end() ; it++ ) + { +// std::cout << "G4KineticTrack" +// << " " << (*it)->GetDefinition()->GetParticleName() +// << " " << (*it)->Get4Momentum() +// << " " << (*it)->GetPosition()/fermi +// << std::endl; + if ( id == 0 ) + { + theSystem->GetParticipant( i )->SetDefinition( (*it)->GetDefinition() ); + theSystem->GetParticipant( i )->SetMomentum( (*it)->Get4Momentum().v()/GeV ); + theSystem->GetParticipant( i )->SetPosition( (*it)->GetPosition()/fermi ); + //theMeanField->Cal2BodyQuantities( i ); + et += (*it)->Get4Momentum().e()/GeV; + } + if ( id > 0 ) + { + // Append end; + theSystem->SetParticipant ( new G4QMDParticipant ( (*it)->GetDefinition() , (*it)->Get4Momentum().v()/GeV , (*it)->GetPosition()/fermi ) ); + et += (*it)->Get4Momentum().e()/GeV; + if ( id > 1 ) + { + // std::cout << "NAGISA id >2; id= " << id << std::endl; + } + } + id++; + + delete *it; + } + theMeanField->SetSystem ( theSystem ); + i0 = id-1; // 0 enter to i + } + +// EnergyCheck + + G4double epot = theMeanField->GetTotalPotential(); + G4double efin = epot + et; + //std::cout << std::abs ( eini - efin ) - epse << std::endl; +// std::cout << std::abs ( eini - efin ) - epse*10 << std::endl; +//071031 +// *10 TK + if ( std::abs ( eini - efin ) < epse*10 ) + { + // Energy OK +// std::cout << "Decay Succeeded Energy OK" << std::endl; + isThisEnergyOK = true; + break; + } + else + { + for ( G4int i0i = 0 ; i0i < id-1 ; i0i++ ) + { +// std::cout << "Decay Energitically Blocked deleteing " << i0i+n0 << std::endl; + theSystem->DeleteParticipant( i0i+n0 ); + } + } +} + +// Pauli Check + if ( isThisEnergyOK == true ) + { +// if ( theMeanField->IsPauliBlocked ( i ) != true ) + { + bool allOK = true; + for ( G4int i0i = 0 ; i0i < i0 ; i0i++ ) + { + if ( theMeanField->IsPauliBlocked ( i0i+n0 ) == true ) + { + allOK = false; + break; + } + } + +// if ( allOK ) std::cout << "Decay Succeeded" << std::endl; + if ( allOK ) continue; //Do not Pauli Blocked + } + } +// + +// std::cout << "Decay Blocked" << std::endl; + theSystem->GetParticipant( i )->SetDefinition( pd0 ); + theSystem->GetParticipant( i )->SetPosition( r0 ); + theSystem->GetParticipant( i )->SetMomentum( p0 ); + + if ( isThisEnergyOK == true ) + { + for ( G4int i0i = 0 ; i0i < i0 ; i0i++ ) + { +// std::cout << "Decay Blocked deleteing " << i0i+n0 << std::endl; + theSystem->DeleteParticipant( i0i+n0 ); + } + } + + } + } +//071101 + + + n = theSystem->GetTotalNumberOfParticipant(); + //std::cout << "Collision n " << n << std::endl; + + std::vector< G4bool > isCollided ( n , false ); + + for ( G4int i = 1 ; i < n ; i++ ) + { + + //std::cout << "Collision i " << i << std::endl; + + G4ThreeVector ri = theSystem->GetParticipant( i )->GetPosition(); + G4LorentzVector p4i = theSystem->GetParticipant( i )->Get4Momentum(); + G4double rmi = theSystem->GetParticipant( i )->GetMass(); + G4ParticleDefinition* pdi = theSystem->GetParticipant( i )->GetDefinition(); + + //std::cout << " p4i00 " << p4i << std::endl; + for ( G4int j = 0 ; j < i ; j++ ) + { +// std::cout << "Collision " << i << " " << j << std::endl; + +/* + std::cout << "Collision " << i << " " << theSystem->GetParticipant( i )->IsThisProjectile() << std::endl; + std::cout << "Collision " << j << " " << theSystem->GetParticipant( j )->IsThisProjectile() << std::endl; + std::cout << "Collision " << i << " " << theSystem->GetParticipant( i )->IsThisTarget() << std::endl; + std::cout << "Collision " << j << " " << theSystem->GetParticipant( j )->IsThisTarget() << std::endl; +*/ + + // Only 1 Collision allowed for each particle in a time step. + if ( isCollided[ i ] == true ) continue; + if ( isCollided[ j ] == true ) continue; + + // Do not allow collision between nucleons in target/projectile til its first collision. + if ( theSystem->GetParticipant( i )->IsThisProjectile() ) + { + if ( theSystem->GetParticipant( j )->IsThisProjectile() ) continue; + } + else if ( theSystem->GetParticipant( i )->IsThisTarget() ) + { + if ( theSystem->GetParticipant( j )->IsThisTarget() ) continue; + } + + + G4ThreeVector rj = theSystem->GetParticipant( j )->GetPosition(); + G4LorentzVector p4j = theSystem->GetParticipant( j )->Get4Momentum(); + G4double rmj = theSystem->GetParticipant( j )->GetMass(); + G4ParticleDefinition* pdj = theSystem->GetParticipant( j )->GetDefinition(); + + G4double rr2 = theMeanField->GetRR2( i , j ); + +// Here we assume elab (beam momentum less than 5 GeV/n ) + if ( rr2 > deltar*deltar ) continue; + + G4double s = (p4i+p4j)*(p4i+p4j); + + G4double srt = std::sqrt ( s ); + + G4double cutoff = 0.0; + G4double bcmax = 0.0; + G4double sig = 0.0; + + if ( rmi < 0.94 && rmj < 0.94 ) + { +// nucleon or pion case + cutoff = rmi + rmj + 0.02; + bcmax = bcmax0; + sig = sig0; + } + else + { + cutoff = rmi + rmj; + bcmax = bcmax1; + sig = sig1; + } + + //std::cout << "Collision cutoff " << i << " " << j << " " << cutoff << std::endl; + if ( srt < cutoff ) continue; + + G4ThreeVector dr = ri - rj; + G4double rsq = dr*dr; + + G4double pij = p4i*p4j; + G4double pidr = p4i.vect()*dr; + G4double pjdr = p4j.vect()*dr; + + G4double aij = 1.0 - ( rmi*rmj /pij ) * ( rmi*rmj /pij ); + G4double bij = pidr / rmi - pjdr*rmi/pij; + G4double cij = rsq + ( pidr / rmi ) * ( pidr / rmi ); + G4double brel = std::sqrt ( std::abs ( cij - bij*bij/aij ) ); + + if ( brel > bcmax ) continue; + //std::cout << "collisions3 " << std::endl; + + G4double bji = -pjdr/rmj + pidr * rmj /pij; + + G4double ti = ( pidr/rmi - bij / aij ) * p4i.e() / rmi; + G4double tj = (-pjdr/rmj - bji / aij ) * p4j.e() / rmj; + + G4double deltaT = 0.0; + deltaT = 1.0; // TK + +/* + std::cout << "collisions4 p4i " << p4i << std::endl; + std::cout << "collisions4 ri " << ri << std::endl; + std::cout << "collisions4 p4j " << p4j << std::endl; + std::cout << "collisions4 rj " << rj << std::endl; + std::cout << "collisions4 dr " << dr << std::endl; + std::cout << "collisions4 pij " << pij << std::endl; + std::cout << "collisions4 aij " << aij << std::endl; + std::cout << "collisions4 bij bji " << bij << " " << bji << std::endl; + std::cout << "collisions4 pidr pjdr " << pidr << " " << pjdr << std::endl; + std::cout << "collisions4 p4i.e() p4j.e() " << p4i.e() << " " << p4j.e() << std::endl; + std::cout << "collisions4 rmi rmj " << rmi << " " << rmj << std::endl; + std::cout << "collisions4 " << ti << " " << tj << std::endl; +*/ + if ( std::abs ( ti + tj ) > deltaT ) continue; + //std::cout << "collisions4 " << std::endl; + + G4ThreeVector beta = ( p4i + p4j ).boostVector(); + + G4LorentzVector p = p4i; + G4LorentzVector p4icm = p.boost( p.findBoostToCM ( p4j ) ); + G4ThreeVector pcm = p4icm.vect(); + + G4double prcm = pcm.mag(); + + if ( prcm <= 0.00001 ) continue; + //std::cout << "collisions5 " << std::endl; + + G4bool energetically_forbidden = !( CalFinalStateOfTheBinaryCollision ( i , j ) ); // Use Geant4 Collision Library + //G4bool energetically_forbidden = !( CalFinalStateOfTheBinaryCollisionJQMD ( sig , cutoff , pcm , prcm , srt, beta , gamma , i , j ) ); // JQMD Elastic + + G4bool pauli_blocked = false; + if ( energetically_forbidden != true ) + { + if ( theMeanField->IsPauliBlocked ( i ) == true || theMeanField->IsPauliBlocked ( j ) == true ) + { + pauli_blocked = true; + //std::cout << "G4QMDRESULT Collsion Pauli Blocked " << std::endl; + } + } + else + { + //std::cout << "G4QMDRESULT Collsion Blocked " << std::endl; + } + +/* + std::cout << "G4QMDRESULT Collsion initial p4 i and j " + << p4i << " " << p4j + << std::endl; +*/ + + + if ( energetically_forbidden == true || pauli_blocked == true ) + { +// Collsion not allowed then re enter orginal participants +// Now only momentum, becasuse we only consider elastic scattering of nucleons + + theSystem->GetParticipant( i )->SetMomentum( p4i.vect() ); + theSystem->GetParticipant( i )->SetDefinition( pdi ); + theSystem->GetParticipant( i )->SetPosition( ri ); + theSystem->GetParticipant( j )->SetMomentum( p4j.vect() ); + theSystem->GetParticipant( j )->SetDefinition( pdj ); + theSystem->GetParticipant( j )->SetPosition( rj ); + + } + else + { +// Collsion allowed (really happened) + + // Unset Projectile/Target flag + theSystem->GetParticipant( i )->UnsetInitialMark(); + theSystem->GetParticipant( j )->UnsetInitialMark(); + + isCollided[ i ] = true; + isCollided[ j ] = true; + + theSystem->IncrementCollisionCounter(); + +/* + std::cout << "G4QMDRESULT Collsion Really Happened between " + << i << " and " << j + << std::endl; + std::cout << "G4QMDRESULT Collsion initial p4 i and j " + << p4i << " " << p4j + << std::endl; + std::cout << "G4QMDRESULT Collsion after p4 i and j " + << theSystem->GetParticipant( i )->Get4Momentum() + << " " + << theSystem->GetParticipant( j )->Get4Momentum() + << std::endl; + std::cout << "G4QMDRESULT Collsion Diff " + << p4i + p4j - theSystem->GetParticipant( i )->Get4Momentum() - theSystem->GetParticipant( j )->Get4Momentum() + << std::endl; + std::cout << "G4QMDRESULT Collsion initial r i and j " + << ri << " " << rj + << std::endl; + std::cout << "G4QMDRESULT Collsion after r i and j " + << theSystem->GetParticipant( i )->GetPosition() + << " " + << theSystem->GetParticipant( j )->GetPosition() + << std::endl; +*/ + + } + +// theMeanField + + } + } + +//071106 + n = theSystem->GetTotalNumberOfParticipant(); + G4bool isThisModefied = false; + for ( G4int i = 0 ; i < n ; i++ ) + { + if ( theSystem->GetParticipant( i )->GetDefinition() == G4PionZero::PionZero() ) + { + if ( theSystem->GetParticipant( i )->GetPosition().mag() > 1.0e9 ) + { +// std::cout << "Deleting " << i << " " << theSystem->GetParticipant( i )->GetPosition().mag() << std::endl; + theSystem->DeleteParticipant( i ); + isThisModefied = true; + } + } + } + if ( isThisModefied == true ) theMeanField->SetSystem ( theSystem ); +//071106 + +} + + + +G4bool G4QMDCollision::CalFinalStateOfTheBinaryCollision( G4int i , G4int j ) +{ + + //G4cout << "CalFinalStateOfTheBinaryCollision " << G4endl; + + G4bool result = true; + + G4LorentzVector p4i = theSystem->GetParticipant( i )->Get4Momentum(); + G4LorentzVector p4j = theSystem->GetParticipant( j )->Get4Momentum(); + +//071031 + // will use KineticTrack + G4LorentzVector p4ix = p4i*GeV; + G4LorentzVector p4jx = p4j*GeV; + G4ThreeVector rix = (theSystem->GetParticipant( i )->GetPosition())*fermi; + G4ThreeVector rjx = (theSystem->GetParticipant( j )->GetPosition())*fermi; +//071031 + + G4double epot = theMeanField->GetTotalPotential(); + + G4double eini = epot + p4i.e() + p4j.e(); + + +//071031 + G4ParticleDefinition* pdi0 =theSystem->GetParticipant( i )->GetDefinition(); + G4ParticleDefinition* pdj0 =theSystem->GetParticipant( j )->GetDefinition(); + G4ThreeVector ri0 =(theSystem->GetParticipant( i )->GetPosition())*fermi; + G4ThreeVector rj0 =(theSystem->GetParticipant( j )->GetPosition())*fermi; + + for ( G4int iitry = 0 ; iitry < 4 ; iitry++ ) + { + + G4KineticTrack kt1( pdi0 , 0.0 , ri0 , p4ix ); + G4KineticTrack kt2( pdj0 , 0.0 , rj0 , p4jx ); + G4LorentzVector p4ix_new; + G4LorentzVector p4jx_new; + G4KineticTrackVector* secs = NULL; + secs = theScatterer->Scatter( kt1 , kt2 ); + + //std::cout << "G4QMDSCATTERER BEFORE " << kt1.GetDefinition()->GetParticleName() << " " << kt1.Get4Momentum()/GeV << " " << kt1.GetPosition()/fermi << std::endl; + //std::cout << "G4QMDSCATTERER BEFORE " << kt2.GetDefinition()->GetParticleName() << " " << kt2.Get4Momentum()/GeV << " " << kt2.GetPosition()/fermi << std::endl; + //std::cout << "THESCATTERER " << theScatterer->GetCrossSection ( kt1 , kt2 )/millibarn << " " << elastic << " " << sig << std::endl; + if ( secs ) + { + G4int iti = 0; + if ( secs->size() == 2 ) + { + for ( G4KineticTrackVector::iterator it + = secs->begin() ; it != secs->end() ; it++ ) + { + if ( iti == 0 ) + { + theSystem->GetParticipant( i )->SetDefinition( (*it)->GetDefinition() ); + p4ix_new = (*it)->Get4Momentum()/GeV; + //std::cout << "THESCATTERER " << (*it)->GetDefinition()->GetParticleName() << std::endl; + theSystem->GetParticipant( i )->SetMomentum( p4ix_new.v() ); + } + if ( iti == 1 ) + { + theSystem->GetParticipant( j )->SetDefinition( (*it)->GetDefinition() ); + p4jx_new = (*it)->Get4Momentum()/GeV; + //std::cout << "THESCATTERER " << p4jx_new.e()-p4jx_new.m() << std::endl; + theSystem->GetParticipant( j )->SetMomentum( p4jx_new.v() ); + } + //std::cout << "G4QMDSCATTERER AFTER " << (*it)->GetDefinition()->GetParticleName() << " " << (*it)->Get4Momentum()/GeV << std::endl; + iti++; + } + } + else + { + //std::cout << "NAGISA pion absrorption " << secs->front()->GetDefinition()->GetParticleName() << std::endl; + //secs->front()->Decay(); + theSystem->GetParticipant( i )->SetDefinition( secs->front()->GetDefinition() ); + p4ix_new = secs->front()->Get4Momentum()/GeV; + theSystem->GetParticipant( i )->SetMomentum( p4ix_new.v() ); + + //std::cout << "THESCATTERER " << (*it)->GetDefinition()->GetParticleName() << std::endl; + p4jx_new( 0 ); + //theSystem->GetParticipant( j )->SetDefinition( G4Gamma::Gamma() ); + //theSystem->GetParticipant( j )->SetDefinition( G4Neutron::Neutron() ); + theSystem->GetParticipant( j )->SetDefinition( G4PionZero::PionZero() ); + theSystem->GetParticipant( j )->SetMomentum( G4ThreeVector( G4UniformRand() )*eV ); + theSystem->GetParticipant( j )->SetPosition( G4ThreeVector( 1000, 1000, 1000 )*km ); + + } + + if ( secs->size() > 2 ) std::cout << "NAGISA secs size > 2; " << secs->size() << std::endl; + + // deleteing KineticTrack + for ( G4KineticTrackVector::iterator it + = secs->begin() ; it != secs->end() ; it++ ) + { + delete *it; + } + } +//071031 + + theMeanField->Cal2BodyQuantities( i ); + theMeanField->Cal2BodyQuantities( j ); + + epot = theMeanField->GetTotalPotential(); + + G4double efin = epot + p4ix_new.e() + p4jx_new.e(); + + //std::cout << "Collision NEW epot " << i << " " << j << " " << epot << " " << std::abs ( eini - efin ) - epse << std::endl; + +/* + std::cout << "Collision efin " << i << " " << j << " " << efin << std::endl; + std::cout << "Collision " << i << " " << j << " " << std::abs ( eini - efin ) << " " << epse << std::endl; + std::cout << "Collision " << std::abs ( eini - efin ) << " " << epse << std::endl; +*/ + +//071031 + if ( std::abs ( eini - efin ) < epse ) + { + // Collison OK + //std::cout << "collisions6" << std::endl; + //std::cout << "collisions before " << p4i << " " << p4j << std::endl; + //std::cout << "collisions after " << theSystem->GetParticipant( i )->Get4Momentum() << " " << theSystem->GetParticipant( j )->Get4Momentum() << std::endl; + //std::cout << "collisions dif " << ( p4i + p4j ) - ( theSystem->GetParticipant( i )->Get4Momentum() + theSystem->GetParticipant( j )->Get4Momentum() ) << std::endl; + //std::cout << "collisions before " << rix/fermi << " " << rjx/fermi << std::endl; + //std::cout << "collisions after " << theSystem->GetParticipant( i )->GetPosition() << " " << theSystem->GetParticipant( j )->GetPosition() << std::endl; + } +//071031 + + if ( std::abs ( eini - efin ) < epse ) return result; // Collison OK + + } + +// Energetically forbidden collision + result = false; + + return result; + +} + + + +G4bool G4QMDCollision::CalFinalStateOfTheBinaryCollisionJQMD( G4double sig , G4double cutoff , G4ThreeVector pcm , G4double prcm , G4double srt , G4ThreeVector beta , G4double gamma , G4int i , G4int j ) +{ + + //G4cout << "CalFinalStateOfTheBinaryCollisionJQMD" << G4endl; + + G4bool result = true; + + G4LorentzVector p4i = theSystem->GetParticipant( i )->Get4Momentum(); + G4double rmi = theSystem->GetParticipant( i )->GetMass(); + G4int zi = theSystem->GetParticipant( i )->GetChargeInUnitOfEplus(); + + G4LorentzVector p4j = theSystem->GetParticipant( j )->Get4Momentum(); + G4double rmj = theSystem->GetParticipant( j )->GetMass(); + G4int zj = theSystem->GetParticipant( j )->GetChargeInUnitOfEplus(); + + G4double pr = prcm; + + G4double c2 = pcm.z()/pr; + + G4double csrt = srt - cutoff; + + //G4double pri = prcm; + //G4double prf = sqrt ( 0.25 * srt*srt -rm2 ); + + G4double asrt = srt - rmi - rmj; + G4double pra = prcm; + + + + G4double elastic = 0.0; + + if ( zi == zj ) + { + if ( csrt < 0.4286 ) + { + elastic = 35.0 / ( 1. + csrt * 100.0 ) + 20.0; + } + else + { + elastic = ( - std::atan( ( csrt - 0.4286 ) * 1.5 - 0.8 ) + * 2. / pi + 1.0 ) * 9.65 + 7.0; + } + } + else + { + if ( csrt < 0.4286 ) + { + elastic = 28.0 / ( 1. + csrt * 100.0 ) + 27.0; + } + else + { + elastic = ( - std::atan( ( csrt - 0.4286 ) * 1.5 - 0.8 ) + * 2. / pi + 1.0 ) * 12.34 + 10.0; + } + } + +// std::cout << "Collision csrt " << i << " " << j << " " << csrt << std::endl; +// std::cout << "Collision elstic " << i << " " << j << " " << elastic << std::endl; + + +// std::cout << "Collision sig " << i << " " << j << " " << sig << std::endl; + if ( G4UniformRand() > elastic / sig ) + { + //std::cout << "Inelastic " << std::endl; + //std::cout << "elastic/sig " << elastic/sig << std::endl; + return result; + } + else + { + //std::cout << "Elastic " << std::endl; + } +// std::cout << "Collision ELSTIC " << i << " " << j << std::endl; + + + G4double as = std::pow ( 3.65 * asrt , 6 ); + G4double a = 6.0 * as / (1.0 + as); + G4double ta = -2.0 * pra*pra; + G4double x = G4UniformRand(); + G4double t1 = std::log( (1-x) * std::exp(2.*a*ta) + x ) / a; + G4double c1 = 1.0 - t1/ta; + + if( std::abs(c1) > 1.0 ) c1 = 2.0 * x - 1.0; + +/* + std::cout << "Collision as " << i << " " << j << " " << as << std::endl; + std::cout << "Collision a " << i << " " << j << " " << a << std::endl; + std::cout << "Collision ta " << i << " " << j << " " << ta << std::endl; + std::cout << "Collision x " << i << " " << j << " " << x << std::endl; + std::cout << "Collision t1 " << i << " " << j << " " << t1 << std::endl; + std::cout << "Collision c1 " << i << " " << j << " " << c1 << std::endl; +*/ + t1 = 2.0*pi*G4UniformRand(); +// std::cout << "Collision t1 " << i << " " << j << " " << t1 << std::endl; + G4double t2 = 0.0; + if ( pcm.x() == 0.0 && pcm.y() == 0 ) + { + t2 = 0.0; + } + else + { + t2 = std::atan2( pcm.y() , pcm.x() ); + } +// std::cout << "Collision t2 " << i << " " << j << " " << t2 << std::endl; + + G4double s1 = std::sqrt ( 1.0 - c1*c1 ); + G4double s2 = std::sqrt ( 1.0 - c2*c2 ); + + G4double ct1 = std::cos(t1); + G4double st1 = std::sin(t1); + + G4double ct2 = std::cos(t2); + G4double st2 = std::sin(t2); + + G4double ss = c2*s1*ct1 + s2*c1; + + pcm.setX( pr * ( ss*ct2 - s1*st1*st2) ); + pcm.setY( pr * ( ss*st2 + s1*st1*ct2) ); + pcm.setZ( pr * ( c1*c2 - s1*s2*ct1) ); + +// std::cout << "Collision pcm " << i << " " << j << " " << pcm << std::endl; + + G4double epot = theMeanField->GetTotalPotential(); + + G4double eini = epot + p4i.e() + p4j.e(); + G4double etwo = p4i.e() + p4j.e(); + +/* + std::cout << "Collision epot " << i << " " << j << " " << epot << std::endl; + std::cout << "Collision eini " << i << " " << j << " " << eini << std::endl; + std::cout << "Collision etwo " << i << " " << j << " " << etwo << std::endl; +*/ + + + for ( G4int itry = 0 ; itry < 4 ; itry++ ) + { + + G4double eicm = std::sqrt ( rmi*rmi + pcm*pcm ); + G4double pibeta = pcm*beta; + + G4double trans = gamma * ( gamma * pibeta / ( gamma + 1 ) + eicm ); + + G4ThreeVector pi_new = beta*trans + pcm; + + G4double ejcm = std::sqrt ( rmj*rmj + pcm*pcm ); + trans = gamma * ( gamma * pibeta / ( gamma + 1 ) + ejcm ); + + G4ThreeVector pj_new = beta*trans - pcm; + +// +// Delete old +// Add new Particitipants +// +// Now only change momentum ( Beacuse we only have elastic sctter of nucleon +// In future Definition also will be change +// + + theSystem->GetParticipant( i )->SetMomentum( pi_new ); + theSystem->GetParticipant( j )->SetMomentum( pj_new ); + + G4double pi_new_e = (theSystem->GetParticipant( i )->Get4Momentum()).e(); + G4double pj_new_e = (theSystem->GetParticipant( j )->Get4Momentum()).e(); + + theMeanField->Cal2BodyQuantities( i ); + theMeanField->Cal2BodyQuantities( j ); + + epot = theMeanField->GetTotalPotential(); + + G4double efin = epot + pi_new_e + pj_new_e ; + + //std::cout << "Collision NEW epot " << i << " " << j << " " << epot << " " << std::abs ( eini - efin ) - epse << std::endl; +/* + std::cout << "Collision efin " << i << " " << j << " " << efin << std::endl; + std::cout << "Collision " << i << " " << j << " " << std::abs ( eini - efin ) << " " << epse << std::endl; + std::cout << "Collision " << std::abs ( eini - efin ) << " " << epse << std::endl; +*/ + +//071031 + if ( std::abs ( eini - efin ) < epse ) + { + // Collison OK + //std::cout << "collisions6" << std::endl; + //std::cout << "collisions before " << p4i << " " << p4j << std::endl; + //std::cout << "collisions after " << theSystem->GetParticipant( i )->Get4Momentum() << " " << theSystem->GetParticipant( j )->Get4Momentum() << std::endl; + //std::cout << "collisions dif " << ( p4i + p4j ) - ( theSystem->GetParticipant( i )->Get4Momentum() + theSystem->GetParticipant( j )->Get4Momentum() ) << std::endl; + //std::cout << "collisions before " << rix/fermi << " " << rjx/fermi << std::endl; + //std::cout << "collisions after " << theSystem->GetParticipant( i )->GetPosition() << " " << theSystem->GetParticipant( j )->GetPosition() << std::endl; + } +//071031 + + if ( std::abs ( eini - efin ) < epse ) return result; // Collison OK + + G4double cona = ( eini - efin + etwo ) / gamma; + G4double fac2 = 1.0 / ( 4.0 * cona*cona * pr*pr ) * + ( ( cona*cona - ( rmi*rmi + rmj*rmj ) )*( cona*cona - ( rmi*rmi + rmj*rmj ) ) + - 4.0 * rmi*rmi * rmj*rmj ); + + if ( fac2 > 0 ) + { + G4double fact = std::sqrt ( fac2 ); + pcm = fact*pcm; + } + + + } + +// Energetically forbidden collision + result = false; + + return result; + +} diff --git a/source/processes/hadronic/models/qmd/src/G4QMDGroundStateNucleus.cc b/source/processes/hadronic/models/qmd/src/G4QMDGroundStateNucleus.cc new file mode 100644 index 0000000000..488c7362f5 --- /dev/null +++ b/source/processes/hadronic/models/qmd/src/G4QMDGroundStateNucleus.cc @@ -0,0 +1,1034 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#include "G4QMDGroundStateNucleus.hh" + +#include "G4NucleiProperties.hh" + +#include "G4Proton.hh" +#include "G4Neutron.hh" + +#include "Randomize.hh" + +G4QMDGroundStateNucleus::G4QMDGroundStateNucleus( G4int z , G4int a ) +: r00 ( 1.124 ) // radius parameter for Woods-Saxon [fm] +, r01 ( 0.5 ) // radius parameter for Woods-Saxon +, saa ( 0.2 ) // diffuse parameter for initial Woods-Saxon shape +, rada ( 0.9 ) // cutoff parameter +, radb ( 0.3 ) // cutoff parameter +, dsam ( 1.5 ) // minimum distance for same particle [fm] +, ddif ( 1.0 ) // minimum distance for different particle +, epse ( 0.000001 ) // torelance for energy in [GeV] +{ + + //std::cout << " G4QMDGroundStateNucleus( G4int z , G4int a ) Begin " << z << " " << a << std::endl; + +// Hydrogen Case + if ( z == 1 && a == 1 ) + { + SetParticipant( new G4QMDParticipant( G4Proton::Proton() , G4ThreeVector( 0.0 ) , G4ThreeVector( 0.0 ) ) ); + return; + } + + dsam2 = dsam*dsam; + ddif2 = ddif*ddif; + + G4QMDParameters* parameters = G4QMDParameters::GetInstance(); + + hbc = parameters->Get_hbc(); + gamm = parameters->Get_gamm(); + cpw = parameters->Get_cpw(); + cph = parameters->Get_cph(); + epsx = parameters->Get_epsx(); + cpc = parameters->Get_cpc(); + + cdp = parameters->Get_cdp(); + c0p = parameters->Get_c0p(); + c3p = parameters->Get_c3p(); + csp = parameters->Get_csp(); + clp = parameters->Get_clp(); + + edepth = 0.0; + + for ( int i = 0 ; i < a ; i++ ) + { + + G4ParticleDefinition* pd; + + if ( i < z ) + { + pd = G4Proton::Proton(); + } + else + { + pd = G4Neutron::Neutron(); + } + + G4ThreeVector p( 0.0 ); + G4ThreeVector r( 0.0 ); + G4QMDParticipant* aParticipant = new G4QMDParticipant( pd , p , r ); + SetParticipant( aParticipant ); + + } + + G4double radious = r00 * std::pow ( double ( GetMassNumber() ) , 1.0/3.0 ); + + rt00 = radious - r01; + radm = radious - rada * ( gamm - 1.0 ) + radb; + rmax = 1.0 / ( 1.0 + std::exp ( -rt00/saa ) ); + + maxTrial = 1000; + meanfield = new G4QMDMeanField(); + meanfield->SetSystem( this ); + + //std::cout << "G4QMDGroundStateNucleus( G4int z , G4int a ) packNucleons Begin ( z , a ) ( " << z << ", " << a << " )" << std::endl; + packNucleons(); + //std::cout << "G4QMDGroundStateNucleus( G4int z , G4int a ) packNucleons End" << std::endl; + + delete meanfield; + +} + + + +void G4QMDGroundStateNucleus::packNucleons() +{ + + //std::cout << "G4QMDGroundStateNucleus::packNucleons" << std::endl; + + ebini = - ( G4NucleiPropertiesTable::GetBindingEnergy( GetAtomicNumber() , GetMassNumber() ) ) / GetMassNumber(); + + G4double ebin00 = ebini * 0.001; + + G4double ebin0 = 0.0; + G4double ebin1 = 0.0; + + if ( GetMassNumber() != 4 ) + { + ebin0 = ( ebini - 0.5 ) * 0.001; + ebin1 = ( ebini + 0.5 ) * 0.001; + } + else + { + ebin0 = ( ebini - 1.5 ) * 0.001; + ebin1 = ( ebini + 1.5 ) * 0.001; + } + +{ + G4int n0Try = 0; + G4bool isThisOK = false; + while ( n0Try < maxTrial ) + { + n0Try++; + //std::cout << "TKDB packNucleons n0Try " << n0Try << std::endl; + +// Sampling Position + + //std::cout << "TKDB Sampling Position " << std::endl; + + G4bool areThesePsOK = false; + G4int npTry = 0; + while ( npTry < maxTrial ) + { + //std::cout << "TKDB Sampling Position npTry " << npTry << std::endl; + npTry++; + G4int i = 0; + if ( samplingPosition( i ) ) + { + //std::cout << "packNucleons samplingPosition 0 succeed " << std::endl; + for ( i = 1 ; i < GetMassNumber() ; i++ ) + { + //std::cout << "packNucleons samplingPosition " << i << " trying " << std::endl; + if ( !( samplingPosition( i ) ) ) + { + //std::cout << "packNucleons samplingPosition " << i << " failed" << std::endl; + break; + } + } + if ( i == GetMassNumber() ) + { + //std::cout << "packNucleons samplingPosition all scucceed " << std::endl; + areThesePsOK = true; + break; + } + } + } + if ( areThesePsOK == false ) continue; + + //std::cout << "TKDB Sampling Position End" << std::endl; + +// Calculate Two-body quantities + + meanfield->Cal2BodyQuantities(); + std::vector< G4double > rho_a ( GetMassNumber() , 0.0 ); + std::vector< G4double > rho_s ( GetMassNumber() , 0.0 ); + std::vector< G4double > rho_c ( GetMassNumber() , 0.0 ); + + rho_l.resize ( GetMassNumber() , 0.0 ); + d_pot.resize ( GetMassNumber() , 0.0 ); + + for ( G4int i = 0 ; i < GetMassNumber() ; i++ ) + { + for ( G4int j = 0 ; j < GetMassNumber() ; j++ ) + { + + rho_a[ i ] += meanfield->GetRHA( j , i ); + G4int k = 0; + if ( participants[j]->GetDefinition() != participants[i]->GetDefinition() ) + { + k = 1; + } + + rho_s[ i ] += meanfield->GetRHA( j , i )*( 1.0 - 2.0 * k ); // OK? + + rho_c[ i ] += meanfield->GetRHE( j , i ); + } + + } + + for ( G4int i = 0 ; i < GetMassNumber() ; i++ ) + { + rho_l[i] = cdp * ( rho_a[i] + 1.0 ); + d_pot[i] = c0p * rho_a[i] + + c3p * std::pow ( rho_a[i] , gamm ) + + csp * rho_s[i] + + clp * rho_c[i]; + + //std::cout << "d_pot[i] " << i << " " << d_pot[i] << std::endl; + } + + +// Sampling Momentum + + //std::cout << "TKDB Sampling Momentum " << std::endl; + + phase_g.clear(); + phase_g.resize( GetMassNumber() , 0.0 ); + + //std::cout << "TKDB Sampling Momentum 1st " << std::endl; + G4bool isThis1stMOK = false; + G4int nmTry = 0; + while ( nmTry < maxTrial ) + { + nmTry++; + G4int i = 0; + if ( samplingMomentum( i ) ) + { + isThis1stMOK = true; + break; + } + } + if ( isThis1stMOK == false ) continue; + + //std::cout << "TKDB Sampling Momentum 2nd so on" << std::endl; + + G4bool areTheseMsOK = true; + nmTry = 0; + while ( nmTry < maxTrial ) + { + nmTry++; + G4int i = 0; + for ( i = 1 ; i < GetMassNumber() ; i++ ) + { + //std::cout << "TKDB packNucleons samplingMomentum try " << i << std::endl; + if ( !( samplingMomentum( i ) ) ) + { + //std::cout << "TKDB packNucleons samplingMomentum " << i << " failed" << std::endl; + areTheseMsOK = false; + break; + } + } + if ( i == GetMassNumber() ) + { + areTheseMsOK = true; + } + + break; + } + if ( areTheseMsOK == false ) continue; + +// Kill Angluar Momentum + + //std::cout << "TKDB Sampling Kill Angluar Momentum " << std::endl; + + killCMMotionAndAngularM(); + + +// Check Binding Energy + + //std::cout << "packNucleons Check Binding Energy Begin " << std::endl; + + G4double ekinal = 0.0; + for ( int i = 0 ; i < GetMassNumber() ; i++ ) + { + ekinal += participants[i]->GetKineticEnergy(); + } + + meanfield->Cal2BodyQuantities(); + + G4double totalPotentialE = meanfield->GetTotalPotential(); + G4double ebinal = ( totalPotentialE + ekinal ) / double ( GetMassNumber() ); + + //std::cout << "packNucleons totalPotentialE " << totalPotentialE << std::endl; + //std::cout << "packNucleons ebinal " << ebinal << std::endl; + //std::cout << "packNucleons ekinal " << ekinal << std::endl; + + if ( ebinal < ebin0 || ebinal > ebin1 ) + { + //std::cout << "packNucleons ebin0 " << ebin0 << std::endl; + //std::cout << "packNucleons ebin1 " << ebin1 << std::endl; + //std::cout << "packNucleons ebinal " << ebinal << std::endl; + //std::cout << "packNucleons Check Binding Energy Failed " << std::endl; + continue; + } + + //std::cout << "packNucleons Check Binding Energy End = OK " << std::endl; + + +// Energy Adujstment + + G4double dtc = 1.0; + G4double frg = -0.1; + G4double rdf0 = 0.5; + + G4double edif0 = ebinal - ebin00; + + G4double cfrc = 0.0; + if ( 0 < edif0 ) + { + cfrc = frg; + } + else + { + cfrc = -frg; + } + + G4int ifrc = 1; + + G4int neaTry = 0; + + G4bool isThisEAOK = false; + while ( neaTry < maxTrial ) + { + neaTry++; + + G4double edif = ebinal - ebin00; + + //std::cout << "TKDB edif " << edif << std::endl; + if ( std::abs ( edif ) < epse ) + { + + isThisEAOK = true; + //std::cout << "isThisEAOK " << isThisEAOK << std::endl; + break; + } + + G4int jfrc = 0; + if ( edif < 0.0 ) + { + jfrc = 1; + } + else + { + jfrc = -1; + } + + if ( jfrc != ifrc ) + { + cfrc = -rdf0 * cfrc; + dtc = rdf0 * dtc; + } + + if ( jfrc == ifrc && std::abs( edif0 ) < std::abs( edif ) ) + { + cfrc = -rdf0 * cfrc; + dtc = rdf0 * dtc; + } + + ifrc = jfrc; + edif0 = edif; + + meanfield->CalGraduate(); + + for ( int i = 0 ; i < GetMassNumber() ; i++ ) + { + G4ThreeVector ri = participants[i]->GetPosition(); + G4ThreeVector p_i = participants[i]->GetMomentum(); + + ri += dtc * ( meanfield->GetFFr(i) - cfrc * ( meanfield->GetFFp(i) ) ); + p_i += dtc * ( meanfield->GetFFp(i) + cfrc * ( meanfield->GetFFr(i) ) ); + + participants[i]->SetPosition( ri ); + participants[i]->SetMomentum( p_i ); + } + + ekinal = 0.0; + + for ( int i = 0 ; i < GetMassNumber() ; i++ ) + { + ekinal += participants[i]->GetKineticEnergy(); + } + + meanfield->Cal2BodyQuantities(); + totalPotentialE = meanfield->GetTotalPotential(); + + ebinal = ( totalPotentialE + ekinal ) / double ( GetMassNumber() ); + + } + //std::cout << "isThisEAOK " << isThisEAOK << std::endl; + if ( isThisEAOK == false ) continue; + + isThisOK = true; + //std::cout << "isThisOK " << isThisOK << std::endl; + break; + + } + + if ( isThisOK == false ) + { + std::cout << "GroundStateNucleus state cannot be created. Try again with another parameters." << std::endl; + } + + //std::cout << "packNucleons End" << std::endl; + return; + +} + + + + + +// Start packing +// position + + G4int n0Try = 0; + + while ( n0Try < maxTrial ) + { + if ( samplingPosition( 0 ) ) + { + G4int i = 0; + for ( i = 1 ; i < GetMassNumber() ; i++ ) + { + if ( !( samplingPosition( i ) ) ) + { + break; + } + } + if ( i == GetMassNumber() ) break; + } + n0Try++; + } + + if ( n0Try > maxTrial ) + { + std::cout << "GroundStateNucleus state cannot be created. Try again with another parameters." << std::endl; + return; + } + + meanfield->Cal2BodyQuantities(); + std::vector< G4double > rho_a ( GetMassNumber() , 0.0 ); + std::vector< G4double > rho_s ( GetMassNumber() , 0.0 ); + std::vector< G4double > rho_c ( GetMassNumber() , 0.0 ); + + rho_l.resize ( GetMassNumber() , 0.0 ); + d_pot.resize ( GetMassNumber() , 0.0 ); + + for ( int i = 0 ; i < GetMassNumber() ; i++ ) + { + for ( int j = 0 ; j < GetMassNumber() ; j++ ) + { + + rho_a[ i ] += meanfield->GetRHA( j , i ); + G4int k = 0; + if ( participants[i]->GetDefinition() != participants[i]->GetDefinition() ) + { + k = 1; + } + + rho_s[ i ] += meanfield->GetRHA( j , i )*( 1.0 - 2.0 * k ); // OK? + + rho_c[ i ] += meanfield->GetRHE( j , i ); + } + } + + for ( int i = 0 ; i < GetMassNumber() ; i++ ) + { + rho_l[i] = cdp * ( rho_a[i] + 1.0 ); + d_pot[i] = c0p * rho_a[i] + + c3p * std::pow ( rho_a[i] , gamm ) + + csp * rho_s[i] + + clp * rho_c[i]; + } + + + + + + +// momentum + + phase_g.resize( GetMassNumber() , 0.0 ); + + //G4int i = 0; + samplingMomentum( 0 ); + + G4int n1Try = 0; + //G4int maxTry = 1000; + + while ( n1Try < maxTrial ) + { + if ( samplingPosition( 0 ) ) + { + G4int i = 0; + G4bool isThisOK = true; + for ( i = 1 ; i < GetMassNumber() ; i++ ) + { + if ( !( samplingMomentum( i ) ) ) + { + isThisOK = false; + break; + } + } + if ( isThisOK == true ) break; + //if ( i == GetMassNumber() ) break; + } + n1Try++; + } + + if ( n1Try > maxTrial ) + { + std::cout << "GroundStateNucleus state cannot be created. Try again with another parameters." << std::endl; + return; + } + +// + +// Shift nucleus to thier CM frame and kill angular momentum + killCMMotionAndAngularM(); + +// Check binding energy + + G4double ekinal = 0.0; + for ( int i = 0 ; i < GetMassNumber() ; i++ ) + { + ekinal += participants[i]->GetKineticEnergy(); + } + + meanfield->Cal2BodyQuantities(); + G4double totalPotentialE = meanfield->GetTotalPotential(); + G4double ebinal = ( totalPotentialE + ekinal ) / double ( GetMassNumber() ); + + if ( ebinal < ebin0 || ebinal > ebin1 ) + { + // Retry From Position + } + + +// Adjust by frictional cooling or heating + + G4double dtc = 1.0; + G4double frg = -0.1; + G4double rdf0 = 0.5; + + G4double edif0 = ebinal - ebin00; + + G4double cfrc = 0.0; + if ( 0 < edif0 ) + { + cfrc = frg; + } + else + { + cfrc = -frg; + } + + G4int ifrc = 1; + + G4int ntryACH = 0; + + G4bool isThisOK = false; + while ( ntryACH < maxTrial ) + { + + G4double edif = ebinal - ebin00; + if ( std::abs ( edif ) < epse ) + { + isThisOK = true; + break; + } + + G4int jfrc = 0; + if ( edif < 0.0 ) + { + jfrc = 1; + } + else + { + jfrc = -1; + } + + if ( jfrc != ifrc ) + { + cfrc = -rdf0 * cfrc; + dtc = rdf0 * dtc; + } + + if ( jfrc == ifrc && std::abs( edif0 ) < std::abs( edif ) ) + { + cfrc = -rdf0 * cfrc; + dtc = rdf0 * dtc; + } + + ifrc = jfrc; + edif0 = edif; + + meanfield->CalGraduate(); + + for ( int i = 0 ; i < GetMassNumber() ; i++ ) + { + G4ThreeVector ri = participants[i]->GetPosition(); + G4ThreeVector p_i = participants[i]->GetMomentum(); + + ri += dtc * ( meanfield->GetFFr(i) - cfrc * ( meanfield->GetFFp(i) ) ); + p_i += dtc * ( meanfield->GetFFp(i) + cfrc * ( meanfield->GetFFr(i) ) ); + + participants[i]->SetPosition( ri ); + participants[i]->SetMomentum( p_i ); + } + + ekinal = 0.0; + + for ( int i = 0 ; i < GetMassNumber() ; i++ ) + { + ekinal += participants[i]->GetKineticEnergy(); + } + + meanfield->Cal2BodyQuantities(); + totalPotentialE = meanfield->GetTotalPotential(); + + ebinal = ( totalPotentialE + ekinal ) / double ( GetMassNumber() ); + + + ntryACH++; + } + + if ( isThisOK ) + { + return; + } + +} + + +G4bool G4QMDGroundStateNucleus::samplingPosition( G4int i ) +{ + + G4bool result = false; + + G4int nTry = 0; + + while ( nTry < maxTrial ) + { + + //std::cout << "samplingPosition i th particle, nTtry " << i << " " << nTry << std::endl; + + G4double rwod = -1.0; + G4double rrr = 0.0; + + G4double rx = 0.0; + G4double ry = 0.0; + G4double rz = 0.0; + + while ( G4UniformRand() * rmax > rwod ) + { + + G4double rsqr = 10.0; + while ( rsqr > 1.0 ) + { + rx = 1.0 - 2.0 * G4UniformRand(); + ry = 1.0 - 2.0 * G4UniformRand(); + rz = 1.0 - 2.0 * G4UniformRand(); + rsqr = rx*rx + ry*ry + rz*rz; + } + rrr = radm * std::sqrt ( rsqr ); + rwod = 1.0 / ( 1.0 + std::exp ( ( rrr - rt00 ) / saa ) ); + + } + + participants[i]->SetPosition( G4ThreeVector( rx , ry , rz )*radm ); + + if ( i == 0 ) + { + result = true; + return result; + } + +// i > 1 ( Second Particle or later ) +// Check Distance to others + + G4bool isThisOK = true; + for ( G4int j = 0 ; j < i ; j++ ) + { + + G4double r2 = participants[j]->GetPosition().diff2( participants[i]->GetPosition() ); + G4double dmin2 = 0.0; + + if ( participants[j]->GetDefinition() == participants[i]->GetDefinition() ) + { + dmin2 = dsam2; + } + else + { + dmin2 = ddif2; + } + + //std::cout << "distance between j and i " << j << " " << i << " " << r2 << " " << dmin2 << std::endl; + if ( r2 < dmin2 ) + { + isThisOK = false; + break; + } + + } + + if ( isThisOK == true ) + { + result = true; + return result; + } + + nTry++; + + } + +// Here return "false" + return result; +} + + + +G4bool G4QMDGroundStateNucleus::samplingMomentum( G4int i ) +{ + + //std::cout << "TKDB samplingMomentum for " << i << std::endl; + + G4bool result = false; + + G4double pfm = hbc * std::pow ( ( 3.0 / 2.0 * pi*pi * rho_l[i] ) , 1./3. ); + + if ( 10 < GetMassNumber() && -5.5 < ebini ) + { + pfm = pfm * ( 1.0 + 0.2 * std::sqrt( std::abs( 8.0 + ebini ) / 8.0 ) ); + } + + //std::cout << "TKDB samplingMomentum pfm " << pfm << std::endl; + + std::vector< G4double > phase; + phase.resize( i+1 ); // i start from 0 + + G4int ntry = 0; +// 710 + while ( ntry < maxTrial ) + { + + //std::cout << " TKDB ntry " << ntry << std::endl; + ntry++; + + G4double ke = DBL_MAX; + + G4int tkdb_i =0; +// 700 + while ( ke + d_pot [i] > edepth ) + { + + G4double psqr = 10.0; + G4double px = 0.0; + G4double py = 0.0; + G4double pz = 0.0; + + while ( psqr > 1.0 ) + { + px = 1.0 - 2.0*G4UniformRand(); + py = 1.0 - 2.0*G4UniformRand(); + pz = 1.0 - 2.0*G4UniformRand(); + + psqr = px*px + py*py + pz*pz; + } + + G4ThreeVector p ( px , py , pz ); + p = pfm * p; + participants[i]->SetMomentum( p ); + G4LorentzVector p4 = participants[i]->Get4Momentum(); + //ke = p4.e() - p4.restMass(); + ke = participants[i]->GetKineticEnergy(); + + + tkdb_i++; + if ( tkdb_i > maxTrial ) return result; // return false + + } + + //std::cout << "TKDB ke d_pot[i] " << ke << " " << d_pot[i] << std::endl; + + + if ( i == 0 ) + { + result = true; + return result; + } + + G4bool isThisOK = true; + + // Check Pauli principle + + phase[ i ] = 0.0; + + //std::cout << "TKDB Check Pauli Principle " << i << std::endl; + + for ( G4int j = 0 ; j < i ; j++ ) + { + phase[ j ] = 0.0; + //std::cout << "TKDB Check Pauli Principle i , j " << i << " , " << j << std::endl; + G4double expa = 0.0; + if ( participants[j]->GetDefinition() == participants[i]->GetDefinition() ) + { + + expa = - meanfield->GetRR2(i,j) * cpw; + + if ( expa > epsx ) + { + G4ThreeVector p_i = participants[i]->GetMomentum(); + G4ThreeVector pj = participants[j]->GetMomentum(); + G4double dist2_p = p_i.diff2( pj ); + + dist2_p = dist2_p*cph; + expa = expa - dist2_p; + + if ( expa > epsx ) + { + + phase[j] = std::exp ( expa ); + + if ( phase[j] * cpc > 0.2 ) + { +/* + std::cout << "TKDB Check Pauli Principle A i , j " << i << " , " << j << std::endl; + std::cout << "TKDB Check Pauli Principle phase[j] " << phase[j] << std::endl; + std::cout << "TKDB Check Pauli Principle phase[j]*cpc > 0.2 " << phase[j]*cpc << std::endl; +*/ + isThisOK = false; + break; + } + if ( ( phase_g[j] + phase[j] ) * cpc > 0.5 ) + { +/* + std::cout << "TKDB Check Pauli Principle B i , j " << i << " , " << j << std::endl; + std::cout << "TKDB Check Pauli Principle B phase_g[j] " << phase_g[j] << std::endl; + std::cout << "TKDB Check Pauli Principle B phase[j] " << phase[j] << std::endl; + std::cout << "TKDB Check Pauli Principle B phase_g[j] + phase[j] ) * cpc > 0.5 " << ( phase_g[j] + phase[j] ) * cpc << std::endl; +*/ + isThisOK = false; + break; + } + + phase[i] += phase[j]; + if ( phase[i] * cpc > 0.3 ) + { +/* + std::cout << "TKDB Check Pauli Principle C i , j " << i << " , " << j << std::endl; + std::cout << "TKDB Check Pauli Principle C phase[i] " << phase[i] << std::endl; + std::cout << "TKDB Check Pauli Principle C phase[i] * cpc > 0.3 " << phase[i] * cpc << std::endl; +*/ + isThisOK = false; + break; + } + + //std::cout << "TKDB Check Pauli Principle OK i , j " << i << " , " << j << std::endl; + + } + else + { + //std::cout << "TKDB Check Pauli Principle OK i , j " << i << " , " << j << std::endl; + } + + } + else + { + //std::cout << "TKDB Check Pauli Principle OK i , j " << i << " , " << j << std::endl; + } + + } + else + { + //std::cout << "TKDB Check Pauli Principle OK i , j " << i << " , " << j << std::endl; + } + + } + + if ( isThisOK == true ) + { + + phase_g[i] = phase[i]; + + for ( int j = 0 ; j < i ; j++ ) + { + phase_g[j] += phase[j]; + } + + result = true; + return result; + } + + } + + return result; + +} + + + +void G4QMDGroundStateNucleus::killCMMotionAndAngularM() +{ + +// CalEnergyAndAngularMomentumInCM(); + + //std::vector< G4ThreeVector > p ( GetMassNumber() , 0.0 ); + //std::vector< G4ThreeVector > r ( GetMassNumber() , 0.0 ); + +// Move to cm system + + G4ThreeVector pcm ( 0.0 ); + G4ThreeVector rcm ( 0.0 ); + G4double sumMass = 0.0; + + for ( G4int i = 0 ; i < GetMassNumber() ; i++ ) + { + pcm += participants[i]->GetMomentum(); + rcm += participants[i]->GetPosition() * participants[i]->GetMass(); + sumMass += participants[i]->GetMass(); + } + + pcm = pcm/GetMassNumber(); + rcm = rcm/sumMass; + + for ( G4int i = 0 ; i < GetMassNumber() ; i++ ) + { + participants[i]->SetMomentum( participants[i]->GetMomentum() - pcm ); + participants[i]->SetPosition( participants[i]->GetPosition() - rcm ); + } + +// kill the angular momentum + + G4ThreeVector ll ( 0.0 ); + for ( G4int i = 0 ; i < GetMassNumber() ; i++ ) + { + ll += participants[i]->GetPosition().cross ( participants[i]->GetMomentum() ); + } + + G4double rr[3][3]; + G4double ss[3][3]; + for ( G4int i = 0 ; i < 3 ; i++ ) + { + for ( G4int j = 0 ; j < 3 ; j++ ) + { + rr [i][j] = 0.0; + + if ( i == j ) + { + ss [i][j] = 1.0; + } + else + { + ss [i][j] = 0.0; + } + } + } + + for ( G4int i = 0 ; i < GetMassNumber() ; i++ ) + { + G4ThreeVector r = participants[i]->GetPosition(); + rr[0][0] += r.y() * r.y() + r.z() * r.z(); + rr[1][0] += - r.y() * r.x(); + rr[2][0] += - r.z() * r.x(); + rr[0][1] += - r.x() * r.y(); + rr[1][1] += r.z() * r.z() + r.x() * r.x(); + rr[2][1] += - r.z() * r.y(); + rr[2][0] += - r.x() * r.z(); + rr[2][1] += - r.y() * r.z(); + rr[2][2] += r.x() * r.x() + r.y() * r.y(); + } + + for ( G4int i = 0 ; i < 3 ; i++ ) + { + G4double x = rr [i][i]; + for ( G4int j = 0 ; j < 3 ; j++ ) + { + rr[i][j] = rr[i][j] / x; + ss[i][j] = ss[i][j] / x; + } + for ( G4int j = 0 ; j < 3 ; j++ ) + { + if ( j != i ) + { + G4double y = rr [j][i]; + for ( G4int k = 0 ; k < 3 ; k++ ) + { + rr[j][k] += -y * rr[i][k]; + ss[j][k] += -y * ss[i][k]; + } + } + } + } + + G4double opl[3]; + G4double rll[3]; + + rll[0] = ll.x(); + rll[1] = ll.y(); + rll[2] = ll.z(); + + for ( G4int i = 0 ; i < 3 ; i++ ) + { + opl[i] = 0.0; + + for ( G4int j = 0 ; j < 3 ; j++ ) + { + opl[i] += ss[i][j]*rll[j]; + } + } + + for ( G4int i = 0 ; i < GetMassNumber() ; i++ ) + { + G4ThreeVector p_i = participants[i]->GetMomentum() ; + G4ThreeVector ri = participants[i]->GetPosition() ; + G4ThreeVector opl_v ( opl[0] , opl[1] , opl[2] ); + + p_i += ri.cross(opl_v); + + participants[i]->SetMomentum( p_i ); + } + +} diff --git a/source/processes/hadronic/models/qmd/src/G4QMDMeanField.cc b/source/processes/hadronic/models/qmd/src/G4QMDMeanField.cc new file mode 100644 index 0000000000..8a0a67070d --- /dev/null +++ b/source/processes/hadronic/models/qmd/src/G4QMDMeanField.cc @@ -0,0 +1,894 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#include "G4QMDMeanField.hh" +#include "G4QMDParameters.hh" + +#include "Randomize.hh" + +#include + +#include +#include +#include + +G4QMDMeanField::G4QMDMeanField() +: rclds ( 4.0 ) // distance for cluster judgement +, epsx ( -20.0 ) // gauss term +, epscl ( 0.0001 ) // coulomb term +, irelcr ( 1 ) +{ + + G4QMDParameters* parameters = G4QMDParameters::GetInstance(); + wl = parameters->Get_wl(); + cl = parameters->Get_cl(); + rho0 = parameters->Get_rho0(); + hbc = parameters->Get_hbc(); + gamm = parameters->Get_gamm(); + + cpw = parameters->Get_cpw(); + cph = parameters->Get_cph(); + cpc = parameters->Get_cpc(); + + c0 = parameters->Get_c0(); + c3 = parameters->Get_c3(); + cs = parameters->Get_cs(); + +// distance + c0w = 1.0/4.0/wl; + //c3w = 1.0/4.0/wl; //no need + c0sw = std::sqrt( c0w ); + clw = 2.0 / std::sqrt ( 4.0 * pi * wl ); + +// graduate + c0g = - c0 / ( 2.0 * wl ); + c3g = - c3 / ( 4.0 * wl ) * gamm; + csg = - cs / ( 2.0 * wl ); + pag = gamm - 1; + +} + + + +G4QMDMeanField::~G4QMDMeanField() +{ + ; +} + + + +void G4QMDMeanField::SetSystem ( G4QMDSystem* aSystem ) +{ + + //std::cout << "QMDMeanField SetSystem" << std::endl; + + system = aSystem; + + G4int n = system->GetTotalNumberOfParticipant(); + + pp2.clear(); + rr2.clear(); + rbij.clear(); + rha.clear(); + rhe.clear(); + rhc.clear(); + + rr2.resize( n ); + pp2.resize( n ); + rbij.resize( n ); + rha.resize( n ); + rhe.resize( n ); + rhc.resize( n ); + + for ( int i = 0 ; i < n ; i++ ) + { + rr2[i].resize( n ); + pp2[i].resize( n ); + rbij[i].resize( n ); + rha[i].resize( n ); + rhe[i].resize( n ); + rhc[i].resize( n ); + } + + + ffr.clear(); + ffp.clear(); + rh3d.clear(); + + ffr.resize( n ); + ffp.resize( n ); + rh3d.resize( n ); + + Cal2BodyQuantities(); + +} + +void G4QMDMeanField::SetNucleus ( G4QMDNucleus* aNucleus ) +{ + + //std::cout << "QMDMeanField SetNucleus" << std::endl; + + SetSystem( aNucleus ); + + G4double totalPotential = GetTotalPotential(); + aNucleus->SetTotalPotential( totalPotential ); + + aNucleus->CalEnergyAndAngularMomentumInCM(); + +} + + + +void G4QMDMeanField::Cal2BodyQuantities() +{ + + if ( system->GetTotalNumberOfParticipant() < 2 ) return; + + for ( G4int j = 1 ; j < system->GetTotalNumberOfParticipant() ; j++ ) + { + + G4ThreeVector rj = system->GetParticipant( j )->GetPosition(); + G4LorentzVector p4j = system->GetParticipant( j )->Get4Momentum(); + + for ( G4int i = 0 ; i < j ; i++ ) + { + + G4ThreeVector ri = system->GetParticipant( i )->GetPosition(); + G4LorentzVector p4i = system->GetParticipant( i )->Get4Momentum(); + + G4ThreeVector rij = ri - rj; + G4ThreeVector pij = (p4i - p4j).v(); + G4LorentzVector p4ij = p4i - p4j; + G4ThreeVector bij = ( p4i + p4j ).boostVector(); + G4double gammaij = ( p4i + p4j ).gamma(); + + G4double eij = ( p4i + p4j ).e(); + + G4double rbrb = rij*bij; +// G4double bij2 = bij*bij; + G4double rij2 = rij*rij; + G4double pij2 = pij*pij; + + rbrb = irelcr * rbrb; + G4double gamma2_ij = gammaij*gammaij; + + + rr2[i][j] = rij2 + gamma2_ij * rbrb*rbrb; + rr2[j][i] = rr2[i][j]; + + rbij[i][j] = gamma2_ij * rbrb; + rbij[j][i] = - rbij[i][j]; + + pp2[i][j] = pij2 + + irelcr * ( - std::pow ( p4i.e() - p4j.e() , 2 ) + + gamma2_ij * std::pow ( ( ( p4i.m2() - p4j.m2() ) / eij ) , 2 ) ); + + + pp2[j][i] = pp2[i][j]; + +// Gauss term + + G4double expa1 = - rr2[i][j] * c0w; + + G4double rh1; + if ( expa1 > epsx ) + { + rh1 = std::exp( expa1 ); + } + else + { + rh1 = 0.0; + } + + G4int ibry = system->GetParticipant(i)->GetBaryonNumber(); + G4int jbry = system->GetParticipant(j)->GetBaryonNumber(); + + + rha[i][j] = ibry*jbry*rh1; + rha[j][i] = rha[i][j]; + +// Coulomb terms + + G4double rrs2 = rr2[i][j] + epscl; + G4double rrs = std::sqrt ( rrs2 ); + + G4int icharge = system->GetParticipant(i)->GetChargeInUnitOfEplus(); + G4int jcharge = system->GetParticipant(j)->GetChargeInUnitOfEplus(); + + G4double erf = 0.0; + // T. K. add this protection. 5.8 is good enough for double + if ( rrs*c0sw < 5.8 ) + erf = CLHEP::HepStat::erf ( rrs*c0sw ); + else + erf = 1.0; + + G4double erfij = erf/rrs; + + + rhe[i][j] = icharge*jcharge * erfij; + + rhe[j][i] = rhe[i][j]; + + rhc[i][j] = icharge*jcharge * ( - erfij + clw * rh1 ) / rrs2; + + rhc[j][i] = rhc[i][j]; + + } // i + } // j +} + + + +void G4QMDMeanField::Cal2BodyQuantities( G4int i ) +{ + + //std::cout << "Cal2BodyQuantities " << i << std::endl; + + G4ThreeVector ri = system->GetParticipant( i )->GetPosition(); + G4LorentzVector p4i = system->GetParticipant( i )->Get4Momentum(); + + + for ( G4int j = 0 ; j < system->GetTotalNumberOfParticipant() ; j ++ ) + { + if ( j == i ) continue; + + G4ThreeVector rj = system->GetParticipant( j )->GetPosition(); + G4LorentzVector p4j = system->GetParticipant( j )->Get4Momentum(); + + G4ThreeVector rij = ri - rj; + G4ThreeVector pij = (p4i - p4j).v(); + G4LorentzVector p4ij = p4i - p4j; + G4ThreeVector bij = ( p4i + p4j ).boostVector(); + G4double gammaij = ( p4i + p4j ).gamma(); + + G4double eij = ( p4i + p4j ).e(); + + G4double rbrb = rij*bij; +// G4double bij2 = bij*bij; + G4double rij2 = rij*rij; + G4double pij2 = pij*pij; + + rbrb = irelcr * rbrb; + G4double gamma2_ij = gammaij*gammaij; + +/* + G4double rbrb = 0.0; + G4double beta2_ij = 0.0; + G4double rij2 = 0.0; + G4double pij2 = 0.0; + +// + G4LorentzVector p4ip4j = p4i + p4j; + G4double eij = p4ip4j.e(); + + G4ThreeVector r = ri - rj; + G4LorentzVector p4 = p4i - p4j; + + rbrb = r.x()*p4ip4j.x()/eij + + r.y()*p4ip4j.y()/eij + + r.z()*p4ip4j.z()/eij; + + beta2_ij = ( p4ip4j.x()*p4ip4j.x() + p4ip4j.y()*p4ip4j.y() + p4ip4j.z()*p4ip4j.z() ) / ( eij*eij ); + rij2 = r*r; + pij2 = p4.v()*p4.v(); + + rbrb = irelcr * rbrb; + + G4double gamma2_ij = 1 / ( 1 - beta2_ij ); +*/ + + rr2[i][j] = rij2 + gamma2_ij * rbrb*rbrb; + rr2[j][i] = rr2[i][j]; + + rbij[i][j] = gamma2_ij * rbrb; + rbij[j][i] = - rbij[i][j]; + + pp2[i][j] = pij2 + + irelcr * ( - std::pow ( p4i.e() - p4j.e() , 2 ) + + gamma2_ij * std::pow ( ( ( p4i.m2() - p4j.m2() ) / eij ) , 2 ) ); + + pp2[j][i] = pp2[i][j]; + +// Gauss term + + G4double expa1 = - rr2[i][j] * c0w; + + G4double rh1; + if ( expa1 > epsx ) + { + rh1 = std::exp( expa1 ); + } + else + { + rh1 = 0.0; + } + + G4int ibry = system->GetParticipant(i)->GetBaryonNumber(); + G4int jbry = system->GetParticipant(j)->GetBaryonNumber(); + + + rha[i][j] = ibry*jbry*rh1; + rha[j][i] = rha[i][j]; + +// Coulomb terms + + G4double rrs2 = rr2[i][j] + epscl; + G4double rrs = std::sqrt ( rrs2 ); + + G4int icharge = system->GetParticipant(i)->GetChargeInUnitOfEplus(); + G4int jcharge = system->GetParticipant(j)->GetChargeInUnitOfEplus(); + + G4double erf = 0.0; + // T. K. add this protection. 5.8 is good enough for double + if ( rrs*c0sw < 5.8 ) + erf = CLHEP::HepStat::erf ( rrs*c0sw ); + else + erf = 1.0; + + G4double erfij = erf/rrs; + + + rhe[i][j] = icharge*jcharge * erfij; + + rhe[j][i] = rhe[i][j]; + +// G4double clw; + + rhc[i][j] = icharge*jcharge * ( - erfij + clw * rh1 ) / rrs2; + + rhc[j][i] = rhc[i][j]; + + } + +} + + + +void G4QMDMeanField::CalGraduate() +{ + + ffr.resize( system->GetTotalNumberOfParticipant() ); + ffp.resize( system->GetTotalNumberOfParticipant() ); + rh3d.resize( system->GetTotalNumberOfParticipant() ); + + for ( G4int i = 0 ; i < system->GetTotalNumberOfParticipant() ; i ++ ) + { + G4double rho3 = 0.0; + for ( G4int j = 0 ; j < system->GetTotalNumberOfParticipant() ; j ++ ) + { + rho3 += rha[j][i]; + } + rh3d[i] = std::pow ( rho3 , pag ); + } + + + for ( G4int i = 0 ; i < system->GetTotalNumberOfParticipant() ; i ++ ) + { + + G4ThreeVector ri = system->GetParticipant( i )->GetPosition(); + G4LorentzVector p4i = system->GetParticipant( i )->Get4Momentum(); + + G4ThreeVector betai = p4i.v()/p4i.e(); + + ffr[i] = betai; + ffp[i] = G4ThreeVector( 0.0 ); + + for ( G4int j = 0 ; j < system->GetTotalNumberOfParticipant() ; j ++ ) + { + + G4ThreeVector rj = system->GetParticipant( j )->GetPosition(); + G4LorentzVector p4j = system->GetParticipant( j )->Get4Momentum(); + + G4double eij = p4i.e() + p4j.e(); + + G4int icharge = system->GetParticipant(i)->GetChargeInUnitOfEplus(); + G4int jcharge = system->GetParticipant(j)->GetChargeInUnitOfEplus(); + + G4int inuc = system->GetParticipant(i)->GetNuc(); + G4int jnuc = system->GetParticipant(j)->GetNuc(); + + G4double ccpp = c0g * rha[j][i] + + c3g * rha[j][i] * ( rh3d[j] + rh3d[i] ) + + csg * rha[j][i] * jnuc * inuc + * ( 1. - 2. * std::abs( jcharge - icharge ) ) + + cl * rhc[j][i]; + +/* + std::cout << c0g << " " << c3g << " " << csg << " " << cl << std::endl; + std::cout << "ccpp " << i << " " << j << " " << ccpp << std::endl; + std::cout << "rha[j][i] " << rha[j][i] << std::endl; + std::cout << "rh3d " << rh3d[j] << " " << rh3d[i] << std::endl; + std::cout << "rhc[j][i] " << rhc[j][i] << std::endl; +*/ + + G4double grbb = - rbij[j][i]; + G4double ccrr = grbb * ccpp / eij; + +/* + std::cout << "ccrr " << ccrr << std::endl; + std::cout << "grbb " << grbb << std::endl; +*/ + + + G4ThreeVector rij = ri - rj; + G4ThreeVector betaij = ( p4i + p4j ).v()/eij; + + G4ThreeVector cij = betaij - betai; + + ffr[i] = ffr[i] + 2*ccrr* ( rij + grbb*cij ); + + ffp[i] = ffp[i] - 2*ccpp* ( rij + grbb*betaij ); + + } + } + + //std::cout << "gradu 0 " << ffr[0] << " " << ffp[0] << std::endl; + //std::cout << "gradu 1 " << ffr[1] << " " << ffp[1] << std::endl; + +} + + + +G4double G4QMDMeanField::GetTotalPotential() +{ + + G4int n = system->GetTotalNumberOfParticipant(); + + std::vector < G4double > rhoa ( n , 0.0 ); + std::vector < G4double > rho3 ( n , 0.0 ); + std::vector < G4double > rhos ( n , 0.0 ); + std::vector < G4double > rhoc ( n , 0.0 ); + + + for ( G4int i = 0 ; i < n ; i ++ ) + { + G4int icharge = system->GetParticipant(i)->GetChargeInUnitOfEplus(); + G4int inuc = system->GetParticipant(i)->GetNuc(); + + for ( G4int j = 0 ; j < n ; j ++ ) + { + G4int jcharge = system->GetParticipant(j)->GetChargeInUnitOfEplus(); + G4int jnuc = system->GetParticipant(j)->GetNuc(); + + rhoa[i] += rha[j][i]; + rhoc[i] += rhe[j][i]; + rhos[i] += rha[j][i] * jnuc * inuc + * ( 1 - 2 * std::abs ( jcharge - icharge ) ); + } + + rho3[i] = std::pow ( rhoa[i] , gamm ); + } + + G4double potential = c0 * std::accumulate( rhoa.begin() , rhoa.end() , 0.0 ) + + c3 * std::accumulate( rho3.begin() , rho3.end() , 0.0 ) + + cs * std::accumulate( rhos.begin() , rhos.end() , 0.0 ) + + cl * std::accumulate( rhoc.begin() , rhoc.end() , 0.0 ); + + return potential; + +} + + + +G4double G4QMDMeanField::calPauliBlockingFactor( G4int i ) +{ + + G4double pf = 0.0; +// i is supposed beyond total number of Participant() + G4int icharge = system->GetParticipant(i)->GetChargeInUnitOfEplus(); + + for ( G4int j = 0 ; j < system->GetTotalNumberOfParticipant() ; j++ ) + { + + G4int jcharge = system->GetParticipant(j)->GetChargeInUnitOfEplus(); + G4int jnuc = system->GetParticipant(j)->GetNuc(); + + if ( jcharge == icharge && jnuc == 1 ) + { + +/* + std::cout << "Pauli i j " << i << " " << j << std::endl; + std::cout << "Pauli icharge " << icharge << std::endl; + std::cout << "Pauli jcharge " << jcharge << std::endl; +*/ + G4double expa = -rr2[i][j]*cpw; + + + if ( expa > epsx ) + { + expa = expa - pp2[i][j]*cph; +/* + std::cout << "Pauli cph " << cph << std::endl; + std::cout << "Pauli pp2 " << pp2[i][j] << std::endl; + std::cout << "Pauli expa " << expa << std::endl; + std::cout << "Pauli epsx " << epsx << std::endl; +*/ + if ( expa > epsx ) + { +// std::cout << "Pauli phase " << pf << std::endl; + pf = pf + std::exp ( expa ); + } + } + } + + } + + + pf = ( pf - 1.0 ) * cpc; + + //std::cout << "Pauli pf " << pf << std::endl; + + return pf; + +} + + + +G4bool G4QMDMeanField::IsPauliBlocked( G4int i ) +{ + G4bool result = false; + + if ( system->GetParticipant( i )->GetNuc() == 1 ) + { + G4double pf = calPauliBlockingFactor( i ); + G4double rand = G4UniformRand(); + if ( pf > rand ) result = true; + } + + return result; +} + + + +void G4QMDMeanField::DoPropagation( G4double dt ) +{ + + G4double c2 = 1.0; + G4double c1 = 1.0 - c2; + G4double c3 = 1.0 / 2.0 / c2; + + G4double dt3 = dt * c3; + G4double dt1 = dt * ( c1 - c3 ); + G4double dt2 = dt * c2; + + CalGraduate(); + + G4int n = system->GetTotalNumberOfParticipant(); + +// 1st Step + + std::vector< G4ThreeVector > f0r, f0p; + f0r.resize( n ); + f0p.resize( n ); + + for ( G4int i = 0 ; i < n ; i++ ) + { + G4ThreeVector ri = system->GetParticipant( i )->GetPosition(); + G4ThreeVector p3i = system->GetParticipant( i )->GetMomentum(); + + ri += dt3* ffr[i]; + p3i += dt3* ffp[i]; + + f0r[i] = ffr[i]; + f0p[i] = ffp[i]; + + system->GetParticipant( i )->SetPosition( ri ); + system->GetParticipant( i )->SetMomentum( p3i ); + +// we do not need set total momentum by ourselvs + } + +// 2nd Step + Cal2BodyQuantities(); + CalGraduate(); + + for ( G4int i = 0 ; i < n ; i++ ) + { + G4ThreeVector ri = system->GetParticipant( i )->GetPosition(); + G4ThreeVector p3i = system->GetParticipant( i )->GetMomentum(); + + ri += dt1* f0r[i] + dt2* ffr[i]; + p3i += dt1* f0p[i] + dt2* ffp[i]; + + system->GetParticipant( i )->SetPosition( ri ); + system->GetParticipant( i )->SetMomentum( p3i ); + +// we do not need set total momentum by ourselvs + } + + Cal2BodyQuantities(); + + +} + + + +std::vector< G4QMDNucleus* > G4QMDMeanField::DoClusterJudgment() +{ + + //std::cout << "MeanField DoClusterJudgemnt" << std::endl; + + Cal2BodyQuantities(); + + G4double cpf2 = std::pow ( 1.5 * pi*pi * std::pow ( 4.0 * pi * wl , -1.5 ) + , + 2./3. ) + * hbc * hbc; + G4double rcc2 = rclds*rclds; + + G4int n = system->GetTotalNumberOfParticipant(); + std::vector < G4double > rhoa; + rhoa.resize ( n ); + + for ( G4int i = 0 ; i < n ; i++ ) + { + rhoa[i] = 0.0; + + if ( system->GetParticipant( i )->GetBaryonNumber() == 1 ) + { + for ( G4int j = 0 ; j < n ; j++ ) + { + if ( system->GetParticipant( j )->GetBaryonNumber() == 1 ) + rhoa[i] += rha[i][j]; + } + } + + rhoa[i] = std::pow ( rhoa[i] + 1 , 1.0/3.0 ); + + } + +// identification of the cluster + + std::map < G4int , std::vector < G4int > > cluster_map; + std::vector < G4bool > is_already_belong_some_cluster; + + // cluster_id participant_id + std::multimap < G4int , G4int > comb_map; + std::multimap < G4int , G4int > assign_map; + assign_map.clear(); + + std::vector < G4int > mascl; + std::vector < G4int > num; + mascl.resize ( n ); + num.resize ( n ); + is_already_belong_some_cluster.resize ( n ); + + std::vector < G4int > is_assigned_to ( n , -1 ); + std::multimap < G4int , G4int > clusters; + + for ( G4int i = 0 ; i < n ; i++ ) + { + mascl[i] = 1; + num[i] = 1; + + is_already_belong_some_cluster[i] = false; + } + + + G4int nclst = 1; + G4int ichek = 1; + + + G4int id = 0; + G4int cluster_id = -1; + for ( G4int i = 0 ; i < n-1 ; i++ ) + { + + G4bool hasThisCompany = false; +// Check only for bryons? +// std::cout << "Check Baryon " << i << std::endl; + + if ( system->GetParticipant( i )->GetBaryonNumber() == 1 ) + { + +// if ( is_already_belong_some_cluster[i] != true ) +// { + //G4int j1 = ichek + 1; + G4int j1 = i + 1; + for ( G4int j = j1 ; j < n ; j++ ) + { + + std::vector < G4int > cluster_participants; + if ( system->GetParticipant( j )->GetBaryonNumber() == 1 ) + { + G4double rdist2 = rr2[ i ][ j ]; + G4double pdist2 = pp2[ i ][ j ]; + //G4double rdist2 = rr2[ num[i] ][ num[j] ]; + //G4double pdist2 = pp2[ num[i] ][ num[j] ]; + G4double pcc2 = cpf2 + * ( rhoa[ i ] + rhoa[ j ] ) + * ( rhoa[ i ] + rhoa[ j ] ); + +// Check phase space: close enough? + if ( rdist2 < rcc2 && pdist2 < pcc2 ) + { + +/* + std::cout << "G4QMDRESULT " + << i << " " << j << " " << id << " " + << is_assigned_to [ i ] << " " << is_assigned_to [ j ] + << std::endl; +*/ + + if ( is_assigned_to [ j ] == -1 ) + { + if ( is_assigned_to [ i ] == -1 ) + { + if ( clusters.size() != 0 ) + { + id = clusters.rbegin()->first + 1; + //std::cout << "id is increare " << id << std::endl; + } + else + { + id = 0; + } + clusters.insert ( std::multimap::value_type ( id , i ) ); + is_assigned_to [ i ] = id; + clusters.insert ( std::multimap::value_type ( id , j ) ); + is_assigned_to [ j ] = id; + } + else + { + clusters.insert ( std::multimap::value_type ( is_assigned_to [ i ] , j ) ); + is_assigned_to [ j ] = is_assigned_to [ i ]; + } + } + else + { +// j is already belong to some cluester + if ( is_assigned_to [ i ] == -1 ) + { + clusters.insert ( std::multimap::value_type ( is_assigned_to [ j ] , i ) ); + is_assigned_to [ i ] = is_assigned_to [ j ]; + } + else + { +// i has companion + if ( is_assigned_to [ i ] != is_assigned_to [ j ] ) + { +// move companions to the cluster +// + //std::cout << "combine " << is_assigned_to [ i ] << " to " << is_assigned_to [ j ] << std::endl; + std::multimap< G4int , G4int > clusters_tmp; + G4int target_cluster_id; + if ( is_assigned_to [ i ] > is_assigned_to [ j ] ) + target_cluster_id = is_assigned_to [ i ]; + else + target_cluster_id = is_assigned_to [ j ]; + + for ( std::multimap< G4int , G4int >::iterator it + = clusters.begin() ; it != clusters.end() ; it++ ) + { + + //std::cout << it->first << " " << it->second << " " << target_cluster_id << std::endl; + if ( it->first == target_cluster_id ) + { + //std::cout << "move " << it->first << " " << it->second << std::endl; + is_assigned_to [ it->second ] = is_assigned_to [ j ]; + clusters_tmp.insert ( std::multimap::value_type ( is_assigned_to [ j ] , it->second ) ); + } + else + { + clusters_tmp.insert ( std::multimap::value_type ( it->first , it->second ) ); + } + } + + clusters = clusters_tmp; + //id = clusters.rbegin()->first; + //id = target_cluster_id; + //std::cout << "id " << id << std::endl; + } + } + } + + //std::cout << "combination " << i << " " << j << std::endl; + comb_map.insert( std::multimap::value_type ( i , j ) ); + cluster_participants.push_back ( j ); + + + + if ( assign_map.find( cluster_id ) == assign_map.end() ) + { + is_already_belong_some_cluster[i] = true; + assign_map.insert ( std::multimap::value_type ( cluster_id , i ) ); + hasThisCompany = true; + } + assign_map.insert ( std::multimap::value_type ( cluster_id , j ) ); + is_already_belong_some_cluster[j] = true; + + } + + if ( ichek == i ) + { + nclst++; + ichek++; + } + } + + if ( cluster_participants.size() > 0 ) + { +// cluster , participant + cluster_map.insert ( std::pair < G4int , std::vector < G4int > > ( i , cluster_participants ) ); + } + } +// } + } + if ( hasThisCompany == true ) cluster_id++; + } + + //std::cout << " id " << id << std::endl; + +// sort +// Heavy cluster comes first +// size cluster_id + std::multimap< G4int , G4int > sorted_cluster_map; + for ( G4int i = 0 ; i <= id ; i++ ) // << "<=" because id is highest cluster nubmer. + { + + //std::cout << i << " cluster has " << clusters.count( i ) << " nucleons." << std::endl; + sorted_cluster_map.insert ( std::multimap::value_type ( clusters.count( i ) , i ) ); + + } + + +// create nucleus from devided clusters + std::vector < G4QMDNucleus* > result; + for ( std::multimap < G4int , G4int >::reverse_iterator it + = sorted_cluster_map.rbegin() ; it != sorted_cluster_map.rend() ; it ++) + { + + //std::cout << "Add Participants to cluseter " << it->second << std::endl; + + if ( it->first != 0 ) + { + G4QMDNucleus* nucleus = new G4QMDNucleus(); + for ( std::multimap < G4int , G4int >::iterator itt + = clusters.begin() ; itt != clusters.end() ; itt ++) + { + + if ( it->second == itt->first ) + { + nucleus->SetParticipant( system->GetParticipant ( itt->second ) ); + //std::cout << "Add Participants " << itt->second << " " << system->GetParticipant ( itt->second )->GetPosition() << std::endl; + } + + } + result.push_back( nucleus ); + } + + } + +// delete participants from current system + + for ( std::vector < G4QMDNucleus* > ::iterator it + = result.begin() ; it != result.end() ; it++ ) + { + system->SubtractSystem ( *it ); + } + + return result; + +} diff --git a/source/processes/hadronic/models/qmd/src/G4QMDNucleus.cc b/source/processes/hadronic/models/qmd/src/G4QMDNucleus.cc new file mode 100644 index 0000000000..76f22919ae --- /dev/null +++ b/source/processes/hadronic/models/qmd/src/G4QMDNucleus.cc @@ -0,0 +1,222 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#include "G4QMDNucleus.hh" +#include "G4Proton.hh" +#include "G4Neutron.hh" +#include "G4NucleiProperties.hh" + +#include + +G4QMDNucleus::G4QMDNucleus() +{ + G4QMDParameters* parameters = G4QMDParameters::GetInstance(); + hbc = parameters->Get_hbc(); +} + + + +G4QMDNucleus::~G4QMDNucleus() +{ + ; +} + + +G4LorentzVector G4QMDNucleus::Get4Momentum() +{ + G4LorentzVector p( 0 ); + std::vector< G4QMDParticipant* >::iterator it; + for ( it = participants.begin() ; it != participants.end() ; it++ ) + p += (*it)->Get4Momentum(); + + return p; +} + + + +G4int G4QMDNucleus::GetMassNumber() +{ + + G4int A = 0; + std::vector< G4QMDParticipant* >::iterator it; + for ( it = participants.begin() ; it != participants.end() ; it++ ) + { + if ( (*it)->GetDefinition() == G4Proton::Proton() + || (*it)->GetDefinition() == G4Neutron::Neutron() ) + A++; + } + + return A; +} + + + +G4int G4QMDNucleus::GetAtomicNumber() +{ + G4int Z = 0; + std::vector< G4QMDParticipant* >::iterator it; + for ( it = participants.begin() ; it != participants.end() ; it++ ) + { + if ( (*it)->GetDefinition() == G4Proton::Proton() ) + Z++; + } + return Z; +} + + + +G4double G4QMDNucleus::GetNuclearMass() +{ + + G4double mass = G4NucleiPropertiesTable::GetNuclearMass( GetAtomicNumber() , GetMassNumber() ); + + if ( mass == 0.0 ) + { + + G4int Z = GetAtomicNumber(); + G4int A = GetMassNumber(); + G4int N = A - Z; + +// Weizsacker-Bethe + + G4double Av = 16*MeV; + G4double As = 17*MeV; + G4double Ac = 0.7*MeV; + G4double Asym = 23*MeV; + + G4double BE = Av * A + - As * std::pow ( G4double ( A ) , 2.0/3.0 ) + - Ac * Z*Z/std::pow ( G4double ( A ) , 1.0/3.0 ) + - Asym * ( N - Z )* ( N - Z ) / A; + + mass = Z * G4Proton::Proton()->GetPDGMass() + + N * G4Neutron::Neutron()->GetPDGMass() + - BE; + + } + + return mass; +} + + + +void G4QMDNucleus::CalEnergyAndAngularMomentumInCM() +{ + + //G4cout << "CalEnergyAndAngularMomentumInCM " << this->GetAtomicNumber() << " " << GetMassNumber() << G4endl; + + G4double gamma = Get4Momentum().gamma(); + G4ThreeVector beta = Get4Momentum().v()/ Get4Momentum().e(); + + G4ThreeVector pcm0( 0.0 ) ; + + G4int n = GetTotalNumberOfParticipant(); + pcm.resize( n ); + + for ( G4int i= 0; i < n ; i++ ) + { + G4ThreeVector p_i = GetParticipant( i )->GetMomentum(); + + G4double trans = gamma / ( gamma + 1.0 ) * p_i * beta; + pcm[i] = p_i - trans*beta; + + pcm0 += pcm[i]; + } + + pcm0 = pcm0 / double ( n ); + + //G4cout << "pcm0 " << pcm0 << G4endl; + + for ( G4int i= 0; i < n ; i++ ) + { + pcm[i] += -pcm0; + //G4cout << "pcm " << i << " " << pcm[i] << G4endl; + } + + + G4double tmass = 0; + G4ThreeVector rcm0( 0.0 ) ; + rcm.resize( n ); + es.resize( n ); + + for ( G4int i= 0; i < n ; i++ ) + { + G4ThreeVector ri = GetParticipant( i )->GetPosition(); + G4double trans = gamma / ( gamma + 1.0 ) * ri * beta; + + es[i] = std::sqrt ( std::pow ( GetParticipant( i )->GetMass() , 2 ) + pcm[i]*pcm[i] ); + + rcm[i] = ri + trans*beta; + + rcm0 += rcm[i]*es[i]; + + tmass += es[i]; + } + + rcm0 = rcm0/tmass; + + for ( G4int i= 0; i < n ; i++ ) + { + rcm[i] += -rcm0; + //G4cout << "rcm " << i << " " << rcm[i] << G4endl; + } + +// Angluar momentum + + G4ThreeVector rl ( 0.0 ); + for ( G4int i= 0; i < n ; i++ ) + { + rl += rcm[i].cross ( pcm[i] ); + } + + jj = int ( std::sqrt ( rl*rl / hbc ) + 0.5 ); + + +// kinetic energy per nucleon in CM + + G4double totalMass = 0.0; + for ( G4int i= 0; i < n ; i++ ) + { + // following two lines are equivalent + //totalMass += GetParticipant( i )->GetDefinition()->GetPDGMass()/GeV; + totalMass += GetParticipant( i )->GetMass(); + } + + kineticEnergyPerNucleon = ( std::accumulate ( es.begin() , es.end() , 0.0 ) - totalMass )/n; + +// Total (not per nucleion ) Binding Energy + bindingEnergy = ( std::accumulate ( es.begin() , es.end() , 0.0 ) -totalMass ) + potentialEnergy; + + //G4cout << "KineticEnergyPerNucleon in GeV " << kineticEnergyPerNucleon << G4endl; + //G4cout << "KineticEnergySum in GeV " << std::accumulate ( es.begin() , es.end() , 0.0 ) - totalMass << G4endl; + //G4cout << "PotentialEnergy in GeV " << potentialEnergy << G4endl; + //G4cout << "BindingEnergy in GeV " << bindingEnergy << G4endl; + //G4cout << "G4BindingEnergy in GeV " << G4NucleiPropertiesTable::GetBindingEnergy( GetAtomicNumber() , GetMassNumber() )/GeV << G4endl; + + excitationEnergy = bindingEnergy + G4NucleiPropertiesTable::GetBindingEnergy( GetAtomicNumber() , GetMassNumber() )/GeV; + //G4cout << "excitationEnergy in GeV " << excitationEnergy << G4endl; + if ( excitationEnergy < 0 ) excitationEnergy = 0.0; + +} diff --git a/source/processes/hadronic/models/qmd/src/G4QMDParameters.cc b/source/processes/hadronic/models/qmd/src/G4QMDParameters.cc new file mode 100644 index 0000000000..acdeff5880 --- /dev/null +++ b/source/processes/hadronic/models/qmd/src/G4QMDParameters.cc @@ -0,0 +1,102 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// + +// Parameters comes from JQMD +// Niita et al., JAERI-Data/Code 99-042 + +#include "G4QMDParameters.hh" + +G4QMDParameters* G4QMDParameters::parameters = NULL; + +G4QMDParameters::G4QMDParameters() +{ + + wl = 2.0; // width of wave packet [fm] + hbc = 0.1973; // h-bar c in GeVfm + + //Pauli + cpw = 1.0 / 2.0 / wl; + + cph = 2.0 * wl / (hbc*hbc); + + cpc = 4.0; + + epsx = -20.0 ; + + rho0 = 0.168; // satulation density + +// Skyrme + G4double rpot = 1.0/3.0; + + G4double ebinm = -16.0; // bounding energy [MeV] + G4double ebin = ebinm * 0.001; + + G4double pfer = hbc * std::pow ( 3./2. *pi*pi * rho0 , 1./3. ); + + G4double rmass = 0.938; + + G4double efer = pfer*pfer / 2. / rmass; + + G4double t3 = 8. / 3. / rpot / std::pow( rho0 , ( 1.+rpot ) ) * ( efer / 5. - ebin ); + + G4double t0 = -16./15. * efer / rho0 - ( 1.+rpot ) * t3 * std::pow( rho0 , rpot ); + + + G4double aaa = 3./4. * t0 * rho0; + G4double bbb = 3./8. * t3 * ( 2.+rpot ) * std::pow( rho0 , ( 1.+rpot ) ); + G4double esymm = 25 * 0.001; // symetric potential 25 [MeV] -> GeV + + gamm = rpot + 1.0; + +// Local Potenials + c0 = aaa / ( rho0 * std::pow( 4 * pi * wl , 1.5 ) * 2.0 ); + + c3 = bbb / ( std::pow( rho0 , gamm ) * std::pow ( (4.0*pi*wl) , (1.5*gamm) ) * ( gamm+1.0) ); + + cs = esymm / ( rho0 * std::pow( (4.0*pi*wl) , 1.5 ) * 2.0 ); + + G4double ccoul = 0.001439767; + cl = ccoul/2.0 * 1; // Include Coulomb interaction + //cl = ccoul/2.0 * 0; // Not Include Coulomb interaction + + + +// GroundStateNucleus + cdp = 1.0 / std::pow ( ( 4.0 * pi * wl ) , 1.5 ); + c0p = c0 * 2.0; + c3p = c3 * ( gamm + 1.0 ); + csp = cs * 2.0; + clp = cl * 2.0; + +} + + + +G4QMDParameters::~G4QMDParameters() +{ + ; +} + diff --git a/source/processes/hadronic/models/qmd/src/G4QMDParticipant.cc b/source/processes/hadronic/models/qmd/src/G4QMDParticipant.cc new file mode 100644 index 0000000000..32ace3eaba --- /dev/null +++ b/source/processes/hadronic/models/qmd/src/G4QMDParticipant.cc @@ -0,0 +1,51 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#include "G4QMDParticipant.hh" + +G4QMDParticipant::G4QMDParticipant( G4ParticleDefinition* pd , G4ThreeVector p , G4ThreeVector r ) +: definition ( pd ) +, momentum ( p ) +, position ( r ) +, projectile ( false ) +, target ( false ) +{ + ; +} + + + +G4QMDParticipant::~G4QMDParticipant() +{ + ; +} + + + +G4LorentzVector G4QMDParticipant::Get4Momentum() +{ + G4LorentzVector p4 ( momentum , std::sqrt ( std::pow ( definition->GetPDGMass()/GeV , 2 ) + momentum*momentum ) ); + return p4; +} diff --git a/source/processes/hadronic/models/qmd/src/G4QMDReaction.cc b/source/processes/hadronic/models/qmd/src/G4QMDReaction.cc new file mode 100644 index 0000000000..00ac5d2a97 --- /dev/null +++ b/source/processes/hadronic/models/qmd/src/G4QMDReaction.cc @@ -0,0 +1,667 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#include "G4QMDReaction.hh" +#include "G4QMDNucleus.hh" + +#include "G4QMDGroundStateNucleus.hh" +#include "G4Fancy3DNucleus.hh" + +#include "G4NistManager.hh" + +G4QMDReaction::G4QMDReaction() +:system ( 0 ) +, deltaT ( 1 ) // in fsec +, maxTime ( 100 ) // will have maxTime-th time step +{ + meanField = new G4QMDMeanField(); + collision = new G4QMDCollision(); + + evaporation = new G4Evaporation; + evaporation->SetGEMChannel(); + excitationHandler = new G4ExcitationHandler; + excitationHandler->SetEvaporation( evaporation ); +// preco = new G4PreCompoundModel( excitationHandler ); + +} + + + +G4QMDReaction::~G4QMDReaction() +{ + delete evaporation; + delete collision; + delete meanField; +} + + + +void G4QMDReaction::setInitialCondition( G4QMDSystem* , G4QMDSystem* ) +{ + ; +} + + + +void G4QMDReaction::doPropagation() +{ + ; +} + + + +G4HadFinalState* G4QMDReaction::ApplyYourself( const G4HadProjectile & projectile , G4Nucleus & target ) +{ + //G4cout << "G4QMDReaction::ApplyYourself" << G4endl; + + theParticleChange.Clear(); + + system = new G4QMDSystem; + + G4int proj_Z = 0; + G4int proj_A = 0; + G4ParticleDefinition* proj_pd = ( G4ParticleDefinition* ) projectile.GetDefinition(); + if ( proj_pd->GetParticleType() == "nucleus" ) + { + proj_Z = proj_pd->GetAtomicNumber(); + proj_A = proj_pd->GetAtomicMass(); + } + else + { + proj_Z = (int)( proj_pd->GetPDGCharge()/eplus ); + proj_A = 1; + } + G4int targ_Z = int ( target.GetZ() + 0.5 ); + G4int targ_A = int ( target.GetN() + 0.5 ); + G4ParticleDefinition* targ_pd = G4ParticleTable::GetParticleTable()->GetIon( targ_Z , targ_A , 0.0 ); + + + G4NistManager* nistMan = G4NistManager::Instance(); +// G4Element* G4NistManager::FindOrBuildElement( targ_Z ); + + const G4DynamicParticle* proj_dp = new G4DynamicParticle ( proj_pd , projectile.Get4Momentum() ); + const G4Element* targ_ele = nistMan->FindOrBuildElement( targ_Z ); + G4double aTemp = projectile.GetMaterial()->GetTemperature(); + + //G4double xs_0 = shenXS.GetCrossSection ( proj_dp , targ_ele , aTemp ); + G4double xs_0 = genspaXS.GetCrossSection ( proj_dp , targ_ele , aTemp ); + G4double bmax_0 = std::sqrt( xs_0 )/pi*2; + //std::cout << "bmax_0 in fm (fermi) " << bmax_0/fermi << std::endl; + + //delete proj_dp; + + G4bool elastic = true; + + std::vector< G4QMDNucleus* > nucleuses; // Secondary nuceluses + G4ThreeVector boostToReac; // ReactionSystem (CM or NN); + G4ThreeVector boostBackToLAB; // Reaction System to LAB; + + G4LorentzVector targ4p( G4ThreeVector( 0.0 ) , targ_pd->GetPDGMass()/GeV ); + G4ThreeVector boostLABtoCM = targ4p.findBoostToCM( proj_dp->Get4Momentum()/GeV ); // CM of target and proj; + + G4double p1 = proj_dp->GetMomentum().mag()/GeV/proj_A; + G4double m1 = proj_dp->GetDefinition()->GetPDGMass()/GeV/proj_A; + G4double e1 = std::sqrt( p1*p1 + m1*m1 ); + G4double e2 = targ_pd->GetPDGMass()/GeV/targ_A; + G4double beta_nn = -p1 / ( e1+e2 ); + + G4ThreeVector boostLABtoNN ( 0. , 0. , beta_nn ); // CM of NN; + + G4double beta_nncm = ( - boostLABtoCM.beta() + boostLABtoNN.beta() ) / ( 1 - boostLABtoCM.beta() * boostLABtoNN.beta() ) ; + + //std::cout << targ4p << std::endl; + //std::cout << proj_dp->Get4Momentum()<< std::endl; + //std::cout << beta_nncm << std::endl; + G4ThreeVector boostNNtoCM( 0. , 0. , beta_nncm ); // + G4ThreeVector boostCMtoNN( 0. , 0. , -beta_nncm ); // + + boostToReac = boostLABtoNN; + boostBackToLAB = -boostLABtoNN; + + delete proj_dp; + + while ( elastic ) + { + +// impact parameter + G4double bmax = 1.05*(bmax_0/fermi); // 10% for Peripheral reactions + G4double b = bmax * G4UniformRand(); +//071112 + //G4double b = 0; + //G4double b = bmax; + //G4double b = bmax/1.05 * 0.7 * G4UniformRand(); + + //G4cout << "G4QMDRESULT bmax_0 = " << bmax_0/fermi << " fm, bmax = " << bmax << " fm , b = " << b << " fm " << G4endl; + + G4double plab = projectile.GetTotalMomentum()/GeV; + G4double elab = (projectile.GetKineticEnergy() + proj_pd->GetPDGMass() + targ_pd->GetPDGMass() )/GeV; + + calcOffSetOfCollision( b , proj_pd , targ_pd , plab , elab , bmax , boostCMtoNN ); + +// Projectile + G4LorentzVector proj4pLAB = projectile.Get4Momentum()/GeV; + + G4QMDNucleus* proj(NULL); + if ( projectile.GetDefinition()->GetParticleType() == "nucleus" ) + { + proj = new G4QMDNucleus; + + proj_Z = proj_pd->GetAtomicNumber(); + proj_A = proj_pd->GetAtomicMass(); + + proj = new G4QMDGroundStateNucleus( proj_Z , proj_A ); + //proj->ShowParticipants(); + + } + + meanField->SetSystem ( proj ); + proj->SetTotalPotential( meanField->GetTotalPotential() ); + proj->CalEnergyAndAngularMomentumInCM(); + +// Target + G4int iz = int ( target.GetZ() ); + G4int ia = int ( target.GetN() ); + + //G4QMDNucleus* targ = new G4QMDNucleus; + G4QMDNucleus* targ = new G4QMDGroundStateNucleus( iz , ia ); + + meanField->SetSystem (targ ); + targ->SetTotalPotential( meanField->GetTotalPotential() ); + targ->CalEnergyAndAngularMomentumInCM(); + + //G4LorentzVector targ4p( G4ThreeVector( 0.0 ) , targ->GetNuclearMass()/GeV ); +// Boost Vector to CM + //boostToCM = targ4p.findBoostToCM( proj4pLAB ); + +// Target + for ( G4int i = 0 ; i < targ->GetTotalNumberOfParticipant() ; i++ ) + { + + G4ThreeVector p0 = targ->GetParticipant( i )->GetMomentum(); + G4ThreeVector r0 = targ->GetParticipant( i )->GetPosition(); + + G4ThreeVector p ( p0.x() + coulomb_collision_px_targ + , p0.y() + , p0.z() * coulomb_collision_gamma_targ + coulomb_collision_pz_targ ); + + G4ThreeVector r ( r0.x() + coulomb_collision_rx_targ + , r0.y() + , r0.z() / coulomb_collision_gamma_targ + coulomb_collision_rz_targ ); + + system->SetParticipant( new G4QMDParticipant( targ->GetParticipant( i )->GetDefinition() , p , r ) ); + system->GetParticipant( i )->SetTarget(); + + } + + G4LorentzVector proj4pCM = CLHEP::boostOf ( proj4pLAB , boostToReac ); + G4LorentzVector targ4pCM = CLHEP::boostOf ( targ4p , boostToReac ); + + +// Projectile + if ( proj != NULL ) + { + +// projectile is nucleus + + for ( G4int i = 0 ; i < proj->GetTotalNumberOfParticipant() ; i++ ) + { + + G4ThreeVector p0 = proj->GetParticipant( i )->GetMomentum(); + G4ThreeVector r0 = proj->GetParticipant( i )->GetPosition(); + + G4ThreeVector p ( p0.x() + coulomb_collision_px_proj + , p0.y() + , p0.z() * coulomb_collision_gamma_proj + coulomb_collision_pz_proj ); + + G4ThreeVector r ( r0.x() + coulomb_collision_rx_proj + , r0.y() + , r0.z() / coulomb_collision_gamma_proj + coulomb_collision_rz_proj ); + + system->SetParticipant( new G4QMDParticipant( proj->GetParticipant( i )->GetDefinition() , p , r ) ); + system->GetParticipant ( i + targ->GetTotalNumberOfParticipant() )->SetProjectile(); + } + + } + else + { + +// projectile is particle + + G4int i = targ->GetTotalNumberOfParticipant(); + + G4ThreeVector p0( 0 ); + G4ThreeVector r0( 0 ); + + + G4ThreeVector p ( p0.x() + coulomb_collision_px_proj + , p0.y() + , p0.z() * coulomb_collision_gamma_proj + coulomb_collision_pz_proj ); + + G4ThreeVector r ( r0.x() + coulomb_collision_rx_proj + , r0.y() + , r0.z() / coulomb_collision_gamma_proj + coulomb_collision_rz_proj ); + + system->SetParticipant( new G4QMDParticipant( (G4ParticleDefinition*)projectile.GetDefinition() , p , r ) ); + system->GetParticipant ( i )->SetProjectile(); + } + + delete targ; + delete proj; + + + meanField->SetSystem ( system ); + collision->SetMeanField ( meanField ); + +// Time Evolution + //std::cout << "Start time evolution " << std::endl; + //system->ShowParticipants(); + for ( G4int i = 0 ; i < maxTime ; i++ ) + { + //G4cout << " do Paropagate " << i << " th time step. " << G4endl; + meanField->DoPropagation( deltaT ); + //system->ShowParticipants(); + collision->CalKinematicsOfBinaryCollisions(); + + if ( i / 10 * 10 == i ) + { + //G4cout << i << " th time step. " << G4endl; + //system->ShowParticipants(); + } + //system->ShowParticipants(); + } + //system->ShowParticipants(); + + + //std::cout << "Doing Cluster Judgment " << std::endl; + + nucleuses = meanField->DoClusterJudgment(); + +// Elastic Judgment + + G4int numberOfSecondary = int ( nucleuses.size() ) + system->GetTotalNumberOfParticipant(); + + G4int sec_a_Z = 0; + G4int sec_a_A = 0; + G4ParticleDefinition* sec_a_pd = NULL; + G4int sec_b_Z = 0; + G4int sec_b_A = 0; + G4ParticleDefinition* sec_b_pd = NULL; + + if ( numberOfSecondary == 2 ) + { + + G4bool elasticLike_system = false; + if ( nucleuses.size() == 2 ) + { + + sec_a_Z = nucleuses[0]->GetAtomicNumber(); + sec_a_A = nucleuses[0]->GetMassNumber(); + sec_b_Z = nucleuses[1]->GetAtomicNumber(); + sec_b_A = nucleuses[1]->GetMassNumber(); + + if ( ( sec_a_Z == proj_Z && sec_a_A == proj_A && sec_b_Z == targ_Z && sec_b_A == targ_A ) + || ( sec_a_Z == targ_Z && sec_a_A == targ_A && sec_b_Z == proj_Z && sec_b_A == proj_A ) ) + { + elasticLike_system = true; + } + + } + else if ( nucleuses.size() == 1 ) + { + + sec_a_Z = nucleuses[0]->GetAtomicNumber(); + sec_a_A = nucleuses[0]->GetMassNumber(); + sec_b_pd = system->GetParticipant( 0 )->GetDefinition(); + + if ( ( sec_a_Z == proj_Z && sec_a_A == proj_A && sec_b_pd == targ_pd ) + || ( sec_a_Z == targ_Z && sec_a_A == targ_A && sec_b_pd == proj_pd ) ) + { + elasticLike_system = true; + } + + } + else + { + + sec_a_pd = system->GetParticipant( 0 )->GetDefinition(); + sec_b_pd = system->GetParticipant( 1 )->GetDefinition(); + + if ( ( sec_a_pd == proj_pd && sec_b_pd == targ_pd ) + || ( sec_a_pd == targ_pd && sec_b_pd == proj_pd ) ) + { + elasticLike_system = true; + } + + } + + if ( elasticLike_system == true ) + { + + G4bool elasticLike_energy = true; +// Cal ExcitationEnergy + for ( G4int i = 0 ; i < int ( nucleuses.size() ) ; i++ ) + { + + //meanField->SetSystem( nucleuses[i] ); + meanField->SetNucleus( nucleuses[i] ); + //nucleuses[i]->SetTotalPotential( meanField->GetTotalPotential() ); + //nucleuses[i]->CalEnergyAndAngularMomentumInCM(); + + if ( nucleuses[i]->GetExcitationEnergy()*GeV > 1.0*MeV ) elasticLike_energy = false; + + } + +// Check Collision + G4bool withCollision = true; + if ( system->GetNOCollision() == 0 ) withCollision = false; + +// Final judegement for Inelasitc or Elastic; +// +// ElasticLike without Collision + //if ( elasticLike_energy == true && withCollision == false ) elastic = true; // ielst = 0 +// ElasticLike with Collision + //if ( elasticLike_energy == true && withCollision == true ) elastic = true; // ielst = 1 +// InelasticLike without Collision + if ( elasticLike_energy == false ) elastic = false; // ielst = 2 +// InelasticLike with Collision + //if ( elasticLike_energy == false && withCollision == true ) elastic = false; // ielst = 3 + + } + + } + else + { + +// numberOfSecondary != 2 + elastic = false; + + } + +//071115 + //G4cout << elastic << G4endl; + // if elastic is true try again from sampling of impact parameter + } + + +// Statical Decay Phase + + for ( std::vector< G4QMDNucleus* >::iterator it + = nucleuses.begin() ; it != nucleuses.end() ; it++ ) + { + +/* + std::cout << "G4QMDRESULT " + << (*it)->GetAtomicNumber() + << " " + << (*it)->GetMassNumber() + << " " + << (*it)->Get4Momentum() + << " " + << (*it)->Get4Momentum().vect() + << " " + << (*it)->Get4Momentum().restMass() + << " " + << (*it)->GetNuclearMass()/GeV + << std::endl; +*/ + + meanField->SetNucleus ( *it ); + + if ( (*it)->GetAtomicNumber() == 0 // neutron cluster + || (*it)->GetAtomicNumber() == (*it)->GetMassNumber() ) // proton cluster + { + // push back system + for ( G4int i = 0 ; i < (*it)->GetTotalNumberOfParticipant() ; i++ ) + { + system->SetParticipant ( (*it)->GetParticipant( i ) ); + } + continue; + } + + G4double nucleus_e = std::sqrt ( std::pow ( (*it)->GetNuclearMass()/GeV , 2 ) + std::pow ( (*it)->Get4Momentum().vect().mag() , 2 ) ); + G4LorentzVector nucleus_p4CM ( (*it)->Get4Momentum().vect() , nucleus_e ); + +// std::cout << "G4QMDRESULT nucleus deltaQ " << deltaQ << std::endl; + + G4int ia = (*it)->GetMassNumber(); + G4int iz = (*it)->GetAtomicNumber(); + + G4LorentzVector lv ( G4ThreeVector( 0.0 ) , (*it)->GetExcitationEnergy()*GeV + G4ParticleTable::GetParticleTable()->GetIonTable()->GetIonMass( iz , ia ) ); + + G4Fragment* aFragment = new G4Fragment( ia , iz , lv ); + + G4ReactionProductVector* rv; + rv = excitationHandler->BreakItUp( *aFragment ); + G4bool notBreak = true; + for ( G4ReactionProductVector::iterator itt + = rv->begin() ; itt != rv->end() ; itt++ ) + { + + notBreak = false; + // Secondary from this nucleus (*it) + G4ParticleDefinition* pd = (*itt)->GetDefinition(); + G4LorentzVector p4 ( (*itt)->GetMomentum()/GeV , (*itt)->GetTotalEnergy()/GeV ); //in nucleus(*it) rest system + G4LorentzVector p4_CM = CLHEP::boostOf( p4 , -nucleus_p4CM.findBoostToCM() ); // Back to CM + G4LorentzVector p4_LAB = CLHEP::boostOf( p4_CM , boostBackToLAB ); // Back to LAB + + G4DynamicParticle* dp = new G4DynamicParticle( pd , p4_LAB*GeV ); + theParticleChange.AddSecondary( dp ); + +/* + std::cout + << "Regist Secondary " + << (*itt)->GetDefinition()->GetParticleName() + << " " + << (*itt)->GetMomentum()/GeV + << " " + << (*itt)->GetKineticEnergy()/GeV + << " " + << (*itt)->GetMass()/GeV + << " " + << (*itt)->GetTotalEnergy()/GeV + << " " + << (*itt)->GetTotalEnergy()/GeV * (*itt)->GetTotalEnergy()/GeV + - (*itt)->GetMomentum()/GeV * (*itt)->GetMomentum()/GeV + << " " + << nucleus_p4CM.findBoostToCM() + << " " + << p4 + << " " + << p4_CM + << " " + << p4_LAB + << std::endl; +*/ + + } + if ( notBreak == true ) + { + + G4ParticleDefinition* pd = G4ParticleTable::GetParticleTable()->GetIon( (*it)->GetAtomicNumber() , (*it)->GetMassNumber(), (*it)->GetExcitationEnergy()*GeV ); + G4LorentzVector p4_CM = nucleus_p4CM; + G4LorentzVector p4_LAB = CLHEP::boostOf( p4_CM , boostBackToLAB ); // Back to LAB + G4DynamicParticle* dp = new G4DynamicParticle( pd , p4_LAB*GeV ); + theParticleChange.AddSecondary( dp ); + + } + + delete aFragment; + + delete *it; // delete nulceuse + + } + + + for ( G4int i = 0 ; i < system->GetTotalNumberOfParticipant() ; i++ ) + { + + // Secondary particles + + G4ParticleDefinition* pd = system->GetParticipant( i )->GetDefinition(); + G4LorentzVector p4_CM = system->GetParticipant( i )->Get4Momentum(); + G4LorentzVector p4_LAB = CLHEP::boostOf( p4_CM , boostBackToLAB ); + G4DynamicParticle* dp = new G4DynamicParticle( pd , p4_LAB*GeV ); + theParticleChange.AddSecondary( dp ); + +/* + G4cout << "G4QMDRESULT " + << "r" << i << " " << system->GetParticipant ( i ) -> GetPosition() << " " + << "p" << i << " " << system->GetParticipant ( i ) -> Get4Momentum() + << G4endl; +*/ + + } + + system->Clear(); + delete system; + + theParticleChange.SetStatusChange( stopAndKill ); + + return &theParticleChange; + +} + + + +void G4QMDReaction::calcOffSetOfCollision( G4double b , +G4ParticleDefinition* pd_proj , +G4ParticleDefinition* pd_targ , +G4double ptot , G4double etot , G4double bmax , G4ThreeVector boostToCM ) +{ + G4double mass_proj = pd_proj->GetPDGMass()/GeV; + G4double mass_targ = pd_targ->GetPDGMass()/GeV; + + G4double stot = std::sqrt ( etot*etot - ptot*ptot ); + + G4double pstt = std::sqrt ( ( stot*stot - ( mass_proj + mass_targ ) * ( mass_proj + mass_targ ) + ) * ( stot*stot - ( mass_proj - mass_targ ) * ( mass_proj - mass_targ ) ) ) + / ( 2.0 * stot ); + + G4double pzcc = pstt; + G4double eccm = stot - ( mass_proj + mass_targ ); + + G4int zp = pd_proj->GetAtomicNumber(); + G4int ap = pd_proj->GetAtomicMass(); + G4int zt = pd_targ->GetAtomicNumber(); + G4int at = pd_targ->GetAtomicMass(); + + //G4double rmax0 = 8.0; // T.K dicide parameter value // for low energy + G4double rmax0 = bmax + 4.0; + G4double rmax = std::sqrt( rmax0*rmax0 + b*b ); + + G4double ccoul = 0.001439767; + G4double pcca = 1.0 - double ( zp * zt ) * ccoul / eccm / rmax - ( b / rmax )*( b / rmax ); + + G4double pccf = std::sqrt( pcca ); + + G4double aas = 2.0 * eccm * b / double ( zp * zt ) / ccoul; + G4double bbs = 1.0 / std::sqrt ( 1.0 + aas*aas ); + G4double aas1 = ( 1.0 + aas * b / rmax ) * bbs; + + G4double cost = 0.0; + G4double sint = 0.0; + G4double thet1 = 0.0; + G4double thet2 = 0.0; + if ( 1.0 - aas1*aas1 <= 0 || 1.0 - bbs*bbs <= 0.0 ) + { + cost = 1.0; + sint = 0.0; + } + else + { + G4double aat1 = aas1 / std::sqrt ( 1.0 - aas1*aas1 ); + G4double aat2 = bbs / std::sqrt ( 1.0 - bbs*bbs ); + + thet1 = std::atan ( aat1 ); + thet2 = std::atan ( aat2 ); + +// TK enter to else block + G4double theta = thet1 - thet2; + cost = std::cos( theta ); + sint = std::sin( theta ); + } + + G4double rzpr = -rmax * cost * ( mass_targ ) / ( mass_proj + mass_targ ); + G4double rzta = rmax * cost * ( mass_proj ) / ( mass_proj + mass_targ ); + + G4double rxpr = rmax / 2.0 * sint; + + G4double rxta = -rxpr; + + + G4double pzpc = pzcc * ( cost * pccf + sint * b / rmax ); + G4double pxpr = pzcc * ( -sint * pccf + cost * b / rmax ); + + G4double pztc = - pzpc; + G4double pxta = - pxpr; + + G4double epc = std::sqrt ( pzpc*pzpc + pxpr*pxpr + mass_proj*mass_proj ); + G4double etc = std::sqrt ( pztc*pztc + pxta*pxta + mass_targ*mass_targ ); + + G4double pzpr = pzpc; + G4double pzta = pztc; + G4double epr = epc; + G4double eta = etc; + +// CM -> NN + G4double gammacm = boostToCM.gamma(); + //G4double betacm = -boostToCM.beta(); + G4double betacm = boostToCM.z(); + pzpr = pzpc + betacm * gammacm * ( gammacm / ( 1. + gammacm ) * pzpc * betacm + epc ); + pzta = pztc + betacm * gammacm * ( gammacm / ( 1. + gammacm ) * pztc * betacm + etc ); + epr = gammacm * ( epc + betacm * pzpc ); + eta = gammacm * ( etc + betacm * pztc ); + + //G4double betpr = pzpr / epr; + //G4double betta = pzta / eta; + + G4double gammpr = epr / ( mass_proj ); + G4double gammta = eta / ( mass_targ ); + + pzta = pzta / double ( at ); + pxta = pxta / double ( at ); + + pzpr = pzpr / double ( ap ); + pxpr = pxpr / double ( ap ); + + G4double zeroz = 0.0; + + rzpr = rzpr -zeroz; + rzta = rzta -zeroz; + + // Set results + coulomb_collision_gamma_proj = gammpr; + coulomb_collision_rx_proj = rxpr; + coulomb_collision_rz_proj = rzpr; + coulomb_collision_px_proj = pxpr; + coulomb_collision_pz_proj = pzpr; + + coulomb_collision_gamma_targ = gammta; + coulomb_collision_rx_targ = rxta; + coulomb_collision_rz_targ = rzta; + coulomb_collision_px_targ = pxta; + coulomb_collision_pz_targ = pzta; + +} diff --git a/source/processes/hadronic/models/qmd/src/G4QMDSystem.cc b/source/processes/hadronic/models/qmd/src/G4QMDSystem.cc new file mode 100644 index 0000000000..8ea6bcd376 --- /dev/null +++ b/source/processes/hadronic/models/qmd/src/G4QMDSystem.cc @@ -0,0 +1,98 @@ +// +// ******************************************************************** +// * 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. * +// ******************************************************************** +// +#include "G4QMDSystem.hh" +#include + +G4QMDSystem::G4QMDSystem() +{ + participants.clear(); + numberOfCollision = 0; +} + + + +G4QMDSystem::~G4QMDSystem() +{ + this->Clear(); +} + + +// Insert nucleus to current system; +void G4QMDSystem::SetSystem ( G4QMDSystem* nucleus , G4ThreeVector dp , G4ThreeVector dr ) +{ + std::vector< G4QMDParticipant* >::iterator it; + for ( it = nucleus->participants.begin() ; it != nucleus->participants.end() ; it++ ) + { + G4ThreeVector r = (*it)->GetPosition() + dr; + (*it)->SetPosition ( r ); + G4ThreeVector p = (*it)->GetMomentum() + dp; + (*it)->SetMomentum ( p ); + this->SetParticipant( *it ); + } +} + +void G4QMDSystem::SubtractSystem ( G4QMDSystem* nucleus ) +{ + + for ( G4int i = 0 ; i < nucleus->GetTotalNumberOfParticipant() ; i++ ) + { + participants.erase ( std::find ( participants.begin() , participants.end() , nucleus->GetParticipant( i ) ) ); + } +} + +void G4QMDSystem::Clear () +{ + for ( G4int i = 0 ; i < this->GetTotalNumberOfParticipant() ; i++ ) + { + delete participants[i]; + } + participants.clear(); +} + + + +void G4QMDSystem::ShowParticipants() +{ + G4ThreeVector p_sum( 0.0 ); + std::vector< G4QMDParticipant* >::iterator it; + G4cout << "Momentum and Position of each participant " << G4endl; + G4int i = 0; + for ( it = participants.begin() ; it != participants.end() ; it++ ) + { + G4cout << i + << " " + << (*it)->GetDefinition()->GetParticleName() + << " " + << std::setprecision( 8 ) + << (*it)->GetMomentum() + << " " + << (*it)->GetPosition() + << G4endl; + p_sum += (*it)->GetMomentum(); + i++; + } + G4cout << "Sum upped Momentum and mag " << p_sum << " " << p_sum.mag() << G4endl; +} diff --git a/source/processes/hadronic/models/rpg/GNUmakefile b/source/processes/hadronic/models/rpg/GNUmakefile new file mode 100644 index 0000000000..e24c2f91ec --- /dev/null +++ b/source/processes/hadronic/models/rpg/GNUmakefile @@ -0,0 +1,33 @@ +# $Id: GNUmakefile,v 1.1 2007/07/18 20:34:40 dennis Exp $ +# ----------------------------------------------------------- +# GNUmakefile for hadronic library. Gabriele Cosmo, 18/9/96. +# ----------------------------------------------------------- + +name := G4hadronic_RPG + +ifndef G4INSTALL + G4INSTALL = ../../../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +CPPFLAGS += -I$(G4BASE)/global/management/include \ + -I$(G4BASE)/global/HEPRandom/include \ + -I$(G4BASE)/global/HEPGeometry/include \ + -I$(G4BASE)/track/include \ + -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/management/include \ + -I$(G4BASE)/processes/management/include \ + -I$(G4BASE)/processes/hadronic/management/include/ \ + -I$(G4BASE)/processes/hadronic/models/management/include/ \ + -I$(G4BASE)/processes/hadronic/util/include \ + -I$(G4BASE)/processes/hadronic/cross_sections/include/ \ + -I$(G4BASE)/particles/management/include \ + -I$(G4BASE)/particles/leptons/include \ + -I$(G4BASE)/particles/bosons/include \ + -I$(G4BASE)/particles/hadrons/mesons/include \ + -I$(G4BASE)/particles/hadrons/barions/include \ + -I$(G4BASE)/particles/hadrons/ions/include \ + -I$(G4BASE)/materials/include + +include $(G4INSTALL)/config/common.gmk diff --git a/source/processes/hadronic/models/rpg/History b/source/processes/hadronic/models/rpg/History new file mode 100644 index 0000000000..6b0dea4080 --- /dev/null +++ b/source/processes/hadronic/models/rpg/History @@ -0,0 +1,32 @@ +------------------------------------------------------------------- + + ========================================================== + Geant4 - an Object-Oriented Toolkit for Physics Simulation + ========================================================== + + History file for the Re-Parameterized Gheisha-style Model + --------------------------------------------------------- + +This file should be used to summarize modifications introduced in the +code and to keep track of all tags. + + --------------------------------------------------------------- + * Please list in reverse chronological order (last date on top) + --------------------------------------------------------------- + +5 December 2007 - Dennis Wright (hadr-rpg-V09-00-02) +---------------------------------------------------- +Fixed array bound violation in G4RPGFragmentation.cc (pseudoParticle[7]). + +15 August 2007 - Dennis Wright (hadr-rpg-V09-00-01) +--------------------------------------------------- +Fixed unused variable warnings in G4RPGFragmentation.cc, G4RPGInelastic.cc, +G4RPGTwoBody.cc, G4RPGTwoCluster.cc + +26 May 2007 - Dennis Wright (hadr-rpg-V09-00-00) +------------------------------------------------ + First version of the Re-Parameterized Gheisha-style model. This + version is essentially a re-factored copy of the low energy parameterized + model which also contains several bug fixes and physics improvements. + + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGAntiKZeroInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGAntiKZeroInelastic.hh new file mode 100644 index 0000000000..7dce1bdb40 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGAntiKZeroInelastic.hh @@ -0,0 +1,77 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiKZeroInelastic.hh,v 1.1 2007/07/18 20:51:36 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for anti-K0 inelastic scattering +// using the re-parameterized Gheisha model. This is a utility class +// only and should not be used in a physics list. + + +#ifndef G4RPGAntiKZeroInelastic_h +#define G4RPGAntiKZeroInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + + class G4RPGAntiKZeroInelastic : public G4RPGInelastic + { + public: + + G4RPGAntiKZeroInelastic() : G4RPGInelastic("G4RPGAntiKZeroInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGAntiKZeroInelastic() + { } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASK0B + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGAntiLambdaInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGAntiLambdaInelastic.hh new file mode 100644 index 0000000000..b121d7d077 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGAntiLambdaInelastic.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiLambdaInelastic.hh,v 1.1 2007/07/18 20:51:36 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for anti-lambda inelastic scattering +// using the re-parameterized Gheisha model. + +#ifndef G4RPGAntiLambdaInelastic_h +#define G4RPGAntiLambdaInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGAntiLambdaInelastic : public G4RPGInelastic + { + public: + + G4RPGAntiLambdaInelastic() : G4RPGInelastic("G4RPGAntiLambdaInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGAntiLambdaInelastic() { } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASAL0 + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGAntiNeutronInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGAntiNeutronInelastic.hh new file mode 100644 index 0000000000..4ccea9ec7b --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGAntiNeutronInelastic.hh @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiNeutronInelastic.hh,v 1.1 2007/07/18 20:51:36 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for anti-neuton inelastic scattering +// using the re-parameterized Gheisha model. + +#ifndef G4RPGAntiNeutronInelastic_h +#define G4RPGAntiNeutronInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGAntiNeutronInelastic : public G4RPGInelastic + { + public: + + G4RPGAntiNeutronInelastic() : G4RPGInelastic("G4RPGAntiNeutronInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGAntiNeutronInelastic() + { } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASNB + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGAntiOmegaMinusInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGAntiOmegaMinusInelastic.hh new file mode 100644 index 0000000000..d38e310d33 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGAntiOmegaMinusInelastic.hh @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiOmegaMinusInelastic.hh,v 1.1 2007/07/18 20:51:36 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for anti-omega- inelastic scattering +// using the re-parameterized Gheisha model. + + +#ifndef G4RPGAntiOmegaMinusInelastic_h +#define G4RPGAntiOmegaMinusInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGAntiOmegaMinusInelastic : public G4RPGInelastic + { + public: + + G4RPGAntiOmegaMinusInelastic() : G4RPGInelastic("G4RPGAntiOmegaMinusInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGAntiOmegaMinusInelastic() { } + + G4HadFinalState* ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASOM + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGAntiProtonInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGAntiProtonInelastic.hh new file mode 100644 index 0000000000..c0c38f80b5 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGAntiProtonInelastic.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiProtonInelastic.hh,v 1.1 2007/07/18 20:51:36 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for anti-proton inelastic scattering +// using the re-parameterized Gheisha model. + +#ifndef G4RPGAntiProtonInelastic_h +#define G4RPGAntiProtonInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGAntiProtonInelastic : public G4RPGInelastic + { + public: + + G4RPGAntiProtonInelastic():G4RPGInelastic("G4RPGAntiProtonInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGAntiProtonInelastic() { } + + G4HadFinalState* ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASPB + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAStopAndKillBelowEnergyLimitPolicy.hh b/source/processes/hadronic/models/rpg/include/G4RPGAntiSigmaMinusInelastic.hh similarity index 57% rename from source/processes/electromagnetic/lowenergy/include/G4DNAStopAndKillBelowEnergyLimitPolicy.hh rename to source/processes/hadronic/models/rpg/include/G4RPGAntiSigmaMinusInelastic.hh index 33bad6ec50..9fb294ff9e 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAStopAndKillBelowEnergyLimitPolicy.hh +++ b/source/processes/hadronic/models/rpg/include/G4RPGAntiSigmaMinusInelastic.hh @@ -23,34 +23,53 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// $Id: G4RPGAntiSigmaMinusInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 // -// $Id: G4DNAStopAndKillBelowEnergyLimitPolicy.hh,v 1.2 2006/06/29 19:35:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -#ifndef G4DNASTOPANDKILLBELOWENERGYLIMITPOLICY_HH - #define G4DNASTOPANDKILLBELOWENERGYLIMITPOLICY_HH 1 - - #include "globals.hh" - - // EnergyLimitsPolicy must provide: - // - [protected] const double lowEnergyLimit +// Class Description: +// Final state production model for anti-sigma- inelastic scattering +// using the re-parameterized Gheisha model. - template - class G4DNAStopAndKillBelowEnergyLimitPolicy : public EnergyLimitsPolicy + +#ifndef G4RPGAntiSigmaMinusInelastic_h +#define G4RPGAntiSigmaMinusInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGAntiSigmaMinusInelastic : public G4RPGInelastic { - protected: - G4DNAStopAndKillBelowEnergyLimitPolicy() {} - ~G4DNAStopAndKillBelowEnergyLimitPolicy() {} - - G4bool KillIncomingParticle(G4double k) const; - void BuildFinalStatesData(void) const {} - - private: - // Hides default constructor and assignment operator as private - G4DNAStopAndKillBelowEnergyLimitPolicy(const G4DNAStopAndKillBelowEnergyLimitPolicy & copy); - G4DNAStopAndKillBelowEnergyLimitPolicy & operator=(const G4DNAStopAndKillBelowEnergyLimitPolicy & right); + public: + + G4RPGAntiSigmaMinusInelastic() : G4RPGInelastic("G4RPGAntiSigmaMinusInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGAntiSigmaMinusInelastic() { } + + G4HadFinalState* ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASASM + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + }; - #include "G4DNAStopAndKillBelowEnergyLimitPolicy.icc" -#endif /* G4DNASTOPANDKILLBELOWENERGYLIMITPOLICY_HH */ +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGAntiSigmaPlusInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGAntiSigmaPlusInelastic.hh new file mode 100644 index 0000000000..58cad897bb --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGAntiSigmaPlusInelastic.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiSigmaPlusInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for anti-sigma+ inelastic scattering +// using the re-parameterized Gheisha model. + +#ifndef G4RPGAntiSigmaPlusInelastic_h +#define G4RPGAntiSigmaPlusInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGAntiSigmaPlusInelastic : public G4RPGInelastic + { + public: + + G4RPGAntiSigmaPlusInelastic() : G4RPGInelastic("G4RPGAntiSigmaPlusInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGAntiSigmaPlusInelastic() { } + + G4HadFinalState* ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASASP + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAElectronElasticBrenner.hh b/source/processes/hadronic/models/rpg/include/G4RPGAntiXiMinusInelastic.hh similarity index 58% rename from source/processes/electromagnetic/lowenergy/include/G4DNAElectronElasticBrenner.hh rename to source/processes/hadronic/models/rpg/include/G4RPGAntiXiMinusInelastic.hh index 650720a479..ea015b5b04 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAElectronElasticBrenner.hh +++ b/source/processes/hadronic/models/rpg/include/G4RPGAntiXiMinusInelastic.hh @@ -23,29 +23,52 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // +// $Id: G4RPGAntiXiMinusInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 // -// $Id: G4DNAElectronElasticBrenner.hh,v 1.3 2006/06/29 19:33:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -#ifndef G4DNAELECTRONELASTICBRENNER_HH - #define G4DNAELECTRONELASTICBRENNER_HH 1 +// Class Description: +// Final state production model for anti-xi- inelastic scattering +// using the re-parameterized Gheisha model. - #include "G4DNAElectronElasticScatteringInWater.hh" - #include "G4DNARutherfordTotalCrossSectionPolicy.hh" - #include "G4DNABrennerAngularDistributionPolicy.hh" +#ifndef G4RPGAntiXiMinusInelastic_h +#define G4RPGAntiXiMinusInelastic_h 1 - struct G4DNABrennerEnergyLimitsPolicy + +#include "G4RPGInelastic.hh" + + class G4RPGAntiXiMinusInelastic : public G4RPGInelastic { - static const G4double lowEnergyLimit; - static const G4bool zeroBelowLowEnergyLimit; - static const G4double highEnergyLimit; - static const G4bool zeroAboveHighEnergyLimit; + public: + + G4RPGAntiXiMinusInelastic() : G4RPGInelastic("G4RPGAntiXiMinusInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGAntiXiMinusInelastic() + { } + + G4HadFinalState* ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASAL0 + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + }; - class G4DNAElectronElasticBrenner : public G4DNAElectronElasticScatteringInWater, G4DNABrennerAngularDistributionPolicy> - { - public: - G4DNAElectronElasticBrenner(const G4String & name = "G4DNAElectronElasticBrenner") : G4DNAElectronElasticScatteringInWater, G4DNABrennerAngularDistributionPolicy>(name) {} - virtual ~G4DNAElectronElasticBrenner() {} - }; -#endif /* G4DNAELECTRONELASTICBRENNER_HH */ +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGAntiXiZeroInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGAntiXiZeroInelastic.hh new file mode 100644 index 0000000000..872d6e706b --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGAntiXiZeroInelastic.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiXiZeroInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for anti-xi0 inelastic scattering +// using the re-parameterized Gheisha model. + + +#ifndef G4RPGAntiXiZeroInelastic_h +#define G4RPGAntiXiZeroInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGAntiXiZeroInelastic : public G4RPGInelastic + { + public: + + G4RPGAntiXiZeroInelastic() : G4RPGInelastic("G4RPGAntiXiZeroInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGAntiXiZeroInelastic() { } + + G4HadFinalState* ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASAL0 + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGFragmentation.hh b/source/processes/hadronic/models/rpg/include/G4RPGFragmentation.hh new file mode 100644 index 0000000000..50bc3593a4 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGFragmentation.hh @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * 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: G4RPGFragmentation.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D.H. Wright +// Date: 29 May 2007 +// + +#ifndef G4RPGFragmentation_h +#define G4RPGFragmentation_h 1 + +// Class Description: +// +// Calculation of the hadron fragmentation stage of the hadron-nucleus +// reaction. The Gheisha method of parameterized fragmentation is used. + + +#include "G4RPGReaction.hh" +#include "G4DynamicParticle.hh" +#include "G4ReactionProduct.hh" +#include "G4Nucleus.hh" +#include "G4FastVector.hh" +#include "G4HadProjectile.hh" + + + class G4RPGFragmentation : public G4RPGReaction + { + public: // with description + + G4RPGFragmentation(); + + void FragmentationIntegral(G4double /*pt*/, G4double /*et*/, + G4double /*parMass*/, G4double /*secMass*/); + + G4bool ReactionStage(const G4HadProjectile* /*originalIncident*/, + G4ReactionProduct& /*modifiedOriginal*/, + G4bool& /*incidentHasChanged*/, + const G4DynamicParticle* /*originalTarget*/, + G4ReactionProduct& /*targetParticle*/, + G4bool& /*targetHasChanged*/, + const G4Nucleus& /*targetNucleus*/, + G4ReactionProduct& /*currentParticle*/, + G4FastVector& /*vec*/, + G4int& /*vecLen*/, + G4bool /*leadFlag*/, + G4ReactionProduct& /*leadingStrangeParticle*/); + + + private: + + G4double dndl[20]; + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGInelastic.hh new file mode 100644 index 0000000000..66537fe88b --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGInelastic.hh @@ -0,0 +1,120 @@ +// +// ******************************************************************** +// * 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: G4RPGInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 26 May 2007 +// + +#ifndef G4RPGInelastic_h +#define G4RPGInelastic_h 1 + +// Class Description: +// +// Base class for re-parameterized Gheisha-style models. + +#include "globals.hh" +#include "G4FastVector.hh" +#include "G4HadronicInteraction.hh" +#include "G4ReactionProduct.hh" +#include "Randomize.hh" +#include "G4RPGFragmentation.hh" +#include "G4RPGTwoCluster.hh" +#include "G4RPGTwoBody.hh" +#include "G4RPGStrangeProduction.hh" +#include "G4RPGPionSuppression.hh" + + +class G4RPGInelastic : public G4HadronicInteraction + { + public: // with description + + G4RPGInelastic(const G4String& modelName = "RPGInelastic") + : G4HadronicInteraction(modelName) + { cache = 0.0;} + + virtual ~G4RPGInelastic() + { } + + protected: // with description + + G4double Pmltpc(G4int np, G4int nm, G4int nz, G4int n, + G4double b, G4double c); + + G4int Factorial(G4int n); + + G4bool MarkLeadingStrangeParticle(const G4ReactionProduct& currentParticle, + const G4ReactionProduct& targetParticle, + G4ReactionProduct& leadParticle); + + void SetUpPions(const G4int np, const G4int nm, const G4int nz, + G4FastVector &vec, + G4int &vecLen); + + void Rotate(G4FastVector &vec, G4int &vecLen); + + void GetNormalizationConstant(const G4double availableEnergy, + G4double &n, + G4double &anpn); + + void CalculateMomenta(G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + const G4DynamicParticle *originalTarget, + G4ReactionProduct &modifiedOriginal, + G4Nucleus &targetNucleus, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool quasiElastic); + + void SetUpChange(G4FastVector &vec, + G4int &vecLen, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged); + + G4RPGFragmentation fragmentation; + + G4RPGTwoCluster twoCluster; + + G4RPGPionSuppression pionSuppression; + + G4RPGStrangeProduction strangeProduction; + + G4RPGTwoBody twoBody; + + private: + + G4double cache; + G4ThreeVector what; + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGKLongInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGKLongInelastic.hh new file mode 100644 index 0000000000..6154149f2a --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGKLongInelastic.hh @@ -0,0 +1,78 @@ +// +// ******************************************************************** +// * 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: G4RPGKLongInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for K0L inelastic scattering +// using the re-parameterized Gheisha model. + + +#ifndef G4RPGKLongInelastic_h +#define G4RPGKLongInelastic_h 1 + +#include "G4RPGInelastic.hh" +#include "G4RPGKZeroInelastic.hh" +#include "G4RPGAntiKZeroInelastic.hh" +#include "Randomize.hh" + + +class G4RPGKLongInelastic : public G4RPGInelastic +{ + public: + G4RPGKLongInelastic() : G4RPGInelastic("G4RPGKLongInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + virtual ~G4RPGKLongInelastic(){ } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus ) + { + if(G4UniformRand() < 0.50) + { + return theKZeroInelastic.ApplyYourself(aTrack, targetNucleus); + } + else + { + return theAntiKZeroInelastic.ApplyYourself(aTrack, targetNucleus); + } + } + + G4RPGKZeroInelastic theKZeroInelastic; + G4RPGAntiKZeroInelastic theAntiKZeroInelastic; + + +}; +#endif + + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGKMinusInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGKMinusInelastic.hh new file mode 100644 index 0000000000..450e01aa5d --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGKMinusInelastic.hh @@ -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: G4RPGKMinusInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + + +#ifndef G4RPGKMinusInelastic_h +#define G4RPGKMinusInelastic_h 1 + +// Class Description: +// Final state production model for K- inelastic scattering +// using the re-parameterized Gheisha model. + +#include "G4RPGInelastic.hh" + + + class G4RPGKMinusInelastic : public G4RPGInelastic + { + public: + + G4RPGKMinusInelastic() : G4RPGInelastic("G4RPGKMinusInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGKMinusInelastic() + { } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASKM + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGKPlusInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGKPlusInelastic.hh new file mode 100644 index 0000000000..e2a8a1a730 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGKPlusInelastic.hh @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * 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: G4RPGKPlusInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +#ifndef G4RPGKPlusInelastic_h +#define G4RPGKPlusInelastic_h 1 + +// Class Description: +// Final state production model for K+ inelastic scattering +// using the re-parameterized Gheisha model. + +#include "G4RPGInelastic.hh" + + class G4RPGKPlusInelastic : public G4RPGInelastic + { + public: + + G4RPGKPlusInelastic() : G4RPGInelastic("G4RPGKPlusInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGKPlusInelastic() + { } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASKP + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGKShortInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGKShortInelastic.hh new file mode 100644 index 0000000000..44b3a9d023 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGKShortInelastic.hh @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * 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: G4RPGKShortInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for K0L inelastic scattering +// using the re-parameterized Gheisha model. + + +#ifndef G4RPGKShortInelastic_h +#define G4RPGKShortInelastic_h 1 + +#include "G4RPGInelastic.hh" +#include "G4RPGKZeroInelastic.hh" +#include "G4RPGAntiKZeroInelastic.hh" +#include "Randomize.hh" + + +class G4RPGKShortInelastic : public G4RPGInelastic +{ + public: + G4RPGKShortInelastic() : G4RPGInelastic("G4RPGKShortInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + virtual ~G4RPGKShortInelastic(){ } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus ) + { + if(G4UniformRand() < 0.50) + { + return theKZeroInelastic.ApplyYourself(aTrack, targetNucleus); + } + else + { + return theAntiKZeroInelastic.ApplyYourself(aTrack, targetNucleus); + } + } + + private: + G4RPGKZeroInelastic theKZeroInelastic; + G4RPGAntiKZeroInelastic theAntiKZeroInelastic; + + +}; +#endif diff --git a/source/processes/hadronic/models/rpg/include/G4RPGKZeroInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGKZeroInelastic.hh new file mode 100644 index 0000000000..faae21b7e4 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGKZeroInelastic.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * 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: G4RPGKZeroInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for K0 inelastic scattering using the +// re-parameterized Gheisha model. This is a utility class only and +// should be used in a physics list. + +#ifndef G4RPGKZeroInelastic_h +#define G4RPGKZeroInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGKZeroInelastic : public G4RPGInelastic + { + public: + + G4RPGKZeroInelastic() : G4RPGInelastic("G4RPGKZeroInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGKZeroInelastic() + { } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASK0 + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGLambdaInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGLambdaInelastic.hh new file mode 100644 index 0000000000..06550b3ed6 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGLambdaInelastic.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * 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: G4RPGLambdaInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for lambda inelastic scattering +// using the re-parameterized Gheisha model. + + +#ifndef G4RPGLambdaInelastic_h +#define G4RPGLambdaInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + + class G4RPGLambdaInelastic : public G4RPGInelastic + { + public: + + G4RPGLambdaInelastic() : G4RPGInelastic("G4RPGLambdaInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGLambdaInelastic() { } + + G4HadFinalState* ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASL0 + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGNeutronInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGNeutronInelastic.hh new file mode 100644 index 0000000000..e0769b39db --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGNeutronInelastic.hh @@ -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: G4RPGNeutronInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// +// Final state production model for neutron inelastic scattering +// using the re-parameterized Gheisha model. + +#ifndef G4RPGNeutronInelastic_h +#define G4RPGNeutronInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + + class G4RPGNeutronInelastic : public G4RPGInelastic + { + public: // with description + + G4RPGNeutronInelastic() : G4RPGInelastic("G4RPGNeutronInelastic") + { + SetMinEnergy(0.0); + SetMaxEnergy(35.*GeV); + } + + ~G4RPGNeutronInelastic() + { } + + G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack, + G4Nucleus& targetNucleus); + + private: + + void Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile* originalIncident, + G4ReactionProduct& currentParticle, + G4ReactionProduct& targetParticle, + G4bool& incidentHasChanged, + G4bool& targetHasChanged, + G4bool& quasiElastic); + + void SlowNeutron( + const G4HadProjectile* originalIncident, + G4ReactionProduct& modifiedOriginal, + G4ReactionProduct& targetParticle, + G4Nucleus& targetNucleus); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGOmegaMinusInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGOmegaMinusInelastic.hh new file mode 100644 index 0000000000..29a5aacd64 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGOmegaMinusInelastic.hh @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * 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: G4RPGOmegaMinusInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for omega- inelastic scattering +// using the re-parameterized Gheisha model. + + +#ifndef G4RPGOmegaMinusInelastic_h +#define G4RPGOmegaMinusInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGOmegaMinusInelastic : public G4RPGInelastic + { + public: + + G4RPGOmegaMinusInelastic() : G4RPGInelastic("G4RPGOmegaMinusInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGOmegaMinusInelastic() { } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASOM + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGPiMinusInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGPiMinusInelastic.hh new file mode 100644 index 0000000000..e3df17abaf --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGPiMinusInelastic.hh @@ -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: G4RPGPiMinusInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D.H. Wright +// Date: 26 May 2007 +// + +#ifndef G4RPGPiMinusInelastic_h +#define G4RPGPiMinusInelastic_h 1 + +// Class Description +// Final state production model for pi- inelastic scattering +// using the re-parameterized Gheisha model. + +#include "G4RPGInelastic.hh" + + class G4RPGPiMinusInelastic : public G4RPGInelastic + { + public: + + G4RPGPiMinusInelastic() : G4RPGInelastic("G4RPGPiMinusInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 55.*GeV ); + } + + ~G4RPGPiMinusInelastic() { } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASPIM + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGPiPlusInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGPiPlusInelastic.hh new file mode 100644 index 0000000000..42dbd0f2df --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGPiPlusInelastic.hh @@ -0,0 +1,71 @@ +// +// ******************************************************************** +// * 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: G4RPGPiPlusInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 26 May 2007 +// + +#ifndef G4RPGPiPlusInelastic_h +#define G4RPGPiPlusInelastic_h 1 + +// Class Description: +// Final state production model for pi+ inelastic scattering +// using the re-parameterized Gheisha model + +#include "G4RPGInelastic.hh" + + class G4RPGPiPlusInelastic : public G4RPGInelastic + { + public: + + G4RPGPiPlusInelastic() : G4RPGInelastic("G4RPGPiPlusInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 55.*GeV ); + } + + ~G4RPGPiPlusInelastic() { } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASPIP + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGPionSuppression.hh b/source/processes/hadronic/models/rpg/include/G4RPGPionSuppression.hh new file mode 100644 index 0000000000..c81e2da190 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGPionSuppression.hh @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * 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: G4RPGPionSuppression.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D.H. Wright +// Date: 30 May 2007 +// + +#ifndef G4RPGPionSuppression_h +#define G4RPGPionSuppression_h 1 + +// Class Description: +// +// Suppression of charged pions as a function of energy + + +#include "G4RPGReaction.hh" +#include "G4DynamicParticle.hh" +#include "G4ReactionProduct.hh" +#include "G4Nucleus.hh" +#include "G4FastVector.hh" +#include "G4HadProjectile.hh" + + + class G4RPGPionSuppression : public G4RPGReaction + { + public: // with description + + G4RPGPionSuppression(); + + G4bool ReactionStage(const G4HadProjectile* /*originalIncident*/, + G4ReactionProduct& /*modifiedOriginal*/, + G4bool& /*incidentHasChanged*/, + const G4DynamicParticle* /*originalTarget*/, + G4ReactionProduct& /*targetParticle*/, + G4bool& /*targetHasChanged*/, + const G4Nucleus& /*targetNucleus*/, + G4ReactionProduct& /*currentParticle*/, + G4FastVector& /*vec*/, + G4int& /*vecLen*/, + G4bool /*leadFlag*/, + G4ReactionProduct& /*leadingStrangeParticle*/); + + + private: + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGProtonInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGProtonInelastic.hh new file mode 100644 index 0000000000..511422c5b7 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGProtonInelastic.hh @@ -0,0 +1,78 @@ +// +// ******************************************************************** +// * 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: G4RPGProtonInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 26 May 2007 +// + +// Class Description: +// +// Final state production model for proton inelastic scattering +// using the re-parameterized Gheisha model. + +#ifndef G4RPGProtonInelastic_h +#define G4RPGProtonInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + + class G4RPGProtonInelastic : public G4RPGInelastic + { + public: // with description + + G4RPGProtonInelastic() : G4RPGInelastic("G4RPGProtonInelastic") + { + SetMinEnergy(0.0); + SetMaxEnergy(35.*GeV); + } + + ~G4RPGProtonInelastic() + { } + + G4HadFinalState * ApplyYourself(const G4HadProjectile& aTrack, + G4Nucleus& targetNucleus); + + private: + + void Cascade(G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile* originalIncident, + G4ReactionProduct& currentParticle, + G4ReactionProduct& targetParticle, + G4bool& incidentHasChanged, + G4bool& targetHasChanged, + G4bool& quasiElastic); + + void SlowProton(const G4HadProjectile* originalIncident, + G4Nucleus& targetNucleus); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGReaction.hh b/source/processes/hadronic/models/rpg/include/G4RPGReaction.hh new file mode 100644 index 0000000000..e9e1f4ed61 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGReaction.hh @@ -0,0 +1,133 @@ +// +// ******************************************************************** +// * 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: G4RPGReaction.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 26 May 2007 +// + +#ifndef G4RPGReaction_h +#define G4RPGReaction_h 1 + +// Class Description: +// +// Base class providing methods for various stages of the re-parameterized +// Gheisha model calculation of primary and secondary final state momenta + +#include "G4DynamicParticle.hh" +#include "G4ReactionProduct.hh" +#include "G4Nucleus.hh" +#include "G4FastVector.hh" +#include "G4HadProjectile.hh" + + +class G4RPGReaction +{ +public: // with description + + G4RPGReaction() {} + + virtual ~G4RPGReaction() {} + + G4bool ReactionStage(const G4HadProjectile* /*originalIncident*/, + G4ReactionProduct& /*modifiedOriginal*/, + G4bool& /*incidentHasChanged*/, + const G4DynamicParticle* /*originalTarget*/, + G4ReactionProduct& /*targetParticle*/, + G4bool& /*targetHasChanged*/, + const G4Nucleus& /*targetNucleus*/, + G4ReactionProduct& /*currentParticle*/, + G4FastVector& /*vec*/, + G4int& /*vecLen*/, + G4bool /*leadFlag*/, + G4ReactionProduct& /*leadingStrangeParticle*/); + + + void AddBlackTrackParticles(const G4double /*epnb*/, + const G4int /*npnb*/, + const G4double /*edta*/, + const G4int /*ndta*/, + const G4double /*sprob*/, + const G4double /*kineticMinimum*/, + const G4double /*kineticFactor*/, + const G4ReactionProduct& /*modifiedOriginal*/, + G4int /*PinNucleus*/, + G4int /*NinNucleus*/, + const G4Nucleus& /*aNucleus*/, + G4FastVector& /*vec*/, + G4int& /*vecLen*/ ); + + + G4double GenerateNBodyEvent(const G4double totalEnergy, + const G4bool constantCrossSection, + G4FastVector &vec, + G4int& vecLen); + + void NuclearReaction(G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile* originalIncident, + const G4Nucleus& aNucleus, + const G4double theAtomicMass, + const G4double* massVec); + +protected: // with description + + void Rotate(const G4double numberofFinalStateNucleons, + const G4ThreeVector& temp, + const G4ReactionProduct& modifiedOriginal, + const G4HadProjectile* originalIncident, + const G4Nucleus& targetNucleus, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4FastVector &vec, + G4int& vecLen ); + + void Defs1(const G4ReactionProduct& modifiedOriginal, + G4ReactionProduct& currentParticle, + G4ReactionProduct& targetParticle, + G4FastVector &vec, + G4int& vecLen); + + std::pair GetFinalStateNucleons( + const G4DynamicParticle* originalTarget, + const G4FastVector& vec, + const G4int& vecLen ); + + void MomentumCheck(const G4ReactionProduct &modifiedOriginal, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4FastVector &vec, + G4int& vecLen); + + G4double normal(); + + G4ThreeVector Isotropic(const G4double&); + +}; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGSigmaMinusInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGSigmaMinusInelastic.hh new file mode 100644 index 0000000000..3fc07b5d80 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGSigmaMinusInelastic.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * 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: G4RPGSigmaMinusInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for sigma- inelastic scattering +// using the re-parameterized Gheisha model. + + +#ifndef G4RPGSigmaMinusInelastic_h +#define G4RPGSigmaMinusInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGSigmaMinusInelastic : public G4RPGInelastic + { + public: + + G4RPGSigmaMinusInelastic() : G4RPGInelastic("G4RPGSigmaMinusInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGSigmaMinusInelastic() + { } + + G4HadFinalState* ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASSM + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGSigmaPlusInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGSigmaPlusInelastic.hh new file mode 100644 index 0000000000..89edaab111 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGSigmaPlusInelastic.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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: G4RPGSigmaPlusInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for sigma+ inelastic scattering +// using the re-parameterized Gheisha model. + +#ifndef G4RPGSigmaPlusInelastic_h +#define G4RPGSigmaPlusInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGSigmaPlusInelastic : public G4RPGInelastic + { + public: + + G4RPGSigmaPlusInelastic() : G4RPGInelastic("G4RPGSigmaPlusInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGSigmaPlusInelastic() { } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASSM + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGStrangeProduction.hh b/source/processes/hadronic/models/rpg/include/G4RPGStrangeProduction.hh new file mode 100644 index 0000000000..679aa95399 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGStrangeProduction.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * 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: G4RPGStrangeProduction.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D.H. Wright +// Date: 30 May 2007 +// + +#ifndef G4RPGStrangeProduction_h +#define G4RPGStrangeProduction_h 1 + +// Class Description: +// +// Strange particle pair production is calculated with resulting pairs +// replacing non-strange particles in the reaction. + + +#include "G4RPGReaction.hh" +#include "G4DynamicParticle.hh" +#include "G4ReactionProduct.hh" +#include "G4Nucleus.hh" +#include "G4FastVector.hh" +#include "G4HadProjectile.hh" + + + class G4RPGStrangeProduction : public G4RPGReaction + { + public: // with description + + G4RPGStrangeProduction(); + + G4bool ReactionStage(const G4HadProjectile* /*originalIncident*/, + G4ReactionProduct& /*modifiedOriginal*/, + G4bool& /*incidentHasChanged*/, + const G4DynamicParticle* /*originalTarget*/, + G4ReactionProduct& /*targetParticle*/, + G4bool& /*targetHasChanged*/, + const G4Nucleus& /*targetNucleus*/, + G4ReactionProduct& /*currentParticle*/, + G4FastVector& /*vec*/, + G4int& /*vecLen*/, + G4bool /*leadFlag*/, + G4ReactionProduct& /*leadingStrangeParticle*/); + + + private: + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGTwoBody.hh b/source/processes/hadronic/models/rpg/include/G4RPGTwoBody.hh new file mode 100644 index 0000000000..166617a2a3 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGTwoBody.hh @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * 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: G4RPGTwoBody.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D.H. Wright +// Date: 30 May 2007 +// + +#ifndef G4RPGTwoBody_h +#define G4RPGTwoBody_h 1 + +// Class Description: +// +// Calculation of the hadron-nucleus interaction using simple two body +// scattering. This method is used if the fragmentation or two cluster +// methods fail or are inappropriate for the given energy. + + +#include "G4RPGReaction.hh" +#include "G4DynamicParticle.hh" +#include "G4ReactionProduct.hh" +#include "G4Nucleus.hh" +#include "G4FastVector.hh" +#include "G4HadProjectile.hh" + + + class G4RPGTwoBody : public G4RPGReaction + { + public: // with description + + G4RPGTwoBody(); + + G4bool ReactionStage(const G4HadProjectile* /*originalIncident*/, + G4ReactionProduct& /*modifiedOriginal*/, + G4bool& /*incidentHasChanged*/, + const G4DynamicParticle* /*originalTarget*/, + G4ReactionProduct& /*targetParticle*/, + G4bool& /*targetHasChanged*/, + const G4Nucleus& /*targetNucleus*/, + G4ReactionProduct& /*currentParticle*/, + G4FastVector& /*vec*/, + G4int& /*vecLen*/, + G4bool /*leadFlag*/, + G4ReactionProduct& /*leadingStrangeParticle*/); + + + private: + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGTwoCluster.hh b/source/processes/hadronic/models/rpg/include/G4RPGTwoCluster.hh new file mode 100644 index 0000000000..a447e1faea --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGTwoCluster.hh @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * 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: G4RPGTwoCluster.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D.H. Wright +// Date: 30 May 2007 +// + +#ifndef G4RPGTwoCluster_h +#define G4RPGTwoCluster_h 1 + +// Class Description: +// +// Calculation of the hadron-nucleus interaction using the two cluster +// model. This method is used if the fragmentation method fails or is +// inappropriate for the given energy. + + +#include "G4RPGReaction.hh" +#include "G4DynamicParticle.hh" +#include "G4ReactionProduct.hh" +#include "G4Nucleus.hh" +#include "G4FastVector.hh" +#include "G4HadProjectile.hh" + + + class G4RPGTwoCluster : public G4RPGReaction + { + public: // with description + + G4RPGTwoCluster(); + + G4bool ReactionStage(const G4HadProjectile* /*originalIncident*/, + G4ReactionProduct& /*modifiedOriginal*/, + G4bool& /*incidentHasChanged*/, + const G4DynamicParticle* /*originalTarget*/, + G4ReactionProduct& /*targetParticle*/, + G4bool& /*targetHasChanged*/, + const G4Nucleus& /*targetNucleus*/, + G4ReactionProduct& /*currentParticle*/, + G4FastVector& /*vec*/, + G4int& /*vecLen*/, + G4bool /*leadFlag*/, + G4ReactionProduct& /*leadingStrangeParticle*/); + + + private: + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGXiMinusInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGXiMinusInelastic.hh new file mode 100644 index 0000000000..8ec9cd6364 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGXiMinusInelastic.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * 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: G4RPGXiMinusInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for xi- inelastic scattering +// using the re-parameterized Gheisha model. + +#ifndef G4RPGXiMinusInelastic_h +#define G4RPGXiMinusInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGXiMinusInelastic : public G4RPGInelastic + { + public: + + G4RPGXiMinusInelastic() : G4RPGInelastic("G4RPGXiMinusInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGXiMinusInelastic() { } + + G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASXM + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/include/G4RPGXiZeroInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGXiZeroInelastic.hh new file mode 100644 index 0000000000..b37006a3a9 --- /dev/null +++ b/source/processes/hadronic/models/rpg/include/G4RPGXiZeroInelastic.hh @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * 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: G4RPGXiZeroInelastic.hh,v 1.1 2007/07/18 20:51:37 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// Author: D. H. Wright +// Date: 18 June 2007 +// + +// Class Description: +// Final state production model for xi0 inelastic scattering +// using the re-parameterized Gheisha model. + + +#ifndef G4RPGXiZeroInelastic_h +#define G4RPGXiZeroInelastic_h 1 + + +#include "G4RPGInelastic.hh" + + class G4RPGXiZeroInelastic : public G4RPGInelastic + { + public: + + G4RPGXiZeroInelastic() : G4RPGInelastic("G4RPGXiZeroInelastic") + { + SetMinEnergy( 0.0 ); + SetMaxEnergy( 25.*GeV ); + } + + ~G4RPGXiZeroInelastic() + { } + + G4HadFinalState* ApplyYourself(const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ); + + private: + + void Cascade( // derived from CASX0 + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ); + + }; + +#endif + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGAntiKZeroInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGAntiKZeroInelastic.cc new file mode 100644 index 0000000000..9379e6b0ce --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGAntiKZeroInelastic.cc @@ -0,0 +1,507 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiKZeroInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGAntiKZeroInelastic.hh" +#include "Randomize.hh" +#include "G4HadReentrentException.hh" + + G4HadFinalState * + G4RPGAntiKZeroInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) + { + const G4HadProjectile *originalIncident = &aTrack; + // + // create the target particle + // + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGAntiKZeroInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + // + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + // + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + if( currentParticle.GetKineticEnergy()/MeV > cutOff ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + try + { + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + } + catch(G4HadReentrentException aR) + { + aR.Report(G4cout); + throw G4HadReentrentException(__FILE__, __LINE__, "Bailing out"); + } + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; + } + +void G4RPGAntiKZeroInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASK0B + // + // K0Long undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->Get4Momentum().e()/MeV; + const G4double pOriginal = originalIncident->Get4Momentum().vect().mag()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + + // np = number of pi+, nm = number of pi-, nz = number of pi0 + + G4int counter, nt=0, np=0, nm=0, nz=0; + const G4double c = 1.25; + const G4double b[] = { 0.7, 0.7 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); + G4ParticleDefinition *aKaonZS = G4KaonZeroShort::KaonZeroShort(); + G4ParticleDefinition *aKaonZL = G4KaonZeroLong::KaonZeroLong(); + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); + G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); + G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); + G4ParticleDefinition *aLambda = G4Lambda::Lambda(); + G4ParticleDefinition *aSigmaPlus = G4SigmaPlus::SigmaPlus(); + G4ParticleDefinition *aSigmaMinus = G4SigmaMinus::SigmaMinus(); + G4ParticleDefinition *aSigmaZero = G4SigmaZero::SigmaZero(); + const G4double cech[] = {1.,1.,1.,0.70,0.60,0.55,0.35,0.25,0.18,0.15}; + G4int iplab = G4int(std::min( 9.0, 5.0*pOriginal*MeV/GeV )); + + if( (pOriginal*MeV/GeV <= 2.0) && (G4UniformRand() < cech[iplab]) ) + { + np = nm = nz = nt = 0; + iplab = G4int(std::min( 19.0, pOriginal*MeV/GeV*10.0 )); + const G4double cnk0[] = {0.17,0.18,0.17,0.24,0.26,0.20,0.22,0.21,0.34,0.45, + 0.58,0.55,0.36,0.29,0.29,0.32,0.32,0.33,0.33,0.33}; + if( G4UniformRand() > cnk0[iplab] ) + { + G4double ran = G4UniformRand(); + if( ran < 0.25 ) // k0Long n --> pi- s+ + { + if( targetParticle.GetDefinition() == aNeutron ) + { + currentParticle.SetDefinitionAndUpdateE( aPiMinus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + else if( ran < 0.50 ) // k0Long p --> pi+ s0 or k0Long n --> pi0 s0 + { + if( targetParticle.GetDefinition() == aNeutron ) + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + else + currentParticle.SetDefinitionAndUpdateE( aPiPlus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + targetHasChanged = true; + } + else if( ran < 0.75 ) // k0Long n --> pi+ s- + { + if( targetParticle.GetDefinition() == aNeutron ) + { + currentParticle.SetDefinitionAndUpdateE( aPiPlus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaMinus ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + else // k0Long p --> pi+ L or k0Long n --> pi0 L + { + if( targetParticle.GetDefinition() == aNeutron ) + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + else + currentParticle.SetDefinitionAndUpdateE( aPiPlus ); + targetParticle.SetDefinitionAndUpdateE( aLambda ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + else // ran <= cnk0 + { + quasiElastic = true; + if( targetParticle.GetDefinition() == aNeutron ) + { + currentParticle.SetDefinitionAndUpdateE( aKaonMinus ); + targetParticle.SetDefinitionAndUpdateE( aProton ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + } + else // (pOriginal > 2.0*GeV) || (random number >= cech[iplab]) + { + if( availableEnergy < aPiPlus->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, test, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; (np=excs); ++np ) + { + for( nm=std::max(0,np-2); nm<=np && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + switch( np-nm ) + { + case 1: + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aKaonMinus ); + incidentHasChanged = true; + } + else + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + case 0: + break; + default: + currentParticle.SetDefinitionAndUpdateE( aKaonMinus ); + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + targetHasChanged = true; + break; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + switch( np-nm ) + { + case 0: + currentParticle.SetDefinitionAndUpdateE( aKaonMinus ); + targetParticle.SetDefinitionAndUpdateE( aProton ); + incidentHasChanged = true; + targetHasChanged = true; + break; + case 1: + currentParticle.SetDefinitionAndUpdateE( aKaonMinus ); + incidentHasChanged = true; + break; + default: + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + break; + } + } + if( G4UniformRand() >= 0.5 ) + { + if( currentParticle.GetDefinition() == aKaonMinus && + targetParticle.GetDefinition() == aNeutron ) + { + ran = G4UniformRand(); + if( ran < 0.68 ) + { + currentParticle.SetDefinitionAndUpdateE( aPiMinus ); + targetParticle.SetDefinitionAndUpdateE( aLambda ); + } + else if( ran < 0.84 ) + { + currentParticle.SetDefinitionAndUpdateE( aPiMinus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaZero ); + } + else + { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aSigmaMinus ); + } + } + else if( (currentParticle.GetDefinition() == aKaonZS || + currentParticle.GetDefinition() == aKaonZL ) && + targetParticle.GetDefinition() == aProton ) + { + ran = G4UniformRand(); + if( ran < 0.68 ) + { + currentParticle.SetDefinitionAndUpdateE( aPiPlus ); + targetParticle.SetDefinitionAndUpdateE( aLambda ); + } + else if( ran < 0.84 ) + { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + } + else + { + currentParticle.SetDefinitionAndUpdateE( aPiPlus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaZero ); + } + } + else + { + ran = G4UniformRand(); + if( ran < 0.67 ) + { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aLambda ); + } + else if( ran < 0.78 ) + { + currentParticle.SetDefinitionAndUpdateE( aPiMinus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + } + else if( ran < 0.89 ) + { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aSigmaZero ); + } + else + { + currentParticle.SetDefinitionAndUpdateE( aPiPlus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaMinus ); + } + } + incidentHasChanged = true; + targetHasChanged = true; + } + } + if( currentParticle.GetDefinition() == aKaonZL ) + { + if( G4UniformRand() >= 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aKaonZS ); + incidentHasChanged = true; + } + } + if( targetParticle.GetDefinition() == aKaonZL ) + { + if( G4UniformRand() >= 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aKaonZS ); + targetHasChanged = true; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGAntiLambdaInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGAntiLambdaInelastic.cc new file mode 100644 index 0000000000..c0f0ec78ee --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGAntiLambdaInelastic.cc @@ -0,0 +1,642 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiLambdaInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGAntiLambdaInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGAntiLambdaInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + + // Choose the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGAntiLambdaInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + const G4double anni = std::min( 1.3*currentParticle.GetTotalMomentum()/GeV, 0.4 ); + if( (originalIncident->GetKineticEnergy()/MeV > cutOff) || (G4UniformRand() > anni) ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGAntiLambdaInelastic::Cascade( + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASAL0 + // AntiLambda undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + const G4double pOriginal = originalIncident->GetTotalMomentum()/GeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + + static G4bool first = true; + const G4int numMul = 1200; + const G4int numMulA = 400; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + static G4double protmulA[numMulA], protnormA[numSec]; // proton constants + static G4double neutmulA[numMulA], neutnormA[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.7, 0.7 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + // + // do the same for annihilation channels + // + for( i=0; i1 && nt<=numSec ) + { + protmulA[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnormA[nt-1] += protmulA[counter]; + } + } + } + } + for( i=0; i1 && nt<=numSec ) + { + neutmulA[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnormA[nt-1] += neutmulA[counter]; + } + } + } + } + for( i=0; i 0.0 )protnormA[i] = 1.0/protnormA[i]; + if( neutnormA[i] > 0.0 )neutnormA[i] = 1.0/neutnormA[i]; + } + } // end of initialization + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); + G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); + G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); + G4ParticleDefinition *aKaonPlus = G4KaonPlus::KaonPlus(); + G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); + G4ParticleDefinition *aKaonZL = G4KaonZeroLong::KaonZeroLong(); + G4ParticleDefinition *anAntiSigmaZero = G4AntiSigmaZero::AntiSigmaZero(); + G4ParticleDefinition *anAntiSigmaPlus = G4AntiSigmaPlus::AntiSigmaPlus(); + G4ParticleDefinition *anAntiSigmaMinus = G4AntiSigmaMinus::AntiSigmaMinus(); + const G4double anhl[] = {1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.97,0.88, + 0.85,0.81,0.75,0.64,0.64,0.55,0.55,0.45,0.47,0.40, + 0.39,0.36,0.33,0.10,0.01}; + G4int iplab = G4int( pOriginal*10.0 ); + if( iplab > 9 )iplab = G4int( (pOriginal- 1.0)*5.0 ) + 10; + if( iplab > 14 )iplab = G4int( pOriginal- 2.0 ) + 15; + if( iplab > 22 )iplab = G4int( (pOriginal-10.0)/10.0 ) + 23; + if( iplab > 24 )iplab = 24; + if( G4UniformRand() > anhl[iplab] ) + { + if( availableEnergy <= aPiPlus->GetPDGMass()/MeV ) + { // not energetically possible to produce pion(s) + quasiElastic = true; + return; + } + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + G4int counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-2); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + G4int ncht = std::min( 4, std::max( 1, np-nm+2 ) ); + switch( ncht ) + { + case 1: + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaMinus ); + incidentHasChanged = true; + break; + case 2: + if( G4UniformRand() < 0.5 ) + { + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + incidentHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaMinus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + } + else + { + if( G4UniformRand() >= 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaMinus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + } + break; + case 3: + if( G4UniformRand() < 0.5 ) + { + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaPlus ); + incidentHasChanged = true; + } + } + else + { + if( G4UniformRand() < 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaPlus ); + incidentHasChanged = true; + } + } + break; + case 4: + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaPlus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + break; + } + } + else // target must be a neutron + { + G4int counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + G4int ncht = std::min( 4, std::max( 1, np-nm+3 ) ); + switch( ncht ) + { + case 1: + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaMinus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + break; + case 2: + if( G4UniformRand() < 0.5 ) + { + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaMinus ); + incidentHasChanged = true; + } + } + else + { + if( G4UniformRand() < 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaMinus ); + incidentHasChanged = true; + } + } + break; + case 3: + if( G4UniformRand() < 0.5 ) + { + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + incidentHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaPlus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + else + { + if( G4UniformRand() >= 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaPlus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + break; + default: + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaPlus ); + incidentHasChanged = true; + break; + } + } + } + else // random number <= anhl[iplab] + { + if( centerofmassEnergy <= aPiPlus->GetPDGMass()/MeV+aKaonPlus->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + // + // annihilation channels + // + G4double n, anpn; + GetNormalizationConstant( -centerofmassEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + G4int counter = -1; + for( np=1; np=excs; ++np ) + { + nm = np-1; + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMulA ) + { + nt = np+nm+nz; + if( nt>1 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmulA[counter]*protnormA[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + else // target must be a neutron + { + G4int counter = -1; + for( np=0; np=excs; ++np ) + { + nm = np; + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMulA ) + { + nt = np+nm+nz; + if( nt>1 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmulA[counter]*neutnormA[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nz--; + currentParticle.SetMass( 0.0 ); + targetParticle.SetMass( 0.0 ); + } + SetUpPions( np, nm, nz, vec, vecLen ); + if( currentParticle.GetMass() == 0.0 ) + { + if( nz == 0 ) + { + if( nm > 0 ) + { + for( G4int i=0; iGetDefinition() == aPiMinus ) + { + vec[i]->SetDefinitionAndUpdateE( aKaonMinus ); + break; + } + } + } + } + else // nz > 0 + { + if( nm == 0 ) + { + for( G4int i=0; iGetDefinition() == aPiZero ) + { + vec[i]->SetDefinitionAndUpdateE( aKaonZL ); + break; + } + } + } + else // nm > 0 + { + if( G4UniformRand() < 0.5 ) + { + if( nm > 0 ) + { + for( G4int i=0; iGetDefinition() == aPiMinus ) + { + vec[i]->SetDefinitionAndUpdateE( aKaonMinus ); + break; + } + } + } + } + else // random number >= 0.5 + { + for( G4int i=0; iGetDefinition() == aPiZero ) + { + vec[i]->SetDefinitionAndUpdateE( aKaonZL ); + break; + } + } + } + } + } + } + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGAntiNeutronInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGAntiNeutronInelastic.cc new file mode 100644 index 0000000000..31c2a152f2 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGAntiNeutronInelastic.cc @@ -0,0 +1,532 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiNeutronInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGAntiNeutronInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGAntiNeutronInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + + // create the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGAntiNeutronInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + // + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + // + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1*MeV; + const G4double anni = std::min( 1.3*currentParticle.GetTotalMomentum()/GeV, 0.4 ); + + if( (currentParticle.GetKineticEnergy()/MeV > cutOff) || + (G4UniformRand() > anni) ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + else + quasiElastic = true; + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGAntiNeutronInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASNB + // AntiNeutron undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double pOriginal = originalIncident->GetTotalMomentum()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + + static G4bool first = true; + const G4int numMul = 1200; + const G4int numMulA = 400; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + static G4double protmulA[numMulA], protnormA[numSec]; // proton constants + static G4double neutmulA[numMulA], neutnormA[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.70, 0.70 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0) && (nt<=numSec) ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + // + // do the same for annihilation channels + // + for( i=0; i1 && nt<=numSec ) + { + protmulA[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnormA[nt-1] += protmulA[counter]; + } + } + } + } + for( i=0; i1 && nt<=numSec ) + { + neutmulA[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnormA[nt-1] += neutmulA[counter]; + } + } + } + } + for( i=0; i 0.0 )protnormA[i] = 1.0/protnormA[i]; + if( neutnormA[i] > 0.0 )neutnormA[i] = 1.0/neutnormA[i]; + } + } // end of initialization + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *anAntiProton = G4AntiProton::AntiProton(); + G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); + + // energetically possible to produce pion(s) --> inelastic scattering + // otherwise quasi-elastic scattering + + const G4double anhl[] = {1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.97,0.88, + 0.85,0.81,0.75,0.64,0.64,0.55,0.55,0.45,0.47,0.40, + 0.39,0.36,0.33,0.10,0.01}; + G4int iplab = G4int( pOriginal/GeV*10.0 ); + if( iplab > 9 )iplab = G4int( (pOriginal/GeV- 1.0)*5.0 ) + 10; + if( iplab > 14 )iplab = G4int( pOriginal/GeV- 2.0 ) + 15; + if( iplab > 22 )iplab = G4int( (pOriginal/GeV-10.0)/10.0 ) + 23; + if( iplab > 24 )iplab = 24; + if( G4UniformRand() > anhl[iplab] ) + { + if( availableEnergy <= aPiPlus->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + G4int ieab = static_cast(availableEnergy*5.0/GeV); + const G4double supp[] = {0.,0.4,0.55,0.65,0.75,0.82,0.86,0.90,0.94,0.98}; + G4double w0, wp, wt, wm; + if( (availableEnergy < 2.0*GeV) && (G4UniformRand() >= supp[ieab]) ) + { + // suppress high multiplicity events at low momentum + // only one pion will be produced + // + np = nm = nz = 0; + if( targetParticle.GetDefinition() == aProton ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(1.0+b[0])*(1.0+b[0])/(2.0*c*c) ) ) ); + w0 = test; + wp = test; + if( G4UniformRand() < w0/(w0+wp) ) + nz = 1; + else + np = 1; + } + else // target is a neutron + { + test = std::exp( std::min( expxu, std::max( expxl, -(1.0+b[1])*(1.0+b[1])/(2.0*c*c) ) ) ); + w0 = test; + wp = test; + test = std::exp( std::min( expxu, std::max( expxl, -(-1.0+b[1])*(-1.0+b[1])/(2.0*c*c) ) ) ); + wm = test; + wt = w0+wp+wm; + wp += w0; + G4double ran = G4UniformRand(); + if( ran < w0/wt ) + nz = 1; + else if( ran < wp/wt ) + np = 1; + else + nm = 1; + } + } + else // (availableEnergy >= 2.0*GeV) || (random number < supp[ieab]) + { + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-2); nm<=np && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt > 0 ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( (nt>=1) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + } + } + if( targetParticle.GetDefinition() == aProton ) + { + switch( np-nm ) + { + case 1: + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiProton ); + incidentHasChanged = true; + } + else + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + break; + case 2: + currentParticle.SetDefinitionAndUpdateE( anAntiProton ); + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + targetHasChanged = true; + break; + default: + break; + } + } + else // target must be a neutron + { + switch( np-nm ) + { + case 0: + if( G4UniformRand() < 0.33 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiProton ); + targetParticle.SetDefinitionAndUpdateE( aProton ); + incidentHasChanged = true; + targetHasChanged = true; + } + break; + case 1: + currentParticle.SetDefinitionAndUpdateE( anAntiProton ); + incidentHasChanged = true; + break; + default: + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + break; + } + } + } + else // random number <= anhl[iplab] + { + if( centerofmassEnergy <= 2*aPiPlus->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + // + // annihilation channels + // + G4double n, anpn; + GetNormalizationConstant( -centerofmassEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=1; (np=excs); ++np ) + { + nm = np-1; + for( nz=0; (nz=excs); ++nz ) + { + if( ++counter < numMulA ) + { + nt = np+nm+nz; + if( nt>1 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmulA[counter]*protnormA[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; (np=excs); ++np ) + { + nm = np; + for( nz=0; (nz=excs); ++nz ) + { + if( ++counter < numMulA ) + { + nt = np+nm+nz; + if( (nt>1) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmulA[counter]*neutnormA[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nz--; + currentParticle.SetMass( 0.0 ); + targetParticle.SetMass( 0.0 ); + } + while(np+nm+nz<3) nz++; + + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGAntiOmegaMinusInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGAntiOmegaMinusInelastic.cc new file mode 100644 index 0000000000..c12530c8b7 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGAntiOmegaMinusInelastic.cc @@ -0,0 +1,369 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiOmegaMinusInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// NOTE: The FORTRAN version of the cascade, CASAOM, simply called the +// routine for the OmegaMinus particle. Hence, the Cascade function +// below is just a copy of the Cascade from the OmegaMinus particle. + +#include "G4RPGAntiOmegaMinusInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGAntiOmegaMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // create the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + // + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + // + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + const G4double anni = std::min( 1.3*currentParticle.GetTotalMomentum()/GeV, 0.4 ); + + if( (currentParticle.GetKineticEnergy()/MeV > cutOff) || (G4UniformRand() > anni) ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGAntiOmegaMinusInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASOM + // AntiOmegaMinus undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; +// const G4double pOriginal = originalIncident->GetTotalMomentum()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV ) + { // not energetically possible to produce pion(s) + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.7, 0.7 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); + G4ParticleDefinition *aSigmaPlus = G4SigmaPlus::SigmaPlus(); + G4ParticleDefinition *aXiZero = G4XiZero::XiZero(); + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + G4int nvefix = 0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + // + // number of secondary mesons determined by kno distribution + // check for total charge of final state mesons to determine + // the kind of baryons to be produced, taking into account + // charge and strangeness conservation + // + if( np < nm ) + { + if( np+1 == nm ) + { + currentParticle.SetDefinitionAndUpdateE( aXiZero ); + incidentHasChanged = true; + nvefix = 1; + } + else // charge mismatch + { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + nvefix = 2; + } + } + else if( np > nm ) + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=np; nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + if( np+1 < nm ) + { + if( np+2 == nm ) + { + currentParticle.SetDefinitionAndUpdateE( aXiZero ); + incidentHasChanged = true; + nvefix = 1; + } + else // charge mismatch + { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + nvefix = 2; + } + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + else if( np+1 == nm ) + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + for( G4int i=0; i0; ++i ) + { + if( vec[i]->GetDefinition() == G4PionMinus::PionMinus() ) + { + // + // correct the strangeness by replacing a pi- by a kaon- + // + if( nvefix >= 1 )vec[i]->SetDefinitionAndUpdateE( aKaonMinus ); + --nvefix; + } + } + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGAntiProtonInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGAntiProtonInelastic.cc new file mode 100644 index 0000000000..e454b9b206 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGAntiProtonInelastic.cc @@ -0,0 +1,542 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiProtonInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGAntiProtonInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGAntiProtonInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile* originalIncident = &aTrack; + + if (originalIncident->GetKineticEnergy() <= 0.1*MeV) { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // + // create the target particle + // + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGAntiProtonInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + // + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + // + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + const G4double anni = std::min( 1.3*originalIncident->GetTotalMomentum()/GeV, 0.4 ); + + if( (currentParticle.GetKineticEnergy()/MeV > cutOff) || + (G4UniformRand() > anni) ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + else + quasiElastic = true; + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGAntiProtonInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASPB + // AntiProton undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double pOriginal = originalIncident->GetTotalMomentum()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + + static G4bool first = true; + const G4int numMul = 1200; + const G4int numMulA = 400; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + static G4double protmulA[numMulA], protnormA[numSec]; // proton constants + static G4double neutmulA[numMulA], neutnormA[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.7, 0.7 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0) && (nt<=numSec) ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + // + // do the same for annihilation channels + // + for( i=0; i1 && nt<=numSec ) + { + protmulA[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnormA[nt-1] += protmulA[counter]; + } + } + } + } + for( i=0; i1) && (nt<=numSec) ) + { + neutmulA[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnormA[nt-1] += neutmulA[counter]; + } + } + } + } + for( i=0; i 0.0 )protnormA[i] = 1.0/protnormA[i]; + if( neutnormA[i] > 0.0 )neutnormA[i] = 1.0/neutnormA[i]; + } + } // end of initialization + // + // initialization is OK + // + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *anAntiNeutron = G4AntiNeutron::AntiNeutron(); + G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); + + const G4double anhl[] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.90, + 0.6,0.52,0.47,0.44,0.41,0.39,0.37,0.35,0.34,0.24, + 0.19,0.15,0.12,0.10,0.09,0.07,0.06,0.05,0.0}; + + G4int iplab = G4int( pOriginal/GeV*10.0 ); + if( iplab > 9 )iplab = G4int( pOriginal/GeV ) + 9; + if( iplab > 18 )iplab = G4int( pOriginal/GeV/10.0 ) + 18; + if( iplab > 27 )iplab = 28; + if( G4UniformRand() > anhl[iplab] ) + { + if( availableEnergy <= aPiPlus->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + G4int ieab = static_cast(availableEnergy*5.0/GeV); + const G4double supp[] = {0.,0.4,0.55,0.65,0.75,0.82,0.86,0.90,0.94,0.98}; + G4double w0, wp, wt, wm; + if( (availableEnergy < 2.0*GeV) && (G4UniformRand() >= supp[ieab]) ) + { + // + // suppress high multiplicity events at low momentum + // only one pion will be produced + // + np = nm = nz = 0; + if( targetParticle.GetDefinition() == aProton ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(1.0+b[1])*(1.0+b[1])/(2.0*c*c) ) ) ); + w0 = test; + wp = test; + test = std::exp( std::min( expxu, std::max( expxl, -(-1.0+b[1])*(-1.0+b[1])/(2.0*c*c) ) ) ); + wm = test; + wt = w0+wp+wm; + wp += w0; + G4double ran = G4UniformRand(); + if( ran < w0/wt ) + nz = 1; + else if( ran < wp/wt ) + np = 1; + else + nm = 1; + } + else // target is a neutron + { + test = std::exp( std::min( expxu, std::max( expxl, -(1.0+b[0])*(1.0+b[0])/(2.0*c*c) ) ) ); + w0 = test; + test = std::exp( std::min( expxu, std::max( expxl, -(-1.0+b[0])*(-1.0+b[0])/(2.0*c*c) ) ) ); + wm = test; + G4double ran = G4UniformRand(); + if( ran < w0/(w0+wm) ) + nz = 1; + else + nm = 1; + } + } + else // (availableEnergy >= 2.0*GeV) || (random number < supp[ieab]) + { + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( (nt>0) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=np; nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( (nt>0) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + } + np--; nm--; nz--; + } + if( targetParticle.GetDefinition() == aProton ) + { + switch( np-nm ) + { + case 0: + if( G4UniformRand() < 0.33 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiNeutron ); + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + targetHasChanged = true; + } + break; + case 1: + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + break; + default: + currentParticle.SetDefinitionAndUpdateE( anAntiNeutron ); + incidentHasChanged = true; + break; + } + } + else // target must be a neutron + { + switch( np-nm ) + { + case -1: + if( G4UniformRand() < 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( anAntiNeutron ); + incidentHasChanged = true; + } + break; + case 0: + break; + default: + currentParticle.SetDefinitionAndUpdateE( anAntiNeutron ); + targetParticle.SetDefinitionAndUpdateE( aProton ); + incidentHasChanged = true; + targetHasChanged = true; + break; + } + } + } + else // random number <= anhl[iplab] + { + if( centerofmassEnergy <= 2*aPiPlus->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + // + // annihilation channels + // + G4double n, anpn; + GetNormalizationConstant( -centerofmassEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; (np=excs); ++np ) + { + nm = np; + for( nz=0; (nz=excs); ++nz ) + { + if( ++counter < numMulA ) + { + nt = np+nm+nz; + if( (nt>1) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmulA[counter]*protnormA[nt-1]/(2.0*n*n); + if( std::abs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; (np=excs); ++np ) + { + nm = np+1; + for( nz=0; (nz=excs); ++nz ) + { + if( ++counter < numMulA ) + { + nt = np+nm+nz; + if( (nt>1) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmulA[counter]*neutnormA[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nz--; + currentParticle.SetMass( 0.0 ); + targetParticle.SetMass( 0.0 ); + } + while(np+nm+nz<3) nz++; + + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGAntiSigmaMinusInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGAntiSigmaMinusInelastic.cc new file mode 100644 index 0000000000..b2bc5d9eb9 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGAntiSigmaMinusInelastic.cc @@ -0,0 +1,561 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiSigmaMinusInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGAntiSigmaMinusInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGAntiSigmaMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // Choose the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGAntiSigmaMinusInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + const G4double anni = std::min( 1.3*currentParticle.GetTotalMomentum()/GeV, 0.4 ); + if( (currentParticle.GetKineticEnergy()/MeV > cutOff) || (G4UniformRand() > anni) ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGAntiSigmaMinusInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASASM + // AntiSigmaMinus undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double pOriginal = originalIncident->GetTotalMomentum()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + + static G4bool first = true; + const G4int numMul = 1200; + const G4int numMulA = 400; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + static G4double protmulA[numMulA], protnormA[numSec]; // proton constants + static G4double neutmulA[numMulA], neutnormA[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[2] = { 0.7, 0.7 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + // + // do the same for annihilation channels + // + for( i=0; i1 && nt<=numSec ) + { + protmulA[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnormA[nt-1] += protmulA[counter]; + } + } + } + } + for( i=0; i1 && nt<=numSec ) + { + neutmulA[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnormA[nt-1] += neutmulA[counter]; + } + } + } + } + for( i=0; i 0.0 )protnormA[i] = 1.0/protnormA[i]; + if( neutnormA[i] > 0.0 )neutnormA[i] = 1.0/neutnormA[i]; + } + } // end of initialization + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); + G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); + G4ParticleDefinition *aKaonZL = G4KaonZeroLong::KaonZeroLong(); + G4ParticleDefinition *aKaonPlus = G4KaonPlus::KaonPlus(); + G4ParticleDefinition *anAntiLambda = G4AntiLambda::AntiLambda(); + G4ParticleDefinition *anAntiSigmaZero = G4AntiSigmaZero::AntiSigmaZero(); + const G4double anhl[] = {1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.97,0.88, + 0.85,0.81,0.75,0.64,0.64,0.55,0.55,0.45,0.47,0.40, + 0.39,0.36,0.33,0.10,0.01}; + G4int iplab = G4int( pOriginal/GeV*10.0 ); + if( iplab > 9 )iplab = G4int( (pOriginal/GeV- 1.0)*5.0 ) + 10; + if( iplab > 14 )iplab = G4int( pOriginal/GeV- 2.0 ) + 15; + if( iplab > 23 )iplab = G4int( (pOriginal/GeV-10.0)/10.0 ) + 23; + if( iplab > 24 )iplab = 24; + if( G4UniformRand() > anhl[iplab] ) + { + if( availableEnergy <= aPiPlus->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-2); nm<=np && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + G4int ncht = std::min( 3, std::max( 1, np-nm+1 ) ); + switch( ncht ) + { + case 1: + break; + case 2: + if( G4UniformRand() < 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + else + { + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( anAntiLambda ); + else + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + incidentHasChanged = true; + } + break; + case 3: + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( anAntiLambda ); + else + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + break; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + G4int ncht = std::min( 3, std::max( 1, np-nm+2 ) ); + switch( ncht ) + { + case 1: + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + break; + case 2: + if( G4UniformRand() < 0.5 ) + { + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiLambda ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + else + { + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + break; + case 3: + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( anAntiLambda ); + else + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + incidentHasChanged = true; + break; + } + } + } + else // random number <= anhl[iplab] + { + if( centerofmassEnergy <= aPiPlus->GetPDGMass()/MeV+aKaonPlus->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + G4double n, anpn; + GetNormalizationConstant( -centerofmassEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=2; np=excs; ++np ) + { + nm=np-2; + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMulA ) + { + nt = np+nm+nz; + if( nt>1 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmulA[counter]*protnormA[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nz--; + } + else // target must be a neutron + { + counter = -1; + for( np=1; np=excs; ++np ) + { + nm = np-1; + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMulA ) + { + nt = np+nm+nz; + if( nt>1 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmulA[counter]*neutnormA[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nz--; + } + if( nz > 0 ) + { + if( nm > 0 ) + { + if( G4UniformRand() < 0.5 ) + { + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonMinus ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nm; + } + else // random number >= 0.5 + { + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonZL ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nz; + } + } + else // nm == 0 + { + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonZL ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nz; + } + } + else // nz == 0 + { + if( nm > 0 ) + { + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonMinus ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nm; + } + } + currentParticle.SetMass( 0.0 ); + targetParticle.SetMass( 0.0 ); + } + + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGAntiSigmaPlusInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGAntiSigmaPlusInelastic.cc new file mode 100644 index 0000000000..662dad5add --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGAntiSigmaPlusInelastic.cc @@ -0,0 +1,563 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiSigmaPlusInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGAntiSigmaPlusInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGAntiSigmaPlusInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // Choose the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGAntiSigmaPlusInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + const G4double anni = std::min( 1.3*currentParticle.GetTotalMomentum()/GeV, 0.4 ); + if( (currentParticle.GetKineticEnergy()/MeV > cutOff) || (G4UniformRand() > anni) ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGAntiSigmaPlusInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASASP + // AntiSigmaPlus undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double pOriginal = originalIncident->GetTotalMomentum()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + + static G4bool first = true; + const G4int numMul = 1200; + const G4int numMulA = 400; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + static G4double protmulA[numMulA], protnormA[numSec]; // proton constants + static G4double neutmulA[numMulA], neutnormA[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.7, 0.7 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + // + // do the same for annihilation channels + // + for( i=0; i1 && nt<=numSec ) + { + protmulA[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnormA[nt-1] += protmulA[counter]; + } + } + } + } + for( i=0; i1 && nt<=numSec ) + { + neutmulA[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnormA[nt-1] += neutmulA[counter]; + } + } + } + } + for( i=0; i 0.0 )protnormA[i] = 1.0/protnormA[i]; + if( neutnormA[i] > 0.0 )neutnormA[i] = 1.0/neutnormA[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); + G4ParticleDefinition *anAntiLambda = G4AntiLambda::AntiLambda(); + G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); + G4ParticleDefinition *aKaonPlus = G4KaonPlus::KaonPlus(); + G4ParticleDefinition *aKaonZL = G4KaonZeroLong::KaonZeroLong(); + G4ParticleDefinition *anAntiSigmaZero = G4AntiSigmaZero::AntiSigmaZero(); + const G4double anhl[] = {1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.97,0.88, + 0.85,0.81,0.75,0.64,0.64,0.55,0.55,0.45,0.47,0.40, + 0.39,0.36,0.33,0.10,0.01}; + G4int iplab = G4int( pOriginal/GeV*10.0 ); + if( iplab > 9 )iplab = G4int( (pOriginal/GeV- 1.0)*5.0 ) + 10; + if( iplab > 14 )iplab = G4int( pOriginal/GeV- 2.0 ) + 15; + if( iplab > 22 )iplab = G4int( (pOriginal/GeV-10.0)/10.0 ) + 23; + if( iplab > 24 )iplab = 24; + if( G4UniformRand() > anhl[iplab] ) + { + if( availableEnergy <= aPiPlus->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( (nt>0) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + G4int ncht = std::min( 3, std::max( 1, np-nm+2 ) ); + switch( ncht ) + { + case 1: + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( anAntiLambda ); + else + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + incidentHasChanged = true; + break; + case 2: + if( G4UniformRand() >= 0.5 ) + { + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( anAntiLambda ); + else + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + incidentHasChanged = true; + } + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + break; + case 3: + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + break; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=np; nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( (nt>0) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + G4int ncht = std::min( 3, std::max( 1, np-nm+3 ) ); + switch( ncht ) + { + case 1: + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( anAntiLambda ); + else + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + break; + case 2: + if( G4UniformRand() < 0.5 ) + { + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiLambda ); + incidentHasChanged = true; + } + else + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + else + { + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + incidentHasChanged = true; + } + else + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + break; + case 3: + break; + } + } + } + else // random number <= anhl[iplab] + { + if( centerofmassEnergy <= aPiPlus->GetPDGMass()/MeV+aKaonPlus->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + G4double n, anpn; + GetNormalizationConstant( -centerofmassEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=1; np=excs; ++np ) + { + nm = np; + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMulA ) + { + nt = np+nm+nz; + if( nt>1 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmulA[counter]*protnormA[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nz--; + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + nm = np+1; + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMulA ) + { + nt = np+nm+nz; + if( nt>1 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmulA[counter]*neutnormA[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nz--; + } + if( nz > 0 ) + { + if( nm > 0 ) + { + if( G4UniformRand() < 0.5 ) + { + vec.Initialize( 1 ); + G4ReactionProduct *p= new G4ReactionProduct; + p->SetDefinition( aKaonMinus ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nm; + } + else + { + vec.Initialize( 1 ); + G4ReactionProduct *p= new G4ReactionProduct ; + p->SetDefinition( aKaonZL ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nz; + } + } + else // nm == 0 + { + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonZL ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nz; + } + } + else // nz == 0 + { + if( nm > 0 ) + { + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonMinus ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nm; + } + } + currentParticle.SetMass( 0.0 ); + targetParticle.SetMass( 0.0 ); + } + + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGAntiXiMinusInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGAntiXiMinusInelastic.cc new file mode 100644 index 0000000000..c74ba028eb --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGAntiXiMinusInelastic.cc @@ -0,0 +1,395 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiXiMinusInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// NOTE: The FORTRAN version of the cascade, CASAXM, simply called the +// routine for the XiMinus particle. Hence, the ApplyYourself function +// below is just a copy of the ApplyYourself from the XiMinus particle. + +#include "G4RPGAntiXiMinusInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGAntiXiMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // create the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGAntiXiMinusInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + // + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + // + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + const G4double anni = std::min( 1.3*currentParticle.GetTotalMomentum()/GeV, 0.4 ); + if( (currentParticle.GetKineticEnergy()/MeV > cutOff) || (G4UniformRand() > anni) ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGAntiXiMinusInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASAXM + // which is just a copy of casxm (cascade for Xi-). + // AntiXiMinus undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.7, 0.7 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); + G4ParticleDefinition *aSigmaPlus = G4SigmaPlus::SigmaPlus(); + G4ParticleDefinition *aXiZero = G4XiZero::XiZero(); + // + // energetically possible to produce pion(s) --> inelastic scattering + // + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + // + // number of secondary mesons determined by kno distribution + // check for total charge of final state mesons to determine + // the kind of baryons to be produced, taking into account + // charge and strangeness conservation + // + if( np < nm ) + { + if( np+1 == nm ) + { + currentParticle.SetDefinitionAndUpdateE( aXiZero ); + incidentHasChanged = true; + } + else // charge mismatch + { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + // + // correct the strangeness by replacing a pi- by a kaon- + // + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonMinus ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nm; + } + } + else if( np == nm ) + { + if( G4UniformRand() >= 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aXiZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + } + else + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=np; nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + if( np+1 < nm ) + { + if( np+2 == nm ) + { + currentParticle.SetDefinitionAndUpdateE( aXiZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + else // charge mismatch + { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + // + // correct the strangeness by replacing a pi- by a kaon- + // + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonMinus ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nm; + } + } + else if( np+1 == nm ) + { + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aXiZero ); + incidentHasChanged = true; + } + else + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + } + + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGAntiXiZeroInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGAntiXiZeroInelastic.cc new file mode 100644 index 0000000000..3646704bb0 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGAntiXiZeroInelastic.cc @@ -0,0 +1,388 @@ +// +// ******************************************************************** +// * 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: G4RPGAntiXiZeroInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// NOTE: The FORTRAN version of the cascade, CASAXO, simply called the +// routine for the XiZero particle. Hence, the ApplyYourself function +// below is just a copy of the ApplyYourself from the XiZero particle. + +#include "G4RPGAntiXiZeroInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGAntiXiZeroInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + + // Choose the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGAntiXiZeroInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + const G4double anni = std::min( 1.3*currentParticle.GetTotalMomentum()/GeV, 0.4 ); + if( (currentParticle.GetKineticEnergy()/MeV > cutOff) || (G4UniformRand() > anni) ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGAntiXiZeroInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASAX0 + // which is just a copy of CASX0 (cascade for Xi0) + // AntiXiZero undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.7, 0.7 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); + G4ParticleDefinition *aSigmaPlus = G4SigmaPlus::SigmaPlus(); + G4ParticleDefinition *aXiMinus = G4XiMinus::XiMinus(); + // + // energetically possible to produce pion(s) --> inelastic scattering + // + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-2); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + // + // number of secondary mesons determined by kno distribution + // check for total charge of final state mesons to determine + // the kind of baryons to be produced, taking into account + // charge and strangeness conservation + // + if( np < nm+1 ) + { + if( np != nm ) // charge mismatch + { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + // + // correct the strangeness by replacing a pi- by a kaon- + // + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonMinus ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nm; + } + } + else if( np == nm+1 ) + { + if( G4UniformRand() < 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( aXiMinus ); + incidentHasChanged = true; + } + } + else + { + currentParticle.SetDefinitionAndUpdateE( aXiMinus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + if( np < nm ) + { + if( np+1 == nm ) + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + else // charge mismatch + { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + // + // correct the strangeness by replacing a pi- by a kaon- + // + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonMinus ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nm; + } + } + else if( np == nm ) + { + if( G4UniformRand() >= 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aXiMinus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + else + { + currentParticle.SetDefinitionAndUpdateE( aXiMinus ); + incidentHasChanged = true; + } + } + + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGFragmentation.cc b/source/processes/hadronic/models/rpg/src/G4RPGFragmentation.cc new file mode 100644 index 0000000000..610efccba4 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGFragmentation.cc @@ -0,0 +1,1182 @@ +// +// ******************************************************************** +// * 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: G4RPGFragmentation.cc,v 1.3 2007/12/06 01:13:14 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGFragmentation.hh" +#include "G4AntiProton.hh" +#include "G4AntiNeutron.hh" +#include "Randomize.hh" +#include "G4Poisson.hh" +#include +#include "G4HadReentrentException.hh" +#include + + +G4RPGFragmentation::G4RPGFragmentation() + : G4RPGReaction() {} + + +void G4RPGFragmentation:: +FragmentationIntegral(G4double pt, G4double et, G4double parMass, G4double secMass) +{ + pt = std::max( 0.001, pt ); + G4double dx = 1./(19.*pt); + G4double x; + G4double term1; + G4double term2; + + for (G4int i = 1; i < 20; i++) { + x = (G4double(i) - 0.5)*dx; + term1 = 1. + parMass*parMass*x*x; + term2 = pt*x*et*pt*x*et + pt*pt + secMass*secMass; + dndl[i] = dx / std::sqrt( term1*term1*term1*term2 ) + + dndl[i-1]; + } +} + + +G4bool G4RPGFragmentation:: +ReactionStage(const G4HadProjectile* originalIncident, + G4ReactionProduct& modifiedOriginal, + G4bool& incidentHasChanged, + const G4DynamicParticle* originalTarget, + G4ReactionProduct& targetParticle, + G4bool& targetHasChanged, + const G4Nucleus& targetNucleus, + G4ReactionProduct& currentParticle, + G4FastVector& vec, + G4int& vecLen, + G4bool leadFlag, + G4ReactionProduct& leadingStrangeParticle) +{ + // + // Derived from H. Fesefeldt's original FORTRAN code GENXPT + // + // Generation of x- and pT- values for incident, target, and all secondary + // particles using a simple single variable description E D3S/DP3= F(Q) + // with Q^2 = (M*X)^2 + PT^2. Final state kinematics are produced by an + // FF-type iterative cascade method + // + // Internal units are GeV + // + + // Protection in case no secondary has been created. In that case use + // two-body scattering + // + if(vecLen == 0) return false; + + G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); + G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); + + G4int i, l; + G4bool veryForward = false; + + const G4double ekOriginal = modifiedOriginal.GetKineticEnergy()/GeV; + const G4double etOriginal = modifiedOriginal.GetTotalEnergy()/GeV; + const G4double mOriginal = modifiedOriginal.GetMass()/GeV; + const G4double pOriginal = modifiedOriginal.GetMomentum().mag()/GeV; + G4double targetMass = targetParticle.GetDefinition()->GetPDGMass()/GeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); // GeV + G4double currentMass = currentParticle.GetMass()/GeV; + targetMass = targetParticle.GetMass()/GeV; + // + // randomize the order of the secondary particles + // note that the current and target particles are not affected + // + for( i=0; i DumpFrames::DumpFrame(vec, vecLen); + } + + if( currentMass == 0.0 && targetMass == 0.0 ) + { + // Target and projectile have annihilated. Replace them with the first + // two secondaries in the list. Current particle KE is maintained. + + G4double ek = currentParticle.GetKineticEnergy(); + G4ThreeVector m = currentParticle.GetMomentum(); + currentParticle = *vec[0]; + targetParticle = *vec[1]; + for( i=0; i<(vecLen-2); ++i )*vec[i] = *vec[i+2]; + G4ReactionProduct *temp = vec[vecLen-1]; + delete temp; + temp = vec[vecLen-2]; + delete temp; + vecLen -= 2; + currentMass = currentParticle.GetMass()/GeV; + targetMass = targetParticle.GetMass()/GeV; + incidentHasChanged = true; + targetHasChanged = true; + currentParticle.SetKineticEnergy( ek ); + currentParticle.SetMomentum( m ); + veryForward = true; + } + const G4double atomicWeight = targetNucleus.GetN(); + const G4double atomicNumber = targetNucleus.GetZ(); + const G4double protonMass = aProton->GetPDGMass()/MeV; + + if (originalIncident->GetDefinition()->GetParticleSubType() == "kaon" + && G4UniformRand() >= 0.7) { + G4ReactionProduct temp = currentParticle; + currentParticle = targetParticle; + targetParticle = temp; + incidentHasChanged = true; + targetHasChanged = true; + currentMass = currentParticle.GetMass()/GeV; + targetMass = targetParticle.GetMass()/GeV; + } + const G4double afc = std::min( 0.75, + 0.312+0.200*std::log(std::log(centerofmassEnergy*centerofmassEnergy))+ + std::pow(centerofmassEnergy*centerofmassEnergy,1.5)/6000.0 ); + + G4double freeEnergy = centerofmassEnergy-currentMass-targetMass; + G4double forwardEnergy = freeEnergy/2.; + G4int forwardCount = 1; // number of particles in forward hemisphere + + G4double backwardEnergy = freeEnergy/2.; + G4int backwardCount = 1; // number of particles in backward hemisphere + + if(veryForward) + { + if(currentParticle.GetSide()==-1) + { + forwardEnergy += currentMass; + forwardCount --; + backwardEnergy -= currentMass; + backwardCount ++; + } + if(targetParticle.GetSide()!=-1) + { + backwardEnergy += targetMass; + backwardCount --; + forwardEnergy -= targetMass; + forwardCount ++; + } + } + + for( i=0; iGetSide() == -1 ) + { + ++backwardCount; + backwardEnergy -= vec[i]->GetMass()/GeV; + } else { + ++forwardCount; + forwardEnergy -= vec[i]->GetMass()/GeV; + } + } + // + // Add particles from intranuclear cascade. + // nuclearExcitationCount = number of new secondaries produced by nuclear excitation + // extraCount = number of nucleons within these new secondaries + // + G4double xtarg; + if( centerofmassEnergy < (2.0+G4UniformRand()) ) + xtarg = afc * (std::pow(atomicWeight,0.33)-1.0) * (2.0*backwardCount+vecLen+2)/2.0; + else + xtarg = afc * (std::pow(atomicWeight,0.33)-1.0) * (2.0*backwardCount); + if( xtarg <= 0.0 )xtarg = 0.01; + G4int nuclearExcitationCount = G4Poisson( xtarg ); + if(atomicWeight<1.0001) nuclearExcitationCount = 0; + G4int extraNucleonCount = 0; + G4double extraNucleonMass = 0.0; + if( nuclearExcitationCount > 0 ) + { + const G4double nucsup[] = { 1.00, 0.7, 0.5, 0.4, 0.35, 0.3 }; + const G4double psup[] = { 3., 6., 20., 50., 100., 1000. }; + G4int momentumBin = 0; + while( (momentumBin < 6) && + (modifiedOriginal.GetTotalMomentum()/GeV > psup[momentumBin]) ) + ++momentumBin; + momentumBin = std::min( 5, momentumBin ); + // + // NOTE: in GENXPT, these new particles were given negative codes + // here I use NewlyAdded = true instead + // + + for( i=0; i 1.0-atomicNumber/atomicWeight ) + pVec->SetDefinition( aProton ); + else + pVec->SetDefinition( aNeutron ); + pVec->SetSide( -2 ); // -2 means backside nucleon + ++extraNucleonCount; + backwardEnergy += pVec->GetMass()/GeV; + extraNucleonMass += pVec->GetMass()/GeV; + } + else + { + G4double ran = G4UniformRand(); + if( ran < 0.3181 ) + pVec->SetDefinition( aPiPlus ); + else if( ran < 0.6819 ) + pVec->SetDefinition( aPiZero ); + else + pVec->SetDefinition( aPiMinus ); + pVec->SetSide( -1 ); // backside particle, but not a nucleon + } + pVec->SetNewlyAdded( true ); // true is the same as IPA(i)<0 + vec.SetElement( vecLen++, pVec ); + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + backwardEnergy -= pVec->GetMass()/GeV; + ++backwardCount; + } + } + // + // assume conservation of kinetic energy in forward & backward hemispheres + // + G4int is, iskip; + while( forwardEnergy <= 0.0 ) // must eliminate a particle from the forward side + { + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + iskip = G4int(G4UniformRand()*forwardCount) + 1; // 1 <= iskip <= forwardCount + is = 0; + G4int forwardParticlesLeft = 0; + for( i=(vecLen-1); i>=0; --i ) + { + if( vec[i]->GetSide() == 1 && vec[i]->GetMayBeKilled()) + { + forwardParticlesLeft = 1; + if( ++is == iskip ) + { + forwardEnergy += vec[i]->GetMass()/GeV; + for( G4int j=i; j<(vecLen-1); j++ )*vec[j] = *vec[j+1]; // shift up + --forwardCount; + delete vec[vecLen-1]; + if( --vecLen == 0 )return false; // all the secondaries have been eliminated + break; // --+ + } // | + } // | + } // break goes down to here + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + if( forwardParticlesLeft == 0 ) + { + G4int iremove = -1; + for (G4int i = 0; i < vecLen; i++) { + if (vec[i]->GetDefinition()->GetParticleSubType() == "pi") { + iremove = i; + break; + } + } + if (iremove == -1) { + for (G4int i = 0; i < vecLen; i++) { + if (vec[i]->GetDefinition()->GetParticleSubType() == "kaon") { + iremove = i; + break; + } + } + } + if (iremove == -1) iremove = 0; + + forwardEnergy += vec[iremove]->GetMass()/GeV; + if (vec[iremove]->GetSide() > 0) --forwardCount; + + for (G4int i = iremove; i < vecLen-1; i++) *vec[i] = *vec[i+1]; + delete vec[vecLen-1]; + vecLen--; + if (vecLen == 0) return false; // all secondaries have been eliminated + break; + } + } // while + + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + while( backwardEnergy <= 0.0 ) // must eliminate a particle from the backward side + { + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + iskip = G4int(G4UniformRand()*backwardCount) + 1; // 1 <= iskip <= backwardCount + is = 0; + G4int backwardParticlesLeft = 0; + for( i=(vecLen-1); i>=0; --i ) + { + if( vec[i]->GetSide() < 0 && vec[i]->GetMayBeKilled()) + { + backwardParticlesLeft = 1; + if( ++is == iskip ) // eliminate the i'th particle + { + if( vec[i]->GetSide() == -2 ) + { + --extraNucleonCount; + extraNucleonMass -= vec[i]->GetMass()/GeV; + backwardEnergy -= vec[i]->GetTotalEnergy()/GeV; + } + backwardEnergy += vec[i]->GetTotalEnergy()/GeV; + for( G4int j=i; j<(vecLen-1); ++j )*vec[j] = *vec[j+1]; // shift up + --backwardCount; + delete vec[vecLen-1]; + if( --vecLen == 0 )return false; // all the secondaries have been eliminated + break; + } + } + } + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + if( backwardParticlesLeft == 0 ) + { + G4int iremove = -1; + for (G4int i = 0; i < vecLen; i++) { + if (vec[i]->GetDefinition()->GetParticleSubType() == "pi") { + iremove = i; + break; + } + } + if (iremove == -1) { + for (G4int i = 0; i < vecLen; i++) { + if (vec[i]->GetDefinition()->GetParticleSubType() == "kaon") { + iremove = i; + break; + } + } + } + if (iremove == -1) iremove = 0; + + backwardEnergy += vec[iremove]->GetMass()/GeV; + if (vec[iremove]->GetSide() > 0) --backwardCount; + + for (G4int i = iremove; i < vecLen-1; i++) *vec[i] = *vec[i+1]; + delete vec[vecLen-1]; + vecLen--; + if (vecLen == 0) return false; // all secondaries have been eliminated + break; + } + } // while + + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + // + // define initial state vectors for Lorentz transformations + // the pseudoParticles have non-standard masses, hence the "pseudo" + // + G4ReactionProduct pseudoParticle[8]; + for( i=0; i<8; ++i )pseudoParticle[i].SetZero(); + + pseudoParticle[0].SetMass( mOriginal*GeV ); + pseudoParticle[0].SetMomentum( 0.0, 0.0, pOriginal*GeV ); + pseudoParticle[0].SetTotalEnergy( + std::sqrt( pOriginal*pOriginal + mOriginal*mOriginal )*GeV ); + + pseudoParticle[1].SetMass( protonMass*MeV ); // this could be targetMass + pseudoParticle[1].SetTotalEnergy( protonMass*MeV ); + + pseudoParticle[3].SetMass( protonMass*(1+extraNucleonCount)*MeV ); + pseudoParticle[3].SetTotalEnergy( protonMass*(1+extraNucleonCount)*MeV ); + + pseudoParticle[2] = pseudoParticle[0] + pseudoParticle[1]; + pseudoParticle[3] = pseudoParticle[3] + pseudoParticle[0]; + + pseudoParticle[0].Lorentz( pseudoParticle[0], pseudoParticle[2] ); + pseudoParticle[1].Lorentz( pseudoParticle[1], pseudoParticle[2] ); + + // + // main loop for 4-momentum generation + // see Pitha-report (Aachen) for a detailed description of the method + // + G4double aspar, pt, et, x, pp, pp1, wgt; + G4int innerCounter, outerCounter; + G4bool eliminateThisParticle, resetEnergies, constantCrossSection; + + G4double forwardKinetic = 0.0, backwardKinetic = 0.0; + // + // process the secondary particles in reverse order + // the incident particle is Done after the secondaries + // nucleons, including the target, in the backward hemisphere are also Done later + // + G4int backwardNucleonCount = 0; // number of nucleons in backward hemisphere + G4double totalEnergy, kineticEnergy, vecMass; + + for( i=(vecLen-1); i>=0; --i ) + { + G4double phi = G4UniformRand()*twopi; + if( vec[i]->GetNewlyAdded() ) // added from intranuclear cascade + { + if( vec[i]->GetSide() == -2 ) // is a nucleon + { + if( backwardNucleonCount < 18 ) + { + if (vec[i]->GetDefinition()->GetParticleSubType() == "pi") { + for(G4int i=0; iSetSide( -3 ); + ++backwardNucleonCount; + continue; + } + } + } + // + // set pt and phi values, they are changed somewhat in the iteration loop + // set mass parameter for lambda fragmentation model + // + vecMass = vec[i]->GetMass()/GeV; + G4double ran = -std::log(1.0-G4UniformRand())/3.5; + if( vec[i]->GetSide() == -2 ) // backward nucleon + { + if (vec[i]->GetDefinition()->GetParticleSubType() == "kaon" || + vec[i]->GetDefinition()->GetParticleSubType() == "pi") { + aspar = 0.75; + pt = std::sqrt( std::pow( ran, 1.7 ) ); + } else { // vec[i] must be a proton, neutron, + aspar = 0.20; // lambda, sigma, xsi, or ion + pt = std::sqrt( std::pow( ran, 1.2 ) ); + } + + } else { // not a backward nucleon + + if (vec[i]->GetDefinition()->GetParticleSubType() == "pi") { + aspar = 0.75; + pt = std::sqrt( std::pow( ran, 1.7 ) ); + } else if (vec[i]->GetDefinition()->GetParticleSubType() == "kaon") { + aspar = 0.70; + pt = std::sqrt( std::pow( ran, 1.7 ) ); + } else { // vec[i] must be a proton, neutron, + aspar = 0.65; // lambda, sigma, xsi, or ion + pt = std::sqrt( std::pow( ran, 1.5 ) ); + } + } + pt = std::max( 0.001, pt ); + vec[i]->SetMomentum( pt*std::cos(phi)*GeV, pt*std::sin(phi)*GeV ); + if( vec[i]->GetSide() > 0 ) + et = pseudoParticle[0].GetTotalEnergy()/GeV; + else + et = pseudoParticle[1].GetTotalEnergy()/GeV; + + // + // start of outer iteration loop + // + outerCounter = 0; + eliminateThisParticle = true; + resetEnergies = true; + dndl[0] = 0.0; + + while( ++outerCounter < 3 ) + { + FragmentationIntegral(pt, et, aspar, vecMass); + + innerCounter = 0; + vec[i]->SetMomentum( pt*std::cos(phi)*GeV, pt*std::sin(phi)*GeV ); + // + // start of inner iteration loop + // + while( ++innerCounter < 7 ) + { + ran = G4UniformRand()*dndl[19]; + l = 1; + while( ( ran > dndl[l] ) && ( l < 19 ) ) l++; + x = (G4double(l-1) + G4UniformRand())/19.; + if( vec[i]->GetSide() < 0 )x *= -1.; + vec[i]->SetMomentum( x*et*GeV ); // set the z-momentum + totalEnergy = std::sqrt( x*et*x*et + pt*pt + vecMass*vecMass ); + vec[i]->SetTotalEnergy( totalEnergy*GeV ); + kineticEnergy = vec[i]->GetKineticEnergy()/GeV; + if( vec[i]->GetSide() > 0 ) // forward side + { + if( (forwardKinetic+kineticEnergy) < 0.95*forwardEnergy ) + { + pseudoParticle[4] = pseudoParticle[4] + (*vec[i]); + forwardKinetic += kineticEnergy; + outerCounter = 2; // leave outer loop + eliminateThisParticle = false; // don't eliminate this particle + resetEnergies = false; + break; // leave inner loop + } + if( innerCounter > 5 )break; // leave inner loop + if( backwardEnergy >= vecMass ) // switch sides + { + vec[i]->SetSide( -1 ); + forwardEnergy += vecMass; + backwardEnergy -= vecMass; + ++backwardCount; + } + } else { // backward side + if( extraNucleonCount > 19 ) // commented out to duplicate ?bug? in GENXPT + x = 0.999; + G4double xxx = 0.95+0.05*extraNucleonCount/20.0; + if( (backwardKinetic+kineticEnergy) < xxx*backwardEnergy ) + { + pseudoParticle[5] = pseudoParticle[5] + (*vec[i]); + backwardKinetic += kineticEnergy; + outerCounter = 2; // leave outer loop + eliminateThisParticle = false; // don't eliminate this particle + resetEnergies = false; + break; // leave inner loop + } + if( innerCounter > 5 )break; // leave inner loop + if( forwardEnergy >= vecMass ) // switch sides + { + vec[i]->SetSide( 1 ); + forwardEnergy -= vecMass; + backwardEnergy += vecMass; + backwardCount--; + } + } + G4ThreeVector momentum = vec[i]->GetMomentum(); + vec[i]->SetMomentum( momentum.x() * 0.9, momentum.y() * 0.9 ); + pt *= 0.9; + dndl[19] *= 0.9; + } // closes inner loop + if( resetEnergies ) { + // If we get to here, the inner loop has been done 6 times. + // Reset the kinetic energies of previously done particles, if + // they are lighter than protons and in the forward hemisphere, + // then continue with outer loop. + // + forwardKinetic = 0.0; + backwardKinetic = 0.0; + pseudoParticle[4].SetZero(); + pseudoParticle[5].SetZero(); + for( l=i+1; lGetSide() > 0 || + vec[l]->GetDefinition()->GetParticleSubType() == "kaon" || + vec[l]->GetDefinition()->GetParticleSubType() == "pi") { + + G4double tempMass = vec[l]->GetMass()/MeV; + totalEnergy = 0.95*vec[l]->GetTotalEnergy()/MeV + 0.05*tempMass; + totalEnergy = std::max( tempMass, totalEnergy ); + vec[l]->SetTotalEnergy( totalEnergy*MeV ); + pp = std::sqrt( std::abs( totalEnergy*totalEnergy - tempMass*tempMass ) ); + pp1 = vec[l]->GetMomentum().mag()/MeV; + if( pp1 < 1.0e-6*GeV ) { + G4ThreeVector iso = Isotropic(pp); + vec[l]->SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + vec[l]->SetMomentum( vec[l]->GetMomentum() * (pp/pp1) ); + } + G4double px = vec[l]->GetMomentum().x()/MeV; + G4double py = vec[l]->GetMomentum().y()/MeV; + pt = std::max( 1.0, std::sqrt( px*px + py*py ) )/GeV; + if( vec[l]->GetSide() > 0 ) + { + forwardKinetic += vec[l]->GetKineticEnergy()/GeV; + pseudoParticle[4] = pseudoParticle[4] + (*vec[l]); + } else { + backwardKinetic += vec[l]->GetKineticEnergy()/GeV; + pseudoParticle[5] = pseudoParticle[5] + (*vec[l]); + } + } // if pi, K or forward + } // for l + } // if resetEnergies + } // closes outer loop + + if( eliminateThisParticle && vec[i]->GetMayBeKilled()) // not enough energy, eliminate this particle + { + if( vec[i]->GetSide() > 0 ) + { + --forwardCount; + forwardEnergy += vecMass; + } else { + if( vec[i]->GetSide() == -2 ) + { + --extraNucleonCount; + extraNucleonMass -= vecMass; + backwardEnergy -= vecMass; + } + --backwardCount; + backwardEnergy += vecMass; + } + for( G4int j=i; j<(vecLen-1); ++j )*vec[j] = *vec[j+1]; // shift up + G4ReactionProduct *temp = vec[vecLen-1]; + delete temp; + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + if( --vecLen == 0 )return false; // all the secondaries have been eliminated + } + } // closes main for loop + + // + // for the incident particle: it was placed in the forward hemisphere + // set pt and phi values, they are changed somewhat in the iteration loop + // set mass parameter for lambda fragmentation model + // + G4double phi = G4UniformRand()*twopi; + G4double ran = -std::log(1.0-G4UniformRand()); + if (currentParticle.GetDefinition()->GetParticleSubType() == "pi") { + aspar = 0.60; + pt = std::sqrt( std::pow( ran/6.0, 1.7 ) ); + } else if (currentParticle.GetDefinition()->GetParticleSubType() == "kaon") { + aspar = 0.50; + pt = std::sqrt( std::pow( ran/5.0, 1.4 ) ); + } else { + aspar = 0.40; + pt = std::sqrt( std::pow( ran/4.0, 1.2 ) ); + } + + currentParticle.SetMomentum( pt*std::cos(phi)*GeV, pt*std::sin(phi)*GeV ); + et = pseudoParticle[0].GetTotalEnergy()/GeV; + dndl[0] = 0.0; + vecMass = currentParticle.GetMass()/GeV; + + FragmentationIntegral(pt, et, aspar, vecMass); + + ran = G4UniformRand()*dndl[19]; + l = 1; + while( ( ran > dndl[l] ) && ( l < 19 ) ) l++; + x = (G4double(l-1) + G4UniformRand())/19.; + currentParticle.SetMomentum( x*et*GeV ); // set the z-momentum + if( forwardEnergy < forwardKinetic ) + totalEnergy = vecMass + 0.04*std::fabs(normal()); + else + totalEnergy = vecMass + forwardEnergy - forwardKinetic; + currentParticle.SetTotalEnergy( totalEnergy*GeV ); + pp = std::sqrt( std::abs( totalEnergy*totalEnergy - vecMass*vecMass ) )*GeV; + pp1 = currentParticle.GetMomentum().mag()/MeV; + + if( pp1 < 1.0e-6*GeV ) { + G4ThreeVector iso = Isotropic(pp); + currentParticle.SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + currentParticle.SetMomentum( currentParticle.GetMomentum() * (pp/pp1) ); + } + pseudoParticle[4] = pseudoParticle[4] + currentParticle; + + // + // Current particle now finished + // + // Begin target particle + // + + if( backwardNucleonCount < 18 ) + { + targetParticle.SetSide( -3 ); + ++backwardNucleonCount; + } + else + { + // set pt and phi values, they are changed somewhat in the iteration loop + // set mass parameter for lambda fragmentation model + // + vecMass = targetParticle.GetMass()/GeV; + ran = -std::log(1.0-G4UniformRand()); + aspar = 0.40; + pt = std::max( 0.001, std::sqrt( std::pow( ran/4.0, 1.2 ) ) ); + targetParticle.SetMomentum( pt*std::cos(phi)*GeV, pt*std::sin(phi)*GeV ); + et = pseudoParticle[1].GetTotalEnergy()/GeV; + outerCounter = 0; + eliminateThisParticle = true; // should never eliminate the target particle + resetEnergies = true; + dndl[0] = 0.0; + + while( ++outerCounter < 3 ) // start of outer iteration loop + { + FragmentationIntegral(pt, et, aspar, vecMass); + + innerCounter = 0; + while( ++innerCounter < 7 ) // start of inner iteration loop + { + ran = G4UniformRand()*dndl[19]; + l = 1; + while( ( ran > dndl[l] ) && ( l < 19 ) ) l++; + x = (G4double(l-1) + G4UniformRand())/19.; + if( targetParticle.GetSide() < 0 )x *= -1.; + targetParticle.SetMomentum( x*et*GeV ); // set the z-momentum + totalEnergy = std::sqrt( x*et*x*et + pt*pt + vecMass*vecMass ); + targetParticle.SetTotalEnergy( totalEnergy*GeV ); + if( targetParticle.GetSide() < 0 ) + { + if( extraNucleonCount > 19 )x=0.999; + G4double xxx = 0.95+0.05*extraNucleonCount/20.0; + if( (backwardKinetic+totalEnergy-vecMass) < xxx*backwardEnergy ) + { + pseudoParticle[5] = pseudoParticle[5] + targetParticle; + backwardKinetic += totalEnergy - vecMass; + // pseudoParticle[6] = pseudoParticle[4] + pseudoParticle[5]; + // pseudoParticle[6].SetMomentum( 0.0 ); // set z-momentum + outerCounter = 2; // leave outer loop + eliminateThisParticle = false; // don't eliminate this particle + resetEnergies = false; + break; // leave inner loop + } + if( innerCounter > 5 )break; // leave inner loop + if( forwardEnergy >= vecMass ) // switch sides + { + targetParticle.SetSide( 1 ); + forwardEnergy -= vecMass; + backwardEnergy += vecMass; + --backwardCount; + } + G4ThreeVector momentum = targetParticle.GetMomentum(); + targetParticle.SetMomentum( momentum.x() * 0.9, momentum.y() * 0.9 ); + pt *= 0.9; + dndl[19] *= 0.9; + } + else // target has gone to forward side + { + if( forwardEnergy < forwardKinetic ) + totalEnergy = vecMass + 0.04*std::fabs(normal()); + else + totalEnergy = vecMass + forwardEnergy - forwardKinetic; + targetParticle.SetTotalEnergy( totalEnergy*GeV ); + pp = std::sqrt( std::abs( totalEnergy*totalEnergy - vecMass*vecMass ) )*GeV; + pp1 = targetParticle.GetMomentum().mag()/MeV; + if( pp1 < 1.0e-6*GeV ) { + G4ThreeVector iso = Isotropic(pp); + targetParticle.SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + targetParticle.SetMomentum( targetParticle.GetMomentum() * (pp/pp1) ); + } + + pseudoParticle[4] = pseudoParticle[4] + targetParticle; + outerCounter = 2; // leave outer loop + eliminateThisParticle = false; // don't eliminate this particle + resetEnergies = false; + break; // leave inner loop + } + } // closes inner loop + + if( resetEnergies ) { + // If we get to here, the inner loop has been done 6 times. + // Reset the kinetic energies of previously done particles, + // if they are lighter than protons and in the forward hemisphere, + // then continue with outer loop. + + forwardKinetic = backwardKinetic = 0.0; + pseudoParticle[4].SetZero(); + pseudoParticle[5].SetZero(); + for( l=0; lGetSide() > 0 || + vec[l]->GetDefinition()->GetParticleSubType() == "kaon" || + vec[l]->GetDefinition()->GetParticleSubType() == "pi") { + G4double tempMass = vec[l]->GetMass()/GeV; + totalEnergy = + std::max( tempMass, 0.95*vec[l]->GetTotalEnergy()/GeV + 0.05*tempMass ); + vec[l]->SetTotalEnergy( totalEnergy*GeV ); + pp = std::sqrt( std::abs( totalEnergy*totalEnergy - tempMass*tempMass ) )*GeV; + pp1 = vec[l]->GetMomentum().mag()/MeV; + if( pp1 < 1.0e-6*GeV ) { + G4ThreeVector iso = Isotropic(pp); + vec[l]->SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + vec[l]->SetMomentum( vec[l]->GetMomentum() * (pp/pp1) ); + } + pt = std::max( 0.001*GeV, std::sqrt( sqr(vec[l]->GetMomentum().x()/MeV) + + sqr(vec[l]->GetMomentum().y()/MeV) ) )/GeV; + if( vec[l]->GetSide() > 0) + { + forwardKinetic += vec[l]->GetKineticEnergy()/GeV; + pseudoParticle[4] = pseudoParticle[4] + (*vec[l]); + } else { + backwardKinetic += vec[l]->GetKineticEnergy()/GeV; + pseudoParticle[5] = pseudoParticle[5] + (*vec[l]); + } + } // if pi, K or forward + } // for l + } // if (resetEnergies) + } // closes outer loop + +// if( eliminateThisParticle ) // not enough energy, eliminate target +// { +// G4cerr << "Warning: eliminating target particle" << G4endl; +// exit( EXIT_FAILURE ); +// } + } + // + // Target particle finished. + // + // Now produce backward nucleons with a cluster model + // + pseudoParticle[6].Lorentz( pseudoParticle[3], pseudoParticle[2] ); + pseudoParticle[6] = pseudoParticle[6] - pseudoParticle[4]; + pseudoParticle[6] = pseudoParticle[6] - pseudoParticle[5]; + if( backwardNucleonCount == 1 ) // target particle is the only backward nucleon + { + G4double ekin = + std::min( backwardEnergy-backwardKinetic, centerofmassEnergy/2.0-protonMass/GeV ); + + if( ekin < 0.04 )ekin = 0.04 * std::fabs( normal() ); + vecMass = targetParticle.GetMass()/GeV; + totalEnergy = ekin+vecMass; + targetParticle.SetTotalEnergy( totalEnergy*GeV ); + pp = std::sqrt( std::abs( totalEnergy*totalEnergy - vecMass*vecMass ) )*GeV; + pp1 = pseudoParticle[6].GetMomentum().mag()/MeV; + if( pp1 < 1.0e-6*GeV ) { + G4ThreeVector iso = Isotropic(pp); + targetParticle.SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + targetParticle.SetMomentum( pseudoParticle[6].GetMomentum() * (pp/pp1) ); + } + pseudoParticle[5] = pseudoParticle[5] + targetParticle; + } + else if (backwardNucleonCount > 1) + { + const G4double cpar[] = { 1.60, 1.35, 1.15, 1.10 }; + const G4double gpar[] = { 2.60, 1.80, 1.30, 1.20 }; + + G4int tempCount = 5; + if (backwardNucleonCount < 5) tempCount = backwardNucleonCount; + tempCount -= 2; + + G4double rmb = 0.; + if( targetParticle.GetSide() == -3 ) rmb += targetParticle.GetMass()/GeV; + for( i=0; iGetSide() == -3 ) rmb += vec[i]->GetMass()/GeV; + } + rmb += std::pow(-std::log(1.0-G4UniformRand()),1./cpar[tempCount]) / gpar[tempCount]; + totalEnergy = pseudoParticle[6].GetTotalEnergy()/GeV; + vecMass = std::min( rmb, totalEnergy ); + pseudoParticle[6].SetMass( vecMass*GeV ); + pp = std::sqrt( std::abs( totalEnergy*totalEnergy - vecMass*vecMass ) )*GeV; + pp1 = pseudoParticle[6].GetMomentum().mag()/MeV; + if( pp1 < 1.0e-6*GeV ) { + G4ThreeVector iso = Isotropic(pp); + pseudoParticle[6].SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + pseudoParticle[6].SetMomentum( pseudoParticle[6].GetMomentum() * (-pp/pp1) ); + } + G4FastVector tempV; // tempV contains the backward nucleons + tempV.Initialize( backwardNucleonCount ); + G4int tempLen = 0; + if( targetParticle.GetSide() == -3 )tempV.SetElement( tempLen++, &targetParticle ); + for( i=0; iGetSide() == -3 )tempV.SetElement( tempLen++, vec[i] ); + } + if( tempLen != backwardNucleonCount ) + { + G4cerr << "tempLen is not the same as backwardNucleonCount" << G4endl; + G4cerr << "tempLen = " << tempLen; + G4cerr << ", backwardNucleonCount = " << backwardNucleonCount << G4endl; + G4cerr << "targetParticle side = " << targetParticle.GetSide() << G4endl; + G4cerr << "currentParticle side = " << currentParticle.GetSide() << G4endl; + for( i=0; iGetParticleSubType() == "pi"); + G4bool targetTest = + (targetParticle.GetDefinition()->GetParticleSubType() == "kaon" || + targetParticle.GetDefinition()->GetParticleSubType() == "pi"); + + // following modified by JLC 22-Oct-97 + + if( (leadTest&&targetTest) || !(leadTest||targetTest) ) // both true or both false + { + targetParticle.SetDefinitionAndUpdateE( leadingStrangeParticle.GetDefinition() ); + targetHasChanged = true; + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + } + else + { + currentParticle.SetDefinitionAndUpdateE( leadingStrangeParticle.GetDefinition() ); + incidentHasChanged = false; + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + } + } + } // end of if( leadFlag ) + + // Get number of final state nucleons and nucleons remaining in + // target nucleus + + std::pair finalStateNucleons = + GetFinalStateNucleons(originalTarget, vec, vecLen); + + G4int protonsInFinalState = finalStateNucleons.first; + G4int neutronsInFinalState = finalStateNucleons.second; + + G4int numberofFinalStateNucleons = + protonsInFinalState + neutronsInFinalState; + + if (currentParticle.GetDefinition()->GetBaryonNumber() == 1 && + targetParticle.GetDefinition()->GetBaryonNumber() == 1 && + originalIncident->GetDefinition()->GetPDGMass() < + G4Lambda::Lambda()->GetPDGMass()) + numberofFinalStateNucleons++; + + numberofFinalStateNucleons = std::max(1, numberofFinalStateNucleons); + + G4int PinNucleus = std::max(0, + G4int(targetNucleus.GetZ()) - protonsInFinalState); + G4int NinNucleus = std::max(0, + G4int(targetNucleus.GetN()-targetNucleus.GetZ()) - neutronsInFinalState); + + pseudoParticle[3].SetMomentum( 0.0, 0.0, pOriginal*GeV ); + pseudoParticle[3].SetMass( mOriginal*GeV ); + pseudoParticle[3].SetTotalEnergy( + std::sqrt( pOriginal*pOriginal + mOriginal*mOriginal )*GeV ); + + G4ParticleDefinition * aOrgDef = modifiedOriginal.GetDefinition(); + G4int diff = 0; + if(aOrgDef == G4Proton::Proton() || aOrgDef == G4Neutron::Neutron() ) diff = 1; + if(numberofFinalStateNucleons == 1) diff = 0; + pseudoParticle[4].SetMomentum( 0.0, 0.0, 0.0 ); + pseudoParticle[4].SetMass( protonMass*(numberofFinalStateNucleons-diff)*MeV ); + pseudoParticle[4].SetTotalEnergy( protonMass*(numberofFinalStateNucleons-diff)*MeV ); + + G4double theoreticalKinetic = + pseudoParticle[3].GetTotalEnergy()/MeV + + pseudoParticle[4].GetTotalEnergy()/MeV - + currentParticle.GetMass()/MeV - + targetParticle.GetMass()/MeV; + + G4double simulatedKinetic = + currentParticle.GetKineticEnergy()/MeV + targetParticle.GetKineticEnergy()/MeV; + + pseudoParticle[5] = pseudoParticle[3] + pseudoParticle[4]; + pseudoParticle[3].Lorentz( pseudoParticle[3], pseudoParticle[5] ); + pseudoParticle[4].Lorentz( pseudoParticle[4], pseudoParticle[5] ); + + pseudoParticle[7].SetZero(); + pseudoParticle[7] = pseudoParticle[7] + currentParticle; + pseudoParticle[7] = pseudoParticle[7] + targetParticle; + + for( i=0; iGetKineticEnergy()/MeV; + theoreticalKinetic -= vec[i]->GetMass()/MeV; + } + + if( vecLen <= 16 && vecLen > 0 ) + { + // must create a new set of ReactionProducts here because GenerateNBody will + // modify the momenta for the particles, and we don't want to do this + // + G4ReactionProduct tempR[130]; + tempR[0] = currentParticle; + tempR[1] = targetParticle; + for( i=0; i tempV; + tempV.Initialize( vecLen+2 ); + G4int tempLen = 0; + for( i=0; iGetMass(); + wgt = GenerateNBodyEvent( Qvalue/MeV, + constantCrossSection, tempV, tempLen ); + } + if(wgt>-.5) + { + theoreticalKinetic = 0.0; + for( i=0; i DumpFrames::DumpFrame(vec, vecLen); + } + // + // Make sure, that the kinetic energies are correct + // + if( simulatedKinetic != 0.0 ) + { + wgt = (theoreticalKinetic)/simulatedKinetic; + theoreticalKinetic = currentParticle.GetKineticEnergy()/MeV * wgt; + simulatedKinetic = theoreticalKinetic; + currentParticle.SetKineticEnergy( theoreticalKinetic*MeV ); + pp = currentParticle.GetTotalMomentum()/MeV; + pp1 = currentParticle.GetMomentum().mag()/MeV; + if( pp1 < 1.0e-6*GeV ) { + G4ThreeVector iso = Isotropic(pp); + currentParticle.SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + currentParticle.SetMomentum( currentParticle.GetMomentum() * (pp/pp1) ); + } + theoreticalKinetic = targetParticle.GetKineticEnergy()/MeV * wgt; + targetParticle.SetKineticEnergy( theoreticalKinetic*MeV ); + simulatedKinetic += theoreticalKinetic; + pp = targetParticle.GetTotalMomentum()/MeV; + pp1 = targetParticle.GetMomentum().mag()/MeV; + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + if( pp1 < 1.0e-6*GeV ) { + G4ThreeVector iso = Isotropic(pp); + targetParticle.SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + targetParticle.SetMomentum( targetParticle.GetMomentum() * (pp/pp1) ); + } + + for( i=0; iGetKineticEnergy()/MeV * wgt; + simulatedKinetic += theoreticalKinetic; + vec[i]->SetKineticEnergy( theoreticalKinetic*MeV ); + pp = vec[i]->GetTotalMomentum()/MeV; + pp1 = vec[i]->GetMomentum().mag()/MeV; + if( pp1 < 1.0e-6*GeV ) { + G4ThreeVector iso = Isotropic(pp); + vec[i]->SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + vec[i]->SetMomentum( vec[i]->GetMomentum() * (pp/pp1) ); + } + } + } + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + + Rotate( numberofFinalStateNucleons, pseudoParticle[3].GetMomentum(), + modifiedOriginal, originalIncident, targetNucleus, + currentParticle, targetParticle, vec, vecLen ); + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + // + // add black track particles + // the total number of particles produced is restricted to 198 + // this may have influence on very high energies + // + if( atomicWeight >= 1.5 ) + { + // npnb is number of proton/neutron black track particles + // ndta is the number of deuterons, tritons, and alphas produced + // epnb is the kinetic energy available for proton/neutron black track particles + // edta is the kinetic energy available for deuteron/triton/alpha particles + // + G4int npnb = 0; + G4int ndta = 0; + + G4double epnb, edta; + if (veryForward) { + epnb = targetNucleus.GetAnnihilationPNBlackTrackEnergy(); + edta = targetNucleus.GetAnnihilationDTABlackTrackEnergy(); + } else { + epnb = targetNucleus.GetPNBlackTrackEnergy(); + edta = targetNucleus.GetDTABlackTrackEnergy(); + } + + const G4double pnCutOff = 0.001; + const G4double dtaCutOff = 0.001; + const G4double kineticMinimum = 1.e-6; + const G4double kineticFactor = -0.010; + G4double sprob = 0.0; // sprob = probability of self-absorption in heavy molecules + const G4double ekIncident = originalIncident->GetKineticEnergy()/GeV; + if( ekIncident >= 5.0 )sprob = std::min( 1.0, 0.6*std::log(ekIncident-4.0) ); + if( epnb >= pnCutOff ) + { + npnb = G4Poisson((1.5+1.25*numberofFinalStateNucleons)*epnb/(epnb+edta)); + if( numberofFinalStateNucleons + npnb > atomicWeight ) + npnb = G4int(atomicWeight+0.00001 - numberofFinalStateNucleons); + npnb = std::min( npnb, 127-vecLen ); + } + if( edta >= dtaCutOff ) + { + ndta = G4Poisson( (1.5+1.25*numberofFinalStateNucleons)*edta/(epnb+edta) ); + ndta = std::min( ndta, 127-vecLen ); + } + if (npnb == 0 && ndta == 0) npnb = 1; + + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + + AddBlackTrackParticles(epnb, npnb, edta, ndta, sprob, kineticMinimum, + kineticFactor, modifiedOriginal, + PinNucleus, NinNucleus, targetNucleus, + vec, vecLen); + } + // if( centerofmassEnergy <= (4.0+G4UniformRand()) ) + // MomentumCheck( modifiedOriginal, currentParticle, targetParticle, + // vec, vecLen ); + // + // calculate time delay for nuclear reactions + // + if( (atomicWeight >= 1.5) && (atomicWeight <= 230.0) && (ekOriginal <= 0.2) ) + currentParticle.SetTOF( + 1.0-500.0*std::exp(-ekOriginal/0.04)*std::log(G4UniformRand()) ); + else + currentParticle.SetTOF( 1.0 ); + return true; + +} + + /* end of file */ diff --git a/source/processes/hadronic/models/rpg/src/G4RPGInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGInelastic.cc new file mode 100644 index 0000000000..624a012b7d --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGInelastic.cc @@ -0,0 +1,473 @@ +// +// ******************************************************************** +// * 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: G4RPGInelastic.cc,v 1.2 2007/08/15 20:38:25 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGInelastic.hh" +#include "Randomize.hh" +#include "G4HadReentrentException.hh" +#include "G4RPGStrangeProduction.hh" +#include "G4RPGTwoBody.hh" + + +G4double G4RPGInelastic::Pmltpc(G4int np, G4int nm, G4int nz, + G4int n, G4double b, G4double c) +{ + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4double npf = 0.0; + G4double nmf = 0.0; + G4double nzf = 0.0; + G4int i; + for( i=2; i<=np; i++ )npf += std::log((double)i); + for( i=2; i<=nm; i++ )nmf += std::log((double)i); + for( i=2; i<=nz; i++ )nzf += std::log((double)i); + G4double r; + r = std::min( expxu, std::max( expxl, -(np-nm+nz+b)*(np-nm+nz+b)/(2*c*c*n*n)-npf-nmf-nzf ) ); + return std::exp(r); +} + + +G4int G4RPGInelastic::Factorial( G4int n ) +{ + G4int m = std::min(n,10); + G4int result = 1; + if( m <= 1 )return result; + for( G4int i=2; i<=m; ++i )result *= i; + return result; +} + + +G4bool G4RPGInelastic::MarkLeadingStrangeParticle( + const G4ReactionProduct ¤tParticle, + const G4ReactionProduct &targetParticle, + G4ReactionProduct &leadParticle ) +{ + // The following was in GenerateXandPt and TwoCluster. + // Add a parameter to the GenerateXandPt function telling it about the + // strange particle. + // + // Assumes that the original particle was a strange particle + // + G4bool lead = false; + if( (currentParticle.GetMass() >= G4KaonPlus::KaonPlus()->GetPDGMass()) && + (currentParticle.GetDefinition() != G4Proton::Proton()) && + (currentParticle.GetDefinition() != G4Neutron::Neutron()) ) + { + lead = true; + leadParticle = currentParticle; // set lead to the incident particle + } + else if( (targetParticle.GetMass() >= G4KaonPlus::KaonPlus()->GetPDGMass()) && + (targetParticle.GetDefinition() != G4Proton::Proton()) && + (targetParticle.GetDefinition() != G4Neutron::Neutron()) ) + { + lead = true; + leadParticle = targetParticle; // set lead to the target particle + } + return lead; +} + + + void G4RPGInelastic::SetUpPions(const G4int np, const G4int nm, + const G4int nz, + G4FastVector &vec, + G4int &vecLen) + { + if( np+nm+nz == 0 )return; + G4int i; + G4ReactionProduct *p; + for( i=0; iSetDefinition( G4PionPlus::PionPlus() ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + } + for( i=np; iSetDefinition( G4PionMinus::PionMinus() ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + } + for( i=np+nm; iSetDefinition( G4PionZero::PionZero() ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + } + } + + + void G4RPGInelastic::GetNormalizationConstant( + const G4double energy, // MeV, <0 means annihilation channels + G4double &n, + G4double &anpn ) + { + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + const G4int numSec = 60; + // + // the only difference between the calculation for annihilation channels + // and normal is the starting value, iBegin, for the loop below + // + G4int iBegin = 1; + G4double en = energy; + if( energy < 0.0 ) + { + iBegin = 2; + en *= -1.0; + } + // + // number of total particles vs. centre of mass Energy - 2*proton mass + // + G4double aleab = std::log(en/GeV); + n = 3.62567 + aleab*(0.665843 + aleab*(0.336514 + aleab*(0.117712 + 0.0136912*aleab))); + n -= 2.0; + // + // normalization constant for kno-distribution + // + anpn = 0.0; + G4double test, temp; + for( G4int i=iBegin; i<=numSec; ++i ) + { + temp = pi*i/(2.0*n*n); + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(i*i)/(n*n) ) ) ); + if( temp < 1.0 ) + { + if( test >= 1.0e-10 )anpn += temp*test; + } + else + anpn += temp*test; + } + } + +void G4RPGInelastic::CalculateMomenta( + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + const G4DynamicParticle *originalTarget, + G4ReactionProduct &modifiedOriginal, + G4Nucleus &targetNucleus, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool quasiElastic ) +{ + cache = 0; + what = originalIncident->Get4Momentum().vect(); + + G4ReactionProduct leadingStrangeParticle; + + strangeProduction.ReactionStage(originalIncident, modifiedOriginal, + incidentHasChanged, originalTarget, + targetParticle, targetHasChanged, + targetNucleus, currentParticle, + vec, vecLen, + false, leadingStrangeParticle); + + if( quasiElastic ) + { + twoBody.ReactionStage(originalIncident, modifiedOriginal, + incidentHasChanged, originalTarget, + targetParticle, targetHasChanged, + targetNucleus, currentParticle, + vec, vecLen, + false, leadingStrangeParticle); + return; + } + + G4bool leadFlag = MarkLeadingStrangeParticle(currentParticle, + targetParticle, + leadingStrangeParticle ); + // + // Note: the number of secondaries can be reduced in GenerateXandPt + // and TwoCluster + // + G4bool finishedGenXPt = false; + G4bool annihilation = false; + if( originalIncident->GetDefinition()->GetPDGEncoding() < 0 && + currentParticle.GetMass() == 0.0 && targetParticle.GetMass() == 0.0 ) + { + // original was an anti-particle and annihilation has taken place + annihilation = true; + G4double ekcor = 1.0; + G4double ek = originalIncident->GetKineticEnergy(); + G4double ekOrg = ek; + + const G4double tarmas = originalTarget->GetDefinition()->GetPDGMass(); + if( ek > 1.0*GeV )ekcor = 1./(ek/GeV); + const G4double atomicWeight = targetNucleus.GetN(); + ek = 2*tarmas + ek*(1.+ekcor/atomicWeight); + G4double tkin = targetNucleus.Cinema(ek); + ek += tkin; + ekOrg += tkin; + // modifiedOriginal.SetKineticEnergy( ekOrg ); + // + // evaporation -- re-calculate black track energies + // this was Done already just before the cascade + // + tkin = targetNucleus.AnnihilationEvaporationEffects(ek, ekOrg); + ekOrg -= tkin; + ekOrg = std::max( 0.0001*GeV, ekOrg ); + modifiedOriginal.SetKineticEnergy( ekOrg ); + G4double amas = originalIncident->GetDefinition()->GetPDGMass(); + G4double et = ekOrg + amas; + G4double p = std::sqrt( std::abs(et*et-amas*amas) ); + G4double pp = modifiedOriginal.GetMomentum().mag(); + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + if( ekOrg <= 0.0001 ) + { + modifiedOriginal.SetKineticEnergy( 0.0 ); + modifiedOriginal.SetMomentum( 0.0, 0.0, 0.0 ); + } + } + + // twsup gives percentage of time two-cluster model is called + + const G4double twsup[] = { 1.0, 0.7, 0.5, 0.3, 0.2, 0.1 }; + G4double rand1 = G4UniformRand(); + G4double rand2 = G4UniformRand(); + + // Cache current, target, and secondaries + G4ReactionProduct saveCurrent = currentParticle; + G4ReactionProduct saveTarget = targetParticle; + std::vector savevec; + for (G4int i = 0; i < vecLen; i++) savevec.push_back(*vec[i]); + + if( annihilation || (vecLen >= 6) || + (modifiedOriginal.GetKineticEnergy()/GeV >= 1.0) && + (((originalIncident->GetDefinition() == G4KaonPlus::KaonPlus() || + originalIncident->GetDefinition() == G4KaonMinus::KaonMinus() || + originalIncident->GetDefinition() == G4KaonZeroLong::KaonZeroLong() || + originalIncident->GetDefinition() == G4KaonZeroShort::KaonZeroShort()) && + rand1 < 0.5) || rand2 > twsup[vecLen]) ) + + finishedGenXPt = + fragmentation.ReactionStage(originalIncident, modifiedOriginal, + incidentHasChanged, originalTarget, + targetParticle, targetHasChanged, + targetNucleus, currentParticle, + vec, vecLen, + leadFlag, leadingStrangeParticle); + + if( finishedGenXPt ) + { + Rotate(vec, vecLen); + return; + } + + G4bool finishedTwoClu = false; + if( modifiedOriginal.GetTotalMomentum()/MeV < 1.0 ) + { + for(G4int i=0; i &vec, G4int &vecLen) + { + G4double rotation = 2.*pi*G4UniformRand(); + cache = rotation; + G4int i; + for( i=0; iGetMomentum(); + momentum = momentum.rotate(rotation, what); + vec[i]->SetMomentum(momentum); + } + } + +void +G4RPGInelastic::SetUpChange(G4FastVector &vec, + G4int &vecLen, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged ) +{ + theParticleChange.Clear(); + G4ParticleDefinition *aKaonZL = G4KaonZeroLong::KaonZeroLong(); + G4ParticleDefinition *aKaonZS = G4KaonZeroShort::KaonZeroShort(); + G4int i; + if( currentParticle.GetDefinition() == aKaonZL ) + { + if( G4UniformRand() <= 0.5 ) + { + currentParticle.SetDefinition( aKaonZS ); + incidentHasChanged = true; + } + } + else if( currentParticle.GetDefinition() == aKaonZS ) + { + if( G4UniformRand() > 0.5 ) + { + currentParticle.SetDefinition( aKaonZL ); + incidentHasChanged = true; + } + } + + if( targetParticle.GetDefinition() == aKaonZL ) + { + if( G4UniformRand() <= 0.5 )targetParticle.SetDefinition( aKaonZS ); + } + else if( targetParticle.GetDefinition() == aKaonZS ) + { + if( G4UniformRand() > 0.5 )targetParticle.SetDefinition( aKaonZL ); + } + for( i=0; iGetDefinition() == aKaonZL ) + { + if( G4UniformRand() <= 0.5 )vec[i]->SetDefinition( aKaonZS ); + } + else if( vec[i]->GetDefinition() == aKaonZS ) + { + if( G4UniformRand() > 0.5 )vec[i]->SetDefinition( aKaonZL ); + } + } + + if( incidentHasChanged ) + { + G4DynamicParticle* p0 = new G4DynamicParticle; + p0->SetDefinition( currentParticle.GetDefinition() ); + p0->SetMomentum( currentParticle.GetMomentum() ); + theParticleChange.AddSecondary( p0 ); + theParticleChange.SetStatusChange( stopAndKill ); + theParticleChange.SetEnergyChange( 0.0 ); + } + else + { + G4double p = currentParticle.GetMomentum().mag()/MeV; + G4ThreeVector m = currentParticle.GetMomentum(); + if( p > DBL_MIN ) + theParticleChange.SetMomentumChange( m.x()/p, m.y()/p, m.z()/p ); + else + theParticleChange.SetMomentumChange( 0.0, 0.0, 1.0 ); + + G4double aE = currentParticle.GetKineticEnergy(); + if (std::fabs(aE)<.1*eV) aE=.1*eV; + theParticleChange.SetEnergyChange( aE ); + } + + if( targetParticle.GetMass() > 0.0 ) // Tgt particle can be eliminated in TwoBody + { + G4ThreeVector momentum = targetParticle.GetMomentum(); + momentum = momentum.rotate(cache, what); + G4double targKE = targetParticle.GetKineticEnergy(); + G4ThreeVector dir(0.0, 0.0, 1.0); + if (targKE < DBL_MIN) + targKE = DBL_MIN; + else + dir = momentum/momentum.mag(); + + G4DynamicParticle* p1 = + new G4DynamicParticle(targetParticle.GetDefinition(), dir, targKE); + + theParticleChange.AddSecondary( p1 ); + } + + G4DynamicParticle* p; + for( i=0; iGetKineticEnergy(); + G4ThreeVector momentum = vec[i]->GetMomentum(); + G4ThreeVector dir(0.0, 0.0, 1.0); + if (secKE < DBL_MIN) + secKE = DBL_MIN; + else + dir = momentum/momentum.mag(); + + p = new G4DynamicParticle(vec[i]->GetDefinition(), dir, secKE); + theParticleChange.AddSecondary( p ); + delete vec[i]; + } +} + +/* end of file */ diff --git a/source/processes/hadronic/models/rpg/src/G4RPGKMinusInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGKMinusInelastic.cc new file mode 100644 index 0000000000..867291f308 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGKMinusInelastic.cc @@ -0,0 +1,531 @@ +// +// ******************************************************************** +// * 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: G4RPGKMinusInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGKMinusInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGKMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // create the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + G4ReactionProduct targetParticle( originalTarget->GetDefinition() ); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGKMinusInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + G4ReactionProduct currentParticle( const_cast(originalIncident->GetDefinition()) ); + currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() ); + currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() ); + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy(); + G4double amas = originalIncident->GetDefinition()->GetPDGMass(); + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + currentParticle.SetKineticEnergy( ek ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = currentParticle.GetMomentum().mag(); + if( pp > 0.0 ) + { + G4ThreeVector momentum = currentParticle.GetMomentum(); + currentParticle.SetMomentum( momentum * (p/pp) ); + } + + // calculate black track energies + + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + currentParticle.SetKineticEnergy( ek ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = currentParticle.GetMomentum().mag(); + if( pp > 0.0 ) + { + G4ThreeVector momentum = currentParticle.GetMomentum(); + currentParticle.SetMomentum( momentum * (p/pp) ); + } + + G4ReactionProduct modifiedOriginal = currentParticle; + + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1*MeV; + if( currentParticle.GetKineticEnergy() > cutOff ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGKMinusInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASKM + // + // K- undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + // + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass(); + const G4double etOriginal = originalIncident->GetTotalEnergy(); + const G4double pOriginal = originalIncident->GetTotalMomentum(); + const G4double targetMass = targetParticle.GetMass(); + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int nt(0), np(0), nm(0), nz(0); + const G4double c = 1.25; + const G4double b[] = { 0.70, 0.70 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0) && (nt<=numSec) ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0) && (nt<=numSec) ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); + G4ParticleDefinition *aKaonZS = G4KaonZeroShort::KaonZeroShort(); + G4ParticleDefinition *aKaonZL = G4KaonZeroLong::KaonZeroLong(); + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); + G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); + G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); + G4ParticleDefinition *aLambda = G4Lambda::Lambda(); + G4ParticleDefinition *aSigmaPlus = G4SigmaPlus::SigmaPlus(); + G4ParticleDefinition *aSigmaMinus = G4SigmaMinus::SigmaMinus(); + G4ParticleDefinition *aSigmaZero = G4SigmaZero::SigmaZero(); + const G4double cech[] = {1.,1.,1.,0.70,0.60,0.55,0.35,0.25,0.18,0.15}; + G4int iplab = G4int(std::min( 9.0, pOriginal/GeV*5.0 )); + if( (pOriginal <= 2.0*GeV) && (G4UniformRand() < cech[iplab]) ) + { + np = nm = nz = nt = 0; + iplab = G4int(std::min( 19.0, pOriginal/GeV*10.0 )); + const G4double cnk0[] = {0.17,0.18,0.17,0.24,0.26,0.20,0.22,0.21,0.34,0.45, + 0.58,0.55,0.36,0.29,0.29,0.32,0.32,0.33,0.33,0.33}; + if( G4UniformRand() <= cnk0[iplab] ) + { + quasiElastic = true; + if( targetParticle.GetDefinition() == aProton ) + { + currentParticle.SetDefinitionAndUpdateE( aKaonZL ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + } + else // random number > cnk0[iplab] + { + G4double ran = G4UniformRand(); + if( ran < 0.25 ) // k- p --> pi- s+ + { + if( targetParticle.GetDefinition() == aProton ) + { + currentParticle.SetDefinitionAndUpdateE( aPiMinus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + else if( ran < 0.50 ) // k- p --> pi0 s0 or k- n --> pi- s0 + { + if( targetParticle.GetDefinition() == aNeutron ) + currentParticle.SetDefinitionAndUpdateE( aPiMinus ); + else + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + targetHasChanged = true; + } + else if( ran < 0.75 ) // k- p --> pi+ s- or k- n --> pi0 s- + { + if( targetParticle.GetDefinition() == aNeutron ) + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + else + currentParticle.SetDefinitionAndUpdateE( aPiPlus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaMinus ); + incidentHasChanged = true; + targetHasChanged = true; + } + else // k- p --> pi0 L or k- n --> pi- L + { + if( targetParticle.GetDefinition() == aNeutron ) + currentParticle.SetDefinitionAndUpdateE( aPiMinus ); + else + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aLambda ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + } + else // (pOriginal > 2.0*GeV) || (random number >= cech[iplab]) + { + if( availableEnergy < aPiPlus->GetPDGMass() ) + { // not energetically possible to produce pion(s) + quasiElastic = true; + return; + } + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, test, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + G4int counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt > 0 ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + if( np == nm ) + { + if( G4UniformRand() >= 0.75 ) + { + currentParticle.SetDefinitionAndUpdateE( aKaonZL ); + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + else if( np == nm+1 ) + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( aKaonZL ); + incidentHasChanged = true; + } + } + else // target must be a neutron + { + G4int counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=np; nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( (nt>=1) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + if( np == nm-1 ) + { + if( G4UniformRand() < 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( aKaonZL ); + incidentHasChanged = true; + } + } + else if( np != nm ) + { + currentParticle.SetDefinitionAndUpdateE( aKaonZL ); + incidentHasChanged = true; + } + } + if( G4UniformRand() >= 0.5 ) + { + if( (currentParticle.GetDefinition() == aKaonMinus && + targetParticle.GetDefinition() == aNeutron ) || + (currentParticle.GetDefinition() == aKaonZL && + targetParticle.GetDefinition() == aProton ) ) + { + ran = G4UniformRand(); + if( ran < 0.68 ) + { + if( targetParticle.GetDefinition() == aProton ) + { + currentParticle.SetDefinitionAndUpdateE( aPiPlus ); + targetParticle.SetDefinitionAndUpdateE( aLambda ); + incidentHasChanged = true; + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( aPiMinus ); + targetParticle.SetDefinitionAndUpdateE( aLambda ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + else if( ran < 0.84 ) + { + if( targetParticle.GetDefinition() == aProton ) + { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( aPiMinus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + else + { + if( targetParticle.GetDefinition() == aProton ) + { + currentParticle.SetDefinitionAndUpdateE( aPiPlus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aSigmaMinus ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + } + else // ( current != aKaonMinus || target != aNeutron ) && + // ( current != aKaonZL || target != aProton ) + { + ran = G4UniformRand(); + if( ran < 0.67 ) + { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aLambda ); + incidentHasChanged = true; + targetHasChanged = true; + } + else if( ran < 0.78 ) + { + currentParticle.SetDefinitionAndUpdateE( aPiMinus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + targetHasChanged = true; + } + else if( ran < 0.89 ) + { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( aPiPlus ); + targetParticle.SetDefinitionAndUpdateE( aSigmaMinus ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + } + } + if( currentParticle.GetDefinition() == aKaonZL ) + { + if( G4UniformRand() >= 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aKaonZS ); + incidentHasChanged = true; + } + } + if( targetParticle.GetDefinition() == aKaonZL ) + { + if( G4UniformRand() >= 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aKaonZS ); + targetHasChanged = true; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + + + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGKPlusInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGKPlusInelastic.cc new file mode 100644 index 0000000000..ac003be5c4 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGKPlusInelastic.cc @@ -0,0 +1,403 @@ +// +// ******************************************************************** +// * 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: G4RPGKPlusInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGKPlusInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGKPlusInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // create the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + G4ReactionProduct targetParticle( originalTarget->GetDefinition() ); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGKPlusInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + G4ReactionProduct currentParticle( const_cast(originalIncident->GetDefinition())); + currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() ); + currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() ); + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy(); + G4double amas = originalIncident->GetDefinition()->GetPDGMass(); + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + currentParticle.SetKineticEnergy( ek ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = currentParticle.GetMomentum().mag(); + if( pp > 0.0 ) + { + G4ThreeVector momentum = currentParticle.GetMomentum(); + currentParticle.SetMomentum( momentum * (p/pp) ); + } + + // calculate black track energies + + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + currentParticle.SetKineticEnergy( ek ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = currentParticle.GetMomentum().mag(); + if( pp > 0.0 ) + { + G4ThreeVector momentum = currentParticle.GetMomentum(); + currentParticle.SetMomentum( momentum * (p/pp) ); + } + + G4ReactionProduct modifiedOriginal = currentParticle; + + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1*MeV; + if( currentParticle.GetKineticEnergy() > cutOff ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + + return &theParticleChange; +} + + +void G4RPGKPlusInelastic::Cascade( + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASKP + // + // K+ undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + // + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass(); + const G4double etOriginal = originalIncident->GetTotalEnergy(); + const G4double targetMass = targetParticle.GetMass(); + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy < G4PionPlus::PionPlus()->GetPDGMass() ) + { + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + + // np = number of pi+, nm = number of pi-, nz = number of pi0 + + G4int nt=0, np=0, nm=0, nz=0; + const G4double c = 1.25; + const G4double b[] = { 0.70, 0.70 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i 0 ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0) && (nt<=numSec) ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aKaonZS = G4KaonZeroShort::KaonZeroShort(); + G4ParticleDefinition *aKaonZL = G4KaonZeroLong::KaonZeroLong(); + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4int ieab = static_cast(availableEnergy*5.0/GeV); + const G4double supp[] = {0.,0.4,0.55,0.65,0.75,0.82,0.86,0.90,0.94,0.98}; + G4double test, w0, wp, wt, wm; + if( (availableEnergy < 2.0*GeV) && (G4UniformRand() >= supp[ieab]) ) + { + // suppress high multiplicity events at low momentum + // only one pion will be produced + + nm = np = nz = 0; + if( targetParticle.GetDefinition() == aProton ) + { + test = std::exp( std::min( expxu, std::max( expxl, -sqr(1.0+b[0])/(2.0*c*c) ) ) ); + w0 = test; + wp = test*2.0; + if( G4UniformRand() < w0/(w0+wp) ) + nz = 1; + else + np = 1; + } + else // target is a neutron + { + test = std::exp( std::min( expxu, std::max( expxl, -sqr(1.0+b[1])/(2.0*c*c) ) ) ); + w0 = test; + wp = test; + test = std::exp( std::min( expxu, std::max( expxl, -sqr(-1.0+b[1])/(2.0*c*c) ) ) ); + wm = test; + wt = w0+wp+wm; + wp += w0; + G4double ran = G4UniformRand(); + if( ran < w0/wt ) + nz = 1; + else if( ran < wp/wt ) + np = 1; + else + nm = 1; + } + } + else + { + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + G4int counter = -1; + for( np=0; (np=excs); ++np ) + { + for( nm=std::max(0,np-2); (nm<=np) && (ran>=excs); ++nm ) + { + for( nz=0; (nz=excs); ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt > 0 ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs )return; // 3 previous loops continued to the end + np--; nm--; nz--; + } + else // target must be a neutron + { + G4int counter = -1; + for( np=0; (np=excs); ++np ) + { + for( nm=std::max(0,np-1); (nm<=(np+1)) && (ran>=excs); ++nm ) + { + for( nz=0; (nz=excs); ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( (nt>=1) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs )return; // 3 previous loops continued to the end + np--; nm--; nz--; + } + } + + if( targetParticle.GetDefinition() == aProton ) + { + switch( np-nm ) + { + case 1: + if( G4UniformRand() < 0.5 ) + { + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( aKaonZS ); + else + currentParticle.SetDefinitionAndUpdateE( aKaonZL ); + incidentHasChanged = true; + } + else + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + break; + case 2: + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( aKaonZS ); + else + currentParticle.SetDefinitionAndUpdateE( aKaonZL ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + targetHasChanged = true; + break; + default: + break; + } + } + else // target is a neutron + { + switch( np-nm ) + { + case 0: + if( G4UniformRand() < 0.25 ) + { + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( aKaonZS ); + else + currentParticle.SetDefinitionAndUpdateE( aKaonZL ); + targetParticle.SetDefinitionAndUpdateE( aProton ); + incidentHasChanged = true; + targetHasChanged = true; + } + break; + case 1: + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( aKaonZS ); + else + currentParticle.SetDefinitionAndUpdateE( aKaonZL ); + incidentHasChanged = true; + break; + default: // assumes nm = np+1 so charge is conserved + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + break; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGKZeroInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGKZeroInelastic.cc new file mode 100644 index 0000000000..89bc3918a3 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGKZeroInelastic.cc @@ -0,0 +1,402 @@ +// +// ******************************************************************** +// * 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: G4RPGKZeroInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGKZeroInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGKZeroInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + + // create the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGKZeroInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + if( currentParticle.GetKineticEnergy()/MeV > cutOff ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + +void G4RPGKZeroInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASK0 + // + // K0Short undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + const G4double c = 1.25; + const G4double b[] = { 0.7, 0.7 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aKaonPlus = G4KaonPlus::KaonPlus(); + G4ParticleDefinition *aKaonZL = G4KaonZeroLong::KaonZeroLong(); + G4ParticleDefinition *aKaonZS = G4KaonZeroShort::KaonZeroShort(); + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4int ieab = static_cast(5.0*availableEnergy*MeV/GeV); + const G4double supp[] = {0.,0.4,0.55,0.65,0.75,0.82,0.86,0.90,0.94,0.98}; + G4double test, w0, wp, wt, wm; + if( (availableEnergy*MeV/GeV < 2.0) && (G4UniformRand() >= supp[ieab]) ) + { + // + // suppress high multiplicity events at low momentum + // only one pion will be produced + // + nm = np = nz = 0; + if( targetParticle.GetDefinition() == aNeutron ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(1.0+b[0])*(1.0+b[0])/(2.0*c*c) ) ) ); + w0 = test/2.0; + test = std::exp( std::min( expxu, std::max( expxl, -(-1.0+b[0])*(1.0+b[0])/(2.0*c*c) ) ) ); + wm = test*1.5; + if( G4UniformRand() < w0/(w0+wm) ) + nz = 1; + else + nm = 1; + } + else // target is a proton + { + test = std::exp( std::min( expxu, std::max( expxl, -(1.0+b[1])*(1.0+b[1])/(2.0*c*c) ) ) ); + w0 = test; + wp = test; + test = std::exp( std::min( expxu, std::max( expxl, -(-1.0+b[1])*(-1.0+b[1])/(2.0*c*c) ) ) ); + wm = test; + wt = w0+wp+wm; + wp += w0; + G4double ran = G4UniformRand(); + if( ran < w0/wt ) + nz = 1; + else if( ran < wp/wt ) + np = 1; + else + nm = 1; + } + } + else // (availableEnergy*MeV/GeV >= 2.0) || (G4UniformRand() < supp[ieab]) + { + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-2); nm<=np && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + } + } + if( targetParticle.GetDefinition() == aProton ) + { + switch( np-nm ) + { + case 0: + if( G4UniformRand() < 0.25 ) + { + currentParticle.SetDefinitionAndUpdateE( aKaonPlus ); + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + targetHasChanged = true; + } + break; + case 1: + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + break; + default: + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + break; + } + } + else // targetParticle is a neutron + { + switch( np-nm ) // seems wrong, charge not conserved + { + case 1: + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aKaonPlus ); + incidentHasChanged = true; + } + else + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + break; + case 2: + currentParticle.SetDefinitionAndUpdateE( aKaonPlus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + break; + default: + break; + } + } + if( currentParticle.GetDefinition() == aKaonZS ) + { + if( G4UniformRand() >= 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aKaonZL); + incidentHasChanged = true; + } + } + if( targetParticle.GetDefinition() == aKaonZS ) + { + if( G4UniformRand() >= 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aKaonZL ); + targetHasChanged = true; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGLambdaInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGLambdaInelastic.cc new file mode 100644 index 0000000000..0c354d1d35 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGLambdaInelastic.cc @@ -0,0 +1,357 @@ +// +// ******************************************************************** +// * 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: G4RPGLambdaInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGLambdaInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGLambdaInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + + // create the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGLambdaInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + if( currentParticle.GetKineticEnergy()/MeV > cutOff ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGLambdaInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASL0 + // + // Lambda undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + + // np = number of pi+, nm = number of pi-, nz = number of pi0 + + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.70, 0.35 }; + if( first ) { // compute normalization constants, this will only be Done once + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aSigmaPlus = G4SigmaPlus::SigmaPlus(); + G4ParticleDefinition *aSigmaMinus = G4SigmaMinus::SigmaMinus(); + G4ParticleDefinition *aSigmaZero = G4SigmaZero::SigmaZero(); + + // energetically possible to produce pion(s) --> inelastic scattering + // otherwise quasi-elastic scattering + + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) { + counter = -1; + for( np=0; np=excs; ++np ) { + for( nm=std::max(0,np-2); nm<=(np+1) && ran>=excs; ++nm ) { + for( nz=0; nz=excs; ++nz ) { + if( ++counter < numMul ) { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) { + if( test >= 1.0e-10 )excs += dum*test; + } else { + excs += dum*test; + } + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + G4int ncht = std::max( 1, np-nm ); + switch( ncht ) { + case 1: + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + break; + case 2: + if( G4UniformRand() < 0.5 ) { + if( G4UniformRand() < 0.5 ) { + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + } + } else { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + break; + case 3: + if( G4UniformRand() < 0.5 ) { + if( G4UniformRand() < 0.5 ) { + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + } + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } else { + currentParticle.SetDefinitionAndUpdateE( aSigmaMinus ); + incidentHasChanged = true; + } + break; + default: + currentParticle.SetDefinitionAndUpdateE( aSigmaMinus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + break; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) { + for( nm=std::max(0,np-1); nm<=(np+2) && ran>=excs; ++nm ) { + for( nz=0; nz=excs; ++nz ) { + if( ++counter < numMul ) { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) { + if( test >= 1.0e-10 )excs += dum*test; + } else { + excs += dum*test; + } + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + G4int ncht = std::max( 1, np-nm+3 ); + switch( ncht ) { + case 1: + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + break; + case 2: + if( G4UniformRand() < 0.5 ) { + if( G4UniformRand() < 0.5 ) { + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + } + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } else { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + } + break; + case 3: + if( G4UniformRand() < 0.5 ) { + if( G4UniformRand() < 0.5 ) { + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + } + } else { + currentParticle.SetDefinitionAndUpdateE( aSigmaMinus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + break; + default: + currentParticle.SetDefinitionAndUpdateE( aSigmaMinus ); + incidentHasChanged = true; + break; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGNeutronInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGNeutronInelastic.cc new file mode 100644 index 0000000000..ae2e13bf77 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGNeutronInelastic.cc @@ -0,0 +1,516 @@ +// +// ******************************************************************** +// * 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: G4RPGNeutronInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGNeutronInelastic.hh" +#include "Randomize.hh" +#include "G4Electron.hh" +// #include "DumpFrame.hh" + + G4HadFinalState * + G4RPGNeutronInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) + { + theParticleChange.Clear(); + const G4HadProjectile *originalIncident = &aTrack; + // + // create the target particle + // + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGNeutronInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } +/* not true, for example for Fe56, etc.. + if( originalIncident->GetKineticEnergy()/MeV < 0.000001 ) + throw G4HadronicException(__FILE__, __LINE__, "G4RPGNeutronInelastic: should be capture process!"); + if( originalIncident->Get4Momentum().vect().mag()/MeV < 0.000001 ) + throw G4HadronicException(__FILE__, __LINE__, "G4RPGNeutronInelastic: should be capture process!"); +*/ + + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + if( originalIncident->GetKineticEnergy()/GeV < 0.01 + 2.*G4UniformRand()/9. ) + { + SlowNeutron( originalIncident, modifiedOriginal, targetParticle, targetNucleus ); + delete originalTarget; + return &theParticleChange; + } + // + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + // + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + const G4double cutOff = 0.1; + if( modifiedOriginal.GetKineticEnergy()/MeV <= cutOff ) + { + SlowNeutron( originalIncident, modifiedOriginal, targetParticle, targetNucleus ); + delete originalTarget; + return &theParticleChange; + } + G4ReactionProduct currentParticle = modifiedOriginal; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; + } + + void + G4RPGNeutronInelastic::SlowNeutron( + const G4HadProjectile *originalIncident, + G4ReactionProduct &modifiedOriginal, + G4ReactionProduct &targetParticle, + G4Nucleus &targetNucleus ) + { + const G4double A = targetNucleus.GetN(); // atomic weight + const G4double Z = targetNucleus.GetZ(); // atomic number + + G4double currentKinetic = modifiedOriginal.GetKineticEnergy()/MeV; + G4double currentMass = modifiedOriginal.GetMass()/MeV; + if( A < 1.5 ) // Hydrogen + { + // + // very simple simulation of scattering angle and energy + // nonrelativistic approximation with isotropic angular + // distribution in the cms system + // + G4double cost1, eka = 0.0; + while (eka <= 0.0) + { + cost1 = -1.0 + 2.0*G4UniformRand(); + eka = 1.0 + 2.0*cost1*A + A*A; + } + G4double cost = std::min( 1.0, std::max( -1.0, (A*cost1+1.0)/std::sqrt(eka) ) ); + eka /= (1.0+A)*(1.0+A); + G4double ek = currentKinetic*MeV/GeV; + G4double amas = currentMass*MeV/GeV; + ek *= eka; + G4double en = ek + amas; + G4double p = std::sqrt(std::abs(en*en-amas*amas)); + G4double sint = std::sqrt(std::abs(1.0-cost*cost)); + G4double phi = G4UniformRand()*twopi; + G4double px = sint*std::sin(phi); + G4double py = sint*std::cos(phi); + G4double pz = cost; + targetParticle.SetMomentum( px*GeV, py*GeV, pz*GeV ); + G4double pxO = originalIncident->Get4Momentum().x()/GeV; + G4double pyO = originalIncident->Get4Momentum().y()/GeV; + G4double pzO = originalIncident->Get4Momentum().z()/GeV; + G4double ptO = pxO*pxO + pyO+pyO; + if( ptO > 0.0 ) + { + G4double pO = std::sqrt(pxO*pxO+pyO*pyO+pzO*pzO); + cost = pzO/pO; + sint = 0.5*(std::sqrt(std::abs((1.0-cost)*(1.0+cost)))+std::sqrt(ptO)/pO); + G4double ph = pi/2.0; + if( pyO < 0.0 )ph = ph*1.5; + if( std::abs(pxO) > 0.000001 )ph = std::atan2(pyO,pxO); + G4double cosp = std::cos(ph); + G4double sinp = std::sin(ph); + px = cost*cosp*px - sinp*py+sint*cosp*pz; + py = cost*sinp*px + cosp*py+sint*sinp*pz; + pz = -sint*px + cost*pz; + } + else + { + if( pz < 0.0 )pz *= -1.0; + } + G4double pu = std::sqrt(px*px+py*py+pz*pz); + modifiedOriginal.SetMomentum( targetParticle.GetMomentum() * (p/pu) ); + modifiedOriginal.SetKineticEnergy( ek*GeV ); + + targetParticle.SetMomentum( + originalIncident->Get4Momentum().vect() - modifiedOriginal.GetMomentum() ); + G4double pp = targetParticle.GetMomentum().mag(); + G4double tarmas = targetParticle.GetMass(); + targetParticle.SetTotalEnergy( std::sqrt( pp*pp + tarmas*tarmas ) ); + + theParticleChange.SetEnergyChange( modifiedOriginal.GetKineticEnergy() ); + G4DynamicParticle *pd = new G4DynamicParticle; + pd->SetDefinition( targetParticle.GetDefinition() ); + pd->SetMomentum( targetParticle.GetMomentum() ); + theParticleChange.AddSecondary( pd ); + return; + } + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + G4double theAtomicMass = targetNucleus.AtomicMass( A, Z ); + G4double massVec[9]; + massVec[0] = targetNucleus.AtomicMass( A+1.0, Z ); + massVec[1] = theAtomicMass; + massVec[2] = 0.; + if (Z > 1.0) + massVec[2] = targetNucleus.AtomicMass( A , Z-1.0 ); + massVec[3] = 0.; + if (Z > 1.0 && A > 1.0) + massVec[3] = targetNucleus.AtomicMass( A-1.0, Z-1.0 ); + massVec[4] = 0.; + if (Z > 1.0 && A > 2.0 && A-2.0 > Z-1.0) + massVec[4] = targetNucleus.AtomicMass( A-2.0, Z-1.0 ); + massVec[5] = 0.; + if (Z > 2.0 && A > 3.0 && A-3.0 > Z-2.0) + massVec[5] = targetNucleus.AtomicMass( A-3.0, Z-2.0 ); + massVec[6] = 0.; + if (A > 1.0 && A-1.0 > Z) + massVec[6] = targetNucleus.AtomicMass( A-1.0, Z ); + massVec[7] = massVec[3]; + massVec[8] = 0.; + if (Z > 2.0 && A > 1.0) + massVec[8] = targetNucleus.AtomicMass( A-1.0, Z-2.0 ); + + twoBody.NuclearReaction(vec, vecLen, originalIncident, + targetNucleus, theAtomicMass, massVec ); + + theParticleChange.SetStatusChange( stopAndKill ); + theParticleChange.SetEnergyChange( 0.0 ); + + G4DynamicParticle * pd; + for( G4int i=0; iSetDefinition( vec[i]->GetDefinition() ); + pd->SetMomentum( vec[i]->GetMomentum() ); + theParticleChange.AddSecondary( pd ); + delete vec[i]; + } + } + + void + G4RPGNeutronInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) + { + // derived from original FORTRAN code CASN by H. Fesefeldt (13-Sep-1987) + // + // Neutron undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + // + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + const G4double c = 1.25; + const G4double b[] = { 0.35, 0.0 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i 0 ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c) / + (Factorial(1-np+nm)*Factorial(1+np-nm) ); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0) && (nt<=numSec) ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c) / + (Factorial(nm-np)*Factorial(2-nm+np) ); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4int ieab = static_cast(availableEnergy*5.0/GeV); + const G4double supp[] = {0.,0.4,0.55,0.65,0.75,0.82,0.86,0.90,0.94,0.98}; + G4double test, w0, wp, wt, wm; + if( (availableEnergy < 2.0*GeV) && (G4UniformRand() >= supp[ieab]) ) + { + // suppress high multiplicity events at low momentum + // only one pion will be produced + + nm = np = nz = 0; + if( targetParticle.GetDefinition() == aNeutron ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(1.0+b[1])*(1.0+b[1])/(2.0*c*c) ) ) ); + w0 = test/2.0; + wm = test; + if( G4UniformRand() < w0/(w0+wm) ) + nz = 1; + else + nm = 1; + } else { // target is a proton + test = std::exp( std::min( expxu, std::max( expxl, -(1.0+b[0])*(1.0+b[0])/(2.0*c*c) ) ) ); + w0 = test; + wp = test/2.0; + test = std::exp( std::min( expxu, std::max( expxl, -(-1.0+b[0])*(-1.0+b[0])/(2.0*c*c) ) ) ); + wm = test/2.0; + wt = w0+wp+wm; + wp += w0; + G4double ran = G4UniformRand(); + if( ran < w0/wt ) + nz = 1; + else if( ran < wp/wt ) + np = 1; + else + nm = 1; + } + } else { // (availableEnergy >= 2.0*GeV) || (random number < supp[ieab]) + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt > 0 ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) { + if( test >= 1.0e-10 )excs += dum*test; + } else { + excs += dum*test; + } + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + } else { // target must be a neutron + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=np; nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( (nt>=1) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) { + if( test >= 1.0e-10 )excs += dum*test; + } else { + excs += dum*test; + } + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + } + } + if( targetParticle.GetDefinition() == aProton ) + { + switch( np-nm ) + { + case 0: + if( G4UniformRand() < 0.33 ) + { + currentParticle.SetDefinitionAndUpdateE( aProton ); + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + targetHasChanged = true; + } + break; + case 1: + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + break; + default: + currentParticle.SetDefinitionAndUpdateE( aProton ); + incidentHasChanged = true; + break; + } + } else { // target must be a neutron + switch( np-nm ) + { + case -1: // changed from +1 by JLC, 7Jul97 + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aProton ); + incidentHasChanged = true; + } else { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + break; + case 0: + break; + default: + currentParticle.SetDefinitionAndUpdateE( aProton ); + targetParticle.SetDefinitionAndUpdateE( aProton ); + incidentHasChanged = true; + targetHasChanged = true; + break; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); +// DEBUG --> DumpFrames::DumpFrame(vec, vecLen); + return; + } + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGOmegaMinusInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGOmegaMinusInelastic.cc new file mode 100644 index 0000000000..e820f2709f --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGOmegaMinusInelastic.cc @@ -0,0 +1,372 @@ +// +// ******************************************************************** +// * 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: G4RPGOmegaMinusInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGOmegaMinusInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGOmegaMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // create the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4double targetMass = originalTarget->GetDefinition()->GetPDGMass(); + G4ReactionProduct targetParticle( originalTarget->GetDefinition() ); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGOmegaMinusInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + G4ReactionProduct currentParticle( const_cast(originalIncident->GetDefinition() )); + currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() ); + currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() ); + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy(); + G4double amas = originalIncident->GetDefinition()->GetPDGMass(); + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + currentParticle.SetKineticEnergy( ek ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = currentParticle.GetMomentum().mag(); + if( pp > 0.0 ) + { + G4ThreeVector momentum = currentParticle.GetMomentum(); + currentParticle.SetMomentum( momentum * (p/pp) ); + } + + // calculate black track energies + + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + currentParticle.SetKineticEnergy( ek ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = currentParticle.GetMomentum().mag(); + if( pp > 0.0 ) + { + G4ThreeVector momentum = currentParticle.GetMomentum(); + currentParticle.SetMomentum( momentum * (p/pp) ); + } + + G4ReactionProduct modifiedOriginal = currentParticle; + + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1*MeV; + if( currentParticle.GetKineticEnergy() > cutOff ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGOmegaMinusInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASOM + // OmegaMinus undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass(); + const G4double etOriginal = originalIncident->GetTotalEnergy(); +// const G4double pOriginal = originalIncident->GetTotalMomentum(); + const G4double targetMass = targetParticle.GetMass(); + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass() ) + { + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.70, 0.70 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i 0 ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0) && (nt<=numSec) ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); + G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); + G4ParticleDefinition *aSigmaPlus = G4SigmaPlus::SigmaPlus(); + G4ParticleDefinition *aXiZero = G4XiZero::XiZero(); + + // energetically possible to produce pion(s) --> inelastic scattering + + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt > 0 ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=np; nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( (nt>=1) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + } + // number of secondary mesons determined by kno distribution + // check for total charge of final state mesons to determine + // the kind of baryons to be produced, taking into account + // charge and strangeness conservation + // + G4int nvefix = 0; + if( targetParticle.GetDefinition() == aProton ) + { + if( nm > np ) + { + if( nm == np+1 ) + { + currentParticle.SetDefinitionAndUpdateE( aXiZero ); + nvefix = 1; + } + else + { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + nvefix = 2; + } + incidentHasChanged = true; + } + else if( nm < np ) + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + } + else // target is a neutron + { + if( np+1 < nm ) + { + if( nm == np+2 ) + { + currentParticle.SetDefinitionAndUpdateE( aXiZero ); + incidentHasChanged = true; + nvefix = 1; + } + else // charge mismatch + { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + nvefix = 2; + } + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + else if( nm == np+1 ) + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + for( G4int i=0; i0; ++i ) + { + if( vec[i]->GetDefinition() == aPiMinus ) + { + if( nvefix >= 1 )vec[i]->SetDefinitionAndUpdateE( aKaonMinus ); + --nvefix; + } + } + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGPiMinusInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGPiMinusInelastic.cc new file mode 100644 index 0000000000..c2306ad2ac --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGPiMinusInelastic.cc @@ -0,0 +1,414 @@ +// +// ******************************************************************** +// * 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: G4RPGPiMinusInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGPiMinusInelastic.hh" +#include "Randomize.hh" + + +G4HadFinalState* +G4RPGPiMinusInelastic::ApplyYourself(const G4HadProjectile& aTrack, + G4Nucleus& targetNucleus) +{ + const G4HadProjectile* originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy() <= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // create the target particle + + G4DynamicParticle* originalTarget = targetNucleus.ReturnTargetParticle(); + G4ReactionProduct targetParticle( originalTarget->GetDefinition() ); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4PionMinusInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + + G4ReactionProduct currentParticle( + const_cast(originalIncident->GetDefinition() ) ); + currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() ); + currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() ); + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy(); + G4double amas = originalIncident->GetDefinition()->GetPDGMass(); + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + currentParticle.SetKineticEnergy( ek ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = currentParticle.GetMomentum().mag(); + if( pp > 0.0 ) + { + G4ThreeVector momentum = currentParticle.GetMomentum(); + currentParticle.SetMomentum( momentum * (p/pp) ); + } + + // calculate black track energies + + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + currentParticle.SetKineticEnergy( ek ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = currentParticle.GetMomentum().mag(); + if( pp > 0.0 ) + { + G4ThreeVector momentum = currentParticle.GetMomentum(); + currentParticle.SetMomentum( momentum * (p/pp) ); + } + + G4ReactionProduct modifiedOriginal = currentParticle; + + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1*MeV; + if( currentParticle.GetKineticEnergy() > cutOff ) + Cascade(vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic); + + CalculateMomenta(vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic); + + SetUpChange(vec, vecLen, currentParticle, targetParticle, + incidentHasChanged); + + delete originalTarget; + return &theParticleChange; +} + +void G4RPGPiMinusInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASPIM + // + // pi- undergoes interaction with nucleon within nucleus. + // Check if energetically possible to produce pions/kaons. + // If not assume nuclear excitation occurs and input particle + // is degraded in energy. No other particles produced. + // If reaction is possible find correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. + // Replace some pions or protons/neutrons by kaons or strange baryons + // according to average multiplicity per inelastic reactions. + // + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass(); + const G4double etOriginal = originalIncident->GetTotalEnergy(); + const G4double pOriginal = originalIncident->GetTotalMomentum(); + const G4double targetMass = targetParticle.GetMass(); + G4double centerofmassEnergy = std::sqrt(mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + const G4double c = 1.25; + const G4double b[] = { 0.70, 0.70 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i 0 ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0) && (nt<=numSec) ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); + G4int ieab = G4int(availableEnergy*5.0/GeV); + const G4double supp[] = {0.,0.4,0.55,0.65,0.75,0.82,0.86,0.90,0.94,0.98}; + G4double test, w0, wp, wt, wm; + if( (availableEnergy<2.0*GeV) && (G4UniformRand()>=supp[ieab]) ) + { + // suppress high multiplicity events at low momentum + // only one pion will be produced + + // charge exchange reaction is included in inelastic cross section + + const G4double cech[] = {1.,0.95,0.79,0.32,0.19,0.16,0.14,0.12,0.10,0.08}; + G4int iplab = G4int(std::min( 9.0, pOriginal/GeV*5.0 )); + if( G4UniformRand() <= cech[iplab] ) + { + if( targetParticle.GetDefinition() == aProton ) + { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); // charge exchange + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + + if( availableEnergy <= G4PionMinus::PionMinus()->GetPDGMass() ) + { + quasiElastic = true; + return; + } + + nm = np = nz = 0; + if( targetParticle.GetDefinition() == aProton ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(1.0+b[0])*(1.0+b[0])/(2.0*c*c) ) ) ); + w0 = test; + wp = 10.0*test; + test = std::exp( std::min( expxu, std::max( expxl, -(-1.0+b[0])*(-1.0+b[0])/(2.0*c*c) ) ) ); + wm = test; + wt = w0+wp+wm; + wp += w0; + G4double ran = G4UniformRand(); + if( ran < w0/wt ) + nz = 1; + else if( ran < wp/wt ) + np = 1; + else + nm = 1; + } + else // target is a neutron + { + test = std::exp( std::min( expxu, std::max( expxl, -(1.0+b[1])*(1.0+b[1])/(2.0*c*c) ) ) ); + w0 = test; + test = std::exp( std::min( expxu, std::max( expxl, -(-1.0+b[1])*(-1.0+b[1])/(2.0*c*c) ) ) ); + wm = test; + G4double ran = G4UniformRand(); + if( ran < w0/(w0+wm) ) + nz = 1; + else + nm = 1; + } + } + else + { + if( availableEnergy <= G4PionMinus::PionMinus()->GetPDGMass() ) + { + quasiElastic = true; + return; + } + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; (np=excs); ++np ) + { + for( nm=std::max(0,np-1); (nm<=(np+1)) && (ran>=excs); ++nm ) + { + for( nz=0; (nz=excs); ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt > 0 ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + } + else // target must be a neutron + { + counter = -1; + for( np=0; (np=excs); ++np ) + { + for( nm=np; (nm<=(np+2)) && (ran>=excs); ++nm ) + { + for( nz=0; (nz=excs); ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( (nt>=1) && (nt<=numSec) ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + } + } + if( targetParticle.GetDefinition() == aProton ) + { + switch( np-nm ) + { + case 0: + if( G4UniformRand() >= 0.75 ) + { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + targetHasChanged = true; + } + break; + case 1: + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + break; + default: + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + incidentHasChanged = true; + break; + } + } + else + { + switch( np-nm ) + { + case -1: + if( G4UniformRand() < 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } else { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + incidentHasChanged = true; + } + break; + case 0: + break; + default: + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + incidentHasChanged = true; + break; + } + } + + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGPiPlusInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGPiPlusInelastic.cc new file mode 100644 index 0000000000..331e860a04 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGPiPlusInelastic.cc @@ -0,0 +1,375 @@ +// +// ******************************************************************** +// * 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: G4RPGPiPlusInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGPiPlusInelastic.hh" +#include "Randomize.hh" + + G4HadFinalState * + G4RPGPiPlusInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) + { + const G4HadProjectile *originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // create the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4double targetMass = originalTarget->GetDefinition()->GetPDGMass(); + G4ReactionProduct targetParticle( originalTarget->GetDefinition() ); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGPiPlusInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy() << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + G4ReactionProduct currentParticle( + const_cast(originalIncident->GetDefinition() ) ); + currentParticle.SetMomentum( originalIncident->Get4Momentum().vect() ); + currentParticle.SetKineticEnergy( originalIncident->GetKineticEnergy() ); + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy(); + G4double amas = originalIncident->GetDefinition()->GetPDGMass(); + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + currentParticle.SetKineticEnergy( ek ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = currentParticle.GetMomentum().mag(); + if( pp > 0.0 ) + { + G4ThreeVector momentum = currentParticle.GetMomentum(); + currentParticle.SetMomentum( momentum * (p/pp) ); + } + + // calculate black track energies + + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + currentParticle.SetKineticEnergy( ek ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = currentParticle.GetMomentum().mag(); + if( pp > 0.0 ) + { + G4ThreeVector momentum = currentParticle.GetMomentum(); + currentParticle.SetMomentum( momentum * (p/pp) ); + } + + G4ReactionProduct modifiedOriginal = currentParticle; + + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1*MeV; + if( currentParticle.GetKineticEnergy() > cutOff ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; + } + + void + G4RPGPiPlusInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) + { + // derived from original FORTRAN code CASPIP by H. Fesefeldt (18-Sep-1987) + // + // pi+ undergoes interaction with nucleon within nucleus. + // Check if energetically possible to produce pions/kaons. + // If not assume nuclear excitation occurs and input particle + // is degraded in energy. No other particles produced. + // If reaction is possible find correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. + // Replace some pions or protons/neutrons by kaons or strange baryons + // according to average multiplicity per inelastic reactions. + // + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass(); + const G4double etOriginal = originalIncident->GetTotalEnergy(); + const G4double pOriginal = originalIncident->GetTotalMomentum(); + const G4double targetMass = targetParticle.GetMass(); + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + const G4double c = 1.25; + const G4double b[] = { 0.70, 0.70 }; + if( first ) { // compute normalization constants, this will only be Done once + first = false; + G4int i; + for( i=0; i 0 ) { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0) && (nt<=numSec) ) { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); + G4int ieab = static_cast(availableEnergy*5.0/GeV); + const G4double supp[] = {0.,0.2,0.45,0.55,0.65,0.75,0.85,0.90,0.94,0.98}; + G4double test, w0, wp, wt, wm; + if( (availableEnergy < 2.0*GeV) && (G4UniformRand() >= supp[ieab]) ) + { + // suppress high multiplicity events at low momentum + // only one pion will be produced + // charge exchange reaction is included in inelastic cross section + + const G4double cech[] = {1.,0.95,0.79,0.32,0.19,0.16,0.14,0.12,0.10,0.08}; + G4int iplab = G4int(std::min( 9.0, pOriginal/GeV*5.0 )); + if( G4UniformRand() <= cech[iplab] ) + { + if( targetParticle.GetDefinition() == aNeutron ) + { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); // charge exchange + targetParticle.SetDefinitionAndUpdateE( aProton ); + incidentHasChanged = true; + targetHasChanged = true; + } + } + + if( availableEnergy <= G4PionMinus::PionMinus()->GetPDGMass() ) + { + quasiElastic = true; + return; + } + + nm = np = nz = 0; + if( targetParticle.GetDefinition() == aProton ) { + test = std::exp( std::min( expxu, std::max( expxl, -sqr(1.0+b[0])/(2.0*c*c) ) ) ); + w0 = test; + wp = test; + if( G4UniformRand() < w0/(w0+wp) ) + nz =1; + else + np = 1; + } else { // target is a neutron + test = std::exp( std::min( expxu, std::max( expxl, -sqr(1.0+b[1])/(2.0*c*c) ) ) ); + w0 = test; + wp = test; + test = std::exp( std::min( expxu, std::max( expxl, -sqr(-1.0+b[1])/(2.0*c*c) ) ) ); + wm = test; + wt = w0+wp+wm; + wp = w0+wp; + G4double ran = G4UniformRand(); + if( ran < w0/wt ) + nz = 1; + else if( ran < wp/wt ) + np = 1; + else + nm = 1; + } + } else { + if( availableEnergy <= G4PionMinus::PionMinus()->GetPDGMass() ) + { + quasiElastic = true; + return; + } + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) { + counter = -1; + for( np=0; (np=excs); ++np ) { + for( nm=std::max(0,np-2); (nm<=np) && (ran>=excs); ++nm ) { + for( nz=0; (nz=excs); ++nz ) { + if( ++counter < numMul ) { + nt = np+nm+nz; + if( nt > 0 ) { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) { + if( test >= 1.0e-10 )excs += dum*test; + } else { + excs += dum*test; + } + } + } + } + } + } + if( ran >= excs ) + { + quasiElastic = true; + return; // 3 previous loops continued to the end + } + np--; nm--; nz--; + } else { // target must be a neutron + counter = -1; + for( np=0; (np=excs); ++np ) { + for( nm=std::max(0,np-1); (nm<=(np+1)) && (ran>=excs); ++nm ) { + for( nz=0; (nz=excs); ++nz ) { + if( ++counter < numMul ) { + nt = np+nm+nz; + if( (nt>=1) && (nt<=numSec) ) { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) { + if( test >= 1.0e-10 )excs += dum*test; + } else { + excs += dum*test; + } + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; // 3 previous loops continued to the end + } + np--; nm--; nz--; + } + } + if( targetParticle.GetDefinition() == aProton ) { + switch( np-nm ) { + case 1: + if( G4UniformRand() < 0.5 ) { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + incidentHasChanged = true; + } else { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + break; + case 2: + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + targetHasChanged = true; + break; + default: + break; + } + } else { + switch( np-nm ) { + case 0: + if( G4UniformRand() < 0.25 ) { + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + targetParticle.SetDefinitionAndUpdateE( aProton ); + incidentHasChanged = true; + targetHasChanged = true; + } + break; + case 1: + currentParticle.SetDefinitionAndUpdateE( aPiZero ); + incidentHasChanged = true; + break; + default: + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + break; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + return; + } + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGPionSuppression.cc b/source/processes/hadronic/models/rpg/src/G4RPGPionSuppression.cc new file mode 100644 index 0000000000..435de30883 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGPionSuppression.cc @@ -0,0 +1,143 @@ +// +// ******************************************************************** +// * 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: G4RPGPionSuppression.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGPionSuppression.hh" +#include "Randomize.hh" +#include +#include "G4HadReentrentException.hh" +#include + + +G4RPGPionSuppression::G4RPGPionSuppression() + : G4RPGReaction() {} + + +G4bool G4RPGPionSuppression:: +ReactionStage(const G4HadProjectile* /*originalIncident*/, + G4ReactionProduct& modifiedOriginal, + G4bool& incidentHasChanged, + const G4DynamicParticle* /*originalTarget*/, + G4ReactionProduct& targetParticle, + G4bool& targetHasChanged, + const G4Nucleus& targetNucleus, + G4ReactionProduct& currentParticle, + G4FastVector& vec, + G4int& vecLen, + G4bool /*leadFlag*/, + G4ReactionProduct& /*leadingStrangeParticle*/) +{ + // This code was originally in the fortran code TWOCLU + // + // Suppress charged pions, for various reasons + // + G4double mOriginal = modifiedOriginal.GetMass()/GeV; + G4double etOriginal = modifiedOriginal.GetTotalEnergy()/GeV; + G4double targetMass = targetParticle.GetDefinition()->GetPDGMass()/GeV; + G4double cmEnergy = std::sqrt( mOriginal*mOriginal + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double eAvailable = cmEnergy - mOriginal - targetMass; + for (G4int i = 0; i < vecLen; i++) eAvailable -= vec[i]->GetMass()/GeV; + + const G4double atomicWeight = targetNucleus.GetN(); + const G4double atomicNumber = targetNucleus.GetZ(); + const G4double pOriginal = modifiedOriginal.GetTotalMomentum()/GeV; + + G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); + G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); + G4ParticleDefinition* aPiZero = G4PionZero::PionZero(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4double piMass = aPiPlus->GetPDGMass()/GeV; + G4double nucleonMass = aNeutron->GetPDGMass()/GeV; + + const G4bool antiTest = + modifiedOriginal.GetDefinition() != G4AntiProton::AntiProton() && + modifiedOriginal.GetDefinition() != G4AntiNeutron::AntiNeutron() && + modifiedOriginal.GetDefinition() != G4AntiLambda::AntiLambda() && + modifiedOriginal.GetDefinition() != G4AntiSigmaPlus::AntiSigmaPlus() && + modifiedOriginal.GetDefinition() != G4AntiSigmaMinus::AntiSigmaMinus() && + modifiedOriginal.GetDefinition() != G4AntiXiZero::AntiXiZero() && + modifiedOriginal.GetDefinition() != G4AntiXiMinus::AntiXiMinus() && + modifiedOriginal.GetDefinition() != G4AntiOmegaMinus::AntiOmegaMinus(); + + if( antiTest && ( + currentParticle.GetDefinition() == aPiPlus || + currentParticle.GetDefinition() == aPiZero || + currentParticle.GetDefinition() == aPiMinus ) && + ( G4UniformRand() <= (10.0-pOriginal)/6.0 ) && + ( G4UniformRand() <= atomicWeight/300.0 ) ) + { + if (eAvailable > nucleonMass - piMass) { + if( G4UniformRand() > atomicNumber/atomicWeight ) + currentParticle.SetDefinitionAndUpdateE( aNeutron ); + else + currentParticle.SetDefinitionAndUpdateE( aProton ); + incidentHasChanged = true; + } + } + + if( antiTest && ( + targetParticle.GetDefinition() == aPiPlus || + targetParticle.GetDefinition() == aPiZero || + targetParticle.GetDefinition() == aPiMinus ) && + ( G4UniformRand() <= (10.0-pOriginal)/6.0 ) && + ( G4UniformRand() <= atomicWeight/300.0 ) ) + { + if (eAvailable > nucleonMass - piMass) { + if( G4UniformRand() > atomicNumber/atomicWeight ) + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + else + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + + for( G4int i=0; iGetDefinition() == aPiPlus || + vec[i]->GetDefinition() == aPiZero || + vec[i]->GetDefinition() == aPiMinus ) && + ( G4UniformRand() <= (10.0-pOriginal)/6.0 ) && + ( G4UniformRand() <= atomicWeight/300.0 ) ) + { + if (eAvailable > nucleonMass - piMass) { + if( G4UniformRand() > atomicNumber/atomicWeight ) + vec[i]->SetDefinitionAndUpdateE( aNeutron ); + else + vec[i]->SetDefinitionAndUpdateE( aProton ); + } + } + } + + return true; +} + + + /* end of file */ diff --git a/source/processes/hadronic/models/rpg/src/G4RPGProtonInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGProtonInelastic.cc new file mode 100644 index 0000000000..adb5973072 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGProtonInelastic.cc @@ -0,0 +1,467 @@ +// +// ******************************************************************** +// * 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: G4RPGProtonInelastic.cc,v 1.1 2007/07/18 21:04:20 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGProtonInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGProtonInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + theParticleChange.Clear(); + const G4HadProjectile *originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // + // create the target particle + // + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGProtonInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " + << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " + << targetMaterial->GetName() << ", "; + G4cout << "target particle = " + << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + + if( originalIncident->GetKineticEnergy()/GeV < 0.01+2.*G4UniformRand()/9. ) + { + SlowProton( originalIncident, targetNucleus ); + delete originalTarget; + return &theParticleChange; + } + + // + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + // + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + const G4double cutOff = 0.1; + if( modifiedOriginal.GetKineticEnergy()/MeV <= cutOff ) + { + SlowProton( originalIncident, targetNucleus ); + delete originalTarget; + return &theParticleChange; + } + + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the sec. particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + +void +G4RPGProtonInelastic::SlowProton(const G4HadProjectile *originalIncident, + G4Nucleus &targetNucleus ) +{ + const G4double A = targetNucleus.GetN(); // atomic weight + const G4double Z = targetNucleus.GetZ(); // atomic number +// G4double currentKinetic = originalIncident->GetKineticEnergy()/MeV; + // + // calculate Q-value of reactions + // + G4double theAtomicMass = targetNucleus.AtomicMass( A, Z ); + G4double massVec[9]; + massVec[0] = targetNucleus.AtomicMass( A+1.0, Z+1.0 ); + massVec[1] = 0.; + if (A > Z+1.0) + massVec[1] = targetNucleus.AtomicMass( A , Z+1.0 ); + massVec[2] = theAtomicMass; + massVec[3] = 0.; + if (A > 1.0 && A-1.0 > Z) + massVec[3] = targetNucleus.AtomicMass( A-1.0, Z ); + massVec[4] = 0.; + if (A > 2.0 && A-2.0 > Z) + massVec[4] = targetNucleus.AtomicMass( A-2.0, Z ); + massVec[5] = 0.; + if (A > 3.0 && Z > 1.0 && A-3.0 > Z-1.0) + massVec[5] = targetNucleus.AtomicMass( A-3.0, Z-1.0 ); + massVec[6] = 0.; + if (A > 1.0 && A-1.0 > Z+1.0) + massVec[6] = targetNucleus.AtomicMass( A-1.0, Z+1.0 ); + massVec[7] = massVec[3]; + massVec[8] = 0.; + if (A > 1.0 && Z > 1.0) + massVec[8] = targetNucleus.AtomicMass( A-1.0, Z-1.0 ); + + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + twoBody.NuclearReaction( vec, vecLen, originalIncident, + targetNucleus, theAtomicMass, massVec ); + + theParticleChange.SetStatusChange( stopAndKill ); + theParticleChange.SetEnergyChange( 0.0 ); + + G4DynamicParticle *pd; + for( G4int i=0; iSetDefinition( vec[i]->GetDefinition() ); + pd->SetMomentum( vec[i]->GetMomentum() ); + theParticleChange.AddSecondary( pd ); + delete vec[i]; + } +} + +void G4RPGProtonInelastic::Cascade( + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASP + // + // Proton undergoes interaction with nucleon within a nucleus. Check if + // it is energetically possible to produce pions/kaons. In not, assume + // nuclear excitation occurs and input particle is degraded in energy. No + // other particles are produced. + // If reaction is possible, find the correct number of + // pions/protons/neutrons produced using an interpolation to multiplicity + // data. Replace some pions or protons/neutrons by kaons or strange + // baryons according to the average multiplicity per Inelastic reaction. + // + // The center of mass energy is based on the initial energy, before + // Fermi motion and evaporation effects are taken into account + // + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV ) + { // not energetically possible to produce pion(s) + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + const G4double c = 1.25; + const G4double b[] = { 0.70, 0.35 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c) / + (Factorial(2-np+nm)*Factorial(np-nm) ); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c) / + (Factorial(1-np+nm)*Factorial(1+np-nm) ); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4int ieab = static_cast(availableEnergy*5.0/GeV); + const G4double supp[] = {0.,0.4,0.55,0.65,0.75,0.82,0.86,0.90,0.94,0.98}; + G4double test, w0, wp, wt, wm; + if( (availableEnergy < 2.0*GeV) && (G4UniformRand() >= supp[ieab]) ) + { + // suppress high multiplicity events at low momentum + // only one pion will be produced + + np = nm = nz = 0; + if( targetParticle.GetDefinition() == aProton ) + { + test = std::exp( std::min( expxu, std::max( + expxl, -(1.0+b[0])*(1.0+b[0])/(2.0*c*c) ) ) ); + w0 = test/2.0; + wp = test; + if( G4UniformRand() < w0/(w0+wp) ) + nz = 1; + else + np = 1; + } + else // target is a neutron + { + test = std::exp( std::min( expxu, std::max( + expxl, -(1.0+b[1])*(1.0+b[1])/(2.0*c*c) ) ) ); + w0 = test; + wp = test/2.0; + test = std::exp( std::min( expxu, std::max( + expxl, -(-1.0+b[1])*(-1.0+b[1])/(2.0*c*c) ) ) ); + wm = test/2.0; + wt = w0+wp+wm; + wp += w0; + G4double ran = G4UniformRand(); + if( ran < w0/wt ) + nz = 1; + else if( ran < wp/wt ) + np = 1; + else + nm = 1; + } + } + else // (availableEnergy >= 2.0*GeV) || (random number < supp[ieab]) + { + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-2); nm<=np && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } else { + excs += dum*test; + } + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } else { + excs += dum*test; + } + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + } + np--; nm--; nz--; + } + if( targetParticle.GetDefinition() == aProton ) + { + switch( np-nm ) + { + case 1: + if( G4UniformRand() < 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } else { + currentParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + } + break; + case 2: + currentParticle.SetDefinitionAndUpdateE( aNeutron ); + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + targetHasChanged = true; + break; + default: + break; + } + } + else // target is a neutron + { + switch( np-nm ) + { + case 0: + if( G4UniformRand() < 0.333333 ) + { + currentParticle.SetDefinitionAndUpdateE( aNeutron ); + targetParticle.SetDefinitionAndUpdateE( aProton ); + incidentHasChanged = true; + targetHasChanged = true; + } + break; + case 1: + currentParticle.SetDefinitionAndUpdateE( aNeutron ); + incidentHasChanged = true; + break; + default: + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + break; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + return; + } + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGReaction.cc b/source/processes/hadronic/models/rpg/src/G4RPGReaction.cc new file mode 100644 index 0000000000..115ec7ef83 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGReaction.cc @@ -0,0 +1,1256 @@ +// +// ******************************************************************** +// * 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: G4RPGReaction.cc,v 1.1 2007/07/18 21:04:21 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGReaction.hh" +#include "Randomize.hh" +#include + + +G4bool G4RPGReaction:: +ReactionStage(const G4HadProjectile* /*originalIncident*/, + G4ReactionProduct& /*modifiedOriginal*/, + G4bool& /*incidentHasChanged*/, + const G4DynamicParticle* /*originalTarget*/, + G4ReactionProduct& /*targetParticle*/, + G4bool& /*targetHasChanged*/, + const G4Nucleus& /*targetNucleus*/, + G4ReactionProduct& /*currentParticle*/, + G4FastVector& /*vec*/, + G4int& /*vecLen*/, + G4bool /*leadFlag*/, + G4ReactionProduct& /*leadingStrangeParticle*/) +{ + G4cout << " G4RPGReactionStage must be overridden in a derived class " + << G4endl; + return false; +} + + +void G4RPGReaction:: +AddBlackTrackParticles(const G4double epnb, // GeV + const G4int npnb, + const G4double edta, // GeV + const G4int ndta, + const G4double sprob, + const G4double kineticMinimum, // GeV + const G4double kineticFactor, // GeV + const G4ReactionProduct &modifiedOriginal, + G4int PinNucleus, + G4int NinNucleus, + const G4Nucleus &targetNucleus, + G4FastVector &vec, + G4int &vecLen ) +{ + // derived from original FORTRAN code in GENXPT and TWOCLU by H. Fesefeldt + // + // npnb is number of proton/neutron black track particles + // ndta is the number of deuterons, tritons, and alphas produced + // epnb is the kinetic energy available for proton/neutron black track particles + // edta is the kinetic energy available for deuteron/triton/alpha particles + // + + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aDeuteron = G4Deuteron::Deuteron(); + G4ParticleDefinition *aTriton = G4Triton::Triton(); + G4ParticleDefinition *anAlpha = G4Alpha::Alpha(); + + const G4double ekOriginal = modifiedOriginal.GetKineticEnergy()/MeV; + const G4double atomicWeight = targetNucleus.GetN(); + const G4double atomicNumber = targetNucleus.GetZ(); + + const G4double ika1 = 3.6; + const G4double ika2 = 35.56; + const G4double ika3 = 6.45; + + G4int i; + G4double pp; + G4double kinCreated = 0; + G4double cfa = 0.025*((atomicWeight-1.0)/120.0) * std::exp(-(atomicWeight-1.0)/120.0); + + // First add protons and neutrons to final state + + if (npnb > 0) + { + G4double backwardKinetic = 0.0; + G4int local_npnb = npnb; + for( i=0; i local_epnb ) + { + delete p1; + break; + } + G4double ran = G4UniformRand(); + G4double kinetic = -ekin*std::log(ran) - cfa*(1.0+0.5*normal()); + if( kinetic < 0.0 )kinetic = -0.010*std::log(ran); + backwardKinetic += kinetic; + if( backwardKinetic > local_epnb ) + kinetic = std::max( kineticMinimum, local_epnb-(backwardKinetic-kinetic) ); + + if (G4UniformRand() > (1.0-atomicNumber/atomicWeight)) { + + // Boil off a proton if there are any left, otherwise a neutron + + if (PinNucleus > 0) { + p1->SetDefinition( aProton ); + PinNucleus--; + } else if (NinNucleus > 0) { + p1->SetDefinition( aNeutron ); + NinNucleus--; + } else { + delete p1; + break; // no nucleons left in nucleus + } + } else { + + // Boil off a neutron if there are any left, otherwise a proton + + if (NinNucleus > 0) { + p1->SetDefinition( aNeutron ); + NinNucleus--; + } else if (PinNucleus > 0) { + p1->SetDefinition( aProton ); + PinNucleus--; + } else { + delete p1; + break; // no nucleons left in nucleus + } + } + + vec.SetElement( vecLen, p1 ); + G4double cost = G4UniformRand() * 2.0 - 1.0; + G4double sint = std::sqrt(std::fabs(1.0-cost*cost)); + G4double phi = twopi * G4UniformRand(); + vec[vecLen]->SetNewlyAdded( true ); + vec[vecLen]->SetKineticEnergy( kinetic*GeV ); + kinCreated+=kinetic; + pp = vec[vecLen]->GetTotalMomentum()/MeV; + vec[vecLen]->SetMomentum( pp*sint*std::sin(phi)*MeV, + pp*sint*std::cos(phi)*MeV, + pp*cost*MeV ); + vecLen++; + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + } + + if (NinNucleus > 0) { + if( (atomicWeight >= 10.0) && (ekOriginal <= 2.0*GeV) ) + { + G4double ekw = ekOriginal/GeV; + G4int ika, kk = 0; + if( ekw > 1.0 )ekw *= ekw; + ekw = std::max( 0.1, ekw ); + ika = G4int(ika1*std::exp((atomicNumber*atomicNumber/ + atomicWeight-ika2)/ika3)/ekw); + if( ika > 0 ) + { + for( i=(vecLen-1); i>=0; --i ) + { + if( (vec[i]->GetDefinition() == aProton) && vec[i]->GetNewlyAdded() ) + { + vec[i]->SetDefinitionAndUpdateE( aNeutron ); // modified 22-Oct-97 + PinNucleus++; + NinNucleus--; + if( ++kk > ika )break; + } + } + } + } + } // if (NinNucleus >0) + } // if (npnb > 0) + + // Next try to add deuterons, tritons and alphas to final state + + if (ndta > 0) + { + G4double backwardKinetic = 0.0; + G4int local_ndta=ndta; + // DHW for( i=0; i local_edta ) + { + delete p2; + break; + } + G4double ran = G4UniformRand(); + G4double kinetic = -ekin*std::log(ran)-cfa*(1.+0.5*normal()); + if( kinetic < 0.0 )kinetic = kineticFactor*std::log(ran); + backwardKinetic += kinetic; + if( backwardKinetic > local_edta )kinetic = local_edta-(backwardKinetic-kinetic); + if( kinetic < 0.0 )kinetic = kineticMinimum; + G4double cost = 2.0*G4UniformRand() - 1.0; + G4double sint = std::sqrt(std::max(0.0,(1.0-cost*cost))); + G4double phi = twopi*G4UniformRand(); + ran = G4UniformRand(); + if (ran < 0.60) { + if (PinNucleus > 0 && NinNucleus > 0) { + p2->SetDefinition( aDeuteron ); + PinNucleus--; + NinNucleus--; + } else if (NinNucleus > 0) { + p2->SetDefinition( aNeutron ); + NinNucleus--; + } else if (PinNucleus > 0) { + p2->SetDefinition( aProton ); + PinNucleus--; + } else { + delete p2; + break; + } + } else if (ran < 0.90) { + if (PinNucleus > 0 && NinNucleus > 1) { + p2->SetDefinition( aTriton ); + PinNucleus--; + NinNucleus -= 2; + } else if (PinNucleus > 0 && NinNucleus > 0) { + p2->SetDefinition( aDeuteron ); + PinNucleus--; + NinNucleus--; + } else if (NinNucleus > 0) { + p2->SetDefinition( aNeutron ); + NinNucleus--; + } else if (PinNucleus > 0) { + p2->SetDefinition( aProton ); + PinNucleus--; + } else { + delete p2; + break; + } + } else { + if (PinNucleus > 1 && NinNucleus > 1) { + p2->SetDefinition( anAlpha ); + PinNucleus -= 2; + NinNucleus -= 2; + } else if (PinNucleus > 0 && NinNucleus > 1) { + p2->SetDefinition( aTriton ); + PinNucleus--; + NinNucleus -= 2; + } else if (PinNucleus > 0 && NinNucleus > 0) { + p2->SetDefinition( aDeuteron ); + PinNucleus--; + NinNucleus--; + } else if (NinNucleus > 0) { + p2->SetDefinition( aNeutron ); + NinNucleus--; + } else if (PinNucleus > 0) { + p2->SetDefinition( aProton ); + PinNucleus--; + } else { + delete p2; + break; + } + } + + vec.SetElement( vecLen, p2 ); + vec[vecLen]->SetNewlyAdded( true ); + vec[vecLen]->SetKineticEnergy( kinetic*GeV ); + kinCreated+=kinetic; + pp = vec[vecLen]->GetTotalMomentum()/MeV; + vec[vecLen++]->SetMomentum( pp*sint*std::sin(phi)*MeV, + pp*sint*std::cos(phi)*MeV, + pp*cost*MeV ); + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + } + } // if (ndta > 0) + + // G4double delta = epnb+edta - kinCreated; +} + + +G4double G4RPGReaction::GenerateNBodyEvent( + const G4double totalEnergy, // MeV + const G4bool constantCrossSection, + G4FastVector &vec, + G4int &vecLen ) +{ + G4int i; + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + if( vecLen < 2 ) + { + G4cerr << "*** Error in G4RPGReaction::GenerateNBodyEvent" << G4endl; + G4cerr << " number of particles < 2" << G4endl; + G4cerr << "totalEnergy = " << totalEnergy << "MeV, vecLen = " << vecLen << G4endl; + return -1.0; + } + G4double mass[18]; // mass of each particle + G4double energy[18]; // total energy of each particle + G4double pcm[3][18]; // pcm is an array with 3 rows and vecLen columns + + G4double totalMass = 0.0; + G4double extraMass = 0; + G4double sm[18]; + + for( i=0; iGetMass()/GeV; + if(vec[i]->GetSide() == -2) extraMass+=vec[i]->GetMass()/GeV; + vec[i]->SetMomentum( 0.0, 0.0, 0.0 ); + pcm[0][i] = 0.0; // x-momentum of i-th particle + pcm[1][i] = 0.0; // y-momentum of i-th particle + pcm[2][i] = 0.0; // z-momentum of i-th particle + energy[i] = mass[i]; // total energy of i-th particle + totalMass += mass[i]; + sm[i] = totalMass; + } + G4double totalE = totalEnergy/GeV; + if( totalMass > totalE ) + { + //G4cerr << "*** Error in G4RPGReaction::GenerateNBodyEvent" << G4endl; + //G4cerr << " total mass (" << totalMass*GeV << "MeV) > total energy (" + // << totalEnergy << "MeV)" << G4endl; + totalE = totalMass; + return -1.0; + } + G4double kineticEnergy = totalE - totalMass; + G4double emm[18]; + //G4double *emm = new G4double [vecLen]; + emm[0] = mass[0]; + emm[vecLen-1] = totalE; + if( vecLen > 2 ) // the random numbers are sorted + { + G4double ran[18]; + for( i=0; ii; --j ) + { + if( ran[i] > ran[j] ) + { + G4double temp = ran[i]; + ran[i] = ran[j]; + ran[j] = temp; + } + } + } + for( i=1; i 0.0 ) + { + G4double arg = emmax*emmax + + (emmin*emmin-mass[i]*mass[i])*(emmin*emmin-mass[i]*mass[i])/(emmax*emmax) + - 2.0*(emmin*emmin+mass[i]*mass[i]); + if( arg > 0.0 )wtfc = 0.5*std::sqrt( arg ); + } + if( wtfc == 0.0 ) + { + lzero = false; + break; + } + wtmax += std::log( wtfc ); + } + if( lzero ) + wtmax = -wtmax; + else + wtmax = expxu; + } + else + { + // ffq(n) = pi*(2*pi)^(n-2)/(n-2)! + const G4double ffq[18] = { 0., 3.141592, 19.73921, 62.01255, 129.8788, 204.0131, + 256.3704, 268.4705, 240.9780, 189.2637, + 132.1308, 83.0202, 47.4210, 24.8295, + 12.0006, 5.3858, 2.2560, 0.8859 }; + wtmax = std::log( std::pow( kineticEnergy, vecLen-2 ) * ffq[vecLen-1] / totalE ); + } + lzero = true; + G4double pd[50]; + //G4double *pd = new G4double [vecLen-1]; + for( i=0; i 0.0 ) + { + G4double arg = emm[i+1]*emm[i+1] + + (emm[i]*emm[i]-mass[i+1]*mass[i+1])*(emm[i]*emm[i]-mass[i+1]*mass[i+1]) + /(emm[i+1]*emm[i+1]) + - 2.0*(emm[i]*emm[i]+mass[i+1]*mass[i+1]); + if( arg > 0.0 )pd[i] = 0.5*std::sqrt( arg ); + } + if( pd[i] <= 0.0 ) // changed from == on 02 April 98 + lzero = false; + else + wtmax += std::log( pd[i] ); + } + G4double weight = 0.0; // weight is returned by GenerateNBodyEvent + if( lzero )weight = std::exp( std::max(std::min(wtmax,expxu),expxl) ); + + G4double bang, cb, sb, s0, s1, s2, c, s, esys, a, b, gama, beta; + pcm[0][0] = 0.0; + pcm[1][0] = pd[0]; + pcm[2][0] = 0.0; + for( i=1; iSetMomentum( pcm[0][i]*GeV, pcm[1][i]*GeV, pcm[2][i]*GeV ); + vec[i]->SetTotalEnergy( energy[i]*GeV ); + } + + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + return weight; + } + +G4double G4RPGReaction::normal() +{ + G4double ran = -6.0; + for( G4int i=0; i<12; ++i )ran += G4UniformRand(); + return ran; +} + + +/* +G4int G4RPGReaction::Poisson( G4double x ) +{ + G4int iran; + G4double ran; + + if( x > 9.9 ) // use normal distribution with sigma^2 = + iran = static_cast(std::max( 0.0, x+normal()*std::sqrt(x) ) ); + else { + G4int mm = G4int(5.0*x); + if( mm <= 0 ) // for very small x try iran=1,2,3 + { + G4double p1 = x*std::exp(-x); + G4double p2 = x*p1/2.0; + G4double p3 = x*p2/3.0; + ran = G4UniformRand(); + if( ran < p3 ) + iran = 3; + else if( ran < p2 ) // this is original Geisha, it should be ran < p2+p3 + iran = 2; + else if( ran < p1 ) // should be ran < p1+p2+p3 + iran = 1; + else + iran = 0; + } + else + { + iran = 0; + G4double r = std::exp(-x); + ran = G4UniformRand(); + if( ran > r ) + { + G4double rrr; + G4double rr = r; + for( G4int i=1; i<=mm; ++i ) + { + iran++; + if( i > 5 ) // Stirling's formula for large numbers + rrr = std::exp(i*std::log(x)-(i+0.5)*std::log((G4double)i)+i-0.9189385); + else + rrr = std::pow(x,i)/Factorial(i); + rr += r*rrr; + if( ran <= rr )break; + } + } + } + } + return iran; +} +*/ + +// G4int G4RPGReaction::Factorial( G4int n ) +// { +// G4int m = std::min(n,10); +// G4int result = 1; +// if( m <= 1 )return result; +// for( G4int i=2; i<=m; ++i )result *= i; +// return result; +// } + + + void G4RPGReaction::Defs1( + const G4ReactionProduct &modifiedOriginal, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4FastVector &vec, + G4int &vecLen ) + { + // Rotate final state particle momenta by initial particle direction + + const G4double pjx = modifiedOriginal.GetMomentum().x()/MeV; + const G4double pjy = modifiedOriginal.GetMomentum().y()/MeV; + const G4double pjz = modifiedOriginal.GetMomentum().z()/MeV; + const G4double p = modifiedOriginal.GetMomentum().mag()/MeV; + if( pjx*pjx+pjy*pjy > 0.0 ) + { + G4double cost, sint, ph, cosp, sinp, pix, piy, piz; + cost = pjz/p; + sint = std::sqrt(std::abs((1.0-cost)*(1.0+cost))); + if( pjy < 0.0 ) + ph = 3*halfpi; + else + ph = halfpi; + if( std::abs( pjx ) > 0.001*MeV )ph = std::atan2(pjy,pjx); + cosp = std::cos(ph); + sinp = std::sin(ph); + pix = currentParticle.GetMomentum().x()/MeV; + piy = currentParticle.GetMomentum().y()/MeV; + piz = currentParticle.GetMomentum().z()/MeV; + currentParticle.SetMomentum((cost*cosp*pix - sinp*piy + sint*cosp*piz)*MeV, + (cost*sinp*pix + cosp*piy + sint*sinp*piz)*MeV, + (-sint*pix + cost*piz)*MeV); + pix = targetParticle.GetMomentum().x()/MeV; + piy = targetParticle.GetMomentum().y()/MeV; + piz = targetParticle.GetMomentum().z()/MeV; + targetParticle.SetMomentum((cost*cosp*pix - sinp*piy + sint*cosp*piz)*MeV, + (cost*sinp*pix + cosp*piy + sint*sinp*piz)*MeV, + (-sint*pix + cost*piz)*MeV); + for( G4int i=0; iGetMomentum().x()/MeV; + piy = vec[i]->GetMomentum().y()/MeV; + piz = vec[i]->GetMomentum().z()/MeV; + vec[i]->SetMomentum((cost*cosp*pix - sinp*piy + sint*cosp*piz)*MeV, + (cost*sinp*pix + cosp*piy + sint*sinp*piz)*MeV, + (-sint*pix + cost*piz)*MeV); + } + } + else + { + if( pjz < 0.0 ) + { + currentParticle.SetMomentum( -currentParticle.GetMomentum().z() ); + targetParticle.SetMomentum( -targetParticle.GetMomentum().z() ); + for( G4int i=0; iSetMomentum( -vec[i]->GetMomentum().z() ); + } + } + } + + void G4RPGReaction::Rotate( + const G4double numberofFinalStateNucleons, + const G4ThreeVector &temp, + const G4ReactionProduct &modifiedOriginal, // Fermi motion & evap. effect included + const G4HadProjectile *originalIncident, // original incident particle + const G4Nucleus &targetNucleus, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4FastVector &vec, + G4int &vecLen ) + { + // derived from original FORTRAN code in GENXPT and TWOCLU by H. Fesefeldt + // + // Rotate in direction of z-axis, this does disturb in some way our + // inclusive distributions, but it is necessary for momentum conservation + // + const G4double atomicWeight = targetNucleus.GetN(); + const G4double logWeight = std::log(atomicWeight); + + G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); + G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); + G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); + + G4int i; + G4ThreeVector pseudoParticle[4]; + for( i=0; i<4; ++i )pseudoParticle[i].set(0,0,0); + pseudoParticle[0] = currentParticle.GetMomentum() + + targetParticle.GetMomentum(); + for( i=0; iGetMomentum()); + // + // Some smearing in transverse direction from Fermi motion + // + G4float pp, pp1; + G4double alekw, p; + G4double r1, r2, a1, ran1, ran2, xxh, exh, pxTemp, pyTemp, pzTemp; + + r1 = twopi*G4UniformRand(); + r2 = G4UniformRand(); + a1 = std::sqrt(-2.0*std::log(r2)); + ran1 = a1*std::sin(r1)*0.020*numberofFinalStateNucleons*GeV; + ran2 = a1*std::cos(r1)*0.020*numberofFinalStateNucleons*GeV; + G4ThreeVector fermi(ran1, ran2, 0); + + pseudoParticle[0] = pseudoParticle[0]+fermi; // all particles + fermi + pseudoParticle[2] = temp; // original in cms system + pseudoParticle[3] = pseudoParticle[0]; + + pseudoParticle[1] = pseudoParticle[2].cross(pseudoParticle[3]); + G4double rotation = 2.*pi*G4UniformRand(); + pseudoParticle[1] = pseudoParticle[1].rotate(rotation, pseudoParticle[3]); + pseudoParticle[2] = pseudoParticle[3].cross(pseudoParticle[1]); + for(G4int ii=1; ii<=3; ii++) + { + p = pseudoParticle[ii].mag(); + if( p == 0.0 ) + pseudoParticle[ii]= G4ThreeVector( 0.0, 0.0, 0.0 ); + else + pseudoParticle[ii]= pseudoParticle[ii] * (1./p); + } + + pxTemp = pseudoParticle[1].dot(currentParticle.GetMomentum()); + pyTemp = pseudoParticle[2].dot(currentParticle.GetMomentum()); + pzTemp = pseudoParticle[3].dot(currentParticle.GetMomentum()); + currentParticle.SetMomentum( pxTemp, pyTemp, pzTemp ); + + pxTemp = pseudoParticle[1].dot(targetParticle.GetMomentum()); + pyTemp = pseudoParticle[2].dot(targetParticle.GetMomentum()); + pzTemp = pseudoParticle[3].dot(targetParticle.GetMomentum()); + targetParticle.SetMomentum( pxTemp, pyTemp, pzTemp ); + + for( i=0; iGetMomentum()); + pyTemp = pseudoParticle[2].dot(vec[i]->GetMomentum()); + pzTemp = pseudoParticle[3].dot(vec[i]->GetMomentum()); + vec[i]->SetMomentum( pxTemp, pyTemp, pzTemp ); + } + // + // Rotate in direction of primary particle, subtract binding energies + // and make some further corrections if required + // + Defs1( modifiedOriginal, currentParticle, targetParticle, vec, vecLen ); + G4double ekin; + G4double dekin = 0.0; + G4double ek1 = 0.0; + G4int npions = 0; + if( atomicWeight >= 1.5 ) // self-absorption in heavy molecules + { + // corrections for single particle spectra (shower particles) + // + const G4double alem[] = { 1.40, 2.30, 2.70, 3.00, 3.40, 4.60, 7.00 }; + const G4double val0[] = { 0.00, 0.40, 0.48, 0.51, 0.54, 0.60, 0.65 }; + alekw = std::log( originalIncident->GetKineticEnergy()/GeV ); + exh = 1.0; + if( alekw > alem[0] ) // get energy bin + { + exh = val0[6]; + for( G4int j=1; j<7; ++j ) + { + if( alekw < alem[j] ) // use linear interpolation/extrapolation + { + G4double rcnve = (val0[j] - val0[j-1]) / (alem[j] - alem[j-1]); + exh = rcnve * alekw + val0[j-1] - rcnve * alem[j-1]; + break; + } + } + exh = 1.0 - exh; + } + const G4double cfa = 0.025*((atomicWeight-1.)/120.)*std::exp(-(atomicWeight-1.)/120.); + ekin = currentParticle.GetKineticEnergy()/GeV - cfa*(1+normal()/2.0); + ekin = std::max( 1.0e-6, ekin ); + xxh = 1.0; + if( (modifiedOriginal.GetDefinition() == aPiPlus || + modifiedOriginal.GetDefinition() == aPiMinus) && + currentParticle.GetDefinition() == aPiZero && + G4UniformRand() <= logWeight) xxh = exh; + dekin += ekin*(1.0-xxh); + ekin *= xxh; + if (currentParticle.GetDefinition()->GetParticleSubType() == "pi") { + ++npions; + ek1 += ekin; + } + currentParticle.SetKineticEnergy( ekin*GeV ); + pp = currentParticle.GetTotalMomentum()/MeV; + pp1 = currentParticle.GetMomentum().mag()/MeV; + if( pp1 < 0.001*MeV ) + { + G4double costheta = 2.*G4UniformRand() - 1.; + G4double sintheta = std::sqrt(1. - costheta*costheta); + G4double phi = twopi*G4UniformRand(); + currentParticle.SetMomentum( pp*sintheta*std::cos(phi)*MeV, + pp*sintheta*std::sin(phi)*MeV, + pp*costheta*MeV ) ; + } + else + currentParticle.SetMomentum( currentParticle.GetMomentum() * (pp/pp1) ); + ekin = targetParticle.GetKineticEnergy()/GeV - cfa*(1+normal()/2.0); + ekin = std::max( 1.0e-6, ekin ); + xxh = 1.0; + if( (modifiedOriginal.GetDefinition() == aPiPlus || + modifiedOriginal.GetDefinition() == aPiMinus) && + targetParticle.GetDefinition() == aPiZero && + G4UniformRand() < logWeight) xxh = exh; + dekin += ekin*(1.0-xxh); + ekin *= xxh; + if (targetParticle.GetDefinition()->GetParticleSubType() == "pi") { + ++npions; + ek1 += ekin; + } + targetParticle.SetKineticEnergy( ekin*GeV ); + pp = targetParticle.GetTotalMomentum()/MeV; + pp1 = targetParticle.GetMomentum().mag()/MeV; + if( pp1 < 0.001*MeV ) + { + G4double costheta = 2.*G4UniformRand() - 1.; + G4double sintheta = std::sqrt(1. - costheta*costheta); + G4double phi = twopi*G4UniformRand(); + targetParticle.SetMomentum( pp*sintheta*std::cos(phi)*MeV, + pp*sintheta*std::sin(phi)*MeV, + pp*costheta*MeV ) ; + } + else + targetParticle.SetMomentum( targetParticle.GetMomentum() * (pp/pp1) ); + for( i=0; iGetKineticEnergy()/GeV - cfa*(1+normal()/2.0); + ekin = std::max( 1.0e-6, ekin ); + xxh = 1.0; + if( (modifiedOriginal.GetDefinition() == aPiPlus || + modifiedOriginal.GetDefinition() == aPiMinus) && + vec[i]->GetDefinition() == aPiZero && + G4UniformRand() < logWeight) xxh = exh; + dekin += ekin*(1.0-xxh); + ekin *= xxh; + if (vec[i]->GetDefinition()->GetParticleSubType() == "pi") { + ++npions; + ek1 += ekin; + } + vec[i]->SetKineticEnergy( ekin*GeV ); + pp = vec[i]->GetTotalMomentum()/MeV; + pp1 = vec[i]->GetMomentum().mag()/MeV; + if( pp1 < 0.001*MeV ) + { + G4double costheta = 2.*G4UniformRand() - 1.; + G4double sintheta = std::sqrt(1. - costheta*costheta); + G4double phi = twopi*G4UniformRand(); + vec[i]->SetMomentum( pp*sintheta*std::cos(phi)*MeV, + pp*sintheta*std::sin(phi)*MeV, + pp*costheta*MeV ) ; + } + else + vec[i]->SetMomentum( vec[i]->GetMomentum() * (pp/pp1) ); + } + } + if( (ek1 != 0.0) && (npions > 0) ) + { + dekin = 1.0 + dekin/ek1; + // + // first do the incident particle + // + if (currentParticle.GetDefinition()->GetParticleSubType() == "pi") + { + currentParticle.SetKineticEnergy( + std::max( 0.001*MeV, dekin*currentParticle.GetKineticEnergy() ) ); + pp = currentParticle.GetTotalMomentum()/MeV; + pp1 = currentParticle.GetMomentum().mag()/MeV; + if( pp1 < 0.001 ) + { + G4double costheta = 2.*G4UniformRand() - 1.; + G4double sintheta = std::sqrt(1. - costheta*costheta); + G4double phi = twopi*G4UniformRand(); + currentParticle.SetMomentum( pp*sintheta*std::cos(phi)*MeV, + pp*sintheta*std::sin(phi)*MeV, + pp*costheta*MeV ) ; + } else { + currentParticle.SetMomentum( currentParticle.GetMomentum() * (pp/pp1) ); + } + } + + if (targetParticle.GetDefinition()->GetParticleSubType() == "pi") + { + targetParticle.SetKineticEnergy( + std::max( 0.001*MeV, dekin*targetParticle.GetKineticEnergy() ) ); + pp = targetParticle.GetTotalMomentum()/MeV; + pp1 = targetParticle.GetMomentum().mag()/MeV; + if( pp1 < 0.001 ) + { + G4double costheta = 2.*G4UniformRand() - 1.; + G4double sintheta = std::sqrt(1. - costheta*costheta); + G4double phi = twopi*G4UniformRand(); + targetParticle.SetMomentum( pp*sintheta*std::cos(phi)*MeV, + pp*sintheta*std::sin(phi)*MeV, + pp*costheta*MeV ) ; + } else { + targetParticle.SetMomentum( targetParticle.GetMomentum() * (pp/pp1) ); + } + } + + for( i=0; iGetDefinition()->GetParticleSubType() == "pi") + { + vec[i]->SetKineticEnergy( std::max( 0.001*MeV, dekin*vec[i]->GetKineticEnergy() ) ); + pp = vec[i]->GetTotalMomentum()/MeV; + pp1 = vec[i]->GetMomentum().mag()/MeV; + if( pp1 < 0.001 ) + { + G4double costheta = 2.*G4UniformRand() - 1.; + G4double sintheta = std::sqrt(1. - costheta*costheta); + G4double phi = twopi*G4UniformRand(); + vec[i]->SetMomentum( pp*sintheta*std::cos(phi)*MeV, + pp*sintheta*std::sin(phi)*MeV, + pp*costheta*MeV ) ; + } else { + vec[i]->SetMomentum( vec[i]->GetMomentum() * (pp/pp1) ); + } + } + } // for i + } // if (ek1 != 0) + } + + std::pair G4RPGReaction::GetFinalStateNucleons( + const G4DynamicParticle* originalTarget, + const G4FastVector& vec, + const G4int& vecLen) + { + // Get number of protons and neutrons removed from the target nucleus + + G4int protonsRemoved = 0; + G4int neutronsRemoved = 0; + if (originalTarget->GetDefinition()->GetParticleName() == "proton") + protonsRemoved++; + else + neutronsRemoved++; + + G4String secName; + for (G4int i = 0; i < vecLen; i++) { + secName = vec[i]->GetDefinition()->GetParticleName(); + if (secName == "proton") { + protonsRemoved++; + } else if (secName == "neutron") { + neutronsRemoved++; + } else if (secName == "anti_proton") { + protonsRemoved--; + } else if (secName == "anti_neutron") { + neutronsRemoved--; + } + } + + return std::pair(protonsRemoved, neutronsRemoved); + } + + + G4ThreeVector G4RPGReaction::Isotropic(const G4double& pp) + { + G4double costheta = 2.*G4UniformRand() - 1.; + G4double sintheta = std::sqrt(1. - costheta*costheta); + G4double phi = twopi*G4UniformRand(); + return G4ThreeVector(pp*sintheta*std::cos(phi), + pp*sintheta*std::sin(phi), + pp*costheta); + } + + + void G4RPGReaction::MomentumCheck( + const G4ReactionProduct &modifiedOriginal, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4FastVector &vec, + G4int &vecLen ) + { + const G4double pOriginal = modifiedOriginal.GetTotalMomentum()/MeV; + G4double testMomentum = currentParticle.GetMomentum().mag()/MeV; + G4double pMass; + if( testMomentum >= pOriginal ) + { + pMass = currentParticle.GetMass()/MeV; + currentParticle.SetTotalEnergy( + std::sqrt( pMass*pMass + pOriginal*pOriginal )*MeV ); + currentParticle.SetMomentum( + currentParticle.GetMomentum() * (pOriginal/testMomentum) ); + } + testMomentum = targetParticle.GetMomentum().mag()/MeV; + if( testMomentum >= pOriginal ) + { + pMass = targetParticle.GetMass()/MeV; + targetParticle.SetTotalEnergy( + std::sqrt( pMass*pMass + pOriginal*pOriginal )*MeV ); + targetParticle.SetMomentum( + targetParticle.GetMomentum() * (pOriginal/testMomentum) ); + } + for( G4int i=0; iGetMomentum().mag()/MeV; + if( testMomentum >= pOriginal ) + { + pMass = vec[i]->GetMass()/MeV; + vec[i]->SetTotalEnergy( + std::sqrt( pMass*pMass + pOriginal*pOriginal )*MeV ); + vec[i]->SetMomentum( vec[i]->GetMomentum() * (pOriginal/testMomentum) ); + } + } + } + + void G4RPGReaction::NuclearReaction( + G4FastVector &vec, + G4int &vecLen, + const G4HadProjectile *originalIncident, + const G4Nucleus &targetNucleus, + const G4double theAtomicMass, + const G4double *mass ) + { + // derived from original FORTRAN code NUCREC by H. Fesefeldt (12-Feb-1987) + // + // Nuclear reaction kinematics at low energies + // + G4ParticleDefinition *aGamma = G4Gamma::Gamma(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aDeuteron = G4Deuteron::Deuteron(); + G4ParticleDefinition *aTriton = G4Triton::Triton(); + G4ParticleDefinition *anAlpha = G4Alpha::Alpha(); + + const G4double aProtonMass = aProton->GetPDGMass()/MeV; + const G4double aNeutronMass = aNeutron->GetPDGMass()/MeV; + const G4double aDeuteronMass = aDeuteron->GetPDGMass()/MeV; + const G4double aTritonMass = aTriton->GetPDGMass()/MeV; + const G4double anAlphaMass = anAlpha->GetPDGMass()/MeV; + + G4ReactionProduct currentParticle; + currentParticle = *originalIncident; + // + // Set beam particle, take kinetic energy of current particle as the + // fundamental quantity. Due to the difficult kinematic, all masses have to + // be assigned the best measured values + // + G4double p = currentParticle.GetTotalMomentum(); + G4double pp = currentParticle.GetMomentum().mag(); + if( pp <= 0.001*MeV ) + { + G4double phinve = twopi*G4UniformRand(); + G4double rthnve = std::acos( std::max( -1.0, std::min( 1.0, -1.0 + 2.0*G4UniformRand() ) ) ); + currentParticle.SetMomentum( p*std::sin(rthnve)*std::cos(phinve), + p*std::sin(rthnve)*std::sin(phinve), + p*std::cos(rthnve) ); + } + else + currentParticle.SetMomentum( currentParticle.GetMomentum() * (p/pp) ); + // + // calculate Q-value of reactions + // + G4double currentKinetic = currentParticle.GetKineticEnergy()/MeV; + G4double currentMass = currentParticle.GetDefinition()->GetPDGMass()/MeV; + G4double qv = currentKinetic + theAtomicMass + currentMass; + + G4double qval[9]; + qval[0] = qv - mass[0]; + qval[1] = qv - mass[1] - aNeutronMass; + qval[2] = qv - mass[2] - aProtonMass; + qval[3] = qv - mass[3] - aDeuteronMass; + qval[4] = qv - mass[4] - aTritonMass; + qval[5] = qv - mass[5] - anAlphaMass; + qval[6] = qv - mass[6] - aNeutronMass - aNeutronMass; + qval[7] = qv - mass[7] - aNeutronMass - aProtonMass; + qval[8] = qv - mass[8] - aProtonMass - aProtonMass; + + if( currentParticle.GetDefinition() == aNeutron ) + { + const G4double A = targetNucleus.GetN(); // atomic weight + if( G4UniformRand() > ((A-1.0)/230.0)*((A-1.0)/230.0) ) + qval[0] = 0.0; + if( G4UniformRand() >= currentKinetic/7.9254*A ) + qval[2] = qval[3] = qval[4] = qval[5] = qval[8] = 0.0; + } + else + qval[0] = 0.0; + + G4int i; + qv = 0.0; + for( i=0; i<9; ++i ) + { + if( mass[i] < 500.0*MeV )qval[i] = 0.0; + if( qval[i] < 0.0 )qval[i] = 0.0; + qv += qval[i]; + } + G4double qv1 = 0.0; + G4double ran = G4UniformRand(); + G4int index; + for( index=0; index<9; ++index ) + { + if( qval[index] > 0.0 ) + { + qv1 += qval[index]/qv; + if( ran <= qv1 )break; + } + } + if( index == 9 ) // loop continued to the end + { + throw G4HadronicException(__FILE__, __LINE__, + "G4RPGReaction::NuclearReaction: inelastic reaction kinematically not possible"); + } + G4double ke = currentParticle.GetKineticEnergy()/GeV; + G4int nt = 2; + if( (index>=6) || (G4UniformRand()SetMass( mass[index]*MeV ); + switch( index ) + { + case 0: + v[1]->SetDefinition( aGamma ); + v[2]->SetDefinition( aGamma ); + break; + case 1: + v[1]->SetDefinition( aNeutron ); + v[2]->SetDefinition( aGamma ); + break; + case 2: + v[1]->SetDefinition( aProton ); + v[2]->SetDefinition( aGamma ); + break; + case 3: + v[1]->SetDefinition( aDeuteron ); + v[2]->SetDefinition( aGamma ); + break; + case 4: + v[1]->SetDefinition( aTriton ); + v[2]->SetDefinition( aGamma ); + break; + case 5: + v[1]->SetDefinition( anAlpha ); + v[2]->SetDefinition( aGamma ); + break; + case 6: + v[1]->SetDefinition( aNeutron ); + v[2]->SetDefinition( aNeutron ); + break; + case 7: + v[1]->SetDefinition( aNeutron ); + v[2]->SetDefinition( aProton ); + break; + case 8: + v[1]->SetDefinition( aProton ); + v[2]->SetDefinition( aProton ); + break; + } + // + // calculate centre of mass energy + // + G4ReactionProduct pseudo1; + pseudo1.SetMass( theAtomicMass*MeV ); + pseudo1.SetTotalEnergy( theAtomicMass*MeV ); + G4ReactionProduct pseudo2 = currentParticle + pseudo1; + pseudo2.SetMomentum( pseudo2.GetMomentum() * (-1.0) ); + // + // use phase space routine in centre of mass system + // + G4FastVector tempV; + tempV.Initialize( nt ); + G4int tempLen = 0; + tempV.SetElement( tempLen++, v[0] ); + tempV.SetElement( tempLen++, v[1] ); + if( nt == 3 )tempV.SetElement( tempLen++, v[2] ); + G4bool constantCrossSection = true; + GenerateNBodyEvent( pseudo2.GetMass()/MeV, constantCrossSection, tempV, tempLen ); + v[0]->Lorentz( *v[0], pseudo2 ); + v[1]->Lorentz( *v[1], pseudo2 ); + if( nt == 3 )v[2]->Lorentz( *v[2], pseudo2 ); + + G4bool particleIsDefined = false; + if( v[0]->GetMass()/MeV - aProtonMass < 0.1 ) + { + v[0]->SetDefinition( aProton ); + particleIsDefined = true; + } + else if( v[0]->GetMass()/MeV - aNeutronMass < 0.1 ) + { + v[0]->SetDefinition( aNeutron ); + particleIsDefined = true; + } + else if( v[0]->GetMass()/MeV - aDeuteronMass < 0.1 ) + { + v[0]->SetDefinition( aDeuteron ); + particleIsDefined = true; + } + else if( v[0]->GetMass()/MeV - aTritonMass < 0.1 ) + { + v[0]->SetDefinition( aTriton ); + particleIsDefined = true; + } + else if( v[0]->GetMass()/MeV - anAlphaMass < 0.1 ) + { + v[0]->SetDefinition( anAlpha ); + particleIsDefined = true; + } + currentParticle.SetKineticEnergy( + std::max( 0.001, currentParticle.GetKineticEnergy()/MeV ) ); + p = currentParticle.GetTotalMomentum(); + pp = currentParticle.GetMomentum().mag(); + if( pp <= 0.001*MeV ) + { + G4double phinve = twopi*G4UniformRand(); + G4double rthnve = std::acos( std::max( -1.0, std::min( 1.0, -1.0 + 2.0*G4UniformRand() ) ) ); + currentParticle.SetMomentum( p*std::sin(rthnve)*std::cos(phinve), + p*std::sin(rthnve)*std::sin(phinve), + p*std::cos(rthnve) ); + } + else + currentParticle.SetMomentum( currentParticle.GetMomentum() * (p/pp) ); + + if( particleIsDefined ) + { + v[0]->SetKineticEnergy( + std::max( 0.001, 0.5*G4UniformRand()*v[0]->GetKineticEnergy()/MeV ) ); + p = v[0]->GetTotalMomentum(); + pp = v[0]->GetMomentum().mag(); + if( pp <= 0.001*MeV ) + { + G4double phinve = twopi*G4UniformRand(); + G4double rthnve = std::acos( std::max(-1.0,std::min(1.0,-1.0+2.0*G4UniformRand())) ); + v[0]->SetMomentum( p*std::sin(rthnve)*std::cos(phinve), + p*std::sin(rthnve)*std::sin(phinve), + p*std::cos(rthnve) ); + } + else + v[0]->SetMomentum( v[0]->GetMomentum() * (p/pp) ); + } + if( (v[1]->GetDefinition() == aDeuteron) || + (v[1]->GetDefinition() == aTriton) || + (v[1]->GetDefinition() == anAlpha) ) + v[1]->SetKineticEnergy( + std::max( 0.001, 0.5*G4UniformRand()*v[1]->GetKineticEnergy()/MeV ) ); + else + v[1]->SetKineticEnergy( std::max( 0.001, v[1]->GetKineticEnergy()/MeV ) ); + + p = v[1]->GetTotalMomentum(); + pp = v[1]->GetMomentum().mag(); + if( pp <= 0.001*MeV ) + { + G4double phinve = twopi*G4UniformRand(); + G4double rthnve = std::acos( std::max(-1.0,std::min(1.0,-1.0+2.0*G4UniformRand())) ); + v[1]->SetMomentum( p*std::sin(rthnve)*std::cos(phinve), + p*std::sin(rthnve)*std::sin(phinve), + p*std::cos(rthnve) ); + } + else + v[1]->SetMomentum( v[1]->GetMomentum() * (p/pp) ); + + if( nt == 3 ) + { + if( (v[2]->GetDefinition() == aDeuteron) || + (v[2]->GetDefinition() == aTriton) || + (v[2]->GetDefinition() == anAlpha) ) + v[2]->SetKineticEnergy( + std::max( 0.001, 0.5*G4UniformRand()*v[2]->GetKineticEnergy()/MeV ) ); + else + v[2]->SetKineticEnergy( std::max( 0.001, v[2]->GetKineticEnergy()/MeV ) ); + + p = v[2]->GetTotalMomentum(); + pp = v[2]->GetMomentum().mag(); + if( pp <= 0.001*MeV ) + { + G4double phinve = twopi*G4UniformRand(); + G4double rthnve = std::acos( std::max(-1.0,std::min(1.0,-1.0+2.0*G4UniformRand())) ); + v[2]->SetMomentum( p*std::sin(rthnve)*std::cos(phinve), + p*std::sin(rthnve)*std::sin(phinve), + p*std::cos(rthnve) ); + } + else + v[2]->SetMomentum( v[2]->GetMomentum() * (p/pp) ); + } + G4int del; + for(del=0; delGetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // create the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGSigmaMinusInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + if( originalIncident->GetKineticEnergy()/MeV > cutOff ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGSigmaMinusInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASSM + // + // SigmaMinus undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per Inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.70, 0.70 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aLambda = G4Lambda::Lambda(); + G4ParticleDefinition *aSigmaZero = G4SigmaZero::SigmaZero(); + + // energetically possible to produce pion(s) --> inelastic scattering + + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + G4int ncht = std::max( 1, np-nm+2 ); + switch( ncht ) + { + case 1: + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( aLambda ); + else + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + break; + case 2: + if( G4UniformRand() >= 0.5 ) + { + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( aLambda ); + else + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + break; + default: + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + break; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=np; nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + G4int ncht = std::max( 1, np-nm+3 ); + switch( ncht ) + { + case 1: + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( aLambda ); + else + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + break; + case 2: + if( G4UniformRand() < 0.5 ) + { + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( aLambda ); + else + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + } + else + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + break; + default: + break; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGSigmaPlusInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGSigmaPlusInelastic.cc new file mode 100644 index 0000000000..9765d88785 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGSigmaPlusInelastic.cc @@ -0,0 +1,375 @@ +// +// ******************************************************************** +// * 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: G4RPGSigmaPlusInelastic.cc,v 1.1 2007/07/18 21:04:21 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGSigmaPlusInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGSigmaPlusInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // create the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGSigmaPlusInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + if( currentParticle.GetKineticEnergy()/MeV > cutOff ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + +void G4RPGSigmaPlusInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASSP + // + // SigmaPlus undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.7, 0.7 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aLambda = G4Lambda::Lambda(); + G4ParticleDefinition *aSigmaZero = G4SigmaZero::SigmaZero(); + // + // energetically possible to produce pion(s) --> inelastic scattering + // + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=np; nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + switch( std::min( 3, std::max( 1, np-nm+3 ) ) ) + { + case 1: + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( aLambda ); + else + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + break; + case 2: + if( G4UniformRand() < 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + else + { + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( aLambda ); + else + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + } + break; + case 3: + break; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + switch( std::min( 3, std::max( 1, np-nm+2 ) ) ) + { + case 1: + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + break; + case 2: + if( G4UniformRand() < 0.5 ) + { + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aLambda ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + else + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + } + else + { + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + break; + case 3: + if( G4UniformRand() < 0.5 ) + currentParticle.SetDefinitionAndUpdateE( aLambda ); + else + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + incidentHasChanged = true; + break; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGStrangeProduction.cc b/source/processes/hadronic/models/rpg/src/G4RPGStrangeProduction.cc new file mode 100644 index 0000000000..e147f6fab7 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGStrangeProduction.cc @@ -0,0 +1,443 @@ +// +// ******************************************************************** +// * 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: G4RPGStrangeProduction.cc,v 1.1 2007/07/18 21:04:21 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGStrangeProduction.hh" +// #include "G4AntiProton.hh" +// #include "G4AntiNeutron.hh" +#include "Randomize.hh" +#include +#include "G4HadReentrentException.hh" +#include + + +G4RPGStrangeProduction::G4RPGStrangeProduction() + : G4RPGReaction() {} + + +G4bool G4RPGStrangeProduction:: +ReactionStage(const G4HadProjectile* /*originalIncident*/, + G4ReactionProduct& modifiedOriginal, + G4bool& incidentHasChanged, + const G4DynamicParticle* originalTarget, + G4ReactionProduct& targetParticle, + G4bool& targetHasChanged, + const G4Nucleus& /*targetNucleus*/, + G4ReactionProduct& currentParticle, + G4FastVector& vec, + G4int& vecLen, + G4bool /*leadFlag*/, + G4ReactionProduct& /*leadingStrangeParticle*/) +{ + // Derived from H. Fesefeldt's original FORTRAN code STPAIR + // + // Choose charge combinations K+ K-, K+ K0B, K0 K0B, K0 K-, + // K+ Y0, K0 Y+, K0 Y- + // For antibaryon induced reactions half of the cross sections KB YB + // pairs are produced. Charge is not conserved, no experimental data available + // for exclusive reactions, therefore some average behaviour assumed. + // The ratio L/SIGMA is taken as 3:1 (from experimental low energy) + // + + if( vecLen == 0 )return true; + // + // the following protects against annihilation processes + // + if( currentParticle.GetMass() == 0.0 || targetParticle.GetMass() == 0.0 )return true; + + const G4double etOriginal = modifiedOriginal.GetTotalEnergy()/GeV; + const G4double mOriginal = modifiedOriginal.GetDefinition()->GetPDGMass()/GeV; + G4double targetMass = originalTarget->GetDefinition()->GetPDGMass()/GeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); // GeV + G4double currentMass = currentParticle.GetMass()/GeV; + G4double availableEnergy = centerofmassEnergy-(targetMass+currentMass); + if( availableEnergy <= 1.0 )return true; + + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *anAntiProton = G4AntiProton::AntiProton(); + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *anAntiNeutron = G4AntiNeutron::AntiNeutron(); + G4ParticleDefinition *aSigmaMinus = G4SigmaMinus::SigmaMinus(); + G4ParticleDefinition *aSigmaPlus = G4SigmaPlus::SigmaPlus(); + G4ParticleDefinition *aSigmaZero = G4SigmaZero::SigmaZero(); + G4ParticleDefinition *anAntiSigmaMinus = G4AntiSigmaMinus::AntiSigmaMinus(); + G4ParticleDefinition *anAntiSigmaPlus = G4AntiSigmaPlus::AntiSigmaPlus(); + G4ParticleDefinition *anAntiSigmaZero = G4AntiSigmaZero::AntiSigmaZero(); + G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); + G4ParticleDefinition *aKaonPlus = G4KaonPlus::KaonPlus(); + G4ParticleDefinition *aKaonZL = G4KaonZeroLong::KaonZeroLong(); + G4ParticleDefinition *aKaonZS = G4KaonZeroShort::KaonZeroShort(); + G4ParticleDefinition *aLambda = G4Lambda::Lambda(); + G4ParticleDefinition *anAntiLambda = G4AntiLambda::AntiLambda(); + + const G4double protonMass = aProton->GetPDGMass()/GeV; + const G4double sigmaMinusMass = aSigmaMinus->GetPDGMass()/GeV; + // + // determine the center of mass energy bin + // + const G4double avrs[] = {3.,4.,5.,6.,7.,8.,9.,10.,20.,30.,40.,50.}; + + G4int ibin, i3, i4; + G4double avk, avy, avn, ran; + G4int i = 1; + while( (i<12) && (centerofmassEnergy>avrs[i]) )++i; + if( i == 12 ) + ibin = 11; + else + ibin = i; + // + // the fortran code chooses a random replacement of produced kaons + // but does not take into account charge conservation + // + if( vecLen == 1 ) // we know that vecLen > 0 + { + i3 = 0; + i4 = 1; // note that we will be adding a new secondary particle in this case only + } + else // otherwise 0 <= i3,i4 < vecLen + { + G4double ran = G4UniformRand(); + while( ran == 1.0 )ran = G4UniformRand(); + i4 = i3 = G4int( vecLen*ran ); + while( i3 == i4 ) + { + ran = G4UniformRand(); + while( ran == 1.0 )ran = G4UniformRand(); + i4 = G4int( vecLen*ran ); + } + } + + // + // use linear interpolation or extrapolation by y=centerofmassEnergy*x+b + // + const G4double avkkb[] = { 0.0015, 0.005, 0.012, 0.0285, 0.0525, 0.075, + 0.0975, 0.123, 0.28, 0.398, 0.495, 0.573 }; + const G4double avky[] = { 0.005, 0.03, 0.064, 0.095, 0.115, 0.13, + 0.145, 0.155, 0.20, 0.205, 0.210, 0.212 }; + const G4double avnnb[] = { 0.00001, 0.0001, 0.0006, 0.0025, 0.01, 0.02, + 0.04, 0.05, 0.12, 0.15, 0.18, 0.20 }; + + avk = (std::log(avkkb[ibin])-std::log(avkkb[ibin-1]))*(centerofmassEnergy-avrs[ibin-1]) + /(avrs[ibin]-avrs[ibin-1]) + std::log(avkkb[ibin-1]); + avk = std::exp(avk); + + avy = (std::log(avky[ibin])-std::log(avky[ibin-1]))*(centerofmassEnergy-avrs[ibin-1]) + /(avrs[ibin]-avrs[ibin-1]) + std::log(avky[ibin-1]); + avy = std::exp(avy); + + avn = (std::log(avnnb[ibin])-std::log(avnnb[ibin-1]))*(centerofmassEnergy-avrs[ibin-1]) + /(avrs[ibin]-avrs[ibin-1]) + std::log(avnnb[ibin-1]); + avn = std::exp(avn); + + if( avk+avy+avn <= 0.0 )return true; + + if( currentMass < protonMass )avy /= 2.0; + if( targetMass < protonMass )avy = 0.0; + avy += avk+avn; + avk += avn; + ran = G4UniformRand(); + if( ran < avn ) + { + if( availableEnergy < 2.0 )return true; + if( vecLen == 1 ) // add a new secondary + { + G4ReactionProduct *p1 = new G4ReactionProduct; + if( G4UniformRand() < 0.5 ) + { + vec[0]->SetDefinition( aNeutron ); + p1->SetDefinition( anAntiNeutron ); + (G4UniformRand() < 0.5) ? p1->SetSide( -1 ) : p1->SetSide( 1 ); + vec[0]->SetMayBeKilled(false); + p1->SetMayBeKilled(false); + } + else + { + vec[0]->SetDefinition( aProton ); + p1->SetDefinition( anAntiProton ); + (G4UniformRand() < 0.5) ? p1->SetSide( -1 ) : p1->SetSide( 1 ); + vec[0]->SetMayBeKilled(false); + p1->SetMayBeKilled(false); + } + vec.SetElement( vecLen++, p1 ); + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + } + else + { // replace two secondaries + if( G4UniformRand() < 0.5 ) + { + vec[i3]->SetDefinition( aNeutron ); + vec[i4]->SetDefinition( anAntiNeutron ); + vec[i3]->SetMayBeKilled(false); + vec[i4]->SetMayBeKilled(false); + } + else + { + vec[i3]->SetDefinition( aProton ); + vec[i4]->SetDefinition( anAntiProton ); + vec[i3]->SetMayBeKilled(false); + vec[i4]->SetMayBeKilled(false); + } + } + } + else if( ran < avk ) + { + if( availableEnergy < 1.0 )return true; + + const G4double kkb[] = { 0.2500, 0.3750, 0.5000, 0.5625, 0.6250, + 0.6875, 0.7500, 0.8750, 1.000 }; + const G4int ipakkb1[] = { 10, 10, 10, 11, 11, 12, 12, 11, 12 }; + const G4int ipakkb2[] = { 13, 11, 12, 11, 12, 11, 12, 13, 13 }; + ran = G4UniformRand(); + i = 0; + while( (i<9) && (ran>=kkb[i]) )++i; + if( i == 9 )return true; + // + // ipakkb[] = { 10,13, 10,11, 10,12, 11,11, 11,12, 12,11, 12,12, 11,13, 12,13 }; + // charge + - + 0 + 0 0 0 0 0 0 0 0 0 0 - 0 - + // + switch( ipakkb1[i] ) + { + case 10: + vec[i3]->SetDefinition( aKaonPlus ); + vec[i3]->SetMayBeKilled(false); + break; + case 11: + vec[i3]->SetDefinition( aKaonZS ); + vec[i3]->SetMayBeKilled(false); + break; + case 12: + vec[i3]->SetDefinition( aKaonZL ); + vec[i3]->SetMayBeKilled(false); + break; + } + + if( vecLen == 1 ) // add a secondary + { + G4ReactionProduct *p1 = new G4ReactionProduct; + switch( ipakkb2[i] ) + { + case 11: + p1->SetDefinition( aKaonZS ); + p1->SetMayBeKilled(false); + break; + case 12: + p1->SetDefinition( aKaonZL ); + p1->SetMayBeKilled(false); + break; + case 13: + p1->SetDefinition( aKaonMinus ); + p1->SetMayBeKilled(false); + break; + } + (G4UniformRand() < 0.5) ? p1->SetSide( -1 ) : p1->SetSide( 1 ); + vec.SetElement( vecLen++, p1 ); + + } + else // replace + { + switch( ipakkb2[i] ) + { + case 11: + vec[i4]->SetDefinition( aKaonZS ); + vec[i4]->SetMayBeKilled(false); + break; + case 12: + vec[i4]->SetDefinition( aKaonZL ); + vec[i4]->SetMayBeKilled(false); + break; + case 13: + vec[i4]->SetDefinition( aKaonMinus ); + vec[i4]->SetMayBeKilled(false); + break; + } + } + } + else if( ran < avy ) + { + if( availableEnergy < 1.6 )return true; + + const G4double ky[] = { 0.200, 0.300, 0.400, 0.550, 0.625, 0.700, + 0.800, 0.850, 0.900, 0.950, 0.975, 1.000 }; + const G4int ipaky1[] = { 18, 18, 18, 20, 20, 20, 21, 21, 21, 22, 22, 22 }; + const G4int ipaky2[] = { 10, 11, 12, 10, 11, 12, 10, 11, 12, 10, 11, 12 }; + const G4int ipakyb1[] = { 19, 19, 19, 23, 23, 23, 24, 24, 24, 25, 25, 25 }; + const G4int ipakyb2[] = { 13, 12, 11, 13, 12, 11, 13, 12, 11, 13, 12, 11 }; + ran = G4UniformRand(); + i = 0; + while( (i<12) && (ran>ky[i]) )++i; + if( i == 12 )return true; + if( (currentMassSetDefinition( aKaonPlus ); + vec[i3]->SetMayBeKilled(false); + break; + case 11: + vec[i3]->SetDefinition( aKaonZS ); + vec[i3]->SetMayBeKilled(false); + break; + case 12: + vec[i3]->SetDefinition( aKaonZL ); + vec[i3]->SetMayBeKilled(false); + break; + } + } + else // (currentMass >= protonMass) && (G4UniformRand() >= 0.5) + { + // ipakyb[] = { 19,13, 19,12, 19,11, 23,13, 23,12, 23,11, + // 24,13, 24,12, 24,11, 25,13, 25,12, 25,11 }; + if( (currentParticle.GetDefinition() == anAntiProton) || + (currentParticle.GetDefinition() == anAntiNeutron) || + (currentParticle.GetDefinition() == anAntiLambda) || + (currentMass > sigmaMinusMass) ) + { + switch( ipakyb1[i] ) + { + case 19: + currentParticle.SetDefinitionAndUpdateE( anAntiLambda ); + break; + case 23: + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaPlus ); + break; + case 24: + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaZero ); + break; + case 25: + currentParticle.SetDefinitionAndUpdateE( anAntiSigmaMinus ); + break; + } + incidentHasChanged = true; + switch( ipakyb2[i] ) + { + case 11: + vec[i3]->SetDefinition( aKaonZS ); + vec[i3]->SetMayBeKilled(false); + break; + case 12: + vec[i3]->SetDefinition( aKaonZL ); + vec[i3]->SetMayBeKilled(false); + break; + case 13: + vec[i3]->SetDefinition( aKaonMinus ); + vec[i3]->SetMayBeKilled(false); + break; + } + } + else + { + switch( ipaky1[i] ) + { + case 18: + currentParticle.SetDefinitionAndUpdateE( aLambda ); + break; + case 20: + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + break; + case 21: + currentParticle.SetDefinitionAndUpdateE( aSigmaZero ); + break; + case 22: + currentParticle.SetDefinitionAndUpdateE( aSigmaMinus ); + break; + } + incidentHasChanged = true; + switch( ipaky2[i] ) + { + case 10: + vec[i3]->SetDefinition( aKaonPlus ); + vec[i3]->SetMayBeKilled(false); + break; + case 11: + vec[i3]->SetDefinition( aKaonZS ); + vec[i3]->SetMayBeKilled(false); + break; + case 12: + vec[i3]->SetDefinition( aKaonZL ); + vec[i3]->SetMayBeKilled(false); + break; + } + } + } + } + else return true; + + // + // check the available energy + // if there is not enough energy for kkb/ky pair production + // then reduce the number of secondary particles + // NOTE: + // the number of secondaries may have been changed + // the incident and/or target particles may have changed + // charge conservation is ignored (as well as strangness conservation) + // + currentMass = currentParticle.GetMass()/GeV; + targetMass = targetParticle.GetMass()/GeV; + + G4double energyCheck = centerofmassEnergy-(currentMass+targetMass); + for( i=0; iGetMass()/GeV; + if( energyCheck < 0.0 ) // chop off the secondary List + { + vecLen = std::max( 0, --i ); // looks like a memory leak @@@@@@@@@@@@ + G4int j; + for(j=i; j +#include "G4HadReentrentException.hh" +#include + + +G4RPGTwoBody::G4RPGTwoBody() + : G4RPGReaction() {} + + +G4bool G4RPGTwoBody:: +ReactionStage(const G4HadProjectile* /*originalIncident*/, + G4ReactionProduct& modifiedOriginal, + G4bool& /*incidentHasChanged*/, + const G4DynamicParticle* originalTarget, + G4ReactionProduct& targetParticle, + G4bool& /*targetHasChanged*/, + const G4Nucleus& targetNucleus, + G4ReactionProduct& currentParticle, + G4FastVector& vec, + G4int& vecLen, + G4bool /*leadFlag*/, + G4ReactionProduct& /*leadingStrangeParticle*/) +{ + // + // Derived from H. Fesefeldt's original FORTRAN code TWOB + // + // Generation of momenta for elastic and quasi-elastic 2 body reactions + // + // The simple formula ds/d|t| = s0* std::exp(-b*|t|) is used. + // The b values are parametrizations from experimental data. + // Unavailable values are taken from those of similar reactions. + // + + const G4double ekOriginal = modifiedOriginal.GetKineticEnergy()/GeV; + const G4double etOriginal = modifiedOriginal.GetTotalEnergy()/GeV; + const G4double mOriginal = modifiedOriginal.GetMass()/GeV; + const G4double pOriginal = modifiedOriginal.GetMomentum().mag()/GeV; + G4double currentMass = currentParticle.GetMass()/GeV; + G4double targetMass = targetParticle.GetDefinition()->GetPDGMass()/GeV; + + targetMass = targetParticle.GetMass()/GeV; + const G4double atomicWeight = targetNucleus.GetN(); + + G4double etCurrent = currentParticle.GetTotalEnergy()/GeV; + G4double pCurrent = currentParticle.GetTotalMomentum()/GeV; + + G4double cmEnergy = std::sqrt( currentMass*currentMass + + targetMass*targetMass + + 2.0*targetMass*etCurrent ); // in GeV + + if( (pCurrent < 0.1) || (cmEnergy < 0.01) ) // 2-body scattering not possible + { + targetParticle.SetMass( 0.0 ); // flag that the target particle doesn't exist + } + else + { + // Projectile momentum in cm + + G4double pf = targetMass*pCurrent/cmEnergy; + + // + // Set beam and target in centre of mass system + // + G4ReactionProduct pseudoParticle[3]; + + if (targetParticle.GetDefinition()->GetParticleSubType() == "kaon" || + targetParticle.GetDefinition()->GetParticleSubType() == "pi") { + + // G4double pf1 = pOriginal*mOriginal/std::sqrt(2.*mOriginal*(mOriginal+etOriginal)); + + pseudoParticle[0].SetMass( targetMass*GeV ); + pseudoParticle[0].SetTotalEnergy( etOriginal*GeV ); + pseudoParticle[0].SetMomentum( 0.0, 0.0, pOriginal*GeV ); + + pseudoParticle[1].SetMomentum( 0.0, 0.0, 0.0 ); + pseudoParticle[1].SetMass( mOriginal*GeV ); + pseudoParticle[1].SetKineticEnergy( 0.0 ); + + } else { + pseudoParticle[0].SetMass( currentMass*GeV ); + pseudoParticle[0].SetTotalEnergy( etCurrent*GeV ); + pseudoParticle[0].SetMomentum( 0.0, 0.0, pCurrent*GeV ); + + pseudoParticle[1].SetMomentum( 0.0, 0.0, 0.0 ); + pseudoParticle[1].SetMass( targetMass*GeV ); + pseudoParticle[1].SetKineticEnergy( 0.0 ); + } + // + // Transform into center of mass system + // + pseudoParticle[2] = pseudoParticle[0] + pseudoParticle[1]; + pseudoParticle[0].Lorentz( pseudoParticle[0], pseudoParticle[2] ); + pseudoParticle[1].Lorentz( pseudoParticle[1], pseudoParticle[2] ); + // + // Set final state masses and energies in centre of mass system + // + currentParticle.SetTotalEnergy( std::sqrt(pf*pf+currentMass*currentMass)*GeV ); + targetParticle.SetTotalEnergy( std::sqrt(pf*pf+targetMass*targetMass)*GeV ); + + // + // Calculate slope b for elastic scattering on proton/neutron + // + const G4double cb = 0.01; + const G4double b1 = 4.225; + const G4double b2 = 1.795; + G4double b = std::max( cb, b1+b2*std::log(pOriginal) ); + + // + // Get cm scattering angle by sampling t from tmin to tmax + // + G4double btrang = b * 4.0 * pf * pseudoParticle[0].GetMomentum().mag()/GeV; + G4double exindt = std::exp(-btrang) - 1.0; + G4double costheta = 1.0 + 2*std::log( 1.0+G4UniformRand()*exindt ) /btrang; + costheta = std::max(-1., std::min(1., costheta) ); + G4double sintheta = std::sqrt((1.0-costheta)*(1.0+costheta)); + G4double phi = twopi * G4UniformRand(); + + // + // Calculate final state momenta in centre of mass system + // + if (targetParticle.GetDefinition()->GetParticleSubType() == "kaon" || + targetParticle.GetDefinition()->GetParticleSubType() == "pi") { + + currentParticle.SetMomentum( -pf*sintheta*std::cos(phi)*GeV, + -pf*sintheta*std::sin(phi)*GeV, + -pf*costheta*GeV ); + } else { + + currentParticle.SetMomentum( pf*sintheta*std::cos(phi)*GeV, + pf*sintheta*std::sin(phi)*GeV, + pf*costheta*GeV ); + } + targetParticle.SetMomentum( -currentParticle.GetMomentum() ); + + // + // Transform into lab system + // + currentParticle.Lorentz( currentParticle, pseudoParticle[1] ); + targetParticle.Lorentz( targetParticle, pseudoParticle[1] ); + + // Rotate final state particle vectors wrt incident momentum + + Defs1( modifiedOriginal, currentParticle, targetParticle, vec, vecLen ); + + // Subtract binding energy + + G4double pp, pp1, ekin; + if( atomicWeight >= 1.5 ) + { + const G4double cfa = 0.025*((atomicWeight-1.)/120.)*std::exp(-(atomicWeight-1.)/120.); + pp1 = currentParticle.GetMomentum().mag()/MeV; + if( pp1 >= 1.0 ) + { + ekin = currentParticle.GetKineticEnergy()/MeV - cfa*(1.0+0.5*normal())*GeV; + ekin = std::max( 0.0001*GeV, ekin ); + currentParticle.SetKineticEnergy( ekin*MeV ); + pp = currentParticle.GetTotalMomentum()/MeV; + currentParticle.SetMomentum( currentParticle.GetMomentum() * (pp/pp1) ); + } + pp1 = targetParticle.GetMomentum().mag()/MeV; + if( pp1 >= 1.0 ) + { + ekin = targetParticle.GetKineticEnergy()/MeV - cfa*(1.0+normal()/2.)*GeV; + ekin = std::max( 0.0001*GeV, ekin ); + targetParticle.SetKineticEnergy( ekin*MeV ); + pp = targetParticle.GetTotalMomentum()/MeV; + targetParticle.SetMomentum( targetParticle.GetMomentum() * (pp/pp1) ); + } + } + } + + // Get number of final state nucleons and nucleons remaining in + // target nucleus + + std::pair finalStateNucleons = + GetFinalStateNucleons(originalTarget, vec, vecLen); + G4int protonsInFinalState = finalStateNucleons.first; + G4int neutronsInFinalState = finalStateNucleons.second; + + G4int PinNucleus = std::max(0, + G4int(targetNucleus.GetZ()) - protonsInFinalState); + G4int NinNucleus = std::max(0, + G4int(targetNucleus.GetN()-targetNucleus.GetZ()) - neutronsInFinalState); + + if( atomicWeight >= 1.5 ) + { + // Add black track particles + // npnb: number of proton/neutron black track particles + // ndta: number of deuterons, tritons, and alphas produced + // epnb: kinetic energy available for proton/neutron black track + // particles + // edta: kinetic energy available for deuteron/triton/alpha particles + + G4double epnb, edta; + G4int npnb=0, ndta=0; + + epnb = targetNucleus.GetPNBlackTrackEnergy(); // was enp1 in fortran code + edta = targetNucleus.GetDTABlackTrackEnergy(); // was enp3 in fortran code + const G4double pnCutOff = 0.0001; // GeV + const G4double dtaCutOff = 0.0001; // GeV + const G4double kineticMinimum = 0.0001; + const G4double kineticFactor = -0.010; + G4double sprob = 0.0; // sprob = probability of self-absorption in heavy molecules + if( epnb >= pnCutOff ) + { + npnb = G4Poisson( epnb/0.02 ); + if( npnb > atomicWeight )npnb = G4int(atomicWeight); + if( (epnb > pnCutOff) && (npnb <= 0) )npnb = 1; + npnb = std::min( npnb, 127-vecLen ); + } + if( edta >= dtaCutOff ) + { + ndta = G4int(2.0 * std::log(atomicWeight)); + ndta = std::min( ndta, 127-vecLen ); + } + + if (npnb == 0 && ndta == 0) npnb = 1; + + AddBlackTrackParticles(epnb, npnb, edta, ndta, sprob, kineticMinimum, + kineticFactor, modifiedOriginal, + PinNucleus, NinNucleus, targetNucleus, + vec, vecLen); + } + + // + // calculate time delay for nuclear reactions + // + if( (atomicWeight >= 1.5) && (atomicWeight <= 230.0) && (ekOriginal <= 0.2) ) + currentParticle.SetTOF( 1.0-500.0*std::exp(-ekOriginal/0.04)*std::log(G4UniformRand()) ); + else + currentParticle.SetTOF( 1.0 ); + + return true; +} + +/* end of file */ diff --git a/source/processes/hadronic/models/rpg/src/G4RPGTwoCluster.cc b/source/processes/hadronic/models/rpg/src/G4RPGTwoCluster.cc new file mode 100644 index 0000000000..01497270a1 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGTwoCluster.cc @@ -0,0 +1,825 @@ +// +// ******************************************************************** +// * 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: G4RPGTwoCluster.cc,v 1.2 2007/08/15 20:38:48 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGTwoCluster.hh" +#include "Randomize.hh" +#include "G4Poisson.hh" +#include +#include "G4HadReentrentException.hh" +#include + + +G4RPGTwoCluster::G4RPGTwoCluster() + : G4RPGReaction() {} + + +G4bool G4RPGTwoCluster:: +ReactionStage(const G4HadProjectile* originalIncident, + G4ReactionProduct& modifiedOriginal, + G4bool& incidentHasChanged, + const G4DynamicParticle* originalTarget, + G4ReactionProduct& targetParticle, + G4bool& targetHasChanged, + const G4Nucleus& targetNucleus, + G4ReactionProduct& currentParticle, + G4FastVector& vec, + G4int& vecLen, + G4bool leadFlag, + G4ReactionProduct& leadingStrangeParticle) +{ + // Derived from H. Fesefeldt's FORTRAN code TWOCLU + // + // A simple two cluster model is used to generate x- and pt- values for + // incident, target, and all secondary particles. + // This should be sufficient for low energy interactions. + // + + G4int i; + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); + G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); + G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); + G4bool veryForward = false; + + const G4double protonMass = aProton->GetPDGMass()/MeV; + const G4double ekOriginal = modifiedOriginal.GetKineticEnergy()/GeV; + const G4double etOriginal = modifiedOriginal.GetTotalEnergy()/GeV; + const G4double mOriginal = modifiedOriginal.GetMass()/GeV; + const G4double pOriginal = modifiedOriginal.GetMomentum().mag()/GeV; + G4double targetMass = targetParticle.GetDefinition()->GetPDGMass()/GeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); // GeV + G4double currentMass = currentParticle.GetMass()/GeV; + targetMass = targetParticle.GetMass()/GeV; + + if( currentMass == 0.0 && targetMass == 0.0 ) + { + G4double ek = currentParticle.GetKineticEnergy(); + G4ThreeVector m = currentParticle.GetMomentum(); + currentParticle = *vec[0]; + targetParticle = *vec[1]; + for( i=0; i<(vecLen-2); ++i )*vec[i] = *vec[i+2]; + if(vecLen<2) + { + for(G4int i=0; iGetSide() < 0 )vec[i]->SetSide( -1 ); // to take care of + // case where vec has been preprocessed by GenerateXandPt + // and some of them have been set to -2 or -3 + if( vec[i]->GetSide() == -1 ) + { + ++backwardCount; + backwardMass += vec[i]->GetMass()/GeV; + } + else + { + ++forwardCount; + forwardMass += vec[i]->GetMass()/GeV; + } + } + + // + // Add nucleons and some pions from intra-nuclear cascade + // + + G4double term1 = std::log(centerofmassEnergy*centerofmassEnergy); + if(term1 < 0) term1 = 0.0001; // making sure xtarg<0; + const G4double afc = 0.312 + 0.2 * std::log(term1); + G4double xtarg; + if( centerofmassEnergy < 2.0+G4UniformRand() ) // added +2 below, JLC 4Jul97 + xtarg = afc * (std::pow(atomicWeight,0.33)-1.0) * (2*backwardCount+vecLen+2)/2.0; + else + xtarg = afc * (std::pow(atomicWeight,0.33)-1.0) * (2*backwardCount); + if( xtarg <= 0.0 )xtarg = 0.01; + G4int nuclearExcitationCount = G4Poisson( xtarg ); + + if(atomicWeight<1.0001) nuclearExcitationCount = 0; + G4int extraNucleonCount = 0; + G4double extraMass = 0.0; + G4double extraNucleonMass = 0.0; + if( nuclearExcitationCount > 0 ) + { + G4int momentumBin = std::min( 4, G4int(pOriginal/3.0) ); + const G4double nucsup[] = { 1.0, 0.8, 0.6, 0.5, 0.4 }; + // + // NOTE: in TWOCLU, these new particles were given negative codes + // here we use NewlyAdded = true instead + // + for( i=0; i 1.0-atomicNumber/atomicWeight ) + pVec->SetDefinition( aProton ); + else + pVec->SetDefinition( aNeutron ); + ++backwardNucleonCount; + ++extraNucleonCount; + extraNucleonMass += pVec->GetMass()/GeV; + } + else + { // add a pion + G4double ran = G4UniformRand(); + if( ran < 0.3181 ) + pVec->SetDefinition( aPiPlus ); + else if( ran < 0.6819 ) + pVec->SetDefinition( aPiZero ); + else + pVec->SetDefinition( aPiMinus ); + } + pVec->SetSide( -2 ); // backside particle + extraMass += pVec->GetMass()/GeV; + pVec->SetNewlyAdded( true ); + vec.SetElement( vecLen++, pVec ); + } + } + + // Masses of particles added from cascade not included in energy balance + G4double forwardEnergy = (centerofmassEnergy-cMass-bMass)/2.0 +cMass - forwardMass; + G4double backwardEnergy = (centerofmassEnergy-cMass-bMass)/2.0 +bMass - backwardMass; + G4double eAvailable = centerofmassEnergy - (forwardMass+backwardMass); + G4bool secondaryDeleted; + G4double pMass; + + while( eAvailable <= 0.0 ) // must eliminate a particle + { + secondaryDeleted = false; + for( i=(vecLen-1); i>=0; --i ) + { + if( vec[i]->GetSide() == 1 && vec[i]->GetMayBeKilled()) + { + pMass = vec[i]->GetMass()/GeV; + for( G4int j=i; j<(vecLen-1); ++j )*vec[j] = *vec[j+1]; // shift up + --forwardCount; + forwardEnergy += pMass; + forwardMass -= pMass; + secondaryDeleted = true; + break; + } + else if( vec[i]->GetSide() == -1 && vec[i]->GetMayBeKilled()) + { + pMass = vec[i]->GetMass()/GeV; + for( G4int j=i; j<(vecLen-1); ++j )*vec[j] = *vec[j+1]; // shift up + --backwardCount; + backwardEnergy += pMass; + backwardMass -= pMass; + secondaryDeleted = true; + break; + } + } // breaks go down to here + + if( secondaryDeleted ) + { + delete vec[vecLen-1]; + --vecLen; + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + } + else + { + if( vecLen == 0 ) return false; // all secondaries have been eliminated + if( targetParticle.GetSide() == -1 ) + { + pMass = targetParticle.GetMass()/GeV; + targetParticle = *vec[0]; + for( G4int j=0; j<(vecLen-1); ++j )*vec[j] = *vec[j+1]; // shift up + --backwardCount; + backwardEnergy += pMass; + backwardMass -= pMass; + secondaryDeleted = true; + } + else if( targetParticle.GetSide() == 1 ) + { + pMass = targetParticle.GetMass()/GeV; + targetParticle = *vec[0]; + for( G4int j=0; j<(vecLen-1); ++j )*vec[j] = *vec[j+1]; // shift up + --forwardCount; + forwardEnergy += pMass; + forwardMass -= pMass; + secondaryDeleted = true; + } + + if( secondaryDeleted ) + { + delete vec[vecLen-1]; + --vecLen; + } + else + { + if( currentParticle.GetSide() == -1 ) + { + pMass = currentParticle.GetMass()/GeV; + currentParticle = *vec[0]; + for( G4int j=0; j<(vecLen-1); ++j )*vec[j] = *vec[j+1]; // shift up + --backwardCount; + backwardEnergy += pMass; + backwardMass -= pMass; + secondaryDeleted = true; + } + else if( currentParticle.GetSide() == 1 ) + { + pMass = currentParticle.GetMass()/GeV; + currentParticle = *vec[0]; + for( G4int j=0; j<(vecLen-1); ++j )*vec[j] = *vec[j+1]; // shift up + --forwardCount; + forwardEnergy += pMass; + forwardMass -= pMass; + secondaryDeleted = true; + } + if( secondaryDeleted ) + { + delete vec[vecLen-1]; + --vecLen; + } + else break; + + } // secondary not deleted + } // secondary not deleted + + eAvailable = centerofmassEnergy - (forwardMass+backwardMass); + } // while + + // + // This is the start of the TwoCluster function + // Choose multi-particle resonance masses by sampling + // P(M) = gc[g(M-M0)]**(c-1) *exp[-(g(M-M0))**c] + // for M > M0 + // + // Use for the forward and backward clusters, but not + // the cascade cluster + + const G4double cpar[] = { 1.60, 1.35, 1.15, 1.10 }; + const G4double gpar[] = { 2.60, 1.80, 1.30, 1.20 }; + G4int ntc = 0; + + if (forwardCount < 1 || backwardCount < 1) return false; // array bounds protection + + G4double rmc = forwardMass; + if (forwardCount > 1) { + ntc = std::min(3,forwardCount-2); + rmc += std::pow(-std::log(1.0-G4UniformRand()),1./cpar[ntc])/gpar[ntc]; + } + G4double rmd = backwardMass; + if( backwardCount > 1 ) { + ntc = std::min(3,backwardCount-2); + rmd += std::pow(-std::log(1.0-G4UniformRand()),1./cpar[ntc])/gpar[ntc]; + } + + while( rmc+rmd > centerofmassEnergy ) + { + if( (rmc <= forwardMass) && (rmd <= backwardMass) ) + { + G4double temp = 0.999*centerofmassEnergy/(rmc+rmd); + rmc *= temp; + rmd *= temp; + } + else + { + rmc = 0.1*forwardMass + 0.9*rmc; + rmd = 0.1*backwardMass + 0.9*rmd; + } + } + + G4ReactionProduct pseudoParticle[8]; + for( i=0; i<8; ++i )pseudoParticle[i].SetZero(); + + pseudoParticle[1].SetMass( mOriginal*GeV ); + pseudoParticle[1].SetTotalEnergy( etOriginal*GeV ); + pseudoParticle[1].SetMomentum( 0.0, 0.0, pOriginal*GeV ); + + pseudoParticle[2].SetMass( protonMass*MeV ); + pseudoParticle[2].SetTotalEnergy( protonMass*MeV ); + pseudoParticle[2].SetMomentum( 0.0, 0.0, 0.0 ); + // + // transform into center of mass system + // + pseudoParticle[0] = pseudoParticle[1] + pseudoParticle[2]; + pseudoParticle[1].Lorentz( pseudoParticle[1], pseudoParticle[0] ); + pseudoParticle[2].Lorentz( pseudoParticle[2], pseudoParticle[0] ); + + // Calculate cm momentum for forward and backward masses + // W = sqrt(pf*pf + rmc*rmc) + sqrt(pf*pf + rmd*rmd) + // Solve for pf + + const G4double pfMin = 0.0001; + G4double pf = (centerofmassEnergy*centerofmassEnergy+rmd*rmd-rmc*rmc); + pf *= pf; + pf -= 4*centerofmassEnergy*centerofmassEnergy*rmd*rmd; + pf = std::sqrt( std::max(pf,pfMin) )/(2.0*centerofmassEnergy); + // + // set final state masses and energies in centre of mass system + // + pseudoParticle[3].SetMass( rmc*GeV ); + pseudoParticle[3].SetTotalEnergy( std::sqrt(pf*pf+rmc*rmc)*GeV ); + + pseudoParticle[4].SetMass( rmd*GeV ); + pseudoParticle[4].SetTotalEnergy( std::sqrt(pf*pf+rmd*rmd)*GeV ); + + // + // Get cm scattering angle by sampling t from tmin to tmax + // + const G4double bMin = 0.01; + const G4double b1 = 4.0; + const G4double b2 = 1.6; + G4double pin = pseudoParticle[1].GetMomentum().mag()/GeV; + G4double dtb = 4.0*pin*pf*std::max( bMin, b1+b2*std::log(pOriginal) ); + G4double factor = 1.0 - std::exp(-dtb); + G4double costheta = 1.0 + 2.0*std::log(1.0 - G4UniformRand()*factor) / dtb; + + costheta = std::max(-1.0, std::min(1.0, costheta)); + G4double sintheta = std::sqrt((1.0-costheta)*(1.0+costheta)); + G4double phi = G4UniformRand() * twopi; + // + // calculate final state momenta in centre of mass system + // + pseudoParticle[3].SetMomentum( pf*sintheta*std::cos(phi)*GeV, + pf*sintheta*std::sin(phi)*GeV, + pf*costheta*GeV ); + pseudoParticle[4].SetMomentum( -pseudoParticle[3].GetMomentum()); + + // Backward cluster of nucleons and pions from intra-nuclear cascade + // Set up in lab system and transform to cms + + G4double pp, pp1; + if( nuclearExcitationCount > 0 ) + { + const G4double ga = 1.2; + G4double ekit1 = 0.04; + G4double ekit2 = 0.6; // Max KE of cascade particle + if( ekOriginal <= 5.0 ) + { + ekit1 *= ekOriginal*ekOriginal/25.0; + ekit2 *= ekOriginal*ekOriginal/25.0; + } + G4double scale = std::pow(ekit2/ekit1, 1.0-ga) - 1.0; + for( i=0; iGetSide() == -2 ) + { + G4double kineticE = ekit1*std::pow((1.0 + G4UniformRand()*scale), 1.0/(1.0-ga) ); + vec[i]->SetKineticEnergy( kineticE*GeV ); + G4double vMass = vec[i]->GetMass()/MeV; + G4double totalE = kineticE*GeV + vMass; + pp = std::sqrt( std::abs(totalE*totalE-vMass*vMass) ); + G4double cost = std::min( 1.0, std::max( -1.0, std::log(2.23*G4UniformRand()+0.383)/0.96 ) ); + G4double sint = std::sqrt(1.0-cost*cost); + phi = twopi*G4UniformRand(); + vec[i]->SetMomentum( pp*sint*std::cos(phi)*MeV, + pp*sint*std::sin(phi)*MeV, + pp*cost*MeV ); + vec[i]->Lorentz( *vec[i], pseudoParticle[0] ); + } + } + } + + // + // Fragmentation of forward and backward clusters + // + + currentParticle.SetMomentum( pseudoParticle[3].GetMomentum() ); + currentParticle.SetTotalEnergy( pseudoParticle[3].GetTotalEnergy() ); + + targetParticle.SetMomentum( pseudoParticle[4].GetMomentum() ); + targetParticle.SetTotalEnergy( pseudoParticle[4].GetTotalEnergy() ); + + pseudoParticle[5].SetMomentum( pseudoParticle[3].GetMomentum() * (-1.0) ); + pseudoParticle[5].SetMass( pseudoParticle[3].GetMass() ); + pseudoParticle[5].SetTotalEnergy( pseudoParticle[3].GetTotalEnergy() ); + + pseudoParticle[6].SetMomentum( pseudoParticle[4].GetMomentum() * (-1.0) ); + pseudoParticle[6].SetMass( pseudoParticle[4].GetMass() ); + pseudoParticle[6].SetTotalEnergy( pseudoParticle[4].GetTotalEnergy() ); + + G4double wgt; + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + if( forwardCount > 1 ) // tempV will contain the forward particles + { + G4FastVector tempV; + tempV.Initialize( forwardCount ); + G4bool constantCrossSection = true; + G4int tempLen = 0; + if( currentParticle.GetSide() == 1 ) + tempV.SetElement( tempLen++, ¤tParticle ); + if( targetParticle.GetSide() == 1 ) + tempV.SetElement( tempLen++, &targetParticle ); + for( i=0; iGetSide() == 1 ) + { + if( tempLen < 18 ) + tempV.SetElement( tempLen++, vec[i] ); + else + { + vec[i]->SetSide( -1 ); + continue; + } + } + } + if( tempLen >= 2 ) + { + wgt = GenerateNBodyEvent( pseudoParticle[3].GetMass()/MeV, + constantCrossSection, tempV, tempLen ); + if( currentParticle.GetSide() == 1 ) + currentParticle.Lorentz( currentParticle, pseudoParticle[5] ); + if( targetParticle.GetSide() == 1 ) + targetParticle.Lorentz( targetParticle, pseudoParticle[5] ); + for( i=0; iGetSide() == 1 )vec[i]->Lorentz( *vec[i], pseudoParticle[5] ); + } + } + } + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + if( backwardCount > 1 ) // tempV will contain the backward particles, + { // but not those created from the intranuclear cascade + G4FastVector tempV; + tempV.Initialize( backwardCount ); + G4bool constantCrossSection = true; + G4int tempLen = 0; + if( currentParticle.GetSide() == -1 ) + tempV.SetElement( tempLen++, ¤tParticle ); + if( targetParticle.GetSide() == -1 ) + tempV.SetElement( tempLen++, &targetParticle ); + for( i=0; iGetSide() == -1 ) + { + if( tempLen < 18 ) + tempV.SetElement( tempLen++, vec[i] ); + else + { + vec[i]->SetSide( -2 ); + vec[i]->SetKineticEnergy( 0.0 ); + vec[i]->SetMomentum( 0.0, 0.0, 0.0 ); + continue; + } + } + } + if( tempLen >= 2 ) + { + wgt = GenerateNBodyEvent( pseudoParticle[4].GetMass()/MeV, + constantCrossSection, tempV, tempLen ); + if( currentParticle.GetSide() == -1 ) + currentParticle.Lorentz( currentParticle, pseudoParticle[6] ); + if( targetParticle.GetSide() == -1 ) + targetParticle.Lorentz( targetParticle, pseudoParticle[6] ); + for( i=0; iGetSide() == -1 )vec[i]->Lorentz( *vec[i], pseudoParticle[6] ); + } + } + } + + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + // + // Lorentz transformation in lab system + // + currentParticle.Lorentz( currentParticle, pseudoParticle[2] ); + targetParticle.Lorentz( targetParticle, pseudoParticle[2] ); + for( i=0; iLorentz( *vec[i], pseudoParticle[2] ); + + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + // + // sometimes the leading strange particle is lost, set it back + // + G4bool dum = true; + if( leadFlag ) + { + // leadFlag will be true + // iff original particle is strange AND if incident particle is strange + // leadFlag is set to the incident particle + // or + // target particle is strange leadFlag is set to the target particle + + if( currentParticle.GetDefinition() == leadingStrangeParticle.GetDefinition() ) + dum = false; + else if( targetParticle.GetDefinition() == leadingStrangeParticle.GetDefinition() ) + dum = false; + else + { + for( i=0; iGetDefinition() == leadingStrangeParticle.GetDefinition() ) + { + dum = false; + break; + } + } + } + if( dum ) + { + G4double leadMass = leadingStrangeParticle.GetMass()/MeV; + G4double ekin; + if( ((leadMass < protonMass) && (targetParticle.GetMass()/MeV < protonMass)) || + ((leadMass >= protonMass) && (targetParticle.GetMass()/MeV >= protonMass)) ) + { + ekin = targetParticle.GetKineticEnergy()/GeV; + pp1 = targetParticle.GetMomentum().mag()/MeV; // old momentum + targetParticle.SetDefinition( leadingStrangeParticle.GetDefinition() ); + targetParticle.SetKineticEnergy( ekin*GeV ); + pp = targetParticle.GetTotalMomentum()/MeV; // new momentum + if( pp1 < 1.0e-3 ) { + G4ThreeVector iso = Isotropic(pp); + targetParticle.SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + targetParticle.SetMomentum( targetParticle.GetMomentum() * (pp/pp1) ); + } + targetHasChanged = true; + } + else + { + ekin = currentParticle.GetKineticEnergy()/GeV; + pp1 = currentParticle.GetMomentum().mag()/MeV; + currentParticle.SetDefinition( leadingStrangeParticle.GetDefinition() ); + currentParticle.SetKineticEnergy( ekin*GeV ); + pp = currentParticle.GetTotalMomentum()/MeV; + if( pp1 < 1.0e-3 ) { + G4ThreeVector iso = Isotropic(pp); + currentParticle.SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + currentParticle.SetMomentum( currentParticle.GetMomentum() * (pp/pp1) ); + } + incidentHasChanged = true; + } + } + } // end of if( leadFlag ) + + // Get number of final state nucleons and nucleons remaining in + // target nucleus + + std::pair finalStateNucleons = + GetFinalStateNucleons(originalTarget, vec, vecLen); + + G4int protonsInFinalState = finalStateNucleons.first; + G4int neutronsInFinalState = finalStateNucleons.second; + + G4int numberofFinalStateNucleons = + protonsInFinalState + neutronsInFinalState; + + if (currentParticle.GetDefinition()->GetBaryonNumber() == 1 && + targetParticle.GetDefinition()->GetBaryonNumber() == 1 && + originalIncident->GetDefinition()->GetPDGMass() < + G4Lambda::Lambda()->GetPDGMass()) + numberofFinalStateNucleons++; + + numberofFinalStateNucleons = std::max(1, numberofFinalStateNucleons); + + G4int PinNucleus = std::max(0, + G4int(targetNucleus.GetZ()) - protonsInFinalState); + G4int NinNucleus = std::max(0, + G4int(targetNucleus.GetN()-targetNucleus.GetZ()) - neutronsInFinalState); + // + // for various reasons, the energy balance is not sufficient, + // check that, energy balance, angle of final system, etc. + // + pseudoParticle[4].SetMass( mOriginal*GeV ); + pseudoParticle[4].SetTotalEnergy( etOriginal*GeV ); + pseudoParticle[4].SetMomentum( 0.0, 0.0, pOriginal*GeV ); + + G4ParticleDefinition * aOrgDef = modifiedOriginal.GetDefinition(); + G4int diff = 0; + if(aOrgDef == G4Proton::Proton() || aOrgDef == G4Neutron::Neutron() ) diff = 1; + if(numberofFinalStateNucleons == 1) diff = 0; + pseudoParticle[5].SetMomentum( 0.0, 0.0, 0.0 ); + pseudoParticle[5].SetMass( protonMass*(numberofFinalStateNucleons-diff)*MeV); + pseudoParticle[5].SetTotalEnergy( protonMass*(numberofFinalStateNucleons-diff)*MeV); + + G4double theoreticalKinetic = + pseudoParticle[4].GetTotalEnergy()/GeV + pseudoParticle[5].GetTotalEnergy()/GeV; + + pseudoParticle[6] = pseudoParticle[4] + pseudoParticle[5]; + pseudoParticle[4].Lorentz( pseudoParticle[4], pseudoParticle[6] ); + pseudoParticle[5].Lorentz( pseudoParticle[5], pseudoParticle[6] ); + + if( vecLen < 16 ) + { + G4ReactionProduct tempR[130]; + tempR[0] = currentParticle; + tempR[1] = targetParticle; + for( i=0; i tempV; + tempV.Initialize( vecLen+2 ); + G4bool constantCrossSection = true; + G4int tempLen = 0; + for( i=0; i= 2 ) + { + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + wgt = GenerateNBodyEvent( pseudoParticle[4].GetTotalEnergy()/MeV + + pseudoParticle[5].GetTotalEnergy()/MeV, + constantCrossSection, tempV, tempLen ); + if (wgt == -1) { + G4double Qvalue = 0; + for (i = 0; i < tempLen; i++) Qvalue += tempV[i]->GetMass(); + wgt = GenerateNBodyEvent( Qvalue/MeV, + constantCrossSection, tempV, tempLen ); + } + theoreticalKinetic = 0.0; + for( i=0; iGetMomentum() ); + pseudoParticle[7].SetMass( tempV[i]->GetMass() ); + pseudoParticle[7].SetTotalEnergy( tempV[i]->GetTotalEnergy() ); + pseudoParticle[7].Lorentz( pseudoParticle[7], pseudoParticle[5] ); + theoreticalKinetic += pseudoParticle[7].GetKineticEnergy()/GeV; + } + } + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + } + else + { + theoreticalKinetic -= + ( currentParticle.GetMass()/GeV + targetParticle.GetMass()/GeV ); + for( i=0; iGetMass()/GeV; + } + G4double simulatedKinetic = + currentParticle.GetKineticEnergy()/GeV + targetParticle.GetKineticEnergy()/GeV; + for( i=0; iGetKineticEnergy()/GeV; + + // make sure that kinetic energies are correct + // the backward nucleon cluster is not produced within proper kinematics!!! + + if( simulatedKinetic != 0.0 ) + { + wgt = (theoreticalKinetic)/simulatedKinetic; + currentParticle.SetKineticEnergy( wgt*currentParticle.GetKineticEnergy() ); + pp = currentParticle.GetTotalMomentum()/MeV; + pp1 = currentParticle.GetMomentum().mag()/MeV; + if( pp1 < 0.001*MeV ) { + G4ThreeVector iso = Isotropic(pp); + currentParticle.SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + currentParticle.SetMomentum( currentParticle.GetMomentum() * (pp/pp1) ); + } + + targetParticle.SetKineticEnergy( wgt*targetParticle.GetKineticEnergy() ); + pp = targetParticle.GetTotalMomentum()/MeV; + pp1 = targetParticle.GetMomentum().mag()/MeV; + if( pp1 < 0.001*MeV ) { + G4ThreeVector iso = Isotropic(pp); + targetParticle.SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + targetParticle.SetMomentum( targetParticle.GetMomentum() * (pp/pp1) ); + } + + for( i=0; iSetKineticEnergy( wgt*vec[i]->GetKineticEnergy() ); + pp = vec[i]->GetTotalMomentum()/MeV; + pp1 = vec[i]->GetMomentum().mag()/MeV; + if( pp1 < 0.001 ) { + G4ThreeVector iso = Isotropic(pp); + vec[i]->SetMomentum( iso.x(), iso.y(), iso.z() ); + } else { + vec[i]->SetMomentum( vec[i]->GetMomentum() * (pp/pp1) ); + } + } + } + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + + Rotate( numberofFinalStateNucleons, pseudoParticle[4].GetMomentum(), + modifiedOriginal, originalIncident, targetNucleus, + currentParticle, targetParticle, vec, vecLen ); + + // Add black track particles + // the total number of particles produced is restricted to 198 + // this may have influence on very high energies + + if( atomicWeight >= 1.5 ) + { + // npnb is number of proton/neutron black track particles + // ndta is the number of deuterons, tritons, and alphas produced + // epnb is the kinetic energy available for proton/neutron black track + // particles + // edta is the kinetic energy available for deuteron/triton/alpha + // particles + + G4int npnb = 0; + G4int ndta = 0; + + G4double epnb, edta; + if (veryForward) { + epnb = targetNucleus.GetAnnihilationPNBlackTrackEnergy(); + edta = targetNucleus.GetAnnihilationDTABlackTrackEnergy(); + } else { + epnb = targetNucleus.GetPNBlackTrackEnergy(); + edta = targetNucleus.GetDTABlackTrackEnergy(); + } + + const G4double pnCutOff = 0.001; // GeV + const G4double dtaCutOff = 0.001; // GeV + const G4double kineticMinimum = 1.e-6; + const G4double kineticFactor = -0.005; + + G4double sprob = 0.0; // sprob = probability of self-absorption in + // heavy molecules + const G4double ekIncident = originalIncident->GetKineticEnergy()/GeV; + if( ekIncident >= 5.0 )sprob = std::min( 1.0, 0.6*std::log(ekIncident-4.0) ); + + if( epnb >= pnCutOff ) + { + npnb = G4Poisson((1.5+1.25*numberofFinalStateNucleons)*epnb/(epnb+edta)); + if( numberofFinalStateNucleons + npnb > atomicWeight ) + npnb = G4int(atomicWeight - numberofFinalStateNucleons); + npnb = std::min( npnb, 127-vecLen ); + } + if( edta >= dtaCutOff ) + { + ndta = G4Poisson( (1.5+1.25*numberofFinalStateNucleons)*edta/(epnb+edta) ); + ndta = std::min( ndta, 127-vecLen ); + } + if (npnb == 0 && ndta == 0) npnb = 1; + + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + + AddBlackTrackParticles(epnb, npnb, edta, ndta, sprob, kineticMinimum, + kineticFactor, modifiedOriginal, + PinNucleus, NinNucleus, targetNucleus, + vec, vecLen ); + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); + } + + //if( centerofmassEnergy <= (4.0+G4UniformRand()) ) + // MomentumCheck( modifiedOriginal, currentParticle, targetParticle, vec, vecLen ); + // + // calculate time delay for nuclear reactions + // + if( (atomicWeight >= 1.5) && (atomicWeight <= 230.0) && (ekOriginal <= 0.2) ) + currentParticle.SetTOF( 1.0-500.0*std::exp(-ekOriginal/0.04)*std::log(G4UniformRand()) ); + else + currentParticle.SetTOF( 1.0 ); + + return true; +} + + /* end of file */ diff --git a/source/processes/hadronic/models/rpg/src/G4RPGXiMinusInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGXiMinusInelastic.cc new file mode 100644 index 0000000000..055e35b3f8 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGXiMinusInelastic.cc @@ -0,0 +1,389 @@ +// +// ******************************************************************** +// * 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: G4RPGXiMinusInelastic.cc,v 1.1 2007/07/18 21:04:21 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +#include "G4RPGXiMinusInelastic.hh" +#include "Randomize.hh" + +G4HadFinalState* +G4RPGXiMinusInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) +{ + const G4HadProjectile *originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + + // create the target particle + + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGXiMinusInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + if( currentParticle.GetKineticEnergy()/MeV > cutOff ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; +} + + +void G4RPGXiMinusInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASXM + // + // XiMinus undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.7, 0.7 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); + G4ParticleDefinition *aSigmaPlus = G4SigmaPlus::SigmaPlus(); + G4ParticleDefinition *aXiZero = G4XiZero::XiZero(); + // + // energetically possible to produce pion(s) --> inelastic scattering + // + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + // + // number of secondary mesons determined by kno distribution + // check for total charge of final state mesons to determine + // the kind of baryons to be produced, taking into account + // charge and strangeness conservation + // + if( np < nm ) + { + if( np+1 == nm ) + { + currentParticle.SetDefinitionAndUpdateE( aXiZero ); + incidentHasChanged = true; + } + else // charge mismatch + { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + // + // correct the strangeness by replacing a pi- by a kaon- + // + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonMinus ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nm; + } + } + else if( np == nm ) + { + if( G4UniformRand() >= 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aXiZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + } + else + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=np; nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + if( np+1 < nm ) + { + if( np+2 == nm ) + { + currentParticle.SetDefinitionAndUpdateE( aXiZero ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + else // charge mismatch + { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + // + // correct the strangeness by replacing a pi- by a kaon- + // + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonMinus ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nm; + } + } + else if( np+1 == nm ) + { + if( G4UniformRand() < 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aXiZero ); + incidentHasChanged = true; + } + else + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/rpg/src/G4RPGXiZeroInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGXiZeroInelastic.cc new file mode 100644 index 0000000000..7bf0caf704 --- /dev/null +++ b/source/processes/hadronic/models/rpg/src/G4RPGXiZeroInelastic.cc @@ -0,0 +1,387 @@ +// +// ******************************************************************** +// * 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: G4RPGXiZeroInelastic.cc,v 1.1 2007/07/18 21:04:21 dennis Exp $ +// + +#include "G4RPGXiZeroInelastic.hh" +#include "Randomize.hh" + + G4HadFinalState * + G4RPGXiZeroInelastic::ApplyYourself( const G4HadProjectile &aTrack, + G4Nucleus &targetNucleus ) + { + const G4HadProjectile *originalIncident = &aTrack; + if (originalIncident->GetKineticEnergy()<= 0.1*MeV) + { + theParticleChange.SetStatusChange(isAlive); + theParticleChange.SetEnergyChange(aTrack.GetKineticEnergy()); + theParticleChange.SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return &theParticleChange; + } + // + // create the target particle + // + G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); + + if( verboseLevel > 1 ) + { + const G4Material *targetMaterial = aTrack.GetMaterial(); + G4cout << "G4RPGXiZeroInelastic::ApplyYourself called" << G4endl; + G4cout << "kinetic energy = " << originalIncident->GetKineticEnergy()/MeV << "MeV, "; + G4cout << "target material = " << targetMaterial->GetName() << ", "; + G4cout << "target particle = " << originalTarget->GetDefinition()->GetParticleName() + << G4endl; + } + // + // Fermi motion and evaporation + // As of Geant3, the Fermi energy calculation had not been Done + // + G4double ek = originalIncident->GetKineticEnergy()/MeV; + G4double amas = originalIncident->GetDefinition()->GetPDGMass()/MeV; + G4ReactionProduct modifiedOriginal; + modifiedOriginal = *originalIncident; + + G4double tkin = targetNucleus.Cinema( ek ); + ek += tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + G4double et = ek + amas; + G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + G4double pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + // + // calculate black track energies + // + tkin = targetNucleus.EvaporationEffects( ek ); + ek -= tkin; + modifiedOriginal.SetKineticEnergy( ek*MeV ); + et = ek + amas; + p = std::sqrt( std::abs((et-amas)*(et+amas)) ); + pp = modifiedOriginal.GetMomentum().mag()/MeV; + if( pp > 0.0 ) + { + G4ThreeVector momentum = modifiedOriginal.GetMomentum(); + modifiedOriginal.SetMomentum( momentum * (p/pp) ); + } + G4ReactionProduct currentParticle = modifiedOriginal; + G4ReactionProduct targetParticle; + targetParticle = *originalTarget; + currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere + targetParticle.SetSide( -1 ); // target always goes in backward hemisphere + G4bool incidentHasChanged = false; + G4bool targetHasChanged = false; + G4bool quasiElastic = false; + G4FastVector vec; // vec will contain the secondary particles + G4int vecLen = 0; + vec.Initialize( 0 ); + + const G4double cutOff = 0.1; + if( currentParticle.GetKineticEnergy()/MeV > cutOff ) + Cascade( vec, vecLen, + originalIncident, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + CalculateMomenta( vec, vecLen, + originalIncident, originalTarget, modifiedOriginal, + targetNucleus, currentParticle, targetParticle, + incidentHasChanged, targetHasChanged, quasiElastic ); + + SetUpChange( vec, vecLen, + currentParticle, targetParticle, + incidentHasChanged ); + + delete originalTarget; + return &theParticleChange; + } + +void G4RPGXiZeroInelastic::Cascade( + G4FastVector &vec, + G4int& vecLen, + const G4HadProjectile *originalIncident, + G4ReactionProduct ¤tParticle, + G4ReactionProduct &targetParticle, + G4bool &incidentHasChanged, + G4bool &targetHasChanged, + G4bool &quasiElastic ) +{ + // Derived from H. Fesefeldt's original FORTRAN code CASX0 + // + // XiZero undergoes interaction with nucleon within a nucleus. Check if it is + // energetically possible to produce pions/kaons. In not, assume nuclear excitation + // occurs and input particle is degraded in energy. No other particles are produced. + // If reaction is possible, find the correct number of pions/protons/neutrons + // produced using an interpolation to multiplicity data. Replace some pions or + // protons/neutrons by kaons or strange baryons according to the average + // multiplicity per inelastic reaction. + + const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; + const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; + const G4double targetMass = targetParticle.GetMass()/MeV; + G4double centerofmassEnergy = std::sqrt( mOriginal*mOriginal + + targetMass*targetMass + + 2.0*targetMass*etOriginal ); + G4double availableEnergy = centerofmassEnergy-(targetMass+mOriginal); + if( availableEnergy <= G4PionPlus::PionPlus()->GetPDGMass()/MeV ) + { + quasiElastic = true; + return; + } + static G4bool first = true; + const G4int numMul = 1200; + const G4int numSec = 60; + static G4double protmul[numMul], protnorm[numSec]; // proton constants + static G4double neutmul[numMul], neutnorm[numSec]; // neutron constants + // np = number of pi+, nm = number of pi-, nz = number of pi0 + G4int counter, nt=0, np=0, nm=0, nz=0; + G4double test; + const G4double c = 1.25; + const G4double b[] = { 0.7, 0.7 }; + if( first ) // compute normalization constants, this will only be Done once + { + first = false; + G4int i; + for( i=0; i0 && nt<=numSec ) + { + protmul[counter] = Pmltpc(np,nm,nz,nt,b[0],c); + protnorm[nt-1] += protmul[counter]; + } + } + } + } + } + for( i=0; i0 && nt<=numSec ) + { + neutmul[counter] = Pmltpc(np,nm,nz,nt,b[1],c); + neutnorm[nt-1] += neutmul[counter]; + } + } + } + } + } + for( i=0; i 0.0 )protnorm[i] = 1.0/protnorm[i]; + if( neutnorm[i] > 0.0 )neutnorm[i] = 1.0/neutnorm[i]; + } + } // end of initialization + + const G4double expxu = 82.; // upper bound for arg. of exp + const G4double expxl = -expxu; // lower bound for arg. of exp + G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); + G4ParticleDefinition *aProton = G4Proton::Proton(); + G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); + G4ParticleDefinition *aSigmaPlus = G4SigmaPlus::SigmaPlus(); + G4ParticleDefinition *aXiMinus = G4XiMinus::XiMinus(); + // + // energetically possible to produce pion(s) --> inelastic scattering + // + G4double n, anpn; + GetNormalizationConstant( availableEnergy, n, anpn ); + G4double ran = G4UniformRand(); + G4double dum, excs = 0.0; + if( targetParticle.GetDefinition() == aProton ) + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-2); nm<=(np+1) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*protmul[counter]*protnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + // + // number of secondary mesons determined by kno distribution + // check for total charge of final state mesons to determine + // the kind of baryons to be produced, taking into account + // charge and strangeness conservation + // + if( np < nm+1 ) + { + if( np != nm ) // charge mismatch + { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + // + // correct the strangeness by replacing a pi- by a kaon- + // + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonMinus ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nm; + } + } + else if( np == nm+1 ) + { + if( G4UniformRand() < 0.5 ) + { + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + else + { + currentParticle.SetDefinitionAndUpdateE( aXiMinus ); + incidentHasChanged = true; + } + } + else + { + currentParticle.SetDefinitionAndUpdateE( aXiMinus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aNeutron ); + targetHasChanged = true; + } + } + else // target must be a neutron + { + counter = -1; + for( np=0; np=excs; ++np ) + { + for( nm=std::max(0,np-1); nm<=(np+2) && ran>=excs; ++nm ) + { + for( nz=0; nz=excs; ++nz ) + { + if( ++counter < numMul ) + { + nt = np+nm+nz; + if( nt>0 && nt<=numSec ) + { + test = std::exp( std::min( expxu, std::max( expxl, -(pi/4.0)*(nt*nt)/(n*n) ) ) ); + dum = (pi/anpn)*nt*neutmul[counter]*neutnorm[nt-1]/(2.0*n*n); + if( std::fabs(dum) < 1.0 ) + { + if( test >= 1.0e-10 )excs += dum*test; + } + else + excs += dum*test; + } + } + } + } + } + if( ran >= excs ) // 3 previous loops continued to the end + { + quasiElastic = true; + return; + } + np--; nm--; nz--; + if( np < nm ) + { + if( np+1 == nm ) + { + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + else // charge mismatch + { + currentParticle.SetDefinitionAndUpdateE( aSigmaPlus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + // + // correct the strangeness by replacing a pi- by a kaon- + // + vec.Initialize( 1 ); + G4ReactionProduct *p = new G4ReactionProduct; + p->SetDefinition( aKaonMinus ); + (G4UniformRand() < 0.5) ? p->SetSide( -1 ) : p->SetSide( 1 ); + vec.SetElement( vecLen++, p ); + --nm; + } + } + else if( np == nm ) + { + if( G4UniformRand() >= 0.5 ) + { + currentParticle.SetDefinitionAndUpdateE( aXiMinus ); + incidentHasChanged = true; + targetParticle.SetDefinitionAndUpdateE( aProton ); + targetHasChanged = true; + } + } + else + { + currentParticle.SetDefinitionAndUpdateE( aXiMinus ); + incidentHasChanged = true; + } + } + SetUpPions( np, nm, nz, vec, vecLen ); + return; +} + + /* end of file */ + diff --git a/source/processes/hadronic/models/theo_high_energy/History b/source/processes/hadronic/models/theo_high_energy/History index 6bd67fdd29..ceb7115149 100644 --- a/source/processes/hadronic/models/theo_high_energy/History +++ b/source/processes/hadronic/models/theo_high_energy/History @@ -14,6 +14,13 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +15-Nov-2007 G.Folger had-theo-HE-V09-00-01 +- Correct Projectile Diffractive scattering: when a very unusal nucleus + PDGcode is given by chips, recreate another final state. + +13-Nov-2007 G.Folger had-theo-HE-V09-00-00 +- Add Channel for Projectile Diffractive scattering + 12-04-2007 Gunter Folger had-theo-HE-V08-02-01 - add model name to identify model for hadronic whiteboard; default for G4TheoFSGenerator is "TheoFSGenerator", but the ctor in physics lists should diff --git a/source/processes/hadronic/models/theo_high_energy/include/G4ProjectileDiffractiveChannel.hh b/source/processes/hadronic/models/theo_high_energy/include/G4ProjectileDiffractiveChannel.hh new file mode 100644 index 0000000000..f8a754a031 --- /dev/null +++ b/source/processes/hadronic/models/theo_high_energy/include/G4ProjectileDiffractiveChannel.hh @@ -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: G4ProjectileDiffractiveChannel.hh,v 1.1 2007/11/13 16:01:36 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +// Author : Gunter Folger Nov 2007 +// Class Description +// Final state production model for theoretical models of hadron inelastic +// projectile diffractive scattering in geant4; +// Class Description - End +// +// Modified: + +#ifndef G4ProjectileDiffractiveChannel_h +#define G4ProjectileDiffractiveChannel_h + +#include "G4Nucleus.hh" +#include "G4HadProjectile.hh" +#include "G4KineticTrackVector.hh" + +#include "G4QDiffractionRatio.hh" + +class G4ProjectileDiffractiveChannel +{ + public: + G4ProjectileDiffractiveChannel(); + ~G4ProjectileDiffractiveChannel(); + + G4double GetFraction(G4Nucleus &theNucleus, + const G4DynamicParticle & thePrimary); + + G4KineticTrackVector * Scatter(G4Nucleus &theNucleus, + const G4DynamicParticle & thePrimary); + + private: + G4ProjectileDiffractiveChannel(const G4ProjectileDiffractiveChannel &); + const G4ProjectileDiffractiveChannel & operator=(const G4ProjectileDiffractiveChannel &); + int operator==(const G4ProjectileDiffractiveChannel &) const; + int operator!=(const G4ProjectileDiffractiveChannel &) const; + + private: + G4QDiffractionRatio * theQDiffraction; +}; + +#endif diff --git a/source/processes/hadronic/models/theo_high_energy/include/G4QuasiElasticChannel.hh b/source/processes/hadronic/models/theo_high_energy/include/G4QuasiElasticChannel.hh index 9531ca4ca2..abc20a919c 100644 --- a/source/processes/hadronic/models/theo_high_energy/include/G4QuasiElasticChannel.hh +++ b/source/processes/hadronic/models/theo_high_energy/include/G4QuasiElasticChannel.hh @@ -25,7 +25,7 @@ // // // $Id: G4QuasiElasticChannel.hh,v 1.1 2007/03/30 15:25:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author : Gunter Folger March 2007 diff --git a/source/processes/hadronic/models/theo_high_energy/include/G4TheoFSGenerator.hh b/source/processes/hadronic/models/theo_high_energy/include/G4TheoFSGenerator.hh index 03a1815915..719edd5911 100644 --- a/source/processes/hadronic/models/theo_high_energy/include/G4TheoFSGenerator.hh +++ b/source/processes/hadronic/models/theo_high_energy/include/G4TheoFSGenerator.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4TheoFSGenerator.hh,v 1.5 2007/04/12 07:53:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4TheoFSGenerator.hh,v 1.6 2007/11/13 16:01:36 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description @@ -44,11 +44,13 @@ #define G4TheoFSGenerator_h 1 #include "G4VIntraNuclearTransportModel.hh" +#include "G4QuasiElasticChannel.hh" #include "G4HadronicInteraction.hh" #include "G4VHighEnergyGenerator.hh" #include "G4DecayStrongResonances.hh" #include "G4HadFinalState.hh" #include "G4QuasiElasticChannel.hh" +#include "G4ProjectileDiffractiveChannel.hh" class G4TheoFSGenerator : public G4HadronicInteraction @@ -68,7 +70,7 @@ class G4TheoFSGenerator : public G4HadronicInteraction void SetTransport(G4VIntraNuclearTransportModel *const value); void SetHighEnergyGenerator(G4VHighEnergyGenerator *const value); void SetQuasiElasticChannel(G4QuasiElasticChannel *const value); - + void SetProjectileDiffraction(G4ProjectileDiffractiveChannel *const value); private: const G4VIntraNuclearTransportModel * GetTransport() const; const G4VHighEnergyGenerator * GetHighEnergyGenerator() const; @@ -79,7 +81,8 @@ class G4TheoFSGenerator : public G4HadronicInteraction G4VHighEnergyGenerator * theHighEnergyGenerator; G4DecayStrongResonances theDecay; G4HadFinalState * theParticleChange; - G4QuasiElasticChannel * theParallelFSGenerator; + G4QuasiElasticChannel * theQuasielastic; + G4ProjectileDiffractiveChannel * theProjectileDiffraction; }; inline const G4VIntraNuclearTransportModel * G4TheoFSGenerator::GetTransport() const @@ -104,7 +107,11 @@ inline void G4TheoFSGenerator::SetHighEnergyGenerator(G4VHighEnergyGenerator *co inline void G4TheoFSGenerator::SetQuasiElasticChannel(G4QuasiElasticChannel *const value) { - theParallelFSGenerator = value; + theQuasielastic = value; +} +inline void G4TheoFSGenerator::SetProjectileDiffraction(G4ProjectileDiffractiveChannel *const value) +{ + theProjectileDiffraction = value; } inline const G4HadFinalState * G4TheoFSGenerator::GetFinalState() const diff --git a/source/processes/hadronic/models/theo_high_energy/src/G4ProjectileDiffractiveChannel.cc b/source/processes/hadronic/models/theo_high_energy/src/G4ProjectileDiffractiveChannel.cc new file mode 100644 index 0000000000..a262a35026 --- /dev/null +++ b/source/processes/hadronic/models/theo_high_energy/src/G4ProjectileDiffractiveChannel.cc @@ -0,0 +1,161 @@ +// +// ******************************************************************** +// * 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: G4ProjectileDiffractiveChannel.cc,v 1.2 2007/11/15 16:07:42 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// + +// Author : Gunter Folger Nov 2007 +// Class Description +// Final state production model for theoretical models of hadron inelastic +// projectile diffractive scattering in geant4; +// Class Description - End +// +// Modified: + +#include "G4ProjectileDiffractiveChannel.hh" + +#include "G4HadTmpUtil.hh" //lrint +#include "G4QHadronVector.hh" +#include "G4ParticleTable.hh" +#include "G4IonTable.hh" +#include "G4Lambda.hh" + +//#define debug_getFraction 1 +//#define debug_scatter 1 + +G4ProjectileDiffractiveChannel::G4ProjectileDiffractiveChannel() +{ + theQDiffraction=G4QDiffractionRatio::GetPointer(); +} + +G4ProjectileDiffractiveChannel::~G4ProjectileDiffractiveChannel() +{} + +G4double G4ProjectileDiffractiveChannel::GetFraction(G4Nucleus &theNucleus, + const G4DynamicParticle & thePrimary) +{ + G4double ratio; + ratio=theQDiffraction->GetRatio(thePrimary.GetTotalMomentum(), + thePrimary.GetDefinition()->GetPDGEncoding(), + G4lrint(theNucleus.GetZ()), + G4lrint(theNucleus.GetN()-theNucleus.GetZ())); + #ifdef debug_getFraction + G4cout << "G4ProjectileDiffractiveChannel::ratio " << ratio << G4endl; + #endif + + return ratio; +} + +G4KineticTrackVector * G4ProjectileDiffractiveChannel::Scatter(G4Nucleus &theNucleus, + const G4DynamicParticle & thePrimary) +{ + + + G4int A=G4lrint(theNucleus.GetN()); + G4int Z=G4lrint(theNucleus.GetZ()); + + G4ParticleDefinition * pDef=thePrimary.GetDefinition(); + #ifdef debug_scatter + G4cout << " ProjectileDiffractive: A, Z, proj-pdg" <<" "<< A <<" "<GetParticleName()<< G4endl; + #endif + + G4QHadronVector * result(0); + G4KineticTrackVector * ktv(0); + G4bool tryAgain; + + do { + tryAgain = false; + result=theQDiffraction->ProjFragment(pDef->GetPDGEncoding(), + thePrimary.Get4Momentum(),Z, A-Z); + + if ( result && result->size() > 0 ) + { + ktv=new G4KineticTrackVector(); + std::vector::iterator i; + #ifdef debug_scatter + G4int count(0); + #endif + for (i=result->begin(); i!=result->end(); i++) + { + G4int pdgCode=(*i)->GetPDGCode(); + G4ParticleDefinition * secDef(0); + if ( pdgCode < 80000000) { // check if ion; should be 90Million, but 89Million is possible + secDef= G4ParticleTable::GetParticleTable()->FindParticle(pdgCode); + }else { + G4int N = pdgCode % 1000; + G4int Z = (pdgCode/1000) %1000; + if ( Z < 500 && N < 500){ // protect for delta being coded as/in nucleus + secDef = G4ParticleTable::GetParticleTable()->GetIon(Z,N+Z, 0); + if ( ! secDef ) + { // exceptions to the rule! + if ( pdgCode == 90000001 ) secDef= G4Neutron::Neutron(); + if ( pdgCode == 91000000 ) secDef= G4Lambda::Lambda(); + } + } + } + + if ( secDef ){ + + G4ThreeVector pos=(*i)->GetPosition(); //GetPosition returns const & + G4LorentzVector mom=(*i)->Get4Momentum(); + + G4KineticTrack * sPrim=new G4KineticTrack(secDef, + (*i)->GetFormationTime(), pos, mom); + ktv->push_back(sPrim); + + #ifdef debug_scatter + G4cout << "G4ProjectileDiffractive sec # " << ++count << ", " + << "ChipsPDGCode=" << pdgCode << ", " + << secDef->GetParticleName() + << ", time(ns) " << (*i)->GetFormationTime()/ns + << ", pos " << pos + << ", 4mom " << (*i)->Get4Momentum() + << G4endl; + #endif + } else { + #ifdef debug_scatter + G4cout << "G4ProjectileDiffractiveChannel: Particle with PDG code "<< pdgCode <<" does not converted!!!"<begin(), result->end(), DeleteQHadron()); + delete result; + result=0; + } + + if ( result ) delete result; + if ( tryAgain ) { // QDiffraction returned a "difficult" particle in nucleus + std::for_each(ktv->begin(), ktv->end(), DeleteKineticTrack()); + delete ktv; + ktv=0; + } + } while ( ! ktv); + + return ktv; +} diff --git a/source/processes/hadronic/models/theo_high_energy/src/G4QuasiElasticChannel.cc b/source/processes/hadronic/models/theo_high_energy/src/G4QuasiElasticChannel.cc index 241ab9c162..08306f9900 100644 --- a/source/processes/hadronic/models/theo_high_energy/src/G4QuasiElasticChannel.cc +++ b/source/processes/hadronic/models/theo_high_energy/src/G4QuasiElasticChannel.cc @@ -25,7 +25,7 @@ // // // $Id: G4QuasiElasticChannel.cc,v 1.1 2007/03/30 15:25:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author : Gunter Folger March 2007 diff --git a/source/processes/hadronic/models/theo_high_energy/src/G4TheoFSGenerator.cc b/source/processes/hadronic/models/theo_high_energy/src/G4TheoFSGenerator.cc index 74a1008cb3..ce8864e256 100644 --- a/source/processes/hadronic/models/theo_high_energy/src/G4TheoFSGenerator.cc +++ b/source/processes/hadronic/models/theo_high_energy/src/G4TheoFSGenerator.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4TheoFSGenerator.cc,v 1.7 2007/04/12 07:53:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4TheoFSGenerator.cc,v 1.9 2007/11/13 16:01:36 gunter Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4TheoFSGenerator @@ -36,14 +36,14 @@ G4TheoFSGenerator::G4TheoFSGenerator(const G4String& name) : G4HadronicInteraction(name) - , theParallelFSGenerator(0) + , theQuasielastic(0), theProjectileDiffraction(0) { theParticleChange = new G4HadFinalState; } G4TheoFSGenerator::G4TheoFSGenerator(const G4TheoFSGenerator &) : G4HadronicInteraction("TheoFSGenerator") - , theParallelFSGenerator(0) + , theQuasielastic(0), theProjectileDiffraction(0) { } @@ -86,11 +86,42 @@ G4HadFinalState * G4TheoFSGenerator::ApplyYourself(const G4HadProjectile & thePr thePrimary.Get4Momentum().vect()); const G4DynamicParticle * aPart = &aTemp; - if ( theParallelFSGenerator ) { + if ( theQuasielastic ) { - if ( theParallelFSGenerator->GetFraction(theNucleus, *aPart) > G4UniformRand() ) + if ( theQuasielastic->GetFraction(theNucleus, *aPart) > G4UniformRand() ) { - G4KineticTrackVector *result= theParallelFSGenerator->Scatter(theNucleus, *aPart); + G4KineticTrackVector *result= theQuasielastic->Scatter(theNucleus, *aPart); + if (result) + { + for(unsigned int i=0; isize(); i++) + { + G4DynamicParticle * aNew = + new G4DynamicParticle(result->operator[](i)->GetDefinition(), + result->operator[](i)->Get4Momentum().e(), + result->operator[](i)->Get4Momentum().vect()); + theParticleChange->AddSecondary(aNew); + delete result->operator[](i); + } + delete result; + + } else + { + theParticleChange->SetStatusChange(isAlive); + theParticleChange->SetEnergyChange(thePrimary.GetKineticEnergy()); + theParticleChange->SetMomentumChange(thePrimary.Get4Momentum().vect().unit()); + + } + return theParticleChange; + } + } + if ( theProjectileDiffraction) { + + if ( theProjectileDiffraction->GetFraction(theNucleus, *aPart) > G4UniformRand() ) + // strictly, this returns fraction on inelastic, so quasielastic should + // already be substracted, ie. quasielastic should always be used + // before diffractive + { + G4KineticTrackVector *result= theProjectileDiffraction->Scatter(theNucleus, *aPart); if (result) { for(unsigned int i=0; isize(); i++) @@ -130,10 +161,18 @@ G4HadFinalState * G4TheoFSGenerator::ApplyYourself(const G4HadProjectile & thePr { theTransportResult = theTransport->Propagate(theInitialResult, theHighEnergyGenerator->GetWoundedNucleus()); + if ( !theTransportResult ) { + G4cout << "G4TheoFSGenerator: null ptr from transport propagate " << G4endl; + throw G4HadronicException(__FILE__, __LINE__, "Null ptr from transport propagate"); + } } else { - theTransportResult = theDecay.Propagate(theInitialResult, theHighEnergyGenerator->GetWoundedNucleus()); + theTransportResult = theDecay.Propagate(theInitialResult, theHighEnergyGenerator->GetWoundedNucleus()); + if ( !theTransportResult ) { + G4cout << "G4TheoFSGenerator: null ptr from decay propagate " << G4endl; + throw G4HadronicException(__FILE__, __LINE__, "Null ptr from decay propagate"); + } } // Fill particle change diff --git a/source/processes/hadronic/models/util/History b/source/processes/hadronic/models/util/History index a2be8dd575..a9a4b5384b 100644 --- a/source/processes/hadronic/models/util/History +++ b/source/processes/hadronic/models/util/History @@ -14,7 +14,23 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +16 Nov 2007 Dennis Wright (hadr-mod-util-V09-00-02) +--------------------------------------------------- +- remove initialization by random number of angular momentum vector + from G4Fragment ctors. +- use production version of G4Fancy3DNucleus (see note of 24 Aug 2007) + +24 Aug 2007 Gunter Folger NOT for production +--------------------------------------------------- +- change radial limit where choosing nucleons from 1% of density + to 1per-mille for testing purposes- NOT for production + +5 Jul 2007 Dennis Wright (hadr-mod-util-V09-00-01) +--------------------------------------------------- +- G4KineticTrack.cc : change variable names to avoid Sun warnings about hiding + 24 Jan 2007 Gunter Folger (hadr-mod-util-V08-02-00) +---------------------------------------------------- - G4Parton.{cc,hh}: add method setting momentum using both + and - momentum component - G4Fragment.cc: more info on warning output of negative excitation energy diff --git a/source/processes/hadronic/models/util/src/G4Fragment.cc b/source/processes/hadronic/models/util/src/G4Fragment.cc index 6a7ecdf609..4fa56780b8 100644 --- a/source/processes/hadronic/models/util/src/G4Fragment.cc +++ b/source/processes/hadronic/models/util/src/G4Fragment.cc @@ -48,9 +48,7 @@ G4Fragment::G4Fragment() : #ifdef PRECOMPOUND_TEST ,theCreatorModel("No name") #endif -{ - theAngularMomentum = IsotropicRandom3Vector(); -} +{} // Copy Constructor G4Fragment::G4Fragment(const G4Fragment &right) @@ -80,6 +78,7 @@ G4Fragment::G4Fragment(const G4int A, const G4int Z, const G4LorentzVector aMome theA(A), theZ(Z), theMomentum(aMomentum), + theAngularMomentum(0), numberOfParticles(0), numberOfHoles(0), numberOfCharged(0), @@ -110,6 +109,7 @@ G4Fragment::G4Fragment(const G4LorentzVector aMomentum, G4ParticleDefinition * a theA(0), theZ(0), theMomentum(aMomentum), + theAngularMomentum(0), numberOfParticles(0), numberOfHoles(0), numberOfCharged(0), @@ -120,7 +120,6 @@ G4Fragment::G4Fragment(const G4LorentzVector aMomentum, G4ParticleDefinition * a #endif { theExcitationEnergy = CalculateExcitationEnergy(aMomentum); - theAngularMomentum = IsotropicRandom3Vector(); } diff --git a/source/processes/hadronic/models/util/src/G4KineticTrack.cc b/source/processes/hadronic/models/util/src/G4KineticTrack.cc index 49f896f2ac..60b5c4fe87 100644 --- a/source/processes/hadronic/models/util/src/G4KineticTrack.cc +++ b/source/processes/hadronic/models/util/src/G4KineticTrack.cc @@ -448,7 +448,6 @@ const G4KineticTrack& G4KineticTrack::operator=(const G4KineticTrack& right) { theDefinition = right.GetDefinition(); theFormationTime = right.GetFormationTime(); -// thePosition = right.GetPosition(); the4Momentum = right.the4Momentum; the4Momentum = right.GetTrackingMomentum(); theFermi3Momentum = right.theFermi3Momentum; @@ -510,19 +509,19 @@ G4KineticTrackVector* G4KineticTrack::Decay() // cout << "DECAY Total Width " << theSumActualWidth << G4endl; // cout << "DECAY Total Width " << theTotalActualWidth << G4endl; G4double r = theTotalActualWidth * G4UniformRand(); - G4ParticleDefinition* theDefinition = this->GetDefinition(); - if(!theDefinition) + G4ParticleDefinition* thisDefinition = this->GetDefinition(); + if(!thisDefinition) { G4cerr << "Error condition encountered in G4KineticTrack::Decay()"<GetDecayTable(); + G4DecayTable* theDecayTable = thisDefinition->GetDecayTable(); if(!theDecayTable) { G4cerr << "Error condition encountered in G4KineticTrack::Decay()"<GetParticleName()<GetParticleName()<GetParticleName()<GetParticleName()<GetParticleName()<GetParticleName()<GetPosition(); + G4double formationTime = 0.0; + G4ThreeVector position = this->GetPosition(); G4LorentzVector momentum; G4LorentzVector momentumBalanceCMS(0); G4KineticTrackVector* theDecayProductList = new G4KineticTrackVector; @@ -661,8 +660,8 @@ G4KineticTrackVector* G4KineticTrack::Decay() momentum = toMoving*theDynamicParticle->Get4Momentum(); energyMomentumBalance -= momentum; theDecayProductList->push_back(new G4KineticTrack (aProduct, - theFormationTime, - thePosition, + formationTime, + position, momentum)); delete theDynamicParticle; } diff --git a/source/processes/hadronic/processes/include/G4ElectronNuclearProcess.hh b/source/processes/hadronic/processes/include/G4ElectronNuclearProcess.hh index 1a4f899e86..e004736b08 100644 --- a/source/processes/hadronic/processes/include/G4ElectronNuclearProcess.hh +++ b/source/processes/hadronic/processes/include/G4ElectronNuclearProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4ElectronNuclearProcess.hh,v 1.5 2006/06/29 21:02:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description: // diff --git a/source/processes/hadronic/processes/include/G4PhotoNuclearProcess.hh b/source/processes/hadronic/processes/include/G4PhotoNuclearProcess.hh index ce176d5f33..65c21a2409 100644 --- a/source/processes/hadronic/processes/include/G4PhotoNuclearProcess.hh +++ b/source/processes/hadronic/processes/include/G4PhotoNuclearProcess.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PhotoNuclearProcess.hh,v 1.8 2007/01/07 04:56:01 dennis Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description // Process for photon nuclear inelastic scattering; diff --git a/source/processes/hadronic/processes/src/G4ElectronNuclearProcess.cc b/source/processes/hadronic/processes/src/G4ElectronNuclearProcess.cc index d9c9f210de..bf4793d3a3 100644 --- a/source/processes/hadronic/processes/src/G4ElectronNuclearProcess.cc +++ b/source/processes/hadronic/processes/src/G4ElectronNuclearProcess.cc @@ -25,7 +25,7 @@ // // // $Id: G4ElectronNuclearProcess.cc,v 1.2 2006/06/29 21:03:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4ElectronNuclearProcess.hh" diff --git a/source/processes/hadronic/processes/src/G4PhotoNuclearProcess.cc b/source/processes/hadronic/processes/src/G4PhotoNuclearProcess.cc index d847d2be0a..b02d99b081 100644 --- a/source/processes/hadronic/processes/src/G4PhotoNuclearProcess.cc +++ b/source/processes/hadronic/processes/src/G4PhotoNuclearProcess.cc @@ -26,7 +26,7 @@ // // // $Id: G4PhotoNuclearProcess.cc,v 1.2 2006/06/29 21:03:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4PhotoNuclearProcess.hh" diff --git a/source/processes/hadronic/stopping/History b/source/processes/hadronic/stopping/History index 1303a544c6..740e16a774 100644 --- a/source/processes/hadronic/stopping/History +++ b/source/processes/hadronic/stopping/History @@ -14,21 +14,54 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +19-Nov-2007 Vladimir Ivantchenko (hadr-stopping-V09-00-05) +---------------------------------------------------------- +G4MuonMinusCaptureAtRest - move back + +15-Nov-2007 Vladimir Ivantchenko (hadr-stopping-V09-00-04) +---------------------------------------------------------- +G4MuonMinusCaptureAtRest - move instantiation of G4ExitationHandler from + constructor to run time + +14-Nov-2007 Vladimir Ivantchenko (hadr-stopping-V09-00-03) +---------------------------------------------------------- +G4MuonMinusCaptureAtRest - fixed old memory leak + +02-Oct-2007 Vladimir Ivantchenko (hadr-stopping-V09-00-02) +---------------------------------------------------------- +G4StopElementSelector - fixed typo in Primakoff formula for capture + velosity + +05-Jul-2007 Dennis Wright (hadr-stopping-V09-00-01) +--------------------------------------------------- +- removed old-style copyright from all headers +- fixed Software Reference Manual tags + +05-Jul-2007 Gabriele Cosmo (hadr-stopping-V09-00-00) +---------------------------------------------------- +- Fixed signature of G4MuMinusCaptureCascade::DoCascade() expecting 'const' + as arguments for A and Z. Resolves linking problems on SUN-CC. + 13-Feb-2007 Vladimir Ivantchenko (hadr-stopping-V08-02-02) +---------------------------------------------------------- - G4MuMinusCaptureCascade - add sampling of random vector of e- in decay; add factor 2 in potential energy. 24-Jan-2007 Vladimir Ivantchenko (hadr-stopping-V08-02-01) +---------------------------------------------------------- - G4MuonMinusCaptureAtRest - fix problem for the case, when isotope vector undefined 24-Jan-2007 Vladimir Ivantchenko (hadr-stopping-V08-02-00) +---------------------------------------------------------- - G4MuonMinusCaptureAtRest - force to use round targetA and fix bug #926 1-Dec-2006 Gunter Folger (hadr-stopping-V08-01-01) +---------------------------------------------------- - correct inconsistent use of targetA; for effective targetA transforming to integer using G4int and G4lrint gives values different by 1. 16-Nov-2006 Vladimir Ivantchenko (hadr-stopping-V08-01-00) +---------------------------------------------------------- - G4MuonMinusCaptureAtRest - fix bounding energies, rewrite DoMuonCapture method, introduce protection against negative excitation energy of residual nucleus, @@ -37,7 +70,9 @@ code and to keep track of all tags. in muon decay sampling 20-Jan-2006 Gunter Folger (hadr-stopping-V08-00-00) +---------------------------------------------------- - set process type to fHadronic for all processes in hadronic/stopping 17-May-2006 Vladimir Ivantchenko (hadr-stopping-V08-00-01) +---------------------------------------------------------- - clean up energy/momentum balance for G4MuonMinusCaptureAtRest diff --git a/source/processes/hadronic/stopping/include/G4AntiNeutronAnnihilationAtRest.hh b/source/processes/hadronic/stopping/include/G4AntiNeutronAnnihilationAtRest.hh index 3820ebff6c..a95d6b15fe 100644 --- a/source/processes/hadronic/stopping/include/G4AntiNeutronAnnihilationAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4AntiNeutronAnnihilationAtRest.hh @@ -23,27 +23,17 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4AntiNeutronAnnihilationAtRest physics process ------ -// by Larry Felawka (TRIUMF), April 1998 -// E-mail: felawka@alph04.triumf.ca -// ************************************************************ -//----------------------------------------------------------------------------- +// G4AntiNeutronAnnihilationAtRest physics process +// Larry Felawka (TRIUMF), April 1998 +//--------------------------------------------------------------------- #ifndef G4AntiNeutronAnnihilationAtRest_h #define G4AntiNeutronAnnihilationAtRest_h 1 -// Class Description -// Process for ansorption of n-bar at rest; -// to be used in your physics list in case you need this physics. -// Class Description - End +// Class Description: +// +// Process for absorption of n-bar at rest. +// To be used in your physics list in case you need this physics. #include "globals.hh" #include "Randomize.hh" diff --git a/source/processes/hadronic/stopping/include/G4AntiProtonAnnihilationAtRest.hh b/source/processes/hadronic/stopping/include/G4AntiProtonAnnihilationAtRest.hh index d12018f935..0685c70d1f 100644 --- a/source/processes/hadronic/stopping/include/G4AntiProtonAnnihilationAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4AntiProtonAnnihilationAtRest.hh @@ -23,27 +23,17 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4AntiProtonAnnihilationAtRest physics process ------ -// by Larry Felawka (TRIUMF), April 1998 -// E-mail: felawka@alph04.triumf.ca -// ************************************************************ -//----------------------------------------------------------------------------- +// G4AntiProtonAnnihilationAtRest physics process +// Larry Felawka (TRIUMF), April 1998 +//--------------------------------------------------------------------- #ifndef G4AntiProtonAnnihilationAtRest_h #define G4AntiProtonAnnihilationAtRest_h 1 -// Class Description -// Process for annihilation of p-bar at rest; -// to be used in your physics list in case you need this physics. -// Class Description - End +// Class Description: +// +// Process for annihilation of p-bar at rest. +// To be used in your physics list in case you need this physics. #include "globals.hh" #include "Randomize.hh" diff --git a/source/processes/hadronic/stopping/include/G4DistributionGenerator.hh b/source/processes/hadronic/stopping/include/G4DistributionGenerator.hh index 1237425012..796045318c 100644 --- a/source/processes/hadronic/stopping/include/G4DistributionGenerator.hh +++ b/source/processes/hadronic/stopping/include/G4DistributionGenerator.hh @@ -23,21 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4DistributionGenerator.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 12 May 1998 // -// Modifications: -// ------------------------------------------------------------------- #ifndef G4DISTRIBUTIONGENERATOR_HH #define G4DISTRIBUTIONGENERATOR_HH diff --git a/source/processes/hadronic/stopping/include/G4KaonMinusAbsorption.hh b/source/processes/hadronic/stopping/include/G4KaonMinusAbsorption.hh index 5ec9c9f490..29a585bca7 100644 --- a/source/processes/hadronic/stopping/include/G4KaonMinusAbsorption.hh +++ b/source/processes/hadronic/stopping/include/G4KaonMinusAbsorption.hh @@ -23,19 +23,9 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4KaonMinusAbsorption physics process ------ -// by Larry Felawka (TRIUMF), April 1998 -// E-mail: felawka@alph04.triumf.ca -// ************************************************************ -//----------------------------------------------------------------------------- +// G4KaonMinusAbsorption physics process +// Larry Felawka (TRIUMF), April 1998 +//--------------------------------------------------------------------- #ifndef G4KaonMinusAbsorption_h #define G4KaonMinusAbsorption_h 1 @@ -46,10 +36,11 @@ #include "G4VParticleChange.hh" #include "G4ParticleDefinition.hh" #include "G4GHEKinematicsVector.hh" -// Class Description -// Alternative process for absorption of K- at rest; -// to be used in your physics list in case you need this physics. -// Class Description - End + +// Class Description: +// +// Alternative process for absorption of K- at rest. +// To be used in your physics list in case you need this physics. class G4KaonMinusAbsorption : public G4VRestProcess diff --git a/source/processes/hadronic/stopping/include/G4KaonMinusAbsorptionAtRest.hh b/source/processes/hadronic/stopping/include/G4KaonMinusAbsorptionAtRest.hh index 90f6b99ea5..31fc679186 100644 --- a/source/processes/hadronic/stopping/include/G4KaonMinusAbsorptionAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4KaonMinusAbsorptionAtRest.hh @@ -23,28 +23,21 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1997 -// CERN Geneva Switzerland -// -// // File name: G4KaonMinusAbsorptionAtRest.hh // // Author: Christian V"olcker (Christian.Volcker@cern.ch), // // Creation date: 10. November 1997 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4KaonMinusAbsorptionAtRest_h #define G4KaonMinusAbsorptionAtRest_h 1 -// Class Description -// Process for nuclear absorption of K- at rest; -// to be used in your physics list in case you need this physics. -// Class Description - End + +// Class Description: +// +// Process for nuclear absorption of K- at rest. +// To be used in your physics list in case you need this physics. #include "globals.hh" #include "Randomize.hh" diff --git a/source/processes/hadronic/stopping/include/G4MuMinusCaptureCascade.hh b/source/processes/hadronic/stopping/include/G4MuMinusCaptureCascade.hh index e9a80672b2..4424b5172b 100644 --- a/source/processes/hadronic/stopping/include/G4MuMinusCaptureCascade.hh +++ b/source/processes/hadronic/stopping/include/G4MuMinusCaptureCascade.hh @@ -23,19 +23,11 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4MuMinusCaptureCascade.hh,v 1.8 2006/11/15 12:17:15 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4MuMinusCaptureCascade.hh,v 1.10 2007/07/05 18:19:14 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// -------------------------------------------------------------- -// GEANT 4 class implementation file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4MuMinusCaptureCascade physics process -------- -// by Vladimir Ivanchenko -// E-mail: Vladimir.Ivantchenko@cern.ch -// April 2000 +// G4MuMinusCaptureCascade physics process -------- +// Vladimir Ivanchenko, April 2000 // // Modified: // 14.11.06 Add inline functions (V.Ivanchenko) @@ -60,7 +52,8 @@ public: ~G4MuMinusCaptureCascade(); - G4int DoCascade(G4double Z, G4double A, G4GHEKinematicsVector* Cascade); + G4int DoCascade(const G4double Z, const G4double A, + G4GHEKinematicsVector* Cascade); void DoBoundMuonMinusDecay(G4double Z, G4int* nCascade, G4GHEKinematicsVector* Cascade); diff --git a/source/processes/hadronic/stopping/include/G4MuonMinusCaptureAtRest.hh b/source/processes/hadronic/stopping/include/G4MuonMinusCaptureAtRest.hh index 91fec9c929..98d9d378f7 100644 --- a/source/processes/hadronic/stopping/include/G4MuonMinusCaptureAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4MuonMinusCaptureAtRest.hh @@ -23,29 +23,18 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4MuonMinusCaptureAtRest.hh,v 1.17 2006/11/15 12:17:15 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4MuonMinusCaptureAtRest.hh,v 1.20 2007/11/15 10:05:13 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// ------------------------------------------------------------ -// GEANT 4 class header file --- Copyright CERN 1998 -// CERN Geneva Switzerland +// G4MuonMinusCaptureAtRest physics process +// Larry Felawka (TRIUMF) and Art Olin (TRIUMF) April 1998 +//--------------------------------------------------------------------- // -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4MuonMinusCaptureAtRest physics process ------ -// by Larry Felawka (TRIUMF) -// E-mail: felawka@alph04.triumf.ca -// and Art Olin (TRIUMF) -// E-mail: olin@triumf.ca -// April 1998 -//----------------------------------------------------------------------------- -// -// Class Description -// Process for nuclear capture of muon- at rest takes into account Fermi model of -// muon capture in compounds, simplified EM cascade model, muon decay from K-shell, -// and muon nucleus reaction -// Class Description - End +// Class Description: // +// Process for nuclear capture of mu- at rest takes into account Fermi +// model of muon capture in compounds, simplified EM cascade model, muon +// decay from K-shell, and muon nucleus reaction. // // Modifications: @@ -66,9 +55,10 @@ #include "G4StopElementSelector.hh" #include "G4MuMinusCaptureCascade.hh" #include "G4ReactionProductVector.hh" -#include "G4Fancy3DNucleus.hh" -#include "G4ExcitationHandler.hh" +#include "G4MuonMinus.hh" +class G4Fancy3DNucleus; +class G4ExcitationHandler; class G4GHEKinematicsVector; class G4MuonMinusCaptureAtRest : public G4VRestProcess @@ -107,8 +97,10 @@ private: G4StopElementSelector* pSelector; G4MuMinusCaptureCascade* pEMCascade; G4GHEKinematicsVector* Cascade; - G4Fancy3DNucleus theN; - G4ExcitationHandler theHandler; + G4Fancy3DNucleus* theN; + G4ExcitationHandler* theHandler; + + G4bool isInitialised; }; diff --git a/source/processes/hadronic/stopping/include/G4NeutronCaptureAtRest.hh b/source/processes/hadronic/stopping/include/G4NeutronCaptureAtRest.hh index a4a5a990cb..b424954f3d 100644 --- a/source/processes/hadronic/stopping/include/G4NeutronCaptureAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4NeutronCaptureAtRest.hh @@ -23,26 +23,17 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4NeutronCaptureAtRest physics process ------ -// by Larry Felawka (TRIUMF), April 1998 -// E-mail: felawka@alph04.triumf.ca -// ************************************************************ -//----------------------------------------------------------------------------- +// G4NeutronCaptureAtRest physics process +// Larry Felawka (TRIUMF), April 1998 +//--------------------------------------------------------------------- #ifndef G4NeutronCaptureAtRest_h #define G4NeutronCaptureAtRest_h 1 -// Class Description -// Process for capture of neutrons at rest; -// to be used in your physics list in case you need this physics. -// Class Description - End + +// Class Description: +// +// Process for capture of neutrons at rest. +// To be used in your physics list in case you need this physics. #include "globals.hh" diff --git a/source/processes/hadronic/stopping/include/G4PiMinusAbsorptionAtRest.hh b/source/processes/hadronic/stopping/include/G4PiMinusAbsorptionAtRest.hh index b8da697a01..6eaa1df0d8 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusAbsorptionAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusAbsorptionAtRest.hh @@ -23,28 +23,21 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusAbsorptionAtRest.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 9 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4PIMINUSABSORPTIONATREST_HH #define G4PIMINUSABSORPTIONATREST_HH -// Class Description -// Alternative Process for absorption of pion- at rest; -// to be used in your physics list in case you need this physics. -// Class Description - End + +// Class Description: +// +// Alternative Process for absorption of pi- at rest. +// To be used in your physics list in case you need this physics. #include "globals.hh" diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopAbsorption.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopAbsorption.hh index 25555e4ed5..66b8212770 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopAbsorption.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopAbsorption.hh @@ -23,13 +23,6 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopAbsorption.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopAl.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopAl.hh index 7d7fd1620d..f32307690f 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopAl.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopAl.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopAl.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 18 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4PIMINUSSTOPAL_HH diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopC.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopC.hh index d3b137b918..175755bd23 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopC.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopC.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopC.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 18 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4PIMINUSSTOPC_HH @@ -45,8 +37,6 @@ #include "G4PiMinusStopMaterial.hh" #include "globals.hh" #include "G4LorentzVector.hh" -//#include "G4String.hh" -//#include "G4NucleiPropertiesTable.hh" class G4PiMinusStopC : public G4PiMinusStopMaterial { diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopCo.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopCo.hh index 24d8f2fbc6..efc7569bb6 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopCo.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopCo.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopCo.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 18 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4PIMINUSSTOPCO_HH diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopCu.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopCu.hh index 959e2c306a..ae50e8f56f 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopCu.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopCu.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopCu.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 18 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4PIMINUSSTOPCU_HH diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopLi.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopLi.hh index 1aef68f7bb..bc39442a21 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopLi.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopLi.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopLi.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 18 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4PIMINUSSTOPLI_HH diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopMaterial.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopMaterial.hh index 2f0a842c6d..7bf378cb03 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopMaterial.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopMaterial.hh @@ -23,13 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// $Id: G4PiMinusStopMaterial.hh,v 1.10 2006/06/29 21:04:29 gunter Exp $ -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// +// $Id: G4PiMinusStopMaterial.hh,v 1.11 2007/07/05 18:19:14 dennis Exp $ // // File name: G4PiMinusStopMaterial.hh // diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopN.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopN.hh index 4fdad0b857..b330f8f003 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopN.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopN.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopN.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 18 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4PIMINUSSTOPN_HH diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopO.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopO.hh index 9a2bb7658b..57d153aa59 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopO.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopO.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopO.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 18 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4PIMINUSSTOPO_HH diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopPb.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopPb.hh index ea1b67c71f..9793b3ab0a 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopPb.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopPb.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopPb.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 18 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4PIMINUSSTOPPB_HH diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopTa.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopTa.hh index 7f78dfa0e2..7e02becd01 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopTa.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopTa.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopTa.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 18 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4PIMINUSSTOPTA_HH diff --git a/source/processes/hadronic/stopping/include/G4PionMinusAbsorptionAtRest.hh b/source/processes/hadronic/stopping/include/G4PionMinusAbsorptionAtRest.hh index ceb21d448d..1fe39d095d 100644 --- a/source/processes/hadronic/stopping/include/G4PionMinusAbsorptionAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4PionMinusAbsorptionAtRest.hh @@ -23,27 +23,17 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4PionMinusAbsorptionAtRest physics process ------ -// by Larry Felawka (TRIUMF), April 1998 -// E-mail: felawka@alph04.triumf.ca -// ************************************************************ -//----------------------------------------------------------------------------- +// G4PionMinusAbsorptionAtRest physics process +// Larry Felawka (TRIUMF), April 1998 +//--------------------------------------------------------------------- #ifndef G4PionMinusAbsorptionAtRest_h #define G4PionMinusAbsorptionAtRest_h 1 -// Class Description -// Process for pion- absorption at rest; -// to be used in your physics list in case you need this physics. -// Class Description - End +// Class Description: +// +// Process for pi- absorption at rest. +// To be used in your physics list in case you need this physics. #include "globals.hh" #include "Randomize.hh" diff --git a/source/processes/hadronic/stopping/include/G4StopDeexcitation.hh b/source/processes/hadronic/stopping/include/G4StopDeexcitation.hh index 3fb41d97a7..aacac7595b 100644 --- a/source/processes/hadronic/stopping/include/G4StopDeexcitation.hh +++ b/source/processes/hadronic/stopping/include/G4StopDeexcitation.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4StopDeexcitation.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 12 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4STOPDEEXCITATION_HH diff --git a/source/processes/hadronic/stopping/include/G4StopDeexcitationAlgorithm.hh b/source/processes/hadronic/stopping/include/G4StopDeexcitationAlgorithm.hh index 7d97fa3e33..8c55e7e48d 100644 --- a/source/processes/hadronic/stopping/include/G4StopDeexcitationAlgorithm.hh +++ b/source/processes/hadronic/stopping/include/G4StopDeexcitationAlgorithm.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4StopDeexcitationAlgorithm.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 18 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4STOPDEEXCITATIONALGORITHM_HH diff --git a/source/processes/hadronic/stopping/include/G4StopDummyDeexcitation.hh b/source/processes/hadronic/stopping/include/G4StopDummyDeexcitation.hh index b9a1127476..b292689343 100644 --- a/source/processes/hadronic/stopping/include/G4StopDummyDeexcitation.hh +++ b/source/processes/hadronic/stopping/include/G4StopDummyDeexcitation.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4StopDummyDeexcitation.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 18 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4STOPDUMMYDEEXCITATION_HH diff --git a/source/processes/hadronic/stopping/include/G4StopElementSelector.hh b/source/processes/hadronic/stopping/include/G4StopElementSelector.hh index 7b7cefafd0..de595d6448 100644 --- a/source/processes/hadronic/stopping/include/G4StopElementSelector.hh +++ b/source/processes/hadronic/stopping/include/G4StopElementSelector.hh @@ -23,16 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4StopElementSelector.hh,v 1.9 2006/11/15 12:17:15 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// ************************************************************** -// -// File: G4StopElementSelector +// $Id: G4StopElementSelector.hh,v 1.10 2007/07/05 18:19:14 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // Author: V.Ivanchenko (Vladimir.Ivantchenko@cern.ch) // @@ -40,12 +32,10 @@ // // Class Description: // -// Selection of elements for negative particle cupture +// Selection of elements for negative particle capture // Selection between decay/capture for mu- // N.C.Mukhopadhyay Phys. Rep. 30 (1977) 1. -// -// Class Description: End -// + //----------------------------------------------------------------------------- // // Modifications: diff --git a/source/processes/hadronic/stopping/include/G4StopTheoDeexcitation.hh b/source/processes/hadronic/stopping/include/G4StopTheoDeexcitation.hh index 84a3623280..db9ad09d8c 100644 --- a/source/processes/hadronic/stopping/include/G4StopTheoDeexcitation.hh +++ b/source/processes/hadronic/stopping/include/G4StopTheoDeexcitation.hh @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4StopTheoDeexcitation.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 18 May 1998 // -// Modifications: // ------------------------------------------------------------------- #ifndef G4STOPTHEODEEXCITATION_HH diff --git a/source/processes/hadronic/stopping/src/G4AntiNeutronAnnihilationAtRest.cc b/source/processes/hadronic/stopping/src/G4AntiNeutronAnnihilationAtRest.cc index 663f3308c1..2baa29e11c 100644 --- a/source/processes/hadronic/stopping/src/G4AntiNeutronAnnihilationAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4AntiNeutronAnnihilationAtRest.cc @@ -23,18 +23,9 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4AntiNeutronAnnihilationAtRest physics process -------- -// by Larry Felawka (TRIUMF), April 1998 -// E-mail: felawka@alph04.triumf.ca -// ************************************************************** -//----------------------------------------------------------------------------- +// G4AntiNeutronAnnihilationAtRest physics process +// Larry Felawka (TRIUMF), April 1998 +//--------------------------------------------------------------------- #include "G4AntiNeutronAnnihilationAtRest.hh" #include "G4DynamicParticle.hh" diff --git a/source/processes/hadronic/stopping/src/G4AntiProtonAnnihilationAtRest.cc b/source/processes/hadronic/stopping/src/G4AntiProtonAnnihilationAtRest.cc index 937403193a..283841c976 100644 --- a/source/processes/hadronic/stopping/src/G4AntiProtonAnnihilationAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4AntiProtonAnnihilationAtRest.cc @@ -23,19 +23,9 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4AntiProtonAnnihilationAtRest physics process -------- -// by Larry Felawka (TRIUMF), April 1998 -// E-mail: felawka@alph04.triumf.ca -// ************************************************************** -//----------------------------------------------------------------------------- +// G4AntiProtonAnnihilationAtRest physics process +// Larry Felawka (TRIUMF), April 1998 +//--------------------------------------------------------------------- #include "G4AntiProtonAnnihilationAtRest.hh" #include "G4DynamicParticle.hh" diff --git a/source/processes/hadronic/stopping/src/G4DistributionGenerator.cc b/source/processes/hadronic/stopping/src/G4DistributionGenerator.cc index 008338fb20..2c45a82f2e 100644 --- a/source/processes/hadronic/stopping/src/G4DistributionGenerator.cc +++ b/source/processes/hadronic/stopping/src/G4DistributionGenerator.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4DistributionGenerator // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- #include "globals.hh" diff --git a/source/processes/hadronic/stopping/src/G4KaonMinusAbsorption.cc b/source/processes/hadronic/stopping/src/G4KaonMinusAbsorption.cc index dcb78a0259..599a3cd4b4 100644 --- a/source/processes/hadronic/stopping/src/G4KaonMinusAbsorption.cc +++ b/source/processes/hadronic/stopping/src/G4KaonMinusAbsorption.cc @@ -23,19 +23,9 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4KaonMinusAbsorption physics process -------- -// by Larry Felawka (TRIUMF), April 1998 -// E-mail: felawka@alph04.triumf.ca -// ************************************************************** -//----------------------------------------------------------------------------- +// G4KaonMinusAbsorption physics process +// Larry Felawka (TRIUMF), April 1998 +//--------------------------------------------------------------------- #include "G4KaonMinusAbsorption.hh" #include "G4DynamicParticle.hh" diff --git a/source/processes/hadronic/stopping/src/G4KaonMinusAbsorptionAtRest.cc b/source/processes/hadronic/stopping/src/G4KaonMinusAbsorptionAtRest.cc index 95ae6d5e20..bc728f3ec7 100644 --- a/source/processes/hadronic/stopping/src/G4KaonMinusAbsorptionAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4KaonMinusAbsorptionAtRest.cc @@ -23,15 +23,6 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1997 -// CERN Geneva Switzerland -// -// -// File name: G4KaonMinusAbsorptionAtRest.cc -// // Author: Christian V"olcker (Christian.Volcker@cern.ch), // // Creation date: November 1997 @@ -40,7 +31,7 @@ // // Modifications: // Maria Grazia Pia September 1998 -// Various bug fixes, eliminated several memory leaks +// Various bug fixes, eliminated several memory leaks // // ------------------------------------------------------------------- diff --git a/source/processes/hadronic/stopping/src/G4MuMinusCaptureCascade.cc b/source/processes/hadronic/stopping/src/G4MuMinusCaptureCascade.cc index 22c8db94a6..32d730dd68 100644 --- a/source/processes/hadronic/stopping/src/G4MuMinusCaptureCascade.cc +++ b/source/processes/hadronic/stopping/src/G4MuMinusCaptureCascade.cc @@ -23,27 +23,21 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4MuMinusCaptureCascade.cc,v 1.14 2007/02/13 15:25:05 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4MuMinusCaptureCascade.cc,v 1.15 2007/07/05 18:19:14 dennis Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// -------------------------------------------------------------- -// GEANT 4 class implementation file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4MuonMinusCaptureAtRest physics process -------- +// G4MuonMinusCaptureAtRest physics process // -// E-mail: Vladimir.Ivantchenko@cern.ch +// E-mail: Vladimir.Ivantchenko@cern.ch // -// Created: 02.04.00 V.Ivanchenko +// Created: 02.04.00 V.Ivanchenko // // Modified: // 06.04.01 V.Ivanchenko Bug in theta distribution fixed // 13.02.07 V.Ivanchenko Fixes in decay - add random distribution of e- // direction; factor 2 in potential energy // -//----------------------------------------------------------------------------- +//---------------------------------------------------------------------- #include "G4MuMinusCaptureCascade.hh" #include "G4LorentzVector.hh" diff --git a/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc b/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc index 5197bcd14d..03c123c5c7 100644 --- a/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc @@ -23,19 +23,13 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4MuonMinusCaptureAtRest.cc,v 1.43 2007/01/30 10:31:02 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4MuonMinusCaptureAtRest.cc,v 1.48 2007/11/19 16:49:25 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// ------------------------------------------------------------ -// GEANT 4 class file -// -// ------------ G4MuonMinusCaptureAtRest physics process ------ -// by Larry Felawka (TRIUMF) -// E-mail: felawka@alph04.triumf.ca -// and Art Olin (TRIUMF) -// E-mail: olin@triumf.ca -// April 1998 -//----------------------------------------------------------------------------- +// G4MuonMinusCaptureAtRest physics process +// Larry Felawka (TRIUMF) and Art Olin (TRIUMF) +// April 1998 +//--------------------------------------------------------------------- // // Modifications: // 18/08/2000 V.Ivanchenko Update description @@ -55,18 +49,22 @@ #include "G4ReactionProductVector.hh" #include "G4Proton.hh" #include "G4PionPlus.hh" -#include "G4MuonMinus.hh" #include "G4GHEKinematicsVector.hh" +#include "G4Fancy3DNucleus.hh" +#include "G4ExcitationHandler.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G4MuonMinusCaptureAtRest::G4MuonMinusCaptureAtRest(const G4String& processName, G4ProcessType aType ) : - G4VRestProcess (processName, aType), nCascade(0), targetZ(0),targetA(0) + G4VRestProcess (processName, aType), nCascade(0), targetZ(0), targetA(0), + isInitialised(false) { Cascade = new G4GHEKinematicsVector [17]; pSelector = new G4StopElementSelector(); pEMCascade = new G4MuMinusCaptureCascade(); + theN = new G4Fancy3DNucleus(); + theHandler = new G4ExcitationHandler(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -76,6 +74,8 @@ G4MuonMinusCaptureAtRest::~G4MuonMinusCaptureAtRest() delete [] Cascade; delete pSelector; delete pEMCascade; + delete theN; + delete theHandler; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -168,7 +168,9 @@ G4VParticleChange* G4MuonMinusCaptureAtRest::AtRestDoIt(const G4Track& track, G4Track* aNewTrack = new G4Track( aNewParticle, localtime, position); aNewTrack->SetTouchableHandle(track.GetTouchableHandle()); aParticleChange.AddSecondary( aNewTrack ); + delete aParticle; } + delete captureResult; } // Store electromagnetic cascade @@ -280,14 +282,14 @@ G4ReactionProductVector* G4MuonMinusCaptureAtRest::DoMuCapture() // pick random proton inside nucleus G4double eEx; do { - theN.Init(targetA, targetZ); + theN->Init(targetA, targetZ); G4LorentzVector thePMom; G4Nucleon * aNucleon = 0; G4int theProtonCounter = G4int( targetZ * G4UniformRand() ); G4int counter = 0; - theN.StartLoop(); + theN->StartLoop(); - while( (aNucleon=theN.GetNextNucleon()) ) { + while( (aNucleon=theN->GetNextNucleon()) ) { if( aNucleon->GetDefinition() == G4Proton::Proton() ) { counter++; @@ -345,7 +347,7 @@ G4ReactionProductVector* G4MuonMinusCaptureAtRest::DoMuCapture() anInitialState.SetNumberOfCharged(0); anInitialState.SetNumberOfHoles(1); anInitialState.SetMomentum(fscm); - aPreResult = theHandler.BreakItUp(anInitialState); + aPreResult = theHandler->BreakItUp(anInitialState); G4ReactionProductVector::iterator ires; G4double eBal = availableEnergy - aNu->GetTotalEnergy(); diff --git a/source/processes/hadronic/stopping/src/G4NeutronCaptureAtRest.cc b/source/processes/hadronic/stopping/src/G4NeutronCaptureAtRest.cc index ab0e267d93..969d957756 100644 --- a/source/processes/hadronic/stopping/src/G4NeutronCaptureAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4NeutronCaptureAtRest.cc @@ -23,19 +23,9 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4NeutronCaptureAtRest physics process -------- -// by Larry Felawka (TRIUMF), April 1998 -// E-mail: felawka@alph04.triumf.ca -// ************************************************************** -//----------------------------------------------------------------------------- +// G4NeutronCaptureAtRest physics process +// Larry Felawka (TRIUMF), April 1998 +//--------------------------------------------------------------------- #include "G4NeutronCaptureAtRest.hh" #include "G4DynamicParticle.hh" diff --git a/source/processes/hadronic/stopping/src/G4PiMinusAbsorptionAtRest.cc b/source/processes/hadronic/stopping/src/G4PiMinusAbsorptionAtRest.cc index 5bb71204ea..7a3e6e53ce 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusAbsorptionAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusAbsorptionAtRest.cc @@ -23,13 +23,6 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusAbsorptionAtRest.hh // // Author: Maria Grazia Pia (pia@genova.infn.it) diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopAbsorption.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopAbsorption.cc index 4150756a26..7d5c105fec 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopAbsorption.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopAbsorption.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopAbsorption // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopAl.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopAl.cc index 42b38692ef..1a6c9499c9 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopAl.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopAl.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopAl // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- #include "G4ios.hh" diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopC.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopC.cc index 092ba1aa58..223a82ffe2 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopC.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopC.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopC // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- #include "G4ios.hh" diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopCo.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopCo.cc index 49bc777a36..681f7705fb 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopCo.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopCo.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopCo // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- #include "G4ios.hh" diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopCu.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopCu.cc index 759f70f6f0..503437d7c5 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopCu.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopCu.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopCu // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- #include "G4ios.hh" diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopLi.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopLi.cc index 3d108afb85..6add20f531 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopLi.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopLi.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopLi // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- #include "G4ios.hh" diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopMaterial.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopMaterial.cc index a1db4ded46..cb60f1c6f2 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopMaterial.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopMaterial.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopMaterial // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- #include "G4ios.hh" diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopN.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopN.cc index cb30d1ff9d..325348de03 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopN.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopN.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopN // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- #include "G4ios.hh" diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopO.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopO.cc index 1ae6053eb4..ceb7618e74 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopO.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopO.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopO // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- #include "G4ios.hh" diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopPb.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopPb.cc index f38028073d..c640635aaf 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopPb.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopPb.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopPb // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- #include "G4ios.hh" diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopTa.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopTa.cc index a5dfb927d0..f35053d879 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopTa.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopTa.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4PiMinusStopTa // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- #include "G4ios.hh" diff --git a/source/processes/hadronic/stopping/src/G4PionMinusAbsorptionAtRest.cc b/source/processes/hadronic/stopping/src/G4PionMinusAbsorptionAtRest.cc index 8acb4bf1e6..6caddc3360 100644 --- a/source/processes/hadronic/stopping/src/G4PionMinusAbsorptionAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4PionMinusAbsorptionAtRest.cc @@ -23,19 +23,9 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4PionMinusAbsorptionAtRest physics process -------- -// by Larry Felawka (TRIUMF), April 1998 -// E-mail: felawka@alph04.triumf.ca -// ************************************************************** -//----------------------------------------------------------------------------- +// G4PionMinusAbsorptionAtRest physics process +// Larry Felawka (TRIUMF), April 1998 +//--------------------------------------------------------------------- #include "G4PionMinusAbsorptionAtRest.hh" #include "G4DynamicParticle.hh" diff --git a/source/processes/hadronic/stopping/src/G4StopDeexcitation.cc b/source/processes/hadronic/stopping/src/G4StopDeexcitation.cc index db2b01d309..c1ee672357 100644 --- a/source/processes/hadronic/stopping/src/G4StopDeexcitation.cc +++ b/source/processes/hadronic/stopping/src/G4StopDeexcitation.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4StopDeexcitation // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- diff --git a/source/processes/hadronic/stopping/src/G4StopDummyDeexcitation.cc b/source/processes/hadronic/stopping/src/G4StopDummyDeexcitation.cc index b234956b23..c4d94a0982 100644 --- a/source/processes/hadronic/stopping/src/G4StopDummyDeexcitation.cc +++ b/source/processes/hadronic/stopping/src/G4StopDummyDeexcitation.cc @@ -23,20 +23,12 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4StopDummyDeexcitation // // Author: Maria Grazia Pia (pia@genova.infn.it) // // Creation date: 8 May 1998 // -// Modifications: // ------------------------------------------------------------------- #include "G4ios.hh" diff --git a/source/processes/hadronic/stopping/src/G4StopElementSelector.cc b/source/processes/hadronic/stopping/src/G4StopElementSelector.cc index beb5f1f711..fedc050c93 100644 --- a/source/processes/hadronic/stopping/src/G4StopElementSelector.cc +++ b/source/processes/hadronic/stopping/src/G4StopElementSelector.cc @@ -23,12 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4StopElementSelector.cc,v 1.14 2006/11/15 12:17:15 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ -// -// -------------------------------------------------------------- -// GEANT4 class file -// CERN Geneva Switzerland +// $Id: G4StopElementSelector.cc,v 1.16 2007/10/02 18:27:43 vnivanch Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // File: G4StopElementSelector // @@ -36,18 +32,13 @@ // // Creation date: 2 April 2000 // -// Class Description: -// -// Selection of elements for negative particle cupture -// Selection between decay/capture for mu- -// N.C.Mukhopadhyay Phys. Rep. 30 (1977) 1. -// -// // Modifications: // 18/08/2000 V.Ivanchenko Update description // 17/05/2006 V.Ivanchenko Cleanup +// 02/10/2007 V.Ivanchenko Fixed typo in computation of Lambda-factor +// proposed by Victor Pec // -//----------------------------------------------------------------------------- +//--------------------------------------------------------------------- #include "G4StopElementSelector.hh" #include "Randomize.hh" @@ -192,12 +183,13 @@ G4double G4StopElementSelector::GetMuonCaptureRate(G4double Z, G4double A) const G4double t1 = 875.e-10; r1 = zeff[i]; zeff2 = r1 * r1; - xmu = zeff2 * 2.663e-4; + // ^-4 -> ^-5 suggested by user + xmu = zeff2 * 2.663e-5; a2ze = 0.5 * A / Z; r2 = 1.0 - xmu; lambda = t1 * zeff2 * zeff2 * (r2 * r2) * (1.0 - (1.0 - xmu) * .75704) * (a2ze * b0a + 1.0 - (a2ze - 1.0) * b0b - - (2.0 * (A - Z) / Z + std::abs(a2ze - 1.) ) * b0c / (A * 4.) ); + (2.0 * (A - Z) + std::abs(a2ze - 1.) ) * b0c / (A * 4.) ); // == Mu capture data are taken if exist for (unsigned int j = 0; j < ListZE; j++) { diff --git a/source/processes/hadronic/stopping/src/G4StopTheoDeexcitation.cc b/source/processes/hadronic/stopping/src/G4StopTheoDeexcitation.cc index bc6d201dd7..e8f67ec86e 100644 --- a/source/processes/hadronic/stopping/src/G4StopTheoDeexcitation.cc +++ b/source/processes/hadronic/stopping/src/G4StopTheoDeexcitation.cc @@ -23,13 +23,6 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// -// ------------------------------------------------------------------- -// GEANT 4 class file --- Copyright CERN 1998 -// CERN Geneva Switzerland -// -// // File name: G4StopTheoDeexcitation // // Author: Maria Grazia Pia (pia@genova.infn.it) diff --git a/source/processes/hadronic/util/History b/source/processes/hadronic/util/History index 80f05d9fa3..da28d008e2 100644 --- a/source/processes/hadronic/util/History +++ b/source/processes/hadronic/util/History @@ -14,6 +14,18 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +11 Oct 2007 F.W. Jones (hadr-util-V09-00-00) +-------------------------------------------- +- G4LightMedia: fixed coding errors in inequalities for + charge exchange occurrence in PionPlusExchange, + KaonZeroShortExchange, and NeutronExchange. + +13 August 2007 Dennis Wright (hadr-util-V08-03-00a) +--------------------------------------------------- +- special CMS tag: geant4-08-03-ref-00 + hadr-util-V08-03-02. + On top of geant4-08-03-ref-00, this contains only array bounds, units + and backward peak fixes in G4ReactionDynamics + 27 June 2007 Alex Howard (hadr-util-V08-03-03) ------------------------------------------------ - Removed DumpCoreOnHadronicException protection around Report() in @@ -30,18 +42,18 @@ code and to keep track of all tags. 1) sharp peak at 180 degrees for low and medium energies due to a units error: G4double totalE = kineticE + vMass; - was changed to + was changed to G4double totalE = kineticE*GeV + vMass; Result is that particles from intra-nuclear cascade now have energies - ~ 100 MeV instead of almost 0. + ~ 100 MeV instead of almost 0. 2) sharp peak at 180 degrees for low and medium energies and target nuclei with Z > 6 due to incorrect sampling of polar angle: - replaced - G4double costheta = + replaced + G4double costheta = 1.0 + 2.0*std::log(1.0 - G4UniformRand()) / dtb; - with - G4double costheta = + with + G4double costheta = 1.0 + 2.0*std::log(1.0 - G4UniformRand()*factor) / dtb; where factor = 1.0 - std::exp(-dtb) and dtb is momentum-dependent diff --git a/source/processes/hadronic/util/src/G4LightMedia.cc b/source/processes/hadronic/util/src/G4LightMedia.cc index a1a5a958bc..785e9c2cd2 100644 --- a/source/processes/hadronic/util/src/G4LightMedia.cc +++ b/source/processes/hadronic/util/src/G4LightMedia.cc @@ -23,11 +23,14 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// -// - // Hadronic Process: Light Media Charge and/or Strangeness Exchange - // J.L. Chuma, TRIUMF, 21-Feb-1997 - // Last modified: 13-Mar-1997 + +// Hadronic Process: Light Media Charge and/or Strangeness Exchange +// J.L. Chuma, TRIUMF, 21-Feb-1997 +// Last modified: 13-Mar-1997 + +// 11-OCT-2007 F.W. Jones: fixed coding errors in inequalities for +// charge exchange occurrence in PionPlusExchange, +// KaonZeroShortExchange, and NeutronExchange. #include "G4LightMedia.hh" #include "Randomize.hh" @@ -50,7 +53,7 @@ const G4double cech[] = {0.33,0.27,0.29,0.31,0.27,0.18,0.13,0.10,0.09,0.07}; G4int iplab = G4int(std::min( 9.0, incidentParticle->GetTotalMomentum()/GeV*5.0 )); - if( G4UniformRand() > cech[iplab]/std::pow(atomicNumber,0.42) ) { + if( G4UniformRand() < cech[iplab]/std::pow(atomicNumber,0.42) ) { G4DynamicParticle* resultant = new G4DynamicParticle; resultant->SetDefinition( aPiZero ); // targetParticle->SetDefinition( aProton ); @@ -123,7 +126,7 @@ const G4double cech[] = {0.33,0.27,0.29,0.31,0.27,0.18,0.13,0.10,0.09,0.07}; G4int iplab = G4int( std::min( 9.0, incidentParticle->GetTotalMomentum()/GeV*5.0 ) ); - if( G4UniformRand() > cech[iplab]/std::pow(atomicNumber,0.42) ) { + if( G4UniformRand() < cech[iplab]/std::pow(atomicNumber,0.42) ) { G4DynamicParticle* resultant = new G4DynamicParticle; resultant->SetDefinition( aKaonPlus ); // targetParticle->SetDefinition( aNeutron ); @@ -232,7 +235,7 @@ if( targetParticle->GetDefinition() == aProton ) { const G4double cech[] = {0.50,0.45,0.40,0.35,0.30,0.25,0.06,0.04,0.005,0.}; G4int iplab = G4int( std::min( 9.0, incidentParticle->GetTotalMomentum()/GeV*2.5 ) ); - if( G4UniformRand() > cech[iplab]/std::pow(atomicNumber,0.42) ) { + if( G4UniformRand() < cech[iplab]/std::pow(atomicNumber,0.42) ) { G4DynamicParticle* resultant = new G4DynamicParticle; resultant->SetDefinition( aProton ); // targetParticle->SetDefinition( aNeutron ); diff --git a/source/processes/management/History b/source/processes/management/History index 9f8ef5b770..76ac708212 100644 --- a/source/processes/management/History +++ b/source/processes/management/History @@ -1,4 +1,4 @@ -$Id: History,v 1.43 2006/06/01 12:17:02 kurasige Exp $ +$Id: History,v 1.51.2.1 2007/12/12 10:09:04 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,29 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +- Dec. 12, 2007 G.Cosmo (procman-V09-00-05a) +- Moved inline definitions of virtual methods in G4WrapperProcess to + .cc file. + +- Nov. 28, 2007 H.Kurashige (procman-V09-00-05) +- Fix a bug SetProcessOrderingToSecond method of G4ProcessManager. + +- Oct. 6, 2007 H.Kurashige (procman-V09-00-03) +- clean up messages in G4ProcessManager and G4ProcessTable + +- Oct. 3, 2007 H.Kurashige (procman-V09-00-02) +- change ExceptionSeverity of CheckOrderingParameters to FatalException + +- Oct. 2, 2007 H.Kurashige (procman-V09-00-01) +- add G4ProcessManager::CheckOrderingParameters +- add isXXXXDoItIsEnabled methods in G4VProcess and derived classes. + +- July 30, 2007 Jane Tinslay +- Remove double definition of PreparePhysicsTable in G4WrapperProcess + +- July 13,2007 H.Kurashige (procman-V09-00-00) +- add SetProcessOrderingToSecond method for G4ProcessManager. - June 02, 2006 M.Maire ((procman-V08-00-01) - add physicsModified in activate/inactivate UI commands diff --git a/source/processes/management/include/G4IVContinuousDiscreteProcess.hh b/source/processes/management/include/G4IVContinuousDiscreteProcess.hh index b033b7a032..f8852e6cda 100644 --- a/source/processes/management/include/G4IVContinuousDiscreteProcess.hh +++ b/source/processes/management/include/G4IVContinuousDiscreteProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4IVContinuousDiscreteProcess.hh,v 1.8 2006/06/29 21:07:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4IVRestDiscreteProcess.hh b/source/processes/management/include/G4IVRestDiscreteProcess.hh index 33a9077ef6..37e9060296 100644 --- a/source/processes/management/include/G4IVRestDiscreteProcess.hh +++ b/source/processes/management/include/G4IVRestDiscreteProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4IVRestDiscreteProcess.hh,v 1.8 2006/06/29 21:07:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ParticleTypes.hh b/source/processes/management/include/G4ParticleTypes.hh index 9da56672e3..1923c40237 100644 --- a/source/processes/management/include/G4ParticleTypes.hh +++ b/source/processes/management/include/G4ParticleTypes.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticleTypes.hh,v 1.6 2006/06/29 21:07:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcTblElement.hh b/source/processes/management/include/G4ProcTblElement.hh index abaa15abd3..ae871a460f 100644 --- a/source/processes/management/include/G4ProcTblElement.hh +++ b/source/processes/management/include/G4ProcTblElement.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProcTblElement.hh,v 1.11 2006/06/29 21:07:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcTblElement.icc b/source/processes/management/include/G4ProcTblElement.icc index 0aa97c9aa4..930d1e753d 100644 --- a/source/processes/management/include/G4ProcTblElement.icc +++ b/source/processes/management/include/G4ProcTblElement.icc @@ -25,7 +25,7 @@ // // // $Id: G4ProcTblElement.icc,v 1.8 2006/06/29 21:07:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcessAttribute.hh b/source/processes/management/include/G4ProcessAttribute.hh index daf6a7221e..55e5e96c0b 100644 --- a/source/processes/management/include/G4ProcessAttribute.hh +++ b/source/processes/management/include/G4ProcessAttribute.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProcessAttribute.hh,v 1.5 2006/06/29 21:07:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcessManager.hh b/source/processes/management/include/G4ProcessManager.hh index 356dbdeb73..4700c4aee3 100644 --- a/source/processes/management/include/G4ProcessManager.hh +++ b/source/processes/management/include/G4ProcessManager.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ProcessManager.hh,v 1.14 2007/03/30 01:02:28 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ProcessManager.hh,v 1.16 2007/10/02 08:23:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -64,6 +64,7 @@ // Add GetProcessActivation 3 May. 1999 H.Kurashige // Use STL vector instead of RW vector 1. Mar 00 H.Kurashige // Modify G4ProcessVectorOrdering to fix FindInsedrtPosition 15 Feb. 2005 +// Add // ------------------------------------------------------------ #ifndef G4ProcessManager_h @@ -201,8 +202,11 @@ class G4ProcessManager // AtRestProcess has only AtRestDoIt // ContinuousProcess has only AlongStepDoIt // DiscreteProcess has only PostStepDoIt - // if ord is not specified, the process is - // added at the end of List of processvectors + // If the ording parameter is not specified, the process is + // added at the end of List of process vectors + // If a process with same ordering parameter exists, + // this new process will be added just after processes + // with same ordering parameter // (except for processes assigned to LAST explicitly ) // for both DoIt and GetPhysicalInteractionLength // @@ -211,8 +215,10 @@ class G4ProcessManager G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord = ordDefault); G4int AddContinuousProcess(G4VProcess *aProcess, G4int ord = ordDefault); + + /////////////////////////////////////////////// // Methods for setting ordering parameters - // Altanative methods for setting ordering parameters + // Altanative methods for setting ordering parameters // Note: AddProcess method should precede these methods G4int GetProcessOrdering( @@ -226,8 +232,13 @@ class G4ProcessManager G4int ordDoIt = ordDefault ); // Set ordering parameter for DoIt specified by typeDoIt. - - void SetProcessOrderingToFirst( + // If a process with same ordering parameter exists, + // this new process will be added just after processes + // with same ordering parameter + // Note: Ordering parameter will bet set to non-zero + // even if you set ordDoIt = 0 + + void SetProcessOrderingToFirst( G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt ); @@ -236,14 +247,24 @@ class G4ProcessManager // Note: If you use this method for two processes, // a process called later will be first. - void SetProcessOrderingToLast( + void SetProcessOrderingToSecond( + G4VProcess *aProcess, + G4ProcessVectorDoItIndex idDoIt + ); + // Set ordering parameter to 1 for DoIt specified by idDoIt + // and the rpocess will be added just after + // the processes with ordering parameter equal to zero + // Note: If you use this method for two processes, + // a process called later will be . + + void SetProcessOrderingToLast( G4VProcess *aProcess, G4ProcessVectorDoItIndex idDoIt ); // Set ordering parameter to the last of all processes // for DoIt specified by idDoIt. // Note: If you use this method for two processes, - // a process called later will be the last one. + // a process called later will precede. G4VProcess* RemoveProcess(G4VProcess *aProcess); G4VProcess* RemoveProcess(G4int index); @@ -296,7 +317,11 @@ class G4ProcessManager G4int GetProcessVectorId(G4ProcessVectorDoItIndex idx, G4ProcessVectorTypeIndex typ = typeGPIL) const; - + + void CheckOrderingParameters(G4VProcess*) const; + // check consistencies between ordering parameters and + // validity of DoIt of the Process + private: G4ProcessAttribute* GetAttribute(G4int index) const; G4ProcessAttribute* GetAttribute(G4VProcess *aProcess) const; diff --git a/source/processes/management/include/G4ProcessManager.icc b/source/processes/management/include/G4ProcessManager.icc index d772da00b2..e6f8f2383a 100644 --- a/source/processes/management/include/G4ProcessManager.icc +++ b/source/processes/management/include/G4ProcessManager.icc @@ -25,7 +25,7 @@ // // // $Id: G4ProcessManager.icc,v 1.6 2007/03/30 01:02:28 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/management/include/G4ProcessManagerMessenger.hh b/source/processes/management/include/G4ProcessManagerMessenger.hh index bd7381854a..d1c51e3e94 100644 --- a/source/processes/management/include/G4ProcessManagerMessenger.hh +++ b/source/processes/management/include/G4ProcessManagerMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProcessManagerMessenger.hh,v 1.7 2006/06/29 21:07:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/include/G4ProcessTable.hh b/source/processes/management/include/G4ProcessTable.hh index 44bce6cc10..4031c54bde 100644 --- a/source/processes/management/include/G4ProcessTable.hh +++ b/source/processes/management/include/G4ProcessTable.hh @@ -26,7 +26,7 @@ // // $Id: G4ProcessTable.hh,v 1.10 2006/06/29 21:07:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcessTable.icc b/source/processes/management/include/G4ProcessTable.icc index 94c6875b00..83e2571dca 100644 --- a/source/processes/management/include/G4ProcessTable.icc +++ b/source/processes/management/include/G4ProcessTable.icc @@ -25,7 +25,7 @@ // // // $Id: G4ProcessTable.icc,v 1.5 2006/06/29 21:07:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // History: // Use STL vector instead of RW vector 1. Mar 00 H.Kurashige diff --git a/source/processes/management/include/G4ProcessTableMessenger.hh b/source/processes/management/include/G4ProcessTableMessenger.hh index 0644caabea..99fc36f46b 100644 --- a/source/processes/management/include/G4ProcessTableMessenger.hh +++ b/source/processes/management/include/G4ProcessTableMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProcessTableMessenger.hh,v 1.7 2006/06/29 21:07:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/include/G4ProcessType.hh b/source/processes/management/include/G4ProcessType.hh index e7b80ea636..377b38125d 100644 --- a/source/processes/management/include/G4ProcessType.hh +++ b/source/processes/management/include/G4ProcessType.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProcessType.hh,v 1.5 2006/06/29 21:07:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/include/G4ProcessVector.hh b/source/processes/management/include/G4ProcessVector.hh index 46c0ab1455..c76d22df2f 100644 --- a/source/processes/management/include/G4ProcessVector.hh +++ b/source/processes/management/include/G4ProcessVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProcessVector.hh,v 1.10 2006/06/29 21:07:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcessVector.icc b/source/processes/management/include/G4ProcessVector.icc index 9d84c79324..8a48a4797b 100644 --- a/source/processes/management/include/G4ProcessVector.icc +++ b/source/processes/management/include/G4ProcessVector.icc @@ -25,7 +25,7 @@ // // // $Id: G4ProcessVector.icc,v 1.5 2006/06/29 21:07:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // inline G4bool G4ProcessVector::operator==(const G4ProcessVector &right) const { diff --git a/source/processes/management/include/G4VContinuousDiscreteProcess.hh b/source/processes/management/include/G4VContinuousDiscreteProcess.hh index 944a94d1ad..51eadffae5 100644 --- a/source/processes/management/include/G4VContinuousDiscreteProcess.hh +++ b/source/processes/management/include/G4VContinuousDiscreteProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4VContinuousDiscreteProcess.hh,v 1.8 2006/06/29 21:07:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VContinuousProcess.hh b/source/processes/management/include/G4VContinuousProcess.hh index 2b793780fc..15d6881e29 100644 --- a/source/processes/management/include/G4VContinuousProcess.hh +++ b/source/processes/management/include/G4VContinuousProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4VContinuousProcess.hh,v 1.6 2006/06/29 21:07:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VDiscreteProcess.hh b/source/processes/management/include/G4VDiscreteProcess.hh index 84ccb951e3..4ba7ad01d7 100644 --- a/source/processes/management/include/G4VDiscreteProcess.hh +++ b/source/processes/management/include/G4VDiscreteProcess.hh @@ -26,7 +26,7 @@ // // $Id: G4VDiscreteProcess.hh,v 1.8 2006/06/29 21:07:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VProcess.hh b/source/processes/management/include/G4VProcess.hh index f9f151a704..a6bed0405c 100644 --- a/source/processes/management/include/G4VProcess.hh +++ b/source/processes/management/include/G4VProcess.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VProcess.hh,v 1.23 2006/06/29 21:07:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VProcess.hh,v 1.24 2007/10/02 08:23:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -51,6 +51,7 @@ // Add Store/RetrievePhysicsTable 8 Nov. 2000 H.Kurashige // Modify Store/RetrievePhysicsTable methods 9 Mar. 2001 H.Kurashige // Added PreparePhysicsTable 20 Aug. 2004 H.Kurashige +// Added isXXXXDoItIsEnabled 2 Oct. 2007 H.Kurashige #ifndef G4VProcess_h #define G4VProcess_h 1 @@ -310,6 +311,14 @@ class G4VProcess // !!! This method should be at the end of PostStepDoIt() // !!! and AtRestDoIt + public: // with description + // These methods indicate which DoIt is enabled + // These methods are used by G4ProcessManager to check + // that ordering parameters are set properly + G4bool isAtRestDoItIsEnabled() const; + G4bool isAlongStepDoItIsEnabled() const; + G4bool isPostStepDoItIsEnabled() const; + protected: G4String theProcessName; // The name of the process @@ -322,6 +331,10 @@ class G4VProcess G4double thePILfactor; // factor for PhysicsInteractionLength // which is passed to G4SteppingManager + + G4bool enableAtRestDoIt; + G4bool enableAlongStepDoIt; + G4bool enablePostStepDoIt; public: // with description virtual void DumpInfo() const; @@ -441,6 +454,25 @@ inline { return aProcessManager; } + +inline + G4bool G4VProcess::isAtRestDoItIsEnabled() const +{ + return enableAtRestDoIt; +} + +inline + G4bool G4VProcess::isAlongStepDoItIsEnabled() const +{ + return enableAlongStepDoIt; +} + +inline + G4bool G4VProcess::isPostStepDoItIsEnabled() const +{ + return enablePostStepDoIt; +} + #endif diff --git a/source/processes/management/include/G4VRestContinuousDiscreteProcess.hh b/source/processes/management/include/G4VRestContinuousDiscreteProcess.hh index f80e18a256..194d5a06b6 100644 --- a/source/processes/management/include/G4VRestContinuousDiscreteProcess.hh +++ b/source/processes/management/include/G4VRestContinuousDiscreteProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRestContinuousDiscreteProcess.hh,v 1.8 2006/06/29 21:07:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VRestContinuousProcess.hh b/source/processes/management/include/G4VRestContinuousProcess.hh index d3489b46df..564f6a79ad 100644 --- a/source/processes/management/include/G4VRestContinuousProcess.hh +++ b/source/processes/management/include/G4VRestContinuousProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRestContinuousProcess.hh,v 1.6 2006/06/29 21:07:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VRestDiscreteProcess.hh b/source/processes/management/include/G4VRestDiscreteProcess.hh index 02f42bed5d..0d31342360 100644 --- a/source/processes/management/include/G4VRestDiscreteProcess.hh +++ b/source/processes/management/include/G4VRestDiscreteProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRestDiscreteProcess.hh,v 1.8 2006/06/29 21:07:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VRestProcess.hh b/source/processes/management/include/G4VRestProcess.hh index 5e9d0510ee..18e5101c07 100644 --- a/source/processes/management/include/G4VRestProcess.hh +++ b/source/processes/management/include/G4VRestProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRestProcess.hh,v 1.6 2006/06/29 21:07:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4WrapperProcess.hh b/source/processes/management/include/G4WrapperProcess.hh index d8fb8c0d96..0b5010b7a6 100644 --- a/source/processes/management/include/G4WrapperProcess.hh +++ b/source/processes/management/include/G4WrapperProcess.hh @@ -24,19 +24,17 @@ // ******************************************************************** // // -// $Id: G4WrapperProcess.hh,v 1.7 2007/03/25 23:20:03 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4WrapperProcess.hh,v 1.9 2007/12/12 10:09:49 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo +// GEANT 4 class header file // // Class Description -// This class is the virtual class for wrapper process objects. // +// This class is the virtual class for wrapper process objects. + // ------------------------------------------------------------ // New Physics scheme 18 Dec. 1996 H.Kurahige // ------------------------------------------------------------ @@ -46,23 +44,21 @@ #include "globals.hh" #include "G4ios.hh" - - #include "G4VProcess.hh" -class G4WrapperProcess :public G4VProcess +class G4WrapperProcess : public G4VProcess { // A virtual class for wrapper process objects. private: // hide default constructor and assignment operator as private // do not hide default constructor for alpha version - G4WrapperProcess & operator=(const G4WrapperProcess &right); + inline G4WrapperProcess & operator=(const G4WrapperProcess &right); public: // with description // constructor requires the process name and type G4WrapperProcess(const G4String& aName = "Wrapped", - G4ProcessType aType = fNotDefined ); + G4ProcessType aType = fNotDefined ); // copy constructor copys the name but does not copy the // physics table (0 pointer is assigned) @@ -72,9 +68,9 @@ class G4WrapperProcess :public G4VProcess // destructor virtual ~G4WrapperProcess(); - // equal opperators - G4int operator==(const G4WrapperProcess &right) const; - G4int operator!=(const G4WrapperProcess &right) const; + // equality opperators + inline G4int operator==(const G4WrapperProcess &right) const; + inline G4int operator!=(const G4WrapperProcess &right) const; public: // with description virtual void RegisterProcess(G4VProcess*); @@ -88,38 +84,38 @@ class G4WrapperProcess :public G4VProcess // DoIt ///////////////// /////////////////////////// virtual G4VParticleChange* PostStepDoIt( - const G4Track& track, - const G4Step& stepData - ); + const G4Track& track, + const G4Step& stepData + ); virtual G4VParticleChange* AlongStepDoIt( - const G4Track& track, - const G4Step& stepData - ); + const G4Track& track, + const G4Step& stepData + ); virtual G4VParticleChange* AtRestDoIt( - const G4Track& track, - const G4Step& stepData - ); + const G4Track& track, + const G4Step& stepData + ); ////////////////////////// // GPIL ////////////// ///////////////////////// virtual G4double AlongStepGetPhysicalInteractionLength( const G4Track& track, - G4double previousStepSize, - G4double currentMinimumStep, - G4double& proposedSafety, + G4double previousStepSize, + G4double currentMinimumStep, + G4double& proposedSafety, G4GPILSelection* selection); virtual G4double AtRestGetPhysicalInteractionLength( const G4Track& track, - G4ForceCondition* condition - ); + G4ForceCondition* condition + ); virtual G4double PostStepGetPhysicalInteractionLength( const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition - ) ; + G4double previousStepSize, + G4ForceCondition* condition + ) ; ////////////////////// virtual G4bool IsApplicable(const G4ParticleDefinition&); @@ -140,7 +136,7 @@ class G4WrapperProcess :public G4VProcess // private void BuildThePhysicsTable() // function. Not another BuildPhysicsTable, please. - virtual void PreparePhysicsTable(const G4ParticleDefinition&){}; + virtual void PreparePhysicsTable(const G4ParticleDefinition&); // Messaged by the Particle definition (via the Process manager) // whenever cross section tables have to be prepare for rebuilt // (i.e. if new materials have been defined). @@ -155,14 +151,14 @@ class G4WrapperProcess :public G4VProcess virtual G4bool StorePhysicsTable(const G4ParticleDefinition* , - const G4String& directory, - G4bool ascii = false); + const G4String& directory, + G4bool ascii = false); // Store PhysicsTable in a file. // (return false in case of failure at I/O ) virtual G4bool RetrievePhysicsTable( const G4ParticleDefinition* , - const G4String& directory, - G4bool ascii = false); + const G4String& directory, + G4bool ascii = false); // Retrieve Physics from a file. // (return true if the Physics Table can be build by using file) // (return false if the process has no functionality or in case of failure) @@ -181,174 +177,16 @@ class G4WrapperProcess :public G4VProcess // Get the process manager which the process belongs to public: - virtual void ResetNumberOfInteractionLengthLeft(); - // reset (determine the value of)NumberOfInteractionLengthLeft + virtual void ResetNumberOfInteractionLengthLeft(); + // reset (determine the value of)NumberOfInteractionLengthLeft }; - -inline - void G4WrapperProcess::ResetNumberOfInteractionLengthLeft() -{ - pRegProcess->ResetNumberOfInteractionLengthLeft(); -} - - -inline - G4double G4WrapperProcess::AlongStepGetPhysicalInteractionLength( const G4Track& track, - G4double previousStepSize, - G4double currentMinimumStep, - G4double& proposedSafety, - G4GPILSelection* selection ) -{ - return pRegProcess->AlongStepGetPhysicalInteractionLength( track, - previousStepSize, - currentMinimumStep, - proposedSafety, - selection ); -} - -inline - G4double G4WrapperProcess::AtRestGetPhysicalInteractionLength( const G4Track& track, - G4ForceCondition* condition ) -{ - return pRegProcess->AtRestGetPhysicalInteractionLength( track, - condition ); -} - -inline - G4double G4WrapperProcess::PostStepGetPhysicalInteractionLength( const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition ) -{ - return pRegProcess->PostStepGetPhysicalInteractionLength( track, - previousStepSize, - condition ); -} - -inline - void G4WrapperProcess::SetProcessManager(const G4ProcessManager* procMan) -{ - pRegProcess->SetProcessManager(procMan); -} - -inline - const G4ProcessManager* G4WrapperProcess::GetProcessManager() -{ - return pRegProcess->GetProcessManager(); -} - -inline - G4VParticleChange* G4WrapperProcess::PostStepDoIt( - const G4Track& track, - const G4Step& stepData - ) -{ - return pRegProcess->PostStepDoIt( track, stepData ); -} - -inline - G4VParticleChange* G4WrapperProcess::AlongStepDoIt( - const G4Track& track, - const G4Step& stepData - ) -{ - return pRegProcess->AlongStepDoIt( track, stepData ); -} - -inline - G4VParticleChange* G4WrapperProcess::AtRestDoIt( - const G4Track& track, - const G4Step& stepData - ) -{ - return pRegProcess->AtRestDoIt( track, stepData ); -} - -inline - G4bool G4WrapperProcess::IsApplicable(const G4ParticleDefinition& particle) -{ - return pRegProcess->IsApplicable(particle); -} - -inline - void G4WrapperProcess::BuildPhysicsTable(const G4ParticleDefinition& particle) -{ - return pRegProcess->BuildPhysicsTable(particle); -} - -inline - void G4WrapperProcess::PreparePhysicsTable(const G4ParticleDefinition& particle) -{ - return pRegProcess->PreparePhysicsTable(particle); -} - -inline - G4bool G4WrapperProcess::StorePhysicsTable(const G4ParticleDefinition* particle, - const G4String& directory, - G4bool ascii) -{ - return pRegProcess->StorePhysicsTable(particle, directory, ascii); -} - -inline - G4bool G4WrapperProcess::RetrievePhysicsTable( const G4ParticleDefinition* particle, - const G4String& directory, - G4bool ascii) -{ - return pRegProcess->RetrievePhysicsTable(particle, directory, ascii); -} - -inline - void G4WrapperProcess::StartTracking(G4Track* track) -{ - pRegProcess->StartTracking(track); -} - -inline - void G4WrapperProcess::EndTracking() -{ - pRegProcess->EndTracking(); -} - -inline - void G4WrapperProcess::RegisterProcess(G4VProcess* process) -{ - pRegProcess=process; - theProcessName += process->GetProcessName(); - theProcessType = process->GetProcessType(); -} - -inline - const G4VProcess* G4WrapperProcess::GetRegisteredProcess() const -{ - return pRegProcess; -} - -inline - G4WrapperProcess::G4WrapperProcess(const G4String& aName, - G4ProcessType aType) - : G4VProcess(aName,aType), pRegProcess((G4VProcess*)(0)) -{ -} - -inline -G4WrapperProcess::G4WrapperProcess(const G4WrapperProcess& right) - : G4VProcess(*((G4VProcess*)(&right))), pRegProcess(right.pRegProcess) -{ -} - -inline - G4WrapperProcess::~G4WrapperProcess() -{ - if (pRegProcess!=0) delete pRegProcess; -} - inline G4WrapperProcess & G4WrapperProcess::operator=(const G4WrapperProcess &) { G4Exception("G4WrapperProcess::operator=","Illegal operation", - JustWarning,"Assignment operator is called"); + JustWarning,"Assignment operator is called"); return *this; } @@ -364,25 +202,4 @@ inline return (this != &right); } - #endif - - - - - - - - - - - - - - - - - - - - diff --git a/source/processes/management/src/G4IVContinuousDiscreteProcess.cc b/source/processes/management/src/G4IVContinuousDiscreteProcess.cc index af9251cdef..949a1ecfaf 100644 --- a/source/processes/management/src/G4IVContinuousDiscreteProcess.cc +++ b/source/processes/management/src/G4IVContinuousDiscreteProcess.cc @@ -25,7 +25,7 @@ // // // $Id: G4IVContinuousDiscreteProcess.cc,v 1.9 2006/06/29 21:08:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4IVRestDiscreteProcess.cc b/source/processes/management/src/G4IVRestDiscreteProcess.cc index 3283c1d977..5ff4eb3810 100644 --- a/source/processes/management/src/G4IVRestDiscreteProcess.cc +++ b/source/processes/management/src/G4IVRestDiscreteProcess.cc @@ -25,7 +25,7 @@ // // // $Id: G4IVRestDiscreteProcess.cc,v 1.9 2006/06/29 21:08:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4ProcTblElement.cc b/source/processes/management/src/G4ProcTblElement.cc index e855b462c2..7fc585dd47 100644 --- a/source/processes/management/src/G4ProcTblElement.cc +++ b/source/processes/management/src/G4ProcTblElement.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProcTblElement.cc,v 1.7 2006/06/29 21:08:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/src/G4ProcessAttribute.cc b/source/processes/management/src/G4ProcessAttribute.cc index 92002c0dab..66dd336b8c 100644 --- a/source/processes/management/src/G4ProcessAttribute.cc +++ b/source/processes/management/src/G4ProcessAttribute.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProcessAttribute.cc,v 1.5 2006/06/29 21:08:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/src/G4ProcessManager.cc b/source/processes/management/src/G4ProcessManager.cc index 84fd3c7dd1..8c6a1ff030 100644 --- a/source/processes/management/src/G4ProcessManager.cc +++ b/source/processes/management/src/G4ProcessManager.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ProcessManager.cc,v 1.28 2006/06/29 21:08:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ProcessManager.cc,v 1.34 2007/11/28 17:47:57 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -39,6 +39,7 @@ // fixed bugs in FindInsertPosition // 18 July 1998 H.Kurashige // Use STL vector instead of RW vector 1. Mar 00 H.Kurashige +// Add exception to check ordering paramters 2 Oct. 2007 H.Kurashige // ------------------------------------------------------------ #include "G4ProcessManagerMessenger.hh" @@ -270,10 +271,11 @@ G4ProcessAttribute* G4ProcessManager::GetAttribute(G4int index) const #ifdef G4VERBOSE if (GetVerboseLevel()>0) { G4cout << "G4ProcessManager::GetAttribute():"; - G4cout << " particle[" << theParticleType->GetParticleName() << "]"; - G4cout << G4endl; - G4cout << "Warning:: attribute vector index is inconsistent with process List index" << G4endl; - } + G4cout << " particle[" << theParticleType->GetParticleName() << "]" + << G4endl; + G4cout << "Warning:: attribute vector index is inconsistent with process List index" + << G4endl; + } #endif // re-ordering attribute vector G4ProcessAttribute *pAttr = 0; @@ -300,7 +302,7 @@ G4int G4ProcessManager::InsertAt(G4int ip, G4VProcess* process, G4int ivec) G4ProcessVector* pVector = theProcVector[ivec]; // check position if ( (ip<0) || (ip > pVector->entries()) ) return -1; - + // insert in pVector pVector->insertAt(ip, process); @@ -329,12 +331,8 @@ G4int G4ProcessManager::RemoveAt(G4int ip, G4VProcess* , G4int ivec) // check position if ( (ip<0) || (ip >= pVector->entries()) ) return -1; - //check pointer and remove - //if ((*pVector)[ip]== process) { + // remove process pVector->removeAt(ip); - //} else { - // return -1; - //} // correct index for(G4int iproc=0; iprocordProcVector[3] = ordAlongStepDoIt; pAttr->ordProcVector[4] = ordPostStepDoIt; pAttr->ordProcVector[5] = ordPostStepDoIt; - + // add aProccess in Process vectors for (G4int ivec=1; ivecordProcVector[ivec] < 0 ) { @@ -471,6 +469,9 @@ G4int G4ProcessManager::AddProcess( numberOfProcesses += 1; + // check consistencies between ordering parameters and process + CheckOrderingParameters(aProcess); + CreateGPILvectors(); // inform process manager pointer to the process @@ -577,7 +578,7 @@ void G4ProcessManager::SetProcessOrdering( G4int ordDoIt ) { - const G4String aErrorMessage(" G4ProcessManager::GetProcessVectorIndex:"); + const G4String aErrorMessage(" G4ProcessManager::SetProcessOrdering"); #ifdef G4VERBOSE if (GetVerboseLevel()>2) { @@ -593,8 +594,8 @@ void G4ProcessManager::SetProcessOrdering( #ifdef G4VERBOSE if (verboseLevel>0) { G4cout << aErrorMessage << G4endl; - G4cout << "particle[" + theParticleType->GetParticleName() +"] " ; - G4cout << "process[" + aProcess->GetProcessName() + "]"<< G4endl; + G4cout << "particle[" << theParticleType->GetParticleName() << "] " ; + G4cout << "process[" << aProcess->GetProcessName() << "]"<< G4endl; G4cout << " illegal DoIt Index [= " << G4int(idDoIt) << "]"; G4cout << G4endl; } @@ -632,8 +633,8 @@ void G4ProcessManager::SetProcessOrdering( #ifdef G4VERBOSE if (verboseLevel>2) { G4cout << aErrorMessage << G4endl; - G4cout << "particle[" + theParticleType->GetParticleName() +"] " ; - G4cout <<"process[" + aProcess->GetProcessName() + "]"<< G4endl; + G4cout << "particle[" << theParticleType->GetParticleName() << "] " ; + G4cout <<"process[" << aProcess->GetProcessName() << "]"<< G4endl; G4cout << aProcess->GetProcessName() << " is inserted at "<< ip; G4cout << " in ProcessVetor[" << ivec<< "]"; G4cout << " with Ordering parameter = " << ordDoIt ; @@ -643,6 +644,9 @@ void G4ProcessManager::SetProcessOrdering( } } + // check consistencies between ordering parameters and process + CheckOrderingParameters(aProcess); + // create GPIL vectors CreateGPILvectors(); } @@ -699,11 +703,105 @@ void G4ProcessManager::SetProcessOrderingToFirst( #endif } + // check consistencies between ordering parameters and process + CheckOrderingParameters(aProcess); + // create GPIL vectors CreateGPILvectors(); } +// /////////////////////////////////////// +void G4ProcessManager::SetProcessOrderingToSecond( + G4VProcess *aProcess, + G4ProcessVectorDoItIndex idDoIt + ) +{ + const G4String aErrorMessage(" G4ProcessManager::SetProcessOrderingToSecond"); + +#ifdef G4VERBOSE + if (GetVerboseLevel()>2) { + G4cout << aErrorMessage ; + G4cout << "particle[" << theParticleType->GetParticleName() << "] " ; + G4cout <<"process[" << aProcess->GetProcessName() << "]"<< G4endl; + } +#endif + + // get Process Vector Id + G4int ivec = GetProcessVectorId(idDoIt, typeDoIt); + if (ivec <0 ) { +#ifdef G4VERBOSE + if (verboseLevel>0) { + G4cout << aErrorMessage << G4endl; + G4cout << "particle[" << theParticleType->GetParticleName() << "] " ; + G4cout << "process[" << aProcess->GetProcessName() << "]"<< G4endl; + G4cout << " illegal DoIt Index [= " << G4int(idDoIt) << "]"; + G4cout << G4endl; + } +#endif + return; + } + + // get attribute + G4ProcessAttribute* pAttr = GetAttribute(aProcess); + if (pAttr == 0) { + // can not get process attribute + return; + } else { + G4int ip = pAttr->idxProcVector[ivec]; + // remove a process from the process vector + if ( ip >=0 ) { + RemoveAt(ip, aProcess, ivec); + } + } + + // set ordering parameter to 1 + pAttr->ordProcVector[ivec-1] = 1; + pAttr->ordProcVector[ivec] = 1; + + // find insert position + G4ProcessVector* pVector = theProcVector[ivec]; + G4int ip = pVector->entries(); + G4int tmp = INT_MAX; + + // find insert position + for (G4int iproc=0; iprocidxProcVector[ivec] >= 0 ) { + if ( (aAttr->ordProcVector[ivec] !=0 ) && + (tmp >= aAttr->ordProcVector[ivec]) ) { + tmp = aAttr->ordProcVector[ivec]; + if ( ip > aAttr->idxProcVector[ivec] ) { + ip = aAttr->idxProcVector[ivec] ; + } + } + } + } + + // insert + InsertAt(ip, aProcess, ivec); + + // set index in Process Attribute + pAttr->idxProcVector[ivec] = ip; +#ifdef G4VERBOSE + if (verboseLevel>2) { + G4cout << aErrorMessage << G4endl; + G4cout << "particle[" << theParticleType->GetParticleName() << "] " ; + G4cout <<"process[" << aProcess->GetProcessName() << "]"<< G4endl; + G4cout << aProcess->GetProcessName() << " is inserted at "<< ip; + G4cout << " in ProcessVetor[" << ivec<< "]"; + G4cout << " with Ordering parameter = 1 "; + G4cout << G4endl; + } +#endif + + // check consistencies between ordering parameters and process + CheckOrderingParameters(aProcess); + + // create GPIL vectors + CreateGPILvectors(); +} + // /////////////////////////////////////// void G4ProcessManager::SetProcessOrderingToLast( G4VProcess *aProcess, @@ -858,10 +956,9 @@ void G4ProcessManager::DumpInfo() // Dump Information // particle type - G4String* aMessage = new G4String("G4ProcessManager:"); - *aMessage += "particle[" + theParticleType->GetParticleName() + "]"; - G4cout << *aMessage << G4endl; - delete aMessage; + G4cout << "G4ProcessManager: particle[" + << theParticleType->GetParticleName() << "]" + << G4endl; // loop over all processes for (G4int idx=0; idx entries(); idx++){ @@ -987,7 +1084,7 @@ void G4ProcessManager::EndTracking() G4cout << " process (or its index) not found "; } #endif - return false; + return false; } // process attribute G4ProcessAttribute* pAttr = (*theAttrVector)[index]; @@ -995,14 +1092,75 @@ void G4ProcessManager::EndTracking() return pAttr-> isActive; } - - - - - - - - +///////////////////////////////////////////// +void G4ProcessManager::CheckOrderingParameters(G4VProcess* aProcess) const +{ + if (aProcess==0) return; + G4ProcessAttribute* pAttr = GetAttribute(aProcess); + if (pAttr ==0) { +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cout << "G4ProcessManager::CheckOrderingParameters "; + G4cout << " process " << aProcess->GetProcessName() + << " has no attribute" << G4endl; + } +#endif + return; + } + + // check consistencies between ordering parameters and + // validity of DoIt of the Process + G4bool isOK =true; + if ( (pAttr->ordProcVector[0]>=0) && (!aProcess->isAtRestDoItIsEnabled()) ){ + #ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cerr << "G4ProcessManager::CheckOrderingParameters "; + G4cerr << "You cannot set ordering parameter [" + << pAttr->ordProcVector[0] + << "] for AtRest DoIt to the process " + << aProcess->GetProcessName() << G4endl; + } +#endif + isOK = false; + } + + if ( (pAttr->ordProcVector[2]>=0) && (!aProcess->isAlongStepDoItIsEnabled()) ){ +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cerr << "G4ProcessManager::CheckOrderingParameters "; + G4cerr << "You cannot set ordering parameter [" + << pAttr->ordProcVector[2] + << "] for AlongStep DoIt to the process " + << aProcess->GetProcessName() << G4endl; + + } +#endif + isOK = false; + } + + if ( (pAttr->ordProcVector[4]>=0) && (!aProcess->isPostStepDoItIsEnabled()) ) { +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cerr << "G4ProcessManager::CheckOrderingParameters "; + G4cerr << "You cannot set ordering parameter [" + << pAttr->ordProcVector[4] + << "] for PostStep DoIt to the process" + << aProcess->GetProcessName() << G4endl; + } +#endif + isOK = false; + } + + if (!isOK) { + G4String msg; + msg = "Invalid ordering parameters are set for "; + msg += aProcess->GetProcessName(); + G4Exception( "G4ProcessManager::CheckOrderingParameters ", + "Invalid Ordering",FatalException, msg); + } + + return; +} diff --git a/source/processes/management/src/G4ProcessManagerMessenger.cc b/source/processes/management/src/G4ProcessManagerMessenger.cc index 5e07098ba0..aaa6914107 100644 --- a/source/processes/management/src/G4ProcessManagerMessenger.cc +++ b/source/processes/management/src/G4ProcessManagerMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProcessManagerMessenger.cc,v 1.10 2006/06/29 21:08:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/src/G4ProcessTable.cc b/source/processes/management/src/G4ProcessTable.cc index a94a4df351..51cdf585dd 100644 --- a/source/processes/management/src/G4ProcessTable.cc +++ b/source/processes/management/src/G4ProcessTable.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4ProcessTable.cc,v 1.12 2006/06/29 21:08:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4ProcessTable.cc,v 1.13 2007/10/06 05:33:58 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -72,8 +72,8 @@ G4ProcessTable::~G4ProcessTable() if (verboseLevel>1){ G4cout << "-- G4ProcessTable destructor --" << G4endl; } - #endif + if ( tmpTblVector != 0) { tmpTblVector ->clear(); delete tmpTblVector; @@ -601,12 +601,26 @@ void G4ProcessTable::DumpInfo(G4VProcess* process, manager = anElement->GetProcessManager(idx); G4cout << " for " << manager->GetParticleType()->GetParticleName(); G4cout << G4endl; - if (verboseLevel >2) manager->DumpInfo(); +#ifdef G4VERBOSE + if (verboseLevel >2){ + tmpVerbose = manager->GetVerboseLevel(); + manager->SetVerboseLevel(verboseLevel); + manager->DumpInfo(); + manager->SetVerboseLevel(tmpVerbose); + } +#endif } } else { G4cout << " for " << manager->GetParticleType()->GetParticleName(); G4cout << G4endl; - if (verboseLevel >2) manager->DumpInfo(); +#ifdef G4VERBOSE + if (verboseLevel >2){ + tmpVerbose = manager->GetVerboseLevel(); + manager->SetVerboseLevel(verboseLevel); + manager->DumpInfo(); + manager->SetVerboseLevel(tmpVerbose); + } +#endif } } diff --git a/source/processes/management/src/G4ProcessTableMessenger.cc b/source/processes/management/src/G4ProcessTableMessenger.cc index a149538d1e..6d2773c049 100644 --- a/source/processes/management/src/G4ProcessTableMessenger.cc +++ b/source/processes/management/src/G4ProcessTableMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProcessTableMessenger.cc,v 1.17 2006/06/29 21:08:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/src/G4ProcessVector.cc b/source/processes/management/src/G4ProcessVector.cc index 162f445c35..7b8c0c122d 100644 --- a/source/processes/management/src/G4ProcessVector.cc +++ b/source/processes/management/src/G4ProcessVector.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProcessVector.cc,v 1.4 2006/06/29 21:08:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/src/G4VContinuousDiscreteProcess.cc b/source/processes/management/src/G4VContinuousDiscreteProcess.cc index 96b28262e2..5ff7a60706 100644 --- a/source/processes/management/src/G4VContinuousDiscreteProcess.cc +++ b/source/processes/management/src/G4VContinuousDiscreteProcess.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VContinuousDiscreteProcess.cc,v 1.5 2006/06/29 21:08:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VContinuousDiscreteProcess.cc,v 1.6 2007/10/02 08:23:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -48,6 +48,7 @@ G4VContinuousDiscreteProcess::G4VContinuousDiscreteProcess() G4VContinuousDiscreteProcess::G4VContinuousDiscreteProcess(const G4String& aName , G4ProcessType aType) : G4VProcess(aName, aType) { + enableAtRestDoIt = false; } G4VContinuousDiscreteProcess::~G4VContinuousDiscreteProcess() diff --git a/source/processes/management/src/G4VContinuousProcess.cc b/source/processes/management/src/G4VContinuousProcess.cc index c2bc36f8ac..b351281225 100644 --- a/source/processes/management/src/G4VContinuousProcess.cc +++ b/source/processes/management/src/G4VContinuousProcess.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VContinuousProcess.cc,v 1.4 2006/06/29 21:08:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VContinuousProcess.cc,v 1.5 2007/10/02 08:23:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -47,6 +47,8 @@ G4VContinuousProcess::G4VContinuousProcess() G4VContinuousProcess::G4VContinuousProcess(const G4String& aName , G4ProcessType aType) : G4VProcess(aName, aType) { + enableAtRestDoIt = false; + enablePostStepDoIt = false; } G4VContinuousProcess::~G4VContinuousProcess() diff --git a/source/processes/management/src/G4VDiscreteProcess.cc b/source/processes/management/src/G4VDiscreteProcess.cc index 3a6b38ec65..a25ff0a52c 100644 --- a/source/processes/management/src/G4VDiscreteProcess.cc +++ b/source/processes/management/src/G4VDiscreteProcess.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VDiscreteProcess.cc,v 1.5 2006/06/29 21:08:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VDiscreteProcess.cc,v 1.6 2007/10/02 08:23:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -48,6 +48,9 @@ G4VDiscreteProcess::G4VDiscreteProcess() G4VDiscreteProcess::G4VDiscreteProcess(const G4String& aName , G4ProcessType aType) : G4VProcess(aName, aType) { + enableAtRestDoIt = false; + enableAlongStepDoIt = false; + } G4VDiscreteProcess::~G4VDiscreteProcess() diff --git a/source/processes/management/src/G4VProcess.cc b/source/processes/management/src/G4VProcess.cc index 67a0d800ab..0043859983 100644 --- a/source/processes/management/src/G4VProcess.cc +++ b/source/processes/management/src/G4VProcess.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VProcess.cc,v 1.14 2006/06/29 21:08:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VProcess.cc,v 1.15 2007/10/02 08:23:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -52,6 +52,9 @@ G4VProcess::G4VProcess(const G4String& aName, G4ProcessType aType ) theProcessName(aName), theProcessType(aType), thePILfactor(1.0), + enableAtRestDoIt(true), + enableAlongStepDoIt(true), + enablePostStepDoIt(true), verboseLevel(0) { pParticleChange = &aParticleChange; @@ -68,7 +71,10 @@ G4VProcess::G4VProcess(const G4VProcess& right) theProcessName(right.theProcessName), theProcessType(right.theProcessType), thePILfactor(1.0), - verboseLevel(right.verboseLevel) + enableAtRestDoIt(true), + enableAlongStepDoIt(true), + enablePostStepDoIt(true), + verboseLevel(right.verboseLevel) { } diff --git a/source/processes/management/src/G4VRestContinuousDiscreteProcess.cc b/source/processes/management/src/G4VRestContinuousDiscreteProcess.cc index e5a649ac32..01eadc9be7 100644 --- a/source/processes/management/src/G4VRestContinuousDiscreteProcess.cc +++ b/source/processes/management/src/G4VRestContinuousDiscreteProcess.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VRestContinuousDiscreteProcess.cc,v 1.5 2006/06/29 21:08:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VRestContinuousDiscreteProcess.cc,v 1.6 2007/10/02 08:23:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VRestContinuousProcess.cc b/source/processes/management/src/G4VRestContinuousProcess.cc index 835b121579..39e728b2e5 100644 --- a/source/processes/management/src/G4VRestContinuousProcess.cc +++ b/source/processes/management/src/G4VRestContinuousProcess.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VRestContinuousProcess.cc,v 1.5 2006/06/29 21:08:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VRestContinuousProcess.cc,v 1.6 2007/10/02 08:23:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -48,6 +48,7 @@ G4VRestContinuousProcess::G4VRestContinuousProcess() G4VRestContinuousProcess::G4VRestContinuousProcess(const G4String& aName , G4ProcessType aType) : G4VProcess(aName, aType) { + enablePostStepDoIt = false; } G4VRestContinuousProcess::~G4VRestContinuousProcess() diff --git a/source/processes/management/src/G4VRestDiscreteProcess.cc b/source/processes/management/src/G4VRestDiscreteProcess.cc index ab509833af..30e4c77209 100644 --- a/source/processes/management/src/G4VRestDiscreteProcess.cc +++ b/source/processes/management/src/G4VRestDiscreteProcess.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VRestDiscreteProcess.cc,v 1.5 2006/06/29 21:08:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VRestDiscreteProcess.cc,v 1.6 2007/10/02 08:23:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -48,6 +48,7 @@ G4VRestDiscreteProcess::G4VRestDiscreteProcess() G4VRestDiscreteProcess::G4VRestDiscreteProcess(const G4String& aName , G4ProcessType aType) : G4VProcess(aName, aType) { + enableAlongStepDoIt = false; } G4VRestDiscreteProcess::~G4VRestDiscreteProcess() diff --git a/source/processes/management/src/G4VRestProcess.cc b/source/processes/management/src/G4VRestProcess.cc index 92484fc632..7b9c3ec84d 100644 --- a/source/processes/management/src/G4VRestProcess.cc +++ b/source/processes/management/src/G4VRestProcess.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VRestProcess.cc,v 1.5 2006/06/29 21:08:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VRestProcess.cc,v 1.6 2007/10/02 08:23:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- @@ -48,6 +48,8 @@ G4VRestProcess::G4VRestProcess() G4VRestProcess::G4VRestProcess(const G4String& aName , G4ProcessType aType) : G4VProcess(aName, aType) { + enableAlongStepDoIt = false; + enablePostStepDoIt = false; } G4VRestProcess::~G4VRestProcess() diff --git a/source/processes/management/src/G4WrapperProcess.cc b/source/processes/management/src/G4WrapperProcess.cc new file mode 100644 index 0000000000..82730624ce --- /dev/null +++ b/source/processes/management/src/G4WrapperProcess.cc @@ -0,0 +1,172 @@ +// +// ******************************************************************** +// * 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: G4WrapperProcess.cc,v 1.1 2007/12/12 10:09:49 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// ------------------------------------------------------------ +// GEANT 4 class implementation file +// +// ------------------------------------------------------------ +// New Physics scheme 18 Dec. 1996 H.Kurahige +// ------------------------------------------------------------ + +#include "G4WrapperProcess.hh" + +G4WrapperProcess::G4WrapperProcess(const G4String& aName, + G4ProcessType aType) + : G4VProcess(aName,aType), pRegProcess((G4VProcess*)(0)) +{ +} + +G4WrapperProcess::G4WrapperProcess(const G4WrapperProcess& right) + : G4VProcess(*((G4VProcess*)(&right))), pRegProcess(right.pRegProcess) +{ +} + +G4WrapperProcess::~G4WrapperProcess() +{ + if (pRegProcess!=0) delete pRegProcess; +} + +void G4WrapperProcess::ResetNumberOfInteractionLengthLeft() +{ + pRegProcess->ResetNumberOfInteractionLengthLeft(); +} + +G4double G4WrapperProcess:: +AlongStepGetPhysicalInteractionLength( const G4Track& track, + G4double previousStepSize, + G4double currentMinimumStep, + G4double& proposedSafety, + G4GPILSelection* selection ) +{ + return pRegProcess-> + AlongStepGetPhysicalInteractionLength( track, + previousStepSize, + currentMinimumStep, + proposedSafety, + selection ); +} + +G4double G4WrapperProcess:: +AtRestGetPhysicalInteractionLength( const G4Track& track, + G4ForceCondition* condition ) +{ + return pRegProcess->AtRestGetPhysicalInteractionLength( track, condition ); +} + +G4double G4WrapperProcess:: +PostStepGetPhysicalInteractionLength( const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition ) +{ + return pRegProcess->PostStepGetPhysicalInteractionLength( track, + previousStepSize, + condition ); +} + +void G4WrapperProcess::SetProcessManager(const G4ProcessManager* procMan) +{ + pRegProcess->SetProcessManager(procMan); +} + +const G4ProcessManager* G4WrapperProcess::GetProcessManager() +{ + return pRegProcess->GetProcessManager(); +} + +G4VParticleChange* G4WrapperProcess::PostStepDoIt( const G4Track& track, + const G4Step& stepData ) +{ + return pRegProcess->PostStepDoIt( track, stepData ); +} + +G4VParticleChange* G4WrapperProcess::AlongStepDoIt( const G4Track& track, + const G4Step& stepData ) +{ + return pRegProcess->AlongStepDoIt( track, stepData ); +} + +G4VParticleChange* G4WrapperProcess::AtRestDoIt( const G4Track& track, + const G4Step& stepData ) +{ + return pRegProcess->AtRestDoIt( track, stepData ); +} + +G4bool G4WrapperProcess::IsApplicable(const G4ParticleDefinition& particle) +{ + return pRegProcess->IsApplicable(particle); +} + +void G4WrapperProcess::BuildPhysicsTable(const G4ParticleDefinition& particle) +{ + return pRegProcess->BuildPhysicsTable(particle); +} + +void G4WrapperProcess::PreparePhysicsTable(const G4ParticleDefinition& particle) +{ + return pRegProcess->PreparePhysicsTable(particle); +} + +G4bool G4WrapperProcess:: +StorePhysicsTable(const G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + return pRegProcess->StorePhysicsTable(particle, directory, ascii); +} + +G4bool G4WrapperProcess:: +RetrievePhysicsTable( const G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + return pRegProcess->RetrievePhysicsTable(particle, directory, ascii); +} + +void G4WrapperProcess::StartTracking(G4Track* track) +{ + pRegProcess->StartTracking(track); +} + +void G4WrapperProcess::EndTracking() +{ + pRegProcess->EndTracking(); +} + +void G4WrapperProcess::RegisterProcess(G4VProcess* process) +{ + pRegProcess=process; + theProcessName += process->GetProcessName(); + theProcessType = process->GetProcessType(); +} + +const G4VProcess* G4WrapperProcess::GetRegisteredProcess() const +{ + return pRegProcess; +} diff --git a/source/processes/optical/History b/source/processes/optical/History index c09937af04..e5a04a0bfd 100644 --- a/source/processes/optical/History +++ b/source/processes/optical/History @@ -16,10 +16,22 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +29th Oct 2007 Peter Gumplinger (op-V09-00-01) + In G4OpWLS.cc allow for the MeanNumberOfPhotons to be + different from one, in case the constant property: + WLSMEANNUMBERPHOTONS is provided and, if it is, sample + NumPhotons with G4Poisson. + +15th Oct 2007 Peter Gumplinger (op-V09-00-00) + Add capability of calculating the reflectivity off a metal + surface by way of a complex index of refraction. + Thanks to Sehwook Lee and John Hauptman + (Dept. of Physics - Iowa State Univ.) + 11th May 2007 Gabriele Cosmo (op-V08-03-00) -- Use call to G4GeometryTolerance instead of kCarTolerance in - G4OpBoundaryProcess. -- Requires tag "global-V08-03-00" and related tag set. + Use call to G4GeometryTolerance instead of kCarTolerance in + G4OpBoundaryProcess. + Requires tag "global-V08-03-00" and related tag set. 11th May 2006 Peter Gumplinger (op-V08-00-01) thanks to Andreia Trindade and Pedro Rodrigues, the WLS time diff --git a/source/processes/optical/include/G4OpAbsorption.hh b/source/processes/optical/include/G4OpAbsorption.hh index 7d39c17f58..820202fc39 100644 --- a/source/processes/optical/include/G4OpAbsorption.hh +++ b/source/processes/optical/include/G4OpAbsorption.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpAbsorption.hh,v 1.9 2006/06/29 21:08:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //////////////////////////////////////////////////////////////////////// // Optical Photon Absorption Class Definition diff --git a/source/processes/optical/include/G4OpBoundaryProcess.hh b/source/processes/optical/include/G4OpBoundaryProcess.hh index b46818ee8a..0ef766607c 100644 --- a/source/processes/optical/include/G4OpBoundaryProcess.hh +++ b/source/processes/optical/include/G4OpBoundaryProcess.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4OpBoundaryProcess.hh,v 1.15 2007/05/11 14:15:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpBoundaryProcess.hh,v 1.16 2007/10/15 21:16:24 gum Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// @@ -44,6 +44,10 @@ // filled since DoIt calls // aParticleChange.SetMomentumChange etc. // upon return (thanks to: Clark McGrew) +// 2006-11-04 - add capability of calculating the reflectivity +// off a metal surface by way of a complex index +// of refraction - Thanks to Sehwook Lee and John +// Hauptman (Dept. of Physics - Iowa State Univ.) // // Author: Peter Gumplinger // adopted from work by Werner Keil - April 2/96 @@ -75,8 +79,8 @@ // Class Description: // Discrete Process -- reflection/refraction at optical interfaces. -// Class inherits publicly from G4VDiscreteProcess. -// Class Description - End: +// Class inherits publicly from G4VDiscreteProcess. +// Class Description - End: ///////////////////// // Class Definition @@ -90,7 +94,7 @@ enum G4OpBoundaryProcessStatus { Undefined, Absorption, Detection, NotAtBoundary, SameMaterial, StepTooSmall, NoRINDEX }; -class G4OpBoundaryProcess : public G4VDiscreteProcess +class G4OpBoundaryProcess : public G4VDiscreteProcess { private: @@ -129,7 +133,7 @@ public: // With description // Returns infinity; i. e. the process does not limit the step, // but sets the 'Forced' condition for the DoIt to be invoked at // every step. However, only at a boundary will any action be - // taken. + // taken. G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); @@ -141,9 +145,19 @@ public: // With description G4OpBoundaryProcessStatus GetStatus() const; // Returns the current status. + G4double GetIncidentAngle(); + // Returns the incident angle of optical photon + + G4double GetReflectivity(G4double E1_perp, + G4double E1_parl, + G4double incidentangle, + G4double RealRindex, + G4double ImaginaryRindex); + // Returns the Reflectivity on a metalic surface + void SetModel(G4OpticalSurfaceModel model); - // Set the optical surface model to be followed - // (glisur || unified). + // Set the optical surface model to be followed + // (glisur || unified). private: @@ -159,7 +173,7 @@ private: G4ThreeVector G4LambertianRand(const G4ThreeVector& normal); - G4ThreeVector G4PlaneVectorRand(const G4ThreeVector& normal) const; + G4ThreeVector G4PlaneVectorRand(const G4ThreeVector& normal) const; G4ThreeVector GetFacetNormal(const G4ThreeVector& Momentum, const G4ThreeVector& Normal) const; @@ -203,6 +217,9 @@ private: G4double theReflectivity; G4double theEfficiency; G4double prob_sl, prob_ss, prob_bs; + + G4int iTE, iTM; + G4double kCarTolerance; }; @@ -213,7 +230,7 @@ private: inline void G4OpBoundaryProcess::G4Swap(G4double* a, G4double* b) const { - // swaps the contents of the objects pointed + // swaps the contents of the objects pointed // to by 'a' and 'b'! G4double temp; diff --git a/source/processes/optical/include/G4OpRayleigh.hh b/source/processes/optical/include/G4OpRayleigh.hh index 2abeb0b95d..6afa5be1e7 100644 --- a/source/processes/optical/include/G4OpRayleigh.hh +++ b/source/processes/optical/include/G4OpRayleigh.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpRayleigh.hh,v 1.9 2006/06/29 21:08:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/processes/optical/include/G4OpWLS.hh b/source/processes/optical/include/G4OpWLS.hh index 3259d24db8..3de62eb2b3 100644 --- a/source/processes/optical/include/G4OpWLS.hh +++ b/source/processes/optical/include/G4OpWLS.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpWLS.hh,v 1.4 2006/06/29 21:08:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //////////////////////////////////////////////////////////////////////// // Optical Photon WaveLength Shifting (WLS) Class Definition diff --git a/source/processes/optical/src/G4OpAbsorption.cc b/source/processes/optical/src/G4OpAbsorption.cc index ad06960e53..49d2dd6111 100644 --- a/source/processes/optical/src/G4OpAbsorption.cc +++ b/source/processes/optical/src/G4OpAbsorption.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpAbsorption.cc,v 1.7 2006/06/29 21:08:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //////////////////////////////////////////////////////////////////////// // Optical Photon Absorption Class Implementation diff --git a/source/processes/optical/src/G4OpBoundaryProcess.cc b/source/processes/optical/src/G4OpBoundaryProcess.cc index 95709cd15e..a02ce01950 100644 --- a/source/processes/optical/src/G4OpBoundaryProcess.cc +++ b/source/processes/optical/src/G4OpBoundaryProcess.cc @@ -54,6 +54,10 @@ // G4OpticalSurface class ( by Fan Lei) // 2004-02-02 - Set theStatus = Undefined at start of DoIt // 2005-07-28 - add G4ProcessType to constructor +// 2006-11-04 - add capability of calculating the reflectivity +// off a metal surface by way of a complex index +// of refraction - Thanks to Sehwook Lee and John +// Hauptman (Dept. of Physics - Iowa State Univ.) // // Author: Peter Gumplinger // adopted from work by Werner Keil - April 2/96 @@ -94,12 +98,14 @@ G4OpBoundaryProcess::G4OpBoundaryProcess(const G4String& processName, theFinish = polished; theReflectivity = 1.; theEfficiency = 0.; - + prob_sl = 0.; prob_ss = 0.; prob_bs = 0.; + kCarTolerance = G4GeometryTolerance::GetInstance() ->GetSurfaceTolerance(); + } // G4OpBoundaryProcess::G4OpBoundaryProcess(const G4OpBoundaryProcess &right) @@ -133,7 +139,6 @@ G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) theStatus = NotAtBoundary; return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); } - if (aTrack.GetStepLength()<=kCarTolerance/2){ theStatus = StepTooSmall; return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); @@ -148,6 +153,42 @@ G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) OldMomentum = aParticle->GetMomentumDirection(); OldPolarization = aParticle->GetPolarization(); + G4ThreeVector theGlobalPoint = pPostStepPoint->GetPosition(); + + G4Navigator* theNavigator = + G4TransportationManager::GetTransportationManager()-> + GetNavigatorForTracking(); + + G4ThreeVector theLocalPoint = theNavigator-> + GetGlobalToLocalTransform(). + TransformPoint(theGlobalPoint); + + G4ThreeVector theLocalNormal; // Normal points back into volume + + G4bool valid; + theLocalNormal = theNavigator->GetLocalExitNormal(&valid); + + if (valid) { + theLocalNormal = -theLocalNormal; + } + else { + G4cerr << " G4OpBoundaryProcess/PostStepDoIt(): " + << " The Navigator reports that it returned an invalid normal" + << G4endl; + } + + theGlobalNormal = theNavigator->GetLocalToGlobalTransform(). + TransformAxis(theLocalNormal); + + if (OldMomentum * theGlobalNormal > 0.0) { +#ifdef G4DEBUG_OPTICAL + G4cerr << " G4OpBoundaryProcess/PostStepDoIt(): " + << " theGlobalNormal points the wrong direction " + << G4endl; +#endif + theGlobalNormal = -theGlobalNormal; + } + G4MaterialPropertiesTable* aMaterialPropertiesTable; G4MaterialPropertyVector* Rindex; @@ -184,7 +225,7 @@ G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) if (Surface == NULL){ G4bool enteredDaughter=(pPostStepPoint->GetPhysicalVolume() - ->GetMotherLogical() == + ->GetMotherLogical() == pPreStepPoint->GetPhysicalVolume() ->GetLogicalVolume()); if(enteredDaughter){ @@ -196,7 +237,7 @@ G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) (pPreStepPoint->GetPhysicalVolume()-> GetLogicalVolume()); } - else{ + else { Surface = G4LogicalSkinSurface::GetSurface (pPreStepPoint->GetPhysicalVolume()-> GetLogicalVolume()); @@ -235,27 +276,93 @@ G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) } G4MaterialPropertyVector* PropertyPointer; + G4MaterialPropertyVector* PropertyPointer1; + G4MaterialPropertyVector* PropertyPointer2; + + PropertyPointer = + aMaterialPropertiesTable->GetProperty("REFLECTIVITY"); + PropertyPointer1 = + aMaterialPropertiesTable->GetProperty("REALRINDEX"); + PropertyPointer2 = + aMaterialPropertiesTable->GetProperty("IMAGINARYRINDEX"); + + iTE = 1; + iTM = 1; + + if (PropertyPointer) { + + theReflectivity = + PropertyPointer->GetProperty(thePhotonMomentum); + + } else if (PropertyPointer1 && PropertyPointer2) { + + G4double RealRindex = + PropertyPointer1->GetProperty(thePhotonMomentum); + G4double ImaginaryRindex = + PropertyPointer2->GetProperty(thePhotonMomentum); + + // calculate FacetNormal + if ( theFinish == ground ) { + theFacetNormal = + GetFacetNormal(OldMomentum, theGlobalNormal); + } else { + theFacetNormal = theGlobalNormal; + } + + G4double PdotN = OldMomentum * theFacetNormal; + cost1 = -PdotN; + + if (std::abs(cost1) < 1.0 - kCarTolerance) { + sint1 = std::sqrt(1. - cost1*cost1); + } else { + sint1 = 0.0; + } + + G4ThreeVector A_trans, A_paral, E1pp, E1pl; + G4double E1_perp, E1_parl; + + if (sint1 > 0.0 ) { + A_trans = OldMomentum.cross(theFacetNormal); + A_trans = A_trans.unit(); + E1_perp = OldPolarization * A_trans; + E1pp = E1_perp * A_trans; + E1pl = OldPolarization - E1pp; + E1_parl = E1pl.mag(); + } + else { + A_trans = OldPolarization; + // Here we Follow Jackson's conventions and we set the + // parallel component = 1 in case of a ray perpendicular + // to the surface + E1_perp = 0.0; + E1_parl = 1.0; + } + + //calculate incident angle + G4double incidentangle = GetIncidentAngle(); + + //calculate the reflectivity depending on incident angle, + //polarization and complex refractive + + theReflectivity = + GetReflectivity(E1_perp, E1_parl, incidentangle, + RealRindex, ImaginaryRindex); - PropertyPointer = - aMaterialPropertiesTable->GetProperty("REFLECTIVITY"); - if (PropertyPointer) { - theReflectivity = - PropertyPointer->GetProperty(thePhotonMomentum); } else { - theReflectivity = 1.0; + theReflectivity = 1.0; } - PropertyPointer = - aMaterialPropertiesTable->GetProperty("EFFICIENCY"); - if (PropertyPointer) { + PropertyPointer = + aMaterialPropertiesTable->GetProperty("EFFICIENCY"); + if (PropertyPointer) { theEfficiency = - PropertyPointer->GetProperty(thePhotonMomentum); + PropertyPointer->GetProperty(thePhotonMomentum); } else { theEfficiency = 0.0; } if ( theModel == unified ) { - PropertyPointer = + PropertyPointer = aMaterialPropertiesTable->GetProperty("SPECULARLOBECONSTANT"); if (PropertyPointer) { prob_sl = @@ -264,7 +371,7 @@ G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) prob_sl = 0.0; } - PropertyPointer = + PropertyPointer = aMaterialPropertiesTable->GetProperty("SPECULARSPIKECONSTANT"); if (PropertyPointer) { prob_ss = @@ -273,7 +380,7 @@ G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) prob_ss = 0.0; } - PropertyPointer = + PropertyPointer = aMaterialPropertiesTable->GetProperty("BACKSCATTERCONSTANT"); if (PropertyPointer) { prob_bs = @@ -297,7 +404,7 @@ G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) theStatus = SameMaterial; return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); } - aMaterialPropertiesTable = + aMaterialPropertiesTable = Material2->GetMaterialPropertiesTable(); if (aMaterialPropertiesTable) Rindex = aMaterialPropertiesTable->GetProperty("RINDEX"); @@ -318,40 +425,6 @@ G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) G4cout << " Old Polarization: " << OldPolarization << G4endl; } - G4ThreeVector theGlobalPoint = pPostStepPoint->GetPosition(); - - G4Navigator* theNavigator = - G4TransportationManager::GetTransportationManager()-> - GetNavigatorForTracking(); - - G4ThreeVector theLocalPoint = theNavigator-> - GetGlobalToLocalTransform(). - TransformPoint(theGlobalPoint); - - G4ThreeVector theLocalNormal; // Normal points back into volume - - G4bool valid; - theLocalNormal = theNavigator->GetLocalExitNormal(&valid); - - if (valid) { - theLocalNormal = -theLocalNormal; - } - else { - G4cerr << " G4OpBoundaryProcess/PostStepDoIt(): " - << " The Navigator reports that it returned an invalid normal" - << G4endl; - } - - theGlobalNormal = theNavigator->GetLocalToGlobalTransform(). - TransformAxis(theLocalNormal); - if (OldMomentum * theGlobalNormal > 0.0) { -#ifdef G4DEBUG_OPTICAL - G4cerr << " G4OpBoundaryProcess/PostStepDoIt(): " - << " theGlobalNormal points the wrong direction " - << G4endl; -#endif - theGlobalNormal = -theGlobalNormal; - } if (type == dielectric_metal) { DielectricMetal(); @@ -361,6 +434,7 @@ G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) if ( theFinish == polishedfrontpainted || theFinish == groundfrontpainted ) { + if( !G4BooleanRand(theReflectivity) ) { DoAbsorption(); } @@ -397,7 +471,7 @@ G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) G4cout << " *** TotalInternalReflection *** " << G4endl; if ( theStatus == LambertianReflection ) G4cout << " *** LambertianReflection *** " << G4endl; - if ( theStatus == LobeReflection ) + if ( theStatus == LobeReflection ) G4cout << " *** LobeReflection *** " << G4endl; if ( theStatus == SpikeReflection ) G4cout << " *** SpikeReflection *** " << G4endl; @@ -423,7 +497,7 @@ G4OpBoundaryProcess::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); } -G4ThreeVector +G4ThreeVector G4OpBoundaryProcess::GetFacetNormal(const G4ThreeVector& Momentum, const G4ThreeVector& Normal ) const { @@ -432,9 +506,9 @@ G4OpBoundaryProcess::GetFacetNormal(const G4ThreeVector& Momentum, if (theModel == unified) { /* This function code alpha to a random value taken from the - distribution p(alpha) = g(alpha; 0, sigma_alpha)*std::sin(alpha), - for alpha > 0 and alpha < 90, where g(alpha; 0, sigma_alpha) - is a gaussian distribution with mean 0 and standard deviation + distribution p(alpha) = g(alpha; 0, sigma_alpha)*std::sin(alpha), + for alpha > 0 and alpha < 90, where g(alpha; 0, sigma_alpha) + is a gaussian distribution with mean 0 and standard deviation sigma_alpha. */ G4double alpha; @@ -527,13 +601,33 @@ void G4OpBoundaryProcess::DielectricMetal() } else { - if(theStatus==LobeReflection)theFacetNormal = + if(theStatus==LobeReflection)theFacetNormal = GetFacetNormal(OldMomentum,theGlobalNormal); G4double PdotN = OldMomentum * theFacetNormal; NewMomentum = OldMomentum - (2.*PdotN)*theFacetNormal; G4double EdotN = OldPolarization * theFacetNormal; - NewPolarization = -OldPolarization + (2.*EdotN)*theFacetNormal; + + G4ThreeVector A_trans, A_paral; + + if (sint1 > 0.0 ) { + A_trans = OldMomentum.cross(theFacetNormal); + A_trans = A_trans.unit(); + } else { + A_trans = OldPolarization; + } + A_paral = NewMomentum.cross(A_trans); + A_paral = A_paral.unit(); + + if(iTE>0&&iTM>0) { + NewPolarization = + -OldPolarization + (2.*EdotN)*theFacetNormal; + } else if (iTE>0) { + NewPolarization = -A_trans; + } else if (iTM>0) { + NewPolarization = -A_paral; + } + } } @@ -759,6 +853,7 @@ void G4OpBoundaryProcess::DielectricDielectric() if (Inside && !Swap) { if( theFinish == polishedbackpainted || theFinish == groundbackpainted ) { + if( !G4BooleanRand(theReflectivity) ) { DoAbsorption(); } @@ -797,3 +892,63 @@ G4double G4OpBoundaryProcess::GetMeanFreePath(const G4Track& , return DBL_MAX; } +G4double G4OpBoundaryProcess::GetIncidentAngle() +{ + G4double PdotN = OldMomentum * theFacetNormal; + G4double magP= OldMomentum.mag(); + G4double magN= theFacetNormal.mag(); + G4double incidentangle = pi - std::acos(PdotN/(magP*magN)); + + return incidentangle; +} + +G4double G4OpBoundaryProcess::GetReflectivity(G4double E1_perp, + G4double E1_parl, + G4double incidentangle, + G4double RealRindex, + G4double ImaginaryRindex) +{ + + G4complex Reflectivity, Reflectivity_TE, Reflectivity_TM; + G4complex N(RealRindex, ImaginaryRindex); + G4complex CosPhi; + + G4complex u(1,0); //unit number 1 + + G4complex numeratorTE; // E1_perp=1 E1_parl=0 -> TE polarization + G4complex numeratorTM; // E1_parl=1 E1_perp=0 -> TM polarization + G4complex denominatorTE, denominatorTM; + G4complex rTM, rTE; + + // Following two equations, rTM and rTE, are from: "Introduction To Modern + // Optics" written by Fowles + + CosPhi=std::sqrt(u-((std::sin(incidentangle)*std::sin(incidentangle))/(N*N))); + + numeratorTE = std::cos(incidentangle) - N*CosPhi; + denominatorTE = std::cos(incidentangle) + N*CosPhi; + rTE = numeratorTE/denominatorTE; + + numeratorTM = N*std::cos(incidentangle) - CosPhi; + denominatorTM = N*std::cos(incidentangle) + CosPhi; + rTM = numeratorTM/denominatorTM; + + // This is my calculaton for reflectivity on a metalic surface + // depending on the fraction of TE and TM polarization + // when TE polarization, E1_parl=0 and E1_perp=1, R=abs(rTE)^2 and + // when TM polarization, E1_parl=1 and E1_perp=0, R=abs(rTM)^2 + + Reflectivity_TE = (rTE*conj(rTE))*(E1_perp*E1_perp) + / (E1_perp*E1_perp + E1_parl*E1_parl); + Reflectivity_TM = (rTM*conj(rTM))*(E1_parl*E1_parl) + / (E1_perp*E1_perp + E1_parl*E1_parl); + Reflectivity = Reflectivity_TE + Reflectivity_TM; + + do { + if(G4UniformRand()*real(Reflectivity) > real(Reflectivity_TE))iTE = -1; + if(G4UniformRand()*real(Reflectivity) > real(Reflectivity_TM))iTM = -1; + } while(iTE<0&&iTM<0); + + return real(Reflectivity); + +} diff --git a/source/processes/optical/src/G4OpRayleigh.cc b/source/processes/optical/src/G4OpRayleigh.cc index af1ce0b3e7..427700d892 100644 --- a/source/processes/optical/src/G4OpRayleigh.cc +++ b/source/processes/optical/src/G4OpRayleigh.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpRayleigh.cc,v 1.14 2006/06/29 21:08:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/processes/optical/src/G4OpWLS.cc b/source/processes/optical/src/G4OpWLS.cc index 1c266b7500..22e405dcb1 100644 --- a/source/processes/optical/src/G4OpWLS.cc +++ b/source/processes/optical/src/G4OpWLS.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4OpWLS.cc,v 1.8 2006/06/29 21:08:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpWLS.cc,v 1.9 2007/10/30 03:53:36 gum Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //////////////////////////////////////////////////////////////////////// // Optical Photon WaveLength Shifting (WLS) Class Implementation @@ -120,6 +120,25 @@ G4OpWLS::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) G4int NumPhotons = 1; + if (aMaterialPropertiesTable->ConstPropertyExists("WLSMEANNUMBERPHOTONS")) { + + G4double MeanNumberOfPhotons = aMaterialPropertiesTable-> + GetConstProperty("WLSMEANNUMBERPHOTONS"); + + NumPhotons = G4int(G4Poisson(MeanNumberOfPhotons)); + + if (NumPhotons <= 0) { + + // return unchanged particle and no secondaries + + aParticleChange.SetNumberOfSecondaries(0); + + return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); + + } + + } + aParticleChange.SetNumberOfSecondaries(NumPhotons); G4int materialIndex = aMaterial->GetIndex(); diff --git a/source/processes/parameterisation/History b/source/processes/parameterisation/History index 5f51fd3741..e186fb6a92 100644 --- a/source/processes/parameterisation/History +++ b/source/processes/parameterisation/History @@ -1,4 +1,4 @@ -$Id: History,v 1.35 2007/05/18 15:25:29 mverderi Exp $ +$Id: History,v 1.37 2007/11/30 18:05:14 mverderi Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,16 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +November 30 2007, M. Verderi +- Add Along methods to G4FSMP process + - tag as param-V09-00-01 + +November 30 2007, M. Verderi +- minor corrections to G4FastSimulationManagerProcess.hh/.cc : + * add call fPathFinder->prepareNewrack(...) + * deactivate ghost navigator in EndOfTracking(..) method + - tag as param-V09-00-00 + May 18, 2007, M. Verderi - tag as param-V08-03-00 diff --git a/source/processes/parameterisation/include/G4FastSimulationManager.hh b/source/processes/parameterisation/include/G4FastSimulationManager.hh index e446f4d4a6..3e140cbb74 100644 --- a/source/processes/parameterisation/include/G4FastSimulationManager.hh +++ b/source/processes/parameterisation/include/G4FastSimulationManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4FastSimulationManager.hh,v 1.13 2007/05/11 13:50:20 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/include/G4FastSimulationManagerProcess.hh b/source/processes/parameterisation/include/G4FastSimulationManagerProcess.hh index 454212228f..244af87854 100644 --- a/source/processes/parameterisation/include/G4FastSimulationManagerProcess.hh +++ b/source/processes/parameterisation/include/G4FastSimulationManagerProcess.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4FastSimulationManagerProcess.hh,v 1.14 2007/05/11 13:50:20 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4FastSimulationManagerProcess.hh,v 1.16 2007/11/30 18:05:14 mverderi Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- @@ -60,7 +60,9 @@ #include "G4Navigator.hh" #include "G4VPhysicalVolume.hh" #include "G4VParticleChange.hh" - +#include "G4FieldTrack.hh" +class G4PathFinder; +class G4TransportationManager; // --------------------------------------------------------------------- // @@ -114,17 +116,24 @@ public: void StartTracking(G4Track*); void EndTracking(); + // -- PostStep methods: G4double PostStepGetPhysicalInteractionLength(const G4Track& track, G4double previousStepSize, G4ForceCondition* condition); G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step& ); + + // -- Responsible for limiting the step on ghost boundaries: + G4double AlongStepGetPhysicalInteractionLength(const G4Track& track, + G4double previousStepSize, + G4double currentMinimumStep, + G4double& proposedSafety, + G4GPILSelection* selection); + G4VParticleChange* AlongStepDoIt(const G4Track& track, + const G4Step& step); - - - - + // -- AtRest methods (still there after many years of no use...): G4double AtRestGetPhysicalInteractionLength(const G4Track&, @@ -133,9 +142,7 @@ public: G4VParticleChange* AtRestDoIt(const G4Track&, const G4Step&); - // -- unused: - G4double AlongStepGetPhysicalInteractionLength(const G4Track&, G4double, G4double, G4double&, G4GPILSelection*) {return 0.0;} - G4VParticleChange* AlongStepDoIt(const G4Track& , const G4Step&) {return 0;} + // -- debug: @@ -148,12 +155,19 @@ private: G4bool fIsTrackingTime; G4bool fIsFirstStep; - G4Navigator* fNavigator; - G4int fNavigatorIndex; + G4Navigator* fGhostNavigator; + G4int fGhostNavigatorIndex; + G4bool fIsGhostGeometry; + G4double fGhostSafety; + G4bool fOnBoundary; + G4FieldTrack fFieldTrack; G4FastSimulationManager* fFastSimulationManager; G4bool fFastSimulationTrigger; + G4VParticleChange fDummyParticleChange; + G4PathFinder* fPathFinder; + G4TransportationManager* fTransportationManager; }; #endif diff --git a/source/processes/parameterisation/include/G4FastSimulationMessenger.hh b/source/processes/parameterisation/include/G4FastSimulationMessenger.hh index 2d6d97744d..5caaeaef73 100644 --- a/source/processes/parameterisation/include/G4FastSimulationMessenger.hh +++ b/source/processes/parameterisation/include/G4FastSimulationMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4FastSimulationMessenger.hh,v 1.7 2007/05/11 13:50:20 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT 4 class header file diff --git a/source/processes/parameterisation/include/G4FastStep.hh b/source/processes/parameterisation/include/G4FastStep.hh index 5f53713d5d..e673333e7c 100644 --- a/source/processes/parameterisation/include/G4FastStep.hh +++ b/source/processes/parameterisation/include/G4FastStep.hh @@ -25,7 +25,7 @@ // // // $Id: G4FastStep.hh,v 1.8 2006/06/29 21:09:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/include/G4FastStep.icc b/source/processes/parameterisation/include/G4FastStep.icc index 15b723832f..b3bb7fab0f 100644 --- a/source/processes/parameterisation/include/G4FastStep.icc +++ b/source/processes/parameterisation/include/G4FastStep.icc @@ -25,7 +25,7 @@ // // // $Id: G4FastStep.icc,v 1.5 2006/06/29 21:09:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $id: G4ParticleChange.icc,v 1.6 1998/04/14 02:25:54 kurasige Exp $ diff --git a/source/processes/parameterisation/include/G4FastTrack.hh b/source/processes/parameterisation/include/G4FastTrack.hh index 8f3a5e1c7c..88ce451339 100644 --- a/source/processes/parameterisation/include/G4FastTrack.hh +++ b/source/processes/parameterisation/include/G4FastTrack.hh @@ -25,7 +25,7 @@ // // // $Id: G4FastTrack.hh,v 1.8 2007/05/11 13:50:20 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // $Id: //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/include/G4GlobalFastSimulationManager.hh b/source/processes/parameterisation/include/G4GlobalFastSimulationManager.hh index 0f4773052a..d85741a252 100644 --- a/source/processes/parameterisation/include/G4GlobalFastSimulationManager.hh +++ b/source/processes/parameterisation/include/G4GlobalFastSimulationManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4GlobalFastSimulationManager.hh,v 1.13 2007/05/11 13:50:20 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/include/G4VFastSimulationModel.hh b/source/processes/parameterisation/include/G4VFastSimulationModel.hh index da227d33a1..6247d29aa6 100644 --- a/source/processes/parameterisation/include/G4VFastSimulationModel.hh +++ b/source/processes/parameterisation/include/G4VFastSimulationModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4VFastSimulationModel.hh,v 1.7 2006/06/29 21:09:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/src/G4FastSimulationManager.cc b/source/processes/parameterisation/src/G4FastSimulationManager.cc index 787636552d..e2764c37f3 100644 --- a/source/processes/parameterisation/src/G4FastSimulationManager.cc +++ b/source/processes/parameterisation/src/G4FastSimulationManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4FastSimulationManager.cc,v 1.13 2007/05/11 13:50:20 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/processes/parameterisation/src/G4FastSimulationManagerProcess.cc b/source/processes/parameterisation/src/G4FastSimulationManagerProcess.cc index c19ece9410..ba16d732db 100644 --- a/source/processes/parameterisation/src/G4FastSimulationManagerProcess.cc +++ b/source/processes/parameterisation/src/G4FastSimulationManagerProcess.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4FastSimulationManagerProcess.cc,v 1.15 2007/05/11 13:50:20 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4FastSimulationManagerProcess.cc,v 1.17 2007/11/30 18:05:14 mverderi Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- @@ -47,67 +47,83 @@ #include "G4TransportationManager.hh" #include "G4PathFinder.hh" #include "G4ParticleChange.hh" +#include "G4FieldTrackUpdator.hh" #define PARANOIA G4FastSimulationManagerProcess:: G4FastSimulationManagerProcess(const G4String& processName, - G4ProcessType theType) : + G4ProcessType theType) : G4VProcess(processName,theType), fWorldVolume(0), fIsTrackingTime(false), - fNavigator(0), - fNavigatorIndex(-1), + fGhostNavigator(0), + fGhostNavigatorIndex(-1), + fIsGhostGeometry(false), + fGhostSafety(-1.0), + fFieldTrack('0'), fFastSimulationManager(0), fFastSimulationTrigger(false) { - SetWorldVolume(G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking()->GetWorldVolume()->GetName()); + fPathFinder = G4PathFinder::GetInstance(); + fTransportationManager = G4TransportationManager::GetTransportationManager(); + + SetWorldVolume(fTransportationManager->GetNavigatorForTracking()->GetWorldVolume()->GetName()); if (verboseLevel>0) G4cout << "G4FastSimulationManagerProcess `" << GetProcessName() << "' is created, and will message geometry with world volume `" << fWorldVolume->GetName() << "'." << G4endl; - G4GlobalFastSimulationManager::GetGlobalFastSimulationManager()->AddFSMP(this); } G4FastSimulationManagerProcess:: G4FastSimulationManagerProcess(const G4String& processName, - const G4String& worldVolumeName, - G4ProcessType theType) : + const G4String& worldVolumeName, + G4ProcessType theType) : G4VProcess(processName,theType), fWorldVolume(0), fIsTrackingTime(false), - fNavigator(0), - fNavigatorIndex(-1), + fGhostNavigator(0), + fGhostNavigatorIndex(-1), + fIsGhostGeometry(false), + fGhostSafety(-1.0), + fFieldTrack('0'), fFastSimulationManager(0), fFastSimulationTrigger(false) { + fPathFinder = G4PathFinder::GetInstance(); + fTransportationManager = G4TransportationManager::GetTransportationManager(); + SetWorldVolume(worldVolumeName); if (verboseLevel>0) G4cout << "G4FastSimulationManagerProcess `" << GetProcessName() << "' is created, and will message geometry with world volume `" << fWorldVolume->GetName() << "'." << G4endl; - G4GlobalFastSimulationManager::GetGlobalFastSimulationManager()->AddFSMP(this); } G4FastSimulationManagerProcess:: G4FastSimulationManagerProcess(const G4String& processName, - G4VPhysicalVolume* worldVolume, - G4ProcessType theType) : + G4VPhysicalVolume* worldVolume, + G4ProcessType theType) : G4VProcess(processName,theType), fWorldVolume(0), fIsTrackingTime(false), - fNavigator(0), - fNavigatorIndex(-1), + fGhostNavigator(0), + fGhostNavigatorIndex(-1), + fIsGhostGeometry(false), + fGhostSafety(-1.0), + fFieldTrack('0'), fFastSimulationManager(0), fFastSimulationTrigger(false) { + fPathFinder = G4PathFinder::GetInstance(); + fTransportationManager = G4TransportationManager::GetTransportationManager(); + SetWorldVolume(worldVolume); if (verboseLevel>0) G4cout << "G4FastSimulationManagerProcess `" << GetProcessName() << "' is created, and will message geometry with world volume `" << fWorldVolume->GetName() << "'." << G4endl; - G4GlobalFastSimulationManager::GetGlobalFastSimulationManager()->AddFSMP(this); } @@ -130,7 +146,7 @@ SetWorldVolume(G4String newWorldName) << "': changing world volume at tracking time is not allowed for now. Call ignored !!!" << G4endl; else { - G4VPhysicalVolume* newWorld = G4TransportationManager::GetTransportationManager()->IsWorldExisting(newWorldName); + G4VPhysicalVolume* newWorld = fTransportationManager->IsWorldExisting(newWorldName); G4String tellWhatIsWrong; tellWhatIsWrong = "Volume newWorldName = `"; tellWhatIsWrong += newWorldName; tellWhatIsWrong += "' is not a parallel world nor the mass world volume."; if (newWorld == 0) G4Exception("G4FastSimulationManagerProcess::SetWorldVolume(const G4String&, G4bool verbose)", @@ -145,7 +161,6 @@ SetWorldVolume(G4String newWorldName) << "': setting world volume from to `"<< newWorld->GetName() << "'." << G4endl; fWorldVolume = newWorld; } - } @@ -154,7 +169,7 @@ G4FastSimulationManagerProcess:: SetWorldVolume(G4VPhysicalVolume* newWorld) { if (newWorld) SetWorldVolume(newWorld->GetName()); - else G4cout << "!!! G4FastSimulationManagerProcess::SetWorldVolume(const G4VPhysicalVolume* newWorld) : null pointer passed. !!! Continuing at your own risks..." << G4endl; + else G4Exception("!!! G4FastSimulationManagerProcess::SetWorldVolume(const G4VPhysicalVolume* newWorld) : null pointer passed. !!!"); } @@ -163,18 +178,19 @@ SetWorldVolume(G4VPhysicalVolume* newWorld) // -------------------- void G4FastSimulationManagerProcess:: -StartTracking(G4Track*) +StartTracking(G4Track* track) { fIsTrackingTime = true; fIsFirstStep = true; // -- fetch the navigator (and its index) and activate it: G4TransportationManager* transportationManager = G4TransportationManager::GetTransportationManager(); - fNavigator = transportationManager->GetNavigator(fWorldVolume); - if (fNavigator != transportationManager->GetNavigatorForTracking()) - fNavigatorIndex = transportationManager->ActivateNavigator(fNavigator); - else - fNavigatorIndex = 0; + fGhostNavigator = transportationManager->GetNavigator(fWorldVolume); + fIsGhostGeometry = (fGhostNavigator != transportationManager->GetNavigatorForTracking()); + if (fIsGhostGeometry) fGhostNavigatorIndex = transportationManager->ActivateNavigator(fGhostNavigator); + else fGhostNavigatorIndex = -1; + + fPathFinder->PrepareNewTrack(track->GetPosition(), track->GetMomentumDirection()); } @@ -183,6 +199,7 @@ G4FastSimulationManagerProcess:: EndTracking() { fIsTrackingTime = false; + if ( fIsGhostGeometry ) fTransportationManager->DeActivateNavigator(fGhostNavigator); } @@ -196,23 +213,24 @@ PostStepGetPhysicalInteractionLength(const G4Track& track, G4ForceCondition* condition) { #ifdef PARANOIA - if ( fNavigator->GetWorldVolume() != fWorldVolume ) G4Exception("!!! ??? INCONSISTENT NAVIGATORS/WORLD VOLUMES ??? !!!"); + if ( fGhostNavigator->GetWorldVolume() != fWorldVolume ) G4Exception("!!! ??? INCONSISTENT NAVIGATORS/WORLD VOLUMES ??? !!!"); #endif // -- Get current volume, and check for presence of fast simulation manager. - // -- For the case of the navigator for tracking (fNavigatorIndex == 0) + // -- For the case of the navigator for tracking (fGhostNavigatorIndex == 0) // -- we use the track volume. This allows the code to be valid for both // -- cases where the PathFinder is used (G4CoupledTranportation) or not // -- (G4Transportation). const G4VPhysicalVolume* currentVolume(0); - if (fNavigatorIndex == 0) currentVolume = track.GetVolume(); - else currentVolume = G4PathFinder::GetInstance()->GetLocatedVolume(fNavigatorIndex); + if ( fIsGhostGeometry ) currentVolume = fPathFinder->GetLocatedVolume(fGhostNavigatorIndex); + else currentVolume = track.GetVolume(); + if ( currentVolume ) { fFastSimulationManager = currentVolume->GetLogicalVolume()->GetFastSimulationManager(); if( fFastSimulationManager ) { // Ask for trigger: - fFastSimulationTrigger = fFastSimulationManager->PostStepGetFastSimulationManagerTrigger(track, fNavigator); + fFastSimulationTrigger = fFastSimulationManager->PostStepGetFastSimulationManagerTrigger(track, fGhostNavigator); if( fFastSimulationTrigger ) { // Take control over stepping: @@ -244,6 +262,80 @@ PostStepDoIt(const G4Track&, } +G4double +G4FastSimulationManagerProcess:: +AlongStepGetPhysicalInteractionLength(const G4Track& track, + G4double previousStepSize, + G4double currentMinimumStep, + G4double& proposedSafety, + G4GPILSelection* selection) +{ + + *selection = NotCandidateForSelection; + G4double returnedStep = DBL_MAX; + + // --------------------------------------------------- + // -- Below code valid for ghost geometry, otherwise + // -- useless for fast simulation attached to mass + // -- geometry. Warn user in case along used for + // -- mass geometry ? + // -------------------------------------------------- + if ( fIsGhostGeometry ) + { + static G4FieldTrack endTrack('0'); + static ELimited eLimited; + + if (previousStepSize > 0.) fGhostSafety -= previousStepSize; + if (fGhostSafety < 0.) fGhostSafety = 0.0; + + // ------------------------------------------ + // Determination of the proposed step length: + // ------------------------------------------ + if (currentMinimumStep <= fGhostSafety && currentMinimumStep > 0.) + { + // -- No chance to limit the step, as proposed move inside safety + returnedStep = currentMinimumStep; + proposedSafety = fGhostSafety - currentMinimumStep; + } + else + { + // -- Proposed move exceeds safety, need to state + G4FieldTrackUpdator::Update(&fFieldTrack, &track); + returnedStep = fPathFinder->ComputeStep(fFieldTrack, + currentMinimumStep, + fGhostNavigatorIndex, + track.GetCurrentStepNumber(), + fGhostSafety, + eLimited, + endTrack, + track.GetVolume()); + + if(eLimited == kDoNot) fGhostSafety = fGhostNavigator->ComputeSafety(endTrack.GetPosition()); // -- step no limited by ghost + proposedSafety = fGhostSafety; + if (eLimited == kUnique || eLimited == kSharedOther) *selection = CandidateForSelection; + else if (eLimited == kSharedTransport) returnedStep *= (1.0 + 1.0e-9); // -- Expand to disable its selection in Step Manager comparison + } + } + + + // ---------------------------------------------- + // Returns the fGhostSafety as the proposedSafety + // The SteppingManager will take care of keeping + // the smallest one. + // ---------------------------------------------- + return returnedStep; +} + +G4VParticleChange* +G4FastSimulationManagerProcess:: +AlongStepDoIt(const G4Track& track, + const G4Step&) +{ + fDummyParticleChange.Initialize(track); + return &fDummyParticleChange; +} + + //-------------------------------------------- // At Rest parameterisation: //-------------------------------------------- @@ -251,17 +343,17 @@ PostStepDoIt(const G4Track&, //-------------------------------------------- G4double G4FastSimulationManagerProcess:: -AtRestGetPhysicalInteractionLength(const G4Track& track, +AtRestGetPhysicalInteractionLength(const G4Track& track, G4ForceCondition* condition) { const G4VPhysicalVolume* currentVolume(0); - if (fNavigatorIndex == 0) currentVolume = track.GetVolume(); - else currentVolume = G4PathFinder::GetInstance()->GetLocatedVolume(fNavigatorIndex); + if ( fIsGhostGeometry ) currentVolume = fPathFinder->GetLocatedVolume(fGhostNavigatorIndex); + else currentVolume = track.GetVolume(); fFastSimulationManager = currentVolume->GetLogicalVolume()->GetFastSimulationManager(); if( fFastSimulationManager ) { // Ask for trigger: - fFastSimulationTrigger = fFastSimulationManager->AtRestGetFastSimulationManagerTrigger(track, fNavigator); + fFastSimulationTrigger = fFastSimulationManager->AtRestGetFastSimulationManagerTrigger(track, fGhostNavigator); if( fFastSimulationTrigger ) { // Dirty trick to take control over stepping. Does anyone will ever use that ? @@ -273,7 +365,6 @@ AtRestGetPhysicalInteractionLength(const G4Track& track, // -- no fast simulation occuring there: *condition = NotForced; return DBL_MAX; - } //----------------------------------------------- diff --git a/source/processes/parameterisation/src/G4FastSimulationMessenger.cc b/source/processes/parameterisation/src/G4FastSimulationMessenger.cc index 0e849e4950..ea132a7d5b 100644 --- a/source/processes/parameterisation/src/G4FastSimulationMessenger.cc +++ b/source/processes/parameterisation/src/G4FastSimulationMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4FastSimulationMessenger.cc,v 1.8 2007/05/11 13:50:20 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4FastSimulationMessenger.hh" diff --git a/source/processes/parameterisation/src/G4FastStep.cc b/source/processes/parameterisation/src/G4FastStep.cc index c0082385f9..a607631def 100644 --- a/source/processes/parameterisation/src/G4FastStep.cc +++ b/source/processes/parameterisation/src/G4FastStep.cc @@ -25,7 +25,7 @@ // // // $Id: G4FastStep.cc,v 1.16 2006/06/29 21:09:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/processes/parameterisation/src/G4FastTrack.cc b/source/processes/parameterisation/src/G4FastTrack.cc index bd9dc32868..761c6db547 100644 --- a/source/processes/parameterisation/src/G4FastTrack.cc +++ b/source/processes/parameterisation/src/G4FastTrack.cc @@ -25,7 +25,7 @@ // // // $Id: G4FastTrack.cc,v 1.10 2006/06/29 21:09:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/processes/parameterisation/src/G4GlobalFastSimulationManager.cc b/source/processes/parameterisation/src/G4GlobalFastSimulationManager.cc index 399b2ce50c..af5c3b1018 100644 --- a/source/processes/parameterisation/src/G4GlobalFastSimulationManager.cc +++ b/source/processes/parameterisation/src/G4GlobalFastSimulationManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4GlobalFastSimulationManager.cc,v 1.20 2007/05/11 13:50:20 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/src/G4VFastSimulationModel.cc b/source/processes/parameterisation/src/G4VFastSimulationModel.cc index 19feb7e342..963d978d8a 100644 --- a/source/processes/parameterisation/src/G4VFastSimulationModel.cc +++ b/source/processes/parameterisation/src/G4VFastSimulationModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4VFastSimulationModel.cc,v 1.7 2007/05/11 13:50:20 mverderi Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/processes/scoring/include/G4ParallelWorldScoringProcess.hh b/source/processes/scoring/include/G4ParallelWorldScoringProcess.hh index 7a4f114b6d..c151670c66 100644 --- a/source/processes/scoring/include/G4ParallelWorldScoringProcess.hh +++ b/source/processes/scoring/include/G4ParallelWorldScoringProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParallelWorldScoringProcess.hh,v 1.4 2007/05/30 17:47:10 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/processes/scoring/src/G4ParallelWorldScoringProcess.cc b/source/processes/scoring/src/G4ParallelWorldScoringProcess.cc index a6d826452d..20d588c144 100644 --- a/source/processes/scoring/src/G4ParallelWorldScoringProcess.cc +++ b/source/processes/scoring/src/G4ParallelWorldScoringProcess.cc @@ -25,7 +25,7 @@ // // // $Id: G4ParallelWorldScoringProcess.cc,v 1.8 2007/05/30 17:47:11 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/processes/transportation/History b/source/processes/transportation/History index a2c7f725c5..10cf64e25e 100644 --- a/source/processes/transportation/History +++ b/source/processes/transportation/History @@ -1,4 +1,4 @@ -$Id: History,v 1.119.2.2 2007/05/31 08:03:11 gcosmo Exp $ +$Id: History,v 1.142 2007/11/27 18:32:16 japost Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,7 +17,85 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- -May 31st, 2007, A.Howard transport-V08-03-12 +Nov 27th, 2007, J.Apostolakis transport-V09-00-05a +------------------------------ +G4CoupledTransportation +- Added updating of particle-looping flag (was commented out.) + +Nov 8th, 2007, J.Apostolakis transport-V09-00-05 +------------------------------ +G4Transportation: +- Create new method (and class member) for flag on Short StepOptimisation. + * When it is true, the optimisation is 'on' steps shorter than the + safety will not call G4Navigator - so long as the particle goes straight + ie it is not charged or there is no field. + * Retained the default value as 'off' - as since changed in + transport-V09-00-02 following Alex's suggestion. + +Nov 8th, 2007, J.Apostolakis transport-V09-00-04 +------------------------------ +G4Transportation (AlongStepGPIL) +- Moved the call to ConfigureForTrack before the check whether + fieldMgr has 0 field ptr, in order to enable it to be called + even if the field manager points to a zero field. + + Needed to enable a user to switch a global field on (off was possible), as a + track goes between volume (or regions) of a setup. + [ Response to request of Atlas/ZM. ] + + Note: this ordering already existed in G4CoupledTransportation. + + +Oct 12th, 2007, J.Apostolakis transport-V09-00-03 +------------------------------ +G4CoupledTransportation +- Improves condition for flag that regulates Relocating when only + any geometry (including a parallel geometry) limits the step. + New PathFinder method required. + -> Requires and co-works with tag geomnav-V09-00-03 + +Oct 4th, 2007, J.Apostolakis transport-V09-00-02 +------------------------------ +G4CoupledTransportation +- First fix for problem in condition for Relocating when only a parallel + geometry limited the step. +- Change of condition for recalculation safety (from Alex Howard) used, + as currently it improves stability. + +Sept 25th, 2007, J.Apostolakis transport-V09-00-01 +------------------------------ +G4Transportation +- Modification to disable 'optimisation' in G4Navigator for small linear + step (ie when a track does less than the safety). + * Relevant only if there is no field, or the particle is neutral + * Temporary measure (in current form) to improve comparison + old / new Transportation (single/old vs coupled with pathfinder). + +July 12th, 2007, J.Apostolakis transport-V09-00-00 +------------------------------ +- Retagged to enable testing of new developments + (which were not included in release 9.0) + +June 6th, 2007, G.Cosmo transport-V08-03-14 +----------------------- +- Includes G4Transportation and G4CoupledTransportation implementations + as in tag "transport-V08-03-11": + o Corrected bug in ComputeSafety() introduced in "transport-V08-03-10". + o Reinitialise SafetyHelper state from G4PathFinder::PrepareNewTrack(). + o Should fix the problem seen in test33 and reported by system testing. +- All the rest is kept as in tag "transport-V08-03-12". + +June 1st, 2007, A.Howard transport-V08-03-13 +------------------------ +- Renamed classes associated with old biasing scheme with suffix 8: + G4ProcessPlacer8, G4VProcessPlacer8, G4VSamplerConfigurator8, + G4WeightCutOffProcess8, G4SamplingPostStepAction8, G4VSampler8, + G4WeightCutOffConfigurator8 +- Includes same G4CoupledTransportation as transport-V08-03-12 + +********** transport-V08-03-12 was used for Geant4 9.0 *************** + +May 31st, 2007, A.Howard transport-V08-03-12 ------------------------ - Archived classes for old biasing scheme, now replaced in module processes/biasing. Removed classes: @@ -31,8 +109,69 @@ May 31st, 2007, A.Howard transport-V08-03-12 G4ParallelWeightWindowProcess, G4PlaceOfAction, G4ProcessPlacer, G4SamplingPostStepAction, G4VProcessPlacer, G4VSampler, G4VSamplerConfigurator, G4WeightCutOffConfigurator. +- Classes are kept on the HEAD for testing purposes. +- Tag does NOT include changes from tags "transport-V08-03-00" to + "transport-V08-03-11" inclusive. -May 8th, 2007, G.Cosmo transport-V08-02-03a +May 29th, 2007, A.Howard/J.Apostolakis transport-V08-03-11 +-------------------------------------- +- G4CoupledTransportation: + o Corrected treatment of time integration (made flags do as in original + Transport). + o Again use momentum change flag in particle-change (optimisation). + o Also reset looping counter when no field or charge is present. +- Corrected names in Transport, Coupled Transport. (J.Apostolakis) + +May 29th, 2007, J.Apostolakis transport-V08-03-10 +----------------------------- +- Gone back to G4CoupledTransportation. + o G4Transportation is now the original (what was called G4Transportation8 + since "transport-V08-03-03"). + o G4Transportation8 still exists, to enable code that utilises it to compile + (transitional). Expect that G4Transportation8 will be taken away asap. + +May 29th, 2007, J.Apostolakis transport-V08-03-04 +----------------------------- +- G4Transportation. Refined relocation: + o Full (re)location only if any geometry limited the step. + o Fast relocation otherwise. +- Renamed & new data members: f(Mass,Any)GeometryLimitedStep. + +May 25th, 2007, J.Apostolakis transport-V08-03-03 +----------------------------- +- G4Transportation + o Fix for case of zero proposed step: missed to set end position. (A.Howard) +- G4Transportation8 + o Fixed StartTracking() to reset number of looping steps and + to clear propagator state (safety issue in case of overlaps). + +May 18th, 2007, J.Apostolakis transport-V08-03-02 +----------------------------- +- G4Transportation: + o Corrected full safety at step start, to protect against negative value. + o Obtain the endMassSafety from new saved value in G4PathFinder. +- G4Transportation8: + o Small cleanup, and hints for saving Safety to helper. + +May 13th, 2007, A.Howard transport-V08-03-01 +------------------------ +- G4VTrackTerminator: + o Use call to G4GeometryTolerance instead of kCarTolerance. + o Requires tag "global-V08-03-00" and related tag set. + +May 9th, 2007, J.Apostolakis transport-V08-03-00 +---------------------------- +- G4Transportation (hh,icc,cc) + o Renamed G4CoupledTransportation to G4Transportation + o Merged changes on branch used to bring in CoupledTransportation, + porting changes in G4Transportation since the creation of + CoupledTransportation. + o Also merged branch used for fixes in G4Transportation.cc (1.60.2, 1.60.4) + for convergence to Release 9.0. +- Renamed G4Transportation to G4Transportation8 +- G4ProcessPlader changed to reflect these revisions. (A.Howard) + +May 8th, 2007, G.Cosmo transport-V08-02-03 ---------------------- - Use call to G4GeometryTolerance instead of kCarTolerance in G4VTrackTerminator. @@ -41,14 +180,15 @@ May 8th, 2007, G.Cosmo transport-V08-02-03a May 2nd, 2007, J.Apostolakis transport-V08-02-02 ---------------------------- - G4CoupledTransportation: - Make treatment of mass and full safety coherent (to-dos remain in PathFinder) - Added storing of full safety in state; retrieve it after compute step - from PathFinder; calculate them same way at start of step. - Put back in the code for treating looping particles + o Make treatment of mass and full safety coherent (to-dos remain in + G4PathFinder). + o Added storing of full safety in state; retrieve it after compute step + from PathFinder; calculate them same way at start of step. + o Put back in the code for treating looping particles. February 15th, 2007, J.Apostolakis transport-V08-02-01 ---------------------------------- -- G4Transportation: protection against velocity=0 in AlongStep (invalid) +- G4Transportation: protection against velocity=0 in AlongStep (invalid). February 15th, 2007, J.Apostolakis transport-V08-02-00 ---------------------------------- @@ -65,11 +205,11 @@ November 22nd, 2006, J.Apostolakis transport-V08-01-04 November 22nd, 2006, J.Apostolakis transport-V08-01-03 --------------------------------- -- G4CoupledTransportation - AlongStepGPIL now returns an estimate for the safety for all geometries +- G4CoupledTransportation: + o AlongStepGPIL() now returns an estimate for the safety for all geometries to make up for the fact that some other processes only have PostStep GPILs which cannot currently influence safety. -**** Fix / Workaround for deficiency of others **** +- NOTE: Fix / Workaround for deficiency of others. November 13th, 2006, J.Apostolakis transport-V08-01-01 --------------------------------- @@ -79,27 +219,24 @@ November 13th, 2006, J.Apostolakis transport-V08-01-01 June 2nd, 2006, J.Apostolakis transport-V08-00-02 ----------------------------- -- Added new class G4CoupledTransportation, - a revised version of Transportation, - for use in 'coupled' parallel navigation in different geometries -- Includes non-revisions for migration to sstream (Nov 2005) +- Added new class G4CoupledTransportation, a revised version of Transportation, + for use in 'coupled' parallel navigation in different geometries. +- Includes non-revisions for migration to sstream (Nov 2005). Feb. 6th, 2006, J.Apostolakis/P.MoraDeFreitas transport-V08-00-01 ---------------------------------------------- -- Corrected problem with suspended tracks - PR# 802 - - - Added StartTracking() method which takes over responsibility to - clear the state for a new track, and to message other relevant - component to clear their state. - >> Problem report and proposed revision by P.MoraDeFreitas +- Corrected problem with suspended tracks - PR# 802. +- Added StartTracking() method which takes over responsibility to + clear the state for a new track, and to message other relevant + component to clear their state (problem report and proposed revision + by P.MoraDeFreitas). Jan. 16th, 2006, J.Apostolakis transport-V08-00-00 ------------------------------ -- G4Transportation - the particle's charge is now taken from the dynamic particle, so that - it can take into account changes from the interaction of an ion with matter - (eg stripping e-) - ---> Thanks to Vladimir Ivantchenko +- G4Transportation: + o The particle's charge is now taken from the dynamic particle, so that + it can take into account changes from the interaction of an ion with + matter (eg stripping e-). (V.Ivantchenko) Nov. 21st, 2005, M.Asai transport-V07-01-00 ----------------------- @@ -132,8 +269,8 @@ Sep. 9th, M.Maire Oct. 8th, M.Asai transport-V06-02-02 ---------------- -- A protection is added in G4Transportation.cc for an application with parameterized - volume but without any EM process. +- A protection is added in G4Transportation.cc for an application with + parameterized volume but without any EM process. Aug. 27th, M.Asai transport-V06-02-01 ----------------- @@ -363,7 +500,8 @@ May 31, 2002 M.Dressel transport-V04-00-08 May 31, 2002 M.Dressel transport-V04-00-07 -------------------------------------------------------- -- bug fix in G4PArallelScoreSampler.cc and remove Warning from ParallelTransport +- bug fix in G4PArallelScoreSampler.cc and remove Warning from + ParallelTransport. May 31, 2002 M.Dressel transport-V04-00-06 -------------------------------------------------------- diff --git a/source/processes/transportation/include/G4CoupledTransportation.hh b/source/processes/transportation/include/G4CoupledTransportation.hh index 13e247abef..2c256473df 100644 --- a/source/processes/transportation/include/G4CoupledTransportation.hh +++ b/source/processes/transportation/include/G4CoupledTransportation.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4CoupledTransportation.hh,v 1.4 2006/11/14 09:12:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4CoupledTransportation.hh,v 1.6 2007/05/29 13:50:14 japost Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -159,8 +159,9 @@ class G4CoupledTransportation : public G4VProcess G4PropagatorInField* fFieldPropagator; // Still required in order to find/set the fieldmanager - G4bool fStartedNewTrack; // True for first step or restarted tracking - // until first step's AlongStepGPIL + G4bool fGlobalFieldExists; + // G4bool fStartedNewTrack; // True for first step or restarted tracking + // until first step's AlongStepGPIL G4ThreeVector fTransportEndPosition; G4ThreeVector fTransportEndMomentumDir; @@ -176,7 +177,8 @@ class G4CoupledTransportation : public G4VProcess G4bool fParticleIsLooping; G4ThreeVector fPreviousSftOrigin; - G4double fPreviousSafety; + G4double fPreviousMassSafety; + G4double fPreviousFullSafety; G4TouchableHandle fCurrentTouchableHandle; @@ -185,14 +187,34 @@ class G4CoupledTransportation : public G4VProcess // A data member for this is problematic: it is useful only if it // can be initialised and updated -- and a scheme is not yet possible. - G4bool fGeometryLimitedStep; - // Flag to determine whether a boundary was reached. + G4bool fMassGeometryLimitedStep; + // Flag to determine whether a 'mass' boundary was reached. + G4bool fAnyGeometryLimitedStep; + // Did any geometry limit the step ? G4ParticleChangeForTransport fParticleChange; // New ParticleChange G4double endpointDistance; + + // Thresholds for looping particles: + // + G4double fThreshold_Warning_Energy; // Warn above this energy + G4double fThreshold_Important_Energy; // Hesitate above this + G4int fThresholdTrials; // for this no of trials + // Above 'important' energy a 'looping' particle in field will + // *NOT* be abandoned, except after fThresholdTrials attempts. + G4double fUnimportant_Energy; + // Below this energy, no verbosity for looping particles is issued + + // Counter for steps in which particle reports 'looping', + // if it is above 'Important' Energy + G4int fNoLooperTrials; + // Statistics for tracks abandoned + G4double fSumEnergyKilled; + G4double fMaxEnergyKilled; + // Verbosity G4int fVerboseLevel; // Verbosity level for warnings diff --git a/source/processes/transportation/include/G4CoupledTransportation.icc b/source/processes/transportation/include/G4CoupledTransportation.icc index a780e677ac..176950bbd7 100644 --- a/source/processes/transportation/include/G4CoupledTransportation.icc +++ b/source/processes/transportation/include/G4CoupledTransportation.icc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4CoupledTransportation.icc,v 1.2 2006/11/14 09:12:59 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4CoupledTransportation.icc,v 1.4 2007/05/29 13:50:15 japost Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -68,7 +68,6 @@ inline G4int G4CoupledTransportation::GetVerboseLevel( ) const return fVerboseLevel; } -#if 0 inline G4double G4CoupledTransportation::GetThresholdWarningEnergy() const { return fThreshold_Warning_Energy; @@ -98,6 +97,7 @@ inline void G4CoupledTransportation::SetThresholdTrials(G4int newMaxTrials ) { fThresholdTrials = newMaxTrials; } + // Get/Set parameters for killing loopers: // Above 'important' energy a 'looping' particle in field will // *NOT* be abandoned, except after fThresholdTrials attempts. @@ -125,5 +125,4 @@ inline void G4CoupledTransportation::ResetKilledStatistics(G4int report) fMaxEnergyKilled= -1.0*GeV; } // Statistics for tracks killed (currently due to looping in field) -#endif diff --git a/source/processes/transportation/include/G4NeutronKiller.hh b/source/processes/transportation/include/G4NeutronKiller.hh index 55f77263f7..ceeff359c8 100644 --- a/source/processes/transportation/include/G4NeutronKiller.hh +++ b/source/processes/transportation/include/G4NeutronKiller.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4NeutronKiller.hh,v 1.1 2006/11/17 15:53:04 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/processes/transportation/include/G4NeutronKillerMessenger.hh b/source/processes/transportation/include/G4NeutronKillerMessenger.hh index d85a774631..f5b8bc7233 100644 --- a/source/processes/transportation/include/G4NeutronKillerMessenger.hh +++ b/source/processes/transportation/include/G4NeutronKillerMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4NeutronKillerMessenger.hh,v 1.1 2006/11/17 15:53:04 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/processes/transportation/include/G4StepLimiter.hh b/source/processes/transportation/include/G4StepLimiter.hh index aab84e91e8..987868661c 100644 --- a/source/processes/transportation/include/G4StepLimiter.hh +++ b/source/processes/transportation/include/G4StepLimiter.hh @@ -25,7 +25,7 @@ // // // $Id: G4StepLimiter.hh,v 1.3 2006/06/29 21:10:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class description // diff --git a/source/processes/transportation/include/G4TrackTerminator.hh b/source/processes/transportation/include/G4TrackTerminator.hh index 49036fac07..976fc6d30c 100644 --- a/source/processes/transportation/include/G4TrackTerminator.hh +++ b/source/processes/transportation/include/G4TrackTerminator.hh @@ -25,7 +25,7 @@ // // // $Id: G4TrackTerminator.hh,v 1.3 2006/06/29 21:10:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4TrackTerminator diff --git a/source/processes/transportation/include/G4Transportation.hh b/source/processes/transportation/include/G4Transportation.hh index 190c6d3e17..dbd118c3ce 100644 --- a/source/processes/transportation/include/G4Transportation.hh +++ b/source/processes/transportation/include/G4Transportation.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Transportation.hh,v 1.12 2006/06/29 21:10:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Transportation.hh,v 1.16 2007/11/08 17:59:38 japost Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -118,6 +118,9 @@ class G4Transportation : public G4VProcess inline void ResetKilledStatistics( G4int report = 1); // Statistics for tracks killed (currently due to looping in field) + inline void EnableShortStepOptimisation(G4bool optimise=true); + // Whether short steps < safety will avoid to call Navigator (if field=0) + public: // without description G4double AtRestGetPhysicalInteractionLength( @@ -197,6 +200,9 @@ class G4Transportation : public G4VProcess G4double fSumEnergyKilled; G4double fMaxEnergyKilled; + // Whether to avoid calling G4Navigator for short step ( < safety) + // If using it, the safety estimate for endpoint will likely be smaller. + G4bool fShortStepOptimisation; // Verbosity G4int fVerboseLevel; diff --git a/source/processes/transportation/include/G4Transportation.icc b/source/processes/transportation/include/G4Transportation.icc index 1f2799b78c..76be3259c8 100644 --- a/source/processes/transportation/include/G4Transportation.icc +++ b/source/processes/transportation/include/G4Transportation.icc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Transportation.icc,v 1.9 2006/06/29 21:10:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Transportation.icc,v 1.11 2007/11/08 17:59:52 japost Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -126,3 +126,7 @@ inline void G4Transportation::ResetKilledStatistics(G4int report) } // Statistics for tracks killed (currently due to looping in field) +inline void G4Transportation::EnableShortStepOptimisation(G4bool optimiseShortStep) +{ + fShortStepOptimisation=optimiseShortStep; +} diff --git a/source/processes/transportation/include/G4UserSpecialCuts.hh b/source/processes/transportation/include/G4UserSpecialCuts.hh index a5f322942d..6236a906aa 100644 --- a/source/processes/transportation/include/G4UserSpecialCuts.hh +++ b/source/processes/transportation/include/G4UserSpecialCuts.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4UserSpecialCuts.hh,v 1.10 2006/06/29 21:10:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class description // diff --git a/source/processes/transportation/include/G4VTrackTerminator.hh b/source/processes/transportation/include/G4VTrackTerminator.hh index aa03064849..13f9be2a1d 100644 --- a/source/processes/transportation/include/G4VTrackTerminator.hh +++ b/source/processes/transportation/include/G4VTrackTerminator.hh @@ -25,7 +25,7 @@ // // // $Id: G4VTrackTerminator.hh,v 1.7 2007/05/11 14:13:20 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // Class G4VTrackTerminator diff --git a/source/processes/transportation/src/G4CoupledTransportation.cc b/source/processes/transportation/src/G4CoupledTransportation.cc index 3415b8d771..33bbef64d3 100644 --- a/source/processes/transportation/src/G4CoupledTransportation.cc +++ b/source/processes/transportation/src/G4CoupledTransportation.cc @@ -24,14 +24,25 @@ // ******************************************************************** // // -// $Id: G4CoupledTransportation.cc,v 1.12 2006/11/22 18:41:44 japost Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4CoupledTransportation.cc,v 1.23 2007/11/27 18:25:41 japost Exp $ +// --> Merged with 1.60.4.2.2.3 2007/05/09 09:30:28 japost +// GEANT4 tag $Name: geant4-09-01 $ // ------------------------------------------------------------ // GEANT 4 class implementation // ======================================================================= -// Modified: -// -// Created: 13 May 2006, J. Apostolakis, based on G4Transportation +// Modified: +// 13 May 2006, J. Apostolakis: Revised for parallel navigation (PathFinder) +// 19 Jan 2006, P.MoraDeFreitas: Fix for suspended tracks (StartTracking) +// 11 Aug 2004, M.Asai: Add G4VSensitiveDetector* for updating stepPoint. +// 21 June 2003, J.Apostolakis: Calling field manager with +// track, to enable it to configure its accuracy +// 13 May 2003, J.Apostolakis: Zero field areas now taken into +// account correclty in all cases (thanks to W Pokorski). +// 29 June 2001, J.Apostolakis, D.Cote-Ahern, P.Gumplinger: +// correction for spin tracking +// 20 Febr 2001, J.Apostolakis: update for new FieldTrack +// 22 Sept 2000, V.Grichine: update of Kinetic Energy +// Created: 19 March 1997, J. Apostolakis // ======================================================================= #include "G4CoupledTransportation.hh" @@ -48,16 +59,15 @@ G4CoupledTransportation::G4CoupledTransportation( G4int verboseLevel ) : G4VProcess( G4String("CoupledTransportation"), fTransportation ), fParticleIsLooping( false ), fPreviousSftOrigin (0.,0.,0.), - fPreviousSafety ( 0.0 ), -#ifdef LOOPERS + fPreviousMassSafety ( 0.0 ), + fPreviousFullSafety ( 0.0 ), fThreshold_Warning_Energy( 100 * MeV ), fThreshold_Important_Energy( 250 * MeV ), fThresholdTrials( 10 ), fUnimportant_Energy( 1 * MeV ), fNoLooperTrials(0), fSumEnergyKilled( 0.0 ), fMaxEnergyKilled( 0.0 ), -#endif - fVerboseLevel(verboseLevel) // ( verboseLevel ? verboseLevel : 2 ) + fVerboseLevel(verboseLevel) // ( verboseLevel ? verboseLevel : 2 ) // or 4 { G4TransportationManager* transportMgr ; @@ -75,12 +85,13 @@ G4CoupledTransportation::G4CoupledTransportation( G4int verboseLevel ) } fPathFinder= G4PathFinder::GetInstance(); - fCurrentTouchableHandle = G4TouchableHandle( 0 ); // new G4TouchableHistory(); + // Following assignment is to fix small memory leak from simple use of 'new' + static G4TouchableHandle nullTouchableHandle; // Points to (G4VTouchable*) 0 + fCurrentTouchableHandle = nullTouchableHandle; + // fCurrentTouchableHandle = G4TouchableHandle( 0 ); // new G4TouchableHistory(); - fStartedNewTrack= true; - - // fEndGlobalTimeComputed = false; - // fCandidateEndGlobalTime = 0; + fEndGlobalTimeComputed = false; + fCandidateEndGlobalTime = 0; } ////////////////////////////////////////////////////////////////////////// @@ -89,6 +100,11 @@ G4CoupledTransportation::~G4CoupledTransportation() { // fCurrentTouchableHandle is a data member - no deletion required + if( (fVerboseLevel > 0) || (fSumEnergyKilled > 0.0 ) ){ + G4cout << " G4CoupledTransportation: Statistics for looping particles " << G4endl; + G4cout << " Sum of energy of loopers killed: " << fSumEnergyKilled << G4endl; + G4cout << " Max energy of loopers killed: " << fMaxEnergyKilled << G4endl; + } } ////////////////////////////////////////////////////////////////////////// @@ -134,18 +150,14 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, G4ThreeVector startPosition = track.GetPosition() ; G4VPhysicalVolume* currentVolume= track.GetVolume(); +#ifdef G4DEBUG_TRANSPORT if( fVerboseLevel > 1 ) { G4cout << "G4CoupledTransportation::AlongStepGPIL> called in volume " << currentVolume->GetName() << G4endl; } +#endif // G4double theTime = track.GetGlobalTime() ; - if( fStartedNewTrack || track.GetCurrentStepNumber()==1 ) { - // fPathFinder->Locate( startPosition, startMomentumDir ); // -- out from G480 - fCurrentTouchableHandle = track.GetTouchableHandle(); // out G480 ?? - } - fStartedNewTrack= false; - // The Step Point safety can be limited by other geometries and/or the // assumptions of any process - it's not always the geometrical safety. // We calculate the starting point's isotropic safety here. @@ -154,31 +166,43 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, G4double MagSqShift = OriginShift.mag2() ; startMassSafety = 0.0; startFullSafety= 0.0; - if( MagSqShift < sqr(fPreviousSafety) ) { - startMassSafety = fPreviousSafety - std::sqrt(MagSqShift) ; + + // Recall that FullSafety <= MassSafety + // Original: if( MagSqShift < sqr(fPreviousMassSafety) ) { + if( MagSqShift < sqr(fPreviousFullSafety) ) { // Revision proposed by Alex H, 2 Oct 07 + G4double mag_shift= std::sqrt(MagSqShift); + startMassSafety = std::max( (fPreviousMassSafety - mag_shift), 0.0); + startFullSafety = std::max( (fPreviousFullSafety - mag_shift), 0.0); + // Need to be consistent between full safety with Mass safety + // in order reproduce results in simple case --> use same calculation method // Only compute full safety if massSafety > 0. Else it remains 0 - startFullSafety = fPathFinder->ComputeSafety( startPosition ); + // startFullSafety = fPathFinder->ComputeSafety( startPosition ); } // Is the particle charged ? // G4double particleCharge = pParticle->GetCharge() ; + fMassGeometryLimitedStep = false ; // Set default - alex + fAnyGeometryLimitedStep = false; + // fEndGlobalTimeComputed = false ; // There is no need to locate the current volume. It is Done elsewhere: // On track construction // By the tracking, after all AlongStepDoIts, in "Relocation" - // Check whether the particle have an (EM) field force exerting upon it + // Check whether the particle has an (EM) field force exerted upon it // G4FieldManager* fieldMgr=0; + G4bool fieldExertsForce = false; if( (particleCharge != 0.0) ) // || (magneticMoment != 0.0 ) ) { fieldMgr= fFieldPropagator->FindAndSetFieldManager( currentVolume ); if (fieldMgr != 0) { // Message the field Manager, to configure it for this track fieldMgr->ConfigureForTrack( &track ); + fieldExertsForce = (fieldMgr->GetDetectorField() != 0); } // the PathFinder will recognise whether the field exerts force } @@ -188,7 +212,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, fFieldPropagator->SetChargeMomentumMass( particleCharge, // in e+ units momentumMagnitude, // in Mev/c restMass ) ; - + // This should be obsolete - the call to SetChargeAndMoments below should do the work G4ThreeVector spin = track.GetPolarization() ; G4FieldTrack theFieldTrack = G4FieldTrack( startPosition, @@ -207,7 +231,8 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, ELimited limitedStep; G4FieldTrack endTrackState('a'); // Default values - fGeometryLimitedStep = false ; // default + fMassGeometryLimitedStep = false ; // default + fAnyGeometryLimitedStep = false ; if( currentMinimumStep > 0 ) { G4double newMassSafety= 0.0; // temp. for recalculation @@ -223,15 +248,35 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, currentVolume ) ; // G4cout << " PathFinder ComputeStep returns " << lengthAlongCurve << G4endl; + G4double newFullSafety= fPathFinder->GetCurrentSafety(); + // this was estimated already in step above + // G4double newFullStep= fPathFinder->GetMinimumStep(); + if( limitedStep == kUnique || limitedStep == kSharedTransport ) { - fGeometryLimitedStep = true ; + fMassGeometryLimitedStep = true ; } - if( lengthAlongCurve < currentMinimumStep){ - geometryStepLength = lengthAlongCurve ; - // Old code: fGeometryLimitedStep = true ; - } else { - geometryStepLength = currentMinimumStep ; + + fAnyGeometryLimitedStep = (fPathFinder->GetNumberGeometriesLimitingStep() != 0); + + // #ifdef G4DEBUG + if( fMassGeometryLimitedStep && !fAnyGeometryLimitedStep ){ + G4cerr << " Error in determining geometries limiting the step" << G4endl; + G4cerr << " Limiting: mass=" << fMassGeometryLimitedStep + << " any= " << fAnyGeometryLimitedStep << G4endl; + G4Exception("G4CoupledTransportation::AlongStepGetPhysicalInteractionLength()", + "PathFinderConfused", + FatalException, + "Incompatible conditions - was limited by a geometry?"); } + // #endif + + // Other potential + // fAnyGeometryLimitedStep = newFullStep < currentMinimumStep; + // ^^^ Not good enough; + // Must compare with maximum requested step size + // (eg in case another process requested bigger, got this!) + + geometryStepLength = std::min( lengthAlongCurve, currentMinimumStep); // Momentum: Magnitude and direction can be changed too now ... // @@ -239,19 +284,24 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, fTransportEndMomentumDir = endTrackState.GetMomentumDir() ; // Remember last safety origin & value. - fPreviousSftOrigin = startPosition ; - fPreviousSafety = newMassSafety ; + fPreviousSftOrigin = startPosition ; + fPreviousMassSafety = newMassSafety ; + fPreviousFullSafety = newFullSafety ; + // fSafetyHelper->SetCurrentSafety( newFullSafety, startPosition); +#ifdef G4DEBUG_TRANSPORT if( fVerboseLevel > 1 ){ - G4cout << "G4CoupledTransport:CompStep> " + G4cout << "G4Transport:CompStep> " << " called the pathfinder for a new step at " << startPosition << " and obtained step = " << lengthAlongCurve << G4endl; G4cout << " New safety (preStep) = " << newMassSafety << " versus precalculated = " << startMassSafety << G4endl; } +#endif // Store as best estimate value startMassSafety = newMassSafety ; + startFullSafety = newFullSafety ; // Get the End-Position and End-Momentum (Dir-ection) fTransportEndPosition = endTrackState.GetPosition() ; @@ -259,67 +309,84 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, } else { geometryStepLength = lengthAlongCurve= 0.0 ; fMomentumChanged = false ; - // fGeometryLimitedStep = false ; // --- ??? + // fMassGeometryLimitedStep = false ; // --- ??? + // fAnyGeometryLimitedStep = true; fTransportEndMomentumDir = track.GetMomentumDirection(); fTransportEndKineticEnergy = track.GetKineticEnergy(); + fTransportEndPosition = startPosition; // If the step length requested is 0, and we are on a boundary // then a boundary will also limit the step. - if( startMassSafety == 0.0 ) fGeometryLimitedStep = true ; + if( startMassSafety == 0.0 ) { + fMassGeometryLimitedStep = true ; + fAnyGeometryLimitedStep = true; + } // TODO: Add explicit logical status for being at a boundary } // G4FieldTrack aTrackState(endTrackState); - if( fVerboseLevel > 1 ){ - G4cout << " G4CT::CS End Position = " << fTransportEndPosition << G4endl; - G4cout << " G4CT::CS End Direction = " << fTransportEndMomentumDir << G4endl; + if( !fieldExertsForce ) + { + fParticleIsLooping = false ; + fMomentumChanged = false ; + fEndGlobalTimeComputed = false ; + // G4cout << " global time is false " << G4endl; + } + else + { + +#ifdef G4DEBUG_TRANSPORT + if( fVerboseLevel > 1 ){ + G4cout << " G4CT::CS End Position = " << fTransportEndPosition << G4endl; + G4cout << " G4CT::CS End Direction = " << fTransportEndMomentumDir << G4endl; + } +#endif + // G4cout << " G4CoupledTransportation Before if change energy statement: " << fFieldPropagator->GetCurrentFieldManager()->DoesFieldChangeEnergy() << G4endl; + if( fFieldPropagator->GetCurrentFieldManager()->DoesFieldChangeEnergy() ) + { + // If the field can change energy, then the time must be integrated + // - so this should have been updated + // + fCandidateEndGlobalTime = endTrackState.GetLabTimeOfFlight(); + fEndGlobalTimeComputed = true; + // G4cout << " setting global time to true - why? " << G4endl; + + // was ( fCandidateEndGlobalTime != track.GetGlobalTime() ); + // a cleaner way is to have FieldTrack knowing whether time is updated. + } + else + { + // The energy should be unchanged by field transport, + // - so the time changed will be calculated elsewhere + // + fEndGlobalTimeComputed = false; + + // Check that the integration preserved the energy + // - and if not correct this! + G4double startEnergy= track.GetKineticEnergy(); + G4double endEnergy= fTransportEndKineticEnergy; + + static G4int no_inexact_steps=0; // , no_large_ediff; + G4double absEdiff = std::fabs(startEnergy- endEnergy); + if( absEdiff > perMillion * endEnergy ) { + no_inexact_steps++; + // Possible statistics keeping here ... + } +#ifdef G4VERBOSE + if( (fVerboseLevel > 1) && ( absEdiff > perThousand * endEnergy) ){ + ReportInexactEnergy(startEnergy, endEnergy); + } // end of if (fVerboseLevel) +#endif + + // Correct the energy for fields that conserve it + // This - hides the integration error + // - but gives a better physical answer + fTransportEndKineticEnergy= track.GetKineticEnergy(); + } } -#if 0 - if( fFieldPropagator->GetCurrentFieldManager()->DoesFieldChangeEnergy() ) - { - // If the field can change energy, then the time must be integrated - // - so this should have been updated - // - fCandidateEndGlobalTime = endTrackState.GetLabTimeOfFlight(); - fEndGlobalTimeComputed = true; - - // was ( fCandidateEndGlobalTime != track.GetGlobalTime() ); - // a cleaner way is to have FieldTrack knowing whether time is updated. - } - else -#endif - { - // The energy should be unchanged by field transport, - // - so the time changed will be calculated elsewhere - // - fEndGlobalTimeComputed = false; - - // Check that the integration preserved the energy - // - and if not correct this! - G4double startEnergy= track.GetKineticEnergy(); - G4double endEnergy= fTransportEndKineticEnergy; - - static G4int no_inexact_steps=0; // , no_large_ediff; - G4double absEdiff = std::fabs(startEnergy- endEnergy); - if( absEdiff > perMillion * endEnergy ) { - no_inexact_steps++; - // Possible statistics keeping here ... - } - if( (fVerboseLevel > 1) && ( absEdiff > perThousand * endEnergy) ) - { - ReportInexactEnergy(startEnergy, endEnergy); - - } // end of if (fVerboseLevel) - - // Correct the energy for fields that conserve it - // This - hides the integration error - // - but gives a better physical answer - fTransportEndKineticEnergy= track.GetKineticEnergy(); - } - endpointDistance = (fTransportEndPosition - startPosition).mag() ; - // fParticleIsLooping = fFieldPropagator->IsParticleLooping() ; + fParticleIsLooping = fFieldPropagator->IsParticleLooping() ; fTransportEndSpin = endTrackState.GetSpin(); @@ -329,7 +396,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, // Update safety for the end-point, if becomes negative at the end-point. // To-Try: No safety update if at a boundary - if( startFullSafety < endpointDistance ) // && !fGeometryLimitedStep ) + if( startFullSafety < endpointDistance ) // && !fAnyGeometryLimitedStep ) { G4double endFullSafety = fPathFinder->ComputeSafety( fTransportEndPosition); @@ -339,20 +406,26 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, // currently revise the safety // ==> so we use the all-geometry safety as a precaution - G4double endMassSafety= fMassNavigator->ComputeSafety( fTransportEndPosition) ; - fPreviousSafety = endMassSafety ; + G4ThreeVector centerPt= G4ThreeVector(0.0, 0.0, 0.0); // Used for return value + G4double endMassSafety= fPathFinder->ObtainSafety( fNavigatorId, centerPt); + // Retrieves the mass value from PathFinder (it calculated it) + + fPreviousMassSafety = endMassSafety ; + fPreviousFullSafety = endFullSafety; fPreviousSftOrigin = fTransportEndPosition ; + // fSafetyHelper->SetCurrentSafety( endFullSafety, fTransportEndPosition); // The convention (Stepping Manager's) is safety from the start point // safetyProposal = endFullSafety + endpointDistance; // --> was endMassSafety - // #undef G4DEBUG_TRANSPORT + // Changed to accomodate processes that cannot update the safety -- JA 22 Nov 06 + // #define G4DEBUG_TRANSPORT 1 #ifdef G4DEBUG_TRANSPORT int prec= G4cout.precision(12) ; - G4cout << "***CoupledTransportation::AlongStepGPIL ** " << G4endl ; + G4cout << "***Transportation::AlongStepGPIL ** " << G4endl ; G4cout << " Revised Safety at endpoint " << fTransportEndPosition << " give safety values: Mass= " << endMassSafety << " All= " << endFullSafety << G4endl ; @@ -362,7 +435,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, } else{ int prec= G4cout.precision(12) ; - G4cout << "***CoupledTransportation::AlongStepGPIL ** " << G4endl ; + G4cout << "***Transportation::AlongStepGPIL ** " << G4endl ; G4cout << " Quick Safety estimate at endpoint " << fTransportEndPosition << " gives safety endpoint value = " << startFullSafety - endpointDistance << " using start-point value " << startFullSafety @@ -429,8 +502,8 @@ G4VParticleChange* G4CoupledTransportation::AlongStepDoIt( const G4Track& track, // A photon is in the medium of the final point // during the step, so Peter says it has the final velocity. deltaTime = stepLength * finalInverseVel ; - // G4cout << " dt = s * initV " << " s = " << stepLength - // << " finalV= " << finalInverseVel << G4endl; + // G4cout << " dt = s / finalV " << " s = " << stepLength + // << " 1 / finalV= " << finalInverseVel << G4endl; } else if (finalVelocity > 0.0) { @@ -443,8 +516,8 @@ G4VParticleChange* G4CoupledTransportation::AlongStepDoIt( const G4Track& track, else { deltaTime = stepLength * initialInverseVel ; - // G4cout << " dt = s * initV " << " s = " << stepLength - // << " initV= " << initialInverseVel << G4endl; + // G4cout << " dt = s / initV " << " s = " << stepLength + // << " 1 / initV= " << initialInverseVel << G4endl; } // Could do with better estimate for final step (finalVelocity = 0) ? fCandidateEndGlobalTime = startTime + deltaTime ; @@ -472,7 +545,6 @@ G4VParticleChange* G4CoupledTransportation::AlongStepDoIt( const G4Track& track, fParticleChange.ProposeProperTime(track.GetProperTime() + deltaProperTime) ; //fParticleChange. ProposeTrueStepLength( track.GetStepLength() ) ; -#if 0 // If the particle is caught looping or is stuck (in very difficult // boundaries) in a magnetic field (doing many steps) // THEN this kills it ... @@ -481,7 +553,7 @@ G4VParticleChange* G4CoupledTransportation::AlongStepDoIt( const G4Track& track, { G4double endEnergy= fTransportEndKineticEnergy; -if( (endEnergy < fThreshold_Important_Energy) + if( (endEnergy < fThreshold_Important_Energy) || (fNoLooperTrials >= fThresholdTrials ) ){ // Kill the looping particle // @@ -494,18 +566,29 @@ if( (endEnergy < fThreshold_Important_Energy) #ifdef G4VERBOSE if( (fVerboseLevel > 1) || ( endEnergy > fThreshold_Warning_Energy ) ) { - G4cout << " G4CoupledTransportation is killing track that is looping or stuck " - << G4endl + G4cout << " G4CoupledTransportation is killing track that is looping or stuck " << G4endl << " This track has " << track.GetKineticEnergy() / MeV << " MeV energy." << G4endl; } + if( fVerboseLevel > 0 ) { + G4cout << " Steps by this track: " << track.GetCurrentStepNumber() << G4endl; + } #endif fNoLooperTrials=0; } else{ fNoLooperTrials ++; - } - }else{ fNoLooperTrials=0; } +#ifdef G4VERBOSE + if( (fVerboseLevel > 2) ){ + G4cout << " ** G4CoupledTransportation::AlongStepDoIt(): Particle looping - " << G4endl + << " Number of consecutive problem step (this track) = " << fNoLooperTrials << G4endl + << " Steps by this track: " << track.GetCurrentStepNumber() << G4endl + << " Total no of calls to this method (all tracks) = " << noCalls << G4endl; + } #endif + } + }else{ + fNoLooperTrials=0; + } // Another (sometimes better way) is to use a user-limit maximum Step size // to alleviate this problem .. @@ -576,13 +659,15 @@ G4VParticleChange* G4CoupledTransportation::PostStepDoIt( const G4Track& track, if( fVerboseLevel > 0 ){ G4cout << " Calling PathFinder::Locate() from " << " G4CoupledTransportation::PostStepDoIt " << G4endl; + G4cout << " fAnyGeometryLimitedStep is " << fAnyGeometryLimitedStep << G4endl; + } - fPathFinder->Locate( track.GetPosition(), + if(fAnyGeometryLimitedStep) + { + fPathFinder->Locate( track.GetPosition(), track.GetMomentumDirection(), true); - if(fGeometryLimitedStep) - { // fCurrentTouchable will now become the previous touchable, // and what was the previous will be freed. // (Needed because the preStepPoint can point to the previous touchable) @@ -596,37 +681,55 @@ G4VParticleChange* G4CoupledTransportation::PostStepDoIt( const G4Track& track, // Check whether the particle is out of the world volume // If so it has exited and must be killed. // +#ifdef G4DEBUG_TRANSPORT if( fVerboseLevel > 1 ){ G4VPhysicalVolume* vol= fCurrentTouchableHandle->GetVolume(); G4cout << "CHECK !!!!!!!!!!! fCurrentTouchableHandle->GetVolume() = " << vol; if( vol ) { G4cout << "Name=" << vol->GetName(); } G4cout << G4endl; } +#endif if( fCurrentTouchableHandle->GetVolume() == 0 ) { fParticleChange.ProposeTrackStatus( fStopAndKill ) ; } retCurrentTouchable = fCurrentTouchableHandle ; - fParticleChange.SetTouchableHandle( fCurrentTouchableHandle ) ; + // fParticleChange.SetTouchableHandle( fCurrentTouchableHandle ) ; + + // Notify particle change that this is last step in volume + fParticleChange.ProposeLastStepInVolume(true); + // Double check that a boundary limited the step, and + // if( fLinearNavigator->Get + } - else // fGeometryLimitedStep is false + else // fAnyGeometryLimitedStep is false { +#ifdef G4DEBUG_TRANSPORT if( fVerboseLevel > 1 ){ - G4cout << "G4CoupledTransportation::PostStepDoIt -- fGeometryLimitedStep = false !!" - << G4endl; + G4cout << "G4CoupledTransportation::PostStepDoIt -- " + << " fAnyGeometryLimitedStep = " << fAnyGeometryLimitedStep + << " must be false " << G4endl; } - // This serves only to move the Navigator's location +#endif + // This serves only to move each of the Navigator's location // // fLinearNavigator->LocateGlobalPointWithinVolume( track.GetPosition() ) ; + // G4cout << "G4CoupledTransportation calling PathFinder::ReLocate() " << G4endl; + fPathFinder->ReLocate( track.GetPosition() ); + // track.GetMomentumDirection() ); + // Keep the value of the track's current Touchable is retained, // and use it to overwrite the (unset) one in particle change. - // In general this is fCurrentTouchable, - // - yet could it be different at the start of a step ? + // Expect this must be fCurrentTouchable too + // - could it be different, eg at the start of a step ? // - fParticleChange.SetTouchableHandle( track.GetTouchableHandle() ) ; retCurrentTouchable = track.GetTouchableHandle() ; - } // endif ( fGeometryLimitedStep ) + // fParticleChange.SetTouchableHandle( track.GetTouchableHandle() ) ; + + // Have not reached a boundary + fParticleChange.ProposeLastStepInVolume(false); + } // endif ( fAnyGeometryLimitedStep ) const G4VPhysicalVolume* pNewVol = retCurrentTouchable->GetVolume() ; const G4Material* pNewMaterial = 0 ; @@ -686,16 +789,16 @@ G4CoupledTransportation::StartTracking(G4Track* aTrack) // The 'initialising' actions // once taken in AlongStepGPIL -- if ( track.GetCurrentStepNumber()==1 ) - fStartedNewTrack= true; + // fStartedNewTrack= true; fMassNavigator = transportMgr->GetNavigatorForTracking() ; fNavigatorId= transportMgr->ActivateNavigator( fMassNavigator ); // Confirm it! - if( fVerboseLevel > 1 ){ - G4cout << " Navigator Id obtained in StartTracking " << fNavigatorId << G4endl; - } + // if( fVerboseLevel > 1 ){ + // G4cout << " Navigator Id obtained in StartTracking " << fNavigatorId << G4endl; + // } G4ThreeVector position = aTrack->GetPosition(); - G4ThreeVector direction = aTrack->GetMomentumDirection(); // G48 + G4ThreeVector direction = aTrack->GetMomentumDirection(); // if( fVerboseLevel > 1 ){ // G4cout << " Calling PathFinder::PrepareNewTrack from " @@ -704,32 +807,40 @@ G4CoupledTransportation::StartTracking(G4Track* aTrack) fPathFinder->PrepareNewTrack( position, direction); // This implies a call to fPathFinder->Locate( position, direction ); + // Global field, if any, must exist before tracking is started + fGlobalFieldExists= DoesGlobalFieldExist(); // reset safety value and center // - fPreviousSafety = 0.0 ; + fPreviousMassSafety = 0.0 ; + fPreviousFullSafety = 0.0 ; fPreviousSftOrigin = G4ThreeVector(0.,0.,0.) ; -#if LOOPERS // For now dont check loopers - // reset looping counter -- for motion in field // Needed in 8.x - G480 - if( aTrack->GetCurrentStepNumber()==1 ) { - fNoLooperTrials= 0; - } -#endif + // reset looping counter -- for motion in field + fNoLooperTrials= 0; + // Must clear this state .. else it depends on last track's value + // --> a better solution would set this from state of suspended track TODO ? + // Was if( aTrack->GetCurrentStepNumber()==1 ) { .. } // ChordFinder reset internal state // - if( DoesGlobalFieldExist() ) { + if( fGlobalFieldExists ) { + fFieldPropagator->ClearPropagatorState(); + // Resets safety values, in case of overlaps. + G4ChordFinder* chordF= fFieldPropagator->GetChordFinder(); if( chordF ) chordF->ResetStepEstimate(); + // Should also do this for the chord finders of local field managers - TODO } +#ifdef G4DEBUG_TRANSPORT if( fVerboseLevel > 1 ){ G4cout << " Returning touchable handle " << fCurrentTouchableHandle << G4endl; } +#endif // Update the current touchable handle (from the track's) // - fCurrentTouchableHandle = aTrack->GetTouchableHandle(); // G480 + fCurrentTouchableHandle = aTrack->GetTouchableHandle(); } void diff --git a/source/processes/transportation/src/G4NeutronKiller.cc b/source/processes/transportation/src/G4NeutronKiller.cc index d7f14f3727..d691bd75c4 100644 --- a/source/processes/transportation/src/G4NeutronKiller.cc +++ b/source/processes/transportation/src/G4NeutronKiller.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4NeutronKiller.cc,v 1.1 2006/11/17 15:53:04 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/processes/transportation/src/G4NeutronKillerMessenger.cc b/source/processes/transportation/src/G4NeutronKillerMessenger.cc index deaafd301f..4af0f8b7bd 100644 --- a/source/processes/transportation/src/G4NeutronKillerMessenger.cc +++ b/source/processes/transportation/src/G4NeutronKillerMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4NeutronKillerMessenger.cc,v 1.1 2006/11/17 15:53:04 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------------------- // diff --git a/source/processes/transportation/src/G4StepLimiter.cc b/source/processes/transportation/src/G4StepLimiter.cc index c435580b21..90f5293521 100644 --- a/source/processes/transportation/src/G4StepLimiter.cc +++ b/source/processes/transportation/src/G4StepLimiter.cc @@ -25,7 +25,7 @@ // // // $Id: G4StepLimiter.cc,v 1.3 2006/11/14 09:11:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // History diff --git a/source/processes/transportation/src/G4Transportation.cc b/source/processes/transportation/src/G4Transportation.cc index 8435c4e774..4f7ecfd227 100644 --- a/source/processes/transportation/src/G4Transportation.cc +++ b/source/processes/transportation/src/G4Transportation.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Transportation.cc,v 1.60.4.2 2007/02/15 19:02:57 japost Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Transportation.cc,v 1.72 2007/11/08 17:55:57 japost Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // ------------------------------------------------------------ // GEANT 4 include file implementation @@ -50,9 +50,6 @@ // correction for spin tracking // 20 Febr 2001, J.Apostolakis: update for new FieldTrack // 22 Sept 2000, V.Grichine: update of Kinetic Energy -// 9 June 1999, J.Apostolakis & S.Giani: protect full relocation -// in DEBUG for track starting on surface that -// goes step < tolerance. // Created: 19 March 1997, J. Apostolakis // ======================================================================= @@ -77,6 +74,7 @@ G4Transportation::G4Transportation( G4int verboseLevel ) fUnimportant_Energy( 1 * MeV ), fNoLooperTrials(0), fSumEnergyKilled( 0.0 ), fMaxEnergyKilled( 0.0 ), + fShortStepOptimisation(false), // Old default: true (=fast short steps) fVerboseLevel( verboseLevel ) { G4TransportationManager* transportMgr ; @@ -89,6 +87,8 @@ G4Transportation::G4Transportation( G4int verboseLevel ) fFieldPropagator = transportMgr->GetPropagatorInField() ; + // fpSafetyHelper = fpTransportManager->GetSafetyHelper(); // New + // Cannot determine whether a field exists here, // because it would only work if the field manager has informed // about the detector's field before this transportation process @@ -201,6 +201,12 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, { fieldMgr= fFieldPropagator->FindAndSetFieldManager( track.GetVolume() ); if (fieldMgr != 0) { + // Message the field Manager, to configure it for this track + fieldMgr->ConfigureForTrack( &track ); + // Moved here, in order to allow a transition + // from a zero-field status (with fieldMgr->(field)0 + // to a finite field status + // If the field manager has no field, there is no field ! fieldExertsForce = (fieldMgr->GetDetectorField() != 0); } @@ -214,7 +220,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, if( !fieldExertsForce ) { G4double linearStepLength ; - if( currentMinimumStep <= currentSafety ) + if( fShortStepOptimisation && (currentMinimumStep <= currentSafety) ) { // The Step is guaranteed to be taken // @@ -233,24 +239,22 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, // fPreviousSftOrigin = startPosition ; fPreviousSafety = newSafety ; + // fSafetyHelper->SetCurrentSafety( newSafety, startPosition); // The safety at the initial point has been re-calculated: // currentSafety = newSafety ; - if( linearStepLength <= currentMinimumStep) + fGeometryLimitedStep= (linearStepLength <= currentMinimumStep); + if( fGeometryLimitedStep ) { // The geometry limits the Step size (an intersection was found.) - // geometryStepLength = linearStepLength ; - fGeometryLimitedStep = true ; - } + } else { // The full Step is taken. - // geometryStepLength = currentMinimumStep ; - fGeometryLimitedStep = false ; } } endpointDistance = geometryStepLength ; @@ -279,9 +283,6 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, momentumMagnitude, // in Mev/c restMass ) ; - // Message the field Manager, to configure it for this track - fieldMgr->ConfigureForTrack( &track ); - G4ThreeVector spin = track.GetPolarization() ; G4FieldTrack aFieldTrack = G4FieldTrack( startPosition, track.GetMomentumDirection(), @@ -300,15 +301,11 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, currentMinimumStep, currentSafety, track.GetVolume() ) ; - if( lengthAlongCurve < currentMinimumStep) - { + fGeometryLimitedStep= lengthAlongCurve < currentMinimumStep; + if( fGeometryLimitedStep ) { geometryStepLength = lengthAlongCurve ; - fGeometryLimitedStep = true ; - } - else - { + } else { geometryStepLength = currentMinimumStep ; - fGeometryLimitedStep = false ; } } else @@ -321,7 +318,8 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, // fPreviousSftOrigin = startPosition ; fPreviousSafety = currentSafety ; - + // fSafetyHelper->SetCurrentSafety( newSafety, startPosition); + // Get the End-Position and End-Momentum (Dir-ection) // fTransportEndPosition = aFieldTrack.GetPosition() ; @@ -428,6 +426,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, currentSafety = endSafety ; fPreviousSftOrigin = fTransportEndPosition ; fPreviousSafety = currentSafety ; + // fSafetyHelper->SetCurrentSafety( currentSafety, fTransportEndPosition); // Because the Stepping Manager assumes it is from the start point, // add the StepLength @@ -435,13 +434,12 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, currentSafety += endpointDistance ; #ifdef G4DEBUG_TRANSPORT - G4cout.precision(16) ; - G4cout << "***Transportation::AlongStepGPIL ** " << G4endl ; - G4cout << " Called Navigator->ComputeSafety at " - << fTransportEndPosition + G4cout.precision(12) ; + G4cout << "***G4Transportation::AlongStepGPIL ** " << G4endl ; + G4cout << " Called Navigator->ComputeSafety at " << fTransportEndPosition << " and it returned safety= " << endSafety << G4endl ; G4cout << " Adding endpoint distance " << endpointDistance - << " we obtain pseudo-safety= " << currentSafety << G4endl ; + << " to obtain pseudo-safety= " << currentSafety << G4endl ; #endif } @@ -564,7 +562,7 @@ G4VParticleChange* G4Transportation::AlongStepDoIt( const G4Track& track, fNoLooperTrials ++; #ifdef G4VERBOSE if( (fVerboseLevel > 2) ){ - G4cout << " Transportation::AlongStepDoIt(): Particle looping - " + G4cout << " G4Transportation::AlongStepDoIt(): Particle looping - " << " Number of trials = " << fNoLooperTrials << " No of calls to = " << noCalls << G4endl; @@ -716,14 +714,16 @@ G4Transportation::StartTracking(G4Track* aTrack) fPreviousSftOrigin = G4ThreeVector(0.,0.,0.) ; // reset looping counter -- for motion in field - if( aTrack->GetCurrentStepNumber()==1 ) { - fNoLooperTrials= 0; - } + fNoLooperTrials= 0; + // Must clear this state .. else it depends on last track's value + // --> a better solution would set this from state of suspended track TODO ? + // Was if( aTrack->GetCurrentStepNumber()==1 ) { .. } - // Propagator and ChordFinder: reset internal state + // ChordFinder reset internal state // if( DoesGlobalFieldExist() ) { - fFieldPropagator->ClearPropagatorState(); + fFieldPropagator->ClearPropagatorState(); + // Resets safety values, in case of overlaps. G4ChordFinder* chordF= fFieldPropagator->GetChordFinder(); if( chordF ) chordF->ResetStepEstimate(); diff --git a/source/processes/transportation/src/G4UserSpecialCuts.cc b/source/processes/transportation/src/G4UserSpecialCuts.cc index e5e9a16ffc..cbdaebb026 100644 --- a/source/processes/transportation/src/G4UserSpecialCuts.cc +++ b/source/processes/transportation/src/G4UserSpecialCuts.cc @@ -25,7 +25,7 @@ // // // $Id: G4UserSpecialCuts.cc,v 1.16 2006/11/14 09:11:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // -------------------------------------------------------------- // History diff --git a/source/processes/transportation/src/G4VTrackTerminator.cc b/source/processes/transportation/src/G4VTrackTerminator.cc index 08495fd665..04fc1590ea 100644 --- a/source/processes/transportation/src/G4VTrackTerminator.cc +++ b/source/processes/transportation/src/G4VTrackTerminator.cc @@ -25,7 +25,7 @@ // // // $Id: G4VTrackTerminator.cc,v 1.6 2007/05/11 14:13:20 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/readout/include/G4DCtable.hh b/source/readout/include/G4DCtable.hh index ad6ccf9c5e..be2c9224ca 100644 --- a/source/readout/include/G4DCtable.hh +++ b/source/readout/include/G4DCtable.hh @@ -25,7 +25,7 @@ // // // $Id: G4DCtable.hh,v 1.9 2006/06/29 21:12:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4DCtable_H diff --git a/source/readout/include/G4DMmessenger.hh b/source/readout/include/G4DMmessenger.hh index 71ebcd20bd..7b7e182003 100644 --- a/source/readout/include/G4DMmessenger.hh +++ b/source/readout/include/G4DMmessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4DMmessenger.hh,v 1.5 2006/06/29 21:12:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4DMmessenger_h diff --git a/source/readout/include/G4DigiManager.hh b/source/readout/include/G4DigiManager.hh index b4907ec13c..bd6fb19669 100644 --- a/source/readout/include/G4DigiManager.hh +++ b/source/readout/include/G4DigiManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4DigiManager.hh,v 1.8 2006/06/29 21:12:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4DigiManager_h diff --git a/source/readout/include/G4VDigitizerModule.hh b/source/readout/include/G4VDigitizerModule.hh index d9bc4a0a5f..46532201b7 100644 --- a/source/readout/include/G4VDigitizerModule.hh +++ b/source/readout/include/G4VDigitizerModule.hh @@ -25,7 +25,7 @@ // // // $Id: G4VDigitizerModule.hh,v 1.8 2006/06/29 21:12:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VDigitizerModule_H diff --git a/source/readout/src/G4DCtable.cc b/source/readout/src/G4DCtable.cc index 9ceebea7bb..9e56fde0d6 100644 --- a/source/readout/src/G4DCtable.cc +++ b/source/readout/src/G4DCtable.cc @@ -25,7 +25,7 @@ // // // $Id: G4DCtable.cc,v 1.9 2006/06/29 21:13:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4DCtable.hh" diff --git a/source/readout/src/G4DMmessenger.cc b/source/readout/src/G4DMmessenger.cc index 21b3f0ab62..dd8961ac7f 100644 --- a/source/readout/src/G4DMmessenger.cc +++ b/source/readout/src/G4DMmessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4DMmessenger.cc,v 1.4 2006/06/29 21:13:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // --------------------------------------------------------------------- diff --git a/source/readout/src/G4DigiManager.cc b/source/readout/src/G4DigiManager.cc index f2bb2a589a..e554b152d9 100644 --- a/source/readout/src/G4DigiManager.cc +++ b/source/readout/src/G4DigiManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4DigiManager.cc,v 1.7 2006/06/29 21:13:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4DigiManager.hh" diff --git a/source/readout/src/G4VDigitizerModule.cc b/source/readout/src/G4VDigitizerModule.cc index df13bf2b41..9f1a607132 100644 --- a/source/readout/src/G4VDigitizerModule.cc +++ b/source/readout/src/G4VDigitizerModule.cc @@ -25,7 +25,7 @@ // // // $Id: G4VDigitizerModule.cc,v 1.4 2006/06/29 21:13:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4VDigitizerModule.hh" diff --git a/source/run/GNUmakefile b/source/run/GNUmakefile index 58876c95e7..fc794377e2 100644 --- a/source/run/GNUmakefile +++ b/source/run/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.14 2006/11/15 12:19:26 gcosmo Exp $ +# $Id: GNUmakefile,v 1.16 2007/07/13 05:56:42 asaim Exp $ # ---------------------------------------------------------- # GNUmakefile for run library. Gabriele Cosmo, 3/4/1997. # ---------------------------------------------------------- @@ -31,6 +31,7 @@ CPPFLAGS += \ -I$(G4BASE)/particles/management/include \ -I$(G4BASE)/processes/management/include \ -I$(G4BASE)/processes/cuts/include \ + -I$(G4BASE)/processes/scoring/include \ -I$(G4BASE)/processes/electromagnetic/utils/include \ -I$(G4BASE)/processes/transportation/include \ -I$(G4BASE)/processes/decay/include \ @@ -43,6 +44,7 @@ CPPFLAGS += \ -I$(G4BASE)/digits_hits/detector/include \ -I$(G4BASE)/digits_hits/hits/include \ -I$(G4BASE)/digits_hits/digits/include \ + -I$(G4BASE)/digits_hits/utils/include \ -I$(G4BASE)/event/include \ -I$(G4BASE)/intercoms/include \ -I$(G4BASE)/geometry/biasing/include \ diff --git a/source/run/History b/source/run/History index 99ae662669..28ba7b549a 100644 --- a/source/run/History +++ b/source/run/History @@ -1,4 +1,4 @@ -$Id: History,v 1.166 2007/06/20 17:00:23 asaim Exp $ +$Id: History,v 1.173 2007/11/16 22:37:42 asaim Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,31 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +November 16th, 2007, Makoto Asai (run-V09-00-06) +- Re-order the commands in G4RunMessenger so that obsolete commands appear last. + +November 15th, 2007, Gabriele Cosmo (run-V09-00-05) +- Corrected inclusion of Randomize.hh header and use of CLHEP namespace. + +November 13th, 2007, Makoto Asai (run-V09-00-04) +- Introducing a new /random/setSeeds command which allows to set seeds. +- Now /random/setDirectoryName command creates directories as needed. + +November 8th, 2007, Makoto Asai (run-V09-00-03) +- Obsolete UI commands now do nothing except warning messages. + +September 23rd, 2007, Makoto Asai (run-V09-00-02) +- Re-tagged with new tag name. +- G4VUserPhysicsList::AddTransportation() temporarily checks the existance + of G4ScoringManager. + +August 30th, 2007, Makoto Asai (run-V009-00-01) +- First implementation of interactive parallel world scoring. +- Co-working with digits_hits-V09-00-01, procman-V09-00-00, config-V09-00-00 + +July 13th, 2007, Makoto Asai (run-V09-00-00) +- Co-working with the new G4ScoringManager. + June 20th, 2007, Makoto Asai (run-V08-03-07) - Fixed seg fault with stacking events (Bug report #951). diff --git a/source/run/include/G4ExceptionHandler.hh b/source/run/include/G4ExceptionHandler.hh index 094924c723..e9c37cd239 100644 --- a/source/run/include/G4ExceptionHandler.hh +++ b/source/run/include/G4ExceptionHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4ExceptionHandler.hh,v 1.2 2006/06/29 21:13:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/run/include/G4MSSteppingAction.hh b/source/run/include/G4MSSteppingAction.hh index cba924d942..a8fed29025 100644 --- a/source/run/include/G4MSSteppingAction.hh +++ b/source/run/include/G4MSSteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4MSSteppingAction.hh,v 1.2 2006/06/29 21:13:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/run/include/G4MatScanMessenger.hh b/source/run/include/G4MatScanMessenger.hh index ce40fd4ac7..9964a77f88 100644 --- a/source/run/include/G4MatScanMessenger.hh +++ b/source/run/include/G4MatScanMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4MatScanMessenger.hh,v 1.3 2006/06/29 21:13:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/run/include/G4MaterialScanner.hh b/source/run/include/G4MaterialScanner.hh index 890f26cd52..a3f1118942 100644 --- a/source/run/include/G4MaterialScanner.hh +++ b/source/run/include/G4MaterialScanner.hh @@ -25,7 +25,7 @@ // // // $Id: G4MaterialScanner.hh,v 1.2 2006/06/29 21:13:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/run/include/G4Run.hh b/source/run/include/G4Run.hh index 38d0ffc311..53d00321b8 100644 --- a/source/run/include/G4Run.hh +++ b/source/run/include/G4Run.hh @@ -25,7 +25,7 @@ // // // $Id: G4Run.hh,v 1.16 2007/03/07 03:00:14 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4Run_h diff --git a/source/run/include/G4RunManager.hh b/source/run/include/G4RunManager.hh index 59ca6210fc..0a0f48faa1 100644 --- a/source/run/include/G4RunManager.hh +++ b/source/run/include/G4RunManager.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4RunManager.hh,v 1.48 2007/05/04 16:02:58 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4RunManager.hh,v 1.51 2007/11/13 19:25:13 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -91,6 +91,7 @@ class G4PrimaryTransformer; #include "G4EventManager.hh" #include "globals.hh" #include +#include class G4RunManager { @@ -346,6 +347,9 @@ class G4RunManager G4String dirStr = dir; if( dirStr(dirStr.length()-1) != '/' ) dirStr += "/"; randomNumberStatusDir = dirStr; + G4String shellCmd = "mkdir -p "; + shellCmd += dirStr; + system(shellCmd); } inline G4String GetRandomNumberStoreDir() const { return randomNumberStatusDir; } @@ -433,6 +437,11 @@ class G4RunManager public: inline void SetDCtable(G4DCtable* DCtbl) { DCtable = DCtbl; } + + public: + void ConstructScoringWorlds(); + private: + void UpdateScoring(); }; #endif diff --git a/source/run/include/G4RunManagerKernel.hh b/source/run/include/G4RunManagerKernel.hh index ddad230eff..3ff21342b0 100644 --- a/source/run/include/G4RunManagerKernel.hh +++ b/source/run/include/G4RunManagerKernel.hh @@ -25,7 +25,7 @@ // // // $Id: G4RunManagerKernel.hh,v 1.9 2007/05/30 00:42:09 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/run/include/G4RunMessenger.hh b/source/run/include/G4RunMessenger.hh index 0a08b61aa5..197ec386af 100644 --- a/source/run/include/G4RunMessenger.hh +++ b/source/run/include/G4RunMessenger.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4RunMessenger.hh,v 1.15 2007/03/08 23:54:04 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4RunMessenger.hh,v 1.18 2007/11/13 15:48:44 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT 4 class header file @@ -48,8 +48,7 @@ // geometryModified * Force geometry to be closed again. // physicsModified * Force cross-section tables to be calculated again. // (and rebuilding physics table will be invoked) -// storeRandomNumberStatus * Set the flag for storing random number status -// restoreRandomNumberStatus * Restore the stored random number status +// constructScoringWorlds * Constrct scoring world(s) if defined // #ifndef G4RunMessenger_h @@ -99,6 +98,7 @@ class G4RunMessenger: public G4UImessenger G4UIcmdWithAnInteger * randEvtCmd; G4UIdirectory * randomDirectory; + G4UIcmdWithAString * seedCmd; G4UIcmdWithAString * randDirCmd; G4UIcmdWithABool * savingFlagCmd; G4UIcmdWithoutParameter * saveThisRunCmd; @@ -109,6 +109,8 @@ class G4RunMessenger: public G4UImessenger G4UIcmdWithAnInteger * storeRandOld; G4UIcmdWithAString * restoreRandOld; + G4UIcmdWithoutParameter * constScoreCmd; + G4MaterialScanner * materialScanner; }; diff --git a/source/run/include/G4UserPhysicsListMessenger.hh b/source/run/include/G4UserPhysicsListMessenger.hh index 7ef2478d8f..f1beebef14 100644 --- a/source/run/include/G4UserPhysicsListMessenger.hh +++ b/source/run/include/G4UserPhysicsListMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4UserPhysicsListMessenger.hh,v 1.18 2007/05/30 10:34:54 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/run/include/G4UserRunAction.hh b/source/run/include/G4UserRunAction.hh index cacca71ef2..ffbc8129d8 100644 --- a/source/run/include/G4UserRunAction.hh +++ b/source/run/include/G4UserRunAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4UserRunAction.hh,v 1.8 2006/06/29 21:13:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4UserRunAction_h diff --git a/source/run/include/G4VModularPhysicsList.hh b/source/run/include/G4VModularPhysicsList.hh index cfb43e34b4..0179448d6d 100644 --- a/source/run/include/G4VModularPhysicsList.hh +++ b/source/run/include/G4VModularPhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: G4VModularPhysicsList.hh,v 1.7 2006/06/29 21:13:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/run/include/G4VPersistencyManager.hh b/source/run/include/G4VPersistencyManager.hh index 74fcd383ae..958d6a5e5b 100644 --- a/source/run/include/G4VPersistencyManager.hh +++ b/source/run/include/G4VPersistencyManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4VPersistencyManager.hh,v 1.5 2006/06/29 21:13:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VPersistencyManager_h diff --git a/source/run/include/G4VPhysicsConstructor.hh b/source/run/include/G4VPhysicsConstructor.hh index 0cdb342432..39ae762743 100644 --- a/source/run/include/G4VPhysicsConstructor.hh +++ b/source/run/include/G4VPhysicsConstructor.hh @@ -25,7 +25,7 @@ // // // $Id: G4VPhysicsConstructor.hh,v 1.4 2006/06/29 21:13:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/run/include/G4VUserDetectorConstruction.hh b/source/run/include/G4VUserDetectorConstruction.hh index 5ae8fd6324..47f4a19368 100644 --- a/source/run/include/G4VUserDetectorConstruction.hh +++ b/source/run/include/G4VUserDetectorConstruction.hh @@ -25,7 +25,7 @@ // // // $Id: G4VUserDetectorConstruction.hh,v 1.9 2007/05/03 17:59:18 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VUserDetectorConstruction_h diff --git a/source/run/include/G4VUserParallelWorld.hh b/source/run/include/G4VUserParallelWorld.hh index 49291aa773..6bb99c0eef 100644 --- a/source/run/include/G4VUserParallelWorld.hh +++ b/source/run/include/G4VUserParallelWorld.hh @@ -25,7 +25,7 @@ // // // $Id: G4VUserParallelWorld.hh,v 1.2 2006/12/13 15:49:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VUserParallelWorld_h diff --git a/source/run/include/G4VUserPhysicsList.hh b/source/run/include/G4VUserPhysicsList.hh index e51e15afb7..ba809d4a38 100644 --- a/source/run/include/G4VUserPhysicsList.hh +++ b/source/run/include/G4VUserPhysicsList.hh @@ -25,7 +25,7 @@ // // // $Id: G4VUserPhysicsList.hh,v 1.35 2007/05/30 10:16:27 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/run/include/G4VUserPrimaryGeneratorAction.hh b/source/run/include/G4VUserPrimaryGeneratorAction.hh index 41cc28c41e..aaa7c4f902 100644 --- a/source/run/include/G4VUserPrimaryGeneratorAction.hh +++ b/source/run/include/G4VUserPrimaryGeneratorAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4VUserPrimaryGeneratorAction.hh,v 1.5 2006/06/29 21:13:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VUserPrimaryGeneratorAction_h diff --git a/source/run/src/G4ExceptionHandler.cc b/source/run/src/G4ExceptionHandler.cc index bcf52bde8b..d36d45448d 100644 --- a/source/run/src/G4ExceptionHandler.cc +++ b/source/run/src/G4ExceptionHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4ExceptionHandler.cc,v 1.4 2006/06/29 21:13:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/run/src/G4MSSteppingAction.cc b/source/run/src/G4MSSteppingAction.cc index bb728a5cbc..aa77c1f432 100644 --- a/source/run/src/G4MSSteppingAction.cc +++ b/source/run/src/G4MSSteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4MSSteppingAction.cc,v 1.2 2006/06/29 21:13:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/run/src/G4MatScanMessenger.cc b/source/run/src/G4MatScanMessenger.cc index 21b0a5e71a..f08a62e5e8 100644 --- a/source/run/src/G4MatScanMessenger.cc +++ b/source/run/src/G4MatScanMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4MatScanMessenger.cc,v 1.5 2006/12/01 02:00:55 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/run/src/G4MaterialScanner.cc b/source/run/src/G4MaterialScanner.cc index c81d353a8e..e2b7ac281f 100644 --- a/source/run/src/G4MaterialScanner.cc +++ b/source/run/src/G4MaterialScanner.cc @@ -25,7 +25,7 @@ // // // $Id: G4MaterialScanner.cc,v 1.3 2006/06/29 21:13:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/run/src/G4Run.cc b/source/run/src/G4Run.cc index 9b54173f05..5bb1d5757b 100644 --- a/source/run/src/G4Run.cc +++ b/source/run/src/G4Run.cc @@ -25,7 +25,7 @@ // // // $Id: G4Run.cc,v 1.11 2006/11/23 00:06:49 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4Run.hh" diff --git a/source/run/src/G4RunManager.cc b/source/run/src/G4RunManager.cc index 9002d45316..4d96dbc622 100644 --- a/source/run/src/G4RunManager.cc +++ b/source/run/src/G4RunManager.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4RunManager.cc,v 1.103 2007/06/20 17:00:23 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4RunManager.cc,v 1.108 2007/11/09 13:57:39 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -135,6 +135,7 @@ void G4RunManager::BeamOn(G4int n_event,const char* macroFile,G4int n_select) if(cond) { numberOfEventToBeProcessed = n_event; + ConstructScoringWorlds(); RunInitialization(); if(n_event>0) DoEventLoop(n_event,macroFile,n_select); RunTermination(); @@ -194,11 +195,6 @@ void G4RunManager::RunInitialization() HepRandom::saveFullState(oss); randomNumberStatusForThisRun = oss.str(); currentRun->SetRandomNumberStatus(randomNumberStatusForThisRun); - - if(storeRandomNumberStatus) { - G4String fileN = randomNumberStatusDir + "currentRun.rndm"; - HepRandom::saveEngineStatus(fileN); - } previousEvents->clear(); for(G4int i_prev=0;i_prevBeginOfRunAction(currentRun); + if(storeRandomNumberStatus) { + G4String fileN = randomNumberStatusDir + "currentRun.rndm"; + HepRandom::saveEngineStatus(fileN); + } + runAborted = false; if(verboseLevel>0) G4cout << "Start Run processing." << G4endl; @@ -233,6 +234,7 @@ void G4RunManager::DoEventLoop(G4int n_event,const char* macroFile,G4int n_selec currentEvent = GenerateEvent(i_event); eventManager->ProcessOneEvent(currentEvent); AnalyzeEvent(currentEvent); + UpdateScoring(); if(i_eventApplyCommand(msg); StackPreviousEvent(currentEvent); currentEvent = 0; @@ -477,4 +479,71 @@ void G4RunManager::DumpRegion(G4Region* region) const kernel->DumpRegion(region); } +#include "G4ScoringManager.hh" +#include "G4TransportationManager.hh" +#include "G4VScoringMesh.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" +#include "G4ProcessManager.hh" +#include "G4ParallelWorldScoringProcess.hh" +#include "G4HCofThisEvent.hh" +#include "G4VHitsCollection.hh" + +void G4RunManager::ConstructScoringWorlds() +{ + G4ScoringManager* ScM = G4ScoringManager::GetScoringManagerIfExist(); + if(!ScM) return; + G4int nPar = ScM->GetNumberOfMesh(); + if(nPar<1) return; + + G4ParticleTable::G4PTblDicIterator* theParticleIterator + = G4ParticleTable::GetParticleTable()->GetIterator(); + for(G4int iw=0;iwGetMesh(iw); + G4VPhysicalVolume* pWorld + = G4TransportationManager::GetTransportationManager() + ->IsWorldExisting(ScM->GetWorldName(iw)); + if(!pWorld) + { + pWorld = G4TransportationManager::GetTransportationManager() + ->GetParallelWorld(ScM->GetWorldName(iw)); + pWorld->SetName(ScM->GetWorldName(iw)); + + G4ParallelWorldScoringProcess* theParallelWorldScoringProcess + = new G4ParallelWorldScoringProcess(ScM->GetWorldName(iw)); + theParallelWorldScoringProcess->SetParallelWorld(ScM->GetWorldName(iw)); + + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + pmanager->AddProcess(theParallelWorldScoringProcess); + pmanager->SetProcessOrderingToLast(theParallelWorldScoringProcess, idxAtRest); + pmanager->SetProcessOrderingToSecond(theParallelWorldScoringProcess, idxAlongStep); + pmanager->SetProcessOrderingToLast(theParallelWorldScoringProcess, idxPostStep); + } + } + mesh->Construct(pWorld); + } + GeometryHasBeenModified(); +} + +void G4RunManager::UpdateScoring() +{ + G4ScoringManager* ScM = G4ScoringManager::GetScoringManagerIfExist(); + if(!ScM) return; + G4int nPar = ScM->GetNumberOfMesh(); + if(nPar<1) return; + + G4HCofThisEvent* HCE = currentEvent->GetHCofThisEvent(); + if(!HCE) return; + G4int nColl = HCE->GetCapacity(); + for(G4int i=0;iGetHC(i); + if(HC) ScM->Accumulate(HC); + } +} + diff --git a/source/run/src/G4RunManagerKernel.cc b/source/run/src/G4RunManagerKernel.cc index 001ff4019e..eba74b2243 100644 --- a/source/run/src/G4RunManagerKernel.cc +++ b/source/run/src/G4RunManagerKernel.cc @@ -25,7 +25,7 @@ // // // $Id: G4RunManagerKernel.cc,v 1.41 2007/05/30 00:42:09 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/run/src/G4RunMessenger.cc b/source/run/src/G4RunMessenger.cc index 342c1ee0d3..b19671f1bd 100644 --- a/source/run/src/G4RunMessenger.cc +++ b/source/run/src/G4RunMessenger.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4RunMessenger.cc,v 1.24 2007/03/08 23:54:04 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4RunMessenger.cc,v 1.31 2007/11/16 22:37:43 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4RunMessenger.hh" @@ -41,6 +41,8 @@ #include "G4ProductionCutsTable.hh" #include "G4ios.hh" #include "G4MaterialScanner.hh" +#include "G4Tokenizer.hh" +#include "Randomize.hh" #include G4RunMessenger::G4RunMessenger(G4RunManager * runMgr) @@ -149,13 +151,28 @@ G4RunMessenger::G4RunMessenger(G4RunManager * runMgr) cutCmd = new G4UIcmdWithoutParameter("/run/cutoffModified",this); cutCmd->SetGuidance("/run/cutoffModified becomes obsolete."); cutCmd->SetGuidance("It is safe to remove invoking this command."); + + constScoreCmd = new G4UIcmdWithoutParameter("/run/constructScoringWorlds",this); + constScoreCmd->SetGuidance("Constrct scoring parallel world(s) if defined."); + constScoreCmd->SetGuidance("This command is not mandatory, but automatically called when a run starts."); + constScoreCmd->SetGuidance("But the user may use this to visualize the scoring world(s) before a run to start."); + constScoreCmd->AvailableForStates(G4State_Idle); + + materialScanner = new G4MaterialScanner(); randomDirectory = new G4UIdirectory("/random/"); randomDirectory->SetGuidance("Random number status control commands."); + + seedCmd = new G4UIcmdWithAString("/random/setSeeds",this); + seedCmd->SetGuidance("Initialize the random number generator with integer seed stream."); + seedCmd->SetGuidance("Number of integers should be more than 1."); + seedCmd->SetGuidance("Actual number of integers to be used depends on the individual random number engine."); + seedCmd->SetParameterName("IntArray",false); + seedCmd->AvailableForStates(G4State_PreInit,G4State_Idle,G4State_GeomClosed); randDirCmd = new G4UIcmdWithAString("/random/setDirectoryName",this); randDirCmd->SetGuidance("Define the directory name of the rndm status files."); - randDirCmd->SetGuidance("Directory must be creates before storing the files."); + randDirCmd->SetGuidance("Directory will be created if it does not exist."); randDirCmd->SetParameterName("fileName",true); randDirCmd->SetDefaultValue("./"); randDirCmd->AvailableForStates(G4State_PreInit,G4State_Idle,G4State_GeomClosed); @@ -226,8 +243,6 @@ G4RunMessenger::G4RunMessenger(G4RunManager * runMgr) restoreRandOld->SetParameterName("fileName",true); restoreRandOld->SetDefaultValue("currentRun.rndm"); restoreRandOld->AvailableForStates(G4State_PreInit,G4State_Idle,G4State_GeomClosed); - - materialScanner = new G4MaterialScanner(); } G4RunMessenger::~G4RunMessenger() @@ -248,9 +263,11 @@ G4RunMessenger::~G4RunMessenger() delete cutCmd; delete randEvtCmd; delete randDirOld; delete storeRandOld; delete restoreRandOld; + delete constScoreCmd; delete runDirectory; delete randDirCmd; + delete seedCmd; delete savingFlagCmd; delete saveThisRunCmd; delete saveThisEventCmd; @@ -303,7 +320,23 @@ void G4RunMessenger::SetNewValue(G4UIcommand * command,G4String newValue) { runManager->PhysicsHasBeenModified(); } else if( command==cutCmd ) { runManager->CutOffHasBeenModified(); } - + + else if( command==seedCmd ) + { + G4Tokenizer next(newValue); + G4int idx=0; + long seeds[100]; + G4String vl; + while(!(vl=next()).isNull()) + { seeds[idx] = (long)(StoI(vl)); idx++; } + if(idx<2) + { G4cerr << "/random/setSeeds should have at least two integers. Command ignored." << G4endl; } + else + { + seeds[idx] = 0; + CLHEP::HepRandom::setTheSeeds(seeds); + } + } else if( command==randDirCmd ) { runManager->SetRandomNumberStoreDir(newValue); } else if( command==savingFlagCmd ) @@ -320,18 +353,24 @@ void G4RunMessenger::SetNewValue(G4UIcommand * command,G4String newValue) else if( command==randDirOld ) {G4cout << "warning: deprecated command. Use /random/setDirectoryName" << G4endl; - runManager->SetRandomNumberStoreDir(newValue); } + // runManager->SetRandomNumberStoreDir(newValue); + } else if( command==storeRandOld ) {G4cout << "warning: deprecated command. Use /random/setSavingFlag" << G4endl; - G4int frequency = storeRandOld->GetNewIntValue(newValue); - G4bool flag = false; - if(frequency != 0) flag = true; - runManager->SetRandomNumberStore(flag); } + // G4int frequency = storeRandOld->GetNewIntValue(newValue); + // G4bool flag = false; + // if(frequency != 0) flag = true; + // runManager->SetRandomNumberStore(flag); + } else if( command==restoreRandOld ) {G4cout << "warning: deprecated command. Use /random/resetEngineFrom" << G4endl; - runManager->RestoreRandomNumberStatus(newValue); } + // runManager->RestoreRandomNumberStatus(newValue); + } + else if( command==constScoreCmd ) + { runManager->ConstructScoringWorlds(); } + } G4String G4RunMessenger::GetCurrentValue(G4UIcommand * command) diff --git a/source/run/src/G4UserPhysicsListMessenger.cc b/source/run/src/G4UserPhysicsListMessenger.cc index 060ecf7cda..63cd04f7f3 100644 --- a/source/run/src/G4UserPhysicsListMessenger.cc +++ b/source/run/src/G4UserPhysicsListMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4UserPhysicsListMessenger.cc,v 1.28 2007/05/30 10:34:54 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/run/src/G4UserRunAction.cc b/source/run/src/G4UserRunAction.cc index 52eea11732..af18b9c4ba 100644 --- a/source/run/src/G4UserRunAction.cc +++ b/source/run/src/G4UserRunAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4UserRunAction.cc,v 1.8 2006/06/29 21:13:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4UserRunAction.hh" diff --git a/source/run/src/G4VModularPhysicsList.cc b/source/run/src/G4VModularPhysicsList.cc index 4a19ddc5c2..04b6eaa429 100644 --- a/source/run/src/G4VModularPhysicsList.cc +++ b/source/run/src/G4VModularPhysicsList.cc @@ -25,7 +25,7 @@ // // // $Id: G4VModularPhysicsList.cc,v 1.4 2007/06/15 07:26:55 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/run/src/G4VPersistencyManager.cc b/source/run/src/G4VPersistencyManager.cc index e0ca491bee..889c5866d5 100644 --- a/source/run/src/G4VPersistencyManager.cc +++ b/source/run/src/G4VPersistencyManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4VPersistencyManager.cc,v 1.5 2006/06/29 21:14:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4VPersistencyManager.hh" diff --git a/source/run/src/G4VUserDetectorConstruction.cc b/source/run/src/G4VUserDetectorConstruction.cc index c9b646a823..dabf0b288b 100644 --- a/source/run/src/G4VUserDetectorConstruction.cc +++ b/source/run/src/G4VUserDetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: G4VUserDetectorConstruction.cc,v 1.8 2007/05/03 17:59:18 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4VUserDetectorConstruction.hh" diff --git a/source/run/src/G4VUserParallelWorld.cc b/source/run/src/G4VUserParallelWorld.cc index 381619fadf..8f580f0be6 100644 --- a/source/run/src/G4VUserParallelWorld.cc +++ b/source/run/src/G4VUserParallelWorld.cc @@ -25,7 +25,7 @@ // // // $Id: G4VUserParallelWorld.cc,v 1.2 2006/12/13 15:49:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4VUserParallelWorld.hh" diff --git a/source/run/src/G4VUserPhysicsList.cc b/source/run/src/G4VUserPhysicsList.cc index 83a8250dab..715b12c8c3 100644 --- a/source/run/src/G4VUserPhysicsList.cc +++ b/source/run/src/G4VUserPhysicsList.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VUserPhysicsList.cc,v 1.61 2007/05/30 10:16:28 ahoward Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VUserPhysicsList.cc,v 1.62 2007/09/23 17:33:00 asaim Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ @@ -223,6 +223,7 @@ void G4VUserPhysicsList::RemoveProcessManager() #include "G4Transportation.hh" #include "G4CoupledTransportation.hh" #include "G4RunManagerKernel.hh" +#include "G4ScoringManager.hh" void G4VUserPhysicsList::AddTransportation() { @@ -230,7 +231,7 @@ void G4VUserPhysicsList::AddTransportation() G4VProcess* theTransportationProcess = 0; G4int nParaWorld = G4RunManagerKernel::GetRunManagerKernel()->GetNumberOfParallelWorld(); - if(nParaWorld || useCoupledTransportation) + if(nParaWorld || useCoupledTransportation || G4ScoringManager::GetScoringManagerIfExist()) { theTransportationProcess = new G4CoupledTransportation(verboseLevelTransport); G4cout << "#############################################################################" << G4endl diff --git a/source/run/src/G4VUserPrimaryGeneratorAction.cc b/source/run/src/G4VUserPrimaryGeneratorAction.cc index ea0127b222..eaf2ccfea1 100644 --- a/source/run/src/G4VUserPrimaryGeneratorAction.cc +++ b/source/run/src/G4VUserPrimaryGeneratorAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4VUserPrimaryGeneratorAction.cc,v 1.5 2006/06/29 21:14:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4VUserPrimaryGeneratorAction.hh" diff --git a/source/track/History b/source/track/History index 2b53b7d5e4..a56f4f131e 100644 --- a/source/track/History +++ b/source/track/History @@ -1,4 +1,4 @@ -$Id: History,v 1.96 2007/03/30 01:04:36 kurasige Exp $ +$Id: History,v 1.99 2007/10/02 00:46:21 kurasige Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,13 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Oct. 02, 2007 Hisaya Kurashige (track-V09-00-02) +- Add protection in G4Track::GetVolume to avoid core dump + +Aug. 07, 2007 Hisaya Kurashige (track-V09-00-01) +- Add get method for non-ionizing energy deposit in G4Step + + Mar 30, 07 Hisaya Kurashige (track-V08-02-02) - Fix weight treatment in G4ParticleChange diff --git a/source/track/include/G4FieldTrackUpdator.hh b/source/track/include/G4FieldTrackUpdator.hh index 822b6f9383..933072d156 100644 --- a/source/track/include/G4FieldTrackUpdator.hh +++ b/source/track/include/G4FieldTrackUpdator.hh @@ -25,7 +25,7 @@ // // // $Id: G4FieldTrackUpdator.hh,v 1.2 2006/12/13 15:49:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // M. Asai - first implementation Apr/28/2006 // diff --git a/source/track/include/G4ForceCondition.hh b/source/track/include/G4ForceCondition.hh index 7505ac4cb6..fca09a3d29 100644 --- a/source/track/include/G4ForceCondition.hh +++ b/source/track/include/G4ForceCondition.hh @@ -25,7 +25,7 @@ // // // $Id: G4ForceCondition.hh,v 1.5 2006/06/29 21:14:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4GPILSelection.hh b/source/track/include/G4GPILSelection.hh index 493879767b..0487af8f1e 100644 --- a/source/track/include/G4GPILSelection.hh +++ b/source/track/include/G4GPILSelection.hh @@ -25,7 +25,7 @@ // // // $Id: G4GPILSelection.hh,v 1.4 2006/06/29 21:14:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4ParticleChange.hh b/source/track/include/G4ParticleChange.hh index 957d1d51fa..3f860b5c5d 100644 --- a/source/track/include/G4ParticleChange.hh +++ b/source/track/include/G4ParticleChange.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChange.hh,v 1.13 2007/03/11 07:19:06 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ParticleChange.icc b/source/track/include/G4ParticleChange.icc index 2bbf13bef0..dd5dedb4f9 100644 --- a/source/track/include/G4ParticleChange.icc +++ b/source/track/include/G4ParticleChange.icc @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChange.icc,v 1.14 2007/03/11 07:19:06 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // inline diff --git a/source/track/include/G4ParticleChangeForDecay.hh b/source/track/include/G4ParticleChangeForDecay.hh index a7482460e1..c00a5b9ab7 100644 --- a/source/track/include/G4ParticleChangeForDecay.hh +++ b/source/track/include/G4ParticleChangeForDecay.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChangeForDecay.hh,v 1.9 2006/06/29 21:14:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/track/include/G4ParticleChangeForGamma.hh b/source/track/include/G4ParticleChangeForGamma.hh index ffdd989835..afe272a1af 100644 --- a/source/track/include/G4ParticleChangeForGamma.hh +++ b/source/track/include/G4ParticleChangeForGamma.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChangeForGamma.hh,v 1.8 2006/08/28 16:10:06 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ParticleChangeForLoss.hh b/source/track/include/G4ParticleChangeForLoss.hh index b41bc54d08..cbda7970fa 100644 --- a/source/track/include/G4ParticleChangeForLoss.hh +++ b/source/track/include/G4ParticleChangeForLoss.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChangeForLoss.hh,v 1.19 2006/08/28 16:10:06 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ParticleChangeForMSC.icc b/source/track/include/G4ParticleChangeForMSC.icc index 53efc39381..5aa6dc6496 100644 --- a/source/track/include/G4ParticleChangeForMSC.icc +++ b/source/track/include/G4ParticleChangeForMSC.icc @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChangeForMSC.icc,v 1.7 2006/06/29 21:14:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/track/include/G4ParticleChangeForRadDecay.hh b/source/track/include/G4ParticleChangeForRadDecay.hh index 0156404637..736be327c7 100644 --- a/source/track/include/G4ParticleChangeForRadDecay.hh +++ b/source/track/include/G4ParticleChangeForRadDecay.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChangeForRadDecay.hh,v 1.7 2006/06/29 21:14:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ParticleChangeForTransport.hh b/source/track/include/G4ParticleChangeForTransport.hh index f6a46ddfbf..267b0217a5 100644 --- a/source/track/include/G4ParticleChangeForTransport.hh +++ b/source/track/include/G4ParticleChangeForTransport.hh @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChangeForTransport.hh,v 1.16 2006/06/29 21:14:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ParticleChangeForTransport.icc b/source/track/include/G4ParticleChangeForTransport.icc index 37b59c3ce2..107dabbf9c 100644 --- a/source/track/include/G4ParticleChangeForTransport.icc +++ b/source/track/include/G4ParticleChangeForTransport.icc @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChangeForTransport.icc,v 1.13 2006/06/29 21:14:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // inline diff --git a/source/track/include/G4Step.hh b/source/track/include/G4Step.hh index 57a8aac659..0bb09d7557 100644 --- a/source/track/include/G4Step.hh +++ b/source/track/include/G4Step.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Step.hh,v 1.17 2007/03/25 22:54:52 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Step.hh,v 1.18 2007/08/07 15:14:01 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- @@ -108,6 +108,10 @@ class G4Step G4double GetTotalEnergyDeposit() const; void SetTotalEnergyDeposit(G4double value); + // total non-ionizing energy deposit + G4double GetNonIonizingEnergyDeposit() const; + void SetNonIonizingEnergyDeposit(G4double value); + // cotrole flag for stepping G4SteppingControl GetControlFlag() const; void SetControlFlag(G4SteppingControl StepControlFlag); diff --git a/source/track/include/G4Step.icc b/source/track/include/G4Step.icc index 51d581dd3c..483e73c24f 100644 --- a/source/track/include/G4Step.icc +++ b/source/track/include/G4Step.icc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Step.icc,v 1.16 2007/03/25 22:54:52 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Step.icc,v 1.18 2007/08/08 05:58:21 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- @@ -112,8 +112,20 @@ inline } inline - void G4Step::AddTotalEnergyDeposit(G4double value) + G4double G4Step::GetNonIonizingEnergyDeposit() const { + return fNonIonizingEnergyDeposit; + } + +inline + void G4Step::SetNonIonizingEnergyDeposit(G4double value) + { + fNonIonizingEnergyDeposit = value; + } + +inline + void G4Step::AddTotalEnergyDeposit(G4double value) + { fTotalEnergyDeposit += value; } diff --git a/source/track/include/G4StepPoint.hh b/source/track/include/G4StepPoint.hh index 29282978b9..b99e56c6ae 100644 --- a/source/track/include/G4StepPoint.hh +++ b/source/track/include/G4StepPoint.hh @@ -25,7 +25,7 @@ // // // $Id: G4StepPoint.hh,v 1.18 2007/03/11 07:19:06 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4StepPoint.icc b/source/track/include/G4StepPoint.icc index 5ea195c2db..606af29a4e 100644 --- a/source/track/include/G4StepPoint.icc +++ b/source/track/include/G4StepPoint.icc @@ -25,7 +25,7 @@ // // // $Id: G4StepPoint.icc,v 1.13 2007/03/11 07:19:06 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/track/include/G4StepStatus.hh b/source/track/include/G4StepStatus.hh index 10711b7ed3..57b892d6b1 100644 --- a/source/track/include/G4StepStatus.hh +++ b/source/track/include/G4StepStatus.hh @@ -25,7 +25,7 @@ // // // $Id: G4StepStatus.hh,v 1.4 2006/06/29 21:14:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4SteppingControl.hh b/source/track/include/G4SteppingControl.hh index 36b216a2c3..becc348040 100644 --- a/source/track/include/G4SteppingControl.hh +++ b/source/track/include/G4SteppingControl.hh @@ -25,7 +25,7 @@ // // // $Id: G4SteppingControl.hh,v 1.4 2006/06/29 21:14:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4Track.hh b/source/track/include/G4Track.hh index 4f06aa4033..e86dc656fc 100644 --- a/source/track/include/G4Track.hh +++ b/source/track/include/G4Track.hh @@ -25,7 +25,7 @@ // // // $Id: G4Track.hh,v 1.18 2006/06/29 21:14:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4Track.icc b/source/track/include/G4Track.icc index 537c008820..e5a16554d4 100644 --- a/source/track/include/G4Track.icc +++ b/source/track/include/G4Track.icc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Track.icc,v 1.14 2006/06/29 21:14:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Track.icc,v 1.15 2007/10/02 00:46:21 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //----------------------------------------------------------------- // Definitions of inline functions @@ -112,10 +112,12 @@ // volume inline G4VPhysicalVolume* G4Track::GetVolume() const - { return fpTouchable->GetVolume(); } + { if ( fpTouchable ==0 ) return 0; + return fpTouchable->GetVolume(); } inline G4VPhysicalVolume* G4Track::GetNextVolume() const - { return fpNextTouchable->GetVolume(); } + { if ( fpNextTouchable ==0 ) return 0; + return fpNextTouchable->GetVolume(); } // material inline diff --git a/source/track/include/G4TrackFastVector.hh b/source/track/include/G4TrackFastVector.hh index aaa44ac968..fe35371074 100644 --- a/source/track/include/G4TrackFastVector.hh +++ b/source/track/include/G4TrackFastVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4TrackFastVector.hh,v 1.5 2006/06/29 21:14:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4TrackStatus.hh b/source/track/include/G4TrackStatus.hh index 6e2c2ae786..85b9e77984 100644 --- a/source/track/include/G4TrackStatus.hh +++ b/source/track/include/G4TrackStatus.hh @@ -25,7 +25,7 @@ // // // $Id: G4TrackStatus.hh,v 1.4 2006/06/29 21:14:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4TrackVector.hh b/source/track/include/G4TrackVector.hh index 2323f1523d..cdba8221be 100644 --- a/source/track/include/G4TrackVector.hh +++ b/source/track/include/G4TrackVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4TrackVector.hh,v 1.2 2006/07/17 13:48:28 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/track/include/G4VParticleChange.hh b/source/track/include/G4VParticleChange.hh index 726a8bda02..7c4cc4accb 100644 --- a/source/track/include/G4VParticleChange.hh +++ b/source/track/include/G4VParticleChange.hh @@ -25,7 +25,7 @@ // // // $Id: G4VParticleChange.hh,v 1.16 2007/03/25 22:54:52 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4VParticleChange.icc b/source/track/include/G4VParticleChange.icc index 31aef7e4f4..061e8d0fb5 100644 --- a/source/track/include/G4VParticleChange.icc +++ b/source/track/include/G4VParticleChange.icc @@ -25,7 +25,7 @@ // // // $Id: G4VParticleChange.icc,v 1.16 2007/03/25 22:54:52 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // remove obsolete methods of SetXXX 19 Sep, 04 H.Kurashige //---------------------------------------------------------------- diff --git a/source/track/include/G4VUserTrackInformation.hh b/source/track/include/G4VUserTrackInformation.hh index e3cfa60202..82bf34c260 100644 --- a/source/track/include/G4VUserTrackInformation.hh +++ b/source/track/include/G4VUserTrackInformation.hh @@ -25,7 +25,7 @@ // // // $Id: G4VUserTrackInformation.hh,v 1.6 2006/06/29 21:14:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/track/src/G4FieldTrackUpdator.cc b/source/track/src/G4FieldTrackUpdator.cc index f961d01c9f..7145c1fea0 100644 --- a/source/track/src/G4FieldTrackUpdator.cc +++ b/source/track/src/G4FieldTrackUpdator.cc @@ -25,7 +25,7 @@ // // // $Id: G4FieldTrackUpdator.cc,v 1.2 2006/12/13 15:49:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // M. Asai - first implementation Apr/28/2006 // diff --git a/source/track/src/G4ParticleChange.cc b/source/track/src/G4ParticleChange.cc index 9f5240b68c..55e9fe39c2 100644 --- a/source/track/src/G4ParticleChange.cc +++ b/source/track/src/G4ParticleChange.cc @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChange.cc,v 1.30 2007/03/30 01:03:53 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/track/src/G4ParticleChangeForDecay.cc b/source/track/src/G4ParticleChangeForDecay.cc index e9933a1aad..b39352f9b8 100644 --- a/source/track/src/G4ParticleChangeForDecay.cc +++ b/source/track/src/G4ParticleChangeForDecay.cc @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChangeForDecay.cc,v 1.11 2006/06/29 21:15:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/track/src/G4ParticleChangeForGamma.cc b/source/track/src/G4ParticleChangeForGamma.cc index debcdf241f..adeee58404 100644 --- a/source/track/src/G4ParticleChangeForGamma.cc +++ b/source/track/src/G4ParticleChangeForGamma.cc @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChangeForGamma.cc,v 1.3 2006/08/28 16:10:29 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/track/src/G4ParticleChangeForLoss.cc b/source/track/src/G4ParticleChangeForLoss.cc index 39a798d21a..6cd02393f2 100644 --- a/source/track/src/G4ParticleChangeForLoss.cc +++ b/source/track/src/G4ParticleChangeForLoss.cc @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChangeForLoss.cc,v 1.16 2006/08/28 16:10:29 vnivanch Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/track/src/G4ParticleChangeForMSC.cc b/source/track/src/G4ParticleChangeForMSC.cc index e8f569e5aa..65b022af14 100644 --- a/source/track/src/G4ParticleChangeForMSC.cc +++ b/source/track/src/G4ParticleChangeForMSC.cc @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChangeForMSC.cc,v 1.13 2006/06/29 21:15:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/track/src/G4ParticleChangeForTransport.cc b/source/track/src/G4ParticleChangeForTransport.cc index b258813f75..859ae9c9b8 100644 --- a/source/track/src/G4ParticleChangeForTransport.cc +++ b/source/track/src/G4ParticleChangeForTransport.cc @@ -25,7 +25,7 @@ // // // $Id: G4ParticleChangeForTransport.cc,v 1.19 2006/11/03 17:45:04 japost Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/track/src/G4Step.cc b/source/track/src/G4Step.cc index b2d4759220..faafc1fa98 100644 --- a/source/track/src/G4Step.cc +++ b/source/track/src/G4Step.cc @@ -25,7 +25,7 @@ // // // $Id: G4Step.cc,v 1.7 2006/10/30 09:50:13 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/track/src/G4StepPoint.cc b/source/track/src/G4StepPoint.cc index f59bd84831..154dd827bf 100644 --- a/source/track/src/G4StepPoint.cc +++ b/source/track/src/G4StepPoint.cc @@ -25,7 +25,7 @@ // // // $Id: G4StepPoint.cc,v 1.13 2007/03/11 07:19:06 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/track/src/G4Track.cc b/source/track/src/G4Track.cc index d454265675..1653bfd876 100644 --- a/source/track/src/G4Track.cc +++ b/source/track/src/G4Track.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Track.cc,v 1.29 2006/06/29 21:15:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4Track.cc,v 1.30 2007/10/02 00:46:21 kurasige Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- @@ -182,8 +182,10 @@ G4double G4Track::GetVelocity() const if ( this->GetStep() ){ mat= this->GetMaterial(); // Fix for repeated volumes }else{ - mat=fpTouchable->GetVolume()->GetLogicalVolume()->GetMaterial(); - } + if (fpTouchable!=0){ + mat=fpTouchable->GetVolume()->GetLogicalVolume()->GetMaterial(); + } + } // check if previous step is in the same volume // and get new GROUPVELOVITY table if necessary if ((mat != prev_mat)||(groupvel==0)) { diff --git a/source/track/src/G4VParticleChange.cc b/source/track/src/G4VParticleChange.cc index d3c8e20070..7918d6427a 100644 --- a/source/track/src/G4VParticleChange.cc +++ b/source/track/src/G4VParticleChange.cc @@ -25,7 +25,7 @@ // // // $Id: G4VParticleChange.cc,v 1.20 2007/03/25 22:54:52 kurasige Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/track/src/G4VUserTrackInformation.cc b/source/track/src/G4VUserTrackInformation.cc index 28f3ca9648..34ce02bdb1 100644 --- a/source/track/src/G4VUserTrackInformation.cc +++ b/source/track/src/G4VUserTrackInformation.cc @@ -25,7 +25,7 @@ // // // $Id: G4VUserTrackInformation.cc,v 1.2 2006/06/29 21:15:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // -------------------------------------------------------------- diff --git a/source/tracking/History b/source/tracking/History index f5acd1925a..39c1768b5a 100644 --- a/source/tracking/History +++ b/source/tracking/History @@ -1,5 +1,5 @@ -$Id: History,v 1.118 2007/05/09 18:08:24 asaim Exp $ -$Name: geant4-09-00 $ +$Id: History,v 1.121 2007/10/09 03:51:06 tsasaki Exp $ +$Name: geant4-09-01 $ ------------------------------------------------------------------- ========================================================= @@ -18,6 +18,13 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +08 Oct 2007 T.Sasaki (tracking-V09-00-01) +- G4SteppingManager.hh: use kCarTolerance in CalculateSafety() instead of zero + +04 Oct 2007 T.Sasaki (tracking-V09-00-00) +- G4SteppingManager: fix to use kCarTolerance in Stepping() for the + computation of 'endPointSafety'. + 9th May 2007 M.Asai (tracking-V08-03-00) - Allowing regional user stepping action. diff --git a/source/tracking/include/G4RichTrajectory.hh b/source/tracking/include/G4RichTrajectory.hh index 100dbbd14e..c110c4b6f1 100644 --- a/source/tracking/include/G4RichTrajectory.hh +++ b/source/tracking/include/G4RichTrajectory.hh @@ -25,7 +25,7 @@ // // // $Id: G4RichTrajectory.hh,v 1.4 2006/06/29 21:15:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/include/G4RichTrajectoryPoint.hh b/source/tracking/include/G4RichTrajectoryPoint.hh index 9c344529f8..7d21451379 100644 --- a/source/tracking/include/G4RichTrajectoryPoint.hh +++ b/source/tracking/include/G4RichTrajectoryPoint.hh @@ -25,7 +25,7 @@ // // // $Id: G4RichTrajectoryPoint.hh,v 1.5 2006/09/27 20:42:52 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/include/G4SmoothTrajectory.hh b/source/tracking/include/G4SmoothTrajectory.hh index 765a6d801d..d05ce01934 100644 --- a/source/tracking/include/G4SmoothTrajectory.hh +++ b/source/tracking/include/G4SmoothTrajectory.hh @@ -25,7 +25,7 @@ // // // $Id: G4SmoothTrajectory.hh,v 1.11 2006/06/29 21:15:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/include/G4SmoothTrajectoryPoint.hh b/source/tracking/include/G4SmoothTrajectoryPoint.hh index fd1881e988..06ad55fdf0 100644 --- a/source/tracking/include/G4SmoothTrajectoryPoint.hh +++ b/source/tracking/include/G4SmoothTrajectoryPoint.hh @@ -25,7 +25,7 @@ // // // $Id: G4SmoothTrajectoryPoint.hh,v 1.13 2006/06/29 21:15:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/include/G4SteppingManager.hh b/source/tracking/include/G4SteppingManager.hh index 88518ce264..9ff05115dd 100644 --- a/source/tracking/include/G4SteppingManager.hh +++ b/source/tracking/include/G4SteppingManager.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SteppingManager.hh,v 1.29 2006/12/13 15:49:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SteppingManager.hh,v 1.31 2007/10/09 03:51:06 tsasaki Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // @@ -273,6 +273,8 @@ public: //without description G4SteppingControl StepControlFlag; + G4double kCarTolerance; + // Cached geometrical tolerance on surface G4double proposedSafety; // This keeps the minimum safety value proposed by AlongStepGPILs. G4ThreeVector endpointSafOrigin; @@ -490,7 +492,7 @@ public: //without description inline G4double G4SteppingManager::CalculateSafety(){ return std::max( endpointSafety - (endpointSafOrigin - fPostStepPoint->GetPosition()).mag(), - 0.); + kCarTolerance ); } diff --git a/source/tracking/include/G4SteppingVerbose.hh b/source/tracking/include/G4SteppingVerbose.hh index 72422cc89d..3c07226bf8 100644 --- a/source/tracking/include/G4SteppingVerbose.hh +++ b/source/tracking/include/G4SteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: G4SteppingVerbose.hh,v 1.12 2006/06/29 21:15:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/include/G4TrackingManager.hh b/source/tracking/include/G4TrackingManager.hh index ec955defae..a5f443e750 100644 --- a/source/tracking/include/G4TrackingManager.hh +++ b/source/tracking/include/G4TrackingManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4TrackingManager.hh,v 1.21 2006/11/14 10:58:47 tsasaki Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/include/G4TrackingMessenger.hh b/source/tracking/include/G4TrackingMessenger.hh index 96b8a32e30..500d3a9453 100644 --- a/source/tracking/include/G4TrackingMessenger.hh +++ b/source/tracking/include/G4TrackingMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4TrackingMessenger.hh,v 1.10 2006/06/29 21:15:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/include/G4Trajectory.hh b/source/tracking/include/G4Trajectory.hh index f57d01246f..40ccaad2ca 100644 --- a/source/tracking/include/G4Trajectory.hh +++ b/source/tracking/include/G4Trajectory.hh @@ -25,7 +25,7 @@ // // // $Id: G4Trajectory.hh,v 1.24 2006/06/29 21:15:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/include/G4TrajectoryPoint.hh b/source/tracking/include/G4TrajectoryPoint.hh index 6960eec7c5..a8450e6f81 100644 --- a/source/tracking/include/G4TrajectoryPoint.hh +++ b/source/tracking/include/G4TrajectoryPoint.hh @@ -25,7 +25,7 @@ // // // $Id: G4TrajectoryPoint.hh,v 1.17 2006/06/29 21:15:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/include/G4UserSteppingAction.hh b/source/tracking/include/G4UserSteppingAction.hh index b15c63608b..e9e576a704 100644 --- a/source/tracking/include/G4UserSteppingAction.hh +++ b/source/tracking/include/G4UserSteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4UserSteppingAction.hh,v 1.12 2006/06/29 21:15:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/include/G4UserTrackingAction.hh b/source/tracking/include/G4UserTrackingAction.hh index 3da9281a77..5c11bfac12 100644 --- a/source/tracking/include/G4UserTrackingAction.hh +++ b/source/tracking/include/G4UserTrackingAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4UserTrackingAction.hh,v 1.11 2006/06/29 21:15:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4VSteppingVerbose.hh b/source/tracking/include/G4VSteppingVerbose.hh index 495e2537c1..78d6a29957 100644 --- a/source/tracking/include/G4VSteppingVerbose.hh +++ b/source/tracking/include/G4VSteppingVerbose.hh @@ -25,7 +25,7 @@ // // // $Id: G4VSteppingVerbose.hh,v 1.24 2006/11/14 10:58:47 tsasaki Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/include/G4VTrajectory.hh b/source/tracking/include/G4VTrajectory.hh index 600411283a..a62ad22888 100644 --- a/source/tracking/include/G4VTrajectory.hh +++ b/source/tracking/include/G4VTrajectory.hh @@ -25,7 +25,7 @@ // // // $Id: G4VTrajectory.hh,v 1.17 2006/06/29 21:15:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/include/G4VTrajectoryPoint.hh b/source/tracking/include/G4VTrajectoryPoint.hh index bde53b98be..380f6cf42b 100644 --- a/source/tracking/include/G4VTrajectoryPoint.hh +++ b/source/tracking/include/G4VTrajectoryPoint.hh @@ -25,7 +25,7 @@ // // // $Id: G4VTrajectoryPoint.hh,v 1.15 2006/06/29 21:15:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/src/G4RichTrajectory.cc b/source/tracking/src/G4RichTrajectory.cc index 1bf728c23e..8699d346b0 100644 --- a/source/tracking/src/G4RichTrajectory.cc +++ b/source/tracking/src/G4RichTrajectory.cc @@ -25,7 +25,7 @@ // // // $Id: G4RichTrajectory.cc,v 1.6 2006/10/16 13:43:43 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // --------------------------------------------------------------- // diff --git a/source/tracking/src/G4RichTrajectoryPoint.cc b/source/tracking/src/G4RichTrajectoryPoint.cc index 45f8ba4b6f..f0bd9583ce 100644 --- a/source/tracking/src/G4RichTrajectoryPoint.cc +++ b/source/tracking/src/G4RichTrajectoryPoint.cc @@ -25,7 +25,7 @@ // // // $Id: G4RichTrajectoryPoint.cc,v 1.3 2006/09/27 20:42:52 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/tracking/src/G4SmoothTrajectory.cc b/source/tracking/src/G4SmoothTrajectory.cc index d550ce291d..62aafa9536 100644 --- a/source/tracking/src/G4SmoothTrajectory.cc +++ b/source/tracking/src/G4SmoothTrajectory.cc @@ -25,7 +25,7 @@ // // // $Id: G4SmoothTrajectory.cc,v 1.18 2006/10/16 13:37:17 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/tracking/src/G4SmoothTrajectoryPoint.cc b/source/tracking/src/G4SmoothTrajectoryPoint.cc index 2663d950fe..9712b9d926 100644 --- a/source/tracking/src/G4SmoothTrajectoryPoint.cc +++ b/source/tracking/src/G4SmoothTrajectoryPoint.cc @@ -25,7 +25,7 @@ // // // $Id: G4SmoothTrajectoryPoint.cc,v 1.15 2006/06/29 21:16:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // --------------------------------------------------------------- diff --git a/source/tracking/src/G4SteppingManager.cc b/source/tracking/src/G4SteppingManager.cc index a788112ed6..0622d9cb9f 100644 --- a/source/tracking/src/G4SteppingManager.cc +++ b/source/tracking/src/G4SteppingManager.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4SteppingManager.cc,v 1.45 2007/04/28 01:49:19 asaim Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4SteppingManager.cc,v 1.48 2007/10/04 07:35:28 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // @@ -51,6 +51,7 @@ #include "G4TransportationManager.hh" #include "G4UserLimits.hh" #include "G4VSensitiveDetector.hh" // Include from 'hits/digi' +#include "G4GeometryTolerance.hh" ////////////////////////////////////// G4SteppingManager::G4SteppingManager() @@ -90,7 +91,7 @@ G4SteppingManager::G4SteppingManager() ->GetNavigatorForTracking()); physIntLength = DBL_MAX; -// fTouchableHandle = new G4TouchableHistory(); + kCarTolerance = 0.5*G4GeometryTolerance::GetInstance()->GetSurfaceTolerance(); } /////////////////////////////////////// @@ -195,7 +196,8 @@ G4StepStatus G4SteppingManager::Stepping() // Update safety after invocation of all AlongStepDoIts endpointSafOrigin= fPostStepPoint->GetPosition(); - endpointSafety= std::max( proposedSafety - GeomStepLength, 0.); +// endpointSafety= std::max( proposedSafety - GeomStepLength, 0.); + endpointSafety= std::max( proposedSafety - GeomStepLength, kCarTolerance); fStep->GetPostStepPoint()->SetSafety( endpointSafety ); diff --git a/source/tracking/src/G4SteppingManager2.cc b/source/tracking/src/G4SteppingManager2.cc index c7ecc02846..40a0a97397 100644 --- a/source/tracking/src/G4SteppingManager2.cc +++ b/source/tracking/src/G4SteppingManager2.cc @@ -25,7 +25,7 @@ // // // $Id: G4SteppingManager2.cc,v 1.29 2006/06/29 21:16:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/src/G4SteppingVerbose.cc b/source/tracking/src/G4SteppingVerbose.cc index 3b0742022f..2d28931850 100644 --- a/source/tracking/src/G4SteppingVerbose.cc +++ b/source/tracking/src/G4SteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: G4SteppingVerbose.cc,v 1.23 2006/07/14 14:13:57 tsasaki Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/src/G4TrackingManager.cc b/source/tracking/src/G4TrackingManager.cc index 7da138aae8..c7dc86e227 100644 --- a/source/tracking/src/G4TrackingManager.cc +++ b/source/tracking/src/G4TrackingManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4TrackingManager.cc,v 1.22 2006/11/14 10:58:47 tsasaki Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/src/G4TrackingMessenger.cc b/source/tracking/src/G4TrackingMessenger.cc index cd70e43244..e4a187894a 100644 --- a/source/tracking/src/G4TrackingMessenger.cc +++ b/source/tracking/src/G4TrackingMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4TrackingMessenger.cc,v 1.15 2006/11/03 11:13:38 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/src/G4Trajectory.cc b/source/tracking/src/G4Trajectory.cc index 5d460e8efa..e7b458a839 100644 --- a/source/tracking/src/G4Trajectory.cc +++ b/source/tracking/src/G4Trajectory.cc @@ -25,7 +25,7 @@ // // // $Id: G4Trajectory.cc,v 1.32 2006/10/16 13:39:35 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // --------------------------------------------------------------- // diff --git a/source/tracking/src/G4TrajectoryPoint.cc b/source/tracking/src/G4TrajectoryPoint.cc index a378346d45..380c4cc5dd 100644 --- a/source/tracking/src/G4TrajectoryPoint.cc +++ b/source/tracking/src/G4TrajectoryPoint.cc @@ -25,7 +25,7 @@ // // // $Id: G4TrajectoryPoint.cc,v 1.19 2006/06/29 21:16:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // --------------------------------------------------------------- // diff --git a/source/tracking/src/G4UserSteppingAction.cc b/source/tracking/src/G4UserSteppingAction.cc index c6ea4c276b..6ce4a7f3c7 100644 --- a/source/tracking/src/G4UserSteppingAction.cc +++ b/source/tracking/src/G4UserSteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4UserSteppingAction.cc,v 1.10 2006/06/29 21:16:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // --------------------------------------------------------------- // diff --git a/source/tracking/src/G4UserTrackingAction.cc b/source/tracking/src/G4UserTrackingAction.cc index a88c51760e..7b6f22ce28 100644 --- a/source/tracking/src/G4UserTrackingAction.cc +++ b/source/tracking/src/G4UserTrackingAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4UserTrackingAction.cc,v 1.10 2006/06/29 21:16:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // --------------------------------------------------------------- // diff --git a/source/tracking/src/G4VSteppingVerbose.cc b/source/tracking/src/G4VSteppingVerbose.cc index 61a9ce8845..2b0cf4135d 100644 --- a/source/tracking/src/G4VSteppingVerbose.cc +++ b/source/tracking/src/G4VSteppingVerbose.cc @@ -25,7 +25,7 @@ // // // $Id: G4VSteppingVerbose.cc,v 1.18 2006/11/14 10:58:47 tsasaki Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/tracking/src/G4VTrajectory.cc b/source/tracking/src/G4VTrajectory.cc index 793f53f608..d73e8a12c5 100644 --- a/source/tracking/src/G4VTrajectory.cc +++ b/source/tracking/src/G4VTrajectory.cc @@ -25,7 +25,7 @@ // // // $Id: G4VTrajectory.cc,v 1.12 2006/10/16 13:45:01 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // --------------------------------------------------------------- // diff --git a/source/tracking/src/G4VTrajectoryPoint.cc b/source/tracking/src/G4VTrajectoryPoint.cc index c08cc3d740..01d3257303 100644 --- a/source/tracking/src/G4VTrajectoryPoint.cc +++ b/source/tracking/src/G4VTrajectoryPoint.cc @@ -25,7 +25,7 @@ // // // $Id: G4VTrajectoryPoint.cc,v 1.4 2006/06/29 21:16:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //--------------------------------------------------------------- // diff --git a/source/visualization/FukuiRenderer/include/G4DAWNFILE.hh b/source/visualization/FukuiRenderer/include/G4DAWNFILE.hh index be5fdc546e..5e1d410c79 100644 --- a/source/visualization/FukuiRenderer/include/G4DAWNFILE.hh +++ b/source/visualization/FukuiRenderer/include/G4DAWNFILE.hh @@ -25,7 +25,7 @@ // // // $Id: G4DAWNFILE.hh,v 1.9 2006/06/29 21:16:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Satoshi TANAKA // DAWNFILE driver factory. diff --git a/source/visualization/FukuiRenderer/include/G4DAWNFILESceneHandler.hh b/source/visualization/FukuiRenderer/include/G4DAWNFILESceneHandler.hh index 0a701eb596..d3f0c5eb0e 100644 --- a/source/visualization/FukuiRenderer/include/G4DAWNFILESceneHandler.hh +++ b/source/visualization/FukuiRenderer/include/G4DAWNFILESceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4DAWNFILESceneHandler.hh,v 1.16 2006/06/29 21:16:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Satoshi TANAKA diff --git a/source/visualization/FukuiRenderer/include/G4DAWNFILEViewer.hh b/source/visualization/FukuiRenderer/include/G4DAWNFILEViewer.hh index 6d8c9881a3..5d2d92a5f6 100644 --- a/source/visualization/FukuiRenderer/include/G4DAWNFILEViewer.hh +++ b/source/visualization/FukuiRenderer/include/G4DAWNFILEViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4DAWNFILEViewer.hh,v 1.10 2006/06/29 21:16:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Satoshi TANAKA // DAWNFILE viewer - opens window, hard copy, etc. diff --git a/source/visualization/FukuiRenderer/include/G4FRClientServer.hh b/source/visualization/FukuiRenderer/include/G4FRClientServer.hh index 572cea78df..53a0d00958 100644 --- a/source/visualization/FukuiRenderer/include/G4FRClientServer.hh +++ b/source/visualization/FukuiRenderer/include/G4FRClientServer.hh @@ -25,7 +25,7 @@ // // // $Id: G4FRClientServer.hh,v 1.7 2006/06/29 21:16:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Satoshi TANAKA, Wed Jul 3 14:13:52 JST 1996 //////////////////////////////// diff --git a/source/visualization/FukuiRenderer/include/G4FRConst.hh b/source/visualization/FukuiRenderer/include/G4FRConst.hh index 3e2d22ea43..fd88f82526 100644 --- a/source/visualization/FukuiRenderer/include/G4FRConst.hh +++ b/source/visualization/FukuiRenderer/include/G4FRConst.hh @@ -25,7 +25,7 @@ // // // $Id: G4FRConst.hh,v 1.7 2006/06/29 21:16:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Satoshi TANAKA, Tue Jul 2 15:30:49 JST 1996 /////////////////////////////////// diff --git a/source/visualization/FukuiRenderer/include/G4FRFeatures.hh b/source/visualization/FukuiRenderer/include/G4FRFeatures.hh index c8f912f2af..9939507a93 100644 --- a/source/visualization/FukuiRenderer/include/G4FRFeatures.hh +++ b/source/visualization/FukuiRenderer/include/G4FRFeatures.hh @@ -25,7 +25,7 @@ // // // $Id: G4FRFeatures.hh,v 1.6 2006/06/29 21:16:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #if !defined G4_FR_FEATURES_HH #define G4_FR_FEATURES_HH diff --git a/source/visualization/FukuiRenderer/include/G4FRSceneFunc.icc b/source/visualization/FukuiRenderer/include/G4FRSceneFunc.icc index 42164ab4d1..f6f87568a7 100644 --- a/source/visualization/FukuiRenderer/include/G4FRSceneFunc.icc +++ b/source/visualization/FukuiRenderer/include/G4FRSceneFunc.icc @@ -25,7 +25,7 @@ // // // $Id: G4FRSceneFunc.icc,v 1.15 2006/07/10 15:31:45 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4PhysicalVolumeModel.hh" diff --git a/source/visualization/FukuiRenderer/include/G4FRofstream.hh b/source/visualization/FukuiRenderer/include/G4FRofstream.hh index 2123b9f1cd..03ea47d7fc 100644 --- a/source/visualization/FukuiRenderer/include/G4FRofstream.hh +++ b/source/visualization/FukuiRenderer/include/G4FRofstream.hh @@ -25,7 +25,7 @@ // // // $Id: G4FRofstream.hh,v 1.9 2006/06/29 21:16:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include diff --git a/source/visualization/FukuiRenderer/include/G4FukuiRenderer.hh b/source/visualization/FukuiRenderer/include/G4FukuiRenderer.hh index 6bc5161b03..90893f9502 100644 --- a/source/visualization/FukuiRenderer/include/G4FukuiRenderer.hh +++ b/source/visualization/FukuiRenderer/include/G4FukuiRenderer.hh @@ -25,7 +25,7 @@ // // // $Id: G4FukuiRenderer.hh,v 1.8 2006/06/29 21:16:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Satoshi TANAKA diff --git a/source/visualization/FukuiRenderer/include/G4FukuiRendererSceneHandler.hh b/source/visualization/FukuiRenderer/include/G4FukuiRendererSceneHandler.hh index 3222c93fcc..d8ba51645b 100644 --- a/source/visualization/FukuiRenderer/include/G4FukuiRendererSceneHandler.hh +++ b/source/visualization/FukuiRenderer/include/G4FukuiRendererSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4FukuiRendererSceneHandler.hh,v 1.15 2006/06/29 21:16:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Satoshi TANAKA, Fri Jun 28 11:19:19 JST 1996 diff --git a/source/visualization/FukuiRenderer/include/G4FukuiRendererViewer.hh b/source/visualization/FukuiRenderer/include/G4FukuiRendererViewer.hh index a36e9a0370..86c303742d 100644 --- a/source/visualization/FukuiRenderer/include/G4FukuiRendererViewer.hh +++ b/source/visualization/FukuiRenderer/include/G4FukuiRendererViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4FukuiRendererViewer.hh,v 1.8 2006/06/29 21:16:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Satoshi TANAKA, Fri Jun 28 12:10:14 JST 1996 diff --git a/source/visualization/FukuiRenderer/src/G4DAWNFILE.cc b/source/visualization/FukuiRenderer/src/G4DAWNFILE.cc index bcb025719c..b1b50dd5b2 100644 --- a/source/visualization/FukuiRenderer/src/G4DAWNFILE.cc +++ b/source/visualization/FukuiRenderer/src/G4DAWNFILE.cc @@ -25,7 +25,7 @@ // // // $Id: G4DAWNFILE.cc,v 1.11 2006/06/29 21:16:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Satoshi TANAKA // DAWNFILE factory. diff --git a/source/visualization/FukuiRenderer/src/G4DAWNFILESceneHandler.cc b/source/visualization/FukuiRenderer/src/G4DAWNFILESceneHandler.cc index a1ec36b9ed..3ccfbac9df 100644 --- a/source/visualization/FukuiRenderer/src/G4DAWNFILESceneHandler.cc +++ b/source/visualization/FukuiRenderer/src/G4DAWNFILESceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4DAWNFILESceneHandler.cc,v 1.18 2006/06/29 21:16:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Satoshi TANAKA // DAWNFILE scene. diff --git a/source/visualization/FukuiRenderer/src/G4DAWNFILEViewer.cc b/source/visualization/FukuiRenderer/src/G4DAWNFILEViewer.cc index b879d1ee4d..196f120fd3 100644 --- a/source/visualization/FukuiRenderer/src/G4DAWNFILEViewer.cc +++ b/source/visualization/FukuiRenderer/src/G4DAWNFILEViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4DAWNFILEViewer.cc,v 1.20 2006/06/29 21:16:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Satoshi TANAKA // DAWNFILE view - opens window, hard copy, etc. diff --git a/source/visualization/FukuiRenderer/src/G4FRClientServer.cc b/source/visualization/FukuiRenderer/src/G4FRClientServer.cc index 257de30a1d..5a09c2b223 100644 --- a/source/visualization/FukuiRenderer/src/G4FRClientServer.cc +++ b/source/visualization/FukuiRenderer/src/G4FRClientServer.cc @@ -25,7 +25,7 @@ // // // $Id: G4FRClientServer.cc,v 1.6 2006/06/29 21:16:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Satoshi TANAKA, Wed Jul 3 14:14:29 JST 1996 //////////////////////////////// diff --git a/source/visualization/FukuiRenderer/src/G4FukuiRenderer.cc b/source/visualization/FukuiRenderer/src/G4FukuiRenderer.cc index 429683f1b4..e7532d9e20 100644 --- a/source/visualization/FukuiRenderer/src/G4FukuiRenderer.cc +++ b/source/visualization/FukuiRenderer/src/G4FukuiRenderer.cc @@ -25,7 +25,7 @@ // // // $Id: G4FukuiRenderer.cc,v 1.9 2006/06/29 21:16:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Satoshi TANAKA diff --git a/source/visualization/FukuiRenderer/src/G4FukuiRendererSceneHandler.cc b/source/visualization/FukuiRenderer/src/G4FukuiRendererSceneHandler.cc index 99d0ecc162..6591621544 100644 --- a/source/visualization/FukuiRenderer/src/G4FukuiRendererSceneHandler.cc +++ b/source/visualization/FukuiRenderer/src/G4FukuiRendererSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4FukuiRendererSceneHandler.cc,v 1.14 2006/06/29 21:17:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Satoshi TANAKA, Fri Jun 28 11:34:24 JST 1996 diff --git a/source/visualization/FukuiRenderer/src/G4FukuiRendererViewer.cc b/source/visualization/FukuiRenderer/src/G4FukuiRendererViewer.cc index 7770524819..c503836f6f 100644 --- a/source/visualization/FukuiRenderer/src/G4FukuiRendererViewer.cc +++ b/source/visualization/FukuiRenderer/src/G4FukuiRendererViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4FukuiRendererViewer.cc,v 1.11 2006/06/29 21:17:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Satoshi TANAKA, Fri Jun 28 12:09:11 JST 1996 diff --git a/source/visualization/HepRep/History b/source/visualization/HepRep/History index 68dc4f8c43..a3fc46a031 100644 --- a/source/visualization/HepRep/History +++ b/source/visualization/HepRep/History @@ -1,4 +1,4 @@ -.$Id: History,v 1.126 2007/05/22 17:05:26 allison Exp $ +.$Id: History,v 1.127 2007/11/16 20:29:04 perl Exp $ ------------------------------------------------------------------- ========================================================= @@ -20,6 +20,12 @@ committal in the CVS repository ! History file for visualization/HepRep sub-category -------------------------------------------------- +16 Nov 2007 Joseph Perl (vis-HepRep-V09-00-01) +- Adjust geometry hierarchy in G4HepRepFileSceneHandler to accomodate + parallel worlds. Where used to just have world at top of hierarchy, + now have world or worlds as one level below top level of geometry. +- Cleaned up G4HepRepSceneHandler (just removing inaccurate old comment). + 22 May 2007 John Allison (vis-HepRep-V08-03-00) - Fixed memory leak in G4HepRepFile. diff --git a/source/visualization/HepRep/README b/source/visualization/HepRep/README index 0d964caeea..2c3dfba5f3 100644 --- a/source/visualization/HepRep/README +++ b/source/visualization/HepRep/README @@ -1,8 +1,9 @@ This G4 Graphics Driver creates a HepRep File suitable for viewing -by the WIRED Event Display client. It requires no external packages. +by the HepRApp, Wired4 or FRED Event Display clients. +It requires no external packages. The HepRep graphics format is further described at -http://heprep.freehep.org +http://www.slac.stanford.edu/~perl/heprep/ Two different drivers are available for either HepRep1 or HepRep2. @@ -33,15 +34,15 @@ choose to make them visible from within the heprep browser). To force culling of invisible objects, set G44HEPREPFILE_CULL -View the file using the WIRED3 HepRep Browser, available from: -http://www.slac.stanford.edu/BFROOT/www/Computing/Graphics/Wired/ +View the file using the HepRApp HepRep Browser, available from: +http://www.slac.stanford.edu/~perl/HepRApp -WIRED can read xml files in zipped format as well as unzipped, +HepRApp can read xml files in zipped format as well as unzipped, so you can save space by applying gzip to the xml file. This will reduce the file to about five percent of its original size. Joseph Perl -2 June 2005 +15 November 2007 Driver: HepRepXML diff --git a/source/visualization/HepRep/include/G4HepRep.hh b/source/visualization/HepRep/include/G4HepRep.hh index 772a2d6559..063927e66a 100644 --- a/source/visualization/HepRep/include/G4HepRep.hh +++ b/source/visualization/HepRep/include/G4HepRep.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HepRep.hh,v 1.17 2006/06/29 21:17:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /** diff --git a/source/visualization/HepRep/include/G4HepRepFile.hh b/source/visualization/HepRep/include/G4HepRepFile.hh index 8c261a6d54..5cecc3e3d2 100644 --- a/source/visualization/HepRep/include/G4HepRepFile.hh +++ b/source/visualization/HepRep/include/G4HepRepFile.hh @@ -25,7 +25,7 @@ // // // $Id: G4HepRepFile.hh,v 1.8 2006/06/29 21:17:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/HepRep/include/G4HepRepFileSceneHandler.hh b/source/visualization/HepRep/include/G4HepRepFileSceneHandler.hh index 6c349f63d6..54c33b5364 100644 --- a/source/visualization/HepRep/include/G4HepRepFileSceneHandler.hh +++ b/source/visualization/HepRep/include/G4HepRepFileSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4HepRepFileSceneHandler.hh,v 1.29 2006/06/29 21:17:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Joseph Perl 27th January 2002 diff --git a/source/visualization/HepRep/include/G4HepRepFileViewer.hh b/source/visualization/HepRep/include/G4HepRepFileViewer.hh index 5e29f5c1e4..a961ffb8d3 100644 --- a/source/visualization/HepRep/include/G4HepRepFileViewer.hh +++ b/source/visualization/HepRep/include/G4HepRepFileViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4HepRepFileViewer.hh,v 1.9 2006/06/29 21:17:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/HepRep/include/G4HepRepMessenger.hh b/source/visualization/HepRep/include/G4HepRepMessenger.hh index 53739f2064..27465aa7d9 100644 --- a/source/visualization/HepRep/include/G4HepRepMessenger.hh +++ b/source/visualization/HepRep/include/G4HepRepMessenger.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HepRepMessenger.hh,v 1.7 2006/06/29 21:17:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // #ifndef G4HepRepMessenger_HH diff --git a/source/visualization/HepRep/include/G4HepRepSceneHandler.hh b/source/visualization/HepRep/include/G4HepRepSceneHandler.hh index 2b4e5768e4..731caea93e 100644 --- a/source/visualization/HepRep/include/G4HepRepSceneHandler.hh +++ b/source/visualization/HepRep/include/G4HepRepSceneHandler.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HepRepSceneHandler.hh,v 1.42 2006/11/06 09:22:26 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /** diff --git a/source/visualization/HepRep/include/G4HepRepViewer.hh b/source/visualization/HepRep/include/G4HepRepViewer.hh index 32dd1d1058..32ecaaa13c 100644 --- a/source/visualization/HepRep/include/G4HepRepViewer.hh +++ b/source/visualization/HepRep/include/G4HepRepViewer.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HepRepViewer.hh,v 1.18 2006/06/29 21:17:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /** diff --git a/source/visualization/HepRep/src/G4HepRep.cc b/source/visualization/HepRep/src/G4HepRep.cc index b2acbe4947..63786ecf66 100644 --- a/source/visualization/HepRep/src/G4HepRep.cc +++ b/source/visualization/HepRep/src/G4HepRep.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HepRep.cc,v 1.22 2006/06/29 21:17:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /** diff --git a/source/visualization/HepRep/src/G4HepRepFile.cc b/source/visualization/HepRep/src/G4HepRepFile.cc index 781c7f981d..b60957eda1 100644 --- a/source/visualization/HepRep/src/G4HepRepFile.cc +++ b/source/visualization/HepRep/src/G4HepRepFile.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HepRepFile.cc,v 1.11 2007/05/22 17:05:26 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Joseph Perl 1 October 2001 diff --git a/source/visualization/HepRep/src/G4HepRepFileSceneHandler.cc b/source/visualization/HepRep/src/G4HepRepFileSceneHandler.cc index 0de5020989..9c8ced1351 100644 --- a/source/visualization/HepRep/src/G4HepRepFileSceneHandler.cc +++ b/source/visualization/HepRep/src/G4HepRepFileSceneHandler.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HepRepFileSceneHandler.cc,v 1.64 2006/11/16 21:06:11 perl Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4HepRepFileSceneHandler.cc,v 1.65 2007/11/16 20:29:04 perl Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Joseph Perl 27th January 2002 @@ -586,7 +586,6 @@ void G4HepRepFileSceneHandler::AddCompound (const G4VTrajectory& traj) { // Do not write out the Aux or Pos attribute. Aux does not conform to the HepRep rule // that each object can have only one instance of a given AttValue. // Both of these attributes are redundant to actual position information of the point. - // New Wired can just tell the user the point position itself. if (strcmp(iAttVal->GetName(),"Aux-X")!=0 && strcmp(iAttVal->GetName(),"Aux-Y")!=0 && strcmp(iAttVal->GetName(),"Aux-Z")!=0 && @@ -708,7 +707,6 @@ void G4HepRepFileSceneHandler::AddCompound (const G4VTrajectory& traj) { // Do not write out the Aux or Pos attribute. Aux does not conform to the HepRep rule // that each object can have only one instance of a given AttValue. // Both of these attributes are redundant to actual position information of the point. - // New Wired can just tell the user the point position itself. if (strcmp(iAttVal->GetName(),"Aux-X")!=0 && strcmp(iAttVal->GetName(),"Aux-Y")!=0 && strcmp(iAttVal->GetName(),"Aux-Z")!=0 && @@ -818,7 +816,6 @@ void G4HepRepFileSceneHandler::AddCompound (const G4VTrajectory& traj) { // Do not write out the Aux or Pos attribute. Aux does not conform to the HepRep rule // that each object can have only one instance of a given AttValue. // Both of these attributes are redundant to actual position information of the point. - // New Wired can just tell the user the point position itself. if (strcmp(iAttVal->GetName(),"Aux-X")!=0 && strcmp(iAttVal->GetName(),"Aux-Y")!=0 && strcmp(iAttVal->GetName(),"Aux-Z")!=0 && @@ -1391,42 +1388,45 @@ void G4HepRepFileSceneHandler::AddHepRepInstance(const char* primName, // replacing G4's top geometry level name "worldPhysical" with the // name "Detector Geometry". } else { + //G4cout << "CurrentDepth" << currentDepth << G4endl; + //G4cout << "currentName" << pCurrentPV->GetName() << G4endl; if (strcmp("Detector Geometry",hepRepXMLWriter->prevTypeName[0])!=0) { + //G4cout << "Adding Det Geom type" << G4endl; hepRepXMLWriter->addType("Detector Geometry",0); hepRepXMLWriter->addInstance(); } // Re-insert any layers of the hierarchy that were removed by G4's culling process. // Don't bother checking if same type name as last instance. - if(strcmp(hepRepXMLWriter->prevTypeName[currentDepth],pCurrentPV->GetName())!=0) { + if(strcmp(hepRepXMLWriter->prevTypeName[currentDepth+1],pCurrentPV->GetName())!=0) { //G4cout << "Looking for mother of:" << pCurrentLV->GetName() << G4endl; typedef G4PhysicalVolumeModel::G4PhysicalVolumeNodeID PVNodeID; typedef std::vector PVPath; const PVPath& drawnPVPath = pPVModel->GetDrawnPVPath(); PVPath::const_reverse_iterator ri = ++drawnPVPath.rbegin(); - G4int drawnMotherDepth = 0; + G4int drawnMotherDepth; if (ri != drawnPVPath.rend()) { // This volume has a mother. drawnMotherDepth = ri->GetNonCulledDepth(); + //G4cout << "drawnMotherDepth" << drawnMotherDepth << G4endl; } else { // This volume has no mother. Must be a top level volume. + drawnMotherDepth = -1; //G4cout << "Mother must be very top" << G4endl; } while (drawnMotherDepth < (currentDepth-1)) { G4String culledParentName = "Culled parent of " + pCurrentPV->GetName(); - //G4cout << "Inserting culled layer " << culledParentName << " at depth:" << drawnMotherDepth+1 << G4endl; - hepRepXMLWriter->addType(culledParentName, drawnMotherDepth+1); + //G4cout << "Inserting culled layer " << culledParentName << " at depth:" << drawnMotherDepth+2 << G4endl; + hepRepXMLWriter->addType(culledParentName, drawnMotherDepth+2); hepRepXMLWriter->addInstance(); drawnMotherDepth ++; } } - if (currentDepth!=0) { - // Add the HepRepType for the current volume. - hepRepXMLWriter->addType(pCurrentPV->GetName(),currentDepth); - hepRepXMLWriter->addInstance(); - } + // Add the HepRepType for the current volume. + hepRepXMLWriter->addType(pCurrentPV->GetName(),currentDepth+1); + hepRepXMLWriter->addInstance(); if (fpVisAttribs && (fpVisAttribs->IsVisible()==0) && cullInvisibleObjects) return; diff --git a/source/visualization/HepRep/src/G4HepRepFileViewer.cc b/source/visualization/HepRep/src/G4HepRepFileViewer.cc index cdbcbe6591..b2cdc73d26 100644 --- a/source/visualization/HepRep/src/G4HepRepFileViewer.cc +++ b/source/visualization/HepRep/src/G4HepRepFileViewer.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HepRepFileViewer.cc,v 1.15 2006/06/29 21:17:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4HepRepFileViewer.hh" diff --git a/source/visualization/HepRep/src/G4HepRepMessenger.cc b/source/visualization/HepRep/src/G4HepRepMessenger.cc index 66eafcfead..544eab1345 100644 --- a/source/visualization/HepRep/src/G4HepRepMessenger.cc +++ b/source/visualization/HepRep/src/G4HepRepMessenger.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HepRepMessenger.cc,v 1.10 2006/06/29 21:17:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4HepRepMessenger.hh" diff --git a/source/visualization/HepRep/src/G4HepRepSceneHandler.cc b/source/visualization/HepRep/src/G4HepRepSceneHandler.cc index db15828362..14054366d6 100644 --- a/source/visualization/HepRep/src/G4HepRepSceneHandler.cc +++ b/source/visualization/HepRep/src/G4HepRepSceneHandler.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4HepRepSceneHandler.cc,v 1.100 2006/11/16 12:17:54 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4HepRepSceneHandler.cc,v 1.101 2007/11/16 20:29:04 perl Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // /** @@ -1241,10 +1241,7 @@ void G4HepRepSceneHandler::addAttVals(HepRepAttribute* attribute, const map::iterator attValIterator = attValues->begin(); attValIterator != attValues->end(); attValIterator++) { - // Use GetDesc rather than GetName once WIRED can handle names with spaces in them. - //attribute->addAttValue(iAttDef->second.GetDesc(), iAttVal->GetValue()); - + for (vector::iterator attValIterator = attValues->begin(); attValIterator != attValues->end(); attValIterator++) { G4String name = attValIterator->GetName(); HepRepPoint* point = dynamic_cast(attribute); diff --git a/source/visualization/HepRep/src/G4HepRepViewer.cc b/source/visualization/HepRep/src/G4HepRepViewer.cc index 237b167a8e..3e44f7ebd9 100644 --- a/source/visualization/HepRep/src/G4HepRepViewer.cc +++ b/source/visualization/HepRep/src/G4HepRepViewer.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HepRepViewer.cc,v 1.26 2006/06/29 21:17:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /** diff --git a/source/visualization/History b/source/visualization/History index 1d0f267335..90e925f0b7 100644 --- a/source/visualization/History +++ b/source/visualization/History @@ -1,4 +1,4 @@ -$Id: History,v 1.413 2007/06/14 15:26:57 allison Exp $ +$Id: History,v 1.418 2007/11/19 19:56:26 perl Exp $ ------------------------------------------------------------------- ========================================================= @@ -24,6 +24,22 @@ committal in the CVS repository ! History file for visualization category --------------------------------------- +19th November 2007 Joseph Perl (vis-V09-00-03) +- visman-V09-00-02: Replace references to Wired3 in command guidance +- vis-HepRep-V09-00-01: Adjust geometry hierarchy for parallel worlds. +- opengl-V09-00-04: Added GEANT4_QT_DEBUG flag to more places + +13th November 2007 John Allison (vis-V09-00-02) +- Removed OpenGL Qt files from tag. File are still at head - need fixing. + +10th November 2007 John Allison (vis-V09-00-01) +- opengl-V09-00-01: Minor improvements in design and messaging. +- modeling-V09-00-00: Minor improvements in messaging. +- visman-V09-00-01:Minor improvement in messaging. + +10th July 2007 John Allison (vis-V09-00-00) +- visman-V09-00-00: Remove redundant method declarations and minor tidies. + 14th June 2007 John Allison (vis-V08-03-07) - raytracer-V08-03-01: Fixed memory leak in G4RayTracer. diff --git a/source/visualization/OpenGL/History b/source/visualization/OpenGL/History index e133b97f2d..e4299fca27 100644 --- a/source/visualization/OpenGL/History +++ b/source/visualization/OpenGL/History @@ -1,4 +1,4 @@ -$Id: History,v 1.93 2007/05/25 15:41:38 allison Exp $ +$Id: History,v 1.103 2007/11/19 19:45:39 perl Exp $ ------------------------------------------------------------------- ========================================================= @@ -20,12 +20,63 @@ committal in the CVS repository ! History file for visualization/OpenGL ------------------------------------- +19th November 2007 Joseph Perl (for Laurent Garnier) (opengl-V09-00-04) +- Added GEANT4_QT_DEBUG flag to more places + +15th November 2007 John Allison (opengl-V09-00-03) +- Re-introduced Qt files, now properly protected by cpp flags. +- cpp flags also added to some other files not previously properly protected. + +15 Nov 2007, Laurent Garnier + - G4UIQt,G4Qt : Adding a GEANT4_QT_DEBUG flag to hide all debug messages + - G4UIQt,G4Qt : Compilation improvements for Qt3 + - G4UIQt,G4Qt : Minors corrections on G4UIQt helpWidget + +14 Nov 2007, Laurent Garnier + - G4OpenGLStoredQtViewer.cc : Correction of a bug with mouse move event in + Qt4 + - G4OpenGLQtExportDialog_moc.cc, G4OpenGLQtViewer.cc, G4OpenGLQtViewer_moc.cc : + Adding protection for Qt version between 4.0 and 4.2 + +13th November 2007 John Allison (opengl-V09-00-02) +- Removed Qt files from tag. File are still at head - need fixing. + +13 Nov 2007, Laurent Garnier + - G4UIQt,G4Qt : Moving all moc in one big file interface/G4UIQT_moc.cc, + including Qt3 and Qt4 moc support + +10th November 2007 John Allison (opengl-V09-00-01) +- Moved WinSize_x, y to base class G4OpenGLViewer. +- Minor improvement in guidance for /vis/ogl/printEPS. + +09 Nov 2007, Laurent Garnier + - G4UIQt,G4Qt : Change all include directive to be compatible with Qt3 + +08 Nov 2007, Laurent Garnier + - moc_G4OpenGLQtExportDialog.cc move in G4OpenGLQtExportDialog_moc.cc + - moc_G4OpenGLQtViewer.cc move to G4OpenGLQtViewer_moc.cc + +27 Sept 2007, Laurent Garnier + - Adding sur files for G4UIQt driver : + - G4OpenGLImmediateQt.cc + - G4OpenGLImmediateQtViewer.cc + - G4OpenGLQtExportDialog.cc + - G4OpenGLQtViewer.cc + - G4OpenGLStoredQt.cc + - G4OpenGLStoredQtViewer.cc + - moc_G4OpenGLQtExportDialog.cc + - moc_G4OpenGLQtViewer.cc + +28th September 2007 lgarnier +- first import of G4UI Qt files : Do not try to compil them + +21st August 2007 John Allison (opengl-V09-00-00) +- Removed redundant G4OpenGLXViewerMessenger. + 25th May 2007 John Allison (opengl-V08-03-03) - G4OpenGLSceneHandler and G4OpenGLXViewerMessenger: Fixed gcc-4.1.2 compiler warnings. -G4OpenGLXViewer: Trapped glXMakeCurrent in Initialise function. - 25th May 2007 John Allison (opengl-V08-03-02) - G4OpenGLXViewer: Trapped glXMakeCurrent in Initialise function. diff --git a/source/visualization/OpenGL/include/G4OpenGL.hh b/source/visualization/OpenGL/include/G4OpenGL.hh index c2ec71cce5..464b7073a7 100644 --- a/source/visualization/OpenGL/include/G4OpenGL.hh +++ b/source/visualization/OpenGL/include/G4OpenGL.hh @@ -23,11 +23,13 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4OpenGL.hh,v 1.5 2007/02/08 14:01:55 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpenGL.hh,v 1.6 2007/11/15 10:14:23 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // G.Barrand. +#ifdef G4VIS_BUILD_OPENGL_DRIVER + #ifndef G4OpenGL_h #define G4OpenGL_h @@ -41,3 +43,5 @@ #define G4OPENGL_DBL_MAX 1.e308 #endif + +#endif diff --git a/source/visualization/OpenGL/include/G4OpenGLBitMapStore.hh b/source/visualization/OpenGL/include/G4OpenGLBitMapStore.hh index 4d8ab3f52d..bbe236959e 100644 --- a/source/visualization/OpenGL/include/G4OpenGLBitMapStore.hh +++ b/source/visualization/OpenGL/include/G4OpenGLBitMapStore.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLBitMapStore.hh,v 1.1 2007/01/09 10:11:16 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpenGLBitMapStore.hh,v 1.2 2007/11/15 10:14:23 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 6th January 2007 @@ -39,6 +39,7 @@ // glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // glBitmap(size, size, size/2., size/2., 0., 0., circle); +#ifdef G4VIS_BUILD_OPENGL_DRIVER #ifndef G4OPENGLBITMAPSTORE_HH #define G4OPENGLBITMAPSTORE_HH @@ -73,3 +74,5 @@ namespace G4OpenGLBitMapStore { } #endif + +#endif diff --git a/source/visualization/OpenGL/include/G4OpenGLFontBaseStore.hh b/source/visualization/OpenGL/include/G4OpenGLFontBaseStore.hh index 09474d1beb..b5ea9eb1ff 100644 --- a/source/visualization/OpenGL/include/G4OpenGLFontBaseStore.hh +++ b/source/visualization/OpenGL/include/G4OpenGLFontBaseStore.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4OpenGLFontBaseStore.hh,v 1.3 2006/06/29 21:17:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // J.Allison Apr 2005. diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateQt.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateQt.hh new file mode 100644 index 0000000000..13e007cadf --- /dev/null +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateQt.hh @@ -0,0 +1,49 @@ +// +// ******************************************************************** +// * 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: G4OpenGLImmediateQt.hh,v 1.1 2007/09/28 14:44:13 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// OpenGLImmediateQt graphics system factory. + +#if defined (G4VIS_BUILD_OPENGLQT_DRIVER) || defined (G4VIS_USE_OPENGLQT) + +#ifndef G4OPENGLIMMEDIATEQT_HH +#define G4OPENGLIMMEDIATEQT_HH + +#include "G4VGraphicsSystem.hh" + +class G4OpenGLImmediateQt: public G4VGraphicsSystem { +public: + G4OpenGLImmediateQt (); + G4VSceneHandler* CreateSceneHandler (const G4String& name = ""); + G4VViewer* CreateViewer (G4VSceneHandler&, const G4String& name = ""); +}; + +#endif + +#endif diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateQtViewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateQtViewer.hh new file mode 100644 index 0000000000..8826bef3c6 --- /dev/null +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateQtViewer.hh @@ -0,0 +1,71 @@ +// +// ******************************************************************** +// * 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: G4OpenGLImmediateQtViewer.hh,v 1.3 2007/11/09 15:03:21 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// Class G4OpenGLImmediateQtViewer : a class derived from +// G4OpenGLQtViewer and G4OpenGLImmediateViewer. + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#ifndef G4OpenGLIMMEDIATEQTVIEWER_HH +#define G4OpenGLIMMEDIATEQTVIEWER_HH + +#include "G4VViewer.hh" +#include "G4OpenGLImmediateViewer.hh" +#include "G4OpenGLQtViewer.hh" + +#include // include + +#include "globals.hh" + +class G4OpenGLImmediateSceneHandler; + +class G4OpenGLImmediateQtViewer: + public G4OpenGLQtViewer, public G4OpenGLImmediateViewer, public QGLWidget { + +public: + G4OpenGLImmediateQtViewer (G4OpenGLImmediateSceneHandler& scene, + const G4String& name = ""); + ~G4OpenGLImmediateQtViewer (); + void Initialise (); + void initializeGL (); + void DrawView (); + void FinishView (); + void resizeGL(int width,int height); + void paintGL(); + void updateQWidget(); + +private : + int readyToPaint; + int nbPaint; +}; + +#endif + +#endif diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateSceneHandler.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateSceneHandler.hh index 5e90d147af..81e8d2dd92 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateSceneHandler.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateSceneHandler.hh,v 1.13 2007/04/04 16:50:26 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateViewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateViewer.hh index e0b3d4ddfe..189c13caa5 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateViewer.hh,v 1.9 2006/09/04 12:07:59 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateWin32.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateWin32.hh index 0beda18410..bb4637d0e5 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateWin32.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateWin32.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateWin32.hh,v 1.7 2006/06/29 21:17:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // OpenGLImmediateWin32 graphics system factory. diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateWin32Viewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateWin32Viewer.hh index d8718bb9e7..3131639c07 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateWin32Viewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateWin32Viewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateWin32Viewer.hh,v 1.9 2006/06/29 21:17:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class G4OpenGLImmediateWin32Viewer : a class derived from diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateX.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateX.hh index 96068d7045..9949b58dfb 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateX.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateX.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateX.hh,v 1.7 2006/06/29 21:17:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateXViewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateXViewer.hh index 8756af73aa..dfddd712fc 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateXViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateXViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateXViewer.hh,v 1.9 2006/07/03 16:38:13 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateXm.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateXm.hh index bd43fbec9f..c7ca8aaf53 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateXm.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateXm.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateXm.hh,v 1.7 2006/06/29 21:17:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateXmViewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateXmViewer.hh index de06c496b2..268a4f81f4 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateXmViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateXmViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateXmViewer.hh,v 1.9 2006/07/03 16:38:13 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLQtExportDialog.hh b/source/visualization/OpenGL/include/G4OpenGLQtExportDialog.hh new file mode 100644 index 0000000000..a8960539e5 --- /dev/null +++ b/source/visualization/OpenGL/include/G4OpenGLQtExportDialog.hh @@ -0,0 +1,118 @@ +// +// ******************************************************************** +// * 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: G4OpenGLQtExportDialog.hh,v 1.3 2007/11/09 15:03:21 lgarnier Exp $ +// GEANT4 tag $Name: +// +// + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#ifndef G4OPENGLQTEXPORTDIALOG_HH +#define G4OPENGLQTEXPORTDIALOG_HH + +#include + +class QButtonGroup; +class QPushButton; +class QRadioButton; +class QCheckBox; +class QSlider; +class QComboBox; +class QLabel; +class QLineEdit; + +/** The G4OpenGLQtExportDialog class provide a Dialog displaying differents options + for each file format + */ +class G4OpenGLQtExportDialog : public QDialog +{ + Q_OBJECT + +public: + /** Construct a G4OpenGLQtExportDialog + @param parent : parent widget + @param name : name of the saved file with extention + @param height : height of the original file + @param width : width of the original file + */ + G4OpenGLQtExportDialog(QWidget* parent, QString name, int height =0, int width=0); + + /** Destroys G4OpenGLQtExportDialog */ + ~G4OpenGLQtExportDialog(); + + /** @return the value of the slider if format has a slider widget, instead return -1 */ + int getSliderValue(); + + /** return the new width for file if format has a width widget, instead return -1 */ + int getWidth(); + + /** return the new height for file if format has a height widget, instead return -1 */ + int getHeight(); + + /** return the value of the transparency if format has a transparency, instead return -1 */ + bool getTransparency(); + + /** return the numbers of colors in the picture if format has a BW/Color widget, instead return -1 */ + int getNbColor(); + +public slots: + +/** Called by a clic on modify/original size button.This will + invert buttons and hide/unhide size +*/ + void changeSizeBox(bool); + + /** Called by changing value in height lineEdit. If ratio is keep, will also change the width + */ + void textWidthChanged(const QString &); + + /** Called by changing value in width lineEdit. If ratio is keep, will also change the height + */ + void textHeightChanged(const QString &); + +private: + QString f_name, f_type, f_dir; + QLabel* qualityLabel; + bool expAll; + QPushButton* buttonOk; + QPushButton* buttonCancel; + QCheckBox* transparencyEPS,*boxTransparency; + QCheckBox* ratioCheckBox; + QSlider * qualitySlider; + QLabel *formatLabel; + QRadioButton* colorButton,*BWButton; + QRadioButton* original,* modify; + QLineEdit* height,*width; + QWidget* heightWidget,* widthWidget; + int originalWidth; + int originalHeight; + +}; + +#endif + +#endif diff --git a/source/visualization/OpenGL/include/G4OpenGLQtViewer.hh b/source/visualization/OpenGL/include/G4OpenGLQtViewer.hh new file mode 100644 index 0000000000..e1d21f91db --- /dev/null +++ b/source/visualization/OpenGL/include/G4OpenGLQtViewer.hh @@ -0,0 +1,139 @@ +// +// ******************************************************************** +// * 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: G4OpenGLQtViewer.hh,v 1.4 2007/11/13 17:48:51 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// G4OpenGLQtViewer : Class to provide WindowsNT specific +// functionality for OpenGL in GEANT4 + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#ifndef G4OPENGLQTVIEWER_HH +#define G4OPENGLQTVIEWER_HH + +#include "globals.hh" + +#include "G4VViewer.hh" +#include "G4OpenGLSceneHandler.hh" + +#include +#include + +class QGLWidget; +class QDialog; +class QContextMenuEvent; +#if QT_VERSION < 0x040000 +class QPopupMenu; +#else +class QMenu; +#endif +class QImage; +class QAction; + +class G4OpenGLSceneHandler; + +class G4OpenGLQtViewer: public QObject, virtual public G4OpenGLViewer { + + Q_OBJECT + +public: + G4OpenGLQtViewer (G4OpenGLSceneHandler& scene); + virtual ~G4OpenGLQtViewer (); + void SetView (); + void ShowView (); + virtual void updateQWidget()=0; + +protected: + void CreateGLQtContext (); + virtual void CreateMainWindow (QGLWidget*); + void manageContextMenuEvent(QContextMenuEvent *e); + void G4MousePressEvent(QPoint); +#if QT_VERSION < 0x040000 + void G4MouseMoveEvent(int, int, Qt::ButtonState); +#else + void G4MouseMoveEvent(int, int, Qt::MouseButtons); +#endif + + +protected: + G4int WinSize_x; + G4int WinSize_y; + QGLWidget* fWindow; + QDialog* GLWindow; + +private: + void createPopupMenu(); + void createRadioAction(QAction *,QAction *, const std::string&,unsigned int a=1); + void rescaleImage(int, int); + bool generateEPS(QString,int,QImage); + bool generatePS_PDF(QString,int,QImage); + +#if QT_VERSION < 0x040000 + QPopupMenu *fContextMenu; +#else + QMenu *fContextMenu; +#endif + bool fMouseAction; // 1: rotate 0:move + QPoint lastPos; +#if QT_VERSION < 0x040000 + QPopupMenu *fDrawingWireframe; + QPopupMenu *fDrawingLineRemoval; + QPopupMenu *fDrawingSurfaceRemoval; + QPopupMenu *fDrawingLineSurfaceRemoval; +#else + QAction *fDrawingWireframe; + QAction *fDrawingLineRemoval; + QAction *fDrawingSurfaceRemoval; + QAction *fDrawingLineSurfaceRemoval; +#endif + +private slots : + void actionDrawingWireframe(); + void actionDrawingLineRemoval(); + void actionDrawingSurfaceRemoval(); + void actionDrawingLineSurfaceRemoval(); + void actionControlPanels(); + void actionExitG4(); + void actionCreateEPS(); + + void toggleDrawingAction(int); + void toggleMouseAction(bool); + void toggleRepresentation(bool); + void toggleBackground(bool); + void toggleTransparency(bool); + void toggleAntialiasing(bool); + void toggleHaloing(bool); + void toggleAux(bool); + void toggleFullScreen(bool); + + void dialogClosed(); +}; + +#endif + +#endif diff --git a/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh b/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh index 13fd457101..0a3d4d0d27 100644 --- a/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh +++ b/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLSceneHandler.hh,v 1.23 2007/04/04 16:50:26 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenGL/include/G4OpenGLSceneHandler.icc b/source/visualization/OpenGL/include/G4OpenGLSceneHandler.icc index c9a34937f1..75e844b360 100644 --- a/source/visualization/OpenGL/include/G4OpenGLSceneHandler.icc +++ b/source/visualization/OpenGL/include/G4OpenGLSceneHandler.icc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLSceneHandler.icc,v 1.7 2006/06/29 21:17:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 20th January 1998 diff --git a/examples/advanced/medical_linac/include/MedLinacVisManager.hh b/source/visualization/OpenGL/include/G4OpenGLStoredQt.hh similarity index 75% rename from examples/advanced/medical_linac/include/MedLinacVisManager.hh rename to source/visualization/OpenGL/include/G4OpenGLStoredQt.hh index 351f0f718d..ba4de1cfc3 100644 --- a/examples/advanced/medical_linac/include/MedLinacVisManager.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredQt.hh @@ -24,36 +24,26 @@ // ******************************************************************** // // -// $Id: MedLinacVisManager.hh,v 1.5 2006/06/29 16:04:13 gunter Exp $ +// $Id: G4OpenGLStoredQt.hh,v 1.1 2007/09/28 14:44:13 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // -// -// Code developed by: M. Piergentili +// +// OpenGLStoredQt graphics system factory. -//********************************************************************* +#if defined (G4VIS_BUILD_OPENGLQT_DRIVER) || defined (G4VIS_USE_OPENGLQT) -#ifndef MedLinacVisManager_h -#define MedLinacVisManager_h 1 +#ifndef G4OPENGLSTOREDQT_HH +#define G4OPENGLSTOREDQT_HH -#ifdef G4VIS_USE - -#include "G4VisManager.hh" - -//********************************************************************* - -class MedLinacVisManager: public G4VisManager { +#include "G4VGraphicsSystem.hh" +class G4OpenGLStoredQt: public G4VGraphicsSystem { public: - - MedLinacVisManager (); - -private: - - void RegisterGraphicsSystems (); - + G4OpenGLStoredQt (); + G4VSceneHandler* CreateSceneHandler (const G4String& name = ""); + G4VViewer* CreateViewer (G4VSceneHandler&, const G4String& name = ""); }; -//********************************************************************* - #endif #endif diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredQtViewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredQtViewer.hh new file mode 100644 index 0000000000..055943371c --- /dev/null +++ b/source/visualization/OpenGL/include/G4OpenGLStoredQtViewer.hh @@ -0,0 +1,78 @@ +// +// ******************************************************************** +// * 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: G4OpenGLStoredQtViewer.hh,v 1.3 2007/11/09 15:03:21 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// Class G4OpenGLStoredQtViewer : a class derived from +// G4OpenGLQtViewer and G4OpenGLStoredViewer. + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#ifndef G4OpenGLSTOREDQTVIEWER_HH +#define G4OpenGLSTOREDQTVIEWER_HH + +#include "G4VViewer.hh" +#include "G4OpenGLStoredViewer.hh" +#include "G4OpenGLQtViewer.hh" + +#include // include qglwidget + +class QMouseEvent; +class QContextMenuEvent; + +class G4OpenGLStoredSceneHandler; + +class G4OpenGLStoredQtViewer: + public G4OpenGLQtViewer, public G4OpenGLStoredViewer, public QGLWidget { + +public: + G4OpenGLStoredQtViewer (G4OpenGLStoredSceneHandler& scene, + const G4String& name = ""); + ~G4OpenGLStoredQtViewer (); + void Initialise (); + void initializeGL (); + void DrawView (); + void FinishView (); + void resizeGL(int width,int height); + void paintGL(); + void updateQWidget(); + +protected: + void mousePressEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); + void contextMenuEvent(QContextMenuEvent *e); + +private : + bool hasToRepaint; + bool readyToPaint; + int nbPaint; +}; + +#endif + +#endif diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh b/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh index b2bcd66ae5..a73e335d6d 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredSceneHandler.hh,v 1.24 2007/04/04 16:50:26 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredViewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredViewer.hh index e92974a9b4..d041f94dde 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredViewer.hh,v 1.9 2006/06/29 21:18:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredWin32.hh b/source/visualization/OpenGL/include/G4OpenGLStoredWin32.hh index 6891c52400..f5b571e713 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredWin32.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredWin32.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredWin32.hh,v 1.7 2006/06/29 21:18:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // OpenGLStoredWin32 graphics system factory. diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredWin32Viewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredWin32Viewer.hh index 3762eb7fd4..fd44ef0d15 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredWin32Viewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredWin32Viewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredWin32Viewer.hh,v 1.7 2006/06/29 21:18:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class G4OpenGLStoredWin32Viewer : a class derived from diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredX.hh b/source/visualization/OpenGL/include/G4OpenGLStoredX.hh index 9ebc4cecd6..a392264f29 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredX.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredX.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredX.hh,v 1.7 2006/06/29 21:18:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredXViewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredXViewer.hh index 604c492dc6..255818d9e4 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredXViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredXViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredXViewer.hh,v 1.7 2006/07/03 16:38:13 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredXm.hh b/source/visualization/OpenGL/include/G4OpenGLStoredXm.hh index 7928bfc0e2..6e3f3adca2 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredXm.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredXm.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredXm.hh,v 1.6 2006/06/29 21:18:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredXmViewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredXmViewer.hh index 258f00e577..766793401d 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredXmViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredXmViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredXmViewer.hh,v 1.7 2006/07/03 16:38:13 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLTransform3D.hh b/source/visualization/OpenGL/include/G4OpenGLTransform3D.hh index d752470ad5..e66268e7e5 100644 --- a/source/visualization/OpenGL/include/G4OpenGLTransform3D.hh +++ b/source/visualization/OpenGL/include/G4OpenGLTransform3D.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLTransform3D.hh,v 1.7 2006/06/29 21:18:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 24th October 1996 diff --git a/source/visualization/OpenGL/include/G4OpenGLViewer.hh b/source/visualization/OpenGL/include/G4OpenGLViewer.hh index 3f7948bd5b..f077150bff 100644 --- a/source/visualization/OpenGL/include/G4OpenGLViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLViewer.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLViewer.hh,v 1.20 2007/05/08 11:04:11 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpenGLViewer.hh,v 1.21 2007/11/10 14:50:01 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 27th March 1996 @@ -47,6 +47,7 @@ class G4OpenGLViewer: virtual public G4VViewer { friend class G4OpenGLSceneHandler; friend class G4OpenGLImmediateSceneHandler; friend class G4OpenGLStoredSceneHandler; + friend class G4OpenGLFileSceneHandler; friend class G4OpenGLViewerMessenger; public: @@ -78,6 +79,7 @@ protected: G4OpenGLSceneHandler& fOpenGLSceneHandler; G4Colour background; //the OpenGL clear colour + unsigned int WinSize_x, WinSize_y; G4bool transparency_enabled, //is alpha blending enabled? antialiasing_enabled, //is antialiasing enabled? diff --git a/source/visualization/OpenGL/include/G4OpenGLViewerMessenger.hh b/source/visualization/OpenGL/include/G4OpenGLViewerMessenger.hh index 3c706dc4ae..f9976d2ad7 100644 --- a/source/visualization/OpenGL/include/G4OpenGLViewerMessenger.hh +++ b/source/visualization/OpenGL/include/G4OpenGLViewerMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLViewerMessenger.hh,v 1.5 2007/05/08 11:04:11 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifndef G4OPENGLVIEWERMESSENGER_HH #define G4OPENGLVIEWERMESSENGER_HH diff --git a/source/visualization/OpenGL/include/G4OpenGLWin32Viewer.hh b/source/visualization/OpenGL/include/G4OpenGLWin32Viewer.hh index 85e92890bb..73dd224fe7 100644 --- a/source/visualization/OpenGL/include/G4OpenGLWin32Viewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLWin32Viewer.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLWin32Viewer.hh,v 1.13 2006/06/29 21:18:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpenGLWin32Viewer.hh,v 1.14 2007/11/10 14:50:01 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4OpenGLWin32Viewer : Class to provide WindowsNT specific @@ -54,9 +54,6 @@ protected: void GetWin32Connection (); void CreateGLWin32Context (); virtual void CreateMainWindow (); -protected: - G4int WinSize_x; - G4int WinSize_y; HDC fHDC; private: static LRESULT CALLBACK WindowProc(HWND,UINT,WPARAM,LPARAM); diff --git a/source/visualization/OpenGL/include/G4OpenGLXViewer.hh b/source/visualization/OpenGL/include/G4OpenGLXViewer.hh index 5071432985..9fbcee277d 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXViewer.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXViewer.hh,v 1.27 2007/05/08 11:04:11 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpenGLXViewer.hh,v 1.28 2007/11/10 14:50:01 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 7th February 1997 @@ -104,8 +104,6 @@ protected: XClassHint *class_hints; Pixmap icon_pixmap; XSizeHints *size_hints; - unsigned int WinSize_x, - WinSize_y; Atom Xatom; XTextProperty windowName, iconName; diff --git a/source/visualization/OpenGL/include/G4OpenGLXmBox.hh b/source/visualization/OpenGL/include/G4OpenGLXmBox.hh index e83d073ec0..e19585e66f 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmBox.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmBox.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmBox.hh,v 1.7 2006/06/29 21:18:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Box container class diff --git a/source/visualization/OpenGL/include/G4OpenGLXmFourArrowButtons.hh b/source/visualization/OpenGL/include/G4OpenGLXmFourArrowButtons.hh index a6949d6482..052931c9a9 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmFourArrowButtons.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmFourArrowButtons.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmFourArrowButtons.hh,v 1.6 2006/06/29 21:18:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Four arrow buttons class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmFramedBox.hh b/source/visualization/OpenGL/include/G4OpenGLXmFramedBox.hh index 3d037a6316..deb624561a 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmFramedBox.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmFramedBox.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmFramedBox.hh,v 1.7 2006/06/29 21:18:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Framed box container class diff --git a/source/visualization/OpenGL/include/G4OpenGLXmPushButton.hh b/source/visualization/OpenGL/include/G4OpenGLXmPushButton.hh index 53fbba6a87..41feeba460 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmPushButton.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmPushButton.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmPushButton.hh,v 1.7 2006/06/29 21:18:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Push button class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmRadioButton.hh b/source/visualization/OpenGL/include/G4OpenGLXmRadioButton.hh index cca5b64da2..8cd75548a2 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmRadioButton.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmRadioButton.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmRadioButton.hh,v 1.7 2006/06/29 21:18:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Radio button class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmResources.hh b/source/visualization/OpenGL/include/G4OpenGLXmResources.hh index 8211111041..27494234db 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmResources.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmResources.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmResources.hh,v 1.5 2006/06/29 21:18:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Default resources file for GEANT4 OpenGL Motif windows. diff --git a/source/visualization/OpenGL/include/G4OpenGLXmSeparator.hh b/source/visualization/OpenGL/include/G4OpenGLXmSeparator.hh index 526497f650..9bb36cb3f0 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmSeparator.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmSeparator.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmSeparator.hh,v 1.6 2006/06/29 21:18:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Separator class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmSliderBar.hh b/source/visualization/OpenGL/include/G4OpenGLXmSliderBar.hh index eaa59782c8..b3b7c1fceb 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmSliderBar.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmSliderBar.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmSliderBar.hh,v 1.7 2006/06/29 21:18:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Slider bar class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmTextField.hh b/source/visualization/OpenGL/include/G4OpenGLXmTextField.hh index 2e2b87c5a7..071d331c4c 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmTextField.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmTextField.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmTextField.hh,v 1.7 2006/06/29 21:18:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Text field class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmTopLevelShell.hh b/source/visualization/OpenGL/include/G4OpenGLXmTopLevelShell.hh index 1ca12c1cb9..e468f05c56 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmTopLevelShell.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmTopLevelShell.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmTopLevelShell.hh,v 1.6 2006/06/29 21:18:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Top level shell class diff --git a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetComponent.hh b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetComponent.hh index 79d52328a1..c4ec89cd4b 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetComponent.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetComponent.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmVWidgetComponent.hh,v 1.6 2006/06/29 21:18:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Base class for all Motif component widgets diff --git a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetContainer.hh b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetContainer.hh index 1ce2e4617a..ec9028b6f8 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetContainer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetContainer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmVWidgetContainer.hh,v 1.6 2006/06/29 21:18:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Base class for all Motif container widgets diff --git a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetObject.hh b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetObject.hh index 1bb4ef3e02..a4ff9219b5 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetObject.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetObject.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmVWidgetObject.hh,v 1.6 2006/06/29 21:18:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Virtual base class for all Motif widgets. diff --git a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetShell.hh b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetShell.hh index cee2eafe92..331d70111f 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetShell.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetShell.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmVWidgetShell.hh,v 1.6 2006/06/29 21:18:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // //Base class for all Motif window widgets (shells) diff --git a/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh b/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh index 5bb7afc673..2a6f78926d 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmViewer.hh,v 1.10 2006/06/29 21:18:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLXmViewerMessenger.hh b/source/visualization/OpenGL/include/G4OpenGLXmViewerMessenger.hh index bc3a9cc58a..fa6dc1263f 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmViewerMessenger.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmViewerMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmViewerMessenger.hh,v 1.4 2006/06/29 21:18:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifdef G4VIS_BUILD_OPENGLXM_DRIVER diff --git a/source/visualization/OpenGL/src/G4OpenGLBitMapStore.cc b/source/visualization/OpenGL/src/G4OpenGLBitMapStore.cc index 5892b965f9..e6aca437c7 100644 --- a/source/visualization/OpenGL/src/G4OpenGLBitMapStore.cc +++ b/source/visualization/OpenGL/src/G4OpenGLBitMapStore.cc @@ -24,12 +24,14 @@ // ******************************************************************** // // -// $Id: G4OpenGLBitMapStore.cc,v 1.3 2007/04/04 16:50:26 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpenGLBitMapStore.cc,v 1.4 2007/11/15 10:14:23 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 6th January 2007 +#ifdef G4VIS_BUILD_OPENGL_DRIVER + #include "G4OpenGLBitMapStore.hh" namespace G4OpenGLBitMapStore { @@ -100,3 +102,5 @@ const GLubyte* GetBitMap(Shape shape, G4double& size, G4bool filled) } } // End namespace G4OpenGLBitMapStore. + +#endif diff --git a/source/visualization/OpenGL/src/G4OpenGLFontBaseStore.cc b/source/visualization/OpenGL/src/G4OpenGLFontBaseStore.cc index 309d7702cf..7bb728b26c 100644 --- a/source/visualization/OpenGL/src/G4OpenGLFontBaseStore.cc +++ b/source/visualization/OpenGL/src/G4OpenGLFontBaseStore.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLFontBaseStore.cc,v 1.3 2006/06/29 21:18:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4OpenGLFontBaseStore.hh" diff --git a/source/visualization/OpenGL/src/G4OpenGLXViewerMessenger.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateQt.cc similarity index 50% rename from source/visualization/OpenGL/src/G4OpenGLXViewerMessenger.cc rename to source/visualization/OpenGL/src/G4OpenGLImmediateQt.cc index 1fd5b8eef1..7d8d595c51 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXViewerMessenger.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateQt.cc @@ -24,69 +24,63 @@ // ******************************************************************** // // -// $Id: G4OpenGLXViewerMessenger.cc,v 1.7 2007/05/25 15:41:38 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpenGLImmediateQt.cc,v 1.2 2007/11/15 18:24:28 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// OpenGLImmediateQt graphics system factory. -#ifdef G4VIS_BUILD_OPENGLX_DRIVER +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER -#include "G4OpenGLXViewerMessenger.hh" +#include "G4VisFeaturesOfOpenGL.hh" +#include "G4VSceneHandler.hh" +#include "G4OpenGLSceneHandler.hh" +#include "G4OpenGLViewer.hh" +#include "G4OpenGLImmediateQt.hh" +#include "G4OpenGLImmediateQtViewer.hh" +#include "G4OpenGLViewerMessenger.hh" -#include "G4OpenGLXViewer.hh" - -#include "G4UImanager.hh" -#include "G4UIcommand.hh" -#include "G4UIdirectory.hh" -#include "G4VisManager.hh" -#include - -G4OpenGLXViewerMessenger* G4OpenGLXViewerMessenger::fpInstance = 0; - -G4OpenGLXViewerMessenger* G4OpenGLXViewerMessenger::GetInstance() +G4OpenGLImmediateQt::G4OpenGLImmediateQt (): + G4VGraphicsSystem ("OpenGLImmediateQt", + "OGLIQT", + G4VisFeaturesOfOpenGLIQt (), + G4VGraphicsSystem::threeD) { - if (!fpInstance) fpInstance = new G4OpenGLXViewerMessenger; - return fpInstance; + G4OpenGLViewerMessenger::GetInstance(); } -G4OpenGLXViewerMessenger::G4OpenGLXViewerMessenger() -{ - fpDirectory = new G4UIdirectory("/vis/oglx/"); - fpDirectory->SetGuidance("G4OpenGLXViewer commands."); - - fpDirectorySet = new G4UIdirectory ("/vis/oglx/set/"); - fpDirectorySet->SetGuidance("G4OpenGLViewer set commands."); - +G4VSceneHandler* G4OpenGLImmediateQt::CreateSceneHandler +(const G4String& name) { + G4VSceneHandler* pScene = new G4OpenGLImmediateSceneHandler (*this, name); + return pScene; } -G4OpenGLXViewerMessenger::~G4OpenGLXViewerMessenger () -{ - delete fpDirectory; -} - -void G4OpenGLXViewerMessenger::SetNewValue -(G4UIcommand* /*command*/, G4String /*newValue*/) -{ - G4VisManager* pVisManager = G4VisManager::GetInstance(); - - G4VViewer* pVViewer = pVisManager->GetCurrentViewer(); - - if (!pVViewer) { - G4cout << - "G4OpenGLXViewerMessenger::SetNewValue: No current viewer." - "\n \"/vis/open\", or similar, to get one." - << G4endl; - return; +G4VViewer* G4OpenGLImmediateQt::CreateViewer +(G4VSceneHandler& scene, const G4String& name) { +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQt::CreateViewer \n"); +#endif + G4VViewer* pView = + new G4OpenGLImmediateQtViewer + ((G4OpenGLImmediateSceneHandler&) scene, name); + if (pView) { + if (pView -> GetViewId () < 0) { + G4cerr << "G4OpenGLImmediateQt::CreateViewer: error flagged by negative" + " view id in G4OpenGLImmediateQtViewer creation." + "\n Destroying view and returning null pointer." + << G4endl; + delete pView; + pView = 0; + } } - - G4OpenGLXViewer* pViewer = dynamic_cast(pVViewer); - - if (!pViewer) { - G4cout << - "G4OpenGLXViewerMessenger::SetNewValue: Current viewer is not of type" - "\n OGL*X*. This feature currently only available on X Windows." - << G4endl; - return; + else { + G4cerr << "G4OpenGLImmediateQt::CreateViewer: null pointer on" + " new G4OpenGLImmediateQtViewer." << G4endl; } - +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQt::CreateViewer END \n"); +#endif + return pView; } #endif diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateQtViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateQtViewer.cc new file mode 100644 index 0000000000..1dd318eaef --- /dev/null +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateQtViewer.cc @@ -0,0 +1,249 @@ +// +// ******************************************************************** +// * 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: G4OpenGLImmediateQtViewer.cc,v 1.3 2007/11/15 18:24:28 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// Class G4OpenGLImmediateQtViewer : a class derived from G4OpenGLQtViewer and +// G4OpenGLImmediateViewer. + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#include "G4OpenGLImmediateQtViewer.hh" +#include "G4VisManager.hh" + +#include "G4ios.hh" + +G4OpenGLImmediateQtViewer::G4OpenGLImmediateQtViewer +(G4OpenGLImmediateSceneHandler& sceneHandler, + const G4String& name): + G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name), + G4OpenGLViewer (sceneHandler), + G4OpenGLQtViewer (sceneHandler), + G4OpenGLImmediateViewer (sceneHandler), + QGLWidget() // FIXME : gerer le pb du parent ! + { + nbPaint =0; + if (fViewId < 0) return; // In case error in base class instantiation. +} + +G4OpenGLImmediateQtViewer::~G4OpenGLImmediateQtViewer() { +#ifdef GEANT4_QT_DEBUG + printf("GLWidget::~GLWidget \n"); +#endif + makeCurrent(); +#ifdef GEANT4_QT_DEBUG + printf("GLWidget::~GLWidget END\n"); +#endif +} + +void G4OpenGLImmediateQtViewer::Initialise() { +#ifdef GEANT4_QT_DEBUG + printf("GLWidget::Initialise \n"); +#endif +#ifdef GEANT4_QT_DEBUG + printf("readyToPaint = false \n"); +#endif + readyToPaint = false; + CreateGLQtContext (); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQtViewer::Initialise () 2\n"); +#endif + + CreateMainWindow (this); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQtViewer::Initialise () 3\n"); +#endif + + CreateFontLists (); // FIXME Does nothing! + +#ifdef GEANT4_QT_DEBUG + printf("readyToPaint = true \n"); +#endif + readyToPaint = true; + + // First Draw + SetView(); +#ifdef GEANT4_QT_DEBUG + printf(" ClearView\n"); +#endif + ClearView (); //ok, put the background correct + ShowView(); + FinishView(); +} + +void G4OpenGLImmediateQtViewer::initializeGL () { + + InitializeGLView (); + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQtViewer::InitialiseGL () 1\n"); +#endif + + // If a double buffer context has been forced upon us, ignore the + // back buffer for this OpenGLImmediate view. + glDrawBuffer (GL_FRONT); // FIXME : Ne marche pas avec cette ligne, mais affiche le run correctement... + // clear the buffers and window. + ClearView (); +#ifdef GEANT4_QT_DEBUG + // printf("G4OpenGLImmediateQtViewer::InitialiseGL () 2\n"); +#endif + FinishView (); + + + + glDepthFunc (GL_LEQUAL); + glDepthMask (GL_TRUE); + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQtViewer::InitialiseGL -------------------------------------------------------------------------------------\n"); +#endif +} + + +void G4OpenGLImmediateQtViewer::DrawView () { + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQtViewer::DrawView %d %d VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",WinSize_x, WinSize_y); +#endif + // If a double buffer context has been forced upon us, ignore the + // back buffer for this OpenGLImmediate view. + glDrawBuffer (GL_FRONT); + + G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle(); + + //Make sure current viewer is attached and clean... + //Qt version needed + glViewport (0, 0, WinSize_x, WinSize_y); + + if(style!=G4ViewParameters::hlr && + haloing_enabled) { +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQtViewer::DrawView DANS LE IF\n"); +#endif + + HaloingFirstPass (); + NeedKernelVisit (); + ProcessView (); + glFlush (); + + HaloingSecondPass (); + + } + + NeedKernelVisit (); // Always need to visit G4 kernel. + ProcessView (); + FinishView (); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQtViewer::DrawView %d %d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",WinSize_x, WinSize_y); +#endif + readyToPaint = false; +} + + +////////////////////////////////////////////////////////////////////////////// +void G4OpenGLImmediateQtViewer::FinishView ( +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQtViewer::FinishView VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n"); +#endif + + glFlush (); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQtViewer::FinishView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n"); +#endif + +} + + +/** + - Lors du resize de la fenetre, on doit non pas redessiner le detecteur, mais aussi les evenements + */ +void G4OpenGLImmediateQtViewer::resizeGL( + int width +,int height) +{ + int side = width; + if (width > height) { + side = height; + } + glViewport((width - side) / 2, (height - side) / 2, side, side); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0); + glMatrixMode(GL_MODELVIEW); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQtViewer::resizeGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n"); +#endif +} + + +void G4OpenGLImmediateQtViewer::paintGL() + { + if (!readyToPaint) { + readyToPaint= true; + return; + } + // DO NOT RESIZE IF SIZE HAS NOT CHANGE + if (((WinSize_x == (G4int)width())) &&(WinSize_y == (G4int) height())) { + return; + } + nbPaint++; +#ifdef GEANT4_QT_DEBUG + printf("\n\nG4OpenGLImmediateQtViewer::paintGL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %d ready %d\n",nbPaint,readyToPaint); +#endif + WinSize_x = (G4int) width(); + WinSize_y = (G4int) height(); + + glViewport (0, 0, width(), height()); + + SetView(); +#ifdef GEANT4_QT_DEBUG +// // printf("before ClearView\n"); +#endif +#ifdef GEANT4_QT_DEBUG + printf(" ClearView\n"); +#endif + + ClearView (); //ok, put the background correct + DrawView(); + readyToPaint = true; // could be set to false by DrawView + + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLImmediateQtViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %d ready %d\n\n\n",nbPaint,readyToPaint); +#endif + } + +void G4OpenGLImmediateQtViewer::updateQWidget() { + updateGL(); +} + +#endif diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc index 818716bdba..23020da898 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateSceneHandler.cc,v 1.27 2007/04/04 16:50:26 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc index c3a3f27184..56add2d0f1 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateViewer.cc,v 1.8 2006/09/04 12:07:59 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32.cc index b89f245f2e..f61490749b 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateWin32.cc,v 1.11 2006/08/14 12:07:19 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // OpenGLImmediateWin32 graphics system factory. diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc index b3db3d1df4..762137eb6f 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateWin32Viewer.cc,v 1.16 2006/07/03 16:38:13 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class G4OpenGLImmediateWin32Viewer : a class derived from G4OpenGLWin32Viewer and diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateX.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateX.cc index 477567da4d..632763cb5e 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateX.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateX.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateX.cc,v 1.12 2006/08/14 12:07:19 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpenGLImmediateX.cc,v 1.13 2007/08/21 14:05:51 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 27th March 1996 @@ -40,7 +40,6 @@ #include "G4OpenGLImmediateX.hh" #include "G4OpenGLImmediateXViewer.hh" #include "G4OpenGLViewerMessenger.hh" -#include "G4OpenGLXViewerMessenger.hh" G4OpenGLImmediateX::G4OpenGLImmediateX (): G4VGraphicsSystem ("OpenGLImmediateX", @@ -49,7 +48,6 @@ G4OpenGLImmediateX::G4OpenGLImmediateX (): G4VGraphicsSystem::threeD) { G4OpenGLViewerMessenger::GetInstance(); - G4OpenGLXViewerMessenger::GetInstance(); } G4OpenGLImmediateX::~G4OpenGLImmediateX () {} diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc index dbf9fc80a1..98d41c0db2 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateXViewer.cc,v 1.16 2006/07/03 16:38:13 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc index 34f25acad3..4ddfe7da78 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateXm.cc,v 1.13 2006/08/14 12:07:19 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc index 55f54037ee..d507e36ef5 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateXmViewer.cc,v 1.17 2006/07/03 16:38:13 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLQtExportDialog.cc b/source/visualization/OpenGL/src/G4OpenGLQtExportDialog.cc new file mode 100644 index 0000000000..c8b2789954 --- /dev/null +++ b/source/visualization/OpenGL/src/G4OpenGLQtExportDialog.cc @@ -0,0 +1,378 @@ +// +// ******************************************************************** +// * 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: G4OpenGLQtExportDialog.cc,v 1.4 2007/11/13 17:48:51 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#include "G4OpenGLQtExportDialog.hh" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +G4OpenGLQtExportDialog::G4OpenGLQtExportDialog( + QWidget* parent +,QString nomFich + ,int aHeight + ,int aWidth +) + : QDialog( parent ) +{ +#if QT_VERSION < 0x040000 + setCaption( tr( " Export options" )); +#else + setWindowTitle( tr( " Export options" )); +#endif + originalWidth = aWidth; + originalHeight = aHeight; + + // Initializations + qualitySlider = NULL; + width = NULL; + height = NULL; + colorButton = NULL; + BWButton = NULL; + + // global layout +#if QT_VERSION < 0x040000 + QVBoxLayout* globalVLayout = new QVBoxLayout(this); +#else + QVBoxLayout* globalVLayout = new QVBoxLayout(); +#endif + + + if (nomFich.endsWith(".jpg") || + nomFich.endsWith(".jepg")) { + + QGroupBox *imageGroupBox = new QGroupBox(tr("Image quality")); +#if QT_VERSION < 0x040000 + QVBoxLayout *imageGroupBoxLayout = new QVBoxLayout(imageGroupBox); +#else + QVBoxLayout *imageGroupBoxLayout = new QVBoxLayout; +#endif + QWidget *sliderBox = new QWidget; + +#if QT_VERSION < 0x040000 + QHBoxLayout *hSlider = new QHBoxLayout(sliderBox); +#else + QHBoxLayout *hSlider = new QHBoxLayout; +#endif + + // qualityLabel = new QLabel( tr( "Image quality" ) ); + // imageGroupBoxLayout->addWidget(qualityLabel); + qualitySlider= new QSlider(Qt::Horizontal,0); +#if QT_VERSION < 0x040000 + qualitySlider->setMinValue(0); + qualitySlider->setMaxValue(100); + qualitySlider->setTickmarks(QSlider::Below); +#else + qualitySlider->setMinimum(0); + qualitySlider->setMaximum(100); + qualitySlider->setTickPosition(QSlider::TicksBelow); +#endif + qualitySlider->setValue(60); + hSlider->addWidget(new QLabel("low",0)); + hSlider->addWidget(qualitySlider); + hSlider->addWidget(new QLabel("Maximum",0)); +#if QT_VERSION >= 0x040000 + sliderBox->setLayout(hSlider); +#endif + imageGroupBoxLayout->addWidget(sliderBox); + +#if QT_VERSION >= 0x040000 + imageGroupBox->setLayout(imageGroupBoxLayout); +#endif + globalVLayout->addWidget(imageGroupBox); + } + + if(nomFich.endsWith(".eps")) { + QGroupBox *EPSGroupBox = new QGroupBox(tr("EPS options")); + +#if QT_VERSION < 0x040000 + QVBoxLayout *EPSGroupBoxLayout = new QVBoxLayout(EPSGroupBox); +#else + QVBoxLayout *EPSGroupBoxLayout = new QVBoxLayout; +#endif + + // transparencyEPS = new QCheckBox( "transparencyEPS" ); + // transparencyEPS->setText( "save background" ); + // transparencyEPS->setChecked( true ); + + colorButton = new QRadioButton("Color",0); + BWButton = new QRadioButton("Grayscale",0); + colorButton->setChecked( true ); + BWButton->setChecked( false ); + + + // EPSGroupBoxLayout->addWidget(transparencyEPS); + EPSGroupBoxLayout->addWidget(colorButton); + EPSGroupBoxLayout->addWidget(BWButton); +#if QT_VERSION >= 0x040000 + EPSGroupBox->setLayout(EPSGroupBoxLayout); +#endif + globalVLayout->addWidget(EPSGroupBox); + + } + + if(nomFich.endsWith(".tif") || + nomFich.endsWith(".tiff") || + nomFich.endsWith(".jpg") || + nomFich.endsWith(".png") || + nomFich.endsWith(".xpm")) { + + QGroupBox *transparencyGroupBox = new QGroupBox(tr("Transparency")); +#if QT_VERSION < 0x040000 + QVBoxLayout *transparencyGroupBoxLayout = new QVBoxLayout(transparencyGroupBox); +#else + QVBoxLayout *transparencyGroupBoxLayout = new QVBoxLayout; +#endif + + boxTransparency = new QCheckBox("Save transparency",0); + boxTransparency->setChecked( false ); + // boxTransparency->setEnabled(false); + + transparencyGroupBoxLayout->addWidget(boxTransparency); +#if QT_VERSION >= 0x040000 + transparencyGroupBox->setLayout(transparencyGroupBoxLayout); +#endif + globalVLayout->addWidget(transparencyGroupBox); + + } + + // size box + QGroupBox *sizeGroupBox = new QGroupBox(tr("Size")); + QWidget* modifyAndRatioWidget = new QWidget; + +#if QT_VERSION < 0x040000 + QHBoxLayout *modifyAndRatioLayout = new QHBoxLayout(modifyAndRatioWidget); + QVBoxLayout *sizeGroupBoxLayout = new QVBoxLayout(sizeGroupBox); +#else + QHBoxLayout *modifyAndRatioLayout = new QHBoxLayout; + QVBoxLayout *sizeGroupBoxLayout = new QVBoxLayout; +#endif + + // original button + original = new QRadioButton("Original",0); + original->setChecked( true ); + sizeGroupBoxLayout->addWidget(original); + + // modify and ratio + modify = new QRadioButton("Modify",0); + modify->setChecked( false ); + + ratioCheckBox = new QCheckBox( "Keep ratio",0 ); + ratioCheckBox->setChecked( true ); + + modifyAndRatioLayout->addWidget(modify); + modifyAndRatioLayout->addWidget(ratioCheckBox); +#if QT_VERSION >= 0x040000 + modifyAndRatioWidget->setLayout(modifyAndRatioLayout); +#endif + sizeGroupBoxLayout->addWidget(modifyAndRatioWidget); + if (modify->isChecked()) { + ratioCheckBox->show(); + } else { + ratioCheckBox->hide(); + } + + connect( original, SIGNAL( clicked(bool) ), this, SLOT( changeSizeBox(true)) ); + connect( modify, SIGNAL( clicked(bool) ), this, SLOT( changeSizeBox(false) ) ); + + // height + heightWidget = new QWidget; + +#if QT_VERSION < 0x040000 + QHBoxLayout *heightLineLayout = new QHBoxLayout(heightWidget); +#else + QHBoxLayout *heightLineLayout = new QHBoxLayout; +#endif + + QString tmp; + + heightLineLayout->addWidget(new QLabel("Height",0)); + height = new QLineEdit(tmp.setNum(originalHeight),0); + height->setMaxLength(5); + heightLineLayout->addWidget(height); +#if QT_VERSION >= 0x040000 + heightWidget->setLayout(heightLineLayout); +#endif + sizeGroupBoxLayout->addWidget(heightWidget); + connect( height, SIGNAL( textChanged ( const QString& ) ), this, SLOT( textHeightChanged(const QString &) ) ); + + + // width + widthWidget = new QWidget; + +#if QT_VERSION < 0x040000 + QHBoxLayout *widthLineLayout = new QHBoxLayout(widthWidget); +#else + QHBoxLayout *widthLineLayout = new QHBoxLayout; +#endif + + widthLineLayout->addWidget(new QLabel("Width ",0)); + width = new QLineEdit(tmp.setNum(originalWidth),0); + width->setMaxLength(5); + widthLineLayout->addWidget(width); +#if QT_VERSION >= 0x040000 + widthWidget->setLayout(widthLineLayout); +#endif + sizeGroupBoxLayout->addWidget(widthWidget); + connect( width, SIGNAL( textChanged ( const QString& ) ), this, SLOT( textWidthChanged(const QString &) ) ); + +#if QT_VERSION >= 0x040000 + sizeGroupBox->setLayout(sizeGroupBoxLayout); +#endif + globalVLayout->addWidget(sizeGroupBox); + + heightWidget->hide(); + widthWidget->hide(); + + // button ok/cancel box + + QGroupBox *buttonGroupBox = new QGroupBox(); + +#if QT_VERSION < 0x040000 + QHBoxLayout *buttonGroupBoxLayout = new QHBoxLayout(buttonGroupBox); +#else + QHBoxLayout *buttonGroupBoxLayout = new QHBoxLayout; +#endif + + buttonOk = new QPushButton( tr( "&OK" ),0 ); + buttonOk->setAutoDefault( TRUE ); + buttonOk->setDefault( TRUE ); + buttonGroupBoxLayout->addWidget(buttonOk); + + buttonCancel = new QPushButton( tr( "&Cancel" ),0 ); + buttonCancel->setAutoDefault( TRUE ); + buttonGroupBoxLayout->addWidget(buttonCancel); + +#if QT_VERSION >= 0x040000 + buttonGroupBox->setLayout(buttonGroupBoxLayout); +#endif + globalVLayout->addWidget(buttonGroupBox); + + +#if QT_VERSION >= 0x040000 + setLayout(globalVLayout); +#endif + + // signals and slots connections + connect( buttonOk, SIGNAL( clicked() ), this, SLOT( accept() ) ); + connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) ); +} + + + +int G4OpenGLQtExportDialog::getSliderValue() +{ + if (!qualitySlider) return -1; + return qualitySlider->value(); +} + +int G4OpenGLQtExportDialog::getHeight() +{ + if (!height) return -1; + return height->text().toInt(); +} + +int G4OpenGLQtExportDialog::getWidth() +{ + if (!width) return -1; + return width->text().toInt(); +} + +bool G4OpenGLQtExportDialog::getTransparency() +{ + if (!boxTransparency) return -1; + return boxTransparency->isChecked(); +} + +int G4OpenGLQtExportDialog::getNbColor() +{ + // Black and white + if (!colorButton->isChecked()) + return 1; + // rgb color + return 3; +} + + +void G4OpenGLQtExportDialog::changeSizeBox(bool aClick) +{ + if (aClick) { + modify->toggle(); + } else { + original->toggle(); + } + if ( original->isChecked()) { + heightWidget->hide(); + widthWidget->hide(); + ratioCheckBox->hide(); + } else { + heightWidget->show(); + widthWidget->show(); + ratioCheckBox->show(); + } +} + +void G4OpenGLQtExportDialog::textWidthChanged( + const QString & s + ) +{ + if (ratioCheckBox->isChecked()){ + QString tmp; + width->setText(tmp.setNum(s.toInt()*originalHeight/originalHeight)); + } +} + +void G4OpenGLQtExportDialog:: textHeightChanged( + const QString & s +) +{ + if (ratioCheckBox->isChecked()){ + QString tmp; + width->setText(tmp.setNum(s.toInt()*originalWidth/originalWidth)); + } +} + +G4OpenGLQtExportDialog::~G4OpenGLQtExportDialog() +{ +} + + +#endif diff --git a/source/visualization/OpenGL/src/G4OpenGLQtExportDialog_moc.cc b/source/visualization/OpenGL/src/G4OpenGLQtExportDialog_moc.cc new file mode 100644 index 0000000000..2faefcc5f0 --- /dev/null +++ b/source/visualization/OpenGL/src/G4OpenGLQtExportDialog_moc.cc @@ -0,0 +1,206 @@ +/**************************************************************************** +** G4OpenGLQtExportDialog meta object code from reading C++ file 'G4OpenGLQtExportDialog.hh' +** +** Created: Mon Nov 12 10:36:59 2007 +** by: The Qt MOC ($Id: G4OpenGLQtExportDialog_moc.cc,v 1.5 2007/11/14 11:49:00 lgarnier Exp $) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#undef QT_NO_COMPAT +#include "../include/G4OpenGLQtExportDialog.hh" +#include +#include + +#if QT_VERSION < 0x040000 + +#include +#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26) +#error "This file was generated using the moc from 3.3.5. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +const char *G4OpenGLQtExportDialog::className() const +{ + return "G4OpenGLQtExportDialog"; +} + +QMetaObject *G4OpenGLQtExportDialog::metaObj = 0; +static QMetaObjectCleanUp cleanUp_G4OpenGLQtExportDialog( "G4OpenGLQtExportDialog", &G4OpenGLQtExportDialog::staticMetaObject ); + +#ifndef QT_NO_TRANSLATION +QString G4OpenGLQtExportDialog::tr( const char *s, const char *c ) +{ + if ( qApp ) + return qApp->translate( "G4OpenGLQtExportDialog", s, c, QApplication::DefaultCodec ); + else + return QString::fromLatin1( s ); +} +#ifndef QT_NO_TRANSLATION_UTF8 +QString G4OpenGLQtExportDialog::trUtf8( const char *s, const char *c ) +{ + if ( qApp ) + return qApp->translate( "G4OpenGLQtExportDialog", s, c, QApplication::UnicodeUTF8 ); + else + return QString::fromUtf8( s ); +} +#endif // QT_NO_TRANSLATION_UTF8 + +#endif // QT_NO_TRANSLATION + +QMetaObject* G4OpenGLQtExportDialog::staticMetaObject() +{ + if ( metaObj ) + return metaObj; + QMetaObject* parentObject = QDialog::staticMetaObject(); + static const QUParameter param_slot_0[] = { + { 0, &static_QUType_bool, 0, QUParameter::In } + }; + static const QUMethod slot_0 = {"changeSizeBox", 1, param_slot_0 }; + static const QUParameter param_slot_1[] = { + { 0, &static_QUType_QString, 0, QUParameter::In } + }; + static const QUMethod slot_1 = {"textWidthChanged", 1, param_slot_1 }; + static const QUParameter param_slot_2[] = { + { 0, &static_QUType_QString, 0, QUParameter::In } + }; + static const QUMethod slot_2 = {"textHeightChanged", 1, param_slot_2 }; + static const QMetaData slot_tbl[] = { + { "changeSizeBox(bool)", &slot_0, QMetaData::Public }, + { "textWidthChanged(const QString&)", &slot_1, QMetaData::Public }, + { "textHeightChanged(const QString&)", &slot_2, QMetaData::Public } + }; + metaObj = QMetaObject::new_metaobject( + "G4OpenGLQtExportDialog", parentObject, + slot_tbl, 3, + 0, 0, +#ifndef QT_NO_PROPERTIES + 0, 0, + 0, 0, +#endif // QT_NO_PROPERTIES + 0, 0 ); + cleanUp_G4OpenGLQtExportDialog.setMetaObject( metaObj ); + return metaObj; +} + +void* G4OpenGLQtExportDialog::qt_cast( const char* clname ) +{ + if ( !qstrcmp( clname, "G4OpenGLQtExportDialog" ) ) + return this; + return QDialog::qt_cast( clname ); +} + +bool G4OpenGLQtExportDialog::qt_invoke( int _id, QUObject* _o ) +{ + switch ( _id - staticMetaObject()->slotOffset() ) { + case 0: changeSizeBox((bool)static_QUType_bool.get(_o+1)); break; + case 1: textWidthChanged((const QString&)static_QUType_QString.get(_o+1)); break; + case 2: textHeightChanged((const QString&)static_QUType_QString.get(_o+1)); break; + default: + return QDialog::qt_invoke( _id, _o ); + } + return TRUE; +} + +bool G4OpenGLQtExportDialog::qt_emit( int _id, QUObject* _o ) +{ + return QDialog::qt_emit(_id,_o); +} +#ifndef QT_NO_PROPERTIES + +bool G4OpenGLQtExportDialog::qt_property( int id, int f, QVariant* v) +{ + return QDialog::qt_property( id, f, v); +} + +bool G4OpenGLQtExportDialog::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; } +#endif // QT_NO_PROPERTIES + +#endif +#endif + + +/**************************************************************************** +** Meta object code from reading C++ file 'G4OpenGLQtExportDialog.hh' +** +** Created: Fri Sep 28 12:35:41 2007 +** by: The Qt Meta Object Compiler version 59 (Qt 4.2.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#if QT_VERSION >= 0x040000 + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#include "../include/G4OpenGLQtExportDialog.hh" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'G4OpenGLQtExportDialog.hh' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 59 +#error "This file was generated using the moc from 4.2.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +static const uint qt_meta_data_G4OpenGLQtExportDialog[] = { + + // content: + 1, // revision + 0, // classname + 0, 0, // classinfo + 3, 10, // methods + 0, 0, // properties + 0, 0, // enums/sets + + // slots: signature, parameters, type, tag, flags + 23, 43, 43, 43, 0x0a, + 44, 43, 43, 43, 0x0a, + 70, 43, 43, 43, 0x0a, + + 0 // eod +}; + +static const char qt_meta_stringdata_G4OpenGLQtExportDialog[] = { + "G4OpenGLQtExportDialog\0changeSizeBox(bool)\0" + "\0textWidthChanged(QString)\0" + "textHeightChanged(QString)\0" +}; + +const QMetaObject G4OpenGLQtExportDialog::staticMetaObject = { + { &QDialog::staticMetaObject, qt_meta_stringdata_G4OpenGLQtExportDialog, + qt_meta_data_G4OpenGLQtExportDialog, 0 } +}; + +const QMetaObject *G4OpenGLQtExportDialog::metaObject() const +{ + return &staticMetaObject; +} + +void *G4OpenGLQtExportDialog::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_G4OpenGLQtExportDialog)) + return static_cast(const_cast(this)); + return QDialog::qt_metacast(_clname); +} + +int G4OpenGLQtExportDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QDialog::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: changeSizeBox((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 1: textWidthChanged((*reinterpret_cast< const QString(*)>(_a[1]))); break; + case 2: textHeightChanged((*reinterpret_cast< const QString(*)>(_a[1]))); break; + } + _id -= 3; + } + return _id; +} +#endif +#endif diff --git a/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc b/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc new file mode 100644 index 0000000000..023e7b203f --- /dev/null +++ b/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc @@ -0,0 +1,1459 @@ +// +// ******************************************************************** +// * 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: G4OpenGLQtViewer.cc,v 1.7 2007/11/15 18:24:28 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// G4OpenGLQtViewer : Class to provide Qt specific +// functionality for OpenGL in GEANT4 +// +// 27/06/2003 : G.Barrand : implementation (at last !). + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#include "G4OpenGLQtViewer.hh" + +#include "G4ios.hh" +#include "G4VisExtent.hh" +#include "G4LogicalVolume.hh" +#include "G4VSolid.hh" +#include "G4Point3D.hh" +#include "G4Normal3D.hh" +#include "G4Scene.hh" +#include "G4OpenGLQtExportDialog.hh" + +#include "G4Qt.hh" +#include "G4UIsession.hh" +#include "G4UImanager.hh" +#include +#include +#include + +#if QT_VERSION >= 0x040000 +#include +#include +#else +#include +#include +#include +#include +#endif + +#include +#include +#include +#include +#include // include +#include +#include //include + + +////////////////////////////////////////////////////////////////////////////// +/** + Implementation of virtual method of G4VViewer +*/ +void G4OpenGLQtViewer::SetView ( +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::SetView ++++++++++++++++++++\n"); +#endif + // if(!fHDC) return; + // if(!fHGLRC) return; + // ::wglMakeCurrent(fHDC,fHGLRC); + // fWindow->makeCurrent(); + G4OpenGLViewer::SetView (); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::SetView --------------------\n"); +#endif +} + + + +////////////////////////////////////////////////////////////////////////////// +/** + Implementation of virtual method of G4VViewer +*/ +void G4OpenGLQtViewer::ShowView ( +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::ShowView +++++++++++++++++++++\n"); +#endif + glFlush (); + if (!GLWindow) { + G4cerr << "Visualization window not defined, please choose one before" << G4endl; + } else { +#if QT_VERSION < 0x040000 + GLWindow->setActiveWindow(); +#else + GLWindow->activateWindow(); +#endif +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::ShowView -----------------------\n"); +#endif + } + // // Empty the Windows message queue : + // MSG event; + // while ( ::PeekMessage(&event, NULL, 0, 0, PM_REMOVE) ) { + // ::TranslateMessage(&event); + // ::DispatchMessage (&event); + // } +} + + + +////////////////////////////////////////////////////////////////////////////// +void G4OpenGLQtViewer::CreateGLQtContext ( +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::CreateGLQtContext \n"); +#endif +} + + +////////////////////////////////////////////////////////////////////////////// +void G4OpenGLQtViewer::CreateMainWindow ( + QGLWidget* glWidget +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + + if(fWindow) return; //Done. +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::CreateMainWindow glWidget\n"); +#endif + + // launch Qt if not + G4Qt* interactorManager = G4Qt::getInstance (); + // G4UImanager* UI = G4UImanager::GetUIpointer(); + + fWindow = glWidget ; + // fWindow->makeCurrent(); + + // create window + if (((QApplication*)interactorManager->GetMainInteractor())) { + // look for the main window + bool found = false; +#if QT_VERSION < 0x040000 + QWidgetList *list = QApplication::allWidgets(); + QWidgetListIt it( *list ); // iterate over the widgets + QWidget * widget; + while ( (widget=it.current()) != 0 ) { // for each widget... + ++it; + if ((found== false) && (widget->inherits("QMainWindow"))) { +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::CreateMainWindow case Qapp exist\n"); +#endif + GLWindow = new QDialog(widget,0,FALSE,Qt::WStyle_Title | Qt::WStyle_SysMenu | Qt::WStyle_MinMax ); + found = true; + } + } + delete list; // delete the list, not the widgets +#else + foreach (QWidget *widget, QApplication::allWidgets()) { + if ((found== false) && (widget->inherits("QMainWindow"))) { +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::CreateMainWindow case Qapp exist\n"); +#endif + GLWindow = new QDialog(widget,Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); + found = true; + } + } +#endif + + if (found==false) { +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::CreateMainWindow case Qapp exist, but not found\n"); +#endif + GLWindow = new QDialog(); + } + } else { +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::CreateMainWindow case Qapp exist\n"); +#endif + GLWindow = new QDialog(); + } + +#if QT_VERSION < 0x040000 + QHBoxLayout *mainLayout = new QHBoxLayout(GLWindow); +#else + QHBoxLayout *mainLayout = new QHBoxLayout; +#endif + + mainLayout->addWidget(fWindow); + +#if QT_VERSION < 0x040000 + GLWindow->setCaption( tr( "QGl Viewer" )); +#else + GLWindow->setLayout(mainLayout); + GLWindow->setWindowTitle(tr("QGl Viewer")); +#endif + GLWindow->resize(300, 300); + GLWindow->move(900,300); + GLWindow->show(); + + // delete the pointer if close this + // GLWindow->setAttribute(Qt::WA_DeleteOnClose); + + QObject ::connect(GLWindow, + SIGNAL(rejected()), + this, + SLOT(dialogClosed())); + + WinSize_x = 400; + WinSize_y = 400; + if (WinSize_x < fVP.GetWindowSizeHintX ()) + WinSize_x = fVP.GetWindowSizeHintX (); + if (WinSize_y < fVP.GetWindowSizeHintY ()) + WinSize_y = fVP.GetWindowSizeHintY (); + + if(!fWindow) return; +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::CreateMainWindow glWidget END\n"); +#endif + + if (!fContextMenu) + createPopupMenu(); + +} + +/** Close the dialog and set the pointer to NULL + */ +void G4OpenGLQtViewer::dialogClosed() { + GLWindow = NULL; +} + + +////////////////////////////////////////////////////////////////////////////// +G4OpenGLQtViewer::G4OpenGLQtViewer ( + G4OpenGLSceneHandler& scene + ) + :G4VViewer (scene, -1) + ,G4OpenGLViewer (scene) + ,fWindow(0) + ,fContextMenu(0) + ,fMouseAction(true) +{ +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::G4OpenGLQtViewer \n"); +#endif +} + +////////////////////////////////////////////////////////////////////////////// +G4OpenGLQtViewer::~G4OpenGLQtViewer ( +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::~G4OpenGLQtViewer \n"); +#endif + delete fContextMenu; +} + + +/** + Create a popup menu for the widget. This menu is activated by right-mouse click +*/ +void G4OpenGLQtViewer::createPopupMenu() { + +#if QT_VERSION < 0x040000 + fContextMenu = new QPopupMenu( GLWindow,"All" ); +#else + fContextMenu = new QMenu("All"); +#endif + Q_CHECK_PTR( fContextMenu ); + +#if QT_VERSION < 0x040000 + // === Mouse menu === + QPopupMenu *mMouseAction = new QPopupMenu( fContextMenu ); + Q_CHECK_PTR( mMouseAction ); + + QAction *rotate = new QAction("&Rotate scene",CTRL+Key_N,mMouseAction); + QAction *move = new QAction("&Move scene",CTRL+Key_M,mMouseAction); + rotate->addTo(mMouseAction); + move->addTo(mMouseAction); + + fContextMenu->insertItem( "&Mouse action", mMouseAction); + +#else + // === Mouse menu === + QMenu *mMouseAction = fContextMenu->addMenu("&Mouse action"); + + QAction *rotate = mMouseAction->addAction("&Rotate scene"); + QAction *move = mMouseAction->addAction("&Move scene"); +#endif + + // INIT mMouse + createRadioAction(rotate,move,SLOT(toggleMouseAction(bool)),1); + +#if QT_VERSION < 0x040000 + // === Style Menu === + QPopupMenu *mStyle = new QPopupMenu(fContextMenu); + + QPopupMenu *mRepresentation = new QPopupMenu(fContextMenu); + + QAction *polyhedron = new QAction("&Polyhedron",CTRL+Key_P,mRepresentation); + QAction *nurbs = new QAction("&NURBS",CTRL+Key_N,mRepresentation); + polyhedron->addTo(mRepresentation); + nurbs->addTo(mRepresentation); + + mStyle->insertItem("&Representation",mRepresentation); + fContextMenu->insertItem("&Style",mStyle); + +#else + // === Style Menu === + QMenu *mStyle = fContextMenu->addMenu("&Style"); + + QMenu *mRepresentation = mStyle->addMenu("&Representation"); + QAction *polyhedron = mRepresentation->addAction("Polyhedron"); + QAction *nurbs = mRepresentation->addAction("NURBS"); +#endif + // INIT mStyle + G4ViewParameters::RepStyle style; + style = fVP.GetRepStyle(); + if (style == G4ViewParameters::polyhedron) { + createRadioAction(polyhedron,nurbs,SLOT(toggleRepresentation(bool)),1); + } else if (style == G4ViewParameters::nurbs) { + createRadioAction(polyhedron,nurbs,SLOT(toggleRepresentation(bool)),2); + } else { + mRepresentation->clear(); + } + + +#if QT_VERSION < 0x040000 + // === Drawing Menu === + QPopupMenu *mDrawing = new QPopupMenu(fContextMenu); + fContextMenu->insertItem("&Drawing",mDrawing); + + fDrawingWireframe = new QPopupMenu(mDrawing); + mDrawing->insertItem("&Wireframe",fDrawingWireframe); + + mDrawing->setCheckable(true); + fDrawingWireframe->setCheckable(true); + + fDrawingLineRemoval = new QPopupMenu(mDrawing); + mDrawing->insertItem("&Hidden line removal",fDrawingLineRemoval); + fDrawingLineRemoval->setCheckable(true); + + fDrawingSurfaceRemoval = new QPopupMenu(mDrawing); + mDrawing->insertItem("&Hidden surface removal",fDrawingSurfaceRemoval); + fDrawingSurfaceRemoval->setCheckable(true); + + fDrawingLineSurfaceRemoval = new QPopupMenu(mDrawing); + mDrawing->insertItem("&Hidden line and surface removal",fDrawingLineSurfaceRemoval); + fDrawingLineSurfaceRemoval->setCheckable(true); + +#else + // === Drawing Menu === + QMenu *mDrawing = mStyle->addMenu("&Drawing"); + + fDrawingWireframe = mDrawing->addAction("Wireframe"); + fDrawingWireframe->setCheckable(true); + + fDrawingLineRemoval = mDrawing->addAction("Hidden line removal"); + fDrawingLineRemoval->setCheckable(true); + + fDrawingSurfaceRemoval = mDrawing->addAction("Hidden Surface removal"); + fDrawingSurfaceRemoval->setCheckable(true); + + fDrawingLineSurfaceRemoval = mDrawing->addAction("Hidden line and surface removal"); + fDrawingLineSurfaceRemoval->setCheckable(true); +#endif + // INIT Drawing + G4ViewParameters::DrawingStyle d_style; + d_style = fVP.GetDrawingStyle(); + +#if QT_VERSION < 0x040000 + if (d_style == G4ViewParameters::wireframe) { + fDrawingWireframe->setItemChecked(0,true); + } else if (d_style == G4ViewParameters::hlr) { + fDrawingLineRemoval->setItemChecked(0,true); + } else if (d_style == G4ViewParameters::hsr) { + fDrawingSurfaceRemoval->setItemChecked(0,true); + } else if (d_style == G4ViewParameters::hlhsr) { + fDrawingLineSurfaceRemoval->setItemChecked(0,true); + } else { + mDrawing->clear(); + } +#else + if (d_style == G4ViewParameters::wireframe) { + fDrawingWireframe->setChecked(true); + } else if (d_style == G4ViewParameters::hlr) { + fDrawingLineRemoval->setChecked(true); + } else if (d_style == G4ViewParameters::hsr) { + fDrawingSurfaceRemoval->setChecked(true); + } else if (d_style == G4ViewParameters::hlhsr) { + fDrawingLineSurfaceRemoval->setChecked(true); + } else { + mDrawing->clear(); + } +#endif + + QObject ::connect(fDrawingWireframe, + SIGNAL(triggered(bool)), + this, + SLOT(actionDrawingWireframe())); + QObject ::connect(fDrawingLineRemoval, + SIGNAL(triggered(bool)), + this, + SLOT(actionDrawingLineRemoval())); + QObject ::connect(fDrawingSurfaceRemoval, + SIGNAL(triggered(bool)), + this, + SLOT(actionDrawingSurfaceRemoval())); + QObject ::connect(fDrawingLineSurfaceRemoval, + SIGNAL(triggered(bool)), + this, + SLOT(actionDrawingLineSurfaceRemoval())); + + +#if QT_VERSION < 0x040000 + QPopupMenu *mBackground = new QPopupMenu(mStyle); + mStyle->insertItem("&Background color",mBackground); + + QAction *white = new QAction("&White",CTRL+Key_W,mBackground); + QAction *black = new QAction("&Black",CTRL+Key_B,mBackground); + white->addTo(mBackground); + black->addTo(mBackground); + +#else + QMenu *mBackground = mStyle->addMenu("&Background color"); + QAction *white = mBackground->addAction("White"); + QAction *black = mBackground->addAction("Black"); + +#endif + if (background.GetRed() == 1. && + background.GetGreen() == 1. && + background.GetBlue() == 1.) { + createRadioAction(white,black,SLOT(toggleBackground(bool)),1); + } else { + createRadioAction(white,black,SLOT(toggleBackground(bool)),2); + } + + +#if QT_VERSION < 0x040000 + // === Action Menu === + QPopupMenu *mActions = new QPopupMenu(fContextMenu); + fContextMenu->insertItem("&Actions",mActions); + + QAction *controlPanels = new QAction("&Control panels",CTRL+Key_C,mActions); + QAction *exitG4 = new QAction("&Exit to G4Vis >",CTRL+Key_E,mActions); + QAction *createEPS = new QAction("&Save as ...",CTRL+Key_S,mActions); + controlPanels->addTo(mActions); + exitG4->addTo(mActions); + createEPS->addTo(mActions); + +#else + // === Action Menu === + QMenu *mActions = fContextMenu->addMenu("&Actions"); + QAction *controlPanels = mActions->addAction("Control panels"); + QAction *exitG4 = mActions->addAction("Exit to G4Vis >"); + QAction *createEPS = mActions->addAction("Save as ..."); +#endif + + QObject ::connect(controlPanels, + SIGNAL(triggered()), + this, + SLOT(actionControlPanels())); + QObject ::connect(exitG4, + SIGNAL(triggered()), + this, + SLOT(actionExitG4())); + QObject ::connect(createEPS, + SIGNAL(triggered()), + this, + SLOT(actionCreateEPS())); + + +#if QT_VERSION < 0x040000 + // === Special Menu === + QPopupMenu *mSpecial = new QPopupMenu(fContextMenu); + fContextMenu->insertItem("S&pecial",mSpecial); + + QPopupMenu *mTransparency = new QPopupMenu(mSpecial); + mSpecial->insertItem("Transparency",mTransparency); + + QAction *transparencyOn = new QAction("&On",CTRL+Key_O,mTransparency); + QAction *transparencyOff = new QAction("&Off",CTRL+Key_F,mTransparency); + transparencyOn->addTo(mTransparency); + transparencyOff->addTo(mTransparency); + +#else + // === Special Menu === + QMenu *mSpecial = fContextMenu->addMenu("S&pecial"); + QMenu *mTransparency = mSpecial->addMenu("Transparency"); + QAction *transparencyOn = mTransparency->addAction("On"); + QAction *transparencyOff = mTransparency->addAction("Off"); +#endif + + if (transparency_enabled == false) { + createRadioAction(transparencyOn,transparencyOff,SLOT(toggleTransparency(bool)),2); + } else if (transparency_enabled == true) { + createRadioAction(transparencyOn,transparencyOff,SLOT(toggleTransparency(bool)),1); + } else { + mSpecial->clear(); + } + + +#if QT_VERSION < 0x040000 + QPopupMenu *mAntialiasing = new QPopupMenu(mSpecial); + mSpecial->insertItem("Antialiasing",mAntialiasing); + + QAction *antialiasingOn = new QAction("&On",CTRL+Key_O,mAntialiasing); + QAction *antialiasingOff = new QAction("&Off",CTRL+Key_F,mAntialiasing); + antialiasingOn->addTo(mAntialiasing); + antialiasingOff->addTo(mAntialiasing); + +#else + QMenu *mAntialiasing = mSpecial->addMenu("Antialiasing"); + QAction *antialiasingOn = mAntialiasing->addAction("On"); + QAction *antialiasingOff = mAntialiasing->addAction("Off"); +#endif + + if (antialiasing_enabled == false) { + createRadioAction(antialiasingOn,antialiasingOff,SLOT(toggleAntialiasing(bool)),2); + } else if (antialiasing_enabled == true) { + createRadioAction(antialiasingOn,antialiasingOff,SLOT(toggleAntialiasing(bool)),1); + } else { + mAntialiasing->clear(); + } + +#if QT_VERSION < 0x040000 + QPopupMenu *mHaloing = new QPopupMenu(mSpecial); + mSpecial->insertItem("Haloing",mHaloing); + + QAction *haloingOn = new QAction("&On",CTRL+Key_O,mHaloing); + QAction *haloingOff = new QAction("&Off",CTRL+Key_F,mHaloing); + haloingOn->addTo(mHaloing); + haloingOff->addTo(mHaloing); +#else + QMenu *mHaloing = mSpecial->addMenu("Haloing"); + QAction *haloingOn = mHaloing->addAction("On"); + QAction *haloingOff = mHaloing->addAction("Off"); +#endif + if (haloing_enabled == false) { + createRadioAction(haloingOn,haloingOff,SLOT(toggleHaloing(bool)),2); + } else if (haloing_enabled == true) { + createRadioAction(haloingOn,haloingOff,SLOT(toggleHaloing(bool)),1); + } else { + mHaloing->clear(); + } + +#if QT_VERSION < 0x040000 + QPopupMenu *mAux = new QPopupMenu(mSpecial); + mSpecial->insertItem("Auxiliairy edges",mAux); + + QAction *auxOn = new QAction("&On",CTRL+Key_O,mAux); + QAction *auxOff = new QAction("&Off",CTRL+Key_F,mAux); + auxOn->addTo(mAux); + auxOff->addTo(mAux); + +#else + QMenu *mAux = mSpecial->addMenu("Auxiliary edges"); + QAction *auxOn = mAux->addAction("On"); + QAction *auxOff = mAux->addAction("Off"); +#endif + if (!fVP.IsAuxEdgeVisible()) { + createRadioAction(auxOn,auxOff,SLOT(toggleAux(bool)),1); + } else { + createRadioAction(auxOn,auxOff,SLOT(toggleAux(bool)),2); + } + + +#if QT_VERSION < 0x040000 + QPopupMenu *mFullScreen = new QPopupMenu(mSpecial); + mSpecial->insertItem("Full screen",mFullScreen); + + QAction *fullOn = new QAction("&On",CTRL+Key_O,mFullScreen); + QAction *fullOff = new QAction("&Off",CTRL+Key_F,mFullScreen); + fullOn->addTo(mFullScreen); + fullOff->addTo(mFullScreen); +#else + QMenu *mFullScreen = mSpecial->addMenu("Full screen"); + QAction *fullOn = mFullScreen->addAction("On"); + QAction *fullOff = mFullScreen->addAction("Off"); +#endif + createRadioAction(fullOn,fullOff,SLOT(toggleFullScreen(bool)),2); + +} + +void G4OpenGLQtViewer::manageContextMenuEvent(QContextMenuEvent *e) +{ + if (!GLWindow) { + G4cerr << "Visualization window not defined, please choose one before" << G4endl; + } else { + + if (!fContextMenu) + createPopupMenu(); + + // launch menu + if ( fContextMenu ) { + fContextMenu->exec( e->globalPos() ); + // delete fContextMenu; + } + } + e->accept(); +} + + +/** + Create a radio button menu. The two menu will be connected. When click on one, + eatch state will be invert and callback method will be called. + @param action1 first action to connect + @param action2 second action to connect + @param method callback method + @param nCheck: 1 : first action will be set true. 2 : second action will be set true +*/ +#if QT_VERSION < 0x040000 +void G4OpenGLQtViewer::createRadioAction(QAction *action1,QAction *action2, const std::string& method,unsigned int nCheck) { + + if (action1->parent()->inherits("QPopupMenu")){ + ((QPopupMenu*)action1->parent())->setCheckable(true); + } + ((QPopupMenu*)action1->parent())->setItemChecked(0,true); + ((QPopupMenu*)action1->parent())->setItemChecked(1,true); + + if (nCheck ==1) + ((QPopupMenu*)action1->parent())->setItemChecked(0,true); + else + ((QPopupMenu*)action1->parent())->setItemChecked(1,true); + + QObject ::connect(action1, SIGNAL(triggered(bool)),action2, SLOT(toggle())); + QObject ::connect(action2, SIGNAL(triggered(bool)),action1, SLOT(toggle())); + + QObject ::connect(action1, SIGNAL(toggled(bool)),this, method.c_str()); +} + +#else +void G4OpenGLQtViewer::createRadioAction(QAction *action1,QAction *action2, const std::string& method,unsigned int nCheck) { + + action1->setCheckable(true); + action2->setCheckable(true); + + if (nCheck ==1) + action1->setChecked (true); + else + action2->setChecked (true); + + QObject ::connect(action1, SIGNAL(triggered(bool)),action2, SLOT(toggle())); + QObject ::connect(action2, SIGNAL(triggered(bool)),action1, SLOT(toggle())); + + QObject ::connect(action1, SIGNAL(toggled(bool)),this, method.c_str()); + +} +#endif + +/** + Slot activate when drawing->wireframe menu is set + */ +void G4OpenGLQtViewer::actionDrawingWireframe() { + emit toggleDrawingAction(1); +} + +/** + Slot activate when drawing->line removal menu is set + */ +void G4OpenGLQtViewer::actionDrawingLineRemoval() { + emit toggleDrawingAction(2); +} + +/** + Slot activate when drawing->surface removal menu is set + */ +void G4OpenGLQtViewer::actionDrawingSurfaceRemoval() { + emit toggleDrawingAction(3); +} + +/** + Slot activate when drawing->wireframe menu is set + */ +void G4OpenGLQtViewer::actionDrawingLineSurfaceRemoval() { + emit toggleDrawingAction(4); +} + + +/** + Slot activated when drawing menu is toggle + Warning : When G4OpenGLStoredQtViewer::DrawView() method call, + KernelVisitDecision () will be call and will set the fNeedKernelVisit + to 1. See G4XXXStoredViewer::CompareForKernelVisit for explanations. + It will cause a redraw of the view + @param aAction : 1 wireframe, 2 line removal, 3 surface removal, 4 line & surface removal + @see G4OpenGLStoredQtViewer::DrawView + @see G4XXXStoredViewer::CompareForKernelVisit + */ +void G4OpenGLQtViewer::toggleDrawingAction(int aAction) { + + G4ViewParameters::DrawingStyle d_style; + + + if (aAction ==1) { +#if QT_VERSION < 0x040000 + fDrawingWireframe->setItemChecked (0,true); + fDrawingLineRemoval->setItemChecked (0,false); + fDrawingSurfaceRemoval->setItemChecked (0,false); + fDrawingLineSurfaceRemoval->setItemChecked (0,false); +#else + fDrawingWireframe->setChecked (true); + fDrawingLineRemoval->setChecked (false); + fDrawingSurfaceRemoval->setChecked (false); + fDrawingLineSurfaceRemoval->setChecked (false); +#endif + + d_style = G4ViewParameters::wireframe; + + } else if (aAction ==2) { +#if QT_VERSION < 0x040000 + fDrawingWireframe->setItemChecked (0,false); + fDrawingLineRemoval->setItemChecked (0,true); + fDrawingSurfaceRemoval->setItemChecked (0,false); + fDrawingLineSurfaceRemoval->setItemChecked (0,false); +#else + fDrawingWireframe->setChecked (false); + fDrawingLineRemoval->setChecked (true); + fDrawingSurfaceRemoval->setChecked (false); + fDrawingLineSurfaceRemoval->setChecked (false); +#endif + + d_style = G4ViewParameters::hlr; + + } else if (aAction ==3) { +#if QT_VERSION < 0x040000 + fDrawingWireframe->setItemChecked (0,false); + fDrawingLineRemoval->setItemChecked (0,false); + fDrawingSurfaceRemoval->setItemChecked (0,true); + fDrawingLineSurfaceRemoval->setItemChecked (0,false); +#else + fDrawingWireframe->setChecked (false); + fDrawingLineRemoval->setChecked (false); + fDrawingSurfaceRemoval->setChecked (true); + fDrawingLineSurfaceRemoval->setChecked (false); +#endif + + d_style = G4ViewParameters::hsr; + + } else if (aAction ==4) { +#if QT_VERSION < 0x040000 + fDrawingWireframe->setItemChecked (0,false); + fDrawingLineRemoval->setItemChecked (0,false); + fDrawingSurfaceRemoval->setItemChecked (0,false); + fDrawingLineSurfaceRemoval->setItemChecked (0,true); +#else + fDrawingWireframe->setChecked (false); + fDrawingLineRemoval->setChecked (false); + fDrawingSurfaceRemoval->setChecked (false); + fDrawingLineSurfaceRemoval->setChecked (true); +#endif + d_style = G4ViewParameters::hlhsr; + } + fVP.SetDrawingStyle(d_style); + + updateQWidget(); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::toggleDrawingAction\n"); +#endif +} + + +/** + SLOT Activate by a click on the representation menu + Warning : When G4OpenGLStoredQtViewer::DrawView() method call, + KernelVisitDecision () will be call and will set the fNeedKernelVisit + to 1. See G4XXXStoredViewer::CompareForKernelVisit for explanations. + It will cause a redraw of the view + @param check : 1 polyhedron, 0 nurbs + @see G4OpenGLStoredQtViewer::DrawView + @see G4XXXStoredViewer::CompareForKernelVisit +*/ +void G4OpenGLQtViewer::toggleRepresentation(bool check) { + + G4ViewParameters::RepStyle style; + if (check == 1) { + style = G4ViewParameters::polyhedron; + } else { + style = G4ViewParameters::nurbs; + } + fVP.SetRepStyle (style); + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::toggleRepresentation 3%d\n",check); +#endif + updateQWidget(); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::toggleRepresentation 4%d\n",check); +#endif +} + +/** + SLOT Activate by a click on the background menu +@param check : 1 white, 0 black +*/ +void G4OpenGLQtViewer::toggleBackground(bool check) { + + // //I need to revisit the kernel if the background colour changes and + // //hidden line removal is enabled, because hlr drawing utilises the + // //background colour in its drawing... + // // (Note added by JA 13/9/2005) Background now handled in view + // // parameters. A kernel visit is triggered on change of background. + if (check == 1) { + ((G4ViewParameters&)this->GetViewParameters()). + SetBackgroundColour(G4Colour(1.,1.,1.)); // White + } else { + ((G4ViewParameters&)this->GetViewParameters()). + SetBackgroundColour(G4Colour(0.,0.,0.)); // Black + } + updateQWidget(); +} + +/** + SLOT Activate by a click on the transparency menu +@param check : 1 , 0 +*/ +void G4OpenGLQtViewer::toggleTransparency(bool check) { + + if (check) { + transparency_enabled = false; + } else { + transparency_enabled = true; + } + SetNeedKernelVisit (true); + updateQWidget(); +} + +/** + SLOT Activate by a click on the antialiasing menu +@param check : 1 , 0 +*/ +void G4OpenGLQtViewer::toggleAntialiasing(bool check) { + + if (!check) { + antialiasing_enabled = false; + glDisable (GL_LINE_SMOOTH); + glDisable (GL_POLYGON_SMOOTH); + } else { + antialiasing_enabled = true; + glEnable (GL_LINE_SMOOTH); + glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); + glEnable (GL_POLYGON_SMOOTH); + glHint (GL_POLYGON_SMOOTH_HINT, GL_NICEST); + } + + updateQWidget(); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::toggleRepresentation %d\n",check); +#endif +} + +/** + SLOT Activate by a click on the haloing menu +@param check : 1 , 0 +*/ +//FIXME : I SEE NOTHING... +void G4OpenGLQtViewer::toggleHaloing(bool check) { + if (check) { + haloing_enabled = false; + } else { + haloing_enabled = true; + } + + updateQWidget(); + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::toggleRepresentation %d\n",check); +#endif +} + +/** + SLOT Activate by a click on the auxiliaire edges menu +@param check : 1 , 0 +*/ +void G4OpenGLQtViewer::toggleAux(bool check) { + if (check) { + fVP.SetAuxEdgeVisible(false); + } else { + fVP.SetAuxEdgeVisible(true); + } + SetNeedKernelVisit (true); + updateQWidget(); + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::toggleRepresentation %d\n",check); +#endif +} + +/** + SLOT Activate by a click on the full screen menu +@param check : 1 , 0 +*/ +void G4OpenGLQtViewer::toggleFullScreen(bool check) { + GLWindow->setWindowState(GLWindow->windowState() ^ Qt::WindowFullScreen); + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::toggleRepresentation %d\n",check); +#endif +} + +/** + SLOT Activate by a click on the mouse action menu + @param check : 1 , 0 +*/ +void G4OpenGLQtViewer::toggleMouseAction(bool check) { + if (check) { // rotate scene + fMouseAction = true; + } else { // move scene + fMouseAction = false; + } + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::toggleRepresentation %d\n",check); +#endif +} + + +void G4OpenGLQtViewer::actionControlPanels() { +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::actionControlPanels \n"); +#endif +} + +void G4OpenGLQtViewer::actionExitG4() { +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::actionExitG4() \n"); +#endif +} + +void G4OpenGLQtViewer::actionCreateEPS() { + QString filters; +#if QT_VERSION < 0x040000 + QStrList listFormat=QImageIO::outputFormats(); + char *tmp=listFormat.first(); + while (tmp!=0) { + filters += QString(tmp) + ";;"; + tmp=listFormat.next(); + } +#else + QList formats = QImageWriter::supportedImageFormats (); + for (int i = 0; i < formats.size(); ++i) { + filters +=formats.at(i) + ";;"; + } +#endif + filters += "eps;;"; + filters += "ps;;"; + filters += "pdf"; + QString* selectedFilter = new QString(); +#if QT_VERSION < 0x040000 + QString nomFich = QFileDialog::getSaveFileName ( ".", + filters, + GLWindow, + "Save file dialog", + tr("Save as ..."), + selectedFilter ); +#else + QString nomFich = QFileDialog::getSaveFileName ( GLWindow, + tr("Save as ..."), + ".", + filters, + selectedFilter ); +#endif + // bmp jpg jpeg png ppm xbm xpm + if (nomFich == "") { + return; + } +#if QT_VERSION < 0x040000 + nomFich += "."+selectedFilter->lower(); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::name %s\n",nomFich.ascii()); +#endif +#else + nomFich += "."+selectedFilter->toLower(); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::name %s\n",nomFich.toStdString().c_str()); +#endif +#endif + G4OpenGLQtExportDialog* exportDialog= new G4OpenGLQtExportDialog(GLWindow,nomFich,fWindow->height(),fWindow->width()); + if( exportDialog->exec()) { + + QImage image; + // if ((exportDialog->getWidth() !=fWindow->width()) || + // (exportDialog->getHeight() !=fWindow->height())) { + + // rescaleImage(exportDialog->getWidth(),exportDialog->getHeight());// re-scale image +#ifdef GEANT4_QT_DEBUG + printf("rescaling\n"); +#endif + QGLWidget* glResized = fWindow; + fWindow->renderPixmap (exportDialog->getWidth()*2,exportDialog->getHeight()*2 ).save("/Users/laurentgarnier/Desktop/zzz.jpg","jpg"); + QPixmap * pixmap = new QPixmap(fWindow->renderPixmap (exportDialog->getWidth(),exportDialog->getHeight() )) ; + // image = pixmap.toImage(); + // glResized->resize(exportDialog->getWidth()*2,exportDialog->getHeight()*2); +#ifdef GEANT4_QT_DEBUG + printf("rescaling after\n"); +#endif + // image = glResized->grabFrameBuffer(); + + // } else { + // image = fWindow->grabFrameBuffer(); + // } + // jpeg format + if (nomFich.endsWith(".jpg") || + nomFich.endsWith(".jpeg")) { + // grabFrameBuffer() :: Returns an image of the frame buffer. If withAlpha is true the alpha channel is included. + image.save(nomFich,0,exportDialog->getSliderValue()); +#ifdef GEANT4_QT_DEBUG + printf("saving jpeg quality : %d\n",exportDialog->getSliderValue()); +#endif + } else if (nomFich.endsWith(".eps")) { + generateEPS(nomFich,exportDialog->getNbColor(),image); + } else if (nomFich.endsWith(".ps") ||nomFich.endsWith(".pdf")) { + generatePS_PDF(nomFich,exportDialog->getNbColor(),image); + } else if (nomFich.endsWith(".tif") || + nomFich.endsWith(".tiff") || + nomFich.endsWith(".jpg") || + nomFich.endsWith(".png") || + nomFich.endsWith(".bmp") || + nomFich.endsWith(".xpm")) { + image.save(nomFich,0,exportDialog->getSliderValue()); +#ifdef GEANT4_QT_DEBUG + printf("saving ELSE\n"); +#endif + } else { + G4cerr << "This version of G4UI Could not generate the selected format" << G4endl; + } + + } else { // cancel selected + return; + } + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLQtViewer::actionCreateEPS() \n"); +#endif +} + +/* +// http://www.google.com/codesearch?hl=en&q=+jpg+Qt+quality+QDialog+show:FZkUoth8oiw:TONpW2mR-_c:tyTfrKMO-xI&sa=N&cd=2&ct=rc&cs_p=http://soft.proindependent.com/src/qtiplot-0.8.9.zip&cs_f=qtiplot-0.8.9/qtiplot/src/application.cpp#a0 + +void Graph::exportToSVG(const QString& fname) +{ + // enable workaround for Qt3 misalignments + QwtPainter::setSVGMode(true); + QPicture picture; + QPainter p(&picture); + d_plot->print(&p, d_plot->rect()); + p.end(); + + picture.save(fname, "svg"); +} +*/ + + + + +/** + Save the current mouse press point + @param p mouse click point +*/ +void G4OpenGLQtViewer::G4MousePressEvent(QPoint p) +{ + lastPos = p; +} + +/** + @param pos_x mouse x position + @param pos_y mouse y position + @param mButtons mouse button active +*/ + +#if QT_VERSION < 0x040000 +void G4OpenGLQtViewer::G4MouseMoveEvent(int pos_x, int pos_y,Qt::ButtonState mButtons) +#else +void G4OpenGLQtViewer::G4MouseMoveEvent(int pos_x, int pos_y,Qt::MouseButtons mButtons) +#endif +{ + int dx = pos_x - lastPos.x(); + int dy = pos_y - lastPos.y(); + + if (fMouseAction) { // rotate + if (mButtons & Qt::LeftButton) { + //phi spin stuff here + + G4Vector3D vp = fVP.GetViewpointDirection ().unit (); + G4Vector3D up = fVP.GetUpVector ().unit (); + + G4Vector3D yprime = (up.cross(vp)).unit(); + G4Vector3D zprime = (vp.cross(yprime)).unit(); + + G4double delta_alpha; + G4double delta_theta; + + if (fVP.GetLightsMoveWithCamera()) { + delta_alpha = dy; + delta_theta = -dx; + } else { + delta_alpha = -dy; + delta_theta = dx; + } + + delta_alpha *= deg; + delta_theta *= deg; + + G4Vector3D new_vp = std::cos(delta_alpha) * vp + std::sin(delta_alpha) * zprime; + + G4Vector3D new_up; + if (fVP.GetLightsMoveWithCamera()) { + new_up = (new_vp.cross(yprime)).unit(); + fVP.SetUpVector(new_up); + } else { + new_up = up; + } + //////////////// + // Rotates by fixed azimuthal angle delta_theta. + + G4double cosalpha = new_up.dot (new_vp.unit()); + G4double sinalpha = std::sqrt (1. - std::pow (cosalpha, 2)); + yprime = (new_up.cross (new_vp.unit())).unit (); + G4Vector3D xprime = yprime.cross (new_up); + // Projection of vp on plane perpendicular to up... + G4Vector3D a1 = sinalpha * xprime; + // Required new projection... + G4Vector3D a2 = + sinalpha * (std::cos (delta_theta) * xprime + std::sin (delta_theta) * yprime); + // Required Increment vector... + G4Vector3D delta = a2 - a1; + // So new viewpoint is... + G4Vector3D viewPoint = new_vp.unit() + delta; + + fVP.SetViewAndLights (viewPoint); + updateQWidget(); + + } else if (mButtons & Qt::RightButton) { + // NEVER DONE BECAUSE OF MOUSE MENU +#ifdef GEANT4_QT_DEBUG + // printf("G4OpenGLQtViewer::mouseMoveEvent Right \n"); +#endif + // setXRotation(xRot + dy/2); + // setZRotation(zRot + dx/2); + // updateQWidget(); + } + } else { // move + + float dx = pos_x - lastPos.x(); + float dy = pos_y - lastPos.y(); + + G4Point3D stp + = GetSceneHandler()->GetScene()->GetStandardTargetPoint(); + + G4Point3D tp = stp + fVP.GetCurrentTargetPoint (); + + const G4Vector3D& upVector = fVP.GetUpVector (); + const G4Vector3D& vpVector = fVP.GetViewpointDirection (); + + G4Vector3D unitRight = (upVector.cross (vpVector)).unit(); + G4Vector3D unitUp = (vpVector.cross (unitRight)).unit(); + + tp += -dx * unitRight + dy * unitUp; + fVP.SetCurrentTargetPoint (tp - stp); + + updateQWidget(); + } + lastPos = QPoint(pos_x, pos_y); +} + +void G4OpenGLQtViewer::rescaleImage( + int aWidth +,int aHeight +){ +#ifdef GEANT4_QT_DEBUG + printf("should rescale \n"); +#endif +} + +/** + Generate Postscript form image + @param aFilename : name of file + @param aInColor : numbers of colors : 1->BW 2->RGB 3->RGB+Alpha + @param aImage : Image to print +*/ +bool G4OpenGLQtViewer::generateEPS ( + QString aFilename +,int aInColor +,QImage aImage +) +{ + // FIXME +#ifdef GEANT4_QT_DEBUG + printf("saving EPS\n"); +#endif + + FILE* fp; + + if ((!aImage.isGrayscale ()) &&(aInColor ==1 )) { +#if QT_VERSION < 0x040000 + aImage.convertDepth(1,Qt::MonoOnly); +#else + aImage.convertToFormat ( aImage.format(), Qt::MonoOnly); +#endif + } + const uchar * pixels = aImage.bits (); + + if (pixels == NULL) + return false; + +#if QT_VERSION < 0x040000 + fp = fopen (aFilename.ascii(), "w"); +#else + fp = fopen (aFilename.toStdString().c_str(), "w"); +#endif + if (fp == NULL) { + return false; + } + + fprintf (fp, "%%!PS-Adobe-2.0 EPSF-1.2\n"); +#if QT_VERSION < 0x040000 + fprintf (fp, "%%%%Title: %s\n", aFilename.ascii()); +#else + fprintf (fp, "%%%%Title: %s\n", aFilename.toStdString().c_str()); +#endif + fprintf (fp, "%%%%Creator: OpenGL pixmap render output\n"); + fprintf (fp, "%%%%BoundingBox: 0 0 %d %d\n", aImage.width(), aImage.height()); + fprintf (fp, "%%%%EndComments\n"); + fprintf (fp, "gsave\n"); + fprintf (fp, "/bwproc {\n"); + fprintf (fp, " rgbproc\n"); + fprintf (fp, " dup length 3 idiv string 0 3 0 \n"); + fprintf (fp, " 5 -1 roll {\n"); + fprintf (fp, " add 2 1 roll 1 sub dup 0 eq\n"); + fprintf (fp, " { pop 3 idiv 3 -1 roll dup 4 -1 roll dup\n"); + fprintf (fp, " 3 1 roll 5 -1 roll } put 1 add 3 0 \n"); + fprintf (fp, " { 2 1 roll } ifelse\n"); + fprintf (fp, " }forall\n"); + fprintf (fp, " pop pop pop\n"); + fprintf (fp, "} def\n"); + fprintf (fp, "systemdict /colorimage known not {\n"); + fprintf (fp, " /colorimage {\n"); + fprintf (fp, " pop\n"); + fprintf (fp, " pop\n"); + fprintf (fp, " /rgbproc exch def\n"); + fprintf (fp, " { bwproc } image\n"); + fprintf (fp, " } def\n"); + fprintf (fp, "} if\n"); + fprintf (fp, "/picstr %d string def\n", aImage.width() * aInColor); + fprintf (fp, "%d %d scale\n", aImage.width(), aImage.height()); + fprintf (fp, "%d %d %d\n", aImage.width(), aImage.height(), 8); + fprintf (fp, "[%d 0 0 %d 0 0]\n", aImage.width(), aImage.height()); + fprintf (fp, "{currentfile picstr readhexstring pop}\n"); + fprintf (fp, "false %d\n", aInColor); + fprintf (fp, "colorimage\n"); + + + int width = aImage.width(); + int height = aImage.height(); + int depth = aImage.depth(); + int size = width*height; + + if (depth == 1) + size = (width+7)/8*height; + else if (aInColor == 1) + size = size*3; + + int i = 0; + if (depth == 1) { + // To be implemented + // QImage::Endian bitOrder = aImage.bitOrder(); + /* for(int y=0; y < height; y++) { + const uchar * s = aImage.scanLine(y); + for(int x=0; x < width; x++) { + // need to copy bit for bit... + bool b = (bitOrder == QImage::LittleEndian) ? + (*(s + (x >> 3)) >> (x & 7)) & 1 : + (*(s + (x >> 3)) << (x & 7)) & 0x80 ; + if (b) + pixel[i >> 3] ^= (0x80 >> (i & 7)); + i++; + } + // we need to align to 8 bit here + i = (i+7) & 0xffffff8; + } + */ + } else if (depth == 8) { +#ifdef GEANT4_QT_DEBUG + printf("has 8 bit\n"); +#endif + for(int y=height-1; y >=0 ; y--) { + const uchar * s = aImage.scanLine(y); + for(int x=0; x =0 ; y--) { + QRgb * s = (QRgb*)(aImage.scanLine(y)); + for(int x=0; x BW 2->RGB + @param aImage : Image to print +*/ +bool G4OpenGLQtViewer::generatePS_PDF ( + QString aFilename +,int aInColor +,QImage aImage +) +{ +#if QT_VERSION < 0x040000 +#ifdef Q_WS_MAC || Q_WS_X11 + QPrinter printer; + // printer.setPageSize(pageSize); + if (aInColor == 1) { + printer.setColorMode(QPrinter::GrayScale); + } else { + printer.setColorMode(QPrinter::Color); + } + + /* FIXME : I don't know which format it will save... + if (aFilename.endsWith(".ps")) { + printer.setOutputFormat(QPrinter::PostScriptFormat); + } else { + printer.setOutputFormat(QPrinter::PdfFormat); + } + */ + printer.setOutputFileName(aFilename); + // printer.setFullPage ( true); + QPainter paint(&printer); + paint.drawImage (0,0,aImage ); + paint.end(); +#else + G4cerr << "This fonction is only supported on Mac OsX or X11 with Qt3. Full platform supported with Qt4" << G4endl; +#endif +#else + QPrinter printer; + // printer.setPageSize(pageSize); + if (aInColor == 1) { + printer.setColorMode(QPrinter::GrayScale); + } else { + printer.setColorMode(QPrinter::Color); + } + + if (aFilename.endsWith(".ps")) { +#if QT_VERSION > 0x040200 + printer.setOutputFormat(QPrinter::PostScriptFormat); +#endif + } else { +#if QT_VERSION > 0x040100 + printer.setOutputFormat(QPrinter::PdfFormat); +#endif + } +#if QT_VERSION > 0x040100 + printer.setOutputFileName(aFilename); +#endif + // printer.setFullPage ( true); + QPainter paint(&printer); + paint.drawImage (0,0,aImage ); + paint.end(); +#endif + return true; +} + +#endif + +/* + +void MultiLayer::exportToSVG(const QString& fname) +{ + QPicture picture; + QPainter p(&picture); + for (int i=0;i<(int)graphsList->count();i++) + { + Graph *gr=(Graph *)graphsList->at(i); + Plot *myPlot= (Plot *)gr->plotWidget(); + + QPoint pos=gr->pos(); + + int width=int(myPlot->frameGeometry().width()); + int height=int(myPlot->frameGeometry().height()); + + myPlot->print(&p, QRect(pos,QSize(width,height))); + } + + p.end(); + picture.save(fname, "svg"); +} +*/ diff --git a/source/visualization/OpenGL/src/G4OpenGLQtViewer_moc.cc b/source/visualization/OpenGL/src/G4OpenGLQtViewer_moc.cc new file mode 100644 index 0000000000..b66ce0ed88 --- /dev/null +++ b/source/visualization/OpenGL/src/G4OpenGLQtViewer_moc.cc @@ -0,0 +1,308 @@ +/**************************************************************************** +** G4OpenGLQtViewer meta object code from reading C++ file 'G4OpenGLQtViewer.hh' +** +** Created: Mon Nov 12 10:34:24 2007 +** by: The Qt MOC ($Id: G4OpenGLQtViewer_moc.cc,v 1.5 2007/11/14 11:49:00 lgarnier Exp $) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#undef QT_NO_COMPAT +#include "../include/G4OpenGLQtViewer.hh" +#include +#include + +#if QT_VERSION < 0x040000 + +#include +#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26) +#error "This file was generated using the moc from 3.3.5. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +const char *G4OpenGLQtViewer::className() const +{ + return "G4OpenGLQtViewer"; +} + +QMetaObject *G4OpenGLQtViewer::metaObj = 0; +static QMetaObjectCleanUp cleanUp_G4OpenGLQtViewer( "G4OpenGLQtViewer", &G4OpenGLQtViewer::staticMetaObject ); + +#ifndef QT_NO_TRANSLATION +QString G4OpenGLQtViewer::tr( const char *s, const char *c ) +{ + if ( qApp ) + return qApp->translate( "G4OpenGLQtViewer", s, c, QApplication::DefaultCodec ); + else + return QString::fromLatin1( s ); +} +#ifndef QT_NO_TRANSLATION_UTF8 +QString G4OpenGLQtViewer::trUtf8( const char *s, const char *c ) +{ + if ( qApp ) + return qApp->translate( "G4OpenGLQtViewer", s, c, QApplication::UnicodeUTF8 ); + else + return QString::fromUtf8( s ); +} +#endif // QT_NO_TRANSLATION_UTF8 + +#endif // QT_NO_TRANSLATION + +QMetaObject* G4OpenGLQtViewer::staticMetaObject() +{ + if ( metaObj ) + return metaObj; + QMetaObject* parentObject = QObject::staticMetaObject(); + static const QUMethod slot_0 = {"actionDrawingWireframe", 0, 0 }; + static const QUMethod slot_1 = {"actionDrawingLineRemoval", 0, 0 }; + static const QUMethod slot_2 = {"actionDrawingSurfaceRemoval", 0, 0 }; + static const QUMethod slot_3 = {"actionDrawingLineSurfaceRemoval", 0, 0 }; + static const QUMethod slot_4 = {"actionControlPanels", 0, 0 }; + static const QUMethod slot_5 = {"actionExitG4", 0, 0 }; + static const QUMethod slot_6 = {"actionCreateEPS", 0, 0 }; + static const QUParameter param_slot_7[] = { + { 0, &static_QUType_int, 0, QUParameter::In } + }; + static const QUMethod slot_7 = {"toggleDrawingAction", 1, param_slot_7 }; + static const QUParameter param_slot_8[] = { + { 0, &static_QUType_bool, 0, QUParameter::In } + }; + static const QUMethod slot_8 = {"toggleMouseAction", 1, param_slot_8 }; + static const QUParameter param_slot_9[] = { + { 0, &static_QUType_bool, 0, QUParameter::In } + }; + static const QUMethod slot_9 = {"toggleRepresentation", 1, param_slot_9 }; + static const QUParameter param_slot_10[] = { + { 0, &static_QUType_bool, 0, QUParameter::In } + }; + static const QUMethod slot_10 = {"toggleBackground", 1, param_slot_10 }; + static const QUParameter param_slot_11[] = { + { 0, &static_QUType_bool, 0, QUParameter::In } + }; + static const QUMethod slot_11 = {"toggleTransparency", 1, param_slot_11 }; + static const QUParameter param_slot_12[] = { + { 0, &static_QUType_bool, 0, QUParameter::In } + }; + static const QUMethod slot_12 = {"toggleAntialiasing", 1, param_slot_12 }; + static const QUParameter param_slot_13[] = { + { 0, &static_QUType_bool, 0, QUParameter::In } + }; + static const QUMethod slot_13 = {"toggleHaloing", 1, param_slot_13 }; + static const QUParameter param_slot_14[] = { + { 0, &static_QUType_bool, 0, QUParameter::In } + }; + static const QUMethod slot_14 = {"toggleAux", 1, param_slot_14 }; + static const QUParameter param_slot_15[] = { + { 0, &static_QUType_bool, 0, QUParameter::In } + }; + static const QUMethod slot_15 = {"toggleFullScreen", 1, param_slot_15 }; + static const QUMethod slot_16 = {"dialogClosed", 0, 0 }; + static const QMetaData slot_tbl[] = { + { "actionDrawingWireframe()", &slot_0, QMetaData::Private }, + { "actionDrawingLineRemoval()", &slot_1, QMetaData::Private }, + { "actionDrawingSurfaceRemoval()", &slot_2, QMetaData::Private }, + { "actionDrawingLineSurfaceRemoval()", &slot_3, QMetaData::Private }, + { "actionControlPanels()", &slot_4, QMetaData::Private }, + { "actionExitG4()", &slot_5, QMetaData::Private }, + { "actionCreateEPS()", &slot_6, QMetaData::Private }, + { "toggleDrawingAction(int)", &slot_7, QMetaData::Private }, + { "toggleMouseAction(bool)", &slot_8, QMetaData::Private }, + { "toggleRepresentation(bool)", &slot_9, QMetaData::Private }, + { "toggleBackground(bool)", &slot_10, QMetaData::Private }, + { "toggleTransparency(bool)", &slot_11, QMetaData::Private }, + { "toggleAntialiasing(bool)", &slot_12, QMetaData::Private }, + { "toggleHaloing(bool)", &slot_13, QMetaData::Private }, + { "toggleAux(bool)", &slot_14, QMetaData::Private }, + { "toggleFullScreen(bool)", &slot_15, QMetaData::Private }, + { "dialogClosed()", &slot_16, QMetaData::Private } + }; + metaObj = QMetaObject::new_metaobject( + "G4OpenGLQtViewer", parentObject, + slot_tbl, 17, + 0, 0, +#ifndef QT_NO_PROPERTIES + 0, 0, + 0, 0, +#endif // QT_NO_PROPERTIES + 0, 0 ); + cleanUp_G4OpenGLQtViewer.setMetaObject( metaObj ); + return metaObj; +} + +void* G4OpenGLQtViewer::qt_cast( const char* clname ) +{ + if ( !qstrcmp( clname, "G4OpenGLQtViewer" ) ) + return this; + if ( !qstrcmp( clname, "G4OpenGLViewer" ) ) + return (G4OpenGLViewer*)this; + return QObject::qt_cast( clname ); +} + +bool G4OpenGLQtViewer::qt_invoke( int _id, QUObject* _o ) +{ + switch ( _id - staticMetaObject()->slotOffset() ) { + case 0: actionDrawingWireframe(); break; + case 1: actionDrawingLineRemoval(); break; + case 2: actionDrawingSurfaceRemoval(); break; + case 3: actionDrawingLineSurfaceRemoval(); break; + case 4: actionControlPanels(); break; + case 5: actionExitG4(); break; + case 6: actionCreateEPS(); break; + case 7: toggleDrawingAction((int)static_QUType_int.get(_o+1)); break; + case 8: toggleMouseAction((bool)static_QUType_bool.get(_o+1)); break; + case 9: toggleRepresentation((bool)static_QUType_bool.get(_o+1)); break; + case 10: toggleBackground((bool)static_QUType_bool.get(_o+1)); break; + case 11: toggleTransparency((bool)static_QUType_bool.get(_o+1)); break; + case 12: toggleAntialiasing((bool)static_QUType_bool.get(_o+1)); break; + case 13: toggleHaloing((bool)static_QUType_bool.get(_o+1)); break; + case 14: toggleAux((bool)static_QUType_bool.get(_o+1)); break; + case 15: toggleFullScreen((bool)static_QUType_bool.get(_o+1)); break; + case 16: dialogClosed(); break; + default: + return QObject::qt_invoke( _id, _o ); + } + return TRUE; +} + +bool G4OpenGLQtViewer::qt_emit( int _id, QUObject* _o ) +{ + return QObject::qt_emit(_id,_o); +} +#ifndef QT_NO_PROPERTIES + +bool G4OpenGLQtViewer::qt_property( int id, int f, QVariant* v) +{ + return QObject::qt_property( id, f, v); +} + +bool G4OpenGLQtViewer::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; } +#endif // QT_NO_PROPERTIES + +#endif + +#endif + + +/**************************************************************************** +** Meta object code from reading C++ file 'G4OpenGLQtViewer.hh' +** +** Created: Tue Sep 18 17:43:43 2007 +** by: The Qt Meta Object Compiler version 59 (Qt 4.2.2) +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#if QT_VERSION >= 0x040000 + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#include "../include/G4OpenGLQtViewer.hh" +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'G4OpenGLQtViewer.hh' doesn't include ." +#elif Q_MOC_OUTPUT_REVISION != 59 +#error "This file was generated using the moc from 4.2.2. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +static const uint qt_meta_data_G4OpenGLQtViewer[] = { + + // content: + 1, // revision + 0, // classname + 0, 0, // classinfo + 17, 10, // methods + 0, 0, // properties + 0, 0, // enums/sets + + // slots: signature, parameters, type, tag, flags + 17, 42, 42, 42, 0x08, + 43, 42, 42, 42, 0x08, + 70, 42, 42, 42, 0x08, + 100, 42, 42, 42, 0x08, + 134, 42, 42, 42, 0x08, + 156, 42, 42, 42, 0x08, + 171, 42, 42, 42, 0x08, + 189, 42, 42, 42, 0x08, + 214, 42, 42, 42, 0x08, + 238, 42, 42, 42, 0x08, + 265, 42, 42, 42, 0x08, + 288, 42, 42, 42, 0x08, + 313, 42, 42, 42, 0x08, + 338, 42, 42, 42, 0x08, + 358, 42, 42, 42, 0x08, + 374, 42, 42, 42, 0x08, + 397, 42, 42, 42, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_G4OpenGLQtViewer[] = { + "G4OpenGLQtViewer\0actionDrawingWireframe()\0" + "\0actionDrawingLineRemoval()\0" + "actionDrawingSurfaceRemoval()\0" + "actionDrawingLineSurfaceRemoval()\0" + "actionControlPanels()\0actionExitG4()\0" + "actionCreateEPS()\0toggleDrawingAction(int)\0" + "toggleMouseAction(bool)\0" + "toggleRepresentation(bool)\0" + "toggleBackground(bool)\0toggleTransparency(bool)\0" + "toggleAntialiasing(bool)\0toggleHaloing(bool)\0" + "toggleAux(bool)\0toggleFullScreen(bool)\0" + "dialogClosed()\0" +}; + +const QMetaObject G4OpenGLQtViewer::staticMetaObject = { + { &QObject::staticMetaObject, qt_meta_stringdata_G4OpenGLQtViewer, + qt_meta_data_G4OpenGLQtViewer, 0 } +}; + +const QMetaObject *G4OpenGLQtViewer::metaObject() const +{ + return &staticMetaObject; +} + +void *G4OpenGLQtViewer::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_G4OpenGLQtViewer)) + return static_cast(const_cast(this)); + if (!strcmp(_clname, "G4OpenGLViewer")) + return static_cast(const_cast(this)); + return QObject::qt_metacast(_clname); +} + +int G4OpenGLQtViewer::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QObject::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: actionDrawingWireframe(); break; + case 1: actionDrawingLineRemoval(); break; + case 2: actionDrawingSurfaceRemoval(); break; + case 3: actionDrawingLineSurfaceRemoval(); break; + case 4: actionControlPanels(); break; + case 5: actionExitG4(); break; + case 6: actionCreateEPS(); break; + case 7: toggleDrawingAction((*reinterpret_cast< int(*)>(_a[1]))); break; + case 8: toggleMouseAction((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 9: toggleRepresentation((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 10: toggleBackground((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 11: toggleTransparency((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 12: toggleAntialiasing((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 13: toggleHaloing((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 14: toggleAux((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 15: toggleFullScreen((*reinterpret_cast< bool(*)>(_a[1]))); break; + case 16: dialogClosed(); break; + } + _id -= 17; + } + return _id; +} +#endif +#endif diff --git a/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc b/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc index 0ee7ca52d9..9a65244fa7 100644 --- a/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc +++ b/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLSceneHandler.cc,v 1.51 2007/05/25 15:41:38 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredQt.cc b/source/visualization/OpenGL/src/G4OpenGLStoredQt.cc new file mode 100644 index 0000000000..322cb72d47 --- /dev/null +++ b/source/visualization/OpenGL/src/G4OpenGLStoredQt.cc @@ -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: G4OpenGLStoredQt.cc,v 1.3 2007/11/15 18:24:28 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// OpenGLStoredQt graphics system factory. + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#include "G4VisFeaturesOfOpenGL.hh" +#include "G4VSceneHandler.hh" +#include "G4OpenGLSceneHandler.hh" +#include "G4OpenGLViewer.hh" +#include "G4OpenGLStoredQt.hh" +#include "G4OpenGLStoredQtViewer.hh" +#include "G4OpenGLViewerMessenger.hh" + +G4OpenGLStoredQt::G4OpenGLStoredQt (): + G4VGraphicsSystem ("OpenGLStoredQt", + "OGLSQT", + G4VisFeaturesOfOpenGLIQt (), + G4VGraphicsSystem::threeD) +{ + G4OpenGLViewerMessenger::GetInstance(); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQt::Create \n"); +#endif +} + +G4VSceneHandler* G4OpenGLStoredQt::CreateSceneHandler +(const G4String& name) { + G4VSceneHandler* pScene = new G4OpenGLStoredSceneHandler (*this, name); + return pScene; +} + +G4VViewer* G4OpenGLStoredQt::CreateViewer +(G4VSceneHandler& scene, const G4String& name) { +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQt::CreateViewer \n"); +#endif + G4VViewer* pView = + new G4OpenGLStoredQtViewer + ((G4OpenGLStoredSceneHandler&) scene, name); + if (pView) { + if (pView -> GetViewId () < 0) { + G4cerr << "G4OpenGLStoredQt::CreateViewer: error flagged by negative" + " view id in G4OpenGLStoredQtViewer creation." + "\n Destroying view and returning null pointer." + << G4endl; + delete pView; + pView = 0; + } + } + else { + G4cerr << "G4OpenGLStoredQt::CreateViewer: null pointer on" + " new G4OpenGLStoredQtViewer." << G4endl; + } +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQt::CreateViewer END \n"); +#endif + return pView; +} + +#endif diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc new file mode 100644 index 0000000000..9b22d96a5c --- /dev/null +++ b/source/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc @@ -0,0 +1,329 @@ +// +// ******************************************************************** +// * 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: G4OpenGLStoredQtViewer.cc,v 1.6 2007/11/15 18:24:28 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ +// +// +// Class G4OpenGLStoredQtViewer : a class derived from G4OpenGLQtViewer and +// G4OpenGLStoredViewer. + +#ifdef G4VIS_BUILD_OPENGLQT_DRIVER + +#include "G4OpenGLStoredQtViewer.hh" +#include "G4VisManager.hh" + +#include "G4ios.hh" + +//#include +#include // include + +G4OpenGLStoredQtViewer::G4OpenGLStoredQtViewer +(G4OpenGLStoredSceneHandler& sceneHandler, + const G4String& name): + G4VViewer (sceneHandler, sceneHandler.IncrementViewCount (), name), + G4OpenGLViewer (sceneHandler), + G4OpenGLQtViewer (sceneHandler), + G4OpenGLStoredViewer (sceneHandler), + QGLWidget() // FIXME : gerer le pb du parent ! + { + nbPaint =0; + hasToRepaint =false; + if (fViewId < 0) return; // In case error in base class instantiation. +} + +G4OpenGLStoredQtViewer::~G4OpenGLStoredQtViewer() { +#ifdef GEANT4_QT_DEBUG + printf("GLWidget::~GLWidget \n"); +#endif + makeCurrent(); + // this is connect to the Dialog for deleting it properly + // when close event. + // ((QDialog*)window())->reject(); +#ifdef GEANT4_QT_DEBUG + printf("GLWidget::~GLWidget END\n"); +#endif +} + +void G4OpenGLStoredQtViewer::Initialise() { +#ifdef GEANT4_QT_DEBUG + printf("GLWidget::Initialise \n"); +#endif + readyToPaint = false; + CreateGLQtContext (); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::Initialise () 2\n"); +#endif + CreateMainWindow (this); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::Initialise () 3\n"); +#endif + CreateFontLists (); // FIXME Does nothing! + +#ifdef GEANT4_QT_DEBUG + printf("readyToPaint = true \n"); +#endif + readyToPaint = true; + + // First Draw + SetView(); +#ifdef GEANT4_QT_DEBUG + printf(" ClearView\n"); +#endif + ClearView (); //ok, put the background correct + ShowView(); + FinishView(); +} + +void G4OpenGLStoredQtViewer::initializeGL () { + + InitializeGLView (); + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::InitialiseGL () 1\n"); +#endif + + // clear the buffers and window. + ClearView (); + // printf("G4OpenGLStoredQtViewer::InitialiseGL () 2\n"); + FinishView (); + + glDepthFunc (GL_LEQUAL); + glDepthMask (GL_TRUE); + + hasToRepaint =true; + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::InitialiseGL -------------------------------------------------------------------------------------\n"); +#endif +} + + +void G4OpenGLStoredQtViewer::DrawView () { + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::DrawView %d %d VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n",WinSize_x, WinSize_y); + printf("G4OpenGLStoredQtViewer::DrawView Dialog adress : %d\n",GLWindow); +#endif + G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle(); + + //Make sure current viewer is attached and clean... + //Qt version needed + glViewport (0, 0, WinSize_x, WinSize_y); + + //See if things have changed from last time and remake if necessary... + // The fNeedKernelVisit flag might have been set by the user in + // /vis/viewer/rebuild, but if not, make decision and set flag only + // if necessary... + if (!fNeedKernelVisit) + + if (!fNeedKernelVisit) KernelVisitDecision (); + + G4bool kernelVisitWasNeeded = fNeedKernelVisit; // Keep (ProcessView resets). + ProcessView (); + + + if(style!=G4ViewParameters::hlr && + haloing_enabled) { +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::DrawView DANS LE IF\n"); +#endif + + HaloingFirstPass (); + DrawDisplayLists (); + glFlush (); + + HaloingSecondPass (); + + DrawDisplayLists (); + FinishView (); + + } else { +#ifdef GEANT4_QT_DEBUG + printf("*************************** CASE 1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n"); +#endif + + // If kernel visit was needed, drawing and FinishView will already + // have been done, so... + if (!kernelVisitWasNeeded) { +#ifdef GEANT4_QT_DEBUG + printf("*************************** CASE 2 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n"); +#endif + DrawDisplayLists (); + FinishView (); + } else { +#ifdef GEANT4_QT_DEBUG + printf("*************************** CASE 3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n"); +#endif + // However, union cutaways are implemented in DrawDisplayLists, so make + // an extra pass... + if (fVP.IsCutaway() && + fVP.GetCutawayMode() == G4ViewParameters::cutawayUnion) { + ClearView(); + DrawDisplayLists (); + FinishView (); +#ifdef GEANT4_QT_DEBUG + printf("*************************** CASE 4 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n"); +#endif + } else { // ADD TO AVOID KernelVisit=1 and nothing to display + DrawDisplayLists (); + FinishView (); + } + } + } + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::DrawView %d %d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",WinSize_x, WinSize_y); +#endif + hasToRepaint =true; +} + + +////////////////////////////////////////////////////////////////////////////// +void G4OpenGLStoredQtViewer::FinishView ( +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::FinishView VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\n"); +#endif + + glFlush (); + swapBuffers (); +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::FinishView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n"); +#endif + +} + + +/** + - Lors du resize de la fenetre, on doit non pas redessiner le detecteur, mais aussi les evenements + */ +void G4OpenGLStoredQtViewer::resizeGL( + int aWidth +,int aHeight) +{ + glViewport(0, 0, aWidth, aHeight); + glMatrixMode(GL_PROJECTION); + glMatrixMode(GL_MODELVIEW); + + if (((WinSize_x != (G4int)aWidth)) || (WinSize_y != (G4int) aHeight)) { + hasToRepaint =true; + } + WinSize_x = (G4int) aWidth; + WinSize_y = (G4int) aHeight; + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::resizeGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %d %d=%d %d=%d\n",hasToRepaint,width(),aWidth,height(),aHeight); +#endif +} + + + +void G4OpenGLStoredQtViewer::paintGL() + { + if (!readyToPaint) { +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::paintGL ============ Not ready %d\n",readyToPaint); +#endif + readyToPaint= true; + return; + } + // DO NOT RESIZE IF SIZE HAS NOT CHANGE : + // WHEN CLICK ON THE FRAME FOR EXAMPLE + // EXECEPT WHEN MOUSE MOVE EVENT + if ( !hasToRepaint) { + if (((WinSize_x == (G4int)width())) &&(WinSize_y == (G4int) height())) { +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::paintGL ============ Dont repaint\n"); +#endif + return; + } + } + nbPaint++; +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::paintGL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV %d ready %d\n",nbPaint,readyToPaint); +#endif + WinSize_x = (G4int) width(); + WinSize_y = (G4int) height(); + + glViewport (0, 0, width(), height()); + // glLoadIdentity(); + + + SetView(); + +// // printf("before ClearView\n"); +#ifdef GEANT4_QT_DEBUG + printf(" ClearView\n"); +#endif + + ClearView (); //ok, put the background correct + DrawView(); + + hasToRepaint =false; + +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::paintGL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %d ready %d\n",nbPaint,readyToPaint); +#endif + } + +void G4OpenGLStoredQtViewer::mousePressEvent(QMouseEvent *event) +{ +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::mousePressEvent\n"); +#endif + G4MousePressEvent(event->pos()); +} + +void G4OpenGLStoredQtViewer::mouseMoveEvent(QMouseEvent *event) +{ +#ifdef GEANT4_QT_DEBUG + printf("G4OpenGLStoredQtViewer::mouseMoveEvent\n"); +#endif +#if QT_VERSION < 0x040000 + G4MouseMoveEvent(event->x(),event->y(),event->button()); +#else + G4MouseMoveEvent(event->x(),event->y(),event->buttons()); +#endif + // DrawView(); +} + + +void G4OpenGLStoredQtViewer::contextMenuEvent(QContextMenuEvent *e) +{ + manageContextMenuEvent(e); +} + +void G4OpenGLStoredQtViewer::updateQWidget() { + hasToRepaint= true; + updateGL(); + hasToRepaint= false; +} + +#endif diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc b/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc index 53ce4a4f34..9c6d92134e 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredSceneHandler.cc,v 1.34 2007/04/04 16:50:27 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc index 9fa955a7e5..e429100237 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredViewer.cc,v 1.23 2007/04/04 16:50:27 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc b/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc index c773116577..97e9da6f5b 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredWin32.cc,v 1.14 2006/08/14 12:07:19 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // OpenGLStoredWin32 graphics system factory. diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc index 7ced16f166..796867fad7 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredWin32Viewer.cc,v 1.19 2007/04/04 16:50:27 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Class G4OpenGLStoredWin32Viewer : a class derived from G4OpenGLWin32Viewer and diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredX.cc b/source/visualization/OpenGL/src/G4OpenGLStoredX.cc index 3e309eaea3..a1797fb143 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredX.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredX.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredX.cc,v 1.13 2006/08/14 12:07:19 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpenGLStoredX.cc,v 1.14 2007/08/21 14:05:51 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 @@ -41,7 +41,6 @@ #include "G4OpenGLStoredX.hh" #include "G4OpenGLStoredXViewer.hh" #include "G4OpenGLViewerMessenger.hh" -#include "G4OpenGLXViewerMessenger.hh" G4OpenGLStoredX::G4OpenGLStoredX (): G4VGraphicsSystem ("OpenGLStoredX", @@ -50,7 +49,6 @@ G4OpenGLStoredX::G4OpenGLStoredX (): G4VGraphicsSystem::threeD) { G4OpenGLViewerMessenger::GetInstance(); - G4OpenGLXViewerMessenger::GetInstance(); } G4OpenGLStoredX::~G4OpenGLStoredX () {} diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc index 96ca75c86c..76c865c74f 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredXViewer.cc,v 1.22 2007/04/04 16:50:27 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredXm.cc b/source/visualization/OpenGL/src/G4OpenGLStoredXm.cc index 5de62901a9..c233fbf083 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredXm.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredXm.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredXm.cc,v 1.11 2006/08/14 12:07:19 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc index 55e5dada46..fc4d51c130 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredXmViewer.cc,v 1.22 2007/04/04 16:50:27 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc b/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc index bcf3f68135..5a636bfdbc 100644 --- a/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc +++ b/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLTransform3D.cc,v 1.8 2006/06/29 21:19:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 24th October 1996 diff --git a/source/visualization/OpenGL/src/G4OpenGLViewer.cc b/source/visualization/OpenGL/src/G4OpenGLViewer.cc index bed643cc4f..e56531f597 100644 --- a/source/visualization/OpenGL/src/G4OpenGLViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLViewer.cc,v 1.34 2007/05/24 18:27:13 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenGL/src/G4OpenGLViewerMessenger.cc b/source/visualization/OpenGL/src/G4OpenGLViewerMessenger.cc index f03c7597eb..f83105cd76 100644 --- a/source/visualization/OpenGL/src/G4OpenGLViewerMessenger.cc +++ b/source/visualization/OpenGL/src/G4OpenGLViewerMessenger.cc @@ -24,8 +24,10 @@ // ******************************************************************** // // -// $Id: G4OpenGLViewerMessenger.cc,v 1.8 2007/05/16 15:59:58 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpenGLViewerMessenger.cc,v 1.11 2007/11/15 10:14:23 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ + +#ifdef G4VIS_BUILD_OPENGL_DRIVER #include "G4OpenGLViewerMessenger.hh" @@ -63,7 +65,8 @@ G4OpenGLViewerMessenger::G4OpenGLViewerMessenger() fpCommandPrintEPS->SetGuidance("Print Encapsulated PostScript file."); fpCommandPrintEPS->SetGuidance ("Generates files with names G4OpenGL_n.eps, where n is a sequence" - "\nnumber, starting at 0."); + "\nnumber, starting at 0." + "\nCan be \"vectored\" or \"pixmap\" - see \"/vis/ogl/set/printMode\"."); fpDirectorySet = new G4UIdirectory ("/vis/ogl/set/"); fpDirectorySet->SetGuidance("G4OpenGLViewer set commands."); @@ -217,6 +220,8 @@ G4OpenGLViewerMessenger::~G4OpenGLViewerMessenger () delete fpDirectorySet; delete fpCommandPrintEPS; delete fpDirectory; + + delete fpInstance; } void G4OpenGLViewerMessenger::SetNewValue @@ -377,3 +382,5 @@ void G4OpenGLViewerMessenger::SetNewValue } } + +#endif diff --git a/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc b/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc index 56858c2713..3504781cbb 100644 --- a/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLWin32Viewer.cc,v 1.17 2006/06/29 21:19:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // G4OpenGLWin32Viewer : Class to provide WindowsNT specific diff --git a/source/visualization/OpenGL/src/G4OpenGLXViewer.cc b/source/visualization/OpenGL/src/G4OpenGLXViewer.cc index c161ac9a7f..b570e2c959 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXViewer.cc,v 1.42 2007/05/25 10:47:17 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmBox.cc b/source/visualization/OpenGL/src/G4OpenGLXmBox.cc index 01bcca7b51..9a0bb5c923 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmBox.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmBox.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmBox.cc,v 1.6 2006/06/29 21:19:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Box container class diff --git a/source/visualization/OpenGL/src/G4OpenGLXmConvenienceRoutines.cc b/source/visualization/OpenGL/src/G4OpenGLXmConvenienceRoutines.cc index 085a5f7c10..735cb69f88 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmConvenienceRoutines.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmConvenienceRoutines.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmConvenienceRoutines.cc,v 1.11 2006/06/29 21:19:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 16th April 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmFourArrowButtons.cc b/source/visualization/OpenGL/src/G4OpenGLXmFourArrowButtons.cc index 2b7d3a9215..d98f2a2a3e 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmFourArrowButtons.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmFourArrowButtons.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmFourArrowButtons.cc,v 1.5 2006/06/29 21:19:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Four arrow buttons class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmFramedBox.cc b/source/visualization/OpenGL/src/G4OpenGLXmFramedBox.cc index 6e0a46b092..a9d227c5ad 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmFramedBox.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmFramedBox.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmFramedBox.cc,v 1.6 2006/06/29 21:19:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Framed box container class diff --git a/source/visualization/OpenGL/src/G4OpenGLXmMainMenubarCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmMainMenubarCallbacks.cc index 5d4f66d74e..6fc2b1bddc 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmMainMenubarCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmMainMenubarCallbacks.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmMainMenubarCallbacks.cc,v 1.13 2006/06/29 21:19:48 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 16th April 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmPanningCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmPanningCallbacks.cc index 6d1f42b02a..fbf71dc468 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmPanningCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmPanningCallbacks.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmPanningCallbacks.cc,v 1.8 2006/06/29 21:19:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 16th April 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmPushButton.cc b/source/visualization/OpenGL/src/G4OpenGLXmPushButton.cc index 5722f965d0..d82ab50ad7 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmPushButton.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmPushButton.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmPushButton.cc,v 1.6 2006/06/29 21:19:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Push button class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmRadioButton.cc b/source/visualization/OpenGL/src/G4OpenGLXmRadioButton.cc index 28a003b6b2..c40f158ab1 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmRadioButton.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmRadioButton.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmRadioButton.cc,v 1.6 2006/06/29 21:19:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Radio button class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc index 8cf5c88f14..c0f56fc9e2 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmRotationCallbacks.cc,v 1.14 2006/06/29 21:19:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 16th April 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmSeparator.cc b/source/visualization/OpenGL/src/G4OpenGLXmSeparator.cc index 5b496d0fd6..ceff22ca82 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmSeparator.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmSeparator.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmSeparator.cc,v 1.5 2006/06/29 21:19:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Separator class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc b/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc index b507efd77c..c9528d5e44 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmSliderBar.cc,v 1.7 2006/06/29 21:20:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Slider bar class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmStyleCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmStyleCallbacks.cc index 1a757b4df8..dae628ce35 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmStyleCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmStyleCallbacks.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmStyleCallbacks.cc,v 1.14 2006/06/29 21:20:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 16th April 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmTextField.cc b/source/visualization/OpenGL/src/G4OpenGLXmTextField.cc index 3de0025b10..e8e06208ee 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmTextField.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmTextField.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmTextField.cc,v 1.7 2006/06/29 21:20:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Text field class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmTopLevelShell.cc b/source/visualization/OpenGL/src/G4OpenGLXmTopLevelShell.cc index 7a348445d3..81e7e49c96 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmTopLevelShell.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmTopLevelShell.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmTopLevelShell.cc,v 1.5 2006/06/29 21:20:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Top level shell class diff --git a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc index 6ae9cd25be..3c4445691d 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmVWidgetComponent.cc,v 1.5 2006/06/29 21:20:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Base class for all Motif component widgets diff --git a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetContainer.cc b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetContainer.cc index 6b376a0fe9..bc746bd097 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetContainer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetContainer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmVWidgetContainer.cc,v 1.5 2006/06/29 21:20:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Base class for all Motif container widgets diff --git a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetObject.cc b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetObject.cc index c33d7ff335..afb1a1720f 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetObject.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetObject.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmVWidgetObject.cc,v 1.5 2006/06/29 21:20:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Virtual base class for all Motif widgets. diff --git a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetShell.cc b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetShell.cc index b6ba18842d..aa5b5a88d6 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetShell.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetShell.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmVWidgetShell.cc,v 1.5 2006/06/29 21:20:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // //Base class for all Motif shell widgets diff --git a/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc b/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc index b7ce4f735b..386dd08068 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmViewer.cc,v 1.23 2006/06/29 21:20:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4OpenGLXmViewer.cc,v 1.24 2007/08/21 14:05:51 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 10th February 1997 @@ -615,7 +615,7 @@ dolly_high (fVP.GetDolly() + 1000.0), fov (0.0), rot_sens_limit (90.), pan_sens_limit (100.), -rot_sens (4.), +rot_sens (1.), wob_sens (20.), original_vp(fVP.GetViewpointDirection()), frameNo (0), diff --git a/source/visualization/OpenGL/src/G4OpenGLXmViewerMessenger.cc b/source/visualization/OpenGL/src/G4OpenGLXmViewerMessenger.cc index 84de5e8898..b36e2dd3f5 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmViewerMessenger.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmViewerMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmViewerMessenger.cc,v 1.4 2006/06/29 21:20:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifdef G4VIS_BUILD_OPENGLXM_DRIVER diff --git a/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc index c17bf53a9d..bda0238cc5 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmWindowHandlingCallbacks.cc,v 1.6 2006/06/29 21:20:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 16th June 1997 diff --git a/source/visualization/OpenInventor/History b/source/visualization/OpenInventor/History index e7a226a1d4..95d3db168d 100644 --- a/source/visualization/OpenInventor/History +++ b/source/visualization/OpenInventor/History @@ -1,4 +1,4 @@ -$Id: History,v 1.93 2007/04/03 13:35:48 allison Exp $ +$Id: History,v 1.94 2007/10/23 14:56:35 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -20,6 +20,10 @@ committal in the CVS repository ! History file for visualization/OpenInventor ------------------------------------------- +23rd October 2007 Gabriele Cosmo +- Initialise local vectors in SoPolyhedron.cc to fix compilation warnings + on gcc-4.2.2 for use of non-initialised values. + 3rd April 2007 John Allison (openinventor-V08-02-02 - needs visman-V08-02-03) - Introduced picking control. Default is "true" for Open Inventor. diff --git a/source/visualization/OpenInventor/include/G4OpenInventor.hh b/source/visualization/OpenInventor/include/G4OpenInventor.hh index a347f216fb..2ef81d4b9d 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventor.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventor.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventor.hh,v 1.9 2006/06/29 21:20:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Guy Barrand 26 Mar 1998. // OpenInventor graphics system factory. diff --git a/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.hh b/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.hh index 91fdf8c70b..30d89086d8 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorSceneHandler.hh,v 1.33 2007/03/27 15:24:15 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // J Kallenbach 27th Aug 1996 diff --git a/source/visualization/OpenInventor/include/G4OpenInventorTransform3D.hh b/source/visualization/OpenInventor/include/G4OpenInventorTransform3D.hh index f5cd613d78..96d4d7fce0 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorTransform3D.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorTransform3D.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorTransform3D.hh,v 1.7 2006/06/29 21:20:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // jck 17 Dec 1996 diff --git a/source/visualization/OpenInventor/include/G4OpenInventorWin.hh b/source/visualization/OpenInventor/include/G4OpenInventorWin.hh index 8dc4a56099..ee171da7a3 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorWin.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorWin.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorWin.hh,v 1.3 2006/06/29 21:20:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // OpenInventor graphics system factory. diff --git a/source/visualization/OpenInventor/include/G4OpenInventorWin32.hh b/source/visualization/OpenInventor/include/G4OpenInventorWin32.hh index 7bb4b56751..ddaa4003f5 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorWin32.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorWin32.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorWin32.hh,v 1.7 2006/06/29 21:20:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // OpenInventor graphics system factory. diff --git a/source/visualization/OpenInventor/include/G4OpenInventorWinViewer.hh b/source/visualization/OpenInventor/include/G4OpenInventorWinViewer.hh index ea97560c1b..29f226c369 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorWinViewer.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorWinViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorWinViewer.hh,v 1.9 2006/06/29 21:20:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Jeff Kallenbach 01 Aug 1996 diff --git a/source/visualization/OpenInventor/include/G4OpenInventorX.hh b/source/visualization/OpenInventor/include/G4OpenInventorX.hh index 3197184e64..19373f4340 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorX.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorX.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorX.hh,v 1.7 2006/06/29 21:20:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenInventor/include/G4OpenInventorXt.hh b/source/visualization/OpenInventor/include/G4OpenInventorXt.hh index 1803dc6e3c..e04968fe80 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorXt.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorXt.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorXt.hh,v 1.3 2006/06/29 21:20:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenInventor/include/G4OpenInventorXtViewer.hh b/source/visualization/OpenInventor/include/G4OpenInventorXtViewer.hh index 0f862ac259..ae80a593d2 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorXtViewer.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorXtViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorXtViewer.hh,v 1.14 2006/06/29 21:20:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Jeff Kallenbach 01 Aug 1996 diff --git a/source/visualization/OpenInventor/include/HEPVis/SbMath.h b/source/visualization/OpenInventor/include/HEPVis/SbMath.h index 3666a5a60e..feef949b63 100644 --- a/source/visualization/OpenInventor/include/HEPVis/SbMath.h +++ b/source/visualization/OpenInventor/include/HEPVis/SbMath.h @@ -25,7 +25,7 @@ // // // $Id: SbMath.h,v 1.4 2006/06/29 21:20:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef HEPVis_SbMath_h #define HEPVis_SbMath_h diff --git a/source/visualization/OpenInventor/include/HEPVis/nodekits/SoDetectorTreeKit.h b/source/visualization/OpenInventor/include/HEPVis/nodekits/SoDetectorTreeKit.h index d663c11ed5..fbb6830374 100644 --- a/source/visualization/OpenInventor/include/HEPVis/nodekits/SoDetectorTreeKit.h +++ b/source/visualization/OpenInventor/include/HEPVis/nodekits/SoDetectorTreeKit.h @@ -25,7 +25,7 @@ // // // $Id: SoDetectorTreeKit.h,v 1.5 2006/06/29 21:21:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /*-----------------------------HEPVis----------------------------------------*/ /* */ diff --git a/source/visualization/OpenInventor/include/HEPVis/nodes/SoBox.h b/source/visualization/OpenInventor/include/HEPVis/nodes/SoBox.h index a41b96e9a6..7da2c54f1b 100644 --- a/source/visualization/OpenInventor/include/HEPVis/nodes/SoBox.h +++ b/source/visualization/OpenInventor/include/HEPVis/nodes/SoBox.h @@ -25,7 +25,7 @@ // // // $Id: SoBox.h,v 1.3 2006/06/29 21:21:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /*-----------------------------Hepvis----------------------------------------*/ /* */ diff --git a/source/visualization/OpenInventor/include/HEPVis/nodes/SoCons.h b/source/visualization/OpenInventor/include/HEPVis/nodes/SoCons.h index 026242b7e9..550a7f8f2e 100644 --- a/source/visualization/OpenInventor/include/HEPVis/nodes/SoCons.h +++ b/source/visualization/OpenInventor/include/HEPVis/nodes/SoCons.h @@ -25,7 +25,7 @@ // // // $Id: SoCons.h,v 1.3 2006/06/29 21:21:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /*-----------------------------Hepvis----------------------------------------*/ /* */ diff --git a/source/visualization/OpenInventor/include/HEPVis/nodes/SoTrap.h b/source/visualization/OpenInventor/include/HEPVis/nodes/SoTrap.h index bc9d4680a1..ebaf83fc69 100644 --- a/source/visualization/OpenInventor/include/HEPVis/nodes/SoTrap.h +++ b/source/visualization/OpenInventor/include/HEPVis/nodes/SoTrap.h @@ -25,7 +25,7 @@ // // // $Id: SoTrap.h,v 1.4 2006/06/29 21:22:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /*-----------------------------Hepvis----------------------------------------*/ /* */ diff --git a/source/visualization/OpenInventor/include/HEPVis/nodes/SoTrd.h b/source/visualization/OpenInventor/include/HEPVis/nodes/SoTrd.h index 255957d8b5..e92d7f5264 100644 --- a/source/visualization/OpenInventor/include/HEPVis/nodes/SoTrd.h +++ b/source/visualization/OpenInventor/include/HEPVis/nodes/SoTrd.h @@ -25,7 +25,7 @@ // // // $Id: SoTrd.h,v 1.3 2006/06/29 21:22:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /*-----------------------------Hepvis----------------------------------------*/ /* */ diff --git a/source/visualization/OpenInventor/include/HEPVis/nodes/SoTubs.h b/source/visualization/OpenInventor/include/HEPVis/nodes/SoTubs.h index 7dcfc32348..2fffc578c9 100644 --- a/source/visualization/OpenInventor/include/HEPVis/nodes/SoTubs.h +++ b/source/visualization/OpenInventor/include/HEPVis/nodes/SoTubs.h @@ -25,7 +25,7 @@ // // // $Id: SoTubs.h,v 1.3 2006/06/29 21:22:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /*-----------------------------Hepvis----------------------------------------*/ /* */ diff --git a/source/visualization/OpenInventor/include/SoG4LineSet.h b/source/visualization/OpenInventor/include/SoG4LineSet.h index dfe7032c20..220ecc3c7c 100644 --- a/source/visualization/OpenInventor/include/SoG4LineSet.h +++ b/source/visualization/OpenInventor/include/SoG4LineSet.h @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SoG4LineSet.h,v 1.2 2006/12/13 15:49:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // John Allison 26th October 2006 // Extended SoLineSet to include G4Atts. diff --git a/source/visualization/OpenInventor/include/SoG4MarkerSet.h b/source/visualization/OpenInventor/include/SoG4MarkerSet.h index 0fbf99bca1..04e164a053 100644 --- a/source/visualization/OpenInventor/include/SoG4MarkerSet.h +++ b/source/visualization/OpenInventor/include/SoG4MarkerSet.h @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: SoG4MarkerSet.h,v 1.2 2006/12/13 15:49:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // John Allison 26th October 2006 // Extended SoMarkerSet to include G4Atts. diff --git a/source/visualization/OpenInventor/include/SoG4Polyhedron.h b/source/visualization/OpenInventor/include/SoG4Polyhedron.h index c8adacbaaf..359ceffcd5 100644 --- a/source/visualization/OpenInventor/include/SoG4Polyhedron.h +++ b/source/visualization/OpenInventor/include/SoG4Polyhedron.h @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: SoG4Polyhedron.h,v 1.2 2006/12/13 15:49:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: SoG4Polyhedron.h,v 1.3 2007/09/17 16:08:00 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // John Allison 26th October 2006 // Extended Geant4_SoPolyhedron to include G4Atts. @@ -34,7 +34,7 @@ #define SoG4Polyhedron_h // Inheritance : -#include +#include "Geant4_SoPolyhedron.h" #include "G4AttHolder.hh" class G4Polyhedron; diff --git a/source/visualization/OpenInventor/src/G4OpenInventor.cc b/source/visualization/OpenInventor/src/G4OpenInventor.cc index 6e34d2b1e2..a3bea18309 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventor.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventor.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventor.cc,v 1.20 2006/06/29 21:22:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifdef G4VIS_BUILD_OI_DRIVER diff --git a/source/visualization/OpenInventor/src/G4OpenInventorSceneHandler.cc b/source/visualization/OpenInventor/src/G4OpenInventorSceneHandler.cc index fbf447cf45..91cddaad69 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorSceneHandler.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorSceneHandler.cc,v 1.53 2007/04/03 13:35:48 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Jeff Kallenbach 01 Aug 1996 diff --git a/source/visualization/OpenInventor/src/G4OpenInventorTransform3D.cc b/source/visualization/OpenInventor/src/G4OpenInventorTransform3D.cc index 2142eca5e3..218d1c9881 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorTransform3D.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorTransform3D.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorTransform3D.cc,v 1.8 2006/06/29 21:22:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // jck 17 Dec 1996 diff --git a/source/visualization/OpenInventor/src/G4OpenInventorViewer.cc b/source/visualization/OpenInventor/src/G4OpenInventorViewer.cc index 05e4862563..e6b5dcb8cc 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorViewer.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorViewer.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4OpenInventorViewer.cc,v 1.59 2007/04/03 13:35:48 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifdef G4VIS_BUILD_OI_DRIVER diff --git a/source/visualization/OpenInventor/src/G4OpenInventorWin.cc b/source/visualization/OpenInventor/src/G4OpenInventorWin.cc index c8979c2d02..4bfe6f0d0f 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorWin.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorWin.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorWin.cc,v 1.6 2006/06/29 21:22:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // OpenInventor graphics system factory. diff --git a/source/visualization/OpenInventor/src/G4OpenInventorWinViewer.cc b/source/visualization/OpenInventor/src/G4OpenInventorWinViewer.cc index bd976e2cee..1b756ed9a6 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorWinViewer.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorWinViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorWinViewer.cc,v 1.25 2006/06/29 21:22:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /* * jck : 05 Feb 1997 : Initial Implementation diff --git a/source/visualization/OpenInventor/src/G4OpenInventorXt.cc b/source/visualization/OpenInventor/src/G4OpenInventorXt.cc index 17392301c3..c7b3795cef 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorXt.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorXt.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorXt.cc,v 1.4 2006/06/29 21:22:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Jeff Kallenbach 01 Aug 1996 diff --git a/source/visualization/OpenInventor/src/G4OpenInventorXtViewer.cc b/source/visualization/OpenInventor/src/G4OpenInventorXtViewer.cc index d8381c763a..3d27227b83 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorXtViewer.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorXtViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenInventorXtViewer.cc,v 1.24 2006/06/29 21:22:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /* * jck 05 Feb 1997 - Initial Implementation diff --git a/source/visualization/OpenInventor/src/SoBox.cc b/source/visualization/OpenInventor/src/SoBox.cc index 9891de6688..a38e008e50 100644 --- a/source/visualization/OpenInventor/src/SoBox.cc +++ b/source/visualization/OpenInventor/src/SoBox.cc @@ -26,7 +26,7 @@ // // // $Id: SoBox.cc,v 1.8 2006/06/29 21:22:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /*----------------------------HEPVis----------------------------------------*/ /* */ diff --git a/source/visualization/OpenInventor/src/SoCons.cc b/source/visualization/OpenInventor/src/SoCons.cc index b35e55c15f..07178b06ac 100644 --- a/source/visualization/OpenInventor/src/SoCons.cc +++ b/source/visualization/OpenInventor/src/SoCons.cc @@ -26,7 +26,7 @@ // // // $Id: SoCons.cc,v 1.8 2006/06/29 21:22:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /*-----------------------------HEPVis---------------------------------------*/ /* */ diff --git a/source/visualization/OpenInventor/src/SoDetectorTreeKit.cc b/source/visualization/OpenInventor/src/SoDetectorTreeKit.cc index cb20bac28d..0ffdc2b544 100644 --- a/source/visualization/OpenInventor/src/SoDetectorTreeKit.cc +++ b/source/visualization/OpenInventor/src/SoDetectorTreeKit.cc @@ -26,7 +26,7 @@ // // // $Id: SoDetectorTreeKit.cc,v 1.13 2006/06/29 21:22:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /*-----------------------------HEPVis----------------------------------------*/ /* */ diff --git a/source/visualization/OpenInventor/src/SoPolyhedron.cc b/source/visualization/OpenInventor/src/SoPolyhedron.cc index 8858bcd0c7..02e1576e66 100644 --- a/source/visualization/OpenInventor/src/SoPolyhedron.cc +++ b/source/visualization/OpenInventor/src/SoPolyhedron.cc @@ -128,7 +128,7 @@ void Geant4_SoPolyhedron::generatePrimitives( (SoTextureCoordinateElement::getType(state) == SoTextureCoordinateElement::FUNCTION); const SoTextureCoordinateElement *tce = NULL; - SbVec4f texCoord; + SbVec4f texCoord(0.,0.,0.,0.); if (useTexFunction) { tce = SoTextureCoordinateElement::getInstance(state); } else { @@ -415,7 +415,7 @@ void Geant4_SoPolyhedron::generateAlternateRep( int ncoord = nedge*3; int32_t* coords = new int32_t[ncoord]; - SbVec3f pvb,pve; + SbVec3f pvb(0.,0.,0.), pve(0.,0.,0.); SbBool empty = TRUE; int ipoint = 0; diff --git a/source/visualization/OpenInventor/src/SoTrap.cc b/source/visualization/OpenInventor/src/SoTrap.cc index 24fd045108..14776ab48a 100644 --- a/source/visualization/OpenInventor/src/SoTrap.cc +++ b/source/visualization/OpenInventor/src/SoTrap.cc @@ -26,7 +26,7 @@ // // // $Id: SoTrap.cc,v 1.8 2006/06/29 21:23:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /*-----------------------------HEPVis----------------------------------------*/ /* */ diff --git a/source/visualization/OpenInventor/src/SoTrd.cc b/source/visualization/OpenInventor/src/SoTrd.cc index 5eb8c2e827..9e77f3d8bb 100644 --- a/source/visualization/OpenInventor/src/SoTrd.cc +++ b/source/visualization/OpenInventor/src/SoTrd.cc @@ -26,7 +26,7 @@ // // // $Id: SoTrd.cc,v 1.8 2006/06/29 21:23:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /*-----------------------------HEPVis---------------------------------------*/ /* */ diff --git a/source/visualization/OpenInventor/src/SoTubs.cc b/source/visualization/OpenInventor/src/SoTubs.cc index 31a5326d5a..2ab95db63d 100644 --- a/source/visualization/OpenInventor/src/SoTubs.cc +++ b/source/visualization/OpenInventor/src/SoTubs.cc @@ -26,7 +26,7 @@ // // // $Id: SoTubs.cc,v 1.8 2006/06/29 21:23:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /*-----------------------------HEPVis---------------------------------------*/ /* */ diff --git a/source/visualization/RayTracer/include/G4RTJpeg.hh b/source/visualization/RayTracer/include/G4RTJpeg.hh index c8ac7b611b..8f6c080281 100644 --- a/source/visualization/RayTracer/include/G4RTJpeg.hh +++ b/source/visualization/RayTracer/include/G4RTJpeg.hh @@ -25,7 +25,7 @@ // // // $Id: G4RTJpeg.hh,v 1.6 2006/06/29 21:23:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4RTJpegCoder.hh b/source/visualization/RayTracer/include/G4RTJpegCoder.hh index ef4f883ced..f2ddeaafe2 100644 --- a/source/visualization/RayTracer/include/G4RTJpegCoder.hh +++ b/source/visualization/RayTracer/include/G4RTJpegCoder.hh @@ -25,7 +25,7 @@ // // // $Id: G4RTJpegCoder.hh,v 1.6 2006/06/29 21:23:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4RTJpegCoderTables.hh b/source/visualization/RayTracer/include/G4RTJpegCoderTables.hh index 322335c8c0..a068c3a85a 100644 --- a/source/visualization/RayTracer/include/G4RTJpegCoderTables.hh +++ b/source/visualization/RayTracer/include/G4RTJpegCoderTables.hh @@ -25,7 +25,7 @@ // // // $Id: G4RTJpegCoderTables.hh,v 1.6 2006/06/29 21:23:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // class description: diff --git a/source/visualization/RayTracer/include/G4RTJpegMaker.hh b/source/visualization/RayTracer/include/G4RTJpegMaker.hh index 9d468eccb7..062908bf2d 100644 --- a/source/visualization/RayTracer/include/G4RTJpegMaker.hh +++ b/source/visualization/RayTracer/include/G4RTJpegMaker.hh @@ -25,7 +25,7 @@ // // // $Id: G4RTJpegMaker.hh,v 1.6 2006/06/29 21:23:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4RTMessenger.hh b/source/visualization/RayTracer/include/G4RTMessenger.hh index fe2ae0fed7..88067a7d64 100644 --- a/source/visualization/RayTracer/include/G4RTMessenger.hh +++ b/source/visualization/RayTracer/include/G4RTMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4RTMessenger.hh,v 1.7 2006/06/29 21:23:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4RTOutBitStream.hh b/source/visualization/RayTracer/include/G4RTOutBitStream.hh index 62ae799439..bfa631fc05 100644 --- a/source/visualization/RayTracer/include/G4RTOutBitStream.hh +++ b/source/visualization/RayTracer/include/G4RTOutBitStream.hh @@ -25,7 +25,7 @@ // // // $Id: G4RTOutBitStream.hh,v 1.7 2006/06/29 21:23:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4RTSimpleScanner.hh b/source/visualization/RayTracer/include/G4RTSimpleScanner.hh index 7379862736..5cb4db357d 100644 --- a/source/visualization/RayTracer/include/G4RTSimpleScanner.hh +++ b/source/visualization/RayTracer/include/G4RTSimpleScanner.hh @@ -25,7 +25,7 @@ // // // $Id: G4RTSimpleScanner.hh,v 1.3 2006/06/29 21:23:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4RTSteppingAction.hh b/source/visualization/RayTracer/include/G4RTSteppingAction.hh index f8b0cc3a30..381f9597da 100644 --- a/source/visualization/RayTracer/include/G4RTSteppingAction.hh +++ b/source/visualization/RayTracer/include/G4RTSteppingAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4RTSteppingAction.hh,v 1.5 2006/06/29 21:23:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4RTTrackingAction.hh b/source/visualization/RayTracer/include/G4RTTrackingAction.hh index 34cf063b00..e9e483d73f 100644 --- a/source/visualization/RayTracer/include/G4RTTrackingAction.hh +++ b/source/visualization/RayTracer/include/G4RTTrackingAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4RTTrackingAction.hh,v 1.6 2006/06/29 21:23:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4RTXScanner.hh b/source/visualization/RayTracer/include/G4RTXScanner.hh index b7cea914bf..52ec6f783d 100644 --- a/source/visualization/RayTracer/include/G4RTXScanner.hh +++ b/source/visualization/RayTracer/include/G4RTXScanner.hh @@ -25,7 +25,7 @@ // // // $Id: G4RTXScanner.hh,v 1.4 2006/06/29 21:23:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4RayTracer.hh b/source/visualization/RayTracer/include/G4RayTracer.hh index 4de27b6d83..03da5fbbee 100644 --- a/source/visualization/RayTracer/include/G4RayTracer.hh +++ b/source/visualization/RayTracer/include/G4RayTracer.hh @@ -25,7 +25,7 @@ // // // $Id: G4RayTracer.hh,v 1.12 2007/06/14 15:25:20 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4RayTracerFeatures.hh b/source/visualization/RayTracer/include/G4RayTracerFeatures.hh index da39ce76d5..e4f1f69b8d 100644 --- a/source/visualization/RayTracer/include/G4RayTracerFeatures.hh +++ b/source/visualization/RayTracer/include/G4RayTracerFeatures.hh @@ -25,7 +25,7 @@ // // // $Id: G4RayTracerFeatures.hh,v 1.4 2006/06/29 21:23:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4RayTracerSceneHandler.hh b/source/visualization/RayTracer/include/G4RayTracerSceneHandler.hh index 35c3123e18..b079e0a1a7 100644 --- a/source/visualization/RayTracer/include/G4RayTracerSceneHandler.hh +++ b/source/visualization/RayTracer/include/G4RayTracerSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4RayTracerSceneHandler.hh,v 1.11 2006/06/29 21:23:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // John Allison 17th March 2000 diff --git a/source/visualization/RayTracer/include/G4RayTracerViewer.hh b/source/visualization/RayTracer/include/G4RayTracerViewer.hh index 0bab18ca4c..c3e65b640e 100644 --- a/source/visualization/RayTracer/include/G4RayTracerViewer.hh +++ b/source/visualization/RayTracer/include/G4RayTracerViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4RayTracerViewer.hh,v 1.7 2006/06/29 21:23:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // John Allison 17th March 2000 diff --git a/source/visualization/RayTracer/include/G4RayTracerX.hh b/source/visualization/RayTracer/include/G4RayTracerX.hh index 2d21a7379d..c686070db0 100644 --- a/source/visualization/RayTracer/include/G4RayTracerX.hh +++ b/source/visualization/RayTracer/include/G4RayTracerX.hh @@ -25,7 +25,7 @@ // // // $Id: G4RayTracerX.hh,v 1.4 2006/06/29 21:23:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 11th September 2003 diff --git a/source/visualization/RayTracer/include/G4RayTracerXViewer.hh b/source/visualization/RayTracer/include/G4RayTracerXViewer.hh index af279325d9..258a2aa86d 100644 --- a/source/visualization/RayTracer/include/G4RayTracerXViewer.hh +++ b/source/visualization/RayTracer/include/G4RayTracerXViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4RayTracerXViewer.hh,v 1.3 2006/06/29 21:23:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // John Allison 17th March 2000 diff --git a/source/visualization/RayTracer/include/G4RayTrajectory.hh b/source/visualization/RayTracer/include/G4RayTrajectory.hh index fe61ccfd6c..ea9036863a 100644 --- a/source/visualization/RayTracer/include/G4RayTrajectory.hh +++ b/source/visualization/RayTracer/include/G4RayTrajectory.hh @@ -25,7 +25,7 @@ // // // $Id: G4RayTrajectory.hh,v 1.15 2006/06/29 21:23:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4RayTrajectoryPoint.hh b/source/visualization/RayTracer/include/G4RayTrajectoryPoint.hh index c9943a8a20..f509078638 100644 --- a/source/visualization/RayTracer/include/G4RayTrajectoryPoint.hh +++ b/source/visualization/RayTracer/include/G4RayTrajectoryPoint.hh @@ -25,7 +25,7 @@ // // // $Id: G4RayTrajectoryPoint.hh,v 1.9 2006/06/29 21:23:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4TheRayTracer.hh b/source/visualization/RayTracer/include/G4TheRayTracer.hh index 1678743e43..014c017879 100644 --- a/source/visualization/RayTracer/include/G4TheRayTracer.hh +++ b/source/visualization/RayTracer/include/G4TheRayTracer.hh @@ -25,7 +25,7 @@ // // // $Id: G4TheRayTracer.hh,v 1.3 2006/06/29 21:23:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4VFigureFileMaker.hh b/source/visualization/RayTracer/include/G4VFigureFileMaker.hh index 993f96ccd1..cb91e64da2 100644 --- a/source/visualization/RayTracer/include/G4VFigureFileMaker.hh +++ b/source/visualization/RayTracer/include/G4VFigureFileMaker.hh @@ -25,7 +25,7 @@ // // // $Id: G4VFigureFileMaker.hh,v 1.5 2006/06/29 21:23:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/include/G4VRTScanner.hh b/source/visualization/RayTracer/include/G4VRTScanner.hh index aa0eeb94b0..479099e7b5 100644 --- a/source/visualization/RayTracer/include/G4VRTScanner.hh +++ b/source/visualization/RayTracer/include/G4VRTScanner.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRTScanner.hh,v 1.5 2006/06/29 21:23:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/src/G4RTJpegCoder.cc b/source/visualization/RayTracer/src/G4RTJpegCoder.cc index 749c9cbdee..0bb252d6de 100644 --- a/source/visualization/RayTracer/src/G4RTJpegCoder.cc +++ b/source/visualization/RayTracer/src/G4RTJpegCoder.cc @@ -25,7 +25,7 @@ // // // $Id: G4RTJpegCoder.cc,v 1.6 2006/06/29 21:23:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/visualization/RayTracer/src/G4RTJpegMaker.cc b/source/visualization/RayTracer/src/G4RTJpegMaker.cc index 541476053e..a6880ff1c2 100644 --- a/source/visualization/RayTracer/src/G4RTJpegMaker.cc +++ b/source/visualization/RayTracer/src/G4RTJpegMaker.cc @@ -25,7 +25,7 @@ // // // $Id: G4RTJpegMaker.cc,v 1.10 2006/06/29 21:23:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/visualization/RayTracer/src/G4RTMessenger.cc b/source/visualization/RayTracer/src/G4RTMessenger.cc index 62ebc73a43..0ba04522eb 100644 --- a/source/visualization/RayTracer/src/G4RTMessenger.cc +++ b/source/visualization/RayTracer/src/G4RTMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4RTMessenger.cc,v 1.10 2006/11/17 21:34:12 perl Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/visualization/RayTracer/src/G4RTOutBitStream.cc b/source/visualization/RayTracer/src/G4RTOutBitStream.cc index 40c6a59b47..f3a68ad679 100644 --- a/source/visualization/RayTracer/src/G4RTOutBitStream.cc +++ b/source/visualization/RayTracer/src/G4RTOutBitStream.cc @@ -25,7 +25,7 @@ // // // $Id: G4RTOutBitStream.cc,v 1.5 2006/06/29 21:24:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/visualization/RayTracer/src/G4RTSimpleScanner.cc b/source/visualization/RayTracer/src/G4RTSimpleScanner.cc index ec27ccc2af..2541948cf1 100644 --- a/source/visualization/RayTracer/src/G4RTSimpleScanner.cc +++ b/source/visualization/RayTracer/src/G4RTSimpleScanner.cc @@ -25,7 +25,7 @@ // // // $Id: G4RTSimpleScanner.cc,v 1.4 2007/05/22 17:10:42 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/src/G4RTSteppingAction.cc b/source/visualization/RayTracer/src/G4RTSteppingAction.cc index 1ba7721ee7..23554467f0 100644 --- a/source/visualization/RayTracer/src/G4RTSteppingAction.cc +++ b/source/visualization/RayTracer/src/G4RTSteppingAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4RTSteppingAction.cc,v 1.7 2006/06/29 21:24:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/visualization/RayTracer/src/G4RTTrackingAction.cc b/source/visualization/RayTracer/src/G4RTTrackingAction.cc index 18f9a0342d..fd81e86116 100644 --- a/source/visualization/RayTracer/src/G4RTTrackingAction.cc +++ b/source/visualization/RayTracer/src/G4RTTrackingAction.cc @@ -25,7 +25,7 @@ // // // $Id: G4RTTrackingAction.cc,v 1.5 2006/06/29 21:24:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/visualization/RayTracer/src/G4RTXScanner.cc b/source/visualization/RayTracer/src/G4RTXScanner.cc index 6419aebd96..4f294487c0 100644 --- a/source/visualization/RayTracer/src/G4RTXScanner.cc +++ b/source/visualization/RayTracer/src/G4RTXScanner.cc @@ -25,7 +25,7 @@ // // // $Id: G4RTXScanner.cc,v 1.5 2007/05/22 17:10:42 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/RayTracer/src/G4RayTracer.cc b/source/visualization/RayTracer/src/G4RayTracer.cc index 0e6073e000..984c02f611 100644 --- a/source/visualization/RayTracer/src/G4RayTracer.cc +++ b/source/visualization/RayTracer/src/G4RayTracer.cc @@ -25,7 +25,7 @@ // // // $Id: G4RayTracer.cc,v 1.22 2007/06/14 15:25:20 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4RayTracer.hh" #include "G4RayTracerFeatures.hh" diff --git a/source/visualization/RayTracer/src/G4RayTracerSceneHandler.cc b/source/visualization/RayTracer/src/G4RayTracerSceneHandler.cc index c66f133669..e95c9c767f 100644 --- a/source/visualization/RayTracer/src/G4RayTracerSceneHandler.cc +++ b/source/visualization/RayTracer/src/G4RayTracerSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4RayTracerSceneHandler.cc,v 1.10 2006/11/14 14:46:37 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4RayTracerSceneHandler.hh" #include "G4VisManager.hh" diff --git a/source/visualization/RayTracer/src/G4RayTracerViewer.cc b/source/visualization/RayTracer/src/G4RayTracerViewer.cc index 12090ca8f9..d2aa3dc3dd 100644 --- a/source/visualization/RayTracer/src/G4RayTracerViewer.cc +++ b/source/visualization/RayTracer/src/G4RayTracerViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4RayTracerViewer.cc,v 1.17 2007/01/05 17:05:11 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4RayTracerViewer.hh" diff --git a/source/visualization/RayTracer/src/G4RayTracerX.cc b/source/visualization/RayTracer/src/G4RayTracerX.cc index fd8d027d65..df1196d115 100644 --- a/source/visualization/RayTracer/src/G4RayTracerX.cc +++ b/source/visualization/RayTracer/src/G4RayTracerX.cc @@ -25,7 +25,7 @@ // // // $Id: G4RayTracerX.cc,v 1.5 2006/06/29 21:24:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/visualization/RayTracer/src/G4RayTracerXViewer.cc b/source/visualization/RayTracer/src/G4RayTracerXViewer.cc index 61be613cb6..6b371ec512 100644 --- a/source/visualization/RayTracer/src/G4RayTracerXViewer.cc +++ b/source/visualization/RayTracer/src/G4RayTracerXViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4RayTracerXViewer.cc,v 1.5 2006/06/29 21:24:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #ifdef G4VIS_BUILD_RAYTRACERX_DRIVER diff --git a/source/visualization/RayTracer/src/G4RayTrajectory.cc b/source/visualization/RayTracer/src/G4RayTrajectory.cc index a1daea37d1..b9b9cea61d 100644 --- a/source/visualization/RayTracer/src/G4RayTrajectory.cc +++ b/source/visualization/RayTracer/src/G4RayTrajectory.cc @@ -25,7 +25,7 @@ // // // $Id: G4RayTrajectory.cc,v 1.15 2006/06/29 21:24:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/visualization/RayTracer/src/G4RayTrajectoryPoint.cc b/source/visualization/RayTracer/src/G4RayTrajectoryPoint.cc index 0a85ab3a3b..7f9cabc9eb 100644 --- a/source/visualization/RayTracer/src/G4RayTrajectoryPoint.cc +++ b/source/visualization/RayTracer/src/G4RayTrajectoryPoint.cc @@ -25,7 +25,7 @@ // // // $Id: G4RayTrajectoryPoint.cc,v 1.6 2006/06/29 21:24:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/visualization/RayTracer/src/G4TheRayTracer.cc b/source/visualization/RayTracer/src/G4TheRayTracer.cc index 48765a7a00..5a3ee5f57f 100644 --- a/source/visualization/RayTracer/src/G4TheRayTracer.cc +++ b/source/visualization/RayTracer/src/G4TheRayTracer.cc @@ -25,7 +25,7 @@ // // // $Id: G4TheRayTracer.cc,v 1.3 2006/06/29 21:24:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // diff --git a/source/visualization/Tree/include/G4ASCIITree.hh b/source/visualization/Tree/include/G4ASCIITree.hh index 190c755c32..ddb20ed477 100644 --- a/source/visualization/Tree/include/G4ASCIITree.hh +++ b/source/visualization/Tree/include/G4ASCIITree.hh @@ -25,7 +25,7 @@ // // // $Id: G4ASCIITree.hh,v 1.7 2006/06/29 21:24:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/include/G4ASCIITreeMessenger.hh b/source/visualization/Tree/include/G4ASCIITreeMessenger.hh index b6e03b4cc9..109e2ff36c 100644 --- a/source/visualization/Tree/include/G4ASCIITreeMessenger.hh +++ b/source/visualization/Tree/include/G4ASCIITreeMessenger.hh @@ -25,7 +25,7 @@ // // // $Id: G4ASCIITreeMessenger.hh,v 1.7 2006/06/29 21:24:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/include/G4ASCIITreeSceneHandler.hh b/source/visualization/Tree/include/G4ASCIITreeSceneHandler.hh index 773bf8b66d..72680609b8 100644 --- a/source/visualization/Tree/include/G4ASCIITreeSceneHandler.hh +++ b/source/visualization/Tree/include/G4ASCIITreeSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4ASCIITreeSceneHandler.hh,v 1.17 2006/12/11 21:14:45 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/include/G4ASCIITreeViewer.hh b/source/visualization/Tree/include/G4ASCIITreeViewer.hh index b093d5d0b9..f4b2bb579f 100644 --- a/source/visualization/Tree/include/G4ASCIITreeViewer.hh +++ b/source/visualization/Tree/include/G4ASCIITreeViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4ASCIITreeViewer.hh,v 1.5 2006/06/29 21:24:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/include/G4VTree.hh b/source/visualization/Tree/include/G4VTree.hh index 6123543926..4d41b8dc31 100644 --- a/source/visualization/Tree/include/G4VTree.hh +++ b/source/visualization/Tree/include/G4VTree.hh @@ -25,7 +25,7 @@ // // // $Id: G4VTree.hh,v 1.5 2006/06/29 21:24:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/include/G4VTreeSceneHandler.hh b/source/visualization/Tree/include/G4VTreeSceneHandler.hh index 8fbe554cdc..3ff3a77314 100644 --- a/source/visualization/Tree/include/G4VTreeSceneHandler.hh +++ b/source/visualization/Tree/include/G4VTreeSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4VTreeSceneHandler.hh,v 1.18 2006/06/29 21:24:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/include/G4VTreeSceneHandler.icc b/source/visualization/Tree/include/G4VTreeSceneHandler.icc index ce109029c0..d0d320ff8f 100644 --- a/source/visualization/Tree/include/G4VTreeSceneHandler.icc +++ b/source/visualization/Tree/include/G4VTreeSceneHandler.icc @@ -25,7 +25,7 @@ // // // $Id: G4VTreeSceneHandler.icc,v 1.8 2006/06/29 21:24:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 18th May 2000 diff --git a/source/visualization/Tree/include/G4VTreeViewer.hh b/source/visualization/Tree/include/G4VTreeViewer.hh index 7a8ca08368..df37d99a1a 100644 --- a/source/visualization/Tree/include/G4VTreeViewer.hh +++ b/source/visualization/Tree/include/G4VTreeViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4VTreeViewer.hh,v 1.5 2006/06/29 21:24:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/src/G4ASCIITree.cc b/source/visualization/Tree/src/G4ASCIITree.cc index f4dda77ac3..ceda95c82a 100644 --- a/source/visualization/Tree/src/G4ASCIITree.cc +++ b/source/visualization/Tree/src/G4ASCIITree.cc @@ -25,7 +25,7 @@ // // // $Id: G4ASCIITree.cc,v 1.12 2007/01/05 16:59:43 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/src/G4ASCIITreeMessenger.cc b/source/visualization/Tree/src/G4ASCIITreeMessenger.cc index 2be0af29d2..39c0d4ca9e 100644 --- a/source/visualization/Tree/src/G4ASCIITreeMessenger.cc +++ b/source/visualization/Tree/src/G4ASCIITreeMessenger.cc @@ -25,7 +25,7 @@ // // // $Id: G4ASCIITreeMessenger.cc,v 1.19 2007/01/05 16:59:43 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/src/G4ASCIITreeSceneHandler.cc b/source/visualization/Tree/src/G4ASCIITreeSceneHandler.cc index 3f4c324491..b441d02d42 100644 --- a/source/visualization/Tree/src/G4ASCIITreeSceneHandler.cc +++ b/source/visualization/Tree/src/G4ASCIITreeSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4ASCIITreeSceneHandler.cc,v 1.34 2007/01/05 17:00:27 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/src/G4ASCIITreeViewer.cc b/source/visualization/Tree/src/G4ASCIITreeViewer.cc index 1e4cb43c24..a92cb03b94 100644 --- a/source/visualization/Tree/src/G4ASCIITreeViewer.cc +++ b/source/visualization/Tree/src/G4ASCIITreeViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4ASCIITreeViewer.cc,v 1.8 2006/06/29 21:24:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4ASCIITreeViewer.hh" diff --git a/source/visualization/Tree/src/G4VTree.cc b/source/visualization/Tree/src/G4VTree.cc index 579d8d13a1..84f699b68d 100644 --- a/source/visualization/Tree/src/G4VTree.cc +++ b/source/visualization/Tree/src/G4VTree.cc @@ -25,7 +25,7 @@ // // // $Id: G4VTree.cc,v 1.5 2006/06/29 21:25:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/src/G4VTreeSceneHandler.cc b/source/visualization/Tree/src/G4VTreeSceneHandler.cc index cb061c1d1d..fe4494e9a2 100644 --- a/source/visualization/Tree/src/G4VTreeSceneHandler.cc +++ b/source/visualization/Tree/src/G4VTreeSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4VTreeSceneHandler.cc,v 1.14 2006/06/29 21:25:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/src/G4VTreeViewer.cc b/source/visualization/Tree/src/G4VTreeViewer.cc index 3cd25f16ef..f540b12c66 100644 --- a/source/visualization/Tree/src/G4VTreeViewer.cc +++ b/source/visualization/Tree/src/G4VTreeViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VTreeViewer.cc,v 1.7 2006/06/29 21:25:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4VTreeViewer.hh" diff --git a/source/visualization/VRML/g4vrmlview/g4mini.java b/source/visualization/VRML/g4vrmlview/g4mini.java index 96ca7c4d03..49b3fd10a6 100644 --- a/source/visualization/VRML/g4vrmlview/g4mini.java +++ b/source/visualization/VRML/g4vrmlview/g4mini.java @@ -25,7 +25,7 @@ // // // $Id: g4mini.java,v 1.4 2006/06/29 21:25:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // import java.io.*; import java.net.*; diff --git a/source/visualization/VRML/g4vrmlview/g4vrmlview.java b/source/visualization/VRML/g4vrmlview/g4vrmlview.java index 19326bfa2f..ff25701d68 100644 --- a/source/visualization/VRML/g4vrmlview/g4vrmlview.java +++ b/source/visualization/VRML/g4vrmlview/g4vrmlview.java @@ -25,7 +25,7 @@ // // // $Id: g4vrmlview.java,v 1.4 2006/06/29 21:25:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // import java.io.*; import java.net.*; diff --git a/source/visualization/VRML/include/FRClient.h b/source/visualization/VRML/include/FRClient.h index 7cb2c2382c..90d42205bd 100644 --- a/source/visualization/VRML/include/FRClient.h +++ b/source/visualization/VRML/include/FRClient.h @@ -25,7 +25,7 @@ // // // $Id: FRClient.h,v 1.6 2006/06/29 21:25:19 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // FRClient.h // FukuiRenderer Client diff --git a/source/visualization/VRML/include/G4FRClient.hh b/source/visualization/VRML/include/G4FRClient.hh index 52f0d20b25..ebac3aa8c6 100644 --- a/source/visualization/VRML/include/G4FRClient.hh +++ b/source/visualization/VRML/include/G4FRClient.hh @@ -25,7 +25,7 @@ // // // $Id: G4FRClient.hh,v 1.8 2006/06/29 21:25:21 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4FRClient.hh // Yasuhide Sawada and Satoshi Tanaka diff --git a/source/visualization/VRML/include/G4VRML1.hh b/source/visualization/VRML/include/G4VRML1.hh index 2015802e3f..ff88b1ced5 100644 --- a/source/visualization/VRML/include/G4VRML1.hh +++ b/source/visualization/VRML/include/G4VRML1.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRML1.hh,v 1.10 2006/06/29 21:25:23 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML1.hh // Yasuhide Sawada and Satoshi Tanaka diff --git a/source/visualization/VRML/include/G4VRML1File.hh b/source/visualization/VRML/include/G4VRML1File.hh index 23c94e7e5b..736be07104 100644 --- a/source/visualization/VRML/include/G4VRML1File.hh +++ b/source/visualization/VRML/include/G4VRML1File.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRML1File.hh,v 1.10 2006/06/29 21:25:25 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML1File.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML1FileSceneHandler.hh b/source/visualization/VRML/include/G4VRML1FileSceneHandler.hh index 582b08309e..42edc60352 100644 --- a/source/visualization/VRML/include/G4VRML1FileSceneHandler.hh +++ b/source/visualization/VRML/include/G4VRML1FileSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRML1FileSceneHandler.hh,v 1.17 2006/06/29 21:25:27 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML1FileSceneHandler.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML1FileViewer.hh b/source/visualization/VRML/include/G4VRML1FileViewer.hh index c3da5d80fe..a00783798f 100644 --- a/source/visualization/VRML/include/G4VRML1FileViewer.hh +++ b/source/visualization/VRML/include/G4VRML1FileViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRML1FileViewer.hh,v 1.8 2006/06/29 21:25:29 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML1FileViewer.hh // Satoshi Tanaka and Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML1SceneHandler.hh b/source/visualization/VRML/include/G4VRML1SceneHandler.hh index 6f0547bd8a..bac66cde19 100644 --- a/source/visualization/VRML/include/G4VRML1SceneHandler.hh +++ b/source/visualization/VRML/include/G4VRML1SceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRML1SceneHandler.hh,v 1.14 2006/06/29 21:25:31 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML1SceneHandler.hh // Yasuhide Sawada & Satoshi Tanaka diff --git a/source/visualization/VRML/include/G4VRML1Viewer.hh b/source/visualization/VRML/include/G4VRML1Viewer.hh index b5597de7d7..0b2fd433a3 100644 --- a/source/visualization/VRML/include/G4VRML1Viewer.hh +++ b/source/visualization/VRML/include/G4VRML1Viewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRML1Viewer.hh,v 1.8 2006/06/29 21:25:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML1Viewer.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2.hh b/source/visualization/VRML/include/G4VRML2.hh index 6b3a4e38ff..0473bf4b34 100644 --- a/source/visualization/VRML/include/G4VRML2.hh +++ b/source/visualization/VRML/include/G4VRML2.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRML2.hh,v 1.10 2006/06/29 21:25:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2.hh // Satoshi Tanaka and Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2File.hh b/source/visualization/VRML/include/G4VRML2File.hh index 475ea5f24c..5472f6c12b 100644 --- a/source/visualization/VRML/include/G4VRML2File.hh +++ b/source/visualization/VRML/include/G4VRML2File.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRML2File.hh,v 1.11 2006/06/29 21:25:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2File.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2FileSceneHandler.hh b/source/visualization/VRML/include/G4VRML2FileSceneHandler.hh index 4a39e19598..5c9e805e9c 100644 --- a/source/visualization/VRML/include/G4VRML2FileSceneHandler.hh +++ b/source/visualization/VRML/include/G4VRML2FileSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRML2FileSceneHandler.hh,v 1.16 2006/06/29 21:25:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2FileSceneHandler.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2FileViewer.hh b/source/visualization/VRML/include/G4VRML2FileViewer.hh index 59f8e33598..663f3afc1c 100644 --- a/source/visualization/VRML/include/G4VRML2FileViewer.hh +++ b/source/visualization/VRML/include/G4VRML2FileViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRML2FileViewer.hh,v 1.10 2006/06/29 21:25:41 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2FileViewer.hh // Satoshi Tanaka and Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2SceneHandler.hh b/source/visualization/VRML/include/G4VRML2SceneHandler.hh index ec4ffd3565..8e91902282 100644 --- a/source/visualization/VRML/include/G4VRML2SceneHandler.hh +++ b/source/visualization/VRML/include/G4VRML2SceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRML2SceneHandler.hh,v 1.13 2006/06/29 21:25:43 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2SceneHandler.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2Viewer.hh b/source/visualization/VRML/include/G4VRML2Viewer.hh index 5ed376392d..ac9b6e5136 100644 --- a/source/visualization/VRML/include/G4VRML2Viewer.hh +++ b/source/visualization/VRML/include/G4VRML2Viewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRML2Viewer.hh,v 1.8 2006/06/29 21:25:45 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2Viewer.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRMLNetConfig.hh b/source/visualization/VRML/include/G4VRMLNetConfig.hh index 0615e04aa5..2896238314 100644 --- a/source/visualization/VRML/include/G4VRMLNetConfig.hh +++ b/source/visualization/VRML/include/G4VRMLNetConfig.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRMLNetConfig.hh,v 1.7 2006/06/29 21:25:47 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRMLNetConfig.hh // Satoshi Tanaka diff --git a/source/visualization/VRML/src/FRClient.cc b/source/visualization/VRML/src/FRClient.cc index 484ecb0e23..1ebac0350a 100644 --- a/source/visualization/VRML/src/FRClient.cc +++ b/source/visualization/VRML/src/FRClient.cc @@ -25,7 +25,7 @@ // // // $Id: FRClient.cc,v 1.7 2006/06/29 21:25:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // FRClient.cc // FukuiRenderer Client diff --git a/source/visualization/VRML/src/G4FRClient.cc b/source/visualization/VRML/src/G4FRClient.cc index ba17b9df9d..76cb5ef31c 100644 --- a/source/visualization/VRML/src/G4FRClient.cc +++ b/source/visualization/VRML/src/G4FRClient.cc @@ -25,7 +25,7 @@ // // // $Id: G4FRClient.cc,v 1.8 2006/06/29 21:25:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4FRClient.cc // Yasuhide Sawada & Satoshi Tanaka diff --git a/source/visualization/VRML/src/G4VRML1.cc b/source/visualization/VRML/src/G4VRML1.cc index 284b507d8a..a7827b3730 100644 --- a/source/visualization/VRML/src/G4VRML1.cc +++ b/source/visualization/VRML/src/G4VRML1.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRML1.cc,v 1.10 2006/06/29 21:25:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML1.cc // Yasuhide Sawada & Satoshi Tanaka diff --git a/source/visualization/VRML/src/G4VRML1File.cc b/source/visualization/VRML/src/G4VRML1File.cc index 3dff3d4ed7..be404d89ef 100644 --- a/source/visualization/VRML/src/G4VRML1File.cc +++ b/source/visualization/VRML/src/G4VRML1File.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRML1File.cc,v 1.10 2006/06/29 21:25:55 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML1File.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML1FileSceneHandler.cc b/source/visualization/VRML/src/G4VRML1FileSceneHandler.cc index 31fe4d4911..9fb8740988 100644 --- a/source/visualization/VRML/src/G4VRML1FileSceneHandler.cc +++ b/source/visualization/VRML/src/G4VRML1FileSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRML1FileSceneHandler.cc,v 1.12 2006/06/29 21:25:57 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML1FileSceneHandler.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML1FileViewer.cc b/source/visualization/VRML/src/G4VRML1FileViewer.cc index 97b7e94b9d..37607e4221 100644 --- a/source/visualization/VRML/src/G4VRML1FileViewer.cc +++ b/source/visualization/VRML/src/G4VRML1FileViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRML1FileViewer.cc,v 1.11 2006/06/29 21:25:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRMLView.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML1SceneHandler.cc b/source/visualization/VRML/src/G4VRML1SceneHandler.cc index d39fd35b4a..2ee9534fbd 100644 --- a/source/visualization/VRML/src/G4VRML1SceneHandler.cc +++ b/source/visualization/VRML/src/G4VRML1SceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRML1SceneHandler.cc,v 1.10 2006/06/29 21:26:01 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML1SceneHandler.cc // Yasuhide Sawada and Satoshi Tanaka diff --git a/source/visualization/VRML/src/G4VRML1SceneHandlerFunc.icc b/source/visualization/VRML/src/G4VRML1SceneHandlerFunc.icc index da4c040775..23faa43c87 100644 --- a/source/visualization/VRML/src/G4VRML1SceneHandlerFunc.icc +++ b/source/visualization/VRML/src/G4VRML1SceneHandlerFunc.icc @@ -25,7 +25,7 @@ // // // $Id: G4VRML1SceneHandlerFunc.icc,v 1.16 2006/06/29 21:26:03 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML1SceneHandlerFunc.icc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML1Viewer.cc b/source/visualization/VRML/src/G4VRML1Viewer.cc index 913dab2eeb..3a4ea15ee8 100644 --- a/source/visualization/VRML/src/G4VRML1Viewer.cc +++ b/source/visualization/VRML/src/G4VRML1Viewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRML1Viewer.cc,v 1.8 2006/06/29 21:26:05 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRMLView.cc // Yasuhide Sawada & Satoshi Tanaka diff --git a/source/visualization/VRML/src/G4VRML2.cc b/source/visualization/VRML/src/G4VRML2.cc index e9f47a8c50..a7b4cbad3e 100644 --- a/source/visualization/VRML/src/G4VRML2.cc +++ b/source/visualization/VRML/src/G4VRML2.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRML2.cc,v 1.10 2006/06/29 21:26:07 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML2File.cc b/source/visualization/VRML/src/G4VRML2File.cc index 954d53ca5b..46562a3752 100644 --- a/source/visualization/VRML/src/G4VRML2File.cc +++ b/source/visualization/VRML/src/G4VRML2File.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRML2File.cc,v 1.10 2006/06/29 21:26:09 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2File.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML2FileSceneHandler.cc b/source/visualization/VRML/src/G4VRML2FileSceneHandler.cc index f573c0841c..9122f183e3 100644 --- a/source/visualization/VRML/src/G4VRML2FileSceneHandler.cc +++ b/source/visualization/VRML/src/G4VRML2FileSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRML2FileSceneHandler.cc,v 1.14 2006/06/29 21:26:11 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2FileSceneHandler.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML2FileViewer.cc b/source/visualization/VRML/src/G4VRML2FileViewer.cc index 8f17d05225..e4874c5c51 100644 --- a/source/visualization/VRML/src/G4VRML2FileViewer.cc +++ b/source/visualization/VRML/src/G4VRML2FileViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRML2FileViewer.cc,v 1.13 2006/06/29 21:26:13 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2FileViewer.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML2SceneHandler.cc b/source/visualization/VRML/src/G4VRML2SceneHandler.cc index e64bf1dee5..d10fa62121 100644 --- a/source/visualization/VRML/src/G4VRML2SceneHandler.cc +++ b/source/visualization/VRML/src/G4VRML2SceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRML2SceneHandler.cc,v 1.12 2006/06/29 21:26:15 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2SceneHandler.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc b/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc index 8782b489de..a89691646a 100644 --- a/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc +++ b/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc @@ -25,7 +25,7 @@ // // // $Id: G4VRML2SceneHandlerFunc.icc,v 1.20 2006/06/29 21:26:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2SceneHandlerFunc.icc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML2Viewer.cc b/source/visualization/VRML/src/G4VRML2Viewer.cc index 62745172c3..dffe42c82c 100644 --- a/source/visualization/VRML/src/G4VRML2Viewer.cc +++ b/source/visualization/VRML/src/G4VRML2Viewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRML2Viewer.cc,v 1.12 2006/06/29 21:26:35 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // G4VRML2Viewer.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/XXX/include/G4XXX.hh b/source/visualization/XXX/include/G4XXX.hh index 8b77f1b81b..ace12b8310 100644 --- a/source/visualization/XXX/include/G4XXX.hh +++ b/source/visualization/XXX/include/G4XXX.hh @@ -25,7 +25,7 @@ // // // $Id: G4XXX.hh,v 1.5 2006/06/29 21:26:37 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/XXX/include/G4XXXFile.hh b/source/visualization/XXX/include/G4XXXFile.hh index e683c3bef5..e8f72ccfac 100644 --- a/source/visualization/XXX/include/G4XXXFile.hh +++ b/source/visualization/XXX/include/G4XXXFile.hh @@ -25,7 +25,7 @@ // // // $Id: G4XXXFile.hh,v 1.2 2006/06/29 21:26:39 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th March 2006 diff --git a/source/visualization/XXX/include/G4XXXFileSceneHandler.hh b/source/visualization/XXX/include/G4XXXFileSceneHandler.hh index 0128fe71a5..87cd48965b 100644 --- a/source/visualization/XXX/include/G4XXXFileSceneHandler.hh +++ b/source/visualization/XXX/include/G4XXXFileSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4XXXFileSceneHandler.hh,v 1.3 2006/06/29 21:26:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th March 2006 diff --git a/source/visualization/XXX/include/G4XXXFileViewer.hh b/source/visualization/XXX/include/G4XXXFileViewer.hh index 5ae737c3cd..be0eb19442 100644 --- a/source/visualization/XXX/include/G4XXXFileViewer.hh +++ b/source/visualization/XXX/include/G4XXXFileViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4XXXFileViewer.hh,v 1.3 2006/07/03 16:52:48 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th March 2006 diff --git a/source/visualization/XXX/include/G4XXXSG.hh b/source/visualization/XXX/include/G4XXXSG.hh index 16cfa07885..f7747a2d5f 100644 --- a/source/visualization/XXX/include/G4XXXSG.hh +++ b/source/visualization/XXX/include/G4XXXSG.hh @@ -25,7 +25,7 @@ // // // $Id: G4XXXSG.hh,v 1.2 2006/06/29 21:26:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 10th March 2005 diff --git a/source/visualization/XXX/include/G4XXXSGSceneHandler.hh b/source/visualization/XXX/include/G4XXXSGSceneHandler.hh index 896831a280..b22095349b 100644 --- a/source/visualization/XXX/include/G4XXXSGSceneHandler.hh +++ b/source/visualization/XXX/include/G4XXXSGSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4XXXSGSceneHandler.hh,v 1.3 2006/06/29 21:26:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 10th March 2006 diff --git a/source/visualization/XXX/include/G4XXXSGViewer.hh b/source/visualization/XXX/include/G4XXXSGViewer.hh index 2ce4f4da7d..14d57510ae 100644 --- a/source/visualization/XXX/include/G4XXXSGViewer.hh +++ b/source/visualization/XXX/include/G4XXXSGViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4XXXSGViewer.hh,v 1.2 2006/06/29 21:26:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 10th March 2006 diff --git a/source/visualization/XXX/include/G4XXXSceneHandler.hh b/source/visualization/XXX/include/G4XXXSceneHandler.hh index 71db750968..9546d722ea 100644 --- a/source/visualization/XXX/include/G4XXXSceneHandler.hh +++ b/source/visualization/XXX/include/G4XXXSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4XXXSceneHandler.hh,v 1.21 2006/06/29 21:27:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/XXX/include/G4XXXStored.hh b/source/visualization/XXX/include/G4XXXStored.hh index a9e4c3228e..9eb2ef89a2 100644 --- a/source/visualization/XXX/include/G4XXXStored.hh +++ b/source/visualization/XXX/include/G4XXXStored.hh @@ -25,7 +25,7 @@ // // // $Id: G4XXXStored.hh,v 1.2 2006/06/29 21:27:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th March 2006 diff --git a/source/visualization/XXX/include/G4XXXStoredSceneHandler.hh b/source/visualization/XXX/include/G4XXXStoredSceneHandler.hh index d0ab48e123..db340efa0d 100644 --- a/source/visualization/XXX/include/G4XXXStoredSceneHandler.hh +++ b/source/visualization/XXX/include/G4XXXStoredSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4XXXStoredSceneHandler.hh,v 1.3 2006/06/29 21:27:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th March 2006 diff --git a/source/visualization/XXX/include/G4XXXStoredViewer.hh b/source/visualization/XXX/include/G4XXXStoredViewer.hh index 19f2d96208..d118a92859 100644 --- a/source/visualization/XXX/include/G4XXXStoredViewer.hh +++ b/source/visualization/XXX/include/G4XXXStoredViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4XXXStoredViewer.hh,v 1.2 2006/06/29 21:27:17 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th March 2006 diff --git a/source/visualization/XXX/include/G4XXXViewer.hh b/source/visualization/XXX/include/G4XXXViewer.hh index 584644aaf5..9c77d50289 100644 --- a/source/visualization/XXX/include/G4XXXViewer.hh +++ b/source/visualization/XXX/include/G4XXXViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4XXXViewer.hh,v 1.8 2006/06/29 21:27:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/XXX/src/G4XXX.cc b/source/visualization/XXX/src/G4XXX.cc index fc7eacadf6..fa1d6e5b7d 100644 --- a/source/visualization/XXX/src/G4XXX.cc +++ b/source/visualization/XXX/src/G4XXX.cc @@ -25,7 +25,7 @@ // // // $Id: G4XXX.cc,v 1.6 2006/06/29 21:27:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/XXX/src/G4XXXFile.cc b/source/visualization/XXX/src/G4XXXFile.cc index 9641208697..1be446b863 100644 --- a/source/visualization/XXX/src/G4XXXFile.cc +++ b/source/visualization/XXX/src/G4XXXFile.cc @@ -25,7 +25,7 @@ // // // $Id: G4XXXFile.cc,v 1.2 2006/06/29 21:27:24 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th March 2006 diff --git a/source/visualization/XXX/src/G4XXXFileSceneHandler.cc b/source/visualization/XXX/src/G4XXXFileSceneHandler.cc index daf1d3e0a9..5068a3ea6a 100644 --- a/source/visualization/XXX/src/G4XXXFileSceneHandler.cc +++ b/source/visualization/XXX/src/G4XXXFileSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4XXXFileSceneHandler.cc,v 1.5 2006/07/03 16:52:49 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th March 2006 diff --git a/source/visualization/XXX/src/G4XXXFileViewer.cc b/source/visualization/XXX/src/G4XXXFileViewer.cc index 97eb2dea98..70ffc105c5 100644 --- a/source/visualization/XXX/src/G4XXXFileViewer.cc +++ b/source/visualization/XXX/src/G4XXXFileViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4XXXFileViewer.cc,v 1.3 2006/07/03 16:52:49 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th March 2006 diff --git a/source/visualization/XXX/src/G4XXXSG.cc b/source/visualization/XXX/src/G4XXXSG.cc index d222f0ac4c..27b9b46a72 100644 --- a/source/visualization/XXX/src/G4XXXSG.cc +++ b/source/visualization/XXX/src/G4XXXSG.cc @@ -25,7 +25,7 @@ // // // $Id: G4XXXSG.cc,v 1.2 2006/06/29 21:27:33 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 10th March 2005 diff --git a/source/visualization/XXX/src/G4XXXSGSceneHandler.cc b/source/visualization/XXX/src/G4XXXSGSceneHandler.cc index 23ae67441e..6b9714139e 100644 --- a/source/visualization/XXX/src/G4XXXSGSceneHandler.cc +++ b/source/visualization/XXX/src/G4XXXSGSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4XXXSGSceneHandler.cc,v 1.6 2006/11/05 20:41:36 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 10th March 2006 diff --git a/source/visualization/XXX/src/G4XXXSGViewer.cc b/source/visualization/XXX/src/G4XXXSGViewer.cc index a666d444f0..2b356151de 100644 --- a/source/visualization/XXX/src/G4XXXSGViewer.cc +++ b/source/visualization/XXX/src/G4XXXSGViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4XXXSGViewer.cc,v 1.4 2006/08/29 16:11:25 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 10th March 2006 diff --git a/source/visualization/XXX/src/G4XXXSceneHandler.cc b/source/visualization/XXX/src/G4XXXSceneHandler.cc index 7ae879ea66..7b99fc391c 100644 --- a/source/visualization/XXX/src/G4XXXSceneHandler.cc +++ b/source/visualization/XXX/src/G4XXXSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4XXXSceneHandler.cc,v 1.32 2006/07/03 16:52:49 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/XXX/src/G4XXXStored.cc b/source/visualization/XXX/src/G4XXXStored.cc index aed91883ce..0a4c7aa641 100644 --- a/source/visualization/XXX/src/G4XXXStored.cc +++ b/source/visualization/XXX/src/G4XXXStored.cc @@ -25,7 +25,7 @@ // // // $Id: G4XXXStored.cc,v 1.2 2006/06/29 21:27:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th March 2006 diff --git a/source/visualization/XXX/src/G4XXXStoredSceneHandler.cc b/source/visualization/XXX/src/G4XXXStoredSceneHandler.cc index 80850ff1fb..bdc05cf629 100644 --- a/source/visualization/XXX/src/G4XXXStoredSceneHandler.cc +++ b/source/visualization/XXX/src/G4XXXStoredSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4XXXStoredSceneHandler.cc,v 1.9 2006/10/26 11:30:10 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th March 2006 diff --git a/source/visualization/XXX/src/G4XXXStoredViewer.cc b/source/visualization/XXX/src/G4XXXStoredViewer.cc index 478eba1d02..f34625b655 100644 --- a/source/visualization/XXX/src/G4XXXStoredViewer.cc +++ b/source/visualization/XXX/src/G4XXXStoredViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4XXXStoredViewer.cc,v 1.5 2006/08/29 16:11:25 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th March 2006 diff --git a/source/visualization/XXX/src/G4XXXViewer.cc b/source/visualization/XXX/src/G4XXXViewer.cc index f48afcc857..a017a854db 100644 --- a/source/visualization/XXX/src/G4XXXViewer.cc +++ b/source/visualization/XXX/src/G4XXXViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4XXXViewer.cc,v 1.9 2006/06/29 21:27:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/management/History b/source/visualization/management/History index a7e2907903..8ec1288c4c 100644 --- a/source/visualization/management/History +++ b/source/visualization/management/History @@ -1,4 +1,4 @@ -$Id: History,v 1.100 2007/05/25 10:50:42 allison Exp $ +$Id: History,v 1.103 2007/11/16 20:34:17 perl Exp $ ------------------------------------------------------------------- @@ -26,8 +26,20 @@ committal in the CVS repository ! History file for visualization management sub-category ------------------------------------------------------ -25th May 2007 John Allison (visman-V08-03-01) -- Improved error trapping in viewer initialisation. +16th November 2007 Joseph Perl (visman-V09-00-02) +- G4VisCommandsCompound.cc: Replace references to Wired3. +- G4VisCommandsSceneAdd.cc: Replace references to Wired3. + +10th November 2007 John Allison (visman-V09-00-01) +- G4VisManager.cc: Minor improvement in messaging. +- G4VisCommandsScene.cc: Improvements in /vis/scene/endOfEventAction messaging. + +10th July 2007 John Allison (visman-V09-00-00) +- Remove redundant method declarations in G4VisManager.hh. +- Reinstate refesh after "/vis/viewer/set/autoRefresh true". + +-25th May 2007 John Allison (visman-V08-03-01) + Improved error trapping in viewer initialisation. - Bug fix in /vis/scene/notifyHandlers for case of no current viewer. 16th May 2007 John Allison (visman-V08-03-00) diff --git a/source/visualization/management/include/G4GraphicsSystemList.hh b/source/visualization/management/include/G4GraphicsSystemList.hh index 5df997f2a8..8f83d3898f 100644 --- a/source/visualization/management/include/G4GraphicsSystemList.hh +++ b/source/visualization/management/include/G4GraphicsSystemList.hh @@ -25,7 +25,7 @@ // // // $Id: G4GraphicsSystemList.hh,v 1.9 2006/06/29 21:27:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 2nd April 1996 diff --git a/source/visualization/management/include/G4Scene.hh b/source/visualization/management/include/G4Scene.hh index 5b7ea48381..00ef74a9e0 100644 --- a/source/visualization/management/include/G4Scene.hh +++ b/source/visualization/management/include/G4Scene.hh @@ -25,7 +25,7 @@ // // // $Id: G4Scene.hh,v 1.18 2006/11/14 14:59:54 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Scene John Allison 19th July 1996. diff --git a/source/visualization/management/include/G4Scene.icc b/source/visualization/management/include/G4Scene.icc index a7772d2d9a..fe4c814b72 100644 --- a/source/visualization/management/include/G4Scene.icc +++ b/source/visualization/management/include/G4Scene.icc @@ -25,7 +25,7 @@ // // // $Id: G4Scene.icc,v 1.14 2006/11/14 14:59:54 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Scene data John Allison 19th July 1996. diff --git a/source/visualization/management/include/G4SceneHandlerList.hh b/source/visualization/management/include/G4SceneHandlerList.hh index 9732c259b4..10af12511f 100644 --- a/source/visualization/management/include/G4SceneHandlerList.hh +++ b/source/visualization/management/include/G4SceneHandlerList.hh @@ -25,7 +25,7 @@ // // // $Id: G4SceneHandlerList.hh,v 1.8 2006/06/29 21:28:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison May 1996 diff --git a/source/visualization/management/include/G4SceneList.hh b/source/visualization/management/include/G4SceneList.hh index 9f68d95457..a3c3dbac9d 100644 --- a/source/visualization/management/include/G4SceneList.hh +++ b/source/visualization/management/include/G4SceneList.hh @@ -25,7 +25,7 @@ // // // $Id: G4SceneList.hh,v 1.10 2006/06/29 21:28:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 9th August 1998 diff --git a/source/visualization/management/include/G4VGraphicsSystem.hh b/source/visualization/management/include/G4VGraphicsSystem.hh index 4cec03c009..941095b76a 100644 --- a/source/visualization/management/include/G4VGraphicsSystem.hh +++ b/source/visualization/management/include/G4VGraphicsSystem.hh @@ -25,7 +25,7 @@ // // // $Id: G4VGraphicsSystem.hh,v 1.11 2006/06/29 21:28:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 27th March 1996 diff --git a/source/visualization/management/include/G4VGraphicsSystem.icc b/source/visualization/management/include/G4VGraphicsSystem.icc index 92c5a48ae4..dd89fc8d63 100644 --- a/source/visualization/management/include/G4VGraphicsSystem.icc +++ b/source/visualization/management/include/G4VGraphicsSystem.icc @@ -25,7 +25,7 @@ // // // $Id: G4VGraphicsSystem.icc,v 1.7 2006/06/29 21:28:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 27th March 1996 diff --git a/source/visualization/management/include/G4VSceneHandler.hh b/source/visualization/management/include/G4VSceneHandler.hh index 05e4737ebf..9d76f0cebe 100644 --- a/source/visualization/management/include/G4VSceneHandler.hh +++ b/source/visualization/management/include/G4VSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4VSceneHandler.hh,v 1.39 2007/01/11 16:38:14 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 19th July 1996. diff --git a/source/visualization/management/include/G4VSceneHandler.icc b/source/visualization/management/include/G4VSceneHandler.icc index 3863dff8d7..c13e0b718a 100644 --- a/source/visualization/management/include/G4VSceneHandler.icc +++ b/source/visualization/management/include/G4VSceneHandler.icc @@ -25,7 +25,7 @@ // // // $Id: G4VSceneHandler.icc,v 1.20 2007/01/11 16:38:14 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 19th July 1996. diff --git a/source/visualization/management/include/G4VUserVisAction.hh b/source/visualization/management/include/G4VUserVisAction.hh index 45a68b14e0..232fee3a25 100644 --- a/source/visualization/management/include/G4VUserVisAction.hh +++ b/source/visualization/management/include/G4VUserVisAction.hh @@ -25,7 +25,7 @@ // // // $Id: G4VUserVisAction.hh,v 1.8 2006/06/29 21:28:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/management/include/G4VViewer.hh b/source/visualization/management/include/G4VViewer.hh index 7e9dc58a37..cbd5bb6e04 100644 --- a/source/visualization/management/include/G4VViewer.hh +++ b/source/visualization/management/include/G4VViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4VViewer.hh,v 1.18 2006/06/29 21:28:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 27th March 1996 diff --git a/source/visualization/management/include/G4VViewer.icc b/source/visualization/management/include/G4VViewer.icc index 5c5e6be362..3776f42b4e 100644 --- a/source/visualization/management/include/G4VViewer.icc +++ b/source/visualization/management/include/G4VViewer.icc @@ -25,7 +25,7 @@ // // // $Id: G4VViewer.icc,v 1.11 2006/06/29 21:28:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 30th December 1996 diff --git a/source/visualization/management/include/G4VVisCommand.hh b/source/visualization/management/include/G4VVisCommand.hh index e3ba7a4a77..fae614ce0e 100644 --- a/source/visualization/management/include/G4VVisCommand.hh +++ b/source/visualization/management/include/G4VVisCommand.hh @@ -25,7 +25,7 @@ // // // $Id: G4VVisCommand.hh,v 1.18 2006/06/29 21:28:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // Base class for visualization commands - John Allison 9th August 1998 // It is really a messenger - we have one command per messenger. diff --git a/source/visualization/management/include/G4VVisCommand.icc b/source/visualization/management/include/G4VVisCommand.icc index 428bbd82cf..67bf089a7f 100644 --- a/source/visualization/management/include/G4VVisCommand.icc +++ b/source/visualization/management/include/G4VVisCommand.icc @@ -25,7 +25,7 @@ // // // $Id: G4VVisCommand.icc,v 1.5 2006/06/29 21:28:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // Base class for visualization commands - John Allison 9th August 1998 // It is really a messenger - we have one command per messenger. diff --git a/source/visualization/management/include/G4ViewParameters.hh b/source/visualization/management/include/G4ViewParameters.hh index 8999d63cb8..3f6db7e192 100644 --- a/source/visualization/management/include/G4ViewParameters.hh +++ b/source/visualization/management/include/G4ViewParameters.hh @@ -25,7 +25,7 @@ // // // $Id: G4ViewParameters.hh,v 1.26 2007/04/03 13:33:16 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 19th July 1996 diff --git a/source/visualization/management/include/G4ViewParameters.icc b/source/visualization/management/include/G4ViewParameters.icc index 434f7d0d13..043fd0c182 100644 --- a/source/visualization/management/include/G4ViewParameters.icc +++ b/source/visualization/management/include/G4ViewParameters.icc @@ -25,7 +25,7 @@ // // // $Id: G4ViewParameters.icc,v 1.16 2007/04/03 13:33:16 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 20th October 1996 diff --git a/source/visualization/management/include/G4ViewerList.hh b/source/visualization/management/include/G4ViewerList.hh index ea77a63d12..d0fe6de2a0 100644 --- a/source/visualization/management/include/G4ViewerList.hh +++ b/source/visualization/management/include/G4ViewerList.hh @@ -25,7 +25,7 @@ // // // $Id: G4ViewerList.hh,v 1.8 2006/06/29 21:28:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison May 1996 diff --git a/source/visualization/management/include/G4VisCommandModelCreate.hh b/source/visualization/management/include/G4VisCommandModelCreate.hh index 2f451a8d9e..7715bd69ee 100644 --- a/source/visualization/management/include/G4VisCommandModelCreate.hh +++ b/source/visualization/management/include/G4VisCommandModelCreate.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VisCommandModelCreate.hh,v 1.3 2006/06/29 21:28:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl October 2005 // diff --git a/source/visualization/management/include/G4VisCommands.hh b/source/visualization/management/include/G4VisCommands.hh index 96e219799a..0c627fd1c8 100644 --- a/source/visualization/management/include/G4VisCommands.hh +++ b/source/visualization/management/include/G4VisCommands.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisCommands.hh,v 1.7 2007/01/11 16:39:33 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/ top level commands - John Allison 5th February 2001 diff --git a/source/visualization/management/include/G4VisCommandsCompound.hh b/source/visualization/management/include/G4VisCommandsCompound.hh index 19346dcfa6..9d470613f0 100644 --- a/source/visualization/management/include/G4VisCommandsCompound.hh +++ b/source/visualization/management/include/G4VisCommandsCompound.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsCompound.hh,v 1.9 2006/06/29 21:28:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // Compound /vis/ commands - John Allison 15th May 2000 diff --git a/source/visualization/management/include/G4VisCommandsGeometry.hh b/source/visualization/management/include/G4VisCommandsGeometry.hh index 9f550b0b41..796f45efea 100644 --- a/source/visualization/management/include/G4VisCommandsGeometry.hh +++ b/source/visualization/management/include/G4VisCommandsGeometry.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsGeometry.hh,v 1.3 2006/06/29 21:28:34 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/geometry commands - John Allison 31st January 2006 diff --git a/source/visualization/management/include/G4VisCommandsGeometrySet.hh b/source/visualization/management/include/G4VisCommandsGeometrySet.hh index 98f71243c6..d7b6a8aefc 100644 --- a/source/visualization/management/include/G4VisCommandsGeometrySet.hh +++ b/source/visualization/management/include/G4VisCommandsGeometrySet.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsGeometrySet.hh,v 1.3 2007/01/05 16:24:19 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/geometry commands - John Allison 31st January 2006 diff --git a/source/visualization/management/include/G4VisCommandsListManager.hh b/source/visualization/management/include/G4VisCommandsListManager.hh index 5f901cc894..59dcf96be5 100644 --- a/source/visualization/management/include/G4VisCommandsListManager.hh +++ b/source/visualization/management/include/G4VisCommandsListManager.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VisCommandsListManager.hh,v 1.3 2006/06/29 21:28:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl October 2005 // diff --git a/source/visualization/management/include/G4VisCommandsScene.hh b/source/visualization/management/include/G4VisCommandsScene.hh index 2171b4aa66..329a10feff 100644 --- a/source/visualization/management/include/G4VisCommandsScene.hh +++ b/source/visualization/management/include/G4VisCommandsScene.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsScene.hh,v 1.19 2006/11/14 14:59:54 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/scene commands - John Allison 9th August 1998 diff --git a/source/visualization/management/include/G4VisCommandsSceneAdd.hh b/source/visualization/management/include/G4VisCommandsSceneAdd.hh index 3e21747341..9d5e4f8db2 100644 --- a/source/visualization/management/include/G4VisCommandsSceneAdd.hh +++ b/source/visualization/management/include/G4VisCommandsSceneAdd.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsSceneAdd.hh,v 1.17 2006/11/01 10:50:28 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/scene commands - John Allison 9th August 1998 diff --git a/source/visualization/management/include/G4VisCommandsSceneHandler.hh b/source/visualization/management/include/G4VisCommandsSceneHandler.hh index 2ebbd46b12..da6422ab30 100644 --- a/source/visualization/management/include/G4VisCommandsSceneHandler.hh +++ b/source/visualization/management/include/G4VisCommandsSceneHandler.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsSceneHandler.hh,v 1.8 2006/06/29 21:28:44 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/sceneHandler commands - John Allison 10th October 1998 diff --git a/source/visualization/management/include/G4VisCommandsViewer.hh b/source/visualization/management/include/G4VisCommandsViewer.hh index dc08d0a83a..ed95d77af1 100644 --- a/source/visualization/management/include/G4VisCommandsViewer.hh +++ b/source/visualization/management/include/G4VisCommandsViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsViewer.hh,v 1.23 2006/09/13 13:17:29 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/viewer commands - John Allison 25th October 1998 diff --git a/source/visualization/management/include/G4VisCommandsViewerSet.hh b/source/visualization/management/include/G4VisCommandsViewerSet.hh index f9c139e17e..a4b785e156 100644 --- a/source/visualization/management/include/G4VisCommandsViewerSet.hh +++ b/source/visualization/management/include/G4VisCommandsViewerSet.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsViewerSet.hh,v 1.22 2007/04/03 13:33:16 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/viewer/set commands - John Allison 16th May 2000 diff --git a/source/visualization/management/include/G4VisExecutive.hh b/source/visualization/management/include/G4VisExecutive.hh index 1e98511fbb..441d4e3033 100644 --- a/source/visualization/management/include/G4VisExecutive.hh +++ b/source/visualization/management/include/G4VisExecutive.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisExecutive.hh,v 1.6 2006/06/29 21:28:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 2nd February 2005 (based on MyVisManager, 24th January 1998). diff --git a/source/visualization/management/include/G4VisExecutive.icc b/source/visualization/management/include/G4VisExecutive.icc index 3652f163e6..774956f4ee 100644 --- a/source/visualization/management/include/G4VisExecutive.icc +++ b/source/visualization/management/include/G4VisExecutive.icc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VisExecutive.icc,v 1.15 2007/03/27 15:45:15 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VisExecutive.icc,v 1.17 2007/11/09 15:03:22 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 24th January 1998. @@ -68,6 +68,11 @@ #include "G4OpenGLStoredXm.hh" #endif +#ifdef G4VIS_USE_OPENGLQT +#include "G4OpenGLImmediateQt.hh" +#include "G4OpenGLStoredQt.hh" +#endif + #ifdef G4VIS_USE_OIX #include "G4OpenInventorX.hh" #endif @@ -97,7 +102,6 @@ void G4VisExecutive::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4RayTracer); RegisterGraphicsSystem (new G4VRML1File); RegisterGraphicsSystem (new G4VRML2File); - // Graphics systems needing external packages or libraries... #ifdef G4VIS_USE_DAWN @@ -119,6 +123,11 @@ void G4VisExecutive::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenGLStoredXm); #endif +#ifdef G4VIS_USE_OPENGLQT + RegisterGraphicsSystem (new G4OpenGLImmediateQt); + RegisterGraphicsSystem (new G4OpenGLStoredQt); +#endif + #ifdef G4VIS_USE_OIX RegisterGraphicsSystem (new G4OpenInventorX); #endif diff --git a/source/visualization/management/include/G4VisFeaturesOfDAWNFILE.hh b/source/visualization/management/include/G4VisFeaturesOfDAWNFILE.hh index bfd4a58a61..01e07c669f 100644 --- a/source/visualization/management/include/G4VisFeaturesOfDAWNFILE.hh +++ b/source/visualization/management/include/G4VisFeaturesOfDAWNFILE.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisFeaturesOfDAWNFILE.hh,v 1.5 2006/06/29 21:28:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #ifndef G4VISFEATURESOFDAWNFILE_HH #define G4VISFEATURESOFDAWNFILE_HH diff --git a/source/visualization/management/include/G4VisFeaturesOfFukuiRenderer.hh b/source/visualization/management/include/G4VisFeaturesOfFukuiRenderer.hh index 730485fd2b..5f7c7d020b 100644 --- a/source/visualization/management/include/G4VisFeaturesOfFukuiRenderer.hh +++ b/source/visualization/management/include/G4VisFeaturesOfFukuiRenderer.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisFeaturesOfFukuiRenderer.hh,v 1.5 2006/06/29 21:28:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/management/include/G4VisFeaturesOfOpenGL.hh b/source/visualization/management/include/G4VisFeaturesOfOpenGL.hh index b810b479ff..80904d39bb 100644 --- a/source/visualization/management/include/G4VisFeaturesOfOpenGL.hh +++ b/source/visualization/management/include/G4VisFeaturesOfOpenGL.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VisFeaturesOfOpenGL.hh,v 1.5 2006/06/29 21:28:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VisFeaturesOfOpenGL.hh,v 1.6 2007/10/03 14:20:23 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -40,5 +40,7 @@ G4String G4VisFeaturesOfOpenGLIXm (); G4String G4VisFeaturesOfOpenGLSXm (); G4String G4VisFeaturesOfOpenGLIWin32 (); G4String G4VisFeaturesOfOpenGLSWin32 (); +G4String G4VisFeaturesOfOpenGLIQt (); +G4String G4VisFeaturesOfOpenGLSQt (); #endif diff --git a/source/visualization/management/include/G4VisFeaturesOfOpenInventor.hh b/source/visualization/management/include/G4VisFeaturesOfOpenInventor.hh index c1388c1ca4..a9ccb3d3de 100644 --- a/source/visualization/management/include/G4VisFeaturesOfOpenInventor.hh +++ b/source/visualization/management/include/G4VisFeaturesOfOpenInventor.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisFeaturesOfOpenInventor.hh,v 1.5 2006/06/29 21:29:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/management/include/G4VisFilterManager.hh b/source/visualization/management/include/G4VisFilterManager.hh index c94e90e15c..e022f25acc 100644 --- a/source/visualization/management/include/G4VisFilterManager.hh +++ b/source/visualization/management/include/G4VisFilterManager.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VisFilterManager.hh,v 1.4 2006/06/29 21:29:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Filter manager. Manages filter models, factories, messengers, // command placement, filter mode etc diff --git a/source/visualization/management/include/G4VisListManager.hh b/source/visualization/management/include/G4VisListManager.hh index 96c5915212..0b4564f26b 100644 --- a/source/visualization/management/include/G4VisListManager.hh +++ b/source/visualization/management/include/G4VisListManager.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VisListManager.hh,v 1.8 2006/06/29 21:29:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl October 2005 // diff --git a/source/visualization/management/include/G4VisManager.hh b/source/visualization/management/include/G4VisManager.hh index d8129ca906..25339921f8 100644 --- a/source/visualization/management/include/G4VisManager.hh +++ b/source/visualization/management/include/G4VisManager.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VisManager.hh,v 1.66 2007/01/11 16:40:05 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VisManager.hh,v 1.67 2007/07/10 17:49:27 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -343,9 +343,6 @@ public: // With description // it contains more information. (The size information in // GetXGeometryString and GetWindowSizeHint is guaranteed to be // identical.) - const G4String& GetBeginOfLastRunRandomStatus () const; - const G4String& GetBeginOfLastEventRandomStatus () const; - G4int GetLastRunID () const; G4bool GetTransientsDrawnThisRun () const; G4bool GetTransientsDrawnThisEvent () const; const G4Event* GetRequestedEvent () const; diff --git a/source/visualization/management/include/G4VisManager.icc b/source/visualization/management/include/G4VisManager.icc index 217b5871b5..e753ee1857 100644 --- a/source/visualization/management/include/G4VisManager.icc +++ b/source/visualization/management/include/G4VisManager.icc @@ -25,7 +25,7 @@ // // // $Id: G4VisManager.icc,v 1.20 2007/01/11 16:40:58 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 Visualization Manager - John Allison 02/Jan/1996. diff --git a/source/visualization/management/include/G4VisModelManager.hh b/source/visualization/management/include/G4VisModelManager.hh index 86639e93bd..0bbf909395 100644 --- a/source/visualization/management/include/G4VisModelManager.hh +++ b/source/visualization/management/include/G4VisModelManager.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VisModelManager.hh,v 1.4 2006/06/29 21:29:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Generic model manager. Manages models, associated // factories, messengers, command placement etc diff --git a/source/visualization/management/include/G4VisStateDependent.hh b/source/visualization/management/include/G4VisStateDependent.hh index 5138f45791..e27647207b 100644 --- a/source/visualization/management/include/G4VisStateDependent.hh +++ b/source/visualization/management/include/G4VisStateDependent.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisStateDependent.hh,v 1.5 2006/06/29 21:29:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // A "state dependent" service class for G4VisManager. // John Allison 29th November 1999 diff --git a/source/visualization/management/src/G4GraphicsSystemList.cc b/source/visualization/management/src/G4GraphicsSystemList.cc index 96e3130eed..56ec0add14 100644 --- a/source/visualization/management/src/G4GraphicsSystemList.cc +++ b/source/visualization/management/src/G4GraphicsSystemList.cc @@ -25,7 +25,7 @@ // // // $Id: G4GraphicsSystemList.cc,v 1.4 2006/06/29 21:29:14 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4GraphicsSystemList.hh" diff --git a/source/visualization/management/src/G4Scene.cc b/source/visualization/management/src/G4Scene.cc index cd76770cf0..25cedfd134 100644 --- a/source/visualization/management/src/G4Scene.cc +++ b/source/visualization/management/src/G4Scene.cc @@ -25,7 +25,7 @@ // // // $Id: G4Scene.cc,v 1.23 2006/11/26 15:51:12 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Scene data John Allison 19th July 1996. diff --git a/source/visualization/management/src/G4SceneHandlerList.cc b/source/visualization/management/src/G4SceneHandlerList.cc index 34cfbba98d..37cb8623b8 100644 --- a/source/visualization/management/src/G4SceneHandlerList.cc +++ b/source/visualization/management/src/G4SceneHandlerList.cc @@ -25,7 +25,7 @@ // // // $Id: G4SceneHandlerList.cc,v 1.4 2006/06/29 21:29:18 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4SceneHandlerList.hh" diff --git a/source/visualization/management/src/G4SceneList.cc b/source/visualization/management/src/G4SceneList.cc index f58187eef9..b14fb8fee9 100644 --- a/source/visualization/management/src/G4SceneList.cc +++ b/source/visualization/management/src/G4SceneList.cc @@ -25,7 +25,7 @@ // // // $Id: G4SceneList.cc,v 1.6 2006/06/29 21:29:20 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4SceneList.hh" diff --git a/source/visualization/management/src/G4VGraphicsSystem.cc b/source/visualization/management/src/G4VGraphicsSystem.cc index 3999f8a9bb..83c14a4b27 100644 --- a/source/visualization/management/src/G4VGraphicsSystem.cc +++ b/source/visualization/management/src/G4VGraphicsSystem.cc @@ -25,7 +25,7 @@ // // // $Id: G4VGraphicsSystem.cc,v 1.11 2006/06/29 21:29:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 27th March 1996 diff --git a/source/visualization/management/src/G4VSceneHandler.cc b/source/visualization/management/src/G4VSceneHandler.cc index 50edf62dc2..61237b3ac3 100644 --- a/source/visualization/management/src/G4VSceneHandler.cc +++ b/source/visualization/management/src/G4VSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4VSceneHandler.cc,v 1.82 2007/05/16 15:47:44 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 19th July 1996 diff --git a/source/visualization/management/src/G4VViewer.cc b/source/visualization/management/src/G4VViewer.cc index e4305b3695..7a9c089569 100644 --- a/source/visualization/management/src/G4VViewer.cc +++ b/source/visualization/management/src/G4VViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VViewer.cc,v 1.24 2007/01/05 16:25:15 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 27th March 1996 diff --git a/source/visualization/management/src/G4VVisCommand.cc b/source/visualization/management/src/G4VVisCommand.cc index fbe56dc076..2bd556c073 100644 --- a/source/visualization/management/src/G4VVisCommand.cc +++ b/source/visualization/management/src/G4VVisCommand.cc @@ -25,7 +25,7 @@ // // // $Id: G4VVisCommand.cc,v 1.18 2006/06/29 21:29:28 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // Base class for visualization commands - John Allison 9th August 1998 // It is really a messenger - we have one command per messenger. diff --git a/source/visualization/management/src/G4ViewParameters.cc b/source/visualization/management/src/G4ViewParameters.cc index f427aeb730..a9b49a6f33 100644 --- a/source/visualization/management/src/G4ViewParameters.cc +++ b/source/visualization/management/src/G4ViewParameters.cc @@ -25,7 +25,7 @@ // // // $Id: G4ViewParameters.cc,v 1.29 2007/04/03 13:33:16 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 19th July 1996 diff --git a/source/visualization/management/src/G4ViewerList.cc b/source/visualization/management/src/G4ViewerList.cc index 6cc5b32954..4f4041b63b 100644 --- a/source/visualization/management/src/G4ViewerList.cc +++ b/source/visualization/management/src/G4ViewerList.cc @@ -25,7 +25,7 @@ // // // $Id: G4ViewerList.cc,v 1.4 2006/06/29 21:29:32 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4ViewerList.hh" diff --git a/source/visualization/management/src/G4VisCommands.cc b/source/visualization/management/src/G4VisCommands.cc index 3ad5aea415..a94d1ab16c 100644 --- a/source/visualization/management/src/G4VisCommands.cc +++ b/source/visualization/management/src/G4VisCommands.cc @@ -25,7 +25,7 @@ // // // $Id: G4VisCommands.cc,v 1.22 2007/03/27 15:47:32 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/ top level commands - John Allison 5th February 2001 diff --git a/source/visualization/management/src/G4VisCommandsCompound.cc b/source/visualization/management/src/G4VisCommandsCompound.cc index fb80b10d4e..cf734a4f3b 100644 --- a/source/visualization/management/src/G4VisCommandsCompound.cc +++ b/source/visualization/management/src/G4VisCommandsCompound.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsCompound.cc,v 1.38 2007/03/27 15:41:34 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VisCommandsCompound.cc,v 1.39 2007/11/16 20:29:04 perl Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // Compound /vis/ commands - John Allison 15th May 2000 @@ -182,8 +182,7 @@ G4VisCommandDrawVolume::G4VisCommandDrawVolume() { "\nall worlds is made, taking the first matching occurence only. To see" "\na representation of the geometry hierarchy of the worlds, try" "\n\"/vis/drawTree [worlds]\" or one of the driver/browser combinations" - "\nthat have the required functionality, e.g., HepRepFile/XML with the" - "\nWIRED3/4 browser."); + "\nthat have the required functionality, e.g., HepRep"); fpCommand->SetParameterName("physical-volume-name", omitable = true); fpCommand->SetDefaultValue("world"); } diff --git a/source/visualization/management/src/G4VisCommandsGeometry.cc b/source/visualization/management/src/G4VisCommandsGeometry.cc index 2878076824..1ccce1d8d2 100644 --- a/source/visualization/management/src/G4VisCommandsGeometry.cc +++ b/source/visualization/management/src/G4VisCommandsGeometry.cc @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsGeometry.cc,v 1.4 2007/01/05 16:29:38 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/geometry commands - John Allison 31st January 2006 diff --git a/source/visualization/management/src/G4VisCommandsGeometrySet.cc b/source/visualization/management/src/G4VisCommandsGeometrySet.cc index b516e795d9..802ce39424 100644 --- a/source/visualization/management/src/G4VisCommandsGeometrySet.cc +++ b/source/visualization/management/src/G4VisCommandsGeometrySet.cc @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsGeometrySet.cc,v 1.7 2007/01/05 16:24:19 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/geometry commands - John Allison 31st January 2006 diff --git a/source/visualization/management/src/G4VisCommandsScene.cc b/source/visualization/management/src/G4VisCommandsScene.cc index ee390e6f67..84e8ba8b51 100644 --- a/source/visualization/management/src/G4VisCommandsScene.cc +++ b/source/visualization/management/src/G4VisCommandsScene.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsScene.cc,v 1.66 2007/05/25 10:49:55 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VisCommandsScene.cc,v 1.67 2007/11/10 15:03:56 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/scene commands - John Allison 9th August 1998 @@ -33,6 +33,8 @@ #include "G4VisManager.hh" #include "G4TransportationManager.hh" +#include "G4RunManager.hh" +#include "G4Run.hh" #include "G4PhysicalVolumeModel.hh" #include "G4ApplicationState.hh" #include "G4UImanager.hh" @@ -201,6 +203,18 @@ void G4VisCommandSceneEndOfEventAction::SetNewValue (G4UIcommand*, // Change of transients behaviour, so... fpVisManager->ResetTransientsDrawnFlags(); + // Are there any events currently kept... + size_t nCurrentlyKept = 0; + G4RunManager* runManager = G4RunManager::GetRunManager(); + if (runManager) { + const G4Run* currentRun = runManager->GetCurrentRun(); + if (currentRun) { + const std::vector* events = + currentRun->GetEventVector(); + if (events) nCurrentlyKept = events->size(); + } + } + if (verbosity >= G4VisManager::confirmations) { G4cout << "End of event action set to "; if (pScene->GetRefreshAtEndOfEvent()) G4cout << "\"refresh\"."; @@ -210,22 +224,29 @@ void G4VisCommandSceneEndOfEventAction::SetNewValue (G4UIcommand*, << maxNumberOfKeptEvents << " (unlimited if negative)." "\n This may be changed with, e.g., " - "\"/vis/scene/endOfEventAction accumulate 100\"." - << G4endl; + "\"/vis/scene/endOfEventAction accumulate 1000\"."; } + G4cout << G4endl; } + if (!pScene->GetRefreshAtEndOfEvent() && maxNumberOfKeptEvents != 0 && verbosity >= G4VisManager::warnings) { - G4cout << "WARNING: The vis manager will keep "; - if (maxNumberOfKeptEvents < 0) G4cout << "an unlimited number of"; - else G4cout << "up to " << maxNumberOfKeptEvents; - G4cout << " events."; - if (maxNumberOfKeptEvents > 1 || maxNumberOfKeptEvents < 0) - G4cout << "\n This may use a lot of memory."; + G4cout << "WARNING: "; + if (nCurrentlyKept) { + G4cout << + "\n There are currently " << nCurrentlyKept + << " events kept for refreshing and/or reviewing."; + } else { + G4cout << "The vis manager will keep "; + if (maxNumberOfKeptEvents < 0) G4cout << "an unlimited number of"; + else G4cout << "up to " << maxNumberOfKeptEvents; + G4cout << " events."; + if (maxNumberOfKeptEvents > 1 || maxNumberOfKeptEvents < 0) + G4cout << "\n This may use a lot of memory."; + } G4cout << G4endl; } - UpdateVisManagerScene (pScene->GetName()); } ////////////// /vis/scene/endOfRunAction //////////////////////////// @@ -315,7 +336,6 @@ void G4VisCommandSceneEndOfRunAction::SetNewValue (G4UIcommand*, else G4cout << "accumulate"; G4cout << "\"" << G4endl; } - UpdateVisManagerScene (pScene->GetName()); } ////////////// /vis/scene/list /////////////////////////////////////// diff --git a/source/visualization/management/src/G4VisCommandsSceneAdd.cc b/source/visualization/management/src/G4VisCommandsSceneAdd.cc index 5c59affdd5..3f2443c6a2 100644 --- a/source/visualization/management/src/G4VisCommandsSceneAdd.cc +++ b/source/visualization/management/src/G4VisCommandsSceneAdd.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsSceneAdd.cc,v 1.72 2006/11/25 15:37:31 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VisCommandsSceneAdd.cc,v 1.73 2007/11/16 20:29:04 perl Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/scene commands - John Allison 9th August 1998 #include "G4VisCommandsSceneAdd.hh" @@ -1490,8 +1490,7 @@ G4VisCommandSceneAddVolume::G4VisCommandSceneAddVolume () { "\nadded. Otherwise a search of all worlds is made, taking the first" "\nmatching occurence only. To see a representation of the geometry" "\nhierarchy of the worlds, try \"/vis/drawTree [worlds]\" or one of the" - "\ndriver/browser combinations that have the required functionality," - "\ne.g., HepRepFile/XML with the WIRED3/4 browser."); + "\ndriver/browser combinations that have the required functionality, e.g., HepRep."); fpCommand -> SetGuidance ("If clip-volume-type is specified, the subsequent parameters are used to" "\nto define a clipping volume. For example," diff --git a/source/visualization/management/src/G4VisCommandsSceneHandler.cc b/source/visualization/management/src/G4VisCommandsSceneHandler.cc index 6f7ab27c8c..db803bc135 100644 --- a/source/visualization/management/src/G4VisCommandsSceneHandler.cc +++ b/source/visualization/management/src/G4VisCommandsSceneHandler.cc @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsSceneHandler.cc,v 1.32 2006/06/29 21:29:46 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/sceneHandler commands - John Allison 10th October 1998 diff --git a/source/visualization/management/src/G4VisCommandsViewer.cc b/source/visualization/management/src/G4VisCommandsViewer.cc index 2ed5245133..9a62d4a1ed 100644 --- a/source/visualization/management/src/G4VisCommandsViewer.cc +++ b/source/visualization/management/src/G4VisCommandsViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsViewer.cc,v 1.68 2007/01/11 16:41:30 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/viewer commands - John Allison 25th October 1998 diff --git a/source/visualization/management/src/G4VisCommandsViewerSet.cc b/source/visualization/management/src/G4VisCommandsViewerSet.cc index 7f8a631249..b587f76ffc 100644 --- a/source/visualization/management/src/G4VisCommandsViewerSet.cc +++ b/source/visualization/management/src/G4VisCommandsViewerSet.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsViewerSet.cc,v 1.48 2007/04/03 13:33:16 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VisCommandsViewerSet.cc,v 1.49 2007/07/10 17:51:54 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // /vis/viewer/set commands - John Allison 16th May 2000 @@ -469,8 +469,10 @@ void G4VisCommandsViewerSet::SetNewValue G4cout << "be automatically refreshed after a change of view parameters." << G4endl; } - currentViewer->SetViewParameters(vp); - return; // I.e., avoid a refresh for this command. + if (!vp.IsAutoRefresh()) { + currentViewer->SetViewParameters(vp); + return; // Avoid a refresh id auto-refresh has been set to off... + } // ...otherwise take normal action. } else if (command == fpCommandAuxEdge) { diff --git a/source/visualization/management/src/G4VisFeaturesOfDAWNFILE.cc b/source/visualization/management/src/G4VisFeaturesOfDAWNFILE.cc index 6078e94655..eada6e20fa 100644 --- a/source/visualization/management/src/G4VisFeaturesOfDAWNFILE.cc +++ b/source/visualization/management/src/G4VisFeaturesOfDAWNFILE.cc @@ -25,7 +25,7 @@ // // // $Id: G4VisFeaturesOfDAWNFILE.cc,v 1.6 2006/06/29 21:29:52 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // #include "G4VisFeaturesOfDAWNFILE.hh" diff --git a/source/visualization/management/src/G4VisFeaturesOfFukuiRenderer.cc b/source/visualization/management/src/G4VisFeaturesOfFukuiRenderer.cc index 88b14c322d..ece9e53dc8 100644 --- a/source/visualization/management/src/G4VisFeaturesOfFukuiRenderer.cc +++ b/source/visualization/management/src/G4VisFeaturesOfFukuiRenderer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VisFeaturesOfFukuiRenderer.cc,v 1.5 2006/06/29 21:29:54 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/management/src/G4VisFeaturesOfOpenGL.cc b/source/visualization/management/src/G4VisFeaturesOfOpenGL.cc index 4892dea5a5..e9545d3097 100644 --- a/source/visualization/management/src/G4VisFeaturesOfOpenGL.cc +++ b/source/visualization/management/src/G4VisFeaturesOfOpenGL.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4VisFeaturesOfOpenGL.cc,v 1.5 2006/06/29 21:29:56 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VisFeaturesOfOpenGL.cc,v 1.6 2007/10/03 14:21:55 lgarnier Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // @@ -90,3 +90,13 @@ G4String G4VisFeaturesOfOpenGLSWin32 () { return "\n It runs on WindowsNT "; } + +G4String G4VisFeaturesOfOpenGLIQt () { + return + "\n It runs everywhere"; +} + +G4String G4VisFeaturesOfOpenGLSQt () { + return + "\n It runs everywhere "; +} diff --git a/source/visualization/management/src/G4VisFeaturesOfOpenInventor.cc b/source/visualization/management/src/G4VisFeaturesOfOpenInventor.cc index 3c0c90ef89..d448571e1a 100644 --- a/source/visualization/management/src/G4VisFeaturesOfOpenInventor.cc +++ b/source/visualization/management/src/G4VisFeaturesOfOpenInventor.cc @@ -25,7 +25,7 @@ // // // $Id: G4VisFeaturesOfOpenInventor.cc,v 1.5 2006/06/29 21:29:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // diff --git a/source/visualization/management/src/G4VisManager.cc b/source/visualization/management/src/G4VisManager.cc index 29549cf282..436fc66942 100644 --- a/source/visualization/management/src/G4VisManager.cc +++ b/source/visualization/management/src/G4VisManager.cc @@ -23,8 +23,8 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// $Id: G4VisManager.cc,v 1.113 2007/05/25 10:50:26 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4VisManager.cc,v 1.114 2007/11/10 14:59:46 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // GEANT4 Visualization Manager - John Allison 02/Jan/1996. @@ -1243,12 +1243,12 @@ void G4VisManager::EndOfRun () if (!valid && fVerbosity >= warnings && !warned) { G4cout << " Only useful if before starting the run:" - "\n a) trajectories are stored (\"/tracking/storeTrajectory N\"), or" + "\n a) trajectories are stored (\"/vis/scene/add/trajectories [smooth|rich]\"), or" "\n b) the Draw method of any hits is implemented." "\n To view trajectories and hits:" "\n open a viewer, draw a volume, \"/vis/scene/add/trajectories\"" "\n \"/vis/scene/add/hits\" and, possibly, \"/vis/viewer/flush\"." - "\n To see all events: \"vis/scene/endOfEventAction accumulate\"." + "\n To see all events: \"/vis/scene/endOfEventAction accumulate\"." "\n To see events individually: \"/vis/reviewKeptEvents\"." << G4endl; warned = true; diff --git a/source/visualization/management/src/G4VisStateDependent.cc b/source/visualization/management/src/G4VisStateDependent.cc index 2572689b19..4fd2ba7d4c 100644 --- a/source/visualization/management/src/G4VisStateDependent.cc +++ b/source/visualization/management/src/G4VisStateDependent.cc @@ -25,7 +25,7 @@ // // // $Id: G4VisStateDependent.cc,v 1.6 2006/06/29 21:30:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ #include "G4VisStateDependent.hh" diff --git a/source/visualization/modeling/History b/source/visualization/modeling/History index 23c7427d10..773a808316 100644 --- a/source/visualization/modeling/History +++ b/source/visualization/modeling/History @@ -1,4 +1,4 @@ -$Id: History,v 1.102 2007/05/30 08:56:55 allison Exp $ +$Id: History,v 1.103 2007/11/10 14:56:54 allison Exp $ ------------------------------------------------------------------- ========================================================= @@ -20,6 +20,9 @@ committal in the CVS repository ! History file for visualization/modeling --------------------------------------- +10th November 2007 John Allison (modeling-V09-00-00) +- Minor improvement in warning message after change of geometry. + 30th May 2007 John Allison (modeling-V08-03-02) - Removed warnedAboutIMode from G4TrajectoryDrawerUtils.hh. It was used only in G4TrajectoryDrawerUtils.cc and gave warnings about diff --git a/source/visualization/modeling/include/G4AttFilterUtils.hh b/source/visualization/modeling/include/G4AttFilterUtils.hh index 709686e415..b3860ca080 100644 --- a/source/visualization/modeling/include/G4AttFilterUtils.hh +++ b/source/visualization/modeling/include/G4AttFilterUtils.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4AttFilterUtils.hh,v 1.2 2006/12/13 15:49:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Visualisation attribute filter utility functions. // diff --git a/source/visualization/modeling/include/G4AttValueFilterT.hh b/source/visualization/modeling/include/G4AttValueFilterT.hh index 42dad289c5..e325e34463 100644 --- a/source/visualization/modeling/include/G4AttValueFilterT.hh +++ b/source/visualization/modeling/include/G4AttValueFilterT.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4AttValueFilterT.hh,v 1.3 2006/12/13 15:50:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Templated class for G4AttValue filters. // diff --git a/source/visualization/modeling/include/G4AttributeFilterT.hh b/source/visualization/modeling/include/G4AttributeFilterT.hh index ba8e78ef6e..94ecc2c7e8 100644 --- a/source/visualization/modeling/include/G4AttributeFilterT.hh +++ b/source/visualization/modeling/include/G4AttributeFilterT.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4AttributeFilterT.hh,v 1.6 2006/12/13 15:50:02 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Generic attribute filter. // diff --git a/source/visualization/modeling/include/G4AxesModel.hh b/source/visualization/modeling/include/G4AxesModel.hh index 3dd5ffa88a..4bb4959ea9 100644 --- a/source/visualization/modeling/include/G4AxesModel.hh +++ b/source/visualization/modeling/include/G4AxesModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4AxesModel.hh,v 1.6 2006/11/01 10:28:42 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 3rd April 2001 diff --git a/source/visualization/modeling/include/G4BoundingSphereScene.hh b/source/visualization/modeling/include/G4BoundingSphereScene.hh index 32fab20c58..3e41c67e5b 100644 --- a/source/visualization/modeling/include/G4BoundingSphereScene.hh +++ b/source/visualization/modeling/include/G4BoundingSphereScene.hh @@ -25,7 +25,7 @@ // // // $Id: G4BoundingSphereScene.hh,v 1.17 2006/06/29 21:30:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th June 1997 diff --git a/source/visualization/modeling/include/G4CallbackModel.hh b/source/visualization/modeling/include/G4CallbackModel.hh index c65d1eecfa..e3d45824ce 100644 --- a/source/visualization/modeling/include/G4CallbackModel.hh +++ b/source/visualization/modeling/include/G4CallbackModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4CallbackModel.hh,v 1.5 2006/06/29 21:30:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/include/G4FlavoredParallelWorldModel.hh b/source/visualization/modeling/include/G4FlavoredParallelWorldModel.hh index be043137de..2b3acb7153 100644 --- a/source/visualization/modeling/include/G4FlavoredParallelWorldModel.hh +++ b/source/visualization/modeling/include/G4FlavoredParallelWorldModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4FlavoredParallelWorldModel.hh,v 1.8 2006/06/29 21:30:12 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // P. Mora de Freitas et M.Verderi - 19 June 1998. // diff --git a/source/visualization/modeling/include/G4HitFilterFactories.hh b/source/visualization/modeling/include/G4HitFilterFactories.hh index e6da349681..d96131a8e9 100644 --- a/source/visualization/modeling/include/G4HitFilterFactories.hh +++ b/source/visualization/modeling/include/G4HitFilterFactories.hh @@ -24,7 +24,7 @@ // ******************************************************************** // /// $Id: G4HitFilterFactories.hh,v 1.1 2006/09/12 18:53:03 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Hit filter model factories creating filters diff --git a/source/visualization/modeling/include/G4HitsModel.hh b/source/visualization/modeling/include/G4HitsModel.hh index 91194dc043..ecf8260e55 100644 --- a/source/visualization/modeling/include/G4HitsModel.hh +++ b/source/visualization/modeling/include/G4HitsModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4HitsModel.hh,v 1.10 2006/11/02 11:57:31 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 26th August 1998. diff --git a/source/visualization/modeling/include/G4LogicalVolumeModel.hh b/source/visualization/modeling/include/G4LogicalVolumeModel.hh index 057e56e97a..9603422155 100644 --- a/source/visualization/modeling/include/G4LogicalVolumeModel.hh +++ b/source/visualization/modeling/include/G4LogicalVolumeModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4LogicalVolumeModel.hh,v 1.9 2006/11/01 10:28:42 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 26th July 1999. diff --git a/source/visualization/modeling/include/G4ModelApplyCommandsT.hh b/source/visualization/modeling/include/G4ModelApplyCommandsT.hh index 3ab35b9f80..78688f3339 100644 --- a/source/visualization/modeling/include/G4ModelApplyCommandsT.hh +++ b/source/visualization/modeling/include/G4ModelApplyCommandsT.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ModelApplyCommandsT.hh,v 1.5 2006/09/11 21:22:02 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Abstract model messenges. Derived classes should implement // the "Apply" method diff --git a/source/visualization/modeling/include/G4ModelColourMap.hh b/source/visualization/modeling/include/G4ModelColourMap.hh index 7a6ea2f423..9fbc19f78f 100644 --- a/source/visualization/modeling/include/G4ModelColourMap.hh +++ b/source/visualization/modeling/include/G4ModelColourMap.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ModelColourMap.hh,v 1.2 2006/06/29 21:30:22 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Generic variable->G4Colour map, where "variable" is the template // parameter. diff --git a/source/visualization/modeling/include/G4ModelCommandUtils.hh b/source/visualization/modeling/include/G4ModelCommandUtils.hh index f367e4b466..00c6fc1d5c 100644 --- a/source/visualization/modeling/include/G4ModelCommandUtils.hh +++ b/source/visualization/modeling/include/G4ModelCommandUtils.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ModelCommandUtils.hh,v 1.2 2006/09/13 12:54:31 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay September 2006 // diff --git a/source/visualization/modeling/include/G4ModelCommandsT.hh b/source/visualization/modeling/include/G4ModelCommandsT.hh index 6a264eda38..f84d59967c 100644 --- a/source/visualization/modeling/include/G4ModelCommandsT.hh +++ b/source/visualization/modeling/include/G4ModelCommandsT.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ModelCommandsT.hh,v 1.12 2006/11/01 10:34:03 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Generic model messenges. // diff --git a/source/visualization/modeling/include/G4ModelCompoundCommandsT.hh b/source/visualization/modeling/include/G4ModelCompoundCommandsT.hh index 940b584125..24b16ae2a9 100644 --- a/source/visualization/modeling/include/G4ModelCompoundCommandsT.hh +++ b/source/visualization/modeling/include/G4ModelCompoundCommandsT.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ModelCompoundCommandsT.hh,v 1.1 2006/09/11 21:52:18 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay September 2006 // diff --git a/source/visualization/modeling/include/G4ModelingParameters.hh b/source/visualization/modeling/include/G4ModelingParameters.hh index 044455c288..f2e69c0879 100644 --- a/source/visualization/modeling/include/G4ModelingParameters.hh +++ b/source/visualization/modeling/include/G4ModelingParameters.hh @@ -25,7 +25,7 @@ // // // $Id: G4ModelingParameters.hh,v 1.17 2006/11/14 14:42:08 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/include/G4ModelingParameters.icc b/source/visualization/modeling/include/G4ModelingParameters.icc index f6c8bbbe26..b7bab0eda7 100644 --- a/source/visualization/modeling/include/G4ModelingParameters.icc +++ b/source/visualization/modeling/include/G4ModelingParameters.icc @@ -25,7 +25,7 @@ // // // $Id: G4ModelingParameters.icc,v 1.11 2006/11/14 14:42:08 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/include/G4NullModel.hh b/source/visualization/modeling/include/G4NullModel.hh index 39f6e20dc7..2cb1383160 100644 --- a/source/visualization/modeling/include/G4NullModel.hh +++ b/source/visualization/modeling/include/G4NullModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4NullModel.hh,v 1.7 2006/06/29 21:30:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 4th April 1998. diff --git a/source/visualization/modeling/include/G4PhysicalVolumeMassScene.hh b/source/visualization/modeling/include/G4PhysicalVolumeMassScene.hh index 0d5cea5061..81911ca228 100644 --- a/source/visualization/modeling/include/G4PhysicalVolumeMassScene.hh +++ b/source/visualization/modeling/include/G4PhysicalVolumeMassScene.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhysicalVolumeMassScene.hh,v 1.8 2006/11/05 20:38:09 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 12th September 2004 diff --git a/source/visualization/modeling/include/G4PhysicalVolumeModel.hh b/source/visualization/modeling/include/G4PhysicalVolumeModel.hh index 2729026b5f..f8aaba770d 100644 --- a/source/visualization/modeling/include/G4PhysicalVolumeModel.hh +++ b/source/visualization/modeling/include/G4PhysicalVolumeModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhysicalVolumeModel.hh,v 1.34 2007/04/03 13:46:49 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.hh b/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.hh index cc4b4d608d..a4e08e5b95 100644 --- a/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.hh +++ b/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhysicalVolumeSearchScene.hh,v 1.17 2006/06/29 21:30:36 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 10th August 1998. diff --git a/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.icc b/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.icc index 69185c72a5..12a64c1b56 100644 --- a/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.icc +++ b/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.icc @@ -25,7 +25,7 @@ // // // $Id: G4PhysicalVolumeSearchScene.icc,v 1.6 2006/06/29 21:30:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 10th August 1998. diff --git a/source/visualization/modeling/include/G4ScaleModel.hh b/source/visualization/modeling/include/G4ScaleModel.hh index 77a8f599e8..55d0f2d99f 100644 --- a/source/visualization/modeling/include/G4ScaleModel.hh +++ b/source/visualization/modeling/include/G4ScaleModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4ScaleModel.hh,v 1.4 2006/11/01 10:28:42 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 21st July 2001. diff --git a/source/visualization/modeling/include/G4TextModel.hh b/source/visualization/modeling/include/G4TextModel.hh index 87878918cb..797022a4f2 100644 --- a/source/visualization/modeling/include/G4TextModel.hh +++ b/source/visualization/modeling/include/G4TextModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4TextModel.hh,v 1.7 2006/11/01 10:28:42 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 3rd April 2001 diff --git a/source/visualization/modeling/include/G4TrajectoriesModel.hh b/source/visualization/modeling/include/G4TrajectoriesModel.hh index dfa00dafd7..5bd8fd20df 100644 --- a/source/visualization/modeling/include/G4TrajectoriesModel.hh +++ b/source/visualization/modeling/include/G4TrajectoriesModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4TrajectoriesModel.hh,v 1.10 2006/10/26 11:10:23 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 26th August 1998. diff --git a/source/visualization/modeling/include/G4TrajectoryChargeFilter.hh b/source/visualization/modeling/include/G4TrajectoryChargeFilter.hh index e3655a1468..bb37340f61 100644 --- a/source/visualization/modeling/include/G4TrajectoryChargeFilter.hh +++ b/source/visualization/modeling/include/G4TrajectoryChargeFilter.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryChargeFilter.hh,v 1.3 2006/08/25 19:44:14 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Filter trajectories according to charge. Only registered // charges will pass the filter. diff --git a/source/visualization/modeling/include/G4TrajectoryDrawByAttribute.hh b/source/visualization/modeling/include/G4TrajectoryDrawByAttribute.hh index f0ae0849ec..18511e88db 100644 --- a/source/visualization/modeling/include/G4TrajectoryDrawByAttribute.hh +++ b/source/visualization/modeling/include/G4TrajectoryDrawByAttribute.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryDrawByAttribute.hh,v 1.1 2006/09/11 21:52:18 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay September 2006 // diff --git a/source/visualization/modeling/include/G4TrajectoryDrawByCharge.hh b/source/visualization/modeling/include/G4TrajectoryDrawByCharge.hh index 44f5356ce8..a4075ca95f 100644 --- a/source/visualization/modeling/include/G4TrajectoryDrawByCharge.hh +++ b/source/visualization/modeling/include/G4TrajectoryDrawByCharge.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryDrawByCharge.hh,v 1.7 2006/06/29 21:31:49 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl November 2005 // diff --git a/source/visualization/modeling/include/G4TrajectoryDrawByOriginVolume.hh b/source/visualization/modeling/include/G4TrajectoryDrawByOriginVolume.hh index e0ecc01f9b..9bdad1a1de 100644 --- a/source/visualization/modeling/include/G4TrajectoryDrawByOriginVolume.hh +++ b/source/visualization/modeling/include/G4TrajectoryDrawByOriginVolume.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryDrawByOriginVolume.hh,v 1.4 2006/06/29 21:31:51 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Class Description: // Trajectory model which colours a trajectory according to diff --git a/source/visualization/modeling/include/G4TrajectoryDrawByParticleID.hh b/source/visualization/modeling/include/G4TrajectoryDrawByParticleID.hh index ec80f16abb..a6ea6b2a37 100644 --- a/source/visualization/modeling/include/G4TrajectoryDrawByParticleID.hh +++ b/source/visualization/modeling/include/G4TrajectoryDrawByParticleID.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryDrawByParticleID.hh,v 1.7 2006/06/29 21:31:53 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl November 2005 // diff --git a/source/visualization/modeling/include/G4TrajectoryDrawerUtils.hh b/source/visualization/modeling/include/G4TrajectoryDrawerUtils.hh index 16d0acfeb5..81599192f0 100644 --- a/source/visualization/modeling/include/G4TrajectoryDrawerUtils.hh +++ b/source/visualization/modeling/include/G4TrajectoryDrawerUtils.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryDrawerUtils.hh,v 1.7 2007/05/30 08:56:55 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl November 2005 // diff --git a/source/visualization/modeling/include/G4TrajectoryFilterFactories.hh b/source/visualization/modeling/include/G4TrajectoryFilterFactories.hh index 4b3eb4f986..229b64287a 100644 --- a/source/visualization/modeling/include/G4TrajectoryFilterFactories.hh +++ b/source/visualization/modeling/include/G4TrajectoryFilterFactories.hh @@ -24,7 +24,7 @@ // ******************************************************************** // /// $Id: G4TrajectoryFilterFactories.hh,v 1.4 2006/09/12 18:53:03 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Trajectory filter model factories creating filters diff --git a/source/visualization/modeling/include/G4TrajectoryGenericDrawer.hh b/source/visualization/modeling/include/G4TrajectoryGenericDrawer.hh index d5a525dcbf..b032e11716 100644 --- a/source/visualization/modeling/include/G4TrajectoryGenericDrawer.hh +++ b/source/visualization/modeling/include/G4TrajectoryGenericDrawer.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryGenericDrawer.hh,v 1.2 2006/06/29 21:31:59 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl November 2005 // diff --git a/source/visualization/modeling/include/G4TrajectoryModelFactories.hh b/source/visualization/modeling/include/G4TrajectoryModelFactories.hh index f5a2ab3c1d..b99302c377 100644 --- a/source/visualization/modeling/include/G4TrajectoryModelFactories.hh +++ b/source/visualization/modeling/include/G4TrajectoryModelFactories.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryModelFactories.hh,v 1.6 2006/09/12 18:53:03 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl October 2005 // diff --git a/source/visualization/modeling/include/G4TrajectoryOriginVolumeFilter.hh b/source/visualization/modeling/include/G4TrajectoryOriginVolumeFilter.hh index 815038b57b..e4365be9c2 100644 --- a/source/visualization/modeling/include/G4TrajectoryOriginVolumeFilter.hh +++ b/source/visualization/modeling/include/G4TrajectoryOriginVolumeFilter.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryOriginVolumeFilter.hh,v 1.3 2006/08/25 19:44:14 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Filter trajectories according to volume name. Only registered // volumes will pass the filter. diff --git a/source/visualization/modeling/include/G4TrajectoryParticleFilter.hh b/source/visualization/modeling/include/G4TrajectoryParticleFilter.hh index 6cac7f4228..ee4cb187dc 100644 --- a/source/visualization/modeling/include/G4TrajectoryParticleFilter.hh +++ b/source/visualization/modeling/include/G4TrajectoryParticleFilter.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryParticleFilter.hh,v 1.3 2006/08/25 19:44:14 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Filter trajectories according to particle type. Only registered // particle types will pass the filter. diff --git a/source/visualization/modeling/include/G4VAttValueFilter.hh b/source/visualization/modeling/include/G4VAttValueFilter.hh index 2b51edbb24..73ccd1b299 100644 --- a/source/visualization/modeling/include/G4VAttValueFilter.hh +++ b/source/visualization/modeling/include/G4VAttValueFilter.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VAttValueFilter.hh,v 1.2 2006/12/13 15:50:04 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Abstract base class for G4AttValue filters // diff --git a/source/visualization/modeling/include/G4VModel.hh b/source/visualization/modeling/include/G4VModel.hh index aae5fd5898..d8c797b476 100644 --- a/source/visualization/modeling/include/G4VModel.hh +++ b/source/visualization/modeling/include/G4VModel.hh @@ -25,7 +25,7 @@ // // // $Id: G4VModel.hh,v 1.19 2006/07/10 16:09:30 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/include/G4VModel.icc b/source/visualization/modeling/include/G4VModel.icc index 0c1af17cfc..2bffb60e08 100644 --- a/source/visualization/modeling/include/G4VModel.icc +++ b/source/visualization/modeling/include/G4VModel.icc @@ -25,7 +25,7 @@ // // // $Id: G4VModel.icc,v 1.12 2006/07/10 16:09:30 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/include/G4VModelCommand.hh b/source/visualization/modeling/include/G4VModelCommand.hh index bb9e76d498..c8482b9b90 100644 --- a/source/visualization/modeling/include/G4VModelCommand.hh +++ b/source/visualization/modeling/include/G4VModelCommand.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VModelCommand.hh,v 1.4 2006/09/11 21:22:02 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl November 2005 // diff --git a/source/visualization/modeling/include/G4VModelFactory.hh b/source/visualization/modeling/include/G4VModelFactory.hh index 92756f1d59..04b56807b4 100644 --- a/source/visualization/modeling/include/G4VModelFactory.hh +++ b/source/visualization/modeling/include/G4VModelFactory.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VModelFactory.hh,v 1.6 2006/06/29 21:32:30 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl October 2005 // diff --git a/source/visualization/modeling/include/G4VTrajectoryModel.hh b/source/visualization/modeling/include/G4VTrajectoryModel.hh index e5b8977465..a1763ef7e1 100644 --- a/source/visualization/modeling/include/G4VTrajectoryModel.hh +++ b/source/visualization/modeling/include/G4VTrajectoryModel.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VTrajectoryModel.hh,v 1.7 2006/08/14 11:43:34 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl October 2005 // diff --git a/source/visualization/modeling/include/G4VisTrajContext.hh b/source/visualization/modeling/include/G4VisTrajContext.hh index a66a3b1561..15b4116fbf 100644 --- a/source/visualization/modeling/include/G4VisTrajContext.hh +++ b/source/visualization/modeling/include/G4VisTrajContext.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VisTrajContext.hh,v 1.3 2006/08/14 11:47:53 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay May 2006 // diff --git a/source/visualization/modeling/include/G4VisTrajContext.icc b/source/visualization/modeling/include/G4VisTrajContext.icc index ed181762b7..190e15f1b2 100644 --- a/source/visualization/modeling/include/G4VisTrajContext.icc +++ b/source/visualization/modeling/include/G4VisTrajContext.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VisTrajContext.icc,v 1.3 2006/08/14 11:47:53 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay May 2006 // diff --git a/source/visualization/modeling/src/G4AttFilterUtils.cc b/source/visualization/modeling/src/G4AttFilterUtils.cc index f5dce962ef..de64f604fd 100644 --- a/source/visualization/modeling/src/G4AttFilterUtils.cc +++ b/source/visualization/modeling/src/G4AttFilterUtils.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4AttFilterUtils.cc,v 1.4 2006/12/13 15:50:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Visualisation attribute filter utility functions. // diff --git a/source/visualization/modeling/src/G4AxesModel.cc b/source/visualization/modeling/src/G4AxesModel.cc index 523621a185..34c07d1270 100644 --- a/source/visualization/modeling/src/G4AxesModel.cc +++ b/source/visualization/modeling/src/G4AxesModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4AxesModel.cc,v 1.6 2006/06/29 21:32:38 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 3rd April 2001 diff --git a/source/visualization/modeling/src/G4BoundingSphereScene.cc b/source/visualization/modeling/src/G4BoundingSphereScene.cc index 0ad03f207b..fe495ee2b2 100644 --- a/source/visualization/modeling/src/G4BoundingSphereScene.cc +++ b/source/visualization/modeling/src/G4BoundingSphereScene.cc @@ -25,7 +25,7 @@ // // // $Id: G4BoundingSphereScene.cc,v 1.11 2006/06/29 21:32:40 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 7th June 1997 diff --git a/source/visualization/modeling/src/G4FlavoredParallelWorldModel.cc b/source/visualization/modeling/src/G4FlavoredParallelWorldModel.cc index 2a00820d93..873a665458 100644 --- a/source/visualization/modeling/src/G4FlavoredParallelWorldModel.cc +++ b/source/visualization/modeling/src/G4FlavoredParallelWorldModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4FlavoredParallelWorldModel.cc,v 1.7 2006/06/29 21:32:42 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // P. Mora de Freitas et M.Verderi - 19 June 1998. // Model for flavored parallel world volumes. diff --git a/source/visualization/modeling/src/G4HitFilterFactories.cc b/source/visualization/modeling/src/G4HitFilterFactories.cc index 0a43f3ec9f..0d969b593e 100644 --- a/source/visualization/modeling/src/G4HitFilterFactories.cc +++ b/source/visualization/modeling/src/G4HitFilterFactories.cc @@ -24,7 +24,7 @@ // ******************************************************************** // /// $Id: G4HitFilterFactories.cc,v 1.1 2006/09/12 18:53:03 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Trajectory filter model factories creating filters diff --git a/source/visualization/modeling/src/G4HitsModel.cc b/source/visualization/modeling/src/G4HitsModel.cc index dbd08cac7e..0afa2d78f0 100644 --- a/source/visualization/modeling/src/G4HitsModel.cc +++ b/source/visualization/modeling/src/G4HitsModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4HitsModel.cc,v 1.18 2006/11/14 14:42:08 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 26th August 1998. diff --git a/source/visualization/modeling/src/G4LogicalVolumeModel.cc b/source/visualization/modeling/src/G4LogicalVolumeModel.cc index d2b8dd9967..f0c7ba6ab1 100644 --- a/source/visualization/modeling/src/G4LogicalVolumeModel.cc +++ b/source/visualization/modeling/src/G4LogicalVolumeModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4LogicalVolumeModel.cc,v 1.14 2006/11/01 10:28:42 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 26th July 1999. diff --git a/source/visualization/modeling/src/G4ModelingParameters.cc b/source/visualization/modeling/src/G4ModelingParameters.cc index 942f4935df..7d7e54e199 100644 --- a/source/visualization/modeling/src/G4ModelingParameters.cc +++ b/source/visualization/modeling/src/G4ModelingParameters.cc @@ -25,7 +25,7 @@ // // // $Id: G4ModelingParameters.cc,v 1.15 2006/11/14 14:42:08 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/src/G4NullModel.cc b/source/visualization/modeling/src/G4NullModel.cc index a5579ad2b4..5acdad1c3a 100644 --- a/source/visualization/modeling/src/G4NullModel.cc +++ b/source/visualization/modeling/src/G4NullModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4NullModel.cc,v 1.9 2006/06/29 21:32:50 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 4th April 1998. diff --git a/source/visualization/modeling/src/G4PhysicalVolumeMassScene.cc b/source/visualization/modeling/src/G4PhysicalVolumeMassScene.cc index 533b16b70b..07b6f5f7b9 100644 --- a/source/visualization/modeling/src/G4PhysicalVolumeMassScene.cc +++ b/source/visualization/modeling/src/G4PhysicalVolumeMassScene.cc @@ -25,7 +25,7 @@ // // // $Id: G4PhysicalVolumeMassScene.cc,v 1.7 2006/11/06 09:24:13 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 10th August 1998. diff --git a/source/visualization/modeling/src/G4PhysicalVolumeModel.cc b/source/visualization/modeling/src/G4PhysicalVolumeModel.cc index 1ad03e12a3..ffc293d13b 100644 --- a/source/visualization/modeling/src/G4PhysicalVolumeModel.cc +++ b/source/visualization/modeling/src/G4PhysicalVolumeModel.cc @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4PhysicalVolumeModel.cc,v 1.62 2007/05/30 07:58:19 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// $Id: G4PhysicalVolumeModel.cc,v 1.63 2007/11/10 14:56:36 allison Exp $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 31st December 1997. @@ -656,7 +656,7 @@ G4bool G4PhysicalVolumeModel::Validate (G4bool warn) G4cout << " Volume of the same name and copy number (\"" << fTopPVName << "\", copy " << fTopPVCopyNo << ") still exists and is being used." - "\n Be warned that this does not necessarily guarantee it's the same" + "\n WARNING: This does not necessarily guarantee it's the same" "\n volume you originally specified in /vis/scene/add/." << G4endl; } diff --git a/source/visualization/modeling/src/G4PhysicalVolumeSearchScene.cc b/source/visualization/modeling/src/G4PhysicalVolumeSearchScene.cc index 5166a24b34..14e8455139 100644 --- a/source/visualization/modeling/src/G4PhysicalVolumeSearchScene.cc +++ b/source/visualization/modeling/src/G4PhysicalVolumeSearchScene.cc @@ -25,7 +25,7 @@ // // // $Id: G4PhysicalVolumeSearchScene.cc,v 1.13 2006/11/05 20:38:08 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 10th August 1998. diff --git a/source/visualization/modeling/src/G4ScaleModel.cc b/source/visualization/modeling/src/G4ScaleModel.cc index 202fda492c..283a895c64 100644 --- a/source/visualization/modeling/src/G4ScaleModel.cc +++ b/source/visualization/modeling/src/G4ScaleModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4ScaleModel.cc,v 1.4 2006/06/29 21:32:58 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 21st July 2001. diff --git a/source/visualization/modeling/src/G4TextModel.cc b/source/visualization/modeling/src/G4TextModel.cc index c030e43489..e76c4c3536 100644 --- a/source/visualization/modeling/src/G4TextModel.cc +++ b/source/visualization/modeling/src/G4TextModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4TextModel.cc,v 1.7 2006/06/29 21:33:00 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 3rd April 2001 diff --git a/source/visualization/modeling/src/G4TrajectoriesModel.cc b/source/visualization/modeling/src/G4TrajectoriesModel.cc index b3046a829e..56a58e15ca 100644 --- a/source/visualization/modeling/src/G4TrajectoriesModel.cc +++ b/source/visualization/modeling/src/G4TrajectoriesModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4TrajectoriesModel.cc,v 1.24 2006/11/14 14:42:08 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 26th August 1998. diff --git a/source/visualization/modeling/src/G4TrajectoryChargeFilter.cc b/source/visualization/modeling/src/G4TrajectoryChargeFilter.cc index ec41e65546..53bcfded9d 100644 --- a/source/visualization/modeling/src/G4TrajectoryChargeFilter.cc +++ b/source/visualization/modeling/src/G4TrajectoryChargeFilter.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryChargeFilter.cc,v 1.4 2006/08/25 19:44:14 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Filter trajectories according to charge. Only registered // charges will pass the filter. diff --git a/source/visualization/modeling/src/G4TrajectoryDrawByAttribute.cc b/source/visualization/modeling/src/G4TrajectoryDrawByAttribute.cc index 6c5de6fe6e..f7ad0774bb 100644 --- a/source/visualization/modeling/src/G4TrajectoryDrawByAttribute.cc +++ b/source/visualization/modeling/src/G4TrajectoryDrawByAttribute.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryDrawByAttribute.cc,v 1.3 2006/09/14 15:41:42 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay August 2006 // diff --git a/source/visualization/modeling/src/G4TrajectoryDrawByCharge.cc b/source/visualization/modeling/src/G4TrajectoryDrawByCharge.cc index 7689119a0a..f79b4da769 100644 --- a/source/visualization/modeling/src/G4TrajectoryDrawByCharge.cc +++ b/source/visualization/modeling/src/G4TrajectoryDrawByCharge.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryDrawByCharge.cc,v 1.8 2006/06/29 21:33:06 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl November 2005 #include "G4TrajectoryDrawByCharge.hh" diff --git a/source/visualization/modeling/src/G4TrajectoryDrawByOriginVolume.cc b/source/visualization/modeling/src/G4TrajectoryDrawByOriginVolume.cc index 662c7a10ee..7ee7af2f6e 100644 --- a/source/visualization/modeling/src/G4TrajectoryDrawByOriginVolume.cc +++ b/source/visualization/modeling/src/G4TrajectoryDrawByOriginVolume.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryDrawByOriginVolume.cc,v 1.4 2006/06/29 21:33:08 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay March 2006 diff --git a/source/visualization/modeling/src/G4TrajectoryDrawByParticleID.cc b/source/visualization/modeling/src/G4TrajectoryDrawByParticleID.cc index bc9c6cc292..85823494bd 100644 --- a/source/visualization/modeling/src/G4TrajectoryDrawByParticleID.cc +++ b/source/visualization/modeling/src/G4TrajectoryDrawByParticleID.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryDrawByParticleID.cc,v 1.8 2006/06/29 21:33:10 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl November 2005 diff --git a/source/visualization/modeling/src/G4TrajectoryDrawerUtils.cc b/source/visualization/modeling/src/G4TrajectoryDrawerUtils.cc index e97af3bd17..0974775cd5 100644 --- a/source/visualization/modeling/src/G4TrajectoryDrawerUtils.cc +++ b/source/visualization/modeling/src/G4TrajectoryDrawerUtils.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryDrawerUtils.cc,v 1.11 2007/05/30 08:56:55 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl November 2005 // diff --git a/source/visualization/modeling/src/G4TrajectoryFilterFactories.cc b/source/visualization/modeling/src/G4TrajectoryFilterFactories.cc index 05df024596..4dd65a7669 100644 --- a/source/visualization/modeling/src/G4TrajectoryFilterFactories.cc +++ b/source/visualization/modeling/src/G4TrajectoryFilterFactories.cc @@ -24,7 +24,7 @@ // ******************************************************************** // /// $Id: G4TrajectoryFilterFactories.cc,v 1.5 2006/09/12 18:53:03 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // Trajectory filter model factories creating filters diff --git a/source/visualization/modeling/src/G4TrajectoryGenericDrawer.cc b/source/visualization/modeling/src/G4TrajectoryGenericDrawer.cc index 34ecdc48c1..7bf3534fe7 100644 --- a/source/visualization/modeling/src/G4TrajectoryGenericDrawer.cc +++ b/source/visualization/modeling/src/G4TrajectoryGenericDrawer.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryGenericDrawer.cc,v 1.2 2006/06/29 21:33:16 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay May 2006 // diff --git a/source/visualization/modeling/src/G4TrajectoryModelFactories.cc b/source/visualization/modeling/src/G4TrajectoryModelFactories.cc index 0b038f433e..b3d2f069e9 100644 --- a/source/visualization/modeling/src/G4TrajectoryModelFactories.cc +++ b/source/visualization/modeling/src/G4TrajectoryModelFactories.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryModelFactories.cc,v 1.7 2006/09/12 18:53:03 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay, John Allison, Joseph Perl October 2005 diff --git a/source/visualization/modeling/src/G4TrajectoryOriginVolumeFilter.cc b/source/visualization/modeling/src/G4TrajectoryOriginVolumeFilter.cc index 3d0415f172..d0535c66a8 100644 --- a/source/visualization/modeling/src/G4TrajectoryOriginVolumeFilter.cc +++ b/source/visualization/modeling/src/G4TrajectoryOriginVolumeFilter.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryOriginVolumeFilter.cc,v 1.3 2006/08/25 19:44:14 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Filter trajectories according to volume name. Only registered // volumes will pass the filter. diff --git a/source/visualization/modeling/src/G4TrajectoryParticleFilter.cc b/source/visualization/modeling/src/G4TrajectoryParticleFilter.cc index fe199df600..e059e5b4df 100644 --- a/source/visualization/modeling/src/G4TrajectoryParticleFilter.cc +++ b/source/visualization/modeling/src/G4TrajectoryParticleFilter.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4TrajectoryParticleFilter.cc,v 1.3 2006/08/25 19:44:14 tinslay Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Filter trajectories according to particle type. Only registered // particle types will pass the filter. diff --git a/source/visualization/modeling/src/G4VModel.cc b/source/visualization/modeling/src/G4VModel.cc index 8250f742f1..c7df98111b 100644 --- a/source/visualization/modeling/src/G4VModel.cc +++ b/source/visualization/modeling/src/G4VModel.cc @@ -25,7 +25,7 @@ // // // $Id: G4VModel.cc,v 1.14 2006/11/01 10:33:00 allison Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/src/G4VTrajectoryModel.cc b/source/visualization/modeling/src/G4VTrajectoryModel.cc index d035e6913d..3d6c66d3f2 100644 --- a/source/visualization/modeling/src/G4VTrajectoryModel.cc +++ b/source/visualization/modeling/src/G4VTrajectoryModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VTrajectoryModel.cc,v 1.3 2006/06/29 21:33:26 gunter Exp $ -// GEANT4 tag $Name: geant4-09-00 $ +// GEANT4 tag $Name: geant4-09-01 $ // // Jane Tinslay May 2006 //